@aspprev/versi-ds 0.5.3 → 0.5.4

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/input/Input.tsx","../src/components/field/FieldFrame.tsx","../src/components/field/field-styles.ts","../src/components/inputSelect/InputSelect.tsx","../src/utils/floating-panel-position.ts","../src/components/textArea/TextArea.tsx","../src/components/inputPhone/InputPhone.tsx","../src/components/countryFlag/CountryFlag.tsx","../src/data/country-flags-runtime.ts","../src/components/datePicker/UnifiedDatePicker.tsx","../src/components/datePicker/datePicker.tsx","../src/components/selectMulti/SelectMultiView.tsx","../src/components/selectMulti/SelectMulti.tsx","../src/components/selectCountry/SelectCountry.tsx","../src/components/radio-group/radio-group.tsx","../src/components/radioCardGroup/RadioCardGroup.tsx","../src/components/otp-code-input/OtpCodeInput.tsx"],"sourcesContent":["\"use client\";\nimport React, { useRef, useCallback, useId, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { IconBaseProps } from \"react-icons\";\nimport { PatternFormat, NumberFormatValues } from \"react-number-format\";\nimport { useField } from \"formik\";\nimport { MdInfoOutline, MdVisibility, MdVisibilityOff } from \"react-icons/md\";\nimport { mergeAriaDescribedBy } from \"../../utils/accessibility\";\nimport Tooltip from \"../tooltip/Tooltip\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport {\n FIELD_CONTROL_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_ERROR_CLASS,\n FIELD_INPUT_CLASS,\n} from \"../field/field-styles\";\n\nexport type InputMask =\n | \"cep\"\n | \"conta\"\n | \"currency\"\n | \"cpf\"\n | \"phone\"\n | \"date\"\n | \"datePicker\"\n | \"specialChars\"\n | \"cnpj\"\n | \"agencia\";\n\n/** Formats the current text without coupling the input to a domain field. */\nexport type InputFormatter = (value: string) => string;\n\nfunction getFormattedCaretPosition(\n rawValue: string,\n formattedValue: string,\n selectionStart: number | null,\n formatter: InputFormatter,\n sanitize: (value: string) => string,\n) {\n if (selectionStart === null) return null;\n if (selectionStart >= rawValue.length) return formattedValue.length;\n\n // Format the untouched suffix and anchor the caret immediately before it.\n // This keeps separators introduced by common formatters on the correct side\n // of the caret without prescribing a domain-specific mask contract.\n const formattedSuffix = sanitize(formatter(rawValue.slice(selectionStart)));\n return Math.max(\n 0,\n Math.min(formattedValue.length, formattedValue.length - formattedSuffix.length),\n );\n}\n\nfunction restoreCaretPosition(\n inputRef: React.RefObject<HTMLInputElement | null>,\n position: number | null,\n) {\n if (position === null || typeof window === \"undefined\") return;\n\n window.requestAnimationFrame(() => {\n const input = inputRef.current;\n if (!input || document.activeElement !== input) return;\n input.setSelectionRange(position, position);\n });\n}\n\nexport type InputProps = {\n name: string;\n label?: string;\n helperText?: string | React.ReactNode;\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n /** Existing named masks kept for compatibility. Prefer formatter for new masks. */\n mask?: InputMask;\n formatter?: InputFormatter;\n disabled?: boolean;\n error?: boolean;\n disallowSpaces?: boolean;\n leadIcon?: React.ComponentType<IconBaseProps>;\n endIcon?: React.ComponentType<IconBaseProps>;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nconst BaseInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>((props, ref) => (\n <input\n {...props}\n ref={ref}\n className={classNames(FIELD_INPUT_CLASS, props.className)}\n />\n));\nBaseInput.displayName = \"BaseInput\";\n\nfunction normalizeCurrencyDigits(value: unknown) {\n if (value === undefined || value === null) return \"\";\n return String(value).replace(/\\D/g, \"\");\n}\n\nfunction formatCurrencyAmount(value: number) {\n return value.toLocaleString(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n}\n\nfunction formatCurrencyDigitsForDisplay(value: unknown) {\n if (value === undefined || value === null || value === \"\") return \"\";\n\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return formatCurrencyAmount(value);\n }\n\n const stringValue = String(value).trim();\n\n if (!stringValue) return \"\";\n\n const digits = normalizeCurrencyDigits(stringValue);\n\n if (!digits) return \"\";\n\n const normalized = digits.padStart(3, \"0\");\n const integerPart = normalized.slice(0, -2).replace(/^0+(?=\\d)/, \"\") || \"0\";\n const decimalPart = normalized.slice(-2);\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\n\n return `${formattedInteger},${decimalPart}`;\n}\n\nfunction formatContaValue(value: string) {\n const upperValue = value.toUpperCase();\n const hasHyphen = upperValue.includes(\"-\");\n const [rawBody = \"\", rawDigit = \"\"] = upperValue.split(\"-\", 2);\n\n if (hasHyphen) {\n const bodySeed = rawBody.replace(/\\D/g, \"\");\n const suffixChars = rawDigit.replace(/[^0-9X]/g, \"\");\n const suffixBody = suffixChars.slice(0, -1).replace(/\\D/g, \"\");\n const body = `${bodySeed}${suffixBody}`.slice(0, 12);\n const digit = suffixChars.slice(-1);\n\n if (!body) return \"\";\n return digit ? `${body}-${digit}` : `${body}-`;\n }\n\n const compactDigits = upperValue.replace(/\\D/g, \"\").slice(0, 13);\n if (!compactDigits) return \"\";\n\n if (compactDigits.length <= 12) {\n return `${compactDigits}-`;\n }\n\n return `${compactDigits.slice(0, 12)}-${compactDigits.slice(12, 13)}`;\n}\n\nconst Input: React.FC<InputProps> = ({\n name,\n label,\n helperText,\n placeholder,\n prefix,\n suffix,\n mask,\n formatter,\n disabled,\n error,\n disallowSpaces,\n leadIcon: LeadIcon,\n endIcon: EndIcon,\n type,\n className,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const [hovered, setHovered] = useState(false);\n\n const isPasswordType = type === \"password\";\n const [showPassword, setShowPassword] = useState(false);\n const currentType = isPasswordType\n ? showPassword\n ? \"text\"\n : \"password\"\n : type;\n\n const hasError = Boolean((meta.touched && meta.error) || error);\n const inputId = rest.id ?? name;\n const errorId = `${inputId}-error`;\n const ariaDescribedBy = mergeAriaDescribedBy(\n rest[\"aria-describedby\"],\n hasError ? errorId : undefined,\n );\n const accessibilityProps = {\n id: inputId,\n \"aria-invalid\": hasError || undefined,\n \"aria-describedby\": ariaDescribedBy,\n };\n\n const safeValue = (v: unknown) =>\n v === undefined || v === null ? \"\" : (v as string | number);\n\n const sanitizeValue = useCallback(\n (value: string) => {\n if (!disallowSpaces) return value;\n return value.replace(/\\s/g, \"\");\n },\n [disallowSpaces],\n );\n\n const handlePasteFormik = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (!disallowSpaces) {\n rest.onPaste?.(e);\n return;\n }\n\n e.preventDefault();\n const pastedText = e.clipboardData.getData(\"text\");\n const sanitizedValue = sanitizeValue(pastedText);\n helpers.setValue(sanitizedValue);\n rest.onPaste?.(e);\n },\n [disallowSpaces, helpers, rest, sanitizeValue],\n );\n\n const handleValueChange = useCallback(\n (values: NumberFormatValues) => {\n helpers.setValue(values.value);\n },\n [helpers],\n );\n\n const handleCurrencyChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const formattedCurrencyValue = formatCurrencyDigitsForDisplay(\n e.target.value,\n );\n\n helpers.setValue(formattedCurrencyValue);\n\n if (rest.onChange) {\n const event = {\n ...e,\n target: { ...e.target, value: formattedCurrencyValue },\n currentTarget: {\n ...e.currentTarget,\n value: formattedCurrencyValue,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n rest.onChange(event);\n }\n },\n [helpers, rest],\n );\n\n const cleanSpecialChars = (value: string) => {\n if (!value) return \"\";\n let newValue = value;\n newValue = newValue.replace(/[áàãâä]/gi, \"a\");\n newValue = newValue.replace(/[éèêë]/gi, \"e\");\n newValue = newValue.replace(/[íìîï]/gi, \"i\");\n newValue = newValue.replace(/[óòõôö]/gi, \"o\");\n newValue = newValue.replace(/[úùûü]/gi, \"u\");\n newValue = newValue.replace(/[ç]/gi, \"c\");\n // Mantém a lista explícita de caracteres removidos para preservar o contrato legado.\n // eslint-disable-next-line no-useless-escape\n newValue = newValue.replace(/['\"`´@!#$%&¨()*;:?\\-_+={}\\[\\]\\\\\\/|<>.,]/g, \"\");\n return newValue;\n };\n\n const patternMasks: Record<string, string> = {\n cpf: \"###.###.###-##\",\n cnpj: \"##.###.###/####-##\",\n cep: \"#####-###\",\n phone: \"(##) #####-####\",\n date: \"##/##/####\",\n agencia: \"####\",\n };\n\n const renderMaskedInput = (inputType?: string) => {\n const autoCompleteValue = rest.autoComplete;\n\n if (formatter) {\n const currentValue = String(safeValue(field.value));\n return (\n <input\n {...rest}\n {...accessibilityProps}\n name={name}\n ref={inputRef}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={currentValue}\n onChange={(event) => {\n const rawValue = event.target.value;\n const formattedValue = sanitizeValue(formatter(rawValue));\n const caretPosition = getFormattedCaretPosition(\n rawValue,\n formattedValue,\n event.target.selectionStart,\n formatter,\n sanitizeValue,\n );\n helpers.setValue(formattedValue);\n restoreCaretPosition(inputRef, caretPosition);\n rest.onChange?.({\n ...event,\n target: { ...event.target, value: formattedValue },\n currentTarget: { ...event.currentTarget, value: formattedValue },\n });\n }}\n onBlur={field.onBlur}\n onPaste={handlePasteFormik}\n placeholder={placeholder}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"currency\") {\n const rawCurrencyValue =\n typeof field.value === \"string\" || typeof field.value === \"number\"\n ? field.value\n : \"\";\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n name={name}\n ref={inputRef}\n type=\"text\"\n inputMode=\"numeric\"\n value={formatCurrencyDigitsForDisplay(rawCurrencyValue)}\n onChange={handleCurrencyChange}\n onBlur={field.onBlur}\n placeholder={placeholder}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"specialChars\") {\n return (\n <input\n {...rest}\n {...accessibilityProps}\n {...field}\n name={name}\n ref={inputRef}\n placeholder={placeholder}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={String(safeValue(field.value))}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteFormik}\n onChange={(e) => {\n const cleanedValue = cleanSpecialChars(e.target.value);\n const sanitizedValue = sanitizeValue(cleanedValue);\n helpers.setValue(sanitizedValue);\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"datePicker\") {\n const dateValue = field.value\n ? typeof field.value === \"string\"\n ? field.value\n : field.value instanceof Date\n ? field.value.toLocaleDateString(\"pt-BR\")\n : String(field.value)\n : \"\";\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n {...field}\n name={name}\n ref={inputRef}\n placeholder={placeholder}\n type={inputType}\n value={dateValue}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteFormik}\n onChange={(e) => {\n const cleanedValue = cleanSpecialChars(e.target.value);\n const sanitizedValue = sanitizeValue(cleanedValue);\n helpers.setValue(sanitizedValue);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"conta\") {\n return (\n <input\n {...rest}\n {...accessibilityProps}\n name={name}\n ref={inputRef}\n placeholder={placeholder}\n maxLength={14}\n value={String(safeValue(field.value))}\n disabled={disabled}\n className={classNames(FIELD_INPUT_CLASS, className)}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.selectionStart === e.currentTarget.selectionEnd &&\n e.currentTarget.selectionStart === e.currentTarget.value.length &&\n e.currentTarget.value.endsWith(\"-\")\n ) {\n e.preventDefault();\n const nextValue = formatContaValue(\n e.currentTarget.value.slice(0, -2),\n );\n helpers.setValue(nextValue);\n return;\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteFormik}\n onChange={(e) => {\n const val = sanitizeValue(formatContaValue(e.target.value));\n e.target.value = val;\n e.currentTarget.value = val;\n helpers.setValue(val);\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n />\n );\n }\n\n if (mask && patternMasks[mask]) {\n const patternValue =\n typeof field.value === \"string\" || typeof field.value === \"number\"\n ? field.value\n : \"\";\n\n return (\n <PatternFormat\n {...rest}\n {...accessibilityProps}\n {...field}\n name={name}\n value={patternValue}\n defaultValue=\"\"\n getInputRef={inputRef}\n customInput={BaseInput}\n format={patternMasks[mask]}\n allowEmptyFormatting={false}\n mask=\"\"\n placeholder={placeholder}\n onValueChange={handleValueChange}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n {...field}\n name={name}\n ref={inputRef}\n placeholder={placeholder}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={String(safeValue(field.value))}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteFormik}\n onChange={(e) => {\n const sanitizedValue = sanitizeValue(e.target.value);\n helpers.setValue(sanitizedValue);\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n };\n\n return (\n <FieldFrame\n label={label}\n labelFor={inputId}\n invalid={Boolean(hasError)}\n message={meta.error}\n messageId={errorId}\n labelAdornment={\n helperText ? (\n <>\n <button\n ref={iconRef}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onFocus={() => setHovered(true)}\n onBlur={() => setHovered(false)}\n type=\"button\"\n aria-label={`Mais informações sobre ${label ?? name}`}\n className=\"rounded-sm pb-[3px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1\"\n >\n <MdInfoOutline aria-hidden=\"true\" className=\"mr-0 text-content-muted\" />\n </button>\n\n <Tooltip\n targetRef={iconRef}\n content={helperText}\n visible={hovered}\n preferredPosition=\"bottom\"\n />\n </>\n ) : undefined\n }\n >\n <div\n data-has-value={String(safeValue(field.value)).length > 0}\n className={classNames(\n FIELD_CONTROL_CLASS,\n {\n [FIELD_DISABLED_CLASS]: disabled,\n [FIELD_ERROR_CLASS]: hasError,\n },\n )}\n >\n {LeadIcon && (\n <LeadIcon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )}\n {prefix && <span>{prefix}</span>}\n {renderMaskedInput(currentType)}\n {suffix && <span>{suffix}</span>}\n\n {isPasswordType ? (\n <button\n type=\"button\"\n aria-label={showPassword ? \"Ocultar senha\" : \"Mostrar senha\"}\n aria-pressed={showPassword}\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"flex items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1\"\n >\n {showPassword ? (\n <MdVisibilityOff\n aria-hidden=\"true\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n ) : (\n <MdVisibility\n aria-hidden=\"true\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )}\n </button>\n ) : (\n EndIcon && (\n <EndIcon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )\n )}\n </div>\n </FieldFrame>\n );\n};\n\nexport default Input;\n\n// ==========================\n// Input sem Formik (standalone) com máscaras\n// ==========================\nexport type InputStandaloneProps = {\n label?: string;\n helperText?: string | React.ReactNode;\n prefix?: string;\n suffix?: string;\n /** Existing named masks kept for compatibility. Prefer formatter for new masks. */\n mask?: InputMask;\n formatter?: InputFormatter;\n disabled?: boolean;\n error?: boolean;\n errorText?: string;\n disallowSpaces?: boolean;\n leadIcon?: React.ComponentType<IconBaseProps>;\n endIcon?: React.ComponentType<IconBaseProps>;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const InputStandalone: React.FC<InputStandaloneProps> = (props) => {\n const {\n label,\n helperText,\n prefix,\n suffix,\n mask,\n formatter,\n disabled,\n error,\n errorText,\n disallowSpaces,\n leadIcon: LeadIcon,\n endIcon: EndIcon,\n type,\n className,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const [hovered, setHovered] = useState(false);\n\n const isPasswordType = type === \"password\";\n const [showPassword, setShowPassword] = useState(false);\n const currentType = isPasswordType\n ? showPassword\n ? \"text\"\n : \"password\"\n : type;\n\n const hasError = Boolean(error);\n const generatedInputId = useId();\n const inputId = rest.id ?? generatedInputId;\n const errorId = `${inputId}-error`;\n const ariaDescribedBy = mergeAriaDescribedBy(\n rest[\"aria-describedby\"],\n hasError && errorText ? errorId : undefined,\n );\n const accessibilityProps = {\n id: inputId,\n \"aria-invalid\": hasError || undefined,\n \"aria-describedby\": ariaDescribedBy,\n };\n\n const safeValue = (v: unknown) =>\n v === undefined || v === null ? \"\" : (v as string | number);\n\n const sanitizeValue = useCallback(\n (value: string) => {\n if (!disallowSpaces) return value;\n return value.replace(/\\s/g, \"\");\n },\n [disallowSpaces],\n );\n\n const handlePasteStandalone = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (!disallowSpaces) {\n rest.onPaste?.(e);\n return;\n }\n\n e.preventDefault();\n const pastedText = e.clipboardData.getData(\"text\");\n const sanitizedValue = sanitizeValue(pastedText);\n\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: sanitizedValue,\n },\n currentTarget: {\n ...e.currentTarget,\n value: sanitizedValue,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n\n rest.onChange?.(syntheticEvent);\n rest.onPaste?.(e);\n },\n [disallowSpaces, rest, sanitizeValue],\n );\n\n const cleanSpecialChars = (value: string) => {\n if (!value) return \"\";\n let newValue = value;\n newValue = newValue.replace(/[áàãâä]/gi, \"a\");\n newValue = newValue.replace(/[éèêë]/gi, \"e\");\n newValue = newValue.replace(/[íìîï]/gi, \"i\");\n newValue = newValue.replace(/[óòõôö]/gi, \"o\");\n newValue = newValue.replace(/[úùûü]/gi, \"u\");\n newValue = newValue.replace(/[ç]/gi, \"c\");\n // Mantém a lista explícita de caracteres removidos para preservar o contrato legado.\n // eslint-disable-next-line no-useless-escape\n newValue = newValue.replace(/['\"`´@!#$%&¨()*;:?\\-_+={}\\[\\]\\\\\\/|<>.,]/g, \"\");\n return newValue;\n };\n\n const patternMasks: Record<string, string> = {\n cpf: \"###.###.###-##\",\n cnpj: \"##.###.###/####-##\",\n cep: \"#####-###\",\n phone: \"(##) #####-####\",\n date: \"##/##/####\",\n agencia: \"####\",\n };\n\n const renderMaskedInput = (inputType?: string) => {\n const autoCompleteValue = rest.autoComplete;\n\n if (formatter) {\n const currentValue = String(safeValue(rest.value));\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={currentValue}\n onChange={(event) => {\n const rawValue = event.target.value;\n const formattedValue = sanitizeValue(formatter(rawValue));\n const caretPosition = getFormattedCaretPosition(\n rawValue,\n formattedValue,\n event.target.selectionStart,\n formatter,\n sanitizeValue,\n );\n restoreCaretPosition(inputRef, caretPosition);\n rest.onChange?.({\n ...event,\n target: { ...event.target, value: formattedValue },\n currentTarget: { ...event.currentTarget, value: formattedValue },\n });\n }}\n onPaste={handlePasteStandalone}\n placeholder={rest.placeholder}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"currency\") {\n const rawCurrencyValue =\n typeof rest.value === \"string\" || typeof rest.value === \"number\"\n ? rest.value\n : \"\";\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n type=\"text\"\n inputMode=\"numeric\"\n value={formatCurrencyDigitsForDisplay(rawCurrencyValue)}\n onChange={(e) => {\n if (rest.onChange) {\n const formattedCurrencyValue = formatCurrencyDigitsForDisplay(\n e.target.value,\n );\n const event = {\n target: { value: formattedCurrencyValue },\n currentTarget: { value: formattedCurrencyValue },\n } as React.ChangeEvent<HTMLInputElement>;\n rest.onChange(event);\n }\n }}\n placeholder={rest.placeholder}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"specialChars\") {\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n placeholder={rest.placeholder}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={String(safeValue(rest.value))}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteStandalone}\n onChange={(e) => {\n const cleaned = cleanSpecialChars(e.target.value);\n const sanitizedValue = sanitizeValue(cleaned);\n e.target.value = sanitizedValue;\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"datePicker\") {\n const dateValue = rest.value\n ? typeof rest.value === \"string\"\n ? rest.value\n : rest.value instanceof Date\n ? rest.value.toLocaleDateString(\"pt-BR\")\n : String(rest.value)\n : \"\";\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n placeholder={rest.placeholder}\n type={inputType}\n value={dateValue}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteStandalone}\n onChange={(e) => {\n const cleaned = cleanSpecialChars(e.target.value);\n const sanitizedValue = sanitizeValue(cleaned);\n e.target.value = sanitizedValue;\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n }\n\n if (mask === \"conta\") {\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n placeholder={rest.placeholder}\n maxLength={14}\n value={String(safeValue(rest.value))}\n disabled={disabled}\n className={classNames(FIELD_INPUT_CLASS, className)}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.selectionStart === e.currentTarget.selectionEnd &&\n e.currentTarget.selectionStart === e.currentTarget.value.length &&\n e.currentTarget.value.endsWith(\"-\")\n ) {\n e.preventDefault();\n const nextValue = formatContaValue(\n e.currentTarget.value.slice(0, -2),\n );\n e.currentTarget.value = nextValue;\n if (rest.onChange) {\n const event = {\n target: { value: nextValue },\n currentTarget: { value: nextValue },\n } as React.ChangeEvent<HTMLInputElement>;\n rest.onChange(event);\n }\n return;\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteStandalone}\n onChange={(e) => {\n const val = sanitizeValue(formatContaValue(e.target.value));\n e.target.value = val;\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n />\n );\n }\n\n if (mask && patternMasks[mask]) {\n const patternValue =\n typeof rest.value === \"string\" || typeof rest.value === \"number\"\n ? rest.value\n : \"\";\n\n return (\n <PatternFormat\n {...rest}\n {...accessibilityProps}\n value={patternValue}\n defaultValue=\"\"\n getInputRef={inputRef}\n customInput={BaseInput}\n format={patternMasks[mask]}\n allowEmptyFormatting={false}\n mask=\"\"\n placeholder={rest.placeholder}\n onValueChange={(values: NumberFormatValues) => {\n if (rest.onChange) {\n const event = {\n target: { value: values.value },\n } as React.ChangeEvent<HTMLInputElement>;\n rest.onChange(event);\n }\n }}\n className={classNames(FIELD_INPUT_CLASS, className)}\n autoComplete={autoCompleteValue}\n disabled={disabled}\n />\n );\n }\n\n return (\n <input\n {...rest}\n {...accessibilityProps}\n ref={inputRef}\n placeholder={rest.placeholder}\n type={inputType === \"date\" ? \"text\" : inputType}\n value={String(safeValue(rest.value))}\n onKeyDown={(e) => {\n if (disallowSpaces && e.key === \" \") {\n e.preventDefault();\n }\n rest.onKeyDown?.(e);\n }}\n onPaste={handlePasteStandalone}\n onChange={(e) => {\n const sanitizedValue = sanitizeValue(e.target.value);\n e.target.value = sanitizedValue;\n rest.onChange?.(e);\n }}\n autoComplete={autoCompleteValue}\n className={classNames(FIELD_INPUT_CLASS, className)}\n disabled={disabled}\n />\n );\n };\n\n return (\n <FieldFrame\n label={label}\n labelFor={inputId}\n invalid={Boolean(hasError)}\n message={errorText}\n messageId={errorId}\n labelAdornment={\n helperText ? (\n <>\n <button\n ref={iconRef}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onFocus={() => setHovered(true)}\n onBlur={() => setHovered(false)}\n type=\"button\"\n aria-label={`Mais informações sobre ${label ?? rest.name ?? \"este campo\"}`}\n className=\"rounded-sm pb-[3px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1\"\n >\n <MdInfoOutline aria-hidden=\"true\" className=\"mr-0 text-content-muted\" />\n </button>\n\n <Tooltip\n targetRef={iconRef}\n content={helperText}\n visible={hovered}\n preferredPosition=\"bottom\"\n />\n </>\n ) : undefined\n }\n >\n <div\n data-has-value={\n String(safeValue(rest.value ?? rest.defaultValue)).length > 0\n }\n className={classNames(\n FIELD_CONTROL_CLASS,\n {\n [FIELD_DISABLED_CLASS]: disabled,\n [FIELD_ERROR_CLASS]: hasError,\n },\n )}\n >\n {LeadIcon && (\n <LeadIcon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )}\n {prefix && <span>{prefix}</span>}\n\n {renderMaskedInput(currentType)}\n\n {suffix && <span>{suffix}</span>}\n\n {isPasswordType ? (\n <button\n type=\"button\"\n aria-label={showPassword ? \"Ocultar senha\" : \"Mostrar senha\"}\n aria-pressed={showPassword}\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"flex items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1\"\n >\n {showPassword ? (\n <MdVisibilityOff\n aria-hidden=\"true\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n ) : (\n <MdVisibility\n aria-hidden=\"true\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )}\n </button>\n ) : (\n EndIcon && (\n <EndIcon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n )\n )}\n </div>\n </FieldFrame>\n );\n};\n","import classNames from \"classnames\";\nimport { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport {\n FIELD_DESCRIPTION_CLASS,\n FIELD_LABEL_CLASS,\n FIELD_MESSAGE_CLASS,\n FIELD_ROOT_CLASS,\n} from \"./field-styles\";\n\nexport type FieldFrameProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & {\n children: ReactNode;\n label?: ReactNode;\n labelFor?: string;\n labelId?: string;\n labelAdornment?: ReactNode;\n description?: ReactNode;\n descriptionId?: string;\n message?: ReactNode;\n messageId?: string;\n invalid?: boolean;\n};\n\nconst FieldFrame = forwardRef<HTMLDivElement, FieldFrameProps>(\n function FieldFrame(\n {\n children,\n label,\n labelFor,\n labelId,\n labelAdornment,\n description,\n descriptionId,\n message,\n messageId,\n invalid = false,\n className,\n ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\n className={classNames(FIELD_ROOT_CLASS, className)}\n {...rest}\n >\n {(label || labelAdornment) && (\n <div className=\"field-label-slot flex flex-row items-end justify-between\">\n {label && (\n <label\n id={labelId}\n htmlFor={labelFor}\n className={FIELD_LABEL_CLASS}\n >\n {label}\n </label>\n )}\n {labelAdornment}\n </div>\n )}\n\n {children}\n\n {description !== undefined && description !== null && !invalid && (\n <span id={descriptionId} className={FIELD_DESCRIPTION_CLASS}>\n {description}\n </span>\n )}\n\n {message !== undefined && message !== null && invalid && (\n <span\n id={messageId}\n role=\"alert\"\n aria-live=\"polite\"\n className={FIELD_MESSAGE_CLASS}\n >\n {message}\n </span>\n )}\n </div>\n );\n },\n);\n\nFieldFrame.displayName = \"FieldFrame\";\n\nexport default FieldFrame;\n","export const FIELD_ROOT_CLASS =\n \"field-layout flex w-full min-w-0 flex-col leading-6\";\n\nexport const FIELD_LABEL_CLASS =\n \"field-label-slot px-0.5 text-md tracking-wide text-field-content\";\n\nexport const FIELD_CONTROL_CLASS =\n \"field-control-slot field-keyboard-focus-ring relative mt-4xs mb-[4px] flex min-h-control-md w-full min-w-0 items-center gap-3 rounded-sm border border-field-border-default bg-field-surface px-3 text-field-icon transition-colors focus-within:border-field-border-active focus-within:text-field-content data-[has-value=true]:text-field-content\";\n\nexport const FIELD_DISABLED_CLASS =\n \"cursor-not-allowed border-field-border-default bg-field-surface-disabled text-field-content-disabled focus-within:border-field-border-default\";\n\nexport const FIELD_ERROR_CLASS =\n \"border-field-border-error text-field-assistive-error focus-within:border-field-border-error\";\n\nexport const FIELD_MESSAGE_CLASS =\n \"field-message-slot text-xs tracking-wide text-field-assistive-error\";\n\nexport const FIELD_DESCRIPTION_CLASS =\n \"field-message-slot text-xs tracking-wide text-field-assistive\";\n\nexport const FIELD_INPUT_CLASS =\n \"w-full border-none bg-transparent text-field-content outline-none placeholder:text-field-placeholder focus:outline-none disabled:text-field-content-disabled disabled:placeholder:text-field-content-disabled\";\n\n","\"use client\";\nimport classNames from \"classnames\";\nimport { useField } from \"formik\";\nimport React, { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport { IconBaseProps } from \"react-icons\";\nimport { createPortal } from \"react-dom\";\nimport { calculateFloatingPanelRect } from \"../../utils/floating-panel-position\";\nimport { getFloatingLayerClass } from \"../../utils/floating-layer\";\nimport {\n MdInfoOutline,\n MdOutlineKeyboardArrowDown,\n MdOutlineKeyboardArrowUp,\n MdSearch,\n} from \"react-icons/md\";\nimport Tooltip from \"../tooltip/Tooltip\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport {\n FIELD_CONTROL_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_ERROR_CLASS,\n} from \"../field/field-styles\";\n\nexport type InputSelectOption = {\n label: string;\n value: string;\n};\n\nexport type InputSelectProps = {\n name: string;\n label?: string;\n helperText?: string | React.ReactNode;\n placeholder?: string;\n defaultValue?: InputSelectOption;\n options: InputSelectOption[];\n prefix?: string;\n suffix?: string;\n disabled?: boolean;\n error?: boolean;\n leadIcon?: React.ComponentType<IconBaseProps>;\n endIcon?: React.ComponentType<IconBaseProps>;\n searchable?: boolean;\n searchPlaceholder?: string;\n noOptionsText?: string;\n renderOption?: (option: InputSelectOption) => React.ReactNode;\n renderValue?: (\n option: InputSelectOption | null,\n placeholder?: string,\n ) => React.ReactNode;\n searchAccessor?: (option: InputSelectOption) => string;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">;\n\nconst InputSelect: React.FC<InputSelectProps> = ({\n name,\n label,\n helperText,\n placeholder,\n defaultValue,\n options,\n prefix,\n suffix,\n disabled,\n error,\n leadIcon: LeadIcon,\n endIcon: EndIcon,\n searchable,\n searchPlaceholder = \"Pesquisar...\",\n noOptionsText = \"Nenhuma opção encontrada\",\n renderOption,\n renderValue,\n searchAccessor,\n className,\n onChange,\n ...rest\n}) => {\n // Legacy props are intentionally consumed, rather than forwarded to the DOM.\n // They have never changed this component's rendering; retain that contract.\n void suffix;\n void error;\n const isSearchable = searchable ?? options.length > 10;\n\n const normalizeSearchText = (value: string) =>\n value\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase();\n\n const [field, meta, helpers] = useField(name!);\n const inputRef = useRef<HTMLButtonElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const iconRef = useRef<HTMLButtonElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const [hovered, setHovered] = useState(false);\n const [open, setOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [selectionAnnouncement, setSelectionAnnouncement] = useState(\"\");\n const [isMounted, setIsMounted] = useState(false);\n const rafRef = useRef<number | null>(null);\n const selectId = useId();\n const labelId = `${selectId}-label`;\n const listboxId = `${selectId}-listbox`;\n const resultsId = `${selectId}-results`;\n const valueDescriptionId = `${selectId}-value-description`;\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const updateDropdownPosition = useCallback(() => {\n if (open && inputRef.current) {\n const rect = inputRef.current.getBoundingClientRect();\n const dropdown = dropdownRef.current;\n\n if (!dropdown) return;\n\n const panelRect = calculateFloatingPanelRect({\n trigger: rect,\n panel: {\n width: rect.width,\n height: Math.min(dropdown.scrollHeight || 240, 240),\n },\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n });\n\n dropdown.style.top = `${panelRect.top}px`;\n dropdown.style.left = `${panelRect.left}px`;\n dropdown.style.width = `${panelRect.width}px`;\n dropdown.style.maxHeight = `${panelRect.maxHeight}px`;\n }\n }, [open]);\n\n useEffect(() => {\n if (!open) return;\n\n if (isSearchable) {\n searchInputRef.current?.focus({ preventScroll: true });\n return;\n }\n\n const selectedOptionElement =\n dropdownRef.current?.querySelector<HTMLElement>(\n '[role=\"option\"][aria-selected=\"true\"]',\n );\n const firstOptionElement =\n dropdownRef.current?.querySelector<HTMLElement>('[role=\"option\"]');\n\n (selectedOptionElement ?? firstOptionElement)?.focus({\n preventScroll: true,\n });\n }, [isSearchable, open]);\n\n useEffect(() => {\n if (!open) {\n setSearchTerm(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (open && dropdownRef.current) {\n updateDropdownPosition();\n }\n }, [open, updateDropdownPosition]);\n\n useEffect(() => {\n if (!open) return;\n\n const scheduleDropdownPosition = () => {\n if (rafRef.current != null) return;\n\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updateDropdownPosition();\n });\n };\n\n window.addEventListener(\"scroll\", scheduleDropdownPosition, true);\n window.addEventListener(\"resize\", scheduleDropdownPosition);\n\n return () => {\n if (rafRef.current != null) {\n window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n window.removeEventListener(\"scroll\", scheduleDropdownPosition, true);\n window.removeEventListener(\"resize\", scheduleDropdownPosition);\n };\n }, [open, updateDropdownPosition]);\n\n const selectedOption =\n options.find((o) => o.value === (field.value || defaultValue?.value)) ||\n null;\n\n const closeDropdown = useCallback((restoreFocus = false) => {\n setOpen(false);\n\n if (restoreFocus) {\n inputRef.current?.focus({ preventScroll: true });\n }\n }, []);\n\n const moveFocusFromTrigger = useCallback((backward: boolean) => {\n const trigger = inputRef.current;\n if (!trigger) return;\n\n const focusableElements = Array.from(\n document.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n ),\n ).filter(\n (element) =>\n !dropdownRef.current?.contains(element) &&\n element.getAttribute(\"aria-hidden\") !== \"true\" &&\n element.getClientRects().length > 0,\n );\n const triggerIndex = focusableElements.indexOf(trigger);\n const targetIndex = triggerIndex + (backward ? -1 : 1);\n\n focusableElements[targetIndex]?.focus({ preventScroll: true });\n }, []);\n\n const handleSelect = (value: string) => {\n const option = options.find((candidate) => candidate.value === value);\n\n helpers.setValue(value);\n helpers.setTouched(true);\n setSelectionAnnouncement(\n option ? `Selecionado: ${option.label}` : \"Seleção atualizada\",\n );\n\n if (onChange) {\n const syntheticEvent = {\n target: { value, name },\n currentTarget: { value, name },\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(syntheticEvent);\n }\n\n closeDropdown(true);\n };\n\n const handleBlur = useCallback(() => {\n helpers.setTouched(true);\n }, [helpers]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n inputRef.current &&\n !inputRef.current.contains(event.target as Node) &&\n (!dropdownRef.current ||\n !dropdownRef.current.contains(event.target as Node))\n ) {\n handleBlur();\n closeDropdown();\n }\n };\n\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [closeDropdown, handleBlur, open]);\n\n const hasError = meta.touched && meta.error;\n const errorId = `${selectId}-error`;\n const normalizedSearch = normalizeSearchText(searchTerm.trim());\n const filteredOptions = isSearchable\n ? options.filter((option) => {\n const label = normalizeSearchText(String(option.label || \"\"));\n const value = normalizeSearchText(String(option.value || \"\"));\n const extraSearch = normalizeSearchText(\n String(searchAccessor?.(option) || \"\"),\n );\n return (\n label.includes(normalizedSearch) ||\n value.includes(normalizedSearch) ||\n extraSearch.includes(normalizedSearch)\n );\n })\n : options;\n const resultAnnouncement =\n filteredOptions.length === 0\n ? noOptionsText\n : normalizedSearch\n ? filteredOptions.length === 1\n ? \"1 resultado encontrado\"\n : `${filteredOptions.length} resultados encontrados`\n : filteredOptions.length === 1\n ? \"1 opção disponível\"\n : `${filteredOptions.length} opções disponíveis`;\n const selectedValueDescription = selectedOption\n ? `Selecionado: ${selectedOption.label}`\n : placeholder\n ? `Nenhuma opção selecionada. ${placeholder}`\n : \"Nenhuma opção selecionada\";\n const triggerDescribedBy = [\n valueDescriptionId,\n hasError ? errorId : undefined,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const focusOption = (position: \"first\" | \"last\") => {\n const optionElements = Array.from(\n dropdownRef.current?.querySelectorAll<HTMLButtonElement>(\n '[role=\"option\"]',\n ) ?? [],\n );\n const option =\n position === \"first\"\n ? optionElements[0]\n : optionElements[optionElements.length - 1];\n\n option?.focus({ preventScroll: true });\n };\n\n const handleOptionKeyDown = (\n event: React.KeyboardEvent<HTMLButtonElement>,\n ) => {\n const optionElements = Array.from(\n dropdownRef.current?.querySelectorAll<HTMLButtonElement>(\n '[role=\"option\"]',\n ) ?? [],\n );\n const currentIndex = optionElements.indexOf(event.currentTarget);\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeDropdown(true);\n return;\n }\n\n if (event.key === \"Tab\") {\n event.preventDefault();\n closeDropdown();\n handleBlur();\n moveFocusFromTrigger(event.shiftKey);\n return;\n }\n\n if (\n event.key !== \"ArrowDown\" &&\n event.key !== \"ArrowUp\" &&\n event.key !== \"Home\" &&\n event.key !== \"End\"\n ) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === \"Home\") {\n optionElements[0]?.focus({ preventScroll: true });\n return;\n }\n\n if (event.key === \"End\") {\n optionElements[optionElements.length - 1]?.focus({\n preventScroll: true,\n });\n return;\n }\n\n const direction = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n (currentIndex + direction + optionElements.length) %\n optionElements.length;\n optionElements[nextIndex]?.focus({ preventScroll: true });\n };\n\n const selectedValueContent = renderValue ? (\n renderValue(selectedOption, placeholder)\n ) : (\n <span\n className={classNames(\"block w-full truncate overflow-hidden\", {\n \"text-field-placeholder\": !selectedOption && placeholder,\n })}\n >\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n );\n\n const dropdownContent =\n open && !disabled ? (\n <div\n ref={dropdownRef}\n className={`fixed ${getFloatingLayerClass(inputRef.current, \"popover\")} overflow-y-auto overflow-x-hidden overscroll-contain rounded-sm border border-field-border-default bg-field-surface text-field-content shadow-lg`}\n >\n {isSearchable && (\n <div className=\"sticky top-0 flex items-center gap-2 border-b border-field-border-default bg-field-surface p-2\">\n <MdSearch aria-hidden=\"true\" className=\"h-4 w-4 text-field-icon\" />\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={(event) => {\n if (event.key === \"Tab\") {\n event.preventDefault();\n closeDropdown();\n handleBlur();\n moveFocusFromTrigger(event.shiftKey);\n return;\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeDropdown(true);\n }\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n focusOption(\"first\");\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n focusOption(\"last\");\n }\n }}\n aria-label={`Pesquisar opções de ${label ?? name}`}\n aria-controls={listboxId}\n aria-describedby={resultsId}\n placeholder={searchPlaceholder}\n className=\"w-full bg-transparent text-sm text-field-content outline-none placeholder:text-field-placeholder\"\n />\n </div>\n )}\n {isSearchable && (\n <span\n id={resultsId}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {resultAnnouncement}\n </span>\n )}\n <div\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? labelId : undefined}\n >\n {filteredOptions.length === 0 ? (\n <div className=\"px-3 py-2 text-sm text-content-muted\">\n {noOptionsText}\n </div>\n ) : (\n filteredOptions.map((opc) => (\n <button\n key={opc.value}\n type=\"button\"\n role=\"option\"\n aria-selected={selectedOption?.value === opc.value}\n tabIndex={-1}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleSelect(opc.value)}\n onKeyDown={handleOptionKeyDown}\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-surface-muted focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-focus-ring\"\n >\n {renderOption ? renderOption(opc) : opc.label}\n </button>\n ))\n )}\n </div>\n </div>\n ) : null;\n\n return (\n <FieldFrame\n className={className}\n label={label}\n labelFor={selectId}\n labelId={label ? labelId : undefined}\n invalid={Boolean(hasError)}\n message={meta.error}\n messageId={errorId}\n labelAdornment={\n helperText ? (\n <>\n <button\n ref={iconRef}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onFocus={() => setHovered(true)}\n onBlur={() => setHovered(false)}\n type=\"button\"\n aria-label={`Mais informações sobre ${label ?? name}`}\n className=\"rounded-sm pb-[3px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1\"\n >\n <MdInfoOutline\n aria-hidden=\"true\"\n className=\"mr-0 text-content-muted\"\n />\n </button>\n\n <Tooltip\n targetRef={iconRef}\n content={helperText}\n visible={hovered}\n preferredPosition=\"bottom\"\n />\n </>\n ) : undefined\n }\n {...rest}\n >\n <button\n type=\"button\"\n id={selectId}\n name={name}\n ref={inputRef}\n data-has-value={Boolean(selectedOption)}\n role=\"combobox\"\n aria-controls={listboxId}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : (placeholder ?? name)}\n aria-invalid={Boolean(hasError) || undefined}\n aria-describedby={triggerDescribedBy}\n disabled={disabled}\n onBlur={() => !open && handleBlur()}\n onClick={() => setOpen((prev) => !prev)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setOpen((prev) => !prev);\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setOpen(true);\n }\n\n if (event.key === \"Escape\") {\n closeDropdown();\n }\n }}\n className={classNames(`${FIELD_CONTROL_CLASS} px-2`, {\n [FIELD_DISABLED_CLASS]: disabled,\n [FIELD_ERROR_CLASS]: hasError,\n \"cursor-pointer\": !disabled,\n })}\n >\n {LeadIcon && (\n <LeadIcon\n aria-hidden=\"true\"\n className={classNames(`h-5 w-5`, {\n \"text-field-assistive-error\": hasError,\n \"text-field-content\": !hasError && (open || selectedOption),\n \"text-field-content-disabled\": disabled,\n \"cursor-not-allowed\": disabled,\n \"cursor-pointer\": !disabled,\n })}\n />\n )}\n {prefix && <span>{prefix}</span>}\n\n <span\n className={classNames(\n \"flex-1 min-w-0 flex items-center justify-between leading-5\",\n \"bg-transparent text-field-content text-left\",\n {\n \"text-field-content-disabled\": disabled,\n \"cursor-not-allowed\": disabled,\n \"cursor-pointer\": !disabled,\n },\n )}\n >\n {selectedValueContent}\n </span>\n\n {EndIcon ? (\n <EndIcon\n aria-hidden=\"true\"\n className={classNames(`h-5 w-5`, {\n \"text-field-assistive-error\": hasError,\n \"text-field-content\": !hasError && (open || selectedOption),\n \"text-field-content-disabled\": disabled,\n \"cursor-not-allowed\": disabled,\n \"cursor-pointer\": !disabled,\n })}\n />\n ) : (\n <span\n className={classNames(\n \"flex items-center justify-center text-field-icon\",\n {\n \"text-field-assistive-error\": hasError,\n \"text-field-content\": !hasError && (open || selectedOption),\n \"text-field-content-disabled\": disabled,\n \"cursor-not-allowed\": disabled,\n \"cursor-pointer\": !disabled,\n },\n )}\n >\n {open ? (\n <MdOutlineKeyboardArrowUp\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n />\n ) : (\n <MdOutlineKeyboardArrowDown\n aria-hidden=\"true\"\n className=\"h-5 w-5\"\n />\n )}\n </span>\n )}\n </button>\n <span id={valueDescriptionId} className=\"sr-only\">\n {selectedValueDescription}\n </span>\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {selectionAnnouncement}\n </span>\n {isMounted && dropdownContent\n ? createPortal(dropdownContent, document.body)\n : null}\n </FieldFrame>\n );\n};\n\nexport default InputSelect;\n","export type FloatingPanelPlacement = \"top\" | \"bottom\" | \"viewport\";\n\ntype TriggerRect = {\n top: number;\n bottom: number;\n left: number;\n width: number;\n};\n\ntype PanelSize = {\n width: number;\n height: number;\n};\n\ntype ViewportSize = {\n width: number;\n height: number;\n};\n\ntype FloatingPanelPositionParams = {\n trigger: TriggerRect;\n panel: PanelSize;\n viewport: ViewportSize;\n gap?: number;\n margin?: number;\n};\n\nexport type FloatingPanelRect = {\n top: number;\n left: number;\n width: number;\n maxHeight: number;\n placement: FloatingPanelPlacement;\n};\n\nfunction clamp(value: number, minimum: number, maximum: number) {\n return Math.min(Math.max(value, minimum), Math.max(minimum, maximum));\n}\n\nexport function calculateFloatingPanelRect({\n trigger,\n panel,\n viewport,\n gap = 4,\n margin = 8,\n}: FloatingPanelPositionParams): FloatingPanelRect {\n const viewportWidth = Math.max(0, viewport.width - margin * 2);\n const viewportHeight = Math.max(0, viewport.height - margin * 2);\n const width = Math.min(Math.max(0, panel.width), viewportWidth);\n const desiredHeight = Math.min(Math.max(0, panel.height), viewportHeight);\n const spaceBelow = Math.max(\n 0,\n viewport.height - trigger.bottom - gap - margin,\n );\n const spaceAbove = Math.max(0, trigger.top - gap - margin);\n\n let top = margin;\n let placement: FloatingPanelPlacement = \"viewport\";\n\n if (spaceBelow >= desiredHeight) {\n top = trigger.bottom + gap;\n placement = \"bottom\";\n } else if (spaceAbove >= desiredHeight) {\n top = trigger.top - desiredHeight - gap;\n placement = \"top\";\n }\n\n return {\n top,\n left: clamp(trigger.left, margin, viewport.width - width - margin),\n width,\n maxHeight: desiredHeight,\n placement,\n };\n}\n","\"use client\";\n\nimport React, { useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { IconBaseProps } from \"react-icons\";\nimport { useField } from \"formik\";\nimport { mergeAriaDescribedBy } from \"../../utils/accessibility\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport {\n FIELD_CONTROL_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_ERROR_CLASS,\n FIELD_INPUT_CLASS,\n} from \"../field/field-styles\";\n\nexport type TextAreaProps = {\n name: string;\n label?: string;\n helperText?: string;\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n disabled?: boolean;\n icon?: React.ComponentType<IconBaseProps>;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst TextArea: React.FC<TextAreaProps> = ({\n name,\n label,\n helperText,\n className,\n placeholder,\n prefix,\n suffix,\n disabled,\n icon: Icon,\n ...rest\n}) => {\n const [field, meta] = useField(name);\n const componentRef = useRef<HTMLTextAreaElement>(null);\n\n const hasError = meta.touched && meta.error;\n const errorId = `${name}-error`;\n const descriptionId = `${name}-description`;\n const ariaDescribedBy = mergeAriaDescribedBy(\n rest[\"aria-describedby\"],\n helperText && !hasError ? descriptionId : undefined,\n hasError ? errorId : undefined,\n );\n\n return (\n <FieldFrame\n label={label}\n labelFor={name}\n description={helperText}\n descriptionId={descriptionId}\n message={meta.error}\n messageId={errorId}\n invalid={Boolean(hasError)}\n >\n <div\n data-has-value={String(field.value ?? \"\").length > 0}\n className={classNames(\n `${FIELD_CONTROL_CLASS} py-1`,\n {\n [FIELD_DISABLED_CLASS]: disabled,\n [FIELD_ERROR_CLASS]: hasError,\n },\n )}\n >\n {Icon && <Icon aria-hidden=\"true\" className=\"h-5 w-5\" />}\n {prefix && <span>{prefix}</span>}\n <textarea\n {...field}\n {...rest}\n id={name}\n aria-invalid={Boolean(hasError) || undefined}\n aria-describedby={ariaDescribedBy}\n ref={componentRef}\n placeholder={placeholder}\n disabled={disabled}\n className={classNames(FIELD_INPUT_CLASS, className)}\n />\n {suffix && <span>{suffix}</span>}\n </div>\n\n </FieldFrame>\n );\n};\n\nexport default TextArea;\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport {\n FIELD_DISABLED_CLASS,\n FIELD_ERROR_CLASS,\n FIELD_INPUT_CLASS,\n} from \"../field/field-styles\";\nimport { useField } from \"formik\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n MdOutlineKeyboardArrowDown,\n MdOutlineKeyboardArrowUp,\n MdSearch,\n} from \"react-icons/md\";\nimport { PatternFormat } from \"react-number-format\";\nimport { createPortal } from \"react-dom\";\nimport { calculateFloatingPanelRect } from \"../../utils/floating-panel-position\";\nimport { getFloatingLayerClass } from \"../../utils/floating-layer\";\nimport {\n filterCountryOptions,\n PHONE_COUNTRY_OPTIONS,\n} from \"../../data/country-metadata\";\nimport type { CountryListFilter } from \"../../data/country-metadata\";\nimport { CountryFlag } from \"../countryFlag/CountryFlag\";\n\nexport type PhoneCountryOption = {\n label: string;\n value: string;\n cca2: string;\n idd: {\n root: string;\n suffixes: string[];\n display: string;\n };\n flags?: {\n png?: string;\n svg?: string;\n alt?: string;\n };\n};\n\nexport type PhoneValue = {\n ddi: number;\n ddd: string;\n numero: string;\n};\n\ntype RawPhonePayload =\n | string\n | number\n | null\n | undefined\n | {\n ddi?: string | number | null;\n ddd?: string | number | null;\n numero?: string | number | null;\n };\n\nexport type InputPhoneProps = {\n name: string;\n label?: string;\n placeholder?: string;\n /** Lista base customizada. Quando omitida, usa todos os paises do pacote. */\n countries?: PhoneCountryOption[];\n /** Use `all` (padrao), `include` ou `exclude` com codigos ISO-2. */\n countryList?: CountryListFilter;\n disabled?: boolean;\n className?: string;\n /** Exibe a bandeira no input. A lista de países sempre mantém as bandeiras. Padrão: true. */\n showFlags?: boolean;\n};\n\nconst DEFAULT_BRAZIL_DDI = 55;\nconst DEFAULT_BRAZIL_CCA2 = \"BR\";\nconst phoneMasksByDdi: Record<string, string | null> = {\n \"1\": \"(###) ###-####\",\n \"31\": \"## ########\",\n \"32\": \"### ## ## ##\",\n \"44\": \"#### ######\",\n \"49\": null,\n \"51\": \"### ### ###\",\n \"55\": \"(##) #####-####\",\n \"58\": \"### #######\",\n \"351\": \"### ### ###\",\n};\n\nfunction normalizeDigits(value: string | number | null | undefined) {\n return String(value ?? \"\").replace(/\\D/g, \"\");\n}\n\nfunction normalizeSearchText(value: string) {\n return value\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase();\n}\n\nfunction toPhoneValue(value?: Partial<PhoneValue> | null): PhoneValue {\n return {\n ddi: Number(normalizeDigits(value?.ddi) || DEFAULT_BRAZIL_DDI),\n ddd: normalizeDigits(value?.ddd),\n numero: normalizeDigits(value?.numero),\n };\n}\n\nfunction getMaskForDdi(ddi: number) {\n return phoneMasksByDdi[normalizeDigits(ddi)] ?? null;\n}\n\nfunction getAreaCodeLength(mask: string | null) {\n if (!mask) return 0;\n\n const match = mask.match(/\\((#+)\\)/);\n return match ? match[1].length : 0;\n}\n\nfunction splitNationalNumber(localNumber: string, mask: string | null) {\n const digits = normalizeDigits(localNumber);\n const areaCodeLength = getAreaCodeLength(mask);\n\n if (!areaCodeLength) {\n return {\n ddd: \"\",\n numero: digits,\n };\n }\n\n return {\n ddd: digits.slice(0, areaCodeLength),\n numero: digits.slice(areaCodeLength),\n };\n}\n\nfunction getDialDigits(country?: PhoneCountryOption | null) {\n return normalizeDigits(country?.idd?.display);\n}\n\nfunction getCountryByDdi(countries: PhoneCountryOption[], ddi: number) {\n const normalizedDdi = Number(normalizeDigits(ddi));\n\n return (\n countries.find(\n (country) => Number(getDialDigits(country)) === normalizedDdi,\n ) ||\n countries.find((country) => country.cca2 === DEFAULT_BRAZIL_CCA2) ||\n countries[0] ||\n null\n );\n}\n\nfunction getCountriesByDialLength(countries: PhoneCountryOption[]) {\n return [...countries].sort((a, b) => {\n return getDialDigits(b).length - getDialDigits(a).length;\n });\n}\n\nfunction getExplicitCountryFromRawValue(\n rawValue: RawPhonePayload,\n countries: PhoneCountryOption[],\n) {\n if (typeof rawValue !== \"string\") return null;\n\n const trimmedValue = rawValue.trim();\n if (!trimmedValue || !/[^\\d]/.test(trimmedValue)) return null;\n\n return (\n getCountriesByDialLength(countries).find((country) => {\n const dialDigits = getDialDigits(country);\n if (!dialDigits) return false;\n\n const dialPattern = new RegExp(`^\\\\+?\\\\s*${dialDigits}(?=\\\\D|$)`);\n return dialPattern.test(trimmedValue);\n }) || null\n );\n}\n\nfunction parseStoredPhoneValue(\n rawValue: RawPhonePayload,\n countries: PhoneCountryOption[],\n): PhoneValue {\n if (rawValue && typeof rawValue === \"object\" && !Array.isArray(rawValue)) {\n return {\n ddi: Number(normalizeDigits(rawValue.ddi) || DEFAULT_BRAZIL_DDI),\n ddd: normalizeDigits(rawValue.ddd),\n numero: normalizeDigits(rawValue.numero),\n };\n }\n\n const digits = normalizeDigits(\n rawValue as string | number | null | undefined,\n );\n\n if (!digits) {\n return {\n ddi: DEFAULT_BRAZIL_DDI,\n ddd: \"\",\n numero: \"\",\n };\n }\n\n const explicitCountry = getExplicitCountryFromRawValue(rawValue, countries);\n if (explicitCountry) {\n const dialDigits = getDialDigits(explicitCountry);\n const localDigits = digits.slice(dialDigits.length);\n const local = splitNationalNumber(\n localDigits,\n getMaskForDdi(Number(dialDigits)),\n );\n\n return {\n ddi: Number(dialDigits),\n ...local,\n };\n }\n\n if (digits.length <= 11) {\n const local = splitNationalNumber(\n digits,\n getMaskForDdi(DEFAULT_BRAZIL_DDI),\n );\n return {\n ddi: DEFAULT_BRAZIL_DDI,\n ...local,\n };\n }\n\n const optionsByDialLength = getCountriesByDialLength(countries);\n\n const matchedCountry = optionsByDialLength.find((country) => {\n const dialDigits = getDialDigits(country);\n return (\n dialDigits &&\n digits.startsWith(dialDigits) &&\n digits.length > dialDigits.length + 4\n );\n });\n\n if (!matchedCountry) {\n const local = splitNationalNumber(\n digits,\n getMaskForDdi(DEFAULT_BRAZIL_DDI),\n );\n return {\n ddi: DEFAULT_BRAZIL_DDI,\n ...local,\n };\n }\n\n const dialDigits = getDialDigits(matchedCountry);\n const localDigits = digits.slice(dialDigits.length);\n const local = splitNationalNumber(\n localDigits,\n getMaskForDdi(Number(dialDigits)),\n );\n\n return {\n ddi: Number(dialDigits),\n ...local,\n };\n}\n\nexport function buildPhonePayload(\n phoneValue: PhoneValue | Partial<PhoneValue> | null | undefined,\n) {\n const normalized = toPhoneValue(phoneValue);\n const ddiDigits = normalizeDigits(normalized.ddi);\n const dddDigits = normalizeDigits(normalized.ddd);\n const numberDigits = normalizeDigits(normalized.numero);\n const phoneDigits = `${dddDigits}${numberDigits}`;\n\n if (!phoneDigits) {\n return \"\";\n }\n\n // return `${ddiDigits}${phoneDigits}`;\n return `${ddiDigits}-${dddDigits}-${numberDigits}`;\n}\n\nexport function parsePhonePayload(\n rawValue: RawPhonePayload,\n countries: PhoneCountryOption[] = PHONE_COUNTRY_OPTIONS,\n) {\n return parseStoredPhoneValue(rawValue, countries);\n}\n\nfunction renderFlag(option: PhoneCountryOption | null, showFlags: boolean) {\n if (!showFlags) return null;\n\n return (\n <CountryFlag\n cca2={option?.cca2}\n src={option?.flags?.svg}\n alt=\"\"\n className=\"h-5 w-7 shrink-0 object-contain\"\n />\n );\n}\n\nexport function InputPhone({\n name,\n label,\n placeholder,\n countries,\n countryList,\n disabled,\n className,\n showFlags = true,\n}: InputPhoneProps) {\n const availableCountries = useMemo(\n () =>\n filterCountryOptions(\n countries || PHONE_COUNTRY_OPTIONS,\n countryList,\n ) as PhoneCountryOption[],\n [countries, countryList],\n );\n const [field, meta, helpers] = useField<PhoneValue>(name);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const countryButtonRef = useRef<HTMLButtonElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const initializedRef = useRef(false);\n const [open, setOpen] = useState(false);\n const [selectedCountryCode, setSelectedCountryCode] = useState<string>();\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [dropdownPosition, setDropdownPosition] = useState<{\n top: number;\n left: number;\n width: number;\n maxHeight: number;\n } | null>(null);\n\n const value = useMemo(() => toPhoneValue(field.value), [field.value]);\n const selectedCountry = useMemo(\n () => availableCountries.find((country) => country.cca2 === selectedCountryCode &&\n Number(getDialDigits(country)) === value.ddi) || getCountryByDdi(availableCountries, value.ddi),\n [availableCountries, value.ddi, selectedCountryCode],\n );\n const phoneMask = getMaskForDdi(value.ddi);\n const phoneDigits = `${normalizeDigits(value.ddd)}${normalizeDigits(value.numero)}`;\n const normalizedSearch = normalizeSearchText(searchTerm.trim());\n const filteredCountries = useMemo(() => {\n return availableCountries.filter((country) => {\n const searchableText = [\n country.label,\n country.cca2,\n country.idd.display,\n getDialDigits(country),\n ]\n .join(\" \")\n .trim();\n\n return normalizeSearchText(searchableText).includes(normalizedSearch);\n });\n }, [availableCountries, normalizedSearch]);\n\n const getErrorMessage = useCallback(() => {\n if (!meta.touched || !meta.error) return \"\";\n if (typeof meta.error === \"string\") return meta.error;\n if (typeof meta.error === \"object\") {\n const phoneError = meta.error as { numero?: string; ddd?: string };\n return String(phoneError.numero || phoneError.ddd || \"\");\n }\n return \"\";\n }, [meta.error, meta.touched]);\n\n const errorMessage = getErrorMessage();\n const hasError = Boolean(errorMessage);\n const errorId = `${name}-error`;\n const dropdownId = `${name}-countries`;\n const isDropdownPositioned = dropdownPosition !== null;\n\n const updateDropdownPosition = useCallback(() => {\n const trigger = countryButtonRef.current;\n const dropdown = dropdownRef.current;\n if (!open || !trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const panelRect = calculateFloatingPanelRect({\n trigger: {\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n width: 220,\n },\n panel: {\n width: 220,\n height: Math.min(dropdown?.scrollHeight || 320, 320),\n },\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n });\n\n setDropdownPosition(panelRect);\n }, [open]);\n\n useEffect(() => {\n if (!open) {\n setSearchTerm(\"\");\n setDropdownPosition(null);\n return;\n }\n\n updateDropdownPosition();\n }, [open, updateDropdownPosition]);\n\n useEffect(() => {\n if (open && isDropdownPositioned) {\n searchInputRef.current?.focus({ preventScroll: true });\n }\n }, [isDropdownPositioned, open]);\n\n useEffect(() => {\n if (disabled) setOpen(false);\n }, [disabled]);\n\n useEffect(() => {\n if (!open) return;\n\n const scheduleDropdownPosition = () => updateDropdownPosition();\n window.addEventListener(\"resize\", scheduleDropdownPosition);\n window.addEventListener(\"scroll\", scheduleDropdownPosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", scheduleDropdownPosition);\n window.removeEventListener(\"scroll\", scheduleDropdownPosition, true);\n };\n }, [open, updateDropdownPosition]);\n\n useEffect(() => {\n if (initializedRef.current || availableCountries.length === 0) return;\n\n const parsed = parseStoredPhoneValue(\n field.value as RawPhonePayload,\n availableCountries,\n );\n helpers.setValue(parsed);\n initializedRef.current = true;\n }, [availableCountries, field.value, helpers]);\n\n useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n !wrapperRef.current?.contains(event.target as Node) &&\n !dropdownRef.current?.contains(event.target as Node)\n ) {\n setOpen(false);\n helpers.setTouched(true);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [helpers, open]);\n\n const setPhoneValue = (nextValue: Partial<PhoneValue>) => {\n helpers.setValue({\n ...value,\n ...nextValue,\n ddi: Number(\n normalizeDigits(nextValue.ddi ?? value.ddi) || DEFAULT_BRAZIL_DDI,\n ),\n ddd: normalizeDigits(nextValue.ddd ?? value.ddd),\n numero: normalizeDigits(nextValue.numero ?? value.numero),\n });\n };\n\n const dropdownLayerClass = getFloatingLayerClass(\n countryButtonRef.current,\n \"popover\",\n );\n const dropdownZClass =\n dropdownLayerClass === \"z-popover\" ? \"z-menu\" : dropdownLayerClass;\n\n return (\n <FieldFrame\n className={className}\n label={label}\n labelFor={name}\n invalid={Boolean(hasError)}\n message={errorMessage}\n messageId={errorId}\n >\n <div\n ref={wrapperRef}\n className=\"field-control-slot relative mt-4xs mb-[4px] flex w-full min-w-0\"\n >\n <div\n data-has-value={phoneDigits.length > 0}\n className={classNames(\n \"field-keyboard-focus-ring flex w-full min-w-0 min-h-control-md items-center overflow-hidden rounded-sm border border-field-border-default bg-field-surface text-field-icon transition-colors focus-within:border-field-border-active focus-within:text-field-content data-[has-value=true]:text-field-content\",\n {\n [FIELD_ERROR_CLASS]: hasError,\n [FIELD_DISABLED_CLASS]: disabled,\n },\n )}\n >\n <button\n ref={countryButtonRef}\n type=\"button\"\n aria-label={`Selecionar país de ${label || name}: ${selectedCountry?.label || \"\"} ${selectedCountry?.idd.display || `+${value.ddi}`}`}\n aria-haspopup=\"dialog\"\n aria-expanded={open && !disabled}\n aria-controls={open && !disabled ? dropdownId : undefined}\n disabled={disabled}\n onClick={() => setOpen((prev) => !prev)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setOpen(true);\n }\n }}\n onBlur={() => helpers.setTouched(true)}\n className={classNames(\n \"flex h-full items-center gap-1.5 pl-2 pr-1 text-left\",\n \"border-r border-field-border-default bg-transparent text-field-content focus:outline-none\",\n {\n \"cursor-pointer\": !disabled,\n \"cursor-not-allowed text-content-disabled\": disabled,\n },\n )}\n >\n {renderFlag(selectedCountry, showFlags)}\n <span className=\"text-sm\">\n {selectedCountry?.idd.display || `+${value.ddi}`}\n </span>\n {open ? (\n <MdOutlineKeyboardArrowUp\n className={classNames(\"h-4 w-4 shrink-0\", {\n \"text-field-assistive-error\": hasError,\n \"text-field-content\": !hasError,\n })}\n />\n ) : (\n <MdOutlineKeyboardArrowDown\n className={classNames(\"h-4 w-4 shrink-0\", {\n \"text-field-assistive-error\": hasError,\n \"text-field-content\": !hasError && phoneDigits.length > 0,\n \"text-field-icon\": !hasError && phoneDigits.length === 0,\n })}\n />\n )}\n </button>\n\n <div className=\"min-w-0 flex-1 pl-1 pr-3\">\n {phoneMask ? (\n <PatternFormat\n id={name}\n name={name}\n type=\"tel\"\n inputMode=\"tel\"\n aria-label={label ? undefined : name}\n aria-invalid={hasError || undefined}\n aria-describedby={hasError ? errorId : undefined}\n value={phoneDigits}\n format={phoneMask}\n allowEmptyFormatting={false}\n mask=\"\"\n placeholder={placeholder || phoneMask.replace(/#/g, \"9\")}\n disabled={disabled}\n className={FIELD_INPUT_CLASS}\n onBlur={() => helpers.setTouched(true)}\n onValueChange={(values) => {\n const areaCodeLength = getAreaCodeLength(phoneMask);\n const digits = normalizeDigits(values.value);\n setPhoneValue({\n ddd: areaCodeLength ? digits.slice(0, areaCodeLength) : \"\",\n numero: areaCodeLength\n ? digits.slice(areaCodeLength)\n : digits,\n });\n }}\n />\n ) : (\n <input\n id={name}\n name={name}\n aria-label={label ? undefined : name}\n aria-invalid={hasError || undefined}\n aria-describedby={hasError ? errorId : undefined}\n type=\"tel\"\n inputMode=\"numeric\"\n value={normalizeDigits(value.numero)}\n placeholder={placeholder || \"Digite o telefone\"}\n disabled={disabled}\n className={FIELD_INPUT_CLASS}\n onBlur={() => helpers.setTouched(true)}\n onChange={(event) =>\n setPhoneValue({ ddd: \"\", numero: event.target.value })\n }\n />\n )}\n </div>\n </div>\n\n {open &&\n !disabled &&\n dropdownPosition &&\n typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={dropdownRef}\n id={dropdownId}\n role=\"dialog\"\n aria-label={`Selecionar país de ${label || name}`}\n onKeyDown={(event) => {\n if (event.key === \"Escape\" || event.key === \"Tab\") {\n event.preventDefault();\n setOpen(false);\n helpers.setTouched(true);\n if (event.key === \"Escape\" || event.shiftKey) countryButtonRef.current?.focus();\n else document.getElementById(name)?.focus();\n return;\n }\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) return;\n if (event.target === searchInputRef.current && [\"Home\", \"End\"].includes(event.key)) return;\n const options = Array.from(dropdownRef.current?.querySelectorAll<HTMLButtonElement>(\"button\") || []);\n if (!options.length) return;\n event.preventDefault();\n const index = options.indexOf(document.activeElement as HTMLButtonElement);\n const next = event.key === \"Home\" ? 0 : event.key === \"End\" ? options.length - 1\n : event.key === \"ArrowDown\" ? (index + 1) % options.length\n : (index <= 0 ? options.length : index) - 1;\n options[next]?.focus();\n }}\n style={{\n top: dropdownPosition.top,\n left: dropdownPosition.left,\n width: dropdownPosition.width,\n maxHeight: dropdownPosition.maxHeight,\n }}\n className={classNames(\n \"fixed mt-1 overflow-hidden rounded-sm border border-field-border-default bg-field-surface shadow-lg\",\n dropdownZClass,\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-field-border-default bg-field-surface p-2\">\n <MdSearch className=\"h-4 w-4 text-field-icon\" />\n <input\n ref={searchInputRef}\n type=\"text\"\n aria-label=\"Pesquisar país ou DDI\"\n value={searchTerm}\n onChange={(event) => setSearchTerm(event.target.value)}\n placeholder=\"Busque um país ou DDI\"\n className=\"w-full bg-transparent text-sm text-field-content outline-none placeholder:text-field-placeholder\"\n />\n </div>\n\n <div className=\"max-h-60 overflow-y-auto\">\n {filteredCountries.length === 0 ? (\n <div role=\"status\" className=\"px-3 py-2 text-sm text-content-muted\">\n Nenhum DDI encontrado\n </div>\n ) : (\n filteredCountries.map((country) => (\n <button\n key={`${country.cca2}-${country.idd.display}`}\n type=\"button\"\n aria-pressed={selectedCountry?.cca2 === country.cca2}\n onClick={() => {\n setSelectedCountryCode(country.cca2);\n setPhoneValue({ ddi: Number(getDialDigits(country)) });\n helpers.setTouched(true);\n setOpen(false);\n countryButtonRef.current?.focus();\n }}\n className=\"flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-surface-muted focus-visible:bg-surface-muted focus-visible:outline focus-visible:outline-2 focus-visible:outline-focus-ring\"\n >\n {renderFlag(country, true)}\n <span className=\"min-w-0 flex-1 truncate text-field-content\">\n {country.label}\n </span>\n <span className=\"shrink-0 text-content-muted\">\n {country.idd.display}\n </span>\n </button>\n ))\n )}\n </div>\n </div>,\n document.body,\n )}\n </div>\n\n </FieldFrame>\n );\n}\n\n/** @deprecated Use InputPhone. */\nexport const PhoneInput = InputPhone;\n/** @deprecated Use InputPhoneCountryOption. */\nexport type InputPhoneCountryOption = PhoneCountryOption;\n/** @deprecated Use InputPhoneValue. */\nexport type InputPhoneValue = PhoneValue;\n/** @deprecated Use InputPhoneProps. */\nexport type PhoneInputProps = InputPhoneProps;\n\nexport default InputPhone;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport {\n getLoadedCountryFlagUrl,\n loadCountryFlags,\n} from \"../../data/country-flags-runtime\";\n\ntype CountryFlagProps = {\n cca2?: string | null;\n src?: string;\n alt?: string;\n className?: string;\n loading?: \"eager\" | \"lazy\";\n};\n\nexport function CountryFlag({\n cca2,\n src,\n alt = \"\",\n className,\n loading = \"lazy\",\n}: CountryFlagProps) {\n const normalizedSrc = src?.trim() || \"\";\n const [loadedSrc, setLoadedSrc] = useState(\n () => normalizedSrc || getLoadedCountryFlagUrl(cca2),\n );\n\n useEffect(() => {\n const immediateSrc = normalizedSrc || getLoadedCountryFlagUrl(cca2);\n if (immediateSrc) {\n setLoadedSrc(immediateSrc);\n return;\n }\n\n setLoadedSrc(\"\");\n\n let mounted = true;\n void loadCountryFlags().then(() => {\n if (mounted) setLoadedSrc(getLoadedCountryFlagUrl(cca2));\n });\n\n return () => {\n mounted = false;\n };\n }, [cca2, normalizedSrc]);\n\n if (!loadedSrc) {\n return <span aria-hidden=\"true\" className=\"h-5 w-7 shrink-0 rounded-sm bg-surface-muted\" />;\n }\n\n return (\n <img\n src={loadedSrc}\n alt={alt}\n aria-hidden={alt ? undefined : true}\n className={className}\n loading={loading}\n referrerPolicy=\"no-referrer\"\n />\n );\n}\n","export type CountryFlagMap = Record<string, string>;\n\nlet countryFlags: CountryFlagMap | null = null;\nlet countryFlagsPromise: Promise<CountryFlagMap> | null = null;\n\nexport function getLoadedCountryFlagUrl(cca2?: string | null) {\n const code = String(cca2 || \"\").trim().toLowerCase();\n return code && countryFlags ? countryFlags[code] || \"\" : \"\";\n}\n\n/**\n * Loads embedded flag data only when a country component needs to render it.\n * The JSON becomes an internal package chunk; no network request is involved.\n */\nexport function loadCountryFlags() {\n if (countryFlags) return Promise.resolve(countryFlags);\n if (!countryFlagsPromise) {\n countryFlagsPromise = Promise.all([\n import(\"./country-flag-chunks/flags-00.json\"),\n import(\"./country-flag-chunks/flags-01.json\"),\n import(\"./country-flag-chunks/flags-02.json\"),\n import(\"./country-flag-chunks/flags-03.json\"),\n import(\"./country-flag-chunks/flags-04.json\"),\n import(\"./country-flag-chunks/flags-05.json\"),\n import(\"./country-flag-chunks/flags-06.json\"),\n import(\"./country-flag-chunks/flags-07.json\"),\n import(\"./country-flag-chunks/flags-08.json\"),\n import(\"./country-flag-chunks/flags-09.json\"),\n import(\"./country-flag-chunks/flags-10.json\"),\n import(\"./country-flag-chunks/flags-11.json\"),\n import(\"./country-flag-chunks/flags-12.json\"),\n import(\"./country-flag-chunks/flags-13.json\"),\n import(\"./country-flag-chunks/flags-14.json\"),\n import(\"./country-flag-chunks/flags-15.json\"),\n import(\"./country-flag-chunks/flags-16.json\"),\n import(\"./country-flag-chunks/flags-17.json\"),\n import(\"./country-flag-chunks/flags-18.json\"),\n import(\"./country-flag-chunks/flags-19.json\"),\n ]).then((modules) => {\n const mergedFlags = Object.assign(\n {},\n ...modules.map((module) => module.default as CountryFlagMap),\n ) as CountryFlagMap;\n countryFlags = mergedFlags;\n return mergedFlags;\n });\n }\n return countryFlagsPromise;\n}\n","\"use client\";\n\nimport { getFloatingLayerClass } from \"../../utils/floating-layer\";\nimport { calculateFloatingPanelRect } from \"../../utils/floating-panel-position\";\nimport classNames from \"classnames\";\nimport {\n addMonths,\n addYears,\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isToday,\n isValid,\n parse,\n startOfDay,\n startOfMonth,\n startOfWeek,\n subMonths,\n} from \"date-fns\";\nimport { ptBR } from \"date-fns/locale/pt-BR\";\nimport { FormikContext, FormikContextType, getIn } from \"formik\";\nimport React, {\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { MdCalendarMonth, MdChevronLeft, MdChevronRight } from \"react-icons/md\";\nimport { mergeAriaDescribedBy } from \"../../utils/accessibility\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport {\n FIELD_CONTROL_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_ERROR_CLASS,\n FIELD_INPUT_CLASS,\n} from \"../field/field-styles\";\n\ntype ViewMode = \"days\" | \"months\" | \"years\";\nexport type DatePickerNavigationVariant = \"drilldown\" | \"dropdown\";\nexport type DatePickerSelectionMode = \"day\" | \"month\" | \"year\";\n\nexport interface UnifiedDatePickerProps {\n value?: Date | string | null;\n label?: string;\n onChange?: (date: Date | null) => void;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n placeholder?: string;\n minDate?: Date;\n maxDate?: Date;\n /** @deprecated Use `disabled`. Kept as a compatibility alias. */\n isDisabled?: boolean;\n disabled?: boolean;\n name?: string;\n error?: boolean;\n errorText?: string;\n helperText?: string | React.ReactNode;\n navigationVariant?: DatePickerNavigationVariant;\n selectionMode?: DatePickerSelectionMode;\n showAdjacentDays?: boolean;\n /** Accessible name used when no visible label is provided. */\n ariaLabel?: string;\n className?: string;\n}\n\nconst WEEKDAYS = [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"];\nconst CALENDAR_WIDTH = 256;\nconst VIEWPORT_MARGIN = 8;\nconst CALENDAR_GAP = 4;\nconst MONTHS = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nconst formatDateForInput = (\n date: Date | null,\n selectionMode: DatePickerSelectionMode = \"day\",\n) => {\n if (!date || !isValid(date)) return \"\";\n return format(\n date,\n selectionMode === \"year\"\n ? \"yyyy\"\n : selectionMode === \"month\"\n ? \"MM/yyyy\"\n : \"dd/MM/yyyy\",\n );\n};\n\nconst formatInputValue = (\n value: string,\n selectionMode: DatePickerSelectionMode = \"day\",\n) => {\n const digits = value\n .replace(/\\D/g, \"\")\n .slice(0, selectionMode === \"year\" ? 4 : selectionMode === \"month\" ? 6 : 8);\n if (selectionMode === \"year\") return digits;\n if (selectionMode === \"month\") {\n if (digits.length <= 2) return digits;\n return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n }\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n};\n\nconst parseDateValue = (\n value: unknown,\n selectionMode: DatePickerSelectionMode = \"day\",\n): Date | null => {\n if (!value) return null;\n\n if (value instanceof Date) {\n return isValid(value) ? value : null;\n }\n\n if (typeof value === \"string\") {\n const trimmedValue = value.trim();\n if (!trimmedValue) return null;\n\n if (selectionMode === \"year\" && /^\\d{4}$/.test(trimmedValue)) {\n const year = Number(trimmedValue);\n const parsedYear = new Date(year, 0, 1);\n return isValid(parsedYear) && parsedYear.getFullYear() === year\n ? parsedYear\n : null;\n }\n\n if (selectionMode === \"month\") {\n const monthMatch = /^(\\d{2})\\/(\\d{4})$/.exec(trimmedValue);\n if (monthMatch) {\n const month = Number(monthMatch[1]);\n const year = Number(monthMatch[2]);\n if (month < 1 || month > 12) return null;\n const parsedMonth = new Date(year, month - 1, 1);\n return isValid(parsedMonth) && parsedMonth.getFullYear() === year\n ? parsedMonth\n : null;\n }\n }\n\n const parsedPtBr = parse(trimmedValue, \"dd/MM/yyyy\", new Date());\n if (\n isValid(parsedPtBr) &&\n format(parsedPtBr, \"dd/MM/yyyy\") === trimmedValue\n ) {\n return parsedPtBr;\n }\n\n const nativeDate = new Date(trimmedValue);\n return isValid(nativeDate) ? nativeDate : null;\n }\n\n return null;\n};\n\nconst getSafeViewDate = (date: Date | null) =>\n date && isValid(date) ? date : new Date();\n\nconst UnifiedDatePicker: React.FC<UnifiedDatePickerProps> = ({\n value,\n onChange,\n onBlur,\n label,\n placeholder,\n minDate = addYears(new Date(), -120),\n maxDate = addYears(new Date(), 120),\n isDisabled = false,\n disabled = false,\n name = \"data\",\n error,\n errorText,\n helperText,\n navigationVariant = \"drilldown\",\n selectionMode = \"day\",\n showAdjacentDays = true,\n ariaLabel,\n className,\n}) => {\n const formik = useContext(\n FormikContext as React.Context<\n FormikContextType<Record<string, unknown>> | undefined\n >,\n );\n const hasFormikField = Boolean(formik && name);\n\n const formikRawValue = hasFormikField && formik\n ? getIn(formik.values, name)\n : undefined;\n const selectedDate = useMemo(\n () =>\n parseDateValue(\n hasFormikField ? formikRawValue : value,\n selectionMode,\n ),\n [formikRawValue, hasFormikField, selectionMode, value],\n );\n\n const formikTouched = hasFormikField && formik\n ? Boolean(getIn(formik.touched, name))\n : false;\n const formikError = hasFormikField && formik ? getIn(formik.errors, name) : undefined;\n\n const isFieldDisabled = disabled || isDisabled;\n const resolvedPlaceholder =\n placeholder ??\n (selectionMode === \"year\"\n ? \"aaaa\"\n : selectionMode === \"month\"\n ? \"mm/aaaa\"\n : \"dd/mm/aaaa\");\n const [isOpen, setIsOpen] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n const [draftValue, setDraftValue] = useState(\n formatDateForInput(selectedDate, selectionMode),\n );\n const [viewDate, setViewDate] = useState<Date>(getSafeViewDate(selectedDate));\n const [mode, setMode] = useState<ViewMode>(\n selectionMode === \"year\"\n ? \"years\"\n : selectionMode === \"month\"\n ? \"months\"\n : \"days\",\n );\n const [inputError, setInputError] = useState<string | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const calendarId = `date-picker-${useId()}`;\n const wasOpenRef = useRef(false);\n const skipFocusRestoreRef = useRef(false);\n const suppressOpenOnFocusRef = useRef(false);\n const rafRef = useRef<number | null>(null);\n const [isMounted, setIsMounted] = useState(false);\n const [panelNeedsScroll, setPanelNeedsScroll] = useState(false);\n const [dropdownStyle, setDropdownStyle] = useState<React.CSSProperties>({});\n\n useEffect(() => {\n if (\n wasOpenRef.current &&\n !isOpen &&\n !skipFocusRestoreRef.current &&\n dropdownRef.current?.contains(document.activeElement)\n ) {\n inputRef.current?.focus();\n }\n skipFocusRestoreRef.current = false;\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n useEffect(() => {\n if (!isEditing) {\n setDraftValue(formatDateForInput(selectedDate, selectionMode));\n }\n setViewDate(getSafeViewDate(selectedDate));\n }, [isEditing, selectedDate, selectionMode]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n setMode(\n selectionMode === \"year\"\n ? \"years\"\n : selectionMode === \"month\"\n ? \"months\"\n : \"days\",\n );\n\n const onMouseDown = (event: MouseEvent) => {\n if (\n !containerRef.current?.contains(event.target as Node) &&\n !dropdownRef.current?.contains(event.target as Node)\n ) {\n skipFocusRestoreRef.current = true;\n setIsOpen(false);\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") closeCalendar();\n };\n\n document.addEventListener(\"mousedown\", onMouseDown);\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen, navigationVariant, selectionMode]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const updateDropdownPosition = () => {\n if (!containerRef.current) return;\n\n const rect = (\n inputRef.current ?? containerRef.current\n ).getBoundingClientRect();\n\n const isOutOfViewport =\n rect.bottom <= 0 ||\n rect.top >= window.innerHeight ||\n rect.right <= 0 ||\n rect.left >= window.innerWidth;\n\n if (isOutOfViewport) {\n setIsOpen(false);\n return;\n }\n\n const dropdown = dropdownRef.current;\n const panelHeight = dropdown?.scrollHeight || 320;\n const panelRect = calculateFloatingPanelRect({\n trigger: rect,\n panel: {\n width: CALENDAR_WIDTH,\n height: panelHeight,\n },\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n gap: CALENDAR_GAP,\n margin: VIEWPORT_MARGIN,\n });\n const needsScroll = panelHeight > panelRect.maxHeight + 1;\n\n setPanelNeedsScroll(needsScroll);\n\n setDropdownStyle({\n position: \"fixed\",\n top: panelRect.top,\n left: panelRect.left,\n width: panelRect.width,\n maxHeight: needsScroll ? panelRect.maxHeight : undefined,\n });\n };\n\n const scheduleDropdownPosition = () => {\n if (rafRef.current != null) return;\n\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updateDropdownPosition();\n });\n };\n\n updateDropdownPosition();\n window.addEventListener(\"resize\", scheduleDropdownPosition);\n window.addEventListener(\"scroll\", scheduleDropdownPosition, true);\n\n return () => {\n if (rafRef.current != null) {\n window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n window.removeEventListener(\"resize\", scheduleDropdownPosition);\n window.removeEventListener(\"scroll\", scheduleDropdownPosition, true);\n };\n }, [isOpen, navigationVariant, viewDate, draftValue]);\n\n const syncValue = (nextDate: Date | null) => {\n if (hasFormikField && formik) {\n formik.setFieldValue(name, nextDate);\n }\n\n onChange?.(nextDate);\n };\n\n const touchField = () => {\n if (hasFormikField && formik) {\n formik.setFieldTouched(name, true);\n }\n };\n\n const openCalendar = () => {\n if (isFieldDisabled) return;\n setIsOpen(true);\n inputRef.current?.focus();\n };\n\n const closeCalendar = () => {\n setIsOpen(false);\n\n if (document.activeElement === inputRef.current) return;\n\n suppressOpenOnFocusRef.current = true;\n inputRef.current?.focus();\n };\n\n const getDaysInView = () => {\n const start = startOfWeek(startOfMonth(viewDate), { weekStartsOn: 0 });\n const end = endOfWeek(endOfMonth(viewDate), { weekStartsOn: 0 });\n return eachDayOfInterval({ start, end });\n };\n\n const handleDayClick = (day: Date) => {\n if (selectionMode !== \"day\") return;\n if (isBefore(day, startOfDay(minDate)) || isAfter(day, startOfDay(maxDate)))\n return;\n\n syncValue(day);\n setDraftValue(formatDateForInput(day));\n setInputError(null);\n setViewDate(day);\n touchField();\n closeCalendar();\n };\n\n const handleMonthClick = (monthIndex: number) => {\n const candidate = new Date(viewDate.getFullYear(), monthIndex, 1);\n const monthDisabled =\n isBefore(endOfMonth(candidate), startOfDay(minDate)) ||\n isAfter(startOfMonth(candidate), startOfDay(maxDate));\n if (monthDisabled) return;\n\n if (selectionMode === \"month\") {\n const nextDate = isBefore(candidate, minDate)\n ? minDate\n : isAfter(candidate, maxDate)\n ? maxDate\n : candidate;\n syncValue(nextDate);\n setDraftValue(formatDateForInput(nextDate, selectionMode));\n setInputError(null);\n touchField();\n closeCalendar();\n return;\n }\n\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setMonth(monthIndex);\n return nextDate;\n });\n setMode(\"days\");\n };\n\n const handleMonthChange = (monthIndex: number) => {\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setDate(1);\n nextDate.setMonth(monthIndex);\n return nextDate;\n });\n };\n\n const handleYearClick = (year: number) => {\n if (year < minDate.getFullYear() || year > maxDate.getFullYear()) return;\n if (selectionMode === \"year\") {\n const firstDay = new Date(year, 0, 1);\n const nextDate = year === minDate.getFullYear() && firstDay < minDate\n ? minDate\n : year === maxDate.getFullYear() && firstDay > maxDate\n ? maxDate\n : firstDay;\n syncValue(nextDate);\n setDraftValue(formatDateForInput(nextDate, selectionMode));\n setInputError(null);\n touchField();\n closeCalendar();\n return;\n }\n\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(year);\n return nextDate;\n });\n setMode(selectionMode === \"month\" ? \"months\" : \"days\");\n };\n\n const handleYearChange = (year: number) => {\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setDate(1);\n nextDate.setFullYear(year);\n\n if (year === minDate.getFullYear() && nextDate < startOfMonth(minDate)) {\n nextDate.setMonth(minDate.getMonth());\n }\n\n if (year === maxDate.getFullYear() && nextDate > startOfMonth(maxDate)) {\n nextDate.setMonth(maxDate.getMonth());\n }\n\n return nextDate;\n });\n };\n\n const moveCalendarFocus = (\n event: React.KeyboardEvent<HTMLButtonElement>,\n columns: number,\n ) => {\n const movement: Record<string, number> = {\n ArrowLeft: -1,\n ArrowRight: 1,\n ArrowUp: -columns,\n ArrowDown: columns,\n };\n const buttons = Array.from(\n dropdownRef.current?.querySelectorAll<HTMLButtonElement>(\n '[data-calendar-option=\"true\"]:not(:disabled)',\n ) ?? [],\n );\n const currentIndex = buttons.indexOf(event.currentTarget);\n if (currentIndex < 0) return;\n\n let nextIndex: number;\n if (event.key in movement) {\n nextIndex = currentIndex + movement[event.key];\n } else if (event.key === \"Home\") {\n nextIndex = currentIndex - (currentIndex % columns);\n } else if (event.key === \"End\") {\n nextIndex = currentIndex - (currentIndex % columns) + columns - 1;\n } else {\n return;\n }\n\n const nextButton = buttons[nextIndex];\n if (!nextButton) return;\n event.preventDefault();\n nextButton.focus();\n };\n\n const commitDraftValue = (rawValue: string) => {\n const normalizedValue = formatInputValue(rawValue, selectionMode);\n setDraftValue(normalizedValue);\n touchField();\n\n if (!normalizedValue) {\n syncValue(null);\n setInputError(null);\n return;\n }\n\n if (selectionMode === \"month\") {\n if (normalizedValue.length < 7) {\n syncValue(null);\n setInputError(\"Mês incompleto\");\n return;\n }\n\n const parsedMonth = parseDateValue(normalizedValue, selectionMode);\n if (!parsedMonth) {\n syncValue(null);\n setInputError(\"Mês inválido\");\n return;\n }\n\n const monthDisabled =\n isBefore(endOfMonth(parsedMonth), startOfDay(minDate)) ||\n isAfter(startOfMonth(parsedMonth), startOfDay(maxDate));\n if (monthDisabled) {\n syncValue(null);\n setInputError(\"Mês fora do intervalo permitido\");\n return;\n }\n\n const nextDate = isBefore(parsedMonth, minDate)\n ? minDate\n : isAfter(parsedMonth, maxDate)\n ? maxDate\n : parsedMonth;\n syncValue(nextDate);\n setViewDate(nextDate);\n setInputError(null);\n return;\n }\n\n if (selectionMode === \"year\") {\n if (normalizedValue.length < 4) {\n syncValue(null);\n setInputError(\"Ano incompleto\");\n return;\n }\n const year = Number(normalizedValue);\n if (year < minDate.getFullYear() || year > maxDate.getFullYear()) {\n syncValue(null);\n setInputError(\"Ano fora do intervalo permitido\");\n return;\n }\n handleYearClick(year);\n setInputError(null);\n return;\n }\n\n if (normalizedValue.length < 10) {\n syncValue(null);\n setInputError(\"Data incompleta\");\n return;\n }\n\n const parsedDate = parseDateValue(normalizedValue, selectionMode);\n if (!parsedDate) {\n syncValue(null);\n setInputError(\"Data invalida\");\n return;\n }\n\n if (\n isBefore(parsedDate, startOfDay(minDate)) ||\n isAfter(parsedDate, startOfDay(maxDate))\n ) {\n syncValue(null);\n setInputError(\"Data fora do intervalo permitido\");\n return;\n }\n\n syncValue(parsedDate);\n setViewDate(parsedDate);\n setInputError(null);\n };\n\n const yearRangeStart = viewDate.getFullYear() - 5;\n const years = Array.from(\n { length: 12 },\n (_, index) => yearRangeStart + index,\n );\n const minYear = minDate.getFullYear();\n const maxYear = maxDate.getFullYear();\n const selectableYears = Array.from(\n { length: Math.max(0, maxYear - minYear + 1) },\n (_, index) => minYear + index,\n );\n const previousMonth = subMonths(viewDate, 1);\n const nextMonth = addMonths(viewDate, 1);\n const previousMonthDisabled = isBefore(\n endOfMonth(previousMonth),\n startOfDay(minDate),\n );\n const nextMonthDisabled = isAfter(\n startOfMonth(nextMonth),\n startOfDay(maxDate),\n );\n const headerLabel =\n mode === \"days\"\n ? format(viewDate, \"MMMM yyyy\", { locale: ptBR })\n : mode === \"months\"\n ? String(viewDate.getFullYear())\n : `${yearRangeStart} - ${yearRangeStart + 11}`;\n\n const resolvedErrorText =\n inputError ||\n (formikTouched && typeof formikError === \"string\"\n ? formikError\n : errorText);\n const hasError = Boolean(\n inputError || (formikTouched && formikError) || error,\n );\n const errorId = `${name}-error`;\n\n return (\n <FieldFrame\n className=\"relative\"\n ref={containerRef}\n label={label}\n labelFor={name}\n description={helperText}\n descriptionId={`${name}-description`}\n invalid={hasError}\n message={resolvedErrorText}\n messageId={errorId}\n >\n <div\n data-has-value={draftValue.length > 0}\n className={classNames(\n FIELD_CONTROL_CLASS,\n {\n [FIELD_DISABLED_CLASS]: isFieldDisabled,\n [FIELD_ERROR_CLASS]: hasError,\n },\n className,\n )}\n >\n <input\n ref={inputRef}\n id={name}\n name={name}\n aria-label={ariaLabel ?? (!label ? \"Data\" : undefined)}\n role=\"combobox\"\n aria-invalid={hasError || undefined}\n aria-describedby={mergeAriaDescribedBy(\n !hasError && helperText !== undefined\n ? `${name}-description`\n : undefined,\n hasError && resolvedErrorText ? errorId : undefined,\n )}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? calendarId : undefined}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n maxLength={\n selectionMode === \"year\" ? 4 : selectionMode === \"month\" ? 7 : 10\n }\n disabled={isFieldDisabled}\n placeholder={resolvedPlaceholder}\n value={draftValue}\n onClick={openCalendar}\n onFocus={() => {\n setIsEditing(true);\n const suppressOpen = suppressOpenOnFocusRef.current;\n suppressOpenOnFocusRef.current = false;\n if (!suppressOpen) openCalendar();\n }}\n onChange={(event) => {\n const nextValue = formatInputValue(event.target.value, selectionMode);\n setDraftValue(nextValue);\n setInputError(null);\n\n const expectedLength =\n selectionMode === \"year\" ? 4 : selectionMode === \"month\" ? 7 : 10;\n if (nextValue.length === expectedLength) {\n const parsedDate = parseDateValue(nextValue, selectionMode);\n if (parsedDate) {\n setViewDate(parsedDate);\n }\n }\n }}\n onBlur={(event) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n if (\n nextFocusedElement &&\n dropdownRef.current?.contains(nextFocusedElement)\n ) {\n return;\n }\n\n setIsEditing(false);\n commitDraftValue(event.target.value);\n onBlur?.(event);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n commitDraftValue(draftValue);\n closeCalendar();\n }\n }}\n className={FIELD_INPUT_CLASS}\n />\n\n <button\n type=\"button\"\n disabled={isFieldDisabled}\n onClick={openCalendar}\n className=\"flex items-center justify-center disabled:cursor-not-allowed\"\n aria-label=\"Abrir calendario\"\n >\n <MdCalendarMonth\n className={classNames(\"h-5 w-5\", {\n \"text-field-assistive-error\": hasError,\n })}\n />\n </button>\n </div>\n\n {isMounted && isOpen\n ? createPortal(\n <div\n ref={dropdownRef}\n id={calendarId}\n role=\"dialog\"\n aria-label={\n selectionMode === \"year\"\n ? \"Selecionar ano\"\n : selectionMode === \"month\"\n ? \"Selecionar mês\"\n : \"Selecionar data\"\n }\n style={dropdownStyle}\n className={classNames(\n getFloatingLayerClass(containerRef.current, \"popover\"),\n \"rounded-sm border border-border-default bg-white shadow-md transition-all duration-150 motion-reduce:transition-none\",\n panelNeedsScroll\n ? \"overflow-y-auto overscroll-contain\"\n : \"overflow-visible\",\n \"py-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n aria-label=\"Exibir mês anterior\"\n disabled={\n navigationVariant === \"dropdown\" && previousMonthDisabled\n }\n onClick={() =>\n mode === \"days\"\n ? setViewDate((currentDate) => subMonths(currentDate, 1))\n : mode === \"months\"\n ? setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(nextDate.getFullYear() - 1);\n return nextDate;\n })\n : setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(nextDate.getFullYear() - 12);\n return nextDate;\n })\n }\n className=\"rounded-sm p-1 text-primary-1 transition-colors hover:bg-primary-1/10 disabled:cursor-not-allowed disabled:text-content-disabled\"\n >\n <MdChevronLeft aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n\n {navigationVariant === \"dropdown\" ? (\n <div className=\"flex items-center gap-[6px]\">\n <select\n aria-label=\"Selecionar mês do calendário\"\n value={viewDate.getMonth()}\n onChange={(event) =>\n handleMonthChange(Number(event.target.value))\n }\n className=\"h-6 w-24 rounded-sm border-2 border-border-default bg-field-surface px-0.5 text-xs leading-3 text-field-content focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n >\n {MONTHS.map((month, monthIndex) => (\n <option\n key={month}\n value={monthIndex}\n disabled={\n (viewDate.getFullYear() === minYear &&\n monthIndex < minDate.getMonth()) ||\n (viewDate.getFullYear() === maxYear &&\n monthIndex > maxDate.getMonth())\n }\n >\n {month}\n </option>\n ))}\n </select>\n\n <select\n aria-label=\"Selecionar ano do calendário\"\n value={viewDate.getFullYear()}\n onChange={(event) =>\n handleYearChange(Number(event.target.value))\n }\n className=\"h-6 w-[58px] rounded-sm border-2 border-border-default bg-field-surface px-0.5 text-xs leading-3 text-field-content focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n >\n {selectableYears.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </div>\n ) : (\n <button\n type=\"button\"\n onClick={() =>\n setMode((currentMode) =>\n currentMode === \"days\"\n ? \"months\"\n : currentMode === \"months\"\n ? \"years\"\n : \"days\",\n )\n }\n className=\"px-2 text-sm font-semibold capitalize text-content-primary transition-colors hover:text-primary-1\"\n >\n {headerLabel}\n </button>\n )}\n\n <button\n type=\"button\"\n aria-label=\"Exibir próximo mês\"\n disabled={\n navigationVariant === \"dropdown\" && nextMonthDisabled\n }\n onClick={() =>\n mode === \"days\"\n ? setViewDate((currentDate) => addMonths(currentDate, 1))\n : mode === \"months\"\n ? setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(nextDate.getFullYear() + 1);\n return nextDate;\n })\n : setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(nextDate.getFullYear() + 12);\n return nextDate;\n })\n }\n className=\"rounded-sm p-1 text-primary-1 transition-colors hover:bg-primary-1/10 disabled:cursor-not-allowed disabled:text-content-disabled\"\n >\n <MdChevronRight aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n </div>\n\n {mode === \"days\" && (\n <div className=\"px-3\">\n <div className=\"grid grid-cols-7 gap-x-1\" role=\"row\">\n {WEEKDAYS.map((weekday) => (\n <div\n key={weekday}\n role=\"columnheader\"\n className=\"select-none py-0.5 text-center text-2xs font-semibold text-content-muted\"\n >\n {weekday}\n </div>\n ))}\n </div>\n <div\n className=\"grid grid-cols-7 gap-x-1\"\n role=\"grid\"\n aria-label={`Dias de ${headerLabel}`}\n >\n {getDaysInView().map((day, index) => {\n const selected = selectedDate\n ? isSameDay(day, selectedDate)\n : false;\n const currentDay = isToday(day);\n const inMonth = isSameMonth(day, viewDate);\n const dayDisabled =\n isBefore(day, startOfDay(minDate)) ||\n isAfter(day, startOfDay(maxDate));\n\n if (!showAdjacentDays && !inMonth) {\n return (\n <span\n key={`${day.toISOString()}-${index}`}\n aria-hidden=\"true\"\n className=\"h-7\"\n />\n );\n }\n\n return (\n <button\n key={`${day.toISOString()}-${index}`}\n type=\"button\"\n data-calendar-option=\"true\"\n aria-label={format(day, \"dd/MM/yyyy\")}\n aria-current={currentDay ? \"date\" : undefined}\n aria-pressed={selected}\n onKeyDown={(event) => moveCalendarFocus(event, 7)}\n onClick={() => handleDayClick(day)}\n disabled={dayDisabled}\n className={classNames(\n \"group flex h-7 w-full items-center justify-center text-xs transition-colors\",\n {\n \"opacity-30 cursor-not-allowed\": dayDisabled,\n \"cursor-pointer\": !dayDisabled,\n },\n )}\n >\n <span\n className={classNames(\n \"flex h-6 w-6 items-center justify-center rounded-sm transition-colors\",\n {\n \"border border-selection-border bg-selection-background font-semibold text-selection-content\":\n selected,\n \"border border-primary-1 text-primary-1 font-semibold group-hover:bg-primary-1/10\":\n currentDay && inMonth && !selected,\n \"text-content-primary group-hover:bg-primary-1/10\":\n inMonth && !selected && !currentDay,\n \"text-content-muted\": !inMonth,\n },\n )}\n >\n {format(day, \"d\")}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {mode === \"months\" && (\n <div\n className=\"grid grid-cols-3 gap-1 px-3\"\n role=\"group\"\n aria-label=\"Meses do calendário\"\n >\n {MONTHS.map((month, index) => {\n const selected = index === viewDate.getMonth();\n const monthDate = new Date(viewDate.getFullYear(), index, 1);\n const monthDisabled =\n isBefore(endOfMonth(monthDate), startOfDay(minDate)) ||\n isAfter(startOfMonth(monthDate), startOfDay(maxDate));\n\n return (\n <button\n key={month}\n type=\"button\"\n data-calendar-option=\"true\"\n aria-pressed={selected}\n disabled={monthDisabled}\n onKeyDown={(event) => moveCalendarFocus(event, 3)}\n onClick={() => handleMonthClick(index)}\n className={classNames(\n \"rounded-sm py-1 text-xs capitalize transition-colors\",\n {\n \"cursor-not-allowed opacity-30\": monthDisabled,\n \"border border-selection-border bg-selection-background font-semibold text-selection-content\":\n selected,\n \"text-content-primary hover:bg-primary-1/10\":\n !selected,\n },\n )}\n >\n {month.slice(0, 3)}\n </button>\n );\n })}\n </div>\n )}\n\n {mode === \"years\" && (\n <div\n className=\"grid grid-cols-3 gap-1 px-3\"\n role=\"group\"\n aria-label=\"Anos do calendário\"\n >\n {years.map((year) => {\n const selected = year === viewDate.getFullYear();\n const yearDisabled = year < minYear || year > maxYear;\n\n return (\n <button\n key={year}\n type=\"button\"\n data-calendar-option=\"true\"\n aria-pressed={selected}\n disabled={yearDisabled}\n onKeyDown={(event) => moveCalendarFocus(event, 3)}\n onClick={() => handleYearClick(year)}\n className={classNames(\n \"rounded-sm py-1 text-xs transition-colors\",\n {\n \"cursor-not-allowed opacity-30\": yearDisabled,\n \"border border-selection-border bg-selection-background font-semibold text-selection-content\":\n selected,\n \"text-content-primary hover:bg-primary-1/10\":\n !selected,\n },\n )}\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n </div>,\n document.body,\n )\n : null}\n </FieldFrame>\n );\n};\n\nexport default UnifiedDatePicker;\n\n/** @deprecated Use DatePicker. Kept for deep-import compatibility. */\nexport const DatePickerLegacy = UnifiedDatePicker;\n/** @deprecated Use DatePickerProps. */\nexport type DatepickerProps = UnifiedDatePickerProps;\n/** @deprecated Use DatePickerNavigationVariant. */\nexport type DatepickerNavigationVariant = DatePickerNavigationVariant;\n","\"use client\";\n\nimport UnifiedDatePicker from \"./UnifiedDatePicker\";\nimport type {\n DatePickerNavigationVariant as DatePickerNavigationVariantType,\n UnifiedDatePickerProps,\n} from \"./UnifiedDatePicker\";\n\nexport const DatePicker = UnifiedDatePicker;\nexport { UnifiedDatePicker };\nexport type {\n DatePickerNavigationVariant,\n DatePickerSelectionMode,\n UnifiedDatePickerProps as DatePickerProps,\n UnifiedDatePickerProps,\n} from \"./UnifiedDatePicker\";\n/** @deprecated Use DatePicker. */\nexport const Datepicker = DatePicker;\n/** @deprecated Use DatePickerProps. */\nexport type DatepickerProps = UnifiedDatePickerProps;\n/** @deprecated Use DatePickerNavigationVariant. */\nexport type DatepickerNavigationVariant = DatePickerNavigationVariantType;\n\nexport default DatePicker;\n","\"use client\";\n\nimport cs from \"classnames\";\nimport {\n InputHTMLAttributes,\n KeyboardEvent,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { MdClose, MdKeyboardArrowDown } from \"react-icons/md\";\nimport FieldFrame from \"../field/FieldFrame\";\nimport { getFloatingLayerClass } from \"../../utils/floating-layer\";\n\nexport interface SelectMultiViewProps extends InputHTMLAttributes<HTMLInputElement> {\n options: {\n label: string;\n value: string;\n }[];\n label?: string;\n error?: string;\n checkedList?: string[];\n onClear?: () => void;\n disabled?: boolean;\n}\n\nexport function SelectMultiView(props: SelectMultiViewProps) {\n const {\n options,\n error,\n label,\n checkedList = [],\n onClear,\n disabled,\n className,\n } = props;\n const [isOpened, setIsOpened] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const groupRef = useRef<HTMLDivElement>(null);\n const baseId = useId();\n const triggerId = `${baseId}-trigger`;\n const labelId = `${baseId}-label`;\n const groupId = `${baseId}-options`;\n const summaryId = `${baseId}-summary`;\n const errorId = `${baseId}-error`;\n const selectedCount = checkedList.length;\n const selectedSummary =\n selectedCount === 0\n ? \"Nenhuma opção selecionada\"\n : selectedCount === 1\n ? \"1 opção selecionada\"\n : `${selectedCount} opções selecionadas`;\n const describedBy = [summaryId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \");\n const floatingLayerClass = getFloatingLayerClass(\n triggerRef.current,\n \"popover\",\n );\n const menuLayerClass =\n floatingLayerClass === \"z-popover\" ? \"z-menu\" : floatingLayerClass;\n\n const closeAndFocusTrigger = () => {\n setIsOpened(false);\n triggerRef.current?.focus({ preventScroll: true });\n };\n\n useEffect(() => {\n if (!isOpened) return;\n\n groupRef.current\n ?.querySelector<HTMLInputElement>('input[type=\"checkbox\"]')\n ?.focus({ preventScroll: true });\n }, [isOpened]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (!containerRef.current?.contains(event.target as Node)) {\n setIsOpened(false);\n }\n }\n\n if (isOpened) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpened]);\n\n useEffect(() => {\n if (disabled) setIsOpened(false);\n }, [disabled]);\n\n const handleOptionKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const checkboxes = Array.from(\n groupRef.current?.querySelectorAll<HTMLInputElement>(\n 'input[type=\"checkbox\"]:not([disabled])',\n ) ?? [],\n );\n const currentIndex = checkboxes.indexOf(event.currentTarget);\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n event.currentTarget.click();\n return;\n }\n\n if (\n event.key !== \"ArrowDown\" &&\n event.key !== \"ArrowUp\" &&\n event.key !== \"Home\" &&\n event.key !== \"End\"\n ) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === \"Home\") {\n checkboxes[0]?.focus({ preventScroll: true });\n return;\n }\n\n if (event.key === \"End\") {\n checkboxes[checkboxes.length - 1]?.focus({ preventScroll: true });\n return;\n }\n\n const direction = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n (currentIndex + direction + checkboxes.length) % checkboxes.length;\n checkboxes[nextIndex]?.focus({ preventScroll: true });\n };\n\n return (\n <FieldFrame\n ref={containerRef}\n className={cs(\"multi-select-container\", className)}\n label={label}\n labelFor={triggerId}\n labelId={label ? labelId : undefined}\n invalid={Boolean(error)}\n message={error}\n messageId={errorId}\n >\n <div\n aria-invalid={Boolean(error) || undefined}\n className=\"relative mb-[4px] mt-4xs w-full min-w-0\"\n >\n <button\n type=\"button\"\n id={triggerId}\n ref={triggerRef}\n aria-controls={groupId}\n aria-expanded={isOpened}\n aria-invalid={Boolean(error) || undefined}\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : \"Selecionar opções\"}\n aria-describedby={describedBy}\n disabled={disabled}\n onClick={() => setIsOpened((current) => !current)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setIsOpened(true);\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n setIsOpened(false);\n }\n }}\n className={cs(\n \"flex h-control-md w-full cursor-pointer items-center justify-between rounded-sm border border-field-border-default bg-field-surface px-3 text-field-icon focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\",\n error && \"border-field-border-error text-field-assistive-error\",\n !error &&\n isOpened &&\n \"border-field-border-active text-field-content\",\n !error && selectedCount > 0 && \"text-field-content\",\n disabled &&\n \"cursor-not-allowed border-field-border-default bg-field-surface-disabled text-field-content-disabled\",\n )}\n >\n <span\n className={cs(\n \"min-w-0 flex-1 truncate text-left text-base font-normal text-field-placeholder\",\n {\n \"pr-12 text-field-content\": !disabled && selectedCount > 0,\n \"text-field-content-disabled\": disabled,\n },\n )}\n >\n Selecione\n </span>\n <MdKeyboardArrowDown\n aria-hidden=\"true\"\n className={cs(\n \"shrink-0 text-base text-field-icon transition-transform\",\n {\n \"rotate-180\": isOpened,\n \"text-field-assistive-error\": error,\n \"text-field-content\": !error && (isOpened || selectedCount > 0),\n \"text-field-content-disabled\": disabled,\n },\n )}\n />\n </button>\n\n <span id={summaryId} className=\"sr-only\">\n {selectedSummary}\n </span>\n\n {isOpened && (\n <div\n id={groupId}\n ref={groupRef}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : \"Opções disponíveis\"}\n aria-describedby={summaryId}\n className={cs(\n \"absolute top-[100%] w-full rounded-sm bg-surface-card p-3\",\n menuLayerClass,\n \"flex flex-col items-stretch gap-2 shadow-md\",\n )}\n >\n {options.map((option, index) => {\n const isChecked = checkedList.includes(option.value);\n\n return (\n <label\n key={option.value}\n className={cs(\n \"flex h-10 cursor-pointer items-center gap-2 rounded p-2\",\n isChecked && \"bg-primary-5 text-primary-1\",\n disabled && \"cursor-not-allowed\",\n )}\n >\n <input\n id={`${baseId}-option-${index}`}\n type=\"checkbox\"\n className=\"peer sr-only\"\n value={option.value}\n checked={isChecked}\n name={props.name}\n onChange={props.onChange}\n onKeyDown={handleOptionKeyDown}\n aria-invalid={Boolean(error) || undefined}\n aria-describedby={error ? errorId : undefined}\n disabled={disabled}\n />\n <span aria-hidden=\"true\" className=\"checkbox-control-proxy\" />\n {option.label}\n </label>\n );\n })}\n </div>\n )}\n\n {selectedCount > 0 && onClear && (\n <button\n type=\"button\"\n aria-label={`Limpar seleção de ${label ?? \"opções\"}`}\n disabled={disabled}\n onClick={onClear}\n className=\"absolute right-9 top-1/2 flex min-h-6 min-w-6 -translate-y-1/2 touch-manipulation items-center justify-center gap-1 rounded-full bg-action-primary px-2 text-xs text-action-primary-content focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring disabled:cursor-not-allowed\"\n >\n <span aria-hidden=\"true\">{selectedCount}</span>\n <MdClose aria-hidden=\"true\" size={10} />\n </button>\n )}\n </div>\n </FieldFrame>\n );\n}\n\nexport default SelectMultiView;\n\n/** @deprecated Use SelectMultiViewProps. */\nexport type MultiSelectViewProps = SelectMultiViewProps;\n","import type { InputHTMLAttributes } from \"react\";\nimport SelectMultiView from \"./SelectMultiView\";\n\nexport interface SelectMultiOption {\n label: string;\n value: string;\n}\n\nexport interface SelectMultiProps extends InputHTMLAttributes<HTMLInputElement> {\n options: SelectMultiOption[];\n label?: string;\n error?: string;\n onReset?: () => void;\n}\n\nexport function SelectMulti(props: SelectMultiProps) {\n return (\n <SelectMultiView\n {...props}\n checkedList={props.value as string[]}\n onClear={props.onReset}\n />\n );\n}\n\n/** @deprecated Use SelectMulti. */\nexport const MultiSelect = SelectMulti;\n/** @deprecated Use SelectMultiOption. */\nexport type MultiSelectOption = SelectMultiOption;\n/** @deprecated Use SelectMultiProps. */\nexport type MultiSelectProps = SelectMultiProps;\n\nexport default SelectMulti;\n","\"use client\";\n\nimport InputSelect, {\n type InputSelectOption,\n} from \"../inputSelect/InputSelect\";\nimport {\n COUNTRY_OPTIONS,\n filterCountryOptions,\n} from \"../../data/country-metadata\";\nimport type { CountryListFilter } from \"../../data/country-metadata\";\nimport { CountryFlag } from \"../countryFlag/CountryFlag\";\nimport type React from \"react\";\n\nexport type SelectCountryOption = InputSelectOption & {\n cca2?: string;\n flags?: {\n png?: string;\n svg?: string;\n alt?: string;\n };\n};\n\nexport type SelectCountryProps = Omit<\n React.ComponentProps<typeof InputSelect>,\n \"options\" | \"renderOption\" | \"renderValue\"\n> & {\n /** Lista base customizada. Quando omitida, usa todos os paises do pacote. */\n options?: SelectCountryOption[];\n /** Use `all` (padrao), `include` ou `exclude` com codigos ISO-2. */\n countryList?: CountryListFilter;\n /** Exibe a bandeira no campo. A lista de países sempre mantém as bandeiras. Padrão: true. */\n showFlags?: boolean;\n};\n\nfunction renderFlag(option: SelectCountryOption, showFlags: boolean) {\n if (!showFlags) return null;\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"flex h-5 w-7 shrink-0 items-center justify-center\"\n >\n <CountryFlag\n cca2={option.cca2}\n src={option.flags?.svg}\n className=\"h-full w-full object-contain\"\n />\n </span>\n );\n}\n\nfunction renderCountryContent(\n option: SelectCountryOption | null,\n placeholder?: string,\n showFlags = true,\n) {\n if (!option) {\n return (\n <span className=\"block w-full truncate overflow-hidden text-content-muted\">\n {placeholder}\n </span>\n );\n }\n\n return (\n <span className=\"flex w-full min-w-0 items-center gap-2\">\n {renderFlag(option, showFlags)}\n <span className=\"block truncate overflow-hidden\">{option.label}</span>\n </span>\n );\n}\n\nexport function SelectCountry({\n options,\n countryList,\n searchable = true,\n searchPlaceholder = \"Busque um país\",\n noOptionsText = \"Nenhum país encontrado\",\n defaultValue,\n onChange,\n className,\n showFlags = true,\n ...props\n}: SelectCountryProps) {\n const availableOptions = filterCountryOptions(\n options || COUNTRY_OPTIONS,\n countryList,\n );\n\n return (\n <InputSelect\n {...props}\n className={className}\n defaultValue={defaultValue}\n onChange={onChange}\n options={availableOptions}\n searchable={searchable}\n searchPlaceholder={searchPlaceholder}\n noOptionsText={noOptionsText}\n renderOption={(option) =>\n renderCountryContent(option as SelectCountryOption)\n }\n renderValue={(option, placeholder) =>\n renderCountryContent(\n option as SelectCountryOption | null,\n placeholder,\n showFlags,\n )\n }\n />\n );\n}\n\n/** @deprecated Use SelectCountry. */\nexport const CountrySelect = SelectCountry;\n/** @deprecated Use SelectCountryOption. */\nexport type CountrySelectOption = SelectCountryOption;\n/** @deprecated Use SelectCountryProps. */\nexport type CountrySelectProps = SelectCountryProps;\n\nexport default SelectCountry;\n","\"use client\";\n\nimport { useField } from \"formik\";\nimport { useId } from \"react\";\nimport {\n FIELD_LABEL_CLASS,\n FIELD_MESSAGE_CLASS,\n FIELD_ROOT_CLASS,\n} from \"../field/field-styles\";\n\nexport interface RadioGroupProps extends React.InputHTMLAttributes<HTMLInputElement> {\n name: string;\n label?: string;\n options: {\n label: string;\n value: string;\n }[];\n}\n\nexport function RadioGroup({\n name,\n label,\n options,\n className,\n ...rest\n}: RadioGroupProps) {\n const [field, meta] = useField(name!);\n\n const hasError = Boolean(meta.touched && meta.error);\n const errorId = `${useId()}-error`;\n\n return (\n <fieldset\n className={`${FIELD_ROOT_CLASS} ${className ?? \"\"}`}\n aria-describedby={hasError ? errorId : undefined}\n aria-invalid={hasError || undefined}\n >\n {label && <legend className={FIELD_LABEL_CLASS}>{label}</legend>}\n <div className=\"field-control-slot mt-4xs mb-[4px] flex min-h-control-md flex-wrap items-center gap-x-6 gap-y-2\">\n {options.map((option) => (\n <label\n key={option.value}\n className=\"flex min-h-7 cursor-pointer items-center gap-2\"\n >\n <input\n type=\"radio\"\n {...rest}\n {...field}\n value={option.value}\n checked={field.value === option.value}\n aria-describedby={hasError ? errorId : undefined}\n data-invalid={hasError || undefined}\n className=\"radio-control\"\n />\n <span className=\"text-content-secondary\">{option.label}</span>\n </label>\n ))}\n </div>\n {hasError && (\n <span\n id={errorId}\n role=\"alert\"\n aria-live=\"polite\"\n className={FIELD_MESSAGE_CLASS}\n >\n {meta.error}\n </span>\n )}\n </fieldset>\n );\n}\n\n\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport { FormikContext, FormikContextType, FormikValues, getIn } from \"formik\";\nimport {\n ChangeEvent,\n ReactNode,\n useContext,\n useId,\n useMemo,\n useState,\n} from \"react\";\n\nexport type RadioCardOption = {\n value: string;\n title: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n};\n\nexport type RadioCardGroupProps = {\n name?: string;\n label?: ReactNode;\n options: RadioCardOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n error?: string | boolean;\n touched?: boolean;\n className?: string;\n optionClassName?: string;\n columnsClassName?: string;\n disabled?: boolean;\n};\n\nconst isFormikContext = (\n context: FormikContextType<FormikValues> | undefined,\n): context is FormikContextType<FormikValues> =>\n Boolean(context && typeof context.setFieldValue === \"function\");\n\nexport function RadioCardGroup({\n name,\n label,\n options,\n value,\n defaultValue = \"\",\n onChange,\n error,\n touched,\n className,\n optionClassName,\n columnsClassName,\n disabled = false,\n}: RadioCardGroupProps) {\n const formikContext = useContext(\n FormikContext as unknown as React.Context<\n FormikContextType<FormikValues> | undefined\n >,\n );\n const generatedName = useId();\n const errorId = `${generatedName}-error`;\n const [internalValue, setInternalValue] = useState(defaultValue);\n\n const hasFormikBinding = Boolean(name) && isFormikContext(formikContext);\n const fieldName = name ?? generatedName;\n\n const fieldValue = useMemo(() => {\n if (hasFormikBinding && name) {\n return String(getIn(formikContext.values, name) ?? \"\");\n }\n\n if (value !== undefined) {\n return value;\n }\n\n return internalValue;\n }, [formikContext?.values, hasFormikBinding, internalValue, name, value]);\n\n const fieldTouched =\n hasFormikBinding && name\n ? Boolean(getIn(formikContext.touched, name))\n : Boolean(touched);\n\n const fieldError =\n hasFormikBinding && name ? getIn(formikContext.errors, name) : error;\n\n const hasError = Boolean(fieldTouched && fieldError);\n const helperText =\n typeof fieldError === \"string\" && hasError ? fieldError : undefined;\n\n const handleChange = (\n nextValue: string,\n event: ChangeEvent<HTMLInputElement>,\n ) => {\n if (hasFormikBinding && name) {\n formikContext.setFieldValue(name, nextValue);\n formikContext.setFieldTouched(name, true, false);\n } else if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue, event);\n };\n\n return (\n <fieldset\n className={classNames(\"flex min-w-0 flex-col\", className)}\n aria-describedby={helperText ? errorId : undefined}\n aria-invalid={hasError || undefined}\n >\n {label && (\n <legend className=\"mb-2 px-0.5 text-[16px] tracking-wide\">\n {label}\n </legend>\n )}\n\n <div className={classNames(\"grid gap-3\", columnsClassName)}>\n {options.map((option) => {\n const optionId = `${fieldName}-${option.value}`;\n const checked = fieldValue === option.value;\n const optionDisabled = disabled || Boolean(option.disabled);\n\n return (\n <label\n key={option.value}\n htmlFor={optionId}\n className={classNames(\n \"block rounded-md border p-4 transition-colors\",\n checked\n ? \"border-primary-1 bg-primary-5\"\n : \"border-transparent bg-bg-light\",\n hasError && !checked\n ? \"outline outline-1 outline-feedback-danger-border\"\n : \"outline outline-1 outline-transparent\",\n optionDisabled\n ? \"cursor-not-allowed opacity-60\"\n : \"cursor-pointer\",\n optionClassName,\n )}\n >\n <div className=\"flex items-start gap-3\">\n <input\n id={optionId}\n type=\"radio\"\n name={fieldName}\n value={option.value}\n checked={checked}\n disabled={optionDisabled}\n onChange={(event) => handleChange(option.value, event)}\n onBlur={() => {\n if (hasFormikBinding && name) {\n formikContext.setFieldTouched(name, true, false);\n }\n }}\n aria-describedby={helperText ? errorId : undefined}\n className=\"radio-control mt-0.5\"\n />\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-bold text-content-primary\">\n {option.title}\n </div>\n {option.description && (\n <div className=\"mt-1 text-content-primary\">\n {option.description}\n </div>\n )}\n </div>\n </div>\n </label>\n );\n })}\n </div>\n\n {helperText && (\n <span\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n className=\"mt-1 text-xs tracking-wide text-feedback-danger-content\"\n >\n {helperText}\n </span>\n )}\n </fieldset>\n );\n}\n\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type ClipboardEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n} from \"react\";\nimport FieldFrame from \"../field/FieldFrame\";\n\nexport type OtpCodeInputMask =\n | \"numeric\"\n | \"alphanumeric\"\n | RegExp\n | ((value: string) => string);\n\nexport interface OtpCodeInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\" | \"size\"> {\n length?: number;\n value?: string;\n values?: string[];\n onChange?: (value: string, values: string[]) => void;\n onComplete?: (value: string) => void;\n onPaste?: (event: ClipboardEvent<HTMLInputElement>) => void;\n autoFocus?: boolean;\n error?: boolean;\n errorText?: string;\n helperText?: string;\n label?: string;\n inputMode?: InputHTMLAttributes<HTMLInputElement>[\"inputMode\"];\n mask?: OtpCodeInputMask;\n}\n\nexport interface OtpCodeInputHandle {\n focus: (index?: number) => void;\n clear: () => void;\n}\n\nconst normalizeMask = (value: string, mask: OtpCodeInputMask): string => {\n if (typeof mask === \"function\") return mask(value).slice(0, 1);\n if (mask instanceof RegExp) {\n // RegExp.test mutates lastIndex when global/sticky flags are used.\n // Clone without those flags so repeated OTP entries stay deterministic.\n const stableMask = new RegExp(mask.source, mask.flags.replace(/[gy]/g, \"\"));\n return stableMask.test(value) ? value.slice(0, 1) : \"\";\n }\n if (mask === \"alphanumeric\") return value.replace(/[^a-z\\d]/gi, \"\").slice(0, 1);\n return value.replace(/\\D/g, \"\").slice(0, 1);\n};\n\nconst normalizeValues = (\n source: string | string[] | undefined,\n length: number,\n mask: OtpCodeInputMask,\n) => {\n const values = Array.isArray(source) ? source : Array.from(source ?? \"\");\n return Array.from({ length }, (_, index) => normalizeMask(values[index] ?? \"\", mask));\n};\n\nconst OtpCodeInput = forwardRef<OtpCodeInputHandle, OtpCodeInputProps>(\n function OtpCodeInput(\n {\n length = 6,\n value,\n values,\n onChange,\n onComplete,\n onPaste,\n autoFocus = false,\n disabled = false,\n error = false,\n errorText,\n helperText,\n label = \"Código de uso único\",\n inputMode = \"numeric\",\n mask = \"numeric\",\n name,\n onFocus: onInputFocus,\n onKeyDown: onInputKeyDown,\n className,\n ...inputProps\n },\n ref,\n ) {\n const safeLength = Math.max(1, Number.isFinite(length) ? Math.floor(length) : 6);\n const groupId = useId();\n const errorId = `${groupId}-error`;\n const helperId = `${groupId}-helper`;\n const inputRefs = useRef<Array<HTMLInputElement | null>>([]);\n const isControlled = value !== undefined || values !== undefined;\n const [internalValues, setInternalValues] = useState(() =>\n normalizeValues(values ?? value, safeLength, mask),\n );\n const currentValues = isControlled\n ? normalizeValues(values ?? value, safeLength, mask)\n : internalValues;\n\n useEffect(() => {\n if (!isControlled) {\n setInternalValues((previous) => {\n const normalized = normalizeValues(previous, safeLength, mask);\n return previous.length === normalized.length && previous.every(\n (item, index) => item === normalized[index],\n )\n ? previous\n : normalized;\n });\n }\n }, [isControlled, mask, safeLength]);\n\n useImperativeHandle(ref, () => ({\n focus: (index = 0) => inputRefs.current[Math.min(Math.max(index, 0), safeLength - 1)]?.focus(),\n clear: () => {\n const next = Array.from({ length: safeLength }, () => \"\");\n if (!isControlled) setInternalValues(next);\n onChange?.(\"\", next);\n inputRefs.current[0]?.focus();\n },\n }), [isControlled, onChange, safeLength]);\n\n useEffect(() => {\n if (autoFocus) inputRefs.current[0]?.focus();\n }, [autoFocus]);\n\n const emit = (next: string[], focusIndex?: number) => {\n const normalized = normalizeValues(next, safeLength, mask);\n if (!isControlled) setInternalValues(normalized);\n const nextValue = normalized.join(\"\");\n const wasComplete = currentValues.every(Boolean) && currentValues.length === safeLength;\n onChange?.(nextValue, normalized);\n if (!wasComplete && normalized.every(Boolean) && nextValue.length === safeLength) {\n onComplete?.(nextValue);\n }\n if (focusIndex !== undefined) inputRefs.current[focusIndex]?.focus();\n };\n\n const handlePaste = (event: ClipboardEvent<HTMLInputElement>, index: number) => {\n onPaste?.(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n const pasted = Array.from(event.clipboardData.getData(\"text\"))\n .map((item) => normalizeMask(item, mask))\n .filter(Boolean)\n .slice(0, safeLength - index);\n if (!pasted.length) return;\n const next = [...currentValues];\n pasted.forEach((item, offset) => { next[index + offset] = item; });\n emit(next, Math.min(index + pasted.length, safeLength - 1));\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputRefs.current[index - 1]?.focus();\n } else if (event.key === \"ArrowRight\" && index < safeLength - 1) {\n event.preventDefault();\n inputRefs.current[index + 1]?.focus();\n } else if (event.key === \"Backspace\") {\n if (currentValues[index]) {\n const next = [...currentValues];\n next[index] = \"\";\n emit(next);\n } else if (index > 0) {\n event.preventDefault();\n const next = [...currentValues];\n next[index - 1] = \"\";\n emit(next, index - 1);\n }\n } else if (event.key === \"Delete\" && currentValues[index]) {\n const next = [...currentValues];\n next[index] = \"\";\n emit(next);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n inputRefs.current[0]?.focus();\n } else if (event.key === \"End\") {\n event.preventDefault();\n inputRefs.current[safeLength - 1]?.focus();\n }\n };\n\n const hasError = Boolean(error || errorText);\n const describedBy = [helperText ? helperId : \"\", hasError && errorText ? errorId : \"\"]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <FieldFrame\n label={label}\n labelId={`${groupId}-label`}\n labelFor={`${groupId}-0`}\n message={errorText}\n messageId={errorId}\n description={helperText}\n descriptionId={helperId}\n invalid={hasError}\n className={className}\n >\n <div\n role=\"group\"\n aria-labelledby={label ? `${groupId}-label` : undefined}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className=\"mt-1 flex w-full min-w-0 flex-wrap gap-2\"\n >\n {Array.from({ length: safeLength }, (_, index) => (\n <input\n {...inputProps}\n key={index}\n ref={(element) => { inputRefs.current[index] = element; }}\n id={`${groupId}-${index}`}\n name={index === 0 ? name : undefined}\n type=\"text\"\n inputMode={inputMode}\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n maxLength={1}\n value={currentValues[index]}\n disabled={disabled}\n aria-label={`${label}, dígito ${index + 1} de ${safeLength}`}\n aria-invalid={hasError || undefined}\n aria-describedby={describedBy}\n onChange={(event) => {\n const next = [...currentValues];\n const nextValue = normalizeMask(event.target.value, mask);\n next[index] = nextValue;\n emit(next, nextValue && index < safeLength - 1 ? index + 1 : undefined);\n }}\n onPaste={(event) => handlePaste(event, index)}\n onKeyDown={(event) => {\n onInputKeyDown?.(event);\n if (!event.defaultPrevented) handleKeyDown(event, index);\n }}\n onFocus={(event) => {\n onInputFocus?.(event);\n if (!event.defaultPrevented) event.currentTarget.select();\n }}\n className={classNames(\n \"h-11 w-11 rounded-sm border bg-field-surface text-center text-lg font-bold text-field-content outline-none transition-colors focus-visible:border-field-border-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring disabled:cursor-not-allowed disabled:bg-field-surface-disabled\",\n hasError ? \"border-field-border-error\" : \"border-field-border-default\",\n )}\n />\n ))}\n </div>\n </FieldFrame>\n );\n },\n);\n\nOtpCodeInput.displayName = \"OtpCodeInput\";\nexport default OtpCodeInput;\n"],"mappings":"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","names":["classNames","FieldFrame","jsx","jsxs","classNames","classNames","useField","useCallback","useId","useRef","useState","MdInfoOutline","Fragment","jsx","jsxs","normalizeSearchText","useField","useRef","useState","useId","useCallback","label","classNames","MdInfoOutline","useRef","classNames","useField","jsx","jsxs","useField","useRef","classNames","classNames","useField","useCallback","useEffect","useRef","useState","MdOutlineKeyboardArrowDown","MdOutlineKeyboardArrowUp","MdSearch","PatternFormat","createPortal","useEffect","useState","jsx","useState","useEffect","jsx","jsxs","dialDigits","localDigits","local","useField","useRef","useState","useCallback","useEffect","classNames","MdOutlineKeyboardArrowUp","MdOutlineKeyboardArrowDown","PatternFormat","createPortal","MdSearch","classNames","useEffect","useId","useMemo","useRef","useState","createPortal","jsx","jsxs","useMemo","useState","useRef","useId","useEffect","classNames","createPortal","useEffect","useId","useRef","useState","jsx","jsxs","useState","useRef","useId","useEffect","jsx","jsx","jsxs","renderFlag","useField","useId","jsx","jsxs","useField","useId","classNames","FormikContext","getIn","useContext","useId","useMemo","useState","jsx","jsxs","classNames","forwardRef","useEffect","useId","useRef","useState","jsx","forwardRef","OtpCodeInput","useId","useRef","useState","useEffect","classNames"]}