3 Commits

Author SHA1 Message Date
98b9670661 Merge pull request 'production' (#6) from production into develop
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #6
2025-06-15 15:22:25 +00:00
1353b0e65a Merge pull request 'feat books pages' (#5) from production into develop
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #5
2025-06-14 14:16:07 +00:00
2e3de70f56 Merge pull request 'production' (#4) from production into develop
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #4
2025-06-14 08:20:01 +00:00
108 changed files with 1725 additions and 17586 deletions

Binary file not shown.

View File

@ -22,8 +22,8 @@ jobs:
- name: Upload config files to server - name: Upload config files to server
env: env:
GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main" GITEA_API: 'https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main'
GITEA_TOKEN: "0406afe7de6547e850dd62c84976c6def23a5193" GITEA_TOKEN: '0406afe7de6547e850dd62c84976c6def23a5193'
run: | run: |
for file in docker-compose.yml Dockerfile; do for file in docker-compose.yml Dockerfile; do
echo "Uploading $file" echo "Uploading $file"

1
.gitignore vendored
View File

@ -11,7 +11,6 @@ node_modules
dist dist
dist-ssr dist-ssr
*.local *.local
.nuxt
# Editor directories and files # Editor directories and files
.vscode/* .vscode/*

2
.husky/pre-commit Normal file
View File

@ -0,0 +1,2 @@
npm run lint
npm run format

View File

@ -1,212 +0,0 @@
import { _replaceAppConfig } from '#app/config'
import { defuFn } from 'defu'
const inlineConfig = {
"nuxt": {},
"icon": {
"provider": "server",
"class": "",
"aliases": {},
"iconifyApiEndpoint": "https://api.iconify.design",
"localApiEndpoint": "/api/_nuxt_icon",
"fallbackToApi": true,
"cssSelectorPrefix": "i-",
"cssWherePseudo": true,
"mode": "css",
"attrs": {
"aria-hidden": true
},
"collections": [
"academicons",
"akar-icons",
"ant-design",
"arcticons",
"basil",
"bi",
"bitcoin-icons",
"bpmn",
"brandico",
"bx",
"bxl",
"bxs",
"bytesize",
"carbon",
"catppuccin",
"cbi",
"charm",
"ci",
"cib",
"cif",
"cil",
"circle-flags",
"circum",
"clarity",
"codicon",
"covid",
"cryptocurrency",
"cryptocurrency-color",
"dashicons",
"devicon",
"devicon-plain",
"ei",
"el",
"emojione",
"emojione-monotone",
"emojione-v1",
"entypo",
"entypo-social",
"eos-icons",
"ep",
"et",
"eva",
"f7",
"fa",
"fa-brands",
"fa-regular",
"fa-solid",
"fa6-brands",
"fa6-regular",
"fa6-solid",
"fad",
"fe",
"feather",
"file-icons",
"flag",
"flagpack",
"flat-color-icons",
"flat-ui",
"flowbite",
"fluent",
"fluent-emoji",
"fluent-emoji-flat",
"fluent-emoji-high-contrast",
"fluent-mdl2",
"fontelico",
"fontisto",
"formkit",
"foundation",
"fxemoji",
"gala",
"game-icons",
"geo",
"gg",
"gis",
"gravity-ui",
"gridicons",
"grommet-icons",
"guidance",
"healthicons",
"heroicons",
"heroicons-outline",
"heroicons-solid",
"hugeicons",
"humbleicons",
"ic",
"icomoon-free",
"icon-park",
"icon-park-outline",
"icon-park-solid",
"icon-park-twotone",
"iconamoon",
"iconoir",
"icons8",
"il",
"ion",
"iwwa",
"jam",
"la",
"lets-icons",
"line-md",
"logos",
"ls",
"lucide",
"lucide-lab",
"mage",
"majesticons",
"maki",
"map",
"marketeq",
"material-symbols",
"material-symbols-light",
"mdi",
"mdi-light",
"medical-icon",
"memory",
"meteocons",
"mi",
"mingcute",
"mono-icons",
"mynaui",
"nimbus",
"nonicons",
"noto",
"noto-v1",
"octicon",
"oi",
"ooui",
"openmoji",
"oui",
"pajamas",
"pepicons",
"pepicons-pencil",
"pepicons-pop",
"pepicons-print",
"ph",
"pixelarticons",
"prime",
"ps",
"quill",
"radix-icons",
"raphael",
"ri",
"rivet-icons",
"si-glyph",
"simple-icons",
"simple-line-icons",
"skill-icons",
"solar",
"streamline",
"streamline-emojis",
"subway",
"svg-spinners",
"system-uicons",
"tabler",
"tdesign",
"teenyicons",
"token",
"token-branded",
"topcoat",
"twemoji",
"typcn",
"uil",
"uim",
"uis",
"uit",
"uiw",
"unjs",
"vaadin",
"vs",
"vscode-icons",
"websymbol",
"weui",
"whh",
"wi",
"wpf",
"zmdi",
"zondicons"
],
"fetchTimeout": 1500
}
}
// Vite - webpack is handled directly in #app/config
if (import.meta.hot) {
import.meta.hot.accept((newModule) => {
_replaceAppConfig(newModule.default)
})
}
export default /*@__PURE__*/ defuFn(inlineConfig)

142
.nuxt/components.d.ts vendored
View File

@ -1,142 +0,0 @@
import type { DefineComponent, SlotsType } from 'vue'
type IslandComponent<T extends DefineComponent> = T & DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>>
type HydrationStrategies = {
hydrateOnVisible?: IntersectionObserverInit | true
hydrateOnIdle?: number | true
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
hydrateOnMediaQuery?: string
hydrateAfter?: number
hydrateWhen?: boolean
hydrateNever?: true
}
type LazyComponent<T> = (T & DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }>)
interface _GlobalComponents {
'TypographyUiHeading': typeof import("../components/Typography/UiHeading.vue")['default']
'TypographyUiParagraph': typeof import("../components/Typography/UiParagraph.vue")['default']
'UiButtonParams': typeof import("../components/UiButton/UiButton.params")['default']
'UiButton': typeof import("../components/UiButton/UiButton.vue")['default']
'UiNav': typeof import("../components/UiNav/UiNav.vue")['default']
'NuxtWelcome': typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']
'NuxtLayout': typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
'NuxtErrorBoundary': typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
'ClientOnly': typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']
'DevOnly': typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']
'ServerPlaceholder': typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']
'NuxtLink': typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']
'NuxtLoadingIndicator': typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
'NuxtTime': typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
'NuxtRouteAnnouncer': typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
'NuxtImg': typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']
'NuxtPicture': typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']
'Icon': typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']
'NuxtPage': typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']
'NoScript': typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']
'Link': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']
'Base': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']
'Title': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']
'Meta': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']
'Style': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']
'Head': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']
'Html': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']
'Body': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']
'NuxtIsland': typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']
'NuxtRouteAnnouncer': IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
'LazyTypographyUiHeading': LazyComponent<typeof import("../components/Typography/UiHeading.vue")['default']>
'LazyTypographyUiParagraph': LazyComponent<typeof import("../components/Typography/UiParagraph.vue")['default']>
'LazyUiButtonParams': LazyComponent<typeof import("../components/UiButton/UiButton.params")['default']>
'LazyUiButton': LazyComponent<typeof import("../components/UiButton/UiButton.vue")['default']>
'LazyUiNav': LazyComponent<typeof import("../components/UiNav/UiNav.vue")['default']>
'LazyNuxtWelcome': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
'LazyNuxtLayout': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
'LazyNuxtErrorBoundary': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
'LazyClientOnly': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']>
'LazyDevOnly': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']>
'LazyServerPlaceholder': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
'LazyNuxtLink': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
'LazyNuxtLoadingIndicator': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
'LazyNuxtTime': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
'LazyNuxtRouteAnnouncer': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
'LazyNuxtImg': LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']>
'LazyNuxtPicture': LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']>
'LazyIcon': LazyComponent<typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']>
'LazyNuxtPage': LazyComponent<typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']>
'LazyNoScript': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
'LazyLink': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']>
'LazyBase': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']>
'LazyTitle': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']>
'LazyMeta': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']>
'LazyStyle': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']>
'LazyHead': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']>
'LazyHtml': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']>
'LazyBody': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']>
'LazyNuxtIsland': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
'LazyNuxtRouteAnnouncer': LazyComponent<IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>>
}
declare module 'vue' {
export interface GlobalComponents extends _GlobalComponents { }
}
export const TypographyUiHeading: typeof import("../components/Typography/UiHeading.vue")['default']
export const TypographyUiParagraph: typeof import("../components/Typography/UiParagraph.vue")['default']
export const UiButtonParams: typeof import("../components/UiButton/UiButton.params")['default']
export const UiButton: typeof import("../components/UiButton/UiButton.vue")['default']
export const UiNav: typeof import("../components/UiNav/UiNav.vue")['default']
export const NuxtWelcome: typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']
export const NuxtLayout: typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
export const NuxtErrorBoundary: typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
export const ClientOnly: typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']
export const DevOnly: typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']
export const ServerPlaceholder: typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']
export const NuxtLink: typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']
export const NuxtLoadingIndicator: typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
export const NuxtTime: typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
export const NuxtRouteAnnouncer: typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
export const NuxtImg: typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']
export const NuxtPicture: typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']
export const Icon: typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']
export const NuxtPage: typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']
export const NoScript: typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']
export const Link: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']
export const Base: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']
export const Title: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']
export const Meta: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']
export const Style: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']
export const Head: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']
export const Html: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']
export const Body: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']
export const NuxtIsland: typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']
export const NuxtRouteAnnouncer: IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
export const LazyTypographyUiHeading: LazyComponent<typeof import("../components/Typography/UiHeading.vue")['default']>
export const LazyTypographyUiParagraph: LazyComponent<typeof import("../components/Typography/UiParagraph.vue")['default']>
export const LazyUiButtonParams: LazyComponent<typeof import("../components/UiButton/UiButton.params")['default']>
export const LazyUiButton: LazyComponent<typeof import("../components/UiButton/UiButton.vue")['default']>
export const LazyUiNav: LazyComponent<typeof import("../components/UiNav/UiNav.vue")['default']>
export const LazyNuxtWelcome: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
export const LazyNuxtLayout: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
export const LazyNuxtErrorBoundary: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
export const LazyClientOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']>
export const LazyDevOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']>
export const LazyServerPlaceholder: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
export const LazyNuxtLink: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
export const LazyNuxtLoadingIndicator: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
export const LazyNuxtTime: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
export const LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
export const LazyNuxtImg: LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']>
export const LazyNuxtPicture: LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']>
export const LazyIcon: LazyComponent<typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']>
export const LazyNuxtPage: LazyComponent<typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']>
export const LazyNoScript: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
export const LazyLink: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']>
export const LazyBase: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']>
export const LazyTitle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']>
export const LazyMeta: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']>
export const LazyStyle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']>
export const LazyHead: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']>
export const LazyHtml: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']>
export const LazyBody: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']>
export const LazyNuxtIsland: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
export const LazyNuxtRouteAnnouncer: LazyComponent<IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>>
export const componentNames: string[]

View File

@ -1,9 +0,0 @@
import type { FlatConfigComposer } from "../node_modules/eslint-flat-config-utils/dist/index.mjs"
import { defineFlatConfigs } from "../node_modules/@nuxt/eslint-config/dist/flat.mjs"
import type { NuxtESLintConfigOptionsResolved } from "../node_modules/@nuxt/eslint-config/dist/flat.mjs"
declare const configs: FlatConfigComposer
declare const options: NuxtESLintConfigOptionsResolved
declare const withNuxt: typeof defineFlatConfigs
export default withNuxt
export { withNuxt, defineFlatConfigs, configs, options }

File diff suppressed because one or more lines are too long

33
.nuxt/imports.d.ts vendored
View File

@ -1,33 +0,0 @@
export { useScriptTriggerConsent, useScriptEventPage, useScriptTriggerElement, useScript, useScriptGoogleAnalytics, useScriptPlausibleAnalytics, useScriptCrisp, useScriptClarity, useScriptCloudflareWebAnalytics, useScriptFathomAnalytics, useScriptMatomoAnalytics, useScriptGoogleTagManager, useScriptGoogleAdsense, useScriptSegment, useScriptMetaPixel, useScriptXPixel, useScriptIntercom, useScriptHotjar, useScriptStripe, useScriptLemonSqueezy, useScriptVimeoPlayer, useScriptYouTubePlayer, useScriptGoogleMaps, useScriptNpm, useScriptUmamiAnalytics, useScriptSnapchatPixel, useScriptRybbitAnalytics } from '#app/composables/script-stubs';
export { isVue2, isVue3 } from 'vue-demi';
export { defineNuxtLink } from '#app/components/nuxt-link';
export { useNuxtApp, tryUseNuxtApp, defineNuxtPlugin, definePayloadPlugin, useRuntimeConfig, defineAppConfig } from '#app/nuxt';
export { useAppConfig, updateAppConfig } from '#app/config';
export { defineNuxtComponent } from '#app/composables/component';
export { useAsyncData, useLazyAsyncData, useNuxtData, refreshNuxtData, clearNuxtData } from '#app/composables/asyncData';
export { useHydration } from '#app/composables/hydrate';
export { callOnce } from '#app/composables/once';
export { useState, clearNuxtState } from '#app/composables/state';
export { clearError, createError, isNuxtError, showError, useError } from '#app/composables/error';
export { useFetch, useLazyFetch } from '#app/composables/fetch';
export { useCookie, refreshCookie } from '#app/composables/cookie';
export { onPrehydrate, prerenderRoutes, useRequestHeader, useRequestHeaders, useResponseHeader, useRequestEvent, useRequestFetch, setResponseStatus } from '#app/composables/ssr';
export { onNuxtReady } from '#app/composables/ready';
export { preloadComponents, prefetchComponents, preloadRouteComponents } from '#app/composables/preload';
export { abortNavigation, addRouteMiddleware, defineNuxtRouteMiddleware, setPageLayout, navigateTo, useRoute, useRouter } from '#app/composables/router';
export { isPrerendered, loadPayload, preloadPayload, definePayloadReducer, definePayloadReviver } from '#app/composables/payload';
export { useLoadingIndicator } from '#app/composables/loading-indicator';
export { getAppManifest, getRouteRules } from '#app/composables/manifest';
export { reloadNuxtApp } from '#app/composables/chunk';
export { useRequestURL } from '#app/composables/url';
export { usePreviewMode } from '#app/composables/preview';
export { useRouteAnnouncer } from '#app/composables/route-announcer';
export { useRuntimeHook } from '#app/composables/runtime-hook';
export { useHead, useHeadSafe, useServerHeadSafe, useServerHead, useSeoMeta, useServerSeoMeta, injectHead } from '#app/composables/head';
export { onBeforeRouteLeave, onBeforeRouteUpdate, useLink } from 'vue-router';
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, mergeModels, toValue, useModel, useAttrs, useCssModule, useCssVars, useSlots, useTransitionState, useId, useTemplateRef, useShadowRoot, Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue';
export { requestIdleCallback, cancelIdleCallback } from '#app/compat/idle-callback';
export { setInterval } from '#app/compat/interval';
export { useImage } from '../node_modules/@nuxt/image/dist/runtime/composables';
export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/@pinia/nuxt/dist/runtime/composables';
export { definePageMeta } from '../node_modules/nuxt/dist/pages/runtime/composables';

View File

@ -1 +0,0 @@
export function init() {}

View File

@ -1,13 +0,0 @@
function createRemoteCollection(fetchEndpoint) {
let _cache
return async () => {
if (_cache)
return _cache
const res = await fetch(fetchEndpoint).then(r => r.json())
_cache = res
return res
}
}
export const collections = {
}

28
.nuxt/nuxt.d.ts vendored
View File

@ -1,28 +0,0 @@
/// <reference types="@nuxt/eslint" />
/// <reference types="@nuxt/icon" />
/// <reference types="@nuxt/image" />
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxt/devtools" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxt/telemetry" />
/// <reference path="types/builder-env.d.ts" />
/// <reference types="nuxt" />
/// <reference path="types/app-defaults.d.ts" />
/// <reference path="types/plugins.d.ts" />
/// <reference path="types/build.d.ts" />
/// <reference path="types/schema.d.ts" />
/// <reference path="types/app.config.d.ts" />
/// <reference types="@pinia/nuxt" />
/// <reference types="vue-router" />
/// <reference path="types/middleware.d.ts" />
/// <reference path="types/nitro-middleware.d.ts" />
/// <reference path="types/layouts.d.ts" />
/// <reference path="components.d.ts" />
/// <reference path="imports.d.ts" />
/// <reference path="types/imports.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
/// <reference path="types/nitro.d.ts" />
/// <reference path="./eslint-typegen.d.ts" />
export {}

View File

@ -1,9 +0,0 @@
{
"_hash": "Jy8xlnyM_ez4SXb8mXRnzjMzW4U1Bea8kDWN3ScyVNQ",
"project": {
"rootDir": "/Users/dkoziavin/code/sub-projects/e-book"
},
"versions": {
"nuxt": "3.17.5"
}
}

View File

@ -1,210 +0,0 @@
export interface NuxtCustomSchema {
appConfig?: {
/**
* Nuxt Icon
*
* Configure Nuxt Icon module preferences.
*
*
* @studioIcon material-symbols:star
*/
icon?: {
/**
* Icon Size
*
* Set the default icon size.
*
*
* @studioIcon material-symbols:format-size-rounded
*/
size?: string | undefined,
/**
* CSS Class
*
* Set the default CSS class.
*
* @default ""
*
* @studioIcon material-symbols:css
*/
class?: string,
/**
* Default Attributes
*
* Attributes applied to every icon component.
*
* @default { "aria-hidden": true }
*
*
* @studioIcon material-symbols:settings
*/
attrs?: Record<string, string | number | boolean>,
/**
* Default Rendering Mode
*
* Set the default rendering mode for the icon component
*
* @default "css"
*
* @enum css,svg
*
* @studioIcon material-symbols:move-down-rounded
*/
mode?: string,
/**
* Icon aliases
*
* Define Icon aliases to update them easily without code changes.
*
*
* @studioIcon material-symbols:star-rounded
*/
aliases?: { [alias: string]: string },
/**
* CSS Selector Prefix
*
* Set the default CSS selector prefix.
*
* @default "i-"
*
* @studioIcon material-symbols:format-textdirection-l-to-r
*/
cssSelectorPrefix?: string,
/**
* CSS Layer Name
*
* Set the default CSS `@layer` name.
*
*
* @studioIcon material-symbols:layers
*/
cssLayer?: string | undefined,
/**
* Use CSS `:where()` Pseudo Selector
*
* Use CSS `:where()` pseudo selector to reduce specificity.
*
* @default true
*
* @studioIcon material-symbols:low-priority
*/
cssWherePseudo?: boolean,
/**
* Icon Collections
*
* List of known icon collections name. Used to resolve collection name ambiguity.
* e.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github`
*
* When not provided, will use the full Iconify collection list.
*
*
* @studioIcon material-symbols:format-list-bulleted
*/
collections?: string[] | null,
/**
* Custom Icon Collections
*
*
* @studioIcon material-symbols:format-list-bulleted
*/
customCollections?: string[] | null,
/**
* Icon Provider
*
* Provider to use for fetching icons
*
* - `server` - Fetch icons with a server handler
* - `iconify` - Fetch icons with Iconify API, purely client-side
* - `none` - Do not fetch icons (use client bundle only)
*
* `server` by default; `iconify` when `ssr: false`
*
*
* @enum server,iconify,none
*
* @studioIcon material-symbols:cloud
*/
provider?: "server" | "iconify" | undefined,
/**
* Iconify API Endpoint URL
*
* Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api.
*
* @default "https://api.iconify.design"
*
* @studioIcon material-symbols:api
*/
iconifyApiEndpoint?: string,
/**
* Fallback to Iconify API
*
* Fallback to Iconify API if server provider fails to found the collection.
*
* @default true
*
* @enum true,false,server-only,client-only
*
* @studioIcon material-symbols:public
*/
fallbackToApi?: boolean | "server-only" | "client-only",
/**
* Local API Endpoint Path
*
* Define a custom path for the local API endpoint.
*
* @default "/api/_nuxt_icon"
*
* @studioIcon material-symbols:api
*/
localApiEndpoint?: string,
/**
* Fetch Timeout
*
* Set the timeout for fetching icons.
*
* @default 1500
*
* @studioIcon material-symbols:timer
*/
fetchTimeout?: number,
/**
* Customize callback
*
* Customize icon content (replace stroke-width, colors, etc...).
*
*
* @studioIcon material-symbols:edit
*/
customize?: IconifyIconCustomizeCallback,
},
},
}
export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined>
type _CustomAppConfig = CustomAppConfig
declare module '@nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}
declare module 'nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}

View File

@ -1,263 +0,0 @@
{
"id": "#",
"properties": {
"appConfig": {
"id": "#appConfig",
"properties": {
"icon": {
"title": "Nuxt Icon",
"description": "Configure Nuxt Icon module preferences.",
"tags": [
"@studioIcon material-symbols:star"
],
"id": "#appConfig/icon",
"properties": {
"size": {
"title": "Icon Size",
"description": "Set the default icon size.",
"tags": [
"@studioIcon material-symbols:format-size-rounded"
],
"tsType": "string | undefined",
"id": "#appConfig/icon/size",
"default": {},
"type": "any"
},
"class": {
"title": "CSS Class",
"description": "Set the default CSS class.",
"tags": [
"@studioIcon material-symbols:css"
],
"id": "#appConfig/icon/class",
"default": "",
"type": "string"
},
"attrs": {
"title": "Default Attributes",
"description": "Attributes applied to every icon component.\n\n@default { \"aria-hidden\": true }",
"tags": [
"@studioIcon material-symbols:settings"
],
"tsType": "Record<string, string | number | boolean>",
"id": "#appConfig/icon/attrs",
"default": {
"aria-hidden": true
},
"type": "object"
},
"mode": {
"title": "Default Rendering Mode",
"description": "Set the default rendering mode for the icon component",
"enum": [
"css",
"svg"
],
"tags": [
"@studioIcon material-symbols:move-down-rounded"
],
"id": "#appConfig/icon/mode",
"default": "css",
"type": "string"
},
"aliases": {
"title": "Icon aliases",
"description": "Define Icon aliases to update them easily without code changes.",
"tags": [
"@studioIcon material-symbols:star-rounded"
],
"tsType": "{ [alias: string]: string }",
"id": "#appConfig/icon/aliases",
"default": {},
"type": "object"
},
"cssSelectorPrefix": {
"title": "CSS Selector Prefix",
"description": "Set the default CSS selector prefix.",
"tags": [
"@studioIcon material-symbols:format-textdirection-l-to-r"
],
"id": "#appConfig/icon/cssSelectorPrefix",
"default": "i-",
"type": "string"
},
"cssLayer": {
"title": "CSS Layer Name",
"description": "Set the default CSS `@layer` name.",
"tags": [
"@studioIcon material-symbols:layers"
],
"tsType": "string | undefined",
"id": "#appConfig/icon/cssLayer",
"default": {},
"type": "any"
},
"cssWherePseudo": {
"title": "Use CSS `:where()` Pseudo Selector",
"description": "Use CSS `:where()` pseudo selector to reduce specificity.",
"tags": [
"@studioIcon material-symbols:low-priority"
],
"id": "#appConfig/icon/cssWherePseudo",
"default": true,
"type": "boolean"
},
"collections": {
"title": "Icon Collections",
"description": "List of known icon collections name. Used to resolve collection name ambiguity.\ne.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github`\n\nWhen not provided, will use the full Iconify collection list.",
"tags": [
"@studioIcon material-symbols:format-list-bulleted"
],
"tsType": "string[] | null",
"id": "#appConfig/icon/collections",
"default": null,
"type": "any"
},
"customCollections": {
"title": "Custom Icon Collections",
"tags": [
"@studioIcon material-symbols:format-list-bulleted"
],
"tsType": "string[] | null",
"id": "#appConfig/icon/customCollections",
"default": null,
"type": "any"
},
"provider": {
"title": "Icon Provider",
"description": "Provider to use for fetching icons\n\n- `server` - Fetch icons with a server handler\n- `iconify` - Fetch icons with Iconify API, purely client-side\n- `none` - Do not fetch icons (use client bundle only)\n\n`server` by default; `iconify` when `ssr: false`",
"enum": [
"server",
"iconify",
"none"
],
"tags": [
"@studioIcon material-symbols:cloud"
],
"type": "\"server\" | \"iconify\" | undefined",
"id": "#appConfig/icon/provider"
},
"iconifyApiEndpoint": {
"title": "Iconify API Endpoint URL",
"description": "Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api.",
"tags": [
"@studioIcon material-symbols:api"
],
"id": "#appConfig/icon/iconifyApiEndpoint",
"default": "https://api.iconify.design",
"type": "string"
},
"fallbackToApi": {
"title": "Fallback to Iconify API",
"description": "Fallback to Iconify API if server provider fails to found the collection.",
"tags": [
"@studioIcon material-symbols:public"
],
"enum": [
true,
false,
"server-only",
"client-only"
],
"type": "boolean | \"server-only\" | \"client-only\"",
"id": "#appConfig/icon/fallbackToApi",
"default": true
},
"localApiEndpoint": {
"title": "Local API Endpoint Path",
"description": "Define a custom path for the local API endpoint.",
"tags": [
"@studioIcon material-symbols:api"
],
"id": "#appConfig/icon/localApiEndpoint",
"default": "/api/_nuxt_icon",
"type": "string"
},
"fetchTimeout": {
"title": "Fetch Timeout",
"description": "Set the timeout for fetching icons.",
"tags": [
"@studioIcon material-symbols:timer"
],
"id": "#appConfig/icon/fetchTimeout",
"default": 1500,
"type": "number"
},
"customize": {
"title": "Customize callback",
"description": "Customize icon content (replace stroke-width, colors, etc...).",
"tags": [
"@studioIcon material-symbols:edit"
],
"type": "IconifyIconCustomizeCallback",
"id": "#appConfig/icon/customize"
}
},
"type": "object",
"default": {
"size": {},
"class": "",
"attrs": {
"aria-hidden": true
},
"mode": "css",
"aliases": {},
"cssSelectorPrefix": "i-",
"cssLayer": {},
"cssWherePseudo": true,
"collections": null,
"customCollections": null,
"iconifyApiEndpoint": "https://api.iconify.design",
"fallbackToApi": true,
"localApiEndpoint": "/api/_nuxt_icon",
"fetchTimeout": 1500
}
}
},
"type": "object",
"default": {
"icon": {
"size": {},
"class": "",
"attrs": {
"aria-hidden": true
},
"mode": "css",
"aliases": {},
"cssSelectorPrefix": "i-",
"cssLayer": {},
"cssWherePseudo": true,
"collections": null,
"customCollections": null,
"iconifyApiEndpoint": "https://api.iconify.design",
"fallbackToApi": true,
"localApiEndpoint": "/api/_nuxt_icon",
"fetchTimeout": 1500
}
}
}
},
"type": "object",
"default": {
"appConfig": {
"icon": {
"size": {},
"class": "",
"attrs": {
"aria-hidden": true
},
"mode": "css",
"aliases": {},
"cssSelectorPrefix": "i-",
"cssLayer": {},
"cssWherePseudo": true,
"collections": null,
"customCollections": null,
"iconifyApiEndpoint": "https://api.iconify.design",
"fallbackToApi": true,
"localApiEndpoint": "/api/_nuxt_icon",
"fetchTimeout": 1500
}
}
}
}

View File

@ -1,14 +0,0 @@
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 6/18/2025, 8:40:13 AM
import "@nuxtjs/tailwindcss/config-ctx"
import configMerger from "@nuxtjs/tailwindcss/merger";
import cfg2 from "./../../tailwind.config.ts";
const config = [
{"content":{"files":["/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/plugins/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/composables/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/utils/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/app.config.{js,ts,mjs}"]}},
{},
cfg2
].reduce((acc, curr) => configMerger(acc, curr), {});
const resolvedConfig = config;
export default resolvedConfig;

View File

@ -1,209 +0,0 @@
{
"compilerOptions": {
"paths": {
"nitropack/types": [
"../node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime"
],
"nitropack": [
"../node_modules/nitropack"
],
"defu": [
"../node_modules/defu"
],
"h3": [
"../node_modules/h3"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vue-router": [
"../node_modules/vue-router"
],
"vue-router/auto-routes": [
"../node_modules/vue-router/vue-router-auto-routes"
],
"unplugin-vue-router/client": [
"../node_modules/unplugin-vue-router/client"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"vite/client": [
"../node_modules/vite/client"
],
"~": [
".."
],
"~/*": [
"../*"
],
"@": [
".."
],
"@/*": [
"../*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"assets": [
"../assets"
],
"assets/*": [
"../assets/*"
],
"public": [
"../public"
],
"public/*": [
"../public/*"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/nuxt/dist/app/compat/vue-demi"
],
"#image": [
"../node_modules/@nuxt/image/dist/runtime"
],
"#image/*": [
"../node_modules/@nuxt/image/dist/runtime/*"
],
"pinia": [
"../node_modules/pinia/dist/pinia"
],
"#vue-router": [
"../node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables/v3"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/76826e1b-f3fe-4cae-9f12-dbe86d416aaa"
],
"#components": [
"./components"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"strict": true,
"noUncheckedIndexedAccess": false,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"lib": [
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"../**/*",
"../.config/nuxt.*",
"./nuxt.d.ts",
"../node_modules/@nuxt/eslint/runtime",
"../node_modules/@nuxt/eslint/dist/runtime",
"../node_modules/@nuxt/icon/runtime",
"../node_modules/@nuxt/icon/dist/runtime",
"../node_modules/@nuxt/image/runtime",
"../node_modules/@nuxt/image/dist/runtime",
"../node_modules/@pinia/nuxt/runtime",
"../node_modules/@pinia/nuxt/dist/runtime",
"../node_modules/@nuxtjs/tailwindcss/runtime",
"../node_modules/@nuxtjs/tailwindcss/dist/runtime",
"../node_modules/@nuxt/devtools/runtime",
"../node_modules/@nuxt/devtools/dist/runtime",
"../node_modules/@nuxt/telemetry/runtime",
"../node_modules/@nuxt/telemetry/dist/runtime",
".."
],
"exclude": [
"../dist",
"../.data",
"../node_modules",
"../node_modules/nuxt/node_modules",
"../node_modules/@nuxt/eslint/node_modules",
"../node_modules/@nuxt/icon/node_modules",
"../node_modules/@nuxt/image/node_modules",
"../node_modules/@pinia/nuxt/node_modules",
"../node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/@nuxt/devtools/node_modules",
"../node_modules/@nuxt/telemetry/node_modules",
"../node_modules/@nuxt/eslint/runtime/server",
"../node_modules/@nuxt/eslint/dist/runtime/server",
"../node_modules/@nuxt/icon/runtime/server",
"../node_modules/@nuxt/icon/dist/runtime/server",
"../node_modules/@nuxt/image/runtime/server",
"../node_modules/@nuxt/image/dist/runtime/server",
"../node_modules/@pinia/nuxt/runtime/server",
"../node_modules/@pinia/nuxt/dist/runtime/server",
"../node_modules/@nuxtjs/tailwindcss/runtime/server",
"../node_modules/@nuxtjs/tailwindcss/dist/runtime/server",
"../node_modules/@nuxt/devtools/runtime/server",
"../node_modules/@nuxt/devtools/dist/runtime/server",
"../node_modules/@nuxt/telemetry/runtime/server",
"../node_modules/@nuxt/telemetry/dist/runtime/server"
]
}

View File

@ -1,153 +0,0 @@
{
"compilerOptions": {
"forceConsistentCasingInFileNames": true,
"strict": true,
"noEmit": true,
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Bundler",
"allowJs": true,
"resolveJsonModule": true,
"jsx": "preserve",
"allowSyntheticDefaultImports": true,
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
"paths": {
"#imports": [
"./types/nitro-imports"
],
"~/*": [
"../*"
],
"@/*": [
"../*"
],
"~~/*": [
"../*"
],
"@@/*": [
"../*"
],
"nitropack/types": [
"../node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime"
],
"nitropack": [
"../node_modules/nitropack"
],
"defu": [
"../node_modules/defu"
],
"h3": [
"../node_modules/h3"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vue-router": [
"../node_modules/vue-router"
],
"vue-router/auto-routes": [
"../node_modules/vue-router/vue-router-auto-routes"
],
"unplugin-vue-router/client": [
"../node_modules/unplugin-vue-router/client"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"vite/client": [
"../node_modules/vite/client"
],
"#shared": [
"../shared"
],
"assets": [
"../assets"
],
"assets/*": [
"../assets/*"
],
"public": [
"../public"
],
"public/*": [
"../public/*"
],
"#build": [
"./"
],
"#build/*": [
"./*"
],
"#internal/nuxt/paths": [
"../node_modules/nuxt/dist/core/runtime/nitro/utils/paths"
],
"#image": [
"../node_modules/@nuxt/image/dist/runtime"
],
"#image/*": [
"../node_modules/@nuxt/image/dist/runtime/*"
],
"pinia": [
"../node_modules/pinia/dist/pinia"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables/v3"
],
"#nuxt-icon-server-bundle": [
"./nuxt-icon-server-bundle"
]
},
"lib": [
"esnext",
"webworker",
"dom.iterable"
]
},
"include": [
"./types/nitro-nuxt.d.ts",
"../node_modules/@nuxt/eslint/runtime/server",
"../node_modules/@nuxt/icon/runtime/server",
"../node_modules/@nuxt/image/runtime/server",
"../node_modules/@pinia/nuxt/runtime/server",
"../node_modules/@nuxtjs/tailwindcss/runtime/server",
"../node_modules/@nuxt/devtools/runtime/server",
"../node_modules/@nuxt/telemetry/runtime/server",
"./types/nitro.d.ts",
"../**/*",
"../server/**/*"
],
"exclude": [
"../node_modules",
"../node_modules/nuxt/node_modules",
"../node_modules/@nuxt/eslint/node_modules",
"../node_modules/@nuxt/icon/node_modules",
"../node_modules/@nuxt/image/node_modules",
"../node_modules/@pinia/nuxt/node_modules",
"../node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/@nuxt/devtools/node_modules",
"../node_modules/@nuxt/telemetry/node_modules",
"../dist"
]
}

View File

@ -1,7 +0,0 @@
declare module 'nuxt/app/defaults' {
type DefaultAsyncDataErrorValue = null
type DefaultAsyncDataValue = null
type DefaultErrorValue = null
type DedupeOption = boolean | 'cancel' | 'defer'
}

View File

@ -1,225 +0,0 @@
import type { CustomAppConfig } from 'nuxt/schema'
import type { Defu } from 'defu'
declare const inlineConfig = {
"nuxt": {},
"icon": {
"provider": "server",
"class": "",
"aliases": {},
"iconifyApiEndpoint": "https://api.iconify.design",
"localApiEndpoint": "/api/_nuxt_icon",
"fallbackToApi": true,
"cssSelectorPrefix": "i-",
"cssWherePseudo": true,
"mode": "css",
"attrs": {
"aria-hidden": true
},
"collections": [
"academicons",
"akar-icons",
"ant-design",
"arcticons",
"basil",
"bi",
"bitcoin-icons",
"bpmn",
"brandico",
"bx",
"bxl",
"bxs",
"bytesize",
"carbon",
"catppuccin",
"cbi",
"charm",
"ci",
"cib",
"cif",
"cil",
"circle-flags",
"circum",
"clarity",
"codicon",
"covid",
"cryptocurrency",
"cryptocurrency-color",
"dashicons",
"devicon",
"devicon-plain",
"ei",
"el",
"emojione",
"emojione-monotone",
"emojione-v1",
"entypo",
"entypo-social",
"eos-icons",
"ep",
"et",
"eva",
"f7",
"fa",
"fa-brands",
"fa-regular",
"fa-solid",
"fa6-brands",
"fa6-regular",
"fa6-solid",
"fad",
"fe",
"feather",
"file-icons",
"flag",
"flagpack",
"flat-color-icons",
"flat-ui",
"flowbite",
"fluent",
"fluent-emoji",
"fluent-emoji-flat",
"fluent-emoji-high-contrast",
"fluent-mdl2",
"fontelico",
"fontisto",
"formkit",
"foundation",
"fxemoji",
"gala",
"game-icons",
"geo",
"gg",
"gis",
"gravity-ui",
"gridicons",
"grommet-icons",
"guidance",
"healthicons",
"heroicons",
"heroicons-outline",
"heroicons-solid",
"hugeicons",
"humbleicons",
"ic",
"icomoon-free",
"icon-park",
"icon-park-outline",
"icon-park-solid",
"icon-park-twotone",
"iconamoon",
"iconoir",
"icons8",
"il",
"ion",
"iwwa",
"jam",
"la",
"lets-icons",
"line-md",
"logos",
"ls",
"lucide",
"lucide-lab",
"mage",
"majesticons",
"maki",
"map",
"marketeq",
"material-symbols",
"material-symbols-light",
"mdi",
"mdi-light",
"medical-icon",
"memory",
"meteocons",
"mi",
"mingcute",
"mono-icons",
"mynaui",
"nimbus",
"nonicons",
"noto",
"noto-v1",
"octicon",
"oi",
"ooui",
"openmoji",
"oui",
"pajamas",
"pepicons",
"pepicons-pencil",
"pepicons-pop",
"pepicons-print",
"ph",
"pixelarticons",
"prime",
"ps",
"quill",
"radix-icons",
"raphael",
"ri",
"rivet-icons",
"si-glyph",
"simple-icons",
"simple-line-icons",
"skill-icons",
"solar",
"streamline",
"streamline-emojis",
"subway",
"svg-spinners",
"system-uicons",
"tabler",
"tdesign",
"teenyicons",
"token",
"token-branded",
"topcoat",
"twemoji",
"typcn",
"uil",
"uim",
"uis",
"uit",
"uiw",
"unjs",
"vaadin",
"vs",
"vscode-icons",
"websymbol",
"weui",
"whh",
"wi",
"wpf",
"zmdi",
"zondicons"
],
"fetchTimeout": 1500
}
}
type ResolvedAppConfig = Defu<typeof inlineConfig, []>
type IsAny<T> = 0 extends 1 & T ? true : false
type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = {
[K in keyof (Resolved & Custom)]: K extends keyof Custom
? unknown extends Custom[K]
? Resolved[K]
: IsAny<Custom[K]> extends true
? Resolved[K]
: Custom[K] extends Record<string, any>
? Resolved[K] extends Record<string, any>
? MergedAppConfig<Resolved[K], Custom[K]>
: Exclude<Custom[K], undefined>
: Exclude<Custom[K], undefined>
: Resolved[K]
}
declare module 'nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}
declare module '@nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}

View File

@ -1,23 +0,0 @@
declare module "#build/app-component.mjs";
declare module "#build/nitro.client.mjs";
declare module "#build/plugins.client.mjs";
declare module "#build/css.mjs";
declare module "#build/fetch.mjs";
declare module "#build/error-component.mjs";
declare module "#build/global-polyfills.mjs";
declare module "#build/layouts.mjs";
declare module "#build/middleware.mjs";
declare module "#build/nuxt.config.mjs";
declare module "#build/paths.mjs";
declare module "#build/root-component.mjs";
declare module "#build/plugins.server.mjs";
declare module "#build/test-component-wrapper.mjs";
declare module "#build/image-options.mjs";
declare module "#build/routes.mjs";
declare module "#build/pages.mjs";
declare module "#build/router.options.mjs";
declare module "#build/unhead-options.mjs";
declare module "#build/unhead.config.mjs";
declare module "#build/components.plugin.mjs";
declare module "#build/component-names.mjs";
declare module "#build/components.islands.mjs";

View File

@ -1 +0,0 @@
import "vite/client";

View File

@ -1,364 +0,0 @@
// Generated by auto imports
export {}
declare global {
const abortNavigation: typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']
const acceptHMRUpdate: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']
const addRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']
const callOnce: typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']
const cancelIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']
const clearError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']
const clearNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']
const clearNuxtState: typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']
const computed: typeof import('vue')['computed']
const createError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']
const customRef: typeof import('vue')['customRef']
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const defineNuxtComponent: typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']
const defineNuxtLink: typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']
const defineNuxtPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']
const defineNuxtRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']
const definePageMeta: typeof import('../../node_modules/nuxt/dist/pages/runtime/composables')['definePageMeta']
const definePayloadPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']
const definePayloadReducer: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']
const definePayloadReviver: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']
const defineStore: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']
const effect: typeof import('vue')['effect']
const effectScope: typeof import('vue')['effectScope']
const getAppManifest: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const getRouteRules: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']
const h: typeof import('vue')['h']
const hasInjectionContext: typeof import('vue')['hasInjectionContext']
const inject: typeof import('vue')['inject']
const injectHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']
const isNuxtError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']
const isPrerendered: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const isShallow: typeof import('vue')['isShallow']
const isVue2: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']
const isVue3: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']
const loadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']
const markRaw: typeof import('vue')['markRaw']
const mergeModels: typeof import('vue')['mergeModels']
const navigateTo: typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeRouteLeave: typeof import('../../node_modules/vue-router')['onBeforeRouteLeave']
const onBeforeRouteUpdate: typeof import('../../node_modules/vue-router')['onBeforeRouteUpdate']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onMounted: typeof import('vue')['onMounted']
const onNuxtReady: typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']
const onPrehydrate: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const prefetchComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']
const preloadComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadComponents']
const preloadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['preloadPayload']
const preloadRouteComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']
const prerenderRoutes: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']
const provide: typeof import('vue')['provide']
const proxyRefs: typeof import('vue')['proxyRefs']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const refreshCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']
const refreshNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']
const reloadNuxtApp: typeof import('../../node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']
const requestIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']
const resolveComponent: typeof import('vue')['resolveComponent']
const setInterval: typeof import('../../node_modules/nuxt/dist/app/compat/interval')['setInterval']
const setPageLayout: typeof import('../../node_modules/nuxt/dist/app/composables/router')['setPageLayout']
const setResponseStatus: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const showError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']
const storeToRefs: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['storeToRefs']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const toValue: typeof import('vue')['toValue']
const triggerRef: typeof import('vue')['triggerRef']
const tryUseNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']
const unref: typeof import('vue')['unref']
const updateAppConfig: typeof import('../../node_modules/nuxt/dist/app/config')['updateAppConfig']
const useAppConfig: typeof import('../../node_modules/nuxt/dist/app/config')['useAppConfig']
const useAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']
const useAttrs: typeof import('vue')['useAttrs']
const useCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['useError']
const useFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useFetch']
const useHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHead']
const useHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHeadSafe']
const useHydration: typeof import('../../node_modules/nuxt/dist/app/composables/hydrate')['useHydration']
const useId: typeof import('vue')['useId']
const useImage: typeof import('../../node_modules/@nuxt/image/dist/runtime/composables')['useImage']
const useLazyAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']
const useLazyFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']
const useLink: typeof import('../../node_modules/vue-router')['useLink']
const useLoadingIndicator: typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']
const useModel: typeof import('vue')['useModel']
const useNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']
const useNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']
const usePinia: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['usePinia']
const usePreviewMode: typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']
const useRequestEvent: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']
const useRequestFetch: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']
const useRequestHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']
const useRequestHeaders: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']
const useRequestURL: typeof import('../../node_modules/nuxt/dist/app/composables/url')['useRequestURL']
const useResponseHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']
const useRoute: typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRoute']
const useRouteAnnouncer: typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']
const useRouter: typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRouter']
const useRuntimeConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']
const useRuntimeHook: typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']
const useScript: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScript']
const useScriptClarity: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']
const useScriptCloudflareWebAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']
const useScriptCrisp: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']
const useScriptEventPage: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']
const useScriptFathomAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']
const useScriptGoogleAdsense: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']
const useScriptGoogleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']
const useScriptGoogleMaps: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']
const useScriptGoogleTagManager: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']
const useScriptHotjar: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']
const useScriptIntercom: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']
const useScriptLemonSqueezy: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']
const useScriptMatomoAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']
const useScriptMetaPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']
const useScriptNpm: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']
const useScriptPlausibleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']
const useScriptRybbitAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']
const useScriptSegment: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']
const useScriptSnapchatPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']
const useScriptStripe: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']
const useScriptTriggerConsent: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']
const useScriptTriggerElement: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']
const useScriptUmamiAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']
const useScriptVimeoPlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']
const useScriptXPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']
const useScriptYouTubePlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']
const useSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useSeoMeta']
const useServerHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHead']
const useServerHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']
const useServerSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']
const useShadowRoot: typeof import('vue')['useShadowRoot']
const useSlots: typeof import('vue')['useSlots']
const useState: typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']
const useTemplateRef: typeof import('vue')['useTemplateRef']
const useTransitionState: typeof import('vue')['useTransitionState']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
const withCtx: typeof import('vue')['withCtx']
const withDirectives: typeof import('vue')['withDirectives']
const withKeys: typeof import('vue')['withKeys']
const withMemo: typeof import('vue')['withMemo']
const withModifiers: typeof import('vue')['withModifiers']
const withScopeId: typeof import('vue')['withScopeId']
}
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
}
// for vue template auto import
import { UnwrapRef } from 'vue'
declare module 'vue' {
interface ComponentCustomProperties {
readonly abortNavigation: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']>
readonly acceptHMRUpdate: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']>
readonly addRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']>
readonly callOnce: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']>
readonly cancelIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']>
readonly clearError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']>
readonly clearNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']>
readonly clearNuxtState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']>
readonly computed: UnwrapRef<typeof import('vue')['computed']>
readonly createError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']>
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
readonly defineAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']>
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
readonly defineNuxtComponent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']>
readonly defineNuxtLink: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']>
readonly defineNuxtPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']>
readonly defineNuxtRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']>
readonly definePageMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/pages/runtime/composables')['definePageMeta']>
readonly definePayloadPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']>
readonly definePayloadReducer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']>
readonly definePayloadReviver: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']>
readonly defineStore: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']>
readonly effect: UnwrapRef<typeof import('vue')['effect']>
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
readonly getAppManifest: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']>
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
readonly getRouteRules: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']>
readonly h: UnwrapRef<typeof import('vue')['h']>
readonly hasInjectionContext: UnwrapRef<typeof import('vue')['hasInjectionContext']>
readonly inject: UnwrapRef<typeof import('vue')['inject']>
readonly injectHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']>
readonly isNuxtError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']>
readonly isPrerendered: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']>
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
readonly isShallow: UnwrapRef<typeof import('vue')['isShallow']>
readonly isVue2: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']>
readonly isVue3: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']>
readonly loadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']>
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
readonly mergeModels: UnwrapRef<typeof import('vue')['mergeModels']>
readonly navigateTo: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']>
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
readonly onBeforeRouteLeave: UnwrapRef<typeof import('../../node_modules/vue-router')['onBeforeRouteLeave']>
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('../../node_modules/vue-router')['onBeforeRouteUpdate']>
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
readonly onNuxtReady: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']>
readonly onPrehydrate: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']>
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
readonly prefetchComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']>
readonly preloadComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadComponents']>
readonly preloadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['preloadPayload']>
readonly preloadRouteComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']>
readonly prerenderRoutes: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']>
readonly provide: UnwrapRef<typeof import('vue')['provide']>
readonly proxyRefs: UnwrapRef<typeof import('vue')['proxyRefs']>
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
readonly ref: UnwrapRef<typeof import('vue')['ref']>
readonly refreshCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']>
readonly refreshNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']>
readonly reloadNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']>
readonly requestIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']>
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
readonly setInterval: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/interval')['setInterval']>
readonly setPageLayout: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['setPageLayout']>
readonly setResponseStatus: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']>
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
readonly showError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']>
readonly storeToRefs: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['storeToRefs']>
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
readonly tryUseNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']>
readonly unref: UnwrapRef<typeof import('vue')['unref']>
readonly updateAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['updateAppConfig']>
readonly useAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['useAppConfig']>
readonly useAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']>
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
readonly useCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']>
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
readonly useError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['useError']>
readonly useFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useFetch']>
readonly useHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHead']>
readonly useHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHeadSafe']>
readonly useHydration: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/hydrate')['useHydration']>
readonly useId: UnwrapRef<typeof import('vue')['useId']>
readonly useImage: UnwrapRef<typeof import('../../node_modules/@nuxt/image/dist/runtime/composables')['useImage']>
readonly useLazyAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']>
readonly useLazyFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']>
readonly useLink: UnwrapRef<typeof import('../../node_modules/vue-router')['useLink']>
readonly useLoadingIndicator: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']>
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
readonly usePinia: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['usePinia']>
readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
readonly useRequestEvent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']>
readonly useRequestFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']>
readonly useRequestHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']>
readonly useRequestHeaders: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']>
readonly useRequestURL: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/url')['useRequestURL']>
readonly useResponseHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']>
readonly useRoute: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRoute']>
readonly useRouteAnnouncer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']>
readonly useRouter: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRouter']>
readonly useRuntimeConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']>
readonly useRuntimeHook: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']>
readonly useScript: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScript']>
readonly useScriptClarity: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']>
readonly useScriptCloudflareWebAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']>
readonly useScriptCrisp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']>
readonly useScriptEventPage: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']>
readonly useScriptFathomAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']>
readonly useScriptGoogleAdsense: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']>
readonly useScriptGoogleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']>
readonly useScriptGoogleMaps: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']>
readonly useScriptGoogleTagManager: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']>
readonly useScriptHotjar: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']>
readonly useScriptIntercom: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']>
readonly useScriptLemonSqueezy: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']>
readonly useScriptMatomoAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']>
readonly useScriptMetaPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']>
readonly useScriptNpm: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']>
readonly useScriptPlausibleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']>
readonly useScriptRybbitAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']>
readonly useScriptSegment: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']>
readonly useScriptSnapchatPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']>
readonly useScriptStripe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']>
readonly useScriptTriggerConsent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']>
readonly useScriptTriggerElement: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']>
readonly useScriptUmamiAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']>
readonly useScriptVimeoPlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']>
readonly useScriptXPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']>
readonly useScriptYouTubePlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']>
readonly useSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useSeoMeta']>
readonly useServerHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHead']>
readonly useServerHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']>
readonly useServerSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']>
readonly useShadowRoot: UnwrapRef<typeof import('vue')['useShadowRoot']>
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
readonly useState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']>
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
readonly useTransitionState: UnwrapRef<typeof import('vue')['useTransitionState']>
readonly watch: UnwrapRef<typeof import('vue')['watch']>
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
readonly withCtx: UnwrapRef<typeof import('vue')['withCtx']>
readonly withDirectives: UnwrapRef<typeof import('vue')['withDirectives']>
readonly withKeys: UnwrapRef<typeof import('vue')['withKeys']>
readonly withMemo: UnwrapRef<typeof import('vue')['withMemo']>
readonly withModifiers: UnwrapRef<typeof import('vue')['withModifiers']>
readonly withScopeId: UnwrapRef<typeof import('vue')['withScopeId']>
}
}

View File

@ -1,7 +0,0 @@
import type { ComputedRef, MaybeRef } from 'vue'
export type LayoutKey = "ui-footer" | "ui-footer-data-footer-navigation-data" | "ui-footer-data" | "ui-footer-data-ref-litres-data" | "ui-header" | "ui-header-data-header-navigation-data" | "ui-header-data" | "ui-main" | "default"
declare module 'nuxt/app' {
interface PageMeta {
layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false>
}
}

View File

@ -1,7 +0,0 @@
import type { NavigationGuard } from 'vue-router'
export type MiddlewareKey = never
declare module 'nuxt/app' {
interface PageMeta {
middleware?: MiddlewareKey | NavigationGuard | Array<MiddlewareKey | NavigationGuard>
}
}

View File

@ -1,14 +0,0 @@
// Generated by nitro
// App Config
import type { Defu } from 'defu'
type UserAppConfig = Defu<{}, []>
declare module "nitropack/types" {
interface AppConfig extends UserAppConfig {}
}
export {}

View File

@ -1,141 +0,0 @@
declare global {
const __buildAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['buildAssetsURL']
const __publicAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['publicAssetsURL']
const appendCorsHeaders: typeof import('../../node_modules/h3')['appendCorsHeaders']
const appendCorsPreflightHeaders: typeof import('../../node_modules/h3')['appendCorsPreflightHeaders']
const appendHeader: typeof import('../../node_modules/h3')['appendHeader']
const appendHeaders: typeof import('../../node_modules/h3')['appendHeaders']
const appendResponseHeader: typeof import('../../node_modules/h3')['appendResponseHeader']
const appendResponseHeaders: typeof import('../../node_modules/h3')['appendResponseHeaders']
const assertMethod: typeof import('../../node_modules/h3')['assertMethod']
const cachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedEventHandler']
const cachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedFunction']
const callNodeListener: typeof import('../../node_modules/h3')['callNodeListener']
const clearResponseHeaders: typeof import('../../node_modules/h3')['clearResponseHeaders']
const clearSession: typeof import('../../node_modules/h3')['clearSession']
const createApp: typeof import('../../node_modules/h3')['createApp']
const createAppEventHandler: typeof import('../../node_modules/h3')['createAppEventHandler']
const createError: typeof import('../../node_modules/h3')['createError']
const createEvent: typeof import('../../node_modules/h3')['createEvent']
const createEventStream: typeof import('../../node_modules/h3')['createEventStream']
const createRouter: typeof import('../../node_modules/h3')['createRouter']
const defaultContentType: typeof import('../../node_modules/h3')['defaultContentType']
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/config')['defineAppConfig']
const defineCachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedEventHandler']
const defineCachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedFunction']
const defineEventHandler: typeof import('../../node_modules/h3')['defineEventHandler']
const defineLazyEventHandler: typeof import('../../node_modules/h3')['defineLazyEventHandler']
const defineNitroErrorHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/error/utils')['defineNitroErrorHandler']
const defineNitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['defineNitroPlugin']
const defineNodeListener: typeof import('../../node_modules/h3')['defineNodeListener']
const defineNodeMiddleware: typeof import('../../node_modules/h3')['defineNodeMiddleware']
const defineRenderHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/renderer')['defineRenderHandler']
const defineRequestMiddleware: typeof import('../../node_modules/h3')['defineRequestMiddleware']
const defineResponseMiddleware: typeof import('../../node_modules/h3')['defineResponseMiddleware']
const defineRouteMeta: typeof import('../../node_modules/nitropack/dist/runtime/internal/meta')['defineRouteMeta']
const defineTask: typeof import('../../node_modules/nitropack/dist/runtime/internal/task')['defineTask']
const defineWebSocket: typeof import('../../node_modules/h3')['defineWebSocket']
const defineWebSocketHandler: typeof import('../../node_modules/h3')['defineWebSocketHandler']
const deleteCookie: typeof import('../../node_modules/h3')['deleteCookie']
const dynamicEventHandler: typeof import('../../node_modules/h3')['dynamicEventHandler']
const eventHandler: typeof import('../../node_modules/h3')['eventHandler']
const fetchWithEvent: typeof import('../../node_modules/h3')['fetchWithEvent']
const fromNodeMiddleware: typeof import('../../node_modules/h3')['fromNodeMiddleware']
const fromPlainHandler: typeof import('../../node_modules/h3')['fromPlainHandler']
const fromWebHandler: typeof import('../../node_modules/h3')['fromWebHandler']
const getCookie: typeof import('../../node_modules/h3')['getCookie']
const getHeader: typeof import('../../node_modules/h3')['getHeader']
const getHeaders: typeof import('../../node_modules/h3')['getHeaders']
const getMethod: typeof import('../../node_modules/h3')['getMethod']
const getProxyRequestHeaders: typeof import('../../node_modules/h3')['getProxyRequestHeaders']
const getQuery: typeof import('../../node_modules/h3')['getQuery']
const getRequestFingerprint: typeof import('../../node_modules/h3')['getRequestFingerprint']
const getRequestHeader: typeof import('../../node_modules/h3')['getRequestHeader']
const getRequestHeaders: typeof import('../../node_modules/h3')['getRequestHeaders']
const getRequestHost: typeof import('../../node_modules/h3')['getRequestHost']
const getRequestIP: typeof import('../../node_modules/h3')['getRequestIP']
const getRequestPath: typeof import('../../node_modules/h3')['getRequestPath']
const getRequestProtocol: typeof import('../../node_modules/h3')['getRequestProtocol']
const getRequestURL: typeof import('../../node_modules/h3')['getRequestURL']
const getRequestWebStream: typeof import('../../node_modules/h3')['getRequestWebStream']
const getResponseHeader: typeof import('../../node_modules/h3')['getResponseHeader']
const getResponseHeaders: typeof import('../../node_modules/h3')['getResponseHeaders']
const getResponseStatus: typeof import('../../node_modules/h3')['getResponseStatus']
const getResponseStatusText: typeof import('../../node_modules/h3')['getResponseStatusText']
const getRouteRules: typeof import('../../node_modules/nitropack/dist/runtime/internal/route-rules')['getRouteRules']
const getRouterParam: typeof import('../../node_modules/h3')['getRouterParam']
const getRouterParams: typeof import('../../node_modules/h3')['getRouterParams']
const getSession: typeof import('../../node_modules/h3')['getSession']
const getValidatedQuery: typeof import('../../node_modules/h3')['getValidatedQuery']
const getValidatedRouterParams: typeof import('../../node_modules/h3')['getValidatedRouterParams']
const handleCacheHeaders: typeof import('../../node_modules/h3')['handleCacheHeaders']
const handleCors: typeof import('../../node_modules/h3')['handleCors']
const isCorsOriginAllowed: typeof import('../../node_modules/h3')['isCorsOriginAllowed']
const isError: typeof import('../../node_modules/h3')['isError']
const isEvent: typeof import('../../node_modules/h3')['isEvent']
const isEventHandler: typeof import('../../node_modules/h3')['isEventHandler']
const isMethod: typeof import('../../node_modules/h3')['isMethod']
const isPreflightRequest: typeof import('../../node_modules/h3')['isPreflightRequest']
const isStream: typeof import('../../node_modules/h3')['isStream']
const isWebResponse: typeof import('../../node_modules/h3')['isWebResponse']
const lazyEventHandler: typeof import('../../node_modules/h3')['lazyEventHandler']
const nitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['nitroPlugin']
const parseCookies: typeof import('../../node_modules/h3')['parseCookies']
const promisifyNodeListener: typeof import('../../node_modules/h3')['promisifyNodeListener']
const proxyRequest: typeof import('../../node_modules/h3')['proxyRequest']
const readBody: typeof import('../../node_modules/h3')['readBody']
const readFormData: typeof import('../../node_modules/h3')['readFormData']
const readMultipartFormData: typeof import('../../node_modules/h3')['readMultipartFormData']
const readRawBody: typeof import('../../node_modules/h3')['readRawBody']
const readValidatedBody: typeof import('../../node_modules/h3')['readValidatedBody']
const removeResponseHeader: typeof import('../../node_modules/h3')['removeResponseHeader']
const runTask: typeof import('../../node_modules/nitropack/dist/runtime/internal/task')['runTask']
const sanitizeStatusCode: typeof import('../../node_modules/h3')['sanitizeStatusCode']
const sanitizeStatusMessage: typeof import('../../node_modules/h3')['sanitizeStatusMessage']
const sealSession: typeof import('../../node_modules/h3')['sealSession']
const send: typeof import('../../node_modules/h3')['send']
const sendError: typeof import('../../node_modules/h3')['sendError']
const sendIterable: typeof import('../../node_modules/h3')['sendIterable']
const sendNoContent: typeof import('../../node_modules/h3')['sendNoContent']
const sendProxy: typeof import('../../node_modules/h3')['sendProxy']
const sendRedirect: typeof import('../../node_modules/h3')['sendRedirect']
const sendStream: typeof import('../../node_modules/h3')['sendStream']
const sendWebResponse: typeof import('../../node_modules/h3')['sendWebResponse']
const serveStatic: typeof import('../../node_modules/h3')['serveStatic']
const setCookie: typeof import('../../node_modules/h3')['setCookie']
const setHeader: typeof import('../../node_modules/h3')['setHeader']
const setHeaders: typeof import('../../node_modules/h3')['setHeaders']
const setResponseHeader: typeof import('../../node_modules/h3')['setResponseHeader']
const setResponseHeaders: typeof import('../../node_modules/h3')['setResponseHeaders']
const setResponseStatus: typeof import('../../node_modules/h3')['setResponseStatus']
const splitCookiesString: typeof import('../../node_modules/h3')['splitCookiesString']
const toEventHandler: typeof import('../../node_modules/h3')['toEventHandler']
const toNodeListener: typeof import('../../node_modules/h3')['toNodeListener']
const toPlainHandler: typeof import('../../node_modules/h3')['toPlainHandler']
const toWebHandler: typeof import('../../node_modules/h3')['toWebHandler']
const toWebRequest: typeof import('../../node_modules/h3')['toWebRequest']
const unsealSession: typeof import('../../node_modules/h3')['unsealSession']
const updateSession: typeof import('../../node_modules/h3')['updateSession']
const useAppConfig: typeof import('../../node_modules/nitropack/dist/runtime/internal/config')['useAppConfig']
const useBase: typeof import('../../node_modules/h3')['useBase']
const useEvent: typeof import('../../node_modules/nitropack/dist/runtime/internal/context')['useEvent']
const useNitroApp: typeof import('../../node_modules/nitropack/dist/runtime/internal/app')['useNitroApp']
const useRuntimeConfig: typeof import('../../node_modules/nitropack/dist/runtime/internal/config')['useRuntimeConfig']
const useSession: typeof import('../../node_modules/h3')['useSession']
const useStorage: typeof import('../../node_modules/nitropack/dist/runtime/internal/storage')['useStorage']
const writeEarlyHints: typeof import('../../node_modules/h3')['writeEarlyHints']
}
export { useNitroApp } from 'nitropack/runtime/internal/app';
export { useRuntimeConfig, useAppConfig } from 'nitropack/runtime/internal/config';
export { defineNitroPlugin, nitroPlugin } from 'nitropack/runtime/internal/plugin';
export { defineCachedFunction, defineCachedEventHandler, cachedFunction, cachedEventHandler } from 'nitropack/runtime/internal/cache';
export { useStorage } from 'nitropack/runtime/internal/storage';
export { defineRenderHandler } from 'nitropack/runtime/internal/renderer';
export { defineRouteMeta } from 'nitropack/runtime/internal/meta';
export { getRouteRules } from 'nitropack/runtime/internal/route-rules';
export { useEvent } from 'nitropack/runtime/internal/context';
export { defineTask, runTask } from 'nitropack/runtime/internal/task';
export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils';
export { appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3';
export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/paths';
export { defineAppConfig } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/config';

View File

@ -1,6 +0,0 @@
export type MiddlewareKey = never
declare module 'nitropack' {
interface NitroRouteConfig {
appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean>
}
}

View File

@ -1,34 +0,0 @@
/// <reference path="nitro-middleware.d.ts" />
/// <reference path="./schema.d.ts" />
import type { RuntimeConfig } from 'nuxt/schema'
import type { H3Event } from 'h3'
import type { LogObject } from 'consola'
import type { NuxtIslandContext, NuxtIslandResponse, NuxtRenderHTMLContext } from 'nuxt/app'
declare module 'nitropack' {
interface NitroRuntimeConfigApp {
buildAssetsDir: string
cdnURL: string
}
interface NitroRuntimeConfig extends RuntimeConfig {}
interface NitroRouteConfig {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
}
interface NitroRouteRules {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
appMiddleware?: Record<string, boolean>
}
interface NitroRuntimeHooks {
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
}
}

View File

@ -1,20 +0,0 @@
// Generated by nitro
import type { Serialize, Simplify } from "nitropack/types";
declare module "nitropack/types" {
type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T
interface InternalApi {
'/__nuxt_error': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/handlers/renderer').default>>>>
}
'/api/_nuxt_icon/:collection': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/icon/dist/runtime/server/api').default>>>>
}
'/__nuxt_island/**': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../server/#internal/nuxt/island-renderer').default>>>>
}
'/_ipx/**': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/image/dist/runtime/ipx').default>>>>
}
}
}
export {}

View File

@ -1,3 +0,0 @@
/// <reference path="./nitro-routes.d.ts" />
/// <reference path="./nitro-config.d.ts" />
/// <reference path="./nitro-imports.d.ts" />

View File

@ -1,34 +0,0 @@
// Generated by Nuxt'
import type { Plugin } from '#app'
type Decorate<T extends Record<string, any>> = { [K in keyof T as K extends string ? `$${K}` : never]: T[K] }
type InjectionType<A extends Plugin> = A extends {default: Plugin<infer T>} ? Decorate<T> : unknown
type NuxtAppInjections =
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/debug-hooks.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/payload.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/chunk-reload.client.js")> &
InjectionType<typeof import("../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/prefetch.client.js")> &
InjectionType<typeof import("../../node_modules/@nuxt/icon/dist/runtime/plugin.js")>
declare module '#app' {
interface NuxtApp extends NuxtAppInjections { }
interface NuxtAppLiterals {
pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:debug:hooks' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon'
}
}
declare module 'vue' {
interface ComponentCustomProperties extends NuxtAppInjections { }
}
export { }

View File

@ -1,168 +0,0 @@
import { NuxtModule, RuntimeConfig } from '@nuxt/schema'
declare module '@nuxt/schema' {
interface NuxtOptions {
/**
* Configuration for `@nuxt/eslint`
*/
["eslint"]: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/icon`
*/
["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/image`
*/
["image"]: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@pinia/nuxt`
*/
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxtjs/tailwindcss`
*/
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/devtools`
*/
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/telemetry`
*/
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, any>
}
interface NuxtConfig {
/**
* Configuration for `@nuxt/eslint`
*/
["eslint"]?: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/icon`
*/
["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/image`
*/
["image"]?: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@pinia/nuxt`
*/
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxtjs/tailwindcss`
*/
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/devtools`
*/
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/telemetry`
*/
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/eslint", Exclude<NuxtConfig["eslint"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/image", Exclude<NuxtConfig["image"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
}
}
declare module 'nuxt/schema' {
interface NuxtOptions {
/**
* Configuration for `@nuxt/eslint`
* @see https://www.npmjs.com/package/@nuxt/eslint
*/
["eslint"]: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/icon`
* @see https://www.npmjs.com/package/@nuxt/icon
*/
["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/image`
* @see https://www.npmjs.com/package/@nuxt/image
*/
["image"]: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@pinia/nuxt`
* @see https://www.npmjs.com/package/@pinia/nuxt
*/
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxtjs/tailwindcss`
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
*/
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/devtools`
* @see https://www.npmjs.com/package/@nuxt/devtools
*/
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/telemetry`
* @see https://www.npmjs.com/package/@nuxt/telemetry
*/
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, any>
}
interface NuxtConfig {
/**
* Configuration for `@nuxt/eslint`
* @see https://www.npmjs.com/package/@nuxt/eslint
*/
["eslint"]?: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/icon`
* @see https://www.npmjs.com/package/@nuxt/icon
*/
["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/image`
* @see https://www.npmjs.com/package/@nuxt/image
*/
["image"]?: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@pinia/nuxt`
* @see https://www.npmjs.com/package/@pinia/nuxt
*/
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxtjs/tailwindcss`
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
*/
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/devtools`
* @see https://www.npmjs.com/package/@nuxt/devtools
*/
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/telemetry`
* @see https://www.npmjs.com/package/@nuxt/telemetry
*/
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/eslint", Exclude<NuxtConfig["eslint"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/image", Exclude<NuxtConfig["image"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
}
interface RuntimeConfig {
app: {
buildId: string,
baseURL: string,
buildAssetsDir: string,
cdnURL: string,
},
nitro: {
envPrefix: string,
},
icon: {
serverKnownCssClasses: Array<any>,
},
}
interface PublicRuntimeConfig {
}
}
declare module 'vue' {
interface ComponentCustomProperties {
$config: RuntimeConfig
}
}

View File

7
.prettierrc.json Normal file
View File

@ -0,0 +1,7 @@
{
"$schema": "https://json.schemastore.org/prettierrc",
"semi": false,
"singleQuote": true,
"printWidth": 100
}

3
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar"]
}

View File

@ -1,75 +1,27 @@
# Nuxt Minimal Starter # Проект сайт vino Galante
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. ## Описание проекта
## Setup Интернет сайт Vino Galente создан для продажи книг за авторством...
Make sure to install dependencies: ### Установка, для разработки
```bash Копируем env
# npm
npm install
# pnpm ```
pnpm install cp frontend.env frontend.env.example
# yarn
yarn install
# bun
bun install
``` ```
## Development Server Устанавливаем зависимости
Start the development server on `http://localhost:3000`: ```
yarn
```bash
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
``` ```
## Production Запуск dev
Build the application for production: ```
vite
```bash
# npm
npm run build
# pnpm
pnpm build
# yarn
yarn build
# bun
bun run build
``` ```
Locally preview production build: Разворачивание, docker
```bash
# npm
npm run preview
# pnpm
pnpm preview
# yarn
yarn preview
# bun
bun run preview
```
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.

18
app.vue
View File

@ -1,18 +0,0 @@
<template>
<NuxtLayout>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link
href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Russo+One&display=swap"
rel="stylesheet"
/>
<NuxtPage />
</NuxtLayout>
</template>
<script setup lang="ts">
const route = useRoute();
</script>

View File

@ -1,42 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--color-primary: rgba(255, 255, 255, 1);
--color-secondary: rgba(229, 30, 125, 1);
--color-three: rgba(245, 75, 126, 1);
--color-accent-50: #f54378;
--color-accent-100: #e51e7d;
--color-accent-150: #c4035f;
--color-black-50: #0c1018;
/* system colors */
--color-error: oklch(57.7% 0.245 27.325);
--color-warning: oklch(76.9% 0.188 70.08);
/* disabled */
--color-text-disabled: oklch(55.1% 0.027 264.364);
--color-bg-disabled: oklch(92.8% 0.006 264.531);
}
/* Кастомные классы шрифтов */
.lato-thin { font-family: 'Lato', sans-serif; font-weight: 100; font-style: normal; }
.lato-light { font-family: 'Lato', sans-serif; font-weight: 300; font-style: normal; }
.lato-regular { font-family: 'Lato', sans-serif; font-weight: 400; font-style: normal; }
.lato-bold { font-family: 'Lato', sans-serif; font-weight: 700; font-style: normal; }
.lato-black { font-family: 'Lato', sans-serif; font-weight: 900; font-style: normal; }
.lato-thin-italic { font-family: 'Lato', sans-serif; font-weight: 100; font-style: italic; }
.lato-light-italic { font-family: 'Lato', sans-serif; font-weight: 300; font-style: italic; }
.lato-regular-italic { font-family: 'Lato', sans-serif; font-weight: 400; font-style: italic; }
.lato-bold-italic { font-family: 'Lato', sans-serif; font-weight: 700; font-style: italic; }
.lato-black-italic { font-family: 'Lato', sans-serif; font-weight: 900; font-style: italic; }
.russo-one-regular {
font-family: 'Russo One', sans-serif;
font-weight: 700;
font-style: normal;
}

View File

@ -1,11 +0,0 @@
import modules from './modules'
import sitemap from './sitemap'
export default {
modules,
sitemap,
typescript: {
strict: true,
typeCheck: true,
},
}

View File

@ -1,12 +0,0 @@
export default [
"@nuxt/eslint",
"@nuxt/icon",
"@nuxt/image",
// '@nuxt/content',
// '@nuxt/fonts',
"@pinia/nuxt",
"@nuxtjs/tailwindcss",
"@pinia/nuxt",
// '@nuxtjs/robots',
// '@nuxtjs/sitemap',
];

View File

@ -1,12 +0,0 @@
// ./sitemap.config.ts
export default {
siteUrl: 'https://ebook.miduway.space',
// Примеры маршрутов, можно заменить на API-запрос
urls: [
{ loc: '/books/1' },
{ loc: '/books/1/title-1' },
{ loc: '/books/2/title-2' },
{ loc: '/books/2' },
],
}

21
index.html Normal file
View File

@ -0,0 +1,21 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="/src/style.css" rel="stylesheet" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap"
rel="stylesheet"
/>
<link href="https://fonts.googleapis.com/css2?family=Russo+One&display=swap" rel="stylesheet" />
<title>e-book</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@ -1,3 +0,0 @@
export { default as footerNavigation } from '@/layouts/UiFooter/_data/footer-navigation.data'
export { default as refLitres } from '@/layouts/UiFooter/_data/ref-litres.data'

View File

@ -1 +0,0 @@
export { default as headerNavigation } from '@/layouts/UiHeader/_data/header-navigation.data'

View File

@ -1,25 +0,0 @@
import config from "./config";
import { fileURLToPath, URL } from "node:url";
// import sitemap from "./config/sitemap";
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: "2025-05-15",
devtools: { enabled: true },
devServer: {
host: "localhost",
port: 4002,
},
nitro: {
output: {
dir: "./dist",
},
},
alias: {
"@": fileURLToPath(new URL("./", import.meta.url)),
},
css: ["@/assets/css/tailwind.css"],
...config,
});

15740
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +1,43 @@
{ {
"name": "e-book", "name": "e-book",
"private": true, "private": true,
"version": "0.0.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "nuxt build", "dev": "vite",
"dev": "nuxt dev", "build": "vue-tsc -b && vite build",
"generate": "nuxt generate", "preview": "vite preview",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"prepare": "husky", "prepare": "husky",
"lint": "node_modules/.bin/eslint . --fix", "lint": "node_modules/.bin/eslint . --fix",
"format": "node_modules/.bin/prettier --write ./" "format": "node_modules/.bin/prettier --write ./src/"
}, },
"dependencies": { "dependencies": {
"@nuxt/content": "^3.6.0", "@tailwindcss/vite": "^4.1.8",
"@nuxt/fonts": "^0.11.4", "@vueuse/head": "^2.0.0",
"@nuxt/icon": "^1.13.0", "pinia": "^3.0.3",
"@nuxt/image": "^1.10.0",
"@nuxtjs/robots": "^5.2.10",
"@nuxtjs/sitemap": "^7.4.0",
"@pinia/nuxt": "^0.5.5",
"@tailwindcss/postcss": "^4.1.10",
"better-sqlite3": "^11.10.0",
"husky": "^9.1.7",
"nuxt": "^3.17.5",
"nuxt-schema-org": "^5.0.5",
"swiper": "^11.2.8", "swiper": "^11.2.8",
"vue": "^3.5.16" "tailwindcss": "^4.1.8",
"vue": "^3.5.13",
"vue-router": "4"
}, },
"devDependencies": { "devDependencies": {
"@nuxt/eslint": "^1.4.1", "@tsconfig/node22": "^22.0.1",
"@nuxt/test-utils": "^3.11.3", "@types/node": "^22.14.0",
"@nuxtjs/tailwindcss": "^6.11.4", "@vitejs/plugin-vue": "^5.2.3",
"@types/node": "^22.0.0",
"@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.5.0", "@vue/eslint-config-typescript": "^14.5.0",
"autoprefixer": "^10.4.18", "@vue/tsconfig": "^0.7.0",
"eslint": "^9.29.0", "eslint": "^9.22.0",
"eslint-plugin-vue": "^10.0.0", "eslint-plugin-vue": "~10.0.0",
"postcss": "^8.5.6", "husky": "^9.1.7",
"jiti": "^2.4.2",
"npm-run-all2": "^7.0.2",
"playwright": "^1.52.0",
"prettier": "3.5.3", "prettier": "3.5.3",
"tailwindcss": "^3.4.17",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"vite": "^6.3.5",
"vite-plugin-vue-devtools": "^7.7.2",
"vue-tsc": "^2.2.8" "vue-tsc": "^2.2.8"
} },
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
} }

