Najjar\NajjarV02 92cf4aba3b
Some checks are pending
CI/CD / test-and-build (push) Waiting to run
CI/CD / deploy (push) Blocked by required conditions
feat: add robotics components and data structures
- Introduced RobotProductCard component for displaying robot details.
- Added WhyUs component highlighting key reasons for choosing our robotics solutions.
- Implemented CursorSpotlight for enhanced user interaction.
- Created GlassPanel for a stylish UI element.
- Developed MotionSection for animated section visibility.
- Added PremiumButton for versatile button options.
- Established data structures for industries and robots, including detailed specifications and use cases.
- Included utility functions for retrieving robots by slug and category.
2026-05-20 17:22:47 +04:00

41 lines
1.2 KiB
TypeScript

"use client";
import { cn } from "@/lib/cn";
import { ArrowUpRight } from "lucide-react";
import type { ComponentPropsWithoutRef } from "react";
type Variant = "primary" | "ghost" | "outline";
type Props = ComponentPropsWithoutRef<"a"> & {
variant?: Variant;
arrow?: boolean;
};
const base =
"relative inline-flex items-center gap-2 rounded-full px-7 py-3.5 text-sm font-medium tracking-wide transition-all duration-500";
const variants: Record<Variant, string> = {
primary:
"bg-gradient-to-r from-gold-light via-gold to-gold-deep text-obsidian shadow-[0_10px_40px_-12px_rgba(212,164,55,0.6)] hover:shadow-[0_18px_50px_-12px_rgba(242,194,91,0.8)]",
outline:
"border border-bone/20 text-bone hover:border-gold/60 hover:text-gold-light",
ghost: "text-bone hover:text-gold-light",
};
export function PremiumButton({
variant = "primary",
className,
children,
arrow = true,
...rest
}: Props) {
return (
<a className={cn(base, variants[variant], className)} {...rest}>
<span>{children}</span>
{arrow ? (
<ArrowUpRight className="size-4 transition-transform duration-500 group-hover:translate-x-0.5" />
) : null}
</a>
);
}