Compare commits
46 Commits
09edacf376
...
feature/8-
Author | SHA1 | Date | |
---|---|---|---|
ff6f40fdb4 | |||
7760305c08 | |||
c88be2ff6f | |||
b4a936eac9 | |||
4907ed064b | |||
093e71b449 | |||
42a6225e99 | |||
1fd718a0a0 | |||
925947ddd5 | |||
1b211c3148 | |||
925b6197f2 | |||
5c97679188 | |||
6eb987ffdb | |||
f2f7798e83 | |||
e396883830 | |||
a783918241 | |||
f8a632b6df | |||
d92fc4cf6e | |||
8529e66e33 | |||
6c8a6e7c35 | |||
117e579f2e | |||
8ba72bc8a4 | |||
1823cd87b6 | |||
94d008ca7d | |||
9950665146 | |||
cbabdf8ccb | |||
b73a9f5b3f | |||
2909160b17 | |||
2ef59fee78 | |||
84cf03bd61 | |||
3cd6a975f9 | |||
15a7ffe120 | |||
b54de4ace0 | |||
7a283ababc | |||
eacb8a70d0 | |||
bc3d085c02 | |||
4112bca029 | |||
76aa42dc25 | |||
551f68a78a | |||
46a59c7b91 | |||
4cdb90eaf7 | |||
4934e8be67 | |||
886f21e0a2 | |||
495638c922 | |||
453376c024 | |||
4e35841df3 |
Binary file not shown.
18
.env
Normal file
18
.env
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
DB_USER=
|
||||||
|
DB_HOST=
|
||||||
|
DB_NAME=
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_PORT=
|
||||||
|
|
||||||
|
YOOKASSA_SHOP_ID=
|
||||||
|
YOOKASSA_SECRET_KEY=
|
||||||
|
|
||||||
|
APP_URL=
|
||||||
|
|
||||||
|
|
||||||
|
# SMTP Configuration for Yandex
|
||||||
|
SMTP_USER=levishub@yandex.com
|
||||||
|
SMTP_PASS=avhpihoudpyvibtx
|
||||||
|
DEFAULT_TO_EMAIL=miduway@yandex.ru
|
||||||
|
SMTP_HOST=smtp.yandex.ru
|
||||||
|
SMTP_PORT=465
|
20
.env.example
Normal file
20
.env.example
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
DB_USER=
|
||||||
|
DB_HOST=
|
||||||
|
DB_NAME=
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_PORT=
|
||||||
|
|
||||||
|
YOOKASSA_SHOP_ID=
|
||||||
|
YOOKASSA_SECRET_KEY=
|
||||||
|
|
||||||
|
APP_URL=
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# SMTP Configuration for Yandex
|
||||||
|
SMTP_USER=levishub@yandex.ru
|
||||||
|
SMTP_PASS=avhpihoudpyvibtx
|
||||||
|
DEFAULT_TO_EMAIL=miduway@yandex.ru
|
||||||
|
SMTP_HOST=smtp.yandex.ru
|
||||||
|
SMTP_PORT=465
|
44
.gitea/workflows/deploy.yml
Normal file
44
.gitea/workflows/deploy.yml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
name: Deploy Nuxt App
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.TOKEN }}
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: '22'
|
||||||
|
|
||||||
|
- name: Install dependencies and build
|
||||||
|
run: |
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
- name: Prepare deployment files
|
||||||
|
run: |
|
||||||
|
tar -czf deploy.tar.gz dist Dockerfile docker-compose.yml
|
||||||
|
|
||||||
|
- name: Upload files via Gitea API
|
||||||
|
env:
|
||||||
|
GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main"
|
||||||
|
GITEA_TOKEN: ${{ secrets.TOKEN }}
|
||||||
|
run: |
|
||||||
|
for file in Dockerfile docker-compose.yml; do
|
||||||
|
curl -X PUT \
|
||||||
|
-H "Authorization: token $TOKEN" \
|
||||||
|
-H "Content-Type: text/plain" \
|
||||||
|
-T "$file" \
|
||||||
|
"$GITEA_API/$file?branch=main"
|
||||||
|
done
|
||||||
|
|
||||||
|
curl -X PUT \
|
||||||
|
-H "Authorization: token $TOKEN" \
|
||||||
|
-H "Content-Type: application/gzip" \
|
||||||
|
-T "deploy.tar.gz" \
|
||||||
|
"$GITEA_API/deploy.tar.gz?branch=main"
|
11
.gitignore
vendored
11
.gitignore
vendored
@ -11,7 +11,15 @@ node_modules
|
|||||||
dist
|
dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
*.local
|
*.local
|
||||||
|
.nuxt
|
||||||
|
|
||||||
|
.output
|
||||||
|
.data
|
||||||
|
.nuxt
|
||||||
|
.nitro
|
||||||
|
.cache
|
||||||
|
dist
|
||||||
|
.history
|
||||||
# Editor directories and files
|
# Editor directories and files
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
@ -22,6 +30,5 @@ dist-ssr
|
|||||||
*.njsproj
|
*.njsproj
|
||||||
*.sln
|
*.sln
|
||||||
*.sw?
|
*.sw?
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
frontend.env
|
frontend.env
|
13
.htmlvalidate.json
Normal file
13
.htmlvalidate.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"extends": ["html-validate:recommended", "html-validate:standard"],
|
||||||
|
"rules": {
|
||||||
|
"heading-level": "error",
|
||||||
|
"require-img-alt": "error",
|
||||||
|
"element-permitted-content": "error",
|
||||||
|
"require-meta-title": "error",
|
||||||
|
"require-meta-description": "error",
|
||||||
|
"no-duplicate-id": "error",
|
||||||
|
"prefer-native-element": "error"
|
||||||
|
}
|
||||||
|
}
|
@ -1,212 +0,0 @@
|
|||||||
|
|
||||||
import { _replaceAppConfig } from '#app/config'
|
|
||||||
import { defuFn } from 'defu'
|
|
||||||
|
|
||||||
const inlineConfig = {
|
|
||||||
"nuxt": {},
|
|
||||||
"icon": {
|
|
||||||
"provider": "server",
|
|
||||||
"class": "",
|
|
||||||
"aliases": {},
|
|
||||||
"iconifyApiEndpoint": "https://api.iconify.design",
|
|
||||||
"localApiEndpoint": "/api/_nuxt_icon",
|
|
||||||
"fallbackToApi": true,
|
|
||||||
"cssSelectorPrefix": "i-",
|
|
||||||
"cssWherePseudo": true,
|
|
||||||
"mode": "css",
|
|
||||||
"attrs": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"collections": [
|
|
||||||
"academicons",
|
|
||||||
"akar-icons",
|
|
||||||
"ant-design",
|
|
||||||
"arcticons",
|
|
||||||
"basil",
|
|
||||||
"bi",
|
|
||||||
"bitcoin-icons",
|
|
||||||
"bpmn",
|
|
||||||
"brandico",
|
|
||||||
"bx",
|
|
||||||
"bxl",
|
|
||||||
"bxs",
|
|
||||||
"bytesize",
|
|
||||||
"carbon",
|
|
||||||
"catppuccin",
|
|
||||||
"cbi",
|
|
||||||
"charm",
|
|
||||||
"ci",
|
|
||||||
"cib",
|
|
||||||
"cif",
|
|
||||||
"cil",
|
|
||||||
"circle-flags",
|
|
||||||
"circum",
|
|
||||||
"clarity",
|
|
||||||
"codicon",
|
|
||||||
"covid",
|
|
||||||
"cryptocurrency",
|
|
||||||
"cryptocurrency-color",
|
|
||||||
"dashicons",
|
|
||||||
"devicon",
|
|
||||||
"devicon-plain",
|
|
||||||
"ei",
|
|
||||||
"el",
|
|
||||||
"emojione",
|
|
||||||
"emojione-monotone",
|
|
||||||
"emojione-v1",
|
|
||||||
"entypo",
|
|
||||||
"entypo-social",
|
|
||||||
"eos-icons",
|
|
||||||
"ep",
|
|
||||||
"et",
|
|
||||||
"eva",
|
|
||||||
"f7",
|
|
||||||
"fa",
|
|
||||||
"fa-brands",
|
|
||||||
"fa-regular",
|
|
||||||
"fa-solid",
|
|
||||||
"fa6-brands",
|
|
||||||
"fa6-regular",
|
|
||||||
"fa6-solid",
|
|
||||||
"fad",
|
|
||||||
"fe",
|
|
||||||
"feather",
|
|
||||||
"file-icons",
|
|
||||||
"flag",
|
|
||||||
"flagpack",
|
|
||||||
"flat-color-icons",
|
|
||||||
"flat-ui",
|
|
||||||
"flowbite",
|
|
||||||
"fluent",
|
|
||||||
"fluent-emoji",
|
|
||||||
"fluent-emoji-flat",
|
|
||||||
"fluent-emoji-high-contrast",
|
|
||||||
"fluent-mdl2",
|
|
||||||
"fontelico",
|
|
||||||
"fontisto",
|
|
||||||
"formkit",
|
|
||||||
"foundation",
|
|
||||||
"fxemoji",
|
|
||||||
"gala",
|
|
||||||
"game-icons",
|
|
||||||
"geo",
|
|
||||||
"gg",
|
|
||||||
"gis",
|
|
||||||
"gravity-ui",
|
|
||||||
"gridicons",
|
|
||||||
"grommet-icons",
|
|
||||||
"guidance",
|
|
||||||
"healthicons",
|
|
||||||
"heroicons",
|
|
||||||
"heroicons-outline",
|
|
||||||
"heroicons-solid",
|
|
||||||
"hugeicons",
|
|
||||||
"humbleicons",
|
|
||||||
"ic",
|
|
||||||
"icomoon-free",
|
|
||||||
"icon-park",
|
|
||||||
"icon-park-outline",
|
|
||||||
"icon-park-solid",
|
|
||||||
"icon-park-twotone",
|
|
||||||
"iconamoon",
|
|
||||||
"iconoir",
|
|
||||||
"icons8",
|
|
||||||
"il",
|
|
||||||
"ion",
|
|
||||||
"iwwa",
|
|
||||||
"jam",
|
|
||||||
"la",
|
|
||||||
"lets-icons",
|
|
||||||
"line-md",
|
|
||||||
"logos",
|
|
||||||
"ls",
|
|
||||||
"lucide",
|
|
||||||
"lucide-lab",
|
|
||||||
"mage",
|
|
||||||
"majesticons",
|
|
||||||
"maki",
|
|
||||||
"map",
|
|
||||||
"marketeq",
|
|
||||||
"material-symbols",
|
|
||||||
"material-symbols-light",
|
|
||||||
"mdi",
|
|
||||||
"mdi-light",
|
|
||||||
"medical-icon",
|
|
||||||
"memory",
|
|
||||||
"meteocons",
|
|
||||||
"mi",
|
|
||||||
"mingcute",
|
|
||||||
"mono-icons",
|
|
||||||
"mynaui",
|
|
||||||
"nimbus",
|
|
||||||
"nonicons",
|
|
||||||
"noto",
|
|
||||||
"noto-v1",
|
|
||||||
"octicon",
|
|
||||||
"oi",
|
|
||||||
"ooui",
|
|
||||||
"openmoji",
|
|
||||||
"oui",
|
|
||||||
"pajamas",
|
|
||||||
"pepicons",
|
|
||||||
"pepicons-pencil",
|
|
||||||
"pepicons-pop",
|
|
||||||
"pepicons-print",
|
|
||||||
"ph",
|
|
||||||
"pixelarticons",
|
|
||||||
"prime",
|
|
||||||
"ps",
|
|
||||||
"quill",
|
|
||||||
"radix-icons",
|
|
||||||
"raphael",
|
|
||||||
"ri",
|
|
||||||
"rivet-icons",
|
|
||||||
"si-glyph",
|
|
||||||
"simple-icons",
|
|
||||||
"simple-line-icons",
|
|
||||||
"skill-icons",
|
|
||||||
"solar",
|
|
||||||
"streamline",
|
|
||||||
"streamline-emojis",
|
|
||||||
"subway",
|
|
||||||
"svg-spinners",
|
|
||||||
"system-uicons",
|
|
||||||
"tabler",
|
|
||||||
"tdesign",
|
|
||||||
"teenyicons",
|
|
||||||
"token",
|
|
||||||
"token-branded",
|
|
||||||
"topcoat",
|
|
||||||
"twemoji",
|
|
||||||
"typcn",
|
|
||||||
"uil",
|
|
||||||
"uim",
|
|
||||||
"uis",
|
|
||||||
"uit",
|
|
||||||
"uiw",
|
|
||||||
"unjs",
|
|
||||||
"vaadin",
|
|
||||||
"vs",
|
|
||||||
"vscode-icons",
|
|
||||||
"websymbol",
|
|
||||||
"weui",
|
|
||||||
"whh",
|
|
||||||
"wi",
|
|
||||||
"wpf",
|
|
||||||
"zmdi",
|
|
||||||
"zondicons"
|
|
||||||
],
|
|
||||||
"fetchTimeout": 1500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vite - webpack is handled directly in #app/config
|
|
||||||
if (import.meta.hot) {
|
|
||||||
import.meta.hot.accept((newModule) => {
|
|
||||||
_replaceAppConfig(newModule.default)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default /*@__PURE__*/ defuFn(inlineConfig)
|
|
@ -1 +0,0 @@
|
|||||||
export default {}
|
|
262
.nuxt/components.d.ts
vendored
262
.nuxt/components.d.ts
vendored
@ -1,262 +0,0 @@
|
|||||||
|
|
||||||
import type { DefineComponent, SlotsType } from 'vue'
|
|
||||||
type IslandComponent<T extends DefineComponent> = T & DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>>
|
|
||||||
type HydrationStrategies = {
|
|
||||||
hydrateOnVisible?: IntersectionObserverInit | true
|
|
||||||
hydrateOnIdle?: number | true
|
|
||||||
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
|
|
||||||
hydrateOnMediaQuery?: string
|
|
||||||
hydrateAfter?: number
|
|
||||||
hydrateWhen?: boolean
|
|
||||||
hydrateNever?: true
|
|
||||||
}
|
|
||||||
type LazyComponent<T> = (T & DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }>)
|
|
||||||
interface _GlobalComponents {
|
|
||||||
'TypographyUiHeading': typeof import("../components/Typography/UiHeading.vue")['default']
|
|
||||||
'TypographyUiParagraph': typeof import("../components/Typography/UiParagraph.vue")['default']
|
|
||||||
'UiButtonParams': typeof import("../components/UiButton/UiButton.params")['default']
|
|
||||||
'UiButton': typeof import("../components/UiButton/UiButton.vue")['default']
|
|
||||||
'UiNav': typeof import("../components/UiNav/UiNav.vue")['default']
|
|
||||||
'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[]
|
|
@ -1,35 +0,0 @@
|
|||||||
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"]
|
|
@ -1 +0,0 @@
|
|||||||
export const content = "H4sIAAAAAAAAE52SbW/aMBDHv8rJb9JJoerUriqq+sIFM0xZQh0HyMYU5eHSuECCEgdKq333KcDWAa207dXJ9+S7+/2/kZZgVDKQ9LbPgHfAsiWwMXekA36UZxoz7assyeFExSDZWMJA8C9UeHDHPBMmpMAgXk8I3Np2n1GrdpW6qCJdFTjEolR5NiEwpKLVpaKOLt9y+n4alKnvT8j2E9fi9y77cA2NBvxuR0zCLYcJCdyS9sF8Q9p3mQMnRpRiNC2r+a+wYUISzEo0wQgfuJcuHkU1vHoOuz3mtxKcre4WPV/Gl171ubdSTwqnV7M5N0wwluenn07PGo1/LPPOR81Qd+UoSDryo3cRf13y1uqxedb0Lu7XCarVZTbuhHQ9jYzthnPUATFJW9iDVxKHFHb26CR/Q3Bn34WolZ7hPpEw32Cts+tnjGVUqIU+IodPGrNjoPVKf5RnwVI9BLvqzQRt1qFuX4IuKqwzFoFO91uUmB8mGy8/jK3CcP5/AnIH7fpa+9pxmISNjuFmMw+MukwwUDHcwLGeXpF9/wnYnmiHQAMAAA=="
|
|
@ -1,33 +0,0 @@
|
|||||||
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": {}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
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
21
.nuxt/content/types.d.ts
vendored
@ -1,21 +0,0 @@
|
|||||||
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
2640
.nuxt/dev/index.mjs
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,9 +0,0 @@
|
|||||||
import type { FlatConfigComposer } from "../node_modules/eslint-flat-config-utils/dist/index.mjs"
|
|
||||||
import { defineFlatConfigs } from "../node_modules/@nuxt/eslint-config/dist/flat.mjs"
|
|
||||||
import type { NuxtESLintConfigOptionsResolved } from "../node_modules/@nuxt/eslint-config/dist/flat.mjs"
|
|
||||||
|
|
||||||
declare const configs: FlatConfigComposer
|
|
||||||
declare const options: NuxtESLintConfigOptionsResolved
|
|
||||||
declare const withNuxt: typeof defineFlatConfigs
|
|
||||||
export default withNuxt
|
|
||||||
export { withNuxt, defineFlatConfigs, configs, options }
|
|
File diff suppressed because one or more lines are too long
38
.nuxt/imports.d.ts
vendored
38
.nuxt/imports.d.ts
vendored
@ -1,38 +0,0 @@
|
|||||||
export { useScriptTriggerConsent, useScriptEventPage, useScriptTriggerElement, useScript, useScriptGoogleAnalytics, useScriptPlausibleAnalytics, useScriptCrisp, useScriptClarity, useScriptCloudflareWebAnalytics, useScriptFathomAnalytics, useScriptMatomoAnalytics, useScriptGoogleTagManager, useScriptGoogleAdsense, useScriptSegment, useScriptMetaPixel, useScriptXPixel, useScriptIntercom, useScriptHotjar, useScriptStripe, useScriptLemonSqueezy, useScriptVimeoPlayer, useScriptYouTubePlayer, useScriptGoogleMaps, useScriptNpm, useScriptUmamiAnalytics, useScriptSnapchatPixel, useScriptRybbitAnalytics } from '#app/composables/script-stubs';
|
|
||||||
export { isVue2, isVue3 } from 'vue-demi';
|
|
||||||
export { defineNuxtLink } from '#app/components/nuxt-link';
|
|
||||||
export { useNuxtApp, tryUseNuxtApp, defineNuxtPlugin, definePayloadPlugin, useRuntimeConfig, defineAppConfig } from '#app/nuxt';
|
|
||||||
export { useAppConfig, updateAppConfig } from '#app/config';
|
|
||||||
export { defineNuxtComponent } from '#app/composables/component';
|
|
||||||
export { useAsyncData, useLazyAsyncData, useNuxtData, refreshNuxtData, clearNuxtData } from '#app/composables/asyncData';
|
|
||||||
export { useHydration } from '#app/composables/hydrate';
|
|
||||||
export { callOnce } from '#app/composables/once';
|
|
||||||
export { useState, clearNuxtState } from '#app/composables/state';
|
|
||||||
export { clearError, createError, isNuxtError, showError, useError } from '#app/composables/error';
|
|
||||||
export { useFetch, useLazyFetch } from '#app/composables/fetch';
|
|
||||||
export { useCookie, refreshCookie } from '#app/composables/cookie';
|
|
||||||
export { onPrehydrate, prerenderRoutes, useRequestHeader, useRequestHeaders, useResponseHeader, useRequestEvent, useRequestFetch, setResponseStatus } from '#app/composables/ssr';
|
|
||||||
export { onNuxtReady } from '#app/composables/ready';
|
|
||||||
export { preloadComponents, prefetchComponents, preloadRouteComponents } from '#app/composables/preload';
|
|
||||||
export { abortNavigation, addRouteMiddleware, defineNuxtRouteMiddleware, setPageLayout, navigateTo, useRoute, useRouter } from '#app/composables/router';
|
|
||||||
export { isPrerendered, loadPayload, preloadPayload, definePayloadReducer, definePayloadReviver } from '#app/composables/payload';
|
|
||||||
export { useLoadingIndicator } from '#app/composables/loading-indicator';
|
|
||||||
export { getAppManifest, getRouteRules } from '#app/composables/manifest';
|
|
||||||
export { reloadNuxtApp } from '#app/composables/chunk';
|
|
||||||
export { useRequestURL } from '#app/composables/url';
|
|
||||||
export { usePreviewMode } from '#app/composables/preview';
|
|
||||||
export { useRouteAnnouncer } from '#app/composables/route-announcer';
|
|
||||||
export { useRuntimeHook } from '#app/composables/runtime-hook';
|
|
||||||
export { useHead, useHeadSafe, useServerHeadSafe, useServerHead, useSeoMeta, useServerSeoMeta, injectHead } from '#app/composables/head';
|
|
||||||
export { onBeforeRouteLeave, onBeforeRouteUpdate, useLink } from 'vue-router';
|
|
||||||
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, mergeModels, toValue, useModel, useAttrs, useCssModule, useCssVars, useSlots, useTransitionState, useId, useTemplateRef, useShadowRoot, Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue';
|
|
||||||
export { requestIdleCallback, cancelIdleCallback } from '#app/compat/idle-callback';
|
|
||||||
export { setInterval } from '#app/compat/interval';
|
|
||||||
export { useImage } from '../node_modules/@nuxt/image/dist/runtime/composables';
|
|
||||||
export { 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';
|
|
@ -1 +0,0 @@
|
|||||||
{"id":"dev","timestamp":1750167863932}
|
|
@ -1 +0,0 @@
|
|||||||
{}
|
|
@ -1 +0,0 @@
|
|||||||
{"id":"dev","timestamp":1750167863932,"matcher":{"static":{"/__nuxt_content/content/sql_dump.txt":{"prerender":true}},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
|
@ -1,8 +0,0 @@
|
|||||||
let configs
|
|
||||||
export function getMdcConfigs () {
|
|
||||||
if (!configs) {
|
|
||||||
configs = Promise.all([
|
|
||||||
])
|
|
||||||
}
|
|
||||||
return configs
|
|
||||||
}
|
|
@ -1,213 +0,0 @@
|
|||||||
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
|
|
@ -1 +0,0 @@
|
|||||||
export { default } from "/Users/dkoziavin/code/sub-projects/e-book/node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue"
|
|
@ -1,12 +0,0 @@
|
|||||||
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"}}
|
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export function init() {}
|
|
@ -1,15 +0,0 @@
|
|||||||
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
31
.nuxt/nuxt.d.ts
vendored
@ -1,31 +0,0 @@
|
|||||||
/// <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 {}
|
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"_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
210
.nuxt/schema/nuxt.schema.d.ts
vendored
@ -1,210 +0,0 @@
|
|||||||
export interface NuxtCustomSchema {
|
|
||||||
appConfig?: {
|
|
||||||
/**
|
|
||||||
* Nuxt Icon
|
|
||||||
*
|
|
||||||
* Configure Nuxt Icon module preferences.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:star
|
|
||||||
*/
|
|
||||||
icon?: {
|
|
||||||
/**
|
|
||||||
* Icon Size
|
|
||||||
*
|
|
||||||
* Set the default icon size.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:format-size-rounded
|
|
||||||
*/
|
|
||||||
size?: string | undefined,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CSS Class
|
|
||||||
*
|
|
||||||
* Set the default CSS class.
|
|
||||||
*
|
|
||||||
* @default ""
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:css
|
|
||||||
*/
|
|
||||||
class?: string,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default Attributes
|
|
||||||
*
|
|
||||||
* Attributes applied to every icon component.
|
|
||||||
*
|
|
||||||
* @default { "aria-hidden": true }
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:settings
|
|
||||||
*/
|
|
||||||
attrs?: Record<string, string | number | boolean>,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default Rendering Mode
|
|
||||||
*
|
|
||||||
* Set the default rendering mode for the icon component
|
|
||||||
*
|
|
||||||
* @default "css"
|
|
||||||
*
|
|
||||||
* @enum css,svg
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:move-down-rounded
|
|
||||||
*/
|
|
||||||
mode?: string,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Icon aliases
|
|
||||||
*
|
|
||||||
* Define Icon aliases to update them easily without code changes.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:star-rounded
|
|
||||||
*/
|
|
||||||
aliases?: { [alias: string]: string },
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CSS Selector Prefix
|
|
||||||
*
|
|
||||||
* Set the default CSS selector prefix.
|
|
||||||
*
|
|
||||||
* @default "i-"
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:format-textdirection-l-to-r
|
|
||||||
*/
|
|
||||||
cssSelectorPrefix?: string,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CSS Layer Name
|
|
||||||
*
|
|
||||||
* Set the default CSS `@layer` name.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:layers
|
|
||||||
*/
|
|
||||||
cssLayer?: string | undefined,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use CSS `:where()` Pseudo Selector
|
|
||||||
*
|
|
||||||
* Use CSS `:where()` pseudo selector to reduce specificity.
|
|
||||||
*
|
|
||||||
* @default true
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:low-priority
|
|
||||||
*/
|
|
||||||
cssWherePseudo?: boolean,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Icon Collections
|
|
||||||
*
|
|
||||||
* List of known icon collections name. Used to resolve collection name ambiguity.
|
|
||||||
* e.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github`
|
|
||||||
*
|
|
||||||
* When not provided, will use the full Iconify collection list.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:format-list-bulleted
|
|
||||||
*/
|
|
||||||
collections?: string[] | null,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Custom Icon Collections
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:format-list-bulleted
|
|
||||||
*/
|
|
||||||
customCollections?: string[] | null,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Icon Provider
|
|
||||||
*
|
|
||||||
* Provider to use for fetching icons
|
|
||||||
*
|
|
||||||
* - `server` - Fetch icons with a server handler
|
|
||||||
* - `iconify` - Fetch icons with Iconify API, purely client-side
|
|
||||||
* - `none` - Do not fetch icons (use client bundle only)
|
|
||||||
*
|
|
||||||
* `server` by default; `iconify` when `ssr: false`
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @enum server,iconify,none
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:cloud
|
|
||||||
*/
|
|
||||||
provider?: "server" | "iconify" | undefined,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iconify API Endpoint URL
|
|
||||||
*
|
|
||||||
* Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api.
|
|
||||||
*
|
|
||||||
* @default "https://api.iconify.design"
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:api
|
|
||||||
*/
|
|
||||||
iconifyApiEndpoint?: string,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fallback to Iconify API
|
|
||||||
*
|
|
||||||
* Fallback to Iconify API if server provider fails to found the collection.
|
|
||||||
*
|
|
||||||
* @default true
|
|
||||||
*
|
|
||||||
* @enum true,false,server-only,client-only
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:public
|
|
||||||
*/
|
|
||||||
fallbackToApi?: boolean | "server-only" | "client-only",
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Local API Endpoint Path
|
|
||||||
*
|
|
||||||
* Define a custom path for the local API endpoint.
|
|
||||||
*
|
|
||||||
* @default "/api/_nuxt_icon"
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:api
|
|
||||||
*/
|
|
||||||
localApiEndpoint?: string,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch Timeout
|
|
||||||
*
|
|
||||||
* Set the timeout for fetching icons.
|
|
||||||
*
|
|
||||||
* @default 1500
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:timer
|
|
||||||
*/
|
|
||||||
fetchTimeout?: number,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Customize callback
|
|
||||||
*
|
|
||||||
* Customize icon content (replace stroke-width, colors, etc...).
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @studioIcon material-symbols:edit
|
|
||||||
*/
|
|
||||||
customize?: IconifyIconCustomizeCallback,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined>
|
|
||||||
type _CustomAppConfig = CustomAppConfig
|
|
||||||
|
|
||||||
declare module '@nuxt/schema' {
|
|
||||||
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
|
|
||||||
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
|
|
||||||
interface CustomAppConfig extends _CustomAppConfig {}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'nuxt/schema' {
|
|
||||||
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
|
|
||||||
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
|
|
||||||
interface CustomAppConfig extends _CustomAppConfig {}
|
|
||||||
}
|
|
@ -1,263 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "#",
|
|
||||||
"properties": {
|
|
||||||
"appConfig": {
|
|
||||||
"id": "#appConfig",
|
|
||||||
"properties": {
|
|
||||||
"icon": {
|
|
||||||
"title": "Nuxt Icon",
|
|
||||||
"description": "Configure Nuxt Icon module preferences.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:star"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon",
|
|
||||||
"properties": {
|
|
||||||
"size": {
|
|
||||||
"title": "Icon Size",
|
|
||||||
"description": "Set the default icon size.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:format-size-rounded"
|
|
||||||
],
|
|
||||||
"tsType": "string | undefined",
|
|
||||||
"id": "#appConfig/icon/size",
|
|
||||||
"default": {},
|
|
||||||
"type": "any"
|
|
||||||
},
|
|
||||||
"class": {
|
|
||||||
"title": "CSS Class",
|
|
||||||
"description": "Set the default CSS class.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:css"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/class",
|
|
||||||
"default": "",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"attrs": {
|
|
||||||
"title": "Default Attributes",
|
|
||||||
"description": "Attributes applied to every icon component.\n\n@default { \"aria-hidden\": true }",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:settings"
|
|
||||||
],
|
|
||||||
"tsType": "Record<string, string | number | boolean>",
|
|
||||||
"id": "#appConfig/icon/attrs",
|
|
||||||
"default": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"mode": {
|
|
||||||
"title": "Default Rendering Mode",
|
|
||||||
"description": "Set the default rendering mode for the icon component",
|
|
||||||
"enum": [
|
|
||||||
"css",
|
|
||||||
"svg"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:move-down-rounded"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/mode",
|
|
||||||
"default": "css",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"aliases": {
|
|
||||||
"title": "Icon aliases",
|
|
||||||
"description": "Define Icon aliases to update them easily without code changes.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:star-rounded"
|
|
||||||
],
|
|
||||||
"tsType": "{ [alias: string]: string }",
|
|
||||||
"id": "#appConfig/icon/aliases",
|
|
||||||
"default": {},
|
|
||||||
"type": "object"
|
|
||||||
},
|
|
||||||
"cssSelectorPrefix": {
|
|
||||||
"title": "CSS Selector Prefix",
|
|
||||||
"description": "Set the default CSS selector prefix.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:format-textdirection-l-to-r"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/cssSelectorPrefix",
|
|
||||||
"default": "i-",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"cssLayer": {
|
|
||||||
"title": "CSS Layer Name",
|
|
||||||
"description": "Set the default CSS `@layer` name.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:layers"
|
|
||||||
],
|
|
||||||
"tsType": "string | undefined",
|
|
||||||
"id": "#appConfig/icon/cssLayer",
|
|
||||||
"default": {},
|
|
||||||
"type": "any"
|
|
||||||
},
|
|
||||||
"cssWherePseudo": {
|
|
||||||
"title": "Use CSS `:where()` Pseudo Selector",
|
|
||||||
"description": "Use CSS `:where()` pseudo selector to reduce specificity.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:low-priority"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/cssWherePseudo",
|
|
||||||
"default": true,
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"collections": {
|
|
||||||
"title": "Icon Collections",
|
|
||||||
"description": "List of known icon collections name. Used to resolve collection name ambiguity.\ne.g. `simple-icons-github` -> `simple-icons:github` instead of `simple:icons-github`\n\nWhen not provided, will use the full Iconify collection list.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:format-list-bulleted"
|
|
||||||
],
|
|
||||||
"tsType": "string[] | null",
|
|
||||||
"id": "#appConfig/icon/collections",
|
|
||||||
"default": null,
|
|
||||||
"type": "any"
|
|
||||||
},
|
|
||||||
"customCollections": {
|
|
||||||
"title": "Custom Icon Collections",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:format-list-bulleted"
|
|
||||||
],
|
|
||||||
"tsType": "string[] | null",
|
|
||||||
"id": "#appConfig/icon/customCollections",
|
|
||||||
"default": null,
|
|
||||||
"type": "any"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"title": "Icon Provider",
|
|
||||||
"description": "Provider to use for fetching icons\n\n- `server` - Fetch icons with a server handler\n- `iconify` - Fetch icons with Iconify API, purely client-side\n- `none` - Do not fetch icons (use client bundle only)\n\n`server` by default; `iconify` when `ssr: false`",
|
|
||||||
"enum": [
|
|
||||||
"server",
|
|
||||||
"iconify",
|
|
||||||
"none"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:cloud"
|
|
||||||
],
|
|
||||||
"type": "\"server\" | \"iconify\" | undefined",
|
|
||||||
"id": "#appConfig/icon/provider"
|
|
||||||
},
|
|
||||||
"iconifyApiEndpoint": {
|
|
||||||
"title": "Iconify API Endpoint URL",
|
|
||||||
"description": "Define a custom Iconify API endpoint URL. Useful if you want to use a self-hosted Iconify API. Learn more: https://iconify.design/docs/api.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:api"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/iconifyApiEndpoint",
|
|
||||||
"default": "https://api.iconify.design",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"fallbackToApi": {
|
|
||||||
"title": "Fallback to Iconify API",
|
|
||||||
"description": "Fallback to Iconify API if server provider fails to found the collection.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:public"
|
|
||||||
],
|
|
||||||
"enum": [
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
"server-only",
|
|
||||||
"client-only"
|
|
||||||
],
|
|
||||||
"type": "boolean | \"server-only\" | \"client-only\"",
|
|
||||||
"id": "#appConfig/icon/fallbackToApi",
|
|
||||||
"default": true
|
|
||||||
},
|
|
||||||
"localApiEndpoint": {
|
|
||||||
"title": "Local API Endpoint Path",
|
|
||||||
"description": "Define a custom path for the local API endpoint.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:api"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/localApiEndpoint",
|
|
||||||
"default": "/api/_nuxt_icon",
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"fetchTimeout": {
|
|
||||||
"title": "Fetch Timeout",
|
|
||||||
"description": "Set the timeout for fetching icons.",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:timer"
|
|
||||||
],
|
|
||||||
"id": "#appConfig/icon/fetchTimeout",
|
|
||||||
"default": 1500,
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"customize": {
|
|
||||||
"title": "Customize callback",
|
|
||||||
"description": "Customize icon content (replace stroke-width, colors, etc...).",
|
|
||||||
"tags": [
|
|
||||||
"@studioIcon material-symbols:edit"
|
|
||||||
],
|
|
||||||
"type": "IconifyIconCustomizeCallback",
|
|
||||||
"id": "#appConfig/icon/customize"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object",
|
|
||||||
"default": {
|
|
||||||
"size": {},
|
|
||||||
"class": "",
|
|
||||||
"attrs": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"mode": "css",
|
|
||||||
"aliases": {},
|
|
||||||
"cssSelectorPrefix": "i-",
|
|
||||||
"cssLayer": {},
|
|
||||||
"cssWherePseudo": true,
|
|
||||||
"collections": null,
|
|
||||||
"customCollections": null,
|
|
||||||
"iconifyApiEndpoint": "https://api.iconify.design",
|
|
||||||
"fallbackToApi": true,
|
|
||||||
"localApiEndpoint": "/api/_nuxt_icon",
|
|
||||||
"fetchTimeout": 1500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object",
|
|
||||||
"default": {
|
|
||||||
"icon": {
|
|
||||||
"size": {},
|
|
||||||
"class": "",
|
|
||||||
"attrs": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"mode": "css",
|
|
||||||
"aliases": {},
|
|
||||||
"cssSelectorPrefix": "i-",
|
|
||||||
"cssLayer": {},
|
|
||||||
"cssWherePseudo": true,
|
|
||||||
"collections": null,
|
|
||||||
"customCollections": null,
|
|
||||||
"iconifyApiEndpoint": "https://api.iconify.design",
|
|
||||||
"fallbackToApi": true,
|
|
||||||
"localApiEndpoint": "/api/_nuxt_icon",
|
|
||||||
"fetchTimeout": 1500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "object",
|
|
||||||
"default": {
|
|
||||||
"appConfig": {
|
|
||||||
"icon": {
|
|
||||||
"size": {},
|
|
||||||
"class": "",
|
|
||||||
"attrs": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"mode": "css",
|
|
||||||
"aliases": {},
|
|
||||||
"cssSelectorPrefix": "i-",
|
|
||||||
"cssLayer": {},
|
|
||||||
"cssWherePseudo": true,
|
|
||||||
"collections": null,
|
|
||||||
"customCollections": null,
|
|
||||||
"iconifyApiEndpoint": "https://api.iconify.design",
|
|
||||||
"fallbackToApi": true,
|
|
||||||
"localApiEndpoint": "/api/_nuxt_icon",
|
|
||||||
"fetchTimeout": 1500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
// 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;
|
|
@ -1,239 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"paths": {
|
|
||||||
"nitropack/types": [
|
|
||||||
"../node_modules/nitropack/types"
|
|
||||||
],
|
|
||||||
"nitropack/runtime": [
|
|
||||||
"../node_modules/nitropack/runtime"
|
|
||||||
],
|
|
||||||
"nitropack": [
|
|
||||||
"../node_modules/nitropack"
|
|
||||||
],
|
|
||||||
"defu": [
|
|
||||||
"../node_modules/defu"
|
|
||||||
],
|
|
||||||
"h3": [
|
|
||||||
"../node_modules/h3"
|
|
||||||
],
|
|
||||||
"consola": [
|
|
||||||
"../node_modules/consola"
|
|
||||||
],
|
|
||||||
"ofetch": [
|
|
||||||
"../node_modules/ofetch"
|
|
||||||
],
|
|
||||||
"@unhead/vue": [
|
|
||||||
"../node_modules/@unhead/vue"
|
|
||||||
],
|
|
||||||
"@nuxt/devtools": [
|
|
||||||
"../node_modules/@nuxt/devtools"
|
|
||||||
],
|
|
||||||
"@vue/runtime-core": [
|
|
||||||
"../node_modules/@vue/runtime-core"
|
|
||||||
],
|
|
||||||
"@vue/compiler-sfc": [
|
|
||||||
"../node_modules/@vue/compiler-sfc"
|
|
||||||
],
|
|
||||||
"vue-router": [
|
|
||||||
"../node_modules/vue-router"
|
|
||||||
],
|
|
||||||
"vue-router/auto-routes": [
|
|
||||||
"../node_modules/vue-router/vue-router-auto-routes"
|
|
||||||
],
|
|
||||||
"unplugin-vue-router/client": [
|
|
||||||
"../node_modules/unplugin-vue-router/client"
|
|
||||||
],
|
|
||||||
"@nuxt/schema": [
|
|
||||||
"../node_modules/@nuxt/schema"
|
|
||||||
],
|
|
||||||
"nuxt": [
|
|
||||||
"../node_modules/nuxt"
|
|
||||||
],
|
|
||||||
"vite/client": [
|
|
||||||
"../node_modules/vite/client"
|
|
||||||
],
|
|
||||||
"~": [
|
|
||||||
".."
|
|
||||||
],
|
|
||||||
"~/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"@": [
|
|
||||||
".."
|
|
||||||
],
|
|
||||||
"@/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"~~": [
|
|
||||||
".."
|
|
||||||
],
|
|
||||||
"~~/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"@@": [
|
|
||||||
".."
|
|
||||||
],
|
|
||||||
"@@/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"#shared": [
|
|
||||||
"../shared"
|
|
||||||
],
|
|
||||||
"assets": [
|
|
||||||
"../assets"
|
|
||||||
],
|
|
||||||
"assets/*": [
|
|
||||||
"../assets/*"
|
|
||||||
],
|
|
||||||
"public": [
|
|
||||||
"../public"
|
|
||||||
],
|
|
||||||
"public/*": [
|
|
||||||
"../public/*"
|
|
||||||
],
|
|
||||||
"#app": [
|
|
||||||
"../node_modules/nuxt/dist/app"
|
|
||||||
],
|
|
||||||
"#app/*": [
|
|
||||||
"../node_modules/nuxt/dist/app/*"
|
|
||||||
],
|
|
||||||
"vue-demi": [
|
|
||||||
"../node_modules/nuxt/dist/app/compat/vue-demi"
|
|
||||||
],
|
|
||||||
"#image": [
|
|
||||||
"../node_modules/@nuxt/image/dist/runtime"
|
|
||||||
],
|
|
||||||
"#image/*": [
|
|
||||||
"../node_modules/@nuxt/image/dist/runtime/*"
|
|
||||||
],
|
|
||||||
"#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"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,184 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"strict": true,
|
|
||||||
"noEmit": true,
|
|
||||||
"target": "ESNext",
|
|
||||||
"module": "ESNext",
|
|
||||||
"moduleResolution": "Bundler",
|
|
||||||
"allowJs": true,
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"jsx": "preserve",
|
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"jsxFactory": "h",
|
|
||||||
"jsxFragmentFactory": "Fragment",
|
|
||||||
"paths": {
|
|
||||||
"#imports": [
|
|
||||||
"./types/nitro-imports"
|
|
||||||
],
|
|
||||||
"~/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"@/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"~~/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"@@/*": [
|
|
||||||
"../*"
|
|
||||||
],
|
|
||||||
"nitropack/types": [
|
|
||||||
"../node_modules/nitropack/types"
|
|
||||||
],
|
|
||||||
"nitropack/runtime": [
|
|
||||||
"../node_modules/nitropack/runtime"
|
|
||||||
],
|
|
||||||
"nitropack": [
|
|
||||||
"../node_modules/nitropack"
|
|
||||||
],
|
|
||||||
"defu": [
|
|
||||||
"../node_modules/defu"
|
|
||||||
],
|
|
||||||
"h3": [
|
|
||||||
"../node_modules/h3"
|
|
||||||
],
|
|
||||||
"consola": [
|
|
||||||
"../node_modules/consola"
|
|
||||||
],
|
|
||||||
"ofetch": [
|
|
||||||
"../node_modules/ofetch"
|
|
||||||
],
|
|
||||||
"@unhead/vue": [
|
|
||||||
"../node_modules/@unhead/vue"
|
|
||||||
],
|
|
||||||
"@nuxt/devtools": [
|
|
||||||
"../node_modules/@nuxt/devtools"
|
|
||||||
],
|
|
||||||
"@vue/runtime-core": [
|
|
||||||
"../node_modules/@vue/runtime-core"
|
|
||||||
],
|
|
||||||
"@vue/compiler-sfc": [
|
|
||||||
"../node_modules/@vue/compiler-sfc"
|
|
||||||
],
|
|
||||||
"vue-router": [
|
|
||||||
"../node_modules/vue-router"
|
|
||||||
],
|
|
||||||
"vue-router/auto-routes": [
|
|
||||||
"../node_modules/vue-router/vue-router-auto-routes"
|
|
||||||
],
|
|
||||||
"unplugin-vue-router/client": [
|
|
||||||
"../node_modules/unplugin-vue-router/client"
|
|
||||||
],
|
|
||||||
"@nuxt/schema": [
|
|
||||||
"../node_modules/@nuxt/schema"
|
|
||||||
],
|
|
||||||
"nuxt": [
|
|
||||||
"../node_modules/nuxt"
|
|
||||||
],
|
|
||||||
"vite/client": [
|
|
||||||
"../node_modules/vite/client"
|
|
||||||
],
|
|
||||||
"#shared": [
|
|
||||||
"../shared"
|
|
||||||
],
|
|
||||||
"assets": [
|
|
||||||
"../assets"
|
|
||||||
],
|
|
||||||
"assets/*": [
|
|
||||||
"../assets/*"
|
|
||||||
],
|
|
||||||
"public": [
|
|
||||||
"../public"
|
|
||||||
],
|
|
||||||
"public/*": [
|
|
||||||
"../public/*"
|
|
||||||
],
|
|
||||||
"#build": [
|
|
||||||
"./"
|
|
||||||
],
|
|
||||||
"#build/*": [
|
|
||||||
"./*"
|
|
||||||
],
|
|
||||||
"#internal/nuxt/paths": [
|
|
||||||
"../node_modules/nuxt/dist/core/runtime/nitro/utils/paths"
|
|
||||||
],
|
|
||||||
"#image": [
|
|
||||||
"../node_modules/@nuxt/image/dist/runtime"
|
|
||||||
],
|
|
||||||
"#image/*": [
|
|
||||||
"../node_modules/@nuxt/image/dist/runtime/*"
|
|
||||||
],
|
|
||||||
"#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
7
.nuxt/types/app-defaults.d.ts
vendored
@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
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
225
.nuxt/types/app.config.d.ts
vendored
@ -1,225 +0,0 @@
|
|||||||
|
|
||||||
import type { CustomAppConfig } from 'nuxt/schema'
|
|
||||||
import type { Defu } from 'defu'
|
|
||||||
|
|
||||||
|
|
||||||
declare const inlineConfig = {
|
|
||||||
"nuxt": {},
|
|
||||||
"icon": {
|
|
||||||
"provider": "server",
|
|
||||||
"class": "",
|
|
||||||
"aliases": {},
|
|
||||||
"iconifyApiEndpoint": "https://api.iconify.design",
|
|
||||||
"localApiEndpoint": "/api/_nuxt_icon",
|
|
||||||
"fallbackToApi": true,
|
|
||||||
"cssSelectorPrefix": "i-",
|
|
||||||
"cssWherePseudo": true,
|
|
||||||
"mode": "css",
|
|
||||||
"attrs": {
|
|
||||||
"aria-hidden": true
|
|
||||||
},
|
|
||||||
"collections": [
|
|
||||||
"academicons",
|
|
||||||
"akar-icons",
|
|
||||||
"ant-design",
|
|
||||||
"arcticons",
|
|
||||||
"basil",
|
|
||||||
"bi",
|
|
||||||
"bitcoin-icons",
|
|
||||||
"bpmn",
|
|
||||||
"brandico",
|
|
||||||
"bx",
|
|
||||||
"bxl",
|
|
||||||
"bxs",
|
|
||||||
"bytesize",
|
|
||||||
"carbon",
|
|
||||||
"catppuccin",
|
|
||||||
"cbi",
|
|
||||||
"charm",
|
|
||||||
"ci",
|
|
||||||
"cib",
|
|
||||||
"cif",
|
|
||||||
"cil",
|
|
||||||
"circle-flags",
|
|
||||||
"circum",
|
|
||||||
"clarity",
|
|
||||||
"codicon",
|
|
||||||
"covid",
|
|
||||||
"cryptocurrency",
|
|
||||||
"cryptocurrency-color",
|
|
||||||
"dashicons",
|
|
||||||
"devicon",
|
|
||||||
"devicon-plain",
|
|
||||||
"ei",
|
|
||||||
"el",
|
|
||||||
"emojione",
|
|
||||||
"emojione-monotone",
|
|
||||||
"emojione-v1",
|
|
||||||
"entypo",
|
|
||||||
"entypo-social",
|
|
||||||
"eos-icons",
|
|
||||||
"ep",
|
|
||||||
"et",
|
|
||||||
"eva",
|
|
||||||
"f7",
|
|
||||||
"fa",
|
|
||||||
"fa-brands",
|
|
||||||
"fa-regular",
|
|
||||||
"fa-solid",
|
|
||||||
"fa6-brands",
|
|
||||||
"fa6-regular",
|
|
||||||
"fa6-solid",
|
|
||||||
"fad",
|
|
||||||
"fe",
|
|
||||||
"feather",
|
|
||||||
"file-icons",
|
|
||||||
"flag",
|
|
||||||
"flagpack",
|
|
||||||
"flat-color-icons",
|
|
||||||
"flat-ui",
|
|
||||||
"flowbite",
|
|
||||||
"fluent",
|
|
||||||
"fluent-emoji",
|
|
||||||
"fluent-emoji-flat",
|
|
||||||
"fluent-emoji-high-contrast",
|
|
||||||
"fluent-mdl2",
|
|
||||||
"fontelico",
|
|
||||||
"fontisto",
|
|
||||||
"formkit",
|
|
||||||
"foundation",
|
|
||||||
"fxemoji",
|
|
||||||
"gala",
|
|
||||||
"game-icons",
|
|
||||||
"geo",
|
|
||||||
"gg",
|
|
||||||
"gis",
|
|
||||||
"gravity-ui",
|
|
||||||
"gridicons",
|
|
||||||
"grommet-icons",
|
|
||||||
"guidance",
|
|
||||||
"healthicons",
|
|
||||||
"heroicons",
|
|
||||||
"heroicons-outline",
|
|
||||||
"heroicons-solid",
|
|
||||||
"hugeicons",
|
|
||||||
"humbleicons",
|
|
||||||
"ic",
|
|
||||||
"icomoon-free",
|
|
||||||
"icon-park",
|
|
||||||
"icon-park-outline",
|
|
||||||
"icon-park-solid",
|
|
||||||
"icon-park-twotone",
|
|
||||||
"iconamoon",
|
|
||||||
"iconoir",
|
|
||||||
"icons8",
|
|
||||||
"il",
|
|
||||||
"ion",
|
|
||||||
"iwwa",
|
|
||||||
"jam",
|
|
||||||
"la",
|
|
||||||
"lets-icons",
|
|
||||||
"line-md",
|
|
||||||
"logos",
|
|
||||||
"ls",
|
|
||||||
"lucide",
|
|
||||||
"lucide-lab",
|
|
||||||
"mage",
|
|
||||||
"majesticons",
|
|
||||||
"maki",
|
|
||||||
"map",
|
|
||||||
"marketeq",
|
|
||||||
"material-symbols",
|
|
||||||
"material-symbols-light",
|
|
||||||
"mdi",
|
|
||||||
"mdi-light",
|
|
||||||
"medical-icon",
|
|
||||||
"memory",
|
|
||||||
"meteocons",
|
|
||||||
"mi",
|
|
||||||
"mingcute",
|
|
||||||
"mono-icons",
|
|
||||||
"mynaui",
|
|
||||||
"nimbus",
|
|
||||||
"nonicons",
|
|
||||||
"noto",
|
|
||||||
"noto-v1",
|
|
||||||
"octicon",
|
|
||||||
"oi",
|
|
||||||
"ooui",
|
|
||||||
"openmoji",
|
|
||||||
"oui",
|
|
||||||
"pajamas",
|
|
||||||
"pepicons",
|
|
||||||
"pepicons-pencil",
|
|
||||||
"pepicons-pop",
|
|
||||||
"pepicons-print",
|
|
||||||
"ph",
|
|
||||||
"pixelarticons",
|
|
||||||
"prime",
|
|
||||||
"ps",
|
|
||||||
"quill",
|
|
||||||
"radix-icons",
|
|
||||||
"raphael",
|
|
||||||
"ri",
|
|
||||||
"rivet-icons",
|
|
||||||
"si-glyph",
|
|
||||||
"simple-icons",
|
|
||||||
"simple-line-icons",
|
|
||||||
"skill-icons",
|
|
||||||
"solar",
|
|
||||||
"streamline",
|
|
||||||
"streamline-emojis",
|
|
||||||
"subway",
|
|
||||||
"svg-spinners",
|
|
||||||
"system-uicons",
|
|
||||||
"tabler",
|
|
||||||
"tdesign",
|
|
||||||
"teenyicons",
|
|
||||||
"token",
|
|
||||||
"token-branded",
|
|
||||||
"topcoat",
|
|
||||||
"twemoji",
|
|
||||||
"typcn",
|
|
||||||
"uil",
|
|
||||||
"uim",
|
|
||||||
"uis",
|
|
||||||
"uit",
|
|
||||||
"uiw",
|
|
||||||
"unjs",
|
|
||||||
"vaadin",
|
|
||||||
"vs",
|
|
||||||
"vscode-icons",
|
|
||||||
"websymbol",
|
|
||||||
"weui",
|
|
||||||
"whh",
|
|
||||||
"wi",
|
|
||||||
"wpf",
|
|
||||||
"zmdi",
|
|
||||||
"zondicons"
|
|
||||||
],
|
|
||||||
"fetchTimeout": 1500
|
|
||||||
}
|
|
||||||
}
|
|
||||||
type ResolvedAppConfig = Defu<typeof inlineConfig, []>
|
|
||||||
type IsAny<T> = 0 extends 1 & T ? true : false
|
|
||||||
|
|
||||||
type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = {
|
|
||||||
[K in keyof (Resolved & Custom)]: K extends keyof Custom
|
|
||||||
? unknown extends Custom[K]
|
|
||||||
? Resolved[K]
|
|
||||||
: IsAny<Custom[K]> extends true
|
|
||||||
? Resolved[K]
|
|
||||||
: Custom[K] extends Record<string, any>
|
|
||||||
? Resolved[K] extends Record<string, any>
|
|
||||||
? MergedAppConfig<Resolved[K], Custom[K]>
|
|
||||||
: Exclude<Custom[K], undefined>
|
|
||||||
: Exclude<Custom[K], undefined>
|
|
||||||
: Resolved[K]
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'nuxt/schema' {
|
|
||||||
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
|
|
||||||
}
|
|
||||||
declare module '@nuxt/schema' {
|
|
||||||
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
|
|
||||||
}
|
|
25
.nuxt/types/build.d.ts
vendored
25
.nuxt/types/build.d.ts
vendored
@ -1,25 +0,0 @@
|
|||||||
declare module "#build/app-component.mjs";
|
|
||||||
declare module "#build/nitro.client.mjs";
|
|
||||||
declare module "#build/plugins.client.mjs";
|
|
||||||
declare module "#build/css.mjs";
|
|
||||||
declare module "#build/fetch.mjs";
|
|
||||||
declare module "#build/error-component.mjs";
|
|
||||||
declare module "#build/global-polyfills.mjs";
|
|
||||||
declare module "#build/layouts.mjs";
|
|
||||||
declare module "#build/middleware.mjs";
|
|
||||||
declare module "#build/nuxt.config.mjs";
|
|
||||||
declare module "#build/paths.mjs";
|
|
||||||
declare module "#build/root-component.mjs";
|
|
||||||
declare module "#build/plugins.server.mjs";
|
|
||||||
declare module "#build/test-component-wrapper.mjs";
|
|
||||||
declare module "#build/image-options.mjs";
|
|
||||||
declare module "#build/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
1
.nuxt/types/builder-env.d.ts
vendored
@ -1 +0,0 @@
|
|||||||
import "vite/client";
|
|
380
.nuxt/types/imports.d.ts
vendored
380
.nuxt/types/imports.d.ts
vendored
@ -1,380 +0,0 @@
|
|||||||
// Generated by auto imports
|
|
||||||
export {}
|
|
||||||
declare global {
|
|
||||||
const abortNavigation: typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']
|
|
||||||
const acceptHMRUpdate: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']
|
|
||||||
const addRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']
|
|
||||||
const callOnce: typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']
|
|
||||||
const cancelIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']
|
|
||||||
const clearError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']
|
|
||||||
const clearNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']
|
|
||||||
const clearNuxtState: typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']
|
|
||||||
const computed: typeof import('vue')['computed']
|
|
||||||
const createError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']
|
|
||||||
const customRef: typeof import('vue')['customRef']
|
|
||||||
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']
|
|
||||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
|
||||||
const defineComponent: typeof import('vue')['defineComponent']
|
|
||||||
const defineNuxtComponent: typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']
|
|
||||||
const defineNuxtLink: typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']
|
|
||||||
const defineNuxtPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']
|
|
||||||
const defineNuxtRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']
|
|
||||||
const definePageMeta: typeof import('../../node_modules/nuxt/dist/pages/runtime/composables')['definePageMeta']
|
|
||||||
const definePayloadPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']
|
|
||||||
const definePayloadReducer: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']
|
|
||||||
const definePayloadReviver: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']
|
|
||||||
const defineStore: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']
|
|
||||||
const effect: typeof import('vue')['effect']
|
|
||||||
const effectScope: typeof import('vue')['effectScope']
|
|
||||||
const getAppManifest: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']
|
|
||||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
|
||||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
|
||||||
const getRouteRules: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']
|
|
||||||
const h: typeof import('vue')['h']
|
|
||||||
const hasInjectionContext: typeof import('vue')['hasInjectionContext']
|
|
||||||
const inject: typeof import('vue')['inject']
|
|
||||||
const injectHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']
|
|
||||||
const isNuxtError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']
|
|
||||||
const isPrerendered: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']
|
|
||||||
const isProxy: typeof import('vue')['isProxy']
|
|
||||||
const isReactive: typeof import('vue')['isReactive']
|
|
||||||
const isReadonly: typeof import('vue')['isReadonly']
|
|
||||||
const isRef: typeof import('vue')['isRef']
|
|
||||||
const isShallow: typeof import('vue')['isShallow']
|
|
||||||
const isVue2: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']
|
|
||||||
const isVue3: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']
|
|
||||||
const loadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']
|
|
||||||
const markRaw: typeof import('vue')['markRaw']
|
|
||||||
const mergeModels: typeof import('vue')['mergeModels']
|
|
||||||
const navigateTo: typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']
|
|
||||||
const nextTick: typeof import('vue')['nextTick']
|
|
||||||
const onActivated: typeof import('vue')['onActivated']
|
|
||||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
|
||||||
const onBeforeRouteLeave: typeof import('../../node_modules/vue-router')['onBeforeRouteLeave']
|
|
||||||
const onBeforeRouteUpdate: typeof import('../../node_modules/vue-router')['onBeforeRouteUpdate']
|
|
||||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
|
||||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
|
||||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
|
||||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
|
||||||
const onMounted: typeof import('vue')['onMounted']
|
|
||||||
const onNuxtReady: typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']
|
|
||||||
const onPrehydrate: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']
|
|
||||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
|
||||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
|
||||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
|
||||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
|
||||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
|
||||||
const onUpdated: typeof import('vue')['onUpdated']
|
|
||||||
const 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
7
.nuxt/types/layouts.d.ts
vendored
@ -1,7 +0,0 @@
|
|||||||
import type { ComputedRef, MaybeRef } from 'vue'
|
|
||||||
export type LayoutKey = "ui-footer" | "ui-footer-data-footer-navigation-data" | "ui-footer-data" | "ui-footer-data-ref-litres-data" | "ui-header" | "ui-header-data-header-navigation-data" | "ui-header-data" | "ui-main" | "default"
|
|
||||||
declare module 'nuxt/app' {
|
|
||||||
interface PageMeta {
|
|
||||||
layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false>
|
|
||||||
}
|
|
||||||
}
|
|
7
.nuxt/types/middleware.d.ts
vendored
7
.nuxt/types/middleware.d.ts
vendored
@ -1,7 +0,0 @@
|
|||||||
import type { NavigationGuard } from 'vue-router'
|
|
||||||
export type MiddlewareKey = never
|
|
||||||
declare module 'nuxt/app' {
|
|
||||||
interface PageMeta {
|
|
||||||
middleware?: MiddlewareKey | NavigationGuard | Array<MiddlewareKey | NavigationGuard>
|
|
||||||
}
|
|
||||||
}
|
|
14
.nuxt/types/nitro-config.d.ts
vendored
14
.nuxt/types/nitro-config.d.ts
vendored
@ -1,14 +0,0 @@
|
|||||||
// Generated by nitro
|
|
||||||
|
|
||||||
// App Config
|
|
||||||
import type { Defu } from 'defu'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type UserAppConfig = Defu<{}, []>
|
|
||||||
|
|
||||||
declare module "nitropack/types" {
|
|
||||||
interface AppConfig extends UserAppConfig {}
|
|
||||||
|
|
||||||
}
|
|
||||||
export {}
|
|
150
.nuxt/types/nitro-imports.d.ts
vendored
150
.nuxt/types/nitro-imports.d.ts
vendored
@ -1,150 +0,0 @@
|
|||||||
declare global {
|
|
||||||
const __buildAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['buildAssetsURL']
|
|
||||||
const __publicAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['publicAssetsURL']
|
|
||||||
const appendCorsHeaders: typeof import('../../node_modules/h3')['appendCorsHeaders']
|
|
||||||
const appendCorsPreflightHeaders: typeof import('../../node_modules/h3')['appendCorsPreflightHeaders']
|
|
||||||
const appendHeader: typeof import('../../node_modules/h3')['appendHeader']
|
|
||||||
const appendHeaders: typeof import('../../node_modules/h3')['appendHeaders']
|
|
||||||
const appendResponseHeader: typeof import('../../node_modules/h3')['appendResponseHeader']
|
|
||||||
const appendResponseHeaders: typeof import('../../node_modules/h3')['appendResponseHeaders']
|
|
||||||
const assertMethod: typeof import('../../node_modules/h3')['assertMethod']
|
|
||||||
const cachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedEventHandler']
|
|
||||||
const cachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedFunction']
|
|
||||||
const callNodeListener: typeof import('../../node_modules/h3')['callNodeListener']
|
|
||||||
const clearResponseHeaders: typeof import('../../node_modules/h3')['clearResponseHeaders']
|
|
||||||
const clearSession: typeof import('../../node_modules/h3')['clearSession']
|
|
||||||
const createApp: typeof import('../../node_modules/h3')['createApp']
|
|
||||||
const createAppEventHandler: typeof import('../../node_modules/h3')['createAppEventHandler']
|
|
||||||
const createError: typeof import('../../node_modules/h3')['createError']
|
|
||||||
const createEvent: typeof import('../../node_modules/h3')['createEvent']
|
|
||||||
const createEventStream: typeof import('../../node_modules/h3')['createEventStream']
|
|
||||||
const createRouter: typeof import('../../node_modules/h3')['createRouter']
|
|
||||||
const defaultContentType: typeof import('../../node_modules/h3')['defaultContentType']
|
|
||||||
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/config')['defineAppConfig']
|
|
||||||
const defineCachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedEventHandler']
|
|
||||||
const defineCachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedFunction']
|
|
||||||
const defineEventHandler: typeof import('../../node_modules/h3')['defineEventHandler']
|
|
||||||
const defineLazyEventHandler: typeof import('../../node_modules/h3')['defineLazyEventHandler']
|
|
||||||
const defineNitroErrorHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/error/utils')['defineNitroErrorHandler']
|
|
||||||
const defineNitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['defineNitroPlugin']
|
|
||||||
const defineNodeListener: typeof import('../../node_modules/h3')['defineNodeListener']
|
|
||||||
const defineNodeMiddleware: typeof import('../../node_modules/h3')['defineNodeMiddleware']
|
|
||||||
const defineRenderHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/renderer')['defineRenderHandler']
|
|
||||||
const defineRequestMiddleware: typeof import('../../node_modules/h3')['defineRequestMiddleware']
|
|
||||||
const defineResponseMiddleware: typeof import('../../node_modules/h3')['defineResponseMiddleware']
|
|
||||||
const defineRouteMeta: typeof import('../../node_modules/nitropack/dist/runtime/internal/meta')['defineRouteMeta']
|
|
||||||
const defineTask: typeof import('../../node_modules/nitropack/dist/runtime/internal/task')['defineTask']
|
|
||||||
const defineWebSocket: typeof import('../../node_modules/h3')['defineWebSocket']
|
|
||||||
const defineWebSocketHandler: typeof import('../../node_modules/h3')['defineWebSocketHandler']
|
|
||||||
const deleteCookie: typeof import('../../node_modules/h3')['deleteCookie']
|
|
||||||
const dynamicEventHandler: typeof import('../../node_modules/h3')['dynamicEventHandler']
|
|
||||||
const eventHandler: typeof import('../../node_modules/h3')['eventHandler']
|
|
||||||
const fetchWithEvent: typeof import('../../node_modules/h3')['fetchWithEvent']
|
|
||||||
const fromNodeMiddleware: typeof import('../../node_modules/h3')['fromNodeMiddleware']
|
|
||||||
const fromPlainHandler: typeof import('../../node_modules/h3')['fromPlainHandler']
|
|
||||||
const fromWebHandler: typeof import('../../node_modules/h3')['fromWebHandler']
|
|
||||||
const getCookie: typeof import('../../node_modules/h3')['getCookie']
|
|
||||||
const getHeader: typeof import('../../node_modules/h3')['getHeader']
|
|
||||||
const getHeaders: typeof import('../../node_modules/h3')['getHeaders']
|
|
||||||
const getMethod: typeof import('../../node_modules/h3')['getMethod']
|
|
||||||
const getProxyRequestHeaders: typeof import('../../node_modules/h3')['getProxyRequestHeaders']
|
|
||||||
const getQuery: typeof import('../../node_modules/h3')['getQuery']
|
|
||||||
const getRequestFingerprint: typeof import('../../node_modules/h3')['getRequestFingerprint']
|
|
||||||
const getRequestHeader: typeof import('../../node_modules/h3')['getRequestHeader']
|
|
||||||
const getRequestHeaders: typeof import('../../node_modules/h3')['getRequestHeaders']
|
|
||||||
const getRequestHost: typeof import('../../node_modules/h3')['getRequestHost']
|
|
||||||
const getRequestIP: typeof import('../../node_modules/h3')['getRequestIP']
|
|
||||||
const getRequestPath: typeof import('../../node_modules/h3')['getRequestPath']
|
|
||||||
const getRequestProtocol: typeof import('../../node_modules/h3')['getRequestProtocol']
|
|
||||||
const getRequestURL: typeof import('../../node_modules/h3')['getRequestURL']
|
|
||||||
const getRequestWebStream: typeof import('../../node_modules/h3')['getRequestWebStream']
|
|
||||||
const getResponseHeader: typeof import('../../node_modules/h3')['getResponseHeader']
|
|
||||||
const getResponseHeaders: typeof import('../../node_modules/h3')['getResponseHeaders']
|
|
||||||
const getResponseStatus: typeof import('../../node_modules/h3')['getResponseStatus']
|
|
||||||
const getResponseStatusText: typeof import('../../node_modules/h3')['getResponseStatusText']
|
|
||||||
const getRouteRules: typeof import('../../node_modules/nitropack/dist/runtime/internal/route-rules')['getRouteRules']
|
|
||||||
const getRouterParam: typeof import('../../node_modules/h3')['getRouterParam']
|
|
||||||
const getRouterParams: typeof import('../../node_modules/h3')['getRouterParams']
|
|
||||||
const getSession: typeof import('../../node_modules/h3')['getSession']
|
|
||||||
const getValidatedQuery: typeof import('../../node_modules/h3')['getValidatedQuery']
|
|
||||||
const getValidatedRouterParams: typeof import('../../node_modules/h3')['getValidatedRouterParams']
|
|
||||||
const handleCacheHeaders: typeof import('../../node_modules/h3')['handleCacheHeaders']
|
|
||||||
const handleCors: typeof import('../../node_modules/h3')['handleCors']
|
|
||||||
const isCorsOriginAllowed: typeof import('../../node_modules/h3')['isCorsOriginAllowed']
|
|
||||||
const isError: typeof import('../../node_modules/h3')['isError']
|
|
||||||
const isEvent: typeof import('../../node_modules/h3')['isEvent']
|
|
||||||
const isEventHandler: typeof import('../../node_modules/h3')['isEventHandler']
|
|
||||||
const isMethod: typeof import('../../node_modules/h3')['isMethod']
|
|
||||||
const isPreflightRequest: typeof import('../../node_modules/h3')['isPreflightRequest']
|
|
||||||
const isStream: typeof import('../../node_modules/h3')['isStream']
|
|
||||||
const isWebResponse: typeof import('../../node_modules/h3')['isWebResponse']
|
|
||||||
const lazyEventHandler: typeof import('../../node_modules/h3')['lazyEventHandler']
|
|
||||||
const nitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['nitroPlugin']
|
|
||||||
const parseCookies: typeof import('../../node_modules/h3')['parseCookies']
|
|
||||||
const 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
6
.nuxt/types/nitro-middleware.d.ts
vendored
@ -1,6 +0,0 @@
|
|||||||
export type MiddlewareKey = never
|
|
||||||
declare module 'nitropack' {
|
|
||||||
interface NitroRouteConfig {
|
|
||||||
appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean>
|
|
||||||
}
|
|
||||||
}
|
|
34
.nuxt/types/nitro-nuxt.d.ts
vendored
34
.nuxt/types/nitro-nuxt.d.ts
vendored
@ -1,34 +0,0 @@
|
|||||||
|
|
||||||
/// <reference path="nitro-middleware.d.ts" />
|
|
||||||
/// <reference path="./schema.d.ts" />
|
|
||||||
|
|
||||||
import type { RuntimeConfig } from 'nuxt/schema'
|
|
||||||
import type { H3Event } from 'h3'
|
|
||||||
import type { LogObject } from 'consola'
|
|
||||||
import type { NuxtIslandContext, NuxtIslandResponse, NuxtRenderHTMLContext } from 'nuxt/app'
|
|
||||||
|
|
||||||
declare module 'nitropack' {
|
|
||||||
interface NitroRuntimeConfigApp {
|
|
||||||
buildAssetsDir: string
|
|
||||||
cdnURL: string
|
|
||||||
}
|
|
||||||
interface NitroRuntimeConfig extends RuntimeConfig {}
|
|
||||||
interface NitroRouteConfig {
|
|
||||||
ssr?: boolean
|
|
||||||
noScripts?: boolean
|
|
||||||
/** @deprecated Use `noScripts` instead */
|
|
||||||
experimentalNoScripts?: boolean
|
|
||||||
}
|
|
||||||
interface NitroRouteRules {
|
|
||||||
ssr?: boolean
|
|
||||||
noScripts?: boolean
|
|
||||||
/** @deprecated Use `noScripts` instead */
|
|
||||||
experimentalNoScripts?: boolean
|
|
||||||
appMiddleware?: Record<string, boolean>
|
|
||||||
}
|
|
||||||
interface NitroRuntimeHooks {
|
|
||||||
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
|
|
||||||
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
|
|
||||||
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
|
|
||||||
}
|
|
||||||
}
|
|
26
.nuxt/types/nitro-routes.d.ts
vendored
26
.nuxt/types/nitro-routes.d.ts
vendored
@ -1,26 +0,0 @@
|
|||||||
// Generated by nitro
|
|
||||||
import type { Serialize, Simplify } from "nitropack/types";
|
|
||||||
declare module "nitropack/types" {
|
|
||||||
type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T
|
|
||||||
interface InternalApi {
|
|
||||||
'/__nuxt_error': {
|
|
||||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/handlers/renderer').default>>>>
|
|
||||||
}
|
|
||||||
'/api/_nuxt_icon/:collection': {
|
|
||||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/icon/dist/runtime/server/api').default>>>>
|
|
||||||
}
|
|
||||||
'/__nuxt_island/**': {
|
|
||||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../server/#internal/nuxt/island-renderer').default>>>>
|
|
||||||
}
|
|
||||||
'/__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
3
.nuxt/types/nitro.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
/// <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
40
.nuxt/types/plugins.d.ts
vendored
@ -1,40 +0,0 @@
|
|||||||
// Generated by Nuxt'
|
|
||||||
import type { Plugin } from '#app'
|
|
||||||
|
|
||||||
type Decorate<T extends Record<string, any>> = { [K in keyof T as K extends string ? `$${K}` : never]: T[K] }
|
|
||||||
|
|
||||||
type InjectionType<A extends Plugin> = A extends {default: Plugin<infer T>} ? Decorate<T> : unknown
|
|
||||||
|
|
||||||
type NuxtAppInjections =
|
|
||||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
|
|
||||||
InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
|
|
||||||
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
|
|
||||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/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
268
.nuxt/types/schema.d.ts
vendored
@ -1,268 +0,0 @@
|
|||||||
import { NuxtModule, RuntimeConfig } from '@nuxt/schema'
|
|
||||||
declare module '@nuxt/schema' {
|
|
||||||
interface NuxtOptions {
|
|
||||||
/**
|
|
||||||
* Configuration for `@nuxt/eslint`
|
|
||||||
*/
|
|
||||||
["eslint"]: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? O : Record<string, any>
|
|
||||||
/**
|
|
||||||
* Configuration for `@nuxt/icon`
|
|
||||||
*/
|
|
||||||
["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O : Record<string, any>
|
|
||||||
/**
|
|
||||||
* Configuration for `@nuxt/image`
|
|
||||||
*/
|
|
||||||
["image"]: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? O : Record<string, any>
|
|
||||||
/**
|
|
||||||
* Configuration for `@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
0
.nuxt/types/vue-shim.d.ts
vendored
7
.prettierrc.json
Normal file
7
.prettierrc.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/prettierrc",
|
||||||
|
"semi": false,
|
||||||
|
"singleQuote": true,
|
||||||
|
"printWidth": 100
|
||||||
|
}
|
||||||
|
|
12
Dockerfile
12
Dockerfile
@ -1,13 +1,7 @@
|
|||||||
FROM node:20 as builder
|
FROM node:22-slim
|
||||||
|
WORKDIR /usr/src/app
|
||||||
WORKDIR /app
|
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
CMD ["node", "dist/server/index.mjs"]
|
||||||
FROM nginx:alpine
|
|
||||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
||||||
COPY ebook.conf /etc/nginx/conf.d/default.conf
|
|
||||||
EXPOSE 80
|
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
|
||||||
|
@ -8,6 +8,7 @@ Make sure to install dependencies:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# npm
|
# npm
|
||||||
|
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# pnpm
|
# pnpm
|
||||||
|
7
app.vue
7
app.vue
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<NuxtLayout>
|
<NuxtLayout>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<!-- <link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
<link
|
<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"
|
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"
|
||||||
@ -9,10 +9,7 @@
|
|||||||
<link
|
<link
|
||||||
href="https://fonts.googleapis.com/css2?family=Russo+One&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Russo+One&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/> -->
|
||||||
<NuxtPage />
|
<NuxtPage />
|
||||||
</NuxtLayout>
|
</NuxtLayout>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
|
||||||
const route = useRoute();
|
|
||||||
</script>
|
|
||||||
|
@ -23,17 +23,57 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Кастомные классы шрифтов */
|
/* Кастомные классы шрифтов */
|
||||||
.lato-thin { font-family: 'Lato', sans-serif; font-weight: 100; font-style: normal; }
|
.lato-thin {
|
||||||
.lato-light { font-family: 'Lato', sans-serif; font-weight: 300; font-style: normal; }
|
font-family: 'Lato', sans-serif;
|
||||||
.lato-regular { font-family: 'Lato', sans-serif; font-weight: 400; font-style: normal; }
|
font-weight: 100;
|
||||||
.lato-bold { font-family: 'Lato', sans-serif; font-weight: 700; font-style: normal; }
|
font-style: normal;
|
||||||
.lato-black { font-family: 'Lato', sans-serif; font-weight: 900; 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-thin-italic {
|
||||||
.lato-light-italic { font-family: 'Lato', sans-serif; font-weight: 300; font-style: italic; }
|
font-family: 'Lato', sans-serif;
|
||||||
.lato-regular-italic { font-family: 'Lato', sans-serif; font-weight: 400; font-style: italic; }
|
font-weight: 100;
|
||||||
.lato-bold-italic { font-family: 'Lato', sans-serif; font-weight: 700; font-style: italic; }
|
font-style: italic;
|
||||||
.lato-black-italic { font-family: 'Lato', sans-serif; font-weight: 900; 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 {
|
.russo-one-regular {
|
||||||
font-family: 'Russo One', sans-serif;
|
font-family: 'Russo One', sans-serif;
|
||||||
|
3
assets/icon/arrow.svg
Normal file
3
assets/icon/arrow.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="14" height="20" viewBox="0 0 14 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.9401 11.1109L2.9533 20L0.457031 17.7781L9.19574 10L0.457031 2.22187L2.9533 0L12.9401 8.88906C13.2711 9.18373 13.457 9.58334 13.457 10C13.457 10.4167 13.2711 10.8163 12.9401 11.1109Z" fill="white"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 354 B |
BIN
assets/img/png/footer-flowers-2.png
Normal file
BIN
assets/img/png/footer-flowers-2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 746 KiB |
BIN
assets/img/webp/footer-flowers-2.webp
Normal file
BIN
assets/img/webp/footer-flowers-2.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 142 KiB |
71
components/EmailForm.vue
Normal file
71
components/EmailForm.vue
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<template>
|
||||||
|
<div class="max-w-md mx-auto p-6 rounded-lg shadow-md text-gray-900">
|
||||||
|
<h2 class="text-2xl font-bold mb-6 text-primary text-center">Заполните контактные данные</h2>
|
||||||
|
|
||||||
|
<form @submit.prevent="onSubmit" class="space-y-4">
|
||||||
|
<div>
|
||||||
|
<label for="to" class="block text-sm font-medium text-primary mb-2"> Ваш e-mail: </label>
|
||||||
|
<input
|
||||||
|
id="to"
|
||||||
|
v-model="to"
|
||||||
|
type="email"
|
||||||
|
required
|
||||||
|
placeholder="email@example.com"
|
||||||
|
class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-gray-900"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<UiButton type="submit" :disabled="isLoading" class="w-[400px]">
|
||||||
|
<span v-if="isLoading">Перехожу...</span>
|
||||||
|
<span v-else>Перейти к оплате</span>
|
||||||
|
</UiButton>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div v-if="status" class="mt-4 p-3 rounded-md" :class="statusClass">
|
||||||
|
{{ status }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed } from 'vue'
|
||||||
|
|
||||||
|
const to = ref('')
|
||||||
|
const status = ref('')
|
||||||
|
const isLoading = ref(false)
|
||||||
|
|
||||||
|
const statusClass = computed(() => {
|
||||||
|
if (status.value.includes('Ошибка')) {
|
||||||
|
return 'bg-red-100 text-red-700 border border-red-200'
|
||||||
|
}
|
||||||
|
if (status.value.includes('Успех')) {
|
||||||
|
return 'bg-green-100 text-green-700 border border-green-200'
|
||||||
|
}
|
||||||
|
return 'bg-blue-100 text-blue-700 border-blue-200'
|
||||||
|
})
|
||||||
|
|
||||||
|
async function onSubmit() {
|
||||||
|
if (!to.value) {
|
||||||
|
status.value = 'Пожалуйста, введите ваш e-mail'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoading.value = true
|
||||||
|
status.value = ''
|
||||||
|
|
||||||
|
try {
|
||||||
|
await $fetch('/api/send-order', {
|
||||||
|
method: 'POST',
|
||||||
|
body: { to: to.value },
|
||||||
|
})
|
||||||
|
|
||||||
|
status.value = 'Успех! Письмо с подтверждением отправлено на вашу почту.'
|
||||||
|
to.value = ''
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Ошибка отправки письма:', error)
|
||||||
|
status.value = `Ошибка отправки: ${error?.data?.message || error.message || 'Неизвестная ошибка'}`
|
||||||
|
} finally {
|
||||||
|
isLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -1,13 +1,17 @@
|
|||||||
export const colorVariants = {
|
export const colorVariants = {
|
||||||
primary: ['bg-accent-50', 'text-primary', 'hover:bg-accent-100', 'active:bg-accent-150'],
|
primary: [
|
||||||
secondary: [
|
"bg-accent-50",
|
||||||
'bg-transparent',
|
"text-primary",
|
||||||
'text-primary',
|
"hover:bg-accent-100",
|
||||||
'hover:bg-accent-50',
|
"active:bg-accent-150",
|
||||||
'border-accent-50',
|
|
||||||
'border',
|
|
||||||
'hover:bg-accent-100',
|
|
||||||
'active:bg-accent-150',
|
|
||||||
'cursor-pointer',
|
|
||||||
],
|
],
|
||||||
}
|
secondary: [
|
||||||
|
"bg-transparent",
|
||||||
|
"text-primary",
|
||||||
|
"hover:bg-accent-50",
|
||||||
|
"border-accent-50",
|
||||||
|
"border",
|
||||||
|
"hover:bg-accent-100",
|
||||||
|
"active:bg-accent-150",
|
||||||
|
],
|
||||||
|
};
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<component
|
<component
|
||||||
:is="tag"
|
:is="tag"
|
||||||
|
:type="tag === 'button' ? 'button' : ''"
|
||||||
|
:to="path"
|
||||||
|
:href="path"
|
||||||
class="px-14 py-4 rounded-[20px] text-[30px] cursor-pointer shadow-[0px_16px_50px_-16px_rgba(229,30,125,1)]"
|
class="px-14 py-4 rounded-[20px] text-[30px] cursor-pointer shadow-[0px_16px_50px_-16px_rgba(229,30,125,1)]"
|
||||||
:class="[baseStyle, size]"
|
:class="[baseStyle, size]"
|
||||||
data-ui="ui-button"
|
data-ui="ui-button"
|
||||||
@ -29,6 +32,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: 'font-bold',
|
default: 'font-bold',
|
||||||
},
|
},
|
||||||
|
path: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const { tag, variants, size } = toRefs(props)
|
const { tag, variants, size } = toRefs(props)
|
||||||
|
28
config/head.ts
Normal file
28
config/head.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
export default {
|
||||||
|
meta: [
|
||||||
|
{ charset: "utf-8" },
|
||||||
|
{
|
||||||
|
name: "viewport",
|
||||||
|
content:
|
||||||
|
"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{
|
||||||
|
rel: "preconnect",
|
||||||
|
href: "https://fonts.googleapis.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rel: "preconnect",
|
||||||
|
href: "https://fonts.gstatic.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rel: "stylesheet",
|
||||||
|
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",
|
||||||
|
href: "https://fonts.googleapis.com/css2?family=Russo+One&display=swap",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
@ -1,5 +1,5 @@
|
|||||||
import modules from './modules'
|
import modules from "./modules";
|
||||||
import sitemap from './sitemap'
|
import sitemap from "./sitemap";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
modules,
|
modules,
|
||||||
@ -8,4 +8,4 @@ export default {
|
|||||||
strict: true,
|
strict: true,
|
||||||
typeCheck: true,
|
typeCheck: true,
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
|
@ -3,10 +3,11 @@ export default [
|
|||||||
'@nuxt/icon',
|
'@nuxt/icon',
|
||||||
'@nuxt/image',
|
'@nuxt/image',
|
||||||
'@nuxt/content',
|
'@nuxt/content',
|
||||||
'@nuxt/fonts',
|
// '@nuxt/fonts',
|
||||||
'@pinia/nuxt',
|
'@pinia/nuxt',
|
||||||
'@nuxtjs/tailwindcss',
|
'@nuxtjs/tailwindcss',
|
||||||
'@pinia/nuxt',
|
'@pinia/nuxt',
|
||||||
|
'@nuxtjs/html-validator',
|
||||||
// '@nuxtjs/robots',
|
// '@nuxtjs/robots',
|
||||||
// '@nuxtjs/sitemap',
|
// '@nuxtjs/sitemap',
|
||||||
]
|
]
|
||||||
|
10
content.config.ts
Normal file
10
content.config.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { defineContentConfig, defineCollection } from '@nuxt/content'
|
||||||
|
|
||||||
|
export default defineContentConfig({
|
||||||
|
collections: {
|
||||||
|
books: defineCollection({
|
||||||
|
type: 'page',
|
||||||
|
source: '/books/*.md',
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
69
content/books/1.md
Normal file
69
content/books/1.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<div style="color: #f54b7e; font-weight: bold; font-size: 1.5em;">Глава 1. Перезагрузка</div>
|
||||||
|
|
||||||
|
### Введение
|
||||||
|
|
||||||
|
  Название первой главы - “Перезагрузка”. Как ты думаешь, почему? Потому что всё начинается с твоей головы и только с твоей головы. Суть этой главы - выработать в тебе правильное отношение к мужчинам. Правильное значит такое, которое тебе позволит нами управлять, хотя и неявно. Если ты хочешь иметь успех у мужчин, тебе просто необходимо правильно к нам относиться. Тебе нужна правильная система взглядов. Ты должна знать, по каким законам функционирует система “мужчина”. В противном случае ты обречена на провал, независимо от внешних данных, финансовой ситуации и всего остального.<br/>
|
||||||
|
Пример. С чего начинается обучение водительскому мастерству? Правильно, с теории. На курсах вождения тебе объясняют, по каким правилам и законам движутся автомобили. Зная эти правила, ты можешь безопасно передвигаться в мегаполисе. Т.е. используя машину, ты добираешься из пункта “А” в пункт “Б”. Т.е. ты достигаешь своей цели быть в пункте “Б”, приехать на работу, например.<br/>
|
||||||
|
  То же самое и в соблазнении. Все те убеждения соблазнительницы, с которыми ты ознакомишься в этой главе, такие же правила безопасности дорожного движения. Если твои нынешние убеждения относительно парней сильно разнятся с истинными, то ты просто не можешь иметь настоящий успех у мужчин. Мне очень повезло в жизни - не знаю почему, но я встретился с одной очень хорошей правильной девушкой. Девушка очень красивая, но с парнями на тот момент у нее был явный недобор. Все, что ей мешало иметь колоссальный успех у парней - неправильное отношение к мужчинам. Например, она считала, что мужчина первым должен проявлять активность, а девушка при этом вообще ничего не должна делать. Прошло полгода, теперь она проводит в день по три свидания, ей дарят золото, за ней ухаживают очень классные парни, такие, от которых у обычной девушки текут слюнки. Ей уже поступило несколько предложений о замужестве.
|
||||||
|
Что же позволило ей так возвыситься над обычными девушками? Ответ ты найдешь в этой главе.
|
||||||
|
|
||||||
|
### <span style="color: #f54b7e;">Убеждения соблазнительницы</span>
|
||||||
|
|
||||||
|
_"Мы формируем свои убеждения в детстве,_<br/>
|
||||||
|
_а потом движемся по жизни, воссоздавая_<br/>
|
||||||
|
_ситуации, которые подошли бы нашим убеждениям."_ <br/>
|
||||||
|
_Луиза Хей_
|
||||||
|
|
||||||
|
  Ты наверно думаешь, что успешная соблазнительница - это такая очень красивая девушка, понимающая все тонкости в моде и умеющая соблазнительно кокетничать? У нее обязательно должны быть длинные красивые ноги и осиная талия? Вся такая Мэрилин Монро? Тогда я не завидую твоей способности общаться с мужчинами. Сейчас я разобью эти глупые убеждения, созданные рекламой и всей этой телевизионной шелухой. Но мне надо, чтобы ты сама думала, сама использовала свой самый главный актив - свой мозг. Поэтому ответь на вопрос - какова была личная жизнь Мэрилин Монро? Ответила? Спасибо. Теперь ответь на следующий вопрос - какова личная жизнь типичной очень красивой девушки? Ответила? Спасибо. А теперь правильные ответы.<br/>
|
||||||
|
  Мэрилин Монро, эта актриса, певица и, самое главное, секс-символ Америки 50 ÷ 60 годов прошлого столетия, была 3 раза замужем и умерла в очень молодом возрасте (всего 36 лет) от передозировки снотворного. Мдаа.<br/>
|
||||||
|
Первый муж - Джим Дагерти, то ли моряк, то ли еще не пойми кто. Мэрилин было всего 16 лет, когда они поженились. Совсем ребенок еще. Характеризовала брак как ошибку молодости. Второй брак. Какой-то Джо Ди Маджо, звезда бейсбола. Брак просуществовал всего 9 месяцев. Мужик был необычайно ревнив и ревновал Мэрилин даже к публике. Ему было сложно терпеть ее популярность. Если брак даже и год не продержался, значит это был изначально один большой косяк, а не брак. Ладно, кратко о последнем браке. Третий муж - Артур Миллер. Драматург. Вроде более-менее брак. Продержался 4.5 года. Ходят слухи о четвертом браке и о том, что на Мэрилин залезал президент США Кеннеди. И вроде как причина смерти Мэрилин - убийство, т.к. она начала заявлять свои права на президента, и тот, чтобы устранить проблему, устранил любовницу.
|
||||||
|
Из этой истории, так напоминающей кальку современной жизни, делаем следующие выводы:
|
||||||
|
|
||||||
|
1. Сама по себе красота, даже если это дьявольски привлекательная красота, ничего не дает.
|
||||||
|
2. Так, желаемая всеми популярность абсолютно не гарантирует счастья в личной жизни.<br/><br/>
|
||||||
|
Пока остановимся на этих двух выводах.<br/>
|
||||||
|
  Еще в недавнем прошлом моей слабостью были модели. Они такие красивые, утонченные, у них длинные изящные пальцы - не девушки, а сплошное загляденье. И главное, они недоступны для обычных парней. Сколько раз я видел, как мужики сворачивали головы, провожая взглядом мою очередную спутницу. Конечно! В школу моделей берут всех, в модели - единицы. Самое интересное - наблюдать за реакцией парней. Вначале они бросают взгляд на девушку, примерно через секунду на меня. Если я делаю морду кирпичом - убирают взгляд, если нет - снова смотрят на девушку. Их можно понять, ведь по-настоящему красивая девушка - это истинное произведение искусства. Сам Бог ваяет настоящих моделей. И, естественно, у меня было много моделей и не только из моего города. И как ты думаешь, что я тебе скажу о них? Многие из них несчастны в личной жизни. Это просто парадоксально! Как могут быть несчастны такие красавицы?!<br/>
|
||||||
|
  Вначале я удивлялся, потом привык. Да ты хотя бы посмотри на мисс Вселенная Оксану Федорову. Полнейшая неразбериха в личной жизни. Она же мисс Вселенная! Представляешь?! Официально она самая красивая девушка планеты Земля в 2002-м году.<br/>
|
||||||
|
  Она могла выбрать любого. А красавица Дениз Ричардс? В 2002-м в возрасте 31 года вышла замуж за актера Чарли Шина. Как можно было выходить замуж за такого дегенерата? Чарли Шин известен своими многочисленными скандалами в личной и общественной жизни, он наркоман. В 2011 году Шин был уволен компаниями CBS и Warner Bros. Television. Мдаа. С 2011 года этот актер живет с Бри Олсон. Бри Олсон -порноактриса. Кто такая порноактриса? Порноактриса это всего лишь помойное ведро, она отсосет у любого, на кого укажет режиссер. Надо иметь весьма убогий разум, чтобы жить со шлюхой. И вот Дениз, живое воплощение женской красоты, выбрала для себя такого недочеловека. Прожив четыре года, они разошлись. Дениз осталась с двумя детьми.<br/>
|
||||||
|
  Во истину покажите мне красивую, нет, очень красивую девушку, и я покажу вам трагедию. К чему это я все? А к тому, что главное в тебе - это твои мозги. Главное в тебе - это твои установки и ценности, которыми ты руководствуешься в жизни, твои глубинные убеждения. И если ты будешь женственной, нежной девушкой и, самое главное, умной, ты стопроцентно найдешь себе достойного человека. В этом просто нет никаких сомнений.<br/>
|
||||||
|
  Теперь посмотрим на жен успешных людей. На женщин, у которых в личной жизни все тип-топ. Кого же взять на рассмотрение? А давай-ка возьмем царицу нашей страны - Светлану Владимировну Медведеву (фотографии смотри в интернете). Это жена действующего президента нашей страны Дмитрия Анатольевича Медведева. Родилась 15-го марта 1965 года в Кронштадте, детство провела в деревне Коваши. По одним данным вышла замуж в 24 года, по другим в 28. Ну что тут сказать? Смотри фотографии и делай выводы сама. В жизни сплошь и рядом девушки с самой заурядной внешностью удачно выходят замуж. Почему? Читай дальше.
|
||||||
|
|
||||||
|
_  Задание. Найди информацию, например, биографии о пяти женщинах, успешных в личной жизни и о пяти женщинах, несчастных в личной жизни. Проанализируй их и сделай хотя бы по 5 выводов о том, что же объединяет женщин успешных и что объединяет женщин не успешных. Таким образом, в сумме ты получишь 10 выводов. Обращай внимание не только на убеждения или установки, но и на то, какое воспитание получили девочки в детстве, в каких семьях росли, какова судьба их матерей и т.д. После 10 общих выводов в тебе должна родиться одна главная мысль, один общий вывод. Сделай это, потом читай дальше._
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
  Я верю в тебя и поэтому знаю, что общий вывод, который ты сделаешь сама для себя, будет таким: 99% успеха в соблазнении зависит от твоих ценностей, доминантных мыслей, убеждений, отношения к жизни, к мужчинам, т.е. всего того, что находится в твоей голове. И почти не зависит от природных внешних данных, места рождения, текущей финансовой ситуации и т.п. Сейчас я приведу убеждения успешной соблазнительницы, которые ты должна выучить как Отче наш и которые ты обязана проверить на практике. Все до единого! Вот этот ключ, открывающей тебе дорогу в долину любых отношений, которые ты только захочешь иметь. Они позволят тебе играть с мужчинами как кошка с мышкой и брать от них то, о чем обычная девушка не может и мечтать. Вот они:
|
||||||
|
|
||||||
|
1. Всё всегда хорошо
|
||||||
|
2. Другие девушки не помеха для меня
|
||||||
|
3. Парней много, я одна
|
||||||
|
4. Использовать мужчин естественно и приятно
|
||||||
|
5. Отшивать мужчин - это естественно
|
||||||
|
6. Ты имеешь ровно то, что заслужила
|
||||||
|
7. Ты достойна гораздо большего
|
||||||
|
8. Все мечты достижимы
|
||||||
|
9. Проявлять активность девушке естественно
|
||||||
|
10. Мужчины до замужества - тренажеры
|
||||||
|
11. Мужчина должен относиться уважительно
|
||||||
|
12. Среди мужчин есть идиоты
|
||||||
|
13. Желание секса от мужчины - это нормально
|
||||||
|
14. Мужчины общаются, когда им что-то нужно
|
||||||
|
15. Пока не было секса - ты не проиграла
|
||||||
|
16. Удовольствие от общения = всё по плану
|
||||||
|
17. Ты ничего не должна мужчине
|
||||||
|
18. Соблазнение - интересная игра
|
||||||
|
19. Ахиллесовы пяты мужчин: эго и секс
|
||||||
|
20. Мужчины - хорошие создания
|
||||||
|
21. Мужчины не примитивны
|
||||||
|
22. Мужчинам нужно не только секс
|
||||||
|
23. Смысл жизни - развитие
|
||||||
|
24. Запасной аэродром - это нормально
|
||||||
|
25. Сексом мужчину не удержать
|
||||||
|
26. Общение должно приносить радость
|
||||||
|
27. Мужчины любят высокоранговых женщин
|
||||||
|
28. Мир - отражение тебя самой
|
||||||
|
|
||||||
|
  А теперь остановимся подробнее на каждом из этих убеждений. Надо сказать, что ты можешь высечь все эти убеждения на камне и использовать этот камень у себя вместо спальной подушки. Ты должна на собственном опыте убедиться в правоте этих убеждений. Эти убеждения - не что-то волшебное. Они просто сама суть жизнь, реальное положение вещей. Всё перечисленное - факты. Зная настоящие правила игры, ты получаешь шанс выиграть в этой игре. Только так, а руководствуясь ложными убеждениями ты всегда будешь оставаться в дурах.<br/>
|
||||||
|
  Если ты хочешь достичь определенной цели - тебе нужны истинные знания. Только истинные знания позволят достичь цели. Все неистинные знания (ложь) забирают твое время, силы и уводят от нужного результата. Если бы ты могла жить вечно и при этом сохранить свою привлекательность, тебе не понадобилась бы эта книга. Просто экспериментируя и набивая себе шишки, исследовав все ложные тропы, ты нашла бы одну истинную и достигла бы нужного тебе результата. Но в жизни не так. У успешных спортсменов - выдающиеся тренера. У успешных бизнесменов - выдающиеся наставники. Человек даже писать и читать без учителя не научится. И в соблазнении у тебя есть учителя, только это слабые и некомпетентные учителя, поэтому учась у них, ты останешься такой же некомпетентной. Кто твои учителя? Правильно, это те люди, с которыми ты общаешься на темы соблазнения, т.е. твои подруги. Возможно, мама. Это уже лучше. Потому что она-то уж точно желает тебе добра, а насчет подруг - большой вопрос. В общем, послушай человека, достигшего определенных успехов в этом вопросе, т.е. меня. Даже если ты просто прочитаешь эту книгу, тебе станет гораздо легче. А уж если ты и задания будешь выполнять, а потом изучишь и вторую мою книгу… Истинно тебе говорю - ты будешь смеяться над своим текущим уровнем в общении с парнями.<br/>
|
||||||
|
  Ты что-нибудь знаешь про метод тотальной бомбежки? Есть такой метод. Сделай себе шпаргалку с этими убеждениями, заглядывай в нее каждые полчаса и размышляй над тем убеждением, которое первым бросится тебе в глаза. Думай и думай - задавай себе вопросы - “А почему так? Какая мне польза от этого убеждения? Какие истории из моей жизни или жизни моих подруг подтверждают правильность этих убеждений?” Твой мозг должен вскипеть от такой работы. Думай и думай над этими убеждениями. Выучи их наизусть так, чтобы они от зубов твоих отлетали. После этого ты должна “вылизать”, “обсосать” каждое из этих убеждений, обсмаковать, понять в тончайших деталях, а это уже делается только на практике и только с помощью практики. Обязательно проверь их на практике, впитай в себя, а не то грош цена всем твоим стараниям.<br/>
|
||||||
|
  Многие из этих убеждений очень глубокие, глубже и мощнее наших океанов, и для того, чтобы они стали частью тебя, тебе потребуется много практики и несколько лет жизни. Но это стоит того. Всё, что ты тратишь на улучшение - это только время и старания. Больше ничего. И это ничтожная цена за то, кем ты станешь. После всего пары лет упорной работы ты настолько изменишься в лучшую сторону, что будешь смотреть на себя теперешнюю как на слепого котенка. Тебе будет смешно. Ты будешь смотреть на своих сверстниц и ощущать огромнейшую разницу между тобой и ними. Тебе захочется им помочь, ты будешь смотреть на них, как на слепых котят, которые бьются головой об ножку стула и не могут ее обойти. Ты также будешь насквозь видеть мужчин, ты будешь чувствовать, на каком этапе игра, все будет под твоим контролем. Ты выйдешь на недостижимый для миллионов девушек уровень. У тебя откроются глаза. Ты ни за что не захочешь возвращаться в свое текущее состояние. Но для этого тебе надо начать действовать, да, черт подери, тупо начать действовать! Первый этап работы - перепрошивка мозга.<br/>
|
||||||
|
  Итак, убеждения.
|
37
content/books/2.md
Normal file
37
content/books/2.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<div style="color: #f54b7e; font-weight: bold; font-size: 1.5em;">Глава 2. Ближний бой</div>
|
||||||
|
|
||||||
|
### <span style="color: #f54b7e;">Введение</span>
|
||||||
|
|
||||||
|
  Эта глава — самая важная глава в моей второй книге. Умение калибровать, несомненно, тоже важно. Но калибровать — природный дар девушек, вы очень быстро этому и обучаетесь, и изначально почти умеете. Именно поэтому во второй книге я сделал акцент не на калибровке, а именно на умении так влюбить в себя парня, что он будет помнить тебя даже перед лицом смерти. Техники влюбления… здесь я рассказываю далеко не очевидные вещи. Но они очень важны, очень. Крутую соблазнительницу от неопытной девушки отличают действия. Если они обе одинаково красивы, одинаково стильны, одинаково умны и приветливы, то всё, что их отличает, это действия. Соблазнительница просто действует по-другому, она делает другие вещи. Вот и всё. И я еще раз повторяю, ты не сможешь сама догадаться до тех фишек, которые проворачивает соблазнительница. Те фишки, о которых ты узнаешь из моей книги, я смог синтезировать, только на основе моего опыта и природной склонности к анализу. Физико-математический лицей и 4 года аспирантуры сделали свое дело. У меня есть природная склонность анализировать, я люблю думать. Мне нравится сам процесс мышления. Чтобы начать думать в правильном русле, нужны правильные знания, правильный опыт. На приобретение этого пресловутого опыта в лучшем случае может уйти год. У меня ушло больше, не было наставника. Приходилось до многих вещей доходить самому[1] .
|
||||||
|
Но видимо у тебя хорошая карма, если в своих руках ты держишь эту книгу. Поэтому я не буду тебе рассказывать всякую чушь, которую пишут авторы-женщины в своих псевдо-учебниках по скрытому управлению мужчинами, соблазнению и т.д. Я пишу самую суть правды. Хотя, может это и не так уж плохо, что в теме соблазнения мужчин, все авторы — сплошные лохушки, пишущие о ширине твоего каблука, который должен быть на первом свидании. Что тебе идет, то и носи. Вот и вся правда про одежду. На фоне авторов, ничего не смыслящих в соблазнении, я выгляжу круче. Я удовлетворяю свой эгоизм, свою самовлюбленность и прочие черные стороны своей личности. Мой уровень, то качество материала, который я выдаю, становятся еще выше и качественнее на фоне псевдоспециалистов. Обычные авторы, которые пишут про соблазнение — это псевдоспециалисты. Спасибо вам, авторы-лохи, вы позволяете ощутить мне свою исключительность. А любому мужчине это очень приятно.
|
||||||
|
|
||||||
|
### <span style="color: #f54b7e;">Техника влюбления</span>
|
||||||
|
|
||||||
|
_Здесь даются реальные знания._<br/>
|
||||||
|
_Гарвард_
|
||||||
|
|
||||||
|
  Механизм мужской и женской влюбленностей<br/>
|
||||||
|
Механизмы мужской и женской влюбленностей несколько разнятся. Т.е. мужчины и женщины, парни и девушки влюбляются по-разному. У девушек крышу сразу не сносит, а у парней крышу сносит именно сразу. В этом и заключается принципиальное различие в механизмах. Безусловно, эта разница — классика, поэтому на этот счет есть вариации. Однако, по своей сути, так оно и есть. На первых порах отношений девушка способна трезво оценивать парня. Она еще не влюбилась, она оценивает, присматривается, приценивается к парню. Он ей нравится, но она может трезво мыслить. Видишь эти два графика ниже по тексту[2]? Теперь ты понимаешь различие в механизмах.
|
||||||
|
Когда отношения с девушкой только начинаются, когда еще не было секса, парень испытывает некое подобие эйфории и одновременной зависимости от девушки. Я опять же говорю о классическом случае. Парень пытается быть максимально хорошим для нее. Она ему нравится, он запал на нее. Все его мысли — о ней. Девушка же влюбляется с задержкой по времени, когда парень пройдет ее фильтры. Когда у нее “щелкнет” в голове, тогда она и влюбляется.
|
||||||
|
|
||||||
|
<div style="display:flex; flex-direction: column; justify-content: center; align-items: center;">
|
||||||
|

|
||||||
|
Рисунок 5 — Различия между мужской и женской схемами влюбления<br/>
|
||||||
|
_Иллюстрация создана автором книги_
|
||||||
|
</div>
|
||||||
|
|
||||||
|
  Смотри, как выгодно для тебя устроила природа. Ты еще ничего не сделала в плане развития отношений, но уже имеешь бонус. Красота!! Спасибо матери-природе. Такой механизм — следствие заботы о выживании рода, вида. Вид должен выжить. Поэтому тебе дается время на фильтрацию самцов, чтобы ты могла выбрать лучшего и получить его семя. Самый живучий самец, самец, обошедший своих сородичей, самый жизнеспобный, способен дать тебе лучшее семя среди своих представителей. Так ты сможешь родить наиболее жизнеспособного ребенка, самого живучего. Забеременев же от слабого самца, ты родишь слабое потомство. Именно из-за такого механизма выживания вида парень сразу испытывает влечение к девушке, но после первого секса сразу же остывает к ней. Его задача выполнена, он оплодотворил самку. Его следующая задача — найти новую самку и оплодотворить ее. Поэтому он также быстро “западает” на следующую, трахает ее, остывает к ней и ищет новую. Парень выполняет задачу продолжения рода: совокупляется с максимальным количеством девушек.
|
||||||
|
Но для нас с тобой сейчас самое важное — работать в зоне t — фильтрации. Как раз в период, который тебе подарила мать-природа, ты должна работать над отношениями. Тебе дали бонус в виде времени, не просри его. Те фишки, которые я тебе даю, имеют максимальную эффективность как раз в период фильтрации самцов. Как только вы переспите, период фильтрации закончится. И эффективность любых манипулятивных фишек, даже от Вино Галанте, упадет в разы. Это же так просто!! Ты пропустила парня через свои фильтры. Мать-природа позаботилась о том, чтобы сразу после этого ему захотелось другую самку. Как только ему захотелось другую, тебе становится архисложно влиять на парня. Природа, природа, против нее не поспоришь.
|
||||||
|
Сколько времени длится период фильтрации самцов? Запомни, в соблазнении отсутствует время как таковое, в соблазнении присутствует качество. Поэтому период фильтрации может длиться один час, а может год или два. Здесь все зависит от твоего уровня. Но период фильтрации заканчивается первым сексом. Потому что ты уже отфильтровала парня. Раз ты его отфильтровала, как же может продолжаться фильтрация? Правильно, никак. А начинается период первой коммуникацией, считай, что словом “Привет”. Видишь, никаких времен, только условия.
|
||||||
|
|
||||||
|
### <span style="color: #f54b7e;">Главный секрет влюбления</span>
|
||||||
|
|
||||||
|
  Для того, чтобы парень влюбился в тебя, необходимо и достаточно выполнения всего четырех условий. На самом деле, когда ты работаешь по влюблению в себя парня, ты действуешь согласно всего четырем правилам. Все эти четыре правила или условия являются необходимыми и достаточными. Необходимые, значит, требуется выполнение всех четырех условий, чтобы в тебя влюбились. Достаточные, значит, требуется выполнение только этих четырех условий и никаких больше.
|
||||||
|
Для влюбления парня **необходимы и достаточны 4 условия**:
|
||||||
|
|
||||||
|
- **Подстройка ментальная** — совпадение мышления.
|
||||||
|
- **Подстройка по ценностям** — общие принципы жизни.
|
||||||
|
- **Поведение** — действия, которые цепляют.
|
||||||
|
- **Достаточное качество девушки** — внешность, интеллект, харизма.
|
||||||
|
|
||||||
|
  Выбей этот секрет влюбления на огромном камне и используй этот камень вместо подушки. Только что я рассказал тебе главный секрет влюбления в себя мужчины. Или девушки, здесь нет никакой разницы, кстати. Есть всего четыре вещи: ментальная подстройка, подстройка по ценностям, твое качество и твое поведение. Всё, больше ничего нет. Больше ничего не требуется, чтобы влюбить в себя абсолютно любого парня. Самое сложное, над чем приходится работать обычной девушке — ее качество. Если же ты родилась с внешностью Адрианы Лимы или Миранды Керр, да еще и с головой на плечах. Тогда тебе крупно повезло, работать придется не так уж и много. Ты — девушка высокого качества. Четвертый пункт удовлетворен.
|
BIN
content/books/image2.png
Normal file
BIN
content/books/image2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
@ -1,10 +1,7 @@
|
|||||||
import { globalIgnores } from "eslint/config";
|
import { globalIgnores } from 'eslint/config'
|
||||||
import {
|
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
|
||||||
defineConfigWithVueTs,
|
import pluginVue from 'eslint-plugin-vue'
|
||||||
vueTsConfigs,
|
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
|
||||||
} from "@vue/eslint-config-typescript";
|
|
||||||
import pluginVue from "eslint-plugin-vue";
|
|
||||||
import skipFormatting from "@vue/eslint-config-prettier/skip-formatting";
|
|
||||||
|
|
||||||
// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
|
// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
|
||||||
// import { configureVueProject } from '@vue/eslint-config-typescript'
|
// import { configureVueProject } from '@vue/eslint-config-typescript'
|
||||||
@ -13,18 +10,19 @@ import skipFormatting from "@vue/eslint-config-prettier/skip-formatting";
|
|||||||
|
|
||||||
export default defineConfigWithVueTs(
|
export default defineConfigWithVueTs(
|
||||||
{
|
{
|
||||||
name: "app/files-to-lint",
|
name: 'app/files-to-lint',
|
||||||
files: ["**/*.{ts,mts,tsx,vue}"],
|
files: ['**/*.{ts,mts,tsx,vue}'],
|
||||||
},
|
},
|
||||||
|
|
||||||
globalIgnores([
|
globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**', './src/generated/**']),
|
||||||
"**/dist/**",
|
|
||||||
"**/dist-ssr/**",
|
|
||||||
"**/coverage/**",
|
|
||||||
"./src/generated/**",
|
|
||||||
]),
|
|
||||||
|
|
||||||
pluginVue.configs["flat/essential"],
|
pluginVue.configs['flat/essential'],
|
||||||
vueTsConfigs.recommended,
|
vueTsConfigs.recommended,
|
||||||
skipFormatting
|
skipFormatting,
|
||||||
);
|
{
|
||||||
|
rules: {
|
||||||
|
'vue/multi-word-component-names': 'off',
|
||||||
|
'vue/component-name-in-template-casing': ['error', 'PascalCase'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
VITE_MODE=DEVELOP
|
|
||||||
VITE_API_BASE_PATH=http://localhost:5173/
|
|
@ -13,7 +13,7 @@ const headerNavigation = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Купить',
|
name: 'Купить',
|
||||||
path: '/buy',
|
path: '/cart',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Отзывы',
|
name: 'Отзывы',
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-full before:w-full before:bg-[url(/assets/img/webp/footer-flowers.webp)] before:bg-no-repeat before:bg-bottom before:bg-contain before:z-40"
|
class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-full before:w-full before:bg-[url(/assets/img/png/footer-flowers-2.png)] before:bg-no-repeat before:bg-bottom before:bg-contain before:z-40"
|
||||||
:class="
|
:class="
|
||||||
route.path === '/books/1' || route.path === '/books/2'
|
route.path === '/books/1' || route.path === '/books/2'
|
||||||
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
|
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
|
||||||
|
@ -1,25 +1,53 @@
|
|||||||
import config from "./config";
|
import config from './config'
|
||||||
|
|
||||||
import { fileURLToPath, URL } from "node:url";
|
import { fileURLToPath, URL } from 'node:url'
|
||||||
import sitemap from "./config/sitemap";
|
import head from './config/head'
|
||||||
|
// import sitemap from "./config/sitemap";
|
||||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
compatibilityDate: "2025-05-15",
|
compatibilityDate: '2025-05-15',
|
||||||
devtools: { enabled: true },
|
devtools: { enabled: true },
|
||||||
|
|
||||||
devServer: {
|
devServer: {
|
||||||
host: "localhost",
|
host: 'localhost',
|
||||||
port: 4002,
|
port: 4002,
|
||||||
},
|
},
|
||||||
|
|
||||||
nitro: {
|
nitro: {
|
||||||
output: {
|
output: {
|
||||||
dir: "./dist",
|
dir: './dist',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
alias: {
|
alias: {
|
||||||
"@": fileURLToPath(new URL("./", import.meta.url)),
|
'@': fileURLToPath(new URL('./', import.meta.url)),
|
||||||
},
|
},
|
||||||
css: ["@/assets/css/tailwind.css"],
|
|
||||||
|
css: ['@/assets/css/tailwind.css'],
|
||||||
...config,
|
...config,
|
||||||
});
|
|
||||||
|
htmlValidator: {
|
||||||
|
usePrettier: true,
|
||||||
|
logLevel: 'error',
|
||||||
|
failOnError: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
app: {
|
||||||
|
head: {
|
||||||
|
title: 'Vino Galante',
|
||||||
|
htmlAttrs: {
|
||||||
|
lang: 'ru',
|
||||||
|
},
|
||||||
|
...head,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
runtimeConfig: {
|
||||||
|
smtpHost: process.env.SMTP_HOST,
|
||||||
|
smtpPort: process.env.SMTP_PORT,
|
||||||
|
smtpUser: process.env.SMTP_USER,
|
||||||
|
smtpPass: process.env.SMTP_PASS,
|
||||||
|
},
|
||||||
|
|
||||||
|
modules: [...config.modules],
|
||||||
|
})
|
||||||
|
19328
package-lock.json
generated
19328
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
11
package.json
11
package.json
@ -13,18 +13,25 @@
|
|||||||
"format": "node_modules/.bin/prettier --write ./"
|
"format": "node_modules/.bin/prettier --write ./"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@a2seven/yoo-checkout": "^1.1.4",
|
||||||
"@nuxt/content": "^3.6.0",
|
"@nuxt/content": "^3.6.0",
|
||||||
"@nuxt/fonts": "^0.11.4",
|
"@nuxt/fonts": "^0.11.4",
|
||||||
"@nuxt/icon": "^1.13.0",
|
"@nuxt/icon": "^1.13.0",
|
||||||
"@nuxt/image": "^1.10.0",
|
"@nuxt/image": "^1.10.0",
|
||||||
|
"@nuxtjs/html-validator": "^2.1.0",
|
||||||
"@nuxtjs/robots": "^5.2.10",
|
"@nuxtjs/robots": "^5.2.10",
|
||||||
"@nuxtjs/sitemap": "^7.4.0",
|
"@nuxtjs/sitemap": "^7.4.0",
|
||||||
"@pinia/nuxt": "^0.5.5",
|
"@pinia/nuxt": "^0.5.5",
|
||||||
"@tailwindcss/postcss": "^4.1.10",
|
"@tailwindcss/postcss": "^4.1.10",
|
||||||
"better-sqlite3": "^11.10.0",
|
"better-sqlite3": "^12",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"date-fns": "^4.1.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
|
"nodemailer": "^7.0.3",
|
||||||
"nuxt": "^3.17.5",
|
"nuxt": "^3.17.5",
|
||||||
"nuxt-schema-org": "^5.0.5",
|
"nuxt-schema-org": "^5.0.5",
|
||||||
|
"pg": "^8.16.2",
|
||||||
|
"postgres": "^3.4.7",
|
||||||
"swiper": "^11.2.8",
|
"swiper": "^11.2.8",
|
||||||
"vue": "^3.5.16"
|
"vue": "^3.5.16"
|
||||||
},
|
},
|
||||||
@ -33,6 +40,8 @@
|
|||||||
"@nuxt/test-utils": "^3.11.3",
|
"@nuxt/test-utils": "^3.11.3",
|
||||||
"@nuxtjs/tailwindcss": "^6.11.4",
|
"@nuxtjs/tailwindcss": "^6.11.4",
|
||||||
"@types/node": "^22.0.0",
|
"@types/node": "^22.0.0",
|
||||||
|
"@types/nodemailer": "^6.4.17",
|
||||||
|
"@types/pg": "^8.15.4",
|
||||||
"@vue/eslint-config-prettier": "^10.2.0",
|
"@vue/eslint-config-prettier": "^10.2.0",
|
||||||
"@vue/eslint-config-typescript": "^14.5.0",
|
"@vue/eslint-config-typescript": "^14.5.0",
|
||||||
"autoprefixer": "^10.4.18",
|
"autoprefixer": "^10.4.18",
|
||||||
|
@ -1,31 +1,22 @@
|
|||||||
<template>
|
<template>
|
||||||
<template v-if="book">
|
<template v-if="book">
|
||||||
<div class="relative z-50 min-h-screen text-white mb-[208px]">
|
<div class="relative z-50 min-h-screen text-white mb-[208px]">
|
||||||
<template v-if="!route.params.titlesSlug">
|
<template v-if="!route.params.chapter && !route.params.titlesSlug">
|
||||||
<!--верхний блок-->
|
<!--верхний блок-->
|
||||||
<section
|
<section
|
||||||
class="flex flex-row relative z-40 before:content-[''] before:absolute before:top-[-140px] before:bg-top before:left-0 before:w-[1280px] before:h-[1000px] before:bg-[url(/assets/img/webp/vino-galante.webp)] before:bg-no-repeat before:bg-contain mt-40"
|
class="flex min-h-[600px] 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]">
|
<section class="relative top-[-30px] min-w-[570px]">
|
||||||
<div class="flex flex-col items-center">
|
<div class="flex flex-col items-center h-[600px]">
|
||||||
<img
|
<img :src="book.img" :alt="book.buttonText" />
|
||||||
:src="book.img"
|
|
||||||
:alt="book.buttonText"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<!--правый блок контента-->
|
<!--правый блок контента-->
|
||||||
<section>
|
<section>
|
||||||
<div class="w-11/12 h-full flex flex-col justify-start">
|
<div class="w-11/12 h-full flex flex-col justify-start">
|
||||||
<div>
|
<div>
|
||||||
<UiHeading
|
<UiHeading tag="H1" class="whitespace-pre-line [&]:font-bold" size="300">
|
||||||
tag="H1"
|
|
||||||
class="whitespace-pre-line [&]:font-bold"
|
|
||||||
size="300"
|
|
||||||
>
|
|
||||||
{{ book.title }}
|
{{ book.title }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
<UiParagraph class="mb-10" size="250">
|
<UiParagraph class="mb-10" size="250">
|
||||||
@ -42,17 +33,20 @@
|
|||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
<!--средний блок-->
|
<!--средний блок-->
|
||||||
<section class="flex flex-row items-center ml-20 justify-between">
|
<section class="flex flex-row items-center ml-12 gap-24 relative z-50">
|
||||||
<!--левый-->
|
<!--левый-->
|
||||||
<div class="flex flex-col items-center min-h-[310px]">
|
<div class="flex flex-col items-center min-h-[310px]">
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<UiParagraph class="[&]:text-6xl"
|
<UiParagraph class="[&]:text-6xl">{{ book.price }} </UiParagraph>
|
||||||
>{{ book.price }} </UiParagraph
|
|
||||||
>
|
|
||||||
<img src="/img/svg/books/ruble.svg" alt="ruble" />
|
<img src="/img/svg/books/ruble.svg" alt="ruble" />
|
||||||
</div>
|
</div>
|
||||||
<div class="mr-10 flex items-center flex-col gap-3">
|
<div class="flex items-center flex-col gap-3">
|
||||||
<UiButton class="max-w-[380px] !font-normal !px-2 !py-4 mt-24">
|
<UiButton
|
||||||
|
@click="handleSelect"
|
||||||
|
:id="book.id"
|
||||||
|
variants="primary"
|
||||||
|
class="max-w-[440px] !font-normal !px-2 !py-4 mt-16"
|
||||||
|
>
|
||||||
{{ book.buttonText }}
|
{{ book.buttonText }}
|
||||||
</UiButton>
|
</UiButton>
|
||||||
<UiParagraph size="200">
|
<UiParagraph size="200">
|
||||||
@ -61,41 +55,29 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--правый-->
|
<!--правый-->
|
||||||
<div class="min-h-[310px]">
|
<div class="min-h-[310px] pt-6">
|
||||||
<!--о книге-->
|
<!--о книге-->
|
||||||
<div>
|
<div>
|
||||||
<ul
|
<ul class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap">
|
||||||
class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap"
|
|
||||||
>
|
|
||||||
<li class="flex flex-row mr-14 gap-3 items-center">
|
<li class="flex flex-row mr-14 gap-3 items-center">
|
||||||
<img
|
<img src="/img/svg/books/book-pages.svg" alt="страниц" width="24" height="24" />
|
||||||
src="/img/svg/books/book-pages.svg"
|
|
||||||
alt="страниц"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
/>
|
|
||||||
<UiParagraph size="250" as="span">
|
<UiParagraph size="250" as="span">
|
||||||
{{ book.pages }}
|
{{ book.pages }}
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-row mr-14 gap-3 items-center">
|
<li class="flex flex-row mr-14 gap-3 items-center shrink-0">
|
||||||
<img
|
<img
|
||||||
src="/img/svg/books/book-illustrations.svg"
|
src="/img/svg/books/book-illustrations.svg"
|
||||||
alt="иллюстраций"
|
alt="иллюстраций"
|
||||||
width="100%"
|
width="24"
|
||||||
height="100%"
|
height="24"
|
||||||
/>
|
/>
|
||||||
<UiParagraph size="250" as="span">
|
<UiParagraph size="250" as="span">
|
||||||
{{ book.illust }}
|
{{ book.illust }}
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-row mr-14 gap-3 items-center">
|
<li class="flex flex-row mr-14 gap-3 items-center">
|
||||||
<img
|
<img src="/img/svg/books/book-formats.svg" alt="формат" width="24" height="24" />
|
||||||
src="/img/svg/books/book-formats.svg"
|
|
||||||
alt="формат"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
/>
|
|
||||||
<UiParagraph size="250" as="span">
|
<UiParagraph size="250" as="span">
|
||||||
{{ book.format }}
|
{{ book.format }}
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
@ -104,61 +86,45 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--навигация по книге-->
|
<!--навигация по книге-->
|
||||||
<div class="mt-24">
|
<div class="mt-28">
|
||||||
<ul
|
<ul class="flex flex-row mr-32 items-baseline justify-between lg:whitespace-nowrap">
|
||||||
class="flex flex-row mr-32 items-end justify-between lg:whitespace-nowrap"
|
|
||||||
>
|
|
||||||
<li class="flex flex-row items-center">
|
<li class="flex flex-row items-center">
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
to="#"
|
:to="`/books/${route.params.slug}/chapters/${route.params.slug}/`"
|
||||||
class="flex flex-col items-center cursor-pointer"
|
class="flex flex-col gap-8 items-center cursor-pointer"
|
||||||
>
|
>
|
||||||
<div class="w-[62px] h-[58px]">
|
|
||||||
<img
|
<img
|
||||||
src="/img/svg/books/read.svg"
|
src="/img/svg/books/bi_book.svg"
|
||||||
alt="Читай отрывок"
|
alt="Читай отрывок"
|
||||||
width="62"
|
width="62"
|
||||||
height="53"
|
height="53"
|
||||||
/>
|
/>
|
||||||
</div>
|
|
||||||
|
|
||||||
<UiParagraph size="250" as="span">
|
<UiParagraph size="250" as="span"> Читай отрывок </UiParagraph>
|
||||||
Читай отрывок
|
|
||||||
</UiParagraph>
|
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-row gap-3 items-center">
|
<li class="flex flex-row items-center">
|
||||||
<NuxtLink
|
<a
|
||||||
to="#"
|
download
|
||||||
class="flex flex-col items-center gap-4 cursor-pointer"
|
:href="book.download"
|
||||||
|
class="flex flex-col items-center gap-8 cursor-pointer"
|
||||||
>
|
>
|
||||||
<div class="w-[62px] h-[53px]">
|
|
||||||
<img
|
<img
|
||||||
src="/img/svg/books/download.svg"
|
src="/img/svg/books/download.svg"
|
||||||
alt="Скачай отрывок"
|
alt="Скачай отрывок"
|
||||||
width="62"
|
width="62"
|
||||||
height="53"
|
height="53"
|
||||||
/>
|
/>
|
||||||
</div>
|
|
||||||
|
|
||||||
<UiParagraph size="250" as="span">
|
<UiParagraph size="250" as="span"> Скачай отрывок </UiParagraph>
|
||||||
Скачай отрывок
|
</a>
|
||||||
</UiParagraph>
|
|
||||||
</NuxtLink>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="flex flex-row gap-3 items-center">
|
<li class="flex flex-row items-center">
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
:to="`/books/${route.params.slug}/${book.hrefTitles}`"
|
:to="`/books/${route.params.slug}/${book.hrefTitles}`"
|
||||||
class="flex flex-col items-center gap-3 cursor-pointer"
|
class="flex flex-col items-center gap-8 cursor-pointer"
|
||||||
>
|
>
|
||||||
<div class="w-[62px] h-[53px]">
|
<img src="/img/svg/books/down2.svg" alt="Содержание" width="62" height="53" />
|
||||||
<img
|
|
||||||
src="/img/svg/books/down2.svg"
|
|
||||||
alt="Содержание"
|
|
||||||
width="62"
|
|
||||||
height="53"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<UiParagraph size="250" as="span"> Содержание </UiParagraph>
|
<UiParagraph size="250" as="span"> Содержание </UiParagraph>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
@ -170,9 +136,7 @@
|
|||||||
<!--нижний блок-->
|
<!--нижний блок-->
|
||||||
<section class="ml-20 mt-32">
|
<section class="ml-20 mt-32">
|
||||||
<div>
|
<div>
|
||||||
<UiHeading tag="H2" size="300" class="text-three">
|
<UiHeading tag="h2" size="300" class="text-three"> Что ты узнаешь </UiHeading>
|
||||||
Что ты узнаешь
|
|
||||||
</UiHeading>
|
|
||||||
<ul class="flex mt-20 flex-row items-center justify-between">
|
<ul class="flex mt-20 flex-row items-center justify-between">
|
||||||
<li
|
<li
|
||||||
class="flex flex-col-reverse justify-end w-32 gap-4 h-64 items-center transition-transform transform hover:scale-110"
|
class="flex flex-col-reverse justify-end w-32 gap-4 h-64 items-center transition-transform transform hover:scale-110"
|
||||||
@ -188,10 +152,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center text-center mt-36">
|
<div class="flex justify-center text-center mt-36">
|
||||||
<UiParagraph>
|
<UiParagraph>
|
||||||
Или купи на ЛитРес - <br /><a
|
Или купи на ЛитРес - <br /><a class="text-three" :href="book.href" target="_blank"
|
||||||
class="text-three"
|
|
||||||
:href="book.href"
|
|
||||||
target="_blank"
|
|
||||||
>Реферальная ссылка для поддержки автора</a
|
>Реферальная ссылка для поддержки автора</a
|
||||||
>
|
>
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
@ -205,59 +166,66 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, watch } from "vue";
|
import { ref, computed, watch } from 'vue'
|
||||||
import { useRoute } from "#app";
|
import { useRoute, useRouter } from '#app'
|
||||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||||
import UiButton from "@/components/UiButton/UiButton.vue";
|
import UiButton from '@/components/UiButton/UiButton.vue'
|
||||||
|
|
||||||
interface BookDetail {
|
interface BookDetail {
|
||||||
id: number;
|
id: number
|
||||||
title: string;
|
title: string
|
||||||
metaTitle: string;
|
metaTitle: string
|
||||||
subtitle: string;
|
subtitle: string
|
||||||
subdesc: string;
|
subdesc: string
|
||||||
description: string;
|
description: string
|
||||||
img: string;
|
img: string
|
||||||
price: string;
|
price: string
|
||||||
buttonText: string;
|
buttonText: string
|
||||||
buttonFormat: string;
|
buttonFormat: string
|
||||||
pages: string;
|
pages: string
|
||||||
illust: string;
|
illust: string
|
||||||
format: string;
|
format: string
|
||||||
whoUKnows: Array<{
|
whoUKnows: Array<{
|
||||||
text: string;
|
text: string
|
||||||
svg: string;
|
svg: string
|
||||||
}>;
|
}>
|
||||||
href: string;
|
href: string
|
||||||
hrefTitles: string;
|
hrefTitles: string
|
||||||
|
download: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute()
|
||||||
|
|
||||||
const currentBookData = ref<BookDetail | null>(null);
|
const router = useRouter()
|
||||||
|
|
||||||
const book = computed(() => currentBookData.value);
|
const currentBookData = ref<BookDetail | null>(null)
|
||||||
|
|
||||||
|
const book = computed(() => currentBookData.value)
|
||||||
|
|
||||||
const loadBookData = async (slug: string) => {
|
const loadBookData = async (slug: string) => {
|
||||||
try {
|
try {
|
||||||
const module = await import(`./_data/${slug}.json`);
|
const module = await import(`./_data/${slug}.json`)
|
||||||
currentBookData.value = module.default as BookDetail;
|
currentBookData.value = module.default as BookDetail
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error);
|
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error)
|
||||||
currentBookData.value = null;
|
currentBookData.value = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSelect = () => {
|
||||||
|
router.push('/cart/')
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => route.params.slug,
|
() => route.params.slug,
|
||||||
async (newSlug) => {
|
async (newSlug) => {
|
||||||
if (newSlug) {
|
if (newSlug) {
|
||||||
await loadBookData(newSlug as string);
|
await loadBookData(newSlug as string)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true },
|
||||||
);
|
)
|
||||||
|
|
||||||
watch(book, (newBook) => {
|
watch(book, (newBook) => {
|
||||||
if (newBook) {
|
if (newBook) {
|
||||||
@ -265,17 +233,17 @@ watch(book, (newBook) => {
|
|||||||
title: `${newBook.metaTitle} | Vino Galante`,
|
title: `${newBook.metaTitle} | Vino Galante`,
|
||||||
meta: [
|
meta: [
|
||||||
{
|
{
|
||||||
name: "description",
|
name: 'description',
|
||||||
content: "Онлайн магазин книг автора Vino Galante",
|
content: 'Онлайн магазин книг автора Vino Galante',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
link: [
|
link: [
|
||||||
{
|
{
|
||||||
rel: "canonical",
|
rel: 'canonical',
|
||||||
href: `https://ebook.miduway.space/books/${route.params.slug}`,
|
href: `https://ebook.miduway.space/books/${route.params.slug}`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
</script>
|
</script>
|
||||||
|
175
pages/books/[slug]/chapters/[chapter].vue
Normal file
175
pages/books/[slug]/chapters/[chapter].vue
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="content" class="relative z-50 min-h-screen text-white mb-[208px] ml-4">
|
||||||
|
<section class="flex flex-col relative z-40 mt-40 ml-18 mr-18">
|
||||||
|
<div v-html="renderedContent" class="prose prose-invert max-w-none"></div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div v-else class="text-white text-center py-20">Глава не найдена.</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// Получаем параметры из URL
|
||||||
|
const route = useRoute()
|
||||||
|
const bookSlug = route.params.slug as string
|
||||||
|
const chapterSlug = route.params.chapter as string
|
||||||
|
|
||||||
|
// Загружаем контент из markdown файла
|
||||||
|
const { data: content } = await useAsyncData(`book-${bookSlug}-${chapterSlug}`, () => {
|
||||||
|
return $fetch(`/api/content/books/${chapterSlug}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
// Конвертируем markdown в HTML (простая реализация)
|
||||||
|
const renderedContent = computed(() => {
|
||||||
|
if (!content.value?.content) return ''
|
||||||
|
|
||||||
|
let html = content.value.content
|
||||||
|
|
||||||
|
// Заменяем заголовки
|
||||||
|
html = html.replace(
|
||||||
|
/^### (.*$)/gim,
|
||||||
|
'<h3 style="color: #f54b7e; font-weight: bold; margin-top: 1.5rem; margin-bottom: 0.5rem;">$1</h3>',
|
||||||
|
)
|
||||||
|
html = html.replace(
|
||||||
|
/^## (.*$)/gim,
|
||||||
|
'<h2 style="color: #f54b7e; font-weight: bold; margin-top: 2rem; margin-bottom: 1rem;">$1</h2>',
|
||||||
|
)
|
||||||
|
html = html.replace(
|
||||||
|
/^# (.*$)/gim,
|
||||||
|
'<h1 style="color: #f54b7e; font-weight: bold; font-size: 1.5em; margin-bottom: 1rem;">$1</h1>',
|
||||||
|
)
|
||||||
|
|
||||||
|
// Заменяем параграфы
|
||||||
|
html = html.replace(
|
||||||
|
/^  (.*$)/gim,
|
||||||
|
'<p style="margin-bottom: 1rem; line-height: 1.6;">$1</p>',
|
||||||
|
)
|
||||||
|
|
||||||
|
// Заменяем жирный текст (двойные звездочки)
|
||||||
|
html = html.replace(/\*\*(.*?)\*\*/g, '<strong style=" font-weight: bold;">$1</strong>')
|
||||||
|
|
||||||
|
// Заменяем курсив (звездочки)
|
||||||
|
html = html.replace(/\*(.*?)\*/g, '<em style="font-style: italic;">$1</em>')
|
||||||
|
|
||||||
|
// Заменяем курсив (подчеркивания)
|
||||||
|
html = html.replace(/\_(.*?)\_/g, '<em style="font-style: italic;">$1</em>')
|
||||||
|
|
||||||
|
// Заменяем изображения - исправляем пути
|
||||||
|
html = html.replace(
|
||||||
|
/!\[([^\]]*)\]\(([^)]+)\)/g,
|
||||||
|
'<img src="/img/books/$2" alt="$1" style="max-width: 100%; height: auto; margin: 1rem 0; display: block;" />',
|
||||||
|
)
|
||||||
|
|
||||||
|
// Заменяем списки
|
||||||
|
html = html.replace(/^- (.*$)/gim, '<li style="margin-bottom: 0.5rem;">$1</li>')
|
||||||
|
html = html.replace(/(<li.*<\/li>)/s, '<ul style="margin-bottom: 1rem;">$1</ul>')
|
||||||
|
|
||||||
|
// Заменяем <br/> теги на HTML <br>
|
||||||
|
html = html.replace(/<br\/>/g, '<br>')
|
||||||
|
|
||||||
|
// Заменяем переносы строк
|
||||||
|
html = html.replace(/\n/g, '<br>')
|
||||||
|
|
||||||
|
return html
|
||||||
|
})
|
||||||
|
|
||||||
|
// Устанавливаем мета-теги
|
||||||
|
useHead({
|
||||||
|
title: `Глава ${chapterSlug} | Книга ${bookSlug} | Vino Galante`,
|
||||||
|
meta: [
|
||||||
|
{
|
||||||
|
name: 'description',
|
||||||
|
content: `Читайте главу ${chapterSlug} из книги ${bookSlug} автора Vino Galante`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{
|
||||||
|
rel: 'canonical',
|
||||||
|
href: `https://ebook.miduway.space/books/${bookSlug}/chapters/${chapterSlug}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
|
// Обработка ошибок, если файл не найден
|
||||||
|
if (!content.value) {
|
||||||
|
throw createError({
|
||||||
|
statusCode: 404,
|
||||||
|
statusMessage: 'Глава не найдена',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* Дополнительные стили для контента */
|
||||||
|
.prose {
|
||||||
|
color: white;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose h1 {
|
||||||
|
color: #f54b7e;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose h2 {
|
||||||
|
color: #f54b7e;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 2rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose h3 {
|
||||||
|
color: #f54b7e;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose p {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose ul {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose blockquote {
|
||||||
|
border-left: 4px solid #f54b7e;
|
||||||
|
padding-left: 1rem;
|
||||||
|
margin: 1rem 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
margin: 1rem 0;
|
||||||
|
display: block;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Стили для подписей к изображениям */
|
||||||
|
.prose img + br + em {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
font-style: italic;
|
||||||
|
color: #f54b7e;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
</style>
|
@ -3,25 +3,21 @@
|
|||||||
<section class="flex flex-col relative z-40 mt-40 ml-18">
|
<section class="flex flex-col relative z-40 mt-40 ml-18">
|
||||||
<UiHeading
|
<UiHeading
|
||||||
tag="H1"
|
tag="H1"
|
||||||
class="whitespace-pre-line [&]:font-normal mb-10 -ml-5"
|
class="whitespace-pre-line [&]:font-normal mb-10 -ml-5 !text-[24px]"
|
||||||
size="500"
|
size="500"
|
||||||
>
|
>
|
||||||
{{ titles.title }}
|
{{ titles.title }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
|
|
||||||
<div class="flex flex-col gap-6">
|
<div class="flex flex-col gap-6">
|
||||||
<div
|
<div v-for="(section, index) in titles.sections" :key="index" class="flex flex-col gap-4">
|
||||||
v-for="(section, index) in titles.sections"
|
|
||||||
:key="index"
|
|
||||||
class="flex flex-col gap-4"
|
|
||||||
>
|
|
||||||
<!-- Main section title -->
|
<!-- Main section title -->
|
||||||
<UiHeading tag="H2" size="300" class="text-three [&]:font-normal">
|
<UiHeading tag="h2" size="300" class="text-[#E20C66] !text-[24px] [&]:font-normal">
|
||||||
{{ section.title }}
|
{{ section.title }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
|
|
||||||
<!-- Subsections -->
|
<!-- Subsections -->
|
||||||
<div v-if="section.subsections" class="ml-6 flex flex-col gap-4">
|
<div v-if="section.subsections" class="ml-10 flex flex-col gap-4">
|
||||||
<div
|
<div
|
||||||
v-for="(subsection, subIndex) in section.subsections"
|
v-for="(subsection, subIndex) in section.subsections"
|
||||||
:key="subIndex"
|
:key="subIndex"
|
||||||
@ -38,7 +34,11 @@
|
|||||||
:alt="subsection.title.text"
|
:alt="subsection.title.text"
|
||||||
class="w-6 h-6"
|
class="w-6 h-6"
|
||||||
/>
|
/>
|
||||||
<UiHeading tag="H3" size="300" class="[&]:font-normal">
|
<UiHeading
|
||||||
|
tag="H3"
|
||||||
|
size="300"
|
||||||
|
class="[&]:text-[#FFFFFF] !text-[22px] [&]:font-normal"
|
||||||
|
>
|
||||||
{{ subsection.title.text }}
|
{{ subsection.title.text }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
</div>
|
</div>
|
||||||
@ -47,23 +47,15 @@
|
|||||||
v-else
|
v-else
|
||||||
tag="H3"
|
tag="H3"
|
||||||
size="300"
|
size="300"
|
||||||
class="[&]:text-gray-200 [&]:font-normal"
|
class="[&]:text-[#FFFFFF] ml-1 !text-[22px] [&]:font-normal"
|
||||||
>
|
>
|
||||||
{{ subsection.title }}
|
{{ subsection.title }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
|
|
||||||
<!-- Items list -->
|
<!-- Items list -->
|
||||||
<ul
|
<ul v-if="subsection.items" class="ml-10 flex flex-col gap-2 list-decimal">
|
||||||
v-if="subsection.items"
|
<li v-for="(item, itemIndex) in subsection.items" :key="itemIndex">
|
||||||
class="ml-6 flex flex-col gap-2 list-decimal"
|
<UiParagraph size="300" class="[&]:text-[#CDCDCD] [&]:font-normal"
|
||||||
>
|
|
||||||
<li
|
|
||||||
v-for="(item, itemIndex) in subsection.items"
|
|
||||||
:key="itemIndex"
|
|
||||||
>
|
|
||||||
<UiParagraph
|
|
||||||
size="300"
|
|
||||||
class="[&]:text-gray-200 [&]:font-normal"
|
|
||||||
> {{ item }}</UiParagraph
|
> {{ item }}</UiParagraph
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
@ -71,16 +63,12 @@
|
|||||||
|
|
||||||
<!-- Nested subsections -->
|
<!-- Nested subsections -->
|
||||||
<div v-if="subsection.subsections" class="flex flex-col gap-2">
|
<div v-if="subsection.subsections" class="flex flex-col gap-2">
|
||||||
<div
|
<div v-for="(nestedSub, nestedIndex) in subsection.subsections" :key="nestedIndex">
|
||||||
v-for="(nestedSub, nestedIndex) in subsection.subsections"
|
|
||||||
:key="nestedIndex"
|
|
||||||
>
|
|
||||||
<UiHeading
|
<UiHeading
|
||||||
tag="H4"
|
tag="H4"
|
||||||
size="300"
|
class="[&]:text-[#CDCDCD] [&]:font-normal ml-4 [&]:text-[20px]"
|
||||||
class="[&]:text-gray-200 [&]:font-normal"
|
|
||||||
>
|
>
|
||||||
{{ nestedSub.title }}
|
{{ nestedSub.text }}
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -94,61 +82,61 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, watch } from "vue";
|
import { ref, computed, watch } from 'vue'
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from 'vue-router'
|
||||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||||
// import { useHead } from '@vueuse/head'
|
|
||||||
|
|
||||||
interface SubsectionTitle {
|
interface SubsectionTitle {
|
||||||
text: string;
|
text: string
|
||||||
img?: string;
|
img?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Subsection {
|
interface Subsection {
|
||||||
title: string | SubsectionTitle;
|
title: string | SubsectionTitle
|
||||||
items?: string[];
|
items?: string[]
|
||||||
subsections?: Array<{
|
subsections?: Array<{
|
||||||
title: string;
|
title?: string
|
||||||
}>;
|
text?: string
|
||||||
|
}>
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Section {
|
interface Section {
|
||||||
title: string;
|
title: string
|
||||||
subsections?: Subsection[];
|
subsections?: Subsection[]
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TitlesData {
|
interface TitlesData {
|
||||||
title: string;
|
title: string
|
||||||
titleMeta: string;
|
titleMeta: string
|
||||||
sections: Section[];
|
sections: Section[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute()
|
||||||
|
|
||||||
const currentTitlesData = ref<TitlesData | null>(null);
|
const currentTitlesData = ref<TitlesData | null>(null)
|
||||||
|
|
||||||
const titles = computed(() => currentTitlesData.value);
|
const titles = computed(() => currentTitlesData.value)
|
||||||
|
|
||||||
const loadTitlesData = async (slug: string) => {
|
const loadTitlesData = async (slug: string) => {
|
||||||
try {
|
try {
|
||||||
const module = await import(`./_data/${slug}.json`);
|
const module = await import(`./_data/${slug}.json`)
|
||||||
currentTitlesData.value = module.default as TitlesData;
|
currentTitlesData.value = module.default as TitlesData
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error);
|
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error)
|
||||||
currentTitlesData.value = null;
|
currentTitlesData.value = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => route.params.titlesSlug,
|
() => route.params.titlesSlug,
|
||||||
async (newSlug) => {
|
async (newSlug) => {
|
||||||
if (newSlug) {
|
if (newSlug) {
|
||||||
await loadTitlesData(newSlug as string);
|
await loadTitlesData(newSlug as string)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true },
|
||||||
);
|
)
|
||||||
|
|
||||||
watch(titles, (newTitles) => {
|
watch(titles, (newTitles) => {
|
||||||
if (newTitles) {
|
if (newTitles) {
|
||||||
@ -156,17 +144,17 @@ watch(titles, (newTitles) => {
|
|||||||
title: `${newTitles.titleMeta} | Vino Galante`,
|
title: `${newTitles.titleMeta} | Vino Galante`,
|
||||||
meta: [
|
meta: [
|
||||||
{
|
{
|
||||||
name: "description",
|
name: 'description',
|
||||||
content: "Содержание книги Vino Galante",
|
content: 'Содержание книги Vino Galante',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
link: [
|
link: [
|
||||||
{
|
{
|
||||||
rel: "canonical",
|
rel: 'canonical',
|
||||||
href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`,
|
href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
</script>
|
</script>
|
||||||
|
@ -3,11 +3,21 @@
|
|||||||
"title": "Оглавление",
|
"title": "Оглавление",
|
||||||
"titleMeta": "Оглавление - Книга I",
|
"titleMeta": "Оглавление - Книга I",
|
||||||
"sections": [
|
"sections": [
|
||||||
|
{
|
||||||
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Благодарности"
|
"title": "Благодарности"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"subsections": [
|
||||||
|
{
|
||||||
|
"title": "Введение"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Введение",
|
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Работа с любым печатным материалом"
|
"title": "Работа с любым печатным материалом"
|
||||||
@ -74,26 +84,29 @@
|
|||||||
"title": {
|
"title": {
|
||||||
"text": "Поля-тараканы",
|
"text": "Поля-тараканы",
|
||||||
"img": "/img/svg/books/1/titles-1/simple-icons_cockroachlabs.svg"
|
"img": "/img/svg/books/1/titles-1/simple-icons_cockroachlabs.svg"
|
||||||
|
},
|
||||||
|
"subsections": [
|
||||||
|
{
|
||||||
|
"text": "Техника безопасности при работе в полях"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Восстановление сил"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Главный принцип развития"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Техники выхода в аптайм"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Действия"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Результат"
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Техника безопасности при работе в полях"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Восстановление сил"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Главный принцип развития"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Техники выхода в аптайм"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Действия"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Результат"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"text": "Калибровка",
|
"text": "Калибровка",
|
||||||
@ -115,19 +128,19 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Определение и классификация"
|
"text": "Определение и классификация"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Псевдопассивная. Этап первый"
|
"text": "Псевдопассивная. Этап первый"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Псевдопассивная. Этап второй"
|
"text": "Псевдопассивная. Этап второй"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Активный тип стратегии"
|
"text": "Активный тип стратегии"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Третий этап. Степени кокетства"
|
"text": "Третий этап. Степени кокетства"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -147,35 +160,36 @@
|
|||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Введение"
|
"title": "Введение"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Физическое здоровье"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Ментальный посыл. Стильность"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Ментальный посыл. Внутреннее ощущение мира"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Физическое здоровье"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Ментальный посыл. Стильность"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Ментальный посыл. Внутреннее ощущение мира"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"text": "Ошибки резидента",
|
"text": "Ошибки резидента",
|
||||||
"img": "/img/svg/books/1/titles-1/si_error-line.svg"
|
"img": "/img/svg/books/1/titles-1/si_error-line.svg"
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
"Косак 1",
|
"Косяк 1",
|
||||||
"Косак 2",
|
"Косяк 2",
|
||||||
"Полукосак 3",
|
"Полукосяк 3",
|
||||||
"Косак 4",
|
"Косяк 4",
|
||||||
"МетаКосак 5 – опасный",
|
"МегаКосяк 5 – опасный",
|
||||||
"МетаКосак 6 – опасный",
|
"МегаКосяк 6 – опасный",
|
||||||
"Косак 7",
|
"Косяк 7",
|
||||||
"МетаКосак 8 – крайне опасно",
|
"МегаКосяк 8 – крайне опасно",
|
||||||
"МетаКосак 9 – опасно",
|
"МегаКосяк 9 – опасно",
|
||||||
"Косак 10",
|
"Косяк 10",
|
||||||
"Косак 11"
|
"Косяк 11"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -22,16 +22,16 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Экскурс в историю"
|
"text": "Экскурс в историю"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Правила формирования запасного аэродрома"
|
"text": "Правила формирования запасного аэродрома"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Подробнее о пятом пункте или как не врать"
|
"text": "Подробнее о пятом пункте или как не врать"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Следствия наличия запасного аэродрома"
|
"text": "Следствия наличия запасного аэродрома"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -42,13 +42,13 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Одежда"
|
"text": "Одежда"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Правильные места для свиданий"
|
"text": "Правильные места для свиданий"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Самое важное в свиданиях"
|
"text": "Самое важное в свиданиях"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -66,7 +66,6 @@
|
|||||||
"img": "/img/svg/books/2/titles-2/Vector (4).svg"
|
"img": "/img/svg/books/2/titles-2/Vector (4).svg"
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
"Механизм мужской и женской влюбленностей",
|
|
||||||
"Главный секрет влюбления",
|
"Главный секрет влюбления",
|
||||||
"Ментальная подстройка",
|
"Ментальная подстройка",
|
||||||
"Подстройка по ценностям",
|
"Подстройка по ценностям",
|
||||||
@ -102,13 +101,13 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Введение"
|
"text": "Введение"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Оральные ласки"
|
"text": "Оральные ласки"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Минет"
|
"text": "Минет"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -119,13 +118,13 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Российские школы соблазнения"
|
"text": "Российские школы соблазнения"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Как найти соблазнителя"
|
"text": "Как найти соблазнителя"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "История рождения одного термина"
|
"text": "История рождения одного термина"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -136,22 +135,22 @@
|
|||||||
},
|
},
|
||||||
"subsections": [
|
"subsections": [
|
||||||
{
|
{
|
||||||
"title": "Как парни воспринимают секс"
|
"text": "Как парни воспринимают секс"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Девичья невинность"
|
"text": "Девичья невинность"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Прожим девственницы. Метод Галанте."
|
"text": "Прожим девственницы. Метод Галанте."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Прожим девственницы. Классический метод."
|
"text": "Прожим девственницы. Классический метод."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Прожим девственницы. Метод пикапера."
|
"text": "Прожим девственницы. Метод пикапера."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Вместо эпилога"
|
"text": "Вместо эпилога"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -35,5 +35,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"href": "https://www.litres.ru/58125553/",
|
"href": "https://www.litres.ru/58125553/",
|
||||||
"hrefTitles": "title-1"
|
"hrefTitles": "title-1",
|
||||||
|
"download": "/files/Otryvok_1.pdf"
|
||||||
}
|
}
|
||||||
|
@ -35,5 +35,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"href": "https://www.litres.ru/vino-galante/kak-vlubit-v-sebya-lubogo-tonkaya-igra/",
|
"href": "https://www.litres.ru/vino-galante/kak-vlubit-v-sebya-lubogo-tonkaya-igra/",
|
||||||
"hrefTitles": "title-2"
|
"hrefTitles": "title-2",
|
||||||
|
"download": "/files/Otryvok_2.pdf"
|
||||||
}
|
}
|
||||||
|
21
pages/cart/_data/cart.json
Normal file
21
pages/cart/_data/cart.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Как влюбить в себя любого \n Книга I. \n Откровения бывшего Казановы",
|
||||||
|
"src": "/img/books/book1.png",
|
||||||
|
"buy": "добавить Книгу I",
|
||||||
|
"price": 520,
|
||||||
|
"message": "💡 Купи обе книги и получи \n скидку 10% - 936 за комплект"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Как влюбить в себя любого \n Книга II. \n Тонкая игра",
|
||||||
|
"src": "/img/books/book2.png",
|
||||||
|
"buy": "добавить Книгу II",
|
||||||
|
"price": 520,
|
||||||
|
"message": "💡 Купи обе книги и получи \n скидку 10% - 936 за комплект"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"message": "💡 Купи обе книги и получи скидку 10% - 936 за комплект"
|
||||||
|
}
|
113
pages/cart/index.vue
Normal file
113
pages/cart/index.vue
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<template>
|
||||||
|
<section class="relative z-50 ml-4">
|
||||||
|
<UiHeading tag="h1" size="300" class="font-bold mb-16"> Корзина </UiHeading>
|
||||||
|
<div class="-ml-6">
|
||||||
|
<div
|
||||||
|
v-for="({ name, src, price, message, buy, id }, index) in cartList.items"
|
||||||
|
:key="index"
|
||||||
|
class="flex items-start mb-24"
|
||||||
|
>
|
||||||
|
<div class="w-40 h-40 relative -top-5">
|
||||||
|
<img :src="`${src}`" alt="book" />
|
||||||
|
</div>
|
||||||
|
<UiParagraph size="300" class="whitespace-pre mb-10 mr-12 w-80">{{ name }}</UiParagraph>
|
||||||
|
<UiParagraph size="300" class="whitespace-pre mb-10 mr-20">{{ message }}</UiParagraph>
|
||||||
|
<UiButton
|
||||||
|
:id="id"
|
||||||
|
class="mb-10"
|
||||||
|
v-if="store.getQuantity(id) === 0"
|
||||||
|
@click="handleAddToCart(id)"
|
||||||
|
>{{ buy }}</UiButton
|
||||||
|
>
|
||||||
|
<template v-else>
|
||||||
|
<div class="flex items-center gap-8 mr-20">
|
||||||
|
<button
|
||||||
|
class="w-8 h-8 flex items-center justify-center rounded-full border border-white text-white text-2xl"
|
||||||
|
@click="handleRemove(id)"
|
||||||
|
aria-label="Уменьшить количество"
|
||||||
|
>
|
||||||
|
−
|
||||||
|
</button>
|
||||||
|
<span class="text-white text-2xl">{{ store.getQuantity(id) }}</span>
|
||||||
|
<button
|
||||||
|
class="w-8 h-8 flex items-center justify-center rounded-full border border-white text-white text-2xl"
|
||||||
|
@click="handleIncrement(id)"
|
||||||
|
aria-label="Увеличить количество"
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span class="text-white text-2xl font-bold mr-20 whitespace-nowrap">
|
||||||
|
{{ Number(price) * store.getQuantity(id) }} ₽
|
||||||
|
</span>
|
||||||
|
<button
|
||||||
|
class="w-8 h-8 flex items-center justify-center rounded-full border border-white text-white text-xl"
|
||||||
|
@click="handleRemove(id)"
|
||||||
|
aria-label="Удалить товар"
|
||||||
|
>
|
||||||
|
×
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center justify-end mt-8">
|
||||||
|
<UiParagraph is="span" size="300">Общая стоимость</UiParagraph>
|
||||||
|
<template v-if="isSpecialPrice">
|
||||||
|
<span class="text-white text-2xl font-bold ml-4 line-through select-none">
|
||||||
|
{{ regularTotalPrice }} ₽
|
||||||
|
</span>
|
||||||
|
<span class="text-primary text-3xl font-bold ml-4">
|
||||||
|
{{ store.getTotalPrice(cartList.items) }} ₽
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<span class="text-primary text-3xl font-bold ml-4">
|
||||||
|
{{ store.getTotalPrice(cartList.items) }} ₽
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-10 flex flex-col items-center justify-center">
|
||||||
|
<UiButton class="w-[660px]"> перейти к оформлению </UiButton>
|
||||||
|
<UiParagraph is="span" size="300" class="mb-10 mt-5"
|
||||||
|
>После оплаты книги сразу будут доступны для скачивания</UiParagraph
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import cartList from './_data/cart.json'
|
||||||
|
import UiHeading from '~/components/Typography/UiHeading.vue'
|
||||||
|
import UiParagraph from '~/components/Typography/UiParagraph.vue'
|
||||||
|
import { useSelectedBook } from '@/store/useSelectedBook'
|
||||||
|
import { computed } from 'vue'
|
||||||
|
|
||||||
|
const store = useSelectedBook()
|
||||||
|
|
||||||
|
function handleIncrement(id: number) {
|
||||||
|
store.increment(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDecrement(id: number) {
|
||||||
|
store.decrement(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleRemove(id: number) {
|
||||||
|
store.reset(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleAddToCart(id: number) {
|
||||||
|
store.addToCart(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectedBooksCount = computed(() => store.cartQuantities.filter((i) => i.quantity > 0).length)
|
||||||
|
|
||||||
|
const isSpecialPrice = computed(() => selectedBooksCount.value === 2)
|
||||||
|
|
||||||
|
const regularTotalPrice = computed(() => {
|
||||||
|
// Сумма без скидки
|
||||||
|
return store.cartQuantities.reduce((sum, item) => {
|
||||||
|
const book = cartList.items.find((b: any) => b.id === item.id)
|
||||||
|
return sum + (book ? Number(book.price) * item.quantity : 0)
|
||||||
|
}, 0)
|
||||||
|
})
|
||||||
|
</script>
|
19
pages/email.vue
Normal file
19
pages/email.vue
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<div class="relative z-50 text-black min-h-screen py-12">
|
||||||
|
<div class="container mx-auto px-4">
|
||||||
|
<div class="text-center mb-8">
|
||||||
|
<UiHeading tag="h1" size="500" class="font-bold text-primary mb-4"
|
||||||
|
>Контактные данные</UiHeading
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<EmailForm />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import UiHeading from '~/components/Typography/UiHeading.vue'
|
||||||
|
|
||||||
|
// Страница использует компонент EmailForm
|
||||||
|
</script>
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="feedback-section">
|
<section class="feedback-section">
|
||||||
<UiHeading tag="H2" size="300" class="text-three mb-4 pl-16 pr-24">
|
<UiHeading tag="h2" size="300" class="text-three mb-4 pl-16 pr-24">
|
||||||
Что говорят читатели
|
Что говорят читатели
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.feedback-card {
|
.feedback-card {
|
||||||
background-color: #1a1a1a;
|
background-color: #171b27;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<section>
|
||||||
<UiHeading tag="H2" size="300" class="text-three">
|
<UiHeading tag="h1" size="300" class="text-three">
|
||||||
Книги для тебя, если ты не знаешь...
|
Книги для тебя, если ты не знаешь...
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
<ul class="flex mt-20 flex-row items-center justify-between">
|
<ul class="flex mt-20 flex-row items-center justify-between gap-10">
|
||||||
<li
|
<li
|
||||||
class="flex flex-col-reverse justify-end w-38 gap-4 h-64 items-center transition-transform transform hover:scale-110"
|
class="flex flex-col-reverse justify-end w-38 gap-4 h-64 items-center transition-transform transform hover:scale-110"
|
||||||
v-for="({ img, text }, index) in questions.data"
|
v-for="({ img, text }, index) in questions.data"
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
import UiParagraph from '@/components/Typography/UiParagraph.vue';
|
import UiParagraph from '@/components/Typography/UiParagraph.vue';
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-for="({ topContent, button, botContent }, index) in content.data"
|
v-for="({ topContent, button, botContent, path }, index) in content.data"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="flex flex-col items-center max-w-96"
|
class="flex flex-col items-center max-w-96"
|
||||||
>
|
>
|
||||||
<UiParagraph size="300" class="mb-12 h-32">{{ topContent }} </UiParagraph>
|
<UiParagraph size="300" class="mb-12 h-32">{{ topContent }} </UiParagraph>
|
||||||
<UiButton variants="primary" class="mb-3 w-full">{{ button }} </UiButton>
|
<UiButton tag="RouterLink" :to="path" variants="primary" class="mb-3 w-full"
|
||||||
|
>{{ button }}
|
||||||
|
</UiButton>
|
||||||
<UiParagraph as="span" size="200"> {{ botContent }}</UiParagraph>
|
<UiParagraph as="span" size="200"> {{ botContent }}</UiParagraph>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -23,12 +25,14 @@ const content = reactive({
|
|||||||
'💡 Узнай, как думает мужчина, что его действительно цепляет, и что делает женщину незабываемой.',
|
'💡 Узнай, как думает мужчина, что его действительно цепляет, и что делает женщину незабываемой.',
|
||||||
button: 'КУПИТЬ КНИГУ I',
|
button: 'КУПИТЬ КНИГУ I',
|
||||||
botContent: 'PDF + EPUB сразу после оплаты',
|
botContent: 'PDF + EPUB сразу после оплаты',
|
||||||
|
path: '/books/1',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
topContent:
|
topContent:
|
||||||
'💡 Продолжение для тех, кто готов перейти от флирта к глубокому контакту. Как строить притяжение, не теряя себя.',
|
'💡 Продолжение для тех, кто готов перейти от флирта к глубокому контакту. Как строить притяжение, не теряя себя.',
|
||||||
button: 'КУПИТЬ КНИГУ II',
|
button: 'КУПИТЬ КНИГУ II',
|
||||||
botContent: 'PDF + EPUB сразу после оплаты',
|
botContent: 'PDF + EPUB сразу после оплаты',
|
||||||
|
path: '/books/2',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<section>
|
||||||
<div class="relative z-50">
|
<div class="relative z-50">
|
||||||
<img
|
<img src="/assets/img/webp/hero-banner-content.webp" alt="Книги" />
|
||||||
src="/assets/img/webp/hero-banner-content.webp"
|
|
||||||
alt="Книги"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row justify-between pl-16 pr-24">
|
<div class="flex flex-row justify-between pl-16 pr-24">
|
||||||
<BuyContent />
|
<BuyContent />
|
||||||
@ -14,5 +9,5 @@
|
|||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import BuyContent from './_ui/buyContent.vue'
|
import BuyContent from "./_ui/buyContent.vue";
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,38 +1,37 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="flex flex-row">
|
<section class="flex flex-row">
|
||||||
<div class="lg:w-5/12 pl-5 pr-5 shadow-md bg-[url('/assets/img/png/shadow.png')]">
|
<div
|
||||||
<UiHeading tag="H2" size="300" class="text-three mb-4 mt-5">
|
class="lg:w-5/12 pl-5 pr-5 shadow-md bg-[url('/assets/img/png/shadow.png')]"
|
||||||
|
>
|
||||||
|
<UiHeading tag="h2" size="300" class="text-three mb-4 mt-5">
|
||||||
💔 Ты не одна.
|
💔 Ты не одна.
|
||||||
<br />Я знаю, через что ты<br />
|
<br />Я знаю, через что ты<br />
|
||||||
проходишь.
|
проходишь.
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
<UiParagraph size="250" class="xl:max-w-[392px] mb-5"
|
<UiParagraph size="250" class="xl:max-w-[392px] mb-5"
|
||||||
>Когда ты снова и снова отдаёшь сердце, а в ответ — тишина или игра, это ранит. Я знаю это
|
>Когда ты снова и снова отдаёшь сердце, а в ответ — тишина или игра, это
|
||||||
чувство. Я был по ту сторону: манипулировал, очаровывал, уходил.
|
ранит. Я знаю это чувство. Я был по ту сторону: манипулировал,
|
||||||
|
очаровывал, уходил.
|
||||||
|
|
||||||
<br /><br />Я — бывший Казанова. И однажды я понял: больше так нельзя.
|
<br /><br />Я — бывший Казанова. И однажды я понял: больше так нельзя.
|
||||||
|
|
||||||
<br /><br />Эти книги — не теория. Это ключ к пониманию, как устроена мужская психология,
|
<br /><br />Эти книги — не теория. Это ключ к пониманию, как устроена
|
||||||
чего на самом деле хочет мужчина, и как перестать теряться в отношениях.
|
мужская психология, чего на самом деле хочет мужчина, и как перестать
|
||||||
|
теряться в отношениях.
|
||||||
|
|
||||||
<br /><br />Я написал их для тебя — чтобы ты могла быть счастливой, не прогибаясь, не
|
<br /><br />Я написал их для тебя — чтобы ты могла быть счастливой, не
|
||||||
умоляя, не теряя себя. Если ты устала «играть», если хочешь любви по-настоящему — начни с
|
прогибаясь, не умоляя, не теряя себя. Если ты устала «играть», если
|
||||||
первой страницы. В этих книгах нет воды. Только правда.</UiParagraph
|
хочешь любви по-настоящему — начни с первой страницы. В этих книгах нет
|
||||||
|
воды. Только правда.</UiParagraph
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="lg:w-7/12">
|
<div class="lg:w-7/12">
|
||||||
<NuxtImg
|
<NuxtImg src="/img/webp/meetingAlone.webp" alt="meeting" loading="lazy" />
|
||||||
src="/img/webp/meetingAlone.webp"
|
|
||||||
alt="meeting"
|
|
||||||
width="100%"
|
|
||||||
height="100%"
|
|
||||||
loading="lazy"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,26 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<section class="relative z-50">
|
||||||
<UiHeading size="300" tag="H1" class="mb-5">
|
<UiHeading size="300" tag="H1" class="mb-5">
|
||||||
Политика конфиденциальности
|
Политика конфиденциальности
|
||||||
</UiHeading>
|
</UiHeading>
|
||||||
<UiParagraph size="300"
|
<UiParagraph size="300" class="mb-5"
|
||||||
>Настоящая политика конфиденциальности описывает, как мы собираем,
|
>Настоящая политика конфиденциальности описывает, как мы собираем,
|
||||||
используем и защищаем личную информацию, которую пользователи
|
используем и защищаем личную информацию, которую пользователи
|
||||||
предоставляют при использовании нашего сайта.</UiParagraph
|
предоставляют при использовании нашего сайта.</UiParagraph
|
||||||
>
|
>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2">1. Сбор информации</UiHeading>
|
<UiHeading size="300" tag="h2">1. Сбор информации</UiHeading>
|
||||||
<UiParagraph size="300"
|
<UiParagraph size="300"
|
||||||
>При оформлении заказа на сайте вы предоставляете персональные данные,
|
>При оформлении заказа на сайте вы предоставляете персональные данные,
|
||||||
которые включают:</UiParagraph
|
которые включают:</UiParagraph
|
||||||
>
|
>
|
||||||
<ul class="list-disc pl-5">
|
<ul class="list-disc pl-5 mb-3">
|
||||||
<li><UiParagraph size="300">Адрес электронной почты</UiParagraph></li>
|
<li><UiParagraph size="300">Адрес электронной почты</UiParagraph></li>
|
||||||
<li><UiParagraph size="300">Имя (по желанию)</UiParagraph></li>
|
<li><UiParagraph size="300">Имя (по желанию)</UiParagraph></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2">2. Использование информации</UiHeading>
|
<UiHeading size="300" tag="h2">2. Использование информации</UiHeading>
|
||||||
<UiParagraph size="300"
|
<UiParagraph size="300" class="mb-3"
|
||||||
>Ваши личные данные используются исключительно для:</UiParagraph
|
>Ваши личные данные используются исключительно для:</UiParagraph
|
||||||
>
|
>
|
||||||
<ul class="list-disc pl-5">
|
<ul class="list-disc pl-5">
|
||||||
@ -33,46 +33,46 @@
|
|||||||
<UiParagraph> Связи с вами по вопросам вашего заказа. </UiParagraph>
|
<UiParagraph> Связи с вами по вопросам вашего заказа. </UiParagraph>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<UiParagraph size="300">
|
<UiParagraph size="300" class="mb-3">
|
||||||
Уведомления о важных обновлениях и новостях сайта (только если вы явно
|
Уведомления о важных обновлениях и новостях сайта (только если вы явно
|
||||||
согласились на рассылку).</UiParagraph
|
согласились на рассылку).</UiParagraph
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2">3. Защита личных данных</UiHeading>
|
<UiHeading size="300" tag="h2">3. Защита личных данных</UiHeading>
|
||||||
<UiParagraph size="300">
|
<UiParagraph size="300" class="mb-3">
|
||||||
Мы предпринимаем необходимые меры для защиты ваших личных данных от
|
Мы предпринимаем необходимые меры для защиты ваших личных данных от
|
||||||
несанкционированного доступа, изменения, разглашения или уничтожения.
|
несанкционированного доступа, изменения, разглашения или уничтожения.
|
||||||
Доступ к личным данным имеют только сотрудники, непосредственно
|
Доступ к личным данным имеют только сотрудники, непосредственно
|
||||||
участвующие в обработке заказов.
|
участвующие в обработке заказов.
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2"
|
<UiHeading size="300" tag="h2"
|
||||||
>4. Передача информации третьим лицам</UiHeading
|
>4. Передача информации третьим лицам</UiHeading
|
||||||
>
|
>
|
||||||
<UiParagraph size="300">
|
<UiParagraph size="300" class="mb-3">
|
||||||
Мы не передаём ваши личные данные третьим лицам, за исключением случаев,
|
Мы не передаём ваши личные данные третьим лицам, за исключением случаев,
|
||||||
предусмотренных законодательством Российской Федерации.
|
предусмотренных законодательством Российской Федерации.
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2">5. Cookies (Куки-файлы)</UiHeading>
|
<UiHeading size="300" tag="h2">5. Cookies (Куки-файлы)</UiHeading>
|
||||||
<UiParagraph size="300">
|
<UiParagraph size="300" class="mb-3">
|
||||||
Мы используем файлы cookie, чтобы улучшить ваш пользовательский опыт. Вы
|
Мы используем файлы cookie, чтобы улучшить ваш пользовательский опыт. Вы
|
||||||
можете отключить файлы cookie в настройках вашего браузера, однако это
|
можете отключить файлы cookie в настройках вашего браузера, однако это
|
||||||
может ограничить доступ к некоторым функциям сайта.
|
может ограничить доступ к некоторым функциям сайта.
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2"
|
<UiHeading size="300" tag="h2"
|
||||||
>6. Изменения в политике конфиденциальности</UiHeading
|
>6. Изменения в политике конфиденциальности</UiHeading
|
||||||
>
|
>
|
||||||
<UiParagraph size="300">
|
<UiParagraph size="300" class="mb-3">
|
||||||
Мы можем периодически обновлять настоящую политику конфиденциальности. Об
|
Мы можем периодически обновлять настоящую политику конфиденциальности. Об
|
||||||
изменениях мы уведомим вас, разместив новую версию политики на данной
|
изменениях мы уведомим вас, разместив новую версию политики на данной
|
||||||
странице.
|
странице.
|
||||||
</UiParagraph>
|
</UiParagraph>
|
||||||
|
|
||||||
<UiHeading size="300" tag="H2">7. Ваше согласие</UiHeading>
|
<UiHeading size="300" tag="h2">7. Ваше согласие</UiHeading>
|
||||||
<UiParagraph size="300"
|
<UiParagraph size="300"
|
||||||
>Используя наш сайт, вы соглашаетесь с условиями данной политики
|
>Используя наш сайт, вы соглашаетесь с условиями данной политики
|
||||||
конфиденциальности.</UiParagraph
|
конфиденциальности.</UiParagraph
|
||||||
|
46
pages/question/_data/question-answer.json
Normal file
46
pages/question/_data/question-answer.json
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"question": "1. Как купить книгу?",
|
||||||
|
"answer": "Чтобы купить книгу, просто перейдите на страницу соответствующей книги и нажмите кнопку «Купить». Вы будете перенаправлены в корзину, где можно подтвердить заказ и выбрать способ оплаты."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "2. Какие способы оплаты доступны?",
|
||||||
|
"answer": "На сайте доступны самые удобные и безопасные способы оплаты: банковские карты (Visa, Mastercard, Мир), Система Быстрых Платежей (СБП) и сервис SberPay. Вы можете выбрать любой из них при оформлении заказа."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "3. Можно ли скачать книгу сразу после покупки?",
|
||||||
|
"answer": "Да, после подтверждения покупки, ссылка на скачивание книги будет доступна сразу. Вы получите файл на указанный при заказе email, либо сможете скачать книгу непосредственно с сайта."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "4. Что делать, если я не могу скачать книгу?",
|
||||||
|
"answer": "Если у вас возникли проблемы с скачиванием книги, пожалуйста, свяжитесь с нами через контактный email vinogalante@yandex.ru, и мы постараемся решить ваш вопрос как можно скорее."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "5. Есть ли пробный отрывок книги?",
|
||||||
|
"answer": "Да, на каждой странице книги есть возможность ознакомиться с аннотацией и скачать отрывок или читать его прямо на сайте. Это поможет вам оценить стиль и содержание книги перед покупкой."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "6. Как читать книгу на мобильном устройстве?",
|
||||||
|
"answer": "Книги можно читать на мобильных устройствах в любом формате (например, PDF). Просто скачайте файл и откройте его с помощью подходящего приложения, например, Adobe Reader для PDF."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "7. Можно ли вернуть книгу, если она не понравилась?",
|
||||||
|
"answer": "К сожалению, электронные книги не подлежат возврату, поскольку они могут быть скачаны сразу после покупки. Мы рекомендуем ознакомиться с отрывком книги перед покупкой, чтобы убедиться, что она соответствует вашим ожиданиям."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "8. Как связаться с автором?",
|
||||||
|
"answer": "Вы можете связаться со мной по электронной почте vinogalante@yandex.ru. Я всегда рад услышать отзывы о книгах и ответить на вопросы."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "9. Как узнать, когда выйдет следующая книга?",
|
||||||
|
"answer": "На данный момент автор не планирует продолжать писать книги по данной теме. Сейчас автор сосредоточен на других проектах."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "10. Есть ли скидки на книги?",
|
||||||
|
"answer": "Да, при оплате двух книг сразу предоставляется скидка 10%. Просто добавьте обе книги в корзину, и скидка будет автоматически применена при оформлении заказа."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"question": "11. Могу ли я получить книгу в другом формате?",
|
||||||
|
"answer": "На данный момент книги доступны в формате PDF, ePub. Если вам нужен другой формат, пожалуйста, свяжитесь с нами, и мы постараемся помочь."
|
||||||
|
}
|
||||||
|
]
|
43
pages/question/index.vue
Normal file
43
pages/question/index.vue
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<section class="relative z-50 ml-4">
|
||||||
|
<div v-for="({ question, answer }, index) in questions" :key="index" class="mb-16">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
@click="toggleFAQ(index)"
|
||||||
|
class="flex gap-12 mb-5 items-baseline font-bold"
|
||||||
|
>
|
||||||
|
<UiParagraph as="span" size="500">
|
||||||
|
{{ question }}
|
||||||
|
</UiParagraph>
|
||||||
|
<img
|
||||||
|
src="/assets/icon/arrow.svg"
|
||||||
|
alt="question"
|
||||||
|
class="duration-500"
|
||||||
|
:class="activeIndex === index ? 'rotate-90' : 'rotate-0'"
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
<Transition name="slide">
|
||||||
|
<div v-show="activeIndex === index">
|
||||||
|
<UiParagraph size="300">
|
||||||
|
{{ answer }}
|
||||||
|
</UiParagraph>
|
||||||
|
</div>
|
||||||
|
</Transition>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import UiParagraph from '~/components/Typography/UiParagraph.vue'
|
||||||
|
import questions from './_data/question-answer.json'
|
||||||
|
|
||||||
|
const activeIndex = ref<null | number>(null)
|
||||||
|
|
||||||
|
const toggleFAQ = (index: number) => {
|
||||||
|
activeIndex.value = activeIndex.value === index ? null : index
|
||||||
|
}
|
||||||
|
|
||||||
|
useHead({
|
||||||
|
title: 'Вопрос - ответ | Vino Galante',
|
||||||
|
})
|
||||||
|
</script>
|
BIN
public/files/Otryvok_1.pdf
Normal file
BIN
public/files/Otryvok_1.pdf
Normal file
Binary file not shown.
BIN
public/files/Otryvok_2.pdf
Normal file
BIN
public/files/Otryvok_2.pdf
Normal file
Binary file not shown.
BIN
public/img/books/book1.png
Normal file
BIN
public/img/books/book1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 208 KiB |
BIN
public/img/books/book2.png
Normal file
BIN
public/img/books/book2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 218 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user