Skip to content
This repository has been archived by the owner on Dec 10, 2024. It is now read-only.

Commit

Permalink
feat: auth template (#182)
Browse files Browse the repository at this point in the history
* chore: update components

* Add GitHub and Google OAuth support

* feat: add dasboard

* feat: add index

* feat: add home

* fix: update CSS imports and remove unused styles

* Update color scheme in tailwind.css

* Refactor code and add page meta middleware

* Add NuxtLoadingIndicator and update UserNav.vue

* Refactor slugify function and add middleware for protected routes
  • Loading branch information
productdevbook authored Feb 24, 2024
1 parent e4dd882 commit 1824cda
Show file tree
Hide file tree
Showing 172 changed files with 6,583 additions and 442 deletions.
5 changes: 5 additions & 0 deletions packages/box/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,14 @@
"@tailwindcss/forms": "^0.5.7",
"@tailwindcss/typography": "^0.5.10",
"@types/uuid": "^9.0.8",
"@unovis/ts": "^1.3.3",
"@unovis/vue": "^1.3.3",
"@vee-validate/zod": "^4.12.5",
"@vueuse/core": "^10.8.0",
"@vueuse/nuxt": "^10.8.0",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
"date-fns": "^3.3.1",
"lucide-vue-next": "^0.338.0",
"nanoid": "^5.0.6",
"notivue": "^2.2.1",
Expand All @@ -57,7 +60,9 @@
"tailwindcss-animate": "^1.0.7",
"unsearch": "^0.0.2",
"uuid": "^9.0.1",
"v-calendar": "^3.1.2",
"vee-validate": "^4.12.5",
"vue-input-otp": "^0.0.10",
"zod": "^3.22.4"
},
"publishConfig": {
Expand Down
3 changes: 2 additions & 1 deletion packages/nuxt/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@
"slugify": "^1.6.6",
"typescript": "^5.3.3",
"unimport": "^3.7.1",
"vitest": "^1.3.1"
"vitest": "^1.3.1",
"vue-input-otp": "^0.0.10"
},
"publishConfig": {
"access": "public"
Expand Down
12 changes: 2 additions & 10 deletions packages/nuxt/src/runtime/core/setupModules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,21 +105,13 @@ async function initModules(nuxt: Nuxt) {
rootOptions: module,
})

nuxt.options.alias[`#${serverFrom}`] = join(rootModuleDir)
nuxt.options.alias[`#${serverFrom}`] = join(serverDir)
nuxt.options.nitro.alias ??= {}
nuxt.options.nitro.alias[`#${serverFrom}`] = join(serverDir)

nuxt.options.alias[`#${serverFrom}/*`] = join(rootModuleDir, '*')
nuxt.options.nitro.alias ??= {}
nuxt.options.nitro.alias[`#${serverFrom}/*`] = join(serverDir, '*')

nuxt.options.alias[`#${clientFrom}`] = join(rootModuleDir)
nuxt.options.nitro.alias ??= {}
nuxt.options.nitro.alias[`#${clientFrom}`] = join(serverDir)

nuxt.options.alias[`#${clientFrom}/*`] = join(rootModuleDir, '*')
nuxt.options.nitro.alias ??= {}
nuxt.options.nitro.alias[`#${clientFrom}/*`] = join(serverDir, '*')
nuxt.options.nitro.alias[`#${clientFrom}`] = join(rootModuleDir)

