Personnalisation des variables CSS

Orion UI utilise un système de variables CSS définies sur les sélecteurs data-orion-theme='light' et data-orion-theme='dark'.
Le dark thème surcharge uniquement les variables de couleur. Ces variables permettent de personnaliser la typographie, les couleurs, les espacements et les arrondis de tous les composants.
Le fichier correspondant est css-vars.less

Surcharger le style

Il est facile de surcharger les variables CSS par défaut pour adapter l'apparence au thème souhaité.

Le plus simple est de créer un fichier qui va contenir toutes les surcharges dont vous avez besoin (orion-override.less par exemple), et de l'importer dans votre fichier de style après les imports de styles d'Orion.

main.less
@import "@orion.ui/orion/dist/styles/styles.less";
@import "@orion.ui/orion/dist/styles/packages/index.less";

@import "orion-override.less";

h1 {
	color: var(--grey-light);
}
...

Surcharge des sélecteurs CSS

orion-override.less

.orion-input {
	&__input {
		border-color: var(--neutral-100);
	}

  // Modification pour le dark-thème
  [data-orion-theme="dark"] & {
    background-color: var(--info-100);
  }
}

.orion-sticker {
	align-items: center;
	padding: 1.5rem;
	border-radius: 0.75rem;
	font-size: 0.9rem;

	&__title {
		margin-bottom: 0.25rem;
		font-size: 1rem;
		color: var(--brand);
	}
}

surcharge d'un élément en particulier

En utilisant un bloc <style scoped> et le sélecteur :deep() il est possible de modifier ponctuellement le style d'un composant d'Orion

MyComponent.vue
<style lang="less" scoped>

.my-component {
  display: flex;
  justify-content: flex-end;

// surcharge du style uniquement au sein de MyComponent
  :deep(.orion-icon) {
    font-size: 1rem;
  }
}
</style>

Surcharge des variables

orion-override.less
:root {
	--radius-input: 0.5rem;
	--rgb-brand: 51, 67, 148;
}

Variables disponibles

Fontes et tailles de texte

VariableDescriptionValeur par défaut
--font-familyPolice principale'Source Sans Pro', sans-serif
--font-titlePolice des titres'Source Sans Pro', sans-serif
--font-paragraphPolice des paragraphes'Source Sans Pro', sans-serif
--size-defaultTaille de base0.875rem
--font-weight-defaultGraisse par défaut400
--font-weight-titleGraisse des titres700
--font-weight-page-titleGraisse titre de page700
--font-weight-page-subtitleGraisse sous-titre de page300
--font-weight-section-titleGraisse titre de section600
--font-weight-section-subtitleGraisse sous-titre de section300

Rayons (Border radius)

VariableComposant concernéValeur par défaut
--radius-cardOrionCard0.5rem
--radius-stickerOrionSticker0.5rem
--radius-popoverOrionPopover0.5rem
--radius-btnOrionButton0.25rem
--radius-labelOrionLabel0.25rem
--radius-alertOrionAlert0.25rem
--radius-notifOrionNotification0.25rem
--radius-asideOrionAside1.25rem
--radius-modalOrionModal1.25rem
--radius-input-rangeOrionInputRange0.5rem
--radius-inputOrionInput0.25rem
--radius-uploadOrionUpload0.25rem

Couleurs

Variables RGB de base

Ces variables stockent les couleurs sous forme de triplets RGB et servent de source pour toutes les autres variables CSS.
Chaque couleur possède 3 déclinaisons supplémentaires (light, dark, alt)

