'use client'; import { useState } from 'react'; import { Trans, msg } from '@lingui/macro'; import { useLingui } from '@lingui/react'; import { ChevronDown, ChevronUp } from 'lucide-react'; import { validateNumberField } from '@documenso/lib/advanced-fields-validation/validate-number'; import { type TNumberFieldMeta as NumberFieldMeta } from '@documenso/lib/types/field-meta'; import { Button } from '@documenso/ui/primitives/button'; import { Input } from '@documenso/ui/primitives/input'; import { Label } from '@documenso/ui/primitives/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@documenso/ui/primitives/select'; import { Switch } from '@documenso/ui/primitives/switch'; import { numberFormatValues } from './constants'; type NumberFieldAdvancedSettingsProps = { fieldState: NumberFieldMeta; handleFieldChange: (key: keyof NumberFieldMeta, value: string | boolean) => void; handleErrors: (errors: string[]) => void; }; export const NumberFieldAdvancedSettings = ({ fieldState, handleFieldChange, handleErrors, }: NumberFieldAdvancedSettingsProps) => { const { _ } = useLingui(); const [showValidation, setShowValidation] = useState(false); const handleInput = (field: keyof NumberFieldMeta, value: string | boolean) => { const userValue = field === 'value' ? value : fieldState.value ?? 0; const userMinValue = field === 'minValue' ? Number(value) : Number(fieldState.minValue ?? 0); const userMaxValue = field === 'maxValue' ? Number(value) : Number(fieldState.maxValue ?? 0); const readOnly = field === 'readOnly' ? Boolean(value) : Boolean(fieldState.readOnly); const required = field === 'required' ? Boolean(value) : Boolean(fieldState.required); const numberFormat = field === 'numberFormat' ? String(value) : fieldState.numberFormat ?? ''; const fontSize = field === 'fontSize' ? Number(value) : Number(fieldState.fontSize ?? 14); const valueErrors = validateNumberField(String(userValue), { minValue: userMinValue, maxValue: userMaxValue, readOnly, required, numberFormat, fontSize, type: 'number', }); handleErrors(valueErrors); handleFieldChange(field, value); }; return (