mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-11 09:51:40 +00:00
Compare commits
2 Commits
shadcn@4.6
...
shadcn/rhe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bec77bccbf | ||
|
|
c2f88d459d |
@@ -159,6 +159,38 @@
|
||||
"menuAccent": "subtle",
|
||||
"menuColor": "default",
|
||||
"radius": "default"
|
||||
},
|
||||
{
|
||||
"name": "radix-rhea",
|
||||
"title": "Rhea (Radix)",
|
||||
"description": "Rhea / Hugeicons / Inter",
|
||||
"base": "radix",
|
||||
"style": "rhea",
|
||||
"baseColor": "neutral",
|
||||
"theme": "neutral",
|
||||
"iconLibrary": "hugeicons",
|
||||
"font": "inter",
|
||||
"item": "Item",
|
||||
"rtl": false,
|
||||
"menuAccent": "subtle",
|
||||
"menuColor": "default",
|
||||
"radius": "default"
|
||||
},
|
||||
{
|
||||
"name": "base-rhea",
|
||||
"title": "Rhea (Base)",
|
||||
"description": "Rhea / Hugeicons / Inter",
|
||||
"base": "base",
|
||||
"style": "rhea",
|
||||
"baseColor": "neutral",
|
||||
"theme": "neutral",
|
||||
"iconLibrary": "hugeicons",
|
||||
"font": "inter",
|
||||
"item": "Item",
|
||||
"rtl": false,
|
||||
"menuAccent": "subtle",
|
||||
"menuColor": "default",
|
||||
"radius": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/accordion-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/accordion-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/accordion.json
Normal file
12
apps/v4/public/r/styles/base-rhea/accordion.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "accordion",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/accordion.tsx",
|
||||
"content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-lg py-2.5 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n <IconPlaceholder\n lucide=\"ChevronDownIcon\"\n tabler=\"IconChevronDown\"\n data-slot=\"accordion-trigger-icon\"\n hugeicons=\"ArrowDown01Icon\"\n phosphor=\"CaretDownIcon\"\n remixicon=\"RiArrowDownSLine\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconPlaceholder\n lucide=\"ChevronUpIcon\"\n tabler=\"IconChevronUp\"\n data-slot=\"accordion-trigger-icon\"\n hugeicons=\"ArrowUp01Icon\"\n phosphor=\"CaretUpIcon\"\n remixicon=\"RiArrowUpSLine\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"data-open:animate-accordion-down data-closed:animate-accordion-up text-sm overflow-hidden\"\n {...props}\n >\n <div\n className={cn(\n \"pt-0 pb-2.5 [&_a]:hover:text-foreground h-(--accordion-panel-height) data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
19
apps/v4/public/r/styles/base-rhea/alert-dialog-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/alert-dialog-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/alert-dialog.json
Normal file
15
apps/v4/public/r/styles/base-rhea/alert-dialog.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/alert-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/alert-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/alert.json
Normal file
12
apps/v4/public/r/styles/base-rhea/alert.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "alert",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/alert.tsx",
|
||||
"content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nconst alertVariants = cva(\"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\", {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive: \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
17
apps/v4/public/r/styles/base-rhea/aspect-ratio-example.json
Normal file
17
apps/v4/public/r/styles/base-rhea/aspect-ratio-example.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "aspect-ratio-example",
|
||||
"title": "Aspect Ratio",
|
||||
"registryDependencies": [
|
||||
"aspect-ratio",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/aspect-ratio-example.tsx",
|
||||
"content": "import Image from \"next/image\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { AspectRatio } from \"@/registry/base-rhea/ui/aspect-ratio\"\n\nexport default function AspectRatioExample() {\n return (\n <ExampleWrapper className=\"max-w-4xl 2xl:max-w-4xl\">\n <AspectRatio16x9 />\n <AspectRatio21x9 />\n <AspectRatio1x1 />\n <AspectRatio9x16 />\n </ExampleWrapper>\n )\n}\n\nfunction AspectRatio16x9() {\n return (\n <Example title=\"16:9\" className=\"items-center justify-center\">\n <AspectRatio ratio={16 / 9} className=\"bg-muted rounded-lg\">\n <Image\n src=\"https://avatar.vercel.sh/shadcn1\"\n alt=\"Photo\"\n fill\n className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n />\n </AspectRatio>\n </Example>\n )\n}\n\nfunction AspectRatio1x1() {\n return (\n <Example title=\"1:1\" className=\"items-start\">\n <AspectRatio ratio={1 / 1} className=\"bg-muted rounded-lg\">\n <Image\n src=\"https://avatar.vercel.sh/shadcn1\"\n alt=\"Photo\"\n fill\n className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n />\n </AspectRatio>\n </Example>\n )\n}\n\nfunction AspectRatio9x16() {\n return (\n <Example title=\"9:16\" className=\"items-center justify-center\">\n <AspectRatio ratio={9 / 16} className=\"bg-muted rounded-lg\">\n <Image\n src=\"https://avatar.vercel.sh/shadcn1\"\n alt=\"Photo\"\n fill\n className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n />\n </AspectRatio>\n </Example>\n )\n}\n\nfunction AspectRatio21x9() {\n return (\n <Example title=\"21:9\" className=\"items-center justify-center\">\n <AspectRatio ratio={21 / 9} className=\"bg-muted rounded-lg\">\n <Image\n src=\"https://avatar.vercel.sh/shadcn1\"\n alt=\"Photo\"\n fill\n className=\"h-full w-full rounded-lg object-cover grayscale dark:brightness-20\"\n />\n </AspectRatio>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/aspect-ratio.json
Normal file
12
apps/v4/public/r/styles/base-rhea/aspect-ratio.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "aspect-ratio",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/aspect-ratio.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction AspectRatio({\n ratio,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n return (\n <div\n data-slot=\"aspect-ratio\"\n style={\n {\n \"--ratio\": ratio,\n } as React.CSSProperties\n }\n className={cn(\"relative aspect-(--ratio)\", className)}\n {...props}\n />\n )\n}\n\nexport { AspectRatio }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
19
apps/v4/public/r/styles/base-rhea/avatar-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/avatar-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/avatar.json
Normal file
12
apps/v4/public/r/styles/base-rhea/avatar.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "avatar",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/avatar.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"rounded-full aspect-square size-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\"bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
18
apps/v4/public/r/styles/base-rhea/badge-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/badge-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/badge.json
Normal file
12
apps/v4/public/r/styles/base-rhea/badge.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "badge",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/badge.tsx",
|
||||
"content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-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 overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive: \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline: \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
18
apps/v4/public/r/styles/base-rhea/breadcrumb-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/breadcrumb-example.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "breadcrumb-example",
|
||||
"title": "Breadcrumb",
|
||||
"registryDependencies": [
|
||||
"breadcrumb",
|
||||
"dropdown-menu",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/breadcrumb-example.tsx",
|
||||
"content": "import Link from \"next/link\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-rhea/ui/breadcrumb\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/base-rhea/ui/dropdown-menu\"\n\nexport default function BreadcrumbExample() {\n return (\n <ExampleWrapper>\n <BreadcrumbBasic />\n <BreadcrumbWithDropdown />\n <BreadcrumbWithLink />\n </ExampleWrapper>\n )\n}\n\nfunction BreadcrumbBasic() {\n return (\n <Example title=\"Basic\" className=\"items-center justify-center\">\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n </Example>\n )\n}\n\nfunction BreadcrumbWithDropdown() {\n return (\n <Example title=\"With Dropdown\" className=\"items-center justify-center\">\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"#\">Home</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={<Button size=\"icon-sm\" variant=\"ghost\" />}\n >\n <BreadcrumbEllipsis />\n <span className=\"sr-only\">Toggle menu</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem>Documentation</DropdownMenuItem>\n <DropdownMenuItem>Themes</DropdownMenuItem>\n <DropdownMenuItem>GitHub</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbLink href=\"#\">Components</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n </Example>\n )\n}\n\nfunction BreadcrumbWithLink() {\n return (\n <Example title=\"With Link\" className=\"items-center justify-center\">\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink render={<Link href=\"#\">Home</Link>} />\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbEllipsis />\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbLink render={<Link href=\"#\">Components</Link>} />\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/breadcrumb.json
Normal file
12
apps/v4/public/r/styles/base-rhea/breadcrumb.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "breadcrumb",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/breadcrumb.tsx",
|
||||
"content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground gap-1.5 text-sm flex flex-wrap items-center wrap-break-word\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"gap-1 inline-flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"hover:text-foreground transition-colors\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n <IconPlaceholder\n lucide=\"ChevronRightIcon\"\n tabler=\"IconChevronRight\"\n hugeicons=\"ArrowRight01Icon\"\n phosphor=\"CaretRightIcon\"\n remixicon=\"RiArrowRightSLine\"\n className=\"cn-rtl-flip\"\n />\n )}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"size-5 [&>svg]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n <IconPlaceholder\n lucide=\"MoreHorizontalIcon\"\n tabler=\"IconDots\"\n hugeicons=\"MoreHorizontalCircle01Icon\"\n phosphor=\"DotsThreeIcon\"\n remixicon=\"RiMoreLine\"\n />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
17
apps/v4/public/r/styles/base-rhea/button-example.json
Normal file
17
apps/v4/public/r/styles/base-rhea/button-example.json
Normal file
File diff suppressed because one or more lines are too long
26
apps/v4/public/r/styles/base-rhea/button-group-example.json
Normal file
26
apps/v4/public/r/styles/base-rhea/button-group-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/button-group.json
Normal file
15
apps/v4/public/r/styles/base-rhea/button-group.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "button-group",
|
||||
"registryDependencies": [
|
||||
"separator"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/button-group.tsx",
|
||||
"content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Separator } from \"@/registry/base-rhea/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 *:data-slot:rounded-r-none\",\n vertical:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 *:data-slot:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/button.json
Normal file
12
apps/v4/public/r/styles/base-rhea/button.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "button",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/button.tsx",
|
||||
"content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
23
apps/v4/public/r/styles/base-rhea/calendar-example.json
Normal file
23
apps/v4/public/r/styles/base-rhea/calendar-example.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/calendar.json
Normal file
19
apps/v4/public/r/styles/base-rhea/calendar.json
Normal file
File diff suppressed because one or more lines are too long
21
apps/v4/public/r/styles/base-rhea/card-example.json
Normal file
21
apps/v4/public/r/styles/base-rhea/card-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/card.json
Normal file
12
apps/v4/public/r/styles/base-rhea/card.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "card",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/card.tsx",
|
||||
"content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
18
apps/v4/public/r/styles/base-rhea/carousel-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/carousel-example.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "carousel-example",
|
||||
"title": "Carousel",
|
||||
"registryDependencies": [
|
||||
"card",
|
||||
"carousel",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/carousel-example.tsx",
|
||||
"content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Card, CardContent } from \"@/registry/base-rhea/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-rhea/ui/carousel\"\n\nexport default function CarouselExample() {\n return (\n <ExampleWrapper className=\"lg:grid-cols-1\">\n <CarouselBasic />\n <CarouselMultiple />\n <CarouselWithGap />\n </ExampleWrapper>\n )\n}\n\nfunction CarouselBasic() {\n return (\n <Example title=\"Basic\">\n <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n <CarouselContent>\n {Array.from({ length: 5 }).map((_, index) => (\n <CarouselItem key={index}>\n <div className=\"p-1\">\n <Card>\n <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n <span className=\"text-4xl font-semibold\">{index + 1}</span>\n </CardContent>\n </Card>\n </div>\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious className=\"hidden sm:inline-flex\" />\n <CarouselNext className=\"hidden sm:inline-flex\" />\n </Carousel>\n </Example>\n )\n}\n\nfunction CarouselMultiple() {\n return (\n <Example title=\"Multiple\">\n <Carousel\n className=\"mx-auto max-w-xs sm:max-w-sm\"\n opts={{\n align: \"start\",\n }}\n >\n <CarouselContent>\n {Array.from({ length: 5 }).map((_, index) => (\n <CarouselItem key={index} className=\"sm:basis-1/2 lg:basis-1/3\">\n <div className=\"p-1\">\n <Card>\n <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n <span className=\"text-3xl font-semibold\">{index + 1}</span>\n </CardContent>\n </Card>\n </div>\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious className=\"hidden sm:inline-flex\" />\n <CarouselNext className=\"hidden sm:inline-flex\" />\n </Carousel>\n </Example>\n )\n}\n\nfunction CarouselWithGap() {\n return (\n <Example title=\"With Gap\">\n <Carousel className=\"mx-auto max-w-xs sm:max-w-sm\">\n <CarouselContent className=\"-ml-1\">\n {Array.from({ length: 5 }).map((_, index) => (\n <CarouselItem key={index} className=\"pl-1 md:basis-1/2\">\n <div className=\"p-1\">\n <Card>\n <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n <span className=\"text-2xl font-semibold\">{index + 1}</span>\n </CardContent>\n </Card>\n </div>\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious className=\"hidden sm:inline-flex\" />\n <CarouselNext className=\"hidden sm:inline-flex\" />\n </Carousel>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
18
apps/v4/public/r/styles/base-rhea/carousel.json
Normal file
18
apps/v4/public/r/styles/base-rhea/carousel.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/chart-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/chart-example.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/chart.json
Normal file
18
apps/v4/public/r/styles/base-rhea/chart.json
Normal file
File diff suppressed because one or more lines are too long
28
apps/v4/public/r/styles/base-rhea/chatgpt.json
Normal file
28
apps/v4/public/r/styles/base-rhea/chatgpt.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/checkbox-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/checkbox-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/checkbox.json
Normal file
12
apps/v4/public/r/styles/base-rhea/checkbox.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "checkbox",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/checkbox.tsx",
|
||||
"content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"[&>svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n <IconPlaceholder\n lucide=\"CheckIcon\"\n tabler=\"IconCheck\"\n hugeicons=\"Tick02Icon\"\n phosphor=\"CheckIcon\"\n remixicon=\"RiCheckLine\"\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
22
apps/v4/public/r/styles/base-rhea/collapsible-example.json
Normal file
22
apps/v4/public/r/styles/base-rhea/collapsible-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/collapsible.json
Normal file
12
apps/v4/public/r/styles/base-rhea/collapsible.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "collapsible",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/collapsible.tsx",
|
||||
"content": "\"use client\"\n\nimport { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\"\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {\n return (\n <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n )\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n return (\n <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
25
apps/v4/public/r/styles/base-rhea/combobox-example.json
Normal file
25
apps/v4/public/r/styles/base-rhea/combobox-example.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/combobox.json
Normal file
19
apps/v4/public/r/styles/base-rhea/combobox.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/command-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/command-example.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/command.json
Normal file
19
apps/v4/public/r/styles/base-rhea/command.json
Normal file
File diff suppressed because one or more lines are too long
26
apps/v4/public/r/styles/base-rhea/component-example.json
Normal file
26
apps/v4/public/r/styles/base-rhea/component-example.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/context-menu-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/context-menu-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/context-menu.json
Normal file
12
apps/v4/public/r/styles/base-rhea/context-menu.json
Normal file
File diff suppressed because one or more lines are too long
101
apps/v4/public/r/styles/base-rhea/dashboard-01.json
Normal file
101
apps/v4/public/r/styles/base-rhea/dashboard-01.json
Normal file
File diff suppressed because one or more lines are too long
29
apps/v4/public/r/styles/base-rhea/dialog-example.json
Normal file
29
apps/v4/public/r/styles/base-rhea/dialog-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/dialog.json
Normal file
15
apps/v4/public/r/styles/base-rhea/dialog.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "dialog",
|
||||
"registryDependencies": [
|
||||
"button"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/dialog.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n />\n }\n >\n <IconPlaceholder\n lucide=\"XIcon\"\n tabler=\"IconX\"\n hugeicons=\"Cancel01Icon\"\n phosphor=\"XIcon\"\n remixicon=\"RiCloseLine\"\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"gap-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/direction.json
Normal file
15
apps/v4/public/r/styles/base-rhea/direction.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "direction",
|
||||
"dependencies": [
|
||||
"@base-ui/react"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/direction.tsx",
|
||||
"content": "\"use client\"\n\nexport {\n DirectionProvider,\n useDirection,\n} from \"@base-ui/react/direction-provider\"\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
17
apps/v4/public/r/styles/base-rhea/drawer-example.json
Normal file
17
apps/v4/public/r/styles/base-rhea/drawer-example.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "drawer-example",
|
||||
"title": "Drawer",
|
||||
"registryDependencies": [
|
||||
"drawer",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/drawer-example.tsx",
|
||||
"content": "\"use client\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@/registry/base-rhea/ui/drawer\"\n\nexport default function DrawerExample() {\n return (\n <ExampleWrapper>\n <DrawerScrollableContent />\n <DrawerWithSides />\n </ExampleWrapper>\n )\n}\n\nconst DRAWER_SIDES = [\"top\", \"right\", \"bottom\", \"left\"] as const\n\nfunction DrawerWithSides() {\n return (\n <Example title=\"Sides\">\n <div className=\"flex flex-wrap gap-2\">\n {DRAWER_SIDES.map((side) => (\n <Drawer\n key={side}\n direction={\n side === \"bottom\" ? undefined : (side as \"top\" | \"right\" | \"left\")\n }\n >\n <DrawerTrigger asChild>\n <Button variant=\"outline\" className=\"capitalize\">\n {side}\n </Button>\n </DrawerTrigger>\n <DrawerContent className=\"data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]\">\n <DrawerHeader>\n <DrawerTitle>Move Goal</DrawerTitle>\n <DrawerDescription>\n Set your daily activity goal.\n </DrawerDescription>\n </DrawerHeader>\n <div className=\"no-scrollbar overflow-y-auto px-4\">\n {Array.from({ length: 10 }).map((_, index) => (\n <p\n key={index}\n className=\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\"\n >\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed\n do eiusmod tempor incididunt ut labore et dolore magna\n aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n ullamco laboris nisi ut aliquip ex ea commodo consequat.\n Duis aute irure dolor in reprehenderit in voluptate velit\n esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\n occaecat cupidatat non proident, sunt in culpa qui officia\n deserunt mollit anim id est laborum.\n </p>\n ))}\n </div>\n <DrawerFooter>\n <Button>Submit</Button>\n <DrawerClose asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DrawerClose>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n ))}\n </div>\n </Example>\n )\n}\n\nfunction DrawerScrollableContent() {\n return (\n <Example title=\"Scrollable Content\">\n <Drawer direction=\"right\">\n <DrawerTrigger asChild>\n <Button variant=\"outline\">Scrollable Content</Button>\n </DrawerTrigger>\n <DrawerContent>\n <DrawerHeader>\n <DrawerTitle>Move Goal</DrawerTitle>\n <DrawerDescription>Set your daily activity goal.</DrawerDescription>\n </DrawerHeader>\n <div className=\"no-scrollbar overflow-y-auto px-4\">\n {Array.from({ length: 10 }).map((_, index) => (\n <p\n key={index}\n className=\"style-lyra:mb-2 style-lyra:leading-relaxed mb-4 leading-normal\"\n >\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do\n eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n enim ad minim veniam, quis nostrud exercitation ullamco laboris\n nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor\n in reprehenderit in voluptate velit esse cillum dolore eu fugiat\n nulla pariatur. Excepteur sint occaecat cupidatat non proident,\n sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n ))}\n </div>\n <DrawerFooter>\n <Button>Submit</Button>\n <DrawerClose asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DrawerClose>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/drawer.json
Normal file
15
apps/v4/public/r/styles/base-rhea/drawer.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "drawer",
|
||||
"dependencies": [
|
||||
"vaul"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/drawer.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm group/drawer-content fixed z-50\",\n className\n )}\n {...props}\n >\n <div className=\"bg-muted mt-4 h-1 w-[100px] rounded-full mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\"gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"gap-2 p-4 mt-auto flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground text-base font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
20
apps/v4/public/r/styles/base-rhea/dropdown-menu-example.json
Normal file
20
apps/v4/public/r/styles/base-rhea/dropdown-menu-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/dropdown-menu.json
Normal file
12
apps/v4/public/r/styles/base-rhea/dropdown-menu.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/elevenlabs.json
Normal file
18
apps/v4/public/r/styles/base-rhea/elevenlabs.json
Normal file
File diff suppressed because one or more lines are too long
20
apps/v4/public/r/styles/base-rhea/empty-example.json
Normal file
20
apps/v4/public/r/styles/base-rhea/empty-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/empty.json
Normal file
12
apps/v4/public/r/styles/base-rhea/empty.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "empty",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/empty.tsx",
|
||||
"content": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"gap-2 flex max-w-sm flex-col items-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-sm font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"gap-2.5 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
13
apps/v4/public/r/styles/base-rhea/example.json
Normal file
13
apps/v4/public/r/styles/base-rhea/example.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "example",
|
||||
"title": "Example",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/components/example.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction ExampleWrapper({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div className=\"bg-background w-full\">\n <div\n data-slot=\"example-wrapper\"\n className={cn(\n \"mx-auto grid min-h-screen w-full max-w-5xl min-w-0 content-center items-start gap-8 p-4 pt-2 sm:gap-12 sm:p-6 md:grid-cols-2 md:gap-8 lg:p-12 2xl:max-w-6xl\",\n\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction Example({\n title,\n children,\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<\"div\"> & {\n title?: string\n containerClassName?: string\n}) {\n return (\n <div\n data-slot=\"example\"\n className={cn(\n \"mx-auto flex w-full max-w-lg min-w-0 flex-col gap-1 self-stretch lg:max-w-none\",\n containerClassName\n )}\n {...props}\n >\n {title && (\n <div className=\"text-muted-foreground px-1.5 py-2 text-xs font-medium\">\n {title}\n </div>\n )}\n <div\n data-slot=\"example-content\"\n className={cn(\n \"bg-background text-foreground flex min-w-0 flex-1 flex-col items-start gap-6 border border-dashed p-4 sm:p-6 *:[div:not([class*='w-'])]:w-full\",\n className\n )}\n >\n {children}\n </div>\n </div>\n )\n}\n\nexport { ExampleWrapper, Example }\n",
|
||||
"type": "registry:component"
|
||||
}
|
||||
],
|
||||
"type": "registry:component"
|
||||
}
|
||||
27
apps/v4/public/r/styles/base-rhea/field-example.json
Normal file
27
apps/v4/public/r/styles/base-rhea/field-example.json
Normal file
File diff suppressed because one or more lines are too long
16
apps/v4/public/r/styles/base-rhea/field.json
Normal file
16
apps/v4/public/r/styles/base-rhea/field.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/font-dm-sans.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-dm-sans.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-dm-sans",
|
||||
"title": "DM Sans",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'DM Sans', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "DM_Sans",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-figtree.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-figtree.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-figtree",
|
||||
"title": "Figtree",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Figtree Variable', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Figtree",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-geist-mono.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-geist-mono.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-geist-mono",
|
||||
"title": "Geist Mono",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Geist Mono Variable', monospace",
|
||||
"provider": "google",
|
||||
"import": "Geist_Mono",
|
||||
"variable": "--font-mono",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-geist.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-geist.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-geist",
|
||||
"title": "Geist",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Geist Variable', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Geist",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-inter.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-inter.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-inter",
|
||||
"title": "Inter",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Inter Variable', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Inter",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-jetbrains-mono.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-jetbrains-mono.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-jetbrains-mono",
|
||||
"title": "JetBrains Mono",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'JetBrains Mono Variable', monospace",
|
||||
"provider": "google",
|
||||
"import": "JetBrains_Mono",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/font-noto-sans.json
Normal file
12
apps/v4/public/r/styles/base-rhea/font-noto-sans.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-noto-sans",
|
||||
"title": "Noto Sans",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Noto Sans Variable', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Noto_Sans",
|
||||
"variable": "--font-sans"
|
||||
}
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/font-nunito-sans.json
Normal file
12
apps/v4/public/r/styles/base-rhea/font-nunito-sans.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-nunito-sans",
|
||||
"title": "Nunito Sans",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Nunito Sans Variable', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Nunito_Sans",
|
||||
"variable": "--font-sans"
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-outfit.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-outfit.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-outfit",
|
||||
"title": "Outfit",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Outfit', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Outfit",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-public-sans.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-public-sans.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-public-sans",
|
||||
"title": "Public Sans",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Public Sans', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Public_Sans",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-raleway.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-raleway.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-raleway",
|
||||
"title": "Raleway",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Raleway', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Raleway",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/font-roboto.json
Normal file
15
apps/v4/public/r/styles/base-rhea/font-roboto.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "font-roboto",
|
||||
"title": "Roboto",
|
||||
"type": "registry:font",
|
||||
"font": {
|
||||
"family": "'Roboto', sans-serif",
|
||||
"provider": "google",
|
||||
"import": "Roboto",
|
||||
"variable": "--font-sans",
|
||||
"subsets": [
|
||||
"latin"
|
||||
]
|
||||
}
|
||||
}
|
||||
5
apps/v4/public/r/styles/base-rhea/form.json
Normal file
5
apps/v4/public/r/styles/base-rhea/form.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "form",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
38
apps/v4/public/r/styles/base-rhea/github.json
Normal file
38
apps/v4/public/r/styles/base-rhea/github.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/hover-card-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/hover-card-example.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "hover-card-example",
|
||||
"title": "Hover Card",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"dialog",
|
||||
"hover-card",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/hover-card-example.tsx",
|
||||
"content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/base-rhea/ui/dialog\"\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/registry/base-rhea/ui/hover-card\"\n\nexport default function HoverCardExample() {\n return (\n <ExampleWrapper>\n <HoverCardSides />\n <HoverCardInDialog />\n </ExampleWrapper>\n )\n}\n\nconst HOVER_CARD_SIDES = [\n \"inline-start\",\n \"left\",\n \"top\",\n \"bottom\",\n \"right\",\n \"inline-end\",\n] as const\n\nfunction HoverCardSides() {\n return (\n <Example title=\"Sides\" containerClassName=\"col-span-2\">\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n {HOVER_CARD_SIDES.map((side) => (\n <HoverCard key={side}>\n <HoverCardTrigger\n delay={100}\n closeDelay={100}\n render={<Button variant=\"outline\" className=\"capitalize\" />}\n >\n {side.replace(\"-\", \" \")}\n </HoverCardTrigger>\n <HoverCardContent side={side}>\n <div className=\"style-lyra:gap-1 style-nova:gap-1.5 style-vega:gap-2 style-maia:gap-2 style-mira:gap-1 flex flex-col\">\n <h4 className=\"font-medium\">Hover Card</h4>\n <p>\n This hover card appears on the {side.replace(\"-\", \" \")} side\n of the trigger.\n </p>\n </div>\n </HoverCardContent>\n </HoverCard>\n ))}\n </div>\n </Example>\n )\n}\n\nfunction HoverCardInDialog() {\n return (\n <Example title=\"In Dialog\">\n <Dialog>\n <DialogTrigger render={<Button variant=\"outline\" />}>\n Open Dialog\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Hover Card Example</DialogTitle>\n <DialogDescription>\n Hover over the button below to see the hover card.\n </DialogDescription>\n </DialogHeader>\n <HoverCard>\n <HoverCardTrigger\n delay={100}\n closeDelay={100}\n render={<Button variant=\"outline\" className=\"w-fit\" />}\n >\n Hover me\n </HoverCardTrigger>\n <HoverCardContent>\n <div className=\"style-lyra:gap-1 style-nova:gap-1.5 style-vega:gap-2 style-maia:gap-2 style-mira:gap-1 flex flex-col\">\n <h4 className=\"font-medium\">Hover Card</h4>\n <p>\n This hover card appears inside a dialog. Hover over the button\n to see it.\n </p>\n </div>\n </HoverCardContent>\n </HoverCard>\n </DialogContent>\n </Dialog>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/hover-card.json
Normal file
12
apps/v4/public/r/styles/base-rhea/hover-card.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "hover-card",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/hover-card.tsx",
|
||||
"content": "\"use client\"\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props &\n Pick<\n PreviewCardPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 origin-(--transform-origin) outline-hidden\",\n className\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
21
apps/v4/public/r/styles/base-rhea/input-example.json
Normal file
21
apps/v4/public/r/styles/base-rhea/input-example.json
Normal file
File diff suppressed because one or more lines are too long
28
apps/v4/public/r/styles/base-rhea/input-group-example.json
Normal file
28
apps/v4/public/r/styles/base-rhea/input-group-example.json
Normal file
File diff suppressed because one or more lines are too long
17
apps/v4/public/r/styles/base-rhea/input-group.json
Normal file
17
apps/v4/public/r/styles/base-rhea/input-group.json
Normal file
File diff suppressed because one or more lines are too long
20
apps/v4/public/r/styles/base-rhea/input-otp-example.json
Normal file
20
apps/v4/public/r/styles/base-rhea/input-otp-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/input-otp.json
Normal file
15
apps/v4/public/r/styles/base-rhea/input-otp.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "input-otp",
|
||||
"dependencies": [
|
||||
"input-otp"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/input-otp.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"cn-input-otp flex items-center has-disabled:opacity-50\",\n containerClassName\n )}\n spellCheck={false}\n className={cn(\n \"disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-lg has-aria-invalid:ring-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-8 border-y border-r text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:ring-3 relative flex items-center justify-center data-[active=true]:z-10\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"[&_svg:not([class*='size-'])]:size-4 flex items-center\"\n role=\"separator\"\n {...props}\n >\n <IconPlaceholder\n lucide=\"MinusIcon\"\n tabler=\"IconMinus\"\n hugeicons=\"MinusSignIcon\"\n phosphor=\"MinusIcon\"\n remixicon=\"RiSubtractLine\"\n />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/input.json
Normal file
12
apps/v4/public/r/styles/base-rhea/input.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "input",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/input.tsx",
|
||||
"content": "import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
18
apps/v4/public/r/styles/base-rhea/item-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/item-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/item.json
Normal file
15
apps/v4/public/r/styles/base-rhea/item.json
Normal file
File diff suppressed because one or more lines are too long
20
apps/v4/public/r/styles/base-rhea/kbd-example.json
Normal file
20
apps/v4/public/r/styles/base-rhea/kbd-example.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "kbd-example",
|
||||
"title": "Kbd",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"input-group",
|
||||
"kbd",
|
||||
"tooltip",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/kbd-example.tsx",
|
||||
"content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/base-rhea/ui/input-group\"\nimport { Kbd, KbdGroup } from \"@/registry/base-rhea/ui/kbd\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/base-rhea/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function KbdExample() {\n return (\n <ExampleWrapper>\n <KbdBasic />\n <KbdModifierKeys />\n <KbdGroupExample />\n <KbdArrowKeys />\n <KbdWithIcons />\n <KbdWithIconsAndText />\n <KbdInInputGroup />\n <KbdInTooltip />\n <KbdWithSamp />\n </ExampleWrapper>\n )\n}\n\nfunction KbdBasic() {\n return (\n <Example title=\"Basic\">\n <div className=\"flex items-center gap-2\">\n <Kbd>Ctrl</Kbd>\n <Kbd>⌘K</Kbd>\n <Kbd>Ctrl + B</Kbd>\n </div>\n </Example>\n )\n}\n\nfunction KbdModifierKeys() {\n return (\n <Example title=\"Modifier Keys\">\n <div className=\"flex items-center gap-2\">\n <Kbd>⌘</Kbd>\n <Kbd>C</Kbd>\n </div>\n </Example>\n )\n}\n\nfunction KbdGroupExample() {\n return (\n <Example title=\"KbdGroup\">\n <KbdGroup>\n <Kbd>Ctrl</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>P</Kbd>\n </KbdGroup>\n </Example>\n )\n}\n\nfunction KbdArrowKeys() {\n return (\n <Example title=\"Arrow Keys\">\n <div className=\"flex items-center gap-2\">\n <Kbd>↑</Kbd>\n <Kbd>↓</Kbd>\n <Kbd>←</Kbd>\n <Kbd>→</Kbd>\n </div>\n </Example>\n )\n}\n\nfunction KbdWithIcons() {\n return (\n <Example title=\"With Icons\">\n <KbdGroup>\n <Kbd>\n <IconPlaceholder\n lucide=\"CircleDashedIcon\"\n tabler=\"IconCircleDashed\"\n hugeicons=\"DashedLineCircleIcon\"\n phosphor=\"CircleDashedIcon\"\n remixicon=\"RiLoaderLine\"\n />\n </Kbd>\n <Kbd>\n <IconPlaceholder\n lucide=\"ArrowLeftIcon\"\n tabler=\"IconArrowLeft\"\n hugeicons=\"ArrowLeft01Icon\"\n phosphor=\"ArrowLeftIcon\"\n remixicon=\"RiArrowLeftLine\"\n />\n </Kbd>\n <Kbd>\n <IconPlaceholder\n lucide=\"ArrowRightIcon\"\n tabler=\"IconArrowRight\"\n hugeicons=\"ArrowRight01Icon\"\n phosphor=\"ArrowRightIcon\"\n remixicon=\"RiArrowRightLine\"\n />\n </Kbd>\n </KbdGroup>\n </Example>\n )\n}\n\nfunction KbdWithIconsAndText() {\n return (\n <Example title=\"With Icons and Text\">\n <KbdGroup>\n <Kbd>\n <IconPlaceholder\n lucide=\"ArrowLeftIcon\"\n tabler=\"IconArrowLeft\"\n hugeicons=\"ArrowLeft01Icon\"\n phosphor=\"ArrowLeftIcon\"\n remixicon=\"RiArrowLeftLine\"\n />\n Left\n </Kbd>\n <Kbd>\n <IconPlaceholder\n lucide=\"CircleDashedIcon\"\n tabler=\"IconCircleDashed\"\n hugeicons=\"DashedLineCircleIcon\"\n phosphor=\"CircleDashedIcon\"\n remixicon=\"RiLoaderLine\"\n />\n Voice Enabled\n </Kbd>\n </KbdGroup>\n </Example>\n )\n}\n\nfunction KbdInInputGroup() {\n return (\n <Example title=\"InputGroup\">\n <InputGroup>\n <InputGroupInput />\n <InputGroupAddon>\n <Kbd>Space</Kbd>\n </InputGroupAddon>\n </InputGroup>\n </Example>\n )\n}\n\nfunction KbdInTooltip() {\n return (\n <Example title=\"Tooltip\">\n <Tooltip>\n <TooltipTrigger render={<Button size=\"icon-sm\" variant=\"outline\" />}>\n <IconPlaceholder\n lucide=\"SaveIcon\"\n tabler=\"IconDeviceFloppy\"\n hugeicons=\"FloppyDiskIcon\"\n phosphor=\"FloppyDiskIcon\"\n remixicon=\"RiSaveLine\"\n />\n </TooltipTrigger>\n <TooltipContent className=\"pr-1.5\">\n <div className=\"flex items-center gap-2\">\n Save Changes <Kbd>S</Kbd>\n </div>\n </TooltipContent>\n </Tooltip>\n </Example>\n )\n}\n\nfunction KbdWithSamp() {\n return (\n <Example title=\"With samp\">\n <Kbd>\n <samp>File</samp>\n </Kbd>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/kbd.json
Normal file
12
apps/v4/public/r/styles/base-rhea/kbd.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "kbd",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/kbd.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"gap-1 inline-flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
21
apps/v4/public/r/styles/base-rhea/label-example.json
Normal file
21
apps/v4/public/r/styles/base-rhea/label-example.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "label-example",
|
||||
"title": "Label",
|
||||
"registryDependencies": [
|
||||
"checkbox",
|
||||
"field",
|
||||
"input",
|
||||
"label",
|
||||
"textarea",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/label-example.tsx",
|
||||
"content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Checkbox } from \"@/registry/base-rhea/ui/checkbox\"\nimport { Field } from \"@/registry/base-rhea/ui/field\"\nimport { Input } from \"@/registry/base-rhea/ui/input\"\nimport { Label } from \"@/registry/base-rhea/ui/label\"\nimport { Textarea } from \"@/registry/base-rhea/ui/textarea\"\n\nexport default function LabelExample() {\n return (\n <ExampleWrapper>\n <LabelWithCheckbox />\n <LabelWithInput />\n <LabelDisabled />\n <LabelWithTextarea />\n </ExampleWrapper>\n )\n}\n\nfunction LabelWithCheckbox() {\n return (\n <Example title=\"With Checkbox\">\n <Field orientation=\"horizontal\">\n <Checkbox id=\"label-demo-terms\" />\n <Label htmlFor=\"label-demo-terms\">Accept terms and conditions</Label>\n </Field>\n </Example>\n )\n}\n\nfunction LabelWithInput() {\n return (\n <Example title=\"With Input\">\n <Field>\n <Label htmlFor=\"label-demo-username\">Username</Label>\n <Input id=\"label-demo-username\" placeholder=\"Username\" />\n </Field>\n </Example>\n )\n}\n\nfunction LabelDisabled() {\n return (\n <Example title=\"Disabled\">\n <Field data-disabled={true}>\n <Label htmlFor=\"label-demo-disabled\">Disabled</Label>\n <Input id=\"label-demo-disabled\" placeholder=\"Disabled\" disabled />\n </Field>\n </Example>\n )\n}\n\nfunction LabelWithTextarea() {\n return (\n <Example title=\"With Textarea\">\n <Field>\n <Label htmlFor=\"label-demo-message\">Message</Label>\n <Textarea id=\"label-demo-message\" placeholder=\"Message\" />\n </Field>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/label.json
Normal file
12
apps/v4/public/r/styles/base-rhea/label.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "label",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/label.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
31
apps/v4/public/r/styles/base-rhea/login-01.json
Normal file
31
apps/v4/public/r/styles/base-rhea/login-01.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "login-01",
|
||||
"title": "Login 01",
|
||||
"description": "A simple login form.",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"card",
|
||||
"input",
|
||||
"label",
|
||||
"field"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-01/page.tsx",
|
||||
"content": "import { LoginForm } from \"@/registry/base-rhea/blocks/login-01/components/login-form\"\n\nexport default function Page() {\n return (\n <div className=\"flex min-h-svh w-full items-center justify-center p-6 md:p-10\">\n <div className=\"w-full max-w-sm\">\n <LoginForm />\n </div>\n </div>\n )\n}\n",
|
||||
"type": "registry:page",
|
||||
"target": "app/login/page.tsx"
|
||||
},
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-01/components/login-form.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-rhea/ui/card\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/base-rhea/ui/field\"\nimport { Input } from \"@/registry/base-rhea/ui/input\"\n\nexport function LoginForm({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n <Card>\n <CardHeader>\n <CardTitle>Login to your account</CardTitle>\n <CardDescription>\n Enter your email below to login to your account\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form>\n <FieldGroup>\n <Field>\n <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n <Input\n id=\"email\"\n type=\"email\"\n placeholder=\"m@example.com\"\n required\n />\n </Field>\n <Field>\n <div className=\"flex items-center\">\n <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n <a\n href=\"#\"\n className=\"ml-auto inline-block text-sm underline-offset-4 hover:underline\"\n >\n Forgot your password?\n </a>\n </div>\n <Input id=\"password\" type=\"password\" required />\n </Field>\n <Field>\n <Button type=\"submit\">Login</Button>\n <Button variant=\"outline\" type=\"button\">\n Login with Google\n </Button>\n <FieldDescription className=\"text-center\">\n Don't have an account? <a href=\"#\">Sign up</a>\n </FieldDescription>\n </Field>\n </FieldGroup>\n </form>\n </CardContent>\n </Card>\n </div>\n )\n}\n",
|
||||
"type": "registry:component"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"authentication",
|
||||
"login"
|
||||
],
|
||||
"type": "registry:block"
|
||||
}
|
||||
30
apps/v4/public/r/styles/base-rhea/login-02.json
Normal file
30
apps/v4/public/r/styles/base-rhea/login-02.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "login-02",
|
||||
"title": "Login 02",
|
||||
"description": "A two column login page with a cover image.",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"input",
|
||||
"label",
|
||||
"field"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-02/page.tsx",
|
||||
"content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/base-rhea/blocks/login-02/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n return (\n <div className=\"grid min-h-svh lg:grid-cols-2\">\n <div className=\"flex flex-col gap-4 p-6 md:p-10\">\n <div className=\"flex justify-center gap-2 md:justify-start\">\n <a href=\"#\" className=\"flex items-center gap-2 font-medium\">\n <div className=\"bg-primary text-primary-foreground flex size-6 items-center justify-center rounded-md\">\n <IconPlaceholder\n lucide=\"GalleryVerticalEndIcon\"\n tabler=\"IconLayoutRows\"\n hugeicons=\"LayoutBottomIcon\"\n phosphor=\"RowsIcon\"\n remixicon=\"RiGalleryLine\"\n className=\"size-4\"\n />\n </div>\n Acme Inc.\n </a>\n </div>\n <div className=\"flex flex-1 items-center justify-center\">\n <div className=\"w-full max-w-xs\">\n <LoginForm />\n </div>\n </div>\n </div>\n <div className=\"bg-muted relative hidden lg:block\">\n <img\n src=\"/placeholder.svg\"\n alt=\"Image\"\n className=\"absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale\"\n />\n </div>\n </div>\n )\n}\n",
|
||||
"type": "registry:page",
|
||||
"target": "app/login/page.tsx"
|
||||
},
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-02/components/login-form.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldSeparator,\n} from \"@/registry/base-rhea/ui/field\"\nimport { Input } from \"@/registry/base-rhea/ui/input\"\n\nexport function LoginForm({\n className,\n ...props\n}: React.ComponentProps<\"form\">) {\n return (\n <form className={cn(\"flex flex-col gap-6\", className)} {...props}>\n <FieldGroup>\n <div className=\"flex flex-col items-center gap-1 text-center\">\n <h1 className=\"text-2xl font-bold\">Login to your account</h1>\n <p className=\"text-muted-foreground text-sm text-balance\">\n Enter your email below to login to your account\n </p>\n </div>\n <Field>\n <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n <Input id=\"email\" type=\"email\" placeholder=\"m@example.com\" required />\n </Field>\n <Field>\n <div className=\"flex items-center\">\n <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n <a\n href=\"#\"\n className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n >\n Forgot your password?\n </a>\n </div>\n <Input id=\"password\" type=\"password\" required />\n </Field>\n <Field>\n <Button type=\"submit\">Login</Button>\n </Field>\n <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-muted dark:*:data-[slot=field-separator-content]:bg-card\">\n Or continue with\n </FieldSeparator>\n <Field>\n <Button variant=\"outline\" type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n fill=\"currentColor\"\n />\n </svg>\n Login with GitHub\n </Button>\n <FieldDescription className=\"text-center\">\n Don't have an account?{\" \"}\n <a href=\"#\" className=\"underline underline-offset-4\">\n Sign up\n </a>\n </FieldDescription>\n </Field>\n </FieldGroup>\n </form>\n )\n}\n",
|
||||
"type": "registry:component"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"authentication",
|
||||
"login"
|
||||
],
|
||||
"type": "registry:block"
|
||||
}
|
||||
31
apps/v4/public/r/styles/base-rhea/login-03.json
Normal file
31
apps/v4/public/r/styles/base-rhea/login-03.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "login-03",
|
||||
"title": "Login 03",
|
||||
"description": "A login page with a muted background color.",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"card",
|
||||
"input",
|
||||
"label",
|
||||
"field"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-03/page.tsx",
|
||||
"content": "\"use client\"\n\nimport { LoginForm } from \"@/registry/base-rhea/blocks/login-03/components/login-form\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function LoginPage() {\n return (\n <div className=\"bg-muted flex min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10\">\n <div className=\"flex w-full max-w-sm flex-col gap-6\">\n <a href=\"#\" className=\"flex items-center gap-2 self-center font-medium\">\n <div className=\"bg-primary text-primary-foreground flex size-6 items-center justify-center rounded-md\">\n <IconPlaceholder\n lucide=\"GalleryVerticalEndIcon\"\n tabler=\"IconLayoutRows\"\n hugeicons=\"LayoutBottomIcon\"\n phosphor=\"RowsIcon\"\n remixicon=\"RiGalleryLine\"\n className=\"size-4\"\n />\n </div>\n Acme Inc.\n </a>\n <LoginForm />\n </div>\n </div>\n )\n}\n",
|
||||
"type": "registry:page",
|
||||
"target": "app/login/page.tsx"
|
||||
},
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-03/components/login-form.tsx",
|
||||
"content": "import { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-rhea/ui/card\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldSeparator,\n} from \"@/registry/base-rhea/ui/field\"\nimport { Input } from \"@/registry/base-rhea/ui/input\"\n\nexport function LoginForm({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n <Card>\n <CardHeader className=\"text-center\">\n <CardTitle className=\"text-xl\">Welcome back</CardTitle>\n <CardDescription>\n Login with your Apple or Google account\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form>\n <FieldGroup>\n <Field>\n <Button variant=\"outline\" type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n fill=\"currentColor\"\n />\n </svg>\n Login with Apple\n </Button>\n <Button variant=\"outline\" type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n fill=\"currentColor\"\n />\n </svg>\n Login with Google\n </Button>\n </Field>\n <FieldSeparator className=\"*:data-[slot=field-separator-content]:bg-card\">\n Or continue with\n </FieldSeparator>\n <Field>\n <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n <Input\n id=\"email\"\n type=\"email\"\n placeholder=\"m@example.com\"\n required\n />\n </Field>\n <Field>\n <div className=\"flex items-center\">\n <FieldLabel htmlFor=\"password\">Password</FieldLabel>\n <a\n href=\"#\"\n className=\"ml-auto text-sm underline-offset-4 hover:underline\"\n >\n Forgot your password?\n </a>\n </div>\n <Input id=\"password\" type=\"password\" required />\n </Field>\n <Field>\n <Button type=\"submit\">Login</Button>\n <FieldDescription className=\"text-center\">\n Don't have an account? <a href=\"#\">Sign up</a>\n </FieldDescription>\n </Field>\n </FieldGroup>\n </form>\n </CardContent>\n </Card>\n <FieldDescription className=\"px-6 text-center\">\n By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n and <a href=\"#\">Privacy Policy</a>.\n </FieldDescription>\n </div>\n )\n}\n",
|
||||
"type": "registry:component"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"authentication",
|
||||
"login"
|
||||
],
|
||||
"type": "registry:block"
|
||||
}
|
||||
31
apps/v4/public/r/styles/base-rhea/login-04.json
Normal file
31
apps/v4/public/r/styles/base-rhea/login-04.json
Normal file
File diff suppressed because one or more lines are too long
30
apps/v4/public/r/styles/base-rhea/login-05.json
Normal file
30
apps/v4/public/r/styles/base-rhea/login-05.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "login-05",
|
||||
"title": "Login 05",
|
||||
"description": "A simple email-only login page.",
|
||||
"registryDependencies": [
|
||||
"button",
|
||||
"input",
|
||||
"label",
|
||||
"field"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-05/page.tsx",
|
||||
"content": "import { LoginForm } from \"@/registry/base-rhea/blocks/login-05/components/login-form\"\n\nexport default function LoginPage() {\n return (\n <div className=\"bg-background flex min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10\">\n <div className=\"w-full max-w-sm\">\n <LoginForm />\n </div>\n </div>\n )\n}\n",
|
||||
"type": "registry:page",
|
||||
"target": "app/login/page.tsx"
|
||||
},
|
||||
{
|
||||
"path": "registry/base-rhea/blocks/login-05/components/login-form.tsx",
|
||||
"content": "\"use client\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldSeparator,\n} from \"@/registry/base-rhea/ui/field\"\nimport { Input } from \"@/registry/base-rhea/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport function LoginForm({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div className={cn(\"flex flex-col gap-6\", className)} {...props}>\n <form>\n <FieldGroup>\n <div className=\"flex flex-col items-center gap-2 text-center\">\n <a\n href=\"#\"\n className=\"flex flex-col items-center gap-2 font-medium\"\n >\n <div className=\"flex size-8 items-center justify-center rounded-md\">\n <IconPlaceholder\n lucide=\"GalleryVerticalEndIcon\"\n tabler=\"IconLayoutRows\"\n hugeicons=\"LayoutBottomIcon\"\n phosphor=\"RowsIcon\"\n remixicon=\"RiGalleryLine\"\n className=\"size-6\"\n />\n </div>\n <span className=\"sr-only\">Acme Inc.</span>\n </a>\n <h1 className=\"text-xl font-bold\">Welcome to Acme Inc.</h1>\n <FieldDescription>\n Don't have an account? <a href=\"#\">Sign up</a>\n </FieldDescription>\n </div>\n <Field>\n <FieldLabel htmlFor=\"email\">Email</FieldLabel>\n <Input\n id=\"email\"\n type=\"email\"\n placeholder=\"m@example.com\"\n required\n />\n </Field>\n <Field>\n <Button type=\"submit\">Login</Button>\n </Field>\n <FieldSeparator>Or</FieldSeparator>\n <Field className=\"grid gap-4 sm:grid-cols-2\">\n <Button variant=\"outline\" type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n fill=\"currentColor\"\n />\n </svg>\n Continue with Apple\n </Button>\n <Button variant=\"outline\" type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n fill=\"currentColor\"\n />\n </svg>\n Continue with Google\n </Button>\n </Field>\n </FieldGroup>\n </form>\n <FieldDescription className=\"px-6 text-center\">\n By clicking continue, you agree to our <a href=\"#\">Terms of Service</a>{\" \"}\n and <a href=\"#\">Privacy Policy</a>.\n </FieldDescription>\n </div>\n )\n}\n",
|
||||
"type": "registry:component"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"authentication",
|
||||
"login"
|
||||
],
|
||||
"type": "registry:block"
|
||||
}
|
||||
19
apps/v4/public/r/styles/base-rhea/menubar-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/menubar-example.json
Normal file
File diff suppressed because one or more lines are too long
15
apps/v4/public/r/styles/base-rhea/menubar.json
Normal file
15
apps/v4/public/r/styles/base-rhea/menubar.json
Normal file
File diff suppressed because one or more lines are too long
18
apps/v4/public/r/styles/base-rhea/native-select-example.json
Normal file
18
apps/v4/public/r/styles/base-rhea/native-select-example.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "native-select-example",
|
||||
"title": "Native Select",
|
||||
"registryDependencies": [
|
||||
"field",
|
||||
"native-select",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/native-select-example.tsx",
|
||||
"content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport {\n Field,\n FieldDescription,\n FieldLabel,\n} from \"@/registry/base-rhea/ui/field\"\nimport {\n NativeSelect,\n NativeSelectOptGroup,\n NativeSelectOption,\n} from \"@/registry/base-rhea/ui/native-select\"\n\nexport default function NativeSelectExample() {\n return (\n <ExampleWrapper>\n <NativeSelectBasic />\n <NativeSelectWithGroups />\n <NativeSelectSizes />\n <NativeSelectWithField />\n <NativeSelectDisabled />\n <NativeSelectInvalid />\n </ExampleWrapper>\n )\n}\n\nfunction NativeSelectBasic() {\n return (\n <Example title=\"Basic\">\n <NativeSelect>\n <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n <NativeSelectOption value=\"grapes\" disabled>\n Grapes\n </NativeSelectOption>\n <NativeSelectOption value=\"pineapple\">Pineapple</NativeSelectOption>\n </NativeSelect>\n </Example>\n )\n}\n\nfunction NativeSelectWithGroups() {\n return (\n <Example title=\"With Groups\">\n <NativeSelect>\n <NativeSelectOption value=\"\">Select a food</NativeSelectOption>\n <NativeSelectOptGroup label=\"Fruits\">\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n </NativeSelectOptGroup>\n <NativeSelectOptGroup label=\"Vegetables\">\n <NativeSelectOption value=\"carrot\">Carrot</NativeSelectOption>\n <NativeSelectOption value=\"broccoli\">Broccoli</NativeSelectOption>\n <NativeSelectOption value=\"spinach\">Spinach</NativeSelectOption>\n </NativeSelectOptGroup>\n </NativeSelect>\n </Example>\n )\n}\n\nfunction NativeSelectSizes() {\n return (\n <Example title=\"Sizes\">\n <div className=\"flex flex-col gap-4\">\n <NativeSelect size=\"sm\">\n <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n </NativeSelect>\n <NativeSelect size=\"default\">\n <NativeSelectOption value=\"\">Select a fruit</NativeSelectOption>\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n </NativeSelect>\n </div>\n </Example>\n )\n}\n\nfunction NativeSelectWithField() {\n return (\n <Example title=\"With Field\">\n <Field>\n <FieldLabel htmlFor=\"native-select-country\">Country</FieldLabel>\n <NativeSelect id=\"native-select-country\">\n <NativeSelectOption value=\"\">Select a country</NativeSelectOption>\n <NativeSelectOption value=\"us\">United States</NativeSelectOption>\n <NativeSelectOption value=\"uk\">United Kingdom</NativeSelectOption>\n <NativeSelectOption value=\"ca\">Canada</NativeSelectOption>\n <NativeSelectOption value=\"au\">Australia</NativeSelectOption>\n </NativeSelect>\n <FieldDescription>Select your country of residence.</FieldDescription>\n </Field>\n </Example>\n )\n}\n\nfunction NativeSelectDisabled() {\n return (\n <Example title=\"Disabled\">\n <NativeSelect disabled>\n <NativeSelectOption value=\"\">Disabled</NativeSelectOption>\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n </NativeSelect>\n </Example>\n )\n}\n\nfunction NativeSelectInvalid() {\n return (\n <Example title=\"Invalid\">\n <NativeSelect aria-invalid=\"true\">\n <NativeSelectOption value=\"\">Error state</NativeSelectOption>\n <NativeSelectOption value=\"apple\">Apple</NativeSelectOption>\n <NativeSelectOption value=\"banana\">Banana</NativeSelectOption>\n <NativeSelectOption value=\"blueberry\">Blueberry</NativeSelectOption>\n </NativeSelect>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
12
apps/v4/public/r/styles/base-rhea/native-select.json
Normal file
12
apps/v4/public/r/styles/base-rhea/native-select.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "native-select",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/native-select.tsx",
|
||||
"content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n size?: \"sm\" | \"default\"\n}\n\nfunction NativeSelect({\n className,\n size = \"default\",\n ...props\n}: NativeSelectProps) {\n return (\n <div\n className={cn(\n \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n className\n )}\n data-slot=\"native-select-wrapper\"\n data-size={size}\n >\n <select\n data-slot=\"native-select\"\n data-size={size}\n className=\"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\n {...props}\n />\n <IconPlaceholder\n lucide=\"ChevronDownIcon\"\n tabler=\"IconSelector\"\n hugeicons=\"UnfoldMoreIcon\"\n phosphor=\"CaretDownIcon\"\n remixicon=\"RiArrowDownSLine\"\n className=\"text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n )\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n className,\n ...props\n}: React.ComponentProps<\"optgroup\">) {\n return (\n <optgroup\n data-slot=\"native-select-optgroup\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/navigation-menu.json
Normal file
12
apps/v4/public/r/styles/base-rhea/navigation-menu.json
Normal file
File diff suppressed because one or more lines are too long
19
apps/v4/public/r/styles/base-rhea/pagination-example.json
Normal file
19
apps/v4/public/r/styles/base-rhea/pagination-example.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "pagination-example",
|
||||
"title": "Pagination",
|
||||
"registryDependencies": [
|
||||
"field",
|
||||
"pagination",
|
||||
"select",
|
||||
"example"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/examples/pagination-example.tsx",
|
||||
"content": "\"use client\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-rhea/components/example\"\nimport { Field, FieldLabel } from \"@/registry/base-rhea/ui/field\"\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"@/registry/base-rhea/ui/pagination\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/base-rhea/ui/select\"\n\nexport default function PaginationExample() {\n return (\n <ExampleWrapper>\n <PaginationBasic />\n <PaginationSimple />\n <PaginationIconsOnly />\n </ExampleWrapper>\n )\n}\n\nfunction PaginationBasic() {\n return (\n <Example title=\"Basic\">\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious href=\"#\" />\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">1</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\" isActive>\n 2\n </PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">3</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext href=\"#\" />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </Example>\n )\n}\n\nfunction PaginationSimple() {\n return (\n <Example title=\"Simple\">\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationLink href=\"#\">1</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\" isActive>\n 2\n </PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">3</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">4</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">5</PaginationLink>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </Example>\n )\n}\n\nfunction PaginationIconsOnly() {\n return (\n <Example title=\"With Select\">\n <div className=\"flex items-center justify-between gap-4\">\n <Field orientation=\"horizontal\" className=\"w-fit\">\n <FieldLabel htmlFor=\"select-rows-per-page\">Rows per page</FieldLabel>\n <Select defaultValue=\"25\">\n <SelectTrigger className=\"w-20\" id=\"select-rows-per-page\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"start\">\n <SelectGroup>\n <SelectItem value=\"10\">10</SelectItem>\n <SelectItem value=\"25\">25</SelectItem>\n <SelectItem value=\"50\">50</SelectItem>\n <SelectItem value=\"100\">100</SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </Field>\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious href=\"#\" />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext href=\"#\" />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n </Example>\n )\n}\n",
|
||||
"type": "registry:example"
|
||||
}
|
||||
],
|
||||
"type": "registry:example"
|
||||
}
|
||||
15
apps/v4/public/r/styles/base-rhea/pagination.json
Normal file
15
apps/v4/public/r/styles/base-rhea/pagination.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "pagination",
|
||||
"registryDependencies": [
|
||||
"button"
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/pagination.tsx",
|
||||
"content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\nimport { Button } from \"@/registry/base-rhea/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\n \"mx-auto flex w-full justify-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"gap-0.5 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <Button\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n className={cn(className)}\n nativeButton={false}\n render={\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n {...props}\n />\n }\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n text = \"Previous\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"pl-1.5!\", className)}\n {...props}\n >\n <IconPlaceholder\n lucide=\"ChevronLeftIcon\"\n tabler=\"IconChevronLeft\"\n hugeicons=\"ArrowLeft01Icon\"\n phosphor=\"CaretLeftIcon\"\n remixicon=\"RiArrowLeftSLine\"\n data-icon=\"inline-start\"\n className=\"cn-rtl-flip\"\n />\n <span className=\"hidden sm:block\">\n {text}\n </span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n text = \"Next\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"pr-1.5!\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">{text}</span>\n <IconPlaceholder\n lucide=\"ChevronRightIcon\"\n tabler=\"IconChevronRight\"\n hugeicons=\"ArrowRight01Icon\"\n phosphor=\"CaretRightIcon\"\n remixicon=\"RiArrowRightSLine\"\n data-icon=\"inline-end\"\n className=\"cn-rtl-flip\"\n />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\n \"size-8 [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n <IconPlaceholder\n lucide=\"MoreHorizontalIcon\"\n tabler=\"IconDots\"\n hugeicons=\"MoreHorizontalCircle01Icon\"\n phosphor=\"DotsThreeIcon\"\n remixicon=\"RiMoreLine\"\n />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
21
apps/v4/public/r/styles/base-rhea/popover-example.json
Normal file
21
apps/v4/public/r/styles/base-rhea/popover-example.json
Normal file
File diff suppressed because one or more lines are too long
12
apps/v4/public/r/styles/base-rhea/popover.json
Normal file
12
apps/v4/public/r/styles/base-rhea/popover.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "popover",
|
||||
"files": [
|
||||
{
|
||||
"path": "registry/base-rhea/ui/popover.tsx",
|
||||
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nimport { cn } from \"@/registry/base-rhea/lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 w-72 origin-(--transform-origin) outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n",
|
||||
"type": "registry:ui"
|
||||
}
|
||||
],
|
||||
"type": "registry:ui"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user