migrate on nuxt3 #7

Merged
levis merged 1 commits from migration-to-nuxt into production 2025-06-17 13:49:35 +00:00
123 changed files with 20963 additions and 1815 deletions
Showing only changes of commit 727fa976bd - Show all commits

Binary file not shown.

View File

@ -1,34 +0,0 @@
name: Deploy Application
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: 0406afe7de6547e850dd62c84976c6def23a5193
- name: Install curl
run: |
if command -v apt-get &> /dev/null; then
apt-get update && apt-get install -y curl
elif command -v apk &> /dev/null; then
apk add --no-cache curl
elif command -v yum &> /dev/null; then
yum install -y curl
fi
- name: Upload config files to server
env:
GITEA_API: 'https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main'
GITEA_TOKEN: '0406afe7de6547e850dd62c84976c6def23a5193'
run: |
for file in docker-compose.yml Dockerfile; do
echo "Uploading $file"
curl -X PUT \
-H "Authorization: token $GITEA_TOKEN" \
-T "$file" \
"$GITEA_API/$file"
done

View File

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

212
.nuxt/app.config.mjs Normal file
View File

@ -0,0 +1,212 @@
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)

View File

@ -0,0 +1 @@
export default {}

262
.nuxt/components.d.ts vendored Normal file
View File

