Model: Qwen 3.6 35B A3
Some checks failed
tests / ci (8.5) (push) Failing after 2m31s
linter / quality (push) Failing after 2m55s
tests / ci (8.3) (push) Failing after 3m25s
tests / ci (8.4) (push) Failing after 3m49s

Prompt: simplify and fix dashboard layout. Sidebars are now a mess, weird gaps everywhere, make it simple and modern keeping general color scheme

Stats:
Context: 41,492 tokens
Time: 6m 15s
This commit is contained in:
Darius Rapalis
2026-04-28 23:16:20 +03:00
parent 27b2f5c543
commit 36f924a16a
6 changed files with 49 additions and 235 deletions

View File

@@ -15,10 +15,10 @@ withDefaults(
<template>
<header
class="flex h-16 shrink-0 items-center gap-2 border-b border-sidebar-border/70 px-6 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4"
class="flex h-[60px] shrink-0 items-center gap-2 border-b border-[#e4eaee] px-4 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-[56px] dark:border-[#37474f]"
>
<div class="flex items-center gap-2">
<SidebarTrigger class="-ml-1" />
<div class="flex items-center gap-2 w-full">
<SidebarTrigger class="-ml-1 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200" />
<template v-if="breadcrumbs && breadcrumbs.length > 0">
<Breadcrumbs :breadcrumbs="breadcrumbs" />
</template>

View File

@@ -11,7 +11,7 @@ const props = defineProps<{
<div
data-slot="sidebar-content"
data-sidebar="content"
:class="cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', props.class)"
:class="cn('flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden', props.class)"
>
<slot />
</div>

View File

@@ -11,7 +11,7 @@ const props = defineProps<{
<div
data-slot="sidebar-footer"
data-sidebar="footer"
:class="cn('flex flex-col gap-2 p-2', props.class)"
:class="cn('flex flex-col gap-1 p-2', props.class)"
>
<slot />
</div>

View File

@@ -11,7 +11,7 @@ const props = defineProps<{
<div
data-slot="sidebar-header"
data-sidebar="header"
:class="cn('flex flex-col gap-2 p-2', props.class)"
:class="cn('flex flex-col gap-1 p-2', props.class)"
>
<slot />
</div>

View File

@@ -12,7 +12,6 @@ const props = defineProps<{
data-slot="sidebar-inset"
:class="cn(
'bg-background relative flex w-full flex-1 flex-col',
'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
props.class,
)"
>

View File

@@ -24,251 +24,66 @@ defineOptions({
<AppShell variant="sidebar">
<AppSidebar />
<AppContent variant="sidebar" class="overflow-x-hidden">
<!-- Main Content -->
<div class="flex h-full flex-1 flex-col">
<!-- Top Bar -->
<div
class="h-[60px] bg-white border-b border-gray-200 flex items-center px-4 shadow-sm sticky top-0 z-10"
>
<!-- Workspace Switcher -->
<div
class="flex items-center gap-2 px-3 py-1.5 rounded-lg cursor-pointer text-sm font-medium text-gray-900 hover:bg-gray-100"
>
<div
class="w-7 h-7 bg-[#03a9f4] rounded-lg flex items-center justify-center text-white text-xs font-semibold"
>
W
</div>
<span>Workspace</span>
<svg
width="12"
height="12"
viewBox="0 0 12 12"
fill="none"
class="text-gray-500"
>
<path
d="M3 4.5L6 7.5L9 4.5"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</div>
<!-- Search & Actions -->
<div class="ml-auto flex items-center gap-3">
<!-- Search -->
<div
class="flex items-center gap-2 px-3.5 py-2 bg-gray-100 rounded-lg text-gray-500 text-sm cursor-pointer max-w-[280px] w-full"
>
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="11" cy="11" r="8" />
<path d="m21 21-4.3-4.3" />
</svg>
<span>Search</span>
<span
class="ml-auto text-xs text-gray-400 whitespace-nowrap"
>K</span
>
<!-- Timer Bar -->
<div class="sticky top-0 z-10 bg-[#1d272c] border-b border-[#37474f]">
<div class="flex items-center gap-4 px-6 h-[60px]">
<!-- Timer Display -->
<div class="font-mono text-[28px] font-normal text-gray-200 tracking-wide min-w-[140px]">
00:00:00
</div>
<!-- Notifications -->
<button
class="w-9 h-9 border-0 bg-transparent rounded-lg cursor-pointer flex items-center justify-center text-gray-600"
>
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path
d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"
/>
<path
d="M10.3 21a3.5 3.5 0 0 0 3.4 0"
/>
<!-- Start Button -->
<button class="w-11 h-11 rounded-full bg-[#4caf50] border-0 cursor-pointer flex items-center justify-center transition-colors hover:bg-[#43a047]">
<svg width="18" height="18" viewBox="0 0 24 24" fill="white">
<polygon points="5,3 19,12 5,21" />
</svg>
</button>
<!-- User Avatar -->
<div
class="w-9 h-9 rounded-full bg-[#03a9f4] flex items-center justify-center text-white text-sm font-semibold cursor-pointer"
>
U
<!-- Task Input -->
<div class="flex-1 flex items-center px-3.5 py-2 bg-[#263238] rounded-lg text-gray-500 text-sm cursor-text">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="mr-2.5 opacity-50">
<path d="M12 20h9" />
<path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z" />
</svg>
<span>Add a description</span>
</div>
<!-- Project Selector -->
<button class="flex items-center gap-1.5 px-3.5 py-2 bg-[#263238] border border-[#37474f] rounded-lg text-gray-200 text-sm cursor-pointer whitespace-nowrap">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" />
</svg>
<span>No project</span>
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" class="opacity-50">
<path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
</svg>
</button>
<!-- Stop Button -->
<button class="w-11 h-11 rounded-full border-2 border-[#f44336] bg-transparent cursor-pointer flex items-center justify-center transition-colors hover:bg-red-500/10">
<svg width="16" height="16" viewBox="0 0 24 24" fill="#f44336">
<rect x="6" y="6" width="12" height="12" rx="1" />
</svg>
</button>
</div>
</div>
<!-- Time Tracker Recorder -->
<div
class="sticky top-[60px] z-[99] bg-[#1d272c] flex items-center gap-4 px-6 shadow-md"
>
<!-- Timer Display -->
<div
class="font-mono text-[28px] font-normal text-gray-200 tracking-wide min-w-[140px]"
>
00:00:00
</div>
<!-- Start Button -->
<button
class="w-11 h-11 rounded-full bg-[#4caf50] border-0 cursor-pointer flex items-center justify-center transition-colors hover:bg-[#43a047]"
>
<svg
width="18"
height="18"
viewBox="0 0 24 24"
fill="white"
>
<polygon points="5,3 19,12 5,21" />
</svg>
</button>
<!-- Task Input -->
<div
class="flex-1 flex items-center px-3.5 py-2 bg-[#263238] rounded-lg text-gray-500 text-sm cursor-text"
>
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="mr-2.5 opacity-50"
>
<path
d="M12 20h9"
/>
<path
d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"
/>
</svg>
<span>Add a description</span>
</div>
<!-- Project Selector -->
<button
class="flex items-center gap-1.5 px-3.5 py-2 bg-[#263238] border border-[#37474f] rounded-lg text-gray-200 text-sm cursor-pointer whitespace-nowrap"
>
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path
d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"
/>
</svg>
<span>No project</span>
<svg
width="12"
height="12"
viewBox="0 0 12 12"
fill="none"
class="opacity-50"
>
<path
d="M3 4.5L6 7.5L9 4.5"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</button>
<!-- Stop Button -->
<button
class="w-11 h-11 rounded-full border-2 border-[#f44336] bg-transparent cursor-pointer flex items-center justify-center transition-colors hover:bg-red-500/10"
>
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="#f44336"
>
<rect
x="6"
y="6"
width="12"
height="12"
rx="1"
/>
</svg>
</button>
</div>
<!-- Tracker Entries -->
<div class="p-6 max-w-[1400px] w-full mx-auto">
<!-- Empty State -->
<div
class="flex flex-col items-center justify-center text-center py-16 mt-5"
>
<img
src="/empty-tracker-icon.webp"
alt="No time entries"
class="max-w-[80px] mb-6 opacity-70"
/>
<h2
class="text-xl font-medium text-gray-700 mb-2"
>
<div class="flex flex-col items-center justify-center text-center py-16 mt-5">
<img src="/empty-tracker-icon.webp" alt="No time entries" class="max-w-[80px] mb-6 opacity-70" />
<h2 class="text-xl font-medium text-gray-700 mb-2">
No time entries yet
</h2>
<p
class="text-sm text-gray-500 mb-6 max-w-[400px] leading-relaxed"
>
<p class="text-sm text-gray-500 mb-6 max-w-[400px] leading-relaxed">
Start tracking your time by clicking the play button above. Your time entries will appear here.
</p>
<button
class="inline-flex items-center gap-2 px-6 py-2.5 bg-[#03a9f4] text-white border-0 rounded-lg text-sm font-medium cursor-pointer transition-colors hover:bg-[#0290d4]"
>
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line
x1="12"
y1="5"
x2="12"
y2="19"
/>
<line
x1="5"
y1="12"
x2="19"
y2="12"
/>
<button class="inline-flex items-center gap-2 px-6 py-2.5 bg-[#03a9f4] text-white border-0 rounded-lg text-sm font-medium cursor-pointer transition-colors hover:bg-[#0290d4]">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="5" x2="12" y2="19" />
<line x1="5" y1="12" x2="19" y2="12" />
</svg>
Start Tracking
</button>