Skip to content

Commit e15c206

Browse files
authored
Merge pull request #501 from Chris0Jeky/ui/board-card-surface-polish
UI-05: Board card and board-surface polish pass
2 parents 6063076 + c5be917 commit e15c206

File tree

6 files changed

+817
-92
lines changed

6 files changed

+817
-92
lines changed

frontend/taskdeck-web/src/components/board/BoardActionRail.vue

Lines changed: 69 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,88 @@ defineEmits<{
1010

1111
<template>
1212
<div
13-
class="mt-4 flex flex-wrap items-center gap-2 rounded-xl border border-outline-variant/15 bg-surface-container-low px-4 py-3"
13+
class="td-action-rail"
1414
data-board-action-rail
1515
>
16-
<span class="text-xs font-semibold uppercase tracking-wide text-on-surface/60">Board Actions</span>
17-
<button
18-
class="px-3 py-2 text-sm font-medium text-on-surface/70 hover:bg-surface-container border border-outline-variant/15 rounded-lg transition-colors"
19-
@click="$emit('capture')"
20-
>
16+
<span class="td-action-rail__label">Board Actions</span>
17+
<button class="td-action-rail__btn" @click="$emit('capture')">
2118
Capture here
2219
</button>
23-
<button
24-
class="px-3 py-2 text-sm font-medium text-on-surface/70 hover:bg-surface-container border border-outline-variant/15 rounded-lg transition-colors"
25-
@click="$emit('chat')"
26-
>
20+
<button class="td-action-rail__btn" @click="$emit('chat')">
2721
Ask assistant
2822
</button>
29-
<button
30-
class="px-3 py-2 text-sm font-medium text-on-surface/70 hover:bg-surface-container border border-outline-variant/15 rounded-lg transition-colors"
31-
@click="$emit('review')"
32-
>
23+
<button class="td-action-rail__btn" @click="$emit('review')">
3324
Review proposals
3425
</button>
35-
<button
36-
class="px-3 py-2 text-sm font-medium text-on-surface/70 hover:bg-surface-container border border-outline-variant/15 rounded-lg transition-colors"
37-
@click="$emit('inbox')"
38-
>
26+
<button class="td-action-rail__btn" @click="$emit('inbox')">
3927
Open Inbox
4028
</button>
41-
<button
42-
class="px-3 py-2 text-sm font-medium text-on-primary-container bg-primary-container hover:brightness-110 rounded-lg transition-colors"
43-
@click="$emit('addCard')"
44-
>
29+
<button class="td-action-rail__btn td-action-rail__btn--primary" @click="$emit('addCard')">
4530
Add card
4631
</button>
47-
<p class="text-sm text-on-surface/60">
32+
<p class="td-action-rail__hint">
4833
New input starts in Capture or Inbox. Only approved changes land on this board.
4934
</p>
5035
</div>
5136
</template>
37+
38+
<style scoped>
39+
.td-action-rail {
40+
margin-top: var(--td-space-5);
41+
display: flex;
42+
flex-wrap: wrap;
43+
align-items: center;
44+
gap: var(--td-space-2);
45+
border-radius: var(--td-radius-xl);
46+
border: 0.5px solid var(--td-border-ghost);
47+
background: var(--td-surface-container-low);
48+
padding: var(--td-space-4) var(--td-space-5);
49+
}
50+
51+
.td-action-rail__label {
52+
font-size: var(--td-font-xs);
53+
font-family: 'Space Grotesk', system-ui, sans-serif;
54+
font-weight: 600;
55+
text-transform: uppercase;
56+
letter-spacing: 0.1em;
57+
color: var(--td-text-tertiary);
58+
}
59+
60+
.td-action-rail__btn {
61+
padding: var(--td-space-2) var(--td-space-4);
62+
font-size: var(--td-font-sm);
63+
font-weight: 500;
64+
color: var(--td-text-muted);
65+
border: 1px solid var(--td-border-default);
66+
border-radius: var(--td-radius-lg);
67+
transition:
68+
background-color var(--td-transition-fast),
69+
color var(--td-transition-fast);
70+
}
71+
72+
.td-action-rail__btn:hover {
73+
background: var(--td-surface-container);
74+
color: var(--td-text-primary);
75+
}
76+
77+
.td-action-rail__btn:focus-visible {
78+
outline: none;
79+
box-shadow: var(--td-focus-ring);
80+
}
81+
82+
.td-action-rail__btn--primary {
83+
background: var(--td-color-primary);
84+
color: var(--td-text-inverse);
85+
border-color: transparent;
86+
}
87+
88+
.td-action-rail__btn--primary:hover {
89+
background: var(--td-color-primary-hover);
90+
color: var(--td-text-inverse);
91+
}
92+
93+
.td-action-rail__hint {
94+
font-size: var(--td-font-sm);
95+
color: var(--td-text-tertiary);
96+
}
97+
</style>

frontend/taskdeck-web/src/components/board/BoardCanvas.vue

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ defineEmits<{
2626
</script>
2727

2828
<template>
29-
<div class="h-[calc(100vh-120px)] overflow-x-auto">
30-
<div class="flex gap-4 p-6 min-h-full">
29+
<div class="td-board-canvas">
30+
<div class="td-board-canvas__lanes">
3131
<div
3232
v-for="column in sortedColumns"
3333
:key="column.id"
@@ -59,10 +59,10 @@ defineEmits<{
5959
<!-- Empty State -->
6060
<div
6161
v-if="!hasColumns"
62-
class="flex-1 flex flex-col items-center justify-center text-on-surface/20"
62+
class="td-board-canvas__empty"
6363
>
6464
<svg
65-
class="w-16 h-16 mb-4"
65+
class="td-board-canvas__empty-icon"
6666
fill="none"
6767
stroke="currentColor"
6868
viewBox="0 0 24 24"
@@ -74,9 +74,50 @@ defineEmits<{
7474
d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"
7575
/>
7676
</svg>
77-
<p class="text-lg font-medium">No columns yet</p>
78-
<p class="text-sm mt-1">Click "Add Column" to get started</p>
77+
<p class="td-board-canvas__empty-title">No columns yet</p>
78+
<p class="td-board-canvas__empty-hint">Click "Add Column" to get started</p>
7979
</div>
8080
</div>
8181
</div>
8282
</template>
83+
84+
<style scoped>
85+
.td-board-canvas {
86+
height: calc(100vh - 120px);
87+
overflow-x: auto;
88+
}
89+
90+
.td-board-canvas__lanes {
91+
display: flex;
92+
gap: var(--td-space-5);
93+
padding: var(--td-space-6);
94+
min-height: 100%;
95+
}
96+
97+
.td-board-canvas__empty {
98+
flex: 1;
99+
display: flex;
100+
flex-direction: column;
101+
align-items: center;
102+
justify-content: center;
103+
color: var(--td-text-tertiary);
104+
}
105+
106+
.td-board-canvas__empty-icon {
107+
width: 4rem;
108+
height: 4rem;
109+
margin-bottom: var(--td-space-5);
110+
}
111+
112+
.td-board-canvas__empty-title {
113+
font-size: var(--td-font-lg);
114+
font-weight: 500;
115+
color: var(--td-text-tertiary);
116+
}
117+
118+
.td-board-canvas__empty-hint {
119+
font-size: var(--td-font-sm);
120+
color: var(--td-text-tertiary);
121+
margin-top: var(--td-space-1);
122+
}
123+
</style>

0 commit comments

Comments
 (0)