pull/7405/head
Cagatay Civici 2025-03-11 11:36:30 +03:00
commit 0e43fd4384
13 changed files with 355 additions and 399 deletions

View File

@ -4,32 +4,33 @@
</NuxtLayout>
</template>
<script>
<script setup>
import EventBus from '@/layouts/AppEventBus';
import { onBeforeUnmount, onMounted } from 'vue';
export default {
mounted() {
EventBus.on('dark-mode-toggle', this.darkModeToggleListener);
},
beforeUnmount() {
EventBus.off('dark-mode-toggle', this.darkModeToggleListener);
},
methods: {
darkModeToggleListener(event) {
const { layoutState } = useLayout();
const toggleDarkMode = () => {
document.documentElement.classList.toggle('p-dark');
layoutState.darkTheme = !layoutState.darkTheme;
EventBus.emit('dark-mode-toggle-complete');
};
const darkModeToggleListener = (event) => {
if (!document.startViewTransition) {
this.toggleDarkMode(event);
toggleDarkMode(event);
return;
}
document.startViewTransition(() => this.toggleDarkMode(event));
},
toggleDarkMode() {
document.documentElement.classList.toggle('p-dark');
this.$appState.darkTheme = !this.$appState.darkTheme;
EventBus.emit('dark-mode-toggle-complete');
}
}
document.startViewTransition(() => toggleDarkMode(event));
};
onMounted(() => {
EventBus.on('dark-mode-toggle', darkModeToggleListener);
});
onBeforeUnmount(() => {
EventBus.off('dark-mode-toggle', darkModeToggleListener);
});
</script>

View File

@ -22,7 +22,7 @@
:key="surface.name"
type="button"
@click="updateColors('surface', surface)"
:class="{ 'active-color': selectedSurfaceColor ? selectedSurfaceColor === surface.name : $appState.darkTheme ? surface.name === 'zinc' : surface.name === 'slate' }"
:class="{ 'active-color': selectedSurfaceColor ? selectedSurfaceColor === surface.name : layoutState.darkTheme ? surface.name === 'zinc' : surface.name === 'slate' }"
:style="{ backgroundColor: `${surface.palette[500]}` }"
></button>
</div>
@ -31,13 +31,13 @@
</div>
</template>
<script>
<script setup>
import EventBus from '@/layouts/AppEventBus';
import { computed, ref } from 'vue';
export default {
data() {
return {
primaryColors: [
const { layoutState } = useLayout();
const primaryColors = ref([
{ name: 'noir', palette: {} },
{ name: 'emerald', palette: { 50: '#ecfdf5', 100: '#d1fae5', 200: '#a7f3d0', 300: '#6ee7b7', 400: '#34d399', 500: '#10b981', 600: '#059669', 700: '#047857', 800: '#065f46', 900: '#064e3b', 950: '#022c22' } },
{ name: 'green', palette: { 50: '#f0fdf4', 100: '#dcfce7', 200: '#bbf7d0', 300: '#86efac', 400: '#4ade80', 500: '#22c55e', 600: '#16a34a', 700: '#15803d', 800: '#166534', 900: '#14532d', 950: '#052e16' } },
@ -55,8 +55,9 @@ export default {
{ name: 'fuchsia', palette: { 50: '#fdf4ff', 100: '#fae8ff', 200: '#f5d0fe', 300: '#f0abfc', 400: '#e879f9', 500: '#d946ef', 600: '#c026d3', 700: '#a21caf', 800: '#86198f', 900: '#701a75', 950: '#4a044e' } },
{ name: 'pink', palette: { 50: '#fdf2f8', 100: '#fce7f3', 200: '#fbcfe8', 300: '#f9a8d4', 400: '#f472b6', 500: '#ec4899', 600: '#db2777', 700: '#be185d', 800: '#9d174d', 900: '#831843', 950: '#500724' } },
{ name: 'rose', palette: { 50: '#fff1f2', 100: '#ffe4e6', 200: '#fecdd3', 300: '#fda4af', 400: '#fb7185', 500: '#f43f5e', 600: '#e11d48', 700: '#be123c', 800: '#9f1239', 900: '#881337', 950: '#4c0519' } }
],
surfaces: [
]);
const surfaces = ref([
{
name: 'slate',
palette: { 0: '#ffffff', 50: '#f8fafc', 100: '#f1f5f9', 200: '#e2e8f0', 300: '#cbd5e1', 400: '#94a3b8', 500: '#64748b', 600: '#475569', 700: '#334155', 800: '#1e293b', 900: '#0f172a', 950: '#020617' }
@ -89,48 +90,40 @@ export default {
name: 'ocean',
palette: { 0: '#ffffff', 50: '#fbfcfc', 100: '#F7F9F8', 200: '#EFF3F2', 300: '#DADEDD', 400: '#B1B7B6', 500: '#828787', 600: '#5F7274', 700: '#415B61', 800: '#29444E', 900: '#183240', 950: '#0c1920' }
}
]
]);
const selectedPrimaryColor = computed(() => layoutState.primary);
const selectedSurfaceColor = computed(() => layoutState.surface);
const applyTheme = (type, color) => {
Object.keys(color.palette).forEach((key) => {
document.documentElement.style.setProperty(`--p-${type}-${key}`, color.palette[key]);
});
};
},
methods: {
updateColors(type, color) {
const updateColors = (type, color) => {
if (type === 'primary') {
this.$appState.primary = color.name;
layoutState.primary = color.name;
if (color.name === 'noir') {
document.documentElement.classList.add('p-noir');
document.documentElement.style.setProperty('--logo-color', 'var(--text-secondary-color)');
this.applyTheme(
applyTheme(
type,
this.surfaces.find((s) => s.name === this.$appState.surface)
surfaces.value.find((s) => s.name === layoutState.surface)
);
} else {
document.documentElement.classList.remove('p-noir');
document.documentElement.style.setProperty('--logo-color', 'var(--primary-color)');
this.applyTheme(type, color);
applyTheme(type, color);
}
} else if (type === 'surface') {
this.$appState.surface = color.name;
this.applyTheme(type, color);
layoutState.surface = color.name;
applyTheme(type, color);
}
EventBus.emit('theme-palette-change');
},
applyTheme(type, color) {
Object.keys(color.palette).forEach((key) => {
document.documentElement.style.setProperty(`--p-${type}-${key}`, color.palette[key]);
});
}
},
computed: {
selectedPrimaryColor() {
return this.$appState.primary;
},
selectedSurfaceColor() {
return this.$appState.surface;
}
}
};
</script>

View File

@ -7,14 +7,9 @@
</div>
</template>
<script>
<script setup>
import pkg from '@/package.json';
import { ref } from 'vue';
export default {
data() {
return {
version: pkg.version
};
}
};
const version = ref(pkg.version);
</script>

View File

@ -8,20 +8,16 @@
</aside>
</template>
<script>
<script setup>
import menudata from '@/assets/data/menu.json';
import { ref } from 'vue';
export default {
props: {
const props = defineProps({
active: {
type: Boolean,
default: true
}
},
data() {
return {
menu: menudata.data
};
}
};
});
const menu = ref(menudata.data);
</script>

View File

@ -33,11 +33,11 @@
</li>
</template>
<script>
<script setup>
import Tag from '@/volt/tag';
import { useRouter } from 'vue-router';
export default {
props: {
const props = defineProps({
root: {
type: Boolean,
default: true
@ -46,17 +46,11 @@ export default {
type: Object,
default: null
}
},
methods: {
isActiveRootmenuItem(menuitem) {
return (
menuitem.children &&
!menuitem.children.some((item) => item.to === `/${this.$router.currentRoute.value?.name?.replaceAll('-', '/')}` || (item.children && item.children.some((it) => it.to === `/${this.$router.currentRoute.value.name}`)))
);
}
},
components: {
Tag
}
});
const router = useRouter();
const isActiveRootmenuItem = (menuitem) => {
return menuitem.children && !menuitem.children.some((item) => item.to === `/${router.currentRoute.value?.name?.replaceAll('-', '/')}` || (item.children && item.children.some((it) => it.to === `/${router.currentRoute.value.name}`)));
};
</script>

View File

@ -1,10 +1,10 @@
<template>
<div v-if="$appState.newsActive" class="layout-news">
<div v-if="layoutState.newsActive" class="layout-news">
<div class="layout-news-container">
<i></i>
<div class="layout-news-content">
<span class="layout-news-text">{{ $appState.announcement.content }}</span>
<a v-if="$appState.announcement.linkHref" class="layout-news-link" :href="$appState.announcement.linkHref">{{ $appState.announcement.linkText }}</a>
<span class="layout-news-text">{{ layoutState.announcement.content }}</span>
<a v-if="layoutState.announcement.linkHref" class="layout-news-link" :href="layoutState.announcement.linkHref">{{ layoutState.announcement.linkText }}</a>
</div>
<a class="layout-news-close" @click="onClose">
<span class="pi pi-times"></span>
@ -13,36 +13,36 @@
</div>
</template>
<script>
<script setup>
import News from '@/assets/data/news.json';
import { onMounted } from 'vue';
export default {
mounted() {
const itemString = localStorage.getItem(this.$appState.storageKey);
const { layoutState } = useLayout();
onMounted(() => {
const itemString = localStorage.getItem(layoutState.storageKey);
if (itemString) {
const item = JSON.parse(itemString);
if (!item.hiddenNews || item.hiddenNews !== News.id) {
this.$appState.newsActive = true;
this.$appState.announcement = News;
layoutState.newsActive = true;
layoutState.announcement = News;
} else {
this.$appState.newsActive = false;
layoutState.newsActive = false;
}
} else {
this.$appState.announcement = News;
this.$appState.newsActive = true;
layoutState.announcement = News;
layoutState.newsActive = true;
}
},
methods: {
onClose() {
this.$appState.newsActive = false;
});
const onClose = () => {
layoutState.newsActive = false;
const item = {
hiddenNews: this.$appState.announcement.id
hiddenNews: layoutState.announcement.id
};
localStorage.setItem(this.$appState.storageKey, JSON.stringify(item));
}
}
localStorage.setItem(layoutState.storageKey, JSON.stringify(item));
};
</script>

View File

@ -1,5 +1,5 @@
<template>
<div :ref="containerRef" class="layout-topbar">
<div ref="container" class="layout-topbar">
<div class="layout-topbar-inner">
<div class="layout-topbar-logo-container">
<PrimeVueNuxtLink to="/" class="layout-topbar-logo" aria-label="PrimeVue logo">
@ -51,7 +51,7 @@
</li>
<li>
<button type="button" class="topbar-item" @click="toggleDarkMode">
<i :class="['pi', { 'pi-moon': $appState.darkTheme, 'pi-sun': !$appState.darkTheme }]"></i>
<i :class="['pi', { 'pi-moon': layoutState.darkTheme, 'pi-sun': !layoutState.darkTheme }]"></i>
</button>
</li>
<li class="relative">
@ -64,8 +64,8 @@
</button>
<AppConfigurator />
</li>
<li v-if="showMenuButton" class="menu-button">
<button type="button" class="topbar-item menu-button" @click="onMenuButtonClick" aria-haspopup aria-label="Menu">
<li class="menu-button">
<button type="button" class="topbar-item" @click="onMenuButtonClick" aria-haspopup aria-label="Menu">
<i class="pi pi-bars"></i>
</button>
</li>
@ -74,75 +74,52 @@
</div>
</template>
<script>
<script setup>
import EventBus from '@/layouts/AppEventBus';
import { onBeforeUnmount, onMounted, ref } from 'vue';
export default {
emits: ['menubutton-click'],
props: {
showMenuButton: {
type: Boolean,
default: true
}
},
scrollListener: null,
container: null,
mounted() {
this.bindScrollListener();
},
beforeUnmount() {
if (this.scrollListener) {
this.unbindScrollListener();
}
},
methods: {
onMenuButtonClick(event) {
this.$emit('menubutton-click', event);
},
toggleDarkMode() {
EventBus.emit('dark-mode-toggle', { dark: !this.$appState.darkTheme });
},
bindScrollListener() {
if (!this.scrollListener) {
if (this.container) {
this.scrollListener = () => {
if (window.scrollY > 0) this.container.classList.add('layout-topbar-sticky');
else this.container.classList.remove('layout-topbar-sticky');
const emit = defineEmits(['menubutton-click']);
const { layoutState } = useLayout();
const container = ref(null);
let scrollListener = null;
const onMenuButtonClick = (event) => {
emit('menubutton-click', event);
};
const toggleDarkMode = () => {
EventBus.emit('dark-mode-toggle', { dark: !layoutState.darkTheme });
};
const bindScrollListener = () => {
if (!scrollListener) {
if (container.value) {
scrollListener = () => {
if (window.scrollY > 0) container.value.classList.add('layout-topbar-sticky');
else container.value.classList.remove('layout-topbar-sticky');
};
}
}
window.addEventListener('scroll', this.scrollListener);
},
unbindScrollListener() {
if (this.scrollListener) {
window.removeEventListener('scroll', this.scrollListener);
this.scrollListener = null;
}
},
bindOutsideClickListener() {
if (!this.outsideClickListener) {
this.outsideClickListener = (event) => {
if (this.isOutsideTopbarMenuClicked(event)) {
this.unbindOutsideClickListener();
window.addEventListener('scroll', scrollListener);
};
const unbindScrollListener = () => {
if (scrollListener) {
window.removeEventListener('scroll', scrollListener);
scrollListener = null;
}
};
document.addEventListener('click', this.outsideClickListener);
onMounted(() => {
bindScrollListener();
});
onBeforeUnmount(() => {
if (scrollListener) {
unbindScrollListener();
}
},
unbindOutsideClickListener() {
if (this.outsideClickListener) {
document.removeEventListener('click', this.outsideClickListener);
this.outsideClickListener = null;
}
},
isOutsideTopbarMenuClicked(event) {
return !(this.$refs.topbarMenu.isSameNode(event.target) || this.$refs.topbarMenu.contains(event.target));
},
containerRef(el) {
this.container = el;
}
}
};
});
</script>

View File

@ -0,0 +1,16 @@
import { reactive } from 'vue';
const layoutState = reactive({
primary: 'emerald',
surface: 'zinc',
darkTheme: false,
codeSandbox: false,
sourceType: 'options-api',
newsActive: false,
announcement: null,
storageKey: 'primevue-tailwind'
});
export function useLayout() {
return { layoutState };
}

View File

@ -1,5 +1,5 @@
<template>
<div class="layout-wrapper" :class="containerClass">
<div :class="containerClass">
<AppNews />
<AppTopBar @menubutton-click="onMenuButtonClick" />
<div :class="['layout-mask', { 'layout-mask-active': sidebarActive }]" @click="onMaskClick"></div>
@ -17,57 +17,50 @@
</div>
</template>
<script>
<script setup>
import Toast from '@/volt/toast';
import { blockBodyScroll, unblockBodyScroll } from '@primeuix/utils/dom';
import { useToast } from 'primevue/usetoast';
import { computed, ref, watch } from 'vue';
export default {
data() {
return {
sidebarActive: false
};
},
/*watch: {
$route: {
immediate: true,
handler() {
if (!process.client || typeof window === 'undefined') {
return;
}
const { layoutState } = useLayout();
const route = useRoute();
const toast = useToast();
const sidebarActive = ref(false);
this.sidebarActive = false;
unblockBodyScroll('blocked-scroll');
this.$toast.removeAllGroups();
}
}
},*/
methods: {
onMenuButtonClick() {
if (this.sidebarActive) {
this.sidebarActive = false;
unblockBodyScroll('blocked-scroll');
} else {
this.sidebarActive = true;
blockBodyScroll('blocked-scroll');
}
},
onMaskClick() {
this.sidebarActive = false;
unblockBodyScroll('blocked-scroll');
}
},
computed: {
containerClass() {
const containerClass = computed(() => {
return [
'layout-wrapper',
{
'layout-news-active': this.$appState.newsActive
'layout-news-active': layoutState.newsActive
}
];
}
},
components: {
Toast
});
const onMenuButtonClick = () => {
if (sidebarActive.value) {
sidebarActive.value = false;
unblockBodyScroll('blocked-scroll');
} else {
sidebarActive.value = true;
blockBodyScroll('blocked-scroll');
}
};
const onMaskClick = () => {
sidebarActive.value = false;
unblockBodyScroll('blocked-scroll');
};
watch(
() => route.path,
() => {
// if (!import.meta.client || typeof window === 'undefined') {
// return;
// }
sidebarActive.value = false;
unblockBodyScroll('blocked-scroll');
toast.removeAllGroups();
}
);
</script>

View File

@ -7,24 +7,30 @@
</template>
<script setup>
import { usePrimeVue } from 'primevue/config';
import { computed } from 'vue';
definePageMeta({
layout: 'custom'
});
</script>
<script>
export default {
layout: 'custom',
props: {
const props = defineProps({
theme: {
type: String,
default: null
}
},
computed: {
landingClass() {
return ['landing bg-surface-0 dark:bg-surface-900', { 'layout-news-active': this.$appState?.newsActive, 'layout-ripple-disabled': this.$primevue.config.ripple === false }];
});
const { layoutState } = useLayout();
const primevue = usePrimeVue();
const landingClass = computed(() => {
return [
'landing bg-surface-0 dark:bg-surface-900',
{
'layout-news-active': layoutState.newsActive,
'layout-ripple-disabled': primevue.config.ripple === false
}
}
};
];
});
</script>

View File

@ -1,24 +1,7 @@
import DeferredDemo from '@/components/demo/DeferredDemo.vue';
import CodeHighlight from '@/directives/CodeHighlight';
import { reactive } from 'vue';
const $appStatePlugin = {
install: (app) => {
app.config.globalProperties.$appState = reactive({
primary: 'emerald',
surface: 'zinc',
darkTheme: false,
codeSandbox: false,
sourceType: 'options-api',
newsActive: false,
announcement: null,
storageKey: 'primevue-tailwind'
});
}
};
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.component('DeferredDemo', DeferredDemo);
nuxtApp.vueApp.directive('code', CodeHighlight);
nuxtApp.vueApp.use($appStatePlugin);
});

View File

@ -1,9 +1,11 @@
import PrimeVue from 'primevue/config';
import StyleClass from 'primevue/styleclass';
import ToastService from 'primevue/toastservice';
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(PrimeVue, {
unstyled: true
});
nuxtApp.vueApp.directive('styleclass', StyleClass);
nuxtApp.vueApp.use(ToastService);
});

View File

@ -1607,8 +1607,8 @@ packages:
cpu: [x64]
os: [win32]
'@eslint-community/eslint-utils@4.4.1':
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
'@eslint-community/eslint-utils@4.5.0':
resolution: {integrity: sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
@ -2384,51 +2384,51 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
'@typescript-eslint/eslint-plugin@8.26.0':
resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==}
'@typescript-eslint/eslint-plugin@8.26.1':
resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/parser@8.26.0':
resolution: {integrity: sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==}
'@typescript-eslint/parser@8.26.1':
resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/scope-manager@8.26.0':
resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==}
'@typescript-eslint/scope-manager@8.26.1':
resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.26.0':
resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==}
'@typescript-eslint/type-utils@8.26.1':
resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/types@8.26.0':
resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==}
'@typescript-eslint/types@8.26.1':
resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.26.0':
resolution: {integrity: sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==}
'@typescript-eslint/typescript-estree@8.26.1':
resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/utils@8.26.0':
resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==}
'@typescript-eslint/utils@8.26.1':
resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/visitor-keys@8.26.0':
resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==}
'@typescript-eslint/visitor-keys@8.26.1':
resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unhead/dom@1.11.20':
@ -3593,8 +3593,8 @@ packages:
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
eslint-plugin-jsdoc@50.6.3:
resolution: {integrity: sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==}
eslint-plugin-jsdoc@50.6.6:
resolution: {integrity: sha512-4jLo9NZqHfyNtiBxAU293eX1xi6oUIBcAxJJL/hHeeNhh26l4l/Apmu0x9SarvSQ/gWNOrnFci4DSPupN4//WA==}
engines: {node: '>=18'}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@ -8178,7 +8178,7 @@ snapshots:
'@esbuild/win32-x64@0.25.1':
optional: true
'@eslint-community/eslint-utils@4.4.1(eslint@9.22.0(jiti@2.4.2))':
'@eslint-community/eslint-utils@4.5.0(eslint@9.22.0(jiti@2.4.2))':
dependencies:
eslint: 9.22.0(jiti@2.4.2)
eslint-visitor-keys: 3.4.3
@ -8551,14 +8551,14 @@ snapshots:
'@eslint/js': 9.22.0
'@nuxt/eslint-plugin': 1.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@stylistic/eslint-plugin': 4.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/parser': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
eslint: 9.22.0(jiti@2.4.2)
eslint-config-flat-gitignore: 2.1.0(eslint@9.22.0(jiti@2.4.2))
eslint-flat-config-utils: 2.0.1
eslint-merge-processors: 2.0.0(eslint@9.22.0(jiti@2.4.2))
eslint-plugin-import-x: 4.6.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
eslint-plugin-jsdoc: 50.6.3(eslint@9.22.0(jiti@2.4.2))
eslint-plugin-jsdoc: 50.6.6(eslint@9.22.0(jiti@2.4.2))
eslint-plugin-regexp: 2.7.0(eslint@9.22.0(jiti@2.4.2))
eslint-plugin-unicorn: 57.0.0(eslint@9.22.0(jiti@2.4.2))
eslint-plugin-vue: 10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2)))
@ -8574,8 +8574,8 @@ snapshots:
'@nuxt/eslint-plugin@1.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
eslint: 9.22.0(jiti@2.4.2)
transitivePeerDependencies:
- supports-color
@ -9198,7 +9198,7 @@ snapshots:
'@stylistic/eslint-plugin@4.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
eslint: 9.22.0(jiti@2.4.2)
eslint-visitor-keys: 4.2.0
espree: 10.3.0
@ -9315,14 +9315,14 @@ snapshots:
'@types/unist@3.0.3': {}
'@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
'@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/scope-manager': 8.26.0
'@typescript-eslint/type-utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.26.1
eslint: 9.22.0(jiti@2.4.2)
graphemer: 1.4.0
ignore: 5.3.2
@ -9332,27 +9332,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
'@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.26.0
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/typescript-estree': 8.26.0(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.26.1
debug: 4.4.0(supports-color@9.4.0)
eslint: 9.22.0(jiti@2.4.2)
typescript: 5.7.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.26.0':
'@typescript-eslint/scope-manager@8.26.1':
dependencies:
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/visitor-keys': 8.26.1
'@typescript-eslint/type-utils@8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
'@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/typescript-estree': 8.26.0(typescript@5.7.3)
'@typescript-eslint/utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.7.3)
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
debug: 4.4.0(supports-color@9.4.0)
eslint: 9.22.0(jiti@2.4.2)
ts-api-utils: 2.0.1(typescript@5.7.3)
@ -9360,12 +9360,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@8.26.0': {}
'@typescript-eslint/types@8.26.1': {}
'@typescript-eslint/typescript-estree@8.26.0(typescript@5.7.3)':
'@typescript-eslint/typescript-estree@8.26.1(typescript@5.7.3)':
dependencies:
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/visitor-keys': 8.26.1
debug: 4.4.0(supports-color@9.4.0)
fast-glob: 3.3.3
is-glob: 4.0.3
@ -9376,20 +9376,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
'@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@typescript-eslint/scope-manager': 8.26.0
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/typescript-estree': 8.26.0(typescript@5.7.3)
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.7.3)
eslint: 9.22.0(jiti@2.4.2)
typescript: 5.7.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/visitor-keys@8.26.0':
'@typescript-eslint/visitor-keys@8.26.1':
dependencies:
'@typescript-eslint/types': 8.26.0
'@typescript-eslint/types': 8.26.1
eslint-visitor-keys: 4.2.0
'@unhead/dom@1.11.20':
@ -10798,8 +10798,8 @@ snapshots:
eslint-plugin-import-x@4.6.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3):
dependencies:
'@types/doctrine': 0.0.9
'@typescript-eslint/scope-manager': 8.26.0
'@typescript-eslint/utils': 8.26.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.7.3)
debug: 4.4.0(supports-color@9.4.0)
doctrine: 3.0.0
enhanced-resolve: 5.18.1
@ -10815,7 +10815,7 @@ snapshots:
- supports-color
- typescript
eslint-plugin-jsdoc@50.6.3(eslint@9.22.0(jiti@2.4.2)):
eslint-plugin-jsdoc@50.6.6(eslint@9.22.0(jiti@2.4.2)):
dependencies:
'@es-joy/jsdoccomment': 0.49.0
are-docs-informative: 0.0.2
@ -10844,7 +10844,7 @@ snapshots:
eslint-plugin-regexp@2.7.0(eslint@9.22.0(jiti@2.4.2)):
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/regexpp': 4.12.1
comment-parser: 1.4.1
eslint: 9.22.0(jiti@2.4.2)
@ -10856,7 +10856,7 @@ snapshots:
eslint-plugin-unicorn@57.0.0(eslint@9.22.0(jiti@2.4.2)):
dependencies:
'@babel/helper-validator-identifier': 7.25.9
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
ci-info: 4.2.0
clean-regexp: 1.0.0
core-js-compat: 3.41.0
@ -10875,7 +10875,7 @@ snapshots:
eslint-plugin-vue@10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2))):
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
eslint: 9.22.0(jiti@2.4.2)
natural-compare: 1.4.0
nth-check: 2.1.1
@ -10886,7 +10886,7 @@ snapshots:
eslint-plugin-vue@9.33.0(eslint@9.22.0(jiti@2.4.2)):
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
eslint: 9.22.0(jiti@2.4.2)
globals: 13.24.0
natural-compare: 1.4.0
@ -10924,7 +10924,7 @@ snapshots:
eslint@9.22.0(jiti@2.4.2):
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.19.2
'@eslint/config-helpers': 0.1.0