@nuxtjs/prismic 4.0.0-rc.0 → 4.0.0

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.
@@ -1 +1 @@
1
- import{m as b,c as f,n as $,o as l,p as m,a as o,q as _,s as y,u as C,w as e,d as s,t as N,v as a,x as B,y as j,z as T,b as i,A as D}from"./Cjc5ajGl.js";import{_ as I}from"./BwDnglls.js";import{_ as x}from"./DlAUqK2U.js";const O=b({__name:"NIcon",props:{icon:{}},setup(c){return(n,u)=>(l(),f("div",{class:$(["n-icon",n.icon])},null,2))}}),v=Object.assign(O,{__name:"NIcon"}),z={class:"n-tip n-tip-base"},V=b({__name:"NTip",props:{icon:{}},setup(c){return(n,u)=>{const p=v;return l(),f("div",z,[m(n.$slots,"icon",{},()=>[n.icon?(l(),_(p,{key:0,icon:n.icon,class:"n-tip-icon"},null,8,["icon"])):y("",!0)]),o("div",null,[m(n.$slots,"default")])])}}}),A=Object.assign(V,{__name:"NTip"}),M={key:0,target:"_blank",href:"http://localhost:9999"},P=b({__name:"SlicemachineStatusTip",props:{running:{type:Boolean}},setup(c){const n=c,u=C(()=>n.running?"Slicemachine has been started and available at":"Slicemachine has not been started yet");return(p,g)=>{const h=A;return l(),_(h,{n:p.running?"green":"yellow"},{default:e(()=>[s(N(a(u))+" ",1),p.running?(l(),f("a",M,"http://localhost:9999")):y("",!0)]),_:1},8,["n"])}}}),R=Object.assign(P,{__name:"SlicemachineStatusTip"}),q=b({__name:"NButton",props:{to:{},icon:{},border:{type:Boolean,default:!0},disabled:{type:Boolean},type:{default:"button"}},setup(c){return(n,u)=>{const p=v;return l(),_(j(n.to?a(I):"button"),B({to:n.to},{...n.$attrs,...!n.to&&{type:n.type},...n.disabled?{disabled:!0}:{tabindex:0}},{class:[[{"n-button-base active:n-button-active focus-visible:n-focus-base hover:n-button-hover":n.border},{"n-icon-button":!n.$slots.default}],"n-button n-transition n-disabled:n-disabled"]}),{default:e(()=>[m(n.$slots,"icon",{},()=>[n.icon?(l(),_(p,{key:0,icon:n.icon,class:$({"n-button-icon":n.$slots.default})},null,8,["icon","class"])):y("",!0)]),m(n.$slots,"default")]),_:3},16,["to","class"])}}}),E=Object.assign(q,{__name:"NButton"}),F={},L={class:"n-card n-card-base"};function G(c,n){return l(),f("div",L,[m(c.$slots,"default")])}const H=Object.assign(x(F,[["render",G]]),{__name:"NCard"}),J={class:"relative p-4 n-bg-base space-y-4"},K={class:"grid grid-cols-2 grid-auto-flow gap-4"},Q={class:"flex gap-2"},U={class:"flex gap-2 flex-wrap"},W={class:"flex gap-2 flex-wrap"},X={class:"flex gap-2 flex-wrap"},Y=b({__name:"index",props:{rpc:{}},async setup(c){let n,u;const p=c,{status:g,start:h,stop:S,config:d}=([n,u]=T(()=>D(p.rpc)),n=await n,u(),n);return(Z,t)=>{const w=R,r=E,k=H;return l(),f("div",J,[t[16]||(t[16]=o("header",null,[o("h1",{class:"inline-block rounded border border-zinc-600 bg-zinc-900 p-1.5 heading text-m"},[o("span",{class:"i-simple-icons:prismic align-sub"}),s(" @nuxtjs/prismic ")])],-1)),o("main",K,[i(k,{class:"col-span-2 p-4 space-y-4"},{default:e(()=>[t[1]||(t[1]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:tools-alt align-sub"}),s(" Slicemachine ")],-1)),o("section",Q,[i(w,{running:a(g).running,class:"flex-1"},null,8,["running"]),i(r,{onClick:t[0]||(t[0]=tt=>a(g).running?a(S)():a(h)())},{default:e(()=>[s(N(a(g).running?"Stop":"Start")+" Slicemachine ",1)]),_:1})])]),_:1}),i(k,{class:"p-4 space-y-4"},{default:e(()=>[t[9]||(t[9]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:notebook-reference align-sub"}),s(" Documentation ")],-1)),t[10]||(t[10]=o("h3",null,"Nuxt",-1)),o("p",U,[i(r,{to:"https://prismic.io/docs/content-modeling",icon:"i-carbon-ruler-alt",target:"_blank"},{default:e(()=>t[2]||(t[2]=[s(" Model Content ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-define-routes",icon:"i-carbon-3d-curve-manual",target:"_blank"},{default:e(()=>t[3]||(t[3]=[s(" Define Routes ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-fetch-data",icon:"i-carbon-download",target:"_blank"},{default:e(()=>t[4]||(t[4]=[s(" Fetch Data ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-template-content",icon:"i-carbon-paint-brush",target:"_blank"},{default:e(()=>t[5]||(t[5]=[s(" Template Content ")])),_:1})]),t[11]||(t[11]=o("h3",null,"APIs",-1)),o("p",W,[i(r,{to:"https://prismic.io/docs/technical-reference/prismicio-client",icon:"i-carbon-satellite-radar",target:"_blank"},{default:e(()=>t[6]||(t[6]=[s(" @prismicio/client ")])),_:1}),i(r,{to:"https://prismic.io/docs/technical-reference/prismicio-vue",icon:"i-carbon-logo-vue",target:"_blank"},{default:e(()=>t[7]||(t[7]=[s(" @prismicio/vue ")])),_:1}),i(r,{to:"https://prismic.nuxtjs.org/",icon:"i-simple-icons-nuxtdotjs",target:"_blank"},{default:e(()=>t[8]||(t[8]=[s(" @nuxtjs/prismic ")])),_:1})])]),_:1}),a(d)&&"repositoryName"in a(d)&&a(d).repositoryName?(l(),_(k,{key:0,class:"p-4 space-y-4"},{default:e(()=>[t[15]||(t[15]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:tools-alt align-sub"}),s(" Repository ")],-1)),o("p",X,[i(r,{to:`https://${a(d).repositoryName}.prismic.io/builder/working`,icon:"i-carbon-book",target:"_blank"},{default:e(()=>t[12]||(t[12]=[s(" Documents ")])),_:1},8,["to"]),i(r,{to:`https://${a(d).repositoryName}.prismic.io/builder/medias`,icon:"i-carbon-image",target:"_blank"},{default:e(()=>t[13]||(t[13]=[s(" Media Library ")])),_:1},8,["to"]),i(r,{to:`https://${a(d).repositoryName}.prismic.io/settings/repository`,icon:"i-carbon-settings",target:"_blank"},{default:e(()=>t[14]||(t[14]=[s(" Settings ")])),_:1},8,["to"])])]),_:1})):y("",!0)])])}}}),et=x(Y,[["__scopeId","data-v-469b968a"]]);export{et as default};
1
+ import{m as b,c as f,n as $,o as l,p as m,a as o,q as _,s as y,u as C,w as e,d as s,t as N,v as a,x as B,y as j,z as T,b as i,A as D}from"./BQB6UGbx.js";import{_ as I}from"./BMD6bpEv.js";import{_ as x}from"./DlAUqK2U.js";const O=b({__name:"NIcon",props:{icon:{}},setup(c){return(n,u)=>(l(),f("div",{class:$(["n-icon",n.icon])},null,2))}}),v=Object.assign(O,{__name:"NIcon"}),z={class:"n-tip n-tip-base"},V=b({__name:"NTip",props:{icon:{}},setup(c){return(n,u)=>{const p=v;return l(),f("div",z,[m(n.$slots,"icon",{},()=>[n.icon?(l(),_(p,{key:0,icon:n.icon,class:"n-tip-icon"},null,8,["icon"])):y("",!0)]),o("div",null,[m(n.$slots,"default")])])}}}),A=Object.assign(V,{__name:"NTip"}),M={key:0,target:"_blank",href:"http://localhost:9999"},P=b({__name:"SlicemachineStatusTip",props:{running:{type:Boolean}},setup(c){const n=c,u=C(()=>n.running?"Slicemachine has been started and available at":"Slicemachine has not been started yet");return(p,g)=>{const h=A;return l(),_(h,{n:p.running?"green":"yellow"},{default:e(()=>[s(N(a(u))+" ",1),p.running?(l(),f("a",M,"http://localhost:9999")):y("",!0)]),_:1},8,["n"])}}}),R=Object.assign(P,{__name:"SlicemachineStatusTip"}),q=b({__name:"NButton",props:{to:{},icon:{},border:{type:Boolean,default:!0},disabled:{type:Boolean},type:{default:"button"}},setup(c){return(n,u)=>{const p=v;return l(),_(j(n.to?a(I):"button"),B({to:n.to},{...n.$attrs,...!n.to&&{type:n.type},...n.disabled?{disabled:!0}:{tabindex:0}},{class:[[{"n-button-base active:n-button-active focus-visible:n-focus-base hover:n-button-hover":n.border},{"n-icon-button":!n.$slots.default}],"n-button n-transition n-disabled:n-disabled"]}),{default:e(()=>[m(n.$slots,"icon",{},()=>[n.icon?(l(),_(p,{key:0,icon:n.icon,class:$({"n-button-icon":n.$slots.default})},null,8,["icon","class"])):y("",!0)]),m(n.$slots,"default")]),_:3},16,["to","class"])}}}),E=Object.assign(q,{__name:"NButton"}),F={},L={class:"n-card n-card-base"};function G(c,n){return l(),f("div",L,[m(c.$slots,"default")])}const H=Object.assign(x(F,[["render",G]]),{__name:"NCard"}),J={class:"relative p-4 n-bg-base space-y-4"},K={class:"grid grid-cols-2 grid-auto-flow gap-4"},Q={class:"flex gap-2"},U={class:"flex gap-2 flex-wrap"},W={class:"flex gap-2 flex-wrap"},X={class:"flex gap-2 flex-wrap"},Y=b({__name:"index",props:{rpc:{}},async setup(c){let n,u;const p=c,{status:g,start:h,stop:S,config:d}=([n,u]=T(()=>D(p.rpc)),n=await n,u(),n);return(Z,t)=>{const w=R,r=E,k=H;return l(),f("div",J,[t[16]||(t[16]=o("header",null,[o("h1",{class:"inline-block rounded border border-zinc-600 bg-zinc-900 p-1.5 heading text-m"},[o("span",{class:"i-simple-icons:prismic align-sub"}),s(" @nuxtjs/prismic ")])],-1)),o("main",K,[i(k,{class:"col-span-2 p-4 space-y-4"},{default:e(()=>[t[1]||(t[1]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:tools-alt align-sub"}),s(" Slicemachine ")],-1)),o("section",Q,[i(w,{running:a(g).running,class:"flex-1"},null,8,["running"]),i(r,{onClick:t[0]||(t[0]=tt=>a(g).running?a(S)():a(h)())},{default:e(()=>[s(N(a(g).running?"Stop":"Start")+" Slicemachine ",1)]),_:1})])]),_:1}),i(k,{class:"p-4 space-y-4"},{default:e(()=>[t[9]||(t[9]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:notebook-reference align-sub"}),s(" Documentation ")],-1)),t[10]||(t[10]=o("h3",null,"Nuxt",-1)),o("p",U,[i(r,{to:"https://prismic.io/docs/content-modeling",icon:"i-carbon-ruler-alt",target:"_blank"},{default:e(()=>t[2]||(t[2]=[s(" Model Content ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-define-routes",icon:"i-carbon-3d-curve-manual",target:"_blank"},{default:e(()=>t[3]||(t[3]=[s(" Define Routes ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-fetch-data",icon:"i-carbon-download",target:"_blank"},{default:e(()=>t[4]||(t[4]=[s(" Fetch Data ")])),_:1}),i(r,{to:"https://prismic.io/docs/nuxt-3-template-content",icon:"i-carbon-paint-brush",target:"_blank"},{default:e(()=>t[5]||(t[5]=[s(" Template Content ")])),_:1})]),t[11]||(t[11]=o("h3",null,"APIs",-1)),o("p",W,[i(r,{to:"https://prismic.io/docs/technical-reference/prismicio-client",icon:"i-carbon-satellite-radar",target:"_blank"},{default:e(()=>t[6]||(t[6]=[s(" @prismicio/client ")])),_:1}),i(r,{to:"https://prismic.io/docs/technical-reference/prismicio-vue",icon:"i-carbon-logo-vue",target:"_blank"},{default:e(()=>t[7]||(t[7]=[s(" @prismicio/vue ")])),_:1}),i(r,{to:"https://prismic.nuxtjs.org/",icon:"i-simple-icons-nuxtdotjs",target:"_blank"},{default:e(()=>t[8]||(t[8]=[s(" @nuxtjs/prismic ")])),_:1})])]),_:1}),a(d)&&"repositoryName"in a(d)&&a(d).repositoryName?(l(),_(k,{key:0,class:"p-4 space-y-4"},{default:e(()=>[t[15]||(t[15]=o("h2",{class:"text-m heading"},[o("span",{class:"i-carbon:tools-alt align-sub"}),s(" Repository ")],-1)),o("p",X,[i(r,{to:`https://${a(d).repositoryName}.prismic.io/builder/working`,icon:"i-carbon-book",target:"_blank"},{default:e(()=>t[12]||(t[12]=[s(" Documents ")])),_:1},8,["to"]),i(r,{to:`https://${a(d).repositoryName}.prismic.io/builder/medias`,icon:"i-carbon-image",target:"_blank"},{default:e(()=>t[13]||(t[13]=[s(" Media Library ")])),_:1},8,["to"]),i(r,{to:`https://${a(d).repositoryName}.prismic.io/settings/repository`,icon:"i-carbon-settings",target:"_blank"},{default:e(()=>t[14]||(t[14]=[s(" Settings ")])),_:1},8,["to"])])]),_:1})):y("",!0)])])}}}),et=x(Y,[["__scopeId","data-v-469b968a"]]);export{et as default};
@@ -1 +1 @@
1
- import{_ as a}from"./BwDnglls.js";import{_ as i}from"./DlAUqK2U.js";import{u}from"./DxMA0H2w.js";import{o as c,c as l,a as e,t as r,b as d,w as p,d as f}from"./Cjc5ajGl.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return u({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=a;return c(),l("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[d(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:p(()=>[f(r(t.backHome),1)]),_:1})])])])}}},N=i(y,[["__scopeId","data-v-d2910dba"]]);export{N as default};
1
+ import{_ as a}from"./BMD6bpEv.js";import{_ as i}from"./DlAUqK2U.js";import{u}from"./CkG7IjgS.js";import{o as c,c as l,a as e,t as r,b as d,w as p,d as f}from"./BQB6UGbx.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return u({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=a;return c(),l("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[d(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:p(()=>[f(r(t.backHome),1)]),_:1})])])])}}},N=i(y,[["__scopeId","data-v-3ed4f09e"]]);export{N as default};
@@ -1 +1 @@
1
- {"id":"f20f9d9d-3734-4545-aeaf-d50ec9b93ae0","timestamp":1736176619941}
1
+ {"id":"ef21bbff-0463-480b-852c-adffad3f33b7","timestamp":1737402150546}
@@ -0,0 +1 @@
1
+ {"id":"ef21bbff-0463-480b-852c-adffad3f33b7","timestamp":1737402150546,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-3ed4f09e]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-3ed4f09e]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-3ed4f09e]{background-color:#ffffff4d}.gradient-border[data-v-3ed4f09e]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-3ed4f09e]{background-color:#1414144d}.gradient-border[data-v-3ed4f09e]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-3ed4f09e]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-3ed4f09e]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-3ed4f09e]{position:fixed}.left-0[data-v-3ed4f09e]{left:0}.right-0[data-v-3ed4f09e]{right:0}.z-10[data-v-3ed4f09e]{z-index:10}.z-20[data-v-3ed4f09e]{z-index:20}.grid[data-v-3ed4f09e]{display:grid}.mb-16[data-v-3ed4f09e]{margin-bottom:4rem}.mb-8[data-v-3ed4f09e]{margin-bottom:2rem}.max-w-520px[data-v-3ed4f09e]{max-width:520px}.min-h-screen[data-v-3ed4f09e]{min-height:100vh}.w-full[data-v-3ed4f09e]{width:100%}.flex[data-v-3ed4f09e]{display:flex}.cursor-pointer[data-v-3ed4f09e]{cursor:pointer}.place-content-center[data-v-3ed4f09e]{place-content:center}.items-center[data-v-3ed4f09e]{align-items:center}.justify-center[data-v-3ed4f09e]{justify-content:center}.overflow-hidden[data-v-3ed4f09e]{overflow:hidden}.bg-white[data-v-3ed4f09e]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-3ed4f09e]{padding-left:1rem;padding-right:1rem}.px-8[data-v-3ed4f09e]{padding-left:2rem;padding-right:2rem}.py-2[data-v-3ed4f09e]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-3ed4f09e]{text-align:center}.text-8xl[data-v-3ed4f09e]{font-size:6rem;line-height:1}.text-xl[data-v-3ed4f09e]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-3ed4f09e]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-3ed4f09e]{font-weight:300}.font-medium[data-v-3ed4f09e]{font-weight:500}.leading-tight[data-v-3ed4f09e]{line-height:1.25}.font-sans[data-v-3ed4f09e]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-3ed4f09e]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-3ed4f09e]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-3ed4f09e]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-3ed4f09e]{padding-left:0;padding-right:0}.sm\:px-6[data-v-3ed4f09e]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-3ed4f09e]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-3ed4f09e]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-3ed4f09e]{font-size:1.25rem;line-height:1.75rem}}
@@ -0,0 +1 @@
1
+ .spotlight[data-v-23c92f8d]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-23c92f8d]{position:fixed}.-bottom-1\/2[data-v-23c92f8d]{bottom:-50%}.left-0[data-v-23c92f8d]{left:0}.right-0[data-v-23c92f8d]{right:0}.grid[data-v-23c92f8d]{display:grid}.mb-16[data-v-23c92f8d]{margin-bottom:4rem}.mb-8[data-v-23c92f8d]{margin-bottom:2rem}.h-1\/2[data-v-23c92f8d]{height:50%}.max-w-520px[data-v-23c92f8d]{max-width:520px}.min-h-screen[data-v-23c92f8d]{min-height:100vh}.place-content-center[data-v-23c92f8d]{place-content:center}.overflow-hidden[data-v-23c92f8d]{overflow:hidden}.bg-white[data-v-23c92f8d]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-23c92f8d]{padding-left:2rem;padding-right:2rem}.text-center[data-v-23c92f8d]{text-align:center}.text-8xl[data-v-23c92f8d]{font-size:6rem;line-height:1}.text-xl[data-v-23c92f8d]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-23c92f8d]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-23c92f8d]{font-weight:300}.font-medium[data-v-23c92f8d]{font-weight:500}.leading-tight[data-v-23c92f8d]{line-height:1.25}.font-sans[data-v-23c92f8d]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-23c92f8d]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-23c92f8d]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-23c92f8d]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-23c92f8d]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-23c92f8d]{font-size:2.25rem;line-height:2.5rem}}
@@ -1 +1 @@
1
- <!DOCTYPE html><html data-capo=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__prismic-client/_nuxt/entry.BC9BDAld.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__prismic-client/_nuxt/Cjc5ajGl.js"><link rel="prefetch" as="style" crossorigin href="/__prismic-client/_nuxt/error-404.qJ5VHzRy.css"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/u6mwQ-HO.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/BwDnglls.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/DlAUqK2U.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/DxMA0H2w.js"><link rel="prefetch" as="style" crossorigin href="/__prismic-client/_nuxt/error-500.DcsVtvy-.css"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/DvaDQa27.js"><script type="module" src="/__prismic-client/_nuxt/Cjc5ajGl.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1736176623534,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__prismic-client",buildId:"f20f9d9d-3734-4545-aeaf-d50ec9b93ae0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html data-capo=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__prismic-client/_nuxt/entry.BC9BDAld.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__prismic-client/_nuxt/BQB6UGbx.js"><link rel="prefetch" as="style" crossorigin href="/__prismic-client/_nuxt/error-404.smTsHvdw.css"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/V_weDLQm.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/BMD6bpEv.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/DlAUqK2U.js"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/CkG7IjgS.js"><link rel="prefetch" as="style" crossorigin href="/__prismic-client/_nuxt/error-500.Bo-s0s94.css"><link rel="prefetch" as="script" crossorigin href="/__prismic-client/_nuxt/H1okkFcd.js"><script type="module" src="/__prismic-client/_nuxt/BQB6UGbx.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1737402154203,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__prismic-client",buildId:"ef21bbff-0463-480b-852c-adffad3f33b7",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
package/dist/module.d.mts CHANGED
@@ -7,7 +7,7 @@ import { PrismicPluginOptions } from '@prismicio/vue';
7
7
  * @see Module documentation: {@link https://prismic.nuxtjs.org}
8
8
  * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup}
