44 Commits

Author SHA1 Message Date
727fa976bd migrate on nuxt3 2025-06-17 17:46:03 +04:00
7634a3d616 fix
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-17 11:27:13 +04:00
a30c08c50c del clg
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-15 19:23:58 +04:00
0d91acc0cf fix sitemap
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-15 19:21:23 +04:00
b65eabb723 fix sitemap
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-15 19:19:20 +04:00
102ab3991b change font-size 20px -> 15px
All checks were successful
Deploy Application / deploy (push) Successful in 5s
feat privacy page
feat titles-page
2025-06-15 19:15:32 +04:00
e4176ba9c9 fix ceo
Some checks failed
Deploy Application / deploy (push) Failing after 30s
2025-06-14 20:39:58 +04:00
9fc338edd1 add suspense
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-14 20:30:41 +04:00
886da93809 fix books img
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-14 19:37:05 +04:00
615a89a1c6 feat books pages
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-14 18:14:50 +04:00
991a8e0197 add shadow+change webp -> svg icons+add scale
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-14 12:19:01 +04:00
5a62633019 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-14 10:07:02 +04:00
7a815b00b4 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-14 10:01:17 +04:00
95167a6f8a full page
All checks were successful
Deploy Application / deploy (push) Successful in 8s
2025-06-13 22:53:58 +04:00
f01c6ada17 fix content quash
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-13 13:50:13 +04:00
79f4166946 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 7s
2025-06-13 13:48:04 +04:00
ad7efc2223 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 7s
2025-06-13 13:39:25 +04:00
6fe7509bdb fix hero-img + add section
All checks were successful
Deploy Application / deploy (push) Successful in 7s
2025-06-13 13:32:47 +04:00
1be8ebd16f add heroblock
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-13 11:35:23 +04:00
8c2f2194d9 fix ui
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-13 09:23:14 +04:00
416c384f19 add hero-banner
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-13 00:31:27 +04:00
943d201a84 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-12 23:47:59 +04:00
c768158ed0 fix footer
All checks were successful
Deploy Application / deploy (push) Successful in 11s
2025-06-12 21:43:32 +04:00
ab316f2355 fix url in header
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 21:41:33 +04:00
fbce353c1f Update router
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 21:37:55 +04:00
002ebfe362 Merge pull request 'chore: update' (#3) from develop into production
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #3
2025-06-12 17:30:48 +00:00
42235420b9 chore: update
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 21:30:21 +04:00
2cbdb66a4c Merge pull request 'feat: add footer content' (#2) from develop into production
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #2
2025-06-11 22:32:10 +00:00
5babc5db35 feat: add footer content
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-12 02:31:24 +04:00
cd309dc250 Merge pull request 'add component base' (#1) from develop into production
All checks were successful
Deploy Application / deploy (push) Successful in 5s
Reviewed-on: #1
2025-06-11 22:11:09 +00:00
05ecc605df add component base
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 02:10:43 +04:00
fb85eb8e7b first commit
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 01:50:13 +04:00
e9fb0e5708 first commit
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 01:37:49 +04:00
bd97f42b46 first commit
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-12 01:35:20 +04:00
d30bcc7d7d first commit
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-12 01:24:18 +04:00
504e0d1b9c first commit
All checks were successful
Deploy Application / deploy (push) Successful in 11s
2025-06-12 01:22:41 +04:00
b3fc119fff first commit
All checks were successful
Deploy Application / deploy (push) Successful in 12s
2025-06-12 00:27:53 +04:00
17ca86c09c first commit
All checks were successful
Deploy Application / deploy (push) Successful in 13s
2025-06-12 00:26:45 +04:00
e2af4c4d8c first commit
All checks were successful
Deploy Application / deploy (push) Successful in 13s
2025-06-11 23:23:08 +04:00
a98fc9e5a2 fix commit
All checks were successful
Deploy Application / deploy (push) Successful in 14s
2025-06-11 23:00:32 +04:00
9dba6ebd45 add curl
All checks were successful
Deploy Application / deploy (push) Successful in 5s
2025-06-11 22:04:11 +04:00
cecff2b795 ашч commit
All checks were successful
Deploy Application / deploy (push) Successful in 6s
2025-06-11 22:02:48 +04:00
f3528d64b8 first commit
Some checks failed
Deploy Application / deploy (push) Failing after 42s
2025-06-11 22:01:09 +04:00
f150cd1ba4 first commit
Some checks failed
Deploy Application / deploy (push) Failing after 43s
2025-06-11 21:59:45 +04:00
164 changed files with 22777 additions and 1305 deletions

Binary file not shown.

View File

@ -1,63 +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: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build Docker image
uses: docker/build-push-action@v4
with:
context: .
push: false
load: true
tags: ebook:latest
- name: Save Docker image
run: |
docker save ebook:latest | gzip > ebook.tar.gz
- name: Deploy via API
env:
GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main"
GITEA_TOKEN: "0406afe7de6547e850dd62c84976c6def23a5193"
SERVER_API: "https://ebook.miduway.space/"
run: |
# Устанавливаем зависимости без sudo
apt-get update && apt-get install -y curl
# Загружаем конфигурационные файлы
for file in docker-compose.yml nginx.conf ebook.conf; do
echo "Uploading $file"
curl -X PUT \
-H "Authorization: token $GITEA_TOKEN" \
-T "$file" \
"$GITEA_API/$file"
done
# Загружаем Docker образ
echo "Uploading Docker image..."
curl -X PUT \
-H "Authorization: token $GITEA_TOKEN" \
-T "ebook.tar.gz" \
"$GITEA_API/ebook.tar.gz"
# Выполняем деплой на сервер с игнорированием SSL
echo "Deploying to server..."
curl -k -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"action": "deploy",
"repository": "levis/ebook",
"branch": "main"
}' \
"$SERVER_API"

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,30 +1,13 @@
# Build stage FROM node:20 as builder
FROM node:20-alpine as build
WORKDIR /app WORKDIR /app
COPY package*.json ./
# Copy package files
COPY package.json yarn.lock ./
# Install dependencies
RUN npm install RUN npm install
# Copy source code
COPY . . COPY . .
# Build the application
RUN npm run build RUN npm run build
# Production stage
FROM nginx:alpine FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
# Copy built assets from build stage COPY ebook.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
# Copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Expose port 80
EXPOSE 80 EXPOSE 80
CMD ["nginx", "-g", "daemon off;"] CMD ["nginx", "-g", "daemon off;"]

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
``` # pnpm
cp frontend.env frontend.env.example pnpm install
# yarn
yarn install
# bun
bun install
``` ```
Устанавливаем зависимости ## Development Server
``` Start the development server on `http://localhost:3000`:
yarn
```bash
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
``` ```
Запуск dev ## Production
``` Build the application for production:
vite
```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;
}

BIN
assets/img/png/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
assets/img/png/shadow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 496 B

After

Width:  |  Height:  |  Size: 496 B

View File

@ -0,0 +1,48 @@
<template>
<component
:is="tag"
class="font-semibold"
:class="[
{
'text-3xl md:text-4xl lg:text-5xl 2xl:text-6xl': size === '600',
}, // H1
{
'text-3xl md:text-4xl 2xl:text-5xl': size === '500',
}, // H2
{
'text-2xl md:text-3xl 2xl:text-4xl': size === '400',
}, // H3
{
'text-xl lg:text-2xl 2xl:text-3xl': size === '300',
}, // H4
{
'text-lg md:text-xl': size === '200',
}, // H5
]"
>
<slot />
</component>
</template>
<script setup lang="ts">
import { toRefs } from 'vue'
const props = defineProps({
/**
* Tag name: h1 to h6
*/
tag: {
type: String,
default: 'h2',
},
/**
* Heading size: '600' (largest) to '200' (smallest)
*/
size: {
type: String,
default: '500',
},
})
const { size, tag } = toRefs(props)
</script>

View File

@ -0,0 +1,48 @@
<template>
<component
:is="as"
class="text-primary"
:class="[
{
'text-2xl lg:text-3xl 2xl:text-4xl': size === '600',
}, // 24px
{
'text-xl lg:text-2xl 2xl:text-3xl': size === '500',
}, // 20px
{
'text-lg lg:text-xl 2xl:text-2xl': size === '400',
}, // 18px
{
'text-lg lg:text-[20px]': size === '300',
}, // 16px
{
'text-[15px]': size === '250',
}, // 15px
{
'text-[13px]': size === '200',
}, // 14px
]"
>
<slot />
</component>
</template>
<script setup lang="ts">
import { toRefs } from 'vue'
const props = defineProps({
as: {
type: String,
default: 'p',
},
/**
* Tailwind text size from 600 to 200
*/
size: {
type: String,
default: '300',
},
})
const { size, as } = toRefs(props)
</script>

View File

@ -0,0 +1,13 @@
export const colorVariants = {
primary: ['bg-accent-50', 'text-primary', 'hover:bg-accent-100', 'active:bg-accent-150'],
secondary: [
'bg-transparent',
'text-primary',
'hover:bg-accent-50',
'border-accent-50',
'border',
'hover:bg-accent-100',
'active:bg-accent-150',
'cursor-pointer',
],
}

View File

@ -0,0 +1,45 @@
<template>
<component
:is="tag"
class="px-14 py-4 rounded-[20px] text-[30px] cursor-pointer shadow-[0px_16px_50px_-16px_rgba(229,30,125,1)]"
:class="[baseStyle, size]"
data-ui="ui-button"
>
<slot />
</component>
</template>
<script setup lang="ts">
import { toRefs, computed } from 'vue'
import { colorVariants } from './UiButton.params.js'
const props = defineProps({
tag: {
type: String,
default: 'button',
},
variants: {
type: String as () => 'primary' | 'secondary',
default: 'primary',
validator: (value) => {
return ['primary', 'secondary'].includes(value as string)
},
},
size: {
type: String,
default: 'font-bold',
},
})
const { tag, variants, size } = toRefs(props)
const colorClasses: Record<'primary' | 'secondary', string[]> = {
primary: colorVariants.primary,
secondary: colorVariants.secondary,
}
const baseStyle = computed(() => {
const variant = variants.value as 'primary' | 'secondary'
return colorClasses[variant]?.join(' ') || ''
})
</script>

View File

@ -0,0 +1,31 @@
<template>
<UiParagraph
class="cursor-pointer"
as="span"
size="250"
v-for="({ path, name, target }, index) in navContent"
:key="index"
data-ui="ui-nav"
>
<component
data-ui="ui-nav-btn"
:is="target ? 'a' : 'RouterLink'"
:to="path"
:href="path"
:target="target"
>{{ name }}</component
>
</UiParagraph>
</template>
<script setup lang="ts">
import UiParagraph from '../Typography/UiParagraph.vue'
interface NavContent {
name: string
path: string
target?: string
}
const { navContent = undefined } = defineProps<{
navContent: NavContent[] | undefined
}>()
</script>

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

@ -15,29 +15,17 @@ curl -k -H "Authorization: token $GITEA_TOKEN" \
"$GITEA_URL/api/v1/repos/levis/ebook/raw/main/docker-compose.yml" "$GITEA_URL/api/v1/repos/levis/ebook/raw/main/docker-compose.yml"
curl -k -H "Authorization: token $GITEA_TOKEN" \ curl -k -H "Authorization: token $GITEA_TOKEN" \
-o nginx.conf \ -o Dockerfile \
"$GITEA_URL/api/v1/repos/levis/ebook/raw/main/nginx.conf" "$GITEA_URL/api/v1/repos/levis/ebook/raw/main/Dockerfile"
curl -k -H "Authorization: token $GITEA_TOKEN" \
-o ebook.conf \
"$GITEA_URL/api/v1/repos/levis/ebook/raw/main/ebook.conf"
curl -k -H "Authorization: token $GITEA_TOKEN" \
-o ebook.tar.gz \
"$GITEA_URL/api/v1/repos/levis/ebook/raw/main/ebook.tar.gz"
# Загружаем Docker образ
echo "Loading Docker image..."
gunzip -c ebook.tar.gz | docker load
# Копируем файлы в директорию деплоя # Копируем файлы в директорию деплоя
cp -f docker-compose.yml nginx.conf ebook.conf $DEPLOY_DIR/ cp -f docker-compose.yml Dockerfile $DEPLOY_DIR/
# Переходим в директорию деплоя # Переходим в директорию деплоя
cd $DEPLOY_DIR cd $DEPLOY_DIR
# Перезапускаем контейнеры # Собираем и запускаем контейнеры
docker-compose pull docker-compose build
docker-compose up -d docker-compose up -d
docker system prune -f docker system prune -f

View File

@ -5,8 +5,8 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
ports: expose:
- "3000:80" - "80"
restart: unless-stopped restart: unless-stopped
environment: environment:
- NODE_ENV=production - NODE_ENV=production

View File

@ -1,14 +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" />
<title>e-book</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@ -0,0 +1,32 @@
<template>
<footer class="mx-auto container max-2xl:pl-4">
<div class="relative z-50 max-w-[1280px] mx-auto">
<div class="flex justify-between mb-5">
<UiNav :nav-content="footerNavigation" />
</div>
<div class="pb-7 flex justify-between">
<div>
<UiParagraph as="span" size="250"
>По всем вопросам:<br />
<a href="mailto:vinogalante@yandex.ru" target="_blank">
vinogalante@yandex.ru
</a></UiParagraph
>
</div>
<div class="flex flex-col [&>[data-ui=ui-nav]]:text-secondary" v-if="route.path === '/'">
<UiNav :nav-content="refLitres" />
</div>
</div>
</div>
</footer>
</template>
<script setup lang="ts">
import UiParagraph from '@/components/Typography/UiParagraph.vue'
import UiNav from '@/components/UiNav/UiNav.vue'
import { footerNavigation, refLitres } from '@/layouts/UiFooter/_data'
import { useRoute } from 'vue-router'
const route = useRoute()
</script>

View File

@ -0,0 +1,36 @@
const footerNavigation = [
{
name: 'Главная',
path: '/',
},
{
name: 'Книга I',
path: '/books/1',
},
{
name: 'Книга II',
path: '/books/2',
},
{
name: 'Отзывы',
path: '/feedback',
},
{
name: 'Корзина',
path: '/cart',
},
{
name: 'Оплата',
path: '/buy',
},
{
name: 'Вопрос-ответ',
path: '/question',
},
{
name: 'Политика конфидинциальности',
path: '/privacy',
},
]
export default footerNavigation

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,14 @@
const refLitres = [
{
name: 'Реферальная ссылка на ЛитРес - Книга I',
path: 'https://www.litres.ru/58125553/',
target: '_blank',
},
{
name: 'Реферальная ссылка на ЛитРес - Книга II',
path: 'https://www.litres.ru/vino-galante/kak-vlubit-v-sebya-lubogo-tonkaya-igra/',
target: '_blank',
},
]
export default refLitres

View File

@ -0,0 +1,25 @@
<template>
<header class="py-4 container mx-auto max-2xl:pl-4">
<div class="flex flex-row-reverse justify-end gap-4 items-center max-w-[1280px] mx-auto">
<slot name="content" />
<div class="flex items-center gap-32">
<div class="russo-one-regular cursor-pointer !text-primary">
<UiParagraph as="span" class="[&]:text-5xl">
<RouterLink to="/"> Vino Galante </RouterLink>
</UiParagraph>
</div>
<div class="flex flex-wrap space-x-10">
<UiNav :nav-content="headerNavigation" />
</div>
</div>
</div>
<slot name="right-icons" />
</header>
</template>
<script setup lang="ts">
import UiNav from '@/components/UiNav/UiNav.vue'
import { RouterLink } from 'vue-router'
import { headerNavigation } from './_data'
import UiParagraph from '@/components/Typography/UiParagraph.vue'
</script>

View File

@ -0,0 +1,24 @@
const headerNavigation = [
{
name: 'Главная',
path: '/',
},
{
name: 'Книга I',
path: '/books/1',
},
{
name: 'Книга II',
path: '/books/2',
},
{
name: 'Купить',
path: '/buy',
},
{
name: 'Отзывы',
path: '/feedback',
},
]
export default headerNavigation

View File

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

11
layouts/UiMain/UiMain.vue Normal file
View File

@ -0,0 +1,11 @@
<template>
<main class="mt-10 px-6 min-h-screen h-full">
<div class="max-w-[1280px] mx-auto">
<Suspense>
<slot />
</Suspense>
</div>
</main>
</template>
<script setup lang="ts"></script>

39
layouts/default.vue Normal file
View File

@ -0,0 +1,39 @@
<template>
<div
class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-full before:w-full before:bg-[url(/assets/img/webp/footer-flowers.webp)] before:bg-no-repeat before:bg-bottom before:bg-contain before:z-40"
:class="
route.path === '/books/1' || route.path === '/books/2'
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
: 'bg-black-50'
"
>
<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(/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(/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(/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">
<Suspense>
<slot />
</Suspense>
</UiMain>
<UiFooter />
</div>
</template>
<script setup lang="ts">
import UiFooter from './UiFooter/UiFooter.vue'
import UiHeader from './UiHeader/UiHeader.vue'
import UiMain from './UiMain/UiMain.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
</script>

View File

@ -1,29 +1,85 @@
server { server {
listen 80; listen 80;
server_name localhost; server_name ebook.miduway.space;
root /usr/share/nginx/html;
index index.html;
# Gzip compression # Редирект всех HTTP-запросов на HTTPS
gzip on; return 301 https://$host$request_uri;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; }
# Security headers server {
add_header X-Frame-Options "SAMEORIGIN"; listen 443 ssl;
add_header X-XSS-Protection "1; mode=block"; server_name ebook.miduway.space;
add_header X-Content-Type-Options "nosniff";
# SSL-сертификаты
ssl_certificate /etc/letsencrypt/live/ebook.miduway.space/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ebook.miduway.space/privkey.pem;
# Настройки SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Проксирование к Docker-контейнеру
location / { location / {
proxy_pass http://localhost:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Настройки для Vue.js
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache, no-store, must-revalidate";
} }
# Cache static assets # Кэширование статических файлов Vue
location /assets/ { location /js/ {
proxy_pass http://localhost:80;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Настройки кэширования для JS файлов
expires 1y; expires 1y;
add_header Cache-Control "public, no-transform"; add_header Cache-Control "public, immutable";
} }
# Error pages location /css/ {
proxy_pass http://localhost:80;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Настройки кэширования для CSS файлов
expires 1y;
add_header Cache-Control "public, immutable";
}
location /img/ {
proxy_pass http://localhost:80;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Настройки кэширования для изображений
expires 1y;
add_header Cache-Control "public, immutable";
}
# Блокировка доступа к скрытым файлам
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# Обработка ошибок для Vue.js
error_page 404 /index.html; error_page 404 /index.html;
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { location = /50x.html {

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,
});

15720
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

281
pages/books/[slug].vue Normal file
View File

@ -0,0 +1,281 @@
<template>
<template v-if="book">
<div class="relative z-50 min-h-screen text-white mb-[208px]">
<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-[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%"
/>
</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"
>
{{ book.title }}
</UiHeading>
<UiParagraph class="mb-10" size="250">
{{ book.subtitle }}
</UiParagraph>
<UiParagraph size="250" class="mb-20">
{{ book.subdesc }}
</UiParagraph>
<UiParagraph size="250" class="whitespace-pre-line min-h-62">
{{ book.description }}
</UiParagraph>
</div>
</div>
</section>
</section>
<!--средний блок-->
<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
>
<img src="/img/svg/books/ruble.svg" alt="ruble" />
</div>
<div class="mr-10 flex items-center flex-col gap-3">
<UiButton class="max-w-[380px] !font-normal !px-2 !py-4 mt-24">
{{ book.buttonText }}
</UiButton>
<UiParagraph size="200">
{{ book.buttonFormat }}
</UiParagraph>
</div>
</div>
<!--правый-->
<div class="min-h-[310px]">
<!--о книге-->
<div>
<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"
alt="страниц"
width="100%"
height="100%"
/>
<UiParagraph size="250" as="span">
{{ book.pages }}
</UiParagraph>
</li>
<li class="flex flex-row mr-14 gap-3 items-center">
<img
src="/img/svg/books/book-illustrations.svg"
alt="иллюстраций"
width="100%"
height="100%"
/>
<UiParagraph size="250" as="span">
{{ book.illust }}
</UiParagraph>
</li>
<li class="flex flex-row mr-14 gap-3 items-center">
<img
src="/img/svg/books/book-formats.svg"
alt="формат"
width="100%"
height="100%"
/>
<UiParagraph size="250" as="span">
{{ book.format }}
</UiParagraph>
</li>
</ul>
</div>
<!--навигация по книге-->
<div class="mt-24">
<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">
<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">
<NuxtLink
:to="`/books/${route.params.slug}/${book.hrefTitles}`"
class="flex flex-col items-center gap-3 cursor-pointer"
>
<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>
</NuxtLink>
</li>
</ul>
</div>
</div>
</section>
<!--нижний блок-->
<section class="ml-20 mt-32">
<div>
<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-32 gap-4 h-64 items-center transition-transform transform hover:scale-110"
v-for="({ svg, text }, index) in book.whoUKnows"
:key="index"
>
<UiParagraph class="text-center" size="250">
{{ text }}
</UiParagraph>
<img :src="`${svg}`" alt="Вопрос" width="45" height="45" />
</li>
</ul>
</div>
<div class="flex justify-center text-center mt-36">
<UiParagraph>
Или купи на ЛитРес - <br /><a
class="text-three"
:href="book.href"
target="_blank"
>Реферальная ссылка для поддержки автора</a
>
</UiParagraph>
</div>
</section>
</template>
<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 } 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;
whoUKnows: Array<{
text: string;
svg: string;
}>;
href: string;
hrefTitles: string;
}
const route = useRoute();
const currentBookData = ref<BookDetail | null>(null);
const book = computed(() => currentBookData.value);
const loadBookData = async (slug: string) => {
try {
const module = await import(`./_data/${slug}.json`);
currentBookData.value = module.default as BookDetail;
} catch (error) {
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error);
currentBookData.value = null;
}
};
watch(
() => route.params.slug,
async (newSlug) => {
if (newSlug) {
await loadBookData(newSlug as string);
}
},
{ immediate: true }
);
watch(book, (newBook) => {
if (newBook) {
useHead({
title: `${newBook.metaTitle} | Vino Galante`,
meta: [
{
name: "description",
content: "Онлайн магазин книг автора Vino Galante",
},
],
link: [
{
rel: "canonical",
href: `https://ebook.miduway.space/books/${route.params.slug}`,
},
],
});
}
});
</script>

