feat: add glass component system -- GlassCard, GlassPanel, GlassDivider

This commit is contained in:
Developer
2026-07-28 09:51:11 +07:00
parent 473bdbae77
commit 63ad55edb5
4 changed files with 76 additions and 0 deletions
@@ -0,0 +1,36 @@
"use client";
import { cn } from "@/lib/utils";
import type { ComponentPropsWithoutRef } from "react";
type GlassVariant = "base" | "elevated" | "interactive" | "danger";
interface GlassCardProps extends ComponentPropsWithoutRef<"div"> {
variant?: GlassVariant;
}
const variantStyles: Record<GlassVariant, string> = {
base: "glass rounded-[var(--radius-card)]",
elevated:
"glass-elevated rounded-[var(--radius-card)]",
interactive:
"glass rounded-[var(--radius-card)] transition-all duration-150 hover:scale-[1.01] hover:border-[var(--color-border-glow)] cursor-pointer",
danger:
"glass rounded-[var(--radius-card)] border-red-500/30",
};
export function GlassCard({
variant = "base",
className,
children,
...props
}: GlassCardProps) {
return (
<div
className={cn(variantStyles[variant], "p-5", className)}
{...props}
>
{children}
</div>
);
}
@@ -0,0 +1,9 @@
"use client";
import { cn } from "@/lib/utils";
export function GlassDivider({ className }: { className?: string }) {
return (
<div className={cn("h-px bg-gradient-to-r from-transparent via-oklch(1 0 0 / 0.08) to-transparent", className)} />
);
}
@@ -0,0 +1,3 @@
export { GlassCard } from "./card";
export { GlassPanel } from "./panel";
export { GlassDivider } from "./divider";
@@ -0,0 +1,28 @@
"use client";
import { cn } from "@/lib/utils";
import type { ComponentPropsWithoutRef } from "react";
interface GlassPanelProps extends ComponentPropsWithoutRef<"div"> {
dense?: boolean;
}
export function GlassPanel({
dense = false,
className,
children,
...props
}: GlassPanelProps) {
return (
<div
className={cn(
"glass rounded-[var(--radius-panel)]",
dense ? "p-3" : "p-4",
className,
)}
{...props}
>
{children}
</div>
);
}