@ -0,0 +1,262 @@
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']
'ProseA': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue")['default']
'ProseBlockquote': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue")['default']
'ProseCode': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseCode.vue")['default']
'ProseEm': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue")['default']
'ProseH1': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue")['default']
'ProseH2': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue")['default']
'ProseH3': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue")['default']
'ProseH4': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue")['default']
'ProseH5': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue")['default']
'ProseH6': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue")['default']
'ProseHr': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue")['default']
'ProseImg': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue")['default']
'ProseLi': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue")['default']
'ProseOl': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue")['default']
'ProseP': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue")['default']
'ProsePre': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProsePre.vue")['default']
'ProseScript': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue")['default']
'ProseStrong': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue")['default']
'ProseTable': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue")['default']
'ProseTbody': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue")['default']
'ProseTd': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue")['default']
'ProseTh': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue")['default']
'ProseThead': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue")['default']
'ProseTr': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue")['default']
'ProseUl': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.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']
'ContentRenderer': typeof import("../node_modules/@nuxt/content/dist/runtime/components/ContentRenderer.vue")['default']
'MDC': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDC.vue")['default']
'MDCCached': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCCached.vue")['default']
'MDCRenderer': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCRenderer.vue")['default']
'MDCSlot': typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCSlot.vue")['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']>
'LazyProseA': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue")['default']>
'LazyProseBlockquote': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue")['default']>
'LazyProseCode': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseCode.vue")['default']>
'LazyProseEm': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue")['default']>
'LazyProseH1': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue")['default']>
'LazyProseH2': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue")['default']>
'LazyProseH3': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue")['default']>
'LazyProseH4': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue")['default']>
'LazyProseH5': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue")['default']>
'LazyProseH6': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue")['default']>
'LazyProseHr': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue")['default']>
'LazyProseImg': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue")['default']>
'LazyProseLi': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue")['default']>
'LazyProseOl': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue")['default']>
'LazyProseP': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue")['default']>
'LazyProsePre': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProsePre.vue")['default']>
'LazyProseScript': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue")['default']>
'LazyProseStrong': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue")['default']>
'LazyProseTable': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue")['default']>
'LazyProseTbody': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue")['default']>
'LazyProseTd': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue")['default']>
'LazyProseTh': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue")['default']>
'LazyProseThead': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue")['default']>
'LazyProseTr': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue")['default']>
'LazyProseUl': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.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']>
'LazyContentRenderer': LazyComponent<typeof import("../node_modules/@nuxt/content/dist/runtime/components/ContentRenderer.vue")['default']>
'LazyMDC': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDC.vue")['default']>
'LazyMDCCached': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCCached.vue")['default']>
'LazyMDCRenderer': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCRenderer.vue")['default']>
'LazyMDCSlot': LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCSlot.vue")['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 ProseA: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue")['default']
export const ProseBlockquote: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue")['default']
export const ProseCode: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseCode.vue")['default']
export const ProseEm: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue")['default']
export const ProseH1: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue")['default']
export const ProseH2: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue")['default']
export const ProseH3: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue")['default']
export const ProseH4: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue")['default']
export const ProseH5: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue")['default']
export const ProseH6: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue")['default']
export const ProseHr: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue")['default']
export const ProseImg: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue")['default']
export const ProseLi: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue")['default']
export const ProseOl: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue")['default']
export const ProseP: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue")['default']
export const ProsePre: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProsePre.vue")['default']
export const ProseScript: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue")['default']
export const ProseStrong: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue")['default']
export const ProseTable: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue")['default']
export const ProseTbody: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue")['default']
export const ProseTd: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue")['default']
export const ProseTh: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue")['default']
export const ProseThead: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue")['default']
export const ProseTr: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue")['default']
export const ProseUl: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.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 ContentRenderer: typeof import("../node_modules/@nuxt/content/dist/runtime/components/ContentRenderer.vue")['default']
export const MDC: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDC.vue")['default']
export const MDCCached: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCCached.vue")['default']
export const MDCRenderer: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCRenderer.vue")['default']
export const MDCSlot: typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCSlot.vue")['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 LazyProseA: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue")['default']>
export const LazyProseBlockquote: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue")['default']>
export const LazyProseCode: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseCode.vue")['default']>
export const LazyProseEm: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue")['default']>
export const LazyProseH1: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue")['default']>
export const LazyProseH2: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue")['default']>
export const LazyProseH3: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue")['default']>
export const LazyProseH4: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue")['default']>
export const LazyProseH5: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue")['default']>
export const LazyProseH6: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue")['default']>
export const LazyProseHr: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue")['default']>
export const LazyProseImg: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue")['default']>
export const LazyProseLi: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue")['default']>
export const LazyProseOl: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue")['default']>
export const LazyProseP: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue")['default']>
export const LazyProsePre: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProsePre.vue")['default']>
export const LazyProseScript: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue")['default']>
export const LazyProseStrong: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue")['default']>
export const LazyProseTable: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue")['default']>
export const LazyProseTbody: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue")['default']>
export const LazyProseTd: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue")['default']>
export const LazyProseTh: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue")['default']>
export const LazyProseThead: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue")['default']>
export const LazyProseTr: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue")['default']>
export const LazyProseUl: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.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 LazyContentRenderer: LazyComponent<typeof import("../node_modules/@nuxt/content/dist/runtime/components/ContentRenderer.vue")['default']>
export const LazyMDC: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDC.vue")['default']>
export const LazyMDCCached: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCCached.vue")['default']>
export const LazyMDCRenderer: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCRenderer.vue")['default']>
export const LazyMDCSlot: LazyComponent<typeof import("../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCSlot.vue")['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

@ -0,0 +1,35 @@
export const TypographyUiHeading = () => import('./../../components/Typography/UiHeading.vue')
export const TypographyUiParagraph = () => import('./../../components/Typography/UiParagraph.vue')
export const UiButtonParams = () => import('./../../components/UiButton/UiButton.params')
export const UiButton = () => import('./../../components/UiButton/UiButton.vue')
export const UiNav = () => import('./../../components/UiNav/UiNav.vue')
export const NuxtWelcome = () => import('./../../node_modules/nuxt/dist/app/components/welcome.vue')
export const NuxtLayout = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-layout')
export const NuxtErrorBoundary = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue')
export const ClientOnly = () => import('./../../node_modules/nuxt/dist/app/components/client-only')
export const DevOnly = () => import('./../../node_modules/nuxt/dist/app/components/dev-only')
export const ServerPlaceholder = () => import('./../../node_modules/nuxt/dist/app/components/server-placeholder')
export const NuxtLink = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-link')
export const NuxtLoadingIndicator = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-loading-indicator')
export const NuxtTime = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-time.vue')
export const NuxtRouteAnnouncer = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-route-announcer')
export const NuxtImg = () => import('./../../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue')
export const NuxtPicture = () => import('./../../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue')
export const ContentRenderer = () => import('./../../node_modules/@nuxt/content/dist/runtime/components/ContentRenderer.vue')
export const MDC = () => import('./../../node_modules/@nuxtjs/mdc/dist/runtime/components/MDC.vue')
export const MDCCached = () => import('./../../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCCached.vue')
export const MDCRenderer = () => import('./../../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCRenderer.vue')
export const MDCSlot = () => import('./../../node_modules/@nuxtjs/mdc/dist/runtime/components/MDCSlot.vue')
export const NuxtPage = () => import('./../../node_modules/nuxt/dist/pages/runtime/page')
export const NoScript = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Link = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Base = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Title = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Meta = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Style = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Head = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Html = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const Body = () => import('./../../node_modules/nuxt/dist/head/runtime/components')
export const NuxtIsland = () => import('./../../node_modules/nuxt/dist/app/components/nuxt-island')
export const globalComponents: string[] = ["ProseA","ProseBlockquote","ProseCode","ProseEm","ProseH1","ProseH2","ProseH3","ProseH4","ProseH5","ProseH6","ProseHr","ProseImg","ProseLi","ProseOl","ProseP","ProsePre","ProseScript","ProseStrong","ProseTable","ProseTbody","ProseTd","ProseTh","ProseThead","ProseTr","ProseUl","Icon"]
export const localComponents: string[] = ["TypographyUiHeading","TypographyUiParagraph","UiButtonParams","UiButton","UiNav","NuxtWelcome","NuxtLayout","NuxtErrorBoundary","ClientOnly","DevOnly","ServerPlaceholder","NuxtLink","NuxtLoadingIndicator","NuxtTime","NuxtRouteAnnouncer","NuxtImg","NuxtPicture","ContentRenderer","MDC","MDCCached","MDCRenderer","MDCSlot","NuxtPage","NoScript","Link","Base","Title","Meta","Style","Head","Html","Body","NuxtIsland"]

View File

@ -0,0 +1 @@
export const content = "H4sIAAAAAAAAE52SbW/aMBDHv8rJb9JJoerUriqq+sIFM0xZQh0HyMYU5eHSuECCEgdKq333KcDWAa207dXJ9+S7+/2/kZZgVDKQ9LbPgHfAsiWwMXekA36UZxoz7assyeFExSDZWMJA8C9UeHDHPBMmpMAgXk8I3Np2n1GrdpW6qCJdFTjEolR5NiEwpKLVpaKOLt9y+n4alKnvT8j2E9fi9y77cA2NBvxuR0zCLYcJCdyS9sF8Q9p3mQMnRpRiNC2r+a+wYUISzEo0wQgfuJcuHkU1vHoOuz3mtxKcre4WPV/Gl171ubdSTwqnV7M5N0wwluenn07PGo1/LPPOR81Qd+UoSDryo3cRf13y1uqxedb0Lu7XCarVZTbuhHQ9jYzthnPUATFJW9iDVxKHFHb26CR/Q3Bn34WolZ7hPpEw32Cts+tnjGVUqIU+IodPGrNjoPVKf5RnwVI9BLvqzQRt1qFuX4IuKqwzFoFO91uUmB8mGy8/jK3CcP5/AnIH7fpa+9pxmISNjuFmMw+MukwwUDHcwLGeXpF9/wnYnmiHQAMAAA=="

33
.nuxt/content/manifest.ts Normal file
View File

@ -0,0 +1,33 @@
export const checksums = {
"content": "v3.5.0--bgIYhpjRuV8zbHJE_CfelwKpJ_Td6YuGJwixiek8lmI"
}
export const checksumsStructure = {
"content": "bgIYhpjRuV8zbHJE_CfelwKpJ_Td6YuGJwixiek8lmI"
}
export const tables = {
"content": "_content_content",
"info": "_content_info"
}
export default {
"content": {
"type": "page",
"fields": {
"id": "string",
"title": "string",
"body": "json",
"description": "string",
"extension": "string",
"meta": "json",
"navigation": "json",
"path": "string",
"seo": "json",
"stem": "string"
}
},
"info": {
"type": "data",
"fields": {}
}
}

View File

@ -0,0 +1,5 @@
CREATE TABLE IF NOT EXISTS _content_info (id TEXT PRIMARY KEY, "ready" BOOLEAN, "structureVersion" VARCHAR, "version" VARCHAR, "__hash__" TEXT UNIQUE); -- structure
INSERT INTO _content_info VALUES ('checksum_content', false, 'bgIYhpjRuV8zbHJE_CfelwKpJ_Td6YuGJwixiek8lmI', 'v3.5.0--bgIYhpjRuV8zbHJE_CfelwKpJ_Td6YuGJwixiek8lmI', 'Y3W9btHTWafFT1Y4dZvICwj909Y4Qyfeiw6nXFbAykc'); -- meta
DROP TABLE IF EXISTS _content_content; -- structure
CREATE TABLE IF NOT EXISTS _content_content (id TEXT PRIMARY KEY, "title" VARCHAR, "body" TEXT, "description" VARCHAR, "extension" VARCHAR, "meta" TEXT, "navigation" TEXT DEFAULT true, "path" VARCHAR, "seo" TEXT DEFAULT '{}', "stem" VARCHAR, "__hash__" TEXT UNIQUE); -- structure
UPDATE _content_info SET ready = true WHERE id = 'checksum_content'; -- meta

21
.nuxt/content/types.d.ts vendored Normal file
View File

@ -0,0 +1,21 @@
import type { PageCollectionItemBase, DataCollectionItemBase } from '@nuxt/content'
declare module '@nuxt/content' {
/* eslint-disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/
interface ContentCollectionItem extends PageCollectionItemBase {}
interface PageCollections {
content: ContentCollectionItem
}
interface Collections {
content: ContentCollectionItem
}
}

2640
.nuxt/dev/index.mjs Normal file

File diff suppressed because it is too large Load Diff

1
.nuxt/dev/index.mjs.map Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
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 }

52
.nuxt/eslint.config.mjs Normal file

File diff suppressed because one or more lines are too long

38
.nuxt/imports.d.ts vendored Normal file
View File

@ -0,0 +1,38 @@
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 { queryCollection, queryCollectionSearchSections, queryCollectionNavigation, queryCollectionItemSurroundings } from '../node_modules/@nuxt/content/dist/runtime/app';
export { flatUnwrap as unwrapSlot } from '../node_modules/@nuxtjs/mdc/dist/runtime/utils/node';
export { parseMarkdown } from '../node_modules/@nuxtjs/mdc/dist/runtime/parser';
export { stringifyMarkdown } from '../node_modules/@nuxtjs/mdc/dist/runtime/stringify';
export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/@pinia/nuxt/dist/runtime/composables';
export { useNuxtDevTools } from '../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools';
export { definePageMeta } from '../node_modules/nuxt/dist/pages/runtime/composables';

View File

@ -0,0 +1 @@
{"id":"dev","timestamp":1750167863932}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{"id":"dev","timestamp":1750167863932,"matcher":{"static":{"/__nuxt_content/content/sql_dump.txt":{"prerender":true}},"wildcard":{},"dynamic":{}},"prerendered":[]}

8
.nuxt/mdc-configs.mjs Normal file
View File

@ -0,0 +1,8 @@
let configs
export function getMdcConfigs () {
if (!configs) {
configs = Promise.all([
])
}
return configs
}

213
.nuxt/mdc-highlighter.mjs Normal file
View File

@ -0,0 +1,213 @@
import { getMdcConfigs } from '#mdc-configs'
import { createOnigurumaEngine } from 'shiki/engine/oniguruma'
import { createJavaScriptRegexEngine } from "shiki/engine/javascript";
export function createShikiHighlighter({
langs = [],
themes = [],
bundledLangs = {},
bundledThemes = {},
getMdcConfigs,
options: shikiOptions,
engine
} = {}) {
let shiki;
let configs;
async function _getShiki() {
const { createHighlighterCore, addClassToHast, isSpecialLang, isSpecialTheme } = await import("shiki/core");
const { transformerNotationDiff, transformerNotationErrorLevel, transformerNotationFocus, transformerNotationHighlight } = await import("@shikijs/transformers");
const shiki2 = await createHighlighterCore({
langs,
themes,
engine: engine || createJavaScriptRegexEngine()
});
for await (const config of await getConfigs()) {
await config.shiki?.setup?.(shiki2);
}
return {
shiki: shiki2,
addClassToHast,
isSpecialLang,
isSpecialTheme,
transformers: [
transformerNotationDiff(),
transformerNotationErrorLevel(),
transformerNotationFocus(),
transformerNotationHighlight()
]
};
}
async function getShiki() {
if (!shiki) {
shiki = _getShiki();
}
return shiki;
}
async function getConfigs() {
if (!configs) {
configs = Promise.resolve(getMdcConfigs?.() || []);
}
return configs;
}
const highlighter = async (code, lang, theme, options = {}) => {
const {
shiki: shiki2,
addClassToHast,
isSpecialLang,
isSpecialTheme,
transformers: baseTransformers
} = await getShiki();
const codeToHastOptions = {
defaultColor: false,
meta: {
__raw: options.meta
}
};
if (lang === "ts-type" || lang === "typescript-type") {
lang = "typescript";
codeToHastOptions.grammarContextCode = "let a:";
} else if (lang === "vue-html" || lang === "vue-template") {
lang = "vue";
codeToHastOptions.grammarContextCode = "<template>";
}
const themesObject = { ...typeof theme === "string" ? { default: theme } : theme || {} };
const loadedThemes = shiki2.getLoadedThemes();
const loadedLanguages = shiki2.getLoadedLanguages();
if (typeof lang === "string" && !loadedLanguages.includes(lang) && !isSpecialLang(lang)) {
if (bundledLangs[lang]) {
await shiki2.loadLanguage(bundledLangs[lang]);
} else {
if (process.dev) {
console.warn(`[@nuxtjs/mdc] Language "${lang}" is not loaded to the Shiki highlighter, fallback to plain text. Add the language to "mdc.highlight.langs" to fix this.`);
}
lang = "text";
}
}
for (const [color, theme2] of Object.entries(themesObject)) {
if (typeof theme2 === "string" && !loadedThemes.includes(theme2) && !isSpecialTheme(theme2)) {
if (bundledThemes[theme2]) {
await shiki2.loadTheme(bundledThemes[theme2]);
} else {
if (process.dev) {
console.warn(`[@nuxtjs/mdc] Theme "${theme2}" is not loaded to the Shiki highlighter. Add the theme to "mdc.highlight.themes" to fix this.`);
}
themesObject[color] = "none";
}
}
}
const transformersMap = /* @__PURE__ */ new Map();
for (const transformer of baseTransformers) {
transformersMap.set(transformer.name || `transformer:${Math.random()}-${transformer.constructor.name}`, transformer);
}
for (const config of await getConfigs()) {
const newTransformers = typeof config.shiki?.transformers === "function" ? await config.shiki?.transformers(code, lang, theme, options) : config.shiki?.transformers || [];
for (const transformer of newTransformers) {
transformersMap.set(transformer.name || `transformer:${Math.random()}-${transformer.constructor.name}`, transformer);
}
}
const root = shiki2.codeToHast(code.trimEnd(), {
lang,
...codeToHastOptions,
themes: themesObject,
transformers: [
...transformersMap.values(),
{
name: "mdc:highlight",
line(node, line) {
if (options.highlights?.includes(line))
addClassToHast(node, "highlight");
node.properties.line = line;
}
},
{
name: "mdc:newline",
line(node) {
if (code?.includes("\n")) {
if (node.children.length === 0 || node.children.length === 1 && node.children[0].type === "element" && node.children[0].children.length === 1 && node.children[0].children[0].type === "text" && node.children[0].children[0].value === "") {
node.children = [{
type: "element",
tagName: "span",
properties: {
emptyLinePlaceholder: true
},
children: [{ type: "text", value: "\n" }]
}];
return;
}
const last = node.children.at(-1);
if (last?.type === "element" && last.tagName === "span") {
const text = last.children.at(-1);
if (text?.type === "text")
text.value += "\n";
}
}
}
}
]
});
const preEl = root.children[0];
const codeEl = preEl.children[0];
const wrapperStyle = shikiOptions?.wrapperStyle;
preEl.properties.style = wrapperStyle ? typeof wrapperStyle === "string" ? wrapperStyle : preEl.properties.style : "";
const styles = [];
Object.keys(themesObject).forEach((color) => {
const colorScheme = color !== "default" ? `.${color}` : "";
styles.push(
wrapperStyle ? `${colorScheme} .shiki,` : "",
`html .${color} .shiki span {`,
`color: var(--shiki-${color});`,
`background: var(--shiki-${color}-bg);`,
`font-style: var(--shiki-${color}-font-style);`,
`font-weight: var(--shiki-${color}-font-weight);`,
`text-decoration: var(--shiki-${color}-text-decoration);`,
"}"
);
styles.push(
`html${colorScheme} .shiki span {`,
`color: var(--shiki-${color});`,
`background: var(--shiki-${color}-bg);`,
`font-style: var(--shiki-${color}-font-style);`,
`font-weight: var(--shiki-${color}-font-weight);`,
`text-decoration: var(--shiki-${color}-text-decoration);`,
"}"
);
});
return {
tree: codeEl.children,
className: Array.isArray(preEl.properties.class) ? preEl.properties.class.join(" ") : preEl.properties.class,
inlineStyle: preEl.properties.style,
style: styles.join("")
};
};
return highlighter;
}
const bundledLangs = {
"javascript": () => import('@shikijs/langs/javascript').then(r => r.default || r),
"js": () => import('@shikijs/langs/javascript').then(r => r.default || r),
"jsx": () => import('@shikijs/langs/jsx').then(r => r.default || r),
"json": () => import('@shikijs/langs/json').then(r => r.default || r),
"typescript": () => import('@shikijs/langs/typescript').then(r => r.default || r),
"ts": () => import('@shikijs/langs/typescript').then(r => r.default || r),
"tsx": () => import('@shikijs/langs/tsx').then(r => r.default || r),
"vue": () => import('@shikijs/langs/vue').then(r => r.default || r),
"css": () => import('@shikijs/langs/css').then(r => r.default || r),
"html": () => import('@shikijs/langs/html').then(r => r.default || r),
"shellscript": () => import('@shikijs/langs/shellscript').then(r => r.default || r),
"bash": () => import('@shikijs/langs/shellscript').then(r => r.default || r),
"sh": () => import('@shikijs/langs/shellscript').then(r => r.default || r),
"shell": () => import('@shikijs/langs/shellscript').then(r => r.default || r),
"zsh": () => import('@shikijs/langs/shellscript').then(r => r.default || r),
"markdown": () => import('@shikijs/langs/markdown').then(r => r.default || r),
"md": () => import('@shikijs/langs/markdown').then(r => r.default || r),
"mdc": () => import('@shikijs/langs/mdc').then(r => r.default || r),
"yaml": () => import('@shikijs/langs/yaml').then(r => r.default || r),
"yml": () => import('@shikijs/langs/yaml').then(r => r.default || r),
}
const bundledThemes = {
"github-light": () => import('@shikijs/themes/github-light').then(r => r.default || r),
"github-dark": () => import('@shikijs/themes/github-dark').then(r => r.default || r),
}
const options = {"theme":{"default":"github-light","dark":"github-dark"}}
const engine = createOnigurumaEngine(() => import('shiki/wasm'))
const highlighter = createShikiHighlighter({ bundledLangs, bundledThemes, options, getMdcConfigs, engine })
export default highlighter

