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 UserComboBoxDoc: VitruvioComponentDoc = {
   component: "UserComboBox",
   summary: "Documentacao do componente UserComboBox mapeada a partir de exemplos reais de XML.",
   status: "draft",
   context: {
      module: "Vitruvio",
      family: "EntradaDeDados",
      mappedFrom: ["Vitruvio/Paineis", "Vitruvio/Processos"],
      occurrences: { total: 115, paineis: 59, processos: 56 }
   },
   sections: {
      purpose: "Componente de captura e edicao de dados em formularios e filtros.",
      basicUsage: "Usar UserComboBox no contexto adequado da tela; as propriedades abaixo foram observadas em exemplos reais do projeto.",
      properties: [
         "align",
         "bindTagField",
         "caption",
         "description",
         "expandRatio",
         "id",
         "immediate",
         "load",
         "modelMember",
         "onlyActiveUsers",
         "required",
         "requiredMessage",
         "type",
         "updatable",
         "visible",
         "width"
      ],
      propertyValues: {
         "align": ["MIDDLE_LEFT", "TOP_LEFT"],
         "bindTagField": ["marcador"],
         "caption": ["Aprovador", "Autorizador", "Coordenador", "Coordenador Antigo", "Coordenador Novo", "Executor", "Gerente", "Principal Dono do Processo", "Responsável", "Responsável pelo lançamento", "Revisor", "Solicitante", "Técnico/Resp Terc.", "Usuário", "Usuário a ser avaliado", "__TRUNCADO__"],
         "description": ["Selecione o usuário que irá realizar a tarefa", "Selecione o usuário que irá ser avaliado", "Selecione o usuário responsável pela tarefa"],
         "expandRatio": ["0.15", "0.2", "0.3", "0.35", "0.4", "0.5", "0.6", "1", "1.0", "1.5"],
         "id": ["aprovador", "assignee", "auth", "autorizador", "coordenador", "dbfSolicitante", "gerente", "idResponsavel", "idUsuario", "parCoordenadorDestino", "parCoordenadorOrigem", "processoUsuario", "pUsuario", "responsavel", "revisor", "__TRUNCADO__"],
         "immediate": ["true"],
         "load": ["loggedUser", "none", "taskAssignee"],
         "modelMember": ["false"],
         "onlyActiveUsers": ["true"],
         "required": ["false", "true"],
         "requiredMessage": ["Selecionar um responsável"],
         "type": ["string"],
         "updatable": ["true"],
         "visible": ["false", "true"],
         "width": ["100%", "350px", "50%"]
      },
      propertyValueTypes: {
         "align": "enum",
         "bindTagField": "enum",
         "caption": "text",
         "description": "text",
         "expandRatio": "numeric",
         "id": "text",
         "immediate": "boolean",
         "load": "enum",
         "modelMember": "boolean",
         "onlyActiveUsers": "boolean",
         "required": "boolean",
         "requiredMessage": "text",
         "type": "enum",
         "updatable": "boolean",
         "visible": "boolean",
         "width": "numeric"
      },
      events: [

      ],
      examples: [
         "Vitruvio/Paineis/hml - kanban proj.xml:1287",
         "Vitruvio/Paineis/hml - kanban proj.xml:1288",
         "Vitruvio/Paineis/hml - kanban proj.xml:1507",
         "Vitruvio/Paineis/hml - kanban proj.xml:1508",
         "Vitruvio/Paineis/Painel de auditoria operacional.xml:793",
         "Vitruvio/Paineis/Painel de coleta de validade guiada.xml:1387",
         "Vitruvio/Paineis/Kanban - Gestão de Projetos - Análise.xml:1349",
         "Vitruvio/Paineis/Kanban - Gestão de Projetos - Análise.xml:1600",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:665",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:3136",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:3257",
         "Vitruvio/Paineis/3 - Cadastro de Checklist - Seg-Trabalho.xml:3828"
      ],
      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 UserComboBoxDoc;
