Vize

Règles de la Musea et du CSS

Les règles de la musea valident <art> et <variant> blocages. Les règles CSS inspectent le contenu du style et recommandent patrons qui gardent les styles de composants thématiques, prévisibles et compatibles avec Vue et Vapor.

musea/require-title

Nécessite que chaque fichier d’art fournisse un titre d’affichage. Le titre peut venir de <art title="...">, defineArt("./Button.vue", { title: "..." }), ou du defineArt source de secours composante.

Sévérité par défaut : error

Mauvais :

<art component="./Button.vue">
  <variant name="primary" />
</art>

Bon :

<script setup>
defineArt("./Button.vue", { title: "Button" });
</script>

<art>
  <variant name="primary" />
</art>

musea/require-component

Il faut que chaque fichier d’art nomme le composant qu’il documente. Préfère defineArt("./Button.vue", ...); <art component="..."> reste supporté pour la compatibilité.

Sévérité par défaut : warning

Mauvais :

<art title="Button">
  <variant name="primary" />
</art>

Bon :

<script setup>
defineArt("./Button.vue", { title: "Button" });
</script>

<art>
  <variant name="primary" />
</art>

musea/valid-variant

Exige que <variant> blocs aient une namevalide.

Sévérité par défaut : error

Mauvais :

<art title="Button" component="./Button.vue">
  <variant />
</art>

Bon :

<art title="Button" component="./Button.vue">
  <variant name="primary" />
</art>

musea/unique-variant-names

Nécessite que les noms de variantes soient uniques à l’intérieur d’un bloc d’art.

Sévérité par défaut : error

Mauvais :

<art title="Button" component="./Button.vue">
  <variant name="primary" />
  <variant name="primary" />
</art>

Bon :

<art title="Button" component="./Button.vue">
  <variant name="primary" />
  <variant name="secondary" />
</art>

musea/no-empty-variant

Signale des variantes vides qui ne documentent pas les accessoires, les emplacements ou l’état visuel.

Sévérité par défaut : warning

Mauvais :

<art title="Button" component="./Button.vue">
  <variant name="primary" />
</art>

Bon :

<art title="Button" component="./Button.vue">
  <variant name="primary">
    <Button tone="primary">Save</Button>
  </variant>
</art>

musea/prefer-design-tokens

Il préfère les variables CSS de jetons de conception aux valeurs primitives codées en dur dans les exemples de Musea.

Sévérité par défaut : warning

Mauvais :

<art title="Button" component="./Button.vue">
  <variant name="danger">
    <Button style="color: #d00">Delete</Button>
  </variant>
</art>

Bon :

<art title="Button" component="./Button.vue">
  <variant name="danger">
    <Button class="danger">Delete</Button>
  </variant>
</art>

<style scoped>
.danger {
  color: var(--color-danger-text);
}
</style>

css/no-important

Décourage !important.

Sévérité par défaut : warning

Mauvais :

<style scoped>
.button {
  color: red !important;
}
</style>

Bon :

<style scoped>
.button {
  color: var(--button-color);
}
</style>

css/no-hardcoded-values

Suggère des variables CSS au lieu des valeurs de couleur, d’espacement ou de taille codées.

Sévérité par défaut : warning

Mauvais :

<style scoped>
.button {
  padding: 12px 16px;
  color: #174ea6;
}
</style>

Bon :

<style scoped>
.button {
  padding: var(--space-3) var(--space-4);
  color: var(--color-action-text);
}
</style>

css/no-id-selectors

Décourage les sélecteurs d’identification dans les styles de composants car ils sont difficiles à contourner et à réutiliser.

Sévérité par défaut : warning

Mauvais :

<style scoped>
#submit {
  font-weight: 600;
}
</style>

Bon :

<style scoped>
.submit {
  font-weight: 600;
}
</style>

css/no-display-none

Ça suggère d’utiliser des primitives de visibilité Vue au lieu de masquer les branches de composants avec CSS.

Sévérité par défaut : warning

Mauvais :

<template>
  <p class="message">Saved</p>
</template>

<style scoped>
.message {
  display: none;
}
</style>

Bon :

<template>
  <p v-show="isSaved" class="message">Saved</p>
</template>

css/no-v-bind-performance

Avertit du coût d’exécution du CSS v-bind() en style chaud.

Sévérité par défaut : warning

Mauvais :

<style scoped>
.card {
  transform: translateX(v-bind(offset));
}
</style>

Bon :

<template>
  <article :style="{ transform: `translateX(${offset}px)` }" class="card" />
</template>

css/prefer-logical-properties

Recommande des propriétés logiques pour les mises en page internationalisées.

Sévérité par défaut : warning

Mauvais :

<style scoped>
.panel {
  margin-left: 1rem;
}
</style>

Bon :

<style scoped>
.panel {
  margin-inline-start: 1rem;
}
</style>

css/prefer-slotted

Il recommande ::v-slotted() pour styliser le contenu des emplacements.

Sévérité par défaut : warning

Mauvais :

<style scoped>
.content h2 {
  margin-block: 0;
}
</style>

Bon :

<style scoped>
::v-slotted(h2) {
  margin-block: 0;
}
</style>

css/require-font-display

Cela exige font-display dans @font-face déclarations.

Sévérité par défaut : warning

Mauvais :

<style>
@font-face {
  font-family: "Inter";
  src: url("/inter.woff2") format("woff2");
}
</style>

Bon :

<style>
@font-face {
  font-family: "Inter";
  src: url("/inter.woff2") format("woff2");
  font-display: swap;
}
</style>

Règles CSS supplémentaires

css/no-utility-classes met en garde contre l’implémentation de classes utilitaires dans les styles de composants. Par défaut : warning.

css/prefer-nested-selectors recommande le CSS nesting pour les sélectionneurs descendants. Par défaut : warning.