UI update
This commit is contained in:
@@ -7,21 +7,22 @@
|
|||||||
class="px-4"
|
class="px-4"
|
||||||
height="70"
|
height="70"
|
||||||
>
|
>
|
||||||
<v-app-bar-title
|
<v-btn
|
||||||
class="nav-brand"
|
to="/"
|
||||||
style="cursor: pointer; user-select: none;"
|
variant="text"
|
||||||
@click="navigateTo('/')"
|
class="nav-home-btn ml-4"
|
||||||
|
elevation="0"
|
||||||
>
|
>
|
||||||
Seasoned
|
Seasoned
|
||||||
</v-app-bar-title>
|
</v-btn>
|
||||||
|
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
<div class="nav-links d-flex align-center">
|
<div class="nav-links d-flex align-center">
|
||||||
<v-btn
|
<v-btn
|
||||||
to="/gallery"
|
to="/gallery"
|
||||||
|
variant="text"
|
||||||
class="nav-auth-btn ml-4"
|
class="nav-auth-btn ml-4"
|
||||||
variant="outlined"
|
|
||||||
elevation="0"
|
elevation="0"
|
||||||
>
|
>
|
||||||
Collection
|
Collection
|
||||||
@@ -30,8 +31,8 @@
|
|||||||
<v-btn
|
<v-btn
|
||||||
v-if="!token"
|
v-if="!token"
|
||||||
to="/login"
|
to="/login"
|
||||||
|
variant="text"
|
||||||
class="nav-auth-btn ml-4"
|
class="nav-auth-btn ml-4"
|
||||||
variant="outlined"
|
|
||||||
elevation="0"
|
elevation="0"
|
||||||
>
|
>
|
||||||
Sign In
|
Sign In
|
||||||
@@ -40,8 +41,8 @@
|
|||||||
<v-btn
|
<v-btn
|
||||||
v-else
|
v-else
|
||||||
@click="logout"
|
@click="logout"
|
||||||
|
variant="text"
|
||||||
class="nav-auth-btn ml-4"
|
class="nav-auth-btn ml-4"
|
||||||
variant="outlined"
|
|
||||||
elevation="0"
|
elevation="0"
|
||||||
>
|
>
|
||||||
Logout
|
Logout
|
||||||
|
|||||||
@@ -216,33 +216,22 @@
|
|||||||
background: linear-gradient(to bottom, rgba(0,0,0,0.4) 0%, transparent 100%) !important;
|
background: linear-gradient(to bottom, rgba(0,0,0,0.4) 0%, transparent 100%) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-brand {
|
.nav-auth-btn, .nav-btn, .nav-home-btn {
|
||||||
font-family: 'Libre Baskerville', serif !important;
|
font-family: 'Libre Baskerville', serif !important;
|
||||||
|
font-size: 1.5rem !important;
|
||||||
color: #f4e4bc !important;
|
color: #f4e4bc !important;
|
||||||
text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.8) !important;
|
|
||||||
font-size: 1.8rem !important;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-auth-btn, .nav-btn {
|
|
||||||
font-family: 'Libre Baskerville', serif !important;
|
|
||||||
font-size: 1.3rem !important;
|
|
||||||
color: #f4e4bc !important;
|
|
||||||
border: 1.5px solid rgba(244, 228, 188, 0.6) !important;
|
|
||||||
background-color: rgba(0, 0, 0, 0.2) !important;
|
|
||||||
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8) !important;
|
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8) !important;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 0px;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-auth-btn:hover, .nav-btn:hover {
|
.nav-auth-btn:hover, .nav-btn:hover, .nav-home-btn:hover {
|
||||||
background-color: #f4e4bc !important;
|
background-color: #f4e4bc !important;
|
||||||
color: #2e1e0a !important;
|
color: #2e1e0a !important;
|
||||||
text-shadow: none !important;
|
text-shadow: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.brand-icon-container {
|
.brand-icon-container {
|
||||||
/* Subtle rustic touch */
|
|
||||||
filter: sepia(0.2) contrast(1.1);
|
filter: sepia(0.2) contrast(1.1);
|
||||||
opacity: 0.9;
|
opacity: 0.9;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
<header class="text-center mb-10">
|
<header class="text-center mb-10">
|
||||||
<div class="brand-icon-container mb-4">
|
<div class="brand-icon-container mb-4">
|
||||||
<v-img
|
<v-img
|
||||||
|
:src="'/images/seasoned-logo.png'"
|
||||||
alt="Seasoned Logo"
|
alt="Seasoned Logo"
|
||||||
width="120"
|
width="120"
|
||||||
class="mx-auto"
|
class="mx-auto"
|
||||||
@@ -152,6 +152,8 @@ const isAuthenticated = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleViewCollection = () => {
|
const handleViewCollection = () => {
|
||||||
|
const token = useCookie('seasoned_token').value
|
||||||
|
|| (import.meta.client ? localStorage.getItem('token') : null)
|
||||||
if (isAuthenticated()) {
|
if (isAuthenticated()) {
|
||||||
router.push('/gallery')
|
router.push('/gallery')
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,37 +6,41 @@
|
|||||||
<div :key="isLogin">
|
<div :key="isLogin">
|
||||||
<header class="text-center mb-8">
|
<header class="text-center mb-8">
|
||||||
<h1 class="auth-title">{{ isLogin ? 'Sign In' : 'Join Us' }}</h1>
|
<h1 class="auth-title">{{ isLogin ? 'Sign In' : 'Join Us' }}</h1>
|
||||||
<p class="brand-subtitle">The Seasoned Ledger</p>
|
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<v-form @submit.prevent="handleAuth">
|
<v-form @submit.prevent="handleAuth">
|
||||||
<v-text-field
|
<v-text-field
|
||||||
|
autofocus
|
||||||
v-model="email"
|
v-model="email"
|
||||||
label="Email"
|
placeholder="Email"
|
||||||
placeholder="email@example.com"
|
bg-color="#5d4037"
|
||||||
class="custom-input auth-input mb-4"
|
base-color="#f8f1e0"
|
||||||
variant="flat"
|
class="auth-input mb-4"
|
||||||
|
variant="outlined"
|
||||||
|
hide-details
|
||||||
prepend-inner-icon="mdi-email-outline"
|
prepend-inner-icon="mdi-email-outline"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model="password"
|
v-model="password"
|
||||||
label="Password"
|
placeholder="Password"
|
||||||
|
bg-color="#5d4037"
|
||||||
|
base-color="#f8f1e0"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="••••••••"
|
class="auth-input mb-6"
|
||||||
class="custom-input auth-input mb-6"
|
variant="outlined"
|
||||||
variant="flat"
|
hide-details
|
||||||
prepend-inner-icon="mdi-lock-outline"
|
prepend-inner-icon="mdi-lock-outline"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
|
||||||
<v-btn
|
<v-btn
|
||||||
block
|
block
|
||||||
class="analyze-btn mb-4"
|
class="analyze-btn mb-4"
|
||||||
size="large"
|
size=""
|
||||||
elevation="0"
|
elevation="0"
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
{{ isLogin ? 'Open Ledger' : 'Create Account' }}
|
{{ isLogin ? 'Login' : 'Create Account' }}
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
@@ -52,7 +56,7 @@
|
|||||||
|
|
||||||
<v-btn to="/" variant="text" color="#6d5e4a" block class="view-recipe-btn">
|
<v-btn to="/" variant="text" color="#6d5e4a" block class="view-recipe-btn">
|
||||||
<v-icon icon="mdi-chevron-left" class="mr-1"></v-icon>
|
<v-icon icon="mdi-chevron-left" class="mr-1"></v-icon>
|
||||||
Return to Kitchen
|
Return to Home
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-container>
|
</v-container>
|
||||||
|
|||||||
@@ -1,14 +1,20 @@
|
|||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
compatibilityDate: '2025-07-15',
|
|
||||||
|
|
||||||
devtools: { enabled: true },
|
|
||||||
|
|
||||||
future: {
|
future: {
|
||||||
compatibilityVersion: 4,
|
compatibilityVersion: 4,
|
||||||
},
|
},
|
||||||
|
ssr: false,
|
||||||
srcDir: 'app/',
|
srcDir: 'app/',
|
||||||
|
dir: {
|
||||||
|
public: 'public/'
|
||||||
|
},
|
||||||
|
modules: [
|
||||||
|
'vuetify-nuxt-module'
|
||||||
|
],
|
||||||
|
compatibilityDate: '2025-07-15',
|
||||||
|
devtools: { enabled: true },
|
||||||
|
build: {
|
||||||
|
transpile: ['vuetify'],
|
||||||
|
},
|
||||||
app: {
|
app: {
|
||||||
baseURL: '/',
|
baseURL: '/',
|
||||||
buildAssetsDir: '_nuxt',
|
buildAssetsDir: '_nuxt',
|
||||||
@@ -29,32 +35,13 @@ export default defineNuxtConfig({
|
|||||||
css: [
|
css: [
|
||||||
'vuetify/lib/styles/main.sass',
|
'vuetify/lib/styles/main.sass',
|
||||||
'@mdi/font/css/materialdesignicons.min.css',
|
'@mdi/font/css/materialdesignicons.min.css',
|
||||||
'~/assets/css/app-theme.css',
|
'@/assets/css/app-theme.css',
|
||||||
'~/assets/css/gallery.css',
|
'@/assets/css/gallery.css',
|
||||||
'~/assets/css/login.css'
|
'@/assets/css/login.css',
|
||||||
],
|
],
|
||||||
|
|
||||||
build: {
|
|
||||||
transpile: ['vuetify'],
|
|
||||||
},
|
|
||||||
|
|
||||||
modules: [
|
|
||||||
'vuetify-nuxt-module'
|
|
||||||
],
|
|
||||||
|
|
||||||
runtimeConfig: {
|
runtimeConfig: {
|
||||||
public: {
|
public: {
|
||||||
apiBase: ''
|
apiBase: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
vite: {
|
|
||||||
server: {
|
|
||||||
hmr: process.env.NODE_ENV !== 'production' ? {
|
|
||||||
protocol: 'ws',
|
|
||||||
host: 'localhost',
|
|
||||||
port: 3000
|
|
||||||
} : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|||||||
2
Seasoned.Frontend/package-lock.json
generated
2
Seasoned.Frontend/package-lock.json
generated
@@ -13,8 +13,10 @@
|
|||||||
"axios": "^1.13.6",
|
"axios": "^1.13.6",
|
||||||
"dotenv": "^17.3.1",
|
"dotenv": "^17.3.1",
|
||||||
"nuxt": "^4.1.3",
|
"nuxt": "^4.1.3",
|
||||||
|
"mdi": "^2.2.43",
|
||||||
"prisma": "^6.19.2",
|
"prisma": "^6.19.2",
|
||||||
"sass": "^1.97.3",
|
"sass": "^1.97.3",
|
||||||
|
"vite-plugin-vuetify": "^2.1.3",
|
||||||
"vue": "^3.5.29",
|
"vue": "^3.5.29",
|
||||||
"vue-router": "^4.6.4",
|
"vue-router": "^4.6.4",
|
||||||
"vuetify": "^4.0.1",
|
"vuetify": "^4.0.1",
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nuxt build",
|
"build": "nuxi build",
|
||||||
"dev": "nuxt dev",
|
"dev": "nuxi dev",
|
||||||
"generate": "nuxt generate",
|
"generate": "nuxi generate",
|
||||||
"preview": "nuxt preview",
|
"preview": "nuxi preview",
|
||||||
"postinstall": "nuxt prepare",
|
"postinstall": "nuxi prepare",
|
||||||
"test": "vitest"
|
"test": "vitest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -17,8 +17,10 @@
|
|||||||
"axios": "^1.13.6",
|
"axios": "^1.13.6",
|
||||||
"dotenv": "^17.3.1",
|
"dotenv": "^17.3.1",
|
||||||
"nuxt": "^4.1.3",
|
"nuxt": "^4.1.3",
|
||||||
|
"mdi": "^2.2.43",
|
||||||
"prisma": "^6.19.2",
|
"prisma": "^6.19.2",
|
||||||
"sass": "^1.97.3",
|
"sass": "^1.97.3",
|
||||||
|
"vite-plugin-vuetify": "^2.1.3",
|
||||||
"vue": "^3.5.29",
|
"vue": "^3.5.29",
|
||||||
"vue-router": "^4.6.4",
|
"vue-router": "^4.6.4",
|
||||||
"vuetify": "^4.0.1",
|
"vuetify": "^4.0.1",
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
// @ts-nocheck
|
|
||||||
import { createVuetify } from 'vuetify'
|
|
||||||
import * as components from 'vuetify/components'
|
|
||||||
import * as directives from 'vuetify/directives'
|
|
||||||
|
|
||||||
export default defineNuxtPlugin((nuxtApp) => {
|
|
||||||
const vuetify = createVuetify({
|
|
||||||
ssr: true,
|
|
||||||
components,
|
|
||||||
directives,
|
|
||||||
})
|
|
||||||
|
|
||||||
nuxtApp.vueApp.use(vuetify)
|
|
||||||
})
|
|
||||||
BIN
Seasoned.Frontend/public/images/seasoned-icon.png
Normal file
BIN
Seasoned.Frontend/public/images/seasoned-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
Reference in New Issue
Block a user