kmcom-nuxt-layers 2.2.8 → 2.2.9

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.
@@ -0,0 +1,256 @@
1
+ /* XSLT feed page stylesheet
2
+ * Served at /feed/style.css — referenced from the RSS <?xml-stylesheet?> PI.
3
+ * Uses Nuxt UI v4 CSS custom property naming conventions with light/dark fallbacks.
4
+ * Variables are resolved from the Nuxt UI theme when the stylesheet is loaded from the same
5
+ * origin; otherwise the fallbacks provide sensible standalone defaults.
6
+ */
7
+
8
+ *,
9
+ *::before,
10
+ *::after {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ :root {
15
+ --feed-bg: var(--ui-bg, #ffffff);
16
+ --feed-bg-elevated: var(--ui-bg-elevated, #f8fafc);
17
+ --feed-bg-accented: var(--ui-bg-accented, #f1f5f9);
18
+ --feed-border: var(--ui-border, #e2e8f0);
19
+ --feed-text: var(--ui-text, #0f172a);
20
+ --feed-text-muted: var(--ui-text-muted, #64748b);
21
+ --feed-text-toned: var(--ui-text-toned, #475569);
22
+ --feed-primary: var(--ui-color-primary-500, oklch(62.3% 0.214 259.5));
23
+ --feed-primary-text: var(--ui-color-primary-600, oklch(54.6% 0.214 259.5));
24
+ --feed-primary-bg: var(--ui-color-primary-50, oklch(97% 0.03 259.5));
25
+ --feed-radius: var(--ui-radius, 0.375rem);
26
+ --feed-font: var(--font-sans, ui-sans-serif, system-ui, -apple-system, sans-serif);
27
+ }
28
+
29
+ @media (prefers-color-scheme: dark) {
30
+ :root {
31
+ --feed-bg: var(--ui-bg, #020617);
32
+ --feed-bg-elevated: var(--ui-bg-elevated, #0f172a);
33
+ --feed-bg-accented: var(--ui-bg-accented, #1e293b);
34
+ --feed-border: var(--ui-border, #1e293b);
35
+ --feed-text: var(--ui-text, #f8fafc);
36
+ --feed-text-muted: var(--ui-text-muted, #94a3b8);
37
+ --feed-text-toned: var(--ui-text-toned, #cbd5e1);
38
+ --feed-primary: var(--ui-color-primary-400, oklch(71% 0.18 259.5));
39
+ --feed-primary-text: var(--ui-color-primary-400, oklch(71% 0.18 259.5));
40
+ --feed-primary-bg: var(--ui-color-primary-950, oklch(22% 0.06 259.5));
41
+ }
42
+ }
43
+
44
+ html {
45
+ color-scheme: light dark;
46
+ }
47
+
48
+ body {
49
+ margin: 0;
50
+ background-color: var(--feed-bg);
51
+ padding: 0;
52
+ color: var(--feed-text);
53
+ font-size: 1rem;
54
+ line-height: 1.6;
55
+ font-family: var(--feed-font);
56
+ -webkit-font-smoothing: antialiased;
57
+ }
58
+
59
+ a {
60
+ color: var(--feed-primary-text);
61
+ text-decoration: none;
62
+ }
63
+
64
+ a:hover {
65
+ text-decoration: underline;
66
+ }
67
+
68
+ /* ─── Layout ─────────────────────────────────────────────────────────────── */
69
+
70
+ .feed-container {
71
+ margin: 0 auto;
72
+ padding: 0 1.5rem 5rem;
73
+ max-width: 52rem;
74
+ }
75
+
76
+ /* ─── Header ─────────────────────────────────────────────────────────────── */
77
+
78
+ .feed-header {
79
+ margin-bottom: 0.5rem;
80
+ border-bottom: 1px solid var(--feed-border);
81
+ padding: 5rem 0 4.5rem;
82
+ }
83
+
84
+ .feed-eyebrow {
85
+ display: inline-flex;
86
+ align-items: center;
87
+ gap: 0.375rem;
88
+ margin-bottom: 1rem;
89
+ border-radius: 9999px;
90
+ background-color: var(--feed-primary-bg);
91
+ padding: 0.25rem 0.625rem;
92
+ color: var(--feed-primary-text);
93
+ font-weight: 600;
94
+ font-size: 0.6875rem;
95
+ letter-spacing: 0.07em;
96
+ text-transform: uppercase;
97
+ }
98
+
99
+ .feed-eyebrow svg {
100
+ flex-shrink: 0;
101
+ width: 0.875rem;
102
+ height: 0.875rem;
103
+ }
104
+
105
+ .feed-title {
106
+ margin: 0 0 0.5rem;
107
+ color: var(--feed-text);
108
+ font-weight: 700;
109
+ font-size: 1.875rem;
110
+ line-height: 1.2;
111
+ letter-spacing: -0.025em;
112
+ }
113
+
114
+ .feed-title a {
115
+ color: inherit;
116
+ }
117
+
118
+ .feed-title a:hover {
119
+ opacity: 0.8;
120
+ text-decoration: none;
121
+ }
122
+
123
+ .feed-description {
124
+ margin: 0 0 1.25rem;
125
+ max-width: 38rem;
126
+ color: var(--feed-text-muted);
127
+ font-size: 1rem;
128
+ }
129
+
130
+ .feed-meta {
131
+ display: flex;
132
+ flex-wrap: wrap;
133
+ align-items: center;
134
+ gap: 1rem;
135
+ color: var(--feed-text-muted);
136
+ font-size: 0.8125rem;
137
+ }
138
+
139
+ .feed-meta-link {
140
+ color: var(--feed-primary-text);
141
+ font-weight: 500;
142
+ }
143
+
144
+ .feed-header-actions {
145
+ display: flex;
146
+ flex-wrap: wrap;
147
+ justify-content: space-between;
148
+ align-items: center;
149
+ gap: 1rem;
150
+ margin-top: 1.5rem;
151
+ }
152
+
153
+ .feed-subscribe {
154
+ display: inline-flex;
155
+ flex-shrink: 0;
156
+ align-items: center;
157
+ gap: 0.4375rem;
158
+ transition: opacity 0.15s ease;
159
+ cursor: pointer;
160
+ border-radius: var(--feed-radius);
161
+ background-color: var(--feed-primary);
162
+ padding: 0.5rem 1.125rem;
163
+ color: #ffffff;
164
+ font-weight: 600;
165
+ font-size: 0.875rem;
166
+ line-height: 1;
167
+ text-decoration: none;
168
+ }
169
+
170
+ .feed-subscribe:hover {
171
+ opacity: 0.85;
172
+ color: #ffffff;
173
+ text-decoration: none;
174
+ }
175
+
176
+ .feed-subscribe svg {
177
+ flex-shrink: 0;
178
+ width: 0.9375rem;
179
+ height: 0.9375rem;
180
+ }
181
+
182
+ /* ─── Items ──────────────────────────────────────────────────────────────── */
183
+
184
+ .feed-items {
185
+ margin: 0;
186
+ padding: 0;
187
+ list-style: none;
188
+ }
189
+
190
+ .feed-item {
191
+ border-bottom: 1px solid var(--feed-border);
192
+ padding: 1.5rem 0;
193
+ }
194
+
195
+ .feed-item:last-child {
196
+ border-bottom: none;
197
+ }
198
+
199
+ .feed-item-title {
200
+ margin: 0 0 0.375rem;
201
+ font-weight: 600;
202
+ font-size: 1.0625rem;
203
+ line-height: 1.4;
204
+ letter-spacing: -0.01em;
205
+ }
206
+
207
+ .feed-item-title a {
208
+ color: var(--feed-text);
209
+ }
210
+
211
+ .feed-item-title a:hover {
212
+ color: var(--feed-primary-text);
213
+ text-decoration: none;
214
+ }
215
+
216
+ .feed-item-meta {
217
+ display: flex;
218
+ flex-wrap: wrap;
219
+ align-items: center;
220
+ gap: 0.4rem;
221
+ margin-bottom: 0.625rem;
222
+ color: var(--feed-text-muted);
223
+ font-size: 0.8125rem;
224
+ }
225
+
226
+ .feed-item-separator {
227
+ opacity: 0.4;
228
+ }
229
+
230
+ .feed-item-description {
231
+ display: -webkit-box;
232
+ margin: 0;
233
+ -webkit-line-clamp: 3;
234
+ color: var(--feed-text-toned);
235
+ font-size: 0.9375rem;
236
+ line-height: 1.6;
237
+ -webkit-box-orient: vertical;
238
+ overflow: hidden;
239
+ }
240
+
241
+ .feed-tags {
242
+ display: flex;
243
+ flex-wrap: wrap;
244
+ gap: 0.375rem;
245
+ margin-top: 0.75rem;
246
+ }
247
+
248
+ .feed-tag {
249
+ border: 1px solid var(--feed-border);
250
+ border-radius: 9999px;
251
+ background-color: var(--feed-bg-accented);
252
+ padding: 0.125rem 0.5rem;
253
+ color: var(--feed-text-muted);
254
+ font-weight: 500;
255
+ font-size: 0.75rem;
256
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kmcom-nuxt-layers",
3
3
  "private": false,
4
- "version": "2.2.8",
4
+ "version": "2.2.9",
5
5
  "description": "Composable Nuxt 4 layers for building scalable Vue applications",
6
6
  "exports": {
7
7
  "./layers/core": "./layers/core/nuxt.config.ts",
@@ -33,6 +33,7 @@
33
33
  "layers/*/tsconfig.json",
34
34
  "layers/*/tailwind.config.*",
35
35
  "layers/*/app/**",
36
+ "layers/*/public/**",
36
37
  "layers/*/server/**",
37
38
  "docs/"
38
39
  ],