@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
129 lines (117 loc) • 3.74 kB
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/splitter/use-splitter-context.ts
var [SplitterProvider, useSplitterContext] = createContext({
hookName: "useSplitterContext",
providerName: "<SplitterProvider />"
});
// src/components/splitter/splitter-context.tsx
var SplitterContext = (props) => props.children(useSplitterContext());
// src/components/splitter/splitter-panel.tsx
import { mergeProps } from "@zag-js/solid";
var SplitterPanel = (props) => {
const [panelProps, restProps] = createSplitProps()(props, ["id"]);
const api = useSplitterContext();
const mergedProps = mergeProps(() => api().getPanelProps(panelProps), restProps);
return <ark.div {...mergedProps} />;
};
// src/components/splitter/splitter-resize-trigger.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
var SplitterResizeTrigger = (props) => {
const [resizeTriggerProps, restProps] = createSplitProps()(props, ["disabled", "id"]);
const api = useSplitterContext();
const mergedProps = mergeProps2(() => api().getResizeTriggerProps(resizeTriggerProps), restProps);
return <ark.button {...mergedProps} />;
};
// src/components/splitter/splitter-root.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
// src/components/splitter/use-splitter.ts
import { normalizeProps, useMachine } from "@zag-js/solid";
import * as splitter from "@zag-js/splitter";
import { createMemo, createUniqueId } from "solid-js";
var useSplitter = (props) => {
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const id = createUniqueId();
const machineProps = createMemo(() => ({
id,
dir: locale().dir,
getRootNode: environment().getRootNode,
...runIfFn(props)
}));
const service = useMachine(splitter.machine, machineProps);
return createMemo(() => splitter.connect(service, normalizeProps));
};
// src/components/splitter/splitter-root.tsx
var SplitterRoot = (props) => {
const [useSplitterProps, localProps] = createSplitProps()(props, [
"defaultSize",
"id",
"ids",
"keyboardResizeBy",
"nonce",
"onCollapse",
"onExpand",
"onResize",
"onResizeEnd",
"onResizeStart",
"orientation",
"panels",
"size"
]);
const api = useSplitter(useSplitterProps);
const mergedProps = mergeProps3(() => api().getRootProps(), localProps);
return <SplitterProvider value={api}>
<ark.div {...mergedProps} />
</SplitterProvider>;
};
// src/components/splitter/splitter-root-provider.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
var SplitterRootProvider = (props) => {
const [{ value: splitter2 }, localProps] = createSplitProps()(props, ["value"]);
const mergedProps = mergeProps4(() => splitter2().getRootProps(), localProps);
return <SplitterProvider value={splitter2}>
<ark.div {...mergedProps} />
</SplitterProvider>;
};
// src/components/splitter/splitter.anatomy.ts
import { anatomy } from "@zag-js/splitter";
// src/components/splitter/splitter.ts
var splitter_exports = {};
__export(splitter_exports, {
Context: () => SplitterContext,
Panel: () => SplitterPanel,
ResizeTrigger: () => SplitterResizeTrigger,
Root: () => SplitterRoot,
RootProvider: () => SplitterRootProvider
});
export {
useSplitterContext,
SplitterContext,
SplitterPanel,
SplitterResizeTrigger,
useSplitter,
SplitterRoot,
SplitterRootProvider,
anatomy,
splitter_exports
};