diff --git a/package.json b/package.json index 8d50725..5659819 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "vaul-vue": "^0.1.0", "vee-validate": "^4.12.5", "vue": "^3.4.19", + "vue-router": "^4.3.0", + "vue-sonner": "^1.1.2", "zod": "^3.22.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd986e2..7fd5148 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,12 @@ dependencies: vue: specifier: ^3.4.19 version: 3.4.19(typescript@5.3.3) + vue-router: + specifier: ^4.3.0 + version: 4.3.0(vue@3.4.19) + vue-sonner: + specifier: ^1.1.2 + version: 1.1.2 zod: specifier: ^3.22.4 version: 3.22.4 @@ -4507,6 +4513,19 @@ packages: dependencies: vue: 3.4.19(typescript@5.3.3) + /vue-router@4.3.0(vue@3.4.19): + resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.19(typescript@5.3.3) + dev: false + + /vue-sonner@1.1.2: + resolution: {integrity: sha512-yg4f5s0a3oiiI7cNvO0Dajux1Y7s04lxww3vnQtnwQawJ3KqaKA9RIRMdI9wGTosRGIOwgYFniFRGl4+IuKPZw==} + dev: false + /vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} dependencies: diff --git a/src/App.vue b/src/App.vue index b4dc808..4a65c04 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,103 +1,10 @@ - - - - List of Entries - - - Name - Last Accident - - - - - {{ entry.name }} - {{ getDifferenceToToday(entry.last_reset) }} - - - - - - - - - - - - - - - - - Create new Entry - - - - - - - - - - - - - - - - - - - - - - - - - Create - - - - - - + + diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue new file mode 100644 index 0000000..2e8bdff --- /dev/null +++ b/src/components/ui/badge/Badge.vue @@ -0,0 +1,16 @@ + + + + + + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..d90c2ef --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1,25 @@ +import { type VariantProps, cva } from 'class-variance-authority' + +export { default as Badge } from './Badge.vue' + +export const badgeVariants = cva( + 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', + { + variants: { + variant: { + default: + 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80', + secondary: + 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80', + destructive: + 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80', + outline: 'text-foreground', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +export type BadgeVariants = VariantProps diff --git a/src/components/ui/card/Card.vue b/src/components/ui/card/Card.vue new file mode 100644 index 0000000..12dd5ec --- /dev/null +++ b/src/components/ui/card/Card.vue @@ -0,0 +1,21 @@ + + + + + + + diff --git a/src/components/ui/card/CardContent.vue b/src/components/ui/card/CardContent.vue new file mode 100644 index 0000000..785913a --- /dev/null +++ b/src/components/ui/card/CardContent.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/card/CardDescription.vue b/src/components/ui/card/CardDescription.vue new file mode 100644 index 0000000..d5faedd --- /dev/null +++ b/src/components/ui/card/CardDescription.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/card/CardFooter.vue b/src/components/ui/card/CardFooter.vue new file mode 100644 index 0000000..1ed2efe --- /dev/null +++ b/src/components/ui/card/CardFooter.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/card/CardHeader.vue b/src/components/ui/card/CardHeader.vue new file mode 100644 index 0000000..951d227 --- /dev/null +++ b/src/components/ui/card/CardHeader.vue @@ -0,0 +1,14 @@ + + + + + + + diff --git a/src/components/ui/card/CardTitle.vue b/src/components/ui/card/CardTitle.vue new file mode 100644 index 0000000..842e168 --- /dev/null +++ b/src/components/ui/card/CardTitle.vue @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/components/ui/card/index.ts b/src/components/ui/card/index.ts new file mode 100644 index 0000000..8170483 --- /dev/null +++ b/src/components/ui/card/index.ts @@ -0,0 +1,6 @@ +export { default as Card } from './Card.vue' +export { default as CardHeader } from './CardHeader.vue' +export { default as CardTitle } from './CardTitle.vue' +export { default as CardDescription } from './CardDescription.vue' +export { default as CardContent } from './CardContent.vue' +export { default as CardFooter } from './CardFooter.vue' diff --git a/src/components/ui/scroll-area/ScrollArea.vue b/src/components/ui/scroll-area/ScrollArea.vue new file mode 100644 index 0000000..8f501cc --- /dev/null +++ b/src/components/ui/scroll-area/ScrollArea.vue @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/src/components/ui/scroll-area/ScrollBar.vue b/src/components/ui/scroll-area/ScrollBar.vue new file mode 100644 index 0000000..efaaee2 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollBar.vue @@ -0,0 +1,30 @@ + + + + + + + diff --git a/src/components/ui/scroll-area/index.ts b/src/components/ui/scroll-area/index.ts new file mode 100644 index 0000000..2bd4fae --- /dev/null +++ b/src/components/ui/scroll-area/index.ts @@ -0,0 +1,2 @@ +export { default as ScrollArea } from './ScrollArea.vue' +export { default as ScrollBar } from './ScrollBar.vue' diff --git a/src/components/ui/sonner/Sonner.vue b/src/components/ui/sonner/Sonner.vue new file mode 100644 index 0000000..b82b29e --- /dev/null +++ b/src/components/ui/sonner/Sonner.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/src/components/ui/sonner/index.ts b/src/components/ui/sonner/index.ts new file mode 100644 index 0000000..0d4a642 --- /dev/null +++ b/src/components/ui/sonner/index.ts @@ -0,0 +1 @@ +export { default as Toaster } from './Sonner.vue' diff --git a/src/main.ts b/src/main.ts index 2425c0f..65e8231 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,19 @@ import { createApp } from 'vue' +import { createRouter, createWebHistory } from 'vue-router' import './style.css' -import App from './App.vue' +import App from '@/App.vue' +import Home from '@/pages/Home.vue' +import Detail from '@/pages/Detail.vue' -createApp(App).mount('#app') +const app = createApp(App) + +const router = createRouter({ + history: createWebHistory(), + routes: [ + { path: '/', component: Home}, + { path: '/:name', component: Detail} + ] +}) + +app.use(router) +app.mount('#app') diff --git a/src/pages/Detail.vue b/src/pages/Detail.vue new file mode 100644 index 0000000..5e3acfa --- /dev/null +++ b/src/pages/Detail.vue @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/pages/Home.vue b/src/pages/Home.vue new file mode 100644 index 0000000..5272e06 --- /dev/null +++ b/src/pages/Home.vue @@ -0,0 +1,131 @@ + + + + + + Accident Board + + + {{ entry.name }} + {{ getDifferenceToToday(entry.last_reset) }} days + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new Entry + + + createEntry(val as CreateEntrySchema)"> + + + + + + + + + + + + + + + + + + + + + Create + + + + + + + + +
+ +