View File

@ -1,31 +0,0 @@
<template>
<div>
<section class="relative z-50">
<HeroBanner
class="pt-28 bg-[url('/assets/img/png/bg.png')] z-40 bg-no-repeat bg-[400px] rounded-[50px] relative after:absolute after:bg-[url('/assets/img/webp/header-flowers-4.webp')] after:top-0 after:w-[418px] after:right-0 after:h-[230px] after:z-20 after:content-[''] after:bg-contain after:bg-no-repeat after:bg-right"
/>
<ForYouSection class="mt-40 pl-16 pr-24" />
<YouNotAloneSection class="mt-40 pl-16 pr-24 mb-40" />
<FeedbackSection class="mt-40 mb-52" />
</section>
</div>
</template>
<script setup lang="ts">
import FeedbackSection from "./_ui/feedbackSection/feedbackSection.vue";
import ForYouSection from "./_ui/forYouSection/forYouSection.vue";
import HeroBanner from "./_ui/heroBanner/heroBanner.vue";
import YouNotAloneSection from "./_ui/youNotAloneSection/youNotAloneSection.vue";
useHead({
title: "Vino Galante",
meta: [
{ name: "description", content: "Онлайн магазин книг автора Vino Galante" },
],
link: [
{
rel: "canonical",
href: `https://ebook.miduway.space/`,
},
],
});
</script>

