@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
JavaScript
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 };