2025-03-11 13:57:38 +08:00
import { defineComponent , ref , h , resolveComponent , computed , mergeProps , withCtx , createTextVNode , toDisplayString , useSSRContext } from 'vue' ;
2025-02-20 19:30:25 +08:00
import { u as useRouter , a as useNuxtApp , p as parseQuery , h as hasProtocol , r as resolveRouteObject , j as joinURL , b as useRuntimeConfig , n as navigateTo , w as withTrailingSlash , c as withoutTrailingSlash , d as nuxtLinkDefaults } from './server.mjs' ;
import { ssrRenderAttrs , ssrInterpolate , ssrRenderComponent } from 'vue/server-renderer' ;
2025-03-11 13:57:38 +08:00
import { _ as _export _sfc } from './_plugin-vue_export-helper.mjs' ;
import { u as useHead } from './v3.mjs' ;
import '../_/nitro.mjs' ;
2025-02-20 19:30:25 +08:00
import 'node:http' ;
import 'node:https' ;
2025-03-11 13:57:38 +08:00
import 'node:events' ;
2025-02-20 19:30:25 +08:00
import 'node:buffer' ;
import 'node:fs' ;
2025-03-11 13:57:38 +08:00
import 'node:url' ;
2025-02-20 19:30:25 +08:00
import 'node:path' ;
2025-03-11 13:57:38 +08:00
import 'node:crypto' ;
import 'vue-router' ;
2025-02-20 19:30:25 +08:00
import '../routes/renderer.mjs' ;
import 'vue-bundle-renderer/runtime' ;
2025-03-11 13:57:38 +08:00
import 'unhead/server' ;
import 'unhead/utils' ;
2025-02-20 19:30:25 +08:00
import 'devalue' ;
2025-03-11 13:57:38 +08:00
import 'unhead/plugins' ;
2025-02-20 19:30:25 +08:00
const firstNonUndefined = ( ... args ) => args . find ( ( arg ) => arg !== void 0 ) ;
// @__NO_SIDE_EFFECTS__
function defineNuxtLink ( options ) {
const componentName = options . componentName || "NuxtLink" ;
function isHashLinkWithoutHashMode ( link ) {
return typeof link === "string" && link . startsWith ( "#" ) ;
}
function resolveTrailingSlashBehavior ( to , resolve ) {
if ( ! to || options . trailingSlash !== "append" && options . trailingSlash !== "remove" ) {
return to ;
}
if ( typeof to === "string" ) {
return applyTrailingSlashBehavior ( to , options . trailingSlash ) ;
}
const path = "path" in to && to . path !== void 0 ? to . path : resolve ( to ) . path ;
const resolvedPath = {
... to ,
name : void 0 ,
// named routes would otherwise always override trailing slash behavior
path : applyTrailingSlashBehavior ( path , options . trailingSlash )
} ;
return resolvedPath ;
}
function useNuxtLink ( props ) {
const router = useRouter ( ) ;
const config = useRuntimeConfig ( ) ;
const hasTarget = computed ( ( ) => ! ! props . target && props . target !== "_self" ) ;
const isAbsoluteUrl = computed ( ( ) => {
const path = props . to || props . href || "" ;
return typeof path === "string" && hasProtocol ( path , { acceptRelative : true } ) ;
} ) ;
const builtinRouterLink = resolveComponent ( "RouterLink" ) ;
const useBuiltinLink = builtinRouterLink && typeof builtinRouterLink !== "string" ? builtinRouterLink . useLink : void 0 ;
const isExternal = computed ( ( ) => {
if ( props . external ) {
return true ;
}
const path = props . to || props . href || "" ;
if ( typeof path === "object" ) {
return false ;
}
return path === "" || isAbsoluteUrl . value ;
} ) ;
const to = computed ( ( ) => {
const path = props . to || props . href || "" ;
if ( isExternal . value ) {
return path ;
}
return resolveTrailingSlashBehavior ( path , router . resolve ) ;
} ) ;
const link = isExternal . value ? void 0 : useBuiltinLink == null ? void 0 : useBuiltinLink ( { ... props , to } ) ;
const href = computed ( ( ) => {
2025-03-11 13:57:38 +08:00
var _a ;
2025-02-20 19:30:25 +08:00
if ( ! to . value || isAbsoluteUrl . value || isHashLinkWithoutHashMode ( to . value ) ) {
return to . value ;
}
if ( isExternal . value ) {
const path = typeof to . value === "object" && "path" in to . value ? resolveRouteObject ( to . value ) : to . value ;
const href2 = typeof path === "object" ? router . resolve ( path ) . href : path ;
return resolveTrailingSlashBehavior (
href2 ,
router . resolve
/* will not be called */
) ;
}
if ( typeof to . value === "object" ) {
2025-03-11 13:57:38 +08:00
return ( ( _a = router . resolve ( to . value ) ) == null ? void 0 : _a . href ) ? ? null ;
2025-02-20 19:30:25 +08:00
}
return resolveTrailingSlashBehavior (
joinURL ( config . app . baseURL , to . value ) ,
router . resolve
/* will not be called */
) ;
} ) ;
return {
to ,
hasTarget ,
isAbsoluteUrl ,
isExternal ,
//
href ,
2025-03-11 13:57:38 +08:00
isActive : ( link == null ? void 0 : link . isActive ) ? ? computed ( ( ) => to . value === router . currentRoute . value . path ) ,
isExactActive : ( link == null ? void 0 : link . isExactActive ) ? ? computed ( ( ) => to . value === router . currentRoute . value . path ) ,
route : ( link == null ? void 0 : link . route ) ? ? computed ( ( ) => router . resolve ( to . value ) ) ,
async navigate ( _e ) {
2025-02-20 19:30:25 +08:00
await navigateTo ( href . value , { replace : props . replace , external : isExternal . value || hasTarget . value } ) ;
}
} ;
}
return defineComponent ( {
name : componentName ,
props : {
// Routing
to : {
type : [ String , Object ] ,
default : void 0 ,
required : false
} ,
href : {
type : [ String , Object ] ,
default : void 0 ,
required : false
} ,
// Attributes
target : {
type : String ,
default : void 0 ,
required : false
} ,
rel : {
type : String ,
default : void 0 ,
required : false
} ,
noRel : {
type : Boolean ,
default : void 0 ,
required : false
} ,
// Prefetching
prefetch : {
type : Boolean ,
default : void 0 ,
required : false
} ,
prefetchOn : {
type : [ String , Object ] ,
default : void 0 ,
required : false
} ,
noPrefetch : {
type : Boolean ,
default : void 0 ,
required : false
} ,
// Styling
activeClass : {
type : String ,
default : void 0 ,
required : false
} ,
exactActiveClass : {
type : String ,
default : void 0 ,
required : false
} ,
prefetchedClass : {
type : String ,
default : void 0 ,
required : false
} ,
// Vue Router's `<RouterLink>` additional props
replace : {
type : Boolean ,
default : void 0 ,
required : false
} ,
ariaCurrentValue : {
type : String ,
default : void 0 ,
required : false
} ,
// Edge cases handling
external : {
type : Boolean ,
default : void 0 ,
required : false
} ,
// Slot API
custom : {
type : Boolean ,
default : void 0 ,
required : false
}
} ,
useLink : useNuxtLink ,
setup ( props , { slots } ) {
useRouter ( ) ;
const { to , href , navigate , isExternal , hasTarget , isAbsoluteUrl } = useNuxtLink ( props ) ;
ref ( false ) ;
const el = void 0 ;
const elRef = void 0 ;
async function prefetch ( nuxtApp = useNuxtApp ( ) ) {
{
return ;
}
}
return ( ) => {
var _a ;
if ( ! isExternal . value && ! hasTarget . value && ! isHashLinkWithoutHashMode ( to . value ) ) {
const routerLinkProps = {
ref : elRef ,
to : to . value ,
activeClass : props . activeClass || options . activeClass ,
exactActiveClass : props . exactActiveClass || options . exactActiveClass ,
replace : props . replace ,
ariaCurrentValue : props . ariaCurrentValue ,
custom : props . custom
} ;
if ( ! props . custom ) {
routerLinkProps . rel = props . rel || void 0 ;
}
return h (
resolveComponent ( "RouterLink" ) ,
routerLinkProps ,
slots . default
) ;
}
const target = props . target || null ;
const rel = firstNonUndefined (
// converts `""` to `null` to prevent the attribute from being added as empty (`rel=""`)
props . noRel ? "" : props . rel ,
options . externalRelAttribute ,
/ *
* A fallback rel of ` noopener noreferrer ` is applied for external links or links that open in a new tab .
* This solves a reverse tabnapping security flaw in browsers pre - 2021 as well as improving privacy .
* /
isAbsoluteUrl . value || hasTarget . value ? "noopener noreferrer" : ""
) || null ;
if ( props . custom ) {
if ( ! slots . default ) {
return null ;
}
return slots . default ( {
href : href . value ,
navigate ,
prefetch ,
get route ( ) {
if ( ! href . value ) {
return void 0 ;
}
const url = new URL ( href . value , "http://localhost" ) ;
return {
path : url . pathname ,
fullPath : url . pathname ,
get query ( ) {
return parseQuery ( url . search ) ;
} ,
hash : url . hash ,
params : { } ,
name : void 0 ,
matched : [ ] ,
redirectedFrom : void 0 ,
meta : { } ,
href : href . value
} ;
} ,
rel ,
target ,
isExternal : isExternal . value || hasTarget . value ,
isActive : false ,
isExactActive : false
} ) ;
}
return h ( "a" , { ref : el , href : href . value || null , rel , target } , ( _a = slots . default ) == null ? void 0 : _a . call ( slots ) ) ;
} ;
}
2025-03-11 13:57:38 +08:00
// }) as unknown as DefineComponent<NuxtLinkProps, object, object, ComputedOptions, MethodOptions, object, object, EmitsOptions, string, object, NuxtLinkProps, object, SlotsType<NuxtLinkSlots>>
2025-02-20 19:30:25 +08:00
} ) ;
}
const _ _nuxt _component _0 = /* @__PURE__ */ defineNuxtLink ( nuxtLinkDefaults ) ;
function applyTrailingSlashBehavior ( to , trailingSlash ) {
const normalizeFn = trailingSlash === "append" ? withTrailingSlash : withoutTrailingSlash ;
const hasProtocolDifferentFromHttp = hasProtocol ( to ) && ! to . startsWith ( "http" ) ;
if ( hasProtocolDifferentFromHttp ) {
return to ;
}
return normalizeFn ( to , true ) ;
}
2025-03-11 13:57:38 +08:00
2025-02-20 19:30:25 +08:00
const _sfc _main = {
_ _name : "error-404" ,
_ _ssrInlineRender : true ,
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 ( _ _props ) {
const props = _ _props ;
useHead ( {
title : ` ${ props . statusCode } - ${ props . statusMessage } | ${ props . 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: } `
}
]
} ) ;
return ( _ctx , _push , _parent , _attrs ) => {
const _component _NuxtLink = _ _nuxt _component _0 ;
2025-03-11 13:57:38 +08:00
_push ( ` <div ${ ssrRenderAttrs ( mergeProps ( { class : "antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black" } , _attrs))} data-v-075d74b5><div class="fixed left-0 right-0 spotlight z-10" data-v-075d74b5></div><div class="max-w-520px text-center z-20" data-v-075d74b5><h1 class="font-medium mb-8 sm:text-10xl text-8xl" data-v-075d74b5> ${ ssrInterpolate ( _ _props . statusCode ) } </h1><p class="font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl" data-v-075d74b5> ${ ssrInterpolate ( _ _props . description ) } </p><div class="flex items-center justify-center w-full" data-v-075d74b5> ` ) ;
2025-02-20 19:30:25 +08:00
_push ( ssrRenderComponent ( _component _NuxtLink , {
to : "/" ,
class : "cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"
} , {
default : withCtx ( ( _ , _push2 , _parent2 , _scopeId ) => {
if ( _push2 ) {
_push2 ( ` ${ ssrInterpolate ( _ _props . backHome ) } ` ) ;
} else {
return [
createTextVNode ( toDisplayString ( _ _props . backHome ) , 1 )
] ;
}
} ) ,
_ : 1
} , _parent ) ) ;
_push ( ` </div></div></div> ` ) ;
} ;
}
} ;
const _sfc _setup = _sfc _main . setup ;
_sfc _main . setup = ( props , ctx ) => {
const ssrContext = useSSRContext ( ) ;
2025-03-11 13:57:38 +08:00
( ssrContext . modules || ( ssrContext . modules = /* @__PURE__ */ new Set ( ) ) ) . add ( "node_modules/.store/nuxt@3.16.0/node_modules/nuxt/dist/app/components/error-404.vue" ) ;
2025-02-20 19:30:25 +08:00
return _sfc _setup ? _sfc _setup ( props , ctx ) : void 0 ;
} ;
2025-03-11 13:57:38 +08:00
const error404 = /* @__PURE__ */ _export _sfc ( _sfc _main , [ [ "__scopeId" , "data-v-075d74b5" ] ] ) ;
2025-02-20 19:30:25 +08:00
export { error404 as default } ;
2025-03-11 13:57:38 +08:00
//# sourceMappingURL=error-404.vue.mjs.map