View File

@ -1,104 +0,0 @@
<template>
<section>
<UiHeading size="300" tag="H1" class="mb-5">
Политика конфиденциальности
</UiHeading>
<UiParagraph size="300"
>Настоящая политика конфиденциальности описывает, как мы собираем,
используем и защищаем личную информацию, которую пользователи
предоставляют при использовании нашего сайта.</UiParagraph
>
<UiHeading size="300" tag="H2">1. Сбор информации</UiHeading>
<UiParagraph size="300"
>При оформлении заказа на сайте вы предоставляете персональные данные,
которые включают:</UiParagraph
>
<ul class="list-disc pl-5">
<li><UiParagraph size="300">Адрес электронной почты</UiParagraph></li>
<li><UiParagraph size="300">Имя (по желанию)</UiParagraph></li>
</ul>
<UiHeading size="300" tag="H2">2. Использование информации</UiHeading>
<UiParagraph size="300"
>Ваши личные данные используются исключительно для:</UiParagraph
>
<ul class="list-disc pl-5">
<li>
<UiParagraph size="300"
>Обработки и выполнения вашего заказа.</UiParagraph
>
</li>
<li>
<UiParagraph> Связи с вами по вопросам вашего заказа. </UiParagraph>
</li>
<li>
<UiParagraph size="300">
Уведомления о важных обновлениях и новостях сайта (только если вы явно
согласились на рассылку).</UiParagraph
>
</li>
</ul>
<UiHeading size="300" tag="H2">3. Защита личных данных</UiHeading>
<UiParagraph size="300">
Мы предпринимаем необходимые меры для защиты ваших личных данных от
несанкционированного доступа, изменения, разглашения или уничтожения.
Доступ к личным данным имеют только сотрудники, непосредственно
участвующие в обработке заказов.
</UiParagraph>
<UiHeading size="300" tag="H2"
>4. Передача информации третьим лицам</UiHeading
>
<UiParagraph size="300">
Мы не передаём ваши личные данные третьим лицам, за исключением случаев,
предусмотренных законодательством Российской Федерации.
</UiParagraph>
<UiHeading size="300" tag="H2">5. Cookies (Куки-файлы)</UiHeading>
<UiParagraph size="300">
Мы используем файлы cookie, чтобы улучшить ваш пользовательский опыт. Вы
можете отключить файлы cookie в настройках вашего браузера, однако это
может ограничить доступ к некоторым функциям сайта.
</UiParagraph>
<UiHeading size="300" tag="H2"
>6. Изменения в политике конфиденциальности</UiHeading
>
<UiParagraph size="300">
Мы можем периодически обновлять настоящую политику конфиденциальности. Об
изменениях мы уведомим вас, разместив новую версию политики на данной
странице.
</UiParagraph>
<UiHeading size="300" tag="H2">7. Ваше согласие</UiHeading>
<UiParagraph size="300"
>Используя наш сайт, вы соглашаетесь с условиями данной политики
конфиденциальности.</UiParagraph
>
<UiParagraph size="300">
Если у вас возникнут вопросы или пожелания относительно обработки ваших
персональных данных, пожалуйста, свяжитесь с нами по электронной почте:
<a href="mailto:vinogalante@yandex.ru">vinogalante@yandex.ru</a>.
</UiParagraph>
</section>
</template>
<script setup lang="ts">
import UiHeading from "@/components/Typography/UiHeading.vue";
import UiParagraph from "@/components/Typography/UiParagraph.vue";
useHead({
title: "Поликита конфиденциальности | Vino Galante",
meta: [
{ name: "description", content: "Онлайн магазин книг автора Vino Galante" },
],
link: [
{
rel: "canonical",
href: `https://ebook.miduway.space/privacy`,
},
],
});
</script>