View File

@ -0,0 +1 @@
export { default } from "/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue"

12
.nuxt/mdc-imports.mjs Normal file
View File

@ -0,0 +1,12 @@
import _RemarkEmoji from 'remark-emoji'
import _Highlight from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxtjs/mdc/dist/runtime/highlighter/rehype-nuxt.js'
export const remarkPlugins = {
'remark-emoji': { instance: _RemarkEmoji },
}
export const rehypePlugins = {
'highlight': { instance: _Highlight, options: {} },
}
export const highlight = {"theme":{"default":"github-light","dark":"github-dark"}}

17
.nuxt/nitro.json Normal file
View File

@ -0,0 +1,17 @@
{
"date": "2025-06-17T13:44:26.593Z",
"preset": "nitro-dev",
"framework": {
"name": "nuxt",
"version": "3.17.5"
},
"versions": {
"nitro": "2.11.12"
},
"dev": {
"pid": 62551,
"workerAddress": {
"socketPath": "/var/folders/jg/1yt_y5qd6kn2wn59rft1k_bh0000gn/T/nitro-worker-62551-6-4-3412.sock"
}
}
}

View File

View File

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

View File

@ -0,0 +1,15 @@
import { createRequire } from 'node:module'
const require = createRequire(import.meta.url)
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 = {
}

