nuxt-ignis 0.2.5 → 0.3.1
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/.data/content/contents.sqlite +0 -0
- package/.env +43 -0
- package/.nuxt/app.config.mjs +18 -0
- package/.nuxt/component-chunk.mjs +1 -0
- package/.nuxt/components.d.ts +322 -0
- package/.nuxt/content/components.ts +51 -0
- package/.nuxt/content/database.compressed.mjs +1 -0
- package/.nuxt/content/manifest.ts +33 -0
- package/.nuxt/content/sql_dump +6 -0
- package/.nuxt/content/types.d.ts +13 -0
- package/.nuxt/dist/server/client.manifest.json +18 -0
- package/.nuxt/dist/server/client.manifest.mjs +18 -0
- package/.nuxt/dist/server/server.mjs +1 -0
- package/.nuxt/eslint-typegen.d.ts +9401 -0
- package/.nuxt/eslint.config.d.mts +9 -0
- package/.nuxt/eslint.config.mjs +53 -0
- package/.nuxt/i18n.options.mjs +165 -0
- package/.nuxt/imports.d.ts +82 -0
- package/.nuxt/manifest/latest.json +1 -0
- package/.nuxt/manifest/meta/dev.json +1 -0
- package/.nuxt/mdc-configs.mjs +8 -0
- package/.nuxt/mdc-highlighter.mjs +213 -0
- package/.nuxt/mdc-image-component.mjs +1 -0
- package/.nuxt/mdc-imports.mjs +12 -0
- package/.nuxt/module/@nuxtjs-sitemap.d.ts +28 -0
- package/.nuxt/module/nuxt-robots.d.ts +35 -0
- package/.nuxt/module/nuxt-seo-utils.assets.d.ts +25 -0
- package/.nuxt/module/nuxt-seo-utils.d.ts +22 -0
- package/.nuxt/module/nuxt-site-config.d.ts +43 -0
- package/.nuxt/modules/@nuxt-scripts.d.ts +13 -0
- package/.nuxt/nitro.json +17 -0
- package/.nuxt/nuxt-fonts-global.css +0 -0
- package/.nuxt/nuxt-i18n-logger.mjs +1 -0
- package/.nuxt/nuxt-icon-client-bundle.mjs +1 -0
- package/.nuxt/nuxt-icon-server-bundle.mjs +15 -0
- package/.nuxt/nuxt.d.ts +49 -0
- package/.nuxt/nuxt.json +9 -0
- package/.nuxt/schema/nuxt.schema.d.ts +17 -0
- package/.nuxt/schema/nuxt.schema.json +3 -0
- package/.nuxt/tailwind/postcss.mjs +15 -0
- package/.nuxt/tsconfig.json +374 -0
- package/.nuxt/tsconfig.server.json +292 -0
- package/.nuxt/types/app-defaults.d.ts +7 -0
- package/.nuxt/types/app.config.d.ts +31 -0
- package/.nuxt/types/build.d.ts +27 -0
- package/.nuxt/types/builder-env.d.ts +1 -0
- package/.nuxt/types/i18n-plugin.d.ts +104 -0
- package/.nuxt/types/imports.d.ts +899 -0
- package/.nuxt/types/layouts.d.ts +7 -0
- package/.nuxt/types/middleware.d.ts +7 -0
- package/.nuxt/types/neon.d.ts +35 -0
- package/.nuxt/types/nitro-config.d.ts +14 -0
- package/.nuxt/types/nitro-imports.d.ts +405 -0
- package/.nuxt/types/nitro-middleware.d.ts +6 -0
- package/.nuxt/types/nitro-nuxt.d.ts +34 -0
- package/.nuxt/types/nitro-routes.d.ts +81 -0
- package/.nuxt/types/nitro.d.ts +3 -0
- package/.nuxt/types/plugins.d.ts +57 -0
- package/.nuxt/types/schema.d.ts +1372 -0
- package/.nuxt/types/ui.d.ts +35 -0
- package/.nuxt/types/vue-shim.d.ts +0 -0
- package/.nuxt/ui/accordion.ts +20 -0
- package/.nuxt/ui/alert.ts +264 -0
- package/.nuxt/ui/avatar-group.ts +52 -0
- package/.nuxt/ui/avatar.ts +54 -0
- package/.nuxt/ui/badge.ts +263 -0
- package/.nuxt/ui/breadcrumb.ts +45 -0
- package/.nuxt/ui/button-group.ts +16 -0
- package/.nuxt/ui/button.ts +378 -0
- package/.nuxt/ui/calendar.ts +103 -0
- package/.nuxt/ui/card.ts +34 -0
- package/.nuxt/ui/carousel.ts +38 -0
- package/.nuxt/ui/checkbox-group.ts +204 -0
- package/.nuxt/ui/checkbox.ts +236 -0
- package/.nuxt/ui/chip.ts +96 -0
- package/.nuxt/ui/collapsible.ts +6 -0
- package/.nuxt/ui/color-picker.ts +47 -0
- package/.nuxt/ui/command-palette.ts +50 -0
- package/.nuxt/ui/container.ts +3 -0
- package/.nuxt/ui/context-menu.ts +216 -0
- package/.nuxt/ui/drawer.ts +126 -0
- package/.nuxt/ui/dropdown-menu.ts +217 -0
- package/.nuxt/ui/form-field.ts +48 -0
- package/.nuxt/ui/form.ts +3 -0
- package/.nuxt/ui/index.ts +50 -0
- package/.nuxt/ui/input-menu.ts +436 -0
- package/.nuxt/ui/input-number.ts +245 -0
- package/.nuxt/ui/input.ts +289 -0
- package/.nuxt/ui/kbd.ts +31 -0
- package/.nuxt/ui/link.ts +22 -0
- package/.nuxt/ui/modal.ts +29 -0
- package/.nuxt/ui/navigation-menu.ts +501 -0
- package/.nuxt/ui/pagination.ts +13 -0
- package/.nuxt/ui/pin-input.ts +171 -0
- package/.nuxt/ui/popover.ts +6 -0
- package/.nuxt/ui/progress.ts +297 -0
- package/.nuxt/ui/radio-group.ts +350 -0
- package/.nuxt/ui/select-menu.ts +346 -0
- package/.nuxt/ui/select.ts +341 -0
- package/.nuxt/ui/separator.ts +172 -0
- package/.nuxt/ui/skeleton.ts +3 -0
- package/.nuxt/ui/slideover.ts +71 -0
- package/.nuxt/ui/slider.ts +171 -0
- package/.nuxt/ui/stepper.ts +202 -0
- package/.nuxt/ui/switch.ts +131 -0
- package/.nuxt/ui/table.ts +147 -0
- package/.nuxt/ui/tabs.ts +256 -0
- package/.nuxt/ui/textarea.ts +294 -0
- package/.nuxt/ui/toast.ts +81 -0
- package/.nuxt/ui/toaster.ts +91 -0
- package/.nuxt/ui/tooltip.ts +9 -0
- package/.nuxt/ui/tree.ts +154 -0
- package/.nuxt/ui-image-component.ts +1 -0
- package/.nuxt/ui.css +143 -0
- package/app.vue +16 -36
- package/assets/css/nuxt-ui.css +16 -0
- package/assets/css/tailwind.css +10 -44
- package/components/AppFeature.vue +47 -3
- package/components/AppFeatureList.vue +86 -26
- package/components/CurrentTime.vue +9 -9
- package/components/ignis/IgnisFooter.vue +16 -0
- package/components/ignis/IgnisHeader.vue +48 -0
- package/components/ignis/IgnisInfo.vue +26 -0
- package/composables/useTranslation.ts +11 -4
- package/content/second.md +4 -0
- package/features.ts +129 -23
- package/i18n/i18n.config.ts +2 -2
- package/{assets/lang → i18n/locales}/en.json +6 -1
- package/i18n/locales/es.json +4 -0
- package/nuxt.config.ts +26 -2
- package/package.json +71 -79
- package/pages/ignis.vue +3 -0
- package/pages/index.vue +1 -12
- package/tailwind.config.ts +2 -1
- package/utils/i18n-sources.ts +20 -2
- package/vueform.config.ts +20 -0
- package/.gitattributes +0 -2
- package/CHANGELOG.md +0 -72
- package/LICENSE +0 -21
- package/README.md +0 -147
package/features.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url'
|
|
2
|
+
import { dirname, join } from 'path'
|
|
1
3
|
import { defu } from 'defu'
|
|
2
4
|
import OpenProps from 'open-props'
|
|
5
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
3
6
|
import { log } from './utils/consola'
|
|
4
7
|
|
|
8
|
+
const currentDir = dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
|
|
5
10
|
export function setFeatures() {
|
|
6
11
|
// list of optional extra features
|
|
7
12
|
const extras = [] as string[]
|
|
@@ -14,46 +19,96 @@ export function setFeatures() {
|
|
|
14
19
|
modules: [] as string[],
|
|
15
20
|
}
|
|
16
21
|
|
|
17
|
-
// 1.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'@nuxt/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
// 1. core modules
|
|
23
|
+
// (included unless disabled)
|
|
24
|
+
|
|
25
|
+
// https://nuxt.com/modules/eslint
|
|
26
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_ESLINT !== 'false') {
|
|
27
|
+
nuxtConfig.modules.push('@nuxt/eslint')
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// https://nuxt.com/modules/fonts
|
|
31
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_FONTS !== 'false') {
|
|
32
|
+
nuxtConfig.modules.push('@nuxt/fonts')
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// https://image.nuxt.com/
|
|
36
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_IMAGE !== 'false') {
|
|
37
|
+
nuxtConfig.modules.push('@nuxt/image')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// https://pinia.vuejs.org/ssr/nuxt.html
|
|
41
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_PINIA !== 'false') {
|
|
42
|
+
nuxtConfig.modules.push('@pinia/nuxt')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// https://scripts.nuxt.com/
|
|
46
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_SCRIPTS !== 'false') {
|
|
47
|
+
nuxtConfig.modules.push('@nuxt/scripts')
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// https://nuxt.com/modules/security
|
|
51
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_SECURITY !== 'false') {
|
|
52
|
+
nuxtConfig.modules.push('nuxt-security')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// https://nuxt.com/modules/vueuse
|
|
56
|
+
if (process.env.NUXT_PUBLIC_IGNIS_CORE_VUEUSE !== 'false') {
|
|
57
|
+
nuxtConfig.modules.push('@vueuse/nuxt')
|
|
58
|
+
}
|
|
28
59
|
|
|
29
60
|
// 2. optional modules & features
|
|
61
|
+
// (excluded unless enabled)
|
|
30
62
|
|
|
31
63
|
// ui
|
|
32
|
-
|
|
33
|
-
if (uiPreset
|
|
64
|
+
let uiPreset = process.env.NUXT_PUBLIC_IGNIS_PRESET_UI
|
|
65
|
+
if (uiPreset && !['nuxt-ui', 'tailwind'].includes(uiPreset)) {
|
|
66
|
+
// surpress other values
|
|
67
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = uiPreset = 'off'
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (uiPreset === 'nuxt-ui' || process.env.NUXT_PUBLIC_IGNIS_UI === 'true') {
|
|
34
71
|
nuxtConfig.modules.push('@nuxt/ui')
|
|
72
|
+
// import tailwind css file
|
|
73
|
+
nuxtConfig = defu({
|
|
74
|
+
css: [join(currentDir, './assets/css/nuxt-ui.css')],
|
|
75
|
+
}, nuxtConfig)
|
|
35
76
|
} else {
|
|
36
77
|
// remove @nuxt/ui-specific components from resolution if module is not used
|
|
37
78
|
nuxtConfig = defu({
|
|
38
79
|
vue: {
|
|
39
80
|
compilerOptions: {
|
|
40
|
-
isCustomElement: (tag: string) => tag === 'Icon',
|
|
81
|
+
isCustomElement: (tag: string) => tag === 'Icon' || tag === 'UApp',
|
|
41
82
|
},
|
|
42
83
|
},
|
|
43
84
|
}, nuxtConfig)
|
|
44
85
|
|
|
45
86
|
// evaluate separate Tailwind CSS module
|
|
46
|
-
if (uiPreset === 'tailwind' || (
|
|
47
|
-
nuxtConfig.modules.push('@nuxtjs/tailwindcss')
|
|
87
|
+
if (uiPreset === 'tailwind' || (process.env.NUXT_PUBLIC_IGNIS_TAILWIND === 'true' && uiPreset !== 'nuxt-ui')) {
|
|
88
|
+
// nuxtConfig.modules.push('@nuxtjs/tailwindcss') // temporary disabled until v7 is released
|
|
89
|
+
extras.push('Tailwind CSS')
|
|
90
|
+
// import tailwind css file
|
|
91
|
+
nuxtConfig = defu({
|
|
92
|
+
css: [join(currentDir, './assets/css/tailwind.css')],
|
|
93
|
+
vite: {
|
|
94
|
+
plugins: [tailwindcss()], // temporary integration using Vite plugin directly
|
|
95
|
+
},
|
|
96
|
+
}, nuxtConfig)
|
|
48
97
|
}
|
|
49
98
|
}
|
|
50
99
|
|
|
51
100
|
// database
|
|
52
|
-
|
|
53
|
-
if (dbPreset
|
|
101
|
+
let dbPreset = process.env.NUXT_PUBLIC_IGNIS_PRESET_DB
|
|
102
|
+
if (dbPreset && !['neon', 'supabase'].includes(dbPreset)) {
|
|
103
|
+
// surpress other values
|
|
104
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = dbPreset = 'off'
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (dbPreset === 'neon' || process.env.NUXT_PUBLIC_IGNIS_NEON === 'true') {
|
|
54
108
|
// module definition
|
|
55
109
|
nuxtConfig.modules.push('nuxt-neon')
|
|
56
|
-
}
|
|
110
|
+
}
|
|
111
|
+
if (dbPreset === 'supabase' || process.env.NUXT_PUBLIC_IGNIS_SUPABASE === 'true') {
|
|
57
112
|
// module definition
|
|
58
113
|
nuxtConfig.modules.push('@nuxtjs/supabase')
|
|
59
114
|
// module-specific config key
|
|
@@ -72,12 +127,31 @@ export function setFeatures() {
|
|
|
72
127
|
nuxtConfig = defu({
|
|
73
128
|
i18n: {
|
|
74
129
|
vueI18n: process.env.NUXT_PUBLIC_IGNIS_I18N_CONFIG || './i18n.config.ts',
|
|
130
|
+
// default to defined here because of the way of possibe initializing of @nuxtjs/seo module
|
|
131
|
+
// TODO scanI18Names from './utils/i18n-sources' would be better, but import.meta.glob fails here...
|
|
132
|
+
locales: [process.env.NUXT_PUBLIC_IGNIS_I18N_DEFAULT || 'en'],
|
|
133
|
+
// avoid automatic route-prefixing with multiple locales
|
|
134
|
+
// TODO this needs to be written in docs
|
|
135
|
+
strategy: 'no_prefix',
|
|
136
|
+
// will deprecate in v10
|
|
137
|
+
bundle: {
|
|
138
|
+
optimizeTranslationDirective: false,
|
|
139
|
+
},
|
|
75
140
|
},
|
|
76
141
|
}, nuxtConfig)
|
|
77
142
|
}
|
|
78
143
|
|
|
79
|
-
//
|
|
80
|
-
|
|
144
|
+
// forms
|
|
145
|
+
let formsPreset = process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS
|
|
146
|
+
if (formsPreset && !['vueform', 'formkit'].includes(formsPreset)) {
|
|
147
|
+
// surpress other values
|
|
148
|
+
process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = formsPreset = 'off'
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (formsPreset === 'vueform' || process.env.NUXT_PUBLIC_IGNIS_VUEFORM === 'true') {
|
|
152
|
+
nuxtConfig.modules.push('@vueform/nuxt')
|
|
153
|
+
}
|
|
154
|
+
if (formsPreset === 'formkit' || process.env.NUXT_PUBLIC_IGNIS_FORMKIT_ENABLED === 'true') {
|
|
81
155
|
// module definition
|
|
82
156
|
nuxtConfig.modules.push('@formkit/nuxt')
|
|
83
157
|
// module-specific config key
|
|
@@ -89,17 +163,37 @@ export function setFeatures() {
|
|
|
89
163
|
}, nuxtConfig)
|
|
90
164
|
}
|
|
91
165
|
|
|
166
|
+
// seo
|
|
167
|
+
// 2025/04 - must be before @nuxt/content (https://nuxtseo.com/docs/nuxt-seo/guides/nuxt-content)
|
|
168
|
+
if (process.env.NUXT_PUBLIC_IGNIS_SEO === 'true') {
|
|
169
|
+
nuxtConfig.modules.push('@nuxtjs/seo')
|
|
170
|
+
|
|
171
|
+
// ogImage and Schema.org modules should be disabled with `ssr: false`
|
|
172
|
+
// note: this won't work if `ssr: false` is set in target's project nuxt.config.ts
|
|
173
|
+
if (process.env.NUXT_PUBLIC_IGNIS_SSR === 'false') {
|
|
174
|
+
nuxtConfig = defu({
|
|
175
|
+
ogImage: { enabled: false },
|
|
176
|
+
schemaOrg: { enabled: false },
|
|
177
|
+
}, nuxtConfig)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
92
181
|
// content
|
|
93
182
|
if (process.env.NUXT_PUBLIC_IGNIS_CONTENT === 'true') {
|
|
94
183
|
nuxtConfig.modules.push('@nuxt/content')
|
|
95
184
|
}
|
|
96
185
|
|
|
186
|
+
// nuxt-auth-utils
|
|
187
|
+
if (process.env.NUXT_PUBLIC_IGNIS_AUTH === 'true') {
|
|
188
|
+
nuxtConfig.modules.push('nuxt-auth-utils')
|
|
189
|
+
}
|
|
190
|
+
|
|
97
191
|
// Open Props CSS
|
|
98
192
|
if (process.env.NUXT_PUBLIC_IGNIS_OPENPROPS === 'true') {
|
|
99
193
|
extras.push('Open Props CSS')
|
|
100
194
|
nuxtConfig = defu({
|
|
101
195
|
// import Open Prpops stylesheet
|
|
102
|
-
css: ['
|
|
196
|
+
css: [join(currentDir, './assets/css/open-props.css')],
|
|
103
197
|
// CSS processor for Open Props
|
|
104
198
|
postcss: {
|
|
105
199
|
plugins: {
|
|
@@ -132,7 +226,19 @@ export function setFeatures() {
|
|
|
132
226
|
nuxt.push('pages=false')
|
|
133
227
|
}
|
|
134
228
|
|
|
135
|
-
// 4.
|
|
229
|
+
// 4. warn if duplicate modules find
|
|
230
|
+
// this means e.g. 2 database modules or 2 form solutions
|
|
231
|
+
if (process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES !== 'false') {
|
|
232
|
+
const used = nuxtConfig.modules
|
|
233
|
+
if (used.includes('nuxt-neon') && used.includes('nuxt-neon')) {
|
|
234
|
+
log.warn('You have both DB connector modules (Neon and Supabase) active, which is not recommended. If this is intentional, you can use `process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES=false` to surpress this warning.')
|
|
235
|
+
}
|
|
236
|
+
if (used.includes('@vueform/nuxt') && used.includes('@formkit/nuxt')) {
|
|
237
|
+
log.warn('You have both Form solution provider modules (Vueform and Formkit) active, which is not recommended. If this is intentional, you can use `process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES=false` to surpress this warning.')
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// 5. verify results
|
|
136
242
|
// TODO why this run twice?
|
|
137
243
|
|
|
138
244
|
let overview = 'Nuxt Ignis will start using following settings:\n'
|
package/i18n/i18n.config.ts
CHANGED
|
@@ -3,10 +3,10 @@ const ignisLocale = process.env.NUXT_PUBLIC_IGNIS_I18N_DEFAULT || 'en'
|
|
|
3
3
|
// https://i18n.nuxtjs.org/docs/composables/define-i18n-config
|
|
4
4
|
export default defineI18nConfig(() => ({
|
|
5
5
|
legacy: false,
|
|
6
|
-
strategy: 'no_prefix',
|
|
7
6
|
locale: ignisLocale,
|
|
7
|
+
locales: scanI18Names(), // will dynamically load all available locale definitions from @/i18n/locales/*
|
|
8
8
|
defaultLocale: ignisLocale,
|
|
9
9
|
fallbackLocale: ignisLocale,
|
|
10
|
-
messages: scanI18NSources(), // will dynamically load all .jsons from @/
|
|
10
|
+
messages: scanI18NSources(), // will dynamically load all .jsons from @/i18n/locales/*
|
|
11
11
|
warnHtmlMessage: false,
|
|
12
12
|
}))
|
|
@@ -7,21 +7,26 @@
|
|
|
7
7
|
"goto2" : "Go to 2nd page",
|
|
8
8
|
"features" : {
|
|
9
9
|
"nuxt" : "Nuxt application framework atop Vue.js",
|
|
10
|
+
"consola" : "Logging with unjs/consola",
|
|
11
|
+
"eslint" : "Linting for better DevEx",
|
|
10
12
|
"security" : "Nuxt Security module helping with OWASP patterns",
|
|
11
13
|
"image" : "Nuxt Image to optimize use of images",
|
|
12
14
|
"scripts" : "Nuxt Scripts to allow simple execution of external scripts",
|
|
13
15
|
"fonts" : "Nuxt Fonts to allow simple integration of various fonts",
|
|
14
16
|
"pinia" : "Pinia for state management",
|
|
15
17
|
"vueuse" : "VueUse utils available",
|
|
18
|
+
"time" : "SSR-friendly real time rendering",
|
|
16
19
|
"i18n" : "I18n for translations",
|
|
17
|
-
"consola" : "Logging with unjs/consola",
|
|
18
20
|
"ui" : "Nuxt UI as UI components library",
|
|
19
21
|
"tailwind" : "Tailwind CSS for styling",
|
|
20
22
|
"icon" : "Icon module for displaying icons",
|
|
21
23
|
"supabase" : "Supabase for auth and DB services",
|
|
22
24
|
"neon" : "Neon for DB services",
|
|
23
25
|
"formkit" : "FormKit for input forms",
|
|
26
|
+
"vueform" : "Vueform for input forms",
|
|
24
27
|
"content" : "Nuxt Content for creating and editing content",
|
|
28
|
+
"seo" : "Nuxt SEO collection of SEO-related modules",
|
|
29
|
+
"auth" : "Nuxt Auth Utils for easy and secure authentication",
|
|
25
30
|
"openprops" : "Additional CSS by Open Props"
|
|
26
31
|
}
|
|
27
32
|
}
|
package/nuxt.config.ts
CHANGED
|
@@ -12,7 +12,7 @@ const nuxtConfig = defu(ignisFeatures, {
|
|
|
12
12
|
],
|
|
13
13
|
|
|
14
14
|
// https://nuxt.com/docs/api/nuxt-config#compatibilitydate
|
|
15
|
-
compatibilityDate: '2025-
|
|
15
|
+
compatibilityDate: '2025-05-21',
|
|
16
16
|
|
|
17
17
|
// simple eslint config - see eslint.config.mjs
|
|
18
18
|
eslint: {
|
|
@@ -50,12 +50,28 @@ const nuxtConfig = defu(ignisFeatures, {
|
|
|
50
50
|
// nuxt-related config
|
|
51
51
|
ssr: true, // true/false
|
|
52
52
|
pages: true, // true/false
|
|
53
|
+
|
|
53
54
|
// presets
|
|
54
55
|
preset: {
|
|
55
56
|
ui: 'off', // nuxt-ui/tailwind/off
|
|
56
57
|
db: 'off', // neon/supabase/off
|
|
58
|
+
forms: 'off', // formkit/vueform/off
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
// core modules
|
|
62
|
+
// (may be disabled by explicitly setting "false")
|
|
63
|
+
core: {
|
|
64
|
+
eslint: true,
|
|
65
|
+
fonts: true,
|
|
66
|
+
image: true,
|
|
67
|
+
pinia: true,
|
|
68
|
+
time: true,
|
|
69
|
+
scripts: true,
|
|
70
|
+
security: true,
|
|
71
|
+
vueuse: true,
|
|
57
72
|
},
|
|
58
|
-
|
|
73
|
+
|
|
74
|
+
// optional modules
|
|
59
75
|
ui: false, // true/false
|
|
60
76
|
tailwind: false, // true/false (ignored, if ui=true)
|
|
61
77
|
neon: false, // true/false
|
|
@@ -70,12 +86,20 @@ const nuxtConfig = defu(ignisFeatures, {
|
|
|
70
86
|
default: 'en', // default locale (should be same as i18n)
|
|
71
87
|
config: './formkit.config.ts', // path to config file
|
|
72
88
|
},
|
|
89
|
+
vueform: false, // true/false
|
|
73
90
|
content: false, // true/false
|
|
74
91
|
openprops: false, // true/false
|
|
75
92
|
pslo: {
|
|
76
93
|
enabled: false, // true/false (elrh-pslo will (not) be used)
|
|
77
94
|
content: false, // true/false (elrh-pslo will (not) be aplied on nuxt-content)
|
|
78
95
|
},
|
|
96
|
+
seo: false, // true/false
|
|
97
|
+
auth: false, // true/false
|
|
98
|
+
|
|
99
|
+
// extra behavior
|
|
100
|
+
warn: {
|
|
101
|
+
duplicates: true, // true/false
|
|
102
|
+
},
|
|
79
103
|
},
|
|
80
104
|
},
|
|
81
105
|
},
|
package/package.json
CHANGED
|
@@ -1,79 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nuxt-ignis",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Enhanced and customizable Nuxt application starter pack",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"nuxt",
|
|
7
|
-
"nuxtjs",
|
|
8
|
-
"nuxt3",
|
|
9
|
-
"starter"
|
|
10
|
-
],
|
|
11
|
-
"author": "Alois Seckar <alois.seckar@gmail.com>",
|
|
12
|
-
"homepage": "https://github.com/AloisSeckar/nuxt-ignis",
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/AloisSeckar/nuxt-ignis.git"
|
|
16
|
-
},
|
|
17
|
-
"bugs": {
|
|
18
|
-
"url": "https://github.com/AloisSeckar/nuxt-ignis/issues",
|
|
19
|
-
"email": "alois.seckar@gmail.com"
|
|
20
|
-
},
|
|
21
|
-
"license": "MIT",
|
|
22
|
-
"type": "module",
|
|
23
|
-
"main": "./nuxt.config.ts",
|
|
24
|
-
"engines": {
|
|
25
|
-
"node": ">=18.0.0"
|
|
26
|
-
},
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"@
|
|
39
|
-
"@nuxt
|
|
40
|
-
"@nuxt
|
|
41
|
-
"@
|
|
42
|
-
"@nuxt
|
|
43
|
-
"@
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"nuxt
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
},
|
|
73
|
-
"devDependencies": {
|
|
74
|
-
"nuxt": "3.16.1",
|
|
75
|
-
"vue": "3.5.13",
|
|
76
|
-
"vue-router": "4.5.0"
|
|
77
|
-
},
|
|
78
|
-
"packageManager": "pnpm@9.15.9"
|
|
79
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "nuxt-ignis",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Enhanced and customizable Nuxt application starter pack",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"nuxt",
|
|
7
|
+
"nuxtjs",
|
|
8
|
+
"nuxt3",
|
|
9
|
+
"starter"
|
|
10
|
+
],
|
|
11
|
+
"author": "Alois Seckar <alois.seckar@gmail.com>",
|
|
12
|
+
"homepage": "https://github.com/AloisSeckar/nuxt-ignis",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/AloisSeckar/nuxt-ignis.git"
|
|
16
|
+
},
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/AloisSeckar/nuxt-ignis/issues",
|
|
19
|
+
"email": "alois.seckar@gmail.com"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "./nuxt.config.ts",
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18.0.0"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@formkit/nuxt": "1.6.9",
|
|
29
|
+
"@nuxt/content": "3.5.1",
|
|
30
|
+
"@nuxt/eslint": "1.4.1",
|
|
31
|
+
"@nuxt/fonts": "0.11.4",
|
|
32
|
+
"@nuxt/image": "1.10.0",
|
|
33
|
+
"@nuxt/scripts": "0.11.7",
|
|
34
|
+
"@nuxt/ui": "3.1.2",
|
|
35
|
+
"@nuxtjs/i18n": "9.5.4",
|
|
36
|
+
"@nuxtjs/seo": "3.0.3",
|
|
37
|
+
"@nuxtjs/supabase": "1.5.1",
|
|
38
|
+
"@nuxtjs/tailwindcss": "6.14.0",
|
|
39
|
+
"@pinia/nuxt": "0.11.0",
|
|
40
|
+
"@vueform/nuxt": "1.13.0",
|
|
41
|
+
"@vueuse/core": "13.2.0",
|
|
42
|
+
"@vueuse/nuxt": "13.2.0",
|
|
43
|
+
"@tailwindcss/vite": "4.1.7",
|
|
44
|
+
"consola": "3.4.2",
|
|
45
|
+
"defu": "6.1.4",
|
|
46
|
+
"elrh-pslo": "1.1.6",
|
|
47
|
+
"nuxt-auth-utils": "0.5.20",
|
|
48
|
+
"nuxt-neon": "0.6.0",
|
|
49
|
+
"nuxt-security": "2.2.0",
|
|
50
|
+
"nuxt-spec": "0.0.4",
|
|
51
|
+
"open-props": "1.7.15",
|
|
52
|
+
"pinia": "3.0.2",
|
|
53
|
+
"postcss-jit-props": "1.0.16",
|
|
54
|
+
"typescript": "5.8.3"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"nuxt": "3.17.4",
|
|
58
|
+
"vue": "3.5.14",
|
|
59
|
+
"vue-router": "4.5.1"
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"analyze": "nuxt analyze",
|
|
63
|
+
"eslint": "eslint .",
|
|
64
|
+
"build": "nuxt build",
|
|
65
|
+
"dev": "nuxt dev",
|
|
66
|
+
"generate": "nuxt generate",
|
|
67
|
+
"preview": "nuxt preview",
|
|
68
|
+
"start": "nuxt start",
|
|
69
|
+
"test": "vitest run"
|
|
70
|
+
}
|
|
71
|
+
}
|
package/pages/ignis.vue
ADDED
package/pages/index.vue
CHANGED
|
@@ -13,16 +13,5 @@
|
|
|
13
13
|
-->
|
|
14
14
|
|
|
15
15
|
<template>
|
|
16
|
-
<
|
|
17
|
-
<AppFeatureList />
|
|
18
|
-
<div class="link">
|
|
19
|
-
<NuxtLink to="/second">
|
|
20
|
-
{{ useT("goto2") }}
|
|
21
|
-
</NuxtLink>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
16
|
+
<IgnisInfo />
|
|
24
17
|
</template>
|
|
25
|
-
|
|
26
|
-
<script setup lang="ts">
|
|
27
|
-
import { useT } from '#imports' // requires explicit import for some reason
|
|
28
|
-
</script>
|
package/tailwind.config.ts
CHANGED
|
@@ -5,7 +5,8 @@ import plugin from 'tailwindcss/plugin'
|
|
|
5
5
|
|
|
6
6
|
module.exports = {
|
|
7
7
|
content: [
|
|
8
|
-
|
|
8
|
+
// include Nuxt Content files into array scanned by Tailwind CSS
|
|
9
|
+
'srcDir/content/**/*.{md,yml,json}',
|
|
9
10
|
],
|
|
10
11
|
theme: {
|
|
11
12
|
// example of extending Tailwind CSS with custom color
|
package/utils/i18n-sources.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
// scans @/
|
|
1
|
+
// scans @/i18n/locales/* for all .json files with i18n messages
|
|
2
2
|
// and makes them available for i18n.config.ts
|
|
3
3
|
|
|
4
4
|
import type { LocaleMessage } from '@intlify/core-base'
|
|
5
5
|
|
|
6
|
+
function getAvailableLocales() {
|
|
7
|
+
return import.meta.glob('@/i18n/locales/*.json', { eager: true })
|
|
8
|
+
}
|
|
9
|
+
|
|
6
10
|
export function scanI18NSources() {
|
|
7
|
-
const modules =
|
|
11
|
+
const modules = getAvailableLocales()
|
|
8
12
|
|
|
9
13
|
const messages = {} as { [x: string]: LocaleMessage<unknown> }
|
|
10
14
|
for (const path in modules) {
|
|
@@ -16,3 +20,17 @@ export function scanI18NSources() {
|
|
|
16
20
|
|
|
17
21
|
return messages
|
|
18
22
|
}
|
|
23
|
+
|
|
24
|
+
export function scanI18Names() {
|
|
25
|
+
const modules = getAvailableLocales()
|
|
26
|
+
|
|
27
|
+
const locales = [] as string[]
|
|
28
|
+
for (const path in modules) {
|
|
29
|
+
const locale = path.match(/\/([^/]+)\.json$/)
|
|
30
|
+
if (locale && locale[1]) {
|
|
31
|
+
locales.push(locale[1])
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return locales
|
|
36
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// this is basic "getting started" configuration example
|
|
2
|
+
// for more options check:
|
|
3
|
+
// https://vueform.com/docs/configuration
|
|
4
|
+
|
|
5
|
+
import en from '@vueform/vueform/locales/en'
|
|
6
|
+
import vueform from '@vueform/vueform/dist/vueform'
|
|
7
|
+
import { defineConfig } from '@vueform/vueform'
|
|
8
|
+
|
|
9
|
+
// add Vueform type definitions
|
|
10
|
+
import '@vueform/vueform/types/index.d.ts'
|
|
11
|
+
|
|
12
|
+
// add default CSS styles
|
|
13
|
+
// can be placed anywhere else in your project
|
|
14
|
+
import '@vueform/vueform/dist/vueform.css'
|
|
15
|
+
|
|
16
|
+
export default defineConfig({
|
|
17
|
+
theme: vueform,
|
|
18
|
+
locales: { en },
|
|
19
|
+
locale: 'en',
|
|
20
|
+
})
|
package/.gitattributes
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.2.5 (2025-03-26)
|
|
4
|
-
- build: move `vue` and `vue-router` to devDepencencies (should allow smooth Netlify deployment)
|
|
5
|
-
- build: fix Vite security issue
|
|
6
|
-
|
|
7
|
-
## 0.2.4 (2025-03-20)
|
|
8
|
-
- build: bump `Nuxt` to `3.16.1`, `Nuxt Content` to `3.4.0` + update other deps
|
|
9
|
-
- build: fix some security issues
|
|
10
|
-
- fix: update necessary default config for `@nuxtjs/i18n`
|
|
11
|
-
|
|
12
|
-
## 0.2.3 (2025-03-08)
|
|
13
|
-
- build: bump `Nuxt` to `3.16.0` + update other deps
|
|
14
|
-
|
|
15
|
-
## 0.2.2 (2025-02-25)
|
|
16
|
-
- build: bump `nuxt-spec` and `nuxt-neon`
|
|
17
|
-
- build: return `postcss-jit-props` dependency after a [bug gets fixed](https://github.com/GoogleChromeLabs/postcss-jit-props/commit/0c98b5367935b9c048a547400ee8346cb6c07b00)
|
|
18
|
-
|
|
19
|
-
## 0.2.1 (2025-02-17)
|
|
20
|
-
- feat: `@nuxt/fonts` included into built-in dependencies
|
|
21
|
-
- fix: added default content.config.ts to avoid warning on startup
|
|
22
|
-
- build: fixed couple of version issues in lock file
|
|
23
|
-
|
|
24
|
-
## 0.2.0 (2025-02-09)
|
|
25
|
-
- feat: breaking change update to `@nuxt/content v3` - in case of problems, see [migration guide](https://content.nuxt.com/docs/getting-started/migration)
|
|
26
|
-
- feat: `@nuxt/scripts` included into built-in dependencies
|
|
27
|
-
- build: Vite and Nuxt Kit version fix
|
|
28
|
-
|
|
29
|
-
## 0.1.10 (2025-02-06)
|
|
30
|
-
- feat: update `nuxt-neon` to allow server-side exports
|
|
31
|
-
- feat: remove `useIgnisI18n` again as it is NOT needed
|
|
32
|
-
- fix: pin down `i18n` due to current regression
|
|
33
|
-
- build: security updates
|
|
34
|
-
|
|
35
|
-
## 0.1.9 (2025-02-03)
|
|
36
|
-
- feat: expose `useI18n` composable via custom `useIgnisI18n`
|
|
37
|
-
|
|
38
|
-
## 0.1.8 (2025-02-02)
|
|
39
|
-
- build: fix `nuxt-neon` security issue
|
|
40
|
-
- build: fix `vite` security issue
|
|
41
|
-
|
|
42
|
-
## 0.1.7 (2025-01-31)
|
|
43
|
-
- feat: unified test-pack included via separate `nuxt-spec` layer
|
|
44
|
-
- feat: support `ssr` and `pages` settings
|
|
45
|
-
- feat: display log level setting on startup
|
|
46
|
-
- refactor: log level setting moved inside `ignis` config
|
|
47
|
-
- build: updated deps
|
|
48
|
-
|
|
49
|
-
## 0.1.6 (2024-12-25)
|
|
50
|
-
- build: bump Nuxt to `3.15.0` + update other deps
|
|
51
|
-
|
|
52
|
-
## 0.1.5 (2024-12-21)
|
|
53
|
-
- feat: more flexible config for `i18n` and `formkit`
|
|
54
|
-
- docs: improved instructions for using as a layer
|
|
55
|
-
|
|
56
|
-
## 0.1.4 (2024-12-07)
|
|
57
|
-
- feat: include `elrh-pslo` text utility
|
|
58
|
-
- docs: add instructions for using as a layer
|
|
59
|
-
|
|
60
|
-
## 0.1.3 (2024-12-05)
|
|
61
|
-
- build: bump nuxt-neon to `0.2.4`
|
|
62
|
-
|
|
63
|
-
## 0.1.2 (2024-12-05)
|
|
64
|
-
- fix: update package.json according to Nuxt docs
|
|
65
|
-
|
|
66
|
-
## 0.1.1 (2024-12-05)
|
|
67
|
-
- build: bump nuxt-neon to `0.2.0`
|
|
68
|
-
- fix: features page listing
|
|
69
|
-
- docs: add CHANGELOG.md
|
|
70
|
-
|
|
71
|
-
## 0.1.0 (2024-12-02)
|
|
72
|
-
- initial release [v0.1.0](https://github.com/AloisSeckar/nuxt-ignis/releases/tag/v0.1.0)
|