Riyyi
4 weeks ago
commit
73c8ee1e20
18 changed files with 279 additions and 0 deletions
@ -0,0 +1,24 @@
|
||||
# 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 |
@ -0,0 +1,34 @@
|
||||
* Website |
||||
|
||||
Website, written in Typescript. |
||||
|
||||
* Libraries |
||||
|
||||
- Vue.js 3 |
||||
- Nuxt |
||||
- Pinia |
||||
- PrimeVue |
||||
- ESLint |
||||
|
||||
* Development |
||||
|
||||
The following editor setup has been used: |
||||
|
||||
#+BEGIN_SRC sh |
||||
$ bun x nuxi@latest init website |
||||
$ bun nuxi module add eslint |
||||
$ bun install --dev typescript |
||||
$ bun install --dev @vue/language-server |
||||
$ bun install --dev @vue/typescript-plugin |
||||
|
||||
$ bun install -g typescript |
||||
$ bun install -g @vue/language-server |
||||
$ bun install -g @vue/typescript-plugin |
||||
|
||||
# Pinia |
||||
$ bun install pinia |
||||
|
||||
# PrimeVue |
||||
$ bun install primevue primeicons @primevue/themes |
||||
$ bun install --dev @primevue/nuxt-module |
||||
#+END_SRC |
@ -0,0 +1,6 @@
|
||||
// @ts-check
|
||||
import withNuxt from './.nuxt/eslint.config.mjs' |
||||
|
||||
export default withNuxt( |
||||
// Your custom configs here
|
||||
) |
@ -0,0 +1,26 @@
|
||||
import Aura from "@primevue/themes/aura"; |
||||
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({ |
||||
compatibilityDate: "2024-11-01", |
||||
css: [ |
||||
"primeicons/primeicons.css" |
||||
], |
||||
devtools: { enabled: true }, |
||||
modules: [ |
||||
"@nuxt/eslint", |
||||
"@primevue/nuxt-module" |
||||
], |
||||
primevue: { |
||||
options: { |
||||
theme: { |
||||
preset: Aura |
||||
} |
||||
} |
||||
}, |
||||
dir: { |
||||
public: "../public" |
||||
}, |
||||
srcDir: "src/", |
||||
ssr: false |
||||
}) |
@ -0,0 +1,32 @@
|
||||
{ |
||||
"name": "website", |
||||
"private": true, |
||||
"type": "module", |
||||
"scripts": { |
||||
"build": "nuxt build", |
||||
"dev": "nuxt dev", |
||||
"generate": "nuxt generate", |
||||
"preview": "nuxt preview", |
||||
"postinstall": "nuxt prepare" |
||||
}, |
||||
"dependencies": { |
||||
"@primevue/themes": "^4.2.3", |
||||
"nuxt": "^3.14.1592", |
||||
"pinia": "^2.2.6", |
||||
"primeicons": "^7.0.0", |
||||
"primevue": "^4.2.3", |
||||
"vue": "latest", |
||||
"vue-router": "latest" |
||||
}, |
||||
"devDependencies": { |
||||
"@nuxt/eslint": "^0.7.1", |
||||
"@primevue/nuxt-module": "^4.2.3", |
||||
"@types/bun": "latest", |
||||
"@vue/language-server": "^2.1.10", |
||||
"@vue/typescript-plugin": "^2.1.10", |
||||
"typescript": "^5.7.2" |
||||
}, |
||||
"trustedDependencies": [ |
||||
"@parcel/watcher" |
||||
] |
||||
} |
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,5 @@
|
||||
<template> |
||||
<NuxtLayout> |
||||
<NuxtPage /> |
||||
</NuxtLayout> |
||||
</template> |
@ -0,0 +1,41 @@
|
||||
<!-- https://github.com/barelyhuman/snips/blob/dev/pages/css-loader.md --> |
||||
<div class="loader"></div> |
||||
<style> |
||||
.loader { |
||||
display: block; |
||||
position: fixed; |
||||
z-index: 1031; |
||||
top: 50%; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
width: 36px; |
||||
height: 36px; |
||||
box-sizing: border-box; |
||||
border: solid 2px transparent; |
||||
border-top-color: #000; |
||||
border-left-color: #000; |
||||
border-bottom-color: #efefef; |
||||
border-right-color: #efefef; |
||||
border-radius: 50%; |
||||
-webkit-animation: loader 400ms linear infinite; |
||||
animation: loader 400ms linear infinite; |
||||
} |
||||
|
||||
@-webkit-keyframes loader { |
||||
0% { |
||||
-webkit-transform: translate(-50%, -50%) rotate(0deg); |
||||
} |
||||
100% { |
||||
-webkit-transform: translate(-50%, -50%) rotate(360deg); |
||||
} |
||||
} |
||||
|
||||
@keyframes loader { |
||||
0% { |
||||
transform: translate(-50%, -50%) rotate(0deg); |
||||
} |
||||
100% { |
||||
transform: translate(-50%, -50%) rotate(360deg); |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,5 @@
|
||||
<template> |
||||
<span> |
||||
<slot /> |
||||
</span> |
||||
</template> |
@ -0,0 +1,3 @@
|
||||
<template> |
||||
<SharedNavMenu /> |
||||
</template> |
@ -0,0 +1,56 @@
|
||||
<template> |
||||
<div class="card"> |
||||
<Menubar :model="items"> |
||||
<template #item="{ item, props, hasSubmenu }"> |
||||
<router-link v-if="item.route" v-slot="{ href, navigate }" :to="item.route" custom> |
||||
<a v-ripple :href="href" v-bind="props.action" @click="navigate"> |
||||
<span :class="item.icon" /> |
||||
<span>{{ item.label }}</span> |
||||
</a> |
||||
</router-link> |
||||
<a v-else v-ripple :href="item.url" :target="item.target" v-bind="props.action"> |
||||
<span :class="item.icon" /> |
||||
<span>{{ item.label }}</span> |
||||
<span v-if="hasSubmenu" class="pi pi-fw pi-angle-down" /> |
||||
</a> |
||||
</template> |
||||
</Menubar> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup> |
||||
import { ref } from "vue"; |
||||
import { useRouter } from "vue-router"; |
||||
|
||||
const router = useRouter(); |
||||
|
||||
const items = ref([ |
||||
{ |
||||
label: "Home", |
||||
icon: "pi pi-home", |
||||
route: "/" |
||||
}, |
||||
{ |
||||
label: "Todos", |
||||
icon: "pi pi-check", |
||||
command: () => { |
||||
router.push("/todos"); |
||||
} |
||||
}, |
||||
{ |
||||
label: "About", |
||||
icon: "pi pi-link", |
||||
route: "#" |
||||
}, |
||||
{ |
||||
label: "Service", |
||||
icon: "pi pi-link", |
||||
route: "#" |
||||
}, |
||||
{ |
||||
label: "Contact", |
||||
icon: "pi pi-link", |
||||
route: "#" |
||||
}, |
||||
]); |
||||
</script> |
@ -0,0 +1,5 @@
|
||||
<template> |
||||
<SharedHeader /> |
||||
<slot /> |
||||
<SharedFooter /> |
||||
</template> |
@ -0,0 +1,8 @@
|
||||
<template> |
||||
<div> |
||||
<h1>Welcome to the homepage</h1> |
||||
<AppAlert> |
||||
This is an auto-imported component |
||||
</AppAlert> |
||||
</div> |
||||
</template> |
@ -0,0 +1,24 @@
|
||||
<template> |
||||
<div class="card"> |
||||
<DataTable :value="todos" tableStyle="min-width: 50rem"> |
||||
<Column field="number" header="#"></Column> |
||||
<Column field="id" header="ID"></Column> |
||||
<Column field="title" header="Title"></Column> |
||||
<Column field="modifier" header="Modifier"></Column> |
||||
</DataTable> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { ref, onMounted } from 'vue'; |
||||
// import { ProductService } from '@/service/ProductService'; |
||||
|
||||
onMounted(() => { |
||||
todos.value = [ |
||||
{ number: "1", id: "toby", title: "Do stuff..", modifier: "hehe"} |
||||
] |
||||
}); |
||||
|
||||
const todos = ref(); |
||||
|
||||
</script> |
@ -0,0 +1,3 @@
|
||||
{ |
||||
"extends": "../.nuxt/tsconfig.server.json" |
||||
} |
Loading…
Reference in new issue