nuxt-ignis 0.3.1 → 0.3.2

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.
Files changed (72) hide show
  1. package/.data/content/contents.sqlite +0 -0
  2. package/.env +3 -3
  3. package/.nuxt/app.config.mjs +227 -1
  4. package/.nuxt/components.d.ts +372 -140
  5. package/.nuxt/content/components.ts +93 -36
  6. package/.nuxt/dev/index.mjs +7601 -0
  7. package/.nuxt/dev/index.mjs.map +1 -0
  8. package/.nuxt/dist/server/client.manifest.json +2 -2
  9. package/.nuxt/dist/server/client.manifest.mjs +2 -2
  10. package/.nuxt/eslint.config.d.mts +2 -2
  11. package/.nuxt/eslint.config.mjs +2 -2
  12. package/.nuxt/imports.d.ts +57 -42
  13. package/.nuxt/manifest/latest.json +1 -1
  14. package/.nuxt/manifest/meta/dev.json +1 -1
  15. package/.nuxt/module/@nuxtjs-sitemap.d.ts +8 -8
  16. package/.nuxt/module/nuxt-robots.d.ts +3 -3
  17. package/.nuxt/module/nuxt-seo-utils.d.ts +6 -6
  18. package/.nuxt/module/nuxt-site-config.d.ts +8 -8
  19. package/.nuxt/nitro.json +4 -4
  20. package/.nuxt/nuxt.d.ts +12 -10
  21. package/.nuxt/nuxt.json +2 -2
  22. package/.nuxt/schema/nuxt.schema.d.ts +193 -0
  23. package/.nuxt/schema/nuxt.schema.json +261 -1
  24. package/.nuxt/tsconfig.json +133 -110
  25. package/.nuxt/tsconfig.server.json +82 -64
  26. package/.nuxt/types/app.config.d.ts +227 -1
  27. package/.nuxt/types/build.d.ts +2 -1
  28. package/.nuxt/types/i18n-plugin.d.ts +2 -2
  29. package/.nuxt/types/imports.d.ts +318 -264
  30. package/.nuxt/types/neon.d.ts +136 -34
  31. package/.nuxt/types/nitro-imports.d.ts +40 -40
  32. package/.nuxt/types/nitro-routes.d.ts +21 -18
  33. package/.nuxt/types/plugins.d.ts +37 -33
  34. package/.nuxt/types/schema.d.ts +72 -12
  35. package/.nuxt/types/ui.d.ts +1 -1
  36. package/.nuxt/ui/checkbox-group.ts +1 -1
  37. package/.nuxt/ui/context-menu.ts +2 -1
  38. package/.nuxt/ui/dropdown-menu.ts +2 -1
  39. package/.nuxt/ui/input-menu.ts +2 -2
  40. package/.nuxt/ui/navigation-menu.ts +43 -34
  41. package/.nuxt/ui/radio-group.ts +1 -1
  42. package/.nuxt/ui/select-menu.ts +2 -2
  43. package/.nuxt/ui/select.ts +2 -2
  44. package/.nuxt/ui/tooltip.ts +1 -1
  45. package/.nuxt/ui.css +4 -1
  46. package/content.config.ts +6 -10
  47. package/features.ts +14 -1
  48. package/nuxt.config.ts +1 -1
  49. package/package.json +13 -13
  50. package/server/api/neonTest.ts +7 -5
  51. package/test/features/db-neon.txt +3 -0
  52. package/test/features/db-off.txt +3 -0
  53. package/test/features/db-supabase.txt +3 -0
  54. package/test/features/default.txt +3 -0
  55. package/test/features/disable-core.txt +3 -0
  56. package/test/features/enable-all.txt +4 -0
  57. package/test/features/forms-formkit.txt +3 -0
  58. package/test/features/forms-off.txt +3 -0
  59. package/test/features/forms-vueform.txt +3 -0
  60. package/test/features/ui-nuxt-ui.txt +3 -0
  61. package/test/features/ui-off.txt +3 -0
  62. package/test/features/ui-tailwind.txt +4 -0
  63. package/test/features.test.ts +191 -0
  64. package/utils/config/content.config.ts +12 -0
  65. package/utils/config/vueform.config.ts +20 -0
  66. package/utils/content.ts +31 -0
  67. package/utils/tailwind.ts +19 -0
  68. package/utils/vueform.ts +16 -0
  69. package/vueform.config.ts +4 -16
  70. package/.nuxt/component-chunk.mjs +0 -1
  71. package/.nuxt/dist/server/server.mjs +0 -1
  72. package/.nuxt/tailwind/postcss.mjs +0 -15
