@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
183 lines (167 loc) • 5.36 kB
JSX
import {
PresenceProvider,
splitPresenceProps,
usePresence,
usePresenceContext
} from "./IG7INNI2.jsx";
import {
composeRefs
} from "./PT2CJE3O.jsx";
import {
createSplitProps
} from "./6WEDGJKQ.jsx";
import {
ark
} from "./UFYZ7HLU.jsx";
import {
useLocaleContext
} from "./YUC6JE7K.jsx";
import {
useEnvironmentContext
} from "./E2L62MKC.jsx";
import {
createContext
} from "./TVCIHLER.jsx";
import {
runIfFn
} from "./KGOB2IMX.jsx";
import {
__export
} from "./7IUG3E2V.jsx";
// src/components/tooltip/tooltip-arrow.tsx
import { mergeProps } from "@zag-js/solid";
// 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 <ark.div {...mergedProps} />;
};
// src/components/tooltip/tooltip-arrow-tip.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
var TooltipArrowTip = (props) => {
const api = useTooltipContext();
const mergedProps = mergeProps2(() => api().getArrowTipProps(), props);
return <ark.div {...mergedProps} />;
};
// src/components/tooltip/tooltip-content.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
import { Show } from "solid-js";
var TooltipContent = (props) => {
const api = useTooltipContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps3(
() => api().getContentProps(),
() => presenceApi().presenceProps,
props
);
return <Show when={!presenceApi().unmounted}>
<ark.div {...mergedProps} ref={composeRefs(presenceApi().ref, props.ref)} />
</Show>;
};
// src/components/tooltip/tooltip-context.tsx
var TooltipContext = (props) => props.children(useTooltipContext());
// src/components/tooltip/tooltip-positioner.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
import { Show as Show2 } from "solid-js";
var TooltipPositioner = (props) => {
const api = useTooltipContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps4(() => api().getPositionerProps(), props);
return <Show2 when={!presenceApi().unmounted}>
<ark.div {...mergedProps} />
</Show2>;
};
// src/components/tooltip/tooltip-root.tsx
import { mergeProps as mergeProps5 } from "@zag-js/solid";
// src/components/tooltip/use-tooltip.ts
import { normalizeProps, useMachine } from "@zag-js/solid";
import * as tooltip from "@zag-js/tooltip";
import { createMemo, createUniqueId } from "solid-js";
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(mergeProps5(presenceProps, () => ({ present: api().open })));
return <TooltipProvider value={api}>
<PresenceProvider value={apiPresence}>{localProps.children}</PresenceProvider>
</TooltipProvider>;
};
// src/components/tooltip/tooltip-root-provider.tsx
import { mergeProps as mergeProps6 } from "@zag-js/solid";
var TooltipRootProvider = (props) => {
const [presenceProps, tooltipProps] = splitPresenceProps(props);
const presence = usePresence(mergeProps6(presenceProps, () => ({ present: tooltipProps.value().open })));
return <TooltipProvider value={tooltipProps.value}>
<PresenceProvider value={presence}>{tooltipProps.children}</PresenceProvider>
</TooltipProvider>;
};
// src/components/tooltip/tooltip-trigger.tsx
import { mergeProps as mergeProps7 } from "@zag-js/solid";
var TooltipTrigger = (props) => {
const api = useTooltipContext();
const mergedProps = mergeProps7(() => api().getTriggerProps(), props);
return <ark.button {...mergedProps} />;
};
// src/components/tooltip/tooltip.anatomy.ts
import { anatomy } from "@zag-js/tooltip";
// 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 {
useTooltipContext,
TooltipArrow,
TooltipArrowTip,
TooltipContent,
TooltipContext,
TooltipPositioner,
useTooltip,
TooltipRoot,
TooltipRootProvider,
TooltipTrigger,
anatomy,
tooltip_exports
};