Skip to content

Commit b9123b7

Browse files
committed
new look
1 parent ccf36fd commit b9123b7

File tree

13 files changed

+1423
-953
lines changed

13 files changed

+1423
-953
lines changed

Publish/Resource/js/backend/Layout/App.vue

Lines changed: 305 additions & 34 deletions
Large diffs are not rendered by default.

Publish/Resource/js/backend/Layout/components/DesktopNavigation.vue

Lines changed: 57 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66
<div v-if="!item.children || item.children.length === 0">
77
<Link
88
:href="buildLinkClass(item.route)"
9-
class="group flex items-center px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200"
9+
class="btn btn-ghost justify-start h-auto py-3 px-3 text-sm font-medium normal-case"
1010
:class="isActive(item.route)
11-
? 'bg-gradient-to-r from-blue-500 to-purple-600 text-white shadow-lg'
12-
: 'text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-slate-100'"
11+
? 'btn-primary text-primary-content shadow-lg'
12+
: 'text-base-content hover:bg-base-200'"
1313
>
1414
<div
1515
class="w-6 h-6 mr-3 flex items-center justify-center"
1616
v-html="item.icon"
1717
></div>
18-
<span class="flex-1">{{ item.menu_label }}</span>
18+
<span class="flex-1 text-left">{{ item.menu_label }}</span>
1919
<div
2020
v-if="item.badge"
21-
class="ml-2 px-2 py-0.5 text-xs font-semibold rounded-full"
21+
class="badge badge-sm ml-2"
2222
:class="isActive(item.route)
23-
? 'bg-white/20 text-white'
24-
: 'bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400'"
23+
? 'badge-neutral badge-outline'
24+
: 'badge-primary'"
2525
>
2626
{{ item.badge }}
2727
</div>
@@ -32,10 +32,10 @@
3232
<div v-else>
3333
<button
3434
@click="toggleSubmenu(index)"
35-
class="w-full group flex items-center px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200"
35+
class="btn btn-ghost w-full justify-start h-auto py-3 px-3 text-sm font-medium normal-case"
3636
:class="isSubmenuOpen(index)
37-
? 'bg-slate-100 dark:bg-slate-800 text-slate-900 dark:text-slate-100'
38-
: 'text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-slate-100'"
37+
? 'bg-base-200 text-base-content'
38+
: 'text-base-content hover:bg-base-200'"
3939
>
4040
<div
4141
class="w-6 h-6 mr-3 flex items-center justify-center"
@@ -56,55 +56,61 @@
5656
<!-- Submenu -->
5757
<div
5858
v-if="isSubmenuOpen(index)"
59-
class="mt-1 ml-6 space-y-1 border-l-2 border-slate-200 dark:border-slate-700 pl-4"
59+
class="collapse collapse-open"
6060
>
61-
<Link
62-
v-for="(child, childIndex) in item.children"
63-
:key="childIndex"
64-
:href="buildLinkClass(child.route)"
65-
class="group flex items-center px-3 py-2 text-sm font-medium rounded-lg transition-all duration-200"
66-
:class="isActive(child.route)
67-
? 'bg-gradient-to-r from-blue-500 to-purple-600 text-white shadow-lg'
68-
: 'text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-slate-100'"
69-
>
70-
<div
71-
class="w-5 h-5 mr-3 flex items-center justify-center"
72-
v-html="child.icon"
73-
></div>
74-
<span class="flex-1">{{ child.menu_label }}</span>
75-
<div
76-
v-if="child.badge"
77-
class="ml-2 px-2 py-0.5 text-xs font-semibold rounded-full"
78-
:class="isActive(child.route)
79-
? 'bg-white/20 text-white'
80-
: 'bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400'"
81-
>
82-
{{ child.badge }}
61+
<div class="collapse-content pt-1 pb-0 pl-6 pr-0">
62+
<div class="border-l-2 border-base-300 pl-4 space-y-1">
63+
<Link
64+
v-for="(child, childIndex) in item.children"
65+
:key="childIndex"
66+
:href="buildLinkClass(child.route)"
67+
class="btn btn-ghost btn-sm justify-start h-auto py-2 px-3 text-sm font-medium normal-case w-full"
68+
:class="isActive(child.route)
69+
? 'btn-primary text-primary-content shadow-lg'
70+
: 'text-base-content/80 hover:bg-base-200 hover:text-base-content'"
71+
>
72+
<div
73+
class="w-5 h-5 mr-3 flex items-center justify-center"
74+
v-html="child.icon"
75+
></div>
76+
<span class="flex-1 text-left">{{ child.menu_label }}</span>
77+
<div
78+
v-if="child.badge"
79+
class="badge badge-xs ml-2"
80+
:class="isActive(child.route)
81+
? 'badge-neutral badge-outline'
82+
: 'badge-primary'"
83+
>
84+
{{ child.badge }}
85+
</div>
86+
</Link>
8387
</div>
84-
</Link>
88+
</div>
8589
</div>
8690
</div>
8791
</div>
8892

