import { cn } from "@/lib/utils"
import {
ChevronLeftIcon,
ChevronRightIcon,
MoreHorizontalIcon,
} from "lucide-react"
import Link from "next/link"
import * as React from "react"
function Pagination({ className, ...props }: React.ComponentProps<"nav">) {
return (
)
}
function PaginationContent({
className,
...props
}: React.ComponentProps<"ul">) {
return (
)
}
function PaginationItem({ ...props }: React.ComponentProps<"li">) {
return
}
type PaginationLinkProps = {
href?: string
className?: string
isActive?: boolean
size?: "default" | "sm" | "lg" | "icon"
} & (
| ({ href: string } & Omit, "className">)
| ({ href?: never } & React.ComponentProps<"button">)
)
function PaginationLink({
className,
isActive,
size = "icon",
...props
}: PaginationLinkProps) {
const classes = cn(
// Base styles - Apple inspired
"relative inline-flex items-center justify-center",
"font-medium text-sm tracking-tight",
"transition-all duration-200 ease-out",
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:ring-offset-2",
// Size variants
size === "icon" && "h-8 w-8 rounded-xl",
size === "sm" && "h-7 px-3 rounded-xl",
size === "default" && "h-8 px-3.5 rounded-xl",
size === "lg" && "h-9 px-4 rounded-xl",
// Active state - Apple blue accent
isActive && [
"bg-primary text-primary-foreground",
"shadow-sm shadow-primary/20",
"scale-100",
],
// Inactive state - subtle hover
!isActive && [
"text-muted-foreground hover:text-foreground",
"hover:bg-accent/50",
"active:scale-95",
],
className
)
const commonProps = {
"aria-current": isActive ? ("page" as const) : undefined,
"data-slot": "pagination-link" as const,
"data-active": isActive,
className: classes,
}
if ("href" in props && props.href) {
const { href, ...linkProps } = props
return
}
const buttonProps = props as React.ComponentProps<"button">
return
}
function PaginationPrevious({
className,
...props
}: Omit) {
return (
Previous
)
}
function PaginationNext({
className,
...props
}: Omit) {
return (
Next
)
}
function PaginationEllipsis({
className,
...props
}: React.ComponentProps<"span">) {
return (
More pages
)
}
export {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious
}