@nuxtjs/prismic 4.0.0 → 4.1.0-pr.235.94cfeb5

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 (44) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -32
  3. package/dist/module.d.mts +48 -75
  4. package/dist/module.json +3 -3
  5. package/dist/module.mjs +193 -242
  6. package/dist/runtime/PrismicPreview.d.vue.ts +3 -0
  7. package/dist/runtime/PrismicPreview.vue +8 -14
  8. package/dist/runtime/PrismicPreview.vue.d.ts +3 -0
  9. package/dist/runtime/plugin.client.js +13 -7
  10. package/dist/runtime/plugin.js +89 -72
  11. package/dist/runtime/usePrismicPreview.d.ts +1 -5
  12. package/dist/runtime/usePrismicPreview.js +3 -3
  13. package/dist/types.d.mts +3 -1
  14. package/package.json +38 -45
  15. package/src/module.ts +352 -185
  16. package/src/runtime/PrismicPreview.vue +12 -16
  17. package/src/runtime/plugin.client.ts +16 -12
  18. package/src/runtime/plugin.ts +114 -103
  19. package/src/runtime/usePrismicPreview.ts +7 -11
  20. package/dist/client/200.html +0 -1
  21. package/dist/client/404.html +0 -1
  22. package/dist/client/_nuxt/BMD6bpEv.js +0 -1
  23. package/dist/client/_nuxt/BQB6UGbx.js +0 -25
  24. package/dist/client/_nuxt/CkG7IjgS.js +0 -1
  25. package/dist/client/_nuxt/DlAUqK2U.js +0 -1
  26. package/dist/client/_nuxt/H1okkFcd.js +0 -1
  27. package/dist/client/_nuxt/RYS3n4u0.js +0 -1
  28. package/dist/client/_nuxt/V_weDLQm.js +0 -1
  29. package/dist/client/_nuxt/builds/latest.json +0 -1
  30. package/dist/client/_nuxt/builds/meta/ef21bbff-0463-480b-852c-adffad3f33b7.json +0 -1
  31. package/dist/client/_nuxt/entry.BC9BDAld.css +0 -1
  32. package/dist/client/_nuxt/error-404.smTsHvdw.css +0 -1
  33. package/dist/client/_nuxt/error-500.Bo-s0s94.css +0 -1
  34. package/dist/client/_nuxt/index.C4BggqQh.css +0 -1
  35. package/dist/client/index.html +0 -1
  36. package/dist/module.cjs +0 -5
  37. package/dist/module.d.ts +0 -136
  38. package/dist/types.d.ts +0 -1
  39. package/src/devtools/index.ts +0 -127
  40. package/src/devtools/types.ts +0 -22
  41. package/src/lib/fileExists.ts +0 -15
  42. package/src/lib/index.ts +0 -2
  43. package/src/lib/logger.ts +0 -3
  44. package/src/types.ts +0 -137
package/src/module.ts CHANGED
@@ -1,115 +1,228 @@
1
- import { join } from 'node:path'
2
- import { readFile } from 'node:fs/promises'
3
- import { existsSync } from 'node:fs'
1
+ import { existsSync } from "node:fs"
2
+ import { readFile } from "node:fs/promises"
3
+ import { join } from "node:path"
4
4
 
5
- import { defu } from 'defu'
6
5
  import {
7
- defineNuxtModule,
8
- createResolver,
9
- addTemplate,
10
- addPlugin,
11
- addImports,
12
6
  addComponent,
7
+ addImports,
8
+ addPlugin,
9
+ addTemplate,
10
+ createResolver,
11
+ defineNuxtModule,
13
12
  extendPages,
14
13
  getNuxtVersion,
15
- } from '@nuxt/kit'
14
+ useLogger,
15
+ } from "@nuxt/kit"
16
+ import type { ClientConfig } from "@prismicio/client"
17
+ import { defu } from "defu"
16
18
 