31
.nuxt/nuxt.d.ts vendored Normal file
View File

@ -0,0 +1,31 @@
/// <reference types="@nuxt/icon" />
/// <reference types="@nuxt/image" />
/// <reference types="@nuxt/fonts" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@nuxt/devtools" />
/// <reference types="@nuxt/telemetry" />
/// <reference types="@nuxt/content" />
/// <reference types="@nuxt/eslint" />
/// <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 path="content/types.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 {}

9
.nuxt/nuxt.json Normal file
View File

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

210
.nuxt/schema/nuxt.schema.d.ts vendored Normal file
View File

@ -0,0 +1,210 @@
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

@ -0,0 +1,263 @@
{
"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

@ -0,0 +1,14 @@
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 6/17/2025, 5:45:20 PM
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;

239
.nuxt/tsconfig.json Normal file
View File

@ -0,0 +1,239 @@
{
"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/*"
],
"#content/components": [
"./content/components"
],
"#content/manifest": [
"./content/manifest"
],
"#mdc-configs": [
"./mdc-configs"
],
"#mdc-highlighter": [
"./mdc-highlighter"
],
"#mdc-imports": [
"./mdc-imports"
],
"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/dev.json"
],
"#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/@nuxtjs/mdc/runtime",
"../node_modules/@nuxtjs/mdc/dist/runtime",
"../node_modules/@nuxt/content/runtime",
"../node_modules/@nuxt/content/dist/runtime",
"../node_modules/@nuxt/fonts/runtime",
"../node_modules/@nuxt/fonts/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/@nuxtjs/mdc/node_modules",
"../node_modules/@nuxt/content/node_modules",
"../node_modules/@nuxt/fonts/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/@nuxtjs/mdc/runtime/server",
"../node_modules/@nuxtjs/mdc/dist/runtime/server",
"../node_modules/@nuxt/content/runtime/server",
"../node_modules/@nuxt/content/dist/runtime/server",
"../node_modules/@nuxt/fonts/runtime/server",
"../node_modules/@nuxt/fonts/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"
]
}

