2026-03-29 20:41:18 +07:00

18 lines
1.2 KiB
TypeScript

import { z } from "zod/v4";
import type { JSX } from "solid-js";
import type { ComponentMeta } from "../../meta";
export const NumberFieldRootPropsSchema = z.object({
value: z.number().optional().describe("Controlled numeric value"),
defaultValue: z.number().optional().describe("Initial value (uncontrolled). Defaults to 0"),
min: z.number().optional().describe("Minimum allowed value"),
max: z.number().optional().describe("Maximum allowed value"),
step: z.number().optional().describe("Step amount for increment/decrement. Defaults to 1"),
disabled: z.boolean().optional().describe("Whether the number field is disabled"),
required: z.boolean().optional().describe("Whether the field is required for form submission"),
});
export interface NumberFieldRootProps extends z.infer<typeof NumberFieldRootPropsSchema> { onValueChange?: (value: number) => void; children: JSX.Element; }
export const NumberFieldMeta: ComponentMeta = {
name: "NumberField", description: "Numeric input with increment/decrement buttons and keyboard support",
parts: ["Root", "Input", "IncrementTrigger", "DecrementTrigger", "Label", "Description", "ErrorMessage"] as const, requiredParts: ["Root", "Input"] as const,
} as const;