@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
137 lines (127 loc) • 3.83 kB
JSX
import {
usePresence
} from "./OEGORBLT.jsx";
import {
composeRefs
} from "./PT2CJE3O.jsx";
import {
parts,
swapAnatomy
} from "./XVU3GCCX.jsx";
import {
runIfFn
} from "./KGOB2IMX.jsx";
import {
ark
} from "./UFYZ7HLU.jsx";
import {
createContext
} from "./UZJJWJQM.jsx";
import {
__export
} from "./7IUG3E2V.jsx";
// src/components/swap/swap.ts
var swap_exports = {};
__export(swap_exports, {
Indicator: () => SwapIndicator,
Root: () => SwapRoot,
RootProvider: () => SwapRootProvider,
swapAnatomy: () => swapAnatomy
});
// src/components/swap/swap-indicator.tsx
import { mergeProps } from "@zag-js/solid";
import { Show, splitProps } from "solid-js";
// src/components/swap/use-swap-context.ts
var [SwapProvider, useSwapContext] = createContext({
hookName: "useSwapContext",
providerName: "<SwapProvider />"
});
// src/components/swap/swap-indicator.tsx
var SwapIndicator = (props) => {
const [localProps, restProps] = splitProps(props, ["type", "ref"]);
const swap = useSwapContext();
const presence = () => {
const p = localProps.type === "on" ? swap().onPresence : swap().offPresence;
return p();
};
const mergedProps = mergeProps(() => swap().getIndicatorProps({ type: localProps.type }), restProps);
return <Show when={!presence().unmounted}>
<ark.span {...mergedProps} ref={composeRefs(presence().ref, localProps.ref)} />
</Show>;
};
// src/components/swap/swap-root.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
import { splitProps as splitProps2 } from "solid-js";
// src/components/swap/use-swap.ts
import { mergeProps as mergeProps2 } from "@zag-js/solid";
import { createMemo } from "solid-js";
var useSwap = (props = {}) => {
const resolved = createMemo(() => runIfFn(props));
const onPresence = usePresence(
mergeProps2(() => ({
present: resolved().swap ?? false,
lazyMount: resolved().lazyMount,
unmountOnExit: resolved().unmountOnExit,
skipAnimationOnMount: true
}))
);
const offPresence = usePresence(
mergeProps2(() => ({
present: !(resolved().swap ?? false),
lazyMount: resolved().lazyMount,
unmountOnExit: resolved().unmountOnExit,
skipAnimationOnMount: true
}))
);
return createMemo(() => {
const swap = resolved().swap ?? false;
return {
swap,
onPresence,
offPresence,
getRootProps() {
return {
...parts.root.attrs,
"data-swap": swap ? "on" : "off",
style: { display: "inline-grid" }
};
},
getIndicatorProps({ type }) {
const presence = type === "on" ? onPresence() : offPresence();
return {
...parts.indicator.attrs,
...presence.presenceProps,
"data-type": type,
style: { "grid-area": "1 / 1", display: "inline-flex" }
};
}
};
});
};
// src/components/swap/swap-root.tsx
var SwapRoot = (props) => {
const [swapProps, localProps] = splitProps2(props, ["swap", "lazyMount", "unmountOnExit"]);
const swap = useSwap(() => swapProps);
const mergedProps = mergeProps3(() => swap().getRootProps(), localProps);
return <SwapProvider value={swap}>
<ark.span {...mergedProps} />
</SwapProvider>;
};
// src/components/swap/swap-root-provider.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
import { splitProps as splitProps3 } from "solid-js";
var SwapRootProvider = (props) => {
const [providerProps, localProps] = splitProps3(props, ["value"]);
const mergedProps = mergeProps4(() => providerProps.value().getRootProps(), localProps);
return <SwapProvider value={providerProps.value}>
<ark.span {...mergedProps} />
</SwapProvider>;
};
export {
useSwapContext,
SwapIndicator,
useSwap,
SwapRoot,
SwapRootProvider,
swap_exports
};