184
.nuxt/tsconfig.server.json Normal file
View File

@ -0,0 +1,184 @@
{
"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/*"
],
"#content/components": [
"./content/components"
],
"#content/manifest": [
"./content/manifest"
],
"#mdc-configs": [
"./mdc-configs"
],
"#mdc-highlighter": [
"./mdc-highlighter"
],
"#mdc-imports": [
"./mdc-imports"
],
"pinia": [
"../node_modules/pinia/dist/pinia"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables/v3"
],
"#nuxt-icon-server-bundle": [
"./nuxt-icon-server-bundle"
],
"#content/dump": [
"./content/database.compressed"
],
"#content/adapter": [
"./db0/connectors/better-sqlite3"
],
"#content/local-adapter": [
"./db0/connectors/better-sqlite3"
]
},
"lib": [
"esnext",
"webworker",
"dom.iterable"
]
},
"include": [
"./content/types.d.ts",
"./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/@nuxtjs/mdc/runtime/server",
"../node_modules/@nuxt/content/runtime/server",
"../node_modules/@nuxt/fonts/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/@nuxtjs/mdc/node_modules",
"../node_modules/@nuxt/content/node_modules",
"../node_modules/@nuxt/fonts/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"
]
}

7
.nuxt/types/app-defaults.d.ts vendored Normal file
View File

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

