kmcom-nuxt-layers 1.6.18 → 1.6.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/layers/content/app/components/Blog/Article.vue +9 -5
- package/layers/content/app/components/Blog/Card.vue +11 -8
- package/layers/content/app/components/Blog/List.vue +12 -11
- package/layers/content/app/components/Gallery/Card.vue +6 -1
- package/layers/content/app/components/Gallery/Detail.vue +10 -6
- package/layers/content/app/components/Gallery/ImageDetail.vue +9 -3
- package/layers/content/app/components/NuxtContent/Detail.vue +7 -3
- package/layers/content/app/components/NuxtContent/Toc.vue +3 -1
- package/layers/content/app/components/Portfolio/Card.vue +5 -1
- package/layers/content/app/components/Portfolio/Detail.vue +32 -11
- package/layers/content/app/components/Portfolio/List.vue +4 -2
- package/layers/content/app/composables/useCollectionItem.ts +3 -1
- package/layers/content/app/composables/useCollectionSurround.ts +4 -6
- package/layers/content/app/types/content.ts +1 -1
- package/layers/content/package.json +1 -0
- package/layers/core/app/app.vue +1 -0
- package/layers/core/app/composables/useCache.ts +7 -8
- package/layers/core/app/composables/useScrollGuard.ts +0 -12
- package/layers/core/app/plugins/init.ts +4 -3
- package/layers/core/package.json +1 -0
- package/layers/core/tsconfig.json +2 -1
- package/layers/forms/app/components/Form/Contact.vue +1 -5
- package/layers/forms/app/components/Form/Field.vue +34 -22
- package/layers/forms/package.json +1 -0
- package/layers/layout/app/components/Layout/Page/Container.vue +7 -1
- package/layers/layout/app/components/Layout/Page/index.vue +4 -1
- package/layers/layout/package.json +1 -0
- package/layers/motion/app/components/Motion/Marquee.vue +12 -16
- package/layers/motion/app/components/Motion/Parallax.vue +1 -1
- package/layers/motion/app/components/Motion/Staggered.vue +1 -1
- package/layers/motion/app/components/Motion/Transition.vue +0 -13
- package/layers/motion/app/composables/useSmoothScroll.ts +1 -1
- package/layers/motion/package.json +1 -0
- package/layers/routing/app/middleware/02.governance.global.ts +2 -0
- package/layers/routing/app/plugins/feature-flags.client.ts +1 -0
- package/layers/routing/nuxt.config.ts +8 -4
- package/layers/routing/package.json +4 -1
- package/layers/shader/app/composables/useShader.ts +1 -1
- package/layers/shader/app/utils/tsl/noise.ts +0 -5
- package/layers/shader/nuxt.config.ts +1 -1
- package/layers/shader/package.json +3 -0
- package/layers/theme/package.json +1 -0
- package/layers/ui/app/app.config.ts +37 -6
- package/layers/ui/app/components/Accent/Scene.vue +14 -1
- package/layers/ui/app/components/Mast/NavModal.vue +3 -2
- package/layers/ui/app/components/Progress/Bar.vue +11 -1
- package/layers/ui/app/components/Typography/CodeBlock.vue +5 -4
- package/layers/ui/app/components/Typography/Headline.vue +11 -3
- package/layers/ui/app/components/Typography/QuoteBlock.vue +5 -1
- package/layers/ui/app/components/Typography/TextStroke.vue +0 -2
- package/layers/ui/app/components/Typography/index.vue +1 -1
- package/layers/ui/app/composables/gradient.ts +1 -1
- package/layers/ui/app/composables/mastNav.ts +0 -1
- package/layers/ui/app/composables/toast.ts +4 -4
- package/layers/ui/app/composables/useSite.ts +6 -6
- package/layers/ui/app/types/accent.ts +1 -1
- package/layers/ui/app/types/app-config.d.ts +5 -0
- package/layers/ui/app/utils/createModal.ts +4 -4
- package/layers/ui/package.json +1 -0
- package/package.json +8 -8
|
@@ -142,12 +142,16 @@ function handleMouseLeave() {
|
|
|
142
142
|
<template>
|
|
143
143
|
<div
|
|
144
144
|
ref="containerRef"
|
|
145
|
-
class="motion-marquee"
|
|
145
|
+
class="motion-marquee width-full overflow-hidden"
|
|
146
146
|
:class="{ 'is-paused': isPaused }"
|
|
147
147
|
@mouseenter="handleMouseEnter"
|
|
148
148
|
@mouseleave="handleMouseLeave"
|
|
149
149
|
>
|
|
150
|
-
<div
|
|
150
|
+
<div
|
|
151
|
+
ref="contentRef"
|
|
152
|
+
class="motion-marquee__content flex will-change-transform w-max"
|
|
153
|
+
:style="{ gap }"
|
|
154
|
+
>
|
|
151
155
|
<slot />
|
|
152
156
|
<!-- Duplicate for seamless loop -->
|
|
153
157
|
<slot />
|
|
@@ -155,17 +159,9 @@ function handleMouseLeave() {
|
|
|
155
159
|
</div>
|
|
156
160
|
</template>
|
|
157
161
|
|
|
158
|
-
<style scoped>
|
|
159
|
-
.motion-marquee {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/* stylelint-disable-next-line selector-class-pattern */
|
|
165
|
-
.motion-marquee__content {
|
|
166
|
-
display: flex;
|
|
167
|
-
will-change: transform;
|
|
168
|
-
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
169
|
-
width: max-content;
|
|
170
|
-
}
|
|
171
|
-
</style>
|
|
162
|
+
<!-- <style scoped>
|
|
163
|
+
/* .motion-marquee { width: 100%; overflow: hidden; } */ /* stylelint-disable-next-line
|
|
164
|
+
selector-class-pattern */ /* .motion-marquee__content { */ /* display: flex; */ /* will-change:
|
|
165
|
+
transform; */ /* stylelint-disable-next-line plugin/no-unsupported-browser-features */ /* width:
|
|
166
|
+
max-content; */ /* } */
|
|
167
|
+
</style> -->
|
|
@@ -50,7 +50,7 @@ onMounted(() => {
|
|
|
50
50
|
<template>
|
|
51
51
|
<div class="motion-staggered">
|
|
52
52
|
<slot
|
|
53
|
-
v-for="(
|
|
53
|
+
v-for="(_, index) in slots.default?.()"
|
|
54
54
|
:key="index"
|
|
55
55
|
:ref="(el: HTMLElement | null) => setItemRef(el, index)"
|
|
56
56
|
:class="{ animated: animatedItems[index] }"
|
|
@@ -43,20 +43,7 @@ onMounted(() => {
|
|
|
43
43
|
}, 50)
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
// Methods
|
|
47
|
-
const enter = (el: Element) => {
|
|
48
|
-
// Handle enter transition
|
|
49
|
-
;(el as HTMLElement).style.opacity = '0'
|
|
50
|
-
setTimeout(() => {
|
|
51
|
-
;(el as HTMLElement).style.opacity = '1'
|
|
52
|
-
}, 10)
|
|
53
|
-
}
|
|
54
46
|
|
|
55
|
-
const leave = (el: Element, done: () => void) => {
|
|
56
|
-
// Handle leave transition
|
|
57
|
-
;(el as HTMLElement).style.opacity = '0'
|
|
58
|
-
setTimeout(done, props.duration)
|
|
59
|
-
}
|
|
60
47
|
</script>
|
|
61
48
|
|
|
62
49
|
<template>
|
|
@@ -81,7 +81,7 @@ export function useSmoothScroll() {
|
|
|
81
81
|
duration: options?.duration ?? 1.2,
|
|
82
82
|
immediate: options?.immediate ?? false,
|
|
83
83
|
lock: options?.lock ?? false,
|
|
84
|
-
onComplete: options
|
|
84
|
+
...(options?.onComplete !== undefined && { onComplete: options.onComplete }),
|
|
85
85
|
})
|
|
86
86
|
} else {
|
|
87
87
|
// Native fallback
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
interface RoutePage {
|
|
2
|
+
file?: string
|
|
3
|
+
meta?: Record<string, unknown>
|
|
4
|
+
children?: RoutePage[]
|
|
5
|
+
}
|
|
2
6
|
|
|
3
7
|
export default defineNuxtConfig({
|
|
4
8
|
$meta: { name: 'routing' },
|
|
@@ -10,9 +14,9 @@ export default defineNuxtConfig({
|
|
|
10
14
|
compatibilityDate: '2026-01-30',
|
|
11
15
|
|
|
12
16
|
hooks: {
|
|
13
|
-
'pages:extend'(pages) {
|
|
17
|
+
'pages:extend'(pages: unknown[]) {
|
|
14
18
|
const cwd = process.cwd()
|
|
15
|
-
const tag = (list:
|
|
19
|
+
const tag = (list: RoutePage[]) => {
|
|
16
20
|
for (const page of list) {
|
|
17
21
|
if (page.file && !page.file.startsWith(cwd)) {
|
|
18
22
|
page.meta ??= {}
|
|
@@ -21,7 +25,7 @@ export default defineNuxtConfig({
|
|
|
21
25
|
if (page.children) tag(page.children)
|
|
22
26
|
}
|
|
23
27
|
}
|
|
24
|
-
tag(pages)
|
|
28
|
+
tag(pages as unknown as RoutePage[])
|
|
25
29
|
},
|
|
26
30
|
},
|
|
27
31
|
})
|
|
@@ -4,11 +4,6 @@ import type { FBMOptions, TSLNode } from '../../types'
|
|
|
4
4
|
/**
|
|
5
5
|
* Hash function for noise generation
|
|
6
6
|
*/
|
|
7
|
-
const hash21 = Fn(([p]: [TSLNode]) => {
|
|
8
|
-
const p3 = fract(p.mul(vec2(443.8975, 397.2973)))
|
|
9
|
-
const shifted = p3.add(dot(p3, p3.add(19.19)))
|
|
10
|
-
return fract(shifted.x.mul(shifted.y))
|
|
11
|
-
})
|
|
12
7
|
|
|
13
8
|
const hash22 = Fn(([p]: [TSLNode]) => {
|
|
14
9
|
const p3 = fract(p.mul(vec2(443.8975, 397.2973)))
|
|
@@ -76,7 +76,7 @@ export default {}
|
|
|
76
76
|
return {
|
|
77
77
|
name: 'three-webgpu-ssr-stub',
|
|
78
78
|
enforce: 'pre',
|
|
79
|
-
transform(
|
|
79
|
+
transform(_code, id, options) {
|
|
80
80
|
// Only intercept in SSR context
|
|
81
81
|
if (!options?.ssr) return null
|
|
82
82
|
// In three r182+, three/webgpu → three.webgpu.js, three/tsl → three.tsl.js
|
|
@@ -1,13 +1,44 @@
|
|
|
1
|
-
|
|
1
|
+
type MastNavLink = {
|
|
2
|
+
id: string
|
|
3
|
+
label: string
|
|
4
|
+
to:
|
|
5
|
+
| string
|
|
6
|
+
| {
|
|
7
|
+
name: string
|
|
8
|
+
params?: Record<string, string | number>
|
|
9
|
+
query?: Record<string, string | number>
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default defineAppConfig({
|
|
14
|
+
site: {
|
|
15
|
+
title: '',
|
|
16
|
+
subtitle: '',
|
|
17
|
+
description: '',
|
|
18
|
+
},
|
|
2
19
|
mastNav: {
|
|
3
|
-
links: [],
|
|
20
|
+
links: [] as MastNavLink[],
|
|
4
21
|
scrollBehaviour: 'router',
|
|
5
22
|
},
|
|
6
23
|
uiLayer: {
|
|
7
24
|
gradients: {
|
|
8
|
-
brand: {
|
|
9
|
-
|
|
10
|
-
|
|
25
|
+
brand: {
|
|
26
|
+
shape: 'linear',
|
|
27
|
+
direction: 'to-br',
|
|
28
|
+
from: { color: 'primary', shade: 500 },
|
|
29
|
+
to: { color: 'secondary', shade: 600 },
|
|
30
|
+
},
|
|
31
|
+
subtle: {
|
|
32
|
+
shape: 'linear',
|
|
33
|
+
direction: 'to-b',
|
|
34
|
+
from: { color: 'primary', shade: 100, opacity: 50 },
|
|
35
|
+
to: { color: 'transparent' },
|
|
36
|
+
},
|
|
37
|
+
hero: {
|
|
38
|
+
shape: 'radial',
|
|
39
|
+
from: { color: 'primary', shade: 400, opacity: 40 },
|
|
40
|
+
to: { color: 'transparent' },
|
|
41
|
+
},
|
|
11
42
|
},
|
|
12
43
|
accentScenes: {
|
|
13
44
|
hero: {
|
|
@@ -35,4 +66,4 @@ export default {
|
|
|
35
66
|
},
|
|
36
67
|
},
|
|
37
68
|
},
|
|
38
|
-
}
|
|
69
|
+
})
|
|
@@ -29,7 +29,20 @@ const resolvedBlobs = computed((): BlobConfig[] => {
|
|
|
29
29
|
<template>
|
|
30
30
|
<component :is="tag" class="relative overflow-clip isolate">
|
|
31
31
|
<div class="absolute inset-0 pointer-events-none" aria-hidden="true">
|
|
32
|
-
<AccentBlob
|
|
32
|
+
<AccentBlob
|
|
33
|
+
v-for="(blob, i) in resolvedBlobs"
|
|
34
|
+
:key="i"
|
|
35
|
+
:x="blob.x"
|
|
36
|
+
:y="blob.y"
|
|
37
|
+
v-bind="{
|
|
38
|
+
...(blob.size !== undefined && { size: blob.size }),
|
|
39
|
+
...(blob.blur !== undefined && { blur: blob.blur }),
|
|
40
|
+
...(blob.opacity !== undefined && { opacity: blob.opacity }),
|
|
41
|
+
...(blob.color !== undefined && { color: blob.color }),
|
|
42
|
+
...(blob.shade !== undefined && { shade: blob.shade }),
|
|
43
|
+
...(blob.customColor !== undefined && { customColor: blob.customColor }),
|
|
44
|
+
}"
|
|
45
|
+
/>
|
|
33
46
|
</div>
|
|
34
47
|
<div class="relative z-10">
|
|
35
48
|
<slot />
|
|
@@ -5,7 +5,8 @@ const emit = defineEmits<{
|
|
|
5
5
|
'close': []
|
|
6
6
|
}>()
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
type NavLink = { id: string; label: string; to: string | { name: string; params?: Record<string, string | number>; query?: Record<string, string | number> } }
|
|
9
|
+
const { links, scrollBehaviour } = useAppConfig().mastNav as { links: NavLink[]; scrollBehaviour: string }
|
|
9
10
|
const activeSection = useState<string>('activeSection', () => '')
|
|
10
11
|
const route = useRoute()
|
|
11
12
|
const { close: closeNav } = useMastNav()
|
|
@@ -16,7 +17,7 @@ function dismiss() {
|
|
|
16
17
|
closeNav()
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
function handleNav(link:
|
|
20
|
+
function handleNav(link: NavLink) {
|
|
20
21
|
if (scrollBehaviour === 'smooth-scroll' && route.name === 'index') {
|
|
21
22
|
try { useSmoothScroll().scrollTo(`#${link.id}`) }
|
|
22
23
|
catch {}
|
|
@@ -18,8 +18,18 @@ const {
|
|
|
18
18
|
}>()
|
|
19
19
|
|
|
20
20
|
const modelValue = computed(() => (progress != null ? progress * 100 : undefined))
|
|
21
|
+
|
|
22
|
+
const progressProps = computed(() => ({
|
|
23
|
+
...(modelValue.value !== undefined && { modelValue: modelValue.value }),
|
|
24
|
+
...(color !== undefined && { color: color as 'primary' | 'neutral' }),
|
|
25
|
+
...(size !== undefined && { size }),
|
|
26
|
+
...(orientation !== undefined && { orientation }),
|
|
27
|
+
...(status !== undefined && { status }),
|
|
28
|
+
...(animation !== undefined && { animation }),
|
|
29
|
+
...(inverted !== undefined && { inverted }),
|
|
30
|
+
}))
|
|
21
31
|
</script>
|
|
22
32
|
|
|
23
33
|
<template>
|
|
24
|
-
<UProgress
|
|
34
|
+
<UProgress v-bind="progressProps" />
|
|
25
35
|
</template>
|
|
@@ -13,7 +13,6 @@ const props = withDefaults(
|
|
|
13
13
|
class?: string
|
|
14
14
|
}>(),
|
|
15
15
|
{
|
|
16
|
-
language: undefined,
|
|
17
16
|
class: '',
|
|
18
17
|
color: 'default',
|
|
19
18
|
}
|
|
@@ -24,11 +23,13 @@ const colorClass = useColor(props.color, 'text')
|
|
|
24
23
|
<template>
|
|
25
24
|
<Typography
|
|
26
25
|
tag="pre"
|
|
27
|
-
v-bind="
|
|
28
|
-
|
|
26
|
+
v-bind="{
|
|
27
|
+
...$attrs,
|
|
28
|
+
...(props.size !== undefined && { size: props.size }),
|
|
29
|
+
...(props.language !== undefined && { 'data-language': props.language }),
|
|
30
|
+
}"
|
|
29
31
|
class="overflow-x-auto"
|
|
30
32
|
:class="[props.class]"
|
|
31
|
-
:data-language="props.language"
|
|
32
33
|
>
|
|
33
34
|
<Typography
|
|
34
35
|
tag="code"
|
|
@@ -57,7 +57,16 @@ const sizeClass = computed(() => {
|
|
|
57
57
|
return sizes[props.level]
|
|
58
58
|
})
|
|
59
59
|
|
|
60
|
-
const { classes } = useTypography(
|
|
60
|
+
const { classes } = useTypography({
|
|
61
|
+
weight: props.weight,
|
|
62
|
+
width: props.width,
|
|
63
|
+
slant: props.slant,
|
|
64
|
+
leading: props.leading,
|
|
65
|
+
tracking: props.tracking,
|
|
66
|
+
align: props.align,
|
|
67
|
+
transform: props.transform,
|
|
68
|
+
...(props.size !== undefined && { size: props.size }),
|
|
69
|
+
})
|
|
61
70
|
const colorClass = useColor(props.color, 'text')
|
|
62
71
|
</script>
|
|
63
72
|
|
|
@@ -71,9 +80,8 @@ const colorClass = useColor(props.color, 'text')
|
|
|
71
80
|
:tracking="props.tracking"
|
|
72
81
|
:align="props.align"
|
|
73
82
|
:transform="props.transform"
|
|
74
|
-
:size="props.size"
|
|
75
83
|
:class="[sizeClass, classes, colorClass, props.class]"
|
|
76
|
-
v-bind="
|
|
84
|
+
v-bind="{ ...(props.size !== undefined && { size: props.size }), ...$attrs }"
|
|
77
85
|
>
|
|
78
86
|
<slot />
|
|
79
87
|
</Typography>
|
|
@@ -10,7 +10,11 @@ const colorClass = useColor(props.color, 'text')
|
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
12
|
<template>
|
|
13
|
-
<Typography
|
|
13
|
+
<Typography
|
|
14
|
+
tag="blockquote"
|
|
15
|
+
:class="colorClass"
|
|
16
|
+
v-bind="{ ...(props.size !== undefined && { size: props.size }), ...$attrs }"
|
|
17
|
+
>
|
|
14
18
|
<slot />
|
|
15
19
|
</Typography>
|
|
16
20
|
</template>
|
|
@@ -60,7 +60,7 @@ export function useGradient(
|
|
|
60
60
|
|
|
61
61
|
let resolved: GradientConfig
|
|
62
62
|
if (typeof raw === 'string') {
|
|
63
|
-
const preset = (appConfig.uiLayer as Record<string, unknown> | undefined)?.gradients as
|
|
63
|
+
const preset = (appConfig.uiLayer as Record<string, unknown> | undefined)?.['gradients'] as
|
|
64
64
|
| Record<string, GradientConfig>
|
|
65
65
|
| undefined
|
|
66
66
|
resolved = preset?.[raw] ?? DEFAULT_CONFIG
|
|
@@ -8,15 +8,15 @@ export function useAppToast() {
|
|
|
8
8
|
|
|
9
9
|
return {
|
|
10
10
|
success: (title: string, opts?: ToastOptions) =>
|
|
11
|
-
toast.add({ title, icon: 'lucide:check-circle', color: 'success', ...opts }),
|
|
11
|
+
toast.add({ title, icon: 'lucide:check-circle', color: 'success' as 'primary', ...opts }),
|
|
12
12
|
|
|
13
13
|
error: (title: string, opts?: ToastOptions) =>
|
|
14
|
-
toast.add({ title, icon: 'lucide:x-circle', color: 'error', ...opts }),
|
|
14
|
+
toast.add({ title, icon: 'lucide:x-circle', color: 'error' as 'primary', ...opts }),
|
|
15
15
|
|
|
16
16
|
info: (title: string, opts?: ToastOptions) =>
|
|
17
|
-
toast.add({ title, icon: 'lucide:info', color: 'info', ...opts }),
|
|
17
|
+
toast.add({ title, icon: 'lucide:info', color: 'info' as 'primary', ...opts }),
|
|
18
18
|
|
|
19
19
|
warning: (title: string, opts?: ToastOptions) =>
|
|
20
|
-
toast.add({ title, icon: 'lucide:triangle-alert', color: 'warning', ...opts }),
|
|
20
|
+
toast.add({ title, icon: 'lucide:triangle-alert', color: 'warning' as 'primary', ...opts }),
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { splitSpaces } from '../utils/regex'
|
|
2
2
|
|
|
3
3
|
export function useSite() {
|
|
4
|
-
const config = useAppConfig().site
|
|
4
|
+
const config = useAppConfig().site ?? {}
|
|
5
5
|
|
|
6
6
|
return {
|
|
7
|
-
title: config.title as string,
|
|
8
|
-
titleWords: splitSpaces(config.title as string) as string[],
|
|
9
|
-
subtitle: config.subtitle as string,
|
|
10
|
-
subtitleWords: splitSpaces(config.subtitle as string) as string[],
|
|
11
|
-
description: config.description as string,
|
|
7
|
+
title: (config.title ?? '') as string,
|
|
8
|
+
titleWords: splitSpaces((config.title ?? '') as string) as string[],
|
|
9
|
+
subtitle: (config.subtitle ?? '') as string,
|
|
10
|
+
subtitleWords: splitSpaces((config.subtitle ?? '') as string) as string[],
|
|
11
|
+
description: (config.description ?? '') as string,
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { createSharedComposable } from '@vueuse/core'
|
|
2
1
|
import type { Component } from 'vue'
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -24,11 +23,12 @@ export function createModal<P extends Record<string, unknown>>(component: Compon
|
|
|
24
23
|
if (import.meta.server) return { open: () => {}, close: () => {}, patch: () => {} }
|
|
25
24
|
|
|
26
25
|
const overlay = useOverlay()
|
|
27
|
-
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
const modal = overlay.create(component as any)
|
|
28
28
|
return {
|
|
29
|
-
open: (props?: Partial<P>) => modal.open(props),
|
|
29
|
+
open: (props?: Partial<P>) => modal.open(props as never),
|
|
30
30
|
close: () => modal.close(),
|
|
31
|
-
patch: (props: Partial<P>) => modal.patch(props),
|
|
31
|
+
patch: (props: Partial<P>) => modal.patch(props as never),
|
|
32
32
|
}
|
|
33
33
|
})
|
|
34
34
|
}
|
package/layers/ui/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kmcom-nuxt-layers",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.21",
|
|
5
5
|
"description": "Composable Nuxt 4 layers for building scalable Vue applications",
|
|
6
6
|
"files": [
|
|
7
7
|
"layers/*/nuxt.config.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"tailwindcss": "^4.2.4",
|
|
42
42
|
"three": "^0.183.2",
|
|
43
43
|
"v-gsap-nuxt": ">=1.0.0",
|
|
44
|
-
"zod": "^4.3
|
|
44
|
+
"zod": "^4.4.3"
|
|
45
45
|
},
|
|
46
46
|
"peerDependenciesMeta": {
|
|
47
47
|
"@nuxtjs/device": {
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
"@perplex-digital/stylelint-config": "^17.4.0",
|
|
108
108
|
"@pinia/nuxt": "^0.11.3",
|
|
109
109
|
"@types/node": "^25.6.0",
|
|
110
|
-
"@typescript-eslint/eslint-plugin": "^8.59.
|
|
111
|
-
"@typescript-eslint/parser": "^8.59.
|
|
110
|
+
"@typescript-eslint/eslint-plugin": "^8.59.2",
|
|
111
|
+
"@typescript-eslint/parser": "^8.59.2",
|
|
112
112
|
"@vue/eslint-config-typescript": "^14.7.0",
|
|
113
113
|
"@vueuse/core": "^14.3.0",
|
|
114
114
|
"@vueuse/nuxt": "^14.3.0",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"eslint-plugin-prettier": "^5.5.5",
|
|
125
125
|
"eslint-plugin-unicorn": "^64.0.0",
|
|
126
126
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
127
|
-
"eslint-plugin-vue": "^10.9.
|
|
127
|
+
"eslint-plugin-vue": "^10.9.1",
|
|
128
128
|
"npm-check-updates": "^21.0.3",
|
|
129
129
|
"nuxt": "latest",
|
|
130
130
|
"pinia": "^3.0.4",
|
|
@@ -144,14 +144,14 @@
|
|
|
144
144
|
"stylelint-no-unsupported-browser-features": "^8.1.1",
|
|
145
145
|
"stylelint-prettier": "^5.0.3",
|
|
146
146
|
"tailwindcss": "^4.2.4",
|
|
147
|
-
"turbo": "^2.9.
|
|
147
|
+
"turbo": "^2.9.9",
|
|
148
148
|
"typescript": "^6.0.3",
|
|
149
149
|
"vite-plugin-checker": "^0.13.0",
|
|
150
150
|
"vitest": "^4.1.5",
|
|
151
151
|
"vue": "latest",
|
|
152
152
|
"vue-tsc": "^3.2.8",
|
|
153
|
-
"zod": "^4.3
|
|
154
|
-
"zod-to-json-schema": "^3.25.
|
|
153
|
+
"zod": "^4.4.3",
|
|
154
|
+
"zod-to-json-schema": "^3.25.2"
|
|
155
155
|
},
|
|
156
156
|
"browserslist": [
|
|
157
157
|
"last 2 Chrome major versions",
|