View File

@ -0,0 +1,172 @@
<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"
>
{{ 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"
>
<!-- Main section title -->
<UiHeading tag="H2" size="300" class="text-three [&]:font-normal">
{{ section.title }}
</UiHeading>
<!-- Subsections -->
<div v-if="section.subsections" class="ml-6 flex flex-col gap-4">
<div
v-for="(subsection, subIndex) in section.subsections"
:key="subIndex"
class="flex flex-col gap-2"
>
<!-- Subsection with image -->
<div
v-if="typeof subsection.title === 'object'"
class="flex items-center gap-3 -ml-10"
>
<img
v-if="subsection.title.img"
:src="subsection.title.img"
:alt="subsection.title.text"
class="w-6 h-6"
/>
<UiHeading tag="H3" size="300" class="[&]:font-normal">
{{ subsection.title.text }}
</UiHeading>
</div>
<!-- Regular subsection -->
<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"
>&nbsp;{{ item }}</UiParagraph
>
</li>
</ul>
<!-- 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"
>
{{ nestedSub.title }}
</UiHeading>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div v-else class="text-white text-center py-20">Содержание не найдено.</div>
</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'
interface SubsectionTitle {
text: string;
img?: string;
}
interface Subsection {
title: string | SubsectionTitle;
items?: string[];
subsections?: Array<{
title: string;
}>;
}
interface Section {
title: string;
subsections?: Subsection[];
}
interface TitlesData {
title: string;
titleMeta: string;
sections: Section[];
}
const route = useRoute();
const currentTitlesData = ref<TitlesData | null>(null);
const titles = computed(() => currentTitlesData.value);
const loadTitlesData = async (slug: string) => {
try {
const module = await import(`./_data/${slug}.json`);
currentTitlesData.value = module.default as TitlesData;
} catch (error) {
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error);
currentTitlesData.value = null;
}
};
watch(
() => route.params.titlesSlug,
async (newSlug) => {
if (newSlug) {
await loadTitlesData(newSlug as string);
}
},
{ immediate: true }
);
watch(titles, (newTitles) => {
if (newTitles) {
useHead({
title: `${newTitles.titleMeta} | Vino Galante`,
meta: [
{
name: "description",
content: "Содержание книги Vino Galante",
},
],
link: [
{
rel: "canonical",
href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`,
},
],
});
}
});
</script>

View File

@ -0,0 +1,187 @@
{
"id": "title-1",
"title": "Оглавление",
"titleMeta": "Оглавление - Книга I",
"sections": [
{
"title": "Благодарности"
},
{
"title": "Введение",
"subsections": [
{
"title": "Работа с любым печатным материалом"
}
]
},
{
"title": "Глава 1. Перезагрузка",
"subsections": [
{
"title": "Введение"
},
{
"title": {
"text": "Убеждения соблазнительницы",
"img": "/img/svg/books/1/titles-1/flowbite_wine-glass-solid.svg"
},
"items": [
"Всё всегда хорошо",
"Другие девушки не помеха для меня",
"Парней много, я одна",
"Использовать мужчин это естественно и приятно",
"Отшивать мужчин это естественно",
"Ты имеешь ровно то, что заслужила",
"Ты достойна гораздо больше того, что имеешь на данный момент",
"Все, о чем ты способна мечтать, ты способна иметь",
"Проявлять активность успешной девушке естественно",
"Все мужчины, с которыми ты общаешься до замужества всего лишь твои тренажеры",
"Мужчина должен относиться к тебе уважительно",
"Среди мужчин встречается идиоты",
"Тебе выгодно, если мужчина хочет тебя",
"Мужчина общается с тобой только тогда, когда ему от тебя что-то нужно",
"Пока мужчина тебя не трахнул, ты не проиграла",
"Если ты получаешь удовольствие от общения с мужчиной все идет по плану",
"Ты ничего не должна мужчине, даже если он подарил тебе дворец и яхту",
"Соблазнение всего лишь очень интересная игра, в которой нет проигравших",
"У мужчин две ахиллесовых пяты это и секс. Это в сто раз важнее секса",
"Мужчины очень хорошие создания",
"Мужчины не примитивные",
"Мужчинам нужен далеко не только секс (Мужчине нужен от тебя только секс, если ты больше ничего ему дать не можешь)",
"Смысл жизни развитие",
"Иметь запасной аэродром правильно и естественно для женщины",
"Сексом мужчину не удержать",
"Общение с мужчиной должно приносить радость",
"Мужчины стремятся не к хорошим, а к высокоранговым женщинам",
"Мир вокруг тебя отражение тебя самой"
]
},
{
"title": {
"text": "Секс на первом свидании",
"img": "/img/svg/books/1/titles-1/healthicons_sexual-reproductive-health.svg"
}
}
]
},
{
"title": "Глава 2. Свобода",
"subsections": [
{
"title": "Введение"
},
{
"title": {
"text": "Поля-тараканы",
"img": "/img/svg/books/1/titles-1/simple-icons_cockroachlabs.svg"
}
},
{
"title": "Техника безопасности при работе в полях"
},
{
"title": "Восстановление сил"
},
{
"title": "Главный принцип развития"
},
{
"title": "Техники выхода в аптайм"
},
{
"title": "Действия"
},
{
"title": "Результат"
},
{
"title": {
"text": "Калибровка",
"img": "/img/svg/books/1/titles-1/material-symbols_editor-choice-rounded.svg"
},
"subsections": [
{
"title": "Азбука калибровки"
},
{
"title": "Как наблюдать, не вызывая подозрений"
}
]
},
{
"title": {
"text": "Стратегия сближений",
"img": "/img/svg/books/1/titles-1/ph_strategy-fill.svg"
},
"subsections": [
{
"title": "Определение и классификация"
},
{
"title": "Псевдопассивная. Этап первый"
},
{
"title": "Псевдопассивная. Этап второй"
},
{
"title": "Активный тип стратегии"
},
{
"title": "Третий этап. Степени кокетства"
}
]
}
]
},
{
"title": "Глава 3. Затравка",
"subsections": [
{
"title": "Введение"
},
{
"title": {
"text": "Теория женской привлекательности",
"img": "/img/svg/books/1/titles-1/icon-park-outline_women.svg"
},
"subsections": [
{
"title": "Введение"
}
]
},
{
"title": "Физическое здоровье"
},
{
"title": "Ментальный посыл. Стильность"
},
{
"title": "Ментальный посыл. Внутреннее ощущение мира"
},
{
"title": {
"text": "Ошибки резидента",
"img": "/img/svg/books/1/titles-1/si_error-line.svg"
},
"items": [
"Косак 1",
"Косак 2",
"Полукосак 3",
"Косак 4",
"МетаКосак 5 опасный",
"МетаКосак 6 опасный",
"Косак 7",
"МетаКосак 8 крайне опасно",
"МетаКосак 9 опасно",
"Косак 10",
"Косак 11"
]
},
{
"title": "В следующей книге"
}
]
}
]
}

View File

@ -0,0 +1,170 @@
{
"id": "title-1",
"title": "Оглавление",
"titleMeta": "Оглавление - Книга II",
"sections": [
{
"title": "Введение"
},
{
"title": "Глава 1. Перед боем",
"subsections": [
{
"title": {
"text": "Закон Вино Галанте или закон неотвратимости успеха",
"img": "/img/svg/books/2/titles-2/octicon_law-24.svg"
}
},
{
"title": {
"text": "Запасной аэродром",
"img": "/img/svg/books/2/titles-2/mingcute_airplane-line.svg"
},
"subsections": [
{
"title": "Экскурс в историю"
},
{
"title": "Правила формирования запасного аэродрома"
},
{
"title": "Подробнее о пятом пункте или как не врать"
},
{
"title": "Следствия наличия запасного аэродрома"
}
]
},
{
"title": {
"text": "Свидания",
"img": "/img/svg/books/2/titles-2/mdi_heart-outline (1).svg"
},
"subsections": [
{
"title": "Одежда"
},
{
"title": "Правильные места для свиданий"
},
{
"title": "Самое важное в свиданиях"
}
]
}
]
},
{
"title": "Глава 2. Ближний бой",
"subsections": [
{
"title": "Введение"
},
{
"title": {
"text": "Техника влюбления",
"img": "/img/svg/books/2/titles-2/Vector (4).svg"
},
"items": [
"Механизм мужской и женской влюбленностей",
"Главный секрет влюбления",
"Ментальная подстройка",
"Подстройка по ценностям",
"Качество девушки",
"Поведение",
"Как правильно хвалить мужчину",
"Игра “Ближе-дальше”",
"Дикий крышечок “Полярный разрыв”",
"Полярный разрыв в действии или крышечок на грани фола",
"Фишка “Рассмеяться как зло”",
"Фишка “АХ”",
"Техника влюбления “Отмененная помощь”",
"Техника влюбления “Не тот поворот”",
"Техника влюбления “Неожиданный разрыв”",
"Техника влюбления “Обещанный звонок”",
"Техника влюбления “Парень подружка”",
"Фишка “Бросок кобры”",
"Фишка “Мягкий язык”",
"Вызов ревности"
]
},
{
"title": {
"text": "Типичные неэффективные фишки девушек",
"img": "/img/svg/books/2/titles-2/Group.svg"
},
"items": ["Я выхожу замуж", "Я скучаю по парню", "Желание казаться круче, чем ты есть"]
},
{
"title": {
"text": "Чего никогда нельзя делать",
"img": "/img/svg/books/2/titles-2/Group (1).svg"
},
"subsections": [
{
"title": "Введение"
},
{
"title": "Оральные ласки"
},
{
"title": "Минет"
}
]
},
{
"title": {
"text": "СМС-переписка",
"img": "/img/svg/books/2/titles-2/Vector (6).svg"
},
"subsections": [
{
"title": "Российские школы соблазнения"
},
{
"title": "Как найти соблазнителя"
},
{
"title": "История рождения одного термина"
}
]
},
{
"title": {
"text": "Секс и девичья невинность",
"img": "/img/svg/books/2/titles-2/Vector (7).svg"
},
"subsections": [
{
"title": "Как парни воспринимают секс"
},
{
"title": "Девичья невинность"
},
{
"title": "Прожим девственницы. Метод Галанте."
},
{
"title": "Прожим девственницы. Классический метод."
},
{
"title": "Прожим девственницы. Метод пикапера."
},
{
"title": "Вместо эпилога"
}
]
},
{
"title": "Что делать, если попался «сложный красавчик»"
},
{
"title": {
"text": "Словарь",
"img": "/img/svg/books/2/titles-2/Vector (8).svg"
}
}
]
}
]
}

39
pages/books/_data/1.json Normal file
View File

@ -0,0 +1,39 @@
{
"id": 1,
"title": "Как влюбить в себя любого\nКнига I",
"metaTitle": "Как влюбить в себя любого - Книга I",
"subtitle": "ОТКРОВЕНИЯ БЫВШЕГО КАЗАНОВЫ",
"subdesc": "💡 Ты красивая, умная, но он не пишет? Эта книга покажет, как влюбить в себя любого — без игр и унижений",
"description": "Думаешь Vino Galante - правнук легендарного Джакомо Казановы? Да, такие слухи ходят. Но здесь дело не в итальянской крови. Просто Galante - очень «тонкий» соблазнитель. Зная все тонкости этого искусства, он филигранно работает «кончиками пальцев».\n\nА эту книгу (ты не поверишь!!) он написал специально для девушек. Однажды влюбившись, Vino перестал соблазнять. Так у тебя появилась возможность узнать основы тонкого искусства соблазнения из легендарного первоисточника.",
"img": "/img/webp/books/1.webp",
"price": "520 ",
"buttonText": "Хочу знать, как работает мужская психология",
"buttonFormat": "PDF + EPUB сразу после оплаты",
"pages": "210 страниц",
"illust": "11 иллюстраций",
"format": "PDF + EPUB",
"whoUKnows": [
{
"text": "Как устроено мужское влечение на самом деле",
"svg": "/img/svg/books/1/mdi_heart-outline.svg"
},
{
"text": "Почему красивые девушки часто одиноки — и что с этим делать",
"svg": "/img/svg/books/1/f7_exclamationmark.svg"
},
{
"text": "Как флиртовать тонко, не теряя себя",
"svg": "/img/svg/books/1/meteor-icons_message.svg"
},
{
"text": "Что делает девушку запоминающейся",
"svg": "/img/svg/books/1/lucide_star.svg"
},
{
"text": "Как не попадать в «запас» и быть единственной",
"svg": "/img/svg/books/1/stash_target.svg"
}
],
"href": "https://www.litres.ru/58125553/",
"hrefTitles": "title-1"
}

39
pages/books/_data/2.json Normal file
View File

@ -0,0 +1,39 @@
{
"id": 2,
"title": "Как влюбить в себя любого\nКнига II",
"metaTitle": "Как влюбить в себя любого - Книга II",
"subtitle": "ТОНКАЯ ИГРА",
"subdesc": "💡 Если ты устала от “не готов к отношениям” — начни играть по своим правилам",
"description": "Ты бывала свидетелем такого, что у красивой девушки личная жизнь не складывается, а у, казалось бы, дурнушки и семья хорошая, и муж и любит, и обеспечивает? Да такое сплошь и рядом!\n\nХочешь узнать, как построить отношения с любым парнем в наш век, когда вокруг полно красавиц, а все мужчины/парни избалованы?\nОтветы ты найдешь в этой книге.",
"img": "/img/webp/books/2.webp",
"price": "520 ",
"buttonText": "Скачать сейчас — и начать менять игру",
"buttonFormat": "PDF + EPUB сразу после оплаты",
"pages": "210 страниц",
"illust": "11 иллюстраций",
"format": "PDF + EPUB",
"whoUKnows": [
{
"text": "Как выстроить притяжение с любым мужчиной",
"svg": "/img/svg/books/1/mdi_heart-outline.svg"
},
{
"text": "Как включить его чувства, а не просто понравиться",
"svg": "/img/svg/books/1/f7_exclamationmark.svg"
},
{
"text": "Какие фишки работают — и почему",
"svg": "/img/svg/books/1/meteor-icons_message.svg"
},
{
"text": "Почему мужчины уходят от «идеальных» и возвращаются к «опасным»",
"svg": "/img/svg/books/1/lucide_star.svg"
},
{
"text": "Как говорить и вести себя, чтобы остаться в его сердце",
"svg": "/img/svg/books/1/stash_target.svg"
}
],
"href": "https://www.litres.ru/vino-galante/kak-vlubit-v-sebya-lubogo-tonkaya-igra/",
"hrefTitles": "title-2"
}

View File

@ -0,0 +1,16 @@
const feedbackData = [
{
text: 'Классная книга! Понятная и увлекательная. По моему мнению, проблема только в том, что женщине самой (без поддержки), выполнить всё, что написано в книге чрезвычайно сложно.\nИдеи супер: \n первый секс козырный туз женщины и не надо отдавать его в начале :)\n жизнь взяток не берет! Надо действовать.',
},
{
text: 'Интересная книга, читаешь «не отрывая глаз», те рекомендации, которые я применяла действительно рабочие!! Всем советую! По моему мнению видно, что автор действительно очень хорошо знает и понимаем женскую психологию.',
},
{
text: 'Книга содержит знания, которыми жалко делиться ;) нигде ничего подобного не встречала. Очень много авторских формул и примеров, автор - опытный соблазнитель :) кое-что уже успешно применяла на практике',
},
{
text: 'Книга для всех девушек, кто только начинают строить отношения. Это вакцина от девичьих ошибок, дает понимание, чего они хотят. Учит не наступать на их уловки. Благодаря ей я стала более уверена в себе.',
},
]
export default feedbackData

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