225
.nuxt/types/app.config.d.ts vendored Normal file
View File

@ -0,0 +1,225 @@
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> { }
}

25
.nuxt/types/build.d.ts vendored Normal file
View File

@ -0,0 +1,25 @@
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/devtools/settings.mjs";
declare module "#build/runtime.vue-devtools-client.RNR9KcYoF04LVd8COrYSgCOwr5BloFNhXfqWe612fms.js";
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";

1
.nuxt/types/builder-env.d.ts vendored Normal file
View File

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

380
.nuxt/types/imports.d.ts vendored Normal file
View File

@ -0,0 +1,380 @@
// 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 parseMarkdown: typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/parser')['parseMarkdown']
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 queryCollection: typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollection']
const queryCollectionItemSurroundings: typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionItemSurroundings']
const queryCollectionNavigation: typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionNavigation']
const queryCollectionSearchSections: typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionSearchSections']
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 stringifyMarkdown: typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/stringify')['stringifyMarkdown']
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 unwrapSlot: typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/utils/node')['flatUnwrap']
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 useNuxtDevTools: typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools')['useNuxtDevTools']
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 parseMarkdown: UnwrapRef<typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/parser')['parseMarkdown']>
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 queryCollection: UnwrapRef<typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollection']>
readonly queryCollectionItemSurroundings: UnwrapRef<typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionItemSurroundings']>
readonly queryCollectionNavigation: UnwrapRef<typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionNavigation']>
readonly queryCollectionSearchSections: UnwrapRef<typeof import('../../node_modules/@nuxt/content/dist/runtime/app')['queryCollectionSearchSections']>
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 stringifyMarkdown: UnwrapRef<typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/stringify')['stringifyMarkdown']>
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 unwrapSlot: UnwrapRef<typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/utils/node')['flatUnwrap']>
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 useNuxtDevTools: UnwrapRef<typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools')['useNuxtDevTools']>
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']>
}
}

