@greatapps/common 1.1.796 → 1.1.798

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.
@@ -16,7 +16,7 @@ import { useUpdateBillingData } from "../../../modules/accounts/hooks/useAccount
16
16
  import { COUNTRIES } from "../../../utils/countries";
17
17
  import { readGeoCountry } from "../../../utils/geo-country";
18
18
  import { BR_STATE_OPTIONS } from "../../../utils/constants/br-states";
19
- import { formatCNPJ, formatCPF, formatPostalCode } from "../../../utils/format/masks";
19
+ import { formatCPFCNPJ, formatPostalCode } from "../../../utils/format/masks";
20
20
  import { isValidCNPJ, isValidCPF } from "../../../utils/validators/common";
21
21
  const COUNTRY_OPTIONS = COUNTRIES.map((country) => ({
22
22
  value: country.iso,
@@ -29,9 +29,11 @@ const BR_REQUIRED_ADDRESS_FIELDS = [
29
29
  "city",
30
30
  "state"
31
31
  ];
32
+ function isCompanyDocument(document) {
33
+ return document.replace(/\D/g, "").length > 11;
34
+ }
32
35
  function buildBillingDataSchema(translate) {
33
36
  const base = z.object({
34
- personType: z.enum(["pf", "pj"]),
35
37
  document: z.string().trim(),
36
38
  financialName: z.string().trim().min(1, translate("common.billing.requiredData.requiredField")),
37
39
  financialEmail: z.string().trim().min(1, translate("common.billing.requiredData.requiredField")).email(translate("common.billing.requiredData.invalidEmail")),
@@ -62,7 +64,7 @@ function buildBillingDataSchema(translate) {
62
64
  message: translate("common.billing.requiredData.invalidCep")
63
65
  });
64
66
  }
65
- const isCompany = data.personType === "pj";
67
+ const isCompany = isCompanyDocument(data.document);
66
68
  const digits = data.document.replace(/\D/g, "");
67
69
  if (digits.length !== (isCompany ? 14 : 11)) {
68
70
  ctx.addIssue({
@@ -82,10 +84,6 @@ function buildBillingDataSchema(translate) {
82
84
  }
83
85
  });
84
86
  }
85
- function formatDocument(document, isCompany) {
86
- if (!document) return "";
87
- return isCompany ? formatCNPJ(document) : formatCPF(document);
88
- }
89
87
  function BillingDataForm({ account, onSaved, country, submitLabel }) {
90
88
  const translate = useTranslations();
91
89
  const { user } = useAuth();
@@ -100,7 +98,6 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
100
98
  resolver: zodResolver(schema),
101
99
  mode: "onChange",
102
100
  defaultValues: {
103
- personType: "pf",
104
101
  document: "",
105
102
  financialName: "",
106
103
  financialEmail: "",
@@ -123,16 +120,13 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
123
120
  watch,
124
121
  formState: { errors, isSubmitting, isValid }
125
122
  } = form;
126
- const personType = watch("personType");
127
- const isCompany = personType === "pj";
123
+ const isCompany = isCompanyDocument(watch("document"));
128
124
  const isBrazil = watch("country") === "BR";
129
125
  useEffect(() => {
130
126
  if (!account || isPrefilled.current) return;
131
127
  isPrefilled.current = true;
132
- const accountIsCompany = account.financial_document_type === 2;
133
128
  reset({
134
- personType: accountIsCompany ? "pj" : "pf",
135
- document: formatDocument(account.financial_document, accountIsCompany),
129
+ document: formatCPFCNPJ(account.financial_document ?? ""),
136
130
  financialName: account.financial_name ?? "",
137
131
  financialEmail: account.financial_email || user?.email || "",
138
132
  cep: account.zipcode ?? "",
@@ -146,14 +140,7 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
146
140
  });
147
141
  }, [account, country, reset, user?.email]);
148
142
  const handleDocumentChange = (rawValue) => {
149
- setValue("document", isCompany ? formatCNPJ(rawValue) : formatCPF(rawValue), {
150
- shouldValidate: true
151
- });
152
- };
153
- const handlePersonTypeChange = (value) => {
154
- if (value === personType) return;
155
- setValue("document", "");
156
- setValue("personType", value, { shouldValidate: true });
143
+ setValue("document", formatCPFCNPJ(rawValue), { shouldValidate: true });
157
144
  };
158
145
  const handleCepChange = (rawValue) => {
159
146
  setValue("cep", formatPostalCode(rawValue), { shouldValidate: true });
@@ -169,7 +156,7 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
169
156
  };
170
157
  async function onSubmit(data) {
171
158
  const payload = data.country === "BR" ? {
172
- financial_document_type: data.personType === "pf" ? 1 : 2,
159
+ financial_document_type: isCompanyDocument(data.document) ? 2 : 1,
173
160
  financial_document: data.document,
174
161
  financial_name: data.financialName,
175
162
  financial_email: data.financialEmail,
@@ -232,47 +219,6 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
232
219
  }
233
220
  )
234
221
  ] }),
235
- isBrazil && /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
236
- /* @__PURE__ */ jsx(
237
- Controller,
238
- {
239
- name: "personType",
240
- control,
241
- render: ({ field }) => /* @__PURE__ */ jsx(
242
- SelectField,
243
- {
244
- label: translate("common.billing.requiredData.personType"),
245
- placeholder: translate("common.billing.requiredData.select"),
246
- value: field.value,
247
- onChange: (value) => handlePersonTypeChange(value),
248
- options: [
249
- {
250
- value: "pf",
251
- label: translate("common.billing.requiredData.personTypePf")
252
- },
253
- {
254
- value: "pj",
255
- label: translate("common.billing.requiredData.personTypePj")
256
- }
257
- ],
258
- containerClassName: "flex-1"
259
- }
260
- )
261
- }
262
- ),
263
- /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
264
- FormField,
265
- {
266
- label: isCompany ? translate("common.billing.requiredData.cnpj") : translate("common.billing.requiredData.cpf"),
267
- placeholder: isCompany ? "__.___.___/____-__" : "___.___.___-__",
268
- error: !!errors.document,
269
- errorMessage: errors.document?.message,
270
- ...register("document", {
271
- onChange: (event) => handleDocumentChange(event.target.value)
272
- })
273
- }
274
- ) })
275
- ] }),
276
222
  /* @__PURE__ */ jsx(
277
223
  FormField,
278
224
  {
@@ -283,6 +229,18 @@ function BillingDataForm({ account, onSaved, country, submitLabel }) {
283
229
  ...register("financialName")
284
230
  }
285
231
  ),
232
+ isBrazil && /* @__PURE__ */ jsx(
233
+ FormField,
234
+ {
235
+ label: translate("common.billing.requiredData.document"),
236
+ placeholder: translate("common.billing.requiredData.documentPlaceholder"),
237
+ error: !!errors.document,
238
+ errorMessage: errors.document?.message,
239
+ ...register("document", {
240
+ onChange: (event) => handleDocumentChange(event.target.value)
241
+ })
242
+ }
243
+ ),
286
244
  /* @__PURE__ */ jsx(
287
245
  FormField,
288
246
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/modals/billing/BillingDataForm.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any -- o generic Translator do next-intl não é\n expressável estruturalmente; o `any` do TranslateFn é intencional e está contido neste arquivo\n (mesmo padrão de modules/plans/utils/map-api-plan-to-ui.ts). */\n'use client';\n\nimport { useEffect, useMemo, useRef } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useTranslations } from 'next-intl';\nimport { toast } from 'sonner';\nimport z from 'zod';\n\nimport { Button } from '../../ui/buttons/Button';\nimport { FormField } from '../../ui/form/FormField';\nimport { SelectField } from '../../ui/form/SelectField';\nimport { Toast } from '../../ui/feedback/Toast';\nimport { useAuth } from '../../../providers/auth.provider';\nimport { useViaCep } from '../../../modules/accounts/hooks/useViaCep';\nimport { useUpdateBillingData } from '../../../modules/accounts/hooks/useAccountManagement';\nimport { COUNTRIES } from '../../../utils/countries';\nimport { readGeoCountry } from '../../../utils/geo-country';\nimport { BR_STATE_OPTIONS } from '../../../utils/constants/br-states';\nimport { formatCNPJ, formatCPF, formatPostalCode } from '../../../utils/format/masks';\nimport { isValidCNPJ, isValidCPF } from '../../../utils/validators/common';\nimport type { Account } from '../../../modules/accounts/types';\nimport type { UpdateBillingDataRequest } from '../../../modules/accounts/types';\n\ntype TranslateFn = (key: any, values?: Record<string, string | number>) => string;\n\ntype BillingDataFormValues = {\n personType: 'pf' | 'pj';\n document: string;\n financialName: string;\n financialEmail: string;\n cep: string;\n street: string;\n streetNumber: string;\n complement?: string;\n neighborhood: string;\n city: string;\n state: string;\n country: string;\n};\n\nconst COUNTRY_OPTIONS = COUNTRIES.map((country: { iso: string; name: string }) => ({\n value: country.iso,\n label: country.name,\n}));\n\nconst BR_REQUIRED_ADDRESS_FIELDS: readonly (keyof BillingDataFormValues)[] = [\n 'street',\n 'streetNumber',\n 'neighborhood',\n 'city',\n 'state',\n];\n\nfunction buildBillingDataSchema(translate: TranslateFn) {\n const base = z.object({\n personType: z.enum(['pf', 'pj']),\n document: z.string().trim(),\n financialName: z\n .string()\n .trim()\n .min(1, translate('common.billing.requiredData.requiredField')),\n financialEmail: z\n .string()\n .trim()\n .min(1, translate('common.billing.requiredData.requiredField'))\n .email(translate('common.billing.requiredData.invalidEmail')),\n cep: z.string().trim(),\n street: z.string().trim(),\n streetNumber: z.string().trim(),\n complement: z.string().trim().optional(),\n neighborhood: z.string().trim(),\n city: z.string().trim(),\n state: z.string().trim(),\n country: z.string().trim().min(1, translate('common.billing.requiredData.requiredField')),\n });\n\n return base.superRefine((data, ctx) => {\n if (data.country !== 'BR') return;\n\n for (const field of BR_REQUIRED_ADDRESS_FIELDS) {\n if (!data[field]) {\n ctx.addIssue({\n code: 'custom',\n path: [field],\n message: translate('common.billing.requiredData.requiredField'),\n });\n }\n }\n\n if (data.cep.replace(/\\D/g, '').length !== 8) {\n ctx.addIssue({\n code: 'custom',\n path: ['cep'],\n message: translate('common.billing.requiredData.invalidCep'),\n });\n }\n\n const isCompany = data.personType === 'pj';\n const digits = data.document.replace(/\\D/g, '');\n\n if (digits.length !== (isCompany ? 14 : 11)) {\n ctx.addIssue({\n code: 'custom',\n path: ['document'],\n message: isCompany\n ? translate('common.billing.requiredData.invalidCnpj')\n : translate('common.billing.requiredData.invalidCpf'),\n });\n return;\n }\n\n /* Dígito verificador, mesmo algoritmo do backend: sem isso 111.111.111-11 passa\n * aqui e o PUT da conta é recusado depois, sem o usuário saber o motivo. */\n const isValid = isCompany ? isValidCNPJ(digits) : isValidCPF(digits);\n if (!isValid) {\n ctx.addIssue({\n code: 'custom',\n path: ['document'],\n message: isCompany\n ? translate('common.billing.requiredData.invalidCnpjChecksum')\n : translate('common.billing.requiredData.invalidCpfChecksum'),\n });\n }\n });\n}\n\nfunction formatDocument(document: string | null | undefined, isCompany: boolean) {\n if (!document) return '';\n return isCompany ? formatCNPJ(document) : formatCPF(document);\n}\n\nexport interface BillingDataFormProps {\n account: Account | undefined;\n onSaved: () => void;\n /** Fixa o formulário em modo Brasil (documento, CEP e endereço obrigatórios) e esconde o select\n * de país — usado por fluxos PIX, que só existem no Brasil. Sem isso, o país vem da conta ou da\n * geolocalização do visitante. */\n country?: 'BR';\n submitLabel?: string;\n}\n\n/**\n * Formulário de cadastro fiscal/cobrança, reaproveitado por qualquer fluxo que precise dele\n * bloqueante (`RequiredBillingDataModal`) ou como etapa dentro de outro modal.\n */\nexport function BillingDataForm({ account, onSaved, country, submitLabel }: BillingDataFormProps) {\n const translate = useTranslations();\n const { user } = useAuth();\n const { mutateAsync: updateBillingData } = useUpdateBillingData();\n const { mutateAsync: lookupCep } = useViaCep();\n\n const isPrefilled = useRef(false);\n\n const schema = useMemo(\n () => buildBillingDataSchema(translate),\n [translate],\n );\n\n const form = useForm<BillingDataFormValues>({\n resolver: zodResolver(schema),\n mode: 'onChange',\n defaultValues: {\n personType: 'pf',\n document: '',\n financialName: '',\n financialEmail: '',\n cep: '',\n street: '',\n streetNumber: '',\n complement: '',\n neighborhood: '',\n city: '',\n state: '',\n country: country ?? 'BR',\n },\n });\n\n const {\n register,\n control,\n handleSubmit,\n reset,\n setValue,\n watch,\n formState: { errors, isSubmitting, isValid },\n } = form;\n\n const personType = watch('personType');\n const isCompany = personType === 'pj';\n const isBrazil = watch('country') === 'BR';\n\n useEffect(() => {\n if (!account || isPrefilled.current) return;\n isPrefilled.current = true;\n\n const accountIsCompany = account.financial_document_type === 2;\n reset({\n personType: accountIsCompany ? 'pj' : 'pf',\n document: formatDocument(account.financial_document, accountIsCompany),\n financialName: account.financial_name ?? '',\n financialEmail: account.financial_email || user?.email || '',\n cep: account.zipcode ?? '',\n street: account.address ?? '',\n streetNumber: account.address_number ?? '',\n complement: account.address_complement ?? '',\n neighborhood: account.neighborhood ?? '',\n city: account.city ?? '',\n state: account.state ?? '',\n country: country ?? (account.country || readGeoCountry() || 'BR'),\n });\n }, [account, country, reset, user?.email]);\n\n const handleDocumentChange = (rawValue: string) => {\n setValue('document', isCompany ? formatCNPJ(rawValue) : formatCPF(rawValue), {\n shouldValidate: true,\n });\n };\n\n const handlePersonTypeChange = (value: 'pf' | 'pj') => {\n if (value === personType) return;\n setValue('document', '');\n /* shouldValidate reroda o resolver: sem isso o `isValid` fica preso no valor\n * do documento antigo e o botão continua habilitado com o campo já limpo. */\n setValue('personType', value, { shouldValidate: true });\n };\n\n const handleCepChange = (rawValue: string) => {\n setValue('cep', formatPostalCode(rawValue), { shouldValidate: true });\n\n const digits = rawValue.replace(/\\D/g, '');\n if (digits.length !== 8) return;\n\n lookupCep(digits)\n .then((data) => {\n setValue('street', data.logradouro, { shouldValidate: true });\n setValue('neighborhood', data.bairro, { shouldValidate: true });\n setValue('city', data.localidade, { shouldValidate: true });\n setValue('state', data.uf, { shouldValidate: true });\n })\n .catch(() => {\n // CEP não encontrado: o usuário preenche o endereço na mão.\n });\n };\n\n async function onSubmit(data: BillingDataFormValues) {\n const payload: UpdateBillingDataRequest =\n data.country === 'BR'\n ? {\n financial_document_type: data.personType === 'pf' ? 1 : 2,\n financial_document: data.document,\n financial_name: data.financialName,\n financial_email: data.financialEmail,\n zipcode: data.cep,\n address: data.street,\n address_number: data.streetNumber,\n address_complement: data.complement ?? '',\n neighborhood: data.neighborhood,\n city: data.city,\n state: data.state,\n country: data.country,\n }\n : {\n financial_name: data.financialName,\n financial_email: data.financialEmail,\n country: data.country,\n };\n\n try {\n await updateBillingData(payload);\n toast.custom(\n (t) => (\n <Toast\n variant=\"success\"\n message={translate('common.billing.requiredData.successToast')}\n toastId={t}\n />\n ),\n { duration: 5000 },\n );\n onSaved();\n } catch (error) {\n /* O backend devolve a razão exata da recusa (ex.: documento fiscal inválido).\n * Trocar por um texto genérico deixaria o usuário travado sem saber o que corrigir. */\n const message =\n error instanceof Error && error.message\n ? error.message\n : translate('common.billing.requiredData.errorToast');\n toast.custom((t) => <Toast variant=\"error\" message={message} toastId={t} />, {\n duration: 5000,\n });\n }\n }\n\n return (\n <form onSubmit={handleSubmit(onSubmit)} className=\"flex flex-col flex-1 min-h-0\" noValidate>\n <div className=\"flex flex-col gap-6 p-4 lg:p-5 flex-1 overflow-y-auto\">\n <div className=\"flex flex-col gap-5\">\n {!country && (\n <>\n {/* Reage ao watch('country'): só quem está aqui dentro sabe quando o usuário\n * troca de país no select logo abaixo. */}\n <span className=\"paragraph-small-regular text-zinc-600\">\n {isBrazil\n ? translate('common.billing.requiredData.description')\n : translate('common.billing.requiredData.descriptionInternational')}\n </span>\n\n <Controller\n name=\"country\"\n control={control}\n render={({ field }) => (\n <SelectField\n label={translate('common.billing.requiredData.country')}\n placeholder={translate('common.billing.requiredData.select')}\n value={field.value || undefined}\n onChange={(value) =>\n setValue('country', String(value), { shouldValidate: true })\n }\n options={COUNTRY_OPTIONS}\n error={!!errors.country}\n errorMessage={errors.country?.message}\n />\n )}\n />\n </>\n )}\n\n {isBrazil && (\n <div className=\"flex gap-4\">\n <Controller\n name=\"personType\"\n control={control}\n render={({ field }) => (\n <SelectField\n label={translate('common.billing.requiredData.personType')}\n placeholder={translate('common.billing.requiredData.select')}\n value={field.value}\n onChange={(value) => handlePersonTypeChange(value as 'pf' | 'pj')}\n options={[\n {\n value: 'pf',\n label: translate('common.billing.requiredData.personTypePf'),\n },\n {\n value: 'pj',\n label: translate('common.billing.requiredData.personTypePj'),\n },\n ]}\n containerClassName=\"flex-1\"\n />\n )}\n />\n <div className=\"flex-1\">\n <FormField\n label={\n isCompany\n ? translate('common.billing.requiredData.cnpj')\n : translate('common.billing.requiredData.cpf')\n }\n placeholder={isCompany ? '__.___.___/____-__' : '___.___.___-__'}\n error={!!errors.document}\n errorMessage={errors.document?.message}\n {...register('document', {\n onChange: (event) => handleDocumentChange(event.target.value),\n })}\n />\n </div>\n </div>\n )}\n\n <FormField\n label={\n isBrazil && isCompany\n ? translate('common.billing.requiredData.companyName')\n : translate('common.billing.requiredData.fullName')\n }\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.financialName}\n errorMessage={errors.financialName?.message}\n {...register('financialName')}\n />\n\n <FormField\n label={translate('common.billing.requiredData.financialEmail')}\n placeholder={translate('common.billing.requiredData.financialEmailPlaceholder')}\n type=\"email\"\n error={!!errors.financialEmail}\n errorMessage={errors.financialEmail?.message}\n {...register('financialEmail')}\n />\n </div>\n\n {isBrazil && (\n <>\n <div className=\"h-px bg-zinc-200\" />\n\n <div className=\"flex flex-col gap-5\">\n <span className=\"paragraph-small-semibold text-zinc-950\">\n {translate('common.billing.requiredData.addressHeading')}\n </span>\n\n <FormField\n label={translate('common.billing.requiredData.cep')}\n placeholder=\"_____-___\"\n error={!!errors.cep}\n errorMessage={errors.cep?.message}\n {...register('cep', {\n onChange: (event) => handleCepChange(event.target.value),\n })}\n />\n\n <div className=\"flex gap-4\">\n <div className=\"flex-[3]\">\n <FormField\n label={translate('common.billing.requiredData.street')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.street}\n errorMessage={errors.street?.message}\n {...register('street')}\n />\n </div>\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.streetNumber')}\n placeholder=\"000\"\n error={!!errors.streetNumber}\n errorMessage={errors.streetNumber?.message}\n {...register('streetNumber')}\n />\n </div>\n </div>\n\n <div className=\"flex gap-4\">\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.neighborhood')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.neighborhood}\n errorMessage={errors.neighborhood?.message}\n {...register('neighborhood')}\n />\n </div>\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.complement')}\n optional\n placeholder={translate('common.billing.requiredData.typeHere')}\n {...register('complement')}\n />\n </div>\n </div>\n\n <div className=\"flex gap-4\">\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.city')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.city}\n errorMessage={errors.city?.message}\n {...register('city')}\n />\n </div>\n <div className=\"flex-1\">\n <Controller\n name=\"state\"\n control={control}\n render={({ field }) => (\n <SelectField\n label={translate('common.billing.requiredData.state')}\n placeholder={translate('common.billing.requiredData.select')}\n value={field.value || undefined}\n onChange={(value) =>\n setValue('state', String(value), { shouldValidate: true })\n }\n options={BR_STATE_OPTIONS}\n error={!!errors.state}\n errorMessage={errors.state?.message}\n />\n )}\n />\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n\n <div className=\"flex items-center justify-end p-4 lg:p-5 border-t border-zinc-200 shrink-0\">\n <Button\n type=\"submit\"\n className=\"h-10! w-full lg:w-fit\"\n disabled={!isValid || isSubmitting}\n loading={isSubmitting}\n >\n {isSubmitting\n ? translate('common.billing.requiredData.submitting')\n : submitLabel ?? translate('common.billing.requiredData.submit')}\n </Button>\n </div>\n </form>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/modals/billing/BillingDataForm.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any -- o generic Translator do next-intl não é\n expressável estruturalmente; o `any` do TranslateFn é intencional e está contido neste arquivo\n (mesmo padrão de modules/plans/utils/map-api-plan-to-ui.ts). */\n'use client';\n\nimport { useEffect, useMemo, useRef } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useTranslations } from 'next-intl';\nimport { toast } from 'sonner';\nimport z from 'zod';\n\nimport { Button } from '../../ui/buttons/Button';\nimport { FormField } from '../../ui/form/FormField';\nimport { SelectField } from '../../ui/form/SelectField';\nimport { Toast } from '../../ui/feedback/Toast';\nimport { useAuth } from '../../../providers/auth.provider';\nimport { useViaCep } from '../../../modules/accounts/hooks/useViaCep';\nimport { useUpdateBillingData } from '../../../modules/accounts/hooks/useAccountManagement';\nimport { COUNTRIES } from '../../../utils/countries';\nimport { readGeoCountry } from '../../../utils/geo-country';\nimport { BR_STATE_OPTIONS } from '../../../utils/constants/br-states';\nimport { formatCPFCNPJ, formatPostalCode } from '../../../utils/format/masks';\nimport { isValidCNPJ, isValidCPF } from '../../../utils/validators/common';\nimport type { Account } from '../../../modules/accounts/types';\nimport type { UpdateBillingDataRequest } from '../../../modules/accounts/types';\n\ntype TranslateFn = (key: any, values?: Record<string, string | number>) => string;\n\ntype BillingDataFormValues = {\n document: string;\n financialName: string;\n financialEmail: string;\n cep: string;\n street: string;\n streetNumber: string;\n complement?: string;\n neighborhood: string;\n city: string;\n state: string;\n country: string;\n};\n\nconst COUNTRY_OPTIONS = COUNTRIES.map((country: { iso: string; name: string }) => ({\n value: country.iso,\n label: country.name,\n}));\n\nconst BR_REQUIRED_ADDRESS_FIELDS: readonly (keyof BillingDataFormValues)[] = [\n 'street',\n 'streetNumber',\n 'neighborhood',\n 'city',\n 'state',\n];\n\nfunction isCompanyDocument(document: string): boolean {\n return document.replace(/\\D/g, '').length > 11;\n}\n\nfunction buildBillingDataSchema(translate: TranslateFn) {\n const base = z.object({\n document: z.string().trim(),\n financialName: z\n .string()\n .trim()\n .min(1, translate('common.billing.requiredData.requiredField')),\n financialEmail: z\n .string()\n .trim()\n .min(1, translate('common.billing.requiredData.requiredField'))\n .email(translate('common.billing.requiredData.invalidEmail')),\n cep: z.string().trim(),\n street: z.string().trim(),\n streetNumber: z.string().trim(),\n complement: z.string().trim().optional(),\n neighborhood: z.string().trim(),\n city: z.string().trim(),\n state: z.string().trim(),\n country: z.string().trim().min(1, translate('common.billing.requiredData.requiredField')),\n });\n\n return base.superRefine((data, ctx) => {\n if (data.country !== 'BR') return;\n\n for (const field of BR_REQUIRED_ADDRESS_FIELDS) {\n if (!data[field]) {\n ctx.addIssue({\n code: 'custom',\n path: [field],\n message: translate('common.billing.requiredData.requiredField'),\n });\n }\n }\n\n if (data.cep.replace(/\\D/g, '').length !== 8) {\n ctx.addIssue({\n code: 'custom',\n path: ['cep'],\n message: translate('common.billing.requiredData.invalidCep'),\n });\n }\n\n const isCompany = isCompanyDocument(data.document);\n const digits = data.document.replace(/\\D/g, '');\n\n if (digits.length !== (isCompany ? 14 : 11)) {\n ctx.addIssue({\n code: 'custom',\n path: ['document'],\n message: isCompany\n ? translate('common.billing.requiredData.invalidCnpj')\n : translate('common.billing.requiredData.invalidCpf'),\n });\n return;\n }\n\n const isValid = isCompany ? isValidCNPJ(digits) : isValidCPF(digits);\n if (!isValid) {\n ctx.addIssue({\n code: 'custom',\n path: ['document'],\n message: isCompany\n ? translate('common.billing.requiredData.invalidCnpjChecksum')\n : translate('common.billing.requiredData.invalidCpfChecksum'),\n });\n }\n });\n}\n\nexport interface BillingDataFormProps {\n account: Account | undefined;\n onSaved: () => void;\n country?: 'BR';\n submitLabel?: string;\n}\n\nexport function BillingDataForm({ account, onSaved, country, submitLabel }: BillingDataFormProps) {\n const translate = useTranslations();\n const { user } = useAuth();\n const { mutateAsync: updateBillingData } = useUpdateBillingData();\n const { mutateAsync: lookupCep } = useViaCep();\n\n const isPrefilled = useRef(false);\n\n const schema = useMemo(\n () => buildBillingDataSchema(translate),\n [translate],\n );\n\n const form = useForm<BillingDataFormValues>({\n resolver: zodResolver(schema),\n mode: 'onChange',\n defaultValues: {\n document: '',\n financialName: '',\n financialEmail: '',\n cep: '',\n street: '',\n streetNumber: '',\n complement: '',\n neighborhood: '',\n city: '',\n state: '',\n country: country ?? 'BR',\n },\n });\n\n const {\n register,\n control,\n handleSubmit,\n reset,\n setValue,\n watch,\n formState: { errors, isSubmitting, isValid },\n } = form;\n\n const isCompany = isCompanyDocument(watch('document'));\n const isBrazil = watch('country') === 'BR';\n\n useEffect(() => {\n if (!account || isPrefilled.current) return;\n isPrefilled.current = true;\n\n reset({\n document: formatCPFCNPJ(account.financial_document ?? ''),\n financialName: account.financial_name ?? '',\n financialEmail: account.financial_email || user?.email || '',\n cep: account.zipcode ?? '',\n street: account.address ?? '',\n streetNumber: account.address_number ?? '',\n complement: account.address_complement ?? '',\n neighborhood: account.neighborhood ?? '',\n city: account.city ?? '',\n state: account.state ?? '',\n country: country ?? (account.country || readGeoCountry() || 'BR'),\n });\n }, [account, country, reset, user?.email]);\n\n const handleDocumentChange = (rawValue: string) => {\n setValue('document', formatCPFCNPJ(rawValue), { shouldValidate: true });\n };\n\n const handleCepChange = (rawValue: string) => {\n setValue('cep', formatPostalCode(rawValue), { shouldValidate: true });\n\n const digits = rawValue.replace(/\\D/g, '');\n if (digits.length !== 8) return;\n\n lookupCep(digits)\n .then((data) => {\n setValue('street', data.logradouro, { shouldValidate: true });\n setValue('neighborhood', data.bairro, { shouldValidate: true });\n setValue('city', data.localidade, { shouldValidate: true });\n setValue('state', data.uf, { shouldValidate: true });\n })\n .catch(() => {});\n };\n\n async function onSubmit(data: BillingDataFormValues) {\n const payload: UpdateBillingDataRequest =\n data.country === 'BR'\n ? {\n financial_document_type: isCompanyDocument(data.document) ? 2 : 1,\n financial_document: data.document,\n financial_name: data.financialName,\n financial_email: data.financialEmail,\n zipcode: data.cep,\n address: data.street,\n address_number: data.streetNumber,\n address_complement: data.complement ?? '',\n neighborhood: data.neighborhood,\n city: data.city,\n state: data.state,\n country: data.country,\n }\n : {\n financial_name: data.financialName,\n financial_email: data.financialEmail,\n country: data.country,\n };\n\n try {\n await updateBillingData(payload);\n toast.custom(\n (t) => (\n <Toast\n variant=\"success\"\n message={translate('common.billing.requiredData.successToast')}\n toastId={t}\n />\n ),\n { duration: 5000 },\n );\n onSaved();\n } catch (error) {\n const message =\n error instanceof Error && error.message\n ? error.message\n : translate('common.billing.requiredData.errorToast');\n toast.custom((t) => <Toast variant=\"error\" message={message} toastId={t} />, {\n duration: 5000,\n });\n }\n }\n\n return (\n <form onSubmit={handleSubmit(onSubmit)} className=\"flex flex-col flex-1 min-h-0\" noValidate>\n <div className=\"flex flex-col gap-6 p-4 lg:p-5 flex-1 overflow-y-auto\">\n <div className=\"flex flex-col gap-5\">\n {!country && (\n <>\n <span className=\"paragraph-small-regular text-zinc-600\">\n {isBrazil\n ? translate('common.billing.requiredData.description')\n : translate('common.billing.requiredData.descriptionInternational')}\n </span>\n\n <Controller\n name=\"country\"\n control={control}\n render={({ field }) => (\n <SelectField\n label={translate('common.billing.requiredData.country')}\n placeholder={translate('common.billing.requiredData.select')}\n value={field.value || undefined}\n onChange={(value) =>\n setValue('country', String(value), { shouldValidate: true })\n }\n options={COUNTRY_OPTIONS}\n error={!!errors.country}\n errorMessage={errors.country?.message}\n />\n )}\n />\n </>\n )}\n\n <FormField\n label={\n isBrazil && isCompany\n ? translate('common.billing.requiredData.companyName')\n : translate('common.billing.requiredData.fullName')\n }\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.financialName}\n errorMessage={errors.financialName?.message}\n {...register('financialName')}\n />\n\n {isBrazil && (\n <FormField\n label={translate('common.billing.requiredData.document')}\n placeholder={translate('common.billing.requiredData.documentPlaceholder')}\n error={!!errors.document}\n errorMessage={errors.document?.message}\n {...register('document', {\n onChange: (event) => handleDocumentChange(event.target.value),\n })}\n />\n )}\n\n <FormField\n label={translate('common.billing.requiredData.financialEmail')}\n placeholder={translate('common.billing.requiredData.financialEmailPlaceholder')}\n type=\"email\"\n error={!!errors.financialEmail}\n errorMessage={errors.financialEmail?.message}\n {...register('financialEmail')}\n />\n </div>\n\n {isBrazil && (\n <>\n <div className=\"h-px bg-zinc-200\" />\n\n <div className=\"flex flex-col gap-5\">\n <span className=\"paragraph-small-semibold text-zinc-950\">\n {translate('common.billing.requiredData.addressHeading')}\n </span>\n\n <FormField\n label={translate('common.billing.requiredData.cep')}\n placeholder=\"_____-___\"\n error={!!errors.cep}\n errorMessage={errors.cep?.message}\n {...register('cep', {\n onChange: (event) => handleCepChange(event.target.value),\n })}\n />\n\n <div className=\"flex gap-4\">\n <div className=\"flex-[3]\">\n <FormField\n label={translate('common.billing.requiredData.street')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.street}\n errorMessage={errors.street?.message}\n {...register('street')}\n />\n </div>\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.streetNumber')}\n placeholder=\"000\"\n error={!!errors.streetNumber}\n errorMessage={errors.streetNumber?.message}\n {...register('streetNumber')}\n />\n </div>\n </div>\n\n <div className=\"flex gap-4\">\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.neighborhood')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.neighborhood}\n errorMessage={errors.neighborhood?.message}\n {...register('neighborhood')}\n />\n </div>\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.complement')}\n optional\n placeholder={translate('common.billing.requiredData.typeHere')}\n {...register('complement')}\n />\n </div>\n </div>\n\n <div className=\"flex gap-4\">\n <div className=\"flex-1\">\n <FormField\n label={translate('common.billing.requiredData.city')}\n placeholder={translate('common.billing.requiredData.typeHere')}\n error={!!errors.city}\n errorMessage={errors.city?.message}\n {...register('city')}\n />\n </div>\n <div className=\"flex-1\">\n <Controller\n name=\"state\"\n control={control}\n render={({ field }) => (\n <SelectField\n label={translate('common.billing.requiredData.state')}\n placeholder={translate('common.billing.requiredData.select')}\n value={field.value || undefined}\n onChange={(value) =>\n setValue('state', String(value), { shouldValidate: true })\n }\n options={BR_STATE_OPTIONS}\n error={!!errors.state}\n errorMessage={errors.state?.message}\n />\n )}\n />\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n\n <div className=\"flex items-center justify-end p-4 lg:p-5 border-t border-zinc-200 shrink-0\">\n <Button\n type=\"submit\"\n className=\"h-10! w-full lg:w-fit\"\n disabled={!isValid || isSubmitting}\n loading={isSubmitting}\n >\n {isSubmitting\n ? translate('common.billing.requiredData.submitting')\n : submitLabel ?? translate('common.billing.requiredData.submit')}\n </Button>\n </div>\n </form>\n );\n}\n"],"mappings":";AAuPU,SAyBE,UAzBF,KAyBE,YAzBF;AAlPV,SAAS,WAAW,SAAS,cAAc;AAC3C,SAAS,YAAY,eAAe;AACpC,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,aAAa;AACtB,OAAO,OAAO;AAEd,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,eAAe,wBAAwB;AAChD,SAAS,aAAa,kBAAkB;AAoBxC,MAAM,kBAAkB,UAAU,IAAI,CAAC,aAA4C;AAAA,EACjF,OAAO,QAAQ;AAAA,EACf,OAAO,QAAQ;AACjB,EAAE;AAEF,MAAM,6BAAuE;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,kBAAkB,UAA2B;AACpD,SAAO,SAAS,QAAQ,OAAO,EAAE,EAAE,SAAS;AAC9C;AAEA,SAAS,uBAAuB,WAAwB;AACtD,QAAM,OAAO,EAAE,OAAO;AAAA,IACpB,UAAU,EAAE,OAAO,EAAE,KAAK;AAAA,IAC1B,eAAe,EACZ,OAAO,EACP,KAAK,EACL,IAAI,GAAG,UAAU,2CAA2C,CAAC;AAAA,IAChE,gBAAgB,EACb,OAAO,EACP,KAAK,EACL,IAAI,GAAG,UAAU,2CAA2C,CAAC,EAC7D,MAAM,UAAU,0CAA0C,CAAC;AAAA,IAC9D,KAAK,EAAE,OAAO,EAAE,KAAK;AAAA,IACrB,QAAQ,EAAE,OAAO,EAAE,KAAK;AAAA,IACxB,cAAc,EAAE,OAAO,EAAE,KAAK;AAAA,IAC9B,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,IACvC,cAAc,EAAE,OAAO,EAAE,KAAK;AAAA,IAC9B,MAAM,EAAE,OAAO,EAAE,KAAK;AAAA,IACtB,OAAO,EAAE,OAAO,EAAE,KAAK;AAAA,IACvB,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,UAAU,2CAA2C,CAAC;AAAA,EAC1F,CAAC;AAED,SAAO,KAAK,YAAY,CAAC,MAAM,QAAQ;AACrC,QAAI,KAAK,YAAY,KAAM;AAE3B,eAAW,SAAS,4BAA4B;AAC9C,UAAI,CAAC,KAAK,KAAK,GAAG;AAChB,YAAI,SAAS;AAAA,UACX,MAAM;AAAA,UACN,MAAM,CAAC,KAAK;AAAA,UACZ,SAAS,UAAU,2CAA2C;AAAA,QAChE,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,KAAK,IAAI,QAAQ,OAAO,EAAE,EAAE,WAAW,GAAG;AAC5C,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,KAAK;AAAA,QACZ,SAAS,UAAU,wCAAwC;AAAA,MAC7D,CAAC;AAAA,IACH;AAEA,UAAM,YAAY,kBAAkB,KAAK,QAAQ;AACjD,UAAM,SAAS,KAAK,SAAS,QAAQ,OAAO,EAAE;AAE9C,QAAI,OAAO,YAAY,YAAY,KAAK,KAAK;AAC3C,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,UAAU;AAAA,QACjB,SAAS,YACL,UAAU,yCAAyC,IACnD,UAAU,wCAAwC;AAAA,MACxD,CAAC;AACD;AAAA,IACF;AAEA,UAAM,UAAU,YAAY,YAAY,MAAM,IAAI,WAAW,MAAM;AACnE,QAAI,CAAC,SAAS;AACZ,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,UAAU;AAAA,QACjB,SAAS,YACL,UAAU,iDAAiD,IAC3D,UAAU,gDAAgD;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AASO,SAAS,gBAAgB,EAAE,SAAS,SAAS,SAAS,YAAY,GAAyB;AAChG,QAAM,YAAY,gBAAgB;AAClC,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,EAAE,aAAa,kBAAkB,IAAI,qBAAqB;AAChE,QAAM,EAAE,aAAa,UAAU,IAAI,UAAU;AAE7C,QAAM,cAAc,OAAO,KAAK;AAEhC,QAAM,SAAS;AAAA,IACb,MAAM,uBAAuB,SAAS;AAAA,IACtC,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,OAAO,QAA+B;AAAA,IAC1C,UAAU,YAAY,MAAM;AAAA,IAC5B,MAAM;AAAA,IACN,eAAe;AAAA,MACb,UAAU;AAAA,MACV,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS,WAAW;AAAA,IACtB;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,EAAE,QAAQ,cAAc,QAAQ;AAAA,EAC7C,IAAI;AAEJ,QAAM,YAAY,kBAAkB,MAAM,UAAU,CAAC;AACrD,QAAM,WAAW,MAAM,SAAS,MAAM;AAEtC,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,YAAY,QAAS;AACrC,gBAAY,UAAU;AAEtB,UAAM;AAAA,MACJ,UAAU,cAAc,QAAQ,sBAAsB,EAAE;AAAA,MACxD,eAAe,QAAQ,kBAAkB;AAAA,MACzC,gBAAgB,QAAQ,mBAAmB,MAAM,SAAS;AAAA,MAC1D,KAAK,QAAQ,WAAW;AAAA,MACxB,QAAQ,QAAQ,WAAW;AAAA,MAC3B,cAAc,QAAQ,kBAAkB;AAAA,MACxC,YAAY,QAAQ,sBAAsB;AAAA,MAC1C,cAAc,QAAQ,gBAAgB;AAAA,MACtC,MAAM,QAAQ,QAAQ;AAAA,MACtB,OAAO,QAAQ,SAAS;AAAA,MACxB,SAAS,YAAY,QAAQ,WAAW,eAAe,KAAK;AAAA,IAC9D,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,SAAS,OAAO,MAAM,KAAK,CAAC;AAEzC,QAAM,uBAAuB,CAAC,aAAqB;AACjD,aAAS,YAAY,cAAc,QAAQ,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAAA,EACxE;AAEA,QAAM,kBAAkB,CAAC,aAAqB;AAC5C,aAAS,OAAO,iBAAiB,QAAQ,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAEpE,UAAM,SAAS,SAAS,QAAQ,OAAO,EAAE;AACzC,QAAI,OAAO,WAAW,EAAG;AAEzB,cAAU,MAAM,EACb,KAAK,CAAC,SAAS;AACd,eAAS,UAAU,KAAK,YAAY,EAAE,gBAAgB,KAAK,CAAC;AAC5D,eAAS,gBAAgB,KAAK,QAAQ,EAAE,gBAAgB,KAAK,CAAC;AAC9D,eAAS,QAAQ,KAAK,YAAY,EAAE,gBAAgB,KAAK,CAAC;AAC1D,eAAS,SAAS,KAAK,IAAI,EAAE,gBAAgB,KAAK,CAAC;AAAA,IACrD,CAAC,EACA,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnB;AAEA,iBAAe,SAAS,MAA6B;AACnD,UAAM,UACJ,KAAK,YAAY,OACb;AAAA,MACE,yBAAyB,kBAAkB,KAAK,QAAQ,IAAI,IAAI;AAAA,MAChE,oBAAoB,KAAK;AAAA,MACzB,gBAAgB,KAAK;AAAA,MACrB,iBAAiB,KAAK;AAAA,MACtB,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,gBAAgB,KAAK;AAAA,MACrB,oBAAoB,KAAK,cAAc;AAAA,MACvC,cAAc,KAAK;AAAA,MACnB,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,IAChB,IACA;AAAA,MACE,gBAAgB,KAAK;AAAA,MACrB,iBAAiB,KAAK;AAAA,MACtB,SAAS,KAAK;AAAA,IAChB;AAEN,QAAI;AACF,YAAM,kBAAkB,OAAO;AAC/B,YAAM;AAAA,QACJ,CAAC,MACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,UAAU,0CAA0C;AAAA,YAC7D,SAAS;AAAA;AAAA,QACX;AAAA,QAEF,EAAE,UAAU,IAAK;AAAA,MACnB;AACA,cAAQ;AAAA,IACV,SAAS,OAAO;AACd,YAAM,UACJ,iBAAiB,SAAS,MAAM,UAC5B,MAAM,UACN,UAAU,wCAAwC;AACxD,YAAM,OAAO,CAAC,MAAM,oBAAC,SAAM,SAAQ,SAAQ,SAAkB,SAAS,GAAG,GAAI;AAAA,QAC3E,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SACE,qBAAC,UAAK,UAAU,aAAa,QAAQ,GAAG,WAAU,gCAA+B,YAAU,MACzF;AAAA,yBAAC,SAAI,WAAU,yDACb;AAAA,2BAAC,SAAI,WAAU,uBACZ;AAAA,SAAC,WACA,iCACE;AAAA,8BAAC,UAAK,WAAU,yCACb,qBACG,UAAU,yCAAyC,IACnD,UAAU,sDAAsD,GACtE;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL;AAAA,cACA,QAAQ,CAAC,EAAE,MAAM,MACf;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO,UAAU,qCAAqC;AAAA,kBACtD,aAAa,UAAU,oCAAoC;AAAA,kBAC3D,OAAO,MAAM,SAAS;AAAA,kBACtB,UAAU,CAAC,UACT,SAAS,WAAW,OAAO,KAAK,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAAA,kBAE7D,SAAS;AAAA,kBACT,OAAO,CAAC,CAAC,OAAO;AAAA,kBAChB,cAAc,OAAO,SAAS;AAAA;AAAA,cAChC;AAAA;AAAA,UAEJ;AAAA,WACF;AAAA,QAGF;AAAA,UAAC;AAAA;AAAA,YACC,OACE,YAAY,YACR,UAAU,yCAAyC,IACnD,UAAU,sCAAsC;AAAA,YAEtD,aAAa,UAAU,sCAAsC;AAAA,YAC7D,OAAO,CAAC,CAAC,OAAO;AAAA,YAChB,cAAc,OAAO,eAAe;AAAA,YACnC,GAAG,SAAS,eAAe;AAAA;AAAA,QAC9B;AAAA,QAEC,YACC;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,UAAU,sCAAsC;AAAA,YACvD,aAAa,UAAU,iDAAiD;AAAA,YACxE,OAAO,CAAC,CAAC,OAAO;AAAA,YAChB,cAAc,OAAO,UAAU;AAAA,YAC9B,GAAG,SAAS,YAAY;AAAA,cACvB,UAAU,CAAC,UAAU,qBAAqB,MAAM,OAAO,KAAK;AAAA,YAC9D,CAAC;AAAA;AAAA,QACH;AAAA,QAGF;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,UAAU,4CAA4C;AAAA,YAC7D,aAAa,UAAU,uDAAuD;AAAA,YAC9E,MAAK;AAAA,YACL,OAAO,CAAC,CAAC,OAAO;AAAA,YAChB,cAAc,OAAO,gBAAgB;AAAA,YACpC,GAAG,SAAS,gBAAgB;AAAA;AAAA,QAC/B;AAAA,SACF;AAAA,MAEC,YACC,iCACE;AAAA,4BAAC,SAAI,WAAU,oBAAmB;AAAA,QAElC,qBAAC,SAAI,WAAU,uBACb;AAAA,8BAAC,UAAK,WAAU,0CACb,oBAAU,4CAA4C,GACzD;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO,UAAU,iCAAiC;AAAA,cAClD,aAAY;AAAA,cACZ,OAAO,CAAC,CAAC,OAAO;AAAA,cAChB,cAAc,OAAO,KAAK;AAAA,cACzB,GAAG,SAAS,OAAO;AAAA,gBAClB,UAAU,CAAC,UAAU,gBAAgB,MAAM,OAAO,KAAK;AAAA,cACzD,CAAC;AAAA;AAAA,UACH;AAAA,UAEA,qBAAC,SAAI,WAAU,cACb;AAAA,gCAAC,SAAI,WAAU,YACb;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,UAAU,oCAAoC;AAAA,gBACrD,aAAa,UAAU,sCAAsC;AAAA,gBAC7D,OAAO,CAAC,CAAC,OAAO;AAAA,gBAChB,cAAc,OAAO,QAAQ;AAAA,gBAC5B,GAAG,SAAS,QAAQ;AAAA;AAAA,YACvB,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,UACb;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,UAAU,0CAA0C;AAAA,gBAC3D,aAAY;AAAA,gBACZ,OAAO,CAAC,CAAC,OAAO;AAAA,gBAChB,cAAc,OAAO,cAAc;AAAA,gBAClC,GAAG,SAAS,cAAc;AAAA;AAAA,YAC7B,GACF;AAAA,aACF;AAAA,UAEA,qBAAC,SAAI,WAAU,cACb;AAAA,gCAAC,SAAI,WAAU,UACb;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,UAAU,0CAA0C;AAAA,gBAC3D,aAAa,UAAU,sCAAsC;AAAA,gBAC7D,OAAO,CAAC,CAAC,OAAO;AAAA,gBAChB,cAAc,OAAO,cAAc;AAAA,gBAClC,GAAG,SAAS,cAAc;AAAA;AAAA,YAC7B,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,UACb;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,UAAU,wCAAwC;AAAA,gBACzD,UAAQ;AAAA,gBACR,aAAa,UAAU,sCAAsC;AAAA,gBAC5D,GAAG,SAAS,YAAY;AAAA;AAAA,YAC3B,GACF;AAAA,aACF;AAAA,UAEA,qBAAC,SAAI,WAAU,cACb;AAAA,gCAAC,SAAI,WAAU,UACb;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,UAAU,kCAAkC;AAAA,gBACnD,aAAa,UAAU,sCAAsC;AAAA,gBAC7D,OAAO,CAAC,CAAC,OAAO;AAAA,gBAChB,cAAc,OAAO,MAAM;AAAA,gBAC1B,GAAG,SAAS,MAAM;AAAA;AAAA,YACrB,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,UACb;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL;AAAA,gBACA,QAAQ,CAAC,EAAE,MAAM,MACf;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO,UAAU,mCAAmC;AAAA,oBACpD,aAAa,UAAU,oCAAoC;AAAA,oBAC3D,OAAO,MAAM,SAAS;AAAA,oBACtB,UAAU,CAAC,UACT,SAAS,SAAS,OAAO,KAAK,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAAA,oBAE3D,SAAS;AAAA,oBACT,OAAO,CAAC,CAAC,OAAO;AAAA,oBAChB,cAAc,OAAO,OAAO;AAAA;AAAA,gBAC9B;AAAA;AAAA,YAEJ,GACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OAEJ;AAAA,IAEA,oBAAC,SAAI,WAAU,8EACb;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,CAAC,WAAW;AAAA,QACtB,SAAS;AAAA,QAER,yBACG,UAAU,wCAAwC,IAClD,eAAe,UAAU,oCAAoC;AAAA;AAAA,IACnE,GACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1162,11 +1162,8 @@ const messages = {
1162
1162
  addressHeading: "Billing address",
1163
1163
  select: "Select",
1164
1164
  typeHere: "Type here",
1165
- personType: "Entity type",
1166
- personTypePf: "Individual",
1167
- personTypePj: "Company",
1168
- cpf: "CPF",
1169
- cnpj: "CNPJ",
1165
+ document: "CPF or CNPJ",
1166
+ documentPlaceholder: "Enter your CPF or CNPJ",
1170
1167
  fullName: "Full name",
1171
1168
  companyName: "Legal name",
1172
1169
  financialEmail: "Billing email",
@@ -1190,8 +1187,8 @@ const messages = {
1190
1187
  invalidCep: "Invalid ZIP code",
1191
1188
  invalidCpf: "Invalid CPF",
1192
1189
  invalidCnpj: "Invalid CNPJ",
1193
- invalidCpfChecksum: "Invalid CPF \u2014 check the verification digits",
1194
- invalidCnpjChecksum: "Invalid CNPJ \u2014 check the verification digits"
1190
+ invalidCpfChecksum: "Invalid CPF, check the verification digits",
1191
+ invalidCnpjChecksum: "Invalid CNPJ, check the verification digits"
1195
1192
  }
1196
1193
  },
1197
1194
  navigation: {