@cluesmith/codev 1.4.1 → 1.4.2

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.
@@ -0,0 +1,124 @@
1
+ /* Dashboard Layout - Header, Main, Panes */
2
+
3
+ /* Header */
4
+ .header {
5
+ display: flex;
6
+ justify-content: space-between;
7
+ align-items: center;
8
+ padding: 12px 16px;
9
+ background: var(--bg-secondary);
10
+ border-bottom: 1px solid var(--border);
11
+ }
12
+
13
+ .header h1 {
14
+ font-size: 16px;
15
+ font-weight: 600;
16
+ }
17
+
18
+ .header-actions {
19
+ display: flex;
20
+ gap: 8px;
21
+ }
22
+
23
+ .btn {
24
+ padding: 6px 12px;
25
+ border-radius: 4px;
26
+ border: 1px solid var(--border);
27
+ background: var(--bg-tertiary);
28
+ color: var(--text-secondary);
29
+ cursor: pointer;
30
+ font-size: 13px;
31
+ }
32
+
33
+ .btn:hover {
34
+ background: var(--tab-active);
35
+ }
36
+
37
+ .btn-danger {
38
+ border-color: #ef4444;
39
+ color: #ef4444;
40
+ }
41
+
42
+ .btn-danger:hover {
43
+ background: rgba(239, 68, 68, 0.1);
44
+ }
45
+
46
+ /* Main content area */
47
+ .main {
48
+ display: flex;
49
+ flex: 1;
50
+ overflow: hidden;
51
+ }
52
+
53
+ /* Left pane - Architect */
54
+ .left-pane {
55
+ width: 50%;
56
+ min-width: 20%;
57
+ max-width: 80%;
58
+ resize: horizontal;
59
+ overflow: auto;
60
+ border-right: 1px solid var(--border);
61
+ display: flex;
62
+ flex-direction: column;
63
+ }
64
+
65
+ .pane-header {
66
+ padding: 8px 12px;
67
+ background: var(--bg-secondary);
68
+ border-bottom: 1px solid var(--border);
69
+ font-size: 12px;
70
+ color: var(--text-muted);
71
+ text-transform: uppercase;
72
+ letter-spacing: 0.5px;
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 6px;
76
+ }
77
+
78
+ .pane-header .status-dot {
79
+ width: 8px;
80
+ height: 8px;
81
+ border-radius: 50%;
82
+ background: var(--status-active);
83
+ }
84
+
85
+ .pane-header .status-dot.inactive {
86
+ background: var(--text-muted);
87
+ }
88
+
89
+ #architect-content {
90
+ flex: 1;
91
+ display: flex;
92
+ flex-direction: column;
93
+ }
94
+
95
+ .left-pane iframe {
96
+ flex: 1;
97
+ width: 100%;
98
+ border: none;
99
+ background: #000;
100
+ }
101
+
102
+ .architect-placeholder {
103
+ flex: 1;
104
+ display: flex;
105
+ flex-direction: column;
106
+ align-items: center;
107
+ justify-content: center;
108
+ color: var(--text-muted);
109
+ gap: 16px;
110
+ }
111
+
112
+ .architect-placeholder code {
113
+ background: var(--bg-tertiary);
114
+ padding: 4px 8px;
115
+ border-radius: 4px;
116
+ font-size: 13px;
117
+ }
118
+
119
+ /* Right pane - Tabs */
120
+ .right-pane {
121
+ width: 50%;
122
+ display: flex;
123
+ flex-direction: column;
124
+ }
@@ -0,0 +1,501 @@
1
+ /* Projects Tab Styles (Spec 0045) */
2
+
3
+ .projects-container {
4
+ flex: 1;
5
+ overflow-y: auto;
6
+ padding: 16px;
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 16px;
10
+ }
11
+
12
+ /* Welcome Screen */
13
+ .projects-welcome {
14
+ max-width: 600px;
15
+ margin: 40px auto;
16
+ text-align: center;
17
+ }
18
+
19
+ .projects-welcome h2 {
20
+ font-size: 24px;
21
+ margin-bottom: 16px;
22
+ color: var(--text-primary);
23
+ }
24
+
25
+ .projects-welcome p {
26
+ color: var(--text-secondary);
27
+ line-height: 1.6;
28
+ margin-bottom: 16px;
29
+ }
30
+
31
+ .projects-welcome ol {
32
+ text-align: left;
33
+ margin: 24px 0;
34
+ padding-left: 24px;
35
+ }
36
+
37
+ .projects-welcome li {
38
+ margin-bottom: 8px;
39
+ color: var(--text-secondary);
40
+ }
41
+
42
+ .projects-welcome li strong {
43
+ color: var(--text-primary);
44
+ }
45
+
46
+ .projects-welcome .quick-tip {
47
+ margin-top: 24px;
48
+ padding: 12px;
49
+ background: var(--bg-tertiary);
50
+ border-radius: 6px;
51
+ border-left: 3px solid var(--accent);
52
+ color: var(--text-secondary);
53
+ }
54
+
55
+ .projects-welcome hr {
56
+ border: none;
57
+ border-top: 1px solid var(--border);
58
+ margin: 24px 0;
59
+ }
60
+
61
+ /* Status Summary */
62
+ .status-summary {
63
+ background: var(--bg-secondary);
64
+ border: 1px solid var(--border);
65
+ border-radius: 6px;
66
+ padding: 12px 16px;
67
+ }
68
+
69
+ .status-summary-header {
70
+ display: flex;
71
+ justify-content: space-between;
72
+ align-items: center;
73
+ margin-bottom: 8px;
74
+ }
75
+
76
+ .status-summary-header span {
77
+ font-size: 11px;
78
+ text-transform: uppercase;
79
+ letter-spacing: 0.5px;
80
+ color: var(--text-muted);
81
+ }
82
+
83
+ .status-summary-header button {
84
+ padding: 4px 8px;
85
+ border-radius: 4px;
86
+ border: 1px solid var(--border);
87
+ background: var(--bg-tertiary);
88
+ color: var(--text-secondary);
89
+ cursor: pointer;
90
+ font-size: 14px;
91
+ }
92
+
93
+ .status-summary-header button:hover {
94
+ background: var(--tab-hover);
95
+ }
96
+
97
+ .status-summary .active-projects {
98
+ margin-bottom: 8px;
99
+ }
100
+
101
+ .status-summary .active-count {
102
+ font-size: 14px;
103
+ color: var(--text-primary);
104
+ }
105
+
106
+ .status-summary .active-list {
107
+ margin-top: 4px;
108
+ padding-left: 16px;
109
+ font-size: 13px;
110
+ color: var(--text-secondary);
111
+ }
112
+
113
+ .status-summary .active-list li {
114
+ margin: 2px 0;
115
+ }
116
+
117
+ .status-summary .completed {
118
+ font-size: 13px;
119
+ color: var(--text-muted);
120
+ }
121
+
122
+ /* Kanban Grid */
123
+ .kanban-grid {
124
+ width: 100%;
125
+ border-collapse: collapse;
126
+ font-size: 13px;
127
+ }
128
+
129
+ .kanban-grid th,
130
+ .kanban-grid td {
131
+ padding: 8px 6px;
132
+ text-align: center;
133
+ border-bottom: 1px solid var(--border);
134
+ }
135
+
136
+ .kanban-grid th {
137
+ background: var(--bg-secondary);
138
+ font-size: 10px;
139
+ text-transform: uppercase;
140
+ letter-spacing: 0.5px;
141
+ color: var(--text-muted);
142
+ position: sticky;
143
+ top: 0;
144
+ z-index: 1;
145
+ }
146
+
147
+ .kanban-grid th:first-child,
148
+ .kanban-grid td:first-child {
149
+ text-align: left;
150
+ padding-left: 12px;
151
+ width: 40%;
152
+ }
153
+
154
+ .kanban-grid th:not(:first-child),
155
+ .kanban-grid td:not(:first-child) {
156
+ width: 8%;
157
+ }
158
+
159
+ .kanban-grid tbody tr {
160
+ cursor: default;
161
+ transition: background 0.15s;
162
+ }
163
+
164
+ .kanban-grid tbody tr:hover {
165
+ background: var(--bg-secondary);
166
+ }
167
+
168
+ .kanban-grid tbody tr:focus {
169
+ outline: 2px solid var(--accent);
170
+ outline-offset: -2px;
171
+ }
172
+
173
+ .kanban-grid .project-cell {
174
+ display: flex;
175
+ align-items: center;
176
+ gap: 8px;
177
+ }
178
+
179
+ .kanban-grid .project-id {
180
+ font-family: monospace;
181
+ color: var(--text-muted);
182
+ }
183
+
184
+ .kanban-grid .project-title {
185
+ overflow: hidden;
186
+ text-overflow: ellipsis;
187
+ white-space: nowrap;
188
+ }
189
+
190
+ .kanban-grid .project-cell.clickable {
191
+ cursor: pointer;
192
+ }
193
+
194
+ .kanban-grid .project-cell.clickable:hover .project-title {
195
+ text-decoration: underline;
196
+ color: var(--accent);
197
+ }
198
+
199
+ .kanban-grid .tick-badge {
200
+ font-size: 10px;
201
+ padding: 1px 4px;
202
+ background: var(--bg-tertiary);
203
+ border-radius: 3px;
204
+ color: var(--text-muted);
205
+ }
206
+
207
+ /* Stage cell styling */
208
+ .stage-cell {
209
+ font-size: 12px;
210
+ position: relative;
211
+ }
212
+
213
+ .stage-cell .checkmark {
214
+ color: #22c55e;
215
+ font-weight: bold;
216
+ }
217
+
218
+ .stage-cell .current-indicator {
219
+ display: inline-block;
220
+ width: 12px;
221
+ height: 12px;
222
+ border: 2px solid #f97316;
223
+ border-radius: 50%;
224
+ }
225
+
226
+ .stage-cell .celebration {
227
+ font-size: 16px;
228
+ }
229
+
230
+ .stage-cell a {
231
+ color: var(--text-primary);
232
+ text-decoration: underline;
233
+ }
234
+
235
+ /* Arrow between columns */
236
+ .kanban-grid th:not(:first-child):not(:last-child)::after,
237
+ .kanban-grid td.stage-cell:not(:last-child)::after {
238
+ content: '→';
239
+ position: absolute;
240
+ right: -8px;
241
+ color: var(--text-muted);
242
+ font-size: 10px;
243
+ }
244
+
245
+ /* Projects info header */
246
+ .projects-info {
247
+ background: var(--bg-secondary);
248
+ border: 1px solid var(--border);
249
+ border-radius: 6px;
250
+ padding: 12px 16px;
251
+ margin-bottom: 12px;
252
+ }
253
+
254
+ .projects-info p {
255
+ color: var(--text-secondary);
256
+ font-size: 13px;
257
+ margin: 0 0 8px 0;
258
+ }
259
+
260
+ .projects-info p:last-child {
261
+ margin-bottom: 0;
262
+ }
263
+
264
+ .projects-info strong {
265
+ color: var(--text-primary);
266
+ }
267
+
268
+ .projects-info a {
269
+ color: var(--accent);
270
+ text-decoration: none;
271
+ }
272
+
273
+ .projects-info a:hover {
274
+ text-decoration: underline;
275
+ }
276
+
277
+ /* Project details row */
278
+ .project-details-row td {
279
+ padding: 0 !important;
280
+ border-bottom: 1px solid var(--border);
281
+ }
282
+
283
+ .project-details-content {
284
+ padding: 16px;
285
+ background: var(--bg-secondary);
286
+ }
287
+
288
+ .project-details-content h3 {
289
+ font-size: 16px;
290
+ margin-bottom: 8px;
291
+ color: var(--text-primary);
292
+ }
293
+
294
+ .project-details-content p {
295
+ margin-bottom: 8px;
296
+ color: var(--text-secondary);
297
+ font-size: 13px;
298
+ }
299
+
300
+ .project-details-content .notes {
301
+ font-style: italic;
302
+ color: var(--text-muted);
303
+ }
304
+
305
+ .project-details-links {
306
+ display: flex;
307
+ gap: 8px;
308
+ margin-top: 12px;
309
+ }
310
+
311
+ .project-details-links a {
312
+ padding: 4px 10px;
313
+ background: var(--bg-tertiary);
314
+ border: 1px solid var(--border);
315
+ border-radius: 4px;
316
+ color: var(--text-secondary);
317
+ text-decoration: none;
318
+ font-size: 12px;
319
+ }
320
+
321
+ .project-details-links a:hover {
322
+ background: var(--tab-hover);
323
+ color: var(--text-primary);
324
+ }
325
+
326
+ .project-dependencies {
327
+ margin-top: 8px;
328
+ font-size: 12px;
329
+ color: var(--text-muted);
330
+ }
331
+
332
+ .project-ticks {
333
+ margin-top: 8px;
334
+ font-size: 12px;
335
+ display: flex;
336
+ align-items: center;
337
+ gap: 6px;
338
+ flex-wrap: wrap;
339
+ }
340
+
341
+ .project-ticks .tick-badge {
342
+ background: #238636;
343
+ color: white;
344
+ padding: 2px 6px;
345
+ border-radius: 3px;
346
+ font-size: 11px;
347
+ }
348
+
349
+ /* Collapsible project sections */
350
+ .project-section {
351
+ border: 1px solid var(--border);
352
+ border-radius: 6px;
353
+ background: var(--bg-secondary);
354
+ margin-bottom: 12px;
355
+ }
356
+
357
+ .project-section summary {
358
+ padding: 12px 16px;
359
+ cursor: pointer;
360
+ font-size: 14px;
361
+ font-weight: 500;
362
+ color: var(--text-primary);
363
+ display: flex;
364
+ align-items: center;
365
+ gap: 8px;
366
+ user-select: none;
367
+ }
368
+
369
+ .project-section summary:hover {
370
+ background: var(--bg-tertiary);
371
+ }
372
+
373
+ .project-section summary::marker {
374
+ content: '';
375
+ }
376
+
377
+ .project-section summary::before {
378
+ content: '▶';
379
+ font-size: 10px;
380
+ transition: transform 0.2s;
381
+ color: var(--text-muted);
382
+ }
383
+
384
+ .project-section[open] summary::before {
385
+ transform: rotate(90deg);
386
+ }
387
+
388
+ .project-section .section-count {
389
+ font-size: 12px;
390
+ color: var(--text-muted);
391
+ font-weight: normal;
392
+ }
393
+
394
+ .project-section .kanban-grid {
395
+ margin: 0;
396
+ border-radius: 0 0 6px 6px;
397
+ }
398
+
399
+ /* Terminal projects section */
400
+ .terminal-projects {
401
+ margin-top: 16px;
402
+ border: 1px solid var(--border);
403
+ border-radius: 6px;
404
+ background: var(--bg-secondary);
405
+ }
406
+
407
+ .terminal-projects summary {
408
+ padding: 12px 16px;
409
+ cursor: pointer;
410
+ font-size: 13px;
411
+ color: var(--text-muted);
412
+ display: flex;
413
+ align-items: center;
414
+ gap: 8px;
415
+ }
416
+
417
+ .terminal-projects summary:hover {
418
+ background: var(--bg-tertiary);
419
+ }
420
+
421
+ .terminal-projects summary::marker {
422
+ content: '';
423
+ }
424
+
425
+ .terminal-projects summary::before {
426
+ content: '▶';
427
+ font-size: 10px;
428
+ transition: transform 0.2s;
429
+ color: var(--text-muted);
430
+ }
431
+
432
+ .terminal-projects[open] summary::before {
433
+ transform: rotate(90deg);
434
+ }
435
+
436
+ .terminal-projects ul {
437
+ list-style: none;
438
+ padding: 0 16px 16px;
439
+ }
440
+
441
+ .terminal-projects li {
442
+ padding: 8px 0;
443
+ border-bottom: 1px solid var(--border);
444
+ display: flex;
445
+ gap: 8px;
446
+ align-items: center;
447
+ }
448
+
449
+ .terminal-projects li:last-child {
450
+ border-bottom: none;
451
+ }
452
+
453
+ .terminal-projects .project-abandoned {
454
+ color: var(--project-abandoned);
455
+ text-decoration: line-through;
456
+ }
457
+
458
+ .terminal-projects .project-on-hold {
459
+ color: var(--project-on-hold);
460
+ font-style: italic;
461
+ }
462
+
463
+ /* Error banner */
464
+ .projects-error {
465
+ padding: 16px;
466
+ background: rgba(239, 68, 68, 0.1);
467
+ border: 1px solid var(--status-error);
468
+ border-radius: 6px;
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 12px;
472
+ }
473
+
474
+ .projects-error-message {
475
+ flex: 1;
476
+ color: var(--text-secondary);
477
+ }
478
+
479
+ .projects-error button {
480
+ padding: 6px 12px;
481
+ background: var(--bg-tertiary);
482
+ border: 1px solid var(--border);
483
+ border-radius: 4px;
484
+ color: var(--text-secondary);
485
+ cursor: pointer;
486
+ }
487
+
488
+ .projects-error button:hover {
489
+ background: var(--tab-hover);
490
+ }
491
+
492
+ /* Stage link styling */
493
+ .stage-link {
494
+ text-decoration: none;
495
+ color: inherit;
496
+ cursor: pointer;
497
+ }
498
+
499
+ .stage-link:hover .stage-indicator {
500
+ transform: scale(1.2);
501
+ }
@@ -0,0 +1,23 @@
1
+ /* Status Bar */
2
+
3
+ .status-bar {
4
+ padding: 8px 16px;
5
+ background: var(--bg-secondary);
6
+ border-top: 1px solid var(--border);
7
+ font-size: 12px;
8
+ color: var(--text-muted);
9
+ display: flex;
10
+ gap: 16px;
11
+ }
12
+
13
+ .status-item {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 6px;
17
+ }
18
+
19
+ .status-item .dot {
20
+ width: 6px;
21
+ height: 6px;
22
+ border-radius: 50%;
23
+ }