UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

96 lines (90 loc) 3.9 kB
import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './YO2MCGXO.js'; import { useLocaleContext } from './OKZ64GSY.js'; import { createContext } from './TROPIN4C.js'; import { runIfFn } from './DT73WLR4.js'; import { __export } from './ESLJRKWD.js'; import { createComponent } from 'solid-js/web'; import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid'; import * as pagination from '@zag-js/pagination'; export { anatomy } from '@zag-js/pagination'; import { createUniqueId, createMemo } from 'solid-js'; // src/components/pagination/use-pagination-context.ts var [PaginationProvider, usePaginationContext] = createContext({ hookName: "usePaginationContext", providerName: "<PaginationProvider />" }); // src/components/pagination/pagination-context.tsx var PaginationContext = (props) => props.children(usePaginationContext()); var PaginationEllipsis = (props) => { const [ellipsisProps, localProps] = createSplitProps()(props, ["index"]); const api = usePaginationContext(); const mergedProps = mergeProps(() => api().getEllipsisProps(ellipsisProps), localProps); return createComponent(ark.div, mergedProps); }; var PaginationItem = (props) => { const [itemProps, localProps] = createSplitProps()(props, ["value", "type"]); const api = usePaginationContext(); const mergedProps = mergeProps(() => api().getItemProps(itemProps), localProps); return createComponent(ark.button, mergedProps); }; var PaginationNextTrigger = (props) => { const api = usePaginationContext(); const mergedProps = mergeProps(() => api().getNextTriggerProps(), props); return createComponent(ark.button, mergedProps); }; var PaginationPrevTrigger = (props) => { const api = usePaginationContext(); const mergedProps = mergeProps(() => api().getPrevTriggerProps(), props); return createComponent(ark.button, mergedProps); }; var usePagination = (props) => { const locale = useLocaleContext(); const environment = useEnvironmentContext(); const id = createUniqueId(); const machineProps = createMemo(() => ({ id, dir: locale().dir, getRootNode: environment().getRootNode, ...runIfFn(props) })); const service = useMachine(pagination.machine, machineProps); return createMemo(() => pagination.connect(service, normalizeProps)); }; // src/components/pagination/pagination-root.tsx var PaginationRoot = (props) => { const [usePaginationProps, localProps] = createSplitProps()(props, ["count", "defaultPage", "defaultPageSize", "id", "ids", "onPageChange", "onPageSizeChange", "page", "pageSize", "siblingCount", "translations", "type"]); const api = usePagination(usePaginationProps); const mergedProps = mergeProps(() => api().getRootProps(), localProps); return createComponent(PaginationProvider, { value: api, get children() { return createComponent(ark.nav, mergedProps); } }); }; var PaginationRootProvider = (props) => { const [{ value: pagination2 }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => pagination2().getRootProps(), localProps); return createComponent(PaginationProvider, { value: pagination2, get children() { return createComponent(ark.nav, mergedProps); } }); }; // src/components/pagination/pagination.ts var pagination_exports = {}; __export(pagination_exports, { Context: () => PaginationContext, Ellipsis: () => PaginationEllipsis, Item: () => PaginationItem, NextTrigger: () => PaginationNextTrigger, PrevTrigger: () => PaginationPrevTrigger, Root: () => PaginationRoot, RootProvider: () => PaginationRootProvider }); export { PaginationContext, PaginationEllipsis, PaginationItem, PaginationNextTrigger, PaginationPrevTrigger, PaginationRoot, PaginationRootProvider, pagination_exports, usePagination, usePaginationContext };