Compare commits
25 Commits
15a7ffe120
...
production
Author | SHA1 | Date | |
---|---|---|---|
5c97679188 | |||
6eb987ffdb | |||
f2f7798e83 | |||
e396883830 | |||
a783918241 | |||
f8a632b6df | |||
d92fc4cf6e | |||
8529e66e33 | |||
6c8a6e7c35 | |||
117e579f2e | |||
8ba72bc8a4 | |||
1823cd87b6 | |||
94d008ca7d | |||
9950665146 | |||
cbabdf8ccb | |||
b73a9f5b3f | |||
2909160b17 | |||
2ef59fee78 | |||
84cf03bd61 | |||
3cd6a975f9 | |||
7a283ababc | |||
eacb8a70d0 | |||
bc3d085c02 | |||
4112bca029 | |||
46a59c7b91 |
@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: Upload files via Gitea API
|
||||
env:
|
||||
GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/production"
|
||||
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
|
||||
@ -34,11 +34,11 @@ jobs:
|
||||
-H "Authorization: token $TOKEN" \
|
||||
-H "Content-Type: text/plain" \
|
||||
-T "$file" \
|
||||
"$GITEA_API/$file?branch=production"
|
||||
"$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=production"
|
||||
"$GITEA_API/deploy.tar.gz?branch=main"
|
||||
|
10
.gitignore
vendored
@ -13,6 +13,13 @@ dist-ssr
|
||||
*.local
|
||||
.nuxt
|
||||
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
.history
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
@ -23,6 +30,5 @@ dist-ssr
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
.nuxt
|
||||
package-lock.json
|
||||
frontend.env
|
||||
|
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)
|
142
.nuxt/components.d.ts
vendored
@ -1,142 +0,0 @@
|
||||
|
||||
import type { DefineComponent, SlotsType } from 'vue'
|
||||
type IslandComponent<T extends DefineComponent> = T & DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>>
|
||||
type HydrationStrategies = {
|
||||
hydrateOnVisible?: IntersectionObserverInit | true
|
||||
hydrateOnIdle?: number | true
|
||||
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
|
||||
hydrateOnMediaQuery?: string
|
||||
hydrateAfter?: number
|
||||
hydrateWhen?: boolean
|
||||
hydrateNever?: true
|
||||
}
|
||||
type LazyComponent<T> = (T & DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }>)
|
||||
interface _GlobalComponents {
|
||||
'TypographyUiHeading': typeof import("../components/Typography/UiHeading.vue")['default']
|
||||
'TypographyUiParagraph': typeof import("../components/Typography/UiParagraph.vue")['default']
|
||||
'UiButtonParams': typeof import("../components/UiButton/UiButton.params")['default']
|
||||
'UiButton': typeof import("../components/UiButton/UiButton.vue")['default']
|
||||
'UiNav': typeof import("../components/UiNav/UiNav.vue")['default']
|
||||
'NuxtWelcome': typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']
|
||||
'NuxtLayout': typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
|
||||
'NuxtErrorBoundary': typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
|
||||
'ClientOnly': typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']
|
||||
'DevOnly': typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']
|
||||
'ServerPlaceholder': typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']
|
||||
'NuxtLink': typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']
|
||||
'NuxtLoadingIndicator': typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
|
||||
'NuxtTime': typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
|
||||
'NuxtRouteAnnouncer': typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
|
||||
'NuxtImg': typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']
|
||||
'NuxtPicture': typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']
|
||||
'Icon': typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']
|
||||
'NuxtPage': typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']
|
||||
'NoScript': typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']
|
||||
'Link': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']
|
||||
'Base': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']
|
||||
'Title': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']
|
||||
'Meta': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']
|
||||
'Style': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']
|
||||
'Head': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']
|
||||
'Html': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']
|
||||
'Body': typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']
|
||||
'NuxtIsland': typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']
|
||||
'NuxtRouteAnnouncer': IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
|
||||
'LazyTypographyUiHeading': LazyComponent<typeof import("../components/Typography/UiHeading.vue")['default']>
|
||||
'LazyTypographyUiParagraph': LazyComponent<typeof import("../components/Typography/UiParagraph.vue")['default']>
|
||||
'LazyUiButtonParams': LazyComponent<typeof import("../components/UiButton/UiButton.params")['default']>
|
||||
'LazyUiButton': LazyComponent<typeof import("../components/UiButton/UiButton.vue")['default']>
|
||||
'LazyUiNav': LazyComponent<typeof import("../components/UiNav/UiNav.vue")['default']>
|
||||
'LazyNuxtWelcome': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
|
||||
'LazyNuxtLayout': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
|
||||
'LazyNuxtErrorBoundary': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
|
||||
'LazyClientOnly': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']>
|
||||
'LazyDevOnly': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']>
|
||||
'LazyServerPlaceholder': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
|
||||
'LazyNuxtLink': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
|
||||
'LazyNuxtLoadingIndicator': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
|
||||
'LazyNuxtTime': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
|
||||
'LazyNuxtRouteAnnouncer': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
|
||||
'LazyNuxtImg': LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']>
|
||||
'LazyNuxtPicture': LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']>
|
||||
'LazyIcon': LazyComponent<typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']>
|
||||
'LazyNuxtPage': LazyComponent<typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']>
|
||||
'LazyNoScript': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
|
||||
'LazyLink': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']>
|
||||
'LazyBase': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']>
|
||||
'LazyTitle': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']>
|
||||
'LazyMeta': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']>
|
||||
'LazyStyle': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']>
|
||||
'LazyHead': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']>
|
||||
'LazyHtml': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']>
|
||||
'LazyBody': LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']>
|
||||
'LazyNuxtIsland': LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
|
||||
'LazyNuxtRouteAnnouncer': LazyComponent<IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>>
|
||||
}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents extends _GlobalComponents { }
|
||||
}
|
||||
|
||||
export const TypographyUiHeading: typeof import("../components/Typography/UiHeading.vue")['default']
|
||||
export const TypographyUiParagraph: typeof import("../components/Typography/UiParagraph.vue")['default']
|
||||
export const UiButtonParams: typeof import("../components/UiButton/UiButton.params")['default']
|
||||
export const UiButton: typeof import("../components/UiButton/UiButton.vue")['default']
|
||||
export const UiNav: typeof import("../components/UiNav/UiNav.vue")['default']
|
||||
export const NuxtWelcome: typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']
|
||||
export const NuxtLayout: typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
|
||||
export const NuxtErrorBoundary: typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
|
||||
export const ClientOnly: typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']
|
||||
export const DevOnly: typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']
|
||||
export const ServerPlaceholder: typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']
|
||||
export const NuxtLink: typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']
|
||||
export const NuxtLoadingIndicator: typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
|
||||
export const NuxtTime: typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
|
||||
export const NuxtRouteAnnouncer: typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
|
||||
export const NuxtImg: typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']
|
||||
export const NuxtPicture: typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']
|
||||
export const Icon: typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']
|
||||
export const NuxtPage: typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']
|
||||
export const NoScript: typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']
|
||||
export const Link: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']
|
||||
export const Base: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']
|
||||
export const Title: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']
|
||||
export const Meta: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']
|
||||
export const Style: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']
|
||||
export const Head: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']
|
||||
export const Html: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']
|
||||
export const Body: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']
|
||||
export const NuxtIsland: typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']
|
||||
export const NuxtRouteAnnouncer: IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
|
||||
export const LazyTypographyUiHeading: LazyComponent<typeof import("../components/Typography/UiHeading.vue")['default']>
|
||||
export const LazyTypographyUiParagraph: LazyComponent<typeof import("../components/Typography/UiParagraph.vue")['default']>
|
||||
export const LazyUiButtonParams: LazyComponent<typeof import("../components/UiButton/UiButton.params")['default']>
|
||||
export const LazyUiButton: LazyComponent<typeof import("../components/UiButton/UiButton.vue")['default']>
|
||||
export const LazyUiNav: LazyComponent<typeof import("../components/UiNav/UiNav.vue")['default']>
|
||||
export const LazyNuxtWelcome: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
|
||||
export const LazyNuxtLayout: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
|
||||
export const LazyNuxtErrorBoundary: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
|
||||
export const LazyClientOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']>
|
||||
export const LazyDevOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']>
|
||||
export const LazyServerPlaceholder: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
|
||||
export const LazyNuxtLink: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
|
||||
export const LazyNuxtLoadingIndicator: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
|
||||
export const LazyNuxtTime: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
|
||||
export const LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
|
||||
export const LazyNuxtImg: LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtImg.vue")['default']>
|
||||
export const LazyNuxtPicture: LazyComponent<typeof import("../node_modules/@nuxt/image/dist/runtime/components/NuxtPicture.vue")['default']>
|
||||
export const LazyIcon: LazyComponent<typeof import("../node_modules/@nuxt/icon/dist/runtime/components/index")['default']>
|
||||
export const LazyNuxtPage: LazyComponent<typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']>
|
||||
export const LazyNoScript: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
|
||||
export const LazyLink: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']>
|
||||
export const LazyBase: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']>
|
||||
export const LazyTitle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']>
|
||||
export const LazyMeta: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']>
|
||||
export const LazyStyle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']>
|
||||
export const LazyHead: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']>
|
||||
export const LazyHtml: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']>
|
||||
export const LazyBody: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']>
|
||||
export const LazyNuxtIsland: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
|
||||
export const LazyNuxtRouteAnnouncer: LazyComponent<IslandComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>>
|
||||
|
||||
export const componentNames: string[]
|
@ -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 }
|
33
.nuxt/imports.d.ts
vendored
@ -1,33 +0,0 @@
|
||||
export { useScriptTriggerConsent, useScriptEventPage, useScriptTriggerElement, useScript, useScriptGoogleAnalytics, useScriptPlausibleAnalytics, useScriptCrisp, useScriptClarity, useScriptCloudflareWebAnalytics, useScriptFathomAnalytics, useScriptMatomoAnalytics, useScriptGoogleTagManager, useScriptGoogleAdsense, useScriptSegment, useScriptMetaPixel, useScriptXPixel, useScriptIntercom, useScriptHotjar, useScriptStripe, useScriptLemonSqueezy, useScriptVimeoPlayer, useScriptYouTubePlayer, useScriptGoogleMaps, useScriptNpm, useScriptUmamiAnalytics, useScriptSnapchatPixel, useScriptRybbitAnalytics } from '#app/composables/script-stubs';
|
||||
export { isVue2, isVue3 } from 'vue-demi';
|
||||
export { defineNuxtLink } from '#app/components/nuxt-link';
|
||||
export { useNuxtApp, tryUseNuxtApp, defineNuxtPlugin, definePayloadPlugin, useRuntimeConfig, defineAppConfig } from '#app/nuxt';
|
||||
export { useAppConfig, updateAppConfig } from '#app/config';
|
||||
export { defineNuxtComponent } from '#app/composables/component';
|
||||
export { useAsyncData, useLazyAsyncData, useNuxtData, refreshNuxtData, clearNuxtData } from '#app/composables/asyncData';
|
||||
export { useHydration } from '#app/composables/hydrate';
|
||||
export { callOnce } from '#app/composables/once';
|
||||
export { useState, clearNuxtState } from '#app/composables/state';
|
||||
export { clearError, createError, isNuxtError, showError, useError } from '#app/composables/error';
|
||||
export { useFetch, useLazyFetch } from '#app/composables/fetch';
|
||||
export { useCookie, refreshCookie } from '#app/composables/cookie';
|
||||
export { onPrehydrate, prerenderRoutes, useRequestHeader, useRequestHeaders, useResponseHeader, useRequestEvent, useRequestFetch, setResponseStatus } from '#app/composables/ssr';
|
||||
export { onNuxtReady } from '#app/composables/ready';
|
||||
export { preloadComponents, prefetchComponents, preloadRouteComponents } from '#app/composables/preload';
|
||||
export { abortNavigation, addRouteMiddleware, defineNuxtRouteMiddleware, setPageLayout, navigateTo, useRoute, useRouter } from '#app/composables/router';
|
||||
export { isPrerendered, loadPayload, preloadPayload, definePayloadReducer, definePayloadReviver } from '#app/composables/payload';
|
||||
export { useLoadingIndicator } from '#app/composables/loading-indicator';
|
||||
export { getAppManifest, getRouteRules } from '#app/composables/manifest';
|
||||
export { reloadNuxtApp } from '#app/composables/chunk';
|
||||
export { useRequestURL } from '#app/composables/url';
|
||||
export { usePreviewMode } from '#app/composables/preview';
|
||||
export { useRouteAnnouncer } from '#app/composables/route-announcer';
|
||||
export { useRuntimeHook } from '#app/composables/runtime-hook';
|
||||
export { useHead, useHeadSafe, useServerHeadSafe, useServerHead, useSeoMeta, useServerSeoMeta, injectHead } from '#app/composables/head';
|
||||
export { onBeforeRouteLeave, onBeforeRouteUpdate, useLink } from 'vue-router';
|
||||
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, mergeModels, toValue, useModel, useAttrs, useCssModule, useCssVars, useSlots, useTransitionState, useId, useTemplateRef, useShadowRoot, Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue';
|
||||
export { requestIdleCallback, cancelIdleCallback } from '#app/compat/idle-callback';
|
||||
export { setInterval } from '#app/compat/interval';
|
||||
export { useImage } from '../node_modules/@nuxt/image/dist/runtime/composables';
|
||||
export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/@pinia/nuxt/dist/runtime/composables';
|
||||
export { definePageMeta } from '../node_modules/nuxt/dist/pages/runtime/composables';
|
@ -1 +0,0 @@
|
||||
export function init() {}
|
@ -1,13 +0,0 @@
|
||||
function createRemoteCollection(fetchEndpoint) {
|
||||
let _cache
|
||||
return async () => {
|
||||
if (_cache)
|
||||
return _cache
|
||||
const res = await fetch(fetchEndpoint).then(r => r.json())
|
||||
_cache = res
|
||||
return res
|
||||
}
|
||||
}
|
||||
|
||||
export const collections = {
|
||||
}
|
28
.nuxt/nuxt.d.ts
vendored
@ -1,28 +0,0 @@
|
||||
/// <reference types="@nuxt/eslint" />
|
||||
/// <reference types="@nuxt/icon" />
|
||||
/// <reference types="@nuxt/image" />
|
||||
/// <reference types="@nuxtjs/tailwindcss" />
|
||||
/// <reference types="@pinia/nuxt" />
|
||||
/// <reference types="@pinia/nuxt" />
|
||||
/// <reference types="@nuxt/devtools" />
|
||||
/// <reference types="@nuxt/telemetry" />
|
||||
/// <reference path="types/builder-env.d.ts" />
|
||||
/// <reference types="nuxt" />
|
||||
/// <reference path="types/app-defaults.d.ts" />
|
||||
/// <reference path="types/plugins.d.ts" />
|
||||
/// <reference path="types/build.d.ts" />
|
||||
/// <reference path="types/schema.d.ts" />
|
||||
/// <reference path="types/app.config.d.ts" />
|
||||
/// <reference types="@pinia/nuxt" />
|
||||
/// <reference types="vue-router" />
|
||||
/// <reference path="types/middleware.d.ts" />
|
||||
/// <reference path="types/nitro-middleware.d.ts" />
|
||||
/// <reference path="types/layouts.d.ts" />
|
||||
/// <reference path="components.d.ts" />
|
||||
/// <reference path="imports.d.ts" />
|
||||
/// <reference path="types/imports.d.ts" />
|
||||
/// <reference path="schema/nuxt.schema.d.ts" />
|
||||
/// <reference path="types/nitro.d.ts" />
|
||||
/// <reference path="./eslint-typegen.d.ts" />
|
||||
|
||||
export {}
|
@ -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
@ -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/19/2025, 4:53:06 PM
|
||||
import "@nuxtjs/tailwindcss/config-ctx"
|
||||
import configMerger from "@nuxtjs/tailwindcss/merger";
|
||||
|
||||
import cfg2 from "./../../tailwind.config.ts";
|
||||
const config = [
|
||||
{"content":{"files":["/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/plugins/**/*.{js,ts,mjs}","/home/levis/miduway/www/ebook.miduway.space/composables/**/*.{js,ts,mjs}","/home/levis/miduway/www/ebook.miduway.space/utils/**/*.{js,ts,mjs}","/home/levis/miduway/www/ebook.miduway.space/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/home/levis/miduway/www/ebook.miduway.space/app.config.{js,ts,mjs}"]}},
|
||||
{},
|
||||
cfg2
|
||||
].reduce((acc, curr) => configMerger(acc, curr), {});
|
||||
|
||||
const resolvedConfig = config;
|
||||
|
||||
export default resolvedConfig;
|
@ -1,209 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"paths": {
|
||||
"nitropack/types": [
|
||||
"../node_modules/nitropack/types"
|
||||
],
|
||||
"nitropack/runtime": [
|
||||
"../node_modules/nitropack/runtime"
|
||||
],
|
||||
"nitropack": [
|
||||
"../node_modules/nitropack"
|
||||
],
|
||||
"defu": [
|
||||
"../node_modules/defu"
|
||||
],
|
||||
"h3": [
|
||||
"../node_modules/h3"
|
||||
],
|
||||
"consola": [
|
||||
"../node_modules/consola"
|
||||
],
|
||||
"ofetch": [
|
||||
"../node_modules/ofetch"
|
||||
],
|
||||
"@unhead/vue": [
|
||||
"../node_modules/@unhead/vue"
|
||||
],
|
||||
"@nuxt/devtools": [
|
||||
"../node_modules/@nuxt/devtools"
|
||||
],
|
||||
"@vue/runtime-core": [
|
||||
"../node_modules/@vue/runtime-core"
|
||||
],
|
||||
"@vue/compiler-sfc": [
|
||||
"../node_modules/@vue/compiler-sfc"
|
||||
],
|
||||
"vue-router": [
|
||||
"../node_modules/vue-router"
|
||||
],
|
||||
"vue-router/auto-routes": [
|
||||
"../node_modules/vue-router/vue-router-auto-routes"
|
||||
],
|
||||
"unplugin-vue-router/client": [
|
||||
"../node_modules/unplugin-vue-router/client"
|
||||
],
|
||||
"@nuxt/schema": [
|
||||
"../node_modules/@nuxt/schema"
|
||||
],
|
||||
"nuxt": [
|
||||
"../node_modules/nuxt"
|
||||
],
|
||||
"vite/client": [
|
||||
"../node_modules/vite/client"
|
||||
],
|
||||
"~": [
|
||||
".."
|
||||
],
|
||||
"~/*": [
|
||||
"../*"
|
||||
],
|
||||
"@": [
|
||||
".."
|
||||
],
|
||||
"@/*": [
|
||||
"../*"
|
||||
],
|
||||
"~~": [
|
||||
".."
|
||||
],
|
||||
"~~/*": [
|
||||
"../*"
|
||||
],
|
||||
"@@": [
|
||||
".."
|
||||
],
|
||||
"@@/*": [
|
||||
"../*"
|
||||
],
|
||||
"#shared": [
|
||||
"../shared"
|
||||
],
|
||||
"assets": [
|
||||
"../assets"
|
||||
],
|
||||
"assets/*": [
|
||||
"../assets/*"
|
||||
],
|
||||
"public": [
|
||||
"../public"
|
||||
],
|
||||
"public/*": [
|
||||
"../public/*"
|
||||
],
|
||||
"#app": [
|
||||
"../node_modules/nuxt/dist/app"
|
||||
],
|
||||
"#app/*": [
|
||||
"../node_modules/nuxt/dist/app/*"
|
||||
],
|
||||
"vue-demi": [
|
||||
"../node_modules/nuxt/dist/app/compat/vue-demi"
|
||||
],
|
||||
"#image": [
|
||||
"../node_modules/@nuxt/image/dist/runtime"
|
||||
],
|
||||
"#image/*": [
|
||||
"../node_modules/@nuxt/image/dist/runtime/*"
|
||||
],
|
||||
"pinia": [
|
||||
"../node_modules/pinia/dist/pinia"
|
||||
],
|
||||
"#vue-router": [
|
||||
"../node_modules/vue-router"
|
||||
],
|
||||
"#unhead/composables": [
|
||||
"../node_modules/nuxt/dist/head/runtime/composables/v3"
|
||||
],
|
||||
"#imports": [
|
||||
"./imports"
|
||||
],
|
||||
"#app-manifest": [
|
||||
"./manifest/meta/f4dfbb73-66a7-4162-b534-4c8db9f3aa74.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/@pinia/nuxt/runtime",
|
||||
"../node_modules/@pinia/nuxt/dist/runtime",
|
||||
"../node_modules/@nuxtjs/tailwindcss/runtime",
|
||||
"../node_modules/@nuxtjs/tailwindcss/dist/runtime",
|
||||
"../node_modules/@nuxt/devtools/runtime",
|
||||
"../node_modules/@nuxt/devtools/dist/runtime",
|
||||
"../node_modules/@nuxt/telemetry/runtime",
|
||||
"../node_modules/@nuxt/telemetry/dist/runtime",
|
||||
".."
|
||||
],
|
||||
"exclude": [
|
||||
"../dist",
|
||||
"../.data",
|
||||
"../node_modules",
|
||||
"../node_modules/nuxt/node_modules",
|
||||
"../node_modules/@nuxt/eslint/node_modules",
|
||||
"../node_modules/@nuxt/icon/node_modules",
|
||||
"../node_modules/@nuxt/image/node_modules",
|
||||
"../node_modules/@pinia/nuxt/node_modules",
|
||||
"../node_modules/@nuxtjs/tailwindcss/node_modules",
|
||||
"../node_modules/@nuxt/devtools/node_modules",
|
||||
"../node_modules/@nuxt/telemetry/node_modules",
|
||||
"../node_modules/@nuxt/eslint/runtime/server",
|
||||
"../node_modules/@nuxt/eslint/dist/runtime/server",
|
||||
"../node_modules/@nuxt/icon/runtime/server",
|
||||
"../node_modules/@nuxt/icon/dist/runtime/server",
|
||||
"../node_modules/@nuxt/image/runtime/server",
|
||||
"../node_modules/@nuxt/image/dist/runtime/server",
|
||||
"../node_modules/@pinia/nuxt/runtime/server",
|
||||
"../node_modules/@pinia/nuxt/dist/runtime/server",
|
||||
"../node_modules/@nuxtjs/tailwindcss/runtime/server",
|
||||
"../node_modules/@nuxtjs/tailwindcss/dist/runtime/server",
|
||||
"../node_modules/@nuxt/devtools/runtime/server",
|
||||
"../node_modules/@nuxt/devtools/dist/runtime/server",
|
||||
"../node_modules/@nuxt/telemetry/runtime/server",
|
||||
"../node_modules/@nuxt/telemetry/dist/runtime/server"
|
||||
]
|
||||
}
|
@ -1,153 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"target": "ESNext",
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "Bundler",
|
||||
"allowJs": true,
|
||||
"resolveJsonModule": true,
|
||||
"jsx": "preserve",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"jsxFactory": "h",
|
||||
"jsxFragmentFactory": "Fragment",
|
||||
"paths": {
|
||||
"#imports": [
|
||||
"./types/nitro-imports"
|
||||
],
|
||||
"~/*": [
|
||||
"../*"
|
||||
],
|
||||
"@/*": [
|
||||
"../*"
|
||||
],
|
||||
"~~/*": [
|
||||
"../*"
|
||||
],
|
||||
"@@/*": [
|
||||
"../*"
|
||||
],
|
||||
"nitropack/types": [
|
||||
"../node_modules/nitropack/types"
|
||||
],
|
||||
"nitropack/runtime": [
|
||||
"../node_modules/nitropack/runtime"
|
||||
],
|
||||
"nitropack": [
|
||||
"../node_modules/nitropack"
|
||||
],
|
||||
"defu": [
|
||||
"../node_modules/defu"
|
||||
],
|
||||
"h3": [
|
||||
"../node_modules/h3"
|
||||
],
|
||||
"consola": [
|
||||
"../node_modules/consola"
|
||||
],
|
||||
"ofetch": [
|
||||
"../node_modules/ofetch"
|
||||
],
|
||||
"@unhead/vue": [
|
||||
"../node_modules/@unhead/vue"
|
||||
],
|
||||
"@nuxt/devtools": [
|
||||
"../node_modules/@nuxt/devtools"
|
||||
],
|
||||
"@vue/runtime-core": [
|
||||
"../node_modules/@vue/runtime-core"
|
||||
],
|
||||
"@vue/compiler-sfc": [
|
||||
"../node_modules/@vue/compiler-sfc"
|
||||
],
|
||||
"vue-router": [
|
||||
"../node_modules/vue-router"
|
||||
],
|
||||
"vue-router/auto-routes": [
|
||||
"../node_modules/vue-router/vue-router-auto-routes"
|
||||
],
|
||||
"unplugin-vue-router/client": [
|
||||
"../node_modules/unplugin-vue-router/client"
|
||||
],
|
||||
"@nuxt/schema": [
|
||||
"../node_modules/@nuxt/schema"
|
||||
],
|
||||
"nuxt": [
|
||||
"../node_modules/nuxt"
|
||||
],
|
||||
"vite/client": [
|
||||
"../node_modules/vite/client"
|
||||
],
|
||||
"#shared": [
|
||||
"../shared"
|
||||
],
|
||||
"assets": [
|
||||
"../assets"
|
||||
],
|
||||
"assets/*": [
|
||||
"../assets/*"
|
||||
],
|
||||
"public": [
|
||||
"../public"
|
||||
],
|
||||
"public/*": [
|
||||
"../public/*"
|
||||
],
|
||||
"#build": [
|
||||
"./"
|
||||
],
|
||||
"#build/*": [
|
||||
"./*"
|
||||
],
|
||||
"#internal/nuxt/paths": [
|
||||
"../node_modules/nuxt/dist/core/runtime/nitro/utils/paths"
|
||||
],
|
||||
"#image": [
|
||||
"../node_modules/@nuxt/image/dist/runtime"
|
||||
],
|
||||
"#image/*": [
|
||||
"../node_modules/@nuxt/image/dist/runtime/*"
|
||||
],
|
||||
"pinia": [
|
||||
"../node_modules/pinia/dist/pinia"
|
||||
],
|
||||
"#unhead/composables": [
|
||||
"../node_modules/nuxt/dist/head/runtime/composables/v3"
|
||||
],
|
||||
"#nuxt-icon-server-bundle": [
|
||||
"./nuxt-icon-server-bundle"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"webworker",
|
||||
"dom.iterable"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"./types/nitro-nuxt.d.ts",
|
||||
"../node_modules/@nuxt/eslint/runtime/server",
|
||||
"../node_modules/@nuxt/icon/runtime/server",
|
||||
"../node_modules/@nuxt/image/runtime/server",
|
||||
"../node_modules/@pinia/nuxt/runtime/server",
|
||||
"../node_modules/@nuxtjs/tailwindcss/runtime/server",
|
||||
"../node_modules/@nuxt/devtools/runtime/server",
|
||||
"../node_modules/@nuxt/telemetry/runtime/server",
|
||||
"./types/nitro.d.ts",
|
||||
"../**/*",
|
||||
"../server/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"../node_modules",
|
||||
"../node_modules/nuxt/node_modules",
|
||||
"../node_modules/@nuxt/eslint/node_modules",
|
||||
"../node_modules/@nuxt/icon/node_modules",
|
||||
"../node_modules/@nuxt/image/node_modules",
|
||||
"../node_modules/@pinia/nuxt/node_modules",
|
||||
"../node_modules/@nuxtjs/tailwindcss/node_modules",
|
||||
"../node_modules/@nuxt/devtools/node_modules",
|
||||
"../node_modules/@nuxt/telemetry/node_modules",
|
||||
"../dist"
|
||||
]
|
||||
}
|
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
@ -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> { }
|
||||
}
|
23
.nuxt/types/build.d.ts
vendored
@ -1,23 +0,0 @@
|
||||
declare module "#build/app-component.mjs";
|
||||
declare module "#build/nitro.client.mjs";
|
||||
declare module "#build/plugins.client.mjs";
|
||||
declare module "#build/css.mjs";
|
||||
declare module "#build/fetch.mjs";
|
||||
declare module "#build/error-component.mjs";
|
||||
declare module "#build/global-polyfills.mjs";
|
||||
declare module "#build/layouts.mjs";
|
||||
declare module "#build/middleware.mjs";
|
||||
declare module "#build/nuxt.config.mjs";
|
||||
declare module "#build/paths.mjs";
|
||||
declare module "#build/root-component.mjs";
|
||||
declare module "#build/plugins.server.mjs";
|
||||
declare module "#build/test-component-wrapper.mjs";
|
||||
declare module "#build/image-options.mjs";
|
||||
declare module "#build/routes.mjs";
|
||||
declare module "#build/pages.mjs";
|
||||
declare module "#build/router.options.mjs";
|
||||
declare module "#build/unhead-options.mjs";
|
||||
declare module "#build/unhead.config.mjs";
|
||||
declare module "#build/components.plugin.mjs";
|
||||
declare module "#build/component-names.mjs";
|
||||
declare module "#build/components.islands.mjs";
|
1
.nuxt/types/builder-env.d.ts
vendored
@ -1 +0,0 @@
|
||||
import "vite/client";
|
364
.nuxt/types/imports.d.ts
vendored
@ -1,364 +0,0 @@
|
||||
// Generated by auto imports
|
||||
export {}
|
||||
declare global {
|
||||
const abortNavigation: typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']
|
||||
const acceptHMRUpdate: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']
|
||||
const addRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']
|
||||
const callOnce: typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']
|
||||
const cancelIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']
|
||||
const clearError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']
|
||||
const clearNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']
|
||||
const clearNuxtState: typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']
|
||||
const computed: typeof import('vue')['computed']
|
||||
const createError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']
|
||||
const customRef: typeof import('vue')['customRef']
|
||||
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']
|
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||
const defineComponent: typeof import('vue')['defineComponent']
|
||||
const defineNuxtComponent: typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']
|
||||
const defineNuxtLink: typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']
|
||||
const defineNuxtPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']
|
||||
const defineNuxtRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']
|
||||
const definePageMeta: typeof import('../../node_modules/nuxt/dist/pages/runtime/composables')['definePageMeta']
|
||||
const definePayloadPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']
|
||||
const definePayloadReducer: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']
|
||||
const definePayloadReviver: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']
|
||||
const defineStore: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']
|
||||
const effect: typeof import('vue')['effect']
|
||||
const effectScope: typeof import('vue')['effectScope']
|
||||
const getAppManifest: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']
|
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||
const getRouteRules: typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']
|
||||
const h: typeof import('vue')['h']
|
||||
const hasInjectionContext: typeof import('vue')['hasInjectionContext']
|
||||
const inject: typeof import('vue')['inject']
|
||||
const injectHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']
|
||||
const isNuxtError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']
|
||||
const isPrerendered: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']
|
||||
const isProxy: typeof import('vue')['isProxy']
|
||||
const isReactive: typeof import('vue')['isReactive']
|
||||
const isReadonly: typeof import('vue')['isReadonly']
|
||||
const isRef: typeof import('vue')['isRef']
|
||||
const isShallow: typeof import('vue')['isShallow']
|
||||
const isVue2: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']
|
||||
const isVue3: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']
|
||||
const loadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']
|
||||
const markRaw: typeof import('vue')['markRaw']
|
||||
const mergeModels: typeof import('vue')['mergeModels']
|
||||
const navigateTo: typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']
|
||||
const nextTick: typeof import('vue')['nextTick']
|
||||
const onActivated: typeof import('vue')['onActivated']
|
||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||
const onBeforeRouteLeave: typeof import('../../node_modules/vue-router')['onBeforeRouteLeave']
|
||||
const onBeforeRouteUpdate: typeof import('../../node_modules/vue-router')['onBeforeRouteUpdate']
|
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||
const onMounted: typeof import('vue')['onMounted']
|
||||
const onNuxtReady: typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']
|
||||
const onPrehydrate: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']
|
||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||
const onUpdated: typeof import('vue')['onUpdated']
|
||||
const prefetchComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']
|
||||
const preloadComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadComponents']
|
||||
const preloadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload')['preloadPayload']
|
||||
const preloadRouteComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']
|
||||
const prerenderRoutes: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']
|
||||
const provide: typeof import('vue')['provide']
|
||||
const proxyRefs: typeof import('vue')['proxyRefs']
|
||||
const reactive: typeof import('vue')['reactive']
|
||||
const readonly: typeof import('vue')['readonly']
|
||||
const ref: typeof import('vue')['ref']
|
||||
const refreshCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']
|
||||
const refreshNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']
|
||||
const reloadNuxtApp: typeof import('../../node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']
|
||||
const requestIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']
|
||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||
const setInterval: typeof import('../../node_modules/nuxt/dist/app/compat/interval')['setInterval']
|
||||
const setPageLayout: typeof import('../../node_modules/nuxt/dist/app/composables/router')['setPageLayout']
|
||||
const setResponseStatus: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const showError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']
|
||||
const storeToRefs: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['storeToRefs']
|
||||
const toRaw: typeof import('vue')['toRaw']
|
||||
const toRef: typeof import('vue')['toRef']
|
||||
const toRefs: typeof import('vue')['toRefs']
|
||||
const toValue: typeof import('vue')['toValue']
|
||||
const triggerRef: typeof import('vue')['triggerRef']
|
||||
const tryUseNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']
|
||||
const unref: typeof import('vue')['unref']
|
||||
const updateAppConfig: typeof import('../../node_modules/nuxt/dist/app/config')['updateAppConfig']
|
||||
const useAppConfig: typeof import('../../node_modules/nuxt/dist/app/config')['useAppConfig']
|
||||
const useAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']
|
||||
const useAttrs: typeof import('vue')['useAttrs']
|
||||
const useCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']
|
||||
const useCssModule: typeof import('vue')['useCssModule']
|
||||
const useCssVars: typeof import('vue')['useCssVars']
|
||||
const useError: typeof import('../../node_modules/nuxt/dist/app/composables/error')['useError']
|
||||
const useFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useFetch']
|
||||
const useHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHead']
|
||||
const useHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHeadSafe']
|
||||
const useHydration: typeof import('../../node_modules/nuxt/dist/app/composables/hydrate')['useHydration']
|
||||
const useId: typeof import('vue')['useId']
|
||||
const useImage: typeof import('../../node_modules/@nuxt/image/dist/runtime/composables')['useImage']
|
||||
const useLazyAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']
|
||||
const useLazyFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']
|
||||
const useLink: typeof import('../../node_modules/vue-router')['useLink']
|
||||
const useLoadingIndicator: typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']
|
||||
const useModel: typeof import('vue')['useModel']
|
||||
const useNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']
|
||||
const useNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']
|
||||
const usePinia: typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['usePinia']
|
||||
const usePreviewMode: typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']
|
||||
const useRequestEvent: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']
|
||||
const useRequestFetch: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']
|
||||
const useRequestHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']
|
||||
const useRequestHeaders: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']
|
||||
const useRequestURL: typeof import('../../node_modules/nuxt/dist/app/composables/url')['useRequestURL']
|
||||
const useResponseHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']
|
||||
const useRoute: typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRoute']
|
||||
const useRouteAnnouncer: typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']
|
||||
const useRouter: typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRouter']
|
||||
const useRuntimeConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']
|
||||
const useRuntimeHook: typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']
|
||||
const useScript: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScript']
|
||||
const useScriptClarity: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']
|
||||
const useScriptCloudflareWebAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']
|
||||
const useScriptCrisp: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']
|
||||
const useScriptEventPage: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']
|
||||
const useScriptFathomAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']
|
||||
const useScriptGoogleAdsense: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']
|
||||
const useScriptGoogleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']
|
||||
const useScriptGoogleMaps: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']
|
||||
const useScriptGoogleTagManager: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']
|
||||
const useScriptHotjar: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']
|
||||
const useScriptIntercom: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']
|
||||
const useScriptLemonSqueezy: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']
|
||||
const useScriptMatomoAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']
|
||||
const useScriptMetaPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']
|
||||
const useScriptNpm: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']
|
||||
const useScriptPlausibleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']
|
||||
const useScriptRybbitAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']
|
||||
const useScriptSegment: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']
|
||||
const useScriptSnapchatPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']
|
||||
const useScriptStripe: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']
|
||||
const useScriptTriggerConsent: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']
|
||||
const useScriptTriggerElement: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']
|
||||
const useScriptUmamiAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']
|
||||
const useScriptVimeoPlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']
|
||||
const useScriptXPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']
|
||||
const useScriptYouTubePlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']
|
||||
const useSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useSeoMeta']
|
||||
const useServerHead: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHead']
|
||||
const useServerHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']
|
||||
const useServerSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']
|
||||
const useShadowRoot: typeof import('vue')['useShadowRoot']
|
||||
const useSlots: typeof import('vue')['useSlots']
|
||||
const useState: typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']
|
||||
const useTemplateRef: typeof import('vue')['useTemplateRef']
|
||||
const useTransitionState: typeof import('vue')['useTransitionState']
|
||||
const watch: typeof import('vue')['watch']
|
||||
const watchEffect: typeof import('vue')['watchEffect']
|
||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||
const withCtx: typeof import('vue')['withCtx']
|
||||
const withDirectives: typeof import('vue')['withDirectives']
|
||||
const withKeys: typeof import('vue')['withKeys']
|
||||
const withMemo: typeof import('vue')['withMemo']
|
||||
const withModifiers: typeof import('vue')['withModifiers']
|
||||
const withScopeId: typeof import('vue')['withScopeId']
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
||||
import('vue')
|
||||
}
|
||||
// for vue template auto import
|
||||
import { UnwrapRef } from 'vue'
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
readonly abortNavigation: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']>
|
||||
readonly acceptHMRUpdate: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']>
|
||||
readonly addRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']>
|
||||
readonly callOnce: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']>
|
||||
readonly cancelIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']>
|
||||
readonly clearError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']>
|
||||
readonly clearNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']>
|
||||
readonly clearNuxtState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']>
|
||||
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||
readonly createError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']>
|
||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||
readonly defineAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']>
|
||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||
readonly defineNuxtComponent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']>
|
||||
readonly defineNuxtLink: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']>
|
||||
readonly defineNuxtPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']>
|
||||
readonly defineNuxtRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']>
|
||||
readonly definePageMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/pages/runtime/composables')['definePageMeta']>
|
||||
readonly definePayloadPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']>
|
||||
readonly definePayloadReducer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']>
|
||||
readonly definePayloadReviver: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']>
|
||||
readonly defineStore: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']>
|
||||
readonly effect: UnwrapRef<typeof import('vue')['effect']>
|
||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||
readonly getAppManifest: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']>
|
||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||
readonly getRouteRules: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']>
|
||||
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||
readonly hasInjectionContext: UnwrapRef<typeof import('vue')['hasInjectionContext']>
|
||||
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||
readonly injectHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']>
|
||||
readonly isNuxtError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']>
|
||||
readonly isPrerendered: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']>
|
||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||
readonly isShallow: UnwrapRef<typeof import('vue')['isShallow']>
|
||||
readonly isVue2: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']>
|
||||
readonly isVue3: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']>
|
||||
readonly loadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']>
|
||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||
readonly mergeModels: UnwrapRef<typeof import('vue')['mergeModels']>
|
||||
readonly navigateTo: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']>
|
||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
|
||||
readonly onBeforeRouteLeave: UnwrapRef<typeof import('../../node_modules/vue-router')['onBeforeRouteLeave']>
|
||||
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('../../node_modules/vue-router')['onBeforeRouteUpdate']>
|
||||
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
|
||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
|
||||
readonly onNuxtReady: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']>
|
||||
readonly onPrehydrate: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']>
|
||||
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
|
||||
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
|
||||
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
|
||||
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
|
||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||
readonly prefetchComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']>
|
||||
readonly preloadComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadComponents']>
|
||||
readonly preloadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['preloadPayload']>
|
||||
readonly preloadRouteComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']>
|
||||
readonly prerenderRoutes: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']>
|
||||
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||
readonly proxyRefs: UnwrapRef<typeof import('vue')['proxyRefs']>
|
||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
|
||||
readonly ref: UnwrapRef<typeof import('vue')['ref']>
|
||||
readonly refreshCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']>
|
||||
readonly refreshNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']>
|
||||
readonly reloadNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']>
|
||||
readonly requestIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']>
|
||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||
readonly setInterval: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/interval')['setInterval']>
|
||||
readonly setPageLayout: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['setPageLayout']>
|
||||
readonly setResponseStatus: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']>
|
||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||
readonly showError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']>
|
||||
readonly storeToRefs: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['storeToRefs']>
|
||||
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
|
||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||
readonly tryUseNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']>
|
||||
readonly unref: UnwrapRef<typeof import('vue')['unref']>
|
||||
readonly updateAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['updateAppConfig']>
|
||||
readonly useAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['useAppConfig']>
|
||||
readonly useAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']>
|
||||
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
|
||||
readonly useCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']>
|
||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||
readonly useError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['useError']>
|
||||
readonly useFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useFetch']>
|
||||
readonly useHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHead']>
|
||||
readonly useHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHeadSafe']>
|
||||
readonly useHydration: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/hydrate')['useHydration']>
|
||||
readonly useId: UnwrapRef<typeof import('vue')['useId']>
|
||||
readonly useImage: UnwrapRef<typeof import('../../node_modules/@nuxt/image/dist/runtime/composables')['useImage']>
|
||||
readonly useLazyAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']>
|
||||
readonly useLazyFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']>
|
||||
readonly useLink: UnwrapRef<typeof import('../../node_modules/vue-router')['useLink']>
|
||||
readonly useLoadingIndicator: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']>
|
||||
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
|
||||
readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
|
||||
readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
|
||||
readonly usePinia: UnwrapRef<typeof import('../../node_modules/@pinia/nuxt/dist/runtime/composables')['usePinia']>
|
||||
readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
|
||||
readonly useRequestEvent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']>
|
||||
readonly useRequestFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']>
|
||||
readonly useRequestHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']>
|
||||
readonly useRequestHeaders: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']>
|
||||
readonly useRequestURL: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/url')['useRequestURL']>
|
||||
readonly useResponseHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']>
|
||||
readonly useRoute: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRoute']>
|
||||
readonly useRouteAnnouncer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']>
|
||||
readonly useRouter: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRouter']>
|
||||
readonly useRuntimeConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']>
|
||||
readonly useRuntimeHook: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']>
|
||||
readonly useScript: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScript']>
|
||||
readonly useScriptClarity: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']>
|
||||
readonly useScriptCloudflareWebAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']>
|
||||
readonly useScriptCrisp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']>
|
||||
readonly useScriptEventPage: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']>
|
||||
readonly useScriptFathomAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']>
|
||||
readonly useScriptGoogleAdsense: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']>
|
||||
readonly useScriptGoogleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']>
|
||||
readonly useScriptGoogleMaps: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']>
|
||||
readonly useScriptGoogleTagManager: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']>
|
||||
readonly useScriptHotjar: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']>
|
||||
readonly useScriptIntercom: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']>
|
||||
readonly useScriptLemonSqueezy: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']>
|
||||
readonly useScriptMatomoAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']>
|
||||
readonly useScriptMetaPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']>
|
||||
readonly useScriptNpm: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']>
|
||||
readonly useScriptPlausibleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']>
|
||||
readonly useScriptRybbitAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']>
|
||||
readonly useScriptSegment: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']>
|
||||
readonly useScriptSnapchatPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']>
|
||||
readonly useScriptStripe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']>
|
||||
readonly useScriptTriggerConsent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']>
|
||||
readonly useScriptTriggerElement: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']>
|
||||
readonly useScriptUmamiAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']>
|
||||
readonly useScriptVimeoPlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']>
|
||||
readonly useScriptXPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']>
|
||||
readonly useScriptYouTubePlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']>
|
||||
readonly useSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useSeoMeta']>
|
||||
readonly useServerHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHead']>
|
||||
readonly useServerHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']>
|
||||
readonly useServerSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']>
|
||||
readonly useShadowRoot: UnwrapRef<typeof import('vue')['useShadowRoot']>
|
||||
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||
readonly useState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']>
|
||||
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
|
||||
readonly useTransitionState: UnwrapRef<typeof import('vue')['useTransitionState']>
|
||||
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
|
||||
readonly withCtx: UnwrapRef<typeof import('vue')['withCtx']>
|
||||
readonly withDirectives: UnwrapRef<typeof import('vue')['withDirectives']>
|
||||
readonly withKeys: UnwrapRef<typeof import('vue')['withKeys']>
|
||||
readonly withMemo: UnwrapRef<typeof import('vue')['withMemo']>
|
||||
readonly withModifiers: UnwrapRef<typeof import('vue')['withModifiers']>
|
||||
readonly withScopeId: UnwrapRef<typeof import('vue')['withScopeId']>
|
||||
}
|
||||
}
|
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
@ -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
@ -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 {}
|
141
.nuxt/types/nitro-imports.d.ts
vendored
@ -1,141 +0,0 @@
|
||||
declare global {
|
||||
const __buildAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['buildAssetsURL']
|
||||
const __publicAssetsURL: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/paths')['publicAssetsURL']
|
||||
const appendCorsHeaders: typeof import('../../node_modules/h3')['appendCorsHeaders']
|
||||
const appendCorsPreflightHeaders: typeof import('../../node_modules/h3')['appendCorsPreflightHeaders']
|
||||
const appendHeader: typeof import('../../node_modules/h3')['appendHeader']
|
||||
const appendHeaders: typeof import('../../node_modules/h3')['appendHeaders']
|
||||
const appendResponseHeader: typeof import('../../node_modules/h3')['appendResponseHeader']
|
||||
const appendResponseHeaders: typeof import('../../node_modules/h3')['appendResponseHeaders']
|
||||
const assertMethod: typeof import('../../node_modules/h3')['assertMethod']
|
||||
const cachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedEventHandler']
|
||||
const cachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['cachedFunction']
|
||||
const callNodeListener: typeof import('../../node_modules/h3')['callNodeListener']
|
||||
const clearResponseHeaders: typeof import('../../node_modules/h3')['clearResponseHeaders']
|
||||
const clearSession: typeof import('../../node_modules/h3')['clearSession']
|
||||
const createApp: typeof import('../../node_modules/h3')['createApp']
|
||||
const createAppEventHandler: typeof import('../../node_modules/h3')['createAppEventHandler']
|
||||
const createError: typeof import('../../node_modules/h3')['createError']
|
||||
const createEvent: typeof import('../../node_modules/h3')['createEvent']
|
||||
const createEventStream: typeof import('../../node_modules/h3')['createEventStream']
|
||||
const createRouter: typeof import('../../node_modules/h3')['createRouter']
|
||||
const defaultContentType: typeof import('../../node_modules/h3')['defaultContentType']
|
||||
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/utils/config')['defineAppConfig']
|
||||
const defineCachedEventHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedEventHandler']
|
||||
const defineCachedFunction: typeof import('../../node_modules/nitropack/dist/runtime/internal/cache')['defineCachedFunction']
|
||||
const defineEventHandler: typeof import('../../node_modules/h3')['defineEventHandler']
|
||||
const defineLazyEventHandler: typeof import('../../node_modules/h3')['defineLazyEventHandler']
|
||||
const defineNitroErrorHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/error/utils')['defineNitroErrorHandler']
|
||||
const defineNitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['defineNitroPlugin']
|
||||
const defineNodeListener: typeof import('../../node_modules/h3')['defineNodeListener']
|
||||
const defineNodeMiddleware: typeof import('../../node_modules/h3')['defineNodeMiddleware']
|
||||
const defineRenderHandler: typeof import('../../node_modules/nitropack/dist/runtime/internal/renderer')['defineRenderHandler']
|
||||
const defineRequestMiddleware: typeof import('../../node_modules/h3')['defineRequestMiddleware']
|
||||
const defineResponseMiddleware: typeof import('../../node_modules/h3')['defineResponseMiddleware']
|
||||
const defineRouteMeta: typeof import('../../node_modules/nitropack/dist/runtime/internal/meta')['defineRouteMeta']
|
||||
const defineTask: typeof import('../../node_modules/nitropack/dist/runtime/internal/task')['defineTask']
|
||||
const defineWebSocket: typeof import('../../node_modules/h3')['defineWebSocket']
|
||||
const defineWebSocketHandler: typeof import('../../node_modules/h3')['defineWebSocketHandler']
|
||||
const deleteCookie: typeof import('../../node_modules/h3')['deleteCookie']
|
||||
const dynamicEventHandler: typeof import('../../node_modules/h3')['dynamicEventHandler']
|
||||
const eventHandler: typeof import('../../node_modules/h3')['eventHandler']
|
||||
const fetchWithEvent: typeof import('../../node_modules/h3')['fetchWithEvent']
|
||||
const fromNodeMiddleware: typeof import('../../node_modules/h3')['fromNodeMiddleware']
|
||||
const fromPlainHandler: typeof import('../../node_modules/h3')['fromPlainHandler']
|
||||
const fromWebHandler: typeof import('../../node_modules/h3')['fromWebHandler']
|
||||
const getCookie: typeof import('../../node_modules/h3')['getCookie']
|
||||
const getHeader: typeof import('../../node_modules/h3')['getHeader']
|
||||
const getHeaders: typeof import('../../node_modules/h3')['getHeaders']
|
||||
const getMethod: typeof import('../../node_modules/h3')['getMethod']
|
||||
const getProxyRequestHeaders: typeof import('../../node_modules/h3')['getProxyRequestHeaders']
|
||||
const getQuery: typeof import('../../node_modules/h3')['getQuery']
|
||||
const getRequestFingerprint: typeof import('../../node_modules/h3')['getRequestFingerprint']
|
||||
const getRequestHeader: typeof import('../../node_modules/h3')['getRequestHeader']
|
||||
const getRequestHeaders: typeof import('../../node_modules/h3')['getRequestHeaders']
|
||||
const getRequestHost: typeof import('../../node_modules/h3')['getRequestHost']
|
||||
const getRequestIP: typeof import('../../node_modules/h3')['getRequestIP']
|
||||
const getRequestPath: typeof import('../../node_modules/h3')['getRequestPath']
|
||||
const getRequestProtocol: typeof import('../../node_modules/h3')['getRequestProtocol']
|
||||
const getRequestURL: typeof import('../../node_modules/h3')['getRequestURL']
|
||||
const getRequestWebStream: typeof import('../../node_modules/h3')['getRequestWebStream']
|
||||
const getResponseHeader: typeof import('../../node_modules/h3')['getResponseHeader']
|
||||
const getResponseHeaders: typeof import('../../node_modules/h3')['getResponseHeaders']
|
||||
const getResponseStatus: typeof import('../../node_modules/h3')['getResponseStatus']
|
||||
const getResponseStatusText: typeof import('../../node_modules/h3')['getResponseStatusText']
|
||||
const getRouteRules: typeof import('../../node_modules/nitropack/dist/runtime/internal/route-rules')['getRouteRules']
|
||||
const getRouterParam: typeof import('../../node_modules/h3')['getRouterParam']
|
||||
const getRouterParams: typeof import('../../node_modules/h3')['getRouterParams']
|
||||
const getSession: typeof import('../../node_modules/h3')['getSession']
|
||||
const getValidatedQuery: typeof import('../../node_modules/h3')['getValidatedQuery']
|
||||
const getValidatedRouterParams: typeof import('../../node_modules/h3')['getValidatedRouterParams']
|
||||
const handleCacheHeaders: typeof import('../../node_modules/h3')['handleCacheHeaders']
|
||||
const handleCors: typeof import('../../node_modules/h3')['handleCors']
|
||||
const isCorsOriginAllowed: typeof import('../../node_modules/h3')['isCorsOriginAllowed']
|
||||
const isError: typeof import('../../node_modules/h3')['isError']
|
||||
const isEvent: typeof import('../../node_modules/h3')['isEvent']
|
||||
const isEventHandler: typeof import('../../node_modules/h3')['isEventHandler']
|
||||
const isMethod: typeof import('../../node_modules/h3')['isMethod']
|
||||
const isPreflightRequest: typeof import('../../node_modules/h3')['isPreflightRequest']
|
||||
const isStream: typeof import('../../node_modules/h3')['isStream']
|
||||
const isWebResponse: typeof import('../../node_modules/h3')['isWebResponse']
|
||||
const lazyEventHandler: typeof import('../../node_modules/h3')['lazyEventHandler']
|
||||
const nitroPlugin: typeof import('../../node_modules/nitropack/dist/runtime/internal/plugin')['nitroPlugin']
|
||||
const parseCookies: typeof import('../../node_modules/h3')['parseCookies']
|
||||
const promisifyNodeListener: typeof import('../../node_modules/h3')['promisifyNodeListener']
|
||||
const proxyRequest: typeof import('../../node_modules/h3')['proxyRequest']
|
||||
const readBody: typeof import('../../node_modules/h3')['readBody']
|
||||
const readFormData: typeof import('../../node_modules/h3')['readFormData']
|
||||
const readMultipartFormData: typeof import('../../node_modules/h3')['readMultipartFormData']
|
||||
const readRawBody: typeof import('../../node_modules/h3')['readRawBody']
|
||||
const readValidatedBody: typeof import('../../node_modules/h3')['readValidatedBody']
|
||||
const removeResponseHeader: typeof import('../../node_modules/h3')['removeResponseHeader']
|
||||
const runTask: typeof import('../../node_modules/nitropack/dist/runtime/internal/task')['runTask']
|
||||
const sanitizeStatusCode: typeof import('../../node_modules/h3')['sanitizeStatusCode']
|
||||
const sanitizeStatusMessage: typeof import('../../node_modules/h3')['sanitizeStatusMessage']
|
||||
const sealSession: typeof import('../../node_modules/h3')['sealSession']
|
||||
const send: typeof import('../../node_modules/h3')['send']
|
||||
const sendError: typeof import('../../node_modules/h3')['sendError']
|
||||
const sendIterable: typeof import('../../node_modules/h3')['sendIterable']
|
||||
const sendNoContent: typeof import('../../node_modules/h3')['sendNoContent']
|
||||
const sendProxy: typeof import('../../node_modules/h3')['sendProxy']
|
||||
const sendRedirect: typeof import('../../node_modules/h3')['sendRedirect']
|
||||
const sendStream: typeof import('../../node_modules/h3')['sendStream']
|
||||
const sendWebResponse: typeof import('../../node_modules/h3')['sendWebResponse']
|
||||
const serveStatic: typeof import('../../node_modules/h3')['serveStatic']
|
||||
const setCookie: typeof import('../../node_modules/h3')['setCookie']
|
||||
const setHeader: typeof import('../../node_modules/h3')['setHeader']
|
||||
const setHeaders: typeof import('../../node_modules/h3')['setHeaders']
|
||||
const setResponseHeader: typeof import('../../node_modules/h3')['setResponseHeader']
|
||||
const setResponseHeaders: typeof import('../../node_modules/h3')['setResponseHeaders']
|
||||
const setResponseStatus: typeof import('../../node_modules/h3')['setResponseStatus']
|
||||
const splitCookiesString: typeof import('../../node_modules/h3')['splitCookiesString']
|
||||
const toEventHandler: typeof import('../../node_modules/h3')['toEventHandler']
|
||||
const toNodeListener: typeof import('../../node_modules/h3')['toNodeListener']
|
||||
const toPlainHandler: typeof import('../../node_modules/h3')['toPlainHandler']
|
||||
const toWebHandler: typeof import('../../node_modules/h3')['toWebHandler']
|
||||
const toWebRequest: typeof import('../../node_modules/h3')['toWebRequest']
|
||||
const unsealSession: typeof import('../../node_modules/h3')['unsealSession']
|
||||
const updateSession: typeof import('../../node_modules/h3')['updateSession']
|
||||
const useAppConfig: typeof import('../../node_modules/nitropack/dist/runtime/internal/config')['useAppConfig']
|
||||
const useBase: typeof import('../../node_modules/h3')['useBase']
|
||||
const useEvent: typeof import('../../node_modules/nitropack/dist/runtime/internal/context')['useEvent']
|
||||
const useNitroApp: typeof import('../../node_modules/nitropack/dist/runtime/internal/app')['useNitroApp']
|
||||
const useRuntimeConfig: typeof import('../../node_modules/nitropack/dist/runtime/internal/config')['useRuntimeConfig']
|
||||
const useSession: typeof import('../../node_modules/h3')['useSession']
|
||||
const useStorage: typeof import('../../node_modules/nitropack/dist/runtime/internal/storage')['useStorage']
|
||||
const writeEarlyHints: typeof import('../../node_modules/h3')['writeEarlyHints']
|
||||
}
|
||||
export { useNitroApp } from 'nitropack/runtime/internal/app';
|
||||
export { useRuntimeConfig, useAppConfig } from 'nitropack/runtime/internal/config';
|
||||
export { defineNitroPlugin, nitroPlugin } from 'nitropack/runtime/internal/plugin';
|
||||
export { defineCachedFunction, defineCachedEventHandler, cachedFunction, cachedEventHandler } from 'nitropack/runtime/internal/cache';
|
||||
export { useStorage } from 'nitropack/runtime/internal/storage';
|
||||
export { defineRenderHandler } from 'nitropack/runtime/internal/renderer';
|
||||
export { defineRouteMeta } from 'nitropack/runtime/internal/meta';
|
||||
export { getRouteRules } from 'nitropack/runtime/internal/route-rules';
|
||||
export { useEvent } from 'nitropack/runtime/internal/context';
|
||||
export { defineTask, runTask } from 'nitropack/runtime/internal/task';
|
||||
export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils';
|
||||
export { appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3';
|
||||
export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/paths';
|
||||
export { defineAppConfig } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/config';
|
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
@ -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>
|
||||
}
|
||||
}
|
20
.nuxt/types/nitro-routes.d.ts
vendored
@ -1,20 +0,0 @@
|
||||
// Generated by nitro
|
||||
import type { Serialize, Simplify } from "nitropack/types";
|
||||
declare module "nitropack/types" {
|
||||
type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T
|
||||
interface InternalApi {
|
||||
'/__nuxt_error': {
|
||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/nuxt/dist/core/runtime/nitro/handlers/renderer').default>>>>
|
||||
}
|
||||
'/api/_nuxt_icon/:collection': {
|
||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/icon/dist/runtime/server/api').default>>>>
|
||||
}
|
||||
'/__nuxt_island/**': {
|
||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../server/#internal/nuxt/island-renderer').default>>>>
|
||||
}
|
||||
'/_ipx/**': {
|
||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/@nuxt/image/dist/runtime/ipx').default>>>>
|
||||
}
|
||||
}
|
||||
}
|
||||
export {}
|
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" />
|
33
.nuxt/types/plugins.d.ts
vendored
@ -1,33 +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/payload.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/chunk-reload.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/prefetch.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/@nuxt/icon/dist/runtime/plugin.js")>
|
||||
|
||||
declare module '#app' {
|
||||
interface NuxtApp extends NuxtAppInjections { }
|
||||
|
||||
interface NuxtAppLiterals {
|
||||
pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon'
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties extends NuxtAppInjections { }
|
||||
}
|
||||
|
||||
export { }
|
168
.nuxt/types/schema.d.ts
vendored
@ -1,168 +0,0 @@
|
||||
import { NuxtModule, RuntimeConfig } from '@nuxt/schema'
|
||||
declare module '@nuxt/schema' {
|
||||
interface NuxtOptions {
|
||||
/**
|
||||
* Configuration for `@nuxt/eslint`
|
||||
*/
|
||||
["eslint"]: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/icon`
|
||||
*/
|
||||
["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/image`
|
||||
*/
|
||||
["image"]: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@pinia/nuxt`
|
||||
*/
|
||||
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
*/
|
||||
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
*/
|
||||
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
*/
|
||||
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
}
|
||||
interface NuxtConfig {
|
||||
/**
|
||||
* Configuration for `@nuxt/eslint`
|
||||
*/
|
||||
["eslint"]?: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/icon`
|
||||
*/
|
||||
["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/image`
|
||||
*/
|
||||
["image"]?: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@pinia/nuxt`
|
||||
*/
|
||||
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
*/
|
||||
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
*/
|
||||
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
*/
|
||||
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/eslint", Exclude<NuxtConfig["eslint"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/image", Exclude<NuxtConfig["image"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
|
||||
}
|
||||
}
|
||||
declare module 'nuxt/schema' {
|
||||
interface NuxtOptions {
|
||||
/**
|
||||
* Configuration for `@nuxt/eslint`
|
||||
* @see https://www.npmjs.com/package/@nuxt/eslint
|
||||
*/
|
||||
["eslint"]: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/icon`
|
||||
* @see https://www.npmjs.com/package/@nuxt/icon
|
||||
*/
|
||||
["icon"]: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/image`
|
||||
* @see https://www.npmjs.com/package/@nuxt/image
|
||||
*/
|
||||
["image"]: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@pinia/nuxt`
|
||||
* @see https://www.npmjs.com/package/@pinia/nuxt
|
||||
*/
|
||||
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
|
||||
*/
|
||||
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
* @see https://www.npmjs.com/package/@nuxt/devtools
|
||||
*/
|
||||
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
* @see https://www.npmjs.com/package/@nuxt/telemetry
|
||||
*/
|
||||
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, any>
|
||||
}
|
||||
interface NuxtConfig {
|
||||
/**
|
||||
* Configuration for `@nuxt/eslint`
|
||||
* @see https://www.npmjs.com/package/@nuxt/eslint
|
||||
*/
|
||||
["eslint"]?: typeof import("@nuxt/eslint").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/icon`
|
||||
* @see https://www.npmjs.com/package/@nuxt/icon
|
||||
*/
|
||||
["icon"]?: typeof import("@nuxt/icon").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/image`
|
||||
* @see https://www.npmjs.com/package/@nuxt/image
|
||||
*/
|
||||
["image"]?: typeof import("@nuxt/image").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@pinia/nuxt`
|
||||
* @see https://www.npmjs.com/package/@pinia/nuxt
|
||||
*/
|
||||
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
|
||||
*/
|
||||
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
* @see https://www.npmjs.com/package/@nuxt/devtools
|
||||
*/
|
||||
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
* @see https://www.npmjs.com/package/@nuxt/telemetry
|
||||
*/
|
||||
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
|
||||
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxt/eslint", Exclude<NuxtConfig["eslint"], boolean>] | ["@nuxt/icon", Exclude<NuxtConfig["icon"], boolean>] | ["@nuxt/image", Exclude<NuxtConfig["image"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
|
||||
}
|
||||
interface RuntimeConfig {
|
||||
app: {
|
||||
buildId: string,
|
||||
|
||||
baseURL: string,
|
||||
|
||||
buildAssetsDir: string,
|
||||
|
||||
cdnURL: string,
|
||||
},
|
||||
|
||||
nitro: {
|
||||
envPrefix: string,
|
||||
},
|
||||
|
||||
icon: {
|
||||
serverKnownCssClasses: Array<any>,
|
||||
},
|
||||
}
|
||||
interface PublicRuntimeConfig {
|
||||
|
||||
}
|
||||
}
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
$config: RuntimeConfig
|
||||
}
|
||||
}
|
0
.nuxt/types/vue-shim.d.ts
vendored
7
.prettierrc.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/prettierrc",
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"printWidth": 100
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM node:22-alpine
|
||||
FROM node:22-slim
|
||||
WORKDIR /usr/src/app
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
|
@ -4,7 +4,6 @@ Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduct
|
||||
|
||||
## Setup
|
||||
|
||||
|
||||
Make sure to install dependencies:
|
||||
|
||||
```bash
|
||||
|
7
app.vue
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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
|
||||
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
|
||||
href="https://fonts.googleapis.com/css2?family=Russo+One&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
/> -->
|
||||
<NuxtPage />
|
||||
</NuxtLayout>
|
||||
</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-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 {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
.lato-light {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
.lato-regular {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
.lato-bold {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
.lato-black {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.lato-thin-italic { font-family: 'Lato', sans-serif; font-weight: 100; font-style: italic; }
|
||||
.lato-light-italic { font-family: 'Lato', sans-serif; font-weight: 300; font-style: italic; }
|
||||
.lato-regular-italic { font-family: 'Lato', sans-serif; font-weight: 400; font-style: italic; }
|
||||
.lato-bold-italic { font-family: 'Lato', sans-serif; font-weight: 700; font-style: italic; }
|
||||
.lato-black-italic { font-family: 'Lato', sans-serif; font-weight: 900; font-style: italic; }
|
||||
.lato-thin-italic {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
}
|
||||
.lato-light-italic {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
.lato-regular-italic {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
.lato-bold-italic {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
.lato-black-italic {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.russo-one-regular {
|
||||
font-family: 'Russo One', sans-serif;
|
||||
|
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/book1.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
assets/img/png/book2.png
Normal file
After Width: | Height: | Size: 218 KiB |
BIN
assets/img/png/footer-flowers-2.png
Normal file
After Width: | Height: | Size: 746 KiB |
BIN
assets/img/webp/footer-flowers-2.webp
Normal file
After Width: | Height: | Size: 142 KiB |
@ -1,13 +1,17 @@
|
||||
export const colorVariants = {
|
||||
primary: ['bg-accent-50', 'text-primary', 'hover:bg-accent-100', 'active:bg-accent-150'],
|
||||
secondary: [
|
||||
'bg-transparent',
|
||||
'text-primary',
|
||||
'hover:bg-accent-50',
|
||||
'border-accent-50',
|
||||
'border',
|
||||
'hover:bg-accent-100',
|
||||
'active:bg-accent-150',
|
||||
'cursor-pointer',
|
||||
primary: [
|
||||
"bg-accent-50",
|
||||
"text-primary",
|
||||
"hover:bg-accent-100",
|
||||
"active:bg-accent-150",
|
||||
],
|
||||
}
|
||||
secondary: [
|
||||
"bg-transparent",
|
||||
"text-primary",
|
||||
"hover:bg-accent-50",
|
||||
"border-accent-50",
|
||||
"border",
|
||||
"hover:bg-accent-100",
|
||||
"active:bg-accent-150",
|
||||
],
|
||||
};
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<component
|
||||
:is="tag"
|
||||
:type="tag === 'button' ? 'button' : ''"
|
||||
class="px-14 py-4 rounded-[20px] text-[30px] cursor-pointer shadow-[0px_16px_50px_-16px_rgba(229,30,125,1)]"
|
||||
:class="[baseStyle, size]"
|
||||
data-ui="ui-button"
|
||||
@ -10,36 +11,36 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { toRefs, computed } from 'vue'
|
||||
import { colorVariants } from './UiButton.params.js'
|
||||
import { toRefs, computed } from "vue";
|
||||
import { colorVariants } from "./UiButton.params.js";
|
||||
|
||||
const props = defineProps({
|
||||
tag: {
|
||||
type: String,
|
||||
default: 'button',
|
||||
default: "button",
|
||||
},
|
||||
variants: {
|
||||
type: String as () => 'primary' | 'secondary',
|
||||
default: 'primary',
|
||||
type: String as () => "primary" | "secondary",
|
||||
default: "primary",
|
||||
validator: (value) => {
|
||||
return ['primary', 'secondary'].includes(value as string)
|
||||
return ["primary", "secondary"].includes(value as string);
|
||||
},
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: 'font-bold',
|
||||
default: "font-bold",
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
const { tag, variants, size } = toRefs(props)
|
||||
const { tag, variants, size } = toRefs(props);
|
||||
|
||||
const colorClasses: Record<'primary' | 'secondary', string[]> = {
|
||||
const colorClasses: Record<"primary" | "secondary", string[]> = {
|
||||
primary: colorVariants.primary,
|
||||
secondary: colorVariants.secondary,
|
||||
}
|
||||
};
|
||||
|
||||
const baseStyle = computed(() => {
|
||||
const variant = variants.value as 'primary' | 'secondary'
|
||||
return colorClasses[variant]?.join(' ') || ''
|
||||
})
|
||||
const variant = variants.value as "primary" | "secondary";
|
||||
return colorClasses[variant]?.join(" ") || "";
|
||||
});
|
||||
</script>
|
||||
|
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 sitemap from './sitemap'
|
||||
import modules from "./modules";
|
||||
import sitemap from "./sitemap";
|
||||
|
||||
export default {
|
||||
modules,
|
||||
@ -8,4 +8,4 @@ export default {
|
||||
strict: true,
|
||||
typeCheck: true,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
@ -1,12 +1,13 @@
|
||||
export default [
|
||||
"@nuxt/eslint",
|
||||
"@nuxt/icon",
|
||||
"@nuxt/image",
|
||||
// '@nuxt/content',
|
||||
'@nuxt/eslint',
|
||||
'@nuxt/icon',
|
||||
'@nuxt/image',
|
||||
'@nuxt/content',
|
||||
// '@nuxt/fonts',
|
||||
"@pinia/nuxt",
|
||||
"@nuxtjs/tailwindcss",
|
||||
"@pinia/nuxt",
|
||||
'@pinia/nuxt',
|
||||
'@nuxtjs/tailwindcss',
|
||||
'@pinia/nuxt',
|
||||
'@nuxtjs/html-validator',
|
||||
// '@nuxtjs/robots',
|
||||
// '@nuxtjs/sitemap',
|
||||
];
|
||||
]
|
||||
|
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
@ -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/>
|
||||
  Итак, убеждения.
|
35
content/books/2.md
Normal file
@ -0,0 +1,35 @@
|
||||
<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]? Теперь ты понимаешь различие в механизмах.
|
||||
Когда отношения с девушкой только начинаются, когда еще не было секса, парень испытывает некое подобие эйфории и одновременной зависимости от девушки. Я опять же говорю о классическом случае. Парень пытается быть максимально хорошим для нее. Она ему нравится, он запал на нее. Все его мысли — о ней. Девушка же влюбляется с задержкой по времени, когда парень пройдет ее фильтры. Когда у нее “щелкнет” в голове, тогда она и влюбляется.
|
||||
|
||||

|
||||
Рисунок 5 — Различия между мужской и женской схемами влюбления<br/>
|
||||
_Иллюстрация создана автором книги_
|
||||
|
||||
  Смотри, как выгодно для тебя устроила природа. Ты еще ничего не сделала в плане развития отношений, но уже имеешь бонус. Красота!! Спасибо матери-природе. Такой механизм — следствие заботы о выживании рода, вида. Вид должен выжить. Поэтому тебе дается время на фильтрацию самцов, чтобы ты могла выбрать лучшего и получить его семя. Самый живучий самец, самец, обошедший своих сородичей, самый жизнеспобный, способен дать тебе лучшее семя среди своих представителей. Так ты сможешь родить наиболее жизнеспособного ребенка, самого живучего. Забеременев же от слабого самца, ты родишь слабое потомство. Именно из-за такого механизма выживания вида парень сразу испытывает влечение к девушке, но после первого секса сразу же остывает к ней. Его задача выполнена, он оплодотворил самку. Его следующая задача — найти новую самку и оплодотворить ее. Поэтому он также быстро “западает” на следующую, трахает ее, остывает к ней и ищет новую. Парень выполняет задачу продолжения рода: совокупляется с максимальным количеством девушек.
|
||||
Но для нас с тобой сейчас самое важное — работать в зоне t — фильтрации. Как раз в период, который тебе подарила мать-природа, ты должна работать над отношениями. Тебе дали бонус в виде времени, не просри его. Те фишки, которые я тебе даю, имеют максимальную эффективность как раз в период фильтрации самцов. Как только вы переспите, период фильтрации закончится. И эффективность любых манипулятивных фишек, даже от Вино Галанте, упадет в разы. Это же так просто!! Ты пропустила парня через свои фильтры. Мать-природа позаботилась о том, чтобы сразу после этого ему захотелось другую самку. Как только ему захотелось другую, тебе становится архисложно влиять на парня. Природа, природа, против нее не поспоришь.
|
||||
Сколько времени длится период фильтрации самцов? Запомни, в соблазнении отсутствует время как таковое, в соблазнении присутствует качество. Поэтому период фильтрации может длиться один час, а может год или два. Здесь все зависит от твоего уровня. Но период фильтрации заканчивается первым сексом. Потому что ты уже отфильтровала парня. Раз ты его отфильтровала, как же может продолжаться фильтрация? Правильно, никак. А начинается период первой коммуникацией, считай, что словом “Привет”. Видишь, никаких времен, только условия.
|
||||
|
||||
### <span style="color: #f54b7e;">Главный секрет влюбления</span>
|
||||
|
||||
  Для того, чтобы парень влюбился в тебя, необходимо и достаточно выполнения всего четырех условий. На самом деле, когда ты работаешь по влюблению в себя парня, ты действуешь согласно всего четырем правилам. Все эти четыре правила или условия являются необходимыми и достаточными. Необходимые, значит, требуется выполнение всех четырех условий, чтобы в тебя влюбились. Достаточные, значит, требуется выполнение только этих четырех условий и никаких больше.
|
||||
Для влюбления парня **необходимы и достаточны 4 условия**:
|
||||
|
||||
- **Подстройка ментальная** — совпадение мышления.
|
||||
- **Подстройка по ценностям** — общие принципы жизни.
|
||||
- **Поведение** — действия, которые цепляют.
|
||||
- **Достаточное качество девушки** — внешность, интеллект, харизма.
|
||||
|
||||
  Выбей этот секрет влюбления на огромном камне и используй этот камень вместо подушки. Только что я рассказал тебе главный секрет влюбления в себя мужчины. Или девушки, здесь нет никакой разницы, кстати. Есть всего четыре вещи: ментальная подстройка, подстройка по ценностям, твое качество и твое поведение. Всё, больше ничего нет. Больше ничего не требуется, чтобы влюбить в себя абсолютно любого парня. Самое сложное, над чем приходится работать обычной девушке — ее качество. Если же ты родилась с внешностью Адрианы Лимы или Миранды Керр, да еще и с головой на плечах. Тогда тебе крупно повезло, работать придется не так уж и много. Ты — девушка высокого качества. Четвертый пункт удовлетворен.
|
BIN
content/books/image2.png
Normal file
After Width: | Height: | Size: 38 KiB |
@ -1,10 +1,7 @@
|
||||
import { globalIgnores } from "eslint/config";
|
||||
import {
|
||||
defineConfigWithVueTs,
|
||||
vueTsConfigs,
|
||||
} from "@vue/eslint-config-typescript";
|
||||
import pluginVue from "eslint-plugin-vue";
|
||||
import skipFormatting from "@vue/eslint-config-prettier/skip-formatting";
|
||||
import { globalIgnores } from 'eslint/config'
|
||||
import { defineConfigWithVueTs, vueTsConfigs } 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:
|
||||
// import { configureVueProject } from '@vue/eslint-config-typescript'
|
||||
@ -13,18 +10,19 @@ import skipFormatting from "@vue/eslint-config-prettier/skip-formatting";
|
||||
|
||||
export default defineConfigWithVueTs(
|
||||
{
|
||||
name: "app/files-to-lint",
|
||||
files: ["**/*.{ts,mts,tsx,vue}"],
|
||||
name: 'app/files-to-lint',
|
||||
files: ['**/*.{ts,mts,tsx,vue}'],
|
||||
},
|
||||
|
||||
globalIgnores([
|
||||
"**/dist/**",
|
||||
"**/dist-ssr/**",
|
||||
"**/coverage/**",
|
||||
"./src/generated/**",
|
||||
]),
|
||||
globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**', './src/generated/**']),
|
||||
|
||||
pluginVue.configs["flat/essential"],
|
||||
pluginVue.configs['flat/essential'],
|
||||
vueTsConfigs.recommended,
|
||||
skipFormatting
|
||||
);
|
||||
skipFormatting,
|
||||
{
|
||||
rules: {
|
||||
'vue/multi-word-component-names': 'off',
|
||||
'vue/component-name-in-template-casing': ['error', 'PascalCase'],
|
||||
},
|
||||
},
|
||||
)
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div
|
||||
class="min-h-svh overflow-x-hidden lato-regular relative overflow-visible before:content-[''] before:absolute before:bottom-0 before:h-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="
|
||||
route.path === '/books/1' || route.path === '/books/2'
|
||||
? 'bg-[linear-gradient(135deg,rgba(17,17,30,1)_10%,rgba(183,32,76,1)_170%)]'
|
||||
|
@ -1,25 +1,42 @@
|
||||
import config from "./config";
|
||||
import config from './config'
|
||||
|
||||
import { fileURLToPath, URL } from "node:url";
|
||||
import { fileURLToPath, URL } from 'node:url'
|
||||
import head from './config/head'
|
||||
// import sitemap from "./config/sitemap";
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({
|
||||
compatibilityDate: "2025-05-15",
|
||||
compatibilityDate: '2025-05-15',
|
||||
devtools: { enabled: true },
|
||||
|
||||
devServer: {
|
||||
host: "localhost",
|
||||
host: 'localhost',
|
||||
port: 4002,
|
||||
},
|
||||
|
||||
nitro: {
|
||||
output: {
|
||||
dir: "./dist",
|
||||
dir: './dist',
|
||||
},
|
||||
},
|
||||
|
||||
alias: {
|
||||
"@": fileURLToPath(new URL("./", import.meta.url)),
|
||||
'@': fileURLToPath(new URL('./', import.meta.url)),
|
||||
},
|
||||
css: ["@/assets/css/tailwind.css"],
|
||||
|
||||
css: ['@/assets/css/tailwind.css'],
|
||||
...config,
|
||||
});
|
||||
htmlValidator: {
|
||||
usePrettier: true,
|
||||
logLevel: 'error',
|
||||
failOnError: false,
|
||||
},
|
||||
app: {
|
||||
head: {
|
||||
title: 'Vino Galante',
|
||||
htmlAttrs: {
|
||||
lang: 'ru',
|
||||
},
|
||||
...head,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
19328
package-lock.json
generated
@ -17,6 +17,7 @@
|
||||
"@nuxt/fonts": "^0.11.4",
|
||||
"@nuxt/icon": "^1.13.0",
|
||||
"@nuxt/image": "^1.10.0",
|
||||
"@nuxtjs/html-validator": "^2.1.0",
|
||||
"@nuxtjs/robots": "^5.2.10",
|
||||
"@nuxtjs/sitemap": "^7.4.0",
|
||||
"@pinia/nuxt": "^0.5.5",
|
||||
|
@ -1,31 +1,22 @@
|
||||
<template>
|
||||
<template v-if="book">
|
||||
<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
|
||||
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]">
|
||||
<div class="flex flex-col items-center">
|
||||
<img
|
||||
:src="book.img"
|
||||
:alt="book.buttonText"
|
||||
width="100%"
|
||||
height="100%"
|
||||
/>
|
||||
<section class="relative top-[-30px] min-w-[570px]">
|
||||
<div class="flex flex-col items-center h-[600px]">
|
||||
<img :src="book.img" :alt="book.buttonText" />
|
||||
</div>
|
||||
</section>
|
||||
<!--правый блок контента-->
|
||||
<section>
|
||||
<div class="w-11/12 h-full flex flex-col justify-start">
|
||||
<div>
|
||||
<UiHeading
|
||||
tag="H1"
|
||||
class="whitespace-pre-line [&]:font-bold"
|
||||
size="300"
|
||||
>
|
||||
<UiHeading tag="H1" class="whitespace-pre-line [&]:font-bold" size="300">
|
||||
{{ book.title }}
|
||||
</UiHeading>
|
||||
<UiParagraph class="mb-10" size="250">
|
||||
@ -42,17 +33,15 @@
|
||||
</section>
|
||||
</section>
|
||||
<!--средний блок-->
|
||||
<section class="flex flex-row items-center ml-20 justify-between">
|
||||
<section class="flex flex-row items-center ml-12 gap-24">
|
||||
<!--левый-->
|
||||
<div class="flex flex-col items-center min-h-[310px]">
|
||||
<div class="flex flex-row">
|
||||
<UiParagraph class="[&]:text-6xl"
|
||||
>{{ book.price }} </UiParagraph
|
||||
>
|
||||
<UiParagraph class="[&]:text-6xl">{{ book.price }} </UiParagraph>
|
||||
<img src="/img/svg/books/ruble.svg" alt="ruble" />
|
||||
</div>
|
||||
<div class="mr-10 flex items-center flex-col gap-3">
|
||||
<UiButton class="max-w-[380px] !font-normal !px-2 !py-4 mt-24">
|
||||
<div class="flex items-center flex-col gap-3">
|
||||
<UiButton class="max-w-[440px] !font-normal !px-2 !py-4 mt-16">
|
||||
{{ book.buttonText }}
|
||||
</UiButton>
|
||||
<UiParagraph size="200">
|
||||
@ -61,41 +50,29 @@
|
||||
</div>
|
||||
</div>
|
||||
<!--правый-->
|
||||
<div class="min-h-[310px]">
|
||||
<div class="min-h-[310px] pt-6">
|
||||
<!--о книге-->
|
||||
<div>
|
||||
<ul
|
||||
class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap"
|
||||
>
|
||||
<ul class="flex flex-row mr-14 items-center justify-between lg:whitespace-nowrap">
|
||||
<li class="flex flex-row mr-14 gap-3 items-center">
|
||||
<img
|
||||
src="/img/svg/books/book-pages.svg"
|
||||
alt="страниц"
|
||||
width="100%"
|
||||
height="100%"
|
||||
/>
|
||||
<img src="/img/svg/books/book-pages.svg" alt="страниц" width="24" height="24" />
|
||||
<UiParagraph size="250" as="span">
|
||||
{{ book.pages }}
|
||||
</UiParagraph>
|
||||
</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
|
||||
src="/img/svg/books/book-illustrations.svg"
|
||||
alt="иллюстраций"
|
||||
width="100%"
|
||||
height="100%"
|
||||
width="24"
|
||||
height="24"
|
||||
/>
|
||||
<UiParagraph size="250" as="span">
|
||||
{{ book.illust }}
|
||||
</UiParagraph>
|
||||
</li>
|
||||
<li class="flex flex-row mr-14 gap-3 items-center">
|
||||
<img
|
||||
src="/img/svg/books/book-formats.svg"
|
||||
alt="формат"
|
||||
width="100%"
|
||||
height="100%"
|
||||
/>
|
||||
<img src="/img/svg/books/book-formats.svg" alt="формат" width="24" height="24" />
|
||||
<UiParagraph size="250" as="span">
|
||||
{{ book.format }}
|
||||
</UiParagraph>
|
||||
@ -104,61 +81,36 @@
|
||||
</div>
|
||||
|
||||
<!--навигация по книге-->
|
||||
<div class="mt-24">
|
||||
<ul
|
||||
class="flex flex-row mr-32 items-end justify-between lg:whitespace-nowrap"
|
||||
>
|
||||
<li class="flex flex-row items-center">
|
||||
<div class="mt-28 pt-2">
|
||||
<ul class="flex flex-row mr-32 items-baseline justify-between lg:whitespace-nowrap">
|
||||
<li class="flex flex-row h-24 w-[105px] items-center">
|
||||
<NuxtLink
|
||||
to="#"
|
||||
class="flex flex-col items-center cursor-pointer"
|
||||
:to="`/books/${route.params.slug}/chapters/${route.params.slug}/`"
|
||||
class="flex flex-col gap-8 items-center cursor-pointer"
|
||||
>
|
||||
<div class="w-[62px] h-[58px]">
|
||||
<img
|
||||
src="/img/svg/books/read.svg"
|
||||
alt="Читай отрывок"
|
||||
width="62"
|
||||
height="53"
|
||||
/>
|
||||
</div>
|
||||
<img src="/img/svg/books/read.svg" alt="Читай отрывок" width="62" height="53" />
|
||||
|
||||
<UiParagraph size="250" as="span">
|
||||
Читай отрывок
|
||||
</UiParagraph>
|
||||
<UiParagraph size="250" as="span"> Читай отрывок </UiParagraph>
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li class="flex flex-row gap-3 items-center">
|
||||
<NuxtLink
|
||||
to="#"
|
||||
class="flex flex-col items-center gap-4 cursor-pointer"
|
||||
>
|
||||
<div class="w-[62px] h-[53px]">
|
||||
<img
|
||||
src="/img/svg/books/download.svg"
|
||||
alt="Скачай отрывок"
|
||||
width="62"
|
||||
height="53"
|
||||
/>
|
||||
</div>
|
||||
<li class="flex flex-row items-center h-24 w-[105px]">
|
||||
<NuxtLink to="#" class="flex flex-col items-center gap-8 cursor-pointer">
|
||||
<img
|
||||
src="/img/svg/books/download.svg"
|
||||
alt="Скачай отрывок"
|
||||
width="62"
|
||||
height="53"
|
||||
/>
|
||||
|
||||
<UiParagraph size="250" as="span">
|
||||
Скачай отрывок
|
||||
</UiParagraph>
|
||||
<UiParagraph size="250" as="span"> Скачай отрывок </UiParagraph>
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li class="flex flex-row gap-3 items-center">
|
||||
<li class="flex flex-row items-center h-24 w-[105px]">
|
||||
<NuxtLink
|
||||
: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"
|
||||
/>
|
||||
</div>
|
||||
<img src="/img/svg/books/down2.svg" alt="Содержание" width="62" height="53" />
|
||||
|
||||
<UiParagraph size="250" as="span"> Содержание </UiParagraph>
|
||||
</NuxtLink>
|
||||
@ -170,9 +122,7 @@
|
||||
<!--нижний блок-->
|
||||
<section class="ml-20 mt-32">
|
||||
<div>
|
||||
<UiHeading tag="H2" size="300" class="text-three">
|
||||
Что ты узнаешь
|
||||
</UiHeading>
|
||||
<UiHeading tag="h2" size="300" class="text-three"> Что ты узнаешь </UiHeading>
|
||||
<ul class="flex mt-20 flex-row items-center justify-between">
|
||||
<li
|
||||
class="flex flex-col-reverse justify-end w-32 gap-4 h-64 items-center transition-transform transform hover:scale-110"
|
||||
@ -188,10 +138,7 @@
|
||||
</div>
|
||||
<div class="flex justify-center text-center mt-36">
|
||||
<UiParagraph>
|
||||
Или купи на ЛитРес - <br /><a
|
||||
class="text-three"
|
||||
:href="book.href"
|
||||
target="_blank"
|
||||
Или купи на ЛитРес - <br /><a class="text-three" :href="book.href" target="_blank"
|
||||
>Реферальная ссылка для поддержки автора</a
|
||||
>
|
||||
</UiParagraph>
|
||||
@ -205,59 +152,59 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch } from "vue";
|
||||
import { useRoute } from "#app";
|
||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||
import UiButton from "@/components/UiButton/UiButton.vue";
|
||||
import { ref, computed, watch } from 'vue'
|
||||
import { useRoute } from '#app'
|
||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||
import UiButton from '@/components/UiButton/UiButton.vue'
|
||||
|
||||
interface BookDetail {
|
||||
id: number;
|
||||
title: string;
|
||||
metaTitle: string;
|
||||
subtitle: string;
|
||||
subdesc: string;
|
||||
description: string;
|
||||
img: string;
|
||||
price: string;
|
||||
buttonText: string;
|
||||
buttonFormat: string;
|
||||
pages: string;
|
||||
illust: string;
|
||||
format: string;
|
||||
id: number
|
||||
title: string
|
||||
metaTitle: string
|
||||
subtitle: string
|
||||
subdesc: string
|
||||
description: string
|
||||
img: string
|
||||
price: string
|
||||
buttonText: string
|
||||
buttonFormat: string
|
||||
pages: string
|
||||
illust: string
|
||||
format: string
|
||||
whoUKnows: Array<{
|
||||
text: string;
|
||||
svg: string;
|
||||
}>;
|
||||
href: string;
|
||||
hrefTitles: string;
|
||||
text: string
|
||||
svg: string
|
||||
}>
|
||||
href: string
|
||||
hrefTitles: string
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
const route = useRoute()
|
||||
|
||||
const currentBookData = ref<BookDetail | null>(null);
|
||||
const currentBookData = ref<BookDetail | null>(null)
|
||||
|
||||
const book = computed(() => currentBookData.value);
|
||||
const book = computed(() => currentBookData.value)
|
||||
|
||||
const loadBookData = async (slug: string) => {
|
||||
try {
|
||||
const module = await import(`./_data/${slug}.json`);
|
||||
currentBookData.value = module.default as BookDetail;
|
||||
const module = await import(`./_data/${slug}.json`)
|
||||
currentBookData.value = module.default as BookDetail
|
||||
} catch (error) {
|
||||
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error);
|
||||
currentBookData.value = null;
|
||||
console.error(`Ошибка при загрузке книги с slug '${slug}':`, error)
|
||||
currentBookData.value = null
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
watch(
|
||||
() => route.params.slug,
|
||||
async (newSlug) => {
|
||||
if (newSlug) {
|
||||
await loadBookData(newSlug as string);
|
||||
await loadBookData(newSlug as string)
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
watch(book, (newBook) => {
|
||||
if (newBook) {
|
||||
@ -265,17 +212,17 @@ watch(book, (newBook) => {
|
||||
title: `${newBook.metaTitle} | Vino Galante`,
|
||||
meta: [
|
||||
{
|
||||
name: "description",
|
||||
content: "Онлайн магазин книг автора Vino Galante",
|
||||
name: 'description',
|
||||
content: 'Онлайн магазин книг автора Vino Galante',
|
||||
},
|
||||
],
|
||||
link: [
|
||||
{
|
||||
rel: "canonical",
|
||||
rel: 'canonical',
|
||||
href: `https://ebook.miduway.space/books/${route.params.slug}`,
|
||||
},
|
||||
],
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
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>
|
@ -1,22 +1,14 @@
|
||||
<template>
|
||||
<div v-if="titles" class="relative z-50 min-h-screen text-white mb-[208px]">
|
||||
<section class="flex flex-col relative z-40 mt-40 ml-18">
|
||||
<UiHeading
|
||||
tag="H1"
|
||||
class="whitespace-pre-line [&]:font-normal mb-10 -ml-5"
|
||||
size="500"
|
||||
>
|
||||
<UiHeading tag="H1" class="whitespace-pre-line [&]:font-normal mb-10 -ml-5" size="500">
|
||||
{{ titles.title }}
|
||||
</UiHeading>
|
||||
|
||||
<div class="flex flex-col gap-6">
|
||||
<div
|
||||
v-for="(section, index) in titles.sections"
|
||||
:key="index"
|
||||
class="flex flex-col gap-4"
|
||||
>
|
||||
<div v-for="(section, index) in titles.sections" :key="index" class="flex flex-col gap-4">
|
||||
<!-- Main section title -->
|
||||
<UiHeading tag="H2" size="300" class="text-three [&]:font-normal">
|
||||
<UiHeading tag="h2" size="300" class="text-three [&]:font-normal">
|
||||
{{ section.title }}
|
||||
</UiHeading>
|
||||
|
||||
@ -43,27 +35,14 @@
|
||||
</UiHeading>
|
||||
</div>
|
||||
<!-- Regular subsection -->
|
||||
<UiHeading
|
||||
v-else
|
||||
tag="H3"
|
||||
size="300"
|
||||
class="[&]:text-gray-200 [&]:font-normal"
|
||||
>
|
||||
<UiHeading v-else tag="H3" size="300" class="[&]:text-gray-200 [&]:font-normal">
|
||||
{{ subsection.title }}
|
||||
</UiHeading>
|
||||
|
||||
<!-- Items list -->
|
||||
<ul
|
||||
v-if="subsection.items"
|
||||
class="ml-6 flex flex-col gap-2 list-decimal"
|
||||
>
|
||||
<li
|
||||
v-for="(item, itemIndex) in subsection.items"
|
||||
:key="itemIndex"
|
||||
>
|
||||
<UiParagraph
|
||||
size="300"
|
||||
class="[&]:text-gray-200 [&]:font-normal"
|
||||
<ul v-if="subsection.items" class="ml-6 flex flex-col gap-2 list-decimal">
|
||||
<li v-for="(item, itemIndex) in subsection.items" :key="itemIndex">
|
||||
<UiParagraph size="300" class="[&]:text-gray-200 [&]:font-normal"
|
||||
> {{ item }}</UiParagraph
|
||||
>
|
||||
</li>
|
||||
@ -71,15 +50,8 @@
|
||||
|
||||
<!-- Nested subsections -->
|
||||
<div v-if="subsection.subsections" class="flex flex-col gap-2">
|
||||
<div
|
||||
v-for="(nestedSub, nestedIndex) in subsection.subsections"
|
||||
:key="nestedIndex"
|
||||
>
|
||||
<UiHeading
|
||||
tag="H4"
|
||||
size="300"
|
||||
class="[&]:text-gray-200 [&]:font-normal"
|
||||
>
|
||||
<div v-for="(nestedSub, nestedIndex) in subsection.subsections" :key="nestedIndex">
|
||||
<UiHeading tag="H4" size="300" class="[&]:text-gray-200 [&]:font-normal">
|
||||
{{ nestedSub.title }}
|
||||
</UiHeading>
|
||||
</div>
|
||||
@ -94,61 +66,60 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||
// import { useHead } from '@vueuse/head'
|
||||
import { ref, computed, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||
|
||||
interface SubsectionTitle {
|
||||
text: string;
|
||||
img?: string;
|
||||
text: string
|
||||
img?: string
|
||||
}
|
||||
|
||||
interface Subsection {
|
||||
title: string | SubsectionTitle;
|
||||
items?: string[];
|
||||
title: string | SubsectionTitle
|
||||
items?: string[]
|
||||
subsections?: Array<{
|
||||
title: string;
|
||||
}>;
|
||||
title: string
|
||||
}>
|
||||
}
|
||||
|
||||
interface Section {
|
||||
title: string;
|
||||
subsections?: Subsection[];
|
||||
title: string
|
||||
subsections?: Subsection[]
|
||||
}
|
||||
|
||||
interface TitlesData {
|
||||
title: string;
|
||||
titleMeta: string;
|
||||
sections: Section[];
|
||||
title: string
|
||||
titleMeta: string
|
||||
sections: Section[]
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
const route = useRoute()
|
||||
|
||||
const currentTitlesData = ref<TitlesData | null>(null);
|
||||
const currentTitlesData = ref<TitlesData | null>(null)
|
||||
|
||||
const titles = computed(() => currentTitlesData.value);
|
||||
const titles = computed(() => currentTitlesData.value)
|
||||
|
||||
const loadTitlesData = async (slug: string) => {
|
||||
try {
|
||||
const module = await import(`./_data/${slug}.json`);
|
||||
currentTitlesData.value = module.default as TitlesData;
|
||||
const module = await import(`./_data/${slug}.json`)
|
||||
currentTitlesData.value = module.default as TitlesData
|
||||
} catch (error) {
|
||||
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error);
|
||||
currentTitlesData.value = null;
|
||||
console.error(`Ошибка при загрузке содержания с slug '${slug}':`, error)
|
||||
currentTitlesData.value = null
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
watch(
|
||||
() => route.params.titlesSlug,
|
||||
async (newSlug) => {
|
||||
if (newSlug) {
|
||||
await loadTitlesData(newSlug as string);
|
||||
await loadTitlesData(newSlug as string)
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
watch(titles, (newTitles) => {
|
||||
if (newTitles) {
|
||||
@ -156,17 +127,17 @@ watch(titles, (newTitles) => {
|
||||
title: `${newTitles.titleMeta} | Vino Galante`,
|
||||
meta: [
|
||||
{
|
||||
name: "description",
|
||||
content: "Содержание книги Vino Galante",
|
||||
name: 'description',
|
||||
content: 'Содержание книги Vino Galante',
|
||||
},
|
||||
],
|
||||
link: [
|
||||
{
|
||||
rel: "canonical",
|
||||
rel: 'canonical',
|
||||
href: `https://ebook.miduway.space/books/${route.params.slug}/${route.params.titlesSlug}`,
|
||||
},
|
||||
],
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
17
pages/cart/_data/cart.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Корзина",
|
||||
"items": [
|
||||
{
|
||||
"name": "Как влюбить в себя любого \n Книга I. \n Откровения бывшего Казановы",
|
||||
"src": "/assets/img/png/book1.png",
|
||||
"buy": "добавить Книгу I"
|
||||
},
|
||||
{
|
||||
"name": "Как влюбить в себя любого \n Книга II. \n Тонкая игра",
|
||||
"src": "/assets/img/png/book2.png",
|
||||
"buy": "добавить Книгу II"
|
||||
}
|
||||
],
|
||||
"message": "💡 Купи обе книги и получи скидку 10% - 936 за комплект",
|
||||
"price": "520 ₽"
|
||||
}
|
8
pages/cart/index.vue
Normal file
@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<section class="relative z-50">
|
||||
<UiHeading tag="h1" size="300"> Корзина </UiHeading>
|
||||
</section>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import UiHeading from '~/components/Typography/UiHeading.vue'
|
||||
</script>
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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>
|
||||
|
||||
@ -18,7 +18,9 @@
|
||||
class="swiper-slide feedback-slide !w-[356px] !h-[325px]"
|
||||
>
|
||||
<div class="feedback-card !w-full !h-full">
|
||||
<UiParagraph size="250" class="card-text">{{ feedback.text }}</UiParagraph>
|
||||
<UiParagraph size="250" class="card-text">{{
|
||||
feedback.text
|
||||
}}</UiParagraph>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -36,34 +38,34 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted } from 'vue'
|
||||
import Swiper from 'swiper'
|
||||
import { Pagination, Autoplay } from 'swiper/modules'
|
||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||
import feedbackData from './_data/feedback.data'
|
||||
import { onMounted } from "vue";
|
||||
import Swiper from "swiper";
|
||||
import { Pagination, Autoplay } from "swiper/modules";
|
||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||
import feedbackData from "./_data/feedback.data";
|
||||
|
||||
import 'swiper/css'
|
||||
import 'swiper/css/pagination'
|
||||
import UiButton from '@/components/UiButton/UiButton.vue'
|
||||
import "swiper/css";
|
||||
import "swiper/css/pagination";
|
||||
import UiButton from "@/components/UiButton/UiButton.vue";
|
||||
|
||||
onMounted(() => {
|
||||
new Swiper('.feedback-swiper', {
|
||||
new Swiper(".feedback-swiper", {
|
||||
modules: [Pagination, Autoplay],
|
||||
direction: 'horizontal',
|
||||
direction: "horizontal",
|
||||
loop: true,
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
slidesPerView: 'auto',
|
||||
slidesPerView: "auto",
|
||||
spaceBetween: 72,
|
||||
pagination: {
|
||||
el: '.swiper-pagination',
|
||||
el: ".swiper-pagination",
|
||||
clickable: false,
|
||||
},
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<section>
|
||||
<UiHeading tag="H2" size="300" class="text-three">
|
||||
<UiHeading tag="h1" size="300" class="text-three">
|
||||
Книги для тебя, если ты не знаешь...
|
||||
</UiHeading>
|
||||
<ul class="flex mt-20 flex-row items-center justify-between">
|
||||
@ -19,36 +19,36 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||
import { reactive } from 'vue'
|
||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||
import { reactive } from "vue";
|
||||
|
||||
const questions = reactive({
|
||||
data: [
|
||||
{
|
||||
img: '/img/svg/ellipse1.svg',
|
||||
img: "/img/svg/ellipse1.svg",
|
||||
text: 'Что делать, если у тебя ноги не "от ушей" и ты далеко не Мисс Мира?',
|
||||
},
|
||||
{
|
||||
img: '/img/svg/ellipse2.svg',
|
||||
text: 'Как начать легко общаться с противоположным полом и о чем надо помолчать?',
|
||||
img: "/img/svg/ellipse2.svg",
|
||||
text: "Как начать легко общаться с противоположным полом и о чем надо помолчать?",
|
||||
},
|
||||
{
|
||||
img: '/img/svg/ellipse3.svg',
|
||||
text: 'Как относиться к сексу и на сколько важна девичья невинность?',
|
||||
img: "/img/svg/ellipse3.svg",
|
||||
text: "Как относиться к сексу и на сколько важна девичья невинность?",
|
||||
},
|
||||
{
|
||||
img: '/img/svg/ellipse4.svg',
|
||||
text: 'Сколько нужно заниматься, чтобы обрести НОВУЮ себя?',
|
||||
img: "/img/svg/ellipse4.svg",
|
||||
text: "Сколько нужно заниматься, чтобы обрести НОВУЮ себя?",
|
||||
},
|
||||
{
|
||||
img: '/img/svg/ellipse5.svg',
|
||||
text: 'Как выработать стратегию долгосрочных отношений?',
|
||||
img: "/img/svg/ellipse5.svg",
|
||||
text: "Как выработать стратегию долгосрочных отношений?",
|
||||
},
|
||||
{
|
||||
img: '/img/svg/ellipse6.svg',
|
||||
text: 'Как добиться того, чтоб парень делал так, как ты хочешь, но думал, что он сам так решил?',
|
||||
img: "/img/svg/ellipse6.svg",
|
||||
text: "Как добиться того, чтоб парень делал так, как ты хочешь, но думал, что он сам так решил?",
|
||||
},
|
||||
],
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
@ -1,12 +1,7 @@
|
||||
<template>
|
||||
<section>
|
||||
<div class="relative z-50">
|
||||
<img
|
||||
src="/assets/img/webp/hero-banner-content.webp"
|
||||
alt="Книги"
|
||||
width="100%"
|
||||
height="100%"
|
||||
/>
|
||||
<img src="/assets/img/webp/hero-banner-content.webp" alt="Книги" />
|
||||
</div>
|
||||
<div class="flex flex-row justify-between pl-16 pr-24">
|
||||
<BuyContent />
|
||||
@ -14,5 +9,5 @@
|
||||
</section>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import BuyContent from './_ui/buyContent.vue'
|
||||
import BuyContent from "./_ui/buyContent.vue";
|
||||
</script>
|
||||
|
@ -1,38 +1,37 @@
|
||||
<template>
|
||||
<section class="flex flex-row">
|
||||
<div 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">
|
||||
<div
|
||||
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 />
|
||||
проходишь.
|
||||
</UiHeading>
|
||||
<UiParagraph size="250" class="xl:max-w-[392px] mb-5"
|
||||
>Когда ты снова и снова отдаёшь сердце, а в ответ — тишина или игра, это ранит. Я знаю это
|
||||
чувство. Я был по ту сторону: манипулировал, очаровывал, уходил.
|
||||
>Когда ты снова и снова отдаёшь сердце, а в ответ — тишина или игра, это
|
||||
ранит. Я знаю это чувство. Я был по ту сторону: манипулировал,
|
||||
очаровывал, уходил.
|
||||
|
||||
<br /><br />Я — бывший Казанова. И однажды я понял: больше так нельзя.
|
||||
|
||||
<br /><br />Эти книги — не теория. Это ключ к пониманию, как устроена мужская психология,
|
||||
чего на самом деле хочет мужчина, и как перестать теряться в отношениях.
|
||||
<br /><br />Эти книги — не теория. Это ключ к пониманию, как устроена
|
||||
мужская психология, чего на самом деле хочет мужчина, и как перестать
|
||||
теряться в отношениях.
|
||||
|
||||
<br /><br />Я написал их для тебя — чтобы ты могла быть счастливой, не прогибаясь, не
|
||||
умоляя, не теряя себя. Если ты устала «играть», если хочешь любви по-настоящему — начни с
|
||||
первой страницы. В этих книгах нет воды. Только правда.</UiParagraph
|
||||
<br /><br />Я написал их для тебя — чтобы ты могла быть счастливой, не
|
||||
прогибаясь, не умоляя, не теряя себя. Если ты устала «играть», если
|
||||
хочешь любви по-настоящему — начни с первой страницы. В этих книгах нет
|
||||
воды. Только правда.</UiParagraph
|
||||
>
|
||||
</div>
|
||||
<div class="lg:w-7/12">
|
||||
<NuxtImg
|
||||
src="/img/webp/meetingAlone.webp"
|
||||
alt="meeting"
|
||||
width="100%"
|
||||
height="100%"
|
||||
loading="lazy"
|
||||
/>
|
||||
<NuxtImg src="/img/webp/meetingAlone.webp" alt="meeting" loading="lazy" />
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import UiHeading from '@/components/Typography/UiHeading.vue'
|
||||
import UiParagraph from '@/components/Typography/UiParagraph.vue'
|
||||
import UiHeading from "@/components/Typography/UiHeading.vue";
|
||||
import UiParagraph from "@/components/Typography/UiParagraph.vue";
|
||||
</script>
|
||||
|
@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<section>
|
||||
<section class="relative z-50">
|
||||
<UiHeading size="300" tag="H1" class="mb-5">
|
||||
Политика конфиденциальности
|
||||
</UiHeading>
|
||||
<UiParagraph size="300"
|
||||
<UiParagraph size="300" class="mb-5"
|
||||
>Настоящая политика конфиденциальности описывает, как мы собираем,
|
||||
используем и защищаем личную информацию, которую пользователи
|
||||
предоставляют при использовании нашего сайта.</UiParagraph
|
||||
>
|
||||
|
||||
<UiHeading size="300" tag="H2">1. Сбор информации</UiHeading>
|
||||
<UiHeading size="300" tag="h2">1. Сбор информации</UiHeading>
|
||||
<UiParagraph size="300"
|
||||
>При оформлении заказа на сайте вы предоставляете персональные данные,
|
||||
которые включают:</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>
|
||||
</ul>
|
||||
|
||||
<UiHeading size="300" tag="H2">2. Использование информации</UiHeading>
|
||||
<UiParagraph size="300"
|
||||
<UiHeading size="300" tag="h2">2. Использование информации</UiHeading>
|
||||
<UiParagraph size="300" class="mb-3"
|
||||
>Ваши личные данные используются исключительно для:</UiParagraph
|
||||
>
|
||||
<ul class="list-disc pl-5">
|
||||
@ -33,46 +33,46 @@
|
||||
<UiParagraph> Связи с вами по вопросам вашего заказа. </UiParagraph>
|
||||
</li>
|
||||
<li>
|
||||
<UiParagraph size="300">
|
||||
<UiParagraph size="300" class="mb-3">
|
||||
Уведомления о важных обновлениях и новостях сайта (только если вы явно
|
||||
согласились на рассылку).</UiParagraph
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<UiHeading size="300" tag="H2">3. Защита личных данных</UiHeading>
|
||||
<UiParagraph size="300">
|
||||
<UiHeading size="300" tag="h2">3. Защита личных данных</UiHeading>
|
||||
<UiParagraph size="300" class="mb-3">
|
||||
Мы предпринимаем необходимые меры для защиты ваших личных данных от
|
||||
несанкционированного доступа, изменения, разглашения или уничтожения.
|
||||
Доступ к личным данным имеют только сотрудники, непосредственно
|
||||
участвующие в обработке заказов.
|
||||
</UiParagraph>
|
||||
|
||||
<UiHeading size="300" tag="H2"
|
||||
<UiHeading size="300" tag="h2"
|
||||
>4. Передача информации третьим лицам</UiHeading
|
||||
>
|
||||
<UiParagraph size="300">
|
||||
<UiParagraph size="300" class="mb-3">
|
||||
Мы не передаём ваши личные данные третьим лицам, за исключением случаев,
|
||||
предусмотренных законодательством Российской Федерации.
|
||||
</UiParagraph>
|
||||
|
||||
<UiHeading size="300" tag="H2">5. Cookies (Куки-файлы)</UiHeading>
|
||||
<UiParagraph size="300">
|
||||
<UiHeading size="300" tag="h2">5. Cookies (Куки-файлы)</UiHeading>
|
||||
<UiParagraph size="300" class="mb-3">
|
||||
Мы используем файлы cookie, чтобы улучшить ваш пользовательский опыт. Вы
|
||||
можете отключить файлы cookie в настройках вашего браузера, однако это
|
||||
может ограничить доступ к некоторым функциям сайта.
|
||||
</UiParagraph>
|
||||
|
||||
<UiHeading size="300" tag="H2"
|
||||
<UiHeading size="300" tag="h2"
|
||||
>6. Изменения в политике конфиденциальности</UiHeading
|
||||
>
|
||||
<UiParagraph size="300">
|
||||
<UiParagraph size="300" class="mb-3">
|
||||
Мы можем периодически обновлять настоящую политику конфиденциальности. Об
|
||||
изменениях мы уведомим вас, разместив новую версию политики на данной
|
||||
странице.
|
||||
</UiParagraph>
|
||||
|
||||
<UiHeading size="300" tag="H2">7. Ваше согласие</UiHeading>
|
||||
<UiHeading size="300" tag="h2">7. Ваше согласие</UiHeading>
|
||||
<UiParagraph size="300"
|
||||
>Используя наш сайт, вы соглашаетесь с условиями данной политики
|
||||
конфиденциальности.</UiParagraph
|
||||
|
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
@ -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="600">
|
||||
{{ 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/img/books/image2.png
Normal file
After Width: | Height: | Size: 38 KiB |
@ -1,4 +1,4 @@
|
||||
<svg width="24" height="33" viewBox="0 0 24 33" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.19223 17.578H4.30762V15.3809H5.19223C5.42685 15.3809 5.65185 15.4966 5.81775 15.7026C5.98365 15.9086 6.07685 16.1881 6.07685 16.4794C6.07685 16.7708 5.98365 17.0502 5.81775 17.2562C5.65185 17.4622 5.42685 17.578 5.19223 17.578ZM11.3845 21.9722V15.3809H12.2692C12.5038 15.3809 12.7288 15.4966 12.8947 15.7026C13.0606 15.9086 13.1538 16.1881 13.1538 16.4794V20.8737C13.1538 21.165 13.0606 21.4444 12.8947 21.6504C12.7288 21.8565 12.5038 21.9722 12.2692 21.9722H11.3845Z" fill="#C01F64"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.769531 3.29567C0.769531 2.42161 1.04913 1.58334 1.54682 0.965281C2.04452 0.347222 2.71953 0 3.42338 0L17.9435 0L23.7695 7.2351V29.6611C23.7695 30.5351 23.4899 31.3734 22.9922 31.9915C22.4945 32.6095 21.8195 32.9567 21.1157 32.9567H3.42338C2.71953 32.9567 2.04452 32.6095 1.54682 31.9915C1.04913 31.3734 0.769531 30.5351 0.769531 29.6611V3.29567ZM5.19261 13.1827H2.53876V24.1683H4.30799V19.774H5.19261C5.89645 19.774 6.57147 19.4268 7.06916 18.8088C7.56685 18.1907 7.84645 17.3524 7.84645 16.4784C7.84645 15.6043 7.56685 14.766 7.06916 14.148C6.57147 13.5299 5.89645 13.1827 5.19261 13.1827ZM12.2695 13.1827H9.61568V24.1683H12.2695C12.9734 24.1683 13.6484 23.8211 14.1461 23.203C14.6438 22.5849 14.9234 21.7467 14.9234 20.8726V16.4784C14.9234 15.6043 14.6438 14.766 14.1461 14.148C13.6484 13.5299 12.9734 13.1827 12.2695 13.1827ZM16.6926 24.1683V13.1827H22.0003V15.3798H18.4618V17.5769H20.2311V19.774H18.4618V24.1683H16.6926Z" fill="#C01F64"/>
|
||||
<svg width="24" height="26" viewBox="0 0 24 26" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.19223 13.3786H4.30762V11.7148H5.19223C5.42685 11.7148 5.65185 11.8025 5.81775 11.9585C5.98365 12.1145 6.07685 12.3261 6.07685 12.5467C6.07685 12.7674 5.98365 12.979 5.81775 13.135C5.65185 13.291 5.42685 13.3786 5.19223 13.3786ZM11.3845 16.7062V11.7148H12.2692C12.5038 11.7148 12.7288 11.8025 12.8947 11.9585C13.0606 12.1145 13.1538 12.3261 13.1538 12.5467V15.8743C13.1538 16.0949 13.0606 16.3065 12.8947 16.4625C12.7288 16.6185 12.5038 16.7062 12.2692 16.7062H11.3845Z" fill="#C01F64"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.769531 2.56306C0.769531 1.90116 1.04913 1.26638 1.54682 0.798349C2.04452 0.330319 2.71953 0.0673828 3.42338 0.0673828L17.9435 0.0673828L23.7695 5.54622V22.5285C23.7695 23.1903 23.4899 23.8251 22.9922 24.2932C22.4945 24.7612 21.8195 25.0241 21.1157 25.0241H3.42338C2.71953 25.0241 2.04452 24.7612 1.54682 24.2932C1.04913 23.8251 0.769531 23.1903 0.769531 22.5285V2.56306ZM5.19261 10.0501H2.53876V18.369H4.30799V15.0414H5.19261C5.89645 15.0414 6.57147 14.7785 7.06916 14.3105C7.56685 13.8424 7.84645 13.2076 7.84645 12.5458C7.84645 11.8839 7.56685 11.2491 7.06916 10.781C6.57147 10.313 5.89645 10.0501 5.19261 10.0501ZM12.2695 10.0501H9.61568V18.369H12.2695C12.9734 18.369 13.6484 18.1061 14.1461 17.638C14.6438 17.17 14.9234 16.5352 14.9234 15.8733V12.5458C14.9234 11.8839 14.6438 11.2491 14.1461 10.781C13.6484 10.313 12.9734 10.0501 12.2695 10.0501ZM16.6926 18.369V10.0501H22.0003V11.7139H18.4618V13.3776H20.2311V15.0414H18.4618V18.369H16.6926Z" fill="#C01F64"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@ -1,3 +1,3 @@
|
||||
<svg width="24" height="31" viewBox="0 0 24 31" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.862 1.01361C10.4118 0.54615 9.85883 0.301357 9.29362 0.319278H3.26314C2.93561 0.31897 2.61125 0.406925 2.30861 0.578112C2.00597 0.749299 1.73099 1.00036 1.49939 1.31693C1.26779 1.63351 1.08412 2.00939 0.958888 2.42307C0.833653 2.83675 0.769307 3.28013 0.769532 3.72783V27.23C0.770437 28.1336 1.03345 28.9999 1.50089 29.6389C1.96834 30.2778 2.60207 30.6373 3.26314 30.6386H21.2759C21.937 30.6373 22.5707 30.2778 23.0382 29.6389C23.5056 28.9999 23.7686 28.1336 23.7695 27.23V8.20711C23.7686 7.30348 23.5056 6.43722 23.0382 5.79826C22.5707 5.1593 21.937 4.79979 21.2759 4.79856H12.119L11.7735 2.91193C11.6367 2.15634 11.3151 1.48504 10.862 1.01361ZM17.161 16.801C16.4806 16.801 15.828 16.4315 15.3469 15.7739C14.8658 15.1162 14.5955 14.2243 14.5955 13.2942C14.5955 12.3642 14.8658 11.4722 15.3469 10.8146C15.828 10.1569 16.4806 9.78748 17.161 9.78748C17.8414 9.78748 18.4939 10.1569 18.975 10.8146C19.4561 11.4722 19.7264 12.3642 19.7264 13.2942C19.7264 14.2243 19.4561 15.1162 18.975 15.7739C18.4939 16.4315 17.8414 16.801 17.161 16.801ZM9.81013 15.9804L19.1586 27.7163H3.26314C3.16906 27.7151 3.0791 27.6634 3.01258 27.5725C2.94605 27.4816 2.90829 27.3586 2.9074 27.23V21.3925L8.52399 15.9804C8.7056 15.778 8.93274 15.6674 9.16706 15.6674C9.40139 15.6674 9.62853 15.778 9.81013 15.9804Z" fill="#C01F64"/>
|
||||
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.862 1.09623C10.4118 0.726207 9.85883 0.532441 9.29362 0.546625H3.26314C2.93561 0.546382 2.61125 0.616003 2.30861 0.751506C2.00597 0.88701 1.73099 1.08574 1.49939 1.33632C1.26779 1.58691 1.08412 1.88443 0.958888 2.21189C0.833653 2.53934 0.769307 2.89029 0.769532 3.24467V21.8479C0.770437 22.5631 1.03345 23.2488 1.50089 23.7546C1.96834 24.2603 2.60207 24.5449 3.26314 24.5459H21.2759C21.937 24.5449 22.5707 24.2603 23.0382 23.7546C23.5056 23.2488 23.7686 22.5631 23.7695 21.8479V6.79025C23.7686 6.07498 23.5056 5.38929 23.0382 4.88352C22.5707 4.37775 21.937 4.09318 21.2759 4.0922H12.119L11.7735 2.59884C11.6367 2.00076 11.3151 1.46938 10.862 1.09623ZM17.161 13.5927C16.4806 13.5927 15.828 13.3003 15.3469 12.7797C14.8658 12.2592 14.5955 11.5531 14.5955 10.817C14.5955 10.0808 14.8658 9.37475 15.3469 8.8542C15.828 8.33364 16.4806 8.04119 17.161 8.04119C17.8414 8.04119 18.4939 8.33364 18.975 8.8542C19.4561 9.37475 19.7264 10.0808 19.7264 10.817C19.7264 11.5531 19.4561 12.2592 18.975 12.7797C18.4939 13.3003 17.8414 13.5927 17.161 13.5927ZM9.81013 12.9432L19.1586 22.2328H3.26314C3.16906 22.2318 3.0791 22.1909 3.01258 22.119C2.94605 22.047 2.90829 21.9496 2.9074 21.8479V17.2271L8.52399 12.9432C8.7056 12.783 8.93274 12.6955 9.16706 12.6955C9.40139 12.6955 9.62853 12.783 9.81013 12.9432Z" fill="#C01F64"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@ -1,12 +1,12 @@
|
||||
<svg width="31" height="28" viewBox="0 0 31 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24.3585 3.16504H7.69186C6.1457 3.16504 3.8457 4.05678 3.8457 6.51325V22.1383C3.8457 24.5947 6.1457 25.4865 7.69186 25.4865H26.9226V23.2543H7.70724C7.11493 23.2409 6.40981 23.0378 6.40981 22.1383C6.40981 22.0255 6.42134 21.9251 6.44058 21.8336C6.58416 21.1907 7.18929 21.0333 7.70724 21.0222H26.9226V5.39718C26.9226 4.80518 26.6525 4.23743 26.1716 3.81882C25.6908 3.40021 25.0386 3.16504 24.3585 3.16504ZM24.3585 13.2097L21.7944 12.0936L19.2303 13.2097V5.39718H24.3585V13.2097Z" fill="url(#paint0_linear_868_364)"/>
|
||||
<path d="M24.3585 3.16504H7.69186C6.1457 3.16504 3.8457 4.05678 3.8457 6.51325V22.1383C3.8457 24.5947 6.1457 25.4865 7.69186 25.4865H26.9226V23.2543H7.70724C7.11493 23.2409 6.40981 23.0378 6.40981 22.1383C6.40981 22.0255 6.42134 21.9251 6.44058 21.8336C6.58416 21.1907 7.18929 21.0333 7.70724 21.0222H26.9226V5.39718C26.9226 4.80518 26.6525 4.23743 26.1716 3.81882C25.6908 3.40021 25.0386 3.16504 24.3585 3.16504ZM24.3585 13.2097L21.7944 12.0936L19.2303 13.2097V5.39718H24.3585V13.2097Z" fill="url(#paint1_radial_868_364)" fill-opacity="0.2"/>
|
||||
<svg width="24" height="23" viewBox="0 0 24 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.3585 0.232422H4.69186C3.1457 0.232422 0.845703 1.12416 0.845703 3.58064V19.2056C0.845703 21.6621 3.1457 22.5539 4.69186 22.5539H23.9226V20.3217H4.70724C4.11493 20.3083 3.40981 20.1052 3.40981 19.2056C3.40981 19.0929 3.42134 18.9925 3.44058 18.9009C3.58416 18.2581 4.18929 18.1007 4.70724 18.0896H23.9226V2.46456C23.9226 1.87256 23.6525 1.30481 23.1716 0.886201C22.6908 0.467593 22.0386 0.232422 21.3585 0.232422ZM21.3585 10.2771L18.7944 9.16099L16.2303 10.2771V2.46456H21.3585V10.2771Z" fill="url(#paint0_linear_868_365)"/>
|
||||
<path d="M21.3585 0.232422H4.69186C3.1457 0.232422 0.845703 1.12416 0.845703 3.58064V19.2056C0.845703 21.6621 3.1457 22.5539 4.69186 22.5539H23.9226V20.3217H4.70724C4.11493 20.3083 3.40981 20.1052 3.40981 19.2056C3.40981 19.0929 3.42134 18.9925 3.44058 18.9009C3.58416 18.2581 4.18929 18.1007 4.70724 18.0896H23.9226V2.46456C23.9226 1.87256 23.6525 1.30481 23.1716 0.886201C22.6908 0.467593 22.0386 0.232422 21.3585 0.232422ZM21.3585 10.2771L18.7944 9.16099L16.2303 10.2771V2.46456H21.3585V10.2771Z" fill="url(#paint1_radial_868_365)" fill-opacity="0.2"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_868_364" x1="15.3842" y1="34.2754" x2="15.3842" y2="-25.1728" gradientUnits="userSpaceOnUse">
|
||||
<linearGradient id="paint0_linear_868_365" x1="12.3842" y1="31.3428" x2="12.3842" y2="-28.1054" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#E20C66"/>
|
||||
<stop offset="1" stop-color="#E20C66" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="paint1_radial_868_364" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(15.3842 14.3258) rotate(50.5894) scale(14.4454 118.907)">
|
||||
<radialGradient id="paint1_radial_868_365" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(12.3842 11.3931) rotate(50.5894) scale(14.4454 118.907)">
|
||||
<stop stop-color="#EE70A4"/>
|
||||
<stop offset="1" stop-color="#FF33AD"/>
|
||||
</radialGradient>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
29
server/api/content/books/[slug].get.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { readFile } from 'node:fs/promises'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')
|
||||
|
||||
if (!slug) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: 'Slug is required'
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
// Читаем markdown файл из папки content/books
|
||||
// slug теперь представляет номер главы (1, 2, 3, etc.)
|
||||
const content = await readFile(`content/books/${slug}.md`, 'utf-8')
|
||||
|
||||
return {
|
||||
content,
|
||||
slug,
|
||||
chapter: slug
|
||||
}
|
||||
} catch (error) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
statusMessage: 'Глава не найдена'
|
||||
})
|
||||
}
|
||||
})
|