7
.nuxt/types/layouts.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
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>
}
}

7
.nuxt/types/middleware.d.ts vendored Normal file
View File

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

14
.nuxt/types/nitro-config.d.ts vendored Normal file
View File

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

150
.nuxt/types/nitro-imports.d.ts vendored Normal file
View File

@ -0,0 +1,150 @@
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 parseMarkdown: typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/parser')['parseMarkdown']
const promisifyNodeListener: typeof import('../../node_modules/h3')['promisifyNodeListener']
const proxyRequest: typeof import('../../node_modules/h3')['proxyRequest']
const queryCollection: typeof import('../../node_modules/@nuxt/content/dist/runtime/nitro')['queryCollection']
const queryCollectionItemSurroundings: typeof import('../../node_modules/@nuxt/content/dist/runtime/nitro')['queryCollectionItemSurroundings']
const queryCollectionNavigation: typeof import('../../node_modules/@nuxt/content/dist/runtime/nitro')['queryCollectionNavigation']
const queryCollectionSearchSections: typeof import('../../node_modules/@nuxt/content/dist/runtime/nitro')['queryCollectionSearchSections']
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 stringifyMarkdown: typeof import('../../node_modules/@nuxtjs/mdc/dist/runtime/stringify')['stringifyMarkdown']
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';
export { queryCollection, queryCollectionSearchSections, queryCollectionNavigation, queryCollectionItemSurroundings } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxt/content/dist/runtime/nitro';
export { parseMarkdown } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxtjs/mdc/dist/runtime/parser';
export { stringifyMarkdown } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxtjs/mdc/dist/runtime/stringify';

6
.nuxt/types/nitro-middleware.d.ts vendored Normal file
View File

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

34
.nuxt/types/nitro-nuxt.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
/// <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>
}
}

26
.nuxt/types/nitro-routes.d.ts vendored Normal file
View File

@ -0,0 +1,26 @@
// 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>>>>
}
'/__nuxt_content/:collection/sql_dump.txt': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/content/dist/runtime/presets/node/database-handler').default>>>>
}
'/__nuxt_content/:collection/query': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/content/dist/runtime/api/query.post').default>>>>
}
'/_ipx/**': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/image/dist/runtime/ipx').default>>>>
}
}
}
export {}

3
.nuxt/types/nitro.d.ts vendored Normal file
View File

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

40
.nuxt/types/plugins.d.ts vendored Normal file
View File

@ -0,0 +1,40 @@
// 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/browser-devtools-timing.client.js")> &
InjectionType<typeof import("../../node_modules/@nuxt/content/dist/runtime/plugins/websocket.dev.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/dist/pages/runtime/plugins/check-if-page-unused.js")> &
InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.server.js")> &
InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.client.js")> &
InjectionType<typeof import("../../node_modules/@nuxt/icon/dist/runtime/plugin.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/dev-server-logs.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-if-layout-used.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/prerender.server.js")>
declare module '#app' {
interface NuxtApp extends NuxtAppInjections { }
interface NuxtAppLiterals {
pluginName: 'vue-devtools-client' | 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:browser-devtools-timing' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | 'nuxt:checkIfPageUnused' | '@nuxt/icon' | 'nuxt:checkIfLayoutUsed'
}
}
declare module 'vue' {
interface ComponentCustomProperties extends NuxtAppInjections { }
}
export { }

