chore(initial): ajout de la structure de base du projet avec Vite et Vue 3

- Création des fichiers de configuration pour ESLint, Prettier, et Tailwind CSS
- Ajout de la configuration de l'éditeur avec .editorconfig
- Mise en place de la structure de répertoires pour les composants, les pages, et les données
- Intégration de la gestion des langues avec vue-i18n
- Ajout de la configuration de Vite et des dépendances nécessaires
- Création des fichiers de localisation pour l'anglais et le français
- Ajout de la structure de base pour le portfolio avec des exemples de projets
- Mise en place des composants de base pour l'interface utilisateur
This commit is contained in:
Mr¤KayJayDee
2025-06-22 15:00:35 +02:00
commit cc7368b550
122 changed files with 11938 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
import { ref, watch, onMounted } from 'vue'
export type Theme = 'light' | 'dark'
const isDark = ref<boolean>(false)
export function useTheme() {
const toggleTheme = () => {
isDark.value = !isDark.value
}
const setTheme = (theme: Theme) => {
isDark.value = theme === 'dark'
}
const getTheme = (): Theme => {
return isDark.value ? 'dark' : 'light'
}
// Apply theme to document
const applyTheme = () => {
if (typeof document !== 'undefined') {
document.documentElement.classList.toggle('dark', isDark.value)
document.documentElement.setAttribute('data-theme', getTheme())
}
}
// Save theme to localStorage
const saveTheme = () => {
if (typeof localStorage !== 'undefined') {
localStorage.setItem('theme', getTheme())
}
}
// Load theme from localStorage or system preference
const loadTheme = () => {
if (typeof window !== 'undefined') {
const savedTheme = localStorage.getItem('theme') as Theme | null
if (savedTheme) {
setTheme(savedTheme)
} else {
// Use system preference
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches
setTheme(prefersDark ? 'dark' : 'light')
}
}
}
// Watch for theme changes
watch(isDark, () => {
applyTheme()
saveTheme()
})
// Initialize theme on mount
onMounted(() => {
loadTheme()
applyTheme()
})
return {
isDark,
toggleTheme,
setTheme,
getTheme
}
}