8993
<!-- Quick Actions Section -->
90-
<div class="pt-6 mt-6 border-t border-slate-200 dark:border-slate-700">
91-
<h3 class="px-3 text-xs font-semibold text-slate-500 dark:text-slate-400 uppercase tracking-wider mb-3">
94+
<div class="divider divider-start">
95+
<span class="text-xs font-semibold text-base-content/60 uppercase tracking-wider">
9296
Quick Actions
93-
</h3>
94-
<div class="space-y-2">
95-
<button class="w-full group flex items-center px-3 py-2 text-sm font-medium text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-slate-100 rounded-lg transition-all duration-200">
96-
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
97-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"/>
98-
</svg>
99-
Create New
100-
</button>
101-
<button class="w-full group flex items-center px-3 py-2 text-sm font-medium text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-slate-100 rounded-lg transition-all duration-200">
102-
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
103-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"/>
104-
</svg>
105-
Analytics
106-
</button>
107-
</div>
97+
</span>
98+
</div>
99+
100+
<div class="space-y-2">
101+
<button class="btn btn-ghost justify-start h-auto py-2 px-3 text-sm font-medium normal-case w-full text-base-content/80 hover:bg-base-200 hover:text-base-content">
102+
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
103+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"/>
104+
</svg>
105+
<span class="flex-1 text-left">Create New</span>
106+
</button>
107+
108+
<button class="btn btn-ghost justify-start h-auto py-2 px-3 text-sm font-medium normal-case w-full text-base-content/80 hover:bg-base-200 hover:text-base-content">
109+
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
110+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"/>
111+
</svg>
112+
<span class="flex-1 text-left">Analytics</span>
113+
</button>
108114
</div>
109115
</nav>
110116
</template>

Publish/Resource/js/backend/Layout/components/MobileNavigation.vue

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,29 @@
22
<template>
33
<div class="flex flex-col h-full">
44
<!-- Navigation Menu -->
5-
<nav class="flex-1 px-4 py-6 space-y-2 overflow-y-auto">
5+
<nav class="flex-1 p-4 space-y-2 overflow-y-auto">
66
<div v-for="(item, index) in menuItems" :key="index">
77
<!-- Single Menu Item -->
88
<div v-if="!item.children || item.children.length === 0">
99
<Link
1010
:href="buildLinkClass(item.route)"
1111
@click="$emit('close')"
12-
class="group flex items-center px-4 py-3 text-base font-medium rounded-xl transition-all duration-200"
12+
class="btn btn-ghost justify-start h-auto py-3 px-4 text-base font-medium normal-case w-full"
1313
:class="isActive(item.route)
14-
? 'bg-gradient-to-r from-blue-500 to-purple-600 text-white shadow-lg'
15-
: 'text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800'"
14+
? 'btn-primary text-primary-content shadow-lg'
15+
: 'text-base-content hover:bg-base-200'"
1616
>
1717
<div
1818
class="w-6 h-6 mr-4 flex items-center justify-center"
1919
v-html="item.icon"
2020
></div>
21-
<span class="flex-1">{{ item.menu_label }}</span>
21+
<span class="flex-1 text-left">{{ item.menu_label }}</span>
2222
<div
2323
v-if="item.badge"
24-
class="ml-2 px-2 py-1 text-xs font-semibold rounded-full"
24+
class="badge badge-sm ml-2"
2525
:class="isActive(item.route)
26-
? 'bg-white/20 text-white'
27-
: 'bg-blue-100 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400'"
26+
? 'badge-neutral badge-outline'
27+
: 'badge-primary'"
2828
>
2929
{{ item.badge }}
3030
</div>
@@ -35,10 +35,10 @@
3535
<div v-else>
3636
<button
3737
@click="toggleSubmenu(index)"
38-
class="w-full group flex items-center px-4 py-3 text-base font-medium rounded-xl transition-all duration-200"
38+
class="btn btn-ghost w-full justify-start h-auto py-3 px-4 text-base font-medium normal-case"
3939
:class="isSubmenuOpen(index)
40-
? 'bg-slate-100 dark:bg-slate-800 text-slate-900 dark:text-slate-100'
41-
: 'text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800'"
40+
? 'bg-base-200 text-base-content'
41+
: 'text-base-content hover:bg-base-200'"
4242
>
4343
<div
4444
class="w-6 h-6 mr-4 flex items-center justify-center"
@@ -59,44 +59,49 @@
5959
<!-- Mobile Submenu -->
6060
<div
6161
v-if="isSubmenuOpen(index)"
62-
class="mt-2 ml-8 space-y-1"
62+
class="collapse collapse-open"
6363
>
64-
<Link
65-
v-for="(child, childIndex) in item.children"
66-
:key="childIndex"
67-
:href="buildLinkClass(child.route)"
68-
@click="$emit('close')"
69-
class="group flex items-center px-4 py-2.5 text-sm font-medium rounded-lg transition-all duration-200"
70-
:class="isActive(child.route)
71-
? 'bg-gradient-to-r from-blue-500 to-purple-600 text-white shadow-lg'
72-
: 'text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800'"
73-
>
74-
<div
75-
class="w-5 h-5 mr-3 flex items-center justify-center"
76-
v-html="child.icon"
77-
></div>
78-
<span class="flex-1">{{ child.menu_label }}</span>
79-
</Link>
64+
<div class="collapse-content pt-2 pb-0 pl-8 pr-0">
65+
<div class="space-y-1">
66+
<Link
67+
v-for="(child, childIndex) in item.children"
68+
:key="childIndex"
69+
:href="buildLinkClass(child.route)"
70+
@click="$emit('close')"
71+
class="btn btn-ghost btn-sm justify-start h-auto py-2.5 px-4 text-sm font-medium normal-case w-full"
72+
:class="isActive(child.route)
73+
? 'btn-primary text-primary-content shadow-lg'
74+
: 'text-base-content/80 hover:bg-base-200'"
75+
>
76+
<div
77+
class="w-5 h-5 mr-3 flex items-center justify-center"
78+
v-html="child.icon"
79+
></div>
80+
<span class="flex-1 text-left">{{ child.menu_label }}</span>
81+
</Link>
82+
</div>
83+
</div>
8084
</div>
8185
</div>
8286
</div>
8387
</nav>
8488