View File

@ -1,5 +0,0 @@
export default {
plugins: {
"@tailwindcss/postcss": {},
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

1
public/vite.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,3 +0,0 @@
{
"extends": "../.nuxt/tsconfig.server.json"
}

10
src/App.vue Normal file
View File

@ -0,0 +1,10 @@
<template>
<UiLayout>
<RouterView />
</UiLayout>
</template>
<script setup lang="ts">
import UiLayout from './layout/UiLayout.vue'
import { RouterView } from 'vue-router'
</script>

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 206 KiB

View File

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 251 KiB

View File

Before

Width:  |  Height:  |  Size: 409 KiB

After

Width:  |  Height:  |  Size: 409 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 613 KiB

After

Width:  |  Height:  |  Size: 613 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 496 B

After

Width:  |  Height:  |  Size: 496 B

View File

@ -11,7 +11,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { toRefs, computed } from 'vue' import { toRefs, computed } from 'vue'
import { colorVariants } from './UiButton.params.js' import { colorVariants } from './UiButton.params.ts'
const props = defineProps({ const props = defineProps({
tag: { tag: {

View File

@ -0,0 +1,9 @@
import { createRouter, createWebHistory } from 'vue-router'
import routes from './routes'
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_URL),
routes,
})
export default router

View File

@ -0,0 +1,43 @@
import type { Component } from 'vue'
interface ChlidrenRoute {
path: string
name: string
component: () => Promise<Component>
props?: boolean
}
interface Route {
path: string
name: string
component: () => Promise<Component>
props?: boolean
children?: ChlidrenRoute[]
}
const routes: Route[] = [
{
path: '/',
name: 'home',
component: () => import('@/pages/mainPage/indexPage.vue'),
},
{
path: '/books/:slug',
name: 'book-detail',
component: () => import('@/pages/books/_slug/indexBookPage.vue'),
props: true,
children: [
{
path: ':titlesSlug',
name: 'book-titles',
component: () => import('@/pages/books/_slug/_titlesSlug/indexTitlesPage.vue'),
},
],
},
{
path: '/privacy',
name: 'privacy',
component: () => import('@/pages/privacy/privacyPage.vue'),
},
]
export default routes

View File

@ -25,7 +25,7 @@
<script setup lang="ts"> <script setup lang="ts">
import UiParagraph from '@/components/Typography/UiParagraph.vue' import UiParagraph from '@/components/Typography/UiParagraph.vue'
import UiNav from '@/components/UiNav/UiNav.vue' import UiNav from '@/components/UiNav/UiNav.vue'
import { footerNavigation, refLitres } from '@/layouts/UiFooter/_data' import { footerNavigation, refLitres } from '@/layout/UiFooter/_data'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()

View File

@ -0,0 +1,3 @@
export { default as footerNavigation } from '@/layout/UiFooter/_data/footer-navigation.data'
export { default as refLitres } from '@/layout/UiFooter/_data/ref-litres.data'

View File

@ -0,0 +1 @@
export { default as headerNavigation } from '@/layout/UiHeader/_data/header-navigation.data'

View File

@ -1,6 +1,6 @@
<template> <template>
<div <div
class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-full before:w-full before:bg-[url(/assets/img/webp/footer-flowers.webp)] before:bg-no-repeat before:bg-bottom before:bg-contain before:z-40" class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-[520px] before:w-full before:bg-[url(/src/assets/img/webp/footer-flowers.webp)] before:bg-no-repeat before:bg-bottom before:bg-cover before:z-40"
:class=" :class="
route.path === '/books/1' || route.path === '/books/2' route.path === '/books/1' || route.path === '/books/2'
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]' ? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
@ -9,15 +9,15 @@
> >
<div <div
v-if="route.path === '/'" v-if="route.path === '/'"
class="relative z-10 after:content-[''] after:absolute after:top-0 after:right-0 after:w-[820px] after:h-[535px] after:bg-[url(/assets/img/webp/gradient.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-contain" class="relative z-10 after:content-[''] after:absolute after:top-0 after:right-0 after:w-[820px] after:h-[535px] after:bg-[url(/src/assets/img/webp/gradient.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-contain"
/> />
<div <div
v-if="route.path === '/'" v-if="route.path === '/'"
class="relative z-20 after:content-[''] after:absolute after:top-0 after:right-0 after:w-[1120px] after:h-[1800px] after:bg-[url(/assets/img/webp/group-flowers.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-cover" class="relative z-20 after:content-[''] after:absolute after:top-0 after:right-0 after:w-[1120px] after:h-[1800px] after:bg-[url(/src/assets/img/webp/group-flowers.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-cover"
/> />
<div <div
v-if="route.path === '/'" v-if="route.path === '/'"
class="relative z-40 before:content-[''] before:absolute before:top-0 before:left-0 before:w-[1120px] before:h-[1000px] before:bg-[url(/assets/img/webp/hero-flowers.webp)] before:bg-no-repeat before:bg-left before:bg-contain" class="relative z-40 before:content-[''] before:absolute before:top-0 before:left-0 before:w-[1120px] before:h-[1000px] before:bg-[url(/src/assets/img/webp/hero-flowers.webp)] before:bg-no-repeat before:bg-left before:bg-contain"
/> />
<UiHeader class="relative z-50" /> <UiHeader class="relative z-50" />
<UiMain class="!min-h-[1200px] text-primary relative"> <UiMain class="!min-h-[1200px] text-primary relative">

16
src/main.ts Normal file
View File

@ -0,0 +1,16 @@
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { createHead } from '@vueuse/head'
import './style.css'
import App from './App.vue'
import router from '@/config/router/index'
const app = createApp(App)
const head = createHead()
app.use(head)
app.use(createPinia())
app.use(router)
app.mount('#app')

View File

@ -1,20 +1,12 @@
<template> <template>
<div v-if="titles" class="relative z-50 min-h-screen text-white mb-[208px]"> <div v-if="titles" class="relative z-50 min-h-screen text-white mb-[208px]">
<section class="flex flex-col relative z-40 mt-40 ml-18"> <section class="flex flex-col relative z-40 mt-40 ml-18">
<UiHeading <UiHeading tag="H1" class="whitespace-pre-line [&]:font-normal mb-10 -ml-5" size="500">
tag="H1"
class="whitespace-pre-line [&]:font-normal mb-10 -ml-5"
size="500"
>
{{ titles.title }} {{ titles.title }}
</UiHeading> </UiHeading>
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div <div v-for="(section, index) in titles.sections" :key="index" class="flex flex-col gap-4">
v-for="(section, index) in titles.sections"
:key="index"
class="flex flex-col gap-4"
>
<!-- Main section title --> <!-- Main section title -->
<UiHeading tag="H2" size="300" class="text-three [&]:font-normal"> <UiHeading tag="H2" size="300" class="text-three [&]:font-normal">
{{ section.title }} {{ section.title }}
@ -43,27 +35,14 @@
</UiHeading> </UiHeading>
</div> </div>
<!-- Regular subsection --> <!-- Regular subsection -->
<UiHeading <UiHeading v-else tag="H3" size="300" class="[&]:text-gray-200 [&]:font-normal">
v-else
tag="H3"
size="300"
class="[&]:text-gray-200 [&]:font-normal"
>
{{ subsection.title }} {{ subsection.title }}
</UiHeading> </UiHeading>
<!-- Items list --> <!-- Items list -->
<ul <ul v-if="subsection.items" class="ml-6 flex flex-col gap-2 list-decimal">
v-if="subsection.items" <li v-for="(item, itemIndex) in subsection.items" :key="itemIndex">
class="ml-6 flex flex-col gap-2 list-decimal" <UiParagraph size="300" class="[&]:text-gray-200 [&]:font-normal"
>
<li
v-for="(item, itemIndex) in subsection.items"
:key="itemIndex"
>
<UiParagraph
size="300"
class="[&]:text-gray-200 [&]:font-normal"
>&nbsp;{{ item }}</UiParagraph >&nbsp;{{ item }}</UiParagraph
> >
</li> </li>
@ -71,15 +50,8 @@
<!-- Nested subsections --> <!-- Nested subsections -->
<div v-if="subsection.subsections" class="flex flex-col gap-2"> <div v-if="subsection.subsections" class="flex flex-col gap-2">
<div <div v-for="(nestedSub, nestedIndex) in subsection.subsections" :key="nestedIndex">
v-for="(nestedSub, nestedIndex) in subsection.subsections" <UiHeading tag="H4" size="300" class="[&]:text-gray-200 [&]:font-normal">
:key="nestedIndex"
>
<UiHeading
tag="H4"
size="300"
class="[&]:text-gray-200 [&]:font-normal"
>
{{ nestedSub.title }} {{ nestedSub.title }}
</UiHeading> </UiHeading>
</div> </div>
@ -94,61 +66,63 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, watch } from "vue"; import { ref, computed, watch } from 'vue'
import { useRoute } from "vue-router"; import { useRoute } from 'vue-router'
import UiHeading from "@/components/Typography/UiHeading.vue"; import UiHeading from '@/components/Typography/UiHeading.vue'
import UiParagraph from "@/components/Typography/UiParagraph.vue"; import UiParagraph from '@/components/Typography/UiParagraph.vue'
// import { useHead } from '@vueuse/head' import { useHead } from '@vueuse/head'
interface SubsectionTitle { interface SubsectionTitle {
text: string; text: string
img?: string; img?: string
} }
interface Subsection { interface Subsection {
title: string | SubsectionTitle; title: string | SubsectionTitle
items?: string[]; items?: string[]
subsections?: Array<{ subsections?: Array<{
title: string; title: string
}>; }>
} }
interface Section { interface Section {
title: string; title: string
subsections?: Subsection[]; subsections?: Subsection[]
} }
interface TitlesData { interface TitlesData {
title: string; title: string
titleMeta: string; titleMeta: string
sections: Section[]; sections: Section[]
} }
const route = useRoute(); const route = useRoute()
const currentTitlesData = ref<TitlesData | null>(null); const currentTitlesData = ref<TitlesData | null>(null)
const titles = computed(() => currentTitlesData.value); const titles = computed(() => currentTitlesData.value)
const loadTitlesData = async (slug: string) => { const loadTitlesData = async (slug: string) => {
try { try {
const module = await import(`./_data/${slug}.json`); const module = await import(`./_data/${slug}.json`)
currentTitlesData.value = module.default as TitlesData; currentTitlesData.value = module.default as TitlesData
} catch (error) { } catch (error) {
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error); console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error)
currentTitlesData.value = null; currentTitlesData.value = null
}
} }
};
watch( watch(
() => route.params.titlesSlug, () => route.params.titlesSlug,
async (newSlug) => { async (newSlug) => {
console.log('Route params changed:', route.params)
console.log('New titlesSlug:', newSlug)
if (newSlug) { if (newSlug) {
await loadTitlesData(newSlug as string); await loadTitlesData(newSlug as string)
} }
}, },
{ immediate: true } { immediate: true },
); )
watch(titles, (newTitles) => { watch(titles, (newTitles) => {
if (newTitles) { if (newTitles) {
@ -156,17 +130,17 @@ watch(titles, (newTitles) => {
title: `${newTitles.titleMeta} | Vino Galante`, title: `${newTitles.titleMeta} | Vino Galante`,
meta: [ meta: [
{ {
name: "description", name: 'description',
content: "Содержание книги Vino Galante", content: 'Содержание книги Vino Galante',
}, },
], ],
link: [ link: [
{ {
rel: "canonical", rel: 'canonical',
href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`, href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`,
}, },
], ],
}); })
} }
}); })
</script> </script>