268
.nuxt/types/schema.d.ts vendored Normal file
View File

@ -0,0 +1,268 @@
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 `@nuxtjs/mdc`
*/
["mdc"]: typeof import("@nuxtjs/mdc").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/content`
*/
["content"]: typeof import("@nuxt/content").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/fonts`
*/
["fonts"]: typeof import("@nuxt/fonts").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 `@nuxtjs/mdc`
*/
["mdc"]?: typeof import("@nuxtjs/mdc").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/content`
*/
["content"]?: typeof import("@nuxt/content").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/fonts`
*/
["fonts"]?: typeof import("@nuxt/fonts").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>] | ["@nuxtjs/mdc", Exclude<NuxtConfig["mdc"], boolean>] | ["@nuxt/content", Exclude<NuxtConfig["content"], boolean>] | ["@nuxt/fonts", Exclude<NuxtConfig["fonts"], 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 `@nuxtjs/mdc`
* @see https://www.npmjs.com/package/@nuxtjs/mdc
*/
["mdc"]: typeof import("@nuxtjs/mdc").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/content`
* @see https://content.nuxt.com
*/
["content"]: typeof import("@nuxt/content").default extends NuxtModule<infer O> ? O : Record<string, any>
/**
* Configuration for `@nuxt/fonts`
* @see https://www.npmjs.com/package/@nuxt/fonts
*/
["fonts"]: typeof import("@nuxt/fonts").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 `@nuxtjs/mdc`
* @see https://www.npmjs.com/package/@nuxtjs/mdc
*/
["mdc"]?: typeof import("@nuxtjs/mdc").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/content`
* @see https://content.nuxt.com
*/
["content"]?: typeof import("@nuxt/content").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
/**
* Configuration for `@nuxt/fonts`
* @see https://www.npmjs.com/package/@nuxt/fonts
*/
["fonts"]?: typeof import("@nuxt/fonts").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>] | ["@nuxtjs/mdc", Exclude<NuxtConfig["mdc"], boolean>] | ["@nuxt/content", Exclude<NuxtConfig["content"], boolean>] | ["@nuxt/fonts", Exclude<NuxtConfig["fonts"], 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>,
},
content: {
databaseVersion: string,
version: string,
database: {
type: string,
filename: string,
},
localDatabase: {
type: string,
filename: string,
},
integrityCheck: boolean,
},
}
interface PublicRuntimeConfig {
content: {
wsUrl: string,
},
mdc: {
components: {
prose: boolean,
map: any,
},
headings: {
anchorLinks: {
h1: boolean,
h2: boolean,
h3: boolean,
h4: boolean,
h5: boolean,
h6: boolean,
},
},
},
}
}
declare module 'vue' {
interface ComponentCustomProperties {
$config: RuntimeConfig
}
}

0
.nuxt/types/vue-shim.d.ts vendored Normal file
View File

View File

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

View File

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

View File

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

@ -0,0 +1,18 @@
<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>

42
assets/css/tailwind.css Normal file
View File

@ -0,0 +1,42 @@
@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

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">
import { toRefs, computed } from 'vue'
import { colorVariants } from './UiButton.params.ts'
import { colorVariants } from './UiButton.params.js'
const props = defineProps({
tag: {

11
config/index.ts Normal file
View File

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

12
config/modules.ts Normal file
View File

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

12
config/sitemap.ts Normal file
View File

@ -0,0 +1,12 @@
// ./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' },
],
}

View File

@ -1,21 +0,0 @@
<!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

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
<template>
<div
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="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="
route.path === '/books/1' || route.path === '/books/2'
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
@ -9,15 +9,15 @@
>
<div
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(/src/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(/assets/img/webp/gradient.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-contain"
/>
<div
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(/src/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(/assets/img/webp/group-flowers.webp)] after:bg-no-repeat after:bg-[right_top] after:bg-cover"
/>
<div
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(/src/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(/assets/img/webp/hero-flowers.webp)] before:bg-no-repeat before:bg-left before:bg-contain"
/>
<UiHeader class="relative z-50" />
<UiMain class="!min-h-[1200px] text-primary relative">

25
nuxt.config.ts Normal file
View File

@ -0,0 +1,25 @@
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,
});

15870
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@ -36,7 +36,7 @@
</template>
<script setup lang="ts">
import { onMounted } from 'vue' // Добавляем onMounted
import { onMounted } from 'vue'
import Swiper from 'swiper'
import { Pagination, Autoplay } from 'swiper/modules'
import UiHeading from '@/components/Typography/UiHeading.vue'

View File

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

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