9
9
  */
10
- type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'htmlSerializer' | 'richTextSerializer'> & {
10
+ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'richTextSerializer' | 'components'> & {
11
11
  /**
12
12
  * A Prismic repository endpoint to init the module's `@prismicio/client`
13
13
  * instance used to fetch content from a Prismic repository with.
@@ -59,6 +59,8 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
59
59
  * An optional path to a file exporting an HTML serializer to customize
60
60
  * the way rich text fields are rendered.
61
61
  *
62
+ * @deprecated Use `components.richTextComponents` instead.
63
+ *
62
64
  * @see HTML serializer documentation {@link https://prismic.io/docs/rich-text}
63
65
  */
64
66
  richTextSerializer?: string;
@@ -73,7 +75,7 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
73
75
  */
74
76
  preview?: string | false;
75
77
  /**
76
- * Whether or not to inject Prismic toolbar script.
78
+ * Whether to inject Prismic toolbar script.
77
79
  *
78
80
  * @remarks
79
81
  * The toolbar script is required for previews to work.
@@ -82,11 +84,40 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
82
84
  */
83
85
  toolbar?: boolean;
84
86
  /**
85
- * Whether or not to enable the devtools UI.
87
+ * Whether to enable Prismic Nuxt DevTools integration.
86
88
  *
87
89
  * @defaultValue `true`
88
90
  */
89
91
  devtools?: boolean;
92
+ /**
93
+ * Options used by Prismic Vue components.
94
+ */
95
+ components?: Omit<Required<PrismicPluginOptions>['components'], 'richTextComponents' | 'linkRel' | 'sliceZoneDefaultComponent' | 'linkInternalComponent' | 'linkExternalComponent'> & {
96
+ /**
97
+ * An optional path to a file exporting the `rel` attribute to apply on links.
98
+ * It can export a function to use the link's metadata to determine the `rel` value.
99
+ *
100
+ * @defaultValue `"noreferrer"` for external links.
101
+ */
102
+ linkRel?: string;
103
+ /**
104
+ * An optional path to a file exporting a map of Rich Text block types to Vue Components.
105
+ * It is used to render Rich Text or title fields.
106
+ *
107
+ * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
108
+ */
109
+ richTextComponents?: string;
110
+ /**
111
+ * An optional path to a file exporting a component or a functional component rendered
112
+ * if a component mapping from the `components` prop cannot be found.
113
+ *
114
+ * @remarks
115
+ * Components will be rendered using the {@link SliceComponentProps} interface.
116
+ *
117
+ * @defaultValue `null` when `process.env.NODE_ENV === "production"` else {@link TODOSliceComponent}
118
+ */
119
+ sliceZoneDefaultComponent?: string;
120
+ };
90
121
  };
91
122
 
92
123
  declare module '@nuxt/schema' {
package/dist/module.d.ts CHANGED
@@ -7,7 +7,7 @@ import { PrismicPluginOptions } from '@prismicio/vue';
7
7
  * @see Module documentation: {@link https://prismic.nuxtjs.org}
8
8
  * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup}
9
9
  */
10
- type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'htmlSerializer' | 'richTextSerializer'> & {
10
+ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'richTextSerializer' | 'components'> & {
11
11
  /**
12
12
  * A Prismic repository endpoint to init the module's `@prismicio/client`
13
13
  * instance used to fetch content from a Prismic repository with.
@@ -59,6 +59,8 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
59
59
  * An optional path to a file exporting an HTML serializer to customize
60
60
  * the way rich text fields are rendered.
61
61
  *
62
+ * @deprecated Use `components.richTextComponents` instead.
63
+ *
62
64
  * @see HTML serializer documentation {@link https://prismic.io/docs/rich-text}
63
65
  */
64
66
  richTextSerializer?: string;
@@ -73,7 +75,7 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
73
75
  */
74
76
  preview?: string | false;
75
77
  /**
76
- * Whether or not to inject Prismic toolbar script.
78
+ * Whether to inject Prismic toolbar script.
77
79
  *
78
80
  * @remarks
79
81
  * The toolbar script is required for previews to work.
@@ -82,11 +84,40 @@ type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | '
82
84
  */
83
85
  toolbar?: boolean;
84
86
  /**
85
- * Whether or not to enable the devtools UI.
87
+ * Whether to enable Prismic Nuxt DevTools integration.
86
88
  *
87
89
  * @defaultValue `true`
88
90
  */
89
91
  devtools?: boolean;
92
+ /**
93
+ * Options used by Prismic Vue components.
94
+ */
95
+ components?: Omit<Required<PrismicPluginOptions>['components'], 'richTextComponents' | 'linkRel' | 'sliceZoneDefaultComponent' | 'linkInternalComponent' | 'linkExternalComponent'> & {
96
+ /**
97
+ * An optional path to a file exporting the `rel` attribute to apply on links.
98
+ * It can export a function to use the link's metadata to determine the `rel` value.
99
+ *
100
+ * @defaultValue `"noreferrer"` for external links.
101
+ */
102
+ linkRel?: string;
103
+ /**
104
+ * An optional path to a file exporting a map of Rich Text block types to Vue Components.
105
+ * It is used to render Rich Text or title fields.
106
+ *
107
+ * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
108
+ */
109
+ richTextComponents?: string;
110
+ /**
111
+ * An optional path to a file exporting a component or a functional component rendered
112
+ * if a component mapping from the `components` prop cannot be found.
113
+ *
114
+ * @remarks
115
+ * Components will be rendered using the {@link SliceComponentProps} interface.
116
+ *
117
+ * @defaultValue `null` when `process.env.NODE_ENV === "production"` else {@link TODOSliceComponent}
118
+ */
119
+ sliceZoneDefaultComponent?: string;
120
+ };
90
121
  };
91
122
 
92
123
  declare module '@nuxt/schema' {
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.7.0"
6
6
  },
7
- "version": "4.0.0-rc.0",
7
+ "version": "4.0.0",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"
package/dist/module.mjs CHANGED
@@ -135,12 +135,22 @@ const module = defineNuxtModule({
135
135
  linkResolver: "~/app/prismic/linkResolver",
136
136
  richTextSerializer: "~/app/prismic/richTextSerializer"
137
137
  };
138
+ let prismicComponentsFiles = {
139
+ linkRel: "~/app/prismic/linkRel",
140
+ richTextComponents: "~/app/prismic/richTextComponents",
141
+ sliceZoneDefaultComponent: "~/app/prismic/sliceZoneDefaultComponent"
142
+ };
138
143
  if (nuxt.options?.future?.compatibilityVersion === 4 || getNuxtVersion(nuxt).startsWith("4")) {
139
144
  prismicFiles = {
140
145
  client: "~/prismic/client",
141
146
  linkResolver: "~/prismic/linkResolver",
142
147
  richTextSerializer: "~/prismic/richTextSerializer"
143
148
  };
149
+ prismicComponentsFiles = {
150
+ linkRel: "~/prismic/linkRel",
151
+ richTextComponents: "~/prismic/richTextComponents",
152
+ sliceZoneDefaultComponent: "~/prismic/sliceZoneDefaultComponent"
153
+ };
144
154
  }
145
155
  return {
146
156
  endpoint: "",
@@ -148,7 +158,7 @@ const module = defineNuxtModule({
148
158
  clientConfig: {},
149
159
  ...prismicFiles,
150
160
  injectComponents: true,
151
- components: {},
161
+ components: prismicComponentsFiles,
152
162
  preview: "/preview",
153
163
  toolbar: true,
154
164
  devtools: true
@@ -163,12 +173,15 @@ const module = defineNuxtModule({
163
173
  if (nuxt.options.devtools && options.devtools) {
164
174
  setupDevToolsUI(nuxt, resolver);
165
175
  }
166
- const proxyUserFileWithUndefinedFallback = (filename, path, extensions = ["js", "mjs", "ts"]) => {
176
+ const proxyUserFileWithUndefinedFallback = (filename, path, deprecated) => {
167
177
  const resolvedFilename = `prismic/proxy/${filename}.ts`;
168
178
  const resolvedPath = path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir);
169
- const maybeUserFile = fileExists(resolvedPath, extensions);
179
+ const maybeUserFile = fileExists(resolvedPath, ["js", "mjs", "ts", "vue"]);
170
180
  if (maybeUserFile) {
171
181
  logger.info(`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\``);
182
+ if (deprecated) {
183
+ logger.warn(`\`${filename}\` is deprecated and will be removed in a future version.${typeof deprecated === "string" ? `${deprecated}` : ""}`);
184
+ }
172
185
  addTemplate({
173
186
  filename: resolvedFilename,
174
187
  getContents: () => `export { default } from '${path}'`
@@ -188,7 +201,10 @@ const module = defineNuxtModule({
188
201
  return;
189
202
  }
190
203
  proxyUserFileWithUndefinedFallback("linkResolver", moduleOptions.linkResolver);
191
- proxyUserFileWithUndefinedFallback("richTextSerializer", moduleOptions.richTextSerializer);
204
+ proxyUserFileWithUndefinedFallback("richTextSerializer", moduleOptions.richTextSerializer, "Use `components.richTextComponents` instead.");
205
+ proxyUserFileWithUndefinedFallback("linkRel", moduleOptions.components.linkRel);
206
+ proxyUserFileWithUndefinedFallback("richTextComponents", moduleOptions.components.richTextComponents);
207
+ proxyUserFileWithUndefinedFallback("sliceZoneDefaultComponent", moduleOptions.components.sliceZoneDefaultComponent);
192
208
  nuxt.options.build.transpile.push(resolver.resolve("runtime"), "@nuxtjs/prismic", "@prismicio/vue");
193
209
  nuxt.options.vite.optimizeDeps ||= {};
194
210
  nuxt.options.vite.optimizeDeps.exclude ||= [];
@@ -6,6 +6,9 @@ import { useCookie, useRequestEvent, onNuxtReady, refreshNuxtData, useHead, useR
6
6
  import _client from "#build/prismic/proxy/client";
7
7
  import linkResolver from "#build/prismic/proxy/linkResolver";
8
8
  import richTextSerializer from "#build/prismic/proxy/richTextSerializer";
9
+ import linkRel from "#build/prismic/proxy/linkRel";
10
+ import richTextComponents from "#build/prismic/proxy/richTextComponents";
11
+ import sliceZoneDefaultComponent from "#build/prismic/proxy/sliceZoneDefaultComponent";
9
12
  export default defineNuxtPlugin({
10
13
  name: "prismic:setup",
11
14
  parallel: true,
@@ -38,7 +41,10 @@ export default defineNuxtPlugin({
38
41
  components: {
39
42
  linkInternalComponent: NuxtLink,
40
43
  linkExternalComponent: NuxtLink,
41
- ...options.components
44
+ ...options.components,
45
+ linkRel,
46
+ richTextComponents,
47
+ sliceZoneDefaultComponent
42
48
  }
43
49
  });
44
50
  nuxtApp.vueApp.use(prismicPlugin);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxtjs/prismic",
3
- "version": "4.0.0-rc.0",
3
+ "version": "4.0.0",
4
4
  "description": "Easily connect your Nuxt application to your content hosted on Prismic",
5
5
  "keywords": [
6
6
  "nuxt",
@@ -40,7 +40,7 @@
40
40
  "dev:build": "nuxt build playground",
41
41
  "dev:preview": "nuxt preview playground",
42
42
  "dev:generate": "nuxt generate playground",
43
- "prepare": "nuxt prepare playground && npm run build",
43
+ "prepare": "nuxt prepare playground",
44
44
  "release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
45
45
  "release:dry": "standard-version --dry-run",
46
46
  "release:rc": "npm run test && standard-version --release-as major --prerelease rc && git push --follow-tags && npm run build && npm publish --tag rc",
@@ -53,31 +53,31 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@nuxt/devtools-kit": "^1.7.0",
56
- "@nuxt/kit": "^3.15.0",
57
- "@prismicio/client": "^7.13.1",
58
- "@prismicio/vue": "^5.0.0-alpha",
59
- "birpc": "0.2.19",
56
+ "@nuxt/kit": "^3.15.2",
57
+ "@prismicio/client": "^7.15.1",
58
+ "@prismicio/vue": "^5.0.0",
59
+ "birpc": "2.0.19",
60
60
  "defu": "^6.1.4",
61
- "pathe": "^1.1.2",
61
+ "pathe": "^2.0.2",
62
62
  "sirv": "^3.0.0",
63
63
  "terminate": "^2.8.0"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@iconify-json/carbon": "^1.2.5",
67
67
  "@iconify-json/logos": "^1.2.4",
68
- "@iconify-json/simple-icons": "^1.2.18",
68
+ "@iconify-json/simple-icons": "^1.2.21",
69
69
  "@nuxt/devtools-ui-kit": "^1.7.0",
70
- "@nuxt/eslint-config": "^0.7.4",
70
+ "@nuxt/eslint-config": "^0.7.5",
71
71
  "@nuxt/module-builder": "^0.8.4",
72
- "@nuxt/schema": "^3.15.0",
73
- "@unocss/preset-icons": "^0.65.3",
74
- "@vitest/coverage-v8": "^2.1.8",
75
- "eslint": "^9.17.0",
76
- "memfs": "^4.15.3",
77
- "nuxt": "^3.15.0",
72
+ "@nuxt/schema": "^3.15.2",
73
+ "@unocss/preset-icons": "^65.4.2",
74
+ "@vitest/coverage-v8": "^3.0.2",
75
+ "eslint": "^9.18.0",
76
+ "memfs": "^4.17.0",
77
+ "nuxt": "^3.15.2",
78
78
  "standard-version": "^9.5.0",
79
- "typescript": "^5.7.2",
80
- "vitest": "^2.1.8"
79
+ "typescript": "^5.7.3",
80
+ "vitest": "^3.0.2"
81
81
  },
82
82
  "engines": {
83
83
  "node": ">=16.10.0"
package/src/module.ts CHANGED
@@ -49,6 +49,12 @@ export default defineNuxtModule<PrismicModuleOptions>({
49
49
  richTextSerializer: '~/app/prismic/richTextSerializer',
50
50
  }
51
51
 
52
+ let prismicComponentsFiles = {
53
+ linkRel: '~/app/prismic/linkRel',
54
+ richTextComponents: '~/app/prismic/richTextComponents',
55
+ sliceZoneDefaultComponent: '~/app/prismic/sliceZoneDefaultComponent',
56
+ }
57
+
52
58
  // Nuxt 4 sets `app` as its `srcDir`, so we're just using the `prismic` folder there.
53
59
  if (
54
60
  nuxt.options?.future?.compatibilityVersion === 4
@@ -59,6 +65,11 @@ export default defineNuxtModule<PrismicModuleOptions>({
59
65
  linkResolver: '~/prismic/linkResolver',
60
66
  richTextSerializer: '~/prismic/richTextSerializer',
61
67
  }
68
+ prismicComponentsFiles = {
69
+ linkRel: '~/prismic/linkRel',
70
+ richTextComponents: '~/prismic/richTextComponents',
71
+ sliceZoneDefaultComponent: '~/prismic/sliceZoneDefaultComponent',
72
+ }
62
73
  }
63
74
 
64
75
  return {
@@ -67,7 +78,7 @@ export default defineNuxtModule<PrismicModuleOptions>({
67
78
  clientConfig: {},
68
79
  ...prismicFiles,
69
80
  injectComponents: true,
70
- components: {},
81
+ components: prismicComponentsFiles,
71
82
  preview: '/preview',
72
83
  toolbar: true,
73
84
  devtools: true,
@@ -88,14 +99,17 @@ export default defineNuxtModule<PrismicModuleOptions>({
88
99
 
89
100
  // Add runtime user code
90
101
  const proxyUserFileWithUndefinedFallback
91
- = (filename: string, path: string, extensions = ['js', 'mjs', 'ts']): boolean => {
102
+ = (filename: string, path: string, deprecated?: boolean | string): boolean => {
92
103
  const resolvedFilename = `prismic/proxy/${filename}.ts`
93
104
  const resolvedPath = path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir)
94
- const maybeUserFile = fileExists(resolvedPath, extensions)
105
+ const maybeUserFile = fileExists(resolvedPath, ['js', 'mjs', 'ts', 'vue'])
95
106
 
96
107
  if (maybeUserFile) {
97
108
  // If user file exists, proxy it with vfs
98
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
+ }
99
113
 
100
114
  addTemplate({
101
115
  filename: resolvedFilename,
@@ -121,7 +135,12 @@ export default defineNuxtModule<PrismicModuleOptions>({
121
135
  return
122
136
  }
123
137
  proxyUserFileWithUndefinedFallback('linkResolver', moduleOptions.linkResolver!)
124
- proxyUserFileWithUndefinedFallback('richTextSerializer', moduleOptions.richTextSerializer!)
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!)
125
144
 
126
145
  nuxt.options.build.transpile.push(resolver.resolve('runtime'), '@nuxtjs/prismic', '@prismicio/vue')
127
146
  nuxt.options.vite.optimizeDeps ||= {}
@@ -12,6 +12,12 @@ import _client from '#build/prismic/proxy/client'
12
12
  import linkResolver from '#build/prismic/proxy/linkResolver'
13
13
  // @ts-expect-error vfs cannot be resolved here
14
14
  import richTextSerializer from '#build/prismic/proxy/richTextSerializer'
15
+ // @ts-expect-error vfs cannot be resolved here
16
+ import linkRel from '#build/prismic/proxy/linkRel'
17
+ // @ts-expect-error vfs cannot be resolved here
18
+ import richTextComponents from '#build/prismic/proxy/richTextComponents'
19
+ // @ts-expect-error vfs cannot be resolved here
20
+ import sliceZoneDefaultComponent from '#build/prismic/proxy/sliceZoneDefaultComponent'
15
21
 
16
22
  export default defineNuxtPlugin({
17
23
  name: 'prismic:setup',
@@ -51,6 +57,9 @@ export default defineNuxtPlugin({
51
57
  linkInternalComponent: NuxtLink,
52
58
  linkExternalComponent: NuxtLink,
53
59
  ...options.components,
60
+ linkRel,
61
+ richTextComponents,
62
+ sliceZoneDefaultComponent,
54
63
  },
55
64
  })
56
65
 
package/src/types.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { PrismicPluginOptions } from '@prismicio/vue'
1
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
+ import type { PrismicPluginOptions, SliceComponentProps, TODOSliceComponent } from '@prismicio/vue'
2
3
 
3
4
  /**
4
5
  * `@nuxtjs/prismic` module options.
@@ -6,7 +7,10 @@ import type { PrismicPluginOptions } from '@prismicio/vue'
6
7
  * @see Module documentation: {@link https://prismic.nuxtjs.org}
7
8
  * @see Prismic documentation: {@link https://prismic.io/docs/nuxt-3-setup}
8
9
  */
9
- export type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'htmlSerializer' | 'richTextSerializer'> & {
10
+ export type PrismicModuleOptions = Omit<
11
+ PrismicPluginOptions,
12
+ 'endpoint' | 'client' | 'linkResolver' | 'richTextSerializer' | 'components'
13
+ > & {
10
14
  /**
11
15
  * A Prismic repository endpoint to init the module's `@prismicio/client`
12
16
  * instance used to fetch content from a Prismic repository with.
@@ -62,6 +66,8 @@ export type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'clie
62
66
  * An optional path to a file exporting an HTML serializer to customize
63
67
  * the way rich text fields are rendered.
64
68
  *
69
+ * @deprecated Use `components.richTextComponents` instead.
70
+ *
65
71
  * @see HTML serializer documentation {@link https://prismic.io/docs/rich-text}
66
72
  */
67
73
  richTextSerializer?: string
@@ -78,7 +84,7 @@ export type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'clie
78
84
  preview?: string | false
79
85
 
80
86
  /**
81
- * Whether or not to inject Prismic toolbar script.
87
+ * Whether to inject Prismic toolbar script.
82
88
  *
83
89
  * @remarks
84
90
  * The toolbar script is required for previews to work.
@@ -88,9 +94,44 @@ export type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'clie
88
94
  toolbar?: boolean
89
95
 
90
96
  /**
91
- * Whether or not to enable the devtools UI.
97
+ * Whether to enable Prismic Nuxt DevTools integration.
92
98
  *
93
99
  * @defaultValue `true`
94
100
  */
95
101
  devtools?: boolean
102
+
103
+ /**
104
+ * Options used by Prismic Vue components.
105
+ */
106
+ components?: Omit<
107
+ Required<PrismicPluginOptions>['components'],
108
+ 'richTextComponents' | 'linkRel' | 'sliceZoneDefaultComponent' | 'linkInternalComponent' | 'linkExternalComponent'
109
+ > & {
110
+ /**
111
+ * An optional path to a file exporting the `rel` attribute to apply on links.
112
+ * It can export a function to use the link's metadata to determine the `rel` value.
113
+ *
114
+ * @defaultValue `"noreferrer"` for external links.
115
+ */
116
+ linkRel?: string
117
+
118
+ /**
119
+ * An optional path to a file exporting a map of Rich Text block types to Vue Components.
120
+ * It is used to render Rich Text or title fields.
121
+ *
122
+ * @see Templating Rich Text and title fields from Prismic {@link https://prismic.io/docs/rich-text}
123
+ */
124
+ richTextComponents?: string
125
+
126
+ /**
127
+ * An optional path to a file exporting a component or a functional component rendered
128
+ * if a component mapping from the `components` prop cannot be found.
129
+ *
130
+ * @remarks
131
+ * Components will be rendered using the {@link SliceComponentProps} interface.
132
+ *
133
+ * @defaultValue `null` when `process.env.NODE_ENV === "production"` else {@link TODOSliceComponent}
134
+ */
135
+ sliceZoneDefaultComponent?: string
136
+ }
96
137
  }