CouleurVariableValeur en thème clairValeur en thème sombre
Principale--rgb-brand112, 39, 250156, 105, 252
--rgb-brand-light242, 233, 255199, 169, 253
--rgb-brand-dark83, 5, 22821, 1, 57
--rgb-brand-alt163, 64, 205163, 64, 205
Gris--rgb-grey-darker56, 61, 71235, 235, 235
--rgb-grey-dark113, 122, 142173, 173, 175
--rgb-grey183, 188, 19871, 71, 77
--rgb-grey-light220, 223, 23042, 44, 47
--rgb-grey-lighter246, 247, 24926, 28, 32
Succès--rgb-success0, 214, 11849, 253, 162
--rgb-success-light225, 255, 242137, 254, 201
--rgb-success-dark4, 170, 940, 42, 23
--rgb-success-alt185, 213, 4185, 213, 4_
Info--rgb-info0, 120, 25576, 160, 255
--rgb-info-light229, 241, 255153, 201, 255
--rgb-info-dark1, 94, 2040, 24, 51
--rgb-info-alt0, 230, 2440, 230, 244_
Avertissement--rgb-warning253, 151, 73254, 182, 128
--rgb-warning-light255, 233, 219254, 213, 182
--rgb-warning-dark252, 114, 1164, 28, 1
--rgb-warning-alt254, 203, 3254, 203, 3_
Danger--rgb-danger247, 53, 104247, 94, 135
--rgb-danger-light253, 215, 225250, 135, 165
--rgb-danger-dark230, 10, 6958, 2, 17
--rgb-danger-alt240, 25, 72240, 25, 72
Rose--rgb-pink247, 149, 237250, 182, 243
--rgb-pink-light253, 234, 251252, 213, 248
--rgb-pink-dark242, 77, 22574, 6, 67
--rgb-pink-alt255, 0, 128255, 0, 128_

Variables CSS dérivées

Ces variables utilisent les valeurs RGB pour créer des couleurs CSS utilisables directement dans le style.

CouleurVariable CSS
Principale--brand
--brand-light
--brand-dark
--brand-alt
Gris--grey-darker
--grey-dark
--grey
--grey-light
--grey-lighter
Inverse/Base--inverse
--base
Info--info
--info-light
--info-dark
--info-alt
Succès--success
--success-light
--success-dark
--success-alt
Avertissement--warning
--warning-light
--warning-dark
--warning-alt
Danger--danger
--danger-light
--danger-dark
--danger-alt
Rose--pink
--pink-light
--pink-dark
--pink-alt

Bonnes pratiques

  1. Toujours utiliser les variables CSS dérivées (--grey, --brand, etc.) dans vos styles plutôt que les RVB bruts pour assurer la cohérence des thèmes.
  2. Surcharger les couleurs pour les thèmes sombres uniquement en modifiant les variables RVB correspondantes.
  3. Éviter de modifier directement les variables dérivées, pour ne pas casser la cohérence des thèmes.
  4. Utiliser les suffixes -light, -dark, -alt pour gérer les nuances et les variantes de couleur.

Exemple d’utilisation

.button {
  background-color: var(--brand);
  color: var(--base);
}

.alert-success {
  background-color: var(--success-light);
  border-color: var(--success);
  color: rgb(var(--rgb-inverse),0.2); // Pour gérer l'opacité par exemple
}

Fluid

Les variables --fluid-* sont utilisées pour définir des padding et rester cohérent dans toute l'application.

VariableValeur par défaut
--fluid-5pxcalc(3px + 0.125rem)
--fluid-8pxcalc(5px + 0.1875rem)
--fluid-10pxcalc(5px + 0.3125rem)
--fluid-12pxcalc(8px + 0.25rem)
--fluid-15pxcalc(10px + 0.3rem)
--fluid-18pxcalc(10px + 0.5rem)
--fluid-20pxcalc(12px + 0.5rem)
--fluid-25pxcalc(13px + 0.75rem)
--fluid-30pxcalc(14px + 1rem)
--fluid-35pxcalc(19px + 1rem)
--fluid-40pxcalc(24px + 1rem)
--fluid-45pxcalc(25px + 1.25rem)
--fluid-60pxcalc(36px + 1.5rem)

Espaces

Les variables --space-* définissent les marges et espacements standards dans la grille du design.
Elles sont fixes (en rem) et permettent de garantir une cohérence verticale et horizontale.

VariableValeur par défautUtilisation recommandée
--space-xs0.5remEspacement très petit (éléments très proches)
--space-sm1remPetit espacement
--space-md2remEspacement moyen
--space-lg3remGrand espacement
--space-xl4remTrès grand espacement

Conseil

Ces valeurs sont idéales pour définir les gaps entre composants, sections, ou colonnes.