8589
<!-- Mobile Footer Actions -->
86-
<div class="border-t border-slate-200 dark:border-slate-700 p-4">
90+
<div class="border-t border-base-300 p-4">
8791
<div class="space-y-2">
88-
<button class="w-full flex items-center px-4 py-3 text-sm font-medium text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-lg transition-all duration-200">
92+
<button class="btn btn-ghost justify-start h-auto py-3 px-4 text-sm font-medium normal-case w-full text-base-content/80 hover:bg-base-200 hover:text-base-content">
8993
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
9094
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
9195
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
9296
</svg>
93-
Settings
97+
<span class="flex-1 text-left">Settings</span>
9498
</button>
95-
<button class="w-full flex items-center px-4 py-3 text-sm font-medium text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-lg transition-all duration-200">
99+
100+
<button class="btn btn-ghost justify-start h-auto py-3 px-4 text-sm font-medium normal-case w-full text-base-content/80 hover:bg-base-200 hover:text-base-content">
96101
<svg class="w-5 h-5 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
97102
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
98103
</svg>
99-
Help & Support
104+
<span class="flex-1 text-left">Help & Support</span>
100105
</button>
101106
</div>
102107
</div>

Publish/Resource/js/backend/Layout/components/ModernBreadcrumb.vue

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,37 @@
11
<!-- ModernBreadcrumb.vue -->
22
<template>
3-
<div class="flex items-center space-x-2 text-sm" v-if="breadcrumbs && breadcrumbs.length > 0">
4-
<!-- Home Link -->
5-
<a
6-
:href="getHomeUrl()"
7-
class="flex items-center text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200 transition-colors duration-200"
8-
>
9-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
10-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"/>
11-
</svg>
12-
</a>
13-
14-
<!-- Breadcrumb Items -->
15-
<template v-for="(item, index) in breadcrumbs" :key="index">
16-
<!-- Separator -->
17-
<svg class="w-4 h-4 text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
18-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
19-
</svg>
3+
<div class="breadcrumbs text-sm" v-if="breadcrumbs && breadcrumbs.length > 0">
4+
<ul>
5+
<!-- Home Link -->
6+
<li>
7+
<a
8+
:href="getHomeUrl()"
9+
class="link link-hover text-base-content/60 hover:text-base-content flex items-center gap-2"
10+
>
11+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
12+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"/>
13+
</svg>
14+
<span class="hidden sm:inline">Home</span>
15+
</a>
16+
</li>
2017

21-
<!-- Breadcrumb Link/Text -->
22-
<div class="flex items-center">
18+
<!-- Breadcrumb Items -->
19+
<li v-for="(item, index) in breadcrumbs" :key="index">
2320
<a
2421
v-if="item.url && index < breadcrumbs.length - 1"
2522
:href="item.url"
26-
class="text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200 transition-colors duration-200 font-medium"
23+
class="link link-hover text-base-content/60 hover:text-base-content font-medium"
2724
>
2825
{{ item.label }}
2926
</a>
3027
<span
3128
v-else
32-
class="text-slate-900 dark:text-slate-100 font-semibold"
29+
class="text-base-content font-semibold"
3330
>
3431
{{ item.label }}
3532
</span>
36-
</div>
37-
</template>
33+
</li>
34+
</ul>
3835
</div>
3936
</template>
4037

0 commit comments

Comments
 (0)