package/features.ts CHANGED
@@ -4,6 +4,7 @@ import { defu } from 'defu'
4
4
  import OpenProps from 'open-props'
5
5
  import tailwindcss from '@tailwindcss/vite'
6
6
  import { log } from './utils/consola'
7
+ import { ignisTailwindcssFix } from './utils/tailwind'
7
8
 
8
9
  const currentDir = dirname(fileURLToPath(import.meta.url))
9
10
 
@@ -67,7 +68,9 @@ export function setFeatures() {
67
68
  process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = uiPreset = 'off'
68
69
  }
69
70
 
71
+ let tailwindFixRequired = false
70
72
  if (uiPreset === 'nuxt-ui' || process.env.NUXT_PUBLIC_IGNIS_UI === 'true') {
73
+ tailwindFixRequired = true
71
74
  nuxtConfig.modules.push('@nuxt/ui')
72
75
  // import tailwind css file
73
76
  nuxtConfig = defu({
@@ -85,6 +88,7 @@ export function setFeatures() {
85
88
 
86
89
  // evaluate separate Tailwind CSS module
87
90
  if (uiPreset === 'tailwind' || (process.env.NUXT_PUBLIC_IGNIS_TAILWIND === 'true' && uiPreset !== 'nuxt-ui')) {
91
+ tailwindFixRequired = true
88
92
  // nuxtConfig.modules.push('@nuxtjs/tailwindcss') // temporary disabled until v7 is released
89
93
  extras.push('Tailwind CSS')
90
94
  // import tailwind css file
@@ -97,6 +101,15 @@ export function setFeatures() {
97
101
  }
98
102
  }
99
103
 
104
+ // TODO occasionaly check https://github.com/tailwindlabs/tailwindcss/discussions/16119 for solution
105
+ if (tailwindFixRequired) {
106
+ nuxtConfig = defu({
107
+ vite: {
108
+ plugins: [ignisTailwindcssFix],
109
+ },
110
+ }, nuxtConfig)
111
+ }
112
+
100
113
  // database
101
114
  let dbPreset = process.env.NUXT_PUBLIC_IGNIS_PRESET_DB
102
115
  if (dbPreset && !['neon', 'supabase'].includes(dbPreset)) {
@@ -230,7 +243,7 @@ export function setFeatures() {
230
243
  // this means e.g. 2 database modules or 2 form solutions
231
244
  if (process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES !== 'false') {
232
245
  const used = nuxtConfig.modules
233
- if (used.includes('nuxt-neon') && used.includes('nuxt-neon')) {
246
+ if (used.includes('nuxt-neon') && used.includes('@nuxtjs/supabase')) {
234
247
  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
248
  }
236
249
  if (used.includes('@vueform/nuxt') && used.includes('@formkit/nuxt')) {
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-05-21',
15
+ compatibilityDate: '2025-06-07',
16
16
 
17
17
  // simple eslint config - see eslint.config.mjs
18
18
  eslint: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-ignis",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Enhanced and customizable Nuxt application starter pack",
5
5
  "keywords": [
6
6
  "nuxt",
@@ -30,32 +30,32 @@
30
30
  "@nuxt/eslint": "1.4.1",
31
31
  "@nuxt/fonts": "0.11.4",
32
32
  "@nuxt/image": "1.10.0",
33
- "@nuxt/scripts": "0.11.7",
34
- "@nuxt/ui": "3.1.2",
35
- "@nuxtjs/i18n": "9.5.4",
33
+ "@nuxt/scripts": "0.11.8",
34
+ "@nuxt/ui": "3.1.3",
35
+ "@nuxtjs/i18n": "9.5.5",
36
36
  "@nuxtjs/seo": "3.0.3",
37
37
  "@nuxtjs/supabase": "1.5.1",
38
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",
39
+ "@pinia/nuxt": "0.11.1",
40
+ "@vueform/nuxt": "1.15.0",
41
+ "@vueuse/core": "13.3.0",
42
+ "@vueuse/nuxt": "13.3.0",
43
+ "@tailwindcss/vite": "4.1.8",
44
44
  "consola": "3.4.2",
45
45
  "defu": "6.1.4",
46
46
  "elrh-pslo": "1.1.6",
47
47
  "nuxt-auth-utils": "0.5.20",
48
- "nuxt-neon": "0.6.0",
48
+ "nuxt-neon": "0.6.2",
49
49
  "nuxt-security": "2.2.0",
50
50
  "nuxt-spec": "0.0.4",
51
51
  "open-props": "1.7.15",
52
- "pinia": "3.0.2",
52
+ "pinia": "3.0.3",
53
53
  "postcss-jit-props": "1.0.16",
54
54
  "typescript": "5.8.3"
55
55
  },
56
56
  "devDependencies": {
57
- "nuxt": "3.17.4",
58
- "vue": "3.5.14",
57
+ "nuxt": "3.17.5",
58
+ "vue": "3.5.16",
59
59
  "vue-router": "4.5.1"
60
60
  },
61
61
  "scripts": {
@@ -3,11 +3,13 @@ export default defineEventHandler(async () => {
3
3
  if (config.preset.db === 'neon' || config.neon === true) {
4
4
  return await select(
5
5
  getNeonClient(),
6
- ['name', 'value'],
7
- 'playing_with_neon',
8
- [{ column: 'name', condition: 'LIKE', value: '\'test%\'' }],
9
- 'name DESC',
10
- 2,
6
+ {
7
+ columns: ['name', 'value'],
8
+ from: 'playing_with_neon',
9
+ where: { column: 'name', condition: 'LIKE', value: '\'test%\'' },
10
+ order: 'name DESC',
11
+ limit: 2,
12
+ },
11
13
  )
12
14
  } else {
13
15
  return 'Neon DB module not enabled'
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, nuxt-neon
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @nuxtjs/supabase
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules:
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,4 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @nuxt/ui, nuxt-neon, @nuxtjs/supabase, @nuxtjs/i18n, @vueform/nuxt, @formkit/nuxt, @nuxtjs/seo, @nuxt/content, nuxt-auth-utils
3
+ Extras: Open Props CSS, elrh-pslo
4
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @formkit/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @vueform/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt, @nuxt/ui
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,3 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt
3
+ Nuxt: log-level=info[default]
@@ -0,0 +1,4 @@
1
+ Nuxt Ignis will start using following settings:
2
+ Modules: @nuxt/eslint, @nuxt/fonts, @nuxt/image, @pinia/nuxt, @nuxt/scripts, nuxt-security, @vueuse/nuxt
3
+ Extras: Tailwind CSS
4
+ Nuxt: log-level=info[default]
@@ -0,0 +1,191 @@
1
+ import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
2
+ import { setFeatures } from '../features'
3
+ import { log } from '../utils/consola'
4
+
5
+ // `setFeatures()` is the core function that evaluates the environment variables
6
+ // and decides which features to enable in the user's Nuxt application
7
+
8
+ describe('setFeatures() unit tests', () => {
9
+ // store original process.env to restore it after tests
10
+ const OLD_ENV = process.env
11
+
12
+ // mock consola instance for listening to `setFeatures()` method output
13
+ const consoleSpy = vi.spyOn(log, 'info').mockImplementation(() => {})
14
+
15
+ // helper function to get the console output from the spy
16
+ function getConsoleOutput() {
17
+ return consoleSpy.mock.calls[0]![0] as string
18
+ }
19
+
20
+ beforeEach(() => {
21
+ // restore env before each test
22
+ process.env = { ...OLD_ENV }
23
+ })
24
+
25
+ afterEach(() => {
26
+ // clear the console spy after each test
27
+ vi.clearAllMocks()
28
+ })
29
+
30
+ // output with no settings provided
31
+
32
+ test('setFeatures() - default output', async () => {
33
+ expect(setFeatures).toBeDefined()
34
+ setFeatures()
35
+ expect(consoleSpy).toHaveBeenCalledOnce()
36
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/default.txt')
37
+ })
38
+
39
+ // following test cases are checking whether presets are evaluated correctly
40
+
41
+ // preset - UI
42
+
43
+ test('setFeatures() - UI preset - nuxt-ui', async () => {
44
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'nuxt-ui'
45
+ setFeatures()
46
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-nuxt-ui.txt')
47
+ })
48
+
49
+ test('setFeatures() - UI preset - tailwind', async () => {
50
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'tailwind'
51
+ setFeatures()
52
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-tailwind.txt')
53
+ })
54
+
55
+ test('setFeatures() - UI preset - off', async () => {
56
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'off'
57
+ setFeatures()
58
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-off.txt')
59
+ })
60
+
61
+ test('setFeatures() - UI preset - invalid', async () => {
62
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_UI = 'invalid'
63
+ setFeatures()
64
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-off.txt')
65
+ })
66
+
67
+ // UI - set directly
68
+
69
+ test('setFeatures() - UI - nuxt-ui', async () => {
70
+ process.env.NUXT_PUBLIC_IGNIS_UI = 'true'
71
+ setFeatures()
72
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-nuxt-ui.txt')
73
+ })
74
+
75
+ test('setFeatures() - UI - tailwind', async () => {
76
+ process.env.NUXT_PUBLIC_IGNIS_TAILWIND = 'true'
77
+ setFeatures()
78
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/ui-tailwind.txt')
79
+ })
80
+
81
+ // preset - DB
82
+
83
+ test('setFeatures() - DB preset - neon', async () => {
84
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'neon'
85
+ setFeatures()
86
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-neon.txt')
87
+ })
88
+
89
+ test('setFeatures() - DB preset - supabase', async () => {
90
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'supabase'
91
+ setFeatures()
92
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-supabase.txt')
93
+ })
94
+
95
+ test('setFeatures() - DB preset - off', async () => {
96
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'off'
97
+ setFeatures()
98
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-off.txt')
99
+ })
100
+
101
+ test('setFeatures() - DB preset - invalid', async () => {
102
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_DB = 'invalid'
103
+ setFeatures()
104
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-off.txt')
105
+ })
106
+
107
+ // DB - set directly
108
+
109
+ test('setFeatures() - DB - neon', async () => {
110
+ process.env.NUXT_PUBLIC_IGNIS_NEON = 'true'
111
+ setFeatures()
112
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-neon.txt')
113
+ })
114
+
115
+ test('setFeatures() - DB - supabase', async () => {
116
+ process.env.NUXT_PUBLIC_IGNIS_SUPABASE = 'true'
117
+ setFeatures()
118
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/db-supabase.txt')
119
+ })
120
+
121
+ // preset - forms
122
+
123
+ test('setFeatures() - forms preset - vueform', async () => {
124
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'vueform'
125
+ setFeatures()
126
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-vueform.txt')
127
+ })
128
+
129
+ test('setFeatures() - forms preset - formkit', async () => {
130
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'formkit'
131
+ setFeatures()
132
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-formkit.txt')
133
+ })
134
+
135
+ test('setFeatures() - forms preset - off', async () => {
136
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'off'
137
+ setFeatures()
138
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-off.txt')
139
+ })
140
+
141
+ test('setFeatures() - forms preset - invalid', async () => {
142
+ process.env.NUXT_PUBLIC_IGNIS_PRESET_FORMS = 'invalid'
143
+ setFeatures()
144
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-off.txt')
145
+ })
146
+
147
+ // forms - set directly
148
+
149
+ test('setFeatures() - forms - vueform', async () => {
150
+ process.env.NUXT_PUBLIC_IGNIS_VUEFORM = 'true'
151
+ setFeatures()
152
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-vueform.txt')
153
+ })
154
+
155
+ test('setFeatures() - forms - formkit', async () => {
156
+ process.env.NUXT_PUBLIC_IGNIS_FORMKIT_ENABLED = 'true'
157
+ setFeatures()
158
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/forms-formkit.txt')
159
+ })
160
+
161
+ // disable "core" features
162
+ test('setFeatures() - disable core features', async () => {
163
+ process.env.NUXT_PUBLIC_IGNIS_CORE_ESLINT = 'false'
164
+ process.env.NUXT_PUBLIC_IGNIS_CORE_FONTS = 'false'
165
+ process.env.NUXT_PUBLIC_IGNIS_CORE_IMAGE = 'false'
166
+ process.env.NUXT_PUBLIC_IGNIS_CORE_PINIA = 'false'
167
+ process.env.NUXT_PUBLIC_IGNIS_CORE_SCRIPTS = 'false'
168
+ process.env.NUXT_PUBLIC_IGNIS_CORE_SECURITY = 'false'
169
+ process.env.NUXT_PUBLIC_IGNIS_CORE_VUEUSE = 'false'
170
+ setFeatures()
171
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/disable-core.txt')
172
+ })
173
+
174
+ // enable all features
175
+ test('setFeatures() - enable all features', async () => {
176
+ process.env.NUXT_PUBLIC_IGNIS_UI = 'true'
177
+ process.env.NUXT_PUBLIC_IGNIS_NEON = 'true'
178
+ process.env.NUXT_PUBLIC_IGNIS_SUPABASE = 'true'
179
+ process.env.NUXT_PUBLIC_IGNIS_I18N_ENABLED = 'true'
180
+ process.env.NUXT_PUBLIC_IGNIS_FORMKIT_ENABLED = 'true'
181
+ process.env.NUXT_PUBLIC_IGNIS_VUEFORM = 'true'
182
+ process.env.NUXT_PUBLIC_IGNIS_CONTENT = 'true'
183
+ process.env.NUXT_PUBLIC_IGNIS_OPENPROPS = 'true'
184
+ process.env.NUXT_PUBLIC_IGNIS_PSLO_ENABLED = 'true'
185
+ process.env.NUXT_PUBLIC_IGNIS_SEO = 'true'
186
+ process.env.NUXT_PUBLIC_IGNIS_AUTH = 'true'
187
+ process.env.NUXT_PUBLIC_IGNIS_WARN_DUPLICATES = 'false' // to avoid console log
188
+ setFeatures()
189
+ await expect(getConsoleOutput()).toMatchFileSnapshot('./features/enable-all.txt')
190
+ })
191
+ })
@@ -0,0 +1,12 @@
1
+ import { defineCollection, defineContentConfig } from '@nuxt/content'
2
+
3
+ export default defineContentConfig({
4
+ // while it is not strictily necessary to have a default config file
5
+ // it produces warning during startup when not presented
6
+ collections: {
7
+ content: defineCollection({
8
+ source: '**',
9
+ type: 'page',
10
+ }),
11
+ },
12
+ })
@@ -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
+ })
@@ -0,0 +1,31 @@
1
+ // this function adresses https://github.com/AloisSeckar/nuxt-ignis/issues/70
2
+ // Nuxt Content requires its configuration to be injected and config exported
3
+ // this normally happens in content.config.ts file in project root
4
+ // however, it is not possible to transfer this config file when extending a layer
5
+ // user only have to setup small custom config file in his own project
6
+ // more info in the docs
7
+ // TODO can this be changed? can layer's "auto-imports" be configured?
8
+
9
+ import { defu } from 'defu'
10
+ import { defineCollection } from '@nuxt/content'
11
+ import { log } from './consola'
12
+
13
+ // re-export so it can be called in target apps without '@nuxt/content' dependency
14
+ export function defineContentCollection(...args: Parameters<typeof defineCollection>) {
15
+ return defineCollection(...args)
16
+ }
17
+
18
+ // @ts-expect-error no-implicit-any
19
+ export async function loadContentConfig(userContentConfig) {
20
+ // only if content is allowed
21
+ if (process.env.NUXT_PUBLIC_IGNIS_CONTENT === 'true') {
22
+ // get nuxt-ignis default
23
+ const defaultContentConfig = await import('./config/content.config')
24
+ // merge with possible user values
25
+ const contentConfig = defu(userContentConfig, defaultContentConfig.default)
26
+ return contentConfig
27
+ }
28
+ // otherwise there is nothing to load
29
+ log.warn('@nuxt/content is not enabled, ensure you have NUXT_PUBLIC_IGNIS_CONTENT=true')
30
+ return null
31
+ }
@@ -0,0 +1,19 @@
1
+ // TEMPORARY FIX for https://github.com/tailwindlabs/tailwindcss/discussions/16119
2
+ export const ignisTailwindcssFix = {
3
+ name: 'vite-plugin-ignore-sourcemap-warnings',
4
+ apply: 'build',
5
+ // @ts-expect-error no-implicit-any
6
+ configResolved(config) {
7
+ // @ts-expect-error no-implicit-any
8
+ config.build.rollupOptions.onwarn = (warning, warn) => {
9
+ if (
10
+ warning.code === 'SOURCEMAP_BROKEN'
11
+ && warning.plugin === '@tailwindcss/vite:generate:build'
12
+ ) {
13
+ return
14
+ }
15
+
16
+ warn(warning)
17
+ }
18
+ },
19
+ }
@@ -0,0 +1,16 @@
1
+ // this function adresses https://github.com/AloisSeckar/nuxt-ignis/issues/71
2
+ // Vueform requires its configuration to be injected and config exported
3
+ // this normally happens in vueform.config.ts file in project root
4
+ // however, it is not possible to transfer this config file when extending a layer
5
+ // user only have to setup small custom config file in his own project
6
+ // more info in the docs
7
+ // TODO can this be changed? can layer's "auto-imports" be configured?
8
+
9
+ export async function loadDefaultVueformConfig() {
10
+ const config = useRuntimeConfig().public.ignis
11
+ if (config.preset.forms === 'vueform' || config.vueform === true) {
12
+ const vueformConfig = await import('./config/vueform.config')
13
+ return vueformConfig.default
14
+ }
15
+ return null
16
+ }
package/vueform.config.ts CHANGED
@@ -1,20 +1,8 @@
1
- // this is basic "getting started" configuration example
2
- // for more options check:
3
- // https://vueform.com/docs/configuration
1
+ // minimal config for Vueform
2
+ // currently required to be loaded like this...
4
3
 
5
- import en from '@vueform/vueform/locales/en'
6
- import vueform from '@vueform/vueform/dist/vueform'
7
4
  import { defineConfig } from '@vueform/vueform'
8
5
 
9
- // add Vueform type definitions
10
- import '@vueform/vueform/types/index.d.ts'
6
+ const vueformConfig = await loadDefaultVueformConfig()
11
7
 
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
- })
8
+ export default defineConfig(vueformConfig!)
@@ -1 +0,0 @@
1
- export default {}
@@ -1 +0,0 @@
1
- export { default } from "file:///C:/Git/nuxt-ignis/core/node_modules/.pnpm/@nuxt+vite-builder@3.17.4_@_1e4eaac97c7526a7ec98fffee6b1d729/node_modules/@nuxt/vite-builder/dist/runtime/vite-node.mjs"
@@ -1,15 +0,0 @@
1
- // generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 21. 5. 2025 21:21:52
2
- import "@nuxtjs/tailwindcss/config-ctx"
3
- import configMerger from "@nuxtjs/tailwindcss/merger";
4
-
5
- import cfg2 from "./../../tailwind.config.ts";
6
- const config = [
7
- {"content":{"files":["C:/Git/nuxt-ignis/core/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/plugins/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/composables/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/utils/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/app.config.{js,ts,mjs}","C:/Git/nuxt-ignis/core/app/spa-loading-template.html"]}},
8
- {},
9
- cfg2,
10
- {"content":{"files":["C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/plugins/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/composables/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/utils/**/*.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/app.config.{js,ts,mjs}","C:/Git/nuxt-ignis/core/node_modules/.pnpm/nuxt-spec@0.0.4_@types+debu_fbd62cce99e0c6b5414599c74ec32b3d/node_modules/nuxt-spec/app/spa-loading-template.html"]}}
11
- ].reduce((acc, curr) => configMerger(acc, curr), {});
12
-
13
- const resolvedConfig = config;
14
-
15
- export default resolvedConfig;