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