@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.
- package/CHANGELOG.md +23 -0
- package/README.ru.md +304 -0
- package/chunk-6QOPSQ3Z.js +78 -0
- package/chunk-6QOPSQ3Z.js.map +1 -0
- package/chunk-GOELIS6T.js +849 -0
- package/chunk-GOELIS6T.js.map +1 -0
- package/chunk-HWVOFWAT.js +846 -0
- package/chunk-HWVOFWAT.js.map +1 -0
- package/chunk-KUNT5MSU.js +709 -0
- package/chunk-KUNT5MSU.js.map +1 -0
- package/chunk-M2PNAAIR.js +971 -0
- package/chunk-M2PNAAIR.js.map +1 -0
- package/chunk-PJETA6YN.js +821 -0
- package/chunk-PJETA6YN.js.map +1 -0
- package/chunk-XKKJKYWZ.js +299 -0
- package/chunk-XKKJKYWZ.js.map +1 -0
- package/fields/boolean.js +5 -0
- package/fields/boolean.js.map +1 -0
- package/fields/datetime.js +5 -0
- package/fields/datetime.js.map +1 -0
- package/fields/number.js +5 -0
- package/fields/number.js.map +1 -0
- package/fields/selection.js +5 -0
- package/fields/selection.js.map +1 -0
- package/fields/specialized.js +5 -0
- package/fields/specialized.js.map +1 -0
- package/fields/text.js +5 -0
- package/fields/text.js.map +1 -0
- package/index.js +159 -4602
- package/index.js.map +1 -1
- package/package.json +27 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/declarative/form-fields/datetime/field-date.tsx","../src/lib/declarative/form-fields/datetime/field-date-range.tsx","../src/lib/declarative/form-fields/datetime/field-datetime-picker.tsx","../src/lib/declarative/form-fields/datetime/field-duration.tsx","../src/lib/declarative/form-fields/datetime/field-schedule.tsx","../src/lib/declarative/form-fields/datetime/field-time.tsx"],"names":["jsx","Input","jsxs","Field","HStack","ScheduleContent","Box","Text","Button"],"mappings":"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","file":"chunk-KUNT5MSU.js","sourcesContent":["'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DateFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Date - Date input field\n *\n * Renders a native date input with automatic form integration and error display.\n *\n * Automatically extracts from Zod schema:\n * - `min` from `z.date().min(new Date('2024-01-01'))` → min=\"2024-01-01\"\n * - `max` from `z.date().max(new Date('2024-12-31'))` → max=\"2024-12-31\"\n * - `helperText` automatically is generated from constraints (\"From Jan 1, 2024 to Dec 31, 2024\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example\n * ```tsx\n * <Form.Field.Date name=\"birthDate\" label=\"Date of Birth\" />\n * ```\n *\n * @example With automatic constraints from Zod\n * ```tsx\n * // In schema: z.object({ eventDate: z.date().min(new Date('2024-01-01')).max(new Date('2024-12-31')) })\n * <Form.Field.Date name=\"eventDate\" label=\"Event Date\" />\n * // Automatically: min=\"2024-01-01\", max=\"2024-12-31\"\n * ```\n */\nexport const FieldDate = createField<DateFieldProps, string | Date>({\n displayName: 'FieldDate',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { constraints } = resolved\n\n // Handle Date objects by converting to YYYY-MM-DD string\n const rawValue = field.state.value\n let stringValue = ''\n if (rawValue instanceof Date) {\n stringValue = rawValue.toISOString().split('T')[0]\n } else if (typeof rawValue === 'string') {\n stringValue = rawValue\n }\n\n // Props take priority over constraints\n const min = componentProps.min ?? constraints.date?.min\n const max = componentProps.max ?? constraints.date?.max\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n type=\"date\"\n value={stringValue}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n min={min}\n max={max}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { Box, Button, Field, Flex, HStack, Input, Menu, Portal } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport { LuCalendar, LuChevronDown } from 'react-icons/lu'\nimport type { BaseFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Date range value type\n */\nexport interface DateRangeValue {\n start: string\n end: string\n}\n\n/**\n * Preset types for quick date range selection\n */\nexport type DateRangePreset = 'today' | 'yesterday' | 'thisWeek' | 'lastWeek' | 'thisMonth' | 'lastMonth' | 'thisYear'\n\n/**\n * Props for Form.Field.DateRange\n */\nexport interface DateRangeFieldProps extends BaseFieldProps {\n /** Label for start date */\n startLabel?: string\n /** Label for end date */\n endLabel?: string\n /** Placeholder for start date */\n startPlaceholder?: string\n /** Placeholder for end date */\n endPlaceholder?: string\n /** Minimum date (format YYYY-MM-DD) */\n min?: string\n /** Maximum date (format YYYY-MM-DD) */\n max?: string\n /** Enable preset buttons */\n presets?: DateRangePreset[]\n /** Date fields orientation */\n orientation?: 'horizontal' | 'vertical'\n /** Size */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\n/**\n * Get date range for preset\n */\nfunction getPresetRange(preset: DateRangePreset): DateRangeValue {\n const today = new Date()\n const formatDate = (d: Date) => d.toISOString().split('T')[0]\n\n switch (preset) {\n case 'today':\n return { start: formatDate(today), end: formatDate(today) }\n case 'yesterday': {\n const yesterday = new Date(today)\n yesterday.setDate(today.getDate() - 1)\n return { start: formatDate(yesterday), end: formatDate(yesterday) }\n }\n case 'thisWeek': {\n const startOfWeek = new Date(today)\n startOfWeek.setDate(today.getDate() - today.getDay() + 1) // Monday\n const endOfWeek = new Date(startOfWeek)\n endOfWeek.setDate(startOfWeek.getDate() + 6) // Sunday\n return { start: formatDate(startOfWeek), end: formatDate(endOfWeek) }\n }\n case 'lastWeek': {\n const startOfLastWeek = new Date(today)\n startOfLastWeek.setDate(today.getDate() - today.getDay() - 6) // Last Monday\n const endOfLastWeek = new Date(startOfLastWeek)\n endOfLastWeek.setDate(startOfLastWeek.getDate() + 6) // Last Sunday\n return { start: formatDate(startOfLastWeek), end: formatDate(endOfLastWeek) }\n }\n case 'thisMonth': {\n const startOfMonth = new Date(today.getFullYear(), today.getMonth(), 1)\n const endOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0)\n return { start: formatDate(startOfMonth), end: formatDate(endOfMonth) }\n }\n case 'lastMonth': {\n const startOfLastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n const endOfLastMonth = new Date(today.getFullYear(), today.getMonth(), 0)\n return { start: formatDate(startOfLastMonth), end: formatDate(endOfLastMonth) }\n }\n case 'thisYear': {\n const startOfYear = new Date(today.getFullYear(), 0, 1)\n const endOfYear = new Date(today.getFullYear(), 11, 31)\n return { start: formatDate(startOfYear), end: formatDate(endOfYear) }\n }\n }\n}\n\n/**\n * Get label for preset\n */\nfunction getPresetLabel(preset: DateRangePreset): string {\n switch (preset) {\n case 'today':\n return 'Today'\n case 'yesterday':\n return 'Yesterday'\n case 'thisWeek':\n return 'This week'\n case 'lastWeek':\n return 'Last week'\n case 'thisMonth':\n return 'This month'\n case 'lastMonth':\n return 'Last month'\n case 'thisYear':\n return 'This year'\n }\n}\n\n/**\n * Form.Field.DateRange - Date range selection with two fields\n *\n * Renders two date fields for range selection with optional presets.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.DateRange name=\"period\" label=\"Period\" />\n * ```\n *\n * @example With presets\n * ```tsx\n * <Form.Field.DateRange\n * name=\"period\"\n * label=\"Period\"\n * startLabel=\"From\"\n * endLabel=\"To\"\n * presets={['today', 'thisWeek', 'thisMonth']}\n * />\n * ```\n *\n * @example Vertical orientation\n * ```tsx\n * <Form.Field.DateRange\n * name=\"period\"\n * orientation=\"vertical\"\n * />\n * ```\n */\nexport const FieldDateRange = createField<DateRangeFieldProps, DateRangeValue>({\n displayName: 'FieldDateRange',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const {\n startLabel = 'Start',\n endLabel = 'End',\n startPlaceholder,\n endPlaceholder,\n min,\n max,\n presets,\n orientation = 'horizontal',\n size = 'md',\n } = componentProps\n\n const value = (field.state.value as DateRangeValue) ?? { start: '', end: '' }\n\n const handleStartChange = (newStart: string) => {\n field.handleChange({ ...value, start: newStart })\n }\n\n const handleEndChange = (newEnd: string) => {\n field.handleChange({ ...value, end: newEnd })\n }\n\n const handlePreset = (preset: DateRangePreset) => {\n field.handleChange(getPresetRange(preset))\n }\n\n const Container = orientation === 'horizontal' ? HStack : Box\n\n return (\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\n <Flex gap={2} direction={orientation === 'horizontal' ? 'row' : 'column'} align=\"stretch\" width=\"full\">\n <Container gap={2} flex={1} alignItems=\"flex-end\">\n {/* Start date */}\n <Box flex={1}>\n <Field.Root disabled={resolved.disabled} readOnly={resolved.readOnly}>\n <Field.Label fontSize=\"sm\" color=\"fg.muted\">\n {startLabel}\n </Field.Label>\n <Input\n type=\"date\"\n value={value.start}\n onChange={(e) => handleStartChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={startPlaceholder}\n min={min}\n max={value.end || max}\n size={size}\n data-field-name={`${fullPath}.start`}\n />\n </Field.Root>\n </Box>\n\n {/* End date */}\n <Box flex={1}>\n <Field.Root disabled={resolved.disabled} readOnly={resolved.readOnly}>\n <Field.Label fontSize=\"sm\" color=\"fg.muted\">\n {endLabel}\n </Field.Label>\n <Input\n type=\"date\"\n value={value.end}\n onChange={(e) => handleEndChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={endPlaceholder}\n min={value.start || min}\n max={max}\n size={size}\n data-field-name={`${fullPath}.end`}\n />\n </Field.Root>\n </Box>\n </Container>\n\n {/* Presets menu */}\n {presets && presets.length > 0 && !resolved.readOnly && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button variant=\"outline\" size={size} disabled={resolved.disabled}>\n <LuCalendar />\n Presets\n <LuChevronDown />\n </Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content>\n {presets.map((preset) => (\n <Menu.Item key={preset} value={preset} onClick={() => handlePreset(preset)}>\n {getPresetLabel(preset)}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n )}\n </Flex>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, HStack, Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DateTimePickerFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Parses a datetime string into separate date and time parts\n */\nfunction parseDateTime(value: string | undefined): { date: string; time: string } {\n if (!value) {\n return { date: '', time: '' }\n }\n\n // Handle ISO format: 2024-01-15T14:30:00\n const match = value.match(/^(\\d{4}-\\d{2}-\\d{2})(?:T(\\d{2}:\\d{2}))?/)\n if (match) {\n return { date: match[1], time: match[2] || '' }\n }\n\n return { date: '', time: '' }\n}\n\n/**\n * Combines date and time into an ISO datetime string\n */\nfunction combineDateTime(date: string, time: string): string {\n if (!date) {\n return ''\n }\n if (!time) {\n return date\n }\n return `${date}T${time}:00`\n}\n\n/**\n * Form.Field.DateTimePicker - Combined date and time picker\n *\n * Renders date and time fields that produce an ISO datetime string.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.DateTimePicker name=\"appointmentAt\" label=\"Appointment\" />\n * ```\n *\n * @example With min/max constraints\n * ```tsx\n * <Form.Field.DateTimePicker\n * name=\"eventAt\"\n * minDateTime={new Date()}\n * maxDateTime=\"2025-12-31T23:59\"\n * />\n * ```\n */\nexport const FieldDateTimePicker = createField<DateTimePickerFieldProps, string>({\n displayName: 'FieldDateTimePicker',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { minDateTime, maxDateTime, timeStep = 15 } = componentProps\n\n // Convert Date to string if needed\n const minDateTimeStr = minDateTime instanceof Date\n ? minDateTime.toISOString().slice(0, 16)\n : minDateTime?.slice(0, 16)\n const maxDateTimeStr = maxDateTime instanceof Date\n ? maxDateTime.toISOString().slice(0, 16)\n : maxDateTime?.slice(0, 16)\n\n const minDate = minDateTimeStr?.slice(0, 10)\n const maxDate = maxDateTimeStr?.slice(0, 10)\n\n const value = field.state.value as string | undefined\n const { date, time } = parseDateTime(value)\n\n const handleDateChange = (newDate: string) => {\n const combined = combineDateTime(newDate, time)\n field.handleChange(combined || undefined)\n }\n\n const handleTimeChange = (newTime: string) => {\n const combined = combineDateTime(date, newTime)\n field.handleChange(combined || undefined)\n }\n\n return (\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 <HStack gap={2}>\n <Input\n type=\"date\"\n value={date}\n onChange={(e) => handleDateChange(e.target.value)}\n onBlur={field.handleBlur}\n min={minDate}\n max={maxDate}\n data-field-name={`${fullPath}-date`}\n flex={1}\n />\n <Input\n type=\"time\"\n value={time}\n onChange={(e) => handleTimeChange(e.target.value)}\n onBlur={field.handleBlur}\n step={timeStep * 60}\n data-field-name={`${fullPath}-time`}\n width=\"150px\"\n />\n </HStack>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, HStack, NumberInput, Text } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DurationFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Converts minutes to HH:MM format\n */\nfunction minutesToHHMM(minutes: number): { hours: number; mins: number } {\n return {\n hours: Math.floor(minutes / 60),\n mins: minutes % 60,\n }\n}\n\n/**\n * Converts HH:MM to minutes\n */\nfunction hhmmToMinutes(hours: number, mins: number): number {\n return hours * 60 + mins\n}\n\n/**\n * Form.Field.Duration - Duration input field\n *\n * Renders duration field with hours and minutes or minutes only.\n * Value is stored as total number of minutes.\n *\n * @example HH:MM format (by default)\n * ```tsx\n * <Form.Field.Duration name=\"duration\" label=\"Duration\" />\n * ```\n *\n * @example Minutes only\n * ```tsx\n * <Form.Field.Duration name=\"duration\" format=\"minutes\" />\n * ```\n *\n * @example With min/max constraints\n * ```tsx\n * <Form.Field.Duration name=\"duration\" min={30} max={240} step={15} />\n * ```\n */\nexport const FieldDuration = createField<DurationFieldProps, number>({\n displayName: 'FieldDuration',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { format = 'HH:MM', min = 0, max = 1440, step = 15 } = componentProps\n\n const value = (field.state.value as number) ?? 0\n const { hours, mins } = minutesToHHMM(value)\n\n const handleHoursChange = (newHours: number) => {\n const newValue = hhmmToMinutes(newHours, mins)\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n const handleMinsChange = (newMins: number) => {\n const newValue = hhmmToMinutes(hours, newMins)\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n const handleMinutesChange = (newValue: number) => {\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n // Minutes only format\n if (format === 'minutes') {\n return (\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 <NumberInput.Root\n value={value.toString()}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleMinutesChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={min}\n max={max}\n step={step}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder ?? 'min'} data-field-name={fullPath} />\n </NumberInput.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n }\n\n // HH:MM format\n return (\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 <HStack gap={2}>\n <NumberInput.Root\n value={hours.toString()}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleHoursChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={0}\n max={Math.floor(max / 60)}\n width=\"80px\"\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input data-field-name={`${fullPath}-hours`} />\n </NumberInput.Root>\n <Text fontWeight=\"bold\">:</Text>\n <NumberInput.Root\n value={mins.toString().padStart(2, '0')}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleMinsChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={0}\n max={59}\n step={step}\n width=\"80px\"\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input data-field-name={`${fullPath}-mins`} />\n </NumberInput.Root>\n </HStack>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Box, Button, Field, HStack, Input, Stack, Text } from '@chakra-ui/react'\nimport type { AnyFieldApi } from '@tanstack/react-form'\nimport { memo, useCallback, useMemo, type ReactElement, type ReactNode } from 'react'\nimport type { BaseFieldProps, FieldTooltipMeta } from '../../types'\nimport { FieldError, FieldLabel, getFieldErrors, useResolvedFieldProps } from '../base'\n\n/**\n * Time slot\n */\nexport interface TimeSlot {\n open: string\n close: string\n}\n\n/**\n * Day schedule (null = day off)\n */\nexport type DaySchedule = TimeSlot | null\n\n/**\n * Weekly schedule\n */\nexport interface WeeklySchedule {\n monday: DaySchedule\n tuesday: DaySchedule\n wednesday: DaySchedule\n thursday: DaySchedule\n friday: DaySchedule\n saturday: DaySchedule\n sunday: DaySchedule\n}\n\n/**\n * Day of week\n */\nexport type DayOfWeek = keyof WeeklySchedule\n\n/**\n * Days configuration\n */\nconst DAYS_OF_WEEK: DayOfWeek[] = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']\n\nconst DEFAULT_DAY_NAMES: Record<DayOfWeek, string> = {\n monday: 'Monday',\n tuesday: 'Tuesday',\n wednesday: 'Wednesday',\n thursday: 'Thursday',\n friday: 'Friday',\n saturday: 'Saturday',\n sunday: 'Sunday',\n}\n\nconst DEFAULT_WORKING_HOURS: WeeklySchedule = {\n monday: { open: '09:00', close: '18:00' },\n tuesday: { open: '09:00', close: '18:00' },\n wednesday: { open: '09:00', close: '18:00' },\n thursday: { open: '09:00', close: '18:00' },\n friday: { open: '09:00', close: '18:00' },\n saturday: null,\n sunday: null,\n}\n\n/**\n * Constants for custom switch styling\n * Native checkbox used instead of Chakra Switch for RHF compatibility\n */\nconst SWITCH_STYLES = {\n /** Switch track width */\n trackWidth: '36px',\n /** Switch track height */\n trackHeight: '20px',\n /** Round indicator (thumb) size */\n thumbSize: '16px',\n /** Thumb offset from edge (2px each side for centering in 20px track) */\n thumbOffset: '2px',\n /** Thumb position in enabled state (trackWidth - thumbSize - thumbOffset = 36 - 16 - 2 = 18) */\n thumbEnabledLeft: '18px',\n} as const\n\n/**\n * Checks that end time is after start time\n */\nfunction isValidTimeRange(open: string, close: string): boolean {\n const [openH, openM] = open.split(':').map(Number)\n const [closeH, closeM] = close.split(':').map(Number)\n const openMinutes = openH * 60 + openM\n const closeMinutes = closeH * 60 + closeM\n return closeMinutes > openMinutes\n}\n\n/**\n * Internal component for rendering the schedule.\n * Extracted separately to comply with React hooks rules.\n */\ninterface ScheduleContentProps {\n field: AnyFieldApi\n schedule: WeeklySchedule\n defaultSchedule: WeeklySchedule\n days: DayOfWeek[]\n mergedDayNames: Record<DayOfWeek, string>\n showCopyToWeekdays: boolean\n offLabel: string\n copyToWeekdaysLabel: string\n defaultOpenTime: string\n defaultCloseTime: string\n disabled?: boolean\n readOnly?: boolean\n resolvedLabel?: ReactNode\n resolvedHelperText?: ReactNode\n resolvedRequired?: boolean\n resolvedTooltip?: FieldTooltipMeta\n fullPath: string\n}\n\nconst ScheduleContent = memo(function ScheduleContent({\n field,\n schedule,\n days,\n mergedDayNames,\n showCopyToWeekdays,\n offLabel,\n copyToWeekdaysLabel,\n defaultOpenTime,\n defaultCloseTime,\n disabled,\n readOnly,\n resolvedLabel,\n resolvedHelperText,\n resolvedRequired,\n resolvedTooltip,\n fullPath,\n}: ScheduleContentProps) {\n const { hasError, errorMessage } = getFieldErrors(field)\n\n // Check for invalid time ranges\n const invalidDays = useMemo(() => {\n const invalid: DayOfWeek[] = []\n for (const day of days) {\n const daySchedule = schedule[day]\n if (daySchedule && !isValidTimeRange(daySchedule.open, daySchedule.close)) {\n invalid.push(day)\n }\n }\n return invalid\n }, [schedule, days])\n\n const handleDayToggle = useCallback(\n (day: DayOfWeek, enabled: boolean) => {\n const newSchedule = {\n ...schedule,\n [day]: enabled ? { open: defaultOpenTime, close: defaultCloseTime } : null,\n }\n field.handleChange(newSchedule)\n },\n [schedule, field, defaultOpenTime, defaultCloseTime]\n )\n\n const handleTimeChange = useCallback(\n (day: DayOfWeek, timeField: 'open' | 'close', value: string) => {\n const current = schedule[day]\n if (!current) {\n return\n }\n const newSchedule = {\n ...schedule,\n [day]: { ...current, [timeField]: value },\n }\n field.handleChange(newSchedule)\n },\n [schedule, field]\n )\n\n const handleCopyToWeekdays = useCallback(() => {\n const mondaySchedule = schedule.monday\n if (!mondaySchedule) {\n return\n }\n const newSchedule = {\n ...schedule,\n monday: mondaySchedule,\n tuesday: mondaySchedule,\n wednesday: mondaySchedule,\n thursday: mondaySchedule,\n friday: mondaySchedule,\n }\n field.handleChange(newSchedule)\n }, [schedule, field])\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolvedRequired}\n disabled={disabled}\n readOnly={readOnly}\n data-field-name={fullPath}\n >\n <FieldLabel label={resolvedLabel} tooltip={resolvedTooltip} required={resolvedRequired} />\n\n <Stack gap={3}>\n {/* Warning about invalid ranges */}\n {invalidDays.length > 0 && (\n <Box p={3} bg=\"red.50\" borderWidth=\"1px\" borderColor=\"red.200\" borderRadius=\"md\">\n <Text color=\"red.600\" fontSize=\"sm\" fontWeight=\"medium\">\n End time must be after start time: {invalidDays.map((d) => mergedDayNames[d]).join(', ')}\n </Text>\n </Box>\n )}\n\n {/* Quick actions */}\n {showCopyToWeekdays && days.includes('monday') && (\n <HStack gap={2} flexWrap=\"wrap\">\n <Text fontSize=\"sm\" color=\"fg.muted\">\n Quick actions:\n </Text>\n <Button\n type=\"button\"\n size=\"xs\"\n variant=\"ghost\"\n colorPalette=\"blue\"\n onClick={handleCopyToWeekdays}\n disabled={disabled || readOnly || !schedule.monday}\n >\n {copyToWeekdaysLabel}\n </Button>\n </HStack>\n )}\n\n {/* Day list */}\n {days.map((day) => {\n const daySchedule = schedule[day]\n const isEnabled = daySchedule !== null && daySchedule !== undefined\n const dayHasError = invalidDays.includes(day)\n\n return (\n <Box\n key={day}\n data-day={day}\n p={3}\n bg={dayHasError ? 'red.50' : isEnabled ? 'bg.panel' : 'bg.muted'}\n borderRadius=\"md\"\n borderWidth={dayHasError ? '2px' : '1px'}\n borderColor={dayHasError ? 'red.300' : 'border.muted'}\n >\n <HStack justify=\"space-between\" flexWrap=\"wrap\" gap={3}>\n {/* Day and toggle */}\n <HStack gap={3} minW=\"140px\">\n {/* Native checkbox styled as switch */}\n <Box\n as=\"label\"\n display=\"inline-flex\"\n alignItems=\"center\"\n cursor={disabled || readOnly ? 'not-allowed' : 'pointer'}\n position=\"relative\"\n opacity={disabled || readOnly ? 0.4 : 1}\n >\n <input\n type=\"checkbox\"\n checked={isEnabled}\n onChange={(e) => handleDayToggle(day, e.target.checked)}\n disabled={disabled || readOnly}\n data-switch={day}\n style={{\n position: 'absolute',\n opacity: 0,\n width: 0,\n height: 0,\n }}\n />\n <Box\n w={SWITCH_STYLES.trackWidth}\n h={SWITCH_STYLES.trackHeight}\n bg={isEnabled ? 'green.500' : 'gray.300'}\n borderRadius=\"full\"\n position=\"relative\"\n transition=\"background 0.2s\"\n >\n <Box\n position=\"absolute\"\n top={SWITCH_STYLES.thumbOffset}\n left={isEnabled ? SWITCH_STYLES.thumbEnabledLeft : SWITCH_STYLES.thumbOffset}\n w={SWITCH_STYLES.thumbSize}\n h={SWITCH_STYLES.thumbSize}\n bg=\"white\"\n borderRadius=\"full\"\n transition=\"left 0.2s\"\n boxShadow=\"sm\"\n />\n </Box>\n </Box>\n <Text fontWeight=\"medium\" color={isEnabled ? 'fg' : 'fg.muted'}>\n {mergedDayNames[day]}\n </Text>\n </HStack>\n\n {/* Time fields */}\n {isEnabled ? (\n <HStack gap={2}>\n <Input\n type=\"time\"\n size=\"sm\"\n width=\"120px\"\n value={daySchedule?.open || defaultOpenTime}\n onChange={(e) => handleTimeChange(day, 'open', e.target.value)}\n disabled={disabled || readOnly}\n />\n <Text color=\"fg.muted\">—</Text>\n <Input\n type=\"time\"\n size=\"sm\"\n width=\"120px\"\n value={daySchedule?.close || defaultCloseTime}\n onChange={(e) => handleTimeChange(day, 'close', e.target.value)}\n disabled={disabled || readOnly}\n />\n </HStack>\n ) : (\n <Text fontSize=\"sm\" color=\"fg.muted\">\n {offLabel}\n </Text>\n )}\n </HStack>\n </Box>\n )\n })}\n </Stack>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolvedHelperText} />\n </Field.Root>\n )\n})\n\n/**\n * Props for Schedule field\n */\nexport interface ScheduleFieldProps extends Omit<BaseFieldProps, 'placeholder'> {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n\n /**\n * Custom day names (for localization)\n */\n dayNames?: Partial<Record<DayOfWeek, string>>\n\n /**\n * Default schedule when empty\n */\n defaultSchedule?: WeeklySchedule\n\n /**\n * Days to display (subset of all days)\n * @default all days\n */\n days?: DayOfWeek[]\n\n /**\n * Show \"copy to weekdays\" button\n * @default true\n */\n showCopyToWeekdays?: boolean\n\n /**\n * Text for \"day off\" state\n * @default 'Day off'\n */\n offLabel?: string\n\n /**\n * Copy to weekdays button text\n * @default 'Copy Mon to weekdays'\n */\n copyToWeekdaysLabel?: string\n\n /**\n * Default opening time when enabling a day\n */\n defaultOpenTime?: string\n\n /**\n * Default closing time when enabling a day\n */\n defaultCloseTime?: string\n}\n\n/**\n * Form.Field.Schedule - Weekly schedule editor\n *\n * Renders working hours schedule editor with toggles\n * and time fields for each day of the week.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Schedule\n * name=\"workingHours\"\n * label=\"Working hours\"\n * />\n * ```\n *\n * @example With custom day names\n * ```tsx\n * <Form.Field.Schedule\n * name=\"schedule\"\n * dayNames={{\n * monday: 'Mon',\n * tuesday: 'Tue',\n * // ...\n * }}\n * offLabel=\"Day off\"\n * copyToWeekdaysLabel=\"Copy Mon to weekdays\"\n * />\n * ```\n *\n * @example Weekdays only\n * ```tsx\n * <Form.Field.Schedule\n * name=\"hours\"\n * days={['monday', 'tuesday', 'wednesday', 'thursday', 'friday']}\n * />\n * ```\n */\nexport function FieldSchedule({\n name,\n label,\n helperText,\n required,\n disabled,\n readOnly,\n tooltip,\n dayNames = {},\n defaultSchedule = DEFAULT_WORKING_HOURS,\n days = DAYS_OF_WEEK,\n showCopyToWeekdays = true,\n offLabel = 'Day off',\n copyToWeekdaysLabel = 'Copy Mon to weekdays',\n defaultOpenTime = '09:00',\n defaultCloseTime = '18:00',\n}: ScheduleFieldProps): ReactElement {\n const {\n form,\n fullPath,\n label: resolvedLabel,\n helperText: resolvedHelperText,\n tooltip: resolvedTooltip,\n required: resolvedRequired,\n disabled: resolvedDisabled,\n readOnly: resolvedReadOnly,\n } = useResolvedFieldProps(name, { label, helperText, required, disabled, readOnly, tooltip })\n\n // Merge day names\n const mergedDayNames = { ...DEFAULT_DAY_NAMES, ...dayNames }\n\n return (\n <form.Field name={fullPath}>\n {(field: AnyFieldApi) => {\n const schedule: WeeklySchedule = (field.state.value as WeeklySchedule) || defaultSchedule\n\n return (\n <ScheduleContent\n field={field}\n schedule={schedule}\n defaultSchedule={defaultSchedule}\n days={days}\n mergedDayNames={mergedDayNames}\n showCopyToWeekdays={showCopyToWeekdays}\n offLabel={offLabel}\n copyToWeekdaysLabel={copyToWeekdaysLabel}\n defaultOpenTime={defaultOpenTime}\n defaultCloseTime={defaultCloseTime}\n disabled={resolvedDisabled}\n readOnly={resolvedReadOnly}\n resolvedLabel={resolvedLabel}\n resolvedHelperText={resolvedHelperText}\n resolvedRequired={resolvedRequired}\n resolvedTooltip={resolvedTooltip}\n fullPath={fullPath}\n />\n )\n }}\n </form.Field>\n )\n}\n","'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { TimeFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Time - Time input field\n *\n * Renders a native time input with automatic form integration and error display.\n *\n * @example\n * ```tsx\n * <Form.Field.Time name=\"startTime\" label=\"Start Time\" />\n * ```\n *\n * @example With step (seconds)\n * ```tsx\n * <Form.Field.Time name=\"duration\" label=\"Duration\" step={60} />\n * ```\n */\nexport const FieldTime = createField<TimeFieldProps, string>({\n displayName: 'FieldTime',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n type=\"time\"\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n min={componentProps.min}\n max={componentProps.max}\n step={componentProps.step}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n ),\n})\n"]}
|