Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ai company
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
ai company
Commits
8fedea94
Commit
8fedea94
authored
Apr 16, 2026
by
Hoanganhvu123
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UI: Refine Dashboard styling, fully integrate Memos-style flat UI and oklch palette
parent
39fac7e4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
68 deletions
+76
-68
DashboardLayout.vue
app/dashboard/src/layouts/DashboardLayout.vue
+3
-2
style.css
app/dashboard/src/style.css
+73
-66
No files found.
app/dashboard/src/layouts/DashboardLayout.vue
View file @
8fedea94
...
...
@@ -23,8 +23,9 @@ import { useDark, useToggle } from '@vueuse/core'
const
DISABLE_AUTH
=
import
.
meta
.
env
.
VITE_DISABLE_AUTH
===
'true'
const
route
=
useRoute
()
// Default to LIGHT mode — set dark only if user explicitly toggled it
const
isDark
=
useDark
({
initialValue
:
false
})
// Force LIGHT mode as default — useDark expects string values internally
const
isDark
=
useDark
()
isDark
.
value
=
false
// ← clear any cached dark from localStorage
const
toggleDark
=
useToggle
(
isDark
)
// ─── SVG Icon definitions ────────────────────────────
...
...
app/dashboard/src/style.css
View file @
8fedea94
...
...
@@ -63,72 +63,61 @@
══════════════════════════════════════════════════════════════════════════ */
:root
{
color-scheme
:
light
;
/* ── Page background: very subtle warm off-white ── */
--background
:
oklch
(
0.975
0.004
80
);
--foreground
:
oklch
(
0.145
0.012
260
);
/* ── Card: pure white with faint shadow-based depth ── */
--card
:
oklch
(
1.000
0.000
0
);
--card-foreground
:
oklch
(
0.145
0.012
260
);
/* ── Popover ── */
--popover
:
oklch
(
1.000
0.000
0
);
--popover-foreground
:
oklch
(
0.145
0.012
260
);
/* ── Primary: Canifa Amber-Gold ── */
--primary
:
oklch
(
0.680
0.165
55
);
/* rich amber */
--primary-foreground
:
oklch
(
0.980
0.005
80
);
/* ── Secondary ── */
--secondary
:
oklch
(
0.960
0.006
248
);
--secondary-foreground
:
oklch
(
0.280
0.010
260
);
/* ── Muted: subtle grey fill ── */
--muted
:
oklch
(
0.960
0.004
240
);
--muted-foreground
:
oklch
(
0.520
0.012
258
);
/* ── Accent: very light amber tint ── */
--accent
:
oklch
(
0.955
0.018
80
);
--accent-foreground
:
oklch
(
0.220
0.015
60
);
/* ── Destructive: strong red ── */
--destructive
:
oklch
(
0.577
0.245
27.3
);
--destructive-foreground
:
oklch
(
0.980
0.005
0
);
/* ── Structural ── */
--border
:
oklch
(
0.912
0.006
248
);
--input
:
oklch
(
0.912
0.006
248
);
--ring
:
oklch
(
0.680
0.165
55
);
/* ── Radius ── */
--radius
:
0.625rem
;
/* ── Shadows (softer, more depth) ── */
--shadow-2xs
:
0
1px
2px
0
hsl
(
215
16%
47%
/
0.06
);
--shadow-xs
:
0
1px
3px
0
hsl
(
215
16%
47%
/
0.08
),
0
1px
2px
-1px
hsl
(
215
16%
47%
/
0.05
);
--shadow-sm
:
0
1px
4px
0
hsl
(
215
16%
47%
/
0.1
),
0
1px
3px
-1px
hsl
(
215
16%
47%
/
0.06
);
--shadow
:
0
2px
8px
-2px
hsl
(
215
16%
47%
/
0.1
),
0
1px
3px
-1px
hsl
(
215
16%
47%
/
0.08
);
--shadow-md
:
0
4px
12px
-2px
hsl
(
215
16%
47%
/
0.1
),
0
2px
6px
-2px
hsl
(
215
16%
47%
/
0.08
);
--shadow-lg
:
0
8px
24px
-4px
hsl
(
215
16%
47%
/
0.12
),
0
4px
10px
-3px
hsl
(
215
16%
47%
/
0.08
);
--shadow-xl
:
0
16px
40px
-6px
hsl
(
215
16%
47%
/
0.14
),
0
8px
16px
-5px
hsl
(
215
16%
47%
/
0.08
);
--shadow-2xl
:
0
30px
60px
-12px
hsl
(
215
16%
47%
/
0.22
);
/* ── Memos Note Platform Colors (oklch) ── */
--background
:
oklch
(
0.9818
0.0054
95.0986
);
--foreground
:
oklch
(
0.2438
0.0269
95.7226
);
--card
:
oklch
(
1
0
0
);
--card-foreground
:
oklch
(
0.1908
0.002
106.5859
);
--popover
:
oklch
(
1
0
0
);
--popover-foreground
:
oklch
(
0.2671
0.0196
98.939
);
--primary
:
oklch
(
0.45
0.08
250
);
--primary-foreground
:
oklch
(
0.9818
0.0054
95.0986
);
--secondary
:
oklch
(
0.9245
0.0138
92.9892
);
--secondary-foreground
:
oklch
(
0.4334
0.0177
98.6048
);
--muted
:
oklch
(
0.9341
0.0153
90.239
);
--muted-foreground
:
oklch
(
0.5559
0.0075
97.4233
);
--accent
:
oklch
(
0.9245
0.0138
92.9892
);
--accent-foreground
:
oklch
(
0.2671
0.0196
98.939
);
--destructive
:
oklch
(
0.35
0.02
250
);
--destructive-foreground
:
oklch
(
0.95
0.005
250
);
--border
:
oklch
(
0.8847
0.0069
97.3627
);
--input
:
oklch
(
0.7621
0.0156
98.3528
);
--ring
:
oklch
(
0.45
0.08
250
);
/* ── Sidebar ── */
--sidebar
:
oklch
(
0.9663
0.008
98.8792
);
--sidebar-foreground
:
oklch
(
0.359
0.0051
106.6524
);
--sidebar-primary
:
oklch
(
0.45
0.08
250
);
--sidebar-primary-foreground
:
oklch
(
0.9818
0.0054
95.0986
);
--sidebar-accent
:
oklch
(
0.9245
0.0138
92.9892
);
--sidebar-accent-foreground
:
oklch
(
0.325
0
0
);
--sidebar-border
:
oklch
(
0.9401
0
0
);
--sidebar-ring
:
oklch
(
0.7731
0
0
);
/* ── Radius & Spacing ── */
--radius
:
0.5rem
;
--spacing
:
0.25rem
;
/* ── Memos Distinct Flat Shadows ── */
--shadow-2xs
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.05
);
--shadow-xs
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.05
);
--shadow-sm
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.1
),
0
1px
2px
-1px
hsl
(
0
0%
0%
/
0.1
);
--shadow
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.1
),
0
1px
2px
-1px
hsl
(
0
0%
0%
/
0.1
);
--shadow-md
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.1
),
0
2px
4px
-1px
hsl
(
0
0%
0%
/
0.1
);
--shadow-lg
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.1
),
0
4px
6px
-1px
hsl
(
0
0%
0%
/
0.1
);
--shadow-xl
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.1
),
0
8px
10px
-1px
hsl
(
0
0%
0%
/
0.1
);
--shadow-2xl
:
0
1px
3px
0px
hsl
(
0
0%
0%
/
0.25
);
/* ── Fonts ── */
--font-sans
:
"Inter"
,
ui-sans-serif
,
system-ui
,
-apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
"Helvetica Neue"
,
Arial
,
sans-serif
;
--font-mono
:
"JetBrains Mono"
,
ui-monospace
,
SFMono-Regular
,
Menlo
,
Monaco
,
Consolas
,
"Liberation Mono"
,
"Courier New"
,
monospace
;
/* ── Sidebar — clean white, shadcn/ui style ── */
--sidebar
:
oklch
(
0.992
0.002
240
);
--sidebar-foreground
:
oklch
(
0.200
0.012
260
);
--sidebar-primary
:
oklch
(
0.680
0.165
55
);
--sidebar-primary-foreground
:
oklch
(
0.980
0.005
80
);
--sidebar-accent
:
oklch
(
0.960
0.006
248
);
--sidebar-accent-foreground
:
oklch
(
0.200
0.012
260
);
--sidebar-border
:
oklch
(
0.920
0.006
248
);
--sidebar-ring
:
oklch
(
0.680
0.165
55
);
--font-sans
:
ui-sans-serif
,
system-ui
,
-apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
"Helvetica Neue"
,
Arial
,
"Noto Sans"
,
sans-serif
,
"Apple Color Emoji"
,
"Segoe UI Emoji"
,
"Segoe UI Symbol"
,
"Noto Color Emoji"
;
--font-serif
:
ui-serif
,
Georgia
,
Cambria
,
"Times New Roman"
,
Times
,
serif
;
--font-mono
:
ui-monospace
,
SFMono-Regular
,
Menlo
,
Monaco
,
Consolas
,
"Liberation Mono"
,
"Courier New"
,
monospace
;
}
/* ══════════════════════════════════════════════════════════════════════════
...
...
@@ -307,12 +296,20 @@ input:focus-visible,
textarea
:focus-visible
,
select
:focus-visible
{
outline
:
none
;
box-shadow
:
0
0
0
2px
hsl
(
var
(
--background
)),
0
0
0
4px
oklch
(
0.680
0.165
55
/
0.4
);
box-shadow
:
0
0
0
2px
var
(
--background
),
0
0
0
4px
var
(
--ring
);
}
/* ── Badge size fix ── */
.badge-xs
{
@apply
text-[9px]
px-1.5
py-0.5
leading-none
font-bold
uppercase
tracking-wider
rounded-full;
}
/* ── Memos Style: Form Transitions globally ── */
button
,
a
,
.section-menu-item
{
transition
:
all
0.15s
ease
;
}
input
,
textarea
,
select
,
.search-bar
input
{
transition
:
border-color
0.15s
ease
,
box-shadow
0.15s
ease
;
}
/* ── Fade transition for toasts / alerts ── */
.fade-enter-active
,
.fade-leave-active
{
transition
:
opacity
0.25s
,
transform
0.25s
;
}
.fade-enter-from
{
opacity
:
0
;
transform
:
translateY
(
6px
);
}
...
...
@@ -320,9 +317,19 @@ select:focus-visible {
@layer
base
{
*
{
@apply
border-border
outline-
ring/5
0;
@apply
border-border
outline-
none
ring-
0;
}
body
{
@apply
bg-background
text-foreground;
}
/* ── Overriding scrollbar thumb properly for Hex variables ── */
::-webkit-scrollbar-thumb
{
background
:
var
(
--input
);
border-radius
:
99px
;
}
::-webkit-scrollbar-thumb:hover
{
background
:
var
(
--muted-foreground
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment