Contrato de UI Portável
Os IDs a seguir são os donos canônicos de suas regras.
Portabilidade
FE-PORT-001: Portável é o padrão
Um módulo conforme funciona com outro tema de facade conforme, sem edições no módulo e sem classes de facade privadas do projeto.
FE-STYLE-001: Sem dependência privada de facade
Módulos portáveis não podem exigir classes ou seletores arbitrários definidos por apenas uma facade. Regras de tema .p-* compartilhadas do PrimeVue não são classes privadas. Estilização não-PrimeVue exigida por um módulo pertence a esse módulo, mas deve ser minimizada pela conformidade com componentes e semânticas compartilhados.
Quando vários dos seus próprios módulos precisam da mesma estilização não-PrimeVue, ela não pertence nem à facade nem a cada módulo: veja A Camada de Design.
Componentes e affordance
FE-UI-001: Use PrimeVue quando ele atende ao controle
Se o PrimeVue fornece a semântica, a interação e a affordance pretendida, o módulo deve usá-lo.
FE-UI-002: Formato de dados não é affordance
A capacidade de representar os mesmos valores não torna dois controles equivalentes. Um SelectButton não é automaticamente um substituto para um toggle deslizante de três posições quando a affordance pretendida é, visual e comportamentalmente, um toggle.
FE-UI-003: Mesma semântica e affordance significa mesma aparência
Controles equivalentes devem compartilhar tamanhos, espaçamento, cores, tipografia, bordas, sombras, foco, hover, desabilitado, inválido e comportamento de movimento. Um composto customizado nomeia seu irmão visual no PrimeVue e herda toda propriedade de runtime compartilhada aplicável.
FE-UI-004: A omissão do PrimeVue é restrita
O PrimeVue pode ser omitido apenas quando o módulo não renderiza nada que seja física ou semanticamente semelhante ao PrimeVue. Um componente apenas de gráfico se qualifica; um gráfico com um botão ou campo de formulário não.
FE-UI-005: Nunca invente APIs de componentes
Uma prop ou comportamento não documentado não é um atalho. O ToggleSwitch do PrimeVue não se torna um controle de três posições por inventar uma nova prop de posições. Quando nenhum componente ou composição do PrimeVue fornece a affordance necessária, use o processo revisado de irmão customizado.
Tailwind e tokens
FE-TW-001: O Tailwind do Wippy é suportado
O preset compartilhado do Wippy é um contrato suportado de tempo de build. Módulos podem usar seus utilitários documentados e estendê-lo para layout de domínio, breakpoints específicos da aplicação, decoração e visualização inédita.
FE-TW-002: Valores compilados não são tokens de runtime
Utilitários como px-3, rounded-md e duration-200 normalmente compilam para constantes. Eles fornecem uma linha de base consistente, mas não mudam quando uma facade troca as variáveis de tema de runtime.
FE-TW-003: A aparência de irmãos compartilhados acompanha a semântica de runtime
Quando uma propriedade de aparência deve acompanhar um irmão PrimeVue entre temas, use um utilitário semântico documentado e apoiado em runtime, ou um token público direto. Um utilitário fixo só é permitido quando a propriedade é explicitamente classificada como platform-invariant.
FE-TW-004: Mapeamentos protegidos mantêm seu significado
Módulos podem estender o preset, mas não podem redefinir de forma incompatível as semânticas protegidas de primary, surface, severity, text, content, highlight ou de controles portáveis.
FE-TOKEN-001: Todo token deve existir
Toda referência --p-* deve estar presente no manifesto gerado selecionado.
FE-TOKEN-002: Nomes de token não são APIs adivinháveis
Nunca construa um token por analogia. Pesquise no Catálogo de Tokens ou no manifesto do pacote selecionado.
Acessibilidade
FE-A11Y-001: Customizado não é dispensa de acessibilidade
Uma exceção de controle customizado deve preservar HTML válido, interação por teclado, foco, nome acessível, estado e comportamento de desabilitado. Elementos interativos não devem ser aninhados.