@letar/forms 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/declarative/form-fields/selection/field-autocomplete.tsx","../src/lib/declarative/form-fields/selection/field-checkbox-card.tsx","../src/lib/declarative/form-fields/selection/field-combobox.tsx","../src/lib/declarative/form-fields/selection/field-listbox.tsx","../src/lib/declarative/form-fields/selection/field-native-select.tsx","../src/lib/declarative/form-fields/selection/field-radio-card.tsx","../src/lib/declarative/form-fields/selection/field-radio-group.tsx","../src/lib/declarative/form-fields/selection/field-segmented-group.tsx","../src/lib/declarative/form-fields/selection/field-select.tsx","../src/lib/declarative/form-fields/selection/field-tags.tsx","../src/lib/declarative/form-fields/selection/field-cascading-select.tsx"],"names":["jsxs","jsx","useFilter","useMemo","Field","Combobox","Spinner","Portal","createListCollection","Select"],"mappings":"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","file":"chunk-PJETA6YN.js","sourcesContent":["'use client'\n\nimport { Combobox, createListCollection, Field, Portal, Spinner, useFilter } from '@chakra-ui/react'\nimport { useMemo, type ReactElement } from 'react'\nimport type { BaseFieldProps, FieldSize } from '../../types'\nimport { createField, FieldError, SelectionFieldLabel, useAsyncSearch, type AsyncQueryFn } from '../base'\n\n/**\n * Props for Form.Field.Autocomplete\n */\nexport interface AutocompleteFieldProps<TData = unknown> extends BaseFieldProps {\n /**\n * Static suggestions for autocomplete\n */\n suggestions?: string[]\n\n /**\n * Async function for loading suggestions\n * Should return { data, isLoading, error } similar to TanStack Query\n *\n * @example\n * ```tsx\n * useQuery={(search) => useFindManyCity({\n * where: { name: { contains: search, mode: 'insensitive' } },\n * take: 10,\n * })}\n * ```\n */\n useQuery?: AsyncQueryFn<TData>\n\n /**\n * Get label from data element\n * Required when using useQuery\n */\n getLabel?: (item: TData) => string\n\n /**\n * Debounce delay in milliseconds\n * @default 300\n */\n debounce?: number\n\n /**\n * Minimum characters to trigger suggestions\n * @default 1\n */\n minChars?: number\n\n /**\n * Component size\n * @default 'md'\n */\n size?: FieldSize\n\n /**\n * Visual variant\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle' | 'flushed'\n\n /**\n * Message for empty result\n * @default \"No suggestions\"\n */\n emptyMessage?: string\n\n /**\n * Message on loading\n * @default \"Loading...\"\n */\n loadingMessage?: string\n}\n\n/**\n * Suggestion element\n */\ninterface AutocompleteItem {\n label: string\n value: string\n}\n\n/** State type for useFieldState */\ninterface AutocompleteFieldState {\n inputValue: string\n setInputValue: (value: string) => void\n isLoading: boolean\n suggestions: AutocompleteItem[]\n collection: ReturnType<typeof createListCollection<AutocompleteItem>>\n}\n\n/**\n * Form.Field.Autocomplete - Text input with suggestions\n *\n * Simplified version of Combobox that always allows custom values.\n * Ideal for city names, products or any free text input with suggestions.\n *\n * @example Static suggestions\n * ```tsx\n * <Form.Field.Autocomplete\n * name=\"city\"\n * label=\"City\"\n * suggestions={['Moscow', 'Saint Petersburg', 'Kazan', 'Novosibirsk']}\n * />\n * ```\n *\n * @example Async suggestions with ZenStack\n * ```tsx\n * <Form.Field.Autocomplete\n * name=\"product\"\n * label=\"Product\"\n * useQuery={(search) => useFindManyProduct({\n * where: { name: { contains: search, mode: 'insensitive' } },\n * take: 10,\n * })}\n * getLabel={(p) => p.name}\n * debounce={300}\n * minChars={2}\n * />\n * ```\n */\nexport const FieldAutocomplete = createField<AutocompleteFieldProps, string, AutocompleteFieldState>({\n displayName: 'FieldAutocomplete',\n useFieldState: (componentProps: Omit<AutocompleteFieldProps, keyof BaseFieldProps>): AutocompleteFieldState => {\n // Async search with debounce via shared hook\n const {\n inputValue,\n setInputValue,\n isLoading,\n data: queryData,\n } = useAsyncSearch({\n useQuery: componentProps.useQuery,\n debounce: componentProps.debounce ?? 300,\n minChars: componentProps.minChars ?? 1,\n })\n\n // Filter for static suggestions\n const { contains } = useFilter({ sensitivity: 'base' })\n\n // Build suggestions list\n const suggestions = useMemo((): AutocompleteItem[] => {\n if (componentProps.suggestions) {\n // Filtering static suggestions by input value\n const filtered = inputValue\n ? componentProps.suggestions.filter((s) => contains(s, inputValue))\n : componentProps.suggestions.slice(0, 10) // First 10 when input is empty\n return filtered.map((s) => ({ label: s, value: s }))\n }\n\n if (queryData && componentProps.getLabel) {\n const getLabel = componentProps.getLabel\n return (queryData as unknown[]).map((item) => {\n const itemLabel = getLabel(item)\n return { label: itemLabel, value: itemLabel }\n })\n }\n\n return []\n }, [componentProps.suggestions, queryData, componentProps.getLabel, inputValue, contains])\n\n // Create collection\n const collection = useMemo(() => {\n return createListCollection({\n items: suggestions,\n itemToString: (item) => item.label,\n itemToValue: (item) => item.value,\n })\n }, [suggestions])\n\n return {\n inputValue,\n setInputValue,\n isLoading,\n suggestions,\n collection,\n }\n },\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const currentValue = (field.state.value as string) ?? ''\n const minChars = componentProps.minChars ?? 1\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <Combobox.Root\n collection={fieldState.collection}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'outline'}\n value={currentValue ? [currentValue] : []}\n inputValue={fieldState.inputValue}\n onInputValueChange={(details) => {\n fieldState.setInputValue(details.inputValue)\n // Always update field value (allowCustomValue behavior)\n field.handleChange(details.inputValue)\n }}\n onValueChange={(details) => {\n const newValue = details.value[0] ?? ''\n fieldState.setInputValue(newValue)\n field.handleChange(newValue)\n }}\n onInteractOutside={() => field.handleBlur()}\n disabled={resolved.disabled}\n allowCustomValue\n openOnClick\n data-field-name={fullPath}\n >\n {resolved.label && (\n <Combobox.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </Combobox.Label>\n )}\n\n <Combobox.Control>\n <Combobox.Input placeholder={resolved.placeholder ?? 'Start typing...'} />\n <Combobox.IndicatorGroup>\n {fieldState.isLoading && <Spinner size=\"xs\" />}\n <Combobox.Trigger />\n </Combobox.IndicatorGroup>\n </Combobox.Control>\n\n <Portal>\n <Combobox.Positioner>\n <Combobox.Content>\n {/* Loading state */}\n {fieldState.isLoading && fieldState.suggestions.length === 0 && (\n <Combobox.Empty>{componentProps.loadingMessage ?? 'Loading...'}</Combobox.Empty>\n )}\n\n {/* Empty result */}\n {!fieldState.isLoading &&\n fieldState.suggestions.length === 0 &&\n fieldState.inputValue.length >= minChars && (\n <Combobox.Empty>{componentProps.emptyMessage ?? 'No suggestions'}</Combobox.Empty>\n )}\n\n {/* Hint about minimum characters */}\n {!fieldState.isLoading &&\n fieldState.suggestions.length === 0 &&\n fieldState.inputValue.length < minChars &&\n fieldState.inputValue.length > 0 && (\n <Combobox.Empty>Enter at least {minChars} characters</Combobox.Empty>\n )}\n\n {/* Suggestions */}\n {fieldState.suggestions.map((item) => (\n <Combobox.Item item={item} key={item.value}>\n <Combobox.ItemText>{item.label}</Combobox.ItemText>\n <Combobox.ItemIndicator />\n </Combobox.Item>\n ))}\n </Combobox.Content>\n </Combobox.Positioner>\n </Portal>\n </Combobox.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { CheckboxCard, CheckboxGroup, Fieldset, Flex, HStack } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, FieldSizeWithoutXs, FieldTooltipMeta, RichOption } from '../../types'\nimport { createField } from '../base'\nimport { FieldTooltip } from '../base/field-tooltip'\n\n/**\n * Props for CheckboxCard field\n */\nexport interface CheckboxCardFieldProps<T = string> extends Omit<BaseFieldProps, 'placeholder'> {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n /** Options for cards */\n options: RichOption<T>[]\n /** Size (by default: md) */\n size?: FieldSizeWithoutXs\n /** Visual variant (by default: outline) */\n variant?: 'surface' | 'subtle' | 'outline' | 'solid'\n /** Color palette */\n colorPalette?: string\n /** Content alignment (by default: start) */\n align?: 'start' | 'end' | 'center'\n /** Orientation (by default: horizontal) */\n orientation?: 'horizontal' | 'vertical'\n /** Gap between cards (by default: 2) */\n gap?: number | string\n}\n\n/**\n * Form.Field.CheckboxCard - Multiple selection as cards\n *\n * Renders a group of checkbox cards for selecting multiple options.\n * Each card can have a label, description and icon.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.CheckboxCard\n * name=\"features\"\n * label=\"Select features\"\n * options={[\n * { label: 'TypeScript', value: 'ts', description: 'Type safety' },\n * { label: 'ESLint', value: 'eslint', description: 'Code quality' },\n * { label: 'Prettier', value: 'prettier', description: 'Formatting' },\n * ]}\n * />\n * ```\n *\n * @example With icons\n * ```tsx\n * <Form.Field.CheckboxCard\n * name=\"permissions\"\n * options={[\n * { label: 'Admin', value: 'admin', icon: <ShieldIcon /> },\n * { label: 'User', value: 'user', icon: <UserIcon /> },\n * ]}\n * align=\"center\"\n * />\n * ```\n */\nexport const FieldCheckboxCard = createField<CheckboxCardFieldProps, string[]>({\n displayName: 'FieldCheckboxCard',\n render: ({ field, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n // Value always array for checkbox cards\n const currentValue = field.state.value as string[] | undefined\n const valueArray: string[] = currentValue ?? []\n\n return (\n <Fieldset.Root invalid={hasError} disabled={resolved.disabled}>\n <CheckboxGroup\n value={valueArray}\n onValueChange={(value) => field.handleChange(value)}\n disabled={resolved.disabled}\n invalid={hasError}\n >\n {resolved.label && (\n <Fieldset.Legend mb={2}>\n {resolved.tooltip ? (\n <HStack gap={1}>\n <span>{resolved.label}</span>\n <FieldTooltip {...resolved.tooltip} />\n </HStack>\n ) : (\n resolved.label\n )}\n {resolved.required && (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n style={{ color: 'var(--chakra-colors-fg-error)', marginInlineStart: '1px' }}\n >\n *\n </span>\n )}\n </Fieldset.Legend>\n )}\n\n <Flex\n gap={componentProps.gap ?? 2}\n direction={(componentProps.orientation ?? 'horizontal') === 'vertical' ? 'column' : 'row'}\n wrap={(componentProps.orientation ?? 'horizontal') === 'horizontal' ? 'wrap' : undefined}\n >\n {componentProps.options.map((opt) => (\n <CheckboxCard.Root\n key={opt.value}\n value={opt.value}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'outline'}\n colorPalette={componentProps.colorPalette}\n align={componentProps.align ?? 'start'}\n disabled={opt.disabled}\n >\n <CheckboxCard.HiddenInput />\n <CheckboxCard.Control>\n <CheckboxCard.Content>\n {opt.icon}\n <CheckboxCard.Label>{opt.label}</CheckboxCard.Label>\n {opt.description && <CheckboxCard.Description>{opt.description}</CheckboxCard.Description>}\n </CheckboxCard.Content>\n <CheckboxCard.Indicator />\n </CheckboxCard.Control>\n </CheckboxCard.Root>\n ))}\n </Flex>\n </CheckboxGroup>\n\n {hasError ? (\n <Fieldset.ErrorText>{errorMessage}</Fieldset.ErrorText>\n ) : (\n resolved.helperText && <Fieldset.HelperText>{resolved.helperText}</Fieldset.HelperText>\n )}\n </Fieldset.Root>\n )\n },\n})\n","'use client'\n\nimport { Combobox, Field, Portal, Spinner, useFilter } from '@chakra-ui/react'\nimport { useMemo, type ReactElement, type ReactNode } from 'react'\nimport type { BaseFieldProps, FieldSize, GroupableOption } from '../../types'\nimport {\n createField,\n FieldError,\n getOptionLabel,\n SelectionFieldLabel,\n useAsyncSearch,\n useGroupedOptions,\n type AsyncQueryFn,\n type GroupedOptionsResult,\n type ResolvedFieldProps,\n} from '../base'\n\n/**\n * Props for Form.Field.Combobox\n */\nexport interface ComboboxFieldProps<T = string, TData = unknown> extends BaseFieldProps {\n /**\n * Static options (mutually exclusive with useQuery)\n */\n options?: GroupableOption<T>[]\n\n /**\n * Async function for loading options\n * Should return { data, isLoading, error } similar to TanStack Query\n *\n * @example\n * ```tsx\n * useQuery={(search) => useFindManyUser({\n * where: { name: { contains: search, mode: 'insensitive' } },\n * take: 20,\n * })}\n * ```\n */\n useQuery?: AsyncQueryFn<TData>\n\n /**\n * Get label from data element\n * Required when using useQuery\n */\n getLabel?: (item: TData) => ReactNode\n\n /**\n * Get value from data element\n * Required when using useQuery\n */\n getValue?: (item: TData) => T\n\n /**\n * Get group key from data element\n * Optional, for grouping results\n */\n getGroup?: (item: TData) => string | undefined\n\n /**\n * Check if element is disabled\n */\n getDisabled?: (item: TData) => boolean\n\n /**\n * Debounce delay in milliseconds\n * @default 300\n */\n debounce?: number\n\n /**\n * Minimum characters to trigger search\n * @default 1\n */\n minChars?: number\n\n /**\n * Show clear button\n * Auto-determined from schema if not specified\n */\n clearable?: boolean\n\n /**\n * Allow custom values not from the list\n * @default false\n */\n allowCustomValue?: boolean\n\n /**\n * Component size\n */\n size?: FieldSize\n\n /**\n * Visual variant\n */\n variant?: 'outline' | 'subtle' | 'flushed'\n\n /**\n * Message for empty result\n * @default \"Nothing found\"\n */\n emptyMessage?: string\n\n /**\n * Message on loading\n * @default \"Loading...\"\n */\n loadingMessage?: string\n}\n\n/** State type for useFieldState */\ninterface ComboboxFieldState extends GroupedOptionsResult {\n inputValue: string\n setInputValue: (value: string) => void\n isLoading: boolean\n options: GroupableOption[]\n resolvedClearable: boolean\n}\n\n/**\n * Form.Field.Combobox - Async search select with debounce and grouping\n *\n * Supports both static options and async loading via TanStack Query hooks.\n *\n * @example Static options\n * ```tsx\n * <Form.Field.Combobox\n * name=\"framework\"\n * label=\"Framework\"\n * options={[\n * { label: 'React', value: 'react' },\n * { label: 'Vue', value: 'vue', group: 'Frontend' },\n * ]}\n * />\n * ```\n *\n * @example Async with ZenStack hooks\n * ```tsx\n * <Form.Field.Combobox\n * name=\"userId\"\n * label=\"User\"\n * useQuery={(search) => useFindManyUser({\n * where: { name: { contains: search, mode: 'insensitive' } },\n * take: 20,\n * })}\n * getLabel={(user) => user.name}\n * getValue={(user) => user.id}\n * getGroup={(user) => user.role}\n * debounce={300}\n * minChars={2}\n * />\n * ```\n */\nexport const FieldCombobox = createField<ComboboxFieldProps, string, ComboboxFieldState>({\n displayName: 'FieldCombobox',\n useFieldState: (\n componentProps: Omit<ComboboxFieldProps, keyof BaseFieldProps>,\n resolved: ResolvedFieldProps\n ): ComboboxFieldState => {\n // Async search with debounce via shared hook\n const {\n inputValue,\n setInputValue,\n isLoading,\n data: queryData,\n } = useAsyncSearch({\n useQuery: componentProps.useQuery,\n debounce: componentProps.debounce ?? 300,\n minChars: componentProps.minChars ?? 1,\n })\n\n // Filter for static options\n const { contains } = useFilter({ sensitivity: 'base' })\n\n // Build options from static or async source\n const options = useMemo((): GroupableOption[] => {\n if (componentProps.options) {\n // Filtering static options by input value\n if (!inputValue) {\n return componentProps.options\n }\n return componentProps.options.filter((opt) => {\n return contains(getOptionLabel(opt), inputValue)\n })\n }\n\n if (queryData && componentProps.getLabel && componentProps.getValue) {\n const getLabel = componentProps.getLabel\n const getValue = componentProps.getValue\n return (queryData as unknown[]).map((item) => ({\n label: getLabel(item),\n value: getValue(item),\n group: componentProps.getGroup?.(item),\n disabled: componentProps.getDisabled?.(item),\n }))\n }\n\n return []\n }, [\n componentProps.options,\n queryData,\n componentProps.getLabel,\n componentProps.getValue,\n componentProps.getGroup,\n componentProps.getDisabled,\n inputValue,\n contains,\n ])\n\n // Create collection with grouping via shared hook\n const { collection, groups } = useGroupedOptions(options)\n\n // Auto-determine clearable\n const resolvedClearable = componentProps.clearable ?? !resolved.required\n\n return {\n inputValue,\n setInputValue,\n isLoading,\n options,\n collection,\n groups,\n resolvedClearable,\n }\n },\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const currentValue = field.state.value as string | undefined\n const minChars = componentProps.minChars ?? 1\n\n return (\n <Field.Root invalid={hasError} required={resolved.required} disabled={resolved.disabled}>\n <Combobox.Root\n collection={fieldState.collection}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'outline'}\n value={currentValue ? [currentValue] : []}\n inputValue={fieldState.inputValue}\n onInputValueChange={(details) => fieldState.setInputValue(details.inputValue)}\n onValueChange={(details) => {\n const newValue = details.value[0] as string | undefined\n field.handleChange(newValue ?? '')\n }}\n onInteractOutside={() => field.handleBlur()}\n disabled={resolved.disabled}\n allowCustomValue={componentProps.allowCustomValue ?? false}\n openOnClick\n data-field-name={fullPath}\n >\n {resolved.label && (\n <Combobox.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </Combobox.Label>\n )}\n\n <Combobox.Control>\n <Combobox.Input placeholder={resolved.placeholder ?? 'Search...'} />\n <Combobox.IndicatorGroup>\n {fieldState.isLoading && <Spinner size=\"xs\" />}\n {fieldState.resolvedClearable && <Combobox.ClearTrigger />}\n <Combobox.Trigger />\n </Combobox.IndicatorGroup>\n </Combobox.Control>\n\n <Portal>\n <Combobox.Positioner>\n <Combobox.Content>\n {/* Loading state */}\n {fieldState.isLoading && fieldState.options.length === 0 && (\n <Combobox.Empty>{componentProps.loadingMessage ?? 'Loading...'}</Combobox.Empty>\n )}\n\n {/* Empty result */}\n {!fieldState.isLoading &&\n fieldState.options.length === 0 &&\n fieldState.inputValue.length >= minChars && (\n <Combobox.Empty>{componentProps.emptyMessage ?? 'Nothing found'}</Combobox.Empty>\n )}\n\n {/* Hint about minimum characters */}\n {!fieldState.isLoading &&\n fieldState.options.length === 0 &&\n fieldState.inputValue.length < minChars &&\n fieldState.inputValue.length > 0 && (\n <Combobox.Empty>Enter at least {minChars} characters</Combobox.Empty>\n )}\n\n {/* Grouped options */}\n {fieldState.groups\n ? Array.from(fieldState.groups.entries()).map(([groupName, groupOptions]) => (\n <Combobox.ItemGroup key={groupName}>\n {groupName && <Combobox.ItemGroupLabel>{groupName}</Combobox.ItemGroupLabel>}\n {groupOptions.map((opt) => (\n <Combobox.Item item={opt} key={opt.value}>\n <Combobox.ItemText>{getOptionLabel(opt)}</Combobox.ItemText>\n <Combobox.ItemIndicator />\n </Combobox.Item>\n ))}\n </Combobox.ItemGroup>\n ))\n : /* Flat options */\n fieldState.options.map((opt) => (\n <Combobox.Item item={opt} key={opt.value}>\n <Combobox.ItemText>{getOptionLabel(opt)}</Combobox.ItemText>\n <Combobox.ItemIndicator />\n </Combobox.Item>\n ))}\n </Combobox.Content>\n </Combobox.Positioner>\n </Portal>\n </Combobox.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, Listbox } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, FieldSizeWithoutXs, GroupableOption } from '../../types'\nimport {\n createField,\n FieldError,\n getOptionLabel,\n SelectionFieldLabel,\n useGroupedOptions,\n type GroupedOptionsResult,\n} from '../base'\n\n/**\n * Props for Listbox field\n */\nexport interface ListboxFieldProps<T = string> extends Omit<BaseFieldProps, 'placeholder'> {\n /** Options for listbox */\n options: GroupableOption<T>[]\n /**\n * Selection mode\n * - `single`: Single selection (by default)\n * - `multiple`: Multiple selection\n */\n selectionMode?: 'single' | 'multiple'\n /** Size */\n size?: FieldSizeWithoutXs\n /** Visual variant */\n variant?: 'subtle' | 'solid' | 'plain'\n /** Color palette */\n colorPalette?: string\n /** Element orientation (by default: vertical) */\n orientation?: 'horizontal' | 'vertical'\n /** Maximum height for scrolling */\n maxHeight?: string | number\n}\n\n/** State type for useFieldState */\ntype ListboxFieldState = GroupedOptionsResult\n\n/**\n * Form.Field.Listbox - Selection list with visible options\n *\n * Unlike Select/Combobox which use dropdown, Listbox shows\n * all options directly in the form. Well suited for short lists (2-8 elements)\n * where all options should be visible.\n *\n * @example Single selection\n * ```tsx\n * <Form.Field.Listbox\n * name=\"framework\"\n * label=\"Framework\"\n * options={[\n * { label: 'React', value: 'react' },\n * { label: 'Vue', value: 'vue' },\n * { label: 'Angular', value: 'angular' },\n * ]}\n * />\n * ```\n *\n * @example Multiple selection\n * ```tsx\n * <Form.Field.Listbox\n * name=\"features\"\n * label=\"Features\"\n * selectionMode=\"multiple\"\n * options={[\n * { label: 'TypeScript', value: 'ts' },\n * { label: 'Testing', value: 'test' },\n * { label: 'Linting', value: 'lint' },\n * ]}\n * />\n * ```\n *\n * @example With groups\n * ```tsx\n * <Form.Field.Listbox\n * name=\"language\"\n * options={[\n * { label: 'TypeScript', value: 'ts', group: 'Frontend' },\n * { label: 'Python', value: 'py', group: 'Backend' },\n * ]}\n * />\n * ```\n */\nexport const FieldListbox = createField<ListboxFieldProps, string | string[], ListboxFieldState>({\n displayName: 'FieldListbox',\n useFieldState: (componentProps): ListboxFieldState => {\n // Use shared hook for grouping options\n return useGroupedOptions(componentProps.options)\n },\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n // Handle single vs multiple values\n const currentValue = field.state.value as string | string[] | undefined\n const valueArray: string[] = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : []\n const selectionMode = componentProps.selectionMode ?? 'single'\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <Listbox.Root\n collection={fieldState.collection}\n selectionMode={selectionMode}\n orientation={componentProps.orientation ?? 'vertical'}\n variant={componentProps.variant ?? 'subtle'}\n colorPalette={componentProps.colorPalette}\n value={valueArray}\n onValueChange={(details) => {\n if (selectionMode === 'single') {\n // Single mode: save single value or empty string\n const newValue = details.value[0] as string | undefined\n field.handleChange(newValue ?? '')\n } else {\n // Multiple mode: save array\n field.handleChange(details.value)\n }\n }}\n disabled={resolved.disabled}\n data-field-name={fullPath}\n >\n {resolved.label && (\n <Listbox.Label fontSize={componentProps.size ?? 'md'}>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </Listbox.Label>\n )}\n\n <Listbox.Content maxH={componentProps.maxHeight}>\n {fieldState.groups\n ? /* Grouped options */\n Array.from(fieldState.groups.entries()).map(([groupName, groupOptions]) => (\n <Listbox.ItemGroup key={groupName}>\n {groupName && <Listbox.ItemGroupLabel>{groupName}</Listbox.ItemGroupLabel>}\n {groupOptions.map((opt) => (\n <Listbox.Item item={opt} key={opt.value}>\n <Listbox.ItemText>{getOptionLabel(opt)}</Listbox.ItemText>\n <Listbox.ItemIndicator />\n </Listbox.Item>\n ))}\n </Listbox.ItemGroup>\n ))\n : /* Flat options */\n componentProps.options.map((opt) => (\n <Listbox.Item item={opt} key={opt.value}>\n <Listbox.ItemText>{getOptionLabel(opt)}</Listbox.ItemText>\n <Listbox.ItemIndicator />\n </Listbox.Item>\n ))}\n </Listbox.Content>\n </Listbox.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { NativeSelect } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, NativeSelectOption } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n// Re-export for backward compatibility\nexport type { NativeSelectOption } from '../../types'\n\nexport interface NativeSelectFieldProps<T = string> extends BaseFieldProps {\n options: NativeSelectOption<T>[]\n}\n\n/**\n * Form.Field.NativeSelect - Native browser select dropdown\n *\n * Renders a Chakra NativeSelect with automatic form integration and error display.\n * Uses native browser select for best mobile UX (shows system picker on iOS/Android).\n *\n * @example\n * ```tsx\n * <Form.Field.NativeSelect\n * name=\"type\"\n * label=\"Type\"\n * options={[\n * { title: 'Option 1', value: 'opt1' },\n * { title: 'Option 2', value: 'opt2' },\n * ]}\n * />\n * ```\n */\nexport const FieldNativeSelect = createField<NativeSelectFieldProps, string>({\n displayName: 'FieldNativeSelect',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <NativeSelect.Root>\n <NativeSelect.Field\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLSelectElement).value)}\n onBlur={field.handleBlur}\n data-field-name={fullPath}\n >\n {resolved.placeholder && (\n <option value=\"\" disabled>\n {resolved.placeholder}\n </option>\n )}\n {componentProps.options.map((opt, idx) => (\n <option key={idx} value={opt.value}>\n {typeof opt.title === 'string' ? opt.title : opt.value}\n </option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n </FieldWrapper>\n ),\n})\n","'use client'\n\nimport { Field, RadioCard } from '@chakra-ui/react'\nimport { useCallback, type KeyboardEvent, type ReactElement } from 'react'\nimport type { BaseFieldProps, FieldSizeWithoutXs, FieldTooltipMeta, RichOption } from '../../types'\nimport { createField, FieldError, SelectionFieldLabel } from '../base'\n\n/**\n * Props for RadioCard field\n */\nexport interface RadioCardFieldProps<T = string> extends Omit<BaseFieldProps, 'placeholder'> {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n /** Options for cards */\n options: RichOption<T>[]\n /** Size (by default: md) */\n size?: FieldSizeWithoutXs\n /** Visual variant (by default: outline) */\n variant?: 'surface' | 'subtle' | 'outline' | 'solid'\n /** Color palette */\n colorPalette?: string\n /** Content alignment (by default: start) */\n align?: 'start' | 'end' | 'center'\n /** Orientation (by default: horizontal) */\n orientation?: 'horizontal' | 'vertical'\n /** Gap between cards (by default: 2) */\n gap?: number | string\n /** Enable enhanced keyboard navigation with cycling (by default: false) */\n keyboardNavigation?: boolean\n}\n\n/** State type for useFieldState */\ninterface RadioCardFieldState {\n enabledOptions: RichOption[]\n handleKeyDown: (\n e: KeyboardEvent<HTMLDivElement>,\n currentValue: string | undefined,\n handleChange: (value: string) => void\n ) => void\n}\n\n/**\n * Form.Field.RadioCard - Single selection as cards\n *\n * Renders a group of radio cards for selecting one option.\n * Each card can have a label, description and icon.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.RadioCard\n * name=\"plan\"\n * label=\"Select plan\"\n * options={[\n * { label: 'Free', value: 'free', description: 'Basic features' },\n * { label: 'Pro', value: 'pro', description: 'All features' },\n * { label: 'Enterprise', value: 'enterprise', description: 'Customization' },\n * ]}\n * />\n * ```\n *\n * @example With icons\n * ```tsx\n * <Form.Field.RadioCard\n * name=\"role\"\n * options={[\n * { label: 'Admin', value: 'admin', icon: <ShieldIcon /> },\n * { label: 'User', value: 'user', icon: <UserIcon /> },\n * ]}\n * align=\"center\"\n * />\n * ```\n */\nexport const FieldRadioCard = createField<RadioCardFieldProps, string, RadioCardFieldState>({\n displayName: 'FieldRadioCard',\n useFieldState: (componentProps): RadioCardFieldState => {\n // Get only enabled options for keyboard navigation\n const enabledOptions = componentProps.options.filter((opt) => !opt.disabled)\n\n // Handle keyboard navigation with cycling\n const handleKeyDown = useCallback(\n (\n e: KeyboardEvent<HTMLDivElement>,\n currentValue: string | undefined,\n handleChange: (value: string) => void\n ): void => {\n if (!componentProps.keyboardNavigation || enabledOptions.length === 0) {\n return\n }\n\n const isHorizontal = (componentProps.orientation ?? 'horizontal') === 'horizontal'\n const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown'\n\n if (e.key !== prevKey && e.key !== nextKey) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = currentValue ? enabledOptions.findIndex((opt) => opt.value === currentValue) : -1\n\n let newIndex: number\n\n if (e.key === nextKey) {\n // Forward (cycle to first if at end)\n newIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % enabledOptions.length\n } else {\n // Back (cycle to last if at beginning)\n newIndex =\n currentIndex === -1\n ? enabledOptions.length - 1\n : (currentIndex - 1 + enabledOptions.length) % enabledOptions.length\n }\n\n handleChange(enabledOptions[newIndex].value)\n },\n [componentProps.keyboardNavigation, enabledOptions, componentProps.orientation]\n )\n\n return { enabledOptions, handleKeyDown }\n },\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const currentValue = field.state.value as string | undefined\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <RadioCard.Root\n value={currentValue ?? ''}\n onValueChange={(details) => field.handleChange(details.value)}\n onKeyDown={\n componentProps.keyboardNavigation\n ? (e) => fieldState.handleKeyDown(e, currentValue, field.handleChange)\n : undefined\n }\n disabled={resolved.disabled}\n name={fullPath}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'outline'}\n colorPalette={componentProps.colorPalette}\n align={componentProps.align ?? 'start'}\n orientation={componentProps.orientation ?? 'horizontal'}\n gap={componentProps.gap ?? 2}\n >\n {resolved.label && (\n <RadioCard.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </RadioCard.Label>\n )}\n\n {componentProps.options.map((opt) => (\n <RadioCard.Item key={opt.value} value={opt.value} disabled={opt.disabled}>\n <RadioCard.ItemHiddenInput />\n <RadioCard.ItemControl>\n <RadioCard.ItemContent>\n {opt.icon}\n <RadioCard.ItemText>{opt.label}</RadioCard.ItemText>\n {opt.description && <RadioCard.ItemDescription>{opt.description}</RadioCard.ItemDescription>}\n </RadioCard.ItemContent>\n <RadioCard.ItemIndicator />\n </RadioCard.ItemControl>\n </RadioCard.Item>\n ))}\n </RadioCard.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, RadioGroup } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, BaseOption, FieldSize } from '../../types'\nimport { createField, FieldError, FieldLabel, getOptionLabel } from '../base'\n\n/**\n * Props for RadioGroup field\n */\nexport interface RadioGroupFieldProps<T = string> extends Omit<BaseFieldProps, 'placeholder'> {\n /** Options for radio group */\n options: BaseOption<T>[]\n /** Orientation (by default: vertical) */\n orientation?: 'horizontal' | 'vertical'\n /** Size */\n size?: FieldSize\n /** Visual variant */\n variant?: 'outline' | 'subtle' | 'solid'\n /** Color palette */\n colorPalette?: string\n}\n\n/**\n * Form.Field.RadioGroup - Radio button group for single selection\n *\n * Renders a radio button group for mutually exclusive options.\n * Use Select for long lists, RadioGroup for short ones (2-5 options).\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.RadioGroup\n * name=\"size\"\n * label=\"Size\"\n * options={[\n * { label: 'Small', value: 'sm' },\n * { label: 'Medium', value: 'md' },\n * { label: 'Large', value: 'lg' },\n * ]}\n * />\n * ```\n *\n * @example Horizontal layout\n * ```tsx\n * <Form.Field.RadioGroup\n * name=\"priority\"\n * orientation=\"horizontal\"\n * options={[\n * { label: 'Low', value: 'low' },\n * { label: 'Medium', value: 'medium' },\n * { label: 'High', value: 'high' },\n * ]}\n * />\n * ```\n */\nexport const FieldRadioGroup = createField<RadioGroupFieldProps, string>({\n displayName: 'FieldRadioGroup',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <RadioGroup.Root\n value={(field.state.value as string) ?? undefined}\n onValueChange={(details) => field.handleChange(details.value)}\n orientation={componentProps.orientation ?? 'vertical'}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'solid'}\n colorPalette={componentProps.colorPalette ?? 'brand'}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n data-field-name={fullPath}\n display=\"flex\"\n flexDirection={componentProps.orientation === 'horizontal' ? 'row' : 'column'}\n gap={componentProps.orientation === 'horizontal' ? 4 : 2}\n flexWrap=\"wrap\"\n >\n {componentProps.options.map((opt) => (\n <RadioGroup.Item key={opt.value} value={opt.value} disabled={opt.disabled}>\n <RadioGroup.ItemHiddenInput onBlur={field.handleBlur} />\n <RadioGroup.ItemIndicator />\n <RadioGroup.ItemText>{getOptionLabel(opt)}</RadioGroup.ItemText>\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n ),\n})\n","'use client'\n\nimport { Field, SegmentGroup } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, BaseOption, FieldSize } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Props for SegmentedGroup field\n */\nexport interface SegmentedGroupFieldProps<T = string> extends Omit<BaseFieldProps, 'placeholder'> {\n /** Options for segmented control */\n options: BaseOption<T>[]\n /** Size (by default: md) */\n size?: FieldSize\n /** Orientation (by default: horizontal) */\n orientation?: 'horizontal' | 'vertical'\n /** Color palette */\n colorPalette?: string\n}\n\n/**\n * Form.Field.SegmentedGroup - Segmented control for single selection\n *\n * Renders a segmented control for selecting one option from a set.\n * Similar to radio buttons but styled as connected segments.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.SegmentedGroup\n * name=\"size\"\n * label=\"Size\"\n * options={[\n * { label: 'S', value: 'sm' },\n * { label: 'M', value: 'md' },\n * { label: 'L', value: 'lg' },\n * ]}\n * />\n * ```\n *\n * @example Different sizes\n * ```tsx\n * <Form.Field.SegmentedGroup\n * name=\"billing\"\n * options={[\n * { label: 'Monthly', value: 'monthly' },\n * { label: 'Yearly', value: 'yearly' },\n * ]}\n * size=\"sm\"\n * />\n * ```\n */\nexport const FieldSegmentedGroup = createField<SegmentedGroupFieldProps, string>({\n displayName: 'FieldSegmentedGroup',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <SegmentGroup.Root\n value={(field.state.value as string) ?? ''}\n onValueChange={(details) => field.handleChange(details.value)}\n disabled={resolved.disabled}\n name={fullPath}\n size={componentProps.size ?? 'md'}\n orientation={componentProps.orientation ?? 'horizontal'}\n colorPalette={componentProps.colorPalette}\n >\n <SegmentGroup.Indicator />\n {componentProps.options.map((opt) => (\n <SegmentGroup.Item key={opt.value} value={opt.value} disabled={opt.disabled}>\n <SegmentGroup.ItemText>{opt.label}</SegmentGroup.ItemText>\n <SegmentGroup.ItemHiddenInput />\n </SegmentGroup.Item>\n ))}\n </SegmentGroup.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n ),\n})\n","'use client'\n\nimport { createListCollection, Field, Portal, Select } from '@chakra-ui/react'\nimport { type ReactElement, useMemo } from 'react'\nimport type { BaseFieldProps, BaseOption, FieldSize } from '../../types'\nimport { createField, FieldError, getOptionLabel, type ResolvedFieldProps, SelectionFieldLabel } from '../base'\n\n/** Normalized option (value is always string for Chakra) */\ninterface NormalizedOption {\n label: React.ReactNode\n value: string\n disabled?: boolean\n}\n\n/**\n * Props for Select field\n */\nexport interface SelectFieldProps extends BaseFieldProps {\n /** Options for selection (string or number values). If not specified, taken from schema meta */\n options?: BaseOption<string | number>[]\n /** Value type: 'string' (by default) or 'number' */\n valueType?: 'string' | 'number'\n /** Show clear button (auto-determined: true if optional, false if required) */\n clearable?: boolean\n /** Size */\n size?: FieldSize\n /** Visual variant */\n variant?: 'outline' | 'subtle'\n}\n\n/** State type for useFieldState */\ninterface SelectFieldState {\n collection: ReturnType<typeof createListCollection<NormalizedOption>>\n normalizedOptions: NormalizedOption[]\n resolvedClearable: boolean\n}\n\n/**\n * Form.Field.Select - Styled Chakra Select dropdown\n *\n * Styled select component with customizable appearance,\n * animations and advanced features (search, clear, custom rendering).\n *\n * For simple cases or better mobile UX use Form.Field.NativeSelect.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Select\n * name=\"framework\"\n * label=\"Framework\"\n * options={[\n * { label: 'React', value: 'react' },\n * { label: 'Vue', value: 'vue' },\n * { label: 'Angular', value: 'angular', disabled: true },\n * ]}\n * clearable\n * />\n * ```\n */\nexport const FieldSelect = createField<SelectFieldProps, string | number, SelectFieldState>({\n displayName: 'FieldSelect',\n useFieldState: (\n componentProps: Omit<SelectFieldProps, keyof BaseFieldProps>,\n resolved: ResolvedFieldProps\n ): SelectFieldState => {\n // Options: props take priority, fallback to schema meta\n const sourceOptions = componentProps.options ?? resolved.options ?? []\n\n // Normalize options — value always string for Chakra\n const normalizedOptions: NormalizedOption[] = useMemo(\n () =>\n sourceOptions.map((opt) => ({\n label: opt.label,\n value: String(opt.value),\n disabled: opt.disabled,\n })),\n [sourceOptions]\n )\n\n // Create collection from normalized options\n const collection = useMemo(\n () =>\n createListCollection({\n items: normalizedOptions,\n itemToString: getOptionLabel,\n itemToValue: (item) => item.value,\n }),\n [normalizedOptions]\n )\n\n // Auto-determine clearable: show clear button if field is optional\n const resolvedClearable = componentProps.clearable ?? !resolved.required\n\n return { collection, normalizedOptions, resolvedClearable }\n },\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n // Convert current value to string for Chakra\n const currentValue = field.state.value\n const stringValue = currentValue !== null && currentValue !== undefined ? String(currentValue) : undefined\n\n return (\n <Field.Root invalid={hasError} required={resolved.required} disabled={resolved.disabled}>\n <Select.Root\n collection={fieldState.collection}\n size={componentProps.size ?? 'md'}\n variant={componentProps.variant ?? 'outline'}\n value={stringValue ? [stringValue] : []}\n onValueChange={(details) => {\n const newStringValue = details.value[0] as string | undefined\n // Convert back to needed type\n if (componentProps.valueType === 'number') {\n field.handleChange(newStringValue ? Number(newStringValue) : 0)\n } else {\n field.handleChange(newStringValue ?? '')\n }\n }}\n onInteractOutside={() => field.handleBlur()}\n disabled={resolved.disabled}\n data-field-name={fullPath}\n >\n <Select.HiddenSelect />\n {resolved.label && (\n <Select.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </Select.Label>\n )}\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder={resolved.placeholder} />\n </Select.Trigger>\n <Select.IndicatorGroup>\n {fieldState.resolvedClearable && <Select.ClearTrigger />}\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {fieldState.normalizedOptions.map((opt) => (\n <Select.Item item={opt} key={opt.value}>\n {getOptionLabel(opt)}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, TagsInput } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { BaseFieldProps, FieldTooltipMeta } from '../../types'\nimport { createField, FieldError, SelectionFieldLabel } from '../base'\n\n/**\n * Props for Form.Field.Tags\n */\nexport interface TagsFieldProps extends BaseFieldProps {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n /** Maximum number of tags */\n maxTags?: number\n /** Minimum length of each tag (by default: 1) */\n minTagLength?: number\n /** Custom delimiter (regex or string). Default: Enter */\n delimiter?: RegExp | string\n /** Add tags on blur (by default: false) */\n addOnBlur?: boolean\n /** Add tags on paste (by default: true) */\n addOnPaste?: boolean\n /** Allow editing tags on click (by default: false) */\n editable?: boolean\n /** Show clear button (by default: false) */\n clearable?: boolean\n /** Size (by default: md) */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Visual variant (by default: outline) */\n variant?: 'outline' | 'subtle' | 'flushed'\n /** Color palette for tags */\n colorPalette?: string\n}\n\n/**\n * Form.Field.Tags - Tags input field\n *\n * Renders input for adding/removing string tags.\n * Integrates with Chakra UI TagsInput component.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Tags name=\"tags\" label=\"Tags\" placeholder=\"Add tag...\" />\n * ```\n *\n * @example With constraints\n * ```tsx\n * <Form.Field.Tags\n * name=\"categories\"\n * label=\"Categories\"\n * maxTags={5}\n * minTagLength={2}\n * helperText=\"Up to 5 categories\"\n * />\n * ```\n *\n * @example With custom delimiter\n * ```tsx\n * <Form.Field.Tags\n * name=\"emails\"\n * label=\"Email addresses\"\n * delimiter={/[;,\\s]/}\n * addOnPaste\n * />\n * ```\n *\n * @example Editable tags\n * ```tsx\n * <Form.Field.Tags\n * name=\"tags\"\n * label=\"Tags\"\n * editable\n * clearable\n * />\n * ```\n */\nexport const FieldTags = createField<TagsFieldProps, string[]>({\n displayName: 'FieldTags',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const {\n maxTags,\n minTagLength = 1,\n delimiter,\n addOnBlur = false,\n addOnPaste = true,\n editable = false,\n clearable = false,\n size = 'md',\n variant = 'outline',\n colorPalette,\n } = componentProps\n\n const value = (field.state.value as string[]) ?? []\n\n const handleValueChange = (details: { value: string[] }) => {\n field.handleChange(details.value)\n }\n\n const validateTag = (details: { inputValue: string }) => {\n return details.inputValue.length >= minTagLength\n }\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <TagsInput.Root\n value={value}\n onValueChange={handleValueChange}\n max={maxTags}\n validate={validateTag}\n delimiter={delimiter}\n blurBehavior={addOnBlur ? 'add' : undefined}\n addOnPaste={addOnPaste}\n editable={editable}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n size={size}\n variant={variant}\n colorPalette={colorPalette}\n data-field-name={fullPath}\n >\n {resolved.label && (\n <TagsInput.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </TagsInput.Label>\n )}\n\n <TagsInput.Control>\n <TagsInput.Items />\n <TagsInput.Input placeholder={resolved.placeholder} onBlur={field.handleBlur} />\n {clearable && <TagsInput.ClearTrigger />}\n </TagsInput.Control>\n\n <TagsInput.HiddenInput />\n </TagsInput.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { createListCollection, Field, Portal, Select, Spinner } from '@chakra-ui/react'\nimport { type ReactElement, useEffect, useMemo, useRef, useState } from 'react'\nimport { useFormGroup } from '../../../form-group'\nimport { useDeclarativeForm } from '../../form-context'\nimport type { BaseFieldProps, BaseOption, FieldSize } from '../../types'\nimport { FieldError, getFieldErrors, getOptionLabel, type ResolvedFieldProps, SelectionFieldLabel } from '../base'\nimport { useResolvedFieldProps } from '../base/use-resolved-field-props'\n\n/**\n * Options loading result\n */\nexport interface CascadingSelectLoadResult<T = string> {\n /** Loaded options */\n options: BaseOption<T>[]\n}\n\n/**\n * Props for CascadingSelect field\n */\nexport interface CascadingSelectFieldProps<TParent = string, TValue = string> extends BaseFieldProps {\n /**\n * Parent field name that this select depends on\n * @example \"country\" - load cities on country change\n */\n dependsOn: string\n /**\n * Function to load options when parent field changes\n * @param parentValue - Current value of the parent field\n * @returns Promise with options array or object with options\n */\n loadOptions: (\n parentValue: TParent | undefined\n ) => Promise<BaseOption<TValue>[]> | Promise<CascadingSelectLoadResult<TValue>>\n /**\n * Initial options (shown before parent value is selected)\n * @default []\n */\n initialOptions?: BaseOption<TValue>[]\n /**\n * Automatically clear value when parent changes\n * @default true\n */\n clearOnParentChange?: boolean\n /**\n * Disable field while parent is empty\n * @default true\n */\n disableWhenParentEmpty?: boolean\n /**\n * Show clear button (auto-determined: true if optional, false if required)\n */\n clearable?: boolean\n /**\n * Component size\n */\n size?: FieldSize\n /**\n * Visual variant\n */\n variant?: 'outline' | 'subtle'\n /**\n * Placeholder when parent value is empty\n */\n placeholderWhenDisabled?: string\n}\n\n/**\n * Internal component for rendering Select with loaded options\n */\ninterface CascadingSelectContentProps<TParent, TValue> {\n parentValue: TParent | undefined\n form: ReturnType<typeof useDeclarativeForm>['form']\n fullPath: string\n resolved: ResolvedFieldProps\n loadOptions: CascadingSelectFieldProps<TParent, TValue>['loadOptions']\n initialOptions: BaseOption<TValue>[]\n clearOnParentChange: boolean\n disableWhenParentEmpty: boolean\n clearable?: boolean\n size: FieldSize\n variant: 'outline' | 'subtle'\n placeholderWhenDisabled?: string\n}\n\nfunction CascadingSelectContent<TParent = string, TValue = string>({\n parentValue,\n form,\n fullPath,\n resolved,\n loadOptions,\n initialOptions,\n clearOnParentChange,\n disableWhenParentEmpty,\n clearable,\n size,\n variant,\n placeholderWhenDisabled,\n}: CascadingSelectContentProps<TParent, TValue>): ReactElement {\n // Options state and loading\n const [options, setOptions] = useState<BaseOption<TValue>[]>(initialOptions)\n const [isLoading, setIsLoading] = useState(false)\n\n // Ref for tracking previous parent value\n const prevParentValueRef = useRef<TParent | undefined>(parentValue)\n\n // Ref for stable loadOptions reference (avoid infinite loops with inline functions)\n const loadOptionsRef = useRef(loadOptions)\n loadOptionsRef.current = loadOptions\n\n // Effect for loading options when parentValue changes\n useEffect(() => {\n // Loading function\n const doLoad = async () => {\n if (parentValue === undefined || parentValue === null || parentValue === '') {\n setOptions(initialOptions)\n return\n }\n\n setIsLoading(true)\n try {\n const result = await loadOptionsRef.current(parentValue)\n // Support both formats: array or object with options\n const newOptions = Array.isArray(result) ? result : result.options\n setOptions(newOptions)\n } catch (error) {\n console.error('Error loading cascading select options:', error)\n setOptions([])\n } finally {\n setIsLoading(false)\n }\n }\n\n void doLoad()\n }, [parentValue, initialOptions])\n\n // Effect for clearing value when parent changes\n useEffect(() => {\n if (clearOnParentChange && prevParentValueRef.current !== parentValue) {\n // Clear field value if parent changed (not on first render)\n if (prevParentValueRef.current !== undefined) {\n form.setFieldValue(fullPath, '' as unknown)\n }\n prevParentValueRef.current = parentValue\n }\n }, [parentValue, clearOnParentChange, form, fullPath])\n\n // Determine if the field should be disabled\n const isParentEmpty = parentValue === undefined || parentValue === null || parentValue === ''\n const isDisabled = resolved.disabled || (disableWhenParentEmpty && isParentEmpty)\n\n // Determine placeholder\n const effectivePlaceholder = isParentEmpty && placeholderWhenDisabled ? placeholderWhenDisabled : resolved.placeholder\n\n // Auto-determine clearable\n const resolvedClearable = clearable ?? !resolved.required\n\n // Create collection from options\n const collection = useMemo(\n () =>\n createListCollection({\n items: options,\n itemToString: getOptionLabel,\n itemToValue: (item) => item.value as string,\n }),\n [options]\n )\n\n return (\n <form.Field name={fullPath}>\n {(field: {\n state: { value: unknown; meta: { errors?: unknown[] } }\n handleChange: (v: unknown) => void\n handleBlur: () => void\n }) => {\n const { hasError, errorMessage } = getFieldErrors(field)\n const currentValue = field.state.value as string | undefined\n\n return (\n <Field.Root invalid={hasError} required={resolved.required} disabled={isDisabled}>\n <Select.Root\n collection={collection}\n size={size}\n variant={variant}\n value={currentValue ? [currentValue] : []}\n onValueChange={(details) => {\n const newValue = details.value[0] as string | undefined\n field.handleChange(newValue ?? '')\n }}\n onInteractOutside={() => field.handleBlur()}\n disabled={isDisabled}\n data-field-name={fullPath}\n >\n <Select.HiddenSelect />\n {resolved.label && (\n <Select.Label>\n <SelectionFieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n </Select.Label>\n )}\n <Select.Control>\n <Select.Trigger>\n <Select.ValueText placeholder={effectivePlaceholder} />\n </Select.Trigger>\n <Select.IndicatorGroup>\n {isLoading && <Spinner size=\"xs\" />}\n {resolvedClearable && !isLoading && <Select.ClearTrigger />}\n <Select.Indicator />\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <Select.Content>\n {options.map((opt) => (\n <Select.Item item={opt} key={opt.value as string}>\n {getOptionLabel(opt)}\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Positioner>\n </Portal>\n </Select.Root>\n <FieldError hasError={!!hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n }}\n </form.Field>\n )\n}\n\n/**\n * Form.Field.CascadingSelect - Cascading select depending on another field\n *\n * Loads options dynamically based on another field's value.\n * Useful for linked lists like Country -> City, Category -> Subcategory.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Select\n * name=\"country\"\n * label=\"Country\"\n * options={countries}\n * />\n * <Form.Field.CascadingSelect\n * name=\"city\"\n * label=\"City\"\n * dependsOn=\"country\"\n * loadOptions={async (countryCode) => {\n * if (!countryCode) return []\n * const cities = await fetchCities(countryCode)\n * return cities.map(c => ({ label: c.name, value: c.id }))\n * }}\n * placeholderWhenDisabled=\"Select country first\"\n * />\n * ```\n *\n * @example Nested fields\n * ```tsx\n * <Form.Field.CascadingSelect\n * name=\"address.region\"\n * label=\"Region\"\n * dependsOn=\"address.country\"\n * loadOptions={loadRegions}\n * />\n * ```\n */\nexport function FieldCascadingSelect<TParent = string, TValue = string>(\n props: CascadingSelectFieldProps<TParent, TValue>\n): ReactElement {\n const {\n name,\n dependsOn,\n loadOptions,\n initialOptions = [],\n clearOnParentChange = true,\n disableWhenParentEmpty = true,\n clearable,\n size = 'md',\n variant = 'outline',\n placeholderWhenDisabled,\n ...baseProps\n } = props\n\n const { form } = useDeclarativeForm()\n const parentGroup = useFormGroup()\n const { form: _formFromProps, fullPath, ...resolvedRest } = useResolvedFieldProps(name, baseProps)\n\n const resolved: ResolvedFieldProps = {\n label: resolvedRest.label,\n placeholder: resolvedRest.placeholder,\n helperText: resolvedRest.helperText,\n tooltip: resolvedRest.tooltip,\n required: resolvedRest.required,\n disabled: resolvedRest.disabled,\n readOnly: resolvedRest.readOnly,\n constraints: resolvedRest.constraints,\n options: resolvedRest.options,\n }\n\n // Build full path to parent field\n const fullDependsOnPath = parentGroup ? `${parentGroup.name}.${dependsOn}` : dependsOn\n\n // Create selector for parent field value (inline, like in FormWhen)\n const parentSelector = (state: { values: Record<string, unknown> }): TParent | undefined => {\n const parts = fullDependsOnPath.split('.')\n let value: unknown = state.values\n for (const part of parts) {\n if (value && typeof value === 'object') {\n value = (value as Record<string, unknown>)[part]\n } else {\n value = undefined\n break\n }\n }\n return value as TParent | undefined\n }\n\n // Use form.Subscribe to subscribe to parent field changes\n return (\n <form.Subscribe selector={parentSelector}>\n {(parentValue: TParent | undefined) => (\n <CascadingSelectContent\n parentValue={parentValue}\n form={form}\n fullPath={fullPath}\n resolved={resolved}\n loadOptions={loadOptions}\n initialOptions={initialOptions as BaseOption<TValue>[]}\n clearOnParentChange={clearOnParentChange}\n disableWhenParentEmpty={disableWhenParentEmpty}\n clearable={clearable}\n size={size}\n variant={variant}\n placeholderWhenDisabled={placeholderWhenDisabled}\n />\n )}\n </form.Subscribe>\n )\n}\n\nFieldCascadingSelect.displayName = 'FieldCascadingSelect'\n"]}
@@ -0,0 +1,299 @@
1
+ import { createField, FieldWrapper, FieldTooltip, FieldError } from './chunk-HWVOFWAT.js';
2
+ import { NumberInput, Field, RatingGroup, HStack, Slider, For } from '@chakra-ui/react';
3
+ import { useMemo } from 'react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var FieldCurrency = createField({
7
+ displayName: "FieldCurrency",
8
+ useFieldState: (props) => {
9
+ const { currency = "RUB", currencyDisplay = "symbol", decimalScale = 2 } = props;
10
+ const formatOptions = useMemo(
11
+ () => ({
12
+ style: "currency",
13
+ currency,
14
+ currencyDisplay,
15
+ minimumFractionDigits: decimalScale,
16
+ maximumFractionDigits: decimalScale
17
+ }),
18
+ [currency, currencyDisplay, decimalScale]
19
+ );
20
+ return { formatOptions };
21
+ },
22
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }) => {
23
+ const value = field.state.value;
24
+ const { min, max, step = 0.01, size } = componentProps;
25
+ const { formatOptions } = fieldState;
26
+ return /* @__PURE__ */ jsx(FieldWrapper, { resolved, hasError, errorMessage, fullPath, children: /* @__PURE__ */ jsxs(
27
+ NumberInput.Root,
28
+ {
29
+ value: value?.toString() ?? "",
30
+ onValueChange: (details) => {
31
+ const num = details.valueAsNumber;
32
+ field.handleChange(Number.isNaN(num) ? void 0 : num);
33
+ },
34
+ onBlur: field.handleBlur,
35
+ min,
36
+ max,
37
+ step,
38
+ formatOptions,
39
+ clampValueOnBlur: true,
40
+ size,
41
+ children: [
42
+ /* @__PURE__ */ jsxs(NumberInput.Control, { children: [
43
+ /* @__PURE__ */ jsx(NumberInput.IncrementTrigger, {}),
44
+ /* @__PURE__ */ jsx(NumberInput.DecrementTrigger, {})
45
+ ] }),
46
+ /* @__PURE__ */ jsx(NumberInput.Input, { placeholder: resolved.placeholder, "data-field-name": fullPath })
47
+ ]
48
+ }
49
+ ) });
50
+ }
51
+ });
52
+ var FieldNumber = createField({
53
+ displayName: "FieldNumber",
54
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }) => {
55
+ const value = field.state.value;
56
+ const { constraints } = resolved;
57
+ const min = componentProps.min ?? constraints.number?.min;
58
+ const max = componentProps.max ?? constraints.number?.max;
59
+ const step = componentProps.step ?? constraints.number?.step;
60
+ const isOptional = resolved.required === false;
61
+ const isEmpty = value === void 0 || value === null;
62
+ const shouldApplyMinMax = !isOptional || !isEmpty;
63
+ return /* @__PURE__ */ jsx(FieldWrapper, { resolved, hasError, errorMessage, fullPath, children: /* @__PURE__ */ jsxs(
64
+ NumberInput.Root,
65
+ {
66
+ value: value?.toString() ?? "",
67
+ onValueChange: (details) => {
68
+ const num = details.valueAsNumber;
69
+ field.handleChange(Number.isNaN(num) ? void 0 : num);
70
+ },
71
+ onBlur: field.handleBlur,
72
+ min: shouldApplyMinMax ? min : void 0,
73
+ max: shouldApplyMinMax ? max : void 0,
74
+ step,
75
+ children: [
76
+ /* @__PURE__ */ jsxs(NumberInput.Control, { children: [
77
+ /* @__PURE__ */ jsx(NumberInput.IncrementTrigger, {}),
78
+ /* @__PURE__ */ jsx(NumberInput.DecrementTrigger, {})
79
+ ] }),
80
+ /* @__PURE__ */ jsx(NumberInput.Input, { placeholder: resolved.placeholder, "data-field-name": fullPath, inputMode: "decimal" })
81
+ ]
82
+ }
83
+ ) });
84
+ }
85
+ });
86
+ var FieldNumberInput = createField({
87
+ displayName: "FieldNumberInput",
88
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }) => {
89
+ const value = field.state.value;
90
+ return /* @__PURE__ */ jsx(FieldWrapper, { resolved, hasError, errorMessage, fullPath, children: /* @__PURE__ */ jsxs(
91
+ NumberInput.Root,
92
+ {
93
+ value: value?.toString() ?? "",
94
+ onValueChange: (details) => {
95
+ const num = details.valueAsNumber;
96
+ field.handleChange(Number.isNaN(num) ? void 0 : num);
97
+ },
98
+ onBlur: field.handleBlur,
99
+ min: componentProps.min,
100
+ max: componentProps.max,
101
+ step: componentProps.step,
102
+ formatOptions: componentProps.formatOptions,
103
+ allowMouseWheel: componentProps.allowMouseWheel,
104
+ clampValueOnBlur: componentProps.clampValueOnBlur ?? true,
105
+ spinOnPress: componentProps.spinOnPress ?? true,
106
+ size: componentProps.size,
107
+ children: [
108
+ /* @__PURE__ */ jsxs(NumberInput.Control, { children: [
109
+ /* @__PURE__ */ jsx(NumberInput.IncrementTrigger, {}),
110
+ /* @__PURE__ */ jsx(NumberInput.DecrementTrigger, {})
111
+ ] }),
112
+ /* @__PURE__ */ jsx(NumberInput.Input, { placeholder: resolved.placeholder, "data-field-name": fullPath, inputMode: "decimal" })
113
+ ]
114
+ }
115
+ ) });
116
+ }
117
+ });
118
+ var FieldPercentage = createField({
119
+ displayName: "FieldPercentage",
120
+ useFieldState: (props) => {
121
+ const { decimalScale = 0 } = props;
122
+ const formatOptions = useMemo(
123
+ () => ({
124
+ style: "unit",
125
+ unit: "percent",
126
+ unitDisplay: "short",
127
+ minimumFractionDigits: decimalScale,
128
+ maximumFractionDigits: decimalScale
129
+ }),
130
+ [decimalScale]
131
+ );
132
+ return { formatOptions };
133
+ },
134
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }) => {
135
+ const value = field.state.value;
136
+ const { min = 0, max = 100, step = 1, size } = componentProps;
137
+ const { formatOptions } = fieldState;
138
+ return /* @__PURE__ */ jsx(FieldWrapper, { resolved, hasError, errorMessage, fullPath, children: /* @__PURE__ */ jsxs(
139
+ NumberInput.Root,
140
+ {
141
+ value: value?.toString() ?? "",
142
+ onValueChange: (details) => {
143
+ const num = details.valueAsNumber;
144
+ field.handleChange(Number.isNaN(num) ? void 0 : num);
145
+ },
146
+ onBlur: field.handleBlur,
147
+ min,
148
+ max,
149
+ step,
150
+ formatOptions,
151
+ clampValueOnBlur: true,
152
+ size,
153
+ children: [
154
+ /* @__PURE__ */ jsxs(NumberInput.Control, { children: [
155
+ /* @__PURE__ */ jsx(NumberInput.IncrementTrigger, {}),
156
+ /* @__PURE__ */ jsx(NumberInput.DecrementTrigger, {})
157
+ ] }),
158
+ /* @__PURE__ */ jsx(NumberInput.Input, { placeholder: resolved.placeholder, "data-field-name": fullPath })
159
+ ]
160
+ }
161
+ ) });
162
+ }
163
+ });
164
+ var FieldRating = createField({
165
+ displayName: "FieldRating",
166
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }) => {
167
+ const { count = 5, allowHalf = false, size = "md", colorPalette, icon, onValueChange } = componentProps;
168
+ const value = field.state.value ?? 0;
169
+ const handleValueChange = (details) => {
170
+ field.handleChange(details.value);
171
+ onValueChange?.(details.value);
172
+ };
173
+ return /* @__PURE__ */ jsxs(
174
+ Field.Root,
175
+ {
176
+ invalid: hasError,
177
+ required: resolved.required,
178
+ disabled: resolved.disabled,
179
+ readOnly: resolved.readOnly,
180
+ children: [
181
+ /* @__PURE__ */ jsxs(
182
+ RatingGroup.Root,
183
+ {
184
+ value,
185
+ onValueChange: handleValueChange,
186
+ count,
187
+ allowHalf,
188
+ size,
189
+ colorPalette,
190
+ disabled: resolved.disabled,
191
+ readOnly: resolved.readOnly,
192
+ "data-field-name": fullPath,
193
+ children: [
194
+ resolved.label && /* @__PURE__ */ jsx(RatingGroup.Label, { children: resolved.tooltip ? /* @__PURE__ */ jsxs(HStack, { gap: 1, children: [
195
+ /* @__PURE__ */ jsx("span", { children: resolved.label }),
196
+ /* @__PURE__ */ jsx(FieldTooltip, { ...resolved.tooltip })
197
+ ] }) : resolved.label }),
198
+ /* @__PURE__ */ jsx(RatingGroup.HiddenInput, { onBlur: field.handleBlur }),
199
+ /* @__PURE__ */ jsx(RatingGroup.Control, { children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsx(RatingGroup.Item, { index: index + 1, children: /* @__PURE__ */ jsx(RatingGroup.ItemIndicator, { icon }) }, index)) })
200
+ ]
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsx(FieldError, { hasError, errorMessage, helperText: resolved.helperText })
204
+ ]
205
+ }
206
+ );
207
+ }
208
+ });
209
+ var FieldSlider = createField({
210
+ displayName: "FieldSlider",
211
+ render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }) => {
212
+ const { constraints } = resolved;
213
+ const min = componentProps.min ?? constraints.number?.min ?? 0;
214
+ const max = componentProps.max ?? constraints.number?.max ?? 100;
215
+ const step = componentProps.step ?? constraints.number?.step ?? 1;
216
+ const {
217
+ showValue,
218
+ orientation = "horizontal",
219
+ size = "md",
220
+ variant = "outline",
221
+ colorPalette,
222
+ marks,
223
+ origin,
224
+ onValueChange,
225
+ onValueChangeEnd
226
+ } = componentProps;
227
+ const normalizedMarks = marks?.map((mark) => typeof mark === "number" ? { value: mark, label: void 0 } : mark);
228
+ const numValue = field.state.value ?? min;
229
+ const arrayValue = [numValue];
230
+ const handleValueChange = (details) => {
231
+ const newValue = details.value[0] ?? min;
232
+ field.handleChange(newValue);
233
+ onValueChange?.(newValue);
234
+ };
235
+ const handleValueChangeEnd = (details) => {
236
+ const newValue = details.value[0] ?? min;
237
+ onValueChangeEnd?.(newValue);
238
+ };
239
+ return /* @__PURE__ */ jsxs(
240
+ Field.Root,
241
+ {
242
+ invalid: hasError,
243
+ required: resolved.required,
244
+ disabled: resolved.disabled,
245
+ readOnly: resolved.readOnly,
246
+ children: [
247
+ /* @__PURE__ */ jsxs(
248
+ Slider.Root,
249
+ {
250
+ value: arrayValue,
251
+ onValueChange: handleValueChange,
252
+ onValueChangeEnd: handleValueChangeEnd,
253
+ min,
254
+ max,
255
+ step,
256
+ orientation,
257
+ size,
258
+ variant,
259
+ colorPalette,
260
+ origin,
261
+ disabled: resolved.disabled,
262
+ readOnly: resolved.readOnly,
263
+ invalid: hasError,
264
+ thumbAlignment: "center",
265
+ onBlur: field.handleBlur,
266
+ "data-field-name": fullPath,
267
+ children: [
268
+ resolved.label && !showValue && /* @__PURE__ */ jsx(Slider.Label, { children: resolved.tooltip ? /* @__PURE__ */ jsxs(HStack, { gap: 1, children: [
269
+ /* @__PURE__ */ jsx("span", { children: resolved.label }),
270
+ /* @__PURE__ */ jsx(FieldTooltip, { ...resolved.tooltip })
271
+ ] }) : resolved.label }),
272
+ resolved.label && showValue && /* @__PURE__ */ jsxs(HStack, { justify: "space-between", children: [
273
+ /* @__PURE__ */ jsx(Slider.Label, { children: resolved.tooltip ? /* @__PURE__ */ jsxs(HStack, { gap: 1, children: [
274
+ /* @__PURE__ */ jsx("span", { children: resolved.label }),
275
+ /* @__PURE__ */ jsx(FieldTooltip, { ...resolved.tooltip })
276
+ ] }) : resolved.label }),
277
+ /* @__PURE__ */ jsx(Slider.ValueText, {})
278
+ ] }),
279
+ /* @__PURE__ */ jsxs(Slider.Control, { children: [
280
+ /* @__PURE__ */ jsx(Slider.Track, { children: /* @__PURE__ */ jsx(Slider.Range, {}) }),
281
+ /* @__PURE__ */ jsx(For, { each: arrayValue, children: (_, index) => /* @__PURE__ */ jsx(Slider.Thumb, { index, children: /* @__PURE__ */ jsx(Slider.HiddenInput, {}) }, index) }),
282
+ normalizedMarks && normalizedMarks.length > 0 && /* @__PURE__ */ jsx(Slider.MarkerGroup, { children: normalizedMarks.map((mark, index) => /* @__PURE__ */ jsxs(Slider.Marker, { value: mark.value, children: [
283
+ /* @__PURE__ */ jsx(Slider.MarkerIndicator, {}),
284
+ mark.label
285
+ ] }, index)) })
286
+ ] })
287
+ ]
288
+ }
289
+ ),
290
+ /* @__PURE__ */ jsx(FieldError, { hasError, errorMessage, helperText: resolved.helperText })
291
+ ]
292
+ }
293
+ );
294
+ }
295
+ });
296
+
297
+ export { FieldCurrency, FieldNumber, FieldNumberInput, FieldPercentage, FieldRating, FieldSlider };
298
+ //# sourceMappingURL=chunk-XKKJKYWZ.js.map
299
+ //# sourceMappingURL=chunk-XKKJKYWZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/declarative/form-fields/number/field-currency.tsx","../src/lib/declarative/form-fields/number/field-number.tsx","../src/lib/declarative/form-fields/number/field-number-input.tsx","../src/lib/declarative/form-fields/number/field-percentage.tsx","../src/lib/declarative/form-fields/number/field-rating.tsx","../src/lib/declarative/form-fields/number/field-slider.tsx"],"names":["jsx","jsxs","NumberInput","useMemo","Field","HStack"],"mappings":"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","file":"chunk-XKKJKYWZ.js","sourcesContent":["'use client'\n\nimport { NumberInput } from '@chakra-ui/react'\nimport { type ReactElement, useMemo } from 'react'\nimport type { CurrencyFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Currency - Currency input field\n *\n * Renders NumberInput with currency formatting (symbol and decimal part).\n *\n * @example Russian rubles (by default)\n * ```tsx\n * <Form.Field.Currency name=\"price\" label=\"Price\" />\n * ```\n *\n * @example US Dollars\n * ```tsx\n * <Form.Field.Currency name=\"amount\" label=\"Amount\" currency=\"USD\" />\n * ```\n *\n * @example Euro with currency code\n * ```tsx\n * <Form.Field.Currency\n * name=\"total\"\n * label=\"Total\"\n * currency=\"EUR\"\n * currencyDisplay=\"code\"\n * />\n * ```\n */\n/** Currency field state */\ninterface CurrencyFieldState {\n /** Memoized format options */\n formatOptions: Intl.NumberFormatOptions\n}\n\nexport const FieldCurrency = createField<CurrencyFieldProps, number | undefined, CurrencyFieldState>({\n displayName: 'FieldCurrency',\n\n useFieldState: (props) => {\n const { currency = 'RUB', currencyDisplay = 'symbol', decimalScale = 2 } = props\n\n // Memoize formatOptions at component top level\n const formatOptions = useMemo(\n () => ({\n style: 'currency' as const,\n currency,\n currencyDisplay,\n minimumFractionDigits: decimalScale,\n maximumFractionDigits: decimalScale,\n }),\n [currency, currencyDisplay, decimalScale]\n )\n\n return { formatOptions }\n },\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const value = field.state.value as number | undefined\n\n const { min, max, step = 0.01, size } = componentProps\n\n const { formatOptions } = fieldState\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <NumberInput.Root\n value={value?.toString() ?? ''}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n field.handleChange(Number.isNaN(num) ? undefined : num)\n }}\n onBlur={field.handleBlur}\n min={min}\n max={max}\n step={step}\n formatOptions={formatOptions}\n clampValueOnBlur\n size={size}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder} data-field-name={fullPath} />\n </NumberInput.Root>\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { NumberInput } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { NumberFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Number - Number input field\n *\n * Renders a Chakra NumberInput with automatic form integration and error display.\n *\n * Automatically extracts from Zod schema:\n * - `min` from `z.number().min(1)` → min={1}\n * - `max` from `z.number().max(100)` → max={100}\n * - `step` from `z.number().int()` → step={1}, or `z.number().multipleOf(0.5)` → step={0.5}\n * - `helperText` automatically generated from constraints (\"From 1 to 100\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example\n * ```tsx\n * <Form.Field.Number name=\"portions\" label=\"Portions\" />\n * // With z.number().min(1).max(100) automatically: min={1} max={100} helperText=\"From 1 to 100\"\n * ```\n */\nexport const FieldNumber = createField<NumberFieldProps, number | undefined>({\n displayName: 'FieldNumber',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const value = field.state.value as number | undefined\n const { constraints } = resolved\n\n // Props take priority over constraints\n const min = componentProps.min ?? constraints.number?.min\n const max = componentProps.max ?? constraints.number?.max\n const step = componentProps.step ?? constraints.number?.step\n\n // For optional fields do not pass min/max to NumberInput when value is empty,\n // otherwise Chakra will show invalid state for empty value\n const isOptional = resolved.required === false\n const isEmpty = value === undefined || value === null\n const shouldApplyMinMax = !isOptional || !isEmpty\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <NumberInput.Root\n value={value?.toString() ?? ''}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n field.handleChange(Number.isNaN(num) ? undefined : num)\n }}\n onBlur={field.handleBlur}\n min={shouldApplyMinMax ? min : undefined}\n max={shouldApplyMinMax ? max : undefined}\n step={step}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder} data-field-name={fullPath} inputMode=\"decimal\" />\n </NumberInput.Root>\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { NumberInput } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { NumberInputFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.NumberInput - Number field with extended options\n *\n * Extends base Number field with formatting, mouse wheel support, etc.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.NumberInput name=\"quantity\" label=\"Quantity\" min={1} max={100} />\n * ```\n *\n * @example With currency formatting\n * ```tsx\n * <Form.Field.NumberInput\n * name=\"price\"\n * label=\"Price\"\n * formatOptions={{ style: 'currency', currency: 'RUB' }}\n * />\n * ```\n *\n * @example With mouse wheel\n * ```tsx\n * <Form.Field.NumberInput name=\"count\" allowMouseWheel />\n * ```\n */\nexport const FieldNumberInput = createField<NumberInputFieldProps, number | undefined>({\n displayName: 'FieldNumberInput',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const value = field.state.value as number | undefined\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <NumberInput.Root\n value={value?.toString() ?? ''}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n field.handleChange(Number.isNaN(num) ? undefined : num)\n }}\n onBlur={field.handleBlur}\n min={componentProps.min}\n max={componentProps.max}\n step={componentProps.step}\n formatOptions={componentProps.formatOptions}\n allowMouseWheel={componentProps.allowMouseWheel}\n clampValueOnBlur={componentProps.clampValueOnBlur ?? true}\n spinOnPress={componentProps.spinOnPress ?? true}\n size={componentProps.size}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder} data-field-name={fullPath} inputMode=\"decimal\" />\n </NumberInput.Root>\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { NumberInput } from '@chakra-ui/react'\nimport { type ReactElement, useMemo } from 'react'\nimport type { PercentageFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Percentage - Percentage input field\n *\n * Renders NumberInput with percentage formatting and % symbol.\n * Value is stored as-is (50 = 50%), not as decimal fraction (0.5).\n *\n * @example Basic usage (0-100%)\n * ```tsx\n * <Form.Field.Percentage name=\"discount\" label=\"Discount\" />\n * ```\n *\n * @example With custom range\n * ```tsx\n * <Form.Field.Percentage name=\"margin\" label=\"Margin\" min={0} max={50} />\n * ```\n *\n * @example With decimals\n * ```tsx\n * <Form.Field.Percentage name=\"rate\" label=\"Rate\" decimalScale={2} step={0.1} />\n * ```\n */\n/** Percentage field state */\ninterface PercentageFieldState {\n /** Memoized format options */\n formatOptions: Intl.NumberFormatOptions\n}\n\nexport const FieldPercentage = createField<PercentageFieldProps, number | undefined, PercentageFieldState>({\n displayName: 'FieldPercentage',\n\n useFieldState: (props) => {\n const { decimalScale = 0 } = props\n\n // Use 'unit' style with percent to store whole numbers (50 = 50%)\n // Chakra's 'percent' style expects decimals (0.5 = 50%)\n const formatOptions = useMemo(\n () => ({\n style: 'unit' as const,\n unit: 'percent',\n unitDisplay: 'short' as const,\n minimumFractionDigits: decimalScale,\n maximumFractionDigits: decimalScale,\n }),\n [decimalScale]\n )\n\n return { formatOptions }\n },\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const value = field.state.value as number | undefined\n\n const { min = 0, max = 100, step = 1, size } = componentProps\n\n const { formatOptions } = fieldState\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <NumberInput.Root\n value={value?.toString() ?? ''}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n field.handleChange(Number.isNaN(num) ? undefined : num)\n }}\n onBlur={field.handleBlur}\n min={min}\n max={max}\n step={step}\n formatOptions={formatOptions}\n clampValueOnBlur\n size={size}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder} data-field-name={fullPath} />\n </NumberInput.Root>\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { Field, HStack, RatingGroup } from '@chakra-ui/react'\nimport type React from 'react'\nimport type { ReactElement, ReactNode } from 'react'\nimport type { BaseFieldProps } from '../../types'\nimport { createField, FieldError } from '../base'\nimport { FieldTooltip } from '../base/field-tooltip'\n\n/**\n * Props for Rating field\n */\nexport interface RatingFieldProps extends Omit<BaseFieldProps, 'placeholder'> {\n /** Number of rating elements (by default: 5) */\n count?: number\n /** Allow half values (by default: false) */\n allowHalf?: boolean\n /** Size: xs, sm, md, lg (by default: md) */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Color palette (by default: gray) */\n colorPalette?: 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'\n /** Custom icon (by default: star) */\n icon?: ReactNode\n /** Callback on value change */\n onValueChange?: (value: number) => void\n}\n\n/**\n * Form.Field.Rating - Star rating input field\n *\n * Renders Chakra RatingGroup with automatic form integration.\n * Form value is stored as number.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Rating name=\"rating\" label=\"Rating\" />\n * ```\n *\n * @example With custom count and color\n * ```tsx\n * <Form.Field.Rating\n * name=\"quality\"\n * label=\"Quality\"\n * count={10}\n * colorPalette=\"orange\"\n * />\n * ```\n *\n * @example With half values\n * ```tsx\n * <Form.Field.Rating\n * name=\"score\"\n * label=\"Score\"\n * allowHalf\n * size=\"lg\"\n * />\n * ```\n */\nexport const FieldRating = createField<RatingFieldProps, number>({\n displayName: 'FieldRating',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { count = 5, allowHalf = false, size = 'md', colorPalette, icon, onValueChange } = componentProps\n\n const value = (field.state.value as number) ?? 0\n\n const handleValueChange = (details: { value: number }) => {\n field.handleChange(details.value)\n onValueChange?.(details.value)\n }\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <RatingGroup.Root\n value={value}\n onValueChange={handleValueChange}\n count={count}\n allowHalf={allowHalf}\n size={size}\n colorPalette={colorPalette}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n data-field-name={fullPath}\n >\n {resolved.label && (\n <RatingGroup.Label>\n {resolved.tooltip ? (\n <HStack gap={1}>\n <span>{resolved.label}</span>\n <FieldTooltip {...resolved.tooltip} />\n </HStack>\n ) : (\n resolved.label\n )}\n </RatingGroup.Label>\n )}\n <RatingGroup.HiddenInput onBlur={field.handleBlur} />\n <RatingGroup.Control>\n {Array.from({ length: count }).map((_, index) => (\n <RatingGroup.Item key={index} index={index + 1}>\n <RatingGroup.ItemIndicator icon={icon as React.ReactElement | undefined} />\n </RatingGroup.Item>\n ))}\n </RatingGroup.Control>\n </RatingGroup.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, For, HStack, Slider } from '@chakra-ui/react'\nimport type { ReactElement, ReactNode } from 'react'\nimport type { BaseFieldProps, FieldTooltipMeta } from '../../types'\nimport { createField, FieldError } from '../base'\nimport { FieldTooltip } from '../base/field-tooltip'\n\n/**\n * Slider mark definition\n */\nexport interface SliderMark {\n /** Value on the scale */\n value: number\n /** Mark text */\n label?: ReactNode\n}\n\n/**\n * Props for Slider field\n */\nexport interface SliderFieldProps extends Omit<BaseFieldProps, 'placeholder'> {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n /** Minimum value (by default: 0) */\n min?: number\n /** Maximum value (by default: 100) */\n max?: number\n /** Step (by default: 1) */\n step?: number\n /** Show current value next to label */\n showValue?: boolean\n /** Orientation (by default: horizontal) */\n orientation?: 'horizontal' | 'vertical'\n /** Size (by default: md) */\n size?: 'sm' | 'md' | 'lg'\n /** Variant (by default: outline) */\n variant?: 'outline' | 'solid'\n /** Color palette */\n colorPalette?: 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'\n /** Marks on slider track */\n marks?: (number | SliderMark)[]\n /** Fill origin point (by default: start) */\n origin?: 'start' | 'center' | 'end'\n /** Callback on value change */\n onValueChange?: (value: number) => void\n /** Callback when drag ends */\n onValueChangeEnd?: (value: number) => void\n}\n\n/**\n * Form.Field.Slider - Slider field\n *\n * Renders Chakra Slider with automatic form integration.\n * Form value is stored as number.\n *\n * Automatically extracts from Zod schema:\n * - `min` from `z.number().min(1)` → min={1}\n * - `max` from `z.number().max(100)` → max={100}\n * - `step` from `z.number().int()` → step={1}, or `z.number().multipleOf(0.5)` → step={0.5}\n * - `helperText` automatically is generated from constraints (\"From 1 to 100\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Slider name=\"volume\" label=\"Volume\" />\n * ```\n *\n * @example With automatic constraints from Zod\n * ```tsx\n * // In schema: z.object({ rating: z.number().min(1).max(10) })\n * <Form.Field.Slider name=\"rating\" label=\"Rating\" showValue />\n * // Automatically: min={1} max={10} helperText=\"From 1 to 10\"\n * ```\n *\n * @example With marks\n * ```tsx\n * <Form.Field.Slider\n * name=\"rating\"\n * label=\"Rating\"\n * min={0}\n * max={100}\n * marks={[0, 25, 50, 75, 100]}\n * />\n * ```\n */\nexport const FieldSlider = createField<SliderFieldProps, number>({\n displayName: 'FieldSlider',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { constraints } = resolved\n\n // Props take priority over constraints, then defaults\n const min = componentProps.min ?? constraints.number?.min ?? 0\n const max = componentProps.max ?? constraints.number?.max ?? 100\n const step = componentProps.step ?? constraints.number?.step ?? 1\n\n const {\n showValue,\n orientation = 'horizontal',\n size = 'md',\n variant = 'outline',\n colorPalette,\n marks,\n origin,\n onValueChange,\n onValueChangeEnd,\n } = componentProps\n\n // Normalize marks to array of objects\n const normalizedMarks = marks?.map((mark) => (typeof mark === 'number' ? { value: mark, label: undefined } : mark))\n\n // Convert number to array for Slider\n const numValue = (field.state.value as number) ?? min\n const arrayValue = [numValue]\n\n const handleValueChange = (details: { value: number[] }) => {\n const newValue = details.value[0] ?? min\n field.handleChange(newValue)\n onValueChange?.(newValue)\n }\n\n const handleValueChangeEnd = (details: { value: number[] }) => {\n const newValue = details.value[0] ?? min\n onValueChangeEnd?.(newValue)\n }\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <Slider.Root\n value={arrayValue}\n onValueChange={handleValueChange}\n onValueChangeEnd={handleValueChangeEnd}\n min={min}\n max={max}\n step={step}\n orientation={orientation}\n size={size}\n variant={variant}\n colorPalette={colorPalette}\n origin={origin}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n invalid={hasError}\n thumbAlignment=\"center\"\n onBlur={field.handleBlur}\n data-field-name={fullPath}\n >\n {resolved.label && !showValue && (\n <Slider.Label>\n {resolved.tooltip ? (\n <HStack gap={1}>\n <span>{resolved.label}</span>\n <FieldTooltip {...resolved.tooltip} />\n </HStack>\n ) : (\n resolved.label\n )}\n </Slider.Label>\n )}\n {resolved.label && showValue && (\n <HStack justify=\"space-between\">\n <Slider.Label>\n {resolved.tooltip ? (\n <HStack gap={1}>\n <span>{resolved.label}</span>\n <FieldTooltip {...resolved.tooltip} />\n </HStack>\n ) : (\n resolved.label\n )}\n </Slider.Label>\n <Slider.ValueText />\n </HStack>\n )}\n <Slider.Control>\n <Slider.Track>\n <Slider.Range />\n </Slider.Track>\n <For each={arrayValue}>\n {(_, index) => (\n <Slider.Thumb key={index} index={index}>\n <Slider.HiddenInput />\n </Slider.Thumb>\n )}\n </For>\n {normalizedMarks && normalizedMarks.length > 0 && (\n <Slider.MarkerGroup>\n {normalizedMarks.map((mark, index) => (\n <Slider.Marker key={index} value={mark.value}>\n <Slider.MarkerIndicator />\n {mark.label}\n </Slider.Marker>\n ))}\n </Slider.MarkerGroup>\n )}\n </Slider.Control>\n </Slider.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n"]}
@@ -0,0 +1,5 @@
1
+ export { FieldCheckbox, FieldSwitch } from '../chunk-6QOPSQ3Z.js';
2
+ import '../chunk-HWVOFWAT.js';
3
+ import '../chunk-7FEQFDJ7.js';
4
+ //# sourceMappingURL=boolean.js.map
5
+ //# sourceMappingURL=boolean.js.map