kmcom-nuxt-layers 1.7.2 → 1.7.4
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/Gallery/ImagePage.vue +19 -0
- package/layers/content/app/{pages/gallery/index.vue → components/Gallery/Page.vue} +8 -8
- package/layers/content/app/components/Gallery/SlugPage.vue +18 -0
- package/layers/core/app/{pages/diagnostics.vue → components/DiagnosticsPage.vue} +0 -8
- package/layers/motion/nuxt.config.ts +8 -0
- package/layers/shader/package.json +1 -2
- package/package.json +3 -3
- package/layers/content/app/pages/gallery/[slug]/[imageId].vue +0 -18
- package/layers/content/app/pages/gallery/[slug]/index.vue +0 -17
- package/layers/ui/app/pages/index.vue +0 -236
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
const { contentLayer } = useAppConfig()
|
|
3
|
+
if (contentLayer?.sections?.gallery === false) {
|
|
4
|
+
throw createError({ statusCode: 404, statusMessage: 'Not Found' })
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const { slug, index } = defineProps<{
|
|
8
|
+
slug: string
|
|
9
|
+
index: number
|
|
10
|
+
}>()
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<LayoutSection>
|
|
15
|
+
<LayoutGridItem>
|
|
16
|
+
<GalleryImageDetail :slug :index />
|
|
17
|
+
</LayoutGridItem>
|
|
18
|
+
</LayoutSection>
|
|
19
|
+
</template>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const { contentLayer } = useAppConfig()
|
|
3
|
+
if (contentLayer?.sections?.gallery === false) {
|
|
4
|
+
throw createError({ statusCode: 404, statusMessage: 'Not Found' })
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
useSeoMeta({
|
|
8
|
+
title: 'Gallery',
|
|
9
|
+
description: 'Photo collections and visual work',
|
|
10
|
+
})
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<template>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
const { contentLayer } = useAppConfig()
|
|
3
|
+
if (contentLayer?.sections?.gallery === false) {
|
|
4
|
+
throw createError({ statusCode: 404, statusMessage: 'Not Found' })
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const { slug } = defineProps<{
|
|
8
|
+
slug: string
|
|
9
|
+
}>()
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<LayoutSection>
|
|
14
|
+
<LayoutGridItem>
|
|
15
|
+
<GalleryDetail :slug />
|
|
16
|
+
</LayoutGridItem>
|
|
17
|
+
</LayoutSection>
|
|
18
|
+
</template>
|
|
@@ -28,13 +28,11 @@ useSeoMeta({
|
|
|
28
28
|
<div class="min-h-screen p-8">
|
|
29
29
|
<UContainer>
|
|
30
30
|
<div class="space-y-8">
|
|
31
|
-
<!-- Header -->
|
|
32
31
|
<div class="text-center">
|
|
33
32
|
<h1 class="text-4xl font-bold mb-2">Core Layer Diagnostics</h1>
|
|
34
33
|
<p class="text-gray-500 dark:text-gray-400">Feature detection and system information</p>
|
|
35
34
|
</div>
|
|
36
35
|
|
|
37
|
-
<!-- CSS Features -->
|
|
38
36
|
<UCard>
|
|
39
37
|
<template #header>
|
|
40
38
|
<h2 class="text-xl font-semibold">CSS Features</h2>
|
|
@@ -73,7 +71,6 @@ useSeoMeta({
|
|
|
73
71
|
</div>
|
|
74
72
|
</UCard>
|
|
75
73
|
|
|
76
|
-
<!-- Image Formats -->
|
|
77
74
|
<UCard>
|
|
78
75
|
<template #header>
|
|
79
76
|
<h2 class="text-xl font-semibold">Image Formats</h2>
|
|
@@ -92,7 +89,6 @@ useSeoMeta({
|
|
|
92
89
|
</div>
|
|
93
90
|
</UCard>
|
|
94
91
|
|
|
95
|
-
<!-- JavaScript APIs -->
|
|
96
92
|
<UCard>
|
|
97
93
|
<template #header>
|
|
98
94
|
<h2 class="text-xl font-semibold">JavaScript APIs</h2>
|
|
@@ -121,7 +117,6 @@ useSeoMeta({
|
|
|
121
117
|
</div>
|
|
122
118
|
</UCard>
|
|
123
119
|
|
|
124
|
-
<!-- Device Info -->
|
|
125
120
|
<UCard>
|
|
126
121
|
<template #header>
|
|
127
122
|
<h2 class="text-xl font-semibold">Device Information</h2>
|
|
@@ -136,7 +131,6 @@ useSeoMeta({
|
|
|
136
131
|
</div>
|
|
137
132
|
</UCard>
|
|
138
133
|
|
|
139
|
-
<!-- Network Info -->
|
|
140
134
|
<UCard>
|
|
141
135
|
<template #header>
|
|
142
136
|
<h2 class="text-xl font-semibold">Network Information</h2>
|
|
@@ -177,7 +171,6 @@ useSeoMeta({
|
|
|
177
171
|
</div>
|
|
178
172
|
</UCard>
|
|
179
173
|
|
|
180
|
-
<!-- Rendering Info -->
|
|
181
174
|
<UCard>
|
|
182
175
|
<template #header>
|
|
183
176
|
<h2 class="text-xl font-semibold">Rendering Information</h2>
|
|
@@ -200,7 +193,6 @@ useSeoMeta({
|
|
|
200
193
|
</div>
|
|
201
194
|
</UCard>
|
|
202
195
|
|
|
203
|
-
<!-- PWA Info -->
|
|
204
196
|
<UCard>
|
|
205
197
|
<template #header>
|
|
206
198
|
<h2 class="text-xl font-semibold">PWA Information</h2>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kmcom-nuxt-layers",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.4",
|
|
5
5
|
"description": "Composable Nuxt 4 layers for building scalable Vue applications",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./layers/core": "./layers/core/nuxt.config.ts",
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"eslint-plugin-prettier": "^5.5.6",
|
|
141
141
|
"eslint-plugin-unicorn": "^64.0.0",
|
|
142
142
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
143
|
-
"eslint-plugin-vue": "^10.9.
|
|
143
|
+
"eslint-plugin-vue": "^10.9.2",
|
|
144
144
|
"netlify-cli": "^26.1.0",
|
|
145
145
|
"npm-check-updates": "^22.2.1",
|
|
146
146
|
"nuxt": "^4.4.7",
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
],
|
|
179
179
|
"dependencies": {
|
|
180
180
|
"node-gyp": "^12.3.0",
|
|
181
|
-
"skills": "^1.5.
|
|
181
|
+
"skills": "^1.5.10"
|
|
182
182
|
},
|
|
183
183
|
"engines": {
|
|
184
184
|
"node": ">=22 <23"
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
const { contentLayer } = useAppConfig()
|
|
3
|
-
if (contentLayer?.sections?.gallery === false) {
|
|
4
|
-
throw createError({ statusCode: 404, statusMessage: 'Not Found' })
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const route = useRoute()
|
|
8
|
-
const slug = route.params.slug as string
|
|
9
|
-
const index = Number(route.params.imageId)
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<template>
|
|
13
|
-
<LayoutSection>
|
|
14
|
-
<LayoutGridItem>
|
|
15
|
-
<GalleryImageDetail :slug="slug" :index="index" />
|
|
16
|
-
</LayoutGridItem>
|
|
17
|
-
</LayoutSection>
|
|
18
|
-
</template>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
const { contentLayer } = useAppConfig()
|
|
3
|
-
if (contentLayer?.sections?.gallery === false) {
|
|
4
|
-
throw createError({ statusCode: 404, statusMessage: 'Not Found' })
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const route = useRoute()
|
|
8
|
-
const slug = route.params.slug as string
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<template>
|
|
12
|
-
<LayoutSection>
|
|
13
|
-
<LayoutGridItem>
|
|
14
|
-
<GalleryDetail :slug="slug" />
|
|
15
|
-
</LayoutGridItem>
|
|
16
|
-
</LayoutSection>
|
|
17
|
-
</template>
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
const umainRef = ref()
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<template>
|
|
6
|
-
<MastMain :umain="umainRef">
|
|
7
|
-
<UContainer class="py-12 space-y-12">
|
|
8
|
-
<!-- Header Section -->
|
|
9
|
-
<div class="space-y-4">
|
|
10
|
-
<SiteTitle site-title="UI Layer" tag="h1" title-variant="default" />
|
|
11
|
-
<Typography
|
|
12
|
-
tag="p"
|
|
13
|
-
weight="font-normal"
|
|
14
|
-
leading="leading-relaxed"
|
|
15
|
-
color="muted"
|
|
16
|
-
class="text-lg"
|
|
17
|
-
>
|
|
18
|
-
A unified, typed design system for Nuxt applications. This layer provides typography,
|
|
19
|
-
colors, media handling, and reusable UI primitives.
|
|
20
|
-
</Typography>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<!-- Typography Section -->
|
|
24
|
-
<section class="space-y-6">
|
|
25
|
-
<TypographyHeadline :level="2" color="highlighted">
|
|
26
|
-
Typography Components
|
|
27
|
-
</TypographyHeadline>
|
|
28
|
-
|
|
29
|
-
<div class="space-y-4">
|
|
30
|
-
<div class="space-y-2">
|
|
31
|
-
<TypographyHeadline :level="1"> Headline Level 1 </TypographyHeadline>
|
|
32
|
-
<TypographyHeadline :level="2"> Headline Level 2 </TypographyHeadline>
|
|
33
|
-
<TypographyHeadline :level="3"> Headline Level 3 </TypographyHeadline>
|
|
34
|
-
<TypographyHeadline :level="4"> Headline Level 4 </TypographyHeadline>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<Typography tag="p" leading="leading-relaxed">
|
|
38
|
-
The Typography component provides full control over font weight, width, slant, leading,
|
|
39
|
-
tracking, alignment, and text transformation through typed props.
|
|
40
|
-
</Typography>
|
|
41
|
-
|
|
42
|
-
<TypographyCodeBlock language="typescript" color="muted">
|
|
43
|
-
<Typography weight="font-bold" leading="leading-tight" tracking="tracking-tight" >
|
|
44
|
-
Fully typed typography </Typography></TypographyCodeBlock
|
|
45
|
-
>
|
|
46
|
-
</div>
|
|
47
|
-
</section>
|
|
48
|
-
|
|
49
|
-
<!-- Color System Section -->
|
|
50
|
-
<section class="space-y-6">
|
|
51
|
-
<TypographyHeadline :level="2" color="highlighted"> Color System </TypographyHeadline>
|
|
52
|
-
|
|
53
|
-
<div class="space-y-4">
|
|
54
|
-
<div>
|
|
55
|
-
<Typography tag="h3" weight="font-semibold" class="mb-2"> Semantic Colors </Typography>
|
|
56
|
-
<div class="flex flex-wrap gap-2">
|
|
57
|
-
<Typography
|
|
58
|
-
color="dimmed"
|
|
59
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
60
|
-
>
|
|
61
|
-
Dimmed
|
|
62
|
-
</Typography>
|
|
63
|
-
<Typography
|
|
64
|
-
color="muted"
|
|
65
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
66
|
-
>
|
|
67
|
-
Muted
|
|
68
|
-
</Typography>
|
|
69
|
-
<Typography
|
|
70
|
-
color="toned"
|
|
71
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
72
|
-
>
|
|
73
|
-
Toned
|
|
74
|
-
</Typography>
|
|
75
|
-
<Typography
|
|
76
|
-
color="highlighted"
|
|
77
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
78
|
-
>
|
|
79
|
-
Highlighted
|
|
80
|
-
</Typography>
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div>
|
|
85
|
-
<Typography tag="h3" weight="font-semibold" class="mb-2"> Status Colors </Typography>
|
|
86
|
-
<div class="flex flex-wrap gap-2">
|
|
87
|
-
<Typography color="info" class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded">
|
|
88
|
-
Info
|
|
89
|
-
</Typography>
|
|
90
|
-
<Typography
|
|
91
|
-
color="success"
|
|
92
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
93
|
-
>
|
|
94
|
-
Success
|
|
95
|
-
</Typography>
|
|
96
|
-
<Typography
|
|
97
|
-
color="warning"
|
|
98
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
99
|
-
>
|
|
100
|
-
Warning
|
|
101
|
-
</Typography>
|
|
102
|
-
<Typography
|
|
103
|
-
color="error"
|
|
104
|
-
class="px-3 py-2 bg-neutral-100 dark:bg-neutral-800 rounded"
|
|
105
|
-
>
|
|
106
|
-
Error
|
|
107
|
-
</Typography>
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</section>
|
|
112
|
-
|
|
113
|
-
<!-- Components Section -->
|
|
114
|
-
<section class="space-y-6">
|
|
115
|
-
<TypographyHeadline :level="2" color="highlighted">
|
|
116
|
-
Available Components
|
|
117
|
-
</TypographyHeadline>
|
|
118
|
-
|
|
119
|
-
<div class="grid md:grid-cols-2 gap-6">
|
|
120
|
-
<UCard>
|
|
121
|
-
<template #header>
|
|
122
|
-
<TypographyHeadline :level="3"> Typography </TypographyHeadline>
|
|
123
|
-
</template>
|
|
124
|
-
<div class="space-y-2">
|
|
125
|
-
<Typography tag="p" color="muted" leading="leading-relaxed">
|
|
126
|
-
Base component with full control over font properties
|
|
127
|
-
</Typography>
|
|
128
|
-
<ul class="list-disc list-inside space-y-1 text-sm text-muted">
|
|
129
|
-
<li>Typography (base)</li>
|
|
130
|
-
<li>Headline (h1-h6)</li>
|
|
131
|
-
<li>CodeBlock</li>
|
|
132
|
-
<li>QuoteBlock</li>
|
|
133
|
-
</ul>
|
|
134
|
-
</div>
|
|
135
|
-
</UCard>
|
|
136
|
-
|
|
137
|
-
<UCard>
|
|
138
|
-
<template #header>
|
|
139
|
-
<TypographyHeadline :level="3"> Links </TypographyHeadline>
|
|
140
|
-
</template>
|
|
141
|
-
<div class="space-y-2">
|
|
142
|
-
<Typography tag="p" color="muted" leading="leading-relaxed">
|
|
143
|
-
Type-safe navigation with named routes
|
|
144
|
-
</Typography>
|
|
145
|
-
<ul class="list-disc list-inside space-y-1 text-sm text-muted">
|
|
146
|
-
<li>Named route enforcement</li>
|
|
147
|
-
<li>Color support</li>
|
|
148
|
-
<li>ULink wrapper</li>
|
|
149
|
-
</ul>
|
|
150
|
-
</div>
|
|
151
|
-
</UCard>
|
|
152
|
-
|
|
153
|
-
<UCard>
|
|
154
|
-
<template #header>
|
|
155
|
-
<TypographyHeadline :level="3"> Media </TypographyHeadline>
|
|
156
|
-
</template>
|
|
157
|
-
<div class="space-y-2">
|
|
158
|
-
<Typography tag="p" color="muted" leading="leading-relaxed">
|
|
159
|
-
Responsive image handling with optimization
|
|
160
|
-
</Typography>
|
|
161
|
-
<ul class="list-disc list-inside space-y-1 text-sm text-muted">
|
|
162
|
-
<li>Picture component</li>
|
|
163
|
-
<li>Multiple formats (avif, webp)</li>
|
|
164
|
-
<li>Responsive sizing</li>
|
|
165
|
-
<li>Lazy loading</li>
|
|
166
|
-
</ul>
|
|
167
|
-
</div>
|
|
168
|
-
</UCard>
|
|
169
|
-
|
|
170
|
-
<UCard>
|
|
171
|
-
<template #header>
|
|
172
|
-
<TypographyHeadline :level="3"> Branding </TypographyHeadline>
|
|
173
|
-
</template>
|
|
174
|
-
<div class="space-y-2">
|
|
175
|
-
<Typography tag="p" color="muted" leading="leading-relaxed">
|
|
176
|
-
Site branding and structure components
|
|
177
|
-
</Typography>
|
|
178
|
-
<ul class="list-disc list-inside space-y-1 text-sm text-muted">
|
|
179
|
-
<li>Masthead/Main wrapper</li>
|
|
180
|
-
<li>Site Title with variants</li>
|
|
181
|
-
<li>Semantic HTML structure</li>
|
|
182
|
-
</ul>
|
|
183
|
-
</div>
|
|
184
|
-
</UCard>
|
|
185
|
-
</div>
|
|
186
|
-
</section>
|
|
187
|
-
|
|
188
|
-
<!-- Quote Example -->
|
|
189
|
-
<section class="space-y-6">
|
|
190
|
-
<TypographyHeadline :level="2" color="highlighted"> Quote Block </TypographyHeadline>
|
|
191
|
-
|
|
192
|
-
<TypographyQuoteBlock color="muted" class="border-l-4 border-primary pl-4 italic">
|
|
193
|
-
A unified, typed design system that provides consistency across projects while maintaining
|
|
194
|
-
flexibility for customization.
|
|
195
|
-
</TypographyQuoteBlock>
|
|
196
|
-
</section>
|
|
197
|
-
|
|
198
|
-
<!-- Features List -->
|
|
199
|
-
<section class="space-y-6">
|
|
200
|
-
<TypographyHeadline :level="2" color="highlighted"> Key Features </TypographyHeadline>
|
|
201
|
-
|
|
202
|
-
<div class="grid md:grid-cols-3 gap-4">
|
|
203
|
-
<div class="space-y-2">
|
|
204
|
-
<Typography weight="font-semibold" color="primary"> Fully Typed </Typography>
|
|
205
|
-
<Typography tag="p" color="muted" leading="leading-relaxed" class="text-sm">
|
|
206
|
-
Complete TypeScript coverage with semantic types for typography, colors, and
|
|
207
|
-
breakpoints
|
|
208
|
-
</Typography>
|
|
209
|
-
</div>
|
|
210
|
-
|
|
211
|
-
<div class="space-y-2">
|
|
212
|
-
<Typography weight="font-semibold" color="primary"> Composable First </Typography>
|
|
213
|
-
<Typography tag="p" color="muted" leading="leading-relaxed" class="text-sm">
|
|
214
|
-
Built on Vue composables (useTypography, useColor, usePicture) for maximum reusability
|
|
215
|
-
</Typography>
|
|
216
|
-
</div>
|
|
217
|
-
|
|
218
|
-
<div class="space-y-2">
|
|
219
|
-
<Typography weight="font-semibold" color="primary"> Responsive Ready </Typography>
|
|
220
|
-
<Typography tag="p" color="muted" leading="leading-relaxed" class="text-sm">
|
|
221
|
-
Comprehensive breakpoint system supporting Tailwind, device, phone, and tablet
|
|
222
|
-
breakpoints
|
|
223
|
-
</Typography>
|
|
224
|
-
</div>
|
|
225
|
-
</div>
|
|
226
|
-
</section>
|
|
227
|
-
|
|
228
|
-
<!-- Footer -->
|
|
229
|
-
<footer class="pt-8 border-t border-neutral-200 dark:border-neutral-800">
|
|
230
|
-
<Typography tag="p" color="dimmed" align="center" class="text-sm">
|
|
231
|
-
UI Layer - A reusable design system for Nuxt
|
|
232
|
-
</Typography>
|
|
233
|
-
</footer>
|
|
234
|
-
</UContainer>
|
|
235
|
-
</MastMain>
|
|
236
|
-
</template>
|