ui8kit 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -38
- package/package.json +3 -2
- package/r/{semantic/index.json → index.json} +8 -3
- package/r/ui/button.json +19 -0
- package/r/ui/card.json +17 -0
- package/r/{utility/ui → ui}/input.json +1 -1
- package/r/schema/registry-item.json +0 -68
- package/r/schema/registry.json +0 -93
- package/r/schema.json +0 -60
- package/r/semantic/components/article.json +0 -17
- package/r/semantic/components/aside.json +0 -17
- package/r/semantic/components/footer.json +0 -17
- package/r/semantic/components/header.json +0 -17
- package/r/semantic/components/main.json +0 -17
- package/r/semantic/components/markup.json +0 -17
- package/r/semantic/components/media.json +0 -17
- package/r/semantic/components/nav.json +0 -18
- package/r/semantic/components/section.json +0 -17
- package/r/semantic/components/sheet.json +0 -18
- package/r/semantic/ui/alert.json +0 -18
- package/r/semantic/ui/avatar.json +0 -17
- package/r/semantic/ui/badge.json +0 -18
- package/r/semantic/ui/breadcrumb.json +0 -19
- package/r/semantic/ui/button.json +0 -18
- package/r/semantic/ui/card.json +0 -17
- package/r/semantic/ui/input.json +0 -17
- package/r/semantic/ui/label.json +0 -17
- package/r/semantic/ui/link.json +0 -18
- package/r/semantic/ui/skeleton.json +0 -15
- package/r/semantic/ui/table.json +0 -17
- package/r/semantic/ui/textarea.json +0 -17
- package/r/utility/blocks/hero-section.json +0 -15
- package/r/utility/index.json +0 -150
- package/r/utility/lib/utils.json +0 -18
- package/r/utility/templates/landing-page.json +0 -15
- package/r/utility/ui/button.json +0 -17
- package/r/utility/ui/card.json +0 -15
- /package/css/{dist → src}/semantic/alert.css +0 -0
- /package/css/{dist → src}/semantic/article.css +0 -0
- /package/css/{dist → src}/semantic/avatar.css +0 -0
- /package/css/{dist → src}/semantic/badge.css +0 -0
- /package/css/{dist → src}/semantic/breadcrumb.css +0 -0
- /package/css/{dist → src}/semantic/button.css +0 -0
- /package/css/{dist → src}/semantic/card.css +0 -0
- /package/css/{dist → src}/semantic/index.css +0 -0
- /package/css/{dist → src}/semantic/input.css +0 -0
- /package/css/{dist → src}/semantic/label.css +0 -0
- /package/css/{dist → src}/semantic/link.css +0 -0
- /package/css/{dist → src}/semantic/main.css +0 -0
- /package/css/{dist → src}/semantic/markup.css +0 -0
- /package/css/{dist → src}/semantic/nav.css +0 -0
- /package/css/{dist → src}/semantic/pagination.css +0 -0
- /package/css/{dist → src}/semantic/section.css +0 -0
- /package/css/{dist → src}/semantic/sheet.css +0 -0
- /package/css/{dist → src}/semantic/skeleton.css +0 -0
- /package/css/{dist → src}/semantic/table.css +0 -0
- /package/css/{dist → src}/semantic/textarea.css +0 -0
- /package/r/{utility/components → components}/article.json +0 -0
- /package/r/{utility/components → components}/aside.json +0 -0
- /package/r/{utility/components → components}/footer.json +0 -0
- /package/r/{utility/components → components}/header.json +0 -0
- /package/r/{utility/components → components}/main.json +0 -0
- /package/r/{utility/components → components}/markup.json +0 -0
- /package/r/{utility/components → components}/media.json +0 -0
- /package/r/{utility/components → components}/nav.json +0 -0
- /package/r/{utility/components → components}/navbar.json +0 -0
- /package/r/{utility/components → components}/section.json +0 -0
- /package/r/{utility/components → components}/sheet.json +0 -0
- /package/r/{semantic/lib → lib}/utils.json +0 -0
- /package/r/{utility/ui → ui}/alert.json +0 -0
- /package/r/{utility/ui → ui}/avatar.json +0 -0
- /package/r/{utility/ui → ui}/badge.json +0 -0
- /package/r/{utility/ui → ui}/breadcrumb.json +0 -0
- /package/r/{utility/ui → ui}/label.json +0 -0
- /package/r/{utility/ui → ui}/link.json +0 -0
- /package/r/{utility/ui → ui}/skeleton.json +0 -0
- /package/r/{utility/ui → ui}/table.json +0 -0
- /package/r/{utility/ui → ui}/textarea.json +0 -0
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "sheet",
|
|
4
|
-
"type": "registry:component",
|
|
5
|
-
"description": "CSS-only Sheet component for SSR/SSG compatibility\n * \n * Usage example:\n * ```tsx\n * <Sheet>\n * <SheetTrigger href=\"#my-sheet\">Open Sheet</SheetTrigger>\n * <SheetContent id=\"my-sheet\">\n * <SheetHeader>\n * <SheetTitle>Sheet Title</SheetTitle>\n * <SheetDescription>Description text</SheetDescription>\n * </SheetHeader>\n * <div className=\"p-6\">Content here</div>\n * <SheetFooter>\n * <SheetClose>Close</SheetClose>\n * </SheetFooter>\n * </SheetContent>\n * </Sheet>\n * ```",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"lucide-react"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "semantic/components/sheet.tsx",
|
|
14
|
-
"content": "import * as React from \"react\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\n/**\n * CSS-only Sheet component for SSR/SSG compatibility\n * \n * Usage example:\n * ```tsx\n * <Sheet>\n * <SheetTrigger href=\"#my-sheet\">Open Sheet</SheetTrigger>\n * <SheetContent id=\"my-sheet\">\n * <SheetHeader>\n * <SheetTitle>Sheet Title</SheetTitle>\n * <SheetDescription>Description text</SheetDescription>\n * </SheetHeader>\n * <div className=\"p-6\">Content here</div>\n * <SheetFooter>\n * <SheetClose>Close</SheetClose>\n * </SheetFooter>\n * </SheetContent>\n * </Sheet>\n * ```\n */\n\n// Layout for sheet with checkbox\ninterface SheetLayoutProps {\n children: React.ReactNode;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nfunction SheetLayout({ trigger, children, className }: SheetLayoutProps) {\n return (\n <div className={cn(\"relative\", className)}>\n <input type=\"checkbox\" id=\"sheet-toggle\" className=\"peer sr-only\" aria-hidden=\"true\" />\n {trigger}\n {children}\n </div>);\n\n}\n\n// Props interfaces\ninterface SheetTriggerProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface SheetContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// Trigger component - uses peer checkbox\nfunction SheetTrigger({ children, className, ...props }: SheetTriggerProps) {\n return (\n <label htmlFor=\"sheet-toggle\" className={cn(\"sheet-trigger\", className)} {...props}>\n {children}\n </label>);\n\n}\n\n// Content component - pure CSS off-canvas\n// To change the side from which the panel slides in:\n// For LEFT: use 'inset-y-0 left-0 border-r transform -translate-x-full peer-checked:translate-x-0'\n// For RIGHT: use 'inset-y-0 right-0 border-l transform translate-x-full peer-checked:translate-x-0'\nfunction SheetContent({ children, className, ...props }: SheetContentProps) {\n // Example usage (choose one line):\n // LEFT PANEL: className={cn(\"fixed inset-y-0 left-0 z-50 w-full max-w-sm bg-background shadow-lg border-r transform -translate-x-full transition-transform duration-300 ease-out peer-checked:translate-x-0 flex flex-col overflow-hidden\", className)}\n // RIGHT PANEL: className={cn(\"fixed inset-y-0 right-0 z-50 w-full max-w-sm bg-background shadow-lg border-l transform translate-x-full transition-transform duration-300 ease-out peer-checked:translate-x-0 flex flex-col overflow-hidden\", className)}\n return (\n <div role=\"dialog\" aria-modal=\"true\" className={cn(\"sheet-content\", className)} {...props}>\n {/* Close button */}\n <div className=\"absolute top-4 right-4 z-10\">\n <label htmlFor=\"sheet-toggle\" className={cn(\"rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 inline-flex h-6 w-6 items-center justify-center bg-background/80 backdrop-blur-sm cursor-pointer\")}>\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </label>\n </div>\n {children}\n </div>);\n\n}\n\n// Overlay component\nfunction SheetOverlay({ className, ...props }: {className?: string;}) {\n return (\n <label\n htmlFor=\"sheet-toggle\"\n\n className={cn(\"sheet-overlay\",\n\n className\n )}\n {...props} />);\n\n\n}\n\n// Header component\ninterface SheetHeaderProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetHeader({ children, className, ...props }: SheetHeaderProps) {\n return (\n <div className={cn(\"sheet-header\", className)} {...props}>\n {children}\n </div>);\n\n}\n\n// Body component for main content\ninterface SheetBodyProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetBody({ children, className, ...props }: SheetBodyProps) {\n return (\n <div className={cn(\"sheet-body\", className)} {...props}>\n {children}\n </div>);\n\n}\n\n// Footer component\ninterface SheetFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetFooter({ children, className, ...props }: SheetFooterProps) {\n return (\n <div className={cn(\"sheet-footer\", className)} {...props}>\n {children}\n </div>);\n\n}\n\n// Title component\ninterface SheetTitleProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetTitle({ children, className, ...props }: SheetTitleProps) {\n return (\n <h2 className={cn(\"sheet-title\", className)} {...props}>\n {children}\n </h2>);\n\n}\n\n// Description component\ninterface SheetDescriptionProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetDescription({ children, className, ...props }: SheetDescriptionProps) {\n return (\n <p className={cn(\"sheet-description\", className)} {...props}>\n {children}\n </p>);\n\n}\n\n// Close component - simple link to close\ninterface SheetCloseProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction SheetClose({ children, className, ...props }: SheetCloseProps) {\n return (\n <label htmlFor=\"sheet-toggle\" className={cn(\"sheet-close\", className)} {...props}>\n {children}\n </label>);\n\n}\n\nexport {\n SheetLayout,\n SheetTrigger,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n SheetClose,\n SheetBody,\n SheetOverlay };",
|
|
15
|
-
"target": "components"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
package/r/semantic/ui/alert.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "alert",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"class-variance-authority"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "semantic/ui/alert.tsx",
|
|
14
|
-
"content": "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n\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\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props} />);\n\n\n}\n\nexport { Alert, AlertTitle, AlertDescription };",
|
|
15
|
-
"target": "ui"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "avatar",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "Avatar context for image loading status",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/avatar.tsx",
|
|
13
|
-
"content": "\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// Avatar context for image loading status\nconst AvatarContext = React.createContext<{\n imageStatus: \"idle\" | \"loading\" | \"loaded\" | \"error\";\n setImageStatus: (status: \"idle\" | \"loading\" | \"loaded\" | \"error\") => void;\n} | null>(null);\n\nfunction Avatar({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n // Manage image loading status in context\n const [imageStatus, setImageStatus] = React.useState<\"idle\" | \"loading\" | \"loaded\" | \"error\">(\"idle\");\n return (\n <AvatarContext.Provider value={{ imageStatus, setImageStatus }}>\n <span\n\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props} />\n\n </AvatarContext.Provider>);\n\n}\n\ninterface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nfunction AvatarImage({ className, src, ...props }: AvatarImageProps) {\n const ctx = React.useContext(AvatarContext);\n const [status, setStatus] = React.useState<\"idle\" | \"loading\" | \"loaded\" | \"error\">(\"idle\");\n\n React.useEffect(() => {\n if (!src) {\n setStatus(\"error\");\n ctx?.setImageStatus(\"error\");\n return;\n }\n setStatus(\"loading\");\n ctx?.setImageStatus(\"loading\");\n const img = new window.Image();\n img.src = src;\n img.onload = () => {\n setStatus(\"loaded\");\n ctx?.setImageStatus(\"loaded\");\n };\n img.onerror = () => {\n setStatus(\"error\");\n ctx?.setImageStatus(\"error\");\n };\n // Clean up\n return () => {\n img.onload = null;\n img.onerror = null;\n };\n }, [src]);\n\n if (status !== \"loaded\") return null;\n return (\n <img\n\n className={cn(\"aspect-square size-full\", className)}\n src={src}\n {...props} />);\n\n\n}\n\ninterface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {\n delayMs?: number;\n}\n\nfunction AvatarFallback({ className, delayMs, ...props }: AvatarFallbackProps) {\n const ctx = React.useContext(AvatarContext);\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\n\n React.useEffect(() => {\n if (delayMs !== undefined) {\n const timer = setTimeout(() => setCanRender(true), delayMs);\n return () => clearTimeout(timer);\n }\n }, [delayMs]);\n\n if (!canRender) return null;\n if (ctx?.imageStatus === \"loaded\") return null;\n return (\n <span\n\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props} />);\n\n\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/r/semantic/ui/badge.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "badge",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "Simple array of badge variant keys for semantic classes",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"@radix-ui/react-slot"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "semantic/ui/badge.tsx",
|
|
14
|
-
"content": "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\"\nimport { Slot } from \"@radix-ui/react-slot\";\n\n// Simple array of badge variant keys for semantic classes\nconst badgeVariants = [\"default\", \"secondary\", \"destructive\", \"outline\"] as const;\n\n// Type for badge variants\ntype BadgeVariant = typeof badgeVariants[number];\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> & { variant?: BadgeVariant; asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(\n \"badge\",\n variant && `badge-${variant}`,\n className\n )}\n {...props}\n />\n );\n}\n\nBadge.displayName = \"Badge\";\n\nexport { Badge };",
|
|
15
|
-
"target": "ui"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "breadcrumb",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"@radix-ui/react-slot",
|
|
9
|
-
"lucide-react"
|
|
10
|
-
],
|
|
11
|
-
"devDependencies": [],
|
|
12
|
-
"files": [
|
|
13
|
-
{
|
|
14
|
-
"path": "semantic/ui/breadcrumb.tsx",
|
|
15
|
-
"content": "import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props} />);\n\n\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n\n\n}: React.ComponentProps<\"a\"> & {asChild?: boolean;}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props} />);\n\n\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n\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\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}>\n\n {children ?? <ChevronRight />}\n </li>);\n\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}>\n\n <MoreHorizontal className=\"size-4\" />\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 };",
|
|
16
|
-
"target": "ui"
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "button",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "Simple arrays of button variant keys for semantic classes",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"@radix-ui/react-slot"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "semantic/ui/button.tsx",
|
|
14
|
-
"content": "import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"@/lib/utils\";\n\n// Simple arrays of button variant keys for semantic classes\nconst buttonVariants = {\n variant: [\"default\", \"destructive\", \"outline\", \"secondary\", \"ghost\", \"link\"] as const,\n size: [\"default\", \"sm\", \"lg\", \"icon\"] as const,\n} as const;\n\n// Types for button variants\ntype ButtonVariant = typeof buttonVariants.variant[number];\ntype ButtonSize = typeof buttonVariants.size[number];\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n variant?: ButtonVariant;\n size?: ButtonSize;\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(\n \"button\",\n variant && `button-${variant}`,\n size && `button-${size}`,\n className\n )}\n {...props}\n />\n );\n}\n\nButton.displayName = \"Button\";\n\nexport { Button };",
|
|
15
|
-
"target": "ui"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
package/r/semantic/ui/card.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "card",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/card.tsx",
|
|
13
|
-
"content": "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card-header\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"h3\">) {\n return (\n <h3\n\n className={cn(\"card-title\", className)}\n {...props} />);\n\n\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card-description\", className)}\n {...props} />);\n\n\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card-action\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardMeta({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"article-meta\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardFigure({\n className,\n ...props\n}: React.ComponentProps<\"figure\">) {\n return (\n <figure\n\n className={cn(\"article-figure\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardImage({\n className,\n ...props\n}: React.ComponentProps<\"img\">) {\n return (\n <img\n\n className={cn(\"article-image\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardFigcaption({\n className,\n ...props\n}: React.ComponentProps<\"figcaption\">) {\n return (\n <figcaption\n\n className={cn(\"article-figcaption\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card-content\", className)}\n {...props} />);\n\n\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"card-footer\", className)}\n {...props} />);\n\n\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardMeta,\n CardFigure,\n CardImage,\n CardFigcaption,\n CardContent };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/r/semantic/ui/input.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "input",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/input.tsx",
|
|
13
|
-
"content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props} />);\n\n\n}\n\nexport { Input };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/r/semantic/ui/label.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "label",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/label.tsx",
|
|
13
|
-
"content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n\n className={cn(\"label\",\n\n className\n )}\n {...props} />);\n\n\n}\n\nexport { Label };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/r/semantic/ui/link.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "link",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react",
|
|
8
|
-
"class-variance-authority"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "semantic/ui/link.tsx",
|
|
14
|
-
"content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst linkVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Link({\n className,\n variant = \"link\",\n size,\n href,\n type,\n ...props\n}: React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants>) {\n return (\n <a\n data-slot=\"link-button\"\n className={cn(linkVariants({ variant, size, className }))}\n href={href}\n type=\"button\"\n {...props}\n />\n )\n}\n\nLink.displayName = \"Link\"\n\nfunction LinkButton({\n className,\n variant,\n size,\n href,\n type,\n ...props\n}: React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants>) {\n return (\n <a\n data-slot=\"button\"\n className={cn(linkVariants({ variant, size, className }))}\n href={href}\n type=\"button\"\n {...props}\n />\n )\n}\n\nLinkButton.displayName = \"LinkButton\"\n\nfunction A({\n href,\n ...props\n}: React.ComponentProps<\"a\">) {\n return (\n <a\n data-slot=\"a\"\n href={href}\n {...props}\n />\n )\n}\n\nA.displayName = \"A\"\n\nexport { Link, LinkButton, A, linkVariants }",
|
|
15
|
-
"target": "ui"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "skeleton",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [],
|
|
7
|
-
"devDependencies": [],
|
|
8
|
-
"files": [
|
|
9
|
-
{
|
|
10
|
-
"path": "semantic/ui/skeleton.tsx",
|
|
11
|
-
"content": "import { cn } from \"@/lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props} />);\n\n\n}\n\nexport { Skeleton };",
|
|
12
|
-
"target": "ui"
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
}
|
package/r/semantic/ui/table.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "table",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/table.tsx",
|
|
13
|
-
"content": "\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n\n className=\"relative w-full overflow-x-auto\">\n\n <table\n\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props} />\n\n </div>);\n\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n\n className={cn(\"[&_tr]:border-b\", className)}\n {...props} />);\n\n\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props} />);\n\n\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props} />);\n\n\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props} />);\n\n\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "textarea",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "semantic/ui/textarea.tsx",
|
|
13
|
-
"content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n\n className={cn(\n \"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props} />);\n\n\n}\n\nexport { Textarea };",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "hero-section",
|
|
4
|
-
"type": "registry:block",
|
|
5
|
-
"description": "A hero section component for landing pages",
|
|
6
|
-
"dependencies": [],
|
|
7
|
-
"devDependencies": [],
|
|
8
|
-
"files": [
|
|
9
|
-
{
|
|
10
|
-
"path": "utility/blocks/hero-section.js",
|
|
11
|
-
"content": "/**\r\n * A hero section component for landing pages\r\n */\r\nexport function HeroSection({ title, subtitle, children, className = \"\" }) {\r\n return `\r\n <section class=\"relative py-20 px-4 text-center ${className}\">\r\n <div class=\"max-w-4xl mx-auto\">\r\n ${title ? `<h1 class=\"text-4xl md:text-6xl font-bold mb-6\">${title}</h1>` : ''}\r\n ${subtitle ? `<p class=\"text-xl text-muted-foreground mb-8\">${subtitle}</p>` : ''}\r\n ${children || ''}\r\n </div>\r\n </section>\r\n `\r\n}\r\n\r\nexport function HeroActions({ children, className = \"\" }) {\r\n return `\r\n <div class=\"flex flex-col sm:flex-row gap-4 justify-center ${className}\">\r\n ${children || ''}\r\n </div>\r\n `\r\n} ",
|
|
12
|
-
"target": "blocks"
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
}
|
package/r/utility/index.json
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry.json",
|
|
3
|
-
"components": [
|
|
4
|
-
{
|
|
5
|
-
"name": "textarea",
|
|
6
|
-
"type": "registry:ui",
|
|
7
|
-
"description": ""
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"name": "table",
|
|
11
|
-
"type": "registry:ui",
|
|
12
|
-
"description": ""
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"name": "skeleton",
|
|
16
|
-
"type": "registry:ui",
|
|
17
|
-
"description": ""
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"name": "link",
|
|
21
|
-
"type": "registry:ui",
|
|
22
|
-
"description": ""
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"name": "label",
|
|
26
|
-
"type": "registry:ui",
|
|
27
|
-
"description": ""
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"name": "input",
|
|
31
|
-
"type": "registry:ui",
|
|
32
|
-
"description": ""
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "card",
|
|
36
|
-
"type": "registry:ui",
|
|
37
|
-
"description": "A flexible card component for displaying content"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "button",
|
|
41
|
-
"type": "registry:ui",
|
|
42
|
-
"description": "A customizable button component with multiple variants and sizes"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"name": "breadcrumb",
|
|
46
|
-
"type": "registry:ui",
|
|
47
|
-
"description": ""
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"name": "badge",
|
|
51
|
-
"type": "registry:ui",
|
|
52
|
-
"description": ""
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"name": "avatar",
|
|
56
|
-
"type": "registry:ui",
|
|
57
|
-
"description": "Avatar context for image loading status"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"name": "alert",
|
|
61
|
-
"type": "registry:ui",
|
|
62
|
-
"description": ""
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"name": "hero-section",
|
|
66
|
-
"type": "registry:block",
|
|
67
|
-
"description": ""
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "hero-section",
|
|
71
|
-
"type": "registry:block",
|
|
72
|
-
"description": "A hero section component for landing pages"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"name": "sheet",
|
|
76
|
-
"type": "registry:component",
|
|
77
|
-
"description": "CSS-only Sheet component for SSR/SSG compatibility\n * \n * Usage example:\n * ```tsx\n * <Sheet>\n * <SheetTrigger href=\"#my-sheet\">Open Sheet</SheetTrigger>\n * <SheetContent id=\"my-sheet\">\n * <SheetHeader>\n * <SheetTitle>Sheet Title</SheetTitle>\n * <SheetDescription>Description text</SheetDescription>\n * </SheetHeader>\n * <div className=\"p-6\">Content here</div>\n * <SheetFooter>\n * <SheetClose>Close</SheetClose>\n * </SheetFooter>\n * </SheetContent>\n * </Sheet>\n * ```"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"name": "section",
|
|
81
|
-
"type": "registry:component",
|
|
82
|
-
"description": ""
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"name": "navbar",
|
|
86
|
-
"type": "registry:component",
|
|
87
|
-
"description": "A responsive navigation bar component with logo and menu items"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"name": "nav",
|
|
91
|
-
"type": "registry:component",
|
|
92
|
-
"description": "CSS-only Navigation component with responsive design\n * \n * No external JavaScript dependencies or runtime requirements.\n * Works with server-side rendering (SSR) and static site generation (SSG).\n * \n * Required Tailwind CSS:\n * ```css\n * @layer components {\n * \n * .peer:checked ~[data - slot=\"nav-mobile\"] {\n * @apply opacity - 100 visible translate - y - 0;\n * }\n * \n * \n * .group: target[data - slot= \"nav-dropdown-content\"] {\n * @apply opacity - 100 visible scale - 100;\n * }\n * \n * \n * details[data - slot=\"nav-mobile-dropdown\"][open] summary {\n * @apply bg - accent text - accent - foreground;\n * }\n * }\n * ```\n * \n * Key features:\n * - Pure CSS dropdowns using :target selector\n * - Checkbox-based mobile menu\n * - Auto-closing mobile menu when clicking outside\n * - Accessible keyboard navigation\n * \n * Usage example:\n * \n * <NavLayout>\n * <NavBar>\n * <h2>Logo</h2>\n *\n * \n * <Nav>\n * <NavList>\n * <NavItem>\n * <NavLink href=\"/\" active>Home</NavLink>\n * </NavItem>\n * <NavItem>\n * <NavDropdown id=\"products-dropdown\" title=\"Products\">\n * <NavDropdownItem href=\"/products/web\">Web</NavDropdownItem>\n * <NavDropdownItem href=\"/products/mobile\">Mobile</NavDropdownItem>\n * </NavDropdown>\n * </NavItem>\n * </NavList>\n * </Nav>\n *\n * \n * <NavTrigger />\n * </NavBar>\n *\n * \n * <NavMobile>\n * <NavMobileList>\n * <NavMobileItem>\n * <NavMobileLink href=\"/\" active>Home</NavMobileLink>\n * </NavMobileItem>\n * <NavMobileItem>\n * <NavMobileDropdown title=\"Products\">\n * <NavMobileDropdownItem href=\"/products/web\">Web</NavMobileDropdownItem>\n * <NavMobileDropdownItem href=\"/products/mobile\">Mobile</NavMobileDropdownItem>\n * </NavMobileDropdown>\n * </NavMobileItem>\n * </NavMobileList>\n * </NavMobile>\n * </NavLayout>\n * ```"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"name": "media",
|
|
96
|
-
"type": "registry:component",
|
|
97
|
-
"description": ""
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"name": "markup",
|
|
101
|
-
"type": "registry:component",
|
|
102
|
-
"description": ""
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"name": "main",
|
|
106
|
-
"type": "registry:component",
|
|
107
|
-
"description": ""
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"name": "header",
|
|
111
|
-
"type": "registry:component",
|
|
112
|
-
"description": ""
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"name": "footer",
|
|
116
|
-
"type": "registry:component",
|
|
117
|
-
"description": ""
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"name": "aside",
|
|
121
|
-
"type": "registry:component",
|
|
122
|
-
"description": ""
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"name": "article",
|
|
126
|
-
"type": "registry:component",
|
|
127
|
-
"description": "Helper function for determining styles that the parser will be able to process"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"name": "landing-page",
|
|
131
|
-
"type": "registry:template",
|
|
132
|
-
"description": "A complete landing page template with hero, features, and footer sections"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"name": "utils",
|
|
136
|
-
"type": "registry:lib",
|
|
137
|
-
"description": ""
|
|
138
|
-
}
|
|
139
|
-
],
|
|
140
|
-
"categories": [
|
|
141
|
-
"ui",
|
|
142
|
-
"components",
|
|
143
|
-
"blocks",
|
|
144
|
-
"lib",
|
|
145
|
-
"templates"
|
|
146
|
-
],
|
|
147
|
-
"version": "1.0.0",
|
|
148
|
-
"lastUpdated": "2025-06-02T13:06:19.458Z",
|
|
149
|
-
"registry": "utility"
|
|
150
|
-
}
|
package/r/utility/lib/utils.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "utils",
|
|
4
|
-
"type": "registry:lib",
|
|
5
|
-
"description": "",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"clsx",
|
|
8
|
-
"tailwind-merge"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": [],
|
|
11
|
-
"files": [
|
|
12
|
-
{
|
|
13
|
-
"path": "lib/utils.ts",
|
|
14
|
-
"content": "import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n} ",
|
|
15
|
-
"target": "lib"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "landing-page",
|
|
4
|
-
"type": "registry:template",
|
|
5
|
-
"description": "A complete landing page template with hero, features, and footer sections",
|
|
6
|
-
"dependencies": [],
|
|
7
|
-
"devDependencies": [],
|
|
8
|
-
"files": [
|
|
9
|
-
{
|
|
10
|
-
"path": "utility/templates/landing-page.js",
|
|
11
|
-
"content": "/**\r\n * A complete landing page template with hero, features, and footer sections\r\n */\r\nexport function LandingPageTemplate({ \r\n heroTitle, \r\n heroSubtitle, \r\n features = [], \r\n className = \"\" \r\n}) {\r\n const featuresHtml = features.map(feature => `\r\n <div class=\"p-6 border rounded-lg\">\r\n <h3 class=\"text-xl font-semibold mb-2\">${feature.title}</h3>\r\n <p class=\"text-muted-foreground\">${feature.description}</p>\r\n </div>\r\n `).join('')\r\n\r\n return `\r\n <div class=\"min-h-screen ${className}\">\r\n <!-- Hero Section -->\r\n <section class=\"relative py-20 px-4 text-center bg-gradient-to-b from-background to-muted\">\r\n <div class=\"max-w-4xl mx-auto\">\r\n <h1 class=\"text-4xl md:text-6xl font-bold mb-6\">${heroTitle}</h1>\r\n <p class=\"text-xl text-muted-foreground mb-8\">${heroSubtitle}</p>\r\n <div class=\"flex flex-col sm:flex-row gap-4 justify-center\">\r\n <button class=\"px-6 py-3 bg-primary text-primary-foreground rounded-md font-medium\">\r\n Get Started\r\n </button>\r\n <button class=\"px-6 py-3 border border-input rounded-md font-medium\">\r\n Learn More\r\n </button>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Features Section -->\r\n <section class=\"py-20 px-4\">\r\n <div class=\"max-w-6xl mx-auto\">\r\n <h2 class=\"text-3xl font-bold text-center mb-12\">Features</h2>\r\n <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\r\n ${featuresHtml}\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Footer -->\r\n <footer class=\"py-12 px-4 border-t\">\r\n <div class=\"max-w-6xl mx-auto text-center\">\r\n <p class=\"text-muted-foreground\">© 2024 Your Company. All rights reserved.</p>\r\n </div>\r\n </footer>\r\n </div>\r\n `\r\n} ",
|
|
12
|
-
"target": "templates"
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
}
|
package/r/utility/ui/button.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "button",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "A customizable button component with multiple variants and sizes",
|
|
6
|
-
"dependencies": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"devDependencies": [],
|
|
10
|
-
"files": [
|
|
11
|
-
{
|
|
12
|
-
"path": "utility/ui/button.tsx",
|
|
13
|
-
"content": "/**\n * A customizable button component with multiple variants and sizes\n */\nimport React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\"\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", asChild = false, ...props }, ref) => {\n const Comp = asChild ? \"span\" : \"button\"\n \n return (\n <Comp\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n \"bg-primary text-primary-foreground hover:bg-primary/90\": variant === \"default\",\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\": variant === \"destructive\",\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\": variant === \"outline\",\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\": variant === \"secondary\",\n \"hover:bg-accent hover:text-accent-foreground\": variant === \"ghost\",\n \"text-primary underline-offset-4 hover:underline\": variant === \"link\",\n },\n {\n \"h-10 px-4 py-2\": size === \"default\",\n \"h-9 rounded-md px-3\": size === \"sm\",\n \"h-11 rounded-md px-8\": size === \"lg\",\n \"h-10 w-10\": size === \"icon\",\n },\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nButton.displayName = \"Button\"\n\nexport { Button, type ButtonProps }",
|
|
14
|
-
"target": "ui"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
package/r/utility/ui/card.json
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://buildy.tw/schema/registry-item.json",
|
|
3
|
-
"name": "card",
|
|
4
|
-
"type": "registry:ui",
|
|
5
|
-
"description": "A flexible card component for displaying content",
|
|
6
|
-
"dependencies": [],
|
|
7
|
-
"devDependencies": [],
|
|
8
|
-
"files": [
|
|
9
|
-
{
|
|
10
|
-
"path": "utility/ui/card.tsx",
|
|
11
|
-
"content": "/**\n * A flexible card component for displaying content\n */\nimport { cn } from \"../../lib/utils\"\n\nexport function Card({ className, ...props }) {\n return (\n <div\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport function CardHeader({ className, ...props }) {\n return (\n <div className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n}\n\nexport function CardTitle({ className, ...props }) {\n return (\n <h3\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport function CardDescription({ className, ...props }) {\n return (\n <p className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n}\n\nexport function CardContent({ className, ...props }) {\n return <div className={cn(\"p-6 pt-0\", className)} {...props} />\n}\n\nexport function CardFooter({ className, ...props }) {\n return (\n <div className={cn(\"flex items-center p-6 pt-0\", className)} {...props} />\n )\n}\n",
|
|
12
|
-
"target": "ui"
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|