UNPKG

@ark-ui/solid

Version:

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

148 lines (138 loc) 5.96 kB
import { useFieldsetContext } from './Z5ZRFFPU.js'; import { createSplitProps } from './ZMHI4GDJ.js'; import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './5QLLQM7E.js'; import { useLocaleContext } from './RVOPDSQY.js'; import { runIfFn } from './DT73WLR4.js'; import { createContext } from './THN5C4U6.js'; import { __export } from './ESLJRKWD.js'; import { createComponent } from 'solid-js/web'; import { mergeProps, useMachine, normalizeProps } from '@zag-js/solid'; import { createMemo, createUniqueId } from 'solid-js'; import * as radio from '@zag-js/radio-group'; // src/components/radio-group/use-radio-group-context.ts var [RadioGroupProvider, useRadioGroupContext] = createContext({ hookName: "useRadioGroupContext", providerName: "<RadioGroupProvider />" }); // src/components/radio-group/radio-group-context.tsx var RadioGroupContext = (props) => props.children(useRadioGroupContext()); var RadioGroupIndicator = (props) => { const radioGroup = useRadioGroupContext(); const mergedProps = mergeProps(() => radioGroup().getIndicatorProps(), props); return createComponent(ark.div, mergedProps); }; // src/components/radio-group/use-radio-group-item-context.ts var [RadioGroupItemProvider, useRadioGroupItemContext] = createContext({ hookName: "useRadioGroupItemContext", providerName: "<RadioGroupItemProvider />" }); // src/components/radio-group/use-radio-group-item-props-context.ts var [RadioGroupItemPropsProvider, useRadioGroupItemPropsContext] = createContext({ hookName: "useRadioGroupItemPropsContext", providerName: "<RadioGroupItemPropsProvider />" }); // src/components/radio-group/radio-group-item.tsx var RadioGroupItem = (props) => { const [itemProps, localProps] = createSplitProps()(props, ["value", "disabled", "invalid"]); const radioGroup = useRadioGroupContext(); const mergedProps = mergeProps(() => radioGroup().getItemProps(itemProps), localProps); const itemState = createMemo(() => radioGroup().getItemState(itemProps)); return createComponent(RadioGroupItemPropsProvider, { value: itemProps, get children() { return createComponent(RadioGroupItemProvider, { value: itemState, get children() { return createComponent(ark.label, mergedProps); } }); } }); }; // src/components/radio-group/radio-group-item-context.tsx var RadioGroupItemContext = (props) => props.children(useRadioGroupItemContext()); var RadioGroupItemControl = (props) => { const radioGroup = useRadioGroupContext(); const itemProps = useRadioGroupItemPropsContext(); const mergedProps = mergeProps(() => radioGroup().getItemControlProps(itemProps), props); return createComponent(ark.div, mergedProps); }; var RadioGroupItemHiddenInput = (props) => { const radioGroup = useRadioGroupContext(); const itemProps = useRadioGroupItemPropsContext(); const mergedProps = mergeProps(() => radioGroup().getItemHiddenInputProps(itemProps), props); return createComponent(ark.input, mergedProps); }; var RadioGroupItemText = (props) => { const radioGroup = useRadioGroupContext(); const itemProps = useRadioGroupItemPropsContext(); const mergedProps = mergeProps(() => radioGroup().getItemTextProps(itemProps), props); return createComponent(ark.span, mergedProps); }; var RadioGroupLabel = (props) => { const radioGroup = useRadioGroupContext(); const mergedProps = mergeProps(() => radioGroup().getLabelProps(), props); return createComponent(ark.label, mergedProps); }; var useRadioGroup = (props) => { const id = createUniqueId(); const locale = useLocaleContext(); const environment = useEnvironmentContext(); const fieldset = useFieldsetContext(); const machineProps = createMemo(() => { const fieldsetContext = fieldset?.(); return { id, ids: { label: fieldsetContext?.ids?.legend }, dir: locale().dir, disabled: fieldsetContext?.disabled, invalid: fieldsetContext?.invalid, getRootNode: environment().getRootNode, ...runIfFn(props) }; }); const service = useMachine(radio.machine, machineProps); return createMemo(() => radio.connect(service, normalizeProps)); }; // src/components/radio-group/radio-group-root.tsx var RadioGroupRoot = (props) => { const [useRadioGroupProps, localProps] = createSplitProps()(props, ["defaultValue", "disabled", "form", "id", "ids", "invalid", "name", "onValueChange", "orientation", "readOnly", "required", "value"]); const radioGroup = useRadioGroup(useRadioGroupProps); const mergedProps = mergeProps(() => radioGroup().getRootProps(), localProps); return createComponent(RadioGroupProvider, { value: radioGroup, get children() { return createComponent(ark.div, mergedProps); } }); }; var RadioGroupRootProvider = (props) => { const [{ value: radioGroup }, localProps] = createSplitProps()(props, ["value"]); const mergedProps = mergeProps(() => radioGroup().getRootProps(), localProps); return createComponent(RadioGroupProvider, { value: radioGroup, get children() { return createComponent(ark.div, mergedProps); } }); }; // src/components/radio-group/radio-group.ts var radio_group_exports = {}; __export(radio_group_exports, { Context: () => RadioGroupContext, Indicator: () => RadioGroupIndicator, Item: () => RadioGroupItem, ItemContext: () => RadioGroupItemContext, ItemControl: () => RadioGroupItemControl, ItemHiddenInput: () => RadioGroupItemHiddenInput, ItemText: () => RadioGroupItemText, Label: () => RadioGroupLabel, Root: () => RadioGroupRoot, RootProvider: () => RadioGroupRootProvider }); export { RadioGroupContext, RadioGroupIndicator, RadioGroupItem, RadioGroupItemContext, RadioGroupItemControl, RadioGroupItemHiddenInput, RadioGroupItemText, RadioGroupLabel, RadioGroupRoot, RadioGroupRootProvider, radio_group_exports, useRadioGroup, useRadioGroupContext, useRadioGroupItemContext };