View File

@ -4,28 +4,19 @@
<template v-if="!route.params.titlesSlug"> <template v-if="!route.params.titlesSlug">
<!--верхний блок--> <!--верхний блок-->
<section <section
class="flex flex-row relative z-40 before:content-[''] before:absolute before:top-[-140px] before:bg-top before:left-0 before:w-[1280px] before:h-[1000px] before:bg-[url(/assets/img/webp/vino-galante.webp)] before:bg-no-repeat before:bg-contain mt-40" class="flex flex-row relative z-40 before:content-[''] before:absolute before:top-[-140px] before:bg-top before:left-0 before:w-[1200px] before:h-[1000px] before:bg-[url(/src/assets/img/webp/vino-galante.webp)] before:bg-no-repeat before:bg-contain mt-40"
> >
<!--левый блок контента--> <!--левый блок контента-->
<section class="relative top-[-20px] min-w-[570px]"> <section class="relative top-[-20px] min-w-[570px]">
<div class="flex flex-col items-center"> <div class="flex flex-col items-center">
<img <img :src="book.img" :alt="book.buttonText" width="100%" height="100%" />
:src="book.img"
:alt="book.buttonText"
width="100%"
height="100%"
/>
</div> </div>
</section> </section>
<!--правый блок контента--> <!--правый блок контента-->
<section> <section>
<div class="w-11/12 h-full flex flex-col justify-start"> <div class="w-11/12 h-full flex flex-col justify-start">
<div> <div>
<UiHeading <UiHeading tag="H1" class="whitespace-pre-line [&]:font-bold" size="300">
tag="H1"
class="whitespace-pre-line [&]:font-bold"
size="300"
>
{{ book.title }} {{ book.title }}
</UiHeading> </UiHeading>
<UiParagraph class="mb-10" size="250"> <UiParagraph class="mb-10" size="250">
@ -42,13 +33,11 @@
</section> </section>
</section> </section>
<!--средний блок--> <!--средний блок-->
<section class="flex flex-row items-center ml-20 justify-between"> <section class="flex flex-row items-center ml-18 justify-between">
<!--левый--> <!--левый-->
<div class="flex flex-col items-center min-h-[310px]"> <div class="flex flex-col items-center min-h-[310px]">
<div class="flex flex-row"> <div class="flex flex-row">
<UiParagraph class="[&]:text-6xl" <UiParagraph class="[&]:text-6xl">{{ book.price }}&nbsp;</UiParagraph>
>{{ book.price }}&nbsp;</UiParagraph
>
<img src="/img/svg/books/ruble.svg" alt="ruble" /> <img src="/img/svg/books/ruble.svg" alt="ruble" />
</div> </div>
<div class="mr-10 flex items-center flex-col gap-3"> <div class="mr-10 flex items-center flex-col gap-3">
@ -64,9 +53,7 @@
<div class="min-h-[310px]"> <div class="min-h-[310px]">
<!--о книге--> <!--о книге-->
<div> <div>
<ul <ul class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap">
class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap"
>
<li class="flex flex-row mr-14 gap-3 items-center"> <li class="flex flex-row mr-14 gap-3 items-center">
<img <img
src="/img/svg/books/book-pages.svg" src="/img/svg/books/book-pages.svg"
@ -105,77 +92,50 @@
<!--навигация по книге--> <!--навигация по книге-->
<div class="mt-24"> <div class="mt-24">
<ul <ul class="flex flex-row mr-32 items-end justify-between lg:whitespace-nowrap">
class="flex flex-row mr-32 items-end justify-between lg:whitespace-nowrap" <li class="flex flex-row gap-3 items-center">
> <RouterLink to="#" class="flex flex-col items-center gap-3 cursor-pointer">
<li class="flex flex-row items-center"> <img src="/img/svg/books/read.svg" alt="Читай отрывок" width="50" height="50" />
<NuxtLink <UiParagraph size="250" as="span"> Читай отрывок </UiParagraph>
to="#" </RouterLink>
class="flex flex-col items-center cursor-pointer"
>
<div class="w-[62px] h-[58px]">
<img
src="/img/svg/books/read.svg"
alt="Читай отрывок"
width="62"
height="53"
/>
</div>
<UiParagraph size="250" as="span">
Читай отрывок
</UiParagraph>
</NuxtLink>
</li> </li>
<li class="flex flex-row gap-3 items-center"> <li class="flex flex-row gap-3 items-center">
<NuxtLink <RouterLink to="#" class="flex flex-col items-center gap-3 cursor-pointer">
to="#"
class="flex flex-col items-center gap-4 cursor-pointer"
>
<div class="w-[62px] h-[53px]">
<img <img
src="/img/svg/books/download.svg" src="/img/svg/books/download.svg"
alt="Скачай отрывок" alt="Скачай отрывок"
width="62" width="50"
height="53" height="50"
/> />
</div> <UiParagraph size="250" as="span"> Скачай отрывок </UiParagraph>
</RouterLink>
<UiParagraph size="250" as="span">
Скачай отрывок
</UiParagraph>
</NuxtLink>
</li> </li>
<li class="flex flex-row gap-3 items-center"> <li class="flex flex-row gap-3 items-center">
<NuxtLink <RouterLink
:to="`/books/${route.params.slug}/${book.hrefTitles}`" :to="{
name: 'book-titles',
params: {
slug: route.params.slug,
titlesSlug: book.hrefTitles,
},
}"
class="flex flex-col items-center gap-3 cursor-pointer" class="flex flex-col items-center gap-3 cursor-pointer"
> >
<div class="w-[62px] h-[53px]"> <img src="/img/svg/books/titles.svg" alt="Содержание" width="50" height="50" />
<img
src="/img/svg/books/down2.svg"
alt="Содержание"
width="62"
height="53"
/>
</div>
<UiParagraph size="250" as="span"> Содержание </UiParagraph> <UiParagraph size="250" as="span"> Содержание </UiParagraph>
</NuxtLink> </RouterLink>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</section> </section>
<!--нижний блок--> <!--нижний блок-->
<section class="ml-20 mt-32"> <section class="ml-18 mt-32">
<div> <div>
<UiHeading tag="H2" size="300" class="text-three"> <UiHeading tag="H2" size="300" class="text-three"> Что ты узнаешь </UiHeading>
Что ты узнаешь
</UiHeading>
<ul class="flex mt-20 flex-row items-center justify-between"> <ul class="flex mt-20 flex-row items-center justify-between">
<li <li
class="flex flex-col-reverse justify-end w-32 gap-4 h-64 items-center transition-transform transform hover:scale-110" class="flex flex-col-reverse justify-end w-38 gap-4 h-64 items-center transition-transform transform hover:scale-110"
v-for="({ svg, text }, index) in book.whoUKnows" v-for="({ svg, text }, index) in book.whoUKnows"
:key="index" :key="index"
> >
@ -188,76 +148,74 @@
</div> </div>
<div class="flex justify-center text-center mt-36"> <div class="flex justify-center text-center mt-36">
<UiParagraph> <UiParagraph>
Или купи на ЛитРес - <br /><a Или купи на ЛитРес - <br /><a class="text-three" :href="book.href" target="_blank"
class="text-three"
:href="book.href"
target="_blank"
>Реферальная ссылка для поддержки автора</a >Реферальная ссылка для поддержки автора</a
> >
</UiParagraph> </UiParagraph>
</div> </div>
</section> </section>
</template> </template>
<NuxtPage /> <RouterView />
</div> </div>
</template> </template>
<div v-else class="text-white text-center py-20">Книга не найдена.</div> <div v-else class="text-white text-center py-20">Книга не найдена.</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, watch } from "vue"; import { ref, computed, watch } from 'vue'
import { useRoute } from "#app"; import { useRoute, RouterView } from 'vue-router'
import UiHeading from "@/components/Typography/UiHeading.vue"; import UiHeading from '@/components/Typography/UiHeading.vue'
import UiParagraph from "@/components/Typography/UiParagraph.vue"; import UiParagraph from '@/components/Typography/UiParagraph.vue'
import UiButton from "@/components/UiButton/UiButton.vue"; import UiButton from '@/components/UiButton/UiButton.vue'
import { useHead } from '@vueuse/head'
interface BookDetail { interface BookDetail {
id: number; id: number
title: string; title: string
metaTitle: string; metaTitle: string
subtitle: string; subtitle: string
subdesc: string; subdesc: string
description: string; description: string
img: string; img: string
price: string; price: string
buttonText: string; buttonText: string
buttonFormat: string; buttonFormat: string
pages: string; pages: string
illust: string; illust: string
format: string; format: string
whoUKnows: Array<{ whoUKnows: Array<{
text: string; text: string
svg: string; svg: string
}>; }>
href: string; href: string
hrefTitles: string; hrefTitles: string
} }
const route = useRoute(); const route = useRoute()
const currentBookData = ref<BookDetail | null>(null); const currentBookData = ref<BookDetail | null>(null)
const book = computed(() => currentBookData.value); const book = computed(() => currentBookData.value)
const loadBookData = async (slug: string) => { const loadBookData = async (slug: string) => {
try { try {
const module = await import(`./_data/${slug}.json`); const module = await import(`./_data/${slug}.json`)
currentBookData.value = module.default as BookDetail; currentBookData.value = module.default as BookDetail
} catch (error) { } catch (error) {
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error); console.error(`Ошибка при загрузке книги с slug '${slug}':`, error)
currentBookData.value = null; currentBookData.value = null
}
} }
};
watch( watch(
() => route.params.slug, () => route.params.slug,
async (newSlug) => { async (newSlug) => {
if (newSlug) { if (newSlug) {
await loadBookData(newSlug as string); await loadBookData(newSlug as string)
} }
}, },
{ immediate: true } { immediate: true },
); )
watch(book, (newBook) => { watch(book, (newBook) => {
if (newBook) { if (newBook) {
@ -265,17 +223,17 @@ watch(book, (newBook) => {
title: `${newBook.metaTitle} | Vino Galante`, title: `${newBook.metaTitle} | Vino Galante`,
meta: [ meta: [
{ {
name: "description", name: 'description',
content: "Онлайн магазин книг автора Vino Galante", content: 'Онлайн магазин книг автора Vino Galante',
}, },
], ],
link: [ link: [
{ {
rel: "canonical", rel: 'canonical',
href: `https://ebook.miduway.space/books/${route.params.slug}`, href: `https://ebook.miduway.space/books/${route.params.slug}`,
}, },
], ],
}); })
} }
}); })
</script> </script>

