@aspprev/versi-ds 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -387
- package/dist/chunk-7JI5637G.js +551 -0
- package/dist/chunk-7JI5637G.js.map +1 -0
- package/dist/{chunk-JSPXVXUY.js → chunk-DO5C67KS.js} +309 -141
- package/dist/chunk-DO5C67KS.js.map +1 -0
- package/dist/{chunk-L5UMGEXV.js → chunk-EPV6UNUQ.js} +287 -121
- package/dist/chunk-EPV6UNUQ.js.map +1 -0
- package/dist/{chunk-CSQXTG32.js → chunk-FTRF27XF.js} +29 -31
- package/dist/chunk-FTRF27XF.js.map +1 -0
- package/dist/{chunk-5VJ6H62W.js → chunk-OQECJKGA.js} +493 -109
- package/dist/chunk-OQECJKGA.js.map +1 -0
- package/dist/core.d.ts +47 -6
- package/dist/core.js +19 -5
- package/dist/documents.d.ts +102 -1
- package/dist/documents.js +15 -3
- package/dist/forms.d.ts +29 -2
- package/dist/forms.js +4 -2
- package/dist/index.d.ts +4 -4
- package/dist/index.js +46 -10
- package/dist/manifest.json +6 -6
- package/dist/overlays.d.ts +30 -1
- package/dist/overlays.js +11 -3
- package/dist/styles.css +1 -1
- package/package.json +19 -17
- package/dist/chunk-5VJ6H62W.js.map +0 -1
- package/dist/chunk-CSQXTG32.js.map +0 -1
- package/dist/chunk-JSPXVXUY.js.map +0 -1
- package/dist/chunk-L5UMGEXV.js.map +0 -1
- package/dist/chunk-TESAXMCF.js +0 -45
- package/dist/chunk-TESAXMCF.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
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/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 InputProps = {\n name: string;\n label?: string;\n helperText?: string | React.ReactNode;\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n mask?:\n | \"cep\"\n | \"conta\"\n | \"currency\"\n | \"cpf\"\n | \"phone\"\n | \"date\"\n | \"datePicker\"\n | \"specialChars\"\n | \"cnpj\"\n | \"agencia\";\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 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);\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 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 (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 mask?:\n | \"cep\"\n | \"conta\"\n | \"currency\"\n | \"cpf\"\n | \"phone\"\n | \"date\"\n | \"datePicker\"\n | \"specialChars\"\n | \"cnpj\"\n | \"agencia\";\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 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 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 (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 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 getCountryFlagUrl,\n PHONE_COUNTRY_OPTIONS,\n type CountryListFilter,\n} from \"../../countries\";\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};\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) {\n const svgSrc = String(\n option?.flags?.svg?.trim() || getCountryFlagUrl(option?.cca2),\n ).trim();\n\n if (!svgSrc) {\n return <span className=\"h-5 w-7 shrink-0 rounded-sm bg-surface-muted\" />;\n }\n\n return (\n <img\n src={svgSrc}\n alt=\"\"\n aria-hidden=\"true\"\n className=\"h-5 w-7 shrink-0 object-contain\"\n loading=\"lazy\"\n referrerPolicy=\"no-referrer\"\n />\n );\n}\n\nexport function InputPhone({\n name,\n label,\n placeholder,\n countries,\n countryList,\n disabled,\n className,\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]\"\n >\n <div\n data-has-value={phoneDigits.length > 0}\n className={classNames(\n \"field-keyboard-focus-ring flex 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)}\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)}\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 { 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 defaultView?: ViewMode;\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(date, selectionMode === \"year\" ? \"yyyy\" : \"dd/MM/yyyy\");\n};\n\nconst formatInputValue = (\n value: string,\n selectionMode: DatePickerSelectionMode = \"day\",\n) => {\n const digits = value.replace(/\\D/g, \"\").slice(0, selectionMode === \"year\" ? 4 : 8);\n if (selectionMode === \"year\") return digits;\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 = (value: unknown): 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 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 = \"dd/mm/aaaa\",\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 defaultView = \"days\",\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 () => parseDateValue(hasFormikField ? formikRawValue : value),\n [formikRawValue, hasFormikField, 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 = selectionMode === \"year\" ? \"aaaa\" : placeholder;\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>(defaultView);\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 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 dropdownRef.current?.contains(document.activeElement)\n ) {\n inputRef.current?.focus();\n }\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 : navigationVariant === \"dropdown\"\n ? \"days\"\n : defaultView,\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 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 }, [defaultView, 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, defaultView, 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 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 = currentIndex;\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 === \"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);\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={selectionMode === \"year\" ? 4 : 10}\n disabled={isFieldDisabled}\n placeholder={resolvedPlaceholder}\n value={draftValue}\n onClick={openCalendar}\n onFocus={() => {\n setIsEditing(true);\n openCalendar();\n }}\n onChange={(event) => {\n const nextValue = formatInputValue(event.target.value, selectionMode);\n setDraftValue(nextValue);\n setInputError(null);\n\n if (selectionMode === \"day\" && nextValue.length === 10) {\n const parsedDate = parseDateValue(nextValue);\n if (parsedDate) {\n setViewDate(parsedDate);\n }\n }\n }}\n onBlur={(event) => {\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 \"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 \"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 DatePickerSelectionMode,\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 { options, error, label, checkedList = [], onClear, disabled } = 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=\"multi-select-container\"\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\"\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 getCountryFlagUrl,\n type CountryListFilter,\n} from \"../../countries\";\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};\n\nfunction renderFlag(option: SelectCountryOption) {\n const svgSrc = String(\n option.flags?.svg?.trim() || getCountryFlagUrl(option.cca2),\n ).trim();\n\n if (!svgSrc) {\n return (\n <span\n aria-hidden=\"true\"\n className=\"h-5 w-7 shrink-0 rounded-sm bg-surface-muted\"\n />\n );\n }\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"flex h-5 w-7 shrink-0 items-center justify-center\"\n >\n <img\n src={svgSrc}\n alt=\"\"\n className=\"h-full w-full object-contain\"\n loading=\"lazy\"\n referrerPolicy=\"no-referrer\"\n />\n </span>\n );\n}\n\nfunction renderCountryContent(\n option: SelectCountryOption | null,\n placeholder?: string,\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)}\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 ...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(option as SelectCountryOption | null, placeholder)\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 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","_a","_b","_c","classNames","useField","useCallback","useId","useRef","useState","MdInfoOutline","Fragment","jsx","jsxs","normalizeSearchText","useField","useRef","useState","useId","useCallback","_a","_b","label","classNames","MdInfoOutline","useRef","classNames","useField","jsx","jsxs","_a","useField","useRef","classNames","classNames","useField","useCallback","useEffect","useRef","useState","MdOutlineKeyboardArrowDown","MdOutlineKeyboardArrowUp","MdSearch","PatternFormat","createPortal","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","_a","_b","classNames"]}
|