17
- import * as prismicVue from '@prismicio/vue'
18
- import { setupDevToolsUI } from './devtools'
19
+ /**
20
+ * Prismic Nuxt module options.
21
+ *
22
+ * @see {@link https://prismic.io/docs/nuxt}
23
+ * @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic}
24
+ */
25
+ export type PrismicModuleOptions = {
26
+ /**
27
+ * The Prismic repository name or full Content API endpoint to init the
28
+ * module's client instance used to fetch content from a Prismic repository
29
+ * with.
30
+ *
31
+ * @example
32
+ *
33
+ * ```typescript
34
+ * // With a repository name
35
+ * createClient("my-repo")
36
+ *
37
+ * // With a full Prismic Content API endpoint
38
+ * createClient("https://my-repo.cdn.prismic.io/api/v2")
39
+ * ```
40
+ *
41
+ * @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
42
+ */
43
+ endpoint?: string
19
44
 
20
- import { logger, fileExists } from './lib'
21
- import type { PrismicModuleOptions } from './types'
45
+ /**
46
+ * The Prismic environment in use by Slice Machine configured through
47
+ * environment variables.
48
+ *
49
+ * @defaultValue `endpoint` value.
50
+ *
51
+ * @internal
52
+ */
53
+ environment?: string
22
54
 
23
- // Options export
24
- export type { PrismicModuleOptions, PrismicModuleOptions as ModuleOptions } from './types'
55
+ /**
56
+ * Configuration options that determines how content will be queries from the
57
+ * Prismic repository.
58
+ *
59
+ * @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
60
+ */
61
+ clientConfig?: ClientConfig
25
62
 
26
- declare module '@nuxt/schema' {
27
- interface PublicRuntimeConfig {
63
+ /**
64
+ * An optional path to a file exporting a Prismic client instance used to
65
+ * fetch content from a Prismic repository to configure the module with.
66
+ *
67
+ * @remarks
68
+ * When provided, it takes precedence over the `endpoint` and `clientConfig`
69
+ * options.
70
+ *
71
+ * @see {@link https://prismic.io/docs/technical-reference/prismicio-client}
72
+ */
73
+ client?: string
74
+
75
+ /**
76
+ * Desired path of the preview page used by Prismic to enter preview session.
77
+ *
78
+ * @remarks
79
+ * `false` can be used to disable the preview page.
80
+ *
81
+ * @defaultValue `"/preview"`
82
+ */
83
+ preview?: string | false
84
+
85
+ /**
86
+ * Whether to inject Prismic toolbar script.
87
+ *
88
+ * @remarks
89
+ * The toolbar script is required for previews to work.
90
+ *
91
+ * @defaultValue `true`
92
+ */
93
+ toolbar?: boolean
94
+
95
+ /** Options used by Prismic Vue components. */
96
+ componentsConfig?: {
28
97
  /**
29
- * `@nuxtjs/prismic` module options.
98
+ * The path to a file exporting a default link resolver function used to
99
+ * resolve links.
30
100
  *
31
- * @see Module documentation: {@link https://prismic.nuxtjs.org}
32
- * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup}
101
+ * @see {@link https://prismic.io/docs/routes}
33
102
  */
103
+ linkResolver?: string
104
+
105
+ /**
106
+ * The path to a file exporting default components or shorthand definitions
107
+ * for rich text and table components.
108
+ *
109
+ * @see {@link https://prismic.io/docs/fields/rich-text}
110
+ * @see {@link https://prismic.io/docs/fields/table}
111
+ */
112
+ defaultComponents?: string
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Prismic Nuxt module options.
118
+ *
119
+ * @see {@link https://prismic.io/docs/nuxt}
120
+ * @see {@link https://prismic.io/docs/technical-reference/nuxtjs-prismic}
121
+ */
122
+ export type ModuleOptions = PrismicModuleOptions
123
+
124
+ declare module "@nuxt/schema" {
125
+ interface PublicRuntimeConfig {
126
+ /** The Prismic Nuxt module options. */
34
127
  prismic: PrismicModuleOptions
35
128
  }
36
129
  }
37
130
 
38
- // Module export
39
131
  export default defineNuxtModule<PrismicModuleOptions>({
40
132
  meta: {
41
- name: '@nuxtjs/prismic',
42
- configKey: 'prismic',
43
- compatibility: { nuxt: '>=3.7.0' },
133
+ name: "@nuxtjs/prismic",
134
+ configKey: "prismic",
135
+ compatibility: { nuxt: ">=3.7.0" },
44
136
  },
45
137
  defaults: (nuxt) => {
46
- let prismicFiles = {
47
- client: '~/app/prismic/client',
48
- linkResolver: '~/app/prismic/linkResolver',
49
- richTextSerializer: '~/app/prismic/richTextSerializer',
50
- }
138
+ const nuxt3flavor =
139
+ getNuxtVersion(nuxt).startsWith("3") &&
140
+ !nuxt.options?.future?.compatibilityVersion
51
141
 
52
- let prismicComponentsFiles = {
53
- linkRel: '~/app/prismic/linkRel',
54
- richTextComponents: '~/app/prismic/richTextComponents',
55
- sliceZoneDefaultComponent: '~/app/prismic/sliceZoneDefaultComponent',
56
- }
57
-
58
- // Nuxt 4 sets `app` as its `srcDir`, so we're just using the `prismic` folder there.
59
- if (
60
- nuxt.options?.future?.compatibilityVersion === 4
61
- || getNuxtVersion(nuxt).startsWith('4')
62
- ) {
63
- prismicFiles = {
64
- client: '~/prismic/client',
65
- linkResolver: '~/prismic/linkResolver',
66
- richTextSerializer: '~/prismic/richTextSerializer',
67
- }
68
- prismicComponentsFiles = {
69
- linkRel: '~/prismic/linkRel',
70
- richTextComponents: '~/prismic/richTextComponents',
71
- sliceZoneDefaultComponent: '~/prismic/sliceZoneDefaultComponent',
142
+ if (nuxt3flavor) {
143
+ return {
144
+ endpoint: "u",
145
+ environment: "",
146
+ clientConfig: {},
147
+ client: "~/app/prismic/client",
148
+ preview: "/preview",
149
+ toolbar: true,
150
+ componentsConfig: {
151
+ linkResolver: "~/app/prismic/linkResolver",
152
+ defaultComponents: "~/app/prismic/defaultComponents",
153
+ },
72
154
  }
73
155
  }
74
156
 
75
157
  return {
76
- endpoint: '',
77
- environment: '',
158
+ endpoint: "",
159
+ environment: "",
160
+ client: "~/prismic/client",
78
161
  clientConfig: {},
79
- ...prismicFiles,
80
- injectComponents: true,
81
- components: prismicComponentsFiles,
82
- preview: '/preview',
162
+ preview: "/preview",
83
163
  toolbar: true,
84
- devtools: true,
164
+ componentsConfig: {
165
+ linkResolver: "~/prismic/linkResolver",
166
+ defaultComponents: "~/prismic/defaultComponents",
167
+ },
85
168
  }
86
169
  },
87
- hooks: {},
88
170
  setup(options, nuxt) {
89
- // Expose options through public runtime config
90
- nuxt.options.runtimeConfig.public ||= {} as typeof nuxt.options.runtimeConfig.public
91
- const moduleOptions: PrismicModuleOptions = defu(nuxt.options.runtimeConfig.public.prismic, options)
92
- nuxt.options.runtimeConfig.public.prismic = moduleOptions
93
-
94
- // Runtime dir boilerplate
95
171
  const resolver = createResolver(import.meta.url)
96
- if (nuxt.options.devtools && options.devtools) {
97
- setupDevToolsUI(nuxt, resolver)
172
+ const logger = useLogger("nuxt:prismic")
173
+
174
+ const moduleOptions: PrismicModuleOptions = defu(
175
+ nuxt.options.runtimeConfig.public?.prismic,
176
+ options,
177
+ )
178
+
179
+ exposeRuntimeConfig()
180
+ transpileDependencies()
181
+ const ok = proxyUserFiles()
182
+ if (!ok) return
183
+ addRuntimePlugins()
184
+ addAutoImports()
185
+ addPreviewRoute()
186
+ extendESLintConfig()
187
+
188
+ function exposeRuntimeConfig() {
189
+ nuxt.options.runtimeConfig.public ||=
190
+ {} as typeof nuxt.options.runtimeConfig.public
191
+ nuxt.options.runtimeConfig.public.prismic = moduleOptions
192
+ }
193
+
194
+ function transpileDependencies() {
195
+ nuxt.options.build.transpile.push(
196
+ resolver.resolve("runtime"),
197
+ "@nuxtjs/prismic",
198
+ "@prismicio/vue",
199
+ )
200
+ nuxt.options.vite.optimizeDeps ||= {}
201
+ nuxt.options.vite.optimizeDeps.exclude ||= []
202
+ nuxt.options.vite.optimizeDeps.exclude.push("@prismicio/vue")
98
203
  }
99
204
 
100
- // Add runtime user code
101
- const proxyUserFileWithUndefinedFallback
102
- = (filename: string, path: string, deprecated?: boolean | string): boolean => {
205
+ function proxyUserFiles() {
206
+ const proxyUserFileWithUndefinedFallback = (
207
+ filename: string,
208
+ path: string,
209
+ ): boolean => {
103
210
  const resolvedFilename = `prismic/proxy/${filename}.ts`
104
- const resolvedPath = path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir)
105
- const maybeUserFile = fileExists(resolvedPath, ['js', 'mjs', 'ts', 'vue'])
211
+ const resolvedPath = path
212
+ .replace(/^(~~|@@)/, nuxt.options.rootDir)
213
+ .replace(/^(~|@)/, nuxt.options.srcDir)
214
+ const maybeUserFile = fileExists(resolvedPath, [
215
+ "js",
216
+ "mjs",
217
+ "ts",
218
+ "vue",
219
+ ])
106
220
 
107
221
  if (maybeUserFile) {
108
- // If user file exists, proxy it with vfs
109
- logger.info(`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, '~').replace(nuxt.options.rootDir, '~~').replace(/\\/g, '/')}\``)
110
- if (deprecated) {
111
- logger.warn(`\`${filename}\` is deprecated and will be removed in a future version.${typeof deprecated === 'string' ? `${deprecated}` : ''}`)
112
- }
222
+ // If user file exists, proxy it with vfs
223
+ logger.info(
224
+ `Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\``,
225
+ )
113
226
 
114
227
  addTemplate({
115
228
  filename: resolvedFilename,
@@ -117,136 +230,190 @@ export default defineNuxtModule<PrismicModuleOptions>({
117
230
  })
118
231
 
119
232
  return true
120
- }
121
- else {
122
- // Else provide `undefined` fallback
233
+ } else {
234
+ // Else provide `undefined` fallback
123
235
  addTemplate({
124
236
  filename: resolvedFilename,
125
- getContents: () => 'export default undefined',
237
+ getContents: () => "export default undefined",
126
238
  })
127
239
 
128
240
  return false
129
241
  }
130
242
  }
131
243
 
132
- const proxiedUserClient = proxyUserFileWithUndefinedFallback('client', moduleOptions.client!)
133
- if (!moduleOptions.endpoint && !proxiedUserClient && !process.env.NUXT_PUBLIC_PRISMIC_ENDPOINT) {
134
- logger.warn(`\`endpoint\` option is missing and \`${moduleOptions.client}\` was not found. At least one of them is required for the module to run. Disabling module...`)
135
- return
244
+ const proxiedUserClient = proxyUserFileWithUndefinedFallback(
245
+ "client",
246
+ moduleOptions.client!,
247
+ )
248
+ if (
249
+ !moduleOptions.endpoint &&
250
+ !proxiedUserClient &&
251
+ !process.env.NUXT_PUBLIC_PRISMIC_ENDPOINT
252
+ ) {
253
+ logger.warn(
254
+ `\`endpoint\` option is missing and \`${moduleOptions.client}\` was not found. At least one of them is required for the module to run. Disabling module...`,
255
+ )
256
+ return false
257
+ }
258
+ proxyUserFileWithUndefinedFallback(
259
+ "linkResolver",
260
+ moduleOptions.componentsConfig!.linkResolver!,
261
+ )
262
+ proxyUserFileWithUndefinedFallback(
263
+ "defaultComponents",
264
+ moduleOptions.componentsConfig!.defaultComponents!,
265
+ )
266
+
267
+ return true
268
+ }
269
+
270
+ function addRuntimePlugins() {
271
+ addPlugin(resolver.resolve("runtime/plugin"))
272
+ addPlugin(resolver.resolve("runtime/plugin.client"))
136
273
  }
137
- proxyUserFileWithUndefinedFallback('linkResolver', moduleOptions.linkResolver!)
138
- proxyUserFileWithUndefinedFallback('richTextSerializer', moduleOptions.richTextSerializer!, 'Use `components.richTextComponents` instead.')
139
-
140
- // Components
141
- proxyUserFileWithUndefinedFallback('linkRel', moduleOptions.components!.linkRel!)
142
- proxyUserFileWithUndefinedFallback('richTextComponents', moduleOptions.components!.richTextComponents!)
143
- proxyUserFileWithUndefinedFallback('sliceZoneDefaultComponent', moduleOptions.components!.sliceZoneDefaultComponent!)
144
-
145
- nuxt.options.build.transpile.push(resolver.resolve('runtime'), '@nuxtjs/prismic', '@prismicio/vue')
146
- nuxt.options.vite.optimizeDeps ||= {}
147
- nuxt.options.vite.optimizeDeps.exclude ||= []
148
- nuxt.options.vite.optimizeDeps.exclude.push('@prismicio/vue')
149
-
150
- // Add plugin
151
- addPlugin(resolver.resolve('runtime/plugin'))
152
- addPlugin(resolver.resolve('runtime/plugin.client'))
153
-
154
- // Add components auto import
155
- if (moduleOptions.injectComponents) {
156
- [
157
- 'PrismicEmbed',
158
- 'PrismicImage',
159
- 'PrismicLink',
160
- 'PrismicText',
161
- 'PrismicRichText',
162
- 'SliceZone',
163
- ].forEach((component) => {
274
+
275
+ function addAutoImports() {
276
+ // Components
277
+ ;[
278
+ "PrismicImage",
279
+ "PrismicLink",
280
+ "PrismicText",
281
+ "PrismicRichText",
282
+ "PrismicTable",
283
+ "SliceZone",
284
+ ].forEach((entry) => {
164
285
  addComponent({
165
- name: component,
166
- export: component,
167
- filePath: '@prismicio/vue',
286
+ name: entry,
287
+ export: entry,
288
+ filePath: "@prismicio/vue",
168
289
  })
169
290
  })
170
- }
171
291
 
172
- // Add auto imports
173
- const prismicVueAutoImports = Object
174
- .keys(prismicVue)
175
- .filter(key => key.startsWith('use'))
176
- .concat('getSliceComponentProps', 'defineSliceZoneComponents', 'getRichTextComponentProps')
177
- .map((key) => {
178
- return {
179
- name: key,
180
- as: key,
181
- from: '@prismicio/vue',
182
- }
292
+ // Composables and utils
293
+ addImports(
294
+ [
295
+ "usePrismic",
296
+ "getSliceComponentProps",
297
+ "defineSliceZoneComponents",
298
+ "getRichTextComponentProps",
299
+ "getTableComponentProps",
300
+ ].map((entry) => ({ name: entry, as: entry, from: "@prismicio/vue" })),
301
+ )
302
+ addImports({
303
+ name: "usePrismicPreview",
304
+ as: "usePrismicPreview",
305
+ from: resolver.resolve("runtime/usePrismicPreview"),
183
306
  })
184
- addImports(prismicVueAutoImports)
185
- addImports({
186
- name: 'usePrismicPreview',
187
- as: 'usePrismicPreview',
188
- from: resolver.resolve('runtime/usePrismicPreview'),
189
- })
190
-
191
- // Add preview route
192
- if (moduleOptions.preview) {
193
- const maybeUserPreviewPage = fileExists(join(nuxt.options.srcDir, nuxt.options.dir.pages, moduleOptions.preview), ['js', 'ts', 'vue'])
194
-
195
- if (maybeUserPreviewPage) {
196
- logger.info(`Using user-defined preview page at \`${maybeUserPreviewPage.replace(join(nuxt.options.srcDir), '~').replace(nuxt.options.rootDir, '~~').replace(/\\/g, '/')
197
- }\`, available at \`${moduleOptions.preview}\``)
198
- }
199
- else {
200
- logger.info(`Using default preview page, available at \`${moduleOptions.preview}\``)
201
-
202
- extendPages((pages) => {
203
- pages.unshift({
204
- name: 'prismic-preview',
205
- path: moduleOptions.preview as string, // Checked before
206
- file: resolver.resolve('runtime/PrismicPreview.vue'),
307
+ }
308
+
309
+ function addPreviewRoute() {
310
+ if (moduleOptions.preview) {
311
+ const maybeUserPreviewPage = fileExists(
312
+ join(
313
+ nuxt.options.srcDir,
314
+ nuxt.options.dir.pages,
315
+ moduleOptions.preview,
316
+ ),
317
+ ["js", "ts", "vue"],
318
+ )
319
+
320
+ if (maybeUserPreviewPage) {
321
+ logger.info(
322
+ `Using user-defined preview page at \`${maybeUserPreviewPage
323
+ .replace(join(nuxt.options.srcDir), "~")
324
+ .replace(nuxt.options.rootDir, "~~")
325
+ .replace(
326
+ /\\/g,
327
+ "/",
328
+ )}\`, available at \`${moduleOptions.preview}\``,
329
+ )
330
+ } else {
331
+ logger.info(
332
+ `Using default preview page, available at \`${moduleOptions.preview}\``,
333
+ )
334
+
335
+ extendPages((pages) => {
336
+ pages.unshift({
337
+ name: "prismic-preview",
338
+ path: moduleOptions.preview as string, // Checked before
339
+ file: resolver.resolve("runtime/PrismicPreview.vue"),
340
+ })
207
341
  })
208
- })
209
- }
342
+ }
210
343
 
211
- if (!moduleOptions.toolbar) {
212
- logger.warn('`toolbar` option is disabled but `preview` is enabled. Previews won\'t work unless you manually load the toolbar.')
344
+ if (!moduleOptions.toolbar) {
345
+ logger.warn(
346
+ "`toolbar` option is disabled but `preview` is enabled. Previews won't work unless you manually load the toolbar.",
347
+ )
348
+ }
213
349
  }
214
350
  }
215
351
 
216
- // Integrate with @nuxt/eslint
217
- // @ts-expect-error 3rd party hook
218
- nuxt.hook('eslint:config:addons', (addons: {
219
- name: string
220
- getConfigs: () => Promise<{ configs: string[] }>
221
- }[]) => {
222
- addons.push({
223
- name: '@nuxtjs/prismic',
224
- async getConfigs() {
225
- const configPath = resolver.resolve(nuxt.options.rootDir, 'slicemachine.config.json')
226
-
227
- const configs: string[] = []
228
-
229
- try {
230
- if (existsSync(configPath)) {
231
- const config = JSON.parse(await readFile(configPath, 'utf-8'))
232
-
233
- if (config && 'libraries' in config && Array.isArray(config.libraries)) {
234
- configs.push(JSON.stringify({
235
- files: config.libraries.map((library: string) => `${library.replace('./', '')}/**/index.vue`),
236
- rules: {
237
- 'vue/multi-word-component-names': 'off',
238
- },
239
- }))
352
+ function extendESLintConfig() {
353
+ nuxt.hook(
354
+ // @ts-expect-error 3rd party hook
355
+ "eslint:config:addons",
356
+ (
357
+ addons: {
358
+ name: string
359
+ getConfigs: () => Promise<{ configs: string[] }>
360
+ }[],
361
+ ) => {
362
+ addons.push({
363
+ name: "@nuxtjs/prismic",
364
+ async getConfigs() {
365
+ const configPath = resolver.resolve(
366
+ nuxt.options.rootDir,
367
+ "slicemachine.config.json",
368
+ )
369
+
370
+ const configs: string[] = []
371
+
372
+ try {
373
+ if (existsSync(configPath)) {
374
+ const config = JSON.parse(await readFile(configPath, "utf-8"))
375
+
376
+ if (
377
+ config &&
378
+ "libraries" in config &&
379
+ Array.isArray(config.libraries)
380
+ ) {
381
+ configs.push(
382
+ JSON.stringify({
383
+ files: config.libraries.map(
384
+ (library: string) =>
385
+ `${library.replace("./", "")}/**/index.vue`,
386
+ ),
387
+ rules: {
388
+ "vue/multi-word-component-names": "off",
389
+ },
390
+ }),
391
+ )
392
+ }
393
+ }
394
+ } catch {
395
+ // noop
240
396
  }
241
- }
242
- }
243
- catch {
244
- // noop
245
- }
246
397
 
247
- return { configs }
398
+ return { configs }
399
+ },
400
+ })
248
401
  },
249
- })
250
- })
402
+ )
403
+ }
251
404
  },
252
405
  })
406
+
407
+ function fileExists(path?: string, extensions = ["js", "ts"]): string | null {
408
+ if (!path) {
409
+ return null
410
+ } else if (existsSync(path)) {
411
+ return path
412
+ }
413
+
414
+ const extension = extensions.find((extension) =>
415
+ existsSync(`${path}.${extension}`),
416
+ )
417
+
418
+ return extension ? `${path}.${extension}` : null
419
+ }
@@ -1,27 +1,22 @@
1
+ <script setup>
2
+ import { usePrismicPreview, useSeoMeta } from "#imports"
3
+
4
+ useSeoMeta({ title: "Prismic Preview - Loading" })
5
+ usePrismicPreview()
6
+ </script>
7
+
1
8
  <template>
2
9
  <section class="prismic-preview">
3
10
  <figure>
4
11
  <img
5
12
  src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
6
13
  alt="Prismic"
7
- >
8
- <figcaption>
9
- Loading preview...
10
- </figcaption>
14
+ />
15
+ <figcaption>Loading preview...</figcaption>
11
16
  </figure>
12
17
  </section>
13
18
  </template>
14
19
 
15
- <script setup>
16
- import { useHead, usePrismicPreview } from '#imports'
17
-
18
- useHead({
19
- title: 'Prismic Preview - Loading',
20
- })
21
-
22
- usePrismicPreview()
23
- </script>
24
-
25
20
  <style scoped>
26
21
  .prismic-preview {
27
22
  width: 100%;
@@ -34,8 +29,9 @@ usePrismicPreview()
34
29
  align-items: center;
35
30
  background: #ffffff;
36
31
  color: #666666;
37
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
38
- Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
32
+ font-family:
33
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu,
34
+ Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
39
35
  font-size: 1rem;
40
36
  text-align: center;
41
37
  }