export type VitruvioComponentDoc = {
   component: string;
   summary: string;
   status: "draft" | "review" | "ready";
   context: {
      module: string;
      family: string;
      mappedFrom: string[];
      occurrences: {
         total: number;
         paineis: number;
         processos: number;
      };
   };
   sections: {
      purpose: string;
      basicUsage: string;
      properties: string[];
      propertyValues: { [property: string]: string[] };
      propertyValueTypes: { [property: string]: "boolean" | "enum" | "numeric" | "text" | "mixed" };
      events: string[];
      examples: string[];
      notes: string[];
   };
};

const MaskedFieldDoc: VitruvioComponentDoc = {
   component: "MaskedField",
   summary: "Documentacao do componente MaskedField mapeada a partir de exemplos reais de XML.",
   status: "draft",
   context: {
      module: "Vitruvio",
      family: "EntradaDeDados",
      mappedFrom: ["Vitruvio/Paineis", "Vitruvio/Processos"],
      occurrences: { total: 219, paineis: 105, processos: 114 }
   },
   sections: {
      purpose: "Componente de captura e edicao de dados em formularios e filtros.",
      basicUsage: "Usar MaskedField no contexto adequado da tela; as propriedades abaixo foram observadas em exemplos reais do projeto.",
      properties: [
         "adaptForMobileBrowser",
         "align",
         "caption",
         "columns",
         "description",
         "enabled",
         "expandRatio",
         "height",
         "id",
         "immediate",
         "inputPrompt",
         "keyCode",
         "mask",
         "maxLength",
         "nextFocusOnEnter",
         "preservMask",
         "required",
         "requiredMessage",
         "text-transform",
         "type",
         "updatable",
         "visible",
         "width"
      ],
      propertyValues: {
         "adaptForMobileBrowser": ["true"],
         "align": ["MIDDLE_LEFT", "MIDDLE_RIGHT", "TOP_CENTER", "TOP_LEFT"],
         "caption": ["Celular", "Celular do signatário (com código do país)", "CEP", "CEP:", "CNPJ", "CNPJ CONTA", "CNPJ DO FORNECEDOR", "CNPJ específico (Opcional)", "CNPJ Faturamento", "Coorporativo - Telefone de Contato", "Corporativo", "CPF", "CPF do signatário", "CPF Motorista", "CPF:", "__TRUNCADO__"],
         "columns": ["13", "5", "6"],
         "description": ["", "(00) 0 0000-0000", "(00) 0000-0000", "Apenas números (11 dígitos)", "Celular do signatário (com código do país)", "DDD + número (apenas dígitos)", "Hora de fechamento no formato HH24", "Insira o CEP", "Insira o CPF", "Insira o telefone", "Insira um formato de CPF válido", "Preencha seu RG", "Telefone rep. fornecedor"],
         "enabled": ["false"],
         "expandRatio": ["0", "0.1", "0.2", "0.25", "0.3", "0.4", "0.5", "0.7", "1", "1.2", "2", "2.0", "2.9"],
         "height": ["100%"],
         "id": ["cartao_presente", "cep", "cepPrestador", "cepTomador", "cli_fone_cel", "cli_fone_fixo", "cnpj", "cnpj_inicial", "CnpjCpfPrestador", "CnpjCpfTomador", "comercialTelefone", "contaCNPJ", "cpf", "cpf_inicial", "cpf_motorista", "__TRUNCADO__"],
         "immediate": ["true"],
         "inputPrompt": ["__:__"],
         "keyCode": ["ENTER"],
         "mask": ["## #####-####", "## (##) ##### - ####", "## (##) - #####-####", "###", "####", "################", "#######/###-#", "#####-###", "#####-####", "###.###.###-##", "##.###-###", "##.###.###-##", "##.###.###/####-##", "##:##", "##:##:##", "__TRUNCADO__"],
         "maxLength": ["30", "6", "8"],
         "nextFocusOnEnter": ["true"],
         "preservMask": ["false", "true"],
         "required": ["false", "true"],
         "requiredMessage": ["Para emitir nota, necessário prestador ter a sua inscrição municipal informada"],
         "text-transform": ["uppercase"],
         "type": ["number", "string"],
         "updatable": ["true"],
         "visible": ["false", "true"],
         "width": ["10%", "100", "100%", "100px", "200", "200px", "30%", "40%", "50%", "80%", "90%"]
      },
      propertyValueTypes: {
         "adaptForMobileBrowser": "boolean",
         "align": "enum",
         "caption": "text",
         "columns": "numeric",
         "description": "text",
         "enabled": "boolean",
         "expandRatio": "numeric",
         "height": "numeric",
         "id": "text",
         "immediate": "boolean",
         "inputPrompt": "enum",
         "keyCode": "enum",
         "mask": "mixed",
         "maxLength": "numeric",
         "nextFocusOnEnter": "boolean",
         "preservMask": "boolean",
         "required": "boolean",
         "requiredMessage": "text",
         "text-transform": "text",
         "type": "enum",
         "updatable": "boolean",
         "visible": "boolean",
         "width": "numeric"
      },
      events: [

      ],
      examples: [
         "Vitruvio/Paineis/Nfse - TESTE.xml:1846",
         "Vitruvio/Paineis/Nfse - TESTE.xml:1847",
         "Vitruvio/Paineis/Nfse - TESTE.xml:1854",
         "Vitruvio/Paineis/Nfse - TESTE.xml:1873",
         "Vitruvio/Paineis/Nfse - TESTE.xml:1874",
         "Vitruvio/Paineis/Nfse - TESTE.xml:1882",
         "Vitruvio/Paineis/07 - Contratos - Representante fornecedores.xml:651",
         "Vitruvio/Paineis/09 - Painel de Contratos V2.xml:5461",
         "Vitruvio/Paineis/Registro de Atendimentos Suporte.xml:139",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:1993",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:2019",
         "Vitruvio/Paineis/Cadastro de Fornecedores.xml:1031"
      ],
      notes: [
         "Mapeamento automatico baseado em uso observado nos XMLs de paineis e processos.",
         "Valores ruidosos/textos muito longos sao filtrados para facilitar consulta.",
         "propertyValueTypes classifica o perfil observado da propriedade (boolean, enum, numeric, text ou mixed).",
         "Validar com documentacao oficial do Vitruvio quando houver divergencia funcional."
      ]
   }
};

export default MaskedFieldDoc;
