{"version":3,"sources":["../src/index.ts","../src/components/Form/index.tsx","../src/components/hooks/useError.ts","../src/utils/utm.ts","../src/components/styles/utils.ts","../src/components/Form/styles.ts","../src/components/styles/global.ts","../src/components/Input/index.tsx","../src/components/Input/masks.ts","../src/components/Input/styles.ts","../src/components/Button/styles.ts","../src/components/Button/index.tsx","../src/components/Alert/index.tsx","../src/components/Alert/styles.ts","../src/components/PhoneInput/index.tsx","../src/components/PhoneInput/styles.ts","../src/components/ProductSelect/index.tsx","../src/components/ProductSelect/styles.ts"],"sourcesContent":["export { default as MitreFormComponent } from \"./components/Form\";\nexport type { MitreFormComponentProps } from \"./components/Form\";\n","import React, { useState } from \"react\";\nimport { useError } from \"../hooks/useError\";\nimport { useForm, SubmitHandler, Controller } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\n\nimport { UTM, isBrowser, resolveUtmWithPriority } from '../../utils/utm';\nimport { Product } from '../../domain/Product';\n\nimport { PhoneNumberUtil } from 'google-libphonenumber';\nconst phoneUtil = PhoneNumberUtil.getInstance();\n\nimport {\n  FormContainer,\n  HeaderContainer,\n  ButtonContainer,\n  Form,\n  Title,\n  Text\n} from \"./styles\";\nimport FontLoader, { GlobalStyles } from \"../styles/global\";\n\nimport { Input } from \"../Input\";\nimport { Button } from \"../Button\";\nimport { Alert } from \"../Alert\";\nimport { PhoneInput } from \"../PhoneInput\";\nimport { ProductSelect } from \"../ProductSelect\";\n\nexport interface MitreFormComponentProps {\n  products: Product[];\n  apiUrl: string;\n  apiToken: string;\n  showHeader?: boolean;\n  backgroundColor?: string;\n  buttonBackgroundColor?: string;\n  buttonTextColor?: string;\n  textColor?: string;\n  innerPadding?: string;\n  inputBackgroundColor?: string;\n  inputFocusBorderColor?: string;\n  inputBorderColor?: string;\n  inputTextColor?: string;\n  inputPlaceholderColor?: string;\n}\n\ninterface RequestBody {\n  name: string;\n  email: string;\n  phone: string;\n  message: string;\n  productId: string;\n  utm_source: string;\n  utm_medium?: string;\n  utm_campaign?: string;\n  utm_term?: string;\n}\n\nconst isPhoneValid = (phone: string) => {\n  try {\n    return phoneUtil.isValidNumber(phoneUtil.parseAndKeepRawInput(phone));\n  } catch (error) {\n    console.log('erro ao validar telefone = ' + error)\n    return false;\n  }\n};\n\n// Schema base sem productId\nconst baseSchema = {\n  name: yup.string().required(\"Nome é obrigatório\"),\n  email: yup.string().required(\"Email é obrigatório\").email(\"Email inválido\"),\n  phone: yup.object().shape({\n    phone: yup.string().required(\"Telefone é obrigatório!\")\n      .test(\n        'is-valid-phone',\n        'Número de telefone inválido!',\n        function (value) {\n          const digitsOnly = value?.replace(/\\D/g, '') || '';\n          return digitsOnly.length >= 8 && isPhoneValid(value)\n        }),\n    inputValue: yup.string().required(\"Telefone é obrigatório!\"),\n    dialCode: yup.string().required(\"Código de país é obrigatório\")\n  }),\n};\n\n// Schema com productId quando necessário\nconst schemaWithProduct = yup.object().shape({\n  ...baseSchema,\n  productId: yup.string().required(\"Produto é obrigatório\"),\n});\n\nconst schema = yup.object().shape(baseSchema);\n\nconst MitreFormComponent = React.forwardRef<HTMLDivElement, MitreFormComponentProps>(({\n  products,\n  apiUrl,\n  apiToken,\n  showHeader = true,\n  backgroundColor = \"var(--gray-180)\",\n  textColor = \"var(--black)\",\n  buttonBackgroundColor = \"#F6C76B\",\n  buttonTextColor = \"var(--black)\",\n  innerPadding = \"1rem\",\n  inputBackgroundColor = \"var(--white)\",\n  inputBorderColor = \"var(--transparent)\",\n  inputFocusBorderColor = \"var(--yellow-500)\",\n  inputPlaceholderColor = \"var(--gray-100)\",\n  inputTextColor = \"var(--black)\",\n}, ref) => {\n  const [loading, setIsLoading] = useState(false);\n  const { error, handleError, clearError } = useError();\n  const [successMessage, setSuccessMessage] = useState('');\n  const [formKey, setFormKey] = useState(0);\n  const [selectedProductId, setSelectedProductId] = useState<number | null>(null);\n\n  // Validação do array de produtos\n  const validateProducts = (): string | null => {\n    if (!products) {\n      return \"Lista de produtos não foi fornecida\";\n    }\n\n    if (!Array.isArray(products)) {\n      return \"Lista de produtos deve ser um array\";\n    }\n\n    if (products.length === 0) {\n      return \"Lista de produtos não pode estar vazia\";\n    }\n\n    // Validar cada produto no array\n    for (let i = 0; i < products.length; i++) {\n      const product = products[i];\n\n      if (!product) {\n        return `Produto na posição ${i} é inválido (nulo/undefined)`;\n      }\n\n      if (typeof product.id !== 'number' || product.id <= 0) {\n        return `Produto na posição ${i} possui ID inválido (deve ser um número positivo)`;\n      }\n\n      if (typeof product.name !== 'string' || product.name.trim().length === 0) {\n        return `Produto na posição ${i} possui nome inválido (deve ser uma string não vazia)`;\n      }\n    }\n\n    return null;\n  };\n\n  const productsValidationError = validateProducts();\n\n  // UTM resolved inside the component (URL > localStorage (7d TTL) > referrer)\n  const [utm, setUtm] = useState<UTM>({ utm_source: 'direto', createdAt: new Date().toISOString() });\n\n  // Usar schema com productId se houver mais de 1 produto\n  const formSchema = products && products.length > 1 ? schemaWithProduct : schema;\n\n  const { control, register, handleSubmit, formState: { errors }, reset, clearErrors } = useForm<{\n    name: string;\n    email: string;\n    phone: { phone: string; inputValue: string; dialCode: string; };\n    productId?: string;\n  }>({\n    resolver: yupResolver(formSchema),\n    mode: 'onSubmit',\n  });\n\n  React.useEffect(() => {\n    if (!isBrowser()) return;\n    const { data } = resolveUtmWithPriority(new Date());\n    setUtm(data);\n  }, []);\n\n  const resetForm = () => {\n    const resetData: any = {\n      name: \"\",\n      email: \"\",\n      phone: { phone: \"\", inputValue: \"\", dialCode: \"\" },\n    };\n\n    // Incluir productId no reset se houver mais de 1 produto\n    if (products && products.length > 1) {\n      resetData.productId = \"\";\n      setSelectedProductId(null);\n    }\n\n    reset(resetData, {\n      keepErrors: false,\n      keepDirty: false,\n      keepTouched: false,\n      keepIsSubmitted: false,\n      keepSubmitCount: false,\n      keepValues: false,\n      keepDefaultValues: false,\n    });\n    clearErrors();\n    setFormKey(k => k + 1); // Force remount\n  };\n\n  const sendMessage: SubmitHandler<{\n    name: string;\n    email: string;\n    phone: { phone: string; inputValue: string; dialCode: string; };\n    productId?: string;\n  }> = async (data) => {\n    const { name, email, phone, productId } = data;\n\n    const phoneValue = phone.inputValue;\n    const phoneDigitsOnly = phoneValue?.replace(/\\D/g, '') || '';\n\n    const message = \"Gostaria de mais informações sobre o produto\";\n\n    try {\n      setIsLoading(true);\n\n      if (!products || products.length === 0 || !apiToken) {\n        throw new Error(\"Parâmetros obrigatórios não informados\");\n      }\n\n      // Determinar qual produto usar\n      let selectedProduct: Product;\n\n      if (products.length === 1) {\n        // Se há apenas 1 produto, usar ele\n        selectedProduct = products[0];\n      } else {\n        // Se há múltiplos produtos, usar o selecionado\n        if (!productId) {\n          throw new Error(\"Produto deve ser selecionado\");\n        }\n        const foundProduct = products.find(p => p.id.toString() === productId);\n        if (!foundProduct) {\n          throw new Error(\"Produto selecionado não encontrado\");\n        }\n        selectedProduct = foundProduct;\n      }\n\n      const requestBody: RequestBody = {\n        name,\n        email,\n        phone: phoneDigitsOnly,\n        message,\n        productId: selectedProduct.id.toString(),\n        utm_source: utm.utm_source,\n        utm_campaign: utm.utm_campaign,\n        utm_medium: utm.utm_medium,\n        utm_term: utm.utm_term,\n      };\n\n      console.log('requestBody = ' + JSON.stringify(requestBody));\n\n      const response = await fetch(`${apiUrl}/leads`, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: `Basic ${apiToken}`,\n        },\n        body: JSON.stringify(requestBody),\n      });\n\n      if (!response.ok) {\n        console.log('response = ' + JSON.stringify(response))\n        throw new Error(\"Falha ao enviar a mensagem!\");\n      }\n\n      setSuccessMessage(\"Mensagem enviada com sucesso!\");\n      resetForm();\n    } catch (err) {\n      handleError(err);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  // Se houver erro na validação dos produtos, renderizar erro no lugar do formulário\n  if (productsValidationError) {\n    // Logar o erro específico no console para debug\n    console.error('Erro na validação dos produtos:', productsValidationError);\n\n    return (\n      <>\n        <FontLoader />\n        <GlobalStyles />\n\n        <FormContainer $backgroundColor={backgroundColor} $innerPadding={innerPadding} ref={ref}>\n          <HeaderContainer>\n            <Title $textColor={textColor}>Erro no carregamento do formulário!</Title>\n            <Text $textColor={textColor}>\n              Não foi possível carregar o formulário. Tente novamente mais tarde.\n            </Text>\n          </HeaderContainer>\n        </FormContainer>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <FontLoader />\n      <GlobalStyles />\n\n      {error && (\n        <Alert\n          type=\"error\"\n          dismissible\n          onDismiss={clearError}\n          autoDismiss={5000}\n        >\n          {error!.message}\n        </Alert>\n      )}\n\n      {successMessage && (\n        <Alert\n          type=\"success\"\n          dismissible\n          onDismiss={() => setSuccessMessage('')}\n          autoDismiss={5000}\n        >\n          {successMessage}\n        </Alert>\n      )}\n\n      <FormContainer $backgroundColor={backgroundColor} $innerPadding={innerPadding} ref={ref} >\n        {showHeader &&\n          <HeaderContainer>\n            <Title $textColor={textColor}>Atendimento por mensagem</Title>\n\n            <Text $textColor={textColor}>Informe seus dados e retornaremos a mensagem.</Text>\n          </HeaderContainer>\n        }\n\n        <Form $textColor={textColor} onSubmit={handleSubmit(sendMessage)} noValidate>\n          {products.length > 1 && (\n            <ProductSelect\n              id=\"productId\"\n              label=\"Produto de interesse *\"\n              placeholder=\"Selecione um produto\"\n              {...register(\"productId\")}\n              error={errors.productId?.message}\n              products={products}\n              required\n              labelTextColor={textColor}\n              backgroundColor={inputBackgroundColor}\n              borderColor={inputBorderColor}\n              focusBorderColor={inputFocusBorderColor}\n              textColor={inputTextColor}\n            />\n          )}\n\n          <Input\n            id=\"name\"\n            label=\"Nome *\"\n            placeholder=\"Digite seu nome\"\n            {...register(\"name\")}\n            error={errors.name?.message}\n            autoComplete=\"name\"\n            required\n            labelTextColor={textColor}\n            backgroundColor={inputBackgroundColor}\n            borderColor={inputBorderColor}\n            focusBorderColor={inputFocusBorderColor}\n            inputPlaceholderColor={inputPlaceholderColor}\n            inputTextColor={inputTextColor}\n          />\n\n          <Input\n            id=\"email\"\n            label=\"Email *\"\n            type=\"email\"\n            placeholder=\"exemplo@email.com\"\n            {...register(\"email\")}\n            error={errors.email?.message}\n            autoComplete=\"email\"\n            required\n            labelTextColor={textColor}\n            backgroundColor={inputBackgroundColor}\n            borderColor={inputBorderColor}\n            focusBorderColor={inputFocusBorderColor}\n            inputPlaceholderColor={inputPlaceholderColor}\n            inputTextColor={inputTextColor}\n          />\n\n          <Controller\n            key={formKey}\n            name=\"phone\"\n            control={control}\n            defaultValue={{ phone: \"\", inputValue: \"\", dialCode: \"\" }}\n            shouldUnregister={true}\n            render={({ field }) => {\n              const errorMsg =\n                errors.phone?.inputValue?.message ||\n                errors.phone?.phone?.message ||\n                errors.phone?.message;\n\n              return (\n                <PhoneInput\n                  id=\"phone\"\n                  label=\"Telefone *\"\n                  placeholder=\"(11) 00000-0000\"\n                  error={errorMsg}\n                  required\n                  value={field.value.phone}\n                  onChange={field.onChange}\n                  name={field.name}\n                  labelTextColor={textColor}\n                  backgroundColor={inputBackgroundColor}\n                  borderColor={inputBorderColor}\n                  focusBorderColor={inputFocusBorderColor}\n                  inputPlaceholderColor={inputPlaceholderColor}\n                  inputTextColor={inputTextColor}\n                />\n              );\n            }}\n          />\n\n          <h6>* Campos de preenchimento obrigatório.</h6>\n\n          <ButtonContainer>\n            <Button bgColor={buttonBackgroundColor} color={buttonTextColor} type=\"submit\" isSubmitting={loading}>\n              Enviar mensagem\n            </Button>\n          </ButtonContainer>\n\n          <p>A Mitre Realty respeita a sua privacidade e utiliza os seus dados pessoais para contatá-lo por e-mail ou telefone aqui registrados. Para saber mais, acesse a nossa{' '}\n            <a\n              href=\"https://www.mitrerealty.com.br/politica-de-privacidade\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              Política de Privacidade\n            </a>. Ao clicar em {'\"'}enviar{'\"'}, você concorda em permitir que a Mitre Realty, armazene e processe os dados pessoais fornecidos por você para finalidade informada</p>\n\n        </Form>\n      </FormContainer>\n    </>\n  );\n});\n\nMitreFormComponent.displayName = \"MitreFormComponent\";\n\nexport default MitreFormComponent;\n","import { useState } from \"react\";\n\nexport function useError() {\n  const [error, setError] = useState<Error | null>(null);\n\n  const handleError = (err: unknown) => {\n    const errorObj = err instanceof Error ? err : new Error(String(err));\n    setError(errorObj);\n    console.error(errorObj);\n  };\n\n  const clearError = () => setError(null);\n\n  return { error, handleError, clearError };\n}\n","export type UTM = {\n    utm_source: string; // default 'direto'\n    utm_campaign?: string;\n    utm_medium?: string;\n    utm_term?: string;\n    createdAt: string; // ISO 8601\n  };\n  \n  const UTM_STORAGE_KEY = 'utm_meta';\n  const TTL_DAYS = 7;\n  \n  export const isBrowser = () =>\n    typeof window !== 'undefined' && typeof document !== 'undefined';\n  \n  const daysToMs = (days: number) => days * 24 * 60 * 60 * 1000;\n  \n  export function readStoredUtm(maxAgeDays = TTL_DAYS): { data: UTM | null; isValid: boolean } {\n    if (!isBrowser()) return { data: null, isValid: false };\n    try {\n      const raw = window.localStorage.getItem(UTM_STORAGE_KEY);\n      if (!raw) return { data: null, isValid: false };\n      const parsed = JSON.parse(raw) as UTM;\n      if (!parsed?.createdAt) return { data: null, isValid: false };\n      const age = Date.now() - new Date(parsed.createdAt).getTime();\n      const isValid = age <= daysToMs(maxAgeDays);\n      return { data: isValid ? parsed : null, isValid };\n    } catch {\n      return { data: null, isValid: false };\n    }\n  }\n  \n  export function saveUtm(data: Partial<UTM>, now = new Date()): UTM | null {\n    if (!isBrowser()) return null;\n    const payload: UTM = {\n      utm_source: data.utm_source || 'direto',\n      utm_campaign: data.utm_campaign,\n      utm_medium: data.utm_medium,\n      utm_term: data.utm_term,\n      createdAt: now.toISOString(),\n    };\n    try {\n      window.localStorage.setItem(UTM_STORAGE_KEY, JSON.stringify(payload));\n    } catch { /* ignore quota errors */ }\n    return payload;\n  }\n  \n  export function parseUrlUtm(loc?: Location): Partial<UTM> {\n    if (!isBrowser()) return {};\n    const locationObj = loc || window.location;\n    const sp = new URL(locationObj.href).searchParams;\n    const utm_source = sp.get('utm_source') || undefined;\n    const utm_campaign = sp.get('utm_campaign') || undefined;\n    const utm_medium = sp.get('utm_medium') || undefined;\n    const utm_term = sp.get('utm_term') || undefined;\n    return { utm_source, utm_campaign, utm_medium, utm_term };\n  }\n  \n  export function inferSourceFromReferrer(ref?: string): string | undefined {\n    if (!isBrowser()) return undefined;\n    const href = (ref ?? document.referrer ?? '').toLowerCase();\n    if (!href) return 'direto';\n    const hostMatch = href.match(/https?:\\/\\/([^/]+)/);\n    const host = hostMatch?.[1] ?? href;\n    if (/google\\./.test(host) || /^g\\.co$/.test(host) || /^goo\\.gl$/.test(host)) return 'google';\n\n    if (\n      /(^|\\.)facebook\\.com$/.test(host) ||\n      /(^|\\.)m\\.facebook\\.com$/.test(host) ||\n      /(^|\\.)fb\\.com$/.test(host) ||\n      /(^|\\.)fb\\.me$/.test(host) ||\n      /(^|\\.)fb\\.watch$/.test(host) ||\n      /(^|\\.)m\\.me$/.test(host)\n    ) return 'facebook';\n\n    if (\n      /(^|\\.)instagram\\.com$/.test(host) ||\n      /(^|\\.)l\\.instagram\\.com$/.test(host) ||\n      /(^|\\.)instagr\\.am$/.test(host) ||\n      /^ig\\.me$/.test(host)\n    ) return 'instagram';\n\n    if (/(^|\\.)linkedin\\.com$/.test(host) || /^lnkd\\.in$/.test(host)) return 'linkedin';\n\n    if (/^t\\.co$/.test(host) || /(^|\\.)twitter\\.com$/.test(host) || /(^|\\.)x\\.com$/.test(host)) return 'twitter';\n\n    if (/(^|\\.)youtube\\.com$/.test(host) || /^youtu\\.be$/.test(host)) return 'youtube';\n\n    if (/(^|\\.)mail\\.google\\.com$/.test(host)) return 'email';\n\n    if (/(^|\\.)outlook\\.live\\.com$/.test(host) || /(^|\\.)outlook\\.office\\.com$/.test(host)) return 'email';\n\n    if (/^(wa\\.me)$/.test(host) || /(^|\\.)api\\.whatsapp\\.com$/.test(host) || /(^|\\.)web\\.whatsapp\\.com$/.test(host)) return 'whatsapp';\n\n    if (/^t\\.me$/.test(host)) return 'telegram';\n\n    if (/(^|\\.)tiktok\\.com$/.test(host)) return 'tiktok';\n    return 'direto';\n  }\n  \n  /** Resolve UTM e persiste quando necessário. Prioridade: localStorage (válido) > URL > referrer */\n  export function resolveUtmWithPriority(\n    now = new Date(),\n    propOverride?: Partial<UTM>\n  ): { data: UTM; source: 'localStorage' | 'url' | 'referrer' } {\n    // 1) Se houver UTM válido no localStorage (<= 7 dias), usar SEM sobrescrever\n    const stored = readStoredUtm();\n    if (stored.data) {\n      const merged = { ...stored.data, ...propOverride } as UTM;\n      return { data: merged, source: 'localStorage' };\n    }\n  \n    // 2) Se NÃO houver válido no localStorage, tentar URL. Se houver, salvar e usar\n    const fromUrl = parseUrlUtm();\n    if (fromUrl.utm_source) {\n      const saved = saveUtm(fromUrl, now)!;\n      const merged = { ...saved, ...propOverride } as UTM;\n      return { data: merged, source: 'url' };\n    }\n  \n    // 3) Fallback: inferir do referrer, apenas ler (não salvar no localStorage)\n    const utm_source = inferSourceFromReferrer();\n    const payload: UTM = {\n      utm_source: utm_source || 'direto',\n      utm_campaign: propOverride?.utm_campaign,\n      utm_medium: propOverride?.utm_medium,\n      utm_term: propOverride?.utm_term,\n      createdAt: now.toISOString(),\n    };\n    return { data: payload, source: 'referrer' };\n  }","type directionType = \"column\" | \"row\";\ntype alignItemsType = \"center\" | \"flex-start\";\n\ntype jutifyContentType = \"center\" | \"space-between\";\n\nexport function flex(\n  direction: directionType = \"row\",\n  alignItems?: alignItemsType,\n  justifyContent?: jutifyContentType\n) {\n  return `\n    align-items:${alignItems || null};\n    display:flex;\n    flex-direction:${direction};\n    justify-content:${justifyContent || null};\n  `;\n}\n\nexport const alignX = `\n  left:50%;\n  transform:translateX(-50%);\n`;\n\nexport const alignXAndY = `\n  left:50%;\n  top:50%;\n  transform:translate(-50%, -50%);\n`;\n\nexport const darkEffect = `\n  &:hover {\n    cursor:pointer;\n    filter:brightness(98%);\n  }\n\n  &:active {\n    filter:brightness(95%);\n  }\n`;\n\nexport const opacityEffect = `\n  &:hover {\n    cursor:pointer;\n    opacity:.9;\n  }\n\n  &:active {\n    opacity:.7;\n  }\n`;\n\nexport const modalZIndex = 9999;\n\nexport const breakpoints = {\n  tablet: \"1024px\",\n};\n","import { flex, opacityEffect } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const FormContainer = styled.div<{\n  $backgroundColor: string;\n  $innerPadding: string;\n}>`\n  ${flex(\"column\")}\n  align-items: stretch;\n  justify-content: flex-start;\n  overflow-x: hidden;\n  overflow-y: auto;\n\n  background: ${(props) => props.$backgroundColor || \"var(--gray-180)\"};\n\n  padding: ${(props) => props.$innerPadding || \"1rem\"};\n\n  /* Hide scrollbars for WebKit browsers */\n  ::-webkit-scrollbar {\n    display: none;\n  }\n\n  /* Hide scrollbars for Firefox */\n  scrollbar-width: none;\n\n  box-sizing: border-box;\n  height: 100%;\n`;\n\nexport const HeaderContainer = styled.div`\n  margin-bottom: 1rem;\n`;\n\nexport const ButtonContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  margin-top: 0.75rem;\n\n  button {\n    ${opacityEffect}\n    color: var(--black);\n    font-weight: 600;\n    border: none;\n    border-radius: 8px;\n    width: 60%;\n    margin-top: 10px;\n    margin-bottom: 10px;\n  }\n`;\n\nexport const Form = styled.form<{ $textColor: string }>`\n  label {\n    font-weight: 700;\n  }\n\n  input {\n    margin-bottom: 0.75rem;\n  }\n\n  p {\n    font-family: \"Montserrat\", sans-serif;\n    font-style: italic;\n    font-weight: 200;\n    font-size: 0.8rem;\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n    text-align: start;\n  }\n\n  a {\n    font-family: \"Montserrat\", sans-serif;\n    font-style: italic;\n    font-weight: 200;\n    font-size: 0.8rem;\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n  }\n\n  h6 {\n    text-align: start;\n    margin-left: 10px;\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n  }\n\n  & > div {\n    margin-bottom: 10px;,\n  }\n`;\n\nexport const Title = styled.h2<{ $textColor: string }>`\n  font-size: 1.25rem;\n  font-weight: 700;\n  line-height: 24px;\n  letter-spacing: 0em;\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const Text = styled.p<{ $textColor: string }>`\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 23px;\n  letter-spacing: 0em;\n  margin-top: 10px;\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n","import { createGlobalStyle } from \"styled-components\";\nimport React, { useEffect } from \"react\";\n\nexport const GlobalStyles = createGlobalStyle`\n  :root {\n    --red: #e52e4d;\n    --white: #FFF;\n    --black: #2F2F2F;\n    --black-2:#1E1E1E;\n    --alphaBlack: #000000;\n    --black-2:#1E1E1E;\n    --black-3:#353535;\n\n    --yellow-400:#FFD789;\n    --yellow-500: #F6C76B;\n    --gray-40:#F0F0F0;\n    --gray-45:#767676;\n    --gray-50: #686A69;\n    --gray-60: #8F8F8F;\n    --gray-100: #B6B6B6;\n    --gray-150: #B9B9B9;\n    --gray-180: #CECECE;\n    --gray-200: #D2D2D2;\n    --gray-300: #EBEBEB;\n    --gray-400: #ECECEC;\n    --gray-500: #F4F4F4;\n    --gray-550:#6F6F6F;\n    --gray-600:#686868;\n    --gray-700: #535353;\n    --gray-800:#9D9D9D;\n    --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);\n    --green:#57C06E;\n    --green-2:#2DCE68;\n    --blue:#007BFF;\n\n    --transparent: transparent;\n  }\n\n  * {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n  }\n\n  html {\n    scroll-behavior: smooth;\n\n    @media (max-width: 1080px) {\n      font-size: 93.75%;\n    }\n    @media (max-width: 720px) {\n      font-size: 87.5%;\n    }\n  }\n\n  body {\n    background: var(--white);\n    -webkit-font-smoothing: antialiased;\n  }\n\n  body, input, textarea, select, button {\n    font-family: \"Montserrat\", sans-serif;\n    font-weight: 400;\n  } \n\n  h1, h2, h3, h4, h5, h6, strong {\n    font-weight: 600;\n  }\n\n  button {\n    cursor: pointer;\n  }\n\n  [disabled] {\n    opacity: 0.6;\n    cursor: not-allowed;\n  }\n\n  .hidden {\n    overflow: hidden;\n  }\n\n  ::-webkit-scrollbar {\n    -webkit-appearance: none;\n    background: var(--gray-500);\n    width: 6px;\n    height: 10px;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    background-color: var(--gray-50);\n  }\n\n  .aligncenter {\n    text-align: center;\n  }\n\n  .width-190px {\n    width:190px;\n  }\n\n  .hidden-content {\n    display:none !important;\n  }\n\n  .global-margin-bottom {\n    margin-bottom:20px;\n  }\n\n  .background-light-gray {\n    background:#F4F4F4;\n  }\n\n  .full-width-and-height {\n    height:100%;\n    width:100%;\n  }\n\n  .flex-direction-column {\n    flex-direction:column;\n  }\n\n  .bold {\n    font-weight:700;\n  }\n\n  .margin-center-x {\n    margin:0 auto;\n  }\n\n  .border-none {\n    border:none;\n  }\n\n  .text-center {\n    text-align:center;\n  }\n\n  .relative {\n    position:relative;\n  }\n\n  /* accessibility */\n  body ._access-menu p._text-center{\n    font-family: \"Montserrat\", sans-serif;\n    font-style: italic;\n    font-size: 1.2rem!important;\n    margin-top: 6px;\n    margin-bottom: 3px;\n  } \n\n`;\n\nconst FontLoader: React.FC = () => {\n  useEffect(() => {\n    const link = document.createElement(\"link\");\n    link.href =\n      \"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap\";\n    link.rel = \"stylesheet\";\n    document.head.appendChild(link);\n  }, []);\n\n  return null;\n};\n\nexport default FontLoader;\n","import {\n  FormEvent,\n  forwardRef,\n  ForwardRefRenderFunction,\n  InputHTMLAttributes,\n  useCallback,\n} from \"react\";\nimport { FieldError } from \"react-hook-form\";\nimport { cep, cpf, currency, date } from \"./masks\";\n\nimport {\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Input as FormInput,\n} from \"./styles\";\n\ntype InputType =\n  | \"text\"\n  | \"email\"\n  | \"password\"\n  | \"number\"\n  | \"tel\"\n  | \"url\"\n  | \"date\"\n  | \"time\"\n  | \"datetime-local\";\n\ninterface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n  id: string;\n  label?: string;\n  error?: string | FieldError;\n  showErrorMessage?: boolean;\n  labelTextColor?: string;\n  backgroundColor?: string;\n  borderColor?: string;\n  focusBorderColor?: string;\n  inputTextColor?: string;\n  inputPlaceholderColor?: string;\n  mask?: \"cep\" | \"currency\" | \"cpf\" | \"phone\" | \"date\";\n  type?: InputType;\n}\n\nconst InputBase: ForwardRefRenderFunction<HTMLInputElement, InputProps> = (\n  { id,\n    label,\n    error,\n    showErrorMessage = true,\n    labelTextColor,\n    backgroundColor,\n    borderColor,\n    focusBorderColor,\n    inputPlaceholderColor,\n    inputTextColor,\n    mask = \"\",\n    type = \"text\",\n    ...rest\n  },\n  ref\n) => {\n  const handleKeyUp = useCallback(\n    (e: FormEvent<HTMLInputElement>) => {\n      if (mask === \"cep\") cep(e);\n      if (mask === \"currency\") currency(e);\n      if (mask === \"cpf\") cpf(e);\n      if (mask === \"date\") date(e);\n    },\n    [mask]\n  );\n\n  return (\n    <FormControl isInvalid={!!error}>\n      {!!label && <FormLabel htmlFor={id} $textColor={labelTextColor}>{label}</FormLabel>}\n\n      {!mask ? (\n        <FormInput\n          id={id}\n          ref={ref}\n          type={type}\n          aria-invalid={!!error && showErrorMessage ? \"true\" : \"false\"}\n          autoComplete={rest.autoComplete || \"on\"}\n          $backgroundColor={backgroundColor}\n          $borderColor={borderColor}\n          $focusBorderColor={focusBorderColor}\n          $placeholderColor={inputPlaceholderColor}\n          $textColor={inputTextColor}\n          {...rest}\n        />\n      ) : (\n        <FormInput\n          id={id}\n          ref={ref}\n          type={type}\n          aria-invalid={!!error && showErrorMessage ? \"true\" : \"false\"}\n          autoComplete={rest.autoComplete || \"on\"}\n          onKeyUp={handleKeyUp}\n          $backgroundColor={backgroundColor}\n          $borderColor={borderColor}\n          $focusBorderColor={focusBorderColor}\n          $placeholderColor={inputPlaceholderColor}\n          $textColor={inputTextColor}\n          {...rest}\n        />\n      )}\n\n      {!!error && showErrorMessage && (\n        <FormErrorMessage data-testid=\"error-message\">\n          {typeof error === 'string' ? error : error.message}\n        </FormErrorMessage>\n      )}\n    </FormControl>\n  );\n};\n\nexport const Input = forwardRef(InputBase);\n","import { FormEvent } from \"react\";\n\nexport function cep(e: FormEvent<HTMLInputElement>) {\n  e.currentTarget.maxLength = 9;\n  let value = e.currentTarget.value;\n  value = value.replace(/\\D/g, \"\");\n  value = value.replace(/^(\\d{5})(\\d)/, \"$1-$2\");\n  e.currentTarget.value = value;\n  return e;\n}\n\nexport function currency(e: FormEvent<HTMLInputElement>) {\n  let value = e.currentTarget.value;\n  value = value.replace(/\\D/g, \"\");\n  value = value.replace(/(\\d)(\\d{2})$/, \"$1,$2\");\n  value = value.replace(/(?=(\\d{3})+(\\D))\\B/g, \".\");\n\n  e.currentTarget.value = value;\n  return e;\n}\n\nexport function cpf(e: FormEvent<HTMLInputElement>) {\n  e.currentTarget.maxLength = 14;\n  let value = e.currentTarget.value;\n  if (!value.match(/^(\\d{3}).(\\d{3}).(\\d{3})-(\\d{2})$/)) {\n    value = value.replace(/\\D/g, \"\");\n    value = value.replace(/(\\d{3})(\\d)/, \"$1.$2\");\n    value = value.replace(/(\\d{3})(\\d)/, \"$1.$2\");\n    value = value.replace(/(\\d{3})(\\d{2})$/, \"$1-$2\");\n\n    e.currentTarget.value = value;\n  }\n  return e;\n}\n\nexport function date(e: FormEvent<HTMLInputElement>) {\n  let value = e.currentTarget.value;\n  value = value.replace(/\\D/g, \"\");\n  value = value.replace(/(\\d{2})(\\d)/, \"$1/$2\");\n  value = value.replace(/(\\d{2})(\\d)/, \"$1/$2\");\n  e.currentTarget.value = value;\n  return e;\n}\n\nexport function phone(e: FormEvent<HTMLInputElement>) {\n  let value = e.currentTarget.value;\n  value = value.replace(/\\D/g, \"\");\n  value = value.replace(/(\\d{2})(\\d)/, \"$1/$2\");\n  value = value.replace(/(\\d{2})(\\d)/, \"$1/$2\");\n  e.currentTarget.value = value;\n  return e;\n}\n","import { InputHTMLAttributes } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport const FormLabel = styled.label<{ $textColor?: string }>`\n  font-family: \"Montserrat\", sans-serif;\n  font-style: normal;\n  font-weight: 500;\n  font-size: 1rem;\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n  display: block;\n  margin-bottom: 0.5rem;\n  text-align: left;\n`;\n\nexport const Input = styled.input<\n  InputHTMLAttributes<HTMLInputElement> & { \n    $backgroundColor?: string, \n    $borderColor?: string, \n    $focusBorderColor?: string, \n    $placeholderColor?: string\n    $textColor?: string,\n  }\n>`\n  font-family: \"Montserrat\", sans-serif;\n  font-style: normal;\n  font-weight: 500;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n  padding: 0.5rem;\n  border-radius: 0.125rem;\n  border: 1px solid ${(props) => props.$borderColor || \"transparent\"};\n  display: block;\n  height: 3.125rem;\n  width: 100%;\n\n  &:focus {\n    border-radius: 0.125rem;\n    border: 2px solid ${(props) => props.$focusBorderColor || \"var(--yellow-500)\"};\n    outline: none;\n  }\n\n  &::placeholder {\n    font-size: 1rem;\n    line-height: 1.5rem;\n    color: ${(props) => props.$placeholderColor || \"var(--gray-100)\"};\n    font-weight: 800;\n  }\n\n  /* Autofill styles */\n  &:-webkit-autofill {\n    background: ${(props) => props.$backgroundColor || \"var(--white)\"} !important;\n    color: ${(props) => props.$textColor || \"var(--black)\"} !important;\n    -webkit-text-fill-color: ${(props) => props.$textColor || \"var(--black)\"} !important;\n    transition: background-color 5000s ease-in-out 0s; /* Prevent flashing */\n  }\n\n  &:-webkit-autofill::first-line {\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 1rem;\n    font-weight: 500;\n  }\n`;\n\nexport const FormErrorMessage = styled.small`\n  font-size: 0.75rem;\n  line-height: 1.125rem;\n  color: var(--red);\n  margin-top: 0.25rem;\n  display: block;\n`;\n\nexport const FormControl = styled.div.withConfig({\n  shouldForwardProp: (prop) => ![\"isInvalid\"].includes(prop),\n})<{ isInvalid?: boolean }>`\n  ${FormLabel} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        color: var(--red);\n      `};\n  }\n\n  ${Input} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        border: 1px solid var(--red);\n\n        &:not(:focus)::placeholder {\n          color: var(--red);\n          font-weight: 600;\n        }\n      `};\n\n    &:focus {\n      ${(props) =>\n        props.isInvalid &&\n        css`\n          border: 1px solid var(--red);\n        `};\n    }\n  }\n`;\n","import { darken } from \"polished\";\nimport styled, { css } from \"styled-components\";\n\ntype ButtonProps = {\n  hasIcon?: boolean;\n  isSubmitting?: boolean;\n  hasSubmittingMessage?: boolean;\n  bgColor?: string;\n  bordercolor?: string;\n  color?: string;\n  height?: string;\n};\n\nexport const Icon = styled.span`\n  font-size: 0;\n  line-height: 0;\n  transition: all 0.25s ease;\n\n  transform: translate3d(-30px, 0px, 0px);\n  visibility: hidden;\n  opacity: 0;\n  margin-right: 0.625rem;\n`;\n\nexport const Text = styled.span`\n  font-family: \"Montserrat\", sans-serif;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  margin-bottom: -2px;\n\n  transition: all 0.25s ease;\n`;\n\nexport const TextSubmitting = styled.span`\n  font-family: \"Montserrat\", sans-serif;\n  font-weight: 400;\n  font-size: 1rem;\n\n  transition: all 0.25s ease;\n`;\n\nexport const LoadingIcon = styled.span.withConfig({\n  shouldForwardProp: (prop) => prop !== \"hasText\",\n})<{ hasText?: boolean }>`\n  display: block;\n\n  width: 1rem;\n  height: 1rem;\n  border: 0.125rem solid var(--white);\n  border-radius: 50%;\n  animation: loadingAnimation 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n  border-color: var(--white) transparent transparent transparent;\n\n  margin-right: ${(props) => (props.hasText ? \"0.625rem\" : \"0\")};\n\n  @keyframes loadingAnimation {\n    0% {\n      transform: rotate(0deg);\n    }\n    100% {\n      transform: rotate(360deg);\n    }\n  }\n`;\n\nexport const Button = styled.button.withConfig({\n  shouldForwardProp: (prop) =>\n    ![\n      \"hasIcon\",\n      \"isSubmitting\",\n      \"hasSubmittingMessage\",\n      \"bgColor\",\n      \"bordercolor\",\n      \"color\",\n      \"height\",\n    ].includes(prop),\n})<ButtonProps>`\n  background: ${(props) => darken(0.1, props?.bgColor || \"#F6C76B\")};\n  color: ${(props) => props?.color || \"#2F2F2F\"};\n  border: 1px solid ${(props) => darken(0.1, props?.bordercolor || \"#F6C76B\")};\n  border-radius: 2px;\n\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0 0.75rem;\n  height: ${(props) => props?.height || \"3.125rem\"};\n  position: relative;\n  font-size: 0;\n  line-height: 0;\n\n  transition: all 0.25s;\n\n  ${Icon} {\n    display: ${(props) => (props?.hasIcon ? \"block\" : \"\")};\n  }\n\n  ${Text} {\n    transform: ${(props) =>\n      props?.hasIcon ? \"translate3d(-4.5px, 0px, 0px)\" : \"unset\"};\n\n    @media print, screen and (min-width: 40em) {\n      transform: ${(props) =>\n        props?.hasIcon ? \"translate3d(-14.5px, 0px, 0px)\" : \"unset\"};\n    }\n\n    color: ${(props) => props?.color || \"#2F2F2F\"};\n  }\n\n  &:hover {\n    background: ${(props) => darken(0.2, props?.bgColor || \"#F6C76B\")};\n    border-color: ${(props) => darken(0.2, props?.bordercolor || \"#F6C76B\")};\n\n    ${Icon} {\n      opacity: 1;\n      visibility: visible;\n      transform: translate3d(0px, 0px, 0px);\n    }\n\n    ${Text} {\n      transform: ${(props) =>\n        props?.hasIcon ? \"translate3d(-5px, 0px, 0px)\" : \"unset\"};\n    }\n  }\n\n  ${Text} {\n    ${(props) =>\n      props.isSubmitting &&\n      !props.hasSubmittingMessage &&\n      css`\n        transform: unset;\n        opacity: 0;\n      `}\n  }\n\n  ${LoadingIcon} {\n    ${(props) =>\n      props.isSubmitting &&\n      !props.hasSubmittingMessage &&\n      css`\n        display: flex;\n        -webkit-box-align: center;\n        align-items: center;\n        position: absolute;\n      `}\n  }\n`;\n","import { ButtonHTMLAttributes, ReactElement, ReactNode } from \"react\";\n\nimport {\n  Button as ButtonComponent,\n  Icon,\n  LoadingIcon,\n  Text,\n  TextSubmitting,\n} from \"./styles\";\n\ntype ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n  children: ReactNode;\n  icon?: ReactElement;\n  isSubmitting?: boolean;\n  submittingMessage?: string;\n  bgColor?: string;\n  bordercolor?: string;\n  color?: string;\n  height?: string;\n};\n\nexport function Button({\n  children,\n  icon,\n  isSubmitting = false,\n  submittingMessage = \"\",\n  disabled = false,\n  color = \"var(--black)\",\n  ...rest\n}: ButtonProps) {\n  return (\n    <ButtonComponent\n      isSubmitting={isSubmitting}\n      hasSubmittingMessage={submittingMessage.length > 0}\n      disabled={isSubmitting || disabled}\n      aria-disabled={isSubmitting || disabled}\n      hasIcon={!!icon}\n      color={color}\n      {...rest}\n    >\n      {icon && !isSubmitting && <Icon data-testid=\"button-icon\">{icon}</Icon>}\n      {isSubmitting && <LoadingIcon hasText={submittingMessage.length > 0} />}\n      {(!isSubmitting || submittingMessage.length === 0) && (\n        <Text className=\"text\">{children}</Text>\n      )}\n      {isSubmitting && submittingMessage.length > 0 && (\n        <TextSubmitting>{submittingMessage}</TextSubmitting>\n      )}\n    </ButtonComponent>\n  );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport { AlertContainer, DismissButton } from './styles';\nimport { AlertType } from './styles';\n\nimport { HiX } from 'react-icons/hi';\n\ninterface AlertProps {\n  type?: AlertType;\n  children: React.ReactNode;\n  className?: string;\n  dismissible?: boolean;\n  onDismiss?: () => void;\n  autoDismiss?: number;\n}\n\nexport const Alert = ({\n  type = 'info',\n  children,\n  className,\n  dismissible = false,\n  onDismiss,\n  autoDismiss\n}: AlertProps) => {\n  const [isClosing, setIsClosing] = useState(false);\n\n  const handleDismiss = useCallback(() => {\n    setIsClosing(true);\n    setTimeout(() => onDismiss?.(), 300);\n  }, [onDismiss]);\n\n  useEffect(() => {\n    if (autoDismiss) {\n      const timer = setTimeout(handleDismiss, autoDismiss);\n      return () => clearTimeout(timer);\n    }\n  }, [autoDismiss, handleDismiss]);\n\n  return (\n    <AlertContainer\n      $type={type}\n      $dismissible={dismissible}\n      $isClosing={isClosing}\n      className={className}\n      role=\"alert\"\n    >\n      {children}\n      {dismissible && (\n        <DismissButton \n          onClick={handleDismiss} \n          aria-label=\"Dismiss alert\"\n        >\n          <HiX /> \n        </DismissButton>\n      )}\n    </AlertContainer>\n  );\n};","import styled, { css, keyframes } from \"styled-components\";\n\nexport type AlertType = \"error\" | \"warning\" | \"info\" | \"success\";\n\nconst fadeIn = keyframes`\n  from { opacity: 0; transform: translateY(-10px); }\n  to { opacity: 1; transform: translateY(0); }\n`;\n\nconst fadeOut = keyframes`\n  from { opacity: 1; transform: translateY(0); }\n  to { opacity: 0; transform: translateY(-10px); }\n`;\n\ninterface AlertContainerProps {\n  $type: AlertType;\n  $dismissible?: boolean;\n  $isClosing: boolean;\n}\n\nconst typeStyles = {\n  error: css`\n    background-color: var(--red);\n    border: 1px solid var(--red);\n    color: var(--white);\n    svg {\n      color: var(--white);\n    }\n  `,\n  warning: css`\n    background-color: var(--yellow-500);\n    border: 1px solid var(--yellow-400);\n    color: var(--black);\n    svg {\n      color: var(--black);\n    }\n  `,\n  info: css`\n    background-color: var(--blue);\n    border: 1px solid var(--blue);\n    color: var(--white);\n    svg {\n      color: var(--white);\n    }\n  `,\n  success: css`\n    background-color: var(--green);\n    border: 1px solid var(--green-2);\n    color: var(--white);\n    svg {\n      color: var(--white);\n    }\n  `,\n};\n\nexport const AlertContainer = styled.div<AlertContainerProps>`\n  position: fixed;\n  width: 500px;\n  top: 15px;\n  right: 15px;\n  padding: 1rem ${({ $dismissible }) => ($dismissible ? \"2.5rem\" : \"1rem\")} 1rem\n    1rem;\n  margin-bottom: 1rem;\n  animation: ${({ $isClosing }) => ($isClosing ? fadeOut : fadeIn)} 0.3s\n    ease-out;\n  animation-fill-mode: forwards;\n  align-items: center;\n  gap: 0.5rem;\n  box-shadow: var(--shadow-500);\n  border-radius: 0.5rem;\n  font-size: 1rem;\n  font-weight: 500;\n\n  ${({ $type }) => typeStyles[$type]}\n`;\n\nexport const DismissButton = styled.button`\n  position: absolute;\n  background: transparent;\n  right: 10px;\n  border: none;\n  cursor: pointer;\n  color: inherit;\n  opacity: 1;\n  transition: opacity 0.2s;\n\n  &:hover {\n    opacity: 0.7;\n  }\n\n  svg {\n    width: 1rem;\n    height: 1rem;\n  }\n`;\n","import {\n  forwardRef,\n  ForwardRefRenderFunction,\n  InputHTMLAttributes,\n} from \"react\";\nimport { FieldError } from \"react-hook-form\";\nimport { StyledPhoneInput, FormControl, FormLabel, FormErrorMessage } from \"./styles\";\nimport { PhoneInputRefType, ParsedCountry } from \"react-international-phone\";\n\ninterface PhoneInputChange {\n  phone: string;\n  dialCode: string;\n  inputValue: string;\n}\n\ninterface PhoneInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> {\n  id: string;\n  label?: string;\n  error?: string | FieldError;\n  showErrorMessage?: boolean;\n  value: string;\n  onChange?: (value: PhoneInputChange) => void;\n  labelTextColor?: string;\n  backgroundColor?: string;\n  borderColor?: string;\n  focusBorderColor: string;\n  inputPlaceholderColor?: string;\n  inputTextColor?: string;\n}\n\nconst PhoneInputBase: ForwardRefRenderFunction<PhoneInputRefType, PhoneInputProps> = (\n  { id,\n    label,\n    error,\n    showErrorMessage = true,\n    labelTextColor,\n    backgroundColor,\n    borderColor,\n    focusBorderColor,\n    inputPlaceholderColor,\n    inputTextColor,\n    value,\n    ...rest\n  },\n  ref\n) => {\n  return (\n    <FormControl isInvalid={!!error} >\n      {!!label && <FormLabel htmlFor={id} $textColor={labelTextColor}>{label}</FormLabel>}\n      <StyledPhoneInput\n        ref={ref}\n        defaultCountry=\"br\"\n        disableCountryGuess={true}\n        disableDialCodeAndPrefix={true}\n        showDisabledDialCodeAndPrefix={false}\n        placeholder={rest.placeholder}\n        aria-invalid={!!error && showErrorMessage ? \"true\" : \"false\"}\n        value={String(value)}\n        onChange={(phone: string, meta: { country: ParsedCountry; inputValue: string }) => {\n          if (typeof rest.onChange === \"function\") {\n            rest.onChange({\n              phone,\n              dialCode: meta.country.dialCode,\n              inputValue: meta.inputValue,\n            });\n          }\n        }}\n        inputProps={{\n          id,\n          name: rest.name || 'phone',\n          required: rest.required,\n          autoFocus: rest.autoFocus,\n          autoComplete: rest.autoComplete || \"tel\",\n        }}\n        $backgroundColor={backgroundColor}\n        $borderColor={borderColor}\n        $focusBorderColor={focusBorderColor}\n        $placeholderColor={inputPlaceholderColor}\n        $textColor={inputTextColor}\n      />\n      {!!error && showErrorMessage && (\n        <FormErrorMessage data-testid=\"error-message\">\n          {typeof error === 'string' ? error : error?.message}\n        </FormErrorMessage>\n      )}\n    </FormControl>\n  );\n};\n\nexport const PhoneInput = forwardRef(PhoneInputBase);\n","import styled, { css } from \"styled-components\";\nimport { PhoneInput } from \"react-international-phone\";\nimport \"react-international-phone/style.css\";\n\nexport const FormLabel = styled.label<{ $textColor?: string }>`\n  font-family: \"Montserrat\", sans-serif;\n  font-style: normal;\n  font-weight: 500;\n  font-size: 1rem;\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n  display: block;\n  margin-bottom: 0.5rem;\n  text-align: left;\n`;\n\nexport const StyledPhoneInput = styled(PhoneInput)<{ \n  $backgroundColor?: string, \n  $borderColor?: string, \n  $focusBorderColor?: string, \n  $placeholderColor?: string\n  $textColor?: string,\n}>`\n  width: 100%;\n  height: 3.125rem;\n  background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n  font-family: \"Montserrat\", sans-serif;\n  border: 1px solid ${(props) => props.$borderColor || \"transparent\"};\n  border-radius: 0.125rem;\n\n  &:focus-within {\n    border-radius: 0.125rem;\n    border: 2px solid ${(props) => props.$focusBorderColor || \"var(--yellow-500)\"};\n    outline: none;\n\n    .react-international-phone-country-selector-button {\n      border-right: 1px solid ${(props) => props.$focusBorderColor || \"var(--yellow-500)\"};\n    }\n  }\n\n  /* Style for the inner phone input container */\n  .react-international-phone-input-container {\n    width: 100%;\n    height: 100%;\n    display: flex;\n    align-items: center;\n    overflow: hidden;\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 1rem;\n    font-weight: 500;\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n    background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n  }\n\n  /* Style for the country selector button */\n  .react-international-phone-country-selector-button {\n    height: 100%;\n    background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 1rem;\n    font-weight: 500;\n    cursor: pointer;\n    outline: none;\n    border: none;\n    border-right: 1px solid ${(props) => props.$borderColor || \"var(--transparent)\"};\n  }\n\n  /* Style for the input itself */\n  input.react-international-phone-input {\n    flex: 1;\n    height: 100%;\n    padding: 0 0.5rem;\n    margin: 0;\n    background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n    font-family: \"Montserrat\", sans-serif;\n    font-style: normal;\n    font-weight: 500;\n    font-size: 1rem;\n    line-height: 1.5rem;\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n    outline: none;\n    border: none;\n    border-radius: 0.125rem;\n\n    &::placeholder {\n      font-size: 1rem;\n      line-height: 1.5rem;\n      color: ${(props) => props.$placeholderColor || \"var(--gray-100)\"};\n      font-weight: 800;\n    }\n\n    &:-webkit-autofill {\n      background: ${(props) => props.$backgroundColor || \"var(--white)\"} !important;\n      -webkit-text-fill-color: ${(props) => props.$textColor || \"var(--black)\"} !important;\n      transition: background-color 5000s ease-in-out 0s;\n    }\n\n    &:-webkit-autofill::first-line {\n      font-family: \"Montserrat\", sans-serif;\n      font-size: 1rem;\n      font-weight: 500;\n    }\n  }\n`;\n\nexport const FormErrorMessage = styled.small`\n  font-size: 0.75rem;\n  line-height: 1.125rem;\n  color: var(--red);\n  margin-top: 0.25rem;\n  display: block;\n`;\n\nexport const FormControl = styled.div.withConfig({\n  shouldForwardProp: (prop) => ![\"isInvalid\"].includes(prop),\n})<{ isInvalid?: boolean }>`\n  ${FormLabel} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        color: var(--red);\n      `};\n  }\n\n  ${StyledPhoneInput} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        border: 1px solid var(--red);\n\n        &:not(:focus)::placeholder {\n          color: var(--red);\n          font-weight: 600;\n        }\n      `};\n\n    .react-international-phone-input-container {\n      ${(props) =>\n        props.isInvalid &&\n        css`\n          border: 1px solid var(--red);\n\n          &:not(:focus)::placeholder {\n            color: var(--red);\n            font-weight: 600;\n          }\n        `};\n    }\n\n    .react-international-phone-country-selector-button {\n      ${(props) =>\n        props.isInvalid &&\n        css`\n          border-right: 1px solid var(--red);\n        `};\n    }\n  }\n`;\n","import {\n    forwardRef,\n    ForwardRefRenderFunction,\n    SelectHTMLAttributes,\n} from \"react\";\nimport { FieldError } from \"react-hook-form\";\nimport { Product } from \"../../domain/Product\";\n\nimport {\n    FormControl,\n    FormErrorMessage,\n    FormLabel,\n    Select as FormSelect,\n} from \"./styles\";\n\ninterface ProductSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n    id: string;\n    label?: string;\n    error?: string | FieldError;\n    showErrorMessage?: boolean;\n    labelTextColor?: string;\n    backgroundColor?: string;\n    borderColor?: string;\n    focusBorderColor?: string;\n    textColor?: string;\n    products: Product[];\n    placeholder?: string;\n}\n\nconst ProductSelectBase: ForwardRefRenderFunction<HTMLSelectElement, ProductSelectProps> = (\n    {\n        id,\n        label,\n        error,\n        showErrorMessage = true,\n        labelTextColor,\n        backgroundColor,\n        borderColor,\n        focusBorderColor,\n        textColor,\n        products,\n        placeholder = \"Selecione um produto\",\n        ...rest\n    },\n    ref\n) => {\n    return (\n        <FormControl isInvalid={!!error}>\n            {!!label && <FormLabel htmlFor={id} $textColor={labelTextColor}>{label}</FormLabel>}\n\n            <FormSelect\n                id={id}\n                ref={ref}\n                aria-invalid={!!error && showErrorMessage ? \"true\" : \"false\"}\n                $backgroundColor={backgroundColor}\n                $borderColor={borderColor}\n                $focusBorderColor={focusBorderColor}\n                $textColor={textColor}\n                {...rest}\n            >\n                <option value=\"\" disabled>\n                    {placeholder}\n                </option>\n                {products.map((product) => (\n                    <option key={product.id} value={product.id}>\n                        {product.name}\n                    </option>\n                ))}\n            </FormSelect>\n\n            {!!error && showErrorMessage && (\n                <FormErrorMessage data-testid=\"error-message\">\n                    {typeof error === 'string' ? error : error.message}\n                </FormErrorMessage>\n            )}\n        </FormControl>\n    );\n};\n\nexport const ProductSelect = forwardRef(ProductSelectBase);\n","import { SelectHTMLAttributes } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport const FormLabel = styled.label<{ $textColor?: string }>`\n  font-family: \"Montserrat\", sans-serif;\n  font-style: normal;\n  font-weight: 500;\n  font-size: 1rem;\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n  display: block;\n  margin-bottom: 0.5rem;\n  text-align: left;\n`;\n\nexport const Select = styled.select<\n  SelectHTMLAttributes<HTMLSelectElement> & { \n    $backgroundColor?: string, \n    $borderColor?: string, \n    $focusBorderColor?: string, \n    $textColor?: string,\n  }\n>`\n  font-family: \"Montserrat\", sans-serif;\n  font-style: normal;\n  font-weight: 500;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  background: ${(props) => props.$backgroundColor || \"var(--white)\"};\n  color: ${(props) => props.$textColor || \"var(--black)\"};\n  padding: 0.5rem 3rem 0.5rem 0.5rem; /* Aumentado padding-right para 3rem */\n  border-radius: 0.125rem;\n  border: 1px solid ${(props) => props.$borderColor || \"transparent\"};\n  display: block;\n  height: 3.125rem;\n  width: 100%;\n  cursor: pointer;\n  \n  /* Remover a seta padrão do navegador */\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  \n  /* Adicionar seta personalizada maior */\n  background-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 1rem center; /* Posicionado a 1rem da direita */\n  background-size: 1.25rem; /* Tamanho da seta aumentado para 1.25rem */\n\n  &:focus {\n    border-radius: 0.125rem;\n    border: 2px solid ${(props) => props.$focusBorderColor || \"var(--yellow-500)\"};\n    outline: none;\n  }\n\n  /* Estilo para option disabled (placeholder) */\n  option:disabled {\n    color: var(--gray-100);\n    font-weight: 800;\n  }\n\n  /* Estilo para options normais */\n  option:not(:disabled) {\n    color: ${(props) => props.$textColor || \"var(--black)\"};\n    font-weight: 500;\n  }\n`;\n\nexport const FormErrorMessage = styled.small`\n  font-size: 0.75rem;\n  line-height: 1.125rem;\n  color: var(--red);\n  margin-top: 0.25rem;\n  display: block;\n`;\n\nexport const FormControl = styled.div.withConfig({\n  shouldForwardProp: (prop) => ![\"isInvalid\"].includes(prop),\n})<{ isInvalid?: boolean }>`\n  ${FormLabel} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        color: var(--red);\n      `};\n  }\n\n  ${Select} {\n    ${(props) =>\n      props.isInvalid &&\n      css`\n        border: 1px solid var(--red);\n      `};\n\n    &:focus {\n      ${(props) =>\n        props.isInvalid &&\n        css`\n          border: 1px solid var(--red);\n        `};\n    }\n  }\n`;\n"],"mappings":"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","names":["import_react","styled","import_styled_components","import_react","import_react","import_styled_components","styled","Input","import_styled_components","styled","Text","import_jsx_runtime","Button","Text","import_react","import_styled_components","styled","import_jsx_runtime","import_react","import_styled_components","FormLabel","styled","FormErrorMessage","FormControl","import_jsx_runtime","FormControl","FormLabel","FormErrorMessage","PhoneInput","import_react","import_styled_components","FormLabel","styled","FormErrorMessage","FormControl","import_jsx_runtime","FormControl","FormLabel","FormErrorMessage","import_jsx_runtime","React","Input","PhoneInput","Button"]}