View File

@ -30,13 +30,13 @@
Это поможет другим и вдохновит на новые главы. <br /> Это поможет другим и вдохновит на новые главы. <br />
Спасибо! Спасибо!
</UiParagraph> </UiParagraph>
<UiButton class="mt-10" variants="secondary">Написать отзыв</UiButton> <UiButton @click="console.log(1)" class="mt-10" variants="secondary">Написать отзыв</UiButton>
</div> </div>
</section> </section>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted } from 'vue' import { onMounted } from 'vue' // Добавляем onMounted
import Swiper from 'swiper' import Swiper from 'swiper'
import { Pagination, Autoplay } from 'swiper/modules' import { Pagination, Autoplay } from 'swiper/modules'
import UiHeading from '@/components/Typography/UiHeading.vue' import UiHeading from '@/components/Typography/UiHeading.vue'

View File

@ -2,7 +2,7 @@
<section> <section>
<div class="relative z-50"> <div class="relative z-50">
<img <img
src="/assets/img/webp/hero-banner-content.webp" src="/src/assets/img/webp/hero-banner-content.webp"
alt="Книги" alt="Книги"
width="100%" width="100%"
height="100%" height="100%"

View File

@ -1,6 +1,6 @@
<template> <template>
<section class="flex flex-row"> <section class="flex flex-row">
<div class="lg:w-5/12 pl-5 pr-5 shadow-md bg-[url('/assets/img/png/shadow.png')]"> <div class="lg:w-5/12 pl-5 pr-5 shadow-md bg-[url('/src/assets/img/png/shadow.png')]">
<UiHeading tag="H2" size="300" class="text-three mb-4 mt-5"> <UiHeading tag="H2" size="300" class="text-three mb-4 mt-5">
💔 Ты не одна. 💔 Ты не одна.
<br />Я знаю, через что ты<br /> <br />Я знаю, через что ты<br />
@ -21,13 +21,7 @@
> >
</div> </div>
<div class="lg:w-7/12"> <div class="lg:w-7/12">
<NuxtImg <img alt="meeting" width="100%" height="100%" src="/img/webp/meetingAlone.webp" />
src="/img/webp/meetingAlone.webp"
alt="meeting"
width="100%"
height="100%"
loading="lazy"
/>
</div> </div>
</section> </section>
</template> </template>

