UNPKG

@veracity/vui

Version:

Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.

68 lines (66 loc) 2.4 kB
import { cs } from "../utils/styles.js"; import { useStyleConfig } from "../core/theme.js"; import vui from "../core/vui.js"; import { Box } from "../box/box.js"; import { Button } from "../button/button.js"; import { usePaginationContext } from "./context.js"; import { jsx } from "react/jsx-runtime"; //#region src/pagination/paginationButtons.tsx /** Displays a page navigation button within the Pagination. */ const PaginationButton = vui((props, ref) => { const { className, page: pageProp, ...rest } = props; const { onPageChange, page: currentPage } = usePaginationContext(); const styles = useStyleConfig("Pagination", usePaginationContext()); const isActive = pageProp === currentPage; return /* @__PURE__ */ jsx(Button, { className: cs("vui-paginationButton", className), onClick: () => onPageChange(pageProp), ref, text: pageProp, isActive, ...styles.button, ...rest }); }); PaginationButton.displayName = "PaginationButton"; /** Displays '...' ellipsis for hidden pages. */ const PaginationEllipsis = vui((props, ref) => { const { children, className, ...rest } = props; const styles = useStyleConfig("Pagination", usePaginationContext()); return /* @__PURE__ */ jsx(Box, { alignItems: "center", className: cs("vui-paginationEllipsis", className), px: "10px", ref, ...styles.ellipsis, ...rest, children: children ?? "…" }); }); PaginationEllipsis.displayName = "PaginationEllipsis"; /** Displays a page navigation button, which navigates forward or backward. */ const PaginationPrevNext = vui((props, ref) => { const { className, direction, ...rest } = props; const { onPageChange, page, pageCount } = usePaginationContext(); const styles = useStyleConfig("Pagination", usePaginationContext()); const isPrev = direction === "previous"; const pageChange = isPrev ? -1 : 1; const directionProps = { disabled: isPrev ? page === 1 : page === pageCount, icon: `uiAngle${isPrev ? "Left" : "Right"}`, onClick: () => onPageChange(page + pageChange) }; return /* @__PURE__ */ jsx(Button, { className: cs("vui-paginationPrevNext", className), minW: 0, ref, ...styles.prevNext, ...directionProps, ...rest }); }); PaginationPrevNext.displayName = "PaginationPrevNext"; //#endregion export { PaginationButton, PaginationEllipsis, PaginationPrevNext }; globalThis.__vuiVersion__ = "5.3.1" //# sourceMappingURL=paginationButtons.js.map