@nextsparkjs/theme-productivity 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -0
- package/about.md +123 -0
- package/components/CardDetailModal.tsx +318 -0
- package/components/KanbanBoard.tsx +612 -0
- package/components/KanbanCard.tsx +218 -0
- package/components/KanbanColumn.tsx +264 -0
- package/components/SortableList.tsx +46 -0
- package/components/index.ts +4 -0
- package/config/app.config.ts +172 -0
- package/config/billing.config.ts +187 -0
- package/config/dashboard.config.ts +357 -0
- package/config/dev.config.ts +55 -0
- package/config/features.config.ts +256 -0
- package/config/flows.config.ts +484 -0
- package/config/permissions.config.ts +167 -0
- package/config/theme.config.ts +106 -0
- package/entities/boards/boards.config.ts +61 -0
- package/entities/boards/boards.fields.ts +154 -0
- package/entities/boards/boards.service.ts +256 -0
- package/entities/boards/boards.types.ts +57 -0
- package/entities/boards/messages/en.json +80 -0
- package/entities/boards/messages/es.json +80 -0
- package/entities/boards/migrations/001_boards_table.sql +83 -0
- package/entities/cards/cards.config.ts +61 -0
- package/entities/cards/cards.fields.ts +242 -0
- package/entities/cards/cards.service.ts +336 -0
- package/entities/cards/cards.types.ts +79 -0
- package/entities/cards/messages/en.json +114 -0
- package/entities/cards/messages/es.json +114 -0
- package/entities/cards/migrations/020_cards_table.sql +92 -0
- package/entities/lists/lists.config.ts +61 -0
- package/entities/lists/lists.fields.ts +105 -0
- package/entities/lists/lists.service.ts +252 -0
- package/entities/lists/lists.types.ts +55 -0
- package/entities/lists/messages/en.json +60 -0
- package/entities/lists/messages/es.json +60 -0
- package/entities/lists/migrations/010_lists_table.sql +79 -0
- package/lib/selectors.ts +206 -0
- package/messages/en.json +79 -0
- package/messages/es.json +79 -0
- package/migrations/999_theme_sample_data.sql +922 -0
- package/migrations/999a_initial_sample_data.sql +377 -0
- package/migrations/999b_abundant_sample_data.sql +346 -0
- package/package.json +17 -0
- package/permissions-matrix.md +122 -0
- package/styles/components.css +460 -0
- package/styles/globals.css +560 -0
- package/templates/dashboard/(main)/boards/[id]/[cardId]/page.tsx +238 -0
- package/templates/dashboard/(main)/boards/[id]/edit/page.tsx +390 -0
- package/templates/dashboard/(main)/boards/[id]/page.tsx +236 -0
- package/templates/dashboard/(main)/boards/create/page.tsx +236 -0
- package/templates/dashboard/(main)/boards/page.tsx +335 -0
- package/templates/dashboard/(main)/layout.tsx +32 -0
- package/templates/dashboard/(main)/page.tsx +592 -0
- package/templates/shared/ProductivityMobileNav.tsx +410 -0
- package/templates/shared/ProductivitySidebar.tsx +538 -0
- package/templates/shared/ProductivityTopBar.tsx +317 -0
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Productivity Theme - Global Styles
|
|
3
|
+
*
|
|
4
|
+
* Clean, modern design focused on productivity.
|
|
5
|
+
* Blue-tinted palette with clear visual hierarchy.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* ============================================================================
|
|
9
|
+
Base Theme Variables - Blue Color Scheme
|
|
10
|
+
============================================================================ */
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
/* Base colors - Blue theme */
|
|
14
|
+
--background: oklch(1.0000 0 0);
|
|
15
|
+
--foreground: oklch(0.1884 0.0128 248.5103);
|
|
16
|
+
--card: oklch(0.9784 0.0011 197.1387);
|
|
17
|
+
--card-foreground: oklch(0.1884 0.0128 248.5103);
|
|
18
|
+
--popover: oklch(1.0000 0 0);
|
|
19
|
+
--popover-foreground: oklch(0.1884 0.0128 248.5103);
|
|
20
|
+
--primary: oklch(0.6723 0.1606 244.9955);
|
|
21
|
+
--primary-foreground: oklch(1.0000 0 0);
|
|
22
|
+
--secondary: oklch(0.1884 0.0128 248.5103);
|
|
23
|
+
--secondary-foreground: oklch(1.0000 0 0);
|
|
24
|
+
--muted: oklch(0.9222 0.0013 286.3737);
|
|
25
|
+
--muted-foreground: oklch(0.1884 0.0128 248.5103);
|
|
26
|
+
--accent: oklch(0.9392 0.0166 250.8453);
|
|
27
|
+
--accent-foreground: oklch(0.6723 0.1606 244.9955);
|
|
28
|
+
--destructive: oklch(0.6188 0.2376 25.7658);
|
|
29
|
+
--destructive-foreground: oklch(1.0000 0 0);
|
|
30
|
+
--border: oklch(0.9317 0.0118 231.6594);
|
|
31
|
+
--input: oklch(0.9809 0.0025 228.7836);
|
|
32
|
+
--ring: oklch(0.6818 0.1584 243.3540);
|
|
33
|
+
|
|
34
|
+
/* Chart colors */
|
|
35
|
+
--chart-1: oklch(0.6723 0.1606 244.9955);
|
|
36
|
+
--chart-2: oklch(0.6907 0.1554 160.3454);
|
|
37
|
+
--chart-3: oklch(0.8214 0.1600 82.5337);
|
|
38
|
+
--chart-4: oklch(0.7064 0.1822 151.7125);
|
|
39
|
+
--chart-5: oklch(0.5919 0.2186 10.5826);
|
|
40
|
+
|
|
41
|
+
/* Sidebar colors */
|
|
42
|
+
--sidebar: oklch(0.9784 0.0011 197.1387);
|
|
43
|
+
--sidebar-foreground: oklch(0.1884 0.0128 248.5103);
|
|
44
|
+
--sidebar-primary: oklch(0.6723 0.1606 244.9955);
|
|
45
|
+
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
|
46
|
+
--sidebar-accent: oklch(0.9392 0.0166 250.8453);
|
|
47
|
+
--sidebar-accent-foreground: oklch(0.6723 0.1606 244.9955);
|
|
48
|
+
--sidebar-border: oklch(0.9271 0.0101 238.5177);
|
|
49
|
+
--sidebar-ring: oklch(0.6818 0.1584 243.3540);
|
|
50
|
+
|
|
51
|
+
/* Typography */
|
|
52
|
+
--font-sans: Open Sans, sans-serif;
|
|
53
|
+
--font-serif: Georgia, serif;
|
|
54
|
+
--font-mono: Menlo, monospace;
|
|
55
|
+
|
|
56
|
+
/* Border radius */
|
|
57
|
+
--radius: 1.3rem;
|
|
58
|
+
|
|
59
|
+
/* Shadows - Flat style */
|
|
60
|
+
--shadow-x: 0px;
|
|
61
|
+
--shadow-y: 2px;
|
|
62
|
+
--shadow-blur: 0px;
|
|
63
|
+
--shadow-spread: 0px;
|
|
64
|
+
--shadow-opacity: 0;
|
|
65
|
+
--shadow-color: rgba(29,161,242,0.15);
|
|
66
|
+
--shadow-2xs: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
67
|
+
--shadow-xs: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
68
|
+
--shadow-sm: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 1px 2px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
69
|
+
--shadow: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 1px 2px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
70
|
+
--shadow-md: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 2px 4px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
71
|
+
--shadow-lg: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 4px 6px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
72
|
+
--shadow-xl: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 8px 10px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
73
|
+
--shadow-2xl: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
74
|
+
--tracking-normal: 0em;
|
|
75
|
+
--spacing: 0.25rem;
|
|
76
|
+
|
|
77
|
+
/* Board colors */
|
|
78
|
+
--board-blue: oklch(0.55 0.2 250);
|
|
79
|
+
--board-green: oklch(0.55 0.18 150);
|
|
80
|
+
--board-purple: oklch(0.5 0.2 300);
|
|
81
|
+
--board-orange: oklch(0.65 0.18 50);
|
|
82
|
+
--board-red: oklch(0.55 0.22 25);
|
|
83
|
+
--board-pink: oklch(0.6 0.18 350);
|
|
84
|
+
--board-gray: oklch(0.5 0.02 260);
|
|
85
|
+
|
|
86
|
+
/* Label colors */
|
|
87
|
+
--label-urgent: oklch(0.55 0.22 25);
|
|
88
|
+
--label-important: oklch(0.65 0.18 50);
|
|
89
|
+
--label-bug: oklch(0.55 0.22 25);
|
|
90
|
+
--label-feature: oklch(0.55 0.2 250);
|
|
91
|
+
--label-enhancement: oklch(0.55 0.18 150);
|
|
92
|
+
--label-documentation: oklch(0.5 0.2 300);
|
|
93
|
+
|
|
94
|
+
/* Card shadows for drag states */
|
|
95
|
+
--card-shadow-idle: 0 1px 3px 0 rgb(0 0 0 / 0.1);
|
|
96
|
+
--card-shadow-hover: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
97
|
+
--card-shadow-dragging: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
98
|
+
|
|
99
|
+
/* List dimensions */
|
|
100
|
+
--list-width: 280px;
|
|
101
|
+
--list-max-height: calc(100vh - 200px);
|
|
102
|
+
|
|
103
|
+
/* Card dimensions */
|
|
104
|
+
--card-min-height: 60px;
|
|
105
|
+
--card-padding: 0.75rem;
|
|
106
|
+
|
|
107
|
+
/* Animation */
|
|
108
|
+
--transition-fast: 100ms ease;
|
|
109
|
+
--transition-normal: 200ms ease;
|
|
110
|
+
--transition-slow: 300ms ease;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Dark mode */
|
|
114
|
+
.dark {
|
|
115
|
+
/* Base colors - Blue theme dark mode */
|
|
116
|
+
--background: oklch(0 0 0);
|
|
117
|
+
--foreground: oklch(0.9328 0.0025 228.7857);
|
|
118
|
+
--card: oklch(0.2097 0.0080 274.5332);
|
|
119
|
+
--card-foreground: oklch(0.8853 0 0);
|
|
120
|
+
--popover: oklch(0 0 0);
|
|
121
|
+
--popover-foreground: oklch(0.9328 0.0025 228.7857);
|
|
122
|
+
--primary: oklch(0.6692 0.1607 245.0110);
|
|
123
|
+
--primary-foreground: oklch(1.0000 0 0);
|
|
124
|
+
--secondary: oklch(0.9622 0.0035 219.5331);
|
|
125
|
+
--secondary-foreground: oklch(0.1884 0.0128 248.5103);
|
|
126
|
+
--muted: oklch(0.2090 0 0);
|
|
127
|
+
--muted-foreground: oklch(0.5637 0.0078 247.9662);
|
|
128
|
+
--accent: oklch(0.1928 0.0331 242.5459);
|
|
129
|
+
--accent-foreground: oklch(0.6692 0.1607 245.0110);
|
|
130
|
+
--destructive: oklch(0.6188 0.2376 25.7658);
|
|
131
|
+
--destructive-foreground: oklch(1.0000 0 0);
|
|
132
|
+
--border: oklch(0.2674 0.0047 248.0045);
|
|
133
|
+
--input: oklch(0.3020 0.0288 244.8244);
|
|
134
|
+
--ring: oklch(0.6818 0.1584 243.3540);
|
|
135
|
+
|
|
136
|
+
/* Chart colors */
|
|
137
|
+
--chart-1: oklch(0.6723 0.1606 244.9955);
|
|
138
|
+
--chart-2: oklch(0.6907 0.1554 160.3454);
|
|
139
|
+
--chart-3: oklch(0.8214 0.1600 82.5337);
|
|
140
|
+
--chart-4: oklch(0.7064 0.1822 151.7125);
|
|
141
|
+
--chart-5: oklch(0.5919 0.2186 10.5826);
|
|
142
|
+
|
|
143
|
+
/* Sidebar colors */
|
|
144
|
+
--sidebar: oklch(0.2097 0.0080 274.5332);
|
|
145
|
+
--sidebar-foreground: oklch(0.8853 0 0);
|
|
146
|
+
--sidebar-primary: oklch(0.6818 0.1584 243.3540);
|
|
147
|
+
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
|
148
|
+
--sidebar-accent: oklch(0.1928 0.0331 242.5459);
|
|
149
|
+
--sidebar-accent-foreground: oklch(0.6692 0.1607 245.0110);
|
|
150
|
+
--sidebar-border: oklch(0.3795 0.0220 240.5943);
|
|
151
|
+
--sidebar-ring: oklch(0.6818 0.1584 243.3540);
|
|
152
|
+
|
|
153
|
+
/* Typography - same as light */
|
|
154
|
+
--font-sans: Open Sans, sans-serif;
|
|
155
|
+
--font-serif: Georgia, serif;
|
|
156
|
+
--font-mono: Menlo, monospace;
|
|
157
|
+
|
|
158
|
+
/* Border radius - same as light */
|
|
159
|
+
--radius: 1.3rem;
|
|
160
|
+
|
|
161
|
+
/* Shadows - Flat style dark mode */
|
|
162
|
+
--shadow-x: 0px;
|
|
163
|
+
--shadow-y: 2px;
|
|
164
|
+
--shadow-blur: 0px;
|
|
165
|
+
--shadow-spread: 0px;
|
|
166
|
+
--shadow-opacity: 0;
|
|
167
|
+
--shadow-color: rgba(29,161,242,0.25);
|
|
168
|
+
--shadow-2xs: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
169
|
+
--shadow-xs: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
170
|
+
--shadow-sm: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 1px 2px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
171
|
+
--shadow: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 1px 2px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
172
|
+
--shadow-md: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 2px 4px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
173
|
+
--shadow-lg: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 4px 6px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
174
|
+
--shadow-xl: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00), 0px 8px 10px -1px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
175
|
+
--shadow-2xl: 0px 2px 0px 0px hsl(202.8169 89.1213% 53.1373% / 0.00);
|
|
176
|
+
|
|
177
|
+
/* Board colors - dark mode */
|
|
178
|
+
--board-blue: oklch(0.45 0.18 250);
|
|
179
|
+
--board-green: oklch(0.45 0.16 150);
|
|
180
|
+
--board-purple: oklch(0.4 0.18 300);
|
|
181
|
+
--board-orange: oklch(0.55 0.16 50);
|
|
182
|
+
--board-red: oklch(0.45 0.2 25);
|
|
183
|
+
--board-pink: oklch(0.5 0.16 350);
|
|
184
|
+
--board-gray: oklch(0.4 0.02 260);
|
|
185
|
+
|
|
186
|
+
--card-shadow-idle: 0 1px 3px 0 rgb(0 0 0 / 0.3);
|
|
187
|
+
--card-shadow-hover: 0 4px 6px -1px rgb(0 0 0 / 0.3);
|
|
188
|
+
--card-shadow-dragging: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* ============================================================================
|
|
192
|
+
Tailwind v4 Theme Integration
|
|
193
|
+
============================================================================ */
|
|
194
|
+
|
|
195
|
+
@theme inline {
|
|
196
|
+
--color-background: var(--background);
|
|
197
|
+
--color-foreground: var(--foreground);
|
|
198
|
+
--color-card: var(--card);
|
|
199
|
+
--color-card-foreground: var(--card-foreground);
|
|
200
|
+
--color-popover: var(--popover);
|
|
201
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
202
|
+
--color-primary: var(--primary);
|
|
203
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
204
|
+
--color-secondary: var(--secondary);
|
|
205
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
206
|
+
--color-muted: var(--muted);
|
|
207
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
208
|
+
--color-accent: var(--accent);
|
|
209
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
210
|
+
--color-destructive: var(--destructive);
|
|
211
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
212
|
+
--color-border: var(--border);
|
|
213
|
+
--color-input: var(--input);
|
|
214
|
+
--color-ring: var(--ring);
|
|
215
|
+
--color-chart-1: var(--chart-1);
|
|
216
|
+
--color-chart-2: var(--chart-2);
|
|
217
|
+
--color-chart-3: var(--chart-3);
|
|
218
|
+
--color-chart-4: var(--chart-4);
|
|
219
|
+
--color-chart-5: var(--chart-5);
|
|
220
|
+
--color-sidebar: var(--sidebar);
|
|
221
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
222
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
223
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
224
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
225
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
226
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
227
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
228
|
+
|
|
229
|
+
--font-sans: var(--font-sans);
|
|
230
|
+
--font-mono: var(--font-mono);
|
|
231
|
+
--font-serif: var(--font-serif);
|
|
232
|
+
|
|
233
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
234
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
235
|
+
--radius-lg: var(--radius);
|
|
236
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
237
|
+
|
|
238
|
+
--shadow-2xs: var(--shadow-2xs);
|
|
239
|
+
--shadow-xs: var(--shadow-xs);
|
|
240
|
+
--shadow-sm: var(--shadow-sm);
|
|
241
|
+
--shadow: var(--shadow);
|
|
242
|
+
--shadow-md: var(--shadow-md);
|
|
243
|
+
--shadow-lg: var(--shadow-lg);
|
|
244
|
+
--shadow-xl: var(--shadow-xl);
|
|
245
|
+
--shadow-2xl: var(--shadow-2xl);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* ============================================================================
|
|
249
|
+
Base Styles
|
|
250
|
+
============================================================================ */
|
|
251
|
+
|
|
252
|
+
body {
|
|
253
|
+
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Focus visible for keyboard navigation */
|
|
257
|
+
*:focus-visible {
|
|
258
|
+
outline: 2px solid var(--board-blue);
|
|
259
|
+
outline-offset: 2px;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* ============================================================================
|
|
263
|
+
Typography
|
|
264
|
+
============================================================================ */
|
|
265
|
+
|
|
266
|
+
.productivity-heading {
|
|
267
|
+
font-weight: 600;
|
|
268
|
+
letter-spacing: -0.025em;
|
|
269
|
+
line-height: 1.2;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.productivity-title {
|
|
273
|
+
font-size: 1.5rem;
|
|
274
|
+
font-weight: 700;
|
|
275
|
+
letter-spacing: -0.03em;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* ============================================================================
|
|
279
|
+
Board Layout
|
|
280
|
+
============================================================================ */
|
|
281
|
+
|
|
282
|
+
.board-container {
|
|
283
|
+
display: flex;
|
|
284
|
+
gap: 1rem;
|
|
285
|
+
overflow-x: auto;
|
|
286
|
+
padding: 1rem;
|
|
287
|
+
min-height: calc(100vh - 120px);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.board-header {
|
|
291
|
+
padding: 1rem 1.5rem;
|
|
292
|
+
display: flex;
|
|
293
|
+
align-items: center;
|
|
294
|
+
justify-content: space-between;
|
|
295
|
+
border-bottom: 1px solid hsl(var(--border));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* ============================================================================
|
|
299
|
+
List Styles
|
|
300
|
+
============================================================================ */
|
|
301
|
+
|
|
302
|
+
.list-column {
|
|
303
|
+
width: var(--list-width);
|
|
304
|
+
flex-shrink: 0;
|
|
305
|
+
background: hsl(var(--muted) / 0.5);
|
|
306
|
+
border-radius: var(--radius);
|
|
307
|
+
display: flex;
|
|
308
|
+
flex-direction: column;
|
|
309
|
+
max-height: var(--list-max-height);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.list-header {
|
|
313
|
+
padding: 0.75rem 1rem;
|
|
314
|
+
font-weight: 600;
|
|
315
|
+
font-size: 0.875rem;
|
|
316
|
+
display: flex;
|
|
317
|
+
align-items: center;
|
|
318
|
+
justify-content: space-between;
|
|
319
|
+
border-bottom: 1px solid hsl(var(--border) / 0.5);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.list-content {
|
|
323
|
+
flex: 1;
|
|
324
|
+
overflow-y: auto;
|
|
325
|
+
padding: 0.5rem;
|
|
326
|
+
display: flex;
|
|
327
|
+
flex-direction: column;
|
|
328
|
+
gap: 0.5rem;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.list-footer {
|
|
332
|
+
padding: 0.5rem;
|
|
333
|
+
border-top: 1px solid hsl(var(--border) / 0.5);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/* ============================================================================
|
|
337
|
+
Card Styles
|
|
338
|
+
============================================================================ */
|
|
339
|
+
|
|
340
|
+
.card-item {
|
|
341
|
+
background: hsl(var(--card));
|
|
342
|
+
border-radius: var(--radius-sm);
|
|
343
|
+
padding: var(--card-padding);
|
|
344
|
+
min-height: var(--card-min-height);
|
|
345
|
+
box-shadow: var(--card-shadow-idle);
|
|
346
|
+
cursor: pointer;
|
|
347
|
+
transition: box-shadow var(--transition-fast), transform var(--transition-fast);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.card-item:hover {
|
|
351
|
+
box-shadow: var(--card-shadow-hover);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.card-item.dragging {
|
|
355
|
+
box-shadow: var(--card-shadow-dragging);
|
|
356
|
+
transform: rotate(3deg);
|
|
357
|
+
opacity: 0.9;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.card-title {
|
|
361
|
+
font-size: 0.875rem;
|
|
362
|
+
font-weight: 500;
|
|
363
|
+
line-height: 1.4;
|
|
364
|
+
color: hsl(var(--foreground));
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.card-meta {
|
|
368
|
+
display: flex;
|
|
369
|
+
align-items: center;
|
|
370
|
+
gap: 0.5rem;
|
|
371
|
+
margin-top: 0.5rem;
|
|
372
|
+
flex-wrap: wrap;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/* ============================================================================
|
|
376
|
+
Label Badges
|
|
377
|
+
============================================================================ */
|
|
378
|
+
|
|
379
|
+
.label-badge {
|
|
380
|
+
display: inline-flex;
|
|
381
|
+
align-items: center;
|
|
382
|
+
padding: 0.125rem 0.5rem;
|
|
383
|
+
border-radius: 9999px;
|
|
384
|
+
font-size: 0.675rem;
|
|
385
|
+
font-weight: 600;
|
|
386
|
+
text-transform: uppercase;
|
|
387
|
+
letter-spacing: 0.025em;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.label-urgent {
|
|
391
|
+
background: var(--label-urgent);
|
|
392
|
+
color: white;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.label-important {
|
|
396
|
+
background: var(--label-important);
|
|
397
|
+
color: white;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.label-bug {
|
|
401
|
+
background: var(--label-bug);
|
|
402
|
+
color: white;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.label-feature {
|
|
406
|
+
background: var(--label-feature);
|
|
407
|
+
color: white;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.label-enhancement {
|
|
411
|
+
background: var(--label-enhancement);
|
|
412
|
+
color: white;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.label-documentation {
|
|
416
|
+
background: var(--label-documentation);
|
|
417
|
+
color: white;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/* ============================================================================
|
|
421
|
+
Due Date Indicators
|
|
422
|
+
============================================================================ */
|
|
423
|
+
|
|
424
|
+
.due-date {
|
|
425
|
+
display: inline-flex;
|
|
426
|
+
align-items: center;
|
|
427
|
+
gap: 0.25rem;
|
|
428
|
+
font-size: 0.75rem;
|
|
429
|
+
color: hsl(var(--muted-foreground));
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.due-date.overdue {
|
|
433
|
+
color: var(--label-urgent);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.due-date.due-soon {
|
|
437
|
+
color: var(--label-important);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/* ============================================================================
|
|
441
|
+
Avatar Stack
|
|
442
|
+
============================================================================ */
|
|
443
|
+
|
|
444
|
+
.avatar-stack {
|
|
445
|
+
display: flex;
|
|
446
|
+
flex-direction: row-reverse;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.avatar-stack > * {
|
|
450
|
+
margin-left: -0.5rem;
|
|
451
|
+
border: 2px solid hsl(var(--background));
|
|
452
|
+
border-radius: 9999px;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.avatar-stack > *:last-child {
|
|
456
|
+
margin-left: 0;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/* ============================================================================
|
|
460
|
+
Board Color Backgrounds
|
|
461
|
+
============================================================================ */
|
|
462
|
+
|
|
463
|
+
.board-bg-blue { background: var(--board-blue); }
|
|
464
|
+
.board-bg-green { background: var(--board-green); }
|
|
465
|
+
.board-bg-purple { background: var(--board-purple); }
|
|
466
|
+
.board-bg-orange { background: var(--board-orange); }
|
|
467
|
+
.board-bg-red { background: var(--board-red); }
|
|
468
|
+
.board-bg-pink { background: var(--board-pink); }
|
|
469
|
+
.board-bg-gray { background: var(--board-gray); }
|
|
470
|
+
|
|
471
|
+
/* ============================================================================
|
|
472
|
+
Animations
|
|
473
|
+
============================================================================ */
|
|
474
|
+
|
|
475
|
+
@keyframes card-appear {
|
|
476
|
+
from {
|
|
477
|
+
opacity: 0;
|
|
478
|
+
transform: translateY(-10px);
|
|
479
|
+
}
|
|
480
|
+
to {
|
|
481
|
+
opacity: 1;
|
|
482
|
+
transform: translateY(0);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.card-item {
|
|
487
|
+
animation: card-appear var(--transition-normal);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
@keyframes pulse-border {
|
|
491
|
+
0%, 100% {
|
|
492
|
+
border-color: hsl(var(--primary) / 0.5);
|
|
493
|
+
}
|
|
494
|
+
50% {
|
|
495
|
+
border-color: hsl(var(--primary));
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.drop-zone-active {
|
|
500
|
+
border: 2px dashed hsl(var(--primary));
|
|
501
|
+
animation: pulse-border 1s ease-in-out infinite;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/* ============================================================================
|
|
505
|
+
Scrollbar Styling
|
|
506
|
+
============================================================================ */
|
|
507
|
+
|
|
508
|
+
.list-content::-webkit-scrollbar,
|
|
509
|
+
.custom-scrollbar::-webkit-scrollbar {
|
|
510
|
+
width: 6px;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.list-content::-webkit-scrollbar-track,
|
|
514
|
+
.custom-scrollbar::-webkit-scrollbar-track {
|
|
515
|
+
background: transparent;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.list-content::-webkit-scrollbar-thumb,
|
|
519
|
+
.custom-scrollbar::-webkit-scrollbar-thumb {
|
|
520
|
+
background: var(--muted-foreground);
|
|
521
|
+
opacity: 0.3;
|
|
522
|
+
border-radius: 3px;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.list-content::-webkit-scrollbar-thumb:hover,
|
|
526
|
+
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
|
527
|
+
opacity: 0.5;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/* Hide scrollbar by default, show on hover */
|
|
531
|
+
.custom-scrollbar {
|
|
532
|
+
scrollbar-width: thin;
|
|
533
|
+
scrollbar-color: transparent transparent;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.custom-scrollbar:hover {
|
|
537
|
+
scrollbar-color: var(--muted-foreground) transparent;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/* ============================================================================
|
|
541
|
+
Responsive Adjustments
|
|
542
|
+
============================================================================ */
|
|
543
|
+
|
|
544
|
+
@media (max-width: 768px) {
|
|
545
|
+
:root {
|
|
546
|
+
--list-width: 260px;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
.board-container {
|
|
550
|
+
padding: 0.5rem;
|
|
551
|
+
gap: 0.75rem;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
@media (max-width: 480px) {
|
|
556
|
+
:root {
|
|
557
|
+
--list-width: 240px;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|