"use client"; /* eslint-disable jsx-a11y/anchor-has-content */ import {ChevronLeft, ChevronRight, Ellipsis} from "lucide-react"; import * as React from "react"; import type {ButtonProps} from "@/components/ui/button"; import {cn} from "@/lib/utilities"; import buttonStyles from "./button.module.css"; import styles from "./pagination.module.css"; /** * Props for the {@link Pagination} component. */ export type PaginationProps = React.ComponentPropsWithoutRef<"nav">; /** * Props for the {@link PaginationContent} component. */ export type PaginationContentProps = React.ComponentPropsWithoutRef<"ul">; /** * Props for the {@link PaginationItem} component. */ export type PaginationItemProps = React.ComponentPropsWithoutRef<"li">; /** * Props for the {@link PaginationLink} component. */ export interface PaginationLinkProps extends Pick, React.ComponentPropsWithoutRef<"a"> { /** Marks the link as the current active page. @default false */ isActive?: boolean; } /** * Props for the {@link PaginationPrevious} component. */ export type PaginationPreviousProps = React.ComponentPropsWithoutRef; /** * Props for the {@link PaginationNext} component. */ export type PaginationNextProps = React.ComponentPropsWithoutRef; /** * Props for the {@link PaginationEllipsis} component. */ export type PaginationEllipsisProps = React.ComponentPropsWithoutRef<"span">; const buttonSizeStyles: Record, string> = { default: buttonStyles.sizeDefault, icon: buttonStyles.sizeIcon, lg: buttonStyles.sizeLg, sm: buttonStyles.sizeSm, }; /** * Provides semantic navigation for paginated content. * * @remarks * - Pure CSS component (no Base UI primitive) * - Renders a `