UNPKG

@ark-ui/solid

Version:

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

87 lines (77 loc) 2.44 kB
import { createSplitProps } from "./6WEDGJKQ.jsx"; import { ark } from "./UFYZ7HLU.jsx"; import { createContext } from "./TVCIHLER.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>; }; // src/components/toggle/toggle.anatomy.ts import { createAnatomy } from "@zag-js/anatomy"; var toggleAnatomy = createAnatomy("toggle", ["root", "indicator"]); var parts = toggleAnatomy.build(); export { useToggleContext, ToggleContext, ToggleIndicator, useToggle, ToggleRoot, toggleAnatomy, toggle_exports };