if (resolvedModule === false /* setup aborted */
|| resolvedModule === undefined /* setup failed */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@ import slugifyFunc from 'slugify'
import { useRuntimeConfig } from '#imports'

export function useSlugify() {
const { slugify } = useRuntimeConfig().public
if (Object.keys(slugify.extends).length)
const { slugify } = useRuntimeConfig().public as {
slugify: {
default?: Parameters<typeof slugifyFunc>[1]
extends?: Parameters<typeof slugifyFunc['extend']>[0]
}
}
if (typeof slugify.extends === 'object' && Object.keys(slugify.extends).length)
slugifyFunc.extend(slugify.extends)

return (string: string, options?: Parameters<typeof slugifyFunc>[1]) =>
Expand Down
69 changes: 69 additions & 0 deletions packages/nuxt/src/runtime/modules/box/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ export default definePergelModule<BoxOptions, ResolvedBoxOptions>({

return {
'@pergel/module-box': deps['@pergel/module-box'],
}
},
devDependencies(options, nuxt) {
const deps = nuxt._pergel.pergelPackageJson

return {
...options.packages.typescript
? {
'typescript': deps.typescript,
Expand Down Expand Up @@ -58,6 +64,10 @@ export default definePergelModule<BoxOptions, ResolvedBoxOptions>({
uuid: false,
unsearch: false,
shadcnNuxt: false,
typescript: false,
otpComponent: false,
unovis: false,
dateFns: false,
},
},
async setup({ nuxt, options }) {
Expand Down Expand Up @@ -479,6 +489,65 @@ export default definePergelModule<BoxOptions, ResolvedBoxOptions>({
if (options.packages.shadcnNuxt)
await installModule('shadcn-nuxt')

if (options.packages.otpComponent) {
useNuxtImports(nuxt, {
presets: [
{
imports: [
'OTPInput',
'REGEXP_ONLY_DIGITS',
'REGEXP_ONLY_CHARS',
'REGEXP_ONLY_DIGITS_AND_CHARS',
] as Array<keyof typeof import('vue-input-otp')>,
from: 'vue-input-otp',
},
],
})
}

if (options.packages.unovis) {
const unovisComponents = [
'VisArea',
'VisAxis',
'VisBrush',
'VisBulletLegend',
'VisChordDiagram',
'VisCrosshair',
'VisDonut',
'VisFreeBrush',
'VisGraph',
'VisGroupedBar',
'VisLeafletFlowMap',
'VisLeafletMap',
'VisSankey',
'VisScatter',
'VisSingleContainer',
'VisStackedBar',
'VisTimeline',
'VisTooltip',
'VisTopoJSONMap',
'VisXYContainer',
'VisXYLabels',
] as Array<keyof typeof import('@unovis/vue')>

unovisComponents.forEach((component) => {
addComponent({
name: component,
export: component,
filePath: '@unovis/vue',
})
})

nuxt.options.typescript.tsConfig ??= {}
nuxt.options.typescript.tsConfig.compilerOptions ??= {}
nuxt.options.typescript.tsConfig.compilerOptions = defu(nuxt.options.typescript.tsConfig.compilerOptions, {
allowSyntheticDefaultImports: true,
})

// nuxt.options.typescript.tsConfig.compilerOptions.types ??= []
// nuxt.options.typescript.tsConfig.compilerOptions.types.push('topojson-client')
}

addDownloadTemplate({
nuxt,
data: {
Expand Down
25 changes: 25 additions & 0 deletions packages/nuxt/src/runtime/modules/box/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,29 @@ export interface BoxOptions extends PergelModuleOptions {
*/
shadcnNuxt?: boolean

/**
* @default false
* @se https://typescript.org
*/
typescript?: boolean

/**
* @default false
* @see https://github.com/wobsoriano/vue-input-otp
*/
otpComponent?: boolean

/**
* @default false
* @see https://unovis.dev
*/
unovis?: boolean

/**
* @default false
* @see https://date-fns.org/
*/
dateFns?: boolean
}
}

Expand Down Expand Up @@ -157,5 +179,8 @@ export interface ResolvedBoxOptions extends ResolvedPergelModuleOptions {
unsearch: boolean
shadcnNuxt: boolean
typescript: boolean
otpComponent: boolean
unovis: boolean
dateFns: boolean
}
}
Loading

0 comments on commit 1824cda

Please sign in to comment.