| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import { createVuetify } from 'vuetify'
- import 'vuetify/styles'
- import { aliases, fa } from 'vuetify/iconsets/fa'
- import '@fortawesome/fontawesome-free/css/all.css'
- import { en } from 'vuetify/locale'
- import { defineNuxtPlugin } from '#app'
- interface Theme {
- dark: boolean,
- colors: {
- /**
- * @see Cf. doc/colors.md pour le rôle de chaque couleur
- */
- // Global
- 'background': string,
- 'on-background': string,
- 'surface': string,
- 'on-surface': string,
- 'primary': string,
- 'on-primary': string,
- 'primary-alt': string,
- 'on-primary-alt': string,
- 'secondary': string,
- 'on-secondary': string,
- 'neutral-strong': string,
- 'on-neutral-strong': string,
- 'neutral': string,
- 'on-neutral': string,
- 'on-neutral--clickable': string,
- 'neutral-soft': string,
- 'on-neutral-soft': string,
- 'danger': string,
- 'on-danger': string,
- 'success': string,
- 'on-success': string,
- 'warning': string,
- 'on-warning': string,
- 'info': string,
- 'on-info': string,
- }
- }
- export const lightTheme: Theme = {
- dark: false,
- colors: {
- 'background': '#ffffff',
- 'on-background': '#000000',
- 'code-background': '#f6f8fa',
- 'on-code-background': '#000000',
- 'surface': '#ffffff',
- 'on-surface': '#000000',
- 'primary': '#515794',
- 'on-primary': '#ffffff',
- 'primary-alt': '#a9e0d6',
- 'on-primary-alt': '#777777',
- 'secondary': '#ced0e4',
- 'on-secondary': '#f5f5f5',
- 'neutral-strong': '#777777',
- 'on-neutral-strong': '#ecf0f5',
- 'neutral': '#ffffff',
- 'on-neutral': '#404040',
- 'on-neutral--clickable': '#515794',
- 'neutral-soft': '#ecf0f5',
- 'on-neutral-soft': '#464646',
- // Content
- 'danger': '#f56954',
- 'on-danger': '#ffffff',
- 'success': '#00a65a',
- 'on-success': '#ffffff',
- 'warning': '#f39c12',
- 'on-warning': '#ffffff',
- 'info': '#3c8dbc',
- 'on-info': '#ffffff',
- }
- }
- export const darkTheme: Theme = {
- dark: true,
- colors: {
- 'background': '#1a1a1a',
- 'on-background': '#ffffff',
- 'code-background': '#161b22',
- 'on-code-background': '#ffffff',
- 'surface': '#262626',
- 'on-surface': '#ffffff',
- 'primary': '#adb2d2',
- 'on-primary': '#404040',
- 'primary-alt': '#a9e0d6',
- 'on-primary-alt': '#777777',
- 'secondary': '#324150',
- 'on-secondary': '#f5f5f5',
- 'neutral-strong': '#595959',
- 'on-neutral-strong': '#ecf0f5',
- 'neutral': '#131a20',
- 'on-neutral': '#cccccc',
- 'on-neutral--clickable': '#9ca1c9',
- 'neutral-soft': '#090c11',
- 'on-neutral-soft': '#cccccc',
- // Content
- 'danger': '#f56954',
- 'on-danger': '#ffffff',
- 'success': '#00a65a',
- 'on-success': '#ffffff',
- 'warning': '#f39c12',
- 'on-warning': '#ffffff',
- 'info': '#3c8dbc',
- 'on-info': '#ffffff',
- }
- }
- export default defineNuxtPlugin((nuxtApp) => {
- const vuetify = createVuetify({
- ssr: true,
- locale: {
- locale: 'en',
- messages: { en },
- },
- theme: {
- defaultTheme: 'dark',
- themes: {
- light: lightTheme,
- dark: darkTheme
- },
- },
- icons: {
- defaultSet: 'fa',
- aliases,
- sets: {
- fa,
- },
- },
- })
- nuxtApp.vueApp.use(vuetify)
- })
|