vuetify.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { createVuetify } from 'vuetify'
  2. import 'vuetify/styles'
  3. import { aliases, fa } from 'vuetify/iconsets/fa'
  4. import { mdi } from 'vuetify/iconsets/mdi'
  5. import '@fortawesome/fontawesome-free/css/all.css'
  6. import '@mdi/font/css/materialdesignicons.css'
  7. import {fr} from 'vuetify/locale'
  8. const lightTheme = {
  9. dark: false,
  10. colors: {
  11. /**
  12. * @see Cf. doc/colors.md pour le rôle de chaque couleur
  13. */
  14. // Global
  15. 'primary': '#00ad8e',
  16. 'n-primary': '#ffffff',
  17. 'primary-alt': '#a9e0d6',
  18. 'n-primary-alt': '#777777',
  19. 'secondary': '#324150',
  20. 'n-secondary': '#f5f5f5',
  21. 'secondary-alt': '#2c3a48',
  22. 'n-secondary-alt': '#ffffff',
  23. 'neutral-strong': '#777777',
  24. 'n-neutral-strong': '#ecf0f5',
  25. 'neutral': '#f5f5f5',
  26. 'n-neutral': '#777777',
  27. 'neutral-soft': '#ecf0f5',
  28. 'n-neutral-soft': '#464646',
  29. // Content
  30. 'danger': '#f56954',
  31. 'n-danger': '#ffffff',
  32. 'success': '#00a65a',
  33. 'n-success': '#ffffff',
  34. 'warning': '#f39c12',
  35. 'n-warning': '#ffffff',
  36. 'info': '#3c8dbc',
  37. 'n-info': '#ffffff',
  38. // Special cases
  39. // TODO: voir ceux dont on peut se passer
  40. 'x-create-btn': '#f39c12',
  41. 'n-x-create-btn': '#ffffff',
  42. }
  43. }
  44. const darkTheme = {
  45. dark: true,
  46. colors: {
  47. /**
  48. * @see Cf. doc/colors.md pour le rôle de chaque couleur
  49. */
  50. // Global
  51. 'primary': '#00ad8e',
  52. 'n-primary': '#ffffff',
  53. 'primary-alt': '#a9e0d6',
  54. 'n-primary-alt': '#777777',
  55. 'secondary': '#324150',
  56. 'n-secondary': '#f5f5f5',
  57. 'secondary-alt': '#2c3a48',
  58. 'n-secondary-alt': '#ffffff',
  59. 'neutral-strong': '#595959',
  60. 'n-neutral-strong': '#ecf0f5',
  61. 'neutral': '#777777',
  62. 'n-neutral': '#f5f5f5',
  63. 'neutral-soft': '#090c11',
  64. 'n-neutral-soft': '#cccccc',
  65. // Content
  66. 'danger': '#f56954',
  67. 'n-danger': '#ffffff',
  68. 'success': '#00a65a',
  69. 'n-success': '#ffffff',
  70. 'warning': '#f39c12',
  71. 'n-warning': '#ffffff',
  72. 'info': '#3c8dbc',
  73. 'n-info': '#ffffff',
  74. // Special cases
  75. // TODO: voir ceux dont on peut se passer
  76. 'x-create-btn': '#f39c12',
  77. 'n-x-create-btn': '#ffffff',
  78. }
  79. }
  80. export default defineNuxtPlugin(nuxtApp => {
  81. const vuetify = createVuetify({
  82. ssr: true,
  83. locale: {
  84. locale: 'fr',
  85. messages: { fr }
  86. },
  87. theme: {
  88. defaultTheme: 'light',
  89. themes: {
  90. light: lightTheme,
  91. dark: darkTheme
  92. },
  93. },
  94. icons: {
  95. defaultSet: 'fa',
  96. aliases,
  97. sets: {
  98. fa,
  99. mdi
  100. }
  101. },
  102. })
  103. nuxtApp.vueApp.use(vuetify)
  104. })