View File

@ -0,0 +1,31 @@
<template>
<div>
<section class="relative z-50">
<HeroBanner
class="pt-28 bg-[url('/src/assets/img/png/bg.png')] z-40 bg-no-repeat bg-[400px] rounded-[50px] relative after:absolute after:bg-[url('/src/assets/img/webp/header-flowers-4.webp')] after:top-0 after:w-[418px] after:right-0 after:h-[230px] after:z-20 after:content-[''] after:bg-contain after:bg-no-repeat after:bg-right"
/>
<ForYouSection class="mt-40 pl-16 pr-24" />
<YouNotAloneSection class="mt-40 pl-16 pr-24 mb-40" />
<FeedbackSection class="mt-40 mb-52" />
</section>
</div>
</template>
<script setup lang="ts">
import FeedbackSection from './_ui/feedbackSection/feedbackSection.vue'
import ForYouSection from './_ui/forYouSection/forYouSection.vue'
import HeroBanner from './_ui/heroBanner/heroBanner.vue'
import YouNotAloneSection from './_ui/youNotAloneSection/youNotAloneSection.vue'
import { useHead } from '@vueuse/head'
useHead({
title: 'Vino Galante',
meta: [{ name: 'description', content: 'Онлайн магазин книг автора Vino Galante' }],
link: [
{
rel: 'canonical',
href: `https://ebook.miduway.space/`,
},
],
})
</script>

Some files were not shown because too many files have changed in this diff Show More