UNPKG

@ark-ui/solid

Version:

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

139 lines (132 loc) 4.93 kB
import { splitPresenceProps, usePresence, PresenceProvider, usePresenceContext } from './FW6EZLZL.js'; import { composeRefs } from './ROP6QZQ7.js'; import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './5QLLQM7E.js'; import { useLocaleContext } from './RVOPDSQY.js'; import { runIfFn } from './DT73WLR4.js'; import { createContext } from './THN5C4U6.js'; import { __export } from './ESLJRKWD.js'; import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web'; import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid'; import { Show, createUniqueId, createMemo } from 'solid-js'; import * as tooltip from '@zag-js/tooltip'; // src/components/tooltip/use-tooltip-context.ts var [TooltipProvider, useTooltipContext] = createContext({ hookName: "useTooltipContext", providerName: "<TooltipProvider />" }); // src/components/tooltip/tooltip-arrow.tsx var TooltipArrow = (props) => { const tooltip2 = useTooltipContext(); const mergedProps = mergeProps(() => tooltip2().getArrowProps(), props); return createComponent(ark.div, mergedProps); }; var TooltipArrowTip = (props) => { const api = useTooltipContext(); const mergedProps = mergeProps(() => api().getArrowTipProps(), props); return createComponent(ark.div, mergedProps); }; var TooltipContent = (props) => { const api = useTooltipContext(); const presenceApi = usePresenceContext(); const mergedProps = mergeProps(() => api().getContentProps(), () => presenceApi().presenceProps, props); return createComponent(Show, { get when() { return !presenceApi().unmounted; }, get children() { return createComponent(ark.div, mergeProps$1(mergedProps, { ref(r$) { var _ref$ = composeRefs(presenceApi().ref, props.ref); typeof _ref$ === "function" && _ref$(r$); } })); } }); }; // src/components/tooltip/tooltip-context.tsx var TooltipContext = (props) => props.children(useTooltipContext()); var TooltipPositioner = (props) => { const api = useTooltipContext(); const presenceApi = usePresenceContext(); const mergedProps = mergeProps(() => api().getPositionerProps(), props); return createComponent(Show, { get when() { return !presenceApi().unmounted; }, get children() { return createComponent(ark.div, mergedProps); } }); }; var useTooltip = (props) => { const id = createUniqueId(); const locale = useLocaleContext(); const environment = useEnvironmentContext(); const machineProps = createMemo(() => ({ id, dir: locale().dir, getRootNode: environment().getRootNode, ...runIfFn(props) })); const service = useMachine(tooltip.machine, machineProps); return createMemo(() => tooltip.connect(service, normalizeProps)); }; // src/components/tooltip/tooltip-root.tsx var TooltipRoot = (props) => { const [presenceProps, tooltipProps] = splitPresenceProps(props); const [useTooltipProps, localProps] = createSplitProps()(tooltipProps, ["aria-label", "closeDelay", "closeOnClick", "closeOnEscape", "closeOnPointerDown", "closeOnScroll", "defaultOpen", "disabled", "id", "ids", "interactive", "onOpenChange", "open", "openDelay", "positioning"]); const api = useTooltip(useTooltipProps); const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().open }))); return createComponent(TooltipProvider, { value: api, get children() { return createComponent(PresenceProvider, { value: apiPresence, get children() { return localProps.children; } }); } }); }; var TooltipRootProvider = (props) => { const [presenceProps, tooltipProps] = splitPresenceProps(props); const presence = usePresence(mergeProps(presenceProps, () => ({ present: tooltipProps.value().open }))); return createComponent(TooltipProvider, { get value() { return tooltipProps.value; }, get children() { return createComponent(PresenceProvider, { value: presence, get children() { return tooltipProps.children; } }); } }); }; var TooltipTrigger = (props) => { const api = useTooltipContext(); const mergedProps = mergeProps(() => api().getTriggerProps(), props); return createComponent(ark.button, mergedProps); }; // src/components/tooltip/tooltip.ts var tooltip_exports = {}; __export(tooltip_exports, { Arrow: () => TooltipArrow, ArrowTip: () => TooltipArrowTip, Content: () => TooltipContent, Context: () => TooltipContext, Positioner: () => TooltipPositioner, Root: () => TooltipRoot, RootProvider: () => TooltipRootProvider, Trigger: () => TooltipTrigger }); export { TooltipArrow, TooltipArrowTip, TooltipContent, TooltipContext, TooltipPositioner, TooltipRoot, TooltipRootProvider, TooltipTrigger, tooltip_exports, useTooltip, useTooltipContext };