Website Structure
This commit is contained in:
parent
62812f2090
commit
71f0676a62
22365 changed files with 4265753 additions and 791 deletions
24
Fontend-Learner/.gitignore
vendored
24
Fontend-Learner/.gitignore
vendored
|
|
@ -1,24 +0,0 @@
|
|||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
# Nuxt Minimal Starter
|
||||
|
||||
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure to install dependencies:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install
|
||||
|
||||
# pnpm
|
||||
pnpm install
|
||||
|
||||
# yarn
|
||||
yarn install
|
||||
|
||||
# bun
|
||||
bun install
|
||||
```
|
||||
|
||||
## Development Server
|
||||
|
||||
Start the development server on `http://localhost:3000`:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run dev
|
||||
|
||||
# pnpm
|
||||
pnpm dev
|
||||
|
||||
# yarn
|
||||
yarn dev
|
||||
|
||||
# bun
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Production
|
||||
|
||||
Build the application for production:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run build
|
||||
|
||||
# pnpm
|
||||
pnpm build
|
||||
|
||||
# yarn
|
||||
yarn build
|
||||
|
||||
# bun
|
||||
bun run build
|
||||
```
|
||||
|
||||
Locally preview production build:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run preview
|
||||
|
||||
# pnpm
|
||||
pnpm preview
|
||||
|
||||
# yarn
|
||||
yarn preview
|
||||
|
||||
# bun
|
||||
bun run preview
|
||||
```
|
||||
|
||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({
|
||||
compatibilityDate: '2025-07-15',
|
||||
devtools: { enabled: true }
|
||||
})
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
"name": "Fontend-Learner",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"nuxt": "^4.2.2",
|
||||
"vue": "^3.5.26",
|
||||
"vue-router": "^4.6.4"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 KiB |
|
|
@ -1,2 +0,0 @@
|
|||
User-Agent: *
|
||||
Disallow:
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
// https://nuxt.com/docs/guide/concepts/typescript
|
||||
"files": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.app.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.server.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.shared.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
18
Frontend-Learner/.nuxt/app.config.mjs
Normal file
18
Frontend-Learner/.nuxt/app.config.mjs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
import { _replaceAppConfig } from '#app/config'
|
||||
import { defuFn } from 'defu'
|
||||
|
||||
const inlineConfig = {
|
||||
"nuxt": {}
|
||||
}
|
||||
|
||||
// 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)
|
||||
330
Frontend-Learner/.nuxt/components.d.ts
vendored
Normal file
330
Frontend-Learner/.nuxt/components.d.ts
vendored
Normal file
|
|
@ -0,0 +1,330 @@
|
|||
|
||||
import type { DefineComponent, SlotsType } from 'vue'
|
||||
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
|
||||
|
||||
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> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
|
||||
|
||||
|
||||
export const AppHeader: typeof import("../components/common/AppHeader.vue").default
|
||||
export const FormInput: typeof import("../components/common/FormInput.vue").default
|
||||
export const LandingFooter: typeof import("../components/common/LandingFooter.vue").default
|
||||
export const LandingHeader: typeof import("../components/common/LandingHeader.vue").default
|
||||
export const LoadingSkeleton: typeof import("../components/common/LoadingSkeleton.vue").default
|
||||
export const LoadingSpinner: typeof import("../components/common/LoadingSpinner.vue").default
|
||||
export const MobileNav: typeof import("../components/common/MobileNav.vue").default
|
||||
export const CourseCard: typeof import("../components/course/CourseCard.vue").default
|
||||
export const UserAvatar: typeof import("../components/user/UserAvatar.vue").default
|
||||
export const UserMenu: typeof import("../components/user/UserMenu.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/dist/app/components/nuxt-stubs").NuxtImg
|
||||
export const NuxtPicture: typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs").NuxtPicture
|
||||
export const QAjaxBar: typeof import("quasar").QAjaxBar
|
||||
export const QAvatar: typeof import("quasar").QAvatar
|
||||
export const QBadge: typeof import("quasar").QBadge
|
||||
export const QBanner: typeof import("quasar").QBanner
|
||||
export const QBar: typeof import("quasar").QBar
|
||||
export const QBreadcrumbs: typeof import("quasar").QBreadcrumbs
|
||||
export const QBreadcrumbsEl: typeof import("quasar").QBreadcrumbsEl
|
||||
export const QBtn: typeof import("quasar").QBtn
|
||||
export const QBtnDropdown: typeof import("quasar").QBtnDropdown
|
||||
export const QBtnGroup: typeof import("quasar").QBtnGroup
|
||||
export const QBtnToggle: typeof import("quasar").QBtnToggle
|
||||
export const QCard: typeof import("quasar").QCard
|
||||
export const QCardActions: typeof import("quasar").QCardActions
|
||||
export const QCardSection: typeof import("quasar").QCardSection
|
||||
export const QCarousel: typeof import("quasar").QCarousel
|
||||
export const QCarouselControl: typeof import("quasar").QCarouselControl
|
||||
export const QCarouselSlide: typeof import("quasar").QCarouselSlide
|
||||
export const QChatMessage: typeof import("quasar").QChatMessage
|
||||
export const QCheckbox: typeof import("quasar").QCheckbox
|
||||
export const QChip: typeof import("quasar").QChip
|
||||
export const QCircularProgress: typeof import("quasar").QCircularProgress
|
||||
export const QColor: typeof import("quasar").QColor
|
||||
export const QDate: typeof import("quasar").QDate
|
||||
export const QDialog: typeof import("quasar").QDialog
|
||||
export const QDrawer: typeof import("quasar").QDrawer
|
||||
export const QEditor: typeof import("quasar").QEditor
|
||||
export const QExpansionItem: typeof import("quasar").QExpansionItem
|
||||
export const QFab: typeof import("quasar").QFab
|
||||
export const QFabAction: typeof import("quasar").QFabAction
|
||||
export const QField: typeof import("quasar").QField
|
||||
export const QFile: typeof import("quasar").QFile
|
||||
export const QFooter: typeof import("quasar").QFooter
|
||||
export const QForm: typeof import("quasar").QForm
|
||||
export const QFormChildMixin: typeof import("quasar").QFormChildMixin
|
||||
export const QHeader: typeof import("quasar").QHeader
|
||||
export const QIcon: typeof import("quasar").QIcon
|
||||
export const QImg: typeof import("quasar").QImg
|
||||
export const QInfiniteScroll: typeof import("quasar").QInfiniteScroll
|
||||
export const QInnerLoading: typeof import("quasar").QInnerLoading
|
||||
export const QInput: typeof import("quasar").QInput
|
||||
export const QIntersection: typeof import("quasar").QIntersection
|
||||
export const QItem: typeof import("quasar").QItem
|
||||
export const QItemLabel: typeof import("quasar").QItemLabel
|
||||
export const QItemSection: typeof import("quasar").QItemSection
|
||||
export const QList: typeof import("quasar").QList
|
||||
export const QKnob: typeof import("quasar").QKnob
|
||||
export const QLayout: typeof import("quasar").QLayout
|
||||
export const QLinearProgress: typeof import("quasar").QLinearProgress
|
||||
export const QMarkupTable: typeof import("quasar").QMarkupTable
|
||||
export const QMenu: typeof import("quasar").QMenu
|
||||
export const QNoSsr: typeof import("quasar").QNoSsr
|
||||
export const QOptionGroup: typeof import("quasar").QOptionGroup
|
||||
export const QPage: typeof import("quasar").QPage
|
||||
export const QPageContainer: typeof import("quasar").QPageContainer
|
||||
export const QPageScroller: typeof import("quasar").QPageScroller
|
||||
export const QPageSticky: typeof import("quasar").QPageSticky
|
||||
export const QPagination: typeof import("quasar").QPagination
|
||||
export const QParallax: typeof import("quasar").QParallax
|
||||
export const QPopupEdit: typeof import("quasar").QPopupEdit
|
||||
export const QPopupProxy: typeof import("quasar").QPopupProxy
|
||||
export const QPullToRefresh: typeof import("quasar").QPullToRefresh
|
||||
export const QRadio: typeof import("quasar").QRadio
|
||||
export const QRange: typeof import("quasar").QRange
|
||||
export const QRating: typeof import("quasar").QRating
|
||||
export const QResizeObserver: typeof import("quasar").QResizeObserver
|
||||
export const QResponsive: typeof import("quasar").QResponsive
|
||||
export const QScrollArea: typeof import("quasar").QScrollArea
|
||||
export const QScrollObserver: typeof import("quasar").QScrollObserver
|
||||
export const QSelect: typeof import("quasar").QSelect
|
||||
export const QSeparator: typeof import("quasar").QSeparator
|
||||
export const QSkeleton: typeof import("quasar").QSkeleton
|
||||
export const QSlideItem: typeof import("quasar").QSlideItem
|
||||
export const QSlideTransition: typeof import("quasar").QSlideTransition
|
||||
export const QSlider: typeof import("quasar").QSlider
|
||||
export const QSpace: typeof import("quasar").QSpace
|
||||
export const QSpinner: typeof import("quasar").QSpinner
|
||||
export const QSpinnerAudio: typeof import("quasar").QSpinnerAudio
|
||||
export const QSpinnerBall: typeof import("quasar").QSpinnerBall
|
||||
export const QSpinnerBars: typeof import("quasar").QSpinnerBars
|
||||
export const QSpinnerBox: typeof import("quasar").QSpinnerBox
|
||||
export const QSpinnerClock: typeof import("quasar").QSpinnerClock
|
||||
export const QSpinnerComment: typeof import("quasar").QSpinnerComment
|
||||
export const QSpinnerCube: typeof import("quasar").QSpinnerCube
|
||||
export const QSpinnerDots: typeof import("quasar").QSpinnerDots
|
||||
export const QSpinnerFacebook: typeof import("quasar").QSpinnerFacebook
|
||||
export const QSpinnerGears: typeof import("quasar").QSpinnerGears
|
||||
export const QSpinnerGrid: typeof import("quasar").QSpinnerGrid
|
||||
export const QSpinnerHearts: typeof import("quasar").QSpinnerHearts
|
||||
export const QSpinnerHourglass: typeof import("quasar").QSpinnerHourglass
|
||||
export const QSpinnerInfinity: typeof import("quasar").QSpinnerInfinity
|
||||
export const QSpinnerIos: typeof import("quasar").QSpinnerIos
|
||||
export const QSpinnerOrbit: typeof import("quasar").QSpinnerOrbit
|
||||
export const QSpinnerOval: typeof import("quasar").QSpinnerOval
|
||||
export const QSpinnerPie: typeof import("quasar").QSpinnerPie
|
||||
export const QSpinnerPuff: typeof import("quasar").QSpinnerPuff
|
||||
export const QSpinnerRadio: typeof import("quasar").QSpinnerRadio
|
||||
export const QSpinnerRings: typeof import("quasar").QSpinnerRings
|
||||
export const QSpinnerTail: typeof import("quasar").QSpinnerTail
|
||||
export const QSplitter: typeof import("quasar").QSplitter
|
||||
export const QStep: typeof import("quasar").QStep
|
||||
export const QStepper: typeof import("quasar").QStepper
|
||||
export const QStepperNavigation: typeof import("quasar").QStepperNavigation
|
||||
export const QTabPanel: typeof import("quasar").QTabPanel
|
||||
export const QTabPanels: typeof import("quasar").QTabPanels
|
||||
export const QTable: typeof import("quasar").QTable
|
||||
export const QTd: typeof import("quasar").QTd
|
||||
export const QTh: typeof import("quasar").QTh
|
||||
export const QTr: typeof import("quasar").QTr
|
||||
export const QRouteTab: typeof import("quasar").QRouteTab
|
||||
export const QTab: typeof import("quasar").QTab
|
||||
export const QTabs: typeof import("quasar").QTabs
|
||||
export const QTime: typeof import("quasar").QTime
|
||||
export const QTimeline: typeof import("quasar").QTimeline
|
||||
export const QTimelineEntry: typeof import("quasar").QTimelineEntry
|
||||
export const QToggle: typeof import("quasar").QToggle
|
||||
export const QToolbar: typeof import("quasar").QToolbar
|
||||
export const QToolbarTitle: typeof import("quasar").QToolbarTitle
|
||||
export const QTooltip: typeof import("quasar").QTooltip
|
||||
export const QTree: typeof import("quasar").QTree
|
||||
export const QUploader: typeof import("quasar").QUploader
|
||||
export const QUploaderAddTrigger: typeof import("quasar").QUploaderAddTrigger
|
||||
export const QVideo: typeof import("quasar").QVideo
|
||||
export const QVirtualScroll: typeof import("quasar").QVirtualScroll
|
||||
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 LazyAppHeader: LazyComponent<typeof import("../components/common/AppHeader.vue").default>
|
||||
export const LazyFormInput: LazyComponent<typeof import("../components/common/FormInput.vue").default>
|
||||
export const LazyLandingFooter: LazyComponent<typeof import("../components/common/LandingFooter.vue").default>
|
||||
export const LazyLandingHeader: LazyComponent<typeof import("../components/common/LandingHeader.vue").default>
|
||||
export const LazyLoadingSkeleton: LazyComponent<typeof import("../components/common/LoadingSkeleton.vue").default>
|
||||
export const LazyLoadingSpinner: LazyComponent<typeof import("../components/common/LoadingSpinner.vue").default>
|
||||
export const LazyMobileNav: LazyComponent<typeof import("../components/common/MobileNav.vue").default>
|
||||
export const LazyCourseCard: LazyComponent<typeof import("../components/course/CourseCard.vue").default>
|
||||
export const LazyUserAvatar: LazyComponent<typeof import("../components/user/UserAvatar.vue").default>
|
||||
export const LazyUserMenu: LazyComponent<typeof import("../components/user/UserMenu.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/dist/app/components/nuxt-stubs").NuxtImg>
|
||||
export const LazyNuxtPicture: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs").NuxtPicture>
|
||||
export const LazyQAjaxBar: LazyComponent<typeof import("quasar").QAjaxBar>
|
||||
export const LazyQAvatar: LazyComponent<typeof import("quasar").QAvatar>
|
||||
export const LazyQBadge: LazyComponent<typeof import("quasar").QBadge>
|
||||
export const LazyQBanner: LazyComponent<typeof import("quasar").QBanner>
|
||||
export const LazyQBar: LazyComponent<typeof import("quasar").QBar>
|
||||
export const LazyQBreadcrumbs: LazyComponent<typeof import("quasar").QBreadcrumbs>
|
||||
export const LazyQBreadcrumbsEl: LazyComponent<typeof import("quasar").QBreadcrumbsEl>
|
||||
export const LazyQBtn: LazyComponent<typeof import("quasar").QBtn>
|
||||
export const LazyQBtnDropdown: LazyComponent<typeof import("quasar").QBtnDropdown>
|
||||
export const LazyQBtnGroup: LazyComponent<typeof import("quasar").QBtnGroup>
|
||||
export const LazyQBtnToggle: LazyComponent<typeof import("quasar").QBtnToggle>
|
||||
export const LazyQCard: LazyComponent<typeof import("quasar").QCard>
|
||||
export const LazyQCardActions: LazyComponent<typeof import("quasar").QCardActions>
|
||||
export const LazyQCardSection: LazyComponent<typeof import("quasar").QCardSection>
|
||||
export const LazyQCarousel: LazyComponent<typeof import("quasar").QCarousel>
|
||||
export const LazyQCarouselControl: LazyComponent<typeof import("quasar").QCarouselControl>
|
||||
export const LazyQCarouselSlide: LazyComponent<typeof import("quasar").QCarouselSlide>
|
||||
export const LazyQChatMessage: LazyComponent<typeof import("quasar").QChatMessage>
|
||||
export const LazyQCheckbox: LazyComponent<typeof import("quasar").QCheckbox>
|
||||
export const LazyQChip: LazyComponent<typeof import("quasar").QChip>
|
||||
export const LazyQCircularProgress: LazyComponent<typeof import("quasar").QCircularProgress>
|
||||
export const LazyQColor: LazyComponent<typeof import("quasar").QColor>
|
||||
export const LazyQDate: LazyComponent<typeof import("quasar").QDate>
|
||||
export const LazyQDialog: LazyComponent<typeof import("quasar").QDialog>
|
||||
export const LazyQDrawer: LazyComponent<typeof import("quasar").QDrawer>
|
||||
export const LazyQEditor: LazyComponent<typeof import("quasar").QEditor>
|
||||
export const LazyQExpansionItem: LazyComponent<typeof import("quasar").QExpansionItem>
|
||||
export const LazyQFab: LazyComponent<typeof import("quasar").QFab>
|
||||
export const LazyQFabAction: LazyComponent<typeof import("quasar").QFabAction>
|
||||
export const LazyQField: LazyComponent<typeof import("quasar").QField>
|
||||
export const LazyQFile: LazyComponent<typeof import("quasar").QFile>
|
||||
export const LazyQFooter: LazyComponent<typeof import("quasar").QFooter>
|
||||
export const LazyQForm: LazyComponent<typeof import("quasar").QForm>
|
||||
export const LazyQFormChildMixin: LazyComponent<typeof import("quasar").QFormChildMixin>
|
||||
export const LazyQHeader: LazyComponent<typeof import("quasar").QHeader>
|
||||
export const LazyQIcon: LazyComponent<typeof import("quasar").QIcon>
|
||||
export const LazyQImg: LazyComponent<typeof import("quasar").QImg>
|
||||
export const LazyQInfiniteScroll: LazyComponent<typeof import("quasar").QInfiniteScroll>
|
||||
export const LazyQInnerLoading: LazyComponent<typeof import("quasar").QInnerLoading>
|
||||
export const LazyQInput: LazyComponent<typeof import("quasar").QInput>
|
||||
export const LazyQIntersection: LazyComponent<typeof import("quasar").QIntersection>
|
||||
export const LazyQItem: LazyComponent<typeof import("quasar").QItem>
|
||||
export const LazyQItemLabel: LazyComponent<typeof import("quasar").QItemLabel>
|
||||
export const LazyQItemSection: LazyComponent<typeof import("quasar").QItemSection>
|
||||
export const LazyQList: LazyComponent<typeof import("quasar").QList>
|
||||
export const LazyQKnob: LazyComponent<typeof import("quasar").QKnob>
|
||||
export const LazyQLayout: LazyComponent<typeof import("quasar").QLayout>
|
||||
export const LazyQLinearProgress: LazyComponent<typeof import("quasar").QLinearProgress>
|
||||
export const LazyQMarkupTable: LazyComponent<typeof import("quasar").QMarkupTable>
|
||||
export const LazyQMenu: LazyComponent<typeof import("quasar").QMenu>
|
||||
export const LazyQNoSsr: LazyComponent<typeof import("quasar").QNoSsr>
|
||||
export const LazyQOptionGroup: LazyComponent<typeof import("quasar").QOptionGroup>
|
||||
export const LazyQPage: LazyComponent<typeof import("quasar").QPage>
|
||||
export const LazyQPageContainer: LazyComponent<typeof import("quasar").QPageContainer>
|
||||
export const LazyQPageScroller: LazyComponent<typeof import("quasar").QPageScroller>
|
||||
export const LazyQPageSticky: LazyComponent<typeof import("quasar").QPageSticky>
|
||||
export const LazyQPagination: LazyComponent<typeof import("quasar").QPagination>
|
||||
export const LazyQParallax: LazyComponent<typeof import("quasar").QParallax>
|
||||
export const LazyQPopupEdit: LazyComponent<typeof import("quasar").QPopupEdit>
|
||||
export const LazyQPopupProxy: LazyComponent<typeof import("quasar").QPopupProxy>
|
||||
export const LazyQPullToRefresh: LazyComponent<typeof import("quasar").QPullToRefresh>
|
||||
export const LazyQRadio: LazyComponent<typeof import("quasar").QRadio>
|
||||
export const LazyQRange: LazyComponent<typeof import("quasar").QRange>
|
||||
export const LazyQRating: LazyComponent<typeof import("quasar").QRating>
|
||||
export const LazyQResizeObserver: LazyComponent<typeof import("quasar").QResizeObserver>
|
||||
export const LazyQResponsive: LazyComponent<typeof import("quasar").QResponsive>
|
||||
export const LazyQScrollArea: LazyComponent<typeof import("quasar").QScrollArea>
|
||||
export const LazyQScrollObserver: LazyComponent<typeof import("quasar").QScrollObserver>
|
||||
export const LazyQSelect: LazyComponent<typeof import("quasar").QSelect>
|
||||
export const LazyQSeparator: LazyComponent<typeof import("quasar").QSeparator>
|
||||
export const LazyQSkeleton: LazyComponent<typeof import("quasar").QSkeleton>
|
||||
export const LazyQSlideItem: LazyComponent<typeof import("quasar").QSlideItem>
|
||||
export const LazyQSlideTransition: LazyComponent<typeof import("quasar").QSlideTransition>
|
||||
export const LazyQSlider: LazyComponent<typeof import("quasar").QSlider>
|
||||
export const LazyQSpace: LazyComponent<typeof import("quasar").QSpace>
|
||||
export const LazyQSpinner: LazyComponent<typeof import("quasar").QSpinner>
|
||||
export const LazyQSpinnerAudio: LazyComponent<typeof import("quasar").QSpinnerAudio>
|
||||
export const LazyQSpinnerBall: LazyComponent<typeof import("quasar").QSpinnerBall>
|
||||
export const LazyQSpinnerBars: LazyComponent<typeof import("quasar").QSpinnerBars>
|
||||
export const LazyQSpinnerBox: LazyComponent<typeof import("quasar").QSpinnerBox>
|
||||
export const LazyQSpinnerClock: LazyComponent<typeof import("quasar").QSpinnerClock>
|
||||
export const LazyQSpinnerComment: LazyComponent<typeof import("quasar").QSpinnerComment>
|
||||
export const LazyQSpinnerCube: LazyComponent<typeof import("quasar").QSpinnerCube>
|
||||
export const LazyQSpinnerDots: LazyComponent<typeof import("quasar").QSpinnerDots>
|
||||
export const LazyQSpinnerFacebook: LazyComponent<typeof import("quasar").QSpinnerFacebook>
|
||||
export const LazyQSpinnerGears: LazyComponent<typeof import("quasar").QSpinnerGears>
|
||||
export const LazyQSpinnerGrid: LazyComponent<typeof import("quasar").QSpinnerGrid>
|
||||
export const LazyQSpinnerHearts: LazyComponent<typeof import("quasar").QSpinnerHearts>
|
||||
export const LazyQSpinnerHourglass: LazyComponent<typeof import("quasar").QSpinnerHourglass>
|
||||
export const LazyQSpinnerInfinity: LazyComponent<typeof import("quasar").QSpinnerInfinity>
|
||||
export const LazyQSpinnerIos: LazyComponent<typeof import("quasar").QSpinnerIos>
|
||||
export const LazyQSpinnerOrbit: LazyComponent<typeof import("quasar").QSpinnerOrbit>
|
||||
export const LazyQSpinnerOval: LazyComponent<typeof import("quasar").QSpinnerOval>
|
||||
export const LazyQSpinnerPie: LazyComponent<typeof import("quasar").QSpinnerPie>
|
||||
export const LazyQSpinnerPuff: LazyComponent<typeof import("quasar").QSpinnerPuff>
|
||||
export const LazyQSpinnerRadio: LazyComponent<typeof import("quasar").QSpinnerRadio>
|
||||
export const LazyQSpinnerRings: LazyComponent<typeof import("quasar").QSpinnerRings>
|
||||
export const LazyQSpinnerTail: LazyComponent<typeof import("quasar").QSpinnerTail>
|
||||
export const LazyQSplitter: LazyComponent<typeof import("quasar").QSplitter>
|
||||
export const LazyQStep: LazyComponent<typeof import("quasar").QStep>
|
||||
export const LazyQStepper: LazyComponent<typeof import("quasar").QStepper>
|
||||
export const LazyQStepperNavigation: LazyComponent<typeof import("quasar").QStepperNavigation>
|
||||
export const LazyQTabPanel: LazyComponent<typeof import("quasar").QTabPanel>
|
||||
export const LazyQTabPanels: LazyComponent<typeof import("quasar").QTabPanels>
|
||||
export const LazyQTable: LazyComponent<typeof import("quasar").QTable>
|
||||
export const LazyQTd: LazyComponent<typeof import("quasar").QTd>
|
||||
export const LazyQTh: LazyComponent<typeof import("quasar").QTh>
|
||||
export const LazyQTr: LazyComponent<typeof import("quasar").QTr>
|
||||
export const LazyQRouteTab: LazyComponent<typeof import("quasar").QRouteTab>
|
||||
export const LazyQTab: LazyComponent<typeof import("quasar").QTab>
|
||||
export const LazyQTabs: LazyComponent<typeof import("quasar").QTabs>
|
||||
export const LazyQTime: LazyComponent<typeof import("quasar").QTime>
|
||||
export const LazyQTimeline: LazyComponent<typeof import("quasar").QTimeline>
|
||||
export const LazyQTimelineEntry: LazyComponent<typeof import("quasar").QTimelineEntry>
|
||||
export const LazyQToggle: LazyComponent<typeof import("quasar").QToggle>
|
||||
export const LazyQToolbar: LazyComponent<typeof import("quasar").QToolbar>
|
||||
export const LazyQToolbarTitle: LazyComponent<typeof import("quasar").QToolbarTitle>
|
||||
export const LazyQTooltip: LazyComponent<typeof import("quasar").QTooltip>
|
||||
export const LazyQTree: LazyComponent<typeof import("quasar").QTree>
|
||||
export const LazyQUploader: LazyComponent<typeof import("quasar").QUploader>
|
||||
export const LazyQUploaderAddTrigger: LazyComponent<typeof import("quasar").QUploaderAddTrigger>
|
||||
export const LazyQVideo: LazyComponent<typeof import("quasar").QVideo>
|
||||
export const LazyQVirtualScroll: LazyComponent<typeof import("quasar").QVirtualScroll>
|
||||
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 componentNames: string[]
|
||||
2410
Frontend-Learner/.nuxt/dev/index.mjs
Normal file
2410
Frontend-Learner/.nuxt/dev/index.mjs
Normal file
File diff suppressed because it is too large
Load diff
1
Frontend-Learner/.nuxt/dev/index.mjs.map
Normal file
1
Frontend-Learner/.nuxt/dev/index.mjs.map
Normal file
File diff suppressed because one or more lines are too long
1
Frontend-Learner/.nuxt/dist/server/client.manifest.mjs
vendored
Normal file
1
Frontend-Learner/.nuxt/dist/server/client.manifest.mjs
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export { default } from "file:///C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/vite-builder/dist/runtime/client.manifest.mjs"
|
||||
1
Frontend-Learner/.nuxt/dist/server/client.precomputed.mjs
vendored
Normal file
1
Frontend-Learner/.nuxt/dist/server/client.precomputed.mjs
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export default undefined
|
||||
1
Frontend-Learner/.nuxt/dist/server/server.mjs
vendored
Normal file
1
Frontend-Learner/.nuxt/dist/server/server.mjs
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export { default } from "file:///C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/vite-builder/dist/runtime/vite-node.mjs"
|
||||
36
Frontend-Learner/.nuxt/imports.d.ts
vendored
Normal file
36
Frontend-Learner/.nuxt/imports.d.ts
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
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, useScriptDatabuddyAnalytics, useScriptRedditPixel, useScriptPayPal } 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, onWatcherCleanup, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, 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 { definePageMeta } from '../node_modules/nuxt/dist/pages/runtime/composables';
|
||||
export { defineLazyHydrationComponent } from '#app/composables/lazy-hydration';
|
||||
export { useAuth } from '../composables/useAuth';
|
||||
export { useFormValidation, ValidationRule, FieldErrors } from '../composables/useFormValidation';
|
||||
export { useDialogPluginComponent, useFormChild, useInterval, useMeta, useQuasar, useRenderCache, useSplitAttrs, useTick, useTimeout, Notify } from 'quasar';
|
||||
export { useNuxtDevTools } from '../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools';
|
||||
1
Frontend-Learner/.nuxt/manifest/latest.json
Normal file
1
Frontend-Learner/.nuxt/manifest/latest.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":"dev","timestamp":1768275611480}
|
||||
1
Frontend-Learner/.nuxt/manifest/meta/dev.json
Normal file
1
Frontend-Learner/.nuxt/manifest/meta/dev.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"id":"dev","timestamp":1768275611480,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
||||
17
Frontend-Learner/.nuxt/nitro.json
Normal file
17
Frontend-Learner/.nuxt/nitro.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"date": "2026-01-13T03:40:17.768Z",
|
||||
"preset": "nitro-dev",
|
||||
"framework": {
|
||||
"name": "nuxt",
|
||||
"version": "3.20.2"
|
||||
},
|
||||
"versions": {
|
||||
"nitro": "2.12.8"
|
||||
},
|
||||
"dev": {
|
||||
"pid": 14040,
|
||||
"workerAddress": {
|
||||
"socketPath": "\\\\.\\pipe\\nitro-worker-14040-1-1-9354.sock"
|
||||
}
|
||||
}
|
||||
}
|
||||
25
Frontend-Learner/.nuxt/nuxt.d.ts
vendored
Normal file
25
Frontend-Learner/.nuxt/nuxt.d.ts
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/// <reference types="quasar" />
|
||||
/// <reference types="nuxt-quasar-ui" />
|
||||
/// <reference types="@nuxt/telemetry" />
|
||||
/// <reference types="@nuxtjs/tailwindcss" />
|
||||
/// <reference types="@nuxt/devtools" />
|
||||
/// <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="C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/nitro-server/dist/index.mjs" />
|
||||
/// <reference path="quasar.shims.d.ts" />
|
||||
/// <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="types/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" />
|
||||
|
||||
export {}
|
||||
9
Frontend-Learner/.nuxt/nuxt.json
Normal file
9
Frontend-Learner/.nuxt/nuxt.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"_hash": "WzOS3zXJIH1B1GkjupdnkxKrBJTgPadSNx-CHvTdgko",
|
||||
"project": {
|
||||
"rootDir": "C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner"
|
||||
},
|
||||
"versions": {
|
||||
"nuxt": "3.20.2"
|
||||
}
|
||||
}
|
||||
16
Frontend-Learner/.nuxt/quasar.config.mjs
Normal file
16
Frontend-Learner/.nuxt/quasar.config.mjs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import lang from "quasar/lang/en-US.js"
|
||||
import iconSet from "quasar/icon-set/material-icons.js"
|
||||
import { Notify } from "quasar"
|
||||
|
||||
|
||||
export const componentsWithDefaults = { }
|
||||
|
||||
export const appConfigKey = "nuxtQuasar"
|
||||
|
||||
export const quasarNuxtConfig = {
|
||||
lang,
|
||||
iconSet,
|
||||
components: {"defaults":{},"autoImport":true},
|
||||
plugins: {Notify},
|
||||
config: {"brand":{"primary":"#4b82f7","secondary":"#2f5ed7","accent":"#44d4a8","dark":"#0f1827"}}
|
||||
}
|
||||
152
Frontend-Learner/.nuxt/quasar.shims.d.ts
vendored
Normal file
152
Frontend-Learner/.nuxt/quasar.shims.d.ts
vendored
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
type KeysMatching<T, V> = {
|
||||
[K in keyof T]-?: T[K] extends V ? K : never
|
||||
}[keyof T] & keyof T
|
||||
|
||||
type OptionalKeys<T extends object> = Exclude<{
|
||||
[K in keyof T]: T extends Record<K, T[K]> ? never : K
|
||||
}[keyof T], undefined>
|
||||
|
||||
type OmitMatching<T extends object, V> = Omit<T, KeysMatching<T, V>>
|
||||
|
||||
type OmitFnProps<T extends object> = OmitMatching<T, ((...args: any[]) => any) | undefined>
|
||||
|
||||
type PickOptionalProps<T extends object> = Pick<T, OptionalKeys<T>>
|
||||
|
||||
declare module 'nuxt-quasar-ui' {
|
||||
interface QuasarComponentDefaults {
|
||||
QAjaxBar?: PickOptionalProps<OmitFnProps<import("quasar").QAjaxBarProps>>
|
||||
QAvatar?: PickOptionalProps<OmitFnProps<import("quasar").QAvatarProps>>
|
||||
QBadge?: PickOptionalProps<OmitFnProps<import("quasar").QBadgeProps>>
|
||||
QBanner?: PickOptionalProps<OmitFnProps<import("quasar").QBannerProps>>
|
||||
QBar?: PickOptionalProps<OmitFnProps<import("quasar").QBarProps>>
|
||||
QBreadcrumbs?: PickOptionalProps<OmitFnProps<import("quasar").QBreadcrumbsProps>>
|
||||
QBreadcrumbsEl?: PickOptionalProps<OmitFnProps<import("quasar").QBreadcrumbsElProps>>
|
||||
QBtn?: PickOptionalProps<OmitFnProps<import("quasar").QBtnProps>>
|
||||
QBtnDropdown?: PickOptionalProps<OmitFnProps<import("quasar").QBtnDropdownProps>>
|
||||
QBtnGroup?: PickOptionalProps<OmitFnProps<import("quasar").QBtnGroupProps>>
|
||||
QBtnToggle?: PickOptionalProps<OmitFnProps<import("quasar").QBtnToggleProps>>
|
||||
QCard?: PickOptionalProps<OmitFnProps<import("quasar").QCardProps>>
|
||||
QCardActions?: PickOptionalProps<OmitFnProps<import("quasar").QCardActionsProps>>
|
||||
QCardSection?: PickOptionalProps<OmitFnProps<import("quasar").QCardSectionProps>>
|
||||
QCarousel?: PickOptionalProps<OmitFnProps<import("quasar").QCarouselProps>>
|
||||
QCarouselControl?: PickOptionalProps<OmitFnProps<import("quasar").QCarouselControlProps>>
|
||||
QCarouselSlide?: PickOptionalProps<OmitFnProps<import("quasar").QCarouselSlideProps>>
|
||||
QChatMessage?: PickOptionalProps<OmitFnProps<import("quasar").QChatMessageProps>>
|
||||
QCheckbox?: PickOptionalProps<OmitFnProps<import("quasar").QCheckboxProps>>
|
||||
QChip?: PickOptionalProps<OmitFnProps<import("quasar").QChipProps>>
|
||||
QCircularProgress?: PickOptionalProps<OmitFnProps<import("quasar").QCircularProgressProps>>
|
||||
QColor?: PickOptionalProps<OmitFnProps<import("quasar").QColorProps>>
|
||||
QDate?: PickOptionalProps<OmitFnProps<import("quasar").QDateProps>>
|
||||
QDialog?: PickOptionalProps<OmitFnProps<import("quasar").QDialogProps>>
|
||||
QDrawer?: PickOptionalProps<OmitFnProps<import("quasar").QDrawerProps>>
|
||||
QEditor?: PickOptionalProps<OmitFnProps<import("quasar").QEditorProps>>
|
||||
QExpansionItem?: PickOptionalProps<OmitFnProps<import("quasar").QExpansionItemProps>>
|
||||
QFab?: PickOptionalProps<OmitFnProps<import("quasar").QFabProps>>
|
||||
QFabAction?: PickOptionalProps<OmitFnProps<import("quasar").QFabActionProps>>
|
||||
QField?: PickOptionalProps<OmitFnProps<import("quasar").QFieldProps>>
|
||||
QFile?: PickOptionalProps<OmitFnProps<import("quasar").QFileProps>>
|
||||
QFooter?: PickOptionalProps<OmitFnProps<import("quasar").QFooterProps>>
|
||||
QForm?: PickOptionalProps<OmitFnProps<import("quasar").QFormProps>>
|
||||
QFormChildMixin?: PickOptionalProps<OmitFnProps<import("quasar").QFormChildMixinProps>>
|
||||
QHeader?: PickOptionalProps<OmitFnProps<import("quasar").QHeaderProps>>
|
||||
QIcon?: PickOptionalProps<OmitFnProps<import("quasar").QIconProps>>
|
||||
QImg?: PickOptionalProps<OmitFnProps<import("quasar").QImgProps>>
|
||||
QInfiniteScroll?: PickOptionalProps<OmitFnProps<import("quasar").QInfiniteScrollProps>>
|
||||
QInnerLoading?: PickOptionalProps<OmitFnProps<import("quasar").QInnerLoadingProps>>
|
||||
QInput?: PickOptionalProps<OmitFnProps<import("quasar").QInputProps>>
|
||||
QIntersection?: PickOptionalProps<OmitFnProps<import("quasar").QIntersectionProps>>
|
||||
QItem?: PickOptionalProps<OmitFnProps<import("quasar").QItemProps>>
|
||||
QItemLabel?: PickOptionalProps<OmitFnProps<import("quasar").QItemLabelProps>>
|
||||
QItemSection?: PickOptionalProps<OmitFnProps<import("quasar").QItemSectionProps>>
|
||||
QList?: PickOptionalProps<OmitFnProps<import("quasar").QListProps>>
|
||||
QKnob?: PickOptionalProps<OmitFnProps<import("quasar").QKnobProps>>
|
||||
QLayout?: PickOptionalProps<OmitFnProps<import("quasar").QLayoutProps>>
|
||||
QLinearProgress?: PickOptionalProps<OmitFnProps<import("quasar").QLinearProgressProps>>
|
||||
QMarkupTable?: PickOptionalProps<OmitFnProps<import("quasar").QMarkupTableProps>>
|
||||
QMenu?: PickOptionalProps<OmitFnProps<import("quasar").QMenuProps>>
|
||||
QNoSsr?: PickOptionalProps<OmitFnProps<import("quasar").QNoSsrProps>>
|
||||
QOptionGroup?: PickOptionalProps<OmitFnProps<import("quasar").QOptionGroupProps>>
|
||||
QPage?: PickOptionalProps<OmitFnProps<import("quasar").QPageProps>>
|
||||
QPageContainer?: PickOptionalProps<OmitFnProps<import("quasar").QPageContainerProps>>
|
||||
QPageScroller?: PickOptionalProps<OmitFnProps<import("quasar").QPageScrollerProps>>
|
||||
QPageSticky?: PickOptionalProps<OmitFnProps<import("quasar").QPageStickyProps>>
|
||||
QPagination?: PickOptionalProps<OmitFnProps<import("quasar").QPaginationProps>>
|
||||
QParallax?: PickOptionalProps<OmitFnProps<import("quasar").QParallaxProps>>
|
||||
QPopupEdit?: PickOptionalProps<OmitFnProps<import("quasar").QPopupEditProps>>
|
||||
QPopupProxy?: PickOptionalProps<OmitFnProps<import("quasar").QPopupProxyProps>>
|
||||
QPullToRefresh?: PickOptionalProps<OmitFnProps<import("quasar").QPullToRefreshProps>>
|
||||
QRadio?: PickOptionalProps<OmitFnProps<import("quasar").QRadioProps>>
|
||||
QRange?: PickOptionalProps<OmitFnProps<import("quasar").QRangeProps>>
|
||||
QRating?: PickOptionalProps<OmitFnProps<import("quasar").QRatingProps>>
|
||||
QResizeObserver?: PickOptionalProps<OmitFnProps<import("quasar").QResizeObserverProps>>
|
||||
QResponsive?: PickOptionalProps<OmitFnProps<import("quasar").QResponsiveProps>>
|
||||
QScrollArea?: PickOptionalProps<OmitFnProps<import("quasar").QScrollAreaProps>>
|
||||
QScrollObserver?: PickOptionalProps<OmitFnProps<import("quasar").QScrollObserverProps>>
|
||||
QSelect?: PickOptionalProps<OmitFnProps<import("quasar").QSelectProps>>
|
||||
QSeparator?: PickOptionalProps<OmitFnProps<import("quasar").QSeparatorProps>>
|
||||
QSkeleton?: PickOptionalProps<OmitFnProps<import("quasar").QSkeletonProps>>
|
||||
QSlideItem?: PickOptionalProps<OmitFnProps<import("quasar").QSlideItemProps>>
|
||||
QSlideTransition?: PickOptionalProps<OmitFnProps<import("quasar").QSlideTransitionProps>>
|
||||
QSlider?: PickOptionalProps<OmitFnProps<import("quasar").QSliderProps>>
|
||||
QSpace?: PickOptionalProps<OmitFnProps<import("quasar").QSpaceProps>>
|
||||
QSpinner?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerProps>>
|
||||
QSpinnerAudio?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerAudioProps>>
|
||||
QSpinnerBall?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerBallProps>>
|
||||
QSpinnerBars?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerBarsProps>>
|
||||
QSpinnerBox?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerBoxProps>>
|
||||
QSpinnerClock?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerClockProps>>
|
||||
QSpinnerComment?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerCommentProps>>
|
||||
QSpinnerCube?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerCubeProps>>
|
||||
QSpinnerDots?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerDotsProps>>
|
||||
QSpinnerFacebook?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerFacebookProps>>
|
||||
QSpinnerGears?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerGearsProps>>
|
||||
QSpinnerGrid?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerGridProps>>
|
||||
QSpinnerHearts?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerHeartsProps>>
|
||||
QSpinnerHourglass?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerHourglassProps>>
|
||||
QSpinnerInfinity?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerInfinityProps>>
|
||||
QSpinnerIos?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerIosProps>>
|
||||
QSpinnerOrbit?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerOrbitProps>>
|
||||
QSpinnerOval?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerOvalProps>>
|
||||
QSpinnerPie?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerPieProps>>
|
||||
QSpinnerPuff?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerPuffProps>>
|
||||
QSpinnerRadio?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerRadioProps>>
|
||||
QSpinnerRings?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerRingsProps>>
|
||||
QSpinnerTail?: PickOptionalProps<OmitFnProps<import("quasar").QSpinnerTailProps>>
|
||||
QSplitter?: PickOptionalProps<OmitFnProps<import("quasar").QSplitterProps>>
|
||||
QStep?: PickOptionalProps<OmitFnProps<import("quasar").QStepProps>>
|
||||
QStepper?: PickOptionalProps<OmitFnProps<import("quasar").QStepperProps>>
|
||||
QStepperNavigation?: PickOptionalProps<OmitFnProps<import("quasar").QStepperNavigationProps>>
|
||||
QTabPanel?: PickOptionalProps<OmitFnProps<import("quasar").QTabPanelProps>>
|
||||
QTabPanels?: PickOptionalProps<OmitFnProps<import("quasar").QTabPanelsProps>>
|
||||
QTable?: PickOptionalProps<OmitFnProps<import("quasar").QTableProps>>
|
||||
QTd?: PickOptionalProps<OmitFnProps<import("quasar").QTdProps>>
|
||||
QTh?: PickOptionalProps<OmitFnProps<import("quasar").QThProps>>
|
||||
QTr?: PickOptionalProps<OmitFnProps<import("quasar").QTrProps>>
|
||||
QRouteTab?: PickOptionalProps<OmitFnProps<import("quasar").QRouteTabProps>>
|
||||
QTab?: PickOptionalProps<OmitFnProps<import("quasar").QTabProps>>
|
||||
QTabs?: PickOptionalProps<OmitFnProps<import("quasar").QTabsProps>>
|
||||
QTime?: PickOptionalProps<OmitFnProps<import("quasar").QTimeProps>>
|
||||
QTimeline?: PickOptionalProps<OmitFnProps<import("quasar").QTimelineProps>>
|
||||
QTimelineEntry?: PickOptionalProps<OmitFnProps<import("quasar").QTimelineEntryProps>>
|
||||
QToggle?: PickOptionalProps<OmitFnProps<import("quasar").QToggleProps>>
|
||||
QToolbar?: PickOptionalProps<OmitFnProps<import("quasar").QToolbarProps>>
|
||||
QToolbarTitle?: PickOptionalProps<OmitFnProps<import("quasar").QToolbarTitleProps>>
|
||||
QTooltip?: PickOptionalProps<OmitFnProps<import("quasar").QTooltipProps>>
|
||||
QTree?: PickOptionalProps<OmitFnProps<import("quasar").QTreeProps>>
|
||||
QUploader?: PickOptionalProps<OmitFnProps<import("quasar").QUploaderProps>>
|
||||
QUploaderAddTrigger?: PickOptionalProps<OmitFnProps<import("quasar").QUploaderAddTriggerProps>>
|
||||
QVideo?: PickOptionalProps<OmitFnProps<import("quasar").QVideoProps>>
|
||||
QVirtualScroll?: PickOptionalProps<OmitFnProps<import("quasar").QVirtualScrollProps>>
|
||||
}
|
||||
}
|
||||
|
||||
declare module '@nuxt/schema' {
|
||||
interface AppConfigInput {
|
||||
["nuxtQuasar"]?: import("nuxt-quasar-ui").QuasarUIConfiguration
|
||||
}
|
||||
interface AppConfig {
|
||||
["nuxtQuasar"]?: import("nuxt-quasar-ui").QuasarUIConfiguration
|
||||
}
|
||||
}
|
||||
|
||||
export {}
|
||||
17
Frontend-Learner/.nuxt/schema/nuxt.schema.d.ts
vendored
Normal file
17
Frontend-Learner/.nuxt/schema/nuxt.schema.d.ts
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
export interface NuxtCustomSchema {
|
||||
|
||||
}
|
||||
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 {}
|
||||
}
|
||||
3
Frontend-Learner/.nuxt/schema/nuxt.schema.json
Normal file
3
Frontend-Learner/.nuxt/schema/nuxt.schema.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"id": "#"
|
||||
}
|
||||
14
Frontend-Learner/.nuxt/tailwind/postcss.mjs
Normal file
14
Frontend-Learner/.nuxt/tailwind/postcss.mjs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 13/1/2569 10:40:15
|
||||
import "@nuxtjs/tailwindcss/config-ctx"
|
||||
import configMerger from "@nuxtjs/tailwindcss/merger";
|
||||
|
||||
import cfg2 from "./../../tailwind.config.ts";
|
||||
const config = [
|
||||
{"content":{"files":["C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/components/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/plugins/**/*.{js,ts,mjs}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/composables/**/*.{js,ts,mjs}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/utils/**/*.{js,ts,mjs}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/app.config.{js,ts,mjs}"]}},
|
||||
{},
|
||||
cfg2
|
||||
].reduce((acc, curr) => configMerger(acc, curr), {});
|
||||
|
||||
const resolvedConfig = config;
|
||||
|
||||
export default resolvedConfig;
|
||||
175
Frontend-Learner/.nuxt/tsconfig.json
Normal file
175
Frontend-Learner/.nuxt/tsconfig.json
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
{
|
||||
"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": [
|
||||
"../node_modules/vue"
|
||||
],
|
||||
"@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"
|
||||
],
|
||||
"#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"
|
||||
],
|
||||
"#vue-router": [
|
||||
"../node_modules/vue-router"
|
||||
],
|
||||
"#unhead/composables": [
|
||||
"../node_modules/nuxt/dist/head/runtime/composables/v3"
|
||||
],
|
||||
"#imports": [
|
||||
"./imports"
|
||||
],
|
||||
"#app-manifest": [
|
||||
"./manifest/meta/dev"
|
||||
],
|
||||
"#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/runtime",
|
||||
"../node_modules/dist/runtime",
|
||||
".."
|
||||
],
|
||||
"exclude": [
|
||||
"../dist",
|
||||
"../.data",
|
||||
"../../node_modules",
|
||||
"../node_modules/runtime/server",
|
||||
"../node_modules/dist/runtime/server",
|
||||
"dev"
|
||||
]
|
||||
}
|
||||
142
Frontend-Learner/.nuxt/tsconfig.server.json
Normal file
142
Frontend-Learner/.nuxt/tsconfig.server.json
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"skipLibCheck": 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": [
|
||||
"../node_modules/vue"
|
||||
],
|
||||
"@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"
|
||||
],
|
||||
"#shared/*": [
|
||||
"../shared/*"
|
||||
],
|
||||
"assets": [
|
||||
"../assets"
|
||||
],
|
||||
"assets/*": [
|
||||
"../assets/*"
|
||||
],
|
||||
"public": [
|
||||
"../public"
|
||||
],
|
||||
"public/*": [
|
||||
"../public/*"
|
||||
],
|
||||
"#build": [
|
||||
"./"
|
||||
],
|
||||
"#build/*": [
|
||||
"./*"
|
||||
],
|
||||
"#internal/nuxt/paths": [
|
||||
"../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths"
|
||||
],
|
||||
"#unhead/composables": [
|
||||
"../node_modules/nuxt/dist/head/runtime/composables/v3"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"webworker",
|
||||
"dom.iterable"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"./types/nitro-nuxt.d.ts",
|
||||
"../node_modules/runtime/server",
|
||||
"../node_modules/dist/runtime/server",
|
||||
"../server/**/*",
|
||||
"../shared/**/*.d.ts",
|
||||
"./types/nitro.d.ts",
|
||||
"../**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"../node_modules",
|
||||
"../../node_modules",
|
||||
"../node_modules/nuxt/node_modules",
|
||||
"../node_modules/nuxt-quasar-ui/node_modules",
|
||||
"../node_modules/@nuxtjs/tailwindcss/node_modules",
|
||||
"../node_modules/@nuxt/devtools/node_modules",
|
||||
"../node_modules/@nuxt/telemetry/node_modules",
|
||||
"../dist"
|
||||
]
|
||||
}
|
||||
7
Frontend-Learner/.nuxt/types/app-defaults.d.ts
vendored
Normal file
7
Frontend-Learner/.nuxt/types/app-defaults.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
declare module 'nuxt/app/defaults' {
|
||||
type DefaultAsyncDataErrorValue = null
|
||||
type DefaultAsyncDataValue = null
|
||||
type DefaultErrorValue = null
|
||||
type DedupeOption = boolean | 'cancel' | 'defer'
|
||||
}
|
||||
31
Frontend-Learner/.nuxt/types/app.config.d.ts
vendored
Normal file
31
Frontend-Learner/.nuxt/types/app.config.d.ts
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
import type { CustomAppConfig } from 'nuxt/schema'
|
||||
import type { Defu } from 'defu'
|
||||
|
||||
|
||||
declare const inlineConfig = {
|
||||
"nuxt": {}
|
||||
}
|
||||
type ResolvedAppConfig = Defu<typeof inlineConfig, []>
|
||||
type IsAny<T> = 0 extends 1 & T ? true : false
|
||||
|
||||
type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = {
|
||||
[K in keyof (Resolved & Custom)]: K extends keyof Custom
|
||||
? unknown extends Custom[K]
|
||||
? Resolved[K]
|
||||
: IsAny<Custom[K]> extends true
|
||||
? Resolved[K]
|
||||
: Custom[K] extends Record<string, any>
|
||||
? Resolved[K] extends Record<string, any>
|
||||
? MergedAppConfig<Resolved[K], Custom[K]>
|
||||
: Exclude<Custom[K], undefined>
|
||||
: Exclude<Custom[K], undefined>
|
||||
: Resolved[K]
|
||||
}
|
||||
|
||||
declare module 'nuxt/schema' {
|
||||
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
|
||||
}
|
||||
declare module '@nuxt/schema' {
|
||||
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
|
||||
}
|
||||
25
Frontend-Learner/.nuxt/types/build.d.ts
vendored
Normal file
25
Frontend-Learner/.nuxt/types/build.d.ts
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
declare module "#build/app-component.mjs";
|
||||
declare module "#build/nitro.client.mjs";
|
||||
declare module "#build/plugins.client.mjs";
|
||||
declare module "#build/css.mjs";
|
||||
declare module "#build/fetch.mjs";
|
||||
declare module "#build/error-component.mjs";
|
||||
declare module "#build/global-polyfills.mjs";
|
||||
declare module "#build/layouts.mjs";
|
||||
declare module "#build/middleware.mjs";
|
||||
declare module "#build/nuxt.config.mjs";
|
||||
declare module "#build/paths.mjs";
|
||||
declare module "#build/root-component.mjs";
|
||||
declare module "#build/plugins.server.mjs";
|
||||
declare module "#build/test-component-wrapper.mjs";
|
||||
declare module "#build/devtools/settings.mjs";
|
||||
declare module "#build/runtime.vue-devtools-client.xQLhBfryb_Soh_gqZUVT1KAAO9vjvnTu0mvjILya7us.js";
|
||||
declare module "#build/routes.mjs";
|
||||
declare module "#build/pages.mjs";
|
||||
declare module "#build/router.options.mjs";
|
||||
declare module "#build/unhead-options.mjs";
|
||||
declare module "#build/unhead.config.mjs";
|
||||
declare module "#build/components.plugin.mjs";
|
||||
declare module "#build/component-names.mjs";
|
||||
declare module "#build/components.islands.mjs";
|
||||
declare module "#build/component-chunk.mjs";
|
||||
1
Frontend-Learner/.nuxt/types/builder-env.d.ts
vendored
Normal file
1
Frontend-Learner/.nuxt/types/builder-env.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import "vite/client";
|
||||
335
Frontend-Learner/.nuxt/types/components.d.ts
vendored
Normal file
335
Frontend-Learner/.nuxt/types/components.d.ts
vendored
Normal file
|
|
@ -0,0 +1,335 @@
|
|||
|
||||
import type { DefineComponent, SlotsType } from 'vue'
|
||||
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
|
||||
|
||||
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> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
|
||||
|
||||
interface _GlobalComponents {
|
||||
'AppHeader': typeof import("../../components/common/AppHeader.vue").default
|
||||
'FormInput': typeof import("../../components/common/FormInput.vue").default
|
||||
'LandingFooter': typeof import("../../components/common/LandingFooter.vue").default
|
||||
'LandingHeader': typeof import("../../components/common/LandingHeader.vue").default
|
||||
'LoadingSkeleton': typeof import("../../components/common/LoadingSkeleton.vue").default
|
||||
'LoadingSpinner': typeof import("../../components/common/LoadingSpinner.vue").default
|
||||
'MobileNav': typeof import("../../components/common/MobileNav.vue").default
|
||||
'CourseCard': typeof import("../../components/course/CourseCard.vue").default
|
||||
'UserAvatar': typeof import("../../components/user/UserAvatar.vue").default
|
||||
'UserMenu': typeof import("../../components/user/UserMenu.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/dist/app/components/nuxt-stubs").NuxtImg
|
||||
'NuxtPicture': typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs").NuxtPicture
|
||||
'QAjaxBar': typeof import("quasar").QAjaxBar
|
||||
'QAvatar': typeof import("quasar").QAvatar
|
||||
'QBadge': typeof import("quasar").QBadge
|
||||
'QBanner': typeof import("quasar").QBanner
|
||||
'QBar': typeof import("quasar").QBar
|
||||
'QBreadcrumbs': typeof import("quasar").QBreadcrumbs
|
||||
'QBreadcrumbsEl': typeof import("quasar").QBreadcrumbsEl
|
||||
'QBtn': typeof import("quasar").QBtn
|
||||
'QBtnDropdown': typeof import("quasar").QBtnDropdown
|
||||
'QBtnGroup': typeof import("quasar").QBtnGroup
|
||||
'QBtnToggle': typeof import("quasar").QBtnToggle
|
||||
'QCard': typeof import("quasar").QCard
|
||||
'QCardActions': typeof import("quasar").QCardActions
|
||||
'QCardSection': typeof import("quasar").QCardSection
|
||||
'QCarousel': typeof import("quasar").QCarousel
|
||||
'QCarouselControl': typeof import("quasar").QCarouselControl
|
||||
'QCarouselSlide': typeof import("quasar").QCarouselSlide
|
||||
'QChatMessage': typeof import("quasar").QChatMessage
|
||||
'QCheckbox': typeof import("quasar").QCheckbox
|
||||
'QChip': typeof import("quasar").QChip
|
||||
'QCircularProgress': typeof import("quasar").QCircularProgress
|
||||
'QColor': typeof import("quasar").QColor
|
||||
'QDate': typeof import("quasar").QDate
|
||||
'QDialog': typeof import("quasar").QDialog
|
||||
'QDrawer': typeof import("quasar").QDrawer
|
||||
'QEditor': typeof import("quasar").QEditor
|
||||
'QExpansionItem': typeof import("quasar").QExpansionItem
|
||||
'QFab': typeof import("quasar").QFab
|
||||
'QFabAction': typeof import("quasar").QFabAction
|
||||
'QField': typeof import("quasar").QField
|
||||
'QFile': typeof import("quasar").QFile
|
||||
'QFooter': typeof import("quasar").QFooter
|
||||
'QForm': typeof import("quasar").QForm
|
||||
'QFormChildMixin': typeof import("quasar").QFormChildMixin
|
||||
'QHeader': typeof import("quasar").QHeader
|
||||
'QIcon': typeof import("quasar").QIcon
|
||||
'QImg': typeof import("quasar").QImg
|
||||
'QInfiniteScroll': typeof import("quasar").QInfiniteScroll
|
||||
'QInnerLoading': typeof import("quasar").QInnerLoading
|
||||
'QInput': typeof import("quasar").QInput
|
||||
'QIntersection': typeof import("quasar").QIntersection
|
||||
'QItem': typeof import("quasar").QItem
|
||||
'QItemLabel': typeof import("quasar").QItemLabel
|
||||
'QItemSection': typeof import("quasar").QItemSection
|
||||
'QList': typeof import("quasar").QList
|
||||
'QKnob': typeof import("quasar").QKnob
|
||||
'QLayout': typeof import("quasar").QLayout
|
||||
'QLinearProgress': typeof import("quasar").QLinearProgress
|
||||
'QMarkupTable': typeof import("quasar").QMarkupTable
|
||||
'QMenu': typeof import("quasar").QMenu
|
||||
'QNoSsr': typeof import("quasar").QNoSsr
|
||||
'QOptionGroup': typeof import("quasar").QOptionGroup
|
||||
'QPage': typeof import("quasar").QPage
|
||||
'QPageContainer': typeof import("quasar").QPageContainer
|
||||
'QPageScroller': typeof import("quasar").QPageScroller
|
||||
'QPageSticky': typeof import("quasar").QPageSticky
|
||||
'QPagination': typeof import("quasar").QPagination
|
||||
'QParallax': typeof import("quasar").QParallax
|
||||
'QPopupEdit': typeof import("quasar").QPopupEdit
|
||||
'QPopupProxy': typeof import("quasar").QPopupProxy
|
||||
'QPullToRefresh': typeof import("quasar").QPullToRefresh
|
||||
'QRadio': typeof import("quasar").QRadio
|
||||
'QRange': typeof import("quasar").QRange
|
||||
'QRating': typeof import("quasar").QRating
|
||||
'QResizeObserver': typeof import("quasar").QResizeObserver
|
||||
'QResponsive': typeof import("quasar").QResponsive
|
||||
'QScrollArea': typeof import("quasar").QScrollArea
|
||||
'QScrollObserver': typeof import("quasar").QScrollObserver
|
||||
'QSelect': typeof import("quasar").QSelect
|
||||
'QSeparator': typeof import("quasar").QSeparator
|
||||
'QSkeleton': typeof import("quasar").QSkeleton
|
||||
'QSlideItem': typeof import("quasar").QSlideItem
|
||||
'QSlideTransition': typeof import("quasar").QSlideTransition
|
||||
'QSlider': typeof import("quasar").QSlider
|
||||
'QSpace': typeof import("quasar").QSpace
|
||||
'QSpinner': typeof import("quasar").QSpinner
|
||||
'QSpinnerAudio': typeof import("quasar").QSpinnerAudio
|
||||
'QSpinnerBall': typeof import("quasar").QSpinnerBall
|
||||
'QSpinnerBars': typeof import("quasar").QSpinnerBars
|
||||
'QSpinnerBox': typeof import("quasar").QSpinnerBox
|
||||
'QSpinnerClock': typeof import("quasar").QSpinnerClock
|
||||
'QSpinnerComment': typeof import("quasar").QSpinnerComment
|
||||
'QSpinnerCube': typeof import("quasar").QSpinnerCube
|
||||
'QSpinnerDots': typeof import("quasar").QSpinnerDots
|
||||
'QSpinnerFacebook': typeof import("quasar").QSpinnerFacebook
|
||||
'QSpinnerGears': typeof import("quasar").QSpinnerGears
|
||||
'QSpinnerGrid': typeof import("quasar").QSpinnerGrid
|
||||
'QSpinnerHearts': typeof import("quasar").QSpinnerHearts
|
||||
'QSpinnerHourglass': typeof import("quasar").QSpinnerHourglass
|
||||
'QSpinnerInfinity': typeof import("quasar").QSpinnerInfinity
|
||||
'QSpinnerIos': typeof import("quasar").QSpinnerIos
|
||||
'QSpinnerOrbit': typeof import("quasar").QSpinnerOrbit
|
||||
'QSpinnerOval': typeof import("quasar").QSpinnerOval
|
||||
'QSpinnerPie': typeof import("quasar").QSpinnerPie
|
||||
'QSpinnerPuff': typeof import("quasar").QSpinnerPuff
|
||||
'QSpinnerRadio': typeof import("quasar").QSpinnerRadio
|
||||
'QSpinnerRings': typeof import("quasar").QSpinnerRings
|
||||
'QSpinnerTail': typeof import("quasar").QSpinnerTail
|
||||
'QSplitter': typeof import("quasar").QSplitter
|
||||
'QStep': typeof import("quasar").QStep
|
||||
'QStepper': typeof import("quasar").QStepper
|
||||
'QStepperNavigation': typeof import("quasar").QStepperNavigation
|
||||
'QTabPanel': typeof import("quasar").QTabPanel
|
||||
'QTabPanels': typeof import("quasar").QTabPanels
|
||||
'QTable': typeof import("quasar").QTable
|
||||
'QTd': typeof import("quasar").QTd
|
||||
'QTh': typeof import("quasar").QTh
|
||||
'QTr': typeof import("quasar").QTr
|
||||
'QRouteTab': typeof import("quasar").QRouteTab
|
||||
'QTab': typeof import("quasar").QTab
|
||||
'QTabs': typeof import("quasar").QTabs
|
||||
'QTime': typeof import("quasar").QTime
|
||||
'QTimeline': typeof import("quasar").QTimeline
|
||||
'QTimelineEntry': typeof import("quasar").QTimelineEntry
|
||||
'QToggle': typeof import("quasar").QToggle
|
||||
'QToolbar': typeof import("quasar").QToolbar
|
||||
'QToolbarTitle': typeof import("quasar").QToolbarTitle
|
||||
'QTooltip': typeof import("quasar").QTooltip
|
||||
'QTree': typeof import("quasar").QTree
|
||||
'QUploader': typeof import("quasar").QUploader
|
||||
'QUploaderAddTrigger': typeof import("quasar").QUploaderAddTrigger
|
||||
'QVideo': typeof import("quasar").QVideo
|
||||
'QVirtualScroll': typeof import("quasar").QVirtualScroll
|
||||
'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
|
||||
'LazyAppHeader': LazyComponent<typeof import("../../components/common/AppHeader.vue").default>
|
||||
'LazyFormInput': LazyComponent<typeof import("../../components/common/FormInput.vue").default>
|
||||
'LazyLandingFooter': LazyComponent<typeof import("../../components/common/LandingFooter.vue").default>
|
||||
'LazyLandingHeader': LazyComponent<typeof import("../../components/common/LandingHeader.vue").default>
|
||||
'LazyLoadingSkeleton': LazyComponent<typeof import("../../components/common/LoadingSkeleton.vue").default>
|
||||
'LazyLoadingSpinner': LazyComponent<typeof import("../../components/common/LoadingSpinner.vue").default>
|
||||
'LazyMobileNav': LazyComponent<typeof import("../../components/common/MobileNav.vue").default>
|
||||
'LazyCourseCard': LazyComponent<typeof import("../../components/course/CourseCard.vue").default>
|
||||
'LazyUserAvatar': LazyComponent<typeof import("../../components/user/UserAvatar.vue").default>
|
||||
'LazyUserMenu': LazyComponent<typeof import("../../components/user/UserMenu.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/dist/app/components/nuxt-stubs").NuxtImg>
|
||||
'LazyNuxtPicture': LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs").NuxtPicture>
|
||||
'LazyQAjaxBar': LazyComponent<typeof import("quasar").QAjaxBar>
|
||||
'LazyQAvatar': LazyComponent<typeof import("quasar").QAvatar>
|
||||
'LazyQBadge': LazyComponent<typeof import("quasar").QBadge>
|
||||
'LazyQBanner': LazyComponent<typeof import("quasar").QBanner>
|
||||
'LazyQBar': LazyComponent<typeof import("quasar").QBar>
|
||||
'LazyQBreadcrumbs': LazyComponent<typeof import("quasar").QBreadcrumbs>
|
||||
'LazyQBreadcrumbsEl': LazyComponent<typeof import("quasar").QBreadcrumbsEl>
|
||||
'LazyQBtn': LazyComponent<typeof import("quasar").QBtn>
|
||||
'LazyQBtnDropdown': LazyComponent<typeof import("quasar").QBtnDropdown>
|
||||
'LazyQBtnGroup': LazyComponent<typeof import("quasar").QBtnGroup>
|
||||
'LazyQBtnToggle': LazyComponent<typeof import("quasar").QBtnToggle>
|
||||
'LazyQCard': LazyComponent<typeof import("quasar").QCard>
|
||||
'LazyQCardActions': LazyComponent<typeof import("quasar").QCardActions>
|
||||
'LazyQCardSection': LazyComponent<typeof import("quasar").QCardSection>
|
||||
'LazyQCarousel': LazyComponent<typeof import("quasar").QCarousel>
|
||||
'LazyQCarouselControl': LazyComponent<typeof import("quasar").QCarouselControl>
|
||||
'LazyQCarouselSlide': LazyComponent<typeof import("quasar").QCarouselSlide>
|
||||
'LazyQChatMessage': LazyComponent<typeof import("quasar").QChatMessage>
|
||||
'LazyQCheckbox': LazyComponent<typeof import("quasar").QCheckbox>
|
||||
'LazyQChip': LazyComponent<typeof import("quasar").QChip>
|
||||
'LazyQCircularProgress': LazyComponent<typeof import("quasar").QCircularProgress>
|
||||
'LazyQColor': LazyComponent<typeof import("quasar").QColor>
|
||||
'LazyQDate': LazyComponent<typeof import("quasar").QDate>
|
||||
'LazyQDialog': LazyComponent<typeof import("quasar").QDialog>
|
||||
'LazyQDrawer': LazyComponent<typeof import("quasar").QDrawer>
|
||||
'LazyQEditor': LazyComponent<typeof import("quasar").QEditor>
|
||||
'LazyQExpansionItem': LazyComponent<typeof import("quasar").QExpansionItem>
|
||||
'LazyQFab': LazyComponent<typeof import("quasar").QFab>
|
||||
'LazyQFabAction': LazyComponent<typeof import("quasar").QFabAction>
|
||||
'LazyQField': LazyComponent<typeof import("quasar").QField>
|
||||
'LazyQFile': LazyComponent<typeof import("quasar").QFile>
|
||||
'LazyQFooter': LazyComponent<typeof import("quasar").QFooter>
|
||||
'LazyQForm': LazyComponent<typeof import("quasar").QForm>
|
||||
'LazyQFormChildMixin': LazyComponent<typeof import("quasar").QFormChildMixin>
|
||||
'LazyQHeader': LazyComponent<typeof import("quasar").QHeader>
|
||||
'LazyQIcon': LazyComponent<typeof import("quasar").QIcon>
|
||||
'LazyQImg': LazyComponent<typeof import("quasar").QImg>
|
||||
'LazyQInfiniteScroll': LazyComponent<typeof import("quasar").QInfiniteScroll>
|
||||
'LazyQInnerLoading': LazyComponent<typeof import("quasar").QInnerLoading>
|
||||
'LazyQInput': LazyComponent<typeof import("quasar").QInput>
|
||||
'LazyQIntersection': LazyComponent<typeof import("quasar").QIntersection>
|
||||
'LazyQItem': LazyComponent<typeof import("quasar").QItem>
|
||||
'LazyQItemLabel': LazyComponent<typeof import("quasar").QItemLabel>
|
||||
'LazyQItemSection': LazyComponent<typeof import("quasar").QItemSection>
|
||||
'LazyQList': LazyComponent<typeof import("quasar").QList>
|
||||
'LazyQKnob': LazyComponent<typeof import("quasar").QKnob>
|
||||
'LazyQLayout': LazyComponent<typeof import("quasar").QLayout>
|
||||
'LazyQLinearProgress': LazyComponent<typeof import("quasar").QLinearProgress>
|
||||
'LazyQMarkupTable': LazyComponent<typeof import("quasar").QMarkupTable>
|
||||
'LazyQMenu': LazyComponent<typeof import("quasar").QMenu>
|
||||
'LazyQNoSsr': LazyComponent<typeof import("quasar").QNoSsr>
|
||||
'LazyQOptionGroup': LazyComponent<typeof import("quasar").QOptionGroup>
|
||||
'LazyQPage': LazyComponent<typeof import("quasar").QPage>
|
||||
'LazyQPageContainer': LazyComponent<typeof import("quasar").QPageContainer>
|
||||
'LazyQPageScroller': LazyComponent<typeof import("quasar").QPageScroller>
|
||||
'LazyQPageSticky': LazyComponent<typeof import("quasar").QPageSticky>
|
||||
'LazyQPagination': LazyComponent<typeof import("quasar").QPagination>
|
||||
'LazyQParallax': LazyComponent<typeof import("quasar").QParallax>
|
||||
'LazyQPopupEdit': LazyComponent<typeof import("quasar").QPopupEdit>
|
||||
'LazyQPopupProxy': LazyComponent<typeof import("quasar").QPopupProxy>
|
||||
'LazyQPullToRefresh': LazyComponent<typeof import("quasar").QPullToRefresh>
|
||||
'LazyQRadio': LazyComponent<typeof import("quasar").QRadio>
|
||||
'LazyQRange': LazyComponent<typeof import("quasar").QRange>
|
||||
'LazyQRating': LazyComponent<typeof import("quasar").QRating>
|
||||
'LazyQResizeObserver': LazyComponent<typeof import("quasar").QResizeObserver>
|
||||
'LazyQResponsive': LazyComponent<typeof import("quasar").QResponsive>
|
||||
'LazyQScrollArea': LazyComponent<typeof import("quasar").QScrollArea>
|
||||
'LazyQScrollObserver': LazyComponent<typeof import("quasar").QScrollObserver>
|
||||
'LazyQSelect': LazyComponent<typeof import("quasar").QSelect>
|
||||
'LazyQSeparator': LazyComponent<typeof import("quasar").QSeparator>
|
||||
'LazyQSkeleton': LazyComponent<typeof import("quasar").QSkeleton>
|
||||
'LazyQSlideItem': LazyComponent<typeof import("quasar").QSlideItem>
|
||||
'LazyQSlideTransition': LazyComponent<typeof import("quasar").QSlideTransition>
|
||||
'LazyQSlider': LazyComponent<typeof import("quasar").QSlider>
|
||||
'LazyQSpace': LazyComponent<typeof import("quasar").QSpace>
|
||||
'LazyQSpinner': LazyComponent<typeof import("quasar").QSpinner>
|
||||
'LazyQSpinnerAudio': LazyComponent<typeof import("quasar").QSpinnerAudio>
|
||||
'LazyQSpinnerBall': LazyComponent<typeof import("quasar").QSpinnerBall>
|
||||
'LazyQSpinnerBars': LazyComponent<typeof import("quasar").QSpinnerBars>
|
||||
'LazyQSpinnerBox': LazyComponent<typeof import("quasar").QSpinnerBox>
|
||||
'LazyQSpinnerClock': LazyComponent<typeof import("quasar").QSpinnerClock>
|
||||
'LazyQSpinnerComment': LazyComponent<typeof import("quasar").QSpinnerComment>
|
||||
'LazyQSpinnerCube': LazyComponent<typeof import("quasar").QSpinnerCube>
|
||||
'LazyQSpinnerDots': LazyComponent<typeof import("quasar").QSpinnerDots>
|
||||
'LazyQSpinnerFacebook': LazyComponent<typeof import("quasar").QSpinnerFacebook>
|
||||
'LazyQSpinnerGears': LazyComponent<typeof import("quasar").QSpinnerGears>
|
||||
'LazyQSpinnerGrid': LazyComponent<typeof import("quasar").QSpinnerGrid>
|
||||
'LazyQSpinnerHearts': LazyComponent<typeof import("quasar").QSpinnerHearts>
|
||||
'LazyQSpinnerHourglass': LazyComponent<typeof import("quasar").QSpinnerHourglass>
|
||||
'LazyQSpinnerInfinity': LazyComponent<typeof import("quasar").QSpinnerInfinity>
|
||||
'LazyQSpinnerIos': LazyComponent<typeof import("quasar").QSpinnerIos>
|
||||
'LazyQSpinnerOrbit': LazyComponent<typeof import("quasar").QSpinnerOrbit>
|
||||
'LazyQSpinnerOval': LazyComponent<typeof import("quasar").QSpinnerOval>
|
||||
'LazyQSpinnerPie': LazyComponent<typeof import("quasar").QSpinnerPie>
|
||||
'LazyQSpinnerPuff': LazyComponent<typeof import("quasar").QSpinnerPuff>
|
||||
'LazyQSpinnerRadio': LazyComponent<typeof import("quasar").QSpinnerRadio>
|
||||
'LazyQSpinnerRings': LazyComponent<typeof import("quasar").QSpinnerRings>
|
||||
'LazyQSpinnerTail': LazyComponent<typeof import("quasar").QSpinnerTail>
|
||||
'LazyQSplitter': LazyComponent<typeof import("quasar").QSplitter>
|
||||
'LazyQStep': LazyComponent<typeof import("quasar").QStep>
|
||||
'LazyQStepper': LazyComponent<typeof import("quasar").QStepper>
|
||||
'LazyQStepperNavigation': LazyComponent<typeof import("quasar").QStepperNavigation>
|
||||
'LazyQTabPanel': LazyComponent<typeof import("quasar").QTabPanel>
|
||||
'LazyQTabPanels': LazyComponent<typeof import("quasar").QTabPanels>
|
||||
'LazyQTable': LazyComponent<typeof import("quasar").QTable>
|
||||
'LazyQTd': LazyComponent<typeof import("quasar").QTd>
|
||||
'LazyQTh': LazyComponent<typeof import("quasar").QTh>
|
||||
'LazyQTr': LazyComponent<typeof import("quasar").QTr>
|
||||
'LazyQRouteTab': LazyComponent<typeof import("quasar").QRouteTab>
|
||||
'LazyQTab': LazyComponent<typeof import("quasar").QTab>
|
||||
'LazyQTabs': LazyComponent<typeof import("quasar").QTabs>
|
||||
'LazyQTime': LazyComponent<typeof import("quasar").QTime>
|
||||
'LazyQTimeline': LazyComponent<typeof import("quasar").QTimeline>
|
||||
'LazyQTimelineEntry': LazyComponent<typeof import("quasar").QTimelineEntry>
|
||||
'LazyQToggle': LazyComponent<typeof import("quasar").QToggle>
|
||||
'LazyQToolbar': LazyComponent<typeof import("quasar").QToolbar>
|
||||
'LazyQToolbarTitle': LazyComponent<typeof import("quasar").QToolbarTitle>
|
||||
'LazyQTooltip': LazyComponent<typeof import("quasar").QTooltip>
|
||||
'LazyQTree': LazyComponent<typeof import("quasar").QTree>
|
||||
'LazyQUploader': LazyComponent<typeof import("quasar").QUploader>
|
||||
'LazyQUploaderAddTrigger': LazyComponent<typeof import("quasar").QUploaderAddTrigger>
|
||||
'LazyQVideo': LazyComponent<typeof import("quasar").QVideo>
|
||||
'LazyQVirtualScroll': LazyComponent<typeof import("quasar").QVirtualScroll>
|
||||
'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>
|
||||
}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents extends _GlobalComponents { }
|
||||
}
|
||||
|
||||
export {}
|
||||
391
Frontend-Learner/.nuxt/types/imports.d.ts
vendored
Normal file
391
Frontend-Learner/.nuxt/types/imports.d.ts
vendored
Normal file
|
|
@ -0,0 +1,391 @@
|
|||
// Generated by auto imports
|
||||
export {}
|
||||
declare global {
|
||||
const Notify: typeof import('quasar').Notify
|
||||
const abortNavigation: typeof import('../../node_modules/nuxt/dist/app/composables/router').abortNavigation
|
||||
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('../../node_modules/vue').computed
|
||||
const createError: typeof import('../../node_modules/nuxt/dist/app/composables/error').createError
|
||||
const customRef: typeof import('../../node_modules/vue').customRef
|
||||
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt').defineAppConfig
|
||||
const defineAsyncComponent: typeof import('../../node_modules/vue').defineAsyncComponent
|
||||
const defineComponent: typeof import('../../node_modules/vue').defineComponent
|
||||
const defineLazyHydrationComponent: typeof import('../../node_modules/nuxt/dist/app/composables/lazy-hydration').defineLazyHydrationComponent
|
||||
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 effect: typeof import('../../node_modules/vue').effect
|
||||
const effectScope: typeof import('../../node_modules/vue').effectScope
|
||||
const getAppManifest: typeof import('../../node_modules/nuxt/dist/app/composables/manifest').getAppManifest
|
||||
const getCurrentInstance: typeof import('../../node_modules/vue').getCurrentInstance
|
||||
const getCurrentScope: typeof import('../../node_modules/vue').getCurrentScope
|
||||
const getRouteRules: typeof import('../../node_modules/nuxt/dist/app/composables/manifest').getRouteRules
|
||||
const h: typeof import('../../node_modules/vue').h
|
||||
const hasInjectionContext: typeof import('../../node_modules/vue').hasInjectionContext
|
||||
const inject: typeof import('../../node_modules/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('../../node_modules/vue').isProxy
|
||||
const isReactive: typeof import('../../node_modules/vue').isReactive
|
||||
const isReadonly: typeof import('../../node_modules/vue').isReadonly
|
||||
const isRef: typeof import('../../node_modules/vue').isRef
|
||||
const isShallow: typeof import('../../node_modules/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('../../node_modules/vue').markRaw
|
||||
const navigateTo: typeof import('../../node_modules/nuxt/dist/app/composables/router').navigateTo
|
||||
const nextTick: typeof import('../../node_modules/vue').nextTick
|
||||
const onActivated: typeof import('../../node_modules/vue').onActivated
|
||||
const onBeforeMount: typeof import('../../node_modules/vue').onBeforeMount
|
||||
const onBeforeRouteLeave: typeof import('../../node_modules/vue-router').onBeforeRouteLeave
|
||||
const onBeforeRouteUpdate: typeof import('../../node_modules/vue-router').onBeforeRouteUpdate
|
||||
const onBeforeUnmount: typeof import('../../node_modules/vue').onBeforeUnmount
|
||||
const onBeforeUpdate: typeof import('../../node_modules/vue').onBeforeUpdate
|
||||
const onDeactivated: typeof import('../../node_modules/vue').onDeactivated
|
||||
const onErrorCaptured: typeof import('../../node_modules/vue').onErrorCaptured
|
||||
const onMounted: typeof import('../../node_modules/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('../../node_modules/vue').onRenderTracked
|
||||
const onRenderTriggered: typeof import('../../node_modules/vue').onRenderTriggered
|
||||
const onScopeDispose: typeof import('../../node_modules/vue').onScopeDispose
|
||||
const onServerPrefetch: typeof import('../../node_modules/vue').onServerPrefetch
|
||||
const onUnmounted: typeof import('../../node_modules/vue').onUnmounted
|
||||
const onUpdated: typeof import('../../node_modules/vue').onUpdated
|
||||
const onWatcherCleanup: typeof import('../../node_modules/vue').onWatcherCleanup
|
||||
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('../../node_modules/vue').provide
|
||||
const proxyRefs: typeof import('../../node_modules/vue').proxyRefs
|
||||
const reactive: typeof import('../../node_modules/vue').reactive
|
||||
const readonly: typeof import('../../node_modules/vue').readonly
|
||||
const ref: typeof import('../../node_modules/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('../../node_modules/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('../../node_modules/vue').shallowReactive
|
||||
const shallowReadonly: typeof import('../../node_modules/vue').shallowReadonly
|
||||
const shallowRef: typeof import('../../node_modules/vue').shallowRef
|
||||
const showError: typeof import('../../node_modules/nuxt/dist/app/composables/error').showError
|
||||
const toRaw: typeof import('../../node_modules/vue').toRaw
|
||||
const toRef: typeof import('../../node_modules/vue').toRef
|
||||
const toRefs: typeof import('../../node_modules/vue').toRefs
|
||||
const toValue: typeof import('../../node_modules/vue').toValue
|
||||
const triggerRef: typeof import('../../node_modules/vue').triggerRef
|
||||
const tryUseNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt').tryUseNuxtApp
|
||||
const unref: typeof import('../../node_modules/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('../../node_modules/vue').useAttrs
|
||||
const useAuth: typeof import('../../composables/useAuth').useAuth
|
||||
const useCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie').useCookie
|
||||
const useCssModule: typeof import('../../node_modules/vue').useCssModule
|
||||
const useCssVars: typeof import('../../node_modules/vue').useCssVars
|
||||
const useDialogPluginComponent: typeof import('quasar').useDialogPluginComponent
|
||||
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 useFormChild: typeof import('quasar').useFormChild
|
||||
const useFormValidation: typeof import('../../composables/useFormValidation').useFormValidation
|
||||
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('../../node_modules/vue').useId
|
||||
const useInterval: typeof import('quasar').useInterval
|
||||
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 useMeta: typeof import('quasar').useMeta
|
||||
const useModel: typeof import('../../node_modules/vue').useModel
|
||||
const useNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt').useNuxtApp
|
||||
const useNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').useNuxtData
|
||||
const useNuxtDevTools: typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools').useNuxtDevTools
|
||||
const usePreviewMode: typeof import('../../node_modules/nuxt/dist/app/composables/preview').usePreviewMode
|
||||
const useQuasar: typeof import('quasar').useQuasar
|
||||
const useRenderCache: typeof import('quasar').useRenderCache
|
||||
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 useScriptDatabuddyAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptDatabuddyAnalytics
|
||||
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 useScriptPayPal: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptPayPal
|
||||
const useScriptPlausibleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptPlausibleAnalytics
|
||||
const useScriptRedditPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptRedditPixel
|
||||
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('../../node_modules/vue').useShadowRoot
|
||||
const useSlots: typeof import('../../node_modules/vue').useSlots
|
||||
const useSplitAttrs: typeof import('quasar').useSplitAttrs
|
||||
const useState: typeof import('../../node_modules/nuxt/dist/app/composables/state').useState
|
||||
const useTemplateRef: typeof import('../../node_modules/vue').useTemplateRef
|
||||
const useTick: typeof import('quasar').useTick
|
||||
const useTimeout: typeof import('quasar').useTimeout
|
||||
const useTransitionState: typeof import('../../node_modules/vue').useTransitionState
|
||||
const watch: typeof import('../../node_modules/vue').watch
|
||||
const watchEffect: typeof import('../../node_modules/vue').watchEffect
|
||||
const watchPostEffect: typeof import('../../node_modules/vue').watchPostEffect
|
||||
const watchSyncEffect: typeof import('../../node_modules/vue').watchSyncEffect
|
||||
const withCtx: typeof import('../../node_modules/vue').withCtx
|
||||
const withDirectives: typeof import('../../node_modules/vue').withDirectives
|
||||
const withKeys: typeof import('../../node_modules/vue').withKeys
|
||||
const withMemo: typeof import('../../node_modules/vue').withMemo
|
||||
const withModifiers: typeof import('../../node_modules/vue').withModifiers
|
||||
const withScopeId: typeof import('../../node_modules/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 '../../node_modules/vue'
|
||||
import('../../node_modules/vue')
|
||||
// @ts-ignore
|
||||
export type { ValidationRule, FieldErrors } from '../../composables/useFormValidation'
|
||||
import('../../composables/useFormValidation')
|
||||
}
|
||||
// for vue template auto import
|
||||
import { UnwrapRef } from 'vue'
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
readonly Notify: UnwrapRef<typeof import('quasar')['Notify']>
|
||||
readonly abortNavigation: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']>
|
||||
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('../../node_modules/vue')['computed']>
|
||||
readonly createError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']>
|
||||
readonly customRef: UnwrapRef<typeof import('../../node_modules/vue')['customRef']>
|
||||
readonly defineAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']>
|
||||
readonly defineAsyncComponent: UnwrapRef<typeof import('../../node_modules/vue')['defineAsyncComponent']>
|
||||
readonly defineComponent: UnwrapRef<typeof import('../../node_modules/vue')['defineComponent']>
|
||||
readonly defineLazyHydrationComponent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/lazy-hydration')['defineLazyHydrationComponent']>
|
||||
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 effect: UnwrapRef<typeof import('../../node_modules/vue')['effect']>
|
||||
readonly effectScope: UnwrapRef<typeof import('../../node_modules/vue')['effectScope']>
|
||||
readonly getAppManifest: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']>
|
||||
readonly getCurrentInstance: UnwrapRef<typeof import('../../node_modules/vue')['getCurrentInstance']>
|
||||
readonly getCurrentScope: UnwrapRef<typeof import('../../node_modules/vue')['getCurrentScope']>
|
||||
readonly getRouteRules: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']>
|
||||
readonly h: UnwrapRef<typeof import('../../node_modules/vue')['h']>
|
||||
readonly hasInjectionContext: UnwrapRef<typeof import('../../node_modules/vue')['hasInjectionContext']>
|
||||
readonly inject: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/vue')['isProxy']>
|
||||
readonly isReactive: UnwrapRef<typeof import('../../node_modules/vue')['isReactive']>
|
||||
readonly isReadonly: UnwrapRef<typeof import('../../node_modules/vue')['isReadonly']>
|
||||
readonly isRef: UnwrapRef<typeof import('../../node_modules/vue')['isRef']>
|
||||
readonly isShallow: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/vue')['markRaw']>
|
||||
readonly navigateTo: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']>
|
||||
readonly nextTick: UnwrapRef<typeof import('../../node_modules/vue')['nextTick']>
|
||||
readonly onActivated: UnwrapRef<typeof import('../../node_modules/vue')['onActivated']>
|
||||
readonly onBeforeMount: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/vue')['onBeforeUnmount']>
|
||||
readonly onBeforeUpdate: UnwrapRef<typeof import('../../node_modules/vue')['onBeforeUpdate']>
|
||||
readonly onDeactivated: UnwrapRef<typeof import('../../node_modules/vue')['onDeactivated']>
|
||||
readonly onErrorCaptured: UnwrapRef<typeof import('../../node_modules/vue')['onErrorCaptured']>
|
||||
readonly onMounted: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/vue')['onRenderTracked']>
|
||||
readonly onRenderTriggered: UnwrapRef<typeof import('../../node_modules/vue')['onRenderTriggered']>
|
||||
readonly onScopeDispose: UnwrapRef<typeof import('../../node_modules/vue')['onScopeDispose']>
|
||||
readonly onServerPrefetch: UnwrapRef<typeof import('../../node_modules/vue')['onServerPrefetch']>
|
||||
readonly onUnmounted: UnwrapRef<typeof import('../../node_modules/vue')['onUnmounted']>
|
||||
readonly onUpdated: UnwrapRef<typeof import('../../node_modules/vue')['onUpdated']>
|
||||
readonly onWatcherCleanup: UnwrapRef<typeof import('../../node_modules/vue')['onWatcherCleanup']>
|
||||
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('../../node_modules/vue')['provide']>
|
||||
readonly proxyRefs: UnwrapRef<typeof import('../../node_modules/vue')['proxyRefs']>
|
||||
readonly reactive: UnwrapRef<typeof import('../../node_modules/vue')['reactive']>
|
||||
readonly readonly: UnwrapRef<typeof import('../../node_modules/vue')['readonly']>
|
||||
readonly ref: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/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('../../node_modules/vue')['shallowReactive']>
|
||||
readonly shallowReadonly: UnwrapRef<typeof import('../../node_modules/vue')['shallowReadonly']>
|
||||
readonly shallowRef: UnwrapRef<typeof import('../../node_modules/vue')['shallowRef']>
|
||||
readonly showError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']>
|
||||
readonly toRaw: UnwrapRef<typeof import('../../node_modules/vue')['toRaw']>
|
||||
readonly toRef: UnwrapRef<typeof import('../../node_modules/vue')['toRef']>
|
||||
readonly toRefs: UnwrapRef<typeof import('../../node_modules/vue')['toRefs']>
|
||||
readonly toValue: UnwrapRef<typeof import('../../node_modules/vue')['toValue']>
|
||||
readonly triggerRef: UnwrapRef<typeof import('../../node_modules/vue')['triggerRef']>
|
||||
readonly tryUseNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']>
|
||||
readonly unref: UnwrapRef<typeof import('../../node_modules/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('../../node_modules/vue')['useAttrs']>
|
||||
readonly useAuth: UnwrapRef<typeof import('../../composables/useAuth')['useAuth']>
|
||||
readonly useCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']>
|
||||
readonly useCssModule: UnwrapRef<typeof import('../../node_modules/vue')['useCssModule']>
|
||||
readonly useCssVars: UnwrapRef<typeof import('../../node_modules/vue')['useCssVars']>
|
||||
readonly useDialogPluginComponent: UnwrapRef<typeof import('quasar')['useDialogPluginComponent']>
|
||||
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 useFormChild: UnwrapRef<typeof import('quasar')['useFormChild']>
|
||||
readonly useFormValidation: UnwrapRef<typeof import('../../composables/useFormValidation')['useFormValidation']>
|
||||
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('../../node_modules/vue')['useId']>
|
||||
readonly useInterval: UnwrapRef<typeof import('quasar')['useInterval']>
|
||||
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 useMeta: UnwrapRef<typeof import('quasar')['useMeta']>
|
||||
readonly useModel: UnwrapRef<typeof import('../../node_modules/vue')['useModel']>
|
||||
readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
|
||||
readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
|
||||
readonly useNuxtDevTools: UnwrapRef<typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools')['useNuxtDevTools']>
|
||||
readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
|
||||
readonly useQuasar: UnwrapRef<typeof import('quasar')['useQuasar']>
|
||||
readonly useRenderCache: UnwrapRef<typeof import('quasar')['useRenderCache']>
|
||||
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 useScriptDatabuddyAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptDatabuddyAnalytics']>
|
||||
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 useScriptPayPal: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPayPal']>
|
||||
readonly useScriptPlausibleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']>
|
||||
readonly useScriptRedditPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRedditPixel']>
|
||||
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('../../node_modules/vue')['useShadowRoot']>
|
||||
readonly useSlots: UnwrapRef<typeof import('../../node_modules/vue')['useSlots']>
|
||||
readonly useSplitAttrs: UnwrapRef<typeof import('quasar')['useSplitAttrs']>
|
||||
readonly useState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']>
|
||||
readonly useTemplateRef: UnwrapRef<typeof import('../../node_modules/vue')['useTemplateRef']>
|
||||
readonly useTick: UnwrapRef<typeof import('quasar')['useTick']>
|
||||
readonly useTimeout: UnwrapRef<typeof import('quasar')['useTimeout']>
|
||||
readonly useTransitionState: UnwrapRef<typeof import('../../node_modules/vue')['useTransitionState']>
|
||||
readonly watch: UnwrapRef<typeof import('../../node_modules/vue')['watch']>
|
||||
readonly watchEffect: UnwrapRef<typeof import('../../node_modules/vue')['watchEffect']>
|
||||
readonly watchPostEffect: UnwrapRef<typeof import('../../node_modules/vue')['watchPostEffect']>
|
||||
readonly watchSyncEffect: UnwrapRef<typeof import('../../node_modules/vue')['watchSyncEffect']>
|
||||
readonly withCtx: UnwrapRef<typeof import('../../node_modules/vue')['withCtx']>
|
||||
readonly withDirectives: UnwrapRef<typeof import('../../node_modules/vue')['withDirectives']>
|
||||
readonly withKeys: UnwrapRef<typeof import('../../node_modules/vue')['withKeys']>
|
||||
readonly withMemo: UnwrapRef<typeof import('../../node_modules/vue')['withMemo']>
|
||||
readonly withModifiers: UnwrapRef<typeof import('../../node_modules/vue')['withModifiers']>
|
||||
readonly withScopeId: UnwrapRef<typeof import('../../node_modules/vue')['withScopeId']>
|
||||
}
|
||||
}
|
||||
7
Frontend-Learner/.nuxt/types/layouts.d.ts
vendored
Normal file
7
Frontend-Learner/.nuxt/types/layouts.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import type { ComputedRef, MaybeRef } from 'vue'
|
||||
export type LayoutKey = "auth" | "default" | "landing"
|
||||
declare module 'nuxt/app' {
|
||||
interface PageMeta {
|
||||
layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false>
|
||||
}
|
||||
}
|
||||
7
Frontend-Learner/.nuxt/types/middleware.d.ts
vendored
Normal file
7
Frontend-Learner/.nuxt/types/middleware.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import type { NavigationGuard } from 'vue-router'
|
||||
export type MiddlewareKey = "auth"
|
||||
declare module 'nuxt/app' {
|
||||
interface PageMeta {
|
||||
middleware?: MiddlewareKey | NavigationGuard | Array<MiddlewareKey | NavigationGuard>
|
||||
}
|
||||
}
|
||||
14
Frontend-Learner/.nuxt/types/nitro-config.d.ts
vendored
Normal file
14
Frontend-Learner/.nuxt/types/nitro-config.d.ts
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Generated by nitro
|
||||
|
||||
// App Config
|
||||
import type { Defu } from 'defu'
|
||||
|
||||
|
||||
|
||||
type UserAppConfig = Defu<{}, []>
|
||||
|
||||
declare module "nitropack/types" {
|
||||
interface AppConfig extends UserAppConfig {}
|
||||
|
||||
}
|
||||
export {}
|
||||
141
Frontend-Learner/.nuxt/types/nitro-imports.d.ts
vendored
Normal file
141
Frontend-Learner/.nuxt/types/nitro-imports.d.ts
vendored
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
declare global {
|
||||
const __buildAssetsURL: typeof import('../../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths').buildAssetsURL
|
||||
const __publicAssetsURL: typeof import('../../node_modules/@nuxt/nitro-server/dist/runtime/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/nitro-server/dist/runtime/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 'C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths';
|
||||
export { defineAppConfig } from 'C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/nitro-server/dist/runtime/utils/config';
|
||||
6
Frontend-Learner/.nuxt/types/nitro-middleware.d.ts
vendored
Normal file
6
Frontend-Learner/.nuxt/types/nitro-middleware.d.ts
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
export type MiddlewareKey = "auth"
|
||||
declare module 'nitropack' {
|
||||
interface NitroRouteConfig {
|
||||
appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean>
|
||||
}
|
||||
}
|
||||
37
Frontend-Learner/.nuxt/types/nitro-nuxt.d.ts
vendored
Normal file
37
Frontend-Learner/.nuxt/types/nitro-nuxt.d.ts
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
/// <reference path="app.config.d.ts" />
|
||||
/// <reference path="runtime-config.d.ts" />
|
||||
/// <reference types="C:/Users/Boybo/OneDrive/Desktop/e-learning/Frontend-Learner/node_modules/@nuxt/nitro-server/dist/index.mjs" />
|
||||
/// <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>
|
||||
}
|
||||
}
|
||||
14
Frontend-Learner/.nuxt/types/nitro-routes.d.ts
vendored
Normal file
14
Frontend-Learner/.nuxt/types/nitro-routes.d.ts
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 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/nitro-server/dist/runtime/handlers/renderer').default>>>>
|
||||
}
|
||||
'/__nuxt_island/**': {
|
||||
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../server/#internal/nuxt/island-renderer').default>>>>
|
||||
}
|
||||
}
|
||||
}
|
||||
export {}
|
||||
3
Frontend-Learner/.nuxt/types/nitro.d.ts
vendored
Normal file
3
Frontend-Learner/.nuxt/types/nitro.d.ts
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
/// <reference path="./nitro-routes.d.ts" />
|
||||
/// <reference path="./nitro-config.d.ts" />
|
||||
/// <reference path="./nitro-imports.d.ts" />
|
||||
38
Frontend-Learner/.nuxt/types/plugins.d.ts
vendored
Normal file
38
Frontend-Learner/.nuxt/types/plugins.d.ts
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// Generated by Nuxt'
|
||||
import type { Plugin } from '#app'
|
||||
|
||||
type Decorate<T extends Record<string, any>> = { [K in keyof T as K extends string ? `$${K}` : never]: T[K] }
|
||||
|
||||
type InjectionType<A extends Plugin> = A extends {default: Plugin<infer T>} ? Decorate<T> : unknown
|
||||
|
||||
type NuxtAppInjections =
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/browser-devtools-timing.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/dev-server-logs.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/nuxt/dist/pages/runtime/plugins/prefetch.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/check-if-page-unused.js")> &
|
||||
InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.server.js")> &
|
||||
InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.client.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt-quasar-ui/dist/runtime/plugin.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/warn.dev.server.js")> &
|
||||
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-if-layout-used.js")>
|
||||
|
||||
declare module '#app' {
|
||||
interface NuxtApp extends NuxtAppInjections { }
|
||||
|
||||
interface NuxtAppLiterals {
|
||||
pluginName: 'vue-devtools-client' | 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:browser-devtools-timing' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'nuxt:global-components' | 'nuxt:prefetch' | 'nuxt:checkIfPageUnused' | 'nuxt:checkIfLayoutUsed'
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties extends NuxtAppInjections { }
|
||||
}
|
||||
|
||||
export { }
|
||||
122
Frontend-Learner/.nuxt/types/schema.d.ts
vendored
Normal file
122
Frontend-Learner/.nuxt/types/schema.d.ts
vendored
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
import { NuxtModule, ModuleDependencyMeta, RuntimeConfig } from '@nuxt/schema'
|
||||
declare module '@nuxt/schema' {
|
||||
interface ModuleDependencies {
|
||||
["quasar"]?: ModuleDependencyMeta<typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxtjs/tailwindcss"]?: ModuleDependencyMeta<typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxt/devtools"]?: ModuleDependencyMeta<typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
}
|
||||
interface NuxtOptions {
|
||||
/**
|
||||
* Configuration for `nuxt-quasar-ui`
|
||||
*/
|
||||
["quasar"]: typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O, unknown, boolean> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
*/
|
||||
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
*/
|
||||
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? O : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
*/
|
||||
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? O : Record<string, any>
|
||||
}
|
||||
interface NuxtConfig {
|
||||
/**
|
||||
* Configuration for `nuxt-quasar-ui`
|
||||
*/
|
||||
["quasar"]?: typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxtjs/tailwindcss`
|
||||
*/
|
||||
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/devtools`
|
||||
*/
|
||||
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> : Record<string, any>
|
||||
/**
|
||||
* Configuration for `@nuxt/telemetry`
|
||||
*/
|
||||
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> : Record<string, any>
|
||||
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["nuxt-quasar-ui", Exclude<NuxtConfig["quasar"], boolean>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
|
||||
}
|
||||
}
|
||||
declare module 'nuxt/schema' {
|
||||
interface ModuleDependencies {
|
||||
["quasar"]?: ModuleDependencyMeta<typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxtjs/tailwindcss"]?: ModuleDependencyMeta<typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxt/devtools"]?: ModuleDependencyMeta<typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O : Record<string, unknown>>
|
||||
}
|
||||
interface NuxtOptions {
|
||||
/**
|
||||
* Configuration for `nuxt-quasar-ui`
|
||||
* @see https://www.npmjs.com/package/nuxt-quasar-ui
|
||||
*/
|
||||
["quasar"]: typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O, unknown, boolean> ? 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, unknown, boolean> ? 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, unknown, boolean> ? 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, unknown, boolean> ? O : Record<string, any>
|
||||
}
|
||||
interface NuxtConfig {
|
||||
/**
|
||||
* Configuration for `nuxt-quasar-ui`
|
||||
* @see https://www.npmjs.com/package/nuxt-quasar-ui
|
||||
*/
|
||||
["quasar"]?: typeof import("nuxt-quasar-ui").default extends NuxtModule<infer O, unknown, boolean> ? 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, unknown, boolean> ? 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, unknown, boolean> ? 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, unknown, boolean> ? Partial<O> : Record<string, any>
|
||||
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["nuxt-quasar-ui", Exclude<NuxtConfig["quasar"], 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,
|
||||
},
|
||||
}
|
||||
interface PublicRuntimeConfig {
|
||||
|
||||
}
|
||||
}
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
$config: RuntimeConfig
|
||||
}
|
||||
}
|
||||
0
Frontend-Learner/.nuxt/types/vue-shim.d.ts
vendored
Normal file
0
Frontend-Learner/.nuxt/types/vue-shim.d.ts
vendored
Normal file
9
Frontend-Learner/.vscode/settings.json
vendored
Normal file
9
Frontend-Learner/.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"css.lint.unknownAtRules": "ignore",
|
||||
"cSpell.words": [
|
||||
"Sarabun",
|
||||
"Quasar",
|
||||
"form-validation",
|
||||
"glassmorphism"
|
||||
]
|
||||
}
|
||||
5
Frontend-Learner/app.vue
Normal file
5
Frontend-Learner/app.vue
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<NuxtLayout>
|
||||
<NuxtPage />
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
1096
Frontend-Learner/assets/css/main.css
Normal file
1096
Frontend-Learner/assets/css/main.css
Normal file
File diff suppressed because it is too large
Load diff
45
Frontend-Learner/components/common/AppHeader.vue
Normal file
45
Frontend-Learner/components/common/AppHeader.vue
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file AppHeader.vue
|
||||
* @description The main header for the authenticated application dashboard.
|
||||
* Includes sidebar toggle, branding, search functionality, and user menu.
|
||||
*/
|
||||
|
||||
defineProps<{
|
||||
/** Controls visibility of the search bar */
|
||||
showSearch?: boolean
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
/** Emitted when the hamburger menu is clicked */
|
||||
toggleSidebar: []
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<header class="app-header transition-colors" style="background-color: var(--bg-surface); border-bottom: 1px solid var(--border-color);">
|
||||
<!-- Branding & Toggle -->
|
||||
<div class="flex items-center gap-2">
|
||||
<NuxtLink to="/dashboard" style="font-weight: 800; color: var(--primary); font-size: 20px;">
|
||||
e-Learning
|
||||
</NuxtLink>
|
||||
</div>
|
||||
|
||||
<!-- Right Actions -->
|
||||
<div class="flex items-center gap-4">
|
||||
<!-- Search Bar (Optional) -->
|
||||
<div v-if="showSearch !== false" class="relative hidden-mobile" style="width: 300px;">
|
||||
<input
|
||||
type="text"
|
||||
class="input-field"
|
||||
placeholder="ค้นหาคอร์ส..."
|
||||
style="padding-left: 36px;"
|
||||
>
|
||||
<span style="position: absolute; left: 12px; top: 10px; color: var(--text-secondary);">🔍</span>
|
||||
</div>
|
||||
|
||||
<!-- User Profile Dropdown -->
|
||||
<UserMenu />
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
87
Frontend-Learner/components/common/FormInput.vue
Normal file
87
Frontend-Learner/components/common/FormInput.vue
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file FormInput.vue
|
||||
* @description Reusable input component with label, error handling, and support for disabled/required states.
|
||||
*/
|
||||
|
||||
defineProps<{
|
||||
modelValue: string
|
||||
label: string
|
||||
type?: string
|
||||
placeholder?: string
|
||||
error?: string
|
||||
required?: boolean
|
||||
disabled?: boolean
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
/** Update v-model value */
|
||||
'update:modelValue': [value: string]
|
||||
}>()
|
||||
|
||||
const updateValue = (event: Event) => {
|
||||
emit('update:modelValue', (event.target as HTMLInputElement).value)
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="form-group" :class="{ 'has-error': error }">
|
||||
<label class="input-label">
|
||||
{{ label }}
|
||||
<span v-if="required" class="required-mark">*</span>
|
||||
</label>
|
||||
<input
|
||||
:type="type || 'text'"
|
||||
:value="modelValue"
|
||||
class="input-field"
|
||||
:class="{ 'input-error': error }"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
@input="updateValue"
|
||||
>
|
||||
<span v-if="error" class="error-message">
|
||||
<span class="error-icon">⚠</span>
|
||||
{{ error }}
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.form-group {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.required-mark {
|
||||
color: var(--error);
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.input-error {
|
||||
border-color: var(--error) !important;
|
||||
background-color: rgba(239, 68, 68, 0.05);
|
||||
}
|
||||
|
||||
.input-error:focus {
|
||||
outline-color: var(--error) !important;
|
||||
}
|
||||
|
||||
.error-message {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
color: var(--error);
|
||||
font-size: 12px;
|
||||
margin-top: 6px;
|
||||
animation: shake 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.error-icon {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@keyframes shake {
|
||||
0%, 100% { transform: translateX(0); }
|
||||
25% { transform: translateX(-4px); }
|
||||
75% { transform: translateX(4px); }
|
||||
}
|
||||
</style>
|
||||
198
Frontend-Learner/components/common/LandingFooter.vue
Normal file
198
Frontend-Learner/components/common/LandingFooter.vue
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file LandingFooter.vue
|
||||
* @description The main footer for the public landing pages.
|
||||
* Contains site links, social media icons, and app download buttons.
|
||||
*/
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<footer class="landing-footer">
|
||||
<div class="container">
|
||||
<!-- Main Footer Grid -->
|
||||
<div class="footer-grid">
|
||||
|
||||
<!-- Column 1: Brand & Social Media -->
|
||||
<div class="footer-brand">
|
||||
<div class="flex items-center gap-2 mb-4">
|
||||
<div class="logo-box">E</div>
|
||||
<span class="font-bold text-xl" style="color: white;">E-Learning System</span>
|
||||
</div>
|
||||
<p class="text-sm text-slate-400 mb-6">แพลตฟอร์มการเรียนออนไลน์สำหรับทักษแห่งอนาคต</p>
|
||||
<div class="flex gap-4 social-icons">
|
||||
<!-- Placeholder icons -->
|
||||
<a href="#" class="social-icon">f</a>
|
||||
<a href="#" class="social-icon">IG</a>
|
||||
<a href="#" class="social-icon">Y</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Column 2: Services Links -->
|
||||
<div class="footer-column">
|
||||
<h4 class="font-bold mb-4" style="color: white;">บริการทั้งหมด</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="#">คอร์สเรียนออนไลน์</a></li>
|
||||
<li><a href="#">หลักสูตร Onsite</a></li>
|
||||
<li><a href="#">หลักสูตร Class</a></li>
|
||||
<li><a href="#">สำหรับองค์กร</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Column 3: About Links -->
|
||||
<div class="footer-column">
|
||||
<h4 class="font-bold mb-4" style="color: white;">เกี่ยวกับเรา</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="#">แพ็กเกจรายปี</a></li>
|
||||
<li><a href="#">เส้นทางการเรียน</a></li>
|
||||
<li><a href="#">วัดระดับทักษะ <span class="badge-beta">Beta</span></a></li>
|
||||
<li><a href="#">บทความ</a></li>
|
||||
<li><a href="#">คำถามที่พบบ่อย</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Column 4: Join Us Links -->
|
||||
<div class="footer-column">
|
||||
<h4 class="font-bold mb-4" style="color: white;">ร่วมงานกับเรา</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="#">สมัครงาน</a></li>
|
||||
<li><a href="#">สมัครเป็น Affiliate</a></li>
|
||||
<li><a href="#">สมัครเป็นผู้สอน</a></li>
|
||||
<li><a href="#">เกี่ยวกับเรา</a></li>
|
||||
<li><a href="#">ติดต่อเรา</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Column 5: App Download & Contact -->
|
||||
<div class="footer-column">
|
||||
<h4 class="font-bold mb-4" style="color: white;">ดาวน์โหลดแอปพลิเคชัน</h4>
|
||||
<div class="flex flex-col gap-2">
|
||||
<button class="app-btn">
|
||||
<span>🍎</span> App Store
|
||||
</button>
|
||||
<button class="app-btn">
|
||||
<span>▶️</span> Google Play
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h4 class="font-bold mt-6 mb-4" style="color: white;">ปรึกษาการเรียน</h4>
|
||||
<button class="btn btn-success w-full">
|
||||
<span>💬</span> เพิ่มเพื่อน
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Bottom: Copyright & Legal -->
|
||||
<div class="footer-bottom">
|
||||
<p class="text-xs text-slate-400">© Copyright 2019-2026 LIKE ME X CO.,LTD All rights reserved.</p>
|
||||
<div class="flex gap-4 text-xs text-slate-400">
|
||||
<a href="#">ข้อตกลงการใช้บริการ</a>
|
||||
<span>|</span>
|
||||
<a href="#">นโยบายความเป็นส่วนตัว</a>
|
||||
<span>|</span>
|
||||
<a href="#">นโยบายการคืนเงิน</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
/* Main Footer Structure */
|
||||
.landing-footer {
|
||||
background-color: #080b14; /* Deep Navy Background */
|
||||
padding: 60px 0 20px;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.05); /* Subtle border */
|
||||
margin-top: auto;
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 24px;
|
||||
}
|
||||
|
||||
/* 5-Column Grid Layout */
|
||||
.footer-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr 1fr 1fr 1fr; /* First column is wider for branding */
|
||||
gap: 40px;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.logo-box {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background: #eff6ff;
|
||||
color: #3b82f6;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.footer-links li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
color: #94a3b8;
|
||||
font-size: 14px;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
color: #3b82f6;
|
||||
}
|
||||
|
||||
.badge-beta {
|
||||
background: #fee2e2;
|
||||
color: #ef4444;
|
||||
font-size: 10px;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.app-btn {
|
||||
background: #000;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
padding: 8px 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
/* Responsive Breakpoints */
|
||||
@media (max-width: 1024px) {
|
||||
.footer-grid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.footer-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 32px;
|
||||
}
|
||||
.footer-bottom {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
131
Frontend-Learner/components/common/LandingHeader.vue
Normal file
131
Frontend-Learner/components/common/LandingHeader.vue
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file LandingHeader.vue
|
||||
* @description The main header for the public landing pages.
|
||||
* Features a transparent background that becomes solid/glass upon scrolling.
|
||||
*/
|
||||
|
||||
// Track scrolling state to adjust header styling
|
||||
const isScrolled = ref(false)
|
||||
const { isAuthenticated } = useAuth()
|
||||
|
||||
onMounted(() => {
|
||||
// Add scroll listener to toggle 'isScrolled' class
|
||||
window.addEventListener('scroll', () => {
|
||||
isScrolled.value = window.scrollY > 20
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!--
|
||||
Header Container
|
||||
- Transitions between transparent and glass effect based on scroll.
|
||||
-->
|
||||
<header
|
||||
class="landing-header transition-all duration-300"
|
||||
:class="[isScrolled ? 'h-16 glass-nav shadow-lg' : 'h-24 bg-transparent']"
|
||||
>
|
||||
<div class="container h-full flex items-center justify-between">
|
||||
<!--
|
||||
Left Section: Logo & Desktop Navigation
|
||||
-->
|
||||
<div class="flex items-center gap-12">
|
||||
<!-- Logo -->
|
||||
<NuxtLink to="/" class="flex items-center gap-3 group">
|
||||
<div class="logo-box bg-blue-600 text-white font-black rounded-xl w-10 h-10 flex items-center justify-center shadow-lg shadow-blue-600/30 group-hover:scale-110 transition-transform">
|
||||
E
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<span class="font-black text-lg leading-none tracking-tight text-white group-hover:text-blue-400 transition-colors">E-Learning</span>
|
||||
<span class="text-[10px] font-bold text-slate-500 uppercase tracking-[0.2em] leading-none mt-1">Platform</span>
|
||||
</div>
|
||||
</NuxtLink>
|
||||
|
||||
<!-- Desktop Links -->
|
||||
<nav class="hidden md:block">
|
||||
<ul class="flex items-center gap-8 text-sm font-bold">
|
||||
<li>
|
||||
<NuxtLink to="/browse" class="text-slate-400 hover:text-white transition-colors relative group">
|
||||
คอร์สทั้งหมด
|
||||
<span class="absolute -bottom-1 left-0 w-0 h-0.5 bg-blue-600 transition-all group-hover:w-full"/>
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/browse/discovery" class="text-slate-400 hover:text-white transition-colors relative group">
|
||||
ค้นพบ
|
||||
<span class="absolute -bottom-1 left-0 w-0 h-0.5 bg-blue-600 transition-all group-hover:w-full"/>
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
Right Section: Action Buttons (Login/Register or Dashboard)
|
||||
-->
|
||||
<div class="flex items-center gap-4">
|
||||
<template v-if="!isAuthenticated">
|
||||
<NuxtLink to="/auth/login" class="text-sm font-bold text-slate-300 hover:text-white px-4 py-2 transition-colors">เข้าสู่ระบบ</NuxtLink>
|
||||
<NuxtLink to="/auth/register" class="btn-primary-premium shadow-lg shadow-blue-600/20">
|
||||
เริ่มต้นใช้งาน
|
||||
</NuxtLink>
|
||||
</template>
|
||||
<template v-else>
|
||||
<NuxtLink to="/dashboard" class="btn-primary-premium shadow-lg shadow-blue-600/20">
|
||||
เข้าสู่หน้าจัดการเรียน
|
||||
</NuxtLink>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
/* Fixed header to stay on top */
|
||||
.landing-header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
/* Glassmorphism Effect for Scrolled Header */
|
||||
.glass-nav {
|
||||
background: rgba(15, 23, 42, 0.8);
|
||||
backdrop-filter: blur(12px);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1440px;
|
||||
margin: 0 auto;
|
||||
padding: 0 24px;
|
||||
}
|
||||
|
||||
/* Premium Primary Button Styling */
|
||||
.btn-primary-premium {
|
||||
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
|
||||
color: white;
|
||||
padding: 0.75rem 1.5rem;
|
||||
border-radius: 0.75rem;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 800;
|
||||
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn-primary-premium:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 20px -4px rgba(37, 99, 235, 0.5);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
padding: 0 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
108
Frontend-Learner/components/common/LoadingSkeleton.vue
Normal file
108
Frontend-Learner/components/common/LoadingSkeleton.vue
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<script setup lang="ts">
|
||||
defineProps<{
|
||||
type?: 'text' | 'avatar' | 'card' | 'button'
|
||||
width?: string
|
||||
height?: string
|
||||
count?: number
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="skeleton-wrapper">
|
||||
<template v-if="type === 'card'">
|
||||
<div v-for="i in (count || 1)" :key="i" class="skeleton-card">
|
||||
<div class="skeleton skeleton-image"/>
|
||||
<div class="skeleton-content">
|
||||
<div class="skeleton skeleton-title"/>
|
||||
<div class="skeleton skeleton-text"/>
|
||||
<div class="skeleton skeleton-text short"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template v-else-if="type === 'avatar'">
|
||||
<div class="skeleton skeleton-avatar"/>
|
||||
</template>
|
||||
|
||||
<template v-else-if="type === 'button'">
|
||||
<div class="skeleton skeleton-button" :style="{ width: width || '120px' }"/>
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<div
|
||||
v-for="i in (count || 1)"
|
||||
:key="i"
|
||||
class="skeleton skeleton-text"
|
||||
:style="{ width: width || '100%', height: height || '16px' }"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.skeleton-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.skeleton {
|
||||
background: linear-gradient(90deg, var(--neutral-100) 25%, var(--neutral-200) 50%, var(--neutral-100) 75%);
|
||||
background-size: 200% 100%;
|
||||
animation: shimmer 1.5s infinite;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.skeleton-card {
|
||||
background: var(--bg-surface);
|
||||
border-radius: var(--radius-xl);
|
||||
border: 1px solid var(--border-color);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.skeleton-image {
|
||||
height: 160px;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.skeleton-content {
|
||||
padding: 16px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.skeleton-title {
|
||||
height: 20px;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.skeleton-text {
|
||||
height: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.skeleton-text.short {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.skeleton-avatar {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.skeleton-button {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
@keyframes shimmer {
|
||||
0% {
|
||||
background-position: -200% 0;
|
||||
}
|
||||
100% {
|
||||
background-position: 200% 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
68
Frontend-Learner/components/common/LoadingSpinner.vue
Normal file
68
Frontend-Learner/components/common/LoadingSpinner.vue
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<script setup lang="ts">
|
||||
defineProps<{
|
||||
size?: 'sm' | 'md' | 'lg'
|
||||
text?: string
|
||||
fullPage?: boolean
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div :class="['loading-container', { 'loading-fullpage': fullPage }]">
|
||||
<div :class="['spinner', size || 'md']"/>
|
||||
<span v-if="text" class="loading-text">{{ text }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.loading-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 12px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.loading-fullpage {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
border: 3px solid var(--neutral-200);
|
||||
border-top-color: var(--primary);
|
||||
border-radius: 50%;
|
||||
animation: spin 0.8s linear infinite;
|
||||
}
|
||||
|
||||
.spinner.sm {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
.spinner.md {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-width: 3px;
|
||||
}
|
||||
|
||||
.spinner.lg {
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
border-width: 4px;
|
||||
}
|
||||
|
||||
.loading-text {
|
||||
color: var(--text-secondary);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
29
Frontend-Learner/components/common/MobileNav.vue
Normal file
29
Frontend-Learner/components/common/MobileNav.vue
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<script setup lang="ts">
|
||||
const route = useRoute()
|
||||
|
||||
const navItems = [
|
||||
{ to: '/dashboard', icon: '🏠', label: 'หน้าหลัก' },
|
||||
{ to: '/browse/discovery', icon: '🔍', label: 'รายการคอร์ส' },
|
||||
{ to: '/dashboard/my-courses', icon: '📚', label: 'คอร์สของฉัน' }
|
||||
]
|
||||
|
||||
const isActive = (path: string) => {
|
||||
if (path === '/') return route.path === '/'
|
||||
return route.path.startsWith(path)
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<nav class="mobile-nav">
|
||||
<NuxtLink
|
||||
v-for="item in navItems"
|
||||
:key="item.to"
|
||||
:to="item.to"
|
||||
class="mobile-nav-item"
|
||||
:class="{ active: isActive(item.to) }"
|
||||
>
|
||||
<span>{{ item.icon }}</span>
|
||||
<span>{{ item.label }}</span>
|
||||
</NuxtLink>
|
||||
</nav>
|
||||
</template>
|
||||
237
Frontend-Learner/components/course/CourseCard.vue
Normal file
237
Frontend-Learner/components/course/CourseCard.vue
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file CourseCard.vue
|
||||
* @description Card component for displaying course information.
|
||||
* Supports various states: default, in-progress, completed.
|
||||
* Handles action events (view, continue, certificate).
|
||||
*/
|
||||
|
||||
interface CourseCardProps {
|
||||
/** Course Title */
|
||||
title: string
|
||||
/** Difficulty Level (Beginner, Intermediate, etc.) */
|
||||
level?: string
|
||||
/** Visual type for level badge (color coding) */
|
||||
levelType?: 'neutral' | 'warning' | 'success'
|
||||
/** Course Price (e.g., 'Free', '฿990') */
|
||||
price?: string
|
||||
/** Short description */
|
||||
description?: string
|
||||
/** Rating score (e.g., '4.8') */
|
||||
rating?: string
|
||||
/** Number of lessons */
|
||||
lessons?: string
|
||||
/** Learning progress percentage (0-100) */
|
||||
progress?: number
|
||||
/** Whether the course is completed */
|
||||
completed?: boolean
|
||||
/** Show 'View Details' button */
|
||||
showViewDetails?: boolean
|
||||
/** Show 'Continue Learning' button */
|
||||
showContinue?: boolean
|
||||
/** Show 'Download Certificate' button (if completed) */
|
||||
showCertificate?: boolean
|
||||
/** Show 'Study Again' button (if completed) */
|
||||
showStudyAgain?: boolean
|
||||
/** URL for course thumbnail image */
|
||||
image?: string
|
||||
}
|
||||
|
||||
defineProps<CourseCardProps>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
viewDetails: []
|
||||
continue: []
|
||||
viewCertificate: []
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="card course-card group">
|
||||
<!-- Thumbnail -->
|
||||
<div class="thumbnail-wrapper relative h-44 overflow-hidden rounded-t-[1.5rem]">
|
||||
<img
|
||||
:src="image || 'https://images.unsplash.com/photo-1498050108023-c5249f4df085?w=400&q=80'"
|
||||
:alt="title"
|
||||
class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-700"
|
||||
>
|
||||
<div v-if="completed" class="absolute inset-0 bg-emerald-600/60 backdrop-blur-[2px] flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300">
|
||||
<span class="text-white bg-emerald-500 w-12 h-12 rounded-full flex items-center justify-center shadow-lg transform scale-0 group-hover:scale-100 transition-transform duration-500">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="20 20 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Badges overlay -->
|
||||
<div class="absolute top-4 left-4 flex gap-2">
|
||||
<span v-if="level" :class="`status-pill status-${levelType || 'neutral'} shadow-sm text-[9px]`">
|
||||
{{ level }}
|
||||
</span>
|
||||
</div>
|
||||
<div v-if="price" class="absolute top-4 right-4 glass px-3 py-1 rounded-full text-xs font-black text-white shadow-sm">
|
||||
{{ price }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Content -->
|
||||
<div class="p-6 flex flex-col flex-1">
|
||||
<!-- Title -->
|
||||
<h3 class="font-black text-lg mb-2 line-clamp-1 text-slate-900 dark:text-white group-hover:text-blue-400 transition-colors">{{ title }}</h3>
|
||||
|
||||
<!-- Description -->
|
||||
<div v-if="description" class="text-sm mb-6 line-clamp-2 leading-relaxed text-slate-600 dark:text-slate-400">{{ description }}</div>
|
||||
|
||||
<!-- Rating & Lessons -->
|
||||
<div v-if="rating || lessons" class="flex items-center gap-4 text-[11px] font-bold mb-6 uppercase tracking-wider text-slate-500 dark:text-slate-400">
|
||||
<span v-if="rating" class="flex items-center gap-1"><span class="text-amber-400 text-sm">★</span> {{ rating }}</span>
|
||||
<span v-if="lessons" class="flex items-center gap-1"><span class="text-blue-400">📚</span> {{ lessons }} บทเรียน</span>
|
||||
</div>
|
||||
|
||||
<!-- Progress Bar -->
|
||||
<div v-if="progress !== undefined && !completed" class="mb-8 p-3 rounded-2xl" style="background-color: rgba(148, 163, 184, 0.1);">
|
||||
<div class="flex justify-between items-center text-[10px] font-black uppercase tracking-widest mb-1.5">
|
||||
<span style="color: var(--text-secondary);">Progress</span>
|
||||
<span class="text-blue-600">{{ progress }}%</span>
|
||||
</div>
|
||||
<div class="w-full h-1.5 bg-slate-300 dark:bg-slate-700 rounded-full overflow-hidden">
|
||||
<div class="h-full bg-blue-600 shadow-[0_0_10px_rgba(37,99,235,0.4)] rounded-full transition-all duration-1000" :style="{ width: `${progress}%` }"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Completed Badge -->
|
||||
<div v-if="completed" class="mb-6">
|
||||
<span class="status-pill status-success text-[10px] font-black uppercase tracking-widest flex items-center justify-center gap-2">
|
||||
<span class="text-sm">✓</span> เรียนจบเรียบร้อย
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Actions -->
|
||||
<button v-if="showViewDetails" class="btn-premium-secondary w-full mt-auto" @click="emit('viewDetails')">
|
||||
ดูรายละเอียด
|
||||
</button>
|
||||
|
||||
<NuxtLink v-if="showContinue" to="/classroom/learning" class="btn-premium-primary w-full mt-auto shadow-lg shadow-blue-600/20">
|
||||
เรียนต่อทันที
|
||||
</NuxtLink>
|
||||
|
||||
<div v-if="completed && (showCertificate || showStudyAgain)" class="flex flex-col gap-2 mt-auto">
|
||||
<NuxtLink v-if="showStudyAgain" to="/classroom/learning" class="btn-premium-secondary w-full">
|
||||
ทบทวนบทเรียน
|
||||
</NuxtLink>
|
||||
<button v-if="showCertificate" class="btn-premium-success w-full shadow-lg shadow-emerald-600/20" @click="emit('viewCertificate')">
|
||||
ดาวน์โหลดประกาศนียบัตร
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.course-card {
|
||||
padding: 0;
|
||||
border-radius: 2rem;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
background: var(--bg-surface);
|
||||
border: 1px solid var(--border-color);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.course-card:hover {
|
||||
transform: translateY(-8px);
|
||||
box-shadow: var(--shadow-xl);
|
||||
}
|
||||
|
||||
/* Remove explicit dark mode block as default variables handle it */
|
||||
/* But keep specific tweaks if needed */
|
||||
|
||||
.btn-premium-primary {
|
||||
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
|
||||
color: white;
|
||||
padding: 0.875rem;
|
||||
border-radius: 1rem;
|
||||
font-weight: 800;
|
||||
font-size: 0.875rem;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.btn-premium-primary:hover {
|
||||
filter: brightness(110%);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.btn-premium-secondary {
|
||||
background: transparent;
|
||||
color: var(--text-main);
|
||||
padding: 0.875rem;
|
||||
border-radius: 1rem;
|
||||
font-weight: 800;
|
||||
font-size: 0.875rem;
|
||||
border: 1px solid var(--border-color);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.btn-premium-secondary:hover {
|
||||
background: var(--bg-body);
|
||||
border-color: #cbd5e1;
|
||||
}
|
||||
|
||||
:global(.dark) .btn-premium-secondary {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: #e2e8f0;
|
||||
border-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
:global(.dark) .btn-premium-secondary:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.btn-premium-success {
|
||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
||||
color: white;
|
||||
padding: 0.875rem;
|
||||
border-radius: 1rem;
|
||||
font-weight: 800;
|
||||
font-size: 0.875rem;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.glass {
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
backdrop-filter: blur(8px);
|
||||
border: 1px solid rgba(229, 231, 235, 0.5);
|
||||
}
|
||||
|
||||
:global(.dark) .glass {
|
||||
background: rgba(15, 23, 42, 0.3);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.status-pill {
|
||||
@apply px-3 py-1 rounded-full font-black uppercase tracking-wider;
|
||||
}
|
||||
.status-success {
|
||||
@apply bg-emerald-100 text-emerald-700;
|
||||
}
|
||||
.status-warning {
|
||||
@apply bg-amber-100 text-amber-700;
|
||||
}
|
||||
.status-neutral {
|
||||
@apply bg-slate-100 text-slate-700;
|
||||
}
|
||||
|
||||
:global(.dark) .status-success {
|
||||
@apply bg-emerald-900/40 text-emerald-300;
|
||||
}
|
||||
|
||||
:global(.dark) .status-warning {
|
||||
@apply bg-amber-900/40 text-amber-300;
|
||||
}
|
||||
|
||||
:global(.dark) .status-neutral {
|
||||
@apply bg-slate-700 text-slate-300;
|
||||
}
|
||||
</style>
|
||||
100
Frontend-Learner/components/user/UserAvatar.vue
Normal file
100
Frontend-Learner/components/user/UserAvatar.vue
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
<script setup lang="ts">
|
||||
const props = defineProps<{
|
||||
size?: number | string
|
||||
photoURL?: string
|
||||
firstName?: string
|
||||
lastName?: string
|
||||
}>()
|
||||
|
||||
const imageError = ref(false)
|
||||
|
||||
const avatarSize = computed(() => {
|
||||
const s = props.size || 32
|
||||
if (typeof s === 'number') return `${s}px`
|
||||
// If it's a string consisting only of digits, append px
|
||||
if (/^\d+$/.test(s)) return `${s}px`
|
||||
return s
|
||||
})
|
||||
|
||||
const initials = computed(() => {
|
||||
const getFirstChar = (name?: string) => {
|
||||
if (!name) return ''
|
||||
// For Thai names, if the first char is a leading vowel (เ แ โ ใ ไ), skip it to get the consonant
|
||||
const leadingVowels = ['เ', 'แ', 'โ', 'ใ', 'ไ']
|
||||
if (leadingVowels.includes(name.charAt(0)) && name.length > 1) {
|
||||
return name.charAt(1)
|
||||
}
|
||||
return name.charAt(0)
|
||||
}
|
||||
|
||||
const f = getFirstChar(props.firstName)
|
||||
const l = getFirstChar(props.lastName)
|
||||
return (f + l).toUpperCase()
|
||||
})
|
||||
|
||||
const handleImageError = () => {
|
||||
imageError.value = true
|
||||
}
|
||||
|
||||
// Watch for photoURL changes to reset error state
|
||||
watch(() => props.photoURL, () => {
|
||||
imageError.value = false
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="user-avatar"
|
||||
:style="{ width: avatarSize, height: avatarSize }"
|
||||
>
|
||||
<img
|
||||
v-if="photoURL && !imageError"
|
||||
:src="photoURL"
|
||||
class="avatar-img"
|
||||
@error="handleImageError"
|
||||
>
|
||||
<div v-else class="avatar-initials">
|
||||
{{ initials }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.user-avatar {
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background-color: var(--neutral-200);
|
||||
color: var(--neutral-600);
|
||||
font-weight: 700;
|
||||
font-size: 13px;
|
||||
flex-shrink: 0;
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.avatar-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.avatar-initials {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #3b82f6; /* Blue-500 to match theme */
|
||||
color: #ffffff;
|
||||
user-select: none;
|
||||
font-size: 13px;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* Specific styling for AppHeader integration */
|
||||
:deep(.avatar-initials) {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
210
Frontend-Learner/components/user/UserMenu.vue
Normal file
210
Frontend-Learner/components/user/UserMenu.vue
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file UserMenu.vue
|
||||
* @description User profile dropdown menu component.
|
||||
* Features:
|
||||
* - Displays user initials and info
|
||||
* - Navigation links
|
||||
* - Dark mode toggle
|
||||
* - Logout functionality
|
||||
* - Responsive positioning using Teleport
|
||||
*/
|
||||
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { useAuth } from '~/composables/useAuth'
|
||||
|
||||
const { currentUser, logout } = useAuth()
|
||||
const isOpen = ref(false)
|
||||
const isDarkMode = ref(false)
|
||||
const menuRef = ref<HTMLDivElement | null>(null)
|
||||
|
||||
// Sync Dark Mode state on mount
|
||||
onMounted(() => {
|
||||
// Should default to light, so we ensure state matches.
|
||||
if (document.documentElement.classList.contains('dark')) {
|
||||
isDarkMode.value = true
|
||||
}
|
||||
})
|
||||
// Position calculation for the dropdown
|
||||
const menuPosition = ref({ top: '0px', right: '0px' })
|
||||
|
||||
// Computed property to display user initials (e.g. "JD" for John Doe)
|
||||
const userInitials = computed(() => {
|
||||
const f = currentUser.value.firstName?.charAt(0).toUpperCase() || ''
|
||||
const l = currentUser.value.lastName?.charAt(0).toUpperCase() || ''
|
||||
return f + l
|
||||
})
|
||||
|
||||
const userName = computed(() => {
|
||||
return `${currentUser.value.firstName} ${currentUser.value.lastName}`
|
||||
})
|
||||
|
||||
// Navigation menu definition
|
||||
const menuItems = [
|
||||
{ label: 'หน้าหลัก', to: '/dashboard' },
|
||||
{ label: 'รายการคอร์ส', to: '/browse/discovery' },
|
||||
{ label: 'คอร์สของฉัน', to: '/dashboard/my-courses' },
|
||||
{ label: 'ตั้งค่าบัญชี', to: '/dashboard/profile' }
|
||||
]
|
||||
|
||||
const handleNavigate = (path: string) => {
|
||||
navigateTo(path)
|
||||
isOpen.value = false
|
||||
}
|
||||
|
||||
const handleLogout = async () => {
|
||||
await logout()
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles dark mode on the document element.
|
||||
*/
|
||||
const toggleDarkMode = () => {
|
||||
isDarkMode.value = !isDarkMode.value
|
||||
if (isDarkMode.value) {
|
||||
document.documentElement.classList.add('dark')
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates and updates the menu position relative to the button.
|
||||
*/
|
||||
const updateMenuPosition = () => {
|
||||
if (menuRef.value) {
|
||||
const rect = menuRef.value.getBoundingClientRect()
|
||||
menuPosition.value = {
|
||||
top: `${rect.bottom + 8}px`,
|
||||
right: `${window.innerWidth - rect.right}px`
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const toggleMenu = () => {
|
||||
isOpen.value = !isOpen.value
|
||||
if (isOpen.value) {
|
||||
updateMenuPosition()
|
||||
}
|
||||
}
|
||||
|
||||
// Event listeners for closing menu on click outside and resizing
|
||||
onMounted(() => {
|
||||
const handleClickOutside = (e: MouseEvent) => {
|
||||
if (isOpen.value && menuRef.value && !menuRef.value.contains(e.target as Node)) {
|
||||
isOpen.value = false
|
||||
}
|
||||
}
|
||||
document.addEventListener('click', handleClickOutside)
|
||||
return () => {
|
||||
document.removeEventListener('click', handleClickOutside)
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
const handleResize = () => {
|
||||
if (isOpen.value) {
|
||||
updateMenuPosition()
|
||||
}
|
||||
}
|
||||
window.addEventListener('resize', handleResize)
|
||||
return () => {
|
||||
window.removeEventListener('resize', handleResize)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div ref="menuRef" class="relative">
|
||||
<!-- Avatar Button -->
|
||||
<button
|
||||
class="flex items-center justify-center w-10 h-10 rounded-full bg-blue-500 text-white font-bold text-sm hover:bg-blue-600 transition-colors cursor-pointer ring-2 ring-blue-500/30"
|
||||
:title="userName"
|
||||
@click="toggleMenu"
|
||||
>
|
||||
{{ userInitials }}
|
||||
</button>
|
||||
|
||||
<!-- Dropdown Menu - Teleport to body to avoid overflow-hidden -->
|
||||
<Teleport to="body">
|
||||
<Transition
|
||||
enter-active-class="transition ease-out duration-100"
|
||||
enter-from-class="transform opacity-0 scale-95"
|
||||
enter-to-class="transform opacity-100 scale-100"
|
||||
leave-active-class="transition ease-in duration-75"
|
||||
leave-from-class="transform opacity-100 scale-100"
|
||||
leave-to-class="transform opacity-0 scale-95"
|
||||
>
|
||||
<div
|
||||
v-if="isOpen"
|
||||
class="fixed rounded-2xl shadow-lg dark:shadow-2xl z-50 w-64 border overflow-hidden transition-colors"
|
||||
style="background-color: var(--bg-surface); border-color: rgba(255,255,255,0.1);"
|
||||
:style="{
|
||||
top: menuPosition.top,
|
||||
right: menuPosition.right
|
||||
}"
|
||||
>
|
||||
|
||||
|
||||
<!-- Menu Items -->
|
||||
<nav class="py-2">
|
||||
<button
|
||||
v-for="item in menuItems"
|
||||
:key="item.label"
|
||||
class="w-full px-6 py-3 text-left transition-colors text-sm font-medium hover:bg-slate-100 dark:hover:bg-white/10 text-slate-800 dark:text-white"
|
||||
@click="handleNavigate(item.to)"
|
||||
>
|
||||
{{ item.label }}
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<!-- Dark Mode Toggle -->
|
||||
<div class="px-6 py-3 border-slate-200 dark:border-slate-700">
|
||||
<button
|
||||
class="w-full flex items-center justify-between py-2"
|
||||
@click="toggleDarkMode"
|
||||
>
|
||||
<span class="text-sm font-medium text-slate-800 dark:text-white">โหมดกลางคืน</span>
|
||||
<div
|
||||
:class="[
|
||||
'relative inline-flex h-6 w-11 items-center rounded-full transition-colors',
|
||||
isDarkMode ? 'bg-blue-600' : 'bg-slate-300'
|
||||
]"
|
||||
>
|
||||
<span
|
||||
:class="[
|
||||
'inline-block h-4 w-4 transform rounded-full bg-white transition-transform',
|
||||
isDarkMode ? 'translate-x-6' : 'translate-x-1'
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Logout Button -->
|
||||
<div class="px-6 py-3 border-t border-slate-200 dark:border-slate-700">
|
||||
<button
|
||||
class="w-full px-4 py-2 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 hover:bg-red-100 dark:hover:bg-red-900/40 rounded-lg font-medium transition-colors text-sm"
|
||||
@click="handleLogout"
|
||||
>
|
||||
ออกจากระบบ
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Transition>
|
||||
</Teleport>
|
||||
|
||||
<!-- Backdrop to close menu -->
|
||||
<div
|
||||
v-if="isOpen"
|
||||
class="fixed inset-0 z-40"
|
||||
@click="isOpen = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
button {
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
</style>
|
||||
37
Frontend-Learner/composables/useAuth.ts
Normal file
37
Frontend-Learner/composables/useAuth.ts
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// Shared global state for current user
|
||||
const currentUser = ref({
|
||||
prefix: 'นาย',
|
||||
firstName: 'สมชาย',
|
||||
lastName: 'ใจดี',
|
||||
email: 'student@example.com',
|
||||
photoURL: '' // Set to URL if available
|
||||
})
|
||||
|
||||
export const useAuth = () => {
|
||||
const token = useCookie('auth_token', {
|
||||
maxAge: 60 * 60 * 24 * 7, // 1 week
|
||||
sameSite: 'lax',
|
||||
secure: process.env.NODE_ENV === 'production'
|
||||
})
|
||||
|
||||
const isAuthenticated = computed(() => !!token.value)
|
||||
|
||||
const login = (mockToken: string = 'demo-token') => {
|
||||
token.value = mockToken
|
||||
}
|
||||
|
||||
const logout = () => {
|
||||
token.value = null
|
||||
// Reset user photo if needed on logout
|
||||
// currentUser.value.photoURL = ''
|
||||
return navigateTo('/auth/login', { replace: true })
|
||||
}
|
||||
|
||||
return {
|
||||
isAuthenticated,
|
||||
token,
|
||||
currentUser,
|
||||
login,
|
||||
logout
|
||||
}
|
||||
}
|
||||
91
Frontend-Learner/composables/useFormValidation.ts
Normal file
91
Frontend-Learner/composables/useFormValidation.ts
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
export interface ValidationRule {
|
||||
required?: boolean
|
||||
minLength?: number
|
||||
maxLength?: number
|
||||
email?: boolean
|
||||
pattern?: RegExp
|
||||
match?: string
|
||||
custom?: (value: string) => string | null
|
||||
}
|
||||
|
||||
export interface FieldErrors {
|
||||
[key: string]: string
|
||||
}
|
||||
|
||||
export function useFormValidation() {
|
||||
const errors = ref<FieldErrors>({})
|
||||
|
||||
const validateEmail = (email: string): boolean => {
|
||||
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
|
||||
return re.test(email)
|
||||
}
|
||||
|
||||
const validateField = (value: string, rules: ValidationRule, fieldName: string, formData?: Record<string, string>): string | null => {
|
||||
if (rules.required && !value.trim()) {
|
||||
return `กรุณากรอก${fieldName}`
|
||||
}
|
||||
|
||||
if (rules.minLength && value.length < rules.minLength) {
|
||||
return `${fieldName}ต้องมีอย่างน้อย ${rules.minLength} ตัวอักษร`
|
||||
}
|
||||
|
||||
if (rules.maxLength && value.length > rules.maxLength) {
|
||||
return `${fieldName}ต้องไม่เกิน ${rules.maxLength} ตัวอักษร`
|
||||
}
|
||||
|
||||
if (rules.email && value && !validateEmail(value)) {
|
||||
return 'รูปแบบอีเมลไม่ถูกต้อง'
|
||||
}
|
||||
|
||||
if (rules.pattern && value && !rules.pattern.test(value)) {
|
||||
return `${fieldName}รูปแบบไม่ถูกต้อง`
|
||||
}
|
||||
|
||||
if (rules.match && formData && value !== formData[rules.match]) {
|
||||
return 'รหัสผ่านไม่ตรงกัน'
|
||||
}
|
||||
|
||||
if (rules.custom) {
|
||||
return rules.custom(value)
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
const validate = (
|
||||
formData: Record<string, string>,
|
||||
validationRules: Record<string, { rules: ValidationRule; label: string }>
|
||||
): boolean => {
|
||||
const newErrors: FieldErrors = {}
|
||||
let isValid = true
|
||||
|
||||
for (const [fieldKey, config] of Object.entries(validationRules)) {
|
||||
const error = validateField(formData[fieldKey] || '', config.rules, config.label, formData)
|
||||
if (error) {
|
||||
newErrors[fieldKey] = error
|
||||
isValid = false
|
||||
}
|
||||
}
|
||||
|
||||
errors.value = newErrors
|
||||
return isValid
|
||||
}
|
||||
|
||||
const clearErrors = () => {
|
||||
errors.value = {}
|
||||
}
|
||||
|
||||
const clearFieldError = (field: string) => {
|
||||
if (errors.value[field]) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete errors.value[field]
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
errors,
|
||||
validate,
|
||||
clearErrors,
|
||||
clearFieldError
|
||||
}
|
||||
}
|
||||
197
Frontend-Learner/error.vue
Normal file
197
Frontend-Learner/error.vue
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
error: {
|
||||
type: Object,
|
||||
default: null
|
||||
}
|
||||
})
|
||||
|
||||
useHead({
|
||||
title: `${props.error?.statusCode || 'Error'} - e-Learning`
|
||||
})
|
||||
|
||||
const handleError = () => {
|
||||
clearError({ redirect: '/home' })
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="error-wrapper">
|
||||
<!-- 404 Not Found -->
|
||||
<div v-if="error?.statusCode === 404" class="error-content fade-in">
|
||||
<div class="illustration-box">
|
||||
<span class="emoji-large">🔭</span>
|
||||
<div class="glow-effect primary"/>
|
||||
</div>
|
||||
|
||||
<h1 class="error-code text-primary">404</h1>
|
||||
<h2 class="error-title">ไม่พบหน้าที่คุณต้องการ</h2>
|
||||
<p class="error-desc">
|
||||
ขออภัย เราไม่พบหน้าที่คุณค้นหาในระบบ <br>
|
||||
อาจเป็นเพราะลิงก์ผิดพลาด ลบไปแล้ว หรือคุณไม่มีสิทธิ์เข้าถึง
|
||||
</p>
|
||||
|
||||
<div class="actions">
|
||||
<button class="btn btn-primary" @click="handleError">
|
||||
กลับสู่หน้าหลัก
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 403 Forbidden / Other Errors -->
|
||||
<div v-else class="error-content fade-in">
|
||||
<div class="illustration-box">
|
||||
<span class="emoji-large">🔐</span>
|
||||
<div class="glow-effect error"/>
|
||||
</div>
|
||||
|
||||
<h1 class="error-code text-error">{{ error?.statusCode || 'Oops' }}</h1>
|
||||
<h2 class="error-title">
|
||||
{{ error?.statusCode === 403 ? 'ไม่มีสิทธิ์เข้าถึง' : 'เกิดข้อผิดพลาดบางอย่าง' }}
|
||||
</h2>
|
||||
<p class="error-desc">
|
||||
{{ error?.message || 'ขออภัย ระบบขัดข้องชั่วคราว กรุณาลองใหม่อีกครั้ง' }}
|
||||
</p>
|
||||
|
||||
<div class="actions">
|
||||
<NuxtLink to="/auth/login" class="btn btn-primary">
|
||||
เข้าสู่ระบบ
|
||||
</NuxtLink>
|
||||
<button class="btn btn-outline" style="border-radius: 99px;" @click="handleError">
|
||||
กลับสู่หน้าหลัก
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
/* Nuxt Error Page styles should not be scoped usually to affect the whole page */
|
||||
:root {
|
||||
--primary: #3b82f6;
|
||||
--error: #ef4444;
|
||||
--bg-body: #0f172a;
|
||||
--text-main: #f1f5f9;
|
||||
--text-secondary: #cbd5e1;
|
||||
--neutral-100: #1e293b;
|
||||
--border-color: #334155;
|
||||
}
|
||||
|
||||
.error-wrapper {
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: var(--bg-body);
|
||||
color: var(--text-main);
|
||||
padding: 24px;
|
||||
font-family: 'Inter', 'Prompt', 'Sarabun', sans-serif;
|
||||
}
|
||||
|
||||
.error-content {
|
||||
max-width: 600px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.illustration-box {
|
||||
position: relative;
|
||||
width: 160px;
|
||||
height: 160px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.emoji-large {
|
||||
font-size: 80px;
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.glow-effect {
|
||||
position: absolute;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 50%;
|
||||
filter: blur(40px);
|
||||
opacity: 0.2;
|
||||
}
|
||||
.glow-effect.primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
.glow-effect.error {
|
||||
background-color: var(--error);
|
||||
}
|
||||
|
||||
.error-code {
|
||||
font-size: 80px;
|
||||
font-weight: 900;
|
||||
line-height: 1;
|
||||
margin-bottom: 8px;
|
||||
letter-spacing: -2px;
|
||||
}
|
||||
.text-primary { color: var(--primary); }
|
||||
.text-error { color: var(--error); }
|
||||
|
||||
.error-title {
|
||||
font-size: 32px;
|
||||
font-weight: 800;
|
||||
margin-bottom: 16px;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
.error-desc {
|
||||
font-size: 18px;
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.6;
|
||||
margin-bottom: 40px;
|
||||
max-width: 480px;
|
||||
}
|
||||
|
||||
.actions {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn {
|
||||
height: 48px;
|
||||
padding: 0 32px;
|
||||
font-size: 16px;
|
||||
border-radius: 99px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
font-weight: 600;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
.btn:hover { opacity: 0.9; }
|
||||
|
||||
.btn-primary {
|
||||
background-color: var(--primary);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
background: transparent;
|
||||
border: 1px solid var(--border-color);
|
||||
color: var(--text-main);
|
||||
}
|
||||
|
||||
.fade-in {
|
||||
animation: fadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(20px); scale: 0.95; }
|
||||
to { opacity: 1; transform: translateY(0); scale: 1; }
|
||||
}
|
||||
</style>
|
||||
8
Frontend-Learner/eslint.config.mjs
Normal file
8
Frontend-Learner/eslint.config.mjs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
import { createConfigForNuxt } from '@nuxt/eslint-config/flat'
|
||||
|
||||
export default createConfigForNuxt().append({
|
||||
rules: {
|
||||
'vue/multi-word-component-names': 'off',
|
||||
'vue/no-v-html': 'off'
|
||||
}
|
||||
})
|
||||
6
Frontend-Learner/layouts/auth.vue
Normal file
6
Frontend-Learner/layouts/auth.vue
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<template>
|
||||
<!-- Auth Shell: Wrapper for authentication pages (Login, Register, etc.) -->
|
||||
<div class="auth-shell dark">
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
23
Frontend-Learner/layouts/default.vue
Normal file
23
Frontend-Learner/layouts/default.vue
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file default.vue
|
||||
* @description Default application layout for authenticated users.
|
||||
* Includes the AppHeader and MobileNav.
|
||||
*/
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- App Shell: Main container with global background and text color -->
|
||||
<div class="app-shell min-h-screen transition-colors duration-200" style="background-color: var(--bg-body); color: var(--text-main);">
|
||||
<!-- Header -->
|
||||
<AppHeader />
|
||||
|
||||
<!-- Main Content Area -->
|
||||
<main class="app-main">
|
||||
<slot />
|
||||
</main>
|
||||
|
||||
<!-- Mobile Bottom Navigation (Visible only on small screens) -->
|
||||
<MobileNav />
|
||||
</div>
|
||||
</template>
|
||||
40
Frontend-Learner/layouts/landing.vue
Normal file
40
Frontend-Learner/layouts/landing.vue
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* @file landing.vue
|
||||
* @description Layout for the landing page (public facing).
|
||||
* Applies a dark theme by default and includes the public header and footer.
|
||||
*/
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- Landing Layout Container: Forces Dark Theme -->
|
||||
<div class="landing-layout dark">
|
||||
<LandingHeader />
|
||||
|
||||
<!-- Main Content Area: Grows to fill available space -->
|
||||
<main class="flex-grow">
|
||||
<slot />
|
||||
</main>
|
||||
|
||||
<LandingFooter />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
/*
|
||||
Layout Styling:
|
||||
- Flexbox column layout to stick footer to bottom.
|
||||
- Dark background base.
|
||||
*/
|
||||
.landing-layout {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: #0f172a; /* Slate 900 */
|
||||
color: #f1f5f9; /* Slate 100 */
|
||||
}
|
||||
|
||||
.flex-grow {
|
||||
flex-grow: 1;
|
||||
}
|
||||
</style>
|
||||
28
Frontend-Learner/middleware/auth.ts
Normal file
28
Frontend-Learner/middleware/auth.ts
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
export default defineNuxtRouteMiddleware((to) => {
|
||||
const { isAuthenticated } = useAuth()
|
||||
|
||||
// Pages that are accessible only when NOT logged in (Auth pages)
|
||||
const authPages = [
|
||||
'/auth/login',
|
||||
'/auth/register',
|
||||
'/auth/forgot-password',
|
||||
'/auth/reset-password'
|
||||
]
|
||||
|
||||
// Pages that are accessible as public landing
|
||||
// Note: /courses and /discovery (now in browse/) might be public depending on logic,
|
||||
// but let's assume browse pages are public or handled separately.
|
||||
// For now, we list the root.
|
||||
const publicPages = ['/', '/courses', '/browse', '/browse/discovery']
|
||||
|
||||
// 1. If user is authenticated and tries to access login/register (Keep landing page accessible)
|
||||
if (isAuthenticated.value && authPages.includes(to.path)) {
|
||||
return navigateTo('/dashboard', { replace: true })
|
||||
}
|
||||
|
||||
// 2. If user is NOT authenticated and tries to access a page that has this middleware applied
|
||||
// and is NOT one of the public or auth pages.
|
||||
if (!isAuthenticated.value && !authPages.includes(to.path) && !publicPages.includes(to.path)) {
|
||||
return navigateTo('/auth/login', { replace: true })
|
||||
}
|
||||
})
|
||||
16
Frontend-Learner/node_modules/.bin/acorn
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/acorn
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
|
||||
else
|
||||
exec node "$basedir/../acorn/bin/acorn" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/acorn.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/acorn.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*
|
||||
28
Frontend-Learner/node_modules/.bin/acorn.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/acorn.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../acorn/bin/acorn" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/autoprefixer
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/autoprefixer
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../autoprefixer/bin/autoprefixer" "$@"
|
||||
else
|
||||
exec node "$basedir/../autoprefixer/bin/autoprefixer" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/autoprefixer.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/autoprefixer.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\autoprefixer\bin\autoprefixer" %*
|
||||
28
Frontend-Learner/node_modules/.bin/autoprefixer.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/autoprefixer.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/baseline-browser-mapping
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/baseline-browser-mapping
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../baseline-browser-mapping/dist/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../baseline-browser-mapping/dist/cli.js" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/baseline-browser-mapping.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/baseline-browser-mapping.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\baseline-browser-mapping\dist\cli.js" %*
|
||||
28
Frontend-Learner/node_modules/.bin/baseline-browser-mapping.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/baseline-browser-mapping.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/browserslist
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/browserslist
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../browserslist/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../browserslist/cli.js" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/browserslist.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/browserslist.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\browserslist\cli.js" %*
|
||||
28
Frontend-Learner/node_modules/.bin/browserslist.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/browserslist.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../browserslist/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/crc32
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/crc32
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../crc-32/bin/crc32.njs" "$@"
|
||||
else
|
||||
exec node "$basedir/../crc-32/bin/crc32.njs" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/crc32.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/crc32.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\crc-32\bin\crc32.njs" %*
|
||||
28
Frontend-Learner/node_modules/.bin/crc32.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/crc32.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/cssesc
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/cssesc
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../cssesc/bin/cssesc" "$@"
|
||||
else
|
||||
exec node "$basedir/../cssesc/bin/cssesc" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/cssesc.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/cssesc.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\cssesc\bin\cssesc" %*
|
||||
28
Frontend-Learner/node_modules/.bin/cssesc.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/cssesc.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../cssesc/bin/cssesc" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/detect-libc
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/detect-libc
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../detect-libc/bin/detect-libc.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../detect-libc/bin/detect-libc.js" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/detect-libc.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/detect-libc.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\detect-libc\bin\detect-libc.js" %*
|
||||
28
Frontend-Learner/node_modules/.bin/detect-libc.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/detect-libc.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../detect-libc/bin/detect-libc.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../detect-libc/bin/detect-libc.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../detect-libc/bin/detect-libc.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../detect-libc/bin/detect-libc.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/devtools
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/devtools
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@nuxt/devtools/cli.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../@nuxt/devtools/cli.mjs" "$@"
|
||||
fi
|
||||
16
Frontend-Learner/node_modules/.bin/devtools-wizard
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/devtools-wizard
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@nuxt/devtools-wizard/cli.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../@nuxt/devtools-wizard/cli.mjs" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/devtools-wizard.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/devtools-wizard.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@nuxt\devtools-wizard\cli.mjs" %*
|
||||
28
Frontend-Learner/node_modules/.bin/devtools-wizard.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/devtools-wizard.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../@nuxt/devtools-wizard/cli.mjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../@nuxt/devtools-wizard/cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../@nuxt/devtools-wizard/cli.mjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../@nuxt/devtools-wizard/cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
17
Frontend-Learner/node_modules/.bin/devtools.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/devtools.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@nuxt\devtools\cli.mjs" %*
|
||||
28
Frontend-Learner/node_modules/.bin/devtools.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/devtools.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../@nuxt/devtools/cli.mjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../@nuxt/devtools/cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../@nuxt/devtools/cli.mjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../@nuxt/devtools/cli.mjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/esbuild
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/esbuild
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
else
|
||||
exec node "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*
|
||||
28
Frontend-Learner/node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/eslint
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/eslint
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../eslint/bin/eslint.js" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/eslint.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/eslint.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %*
|
||||
28
Frontend-Learner/node_modules/.bin/eslint.ps1
generated
vendored
Normal file
28
Frontend-Learner/node_modules/.bin/eslint.ps1
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../eslint/bin/eslint.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
Frontend-Learner/node_modules/.bin/giget
generated
vendored
Normal file
16
Frontend-Learner/node_modules/.bin/giget
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../giget/dist/cli.mjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../giget/dist/cli.mjs" "$@"
|
||||
fi
|
||||
17
Frontend-Learner/node_modules/.bin/giget.cmd
generated
vendored
Normal file
17
Frontend-Learner/node_modules/.bin/giget.cmd
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\giget\dist\cli.mjs" %*
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue