@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
84 lines (75 loc) • 2.28 kB
JSX
import {
toggleAnatomy
} from "./24WXBTEA.jsx";
import {
createSplitProps
} from "./6WEDGJKQ.jsx";
import {
ark
} from "./UFYZ7HLU.jsx";
import {
createContext
} from "./UZJJWJQM.jsx";
import {
__export
} from "./7IUG3E2V.jsx";
// src/components/toggle/toggle.ts
var toggle_exports = {};
__export(toggle_exports, {
Context: () => ToggleContext,
Indicator: () => ToggleIndicator,
Root: () => ToggleRoot,
toggleAnatomy: () => toggleAnatomy
});
// src/components/toggle/use-toggle-context.ts
var [ToggleProvider, useToggleContext] = createContext({
hookName: "useToggleContext",
providerName: "<ToggleProvider />"
});
// src/components/toggle/toggle-context.tsx
var ToggleContext = (props) => props.children(useToggleContext());
// src/components/toggle/toggle-indicator.tsx
import { mergeProps } from "@zag-js/solid";
import { Show, splitProps } from "solid-js";
var ToggleIndicator = (props) => {
const [baseProps, restProps] = splitProps(props, ["children", "fallback"]);
const toggle2 = useToggleContext();
const mergedProps = mergeProps(() => toggle2().getIndicatorProps(), restProps);
return <ark.div {...mergedProps}>
<Show when={toggle2().pressed} fallback={baseProps.fallback}>
{baseProps.children}
</Show>
</ark.div>;
};
// src/components/toggle/toggle-root.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
// src/components/toggle/use-toggle.ts
import { normalizeProps, useMachine } from "@zag-js/solid";
import * as toggle from "@zag-js/toggle";
import { createMemo } from "solid-js";
function useToggle(props) {
const service = useMachine(toggle.machine, props);
return createMemo(() => toggle.connect(service, normalizeProps));
}
// src/components/toggle/toggle-root.tsx
var ToggleRoot = (props) => {
const [useToggleProps, localProps] = createSplitProps()(props, [
"pressed",
"defaultPressed",
"disabled",
"onPressedChange"
]);
const toggle2 = useToggle(useToggleProps);
const mergedProps = mergeProps2(() => toggle2().getRootProps(), localProps);
return <ToggleProvider value={toggle2}>
<button {...mergedProps} />
</ToggleProvider>;
};
export {
useToggleContext,
ToggleContext,
ToggleIndicator,
useToggle,
ToggleRoot,
toggle_exports
};