@ikenga/pkg-tasks 0.4.0 → 0.4.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/dist/app.js +14 -23
- package/dist/features/tasks/done-view.js +6 -6
- package/dist/features/tasks/sweeper-view.js +7 -7
- package/dist/features/tasks/task-detail-pane.js +10 -10
- package/dist/features/tasks/task-row.js +6 -6
- package/dist/features/tasks/tasks-view.js +5 -5
- package/dist/index.html +9 -1
- package/dist/lib/app-kit-css.js +3 -0
- package/dist/lib/tasks-css.js +4 -5
- package/dist/lib/tokens-css.js +3 -5
- package/dist/tasks.css +40 -313
- package/package.json +6 -3
package/dist/tasks.css
CHANGED
|
@@ -1,43 +1,15 @@
|
|
|
1
|
-
/* Tasks screen —
|
|
2
|
-
*
|
|
1
|
+
/* Tasks screen — domain RESIDUE only (P3 inc-3).
|
|
2
|
+
* The kit primitives — .frame*, .ip-head / .ip-topline / .ip-title / .ip-body /
|
|
3
|
+
* .ip-desc / .ip-progress* / .ip-action-bar*, .dense-row*, .tk-badge,
|
|
4
|
+
* .tk-execmode — now come from the vendored @ikenga/tokens app-kit-css (injected
|
|
5
|
+
* before this file by app.js, in cascade order tokens -> app-kit -> this).
|
|
6
|
+
* What remains here is the Tasks-specific vocabulary the kit does not own:
|
|
7
|
+
* the filter bar, master/detail split shell, group dividers, the inspector
|
|
8
|
+
* field-grid / meta-row / timeline / source + evidence chips, the agenda +
|
|
9
|
+
* triage layouts, the (deferred) feedback states, and the local button.
|
|
3
10
|
*/
|
|
4
11
|
|
|
5
|
-
/* === Frame
|
|
6
|
-
.tk-frame {
|
|
7
|
-
/* No card chrome inside the shell — the pkg pane IS the container, so the
|
|
8
|
-
* content fills it flush (mirrors the design's `#tk-host > .frame` reset).
|
|
9
|
-
* No border / radius / shadow / surrounding padding. */
|
|
10
|
-
background: var(--bg-surface);
|
|
11
|
-
overflow: hidden;
|
|
12
|
-
display: flex;
|
|
13
|
-
flex-direction: column;
|
|
14
|
-
min-height: 0;
|
|
15
|
-
}
|
|
16
|
-
.tk-frame-head {
|
|
17
|
-
display: flex;
|
|
18
|
-
align-items: center;
|
|
19
|
-
justify-content: space-between;
|
|
20
|
-
gap: var(--space-4);
|
|
21
|
-
/* Slim single-row action bar (R-header): the sidebar carries domain + view
|
|
22
|
-
* nav, so this bar holds only the active-view label + the New task action. */
|
|
23
|
-
padding: var(--space-2) var(--space-5);
|
|
24
|
-
border-bottom: 1px solid var(--border-soft);
|
|
25
|
-
background: linear-gradient(180deg, var(--tint-bg-active, var(--bg-surface)) 0%, var(--bg-surface) 100%);
|
|
26
|
-
}
|
|
27
|
-
.tk-frame-title-wrap { display: flex; align-items: center; gap: var(--space-2); }
|
|
28
|
-
.tk-frame-title-mark { width: 15px; height: 15px; color: var(--tint-fg-active, var(--primary)); }
|
|
29
|
-
.tk-frame-title {
|
|
30
|
-
font-family: var(--font-display);
|
|
31
|
-
font-weight: 500;
|
|
32
|
-
font-size: var(--text-body);
|
|
33
|
-
margin: 0;
|
|
34
|
-
color: var(--fg);
|
|
35
|
-
}
|
|
36
|
-
.tk-frame-sub {
|
|
37
|
-
margin-top: 2px;
|
|
38
|
-
font-size: var(--text-caption);
|
|
39
|
-
color: var(--fg-muted);
|
|
40
|
-
}
|
|
12
|
+
/* === Frame (residue: the auto-closed count chip) ============ */
|
|
41
13
|
.tk-frame-count {
|
|
42
14
|
font-family: var(--font-mono);
|
|
43
15
|
font-size: 12px;
|
|
@@ -207,75 +179,11 @@
|
|
|
207
179
|
gap: 6px;
|
|
208
180
|
}
|
|
209
181
|
|
|
210
|
-
/* === Task row
|
|
211
|
-
.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
padding: var(--space-3) var(--space-3) var(--space-3) var(--space-4);
|
|
216
|
-
border-bottom: 1px solid var(--border-soft);
|
|
217
|
-
cursor: pointer;
|
|
218
|
-
position: relative;
|
|
219
|
-
background: transparent;
|
|
220
|
-
text-align: left;
|
|
221
|
-
width: 100%;
|
|
222
|
-
border-left: 0;
|
|
223
|
-
border-right: 0;
|
|
224
|
-
border-top: 0;
|
|
225
|
-
font: inherit;
|
|
226
|
-
color: inherit;
|
|
227
|
-
transition: background var(--motion-fast) var(--ease-calm);
|
|
228
|
-
}
|
|
229
|
-
.tk-row:hover { background: var(--bg-raised); }
|
|
230
|
-
.tk-row.is-on { background: var(--bg-raised); }
|
|
231
|
-
.tk-row.is-on::before {
|
|
232
|
-
content: '';
|
|
233
|
-
position: absolute;
|
|
234
|
-
left: 0;
|
|
235
|
-
top: 8px;
|
|
236
|
-
bottom: 8px;
|
|
237
|
-
width: 2px;
|
|
238
|
-
border-radius: 2px;
|
|
239
|
-
background: var(--tint-fg-active, var(--primary));
|
|
240
|
-
}
|
|
241
|
-
.tk-row .pri-dot {
|
|
242
|
-
width: 8px;
|
|
243
|
-
height: 8px;
|
|
244
|
-
border-radius: 50%;
|
|
245
|
-
margin-top: 5px;
|
|
246
|
-
background: var(--fg-faint);
|
|
247
|
-
flex-shrink: 0;
|
|
248
|
-
}
|
|
249
|
-
.tk-row .pri-dot.is-critical {
|
|
250
|
-
background: var(--danger);
|
|
251
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger) 20%, transparent);
|
|
252
|
-
}
|
|
253
|
-
.tk-row .pri-dot.is-high { background: var(--achievement); }
|
|
254
|
-
.tk-row .pri-dot.is-medium { background: var(--systemic); }
|
|
255
|
-
.tk-row .pri-dot.is-low { background: var(--fg-faint); }
|
|
256
|
-
.tk-row .body {
|
|
257
|
-
min-width: 0;
|
|
258
|
-
display: flex;
|
|
259
|
-
flex-direction: column;
|
|
260
|
-
gap: 4px;
|
|
261
|
-
}
|
|
262
|
-
.tk-row .title {
|
|
263
|
-
font-size: var(--text-body-sm);
|
|
264
|
-
color: var(--fg);
|
|
265
|
-
font-weight: 500;
|
|
266
|
-
line-height: 1.35;
|
|
267
|
-
overflow: hidden;
|
|
268
|
-
text-overflow: ellipsis;
|
|
269
|
-
display: -webkit-box;
|
|
270
|
-
-webkit-line-clamp: 2;
|
|
271
|
-
-webkit-box-orient: vertical;
|
|
272
|
-
}
|
|
273
|
-
.tk-row.is-completed .title {
|
|
274
|
-
color: var(--fg-muted);
|
|
275
|
-
text-decoration: line-through;
|
|
276
|
-
text-decoration-thickness: 1px;
|
|
277
|
-
}
|
|
278
|
-
.tk-row .meta {
|
|
182
|
+
/* === Task row (residue: the meta strip + category micro-label;
|
|
183
|
+
.dense-row / .dense-row-dot / -body / -title / -right / -due now kit-owned.
|
|
184
|
+
The kit's .dense-row-meta tightens the chip gap to 4px; Tasks keeps 6px,
|
|
185
|
+
so .meta stays a domain child here rather than adopting .dense-row-meta.) */
|
|
186
|
+
.dense-row--task .meta {
|
|
279
187
|
display: flex;
|
|
280
188
|
flex-wrap: wrap;
|
|
281
189
|
align-items: center;
|
|
@@ -285,7 +193,7 @@
|
|
|
285
193
|
color: var(--fg-faint);
|
|
286
194
|
letter-spacing: 0.04em;
|
|
287
195
|
}
|
|
288
|
-
.
|
|
196
|
+
.dense-row--task .meta .cat {
|
|
289
197
|
background: var(--bg-base);
|
|
290
198
|
border: 1px solid var(--border-soft);
|
|
291
199
|
color: var(--fg-muted);
|
|
@@ -293,62 +201,9 @@
|
|
|
293
201
|
border-radius: var(--radius-xs);
|
|
294
202
|
text-transform: lowercase;
|
|
295
203
|
}
|
|
296
|
-
.tk-row .right {
|
|
297
|
-
display: flex;
|
|
298
|
-
flex-direction: column;
|
|
299
|
-
align-items: flex-end;
|
|
300
|
-
gap: 4px;
|
|
301
|
-
flex-shrink: 0;
|
|
302
|
-
}
|
|
303
|
-
.tk-row .due {
|
|
304
|
-
font-family: var(--font-mono);
|
|
305
|
-
font-size: 10px;
|
|
306
|
-
color: var(--fg-muted);
|
|
307
|
-
letter-spacing: 0.04em;
|
|
308
|
-
white-space: nowrap;
|
|
309
|
-
}
|
|
310
|
-
.tk-row .due.is-overdue { color: var(--danger); font-weight: 500; }
|
|
311
|
-
.tk-row .due.is-today { color: var(--achievement); }
|
|
312
204
|
|
|
313
|
-
/* === Status badge
|
|
314
|
-
|
|
315
|
-
display: inline-flex;
|
|
316
|
-
align-items: center;
|
|
317
|
-
gap: 4px;
|
|
318
|
-
font-family: var(--font-mono);
|
|
319
|
-
font-size: 9.5px;
|
|
320
|
-
letter-spacing: 0.08em;
|
|
321
|
-
text-transform: uppercase;
|
|
322
|
-
padding: 2px 6px;
|
|
323
|
-
border-radius: var(--radius-xs);
|
|
324
|
-
border: 1px solid var(--border-soft);
|
|
325
|
-
color: var(--fg-muted);
|
|
326
|
-
background: var(--bg-base);
|
|
327
|
-
white-space: nowrap;
|
|
328
|
-
}
|
|
329
|
-
.tk-badge.is-pending { color: var(--fg-muted); }
|
|
330
|
-
.tk-badge.is-in_progress {
|
|
331
|
-
color: var(--live);
|
|
332
|
-
background: var(--live-soft);
|
|
333
|
-
border-color: color-mix(in srgb, var(--live) 30%, var(--border-soft));
|
|
334
|
-
}
|
|
335
|
-
.tk-badge.is-blocked {
|
|
336
|
-
color: var(--danger);
|
|
337
|
-
background: color-mix(in srgb, var(--danger) 12%, transparent);
|
|
338
|
-
border-color: color-mix(in srgb, var(--danger) 30%, var(--border-soft));
|
|
339
|
-
}
|
|
340
|
-
.tk-badge.is-completed {
|
|
341
|
-
color: var(--live);
|
|
342
|
-
background: var(--live-soft);
|
|
343
|
-
border-color: color-mix(in srgb, var(--live) 30%, var(--border-soft));
|
|
344
|
-
}
|
|
345
|
-
.tk-badge.is-cancelled { color: var(--fg-faint); }
|
|
346
|
-
.tk-badge .dot {
|
|
347
|
-
width: 5px;
|
|
348
|
-
height: 5px;
|
|
349
|
-
border-radius: 50%;
|
|
350
|
-
background: currentColor;
|
|
351
|
-
}
|
|
205
|
+
/* === Status badge — kit-owned (.tk-badge + states live in app-kit-css,
|
|
206
|
+
11-badge-tag-chip; byte-identical, so removed here to avoid a duplicate). */
|
|
352
207
|
|
|
353
208
|
/* === Auto-close badge ======================================= */
|
|
354
209
|
.tk-autoclose {
|
|
@@ -410,64 +265,20 @@
|
|
|
410
265
|
background: var(--agent);
|
|
411
266
|
}
|
|
412
267
|
|
|
413
|
-
/* === Exec mode pill
|
|
414
|
-
|
|
415
|
-
font-family: var(--font-mono);
|
|
416
|
-
font-size: 9px;
|
|
417
|
-
letter-spacing: 0.06em;
|
|
418
|
-
text-transform: uppercase;
|
|
419
|
-
color: var(--fg-faint);
|
|
420
|
-
border: 1px dashed var(--border-soft);
|
|
421
|
-
padding: 1px 5px;
|
|
422
|
-
border-radius: var(--radius-xs);
|
|
423
|
-
background: transparent;
|
|
424
|
-
}
|
|
425
|
-
.tk-execmode.is-autonomous {
|
|
426
|
-
color: var(--agent);
|
|
427
|
-
border-color: color-mix(in srgb, var(--agent) 30%, var(--border-soft));
|
|
428
|
-
}
|
|
429
|
-
.tk-execmode.is-approval_required {
|
|
430
|
-
color: var(--achievement);
|
|
431
|
-
border-color: color-mix(in srgb, var(--achievement) 35%, var(--border-soft));
|
|
432
|
-
}
|
|
433
|
-
.tk-execmode.is-report {
|
|
434
|
-
color: var(--systemic);
|
|
435
|
-
border-color: color-mix(in srgb, var(--systemic) 30%, var(--border-soft));
|
|
436
|
-
}
|
|
268
|
+
/* === Exec mode pill — kit-owned (.tk-execmode + states live in app-kit-css,
|
|
269
|
+
34-ux-mode-action-surfaces; byte-identical, removed here to avoid a dup). */
|
|
437
270
|
|
|
438
|
-
/* === Detail panel
|
|
439
|
-
.
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
}
|
|
444
|
-
.tk-det-topline {
|
|
445
|
-
display: flex;
|
|
446
|
-
align-items: center;
|
|
447
|
-
justify-content: space-between;
|
|
448
|
-
gap: var(--space-3);
|
|
449
|
-
margin-bottom: 8px;
|
|
450
|
-
font-family: var(--font-mono);
|
|
451
|
-
font-size: 10.5px;
|
|
452
|
-
color: var(--fg-faint);
|
|
453
|
-
letter-spacing: 0.04em;
|
|
454
|
-
}
|
|
455
|
-
.tk-det-topline .id {
|
|
271
|
+
/* === Detail panel (residue: the id chip + meta-row; .ip-head / .ip-topline /
|
|
272
|
+
.ip-topline-actions / .ip-title now kit-owned via inspector-detail).
|
|
273
|
+
The kit's .ip-topline-id pads 2px 8px; Tasks keeps the shipped 2px 6px,
|
|
274
|
+
so the id chip stays a domain child re-scoped under the kit .ip-topline. */
|
|
275
|
+
.ip-topline .id {
|
|
456
276
|
background: var(--bg-base);
|
|
457
277
|
border: 1px solid var(--border-soft);
|
|
458
278
|
padding: 2px 6px;
|
|
459
279
|
border-radius: var(--radius-xs);
|
|
460
280
|
color: var(--fg);
|
|
461
281
|
}
|
|
462
|
-
.tk-det-actions { display: flex; gap: 4px; align-items: center; }
|
|
463
|
-
.tk-det-title {
|
|
464
|
-
font-family: var(--font-display);
|
|
465
|
-
font-weight: 500;
|
|
466
|
-
font-size: var(--text-h3);
|
|
467
|
-
margin: 0;
|
|
468
|
-
color: var(--fg);
|
|
469
|
-
line-height: 1.25;
|
|
470
|
-
}
|
|
471
282
|
.tk-det-meta-row {
|
|
472
283
|
display: flex;
|
|
473
284
|
flex-wrap: wrap;
|
|
@@ -493,13 +304,6 @@
|
|
|
493
304
|
}
|
|
494
305
|
.tk-det-meta-row .due-text { color: var(--fg-muted); }
|
|
495
306
|
.tk-det-meta-row .due-text.is-overdue { color: var(--danger); }
|
|
496
|
-
.tk-det-body {
|
|
497
|
-
padding: var(--space-5);
|
|
498
|
-
display: flex;
|
|
499
|
-
flex-direction: column;
|
|
500
|
-
gap: var(--space-5);
|
|
501
|
-
flex: 1;
|
|
502
|
-
}
|
|
503
307
|
.tk-det-grid {
|
|
504
308
|
display: grid;
|
|
505
309
|
grid-template-columns: 110px 1fr;
|
|
@@ -563,34 +367,8 @@
|
|
|
563
367
|
background: transparent;
|
|
564
368
|
}
|
|
565
369
|
|
|
566
|
-
.
|
|
567
|
-
|
|
568
|
-
color: var(--fg-muted);
|
|
569
|
-
line-height: 1.6;
|
|
570
|
-
background: var(--bg-surface);
|
|
571
|
-
border: 1px solid var(--border-soft);
|
|
572
|
-
border-radius: var(--radius-md);
|
|
573
|
-
padding: var(--space-3) var(--space-4);
|
|
574
|
-
white-space: pre-wrap;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
/* === Progress bar =========================================== */
|
|
578
|
-
.tk-progress {
|
|
579
|
-
flex: 1;
|
|
580
|
-
height: 6px;
|
|
581
|
-
background: var(--bg-sunken);
|
|
582
|
-
border-radius: 3px;
|
|
583
|
-
overflow: hidden;
|
|
584
|
-
border: 1px solid var(--border-soft);
|
|
585
|
-
min-width: 120px;
|
|
586
|
-
}
|
|
587
|
-
.tk-progress > span {
|
|
588
|
-
display: block;
|
|
589
|
-
height: 100%;
|
|
590
|
-
background: var(--live);
|
|
591
|
-
border-radius: 3px;
|
|
592
|
-
transition: width var(--motion-fast) var(--ease-calm);
|
|
593
|
-
}
|
|
370
|
+
/* === Description + progress bar — kit-owned (.ip-desc and .ip-progress /
|
|
371
|
+
.ip-progress-fill live in app-kit-css, inspector-detail). */
|
|
594
372
|
|
|
595
373
|
/* === Evidence card ========================================== */
|
|
596
374
|
.tk-evidence {
|
|
@@ -756,19 +534,11 @@
|
|
|
756
534
|
}
|
|
757
535
|
.tk-tl-item .actor.is-agent { color: var(--agent); }
|
|
758
536
|
|
|
759
|
-
/* === Action footer
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
background: var(--bg-sunken);
|
|
763
|
-
padding: var(--space-3) var(--space-5);
|
|
764
|
-
display: flex;
|
|
765
|
-
align-items: center;
|
|
766
|
-
gap: var(--space-2);
|
|
767
|
-
margin-top: auto;
|
|
768
|
-
}
|
|
769
|
-
.tk-action-bar .spacer { flex: 1; }
|
|
537
|
+
/* === Action footer — kit-owned (.ip-action-bar / .ip-action-bar-spacer live
|
|
538
|
+
in app-kit-css, inspector-detail). Only rendered for density != full,
|
|
539
|
+
which the shipped pane never uses. */
|
|
770
540
|
|
|
771
|
-
/* === Empty state in detail
|
|
541
|
+
/* === Empty state in detail (residue; feedback-state migration deferred) ==== */
|
|
772
542
|
.tk-empty {
|
|
773
543
|
flex: 1;
|
|
774
544
|
display: grid;
|
|
@@ -780,60 +550,17 @@
|
|
|
780
550
|
text-transform: uppercase;
|
|
781
551
|
}
|
|
782
552
|
|
|
783
|
-
/* === Density variants
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
.tk-detail-pane.is-side .tk-det-head { padding: var(--space-3); }
|
|
789
|
-
.tk-detail-pane.is-side .tk-det-title { font-size: 13.5px; line-height: 1.35; }
|
|
790
|
-
.tk-detail-pane.is-side .tk-det-body { padding: var(--space-3); gap: var(--space-3); }
|
|
791
|
-
.tk-detail-pane.is-side .tk-det-grid { display: none; }
|
|
792
|
-
.tk-detail-pane.is-side .tk-section-label { margin-bottom: 4px; }
|
|
553
|
+
/* === Density variants ($taskId standalone) + in-pane view switcher: REMOVED.
|
|
554
|
+
The density variants are dead (the shipped pane is always density="full");
|
|
555
|
+
the .ip-tabs/.ip-tab switcher was dropped pre-ship (views live in the
|
|
556
|
+
shell side-menu). The kit's .tabs/.tab part covers underline tabs if a
|
|
557
|
+
future view needs them. */
|
|
793
558
|
|
|
794
|
-
/*
|
|
795
|
-
.
|
|
796
|
-
|
|
797
|
-
align-items: center;
|
|
798
|
-
gap: 0;
|
|
799
|
-
padding: 0 var(--space-3);
|
|
800
|
-
height: var(--tab-h, 38px);
|
|
801
|
-
border-bottom: 1px solid var(--border-soft);
|
|
802
|
-
background: var(--bg-sunken);
|
|
803
|
-
}
|
|
804
|
-
.ip-tab {
|
|
805
|
-
height: var(--tab-h, 38px);
|
|
806
|
-
padding: 0 var(--space-3);
|
|
807
|
-
display: inline-flex;
|
|
808
|
-
align-items: center;
|
|
809
|
-
gap: 6px;
|
|
810
|
-
font-family: var(--font-body);
|
|
811
|
-
font-size: var(--text-body-sm);
|
|
812
|
-
color: var(--fg-faint);
|
|
813
|
-
border: 0;
|
|
814
|
-
background: transparent;
|
|
815
|
-
cursor: pointer;
|
|
816
|
-
border-bottom: 2px solid transparent;
|
|
817
|
-
margin-bottom: -1px;
|
|
818
|
-
}
|
|
819
|
-
.ip-tab svg { width: 13px; height: 13px; opacity: 0.8; }
|
|
820
|
-
.ip-tab:hover { color: var(--fg-muted); }
|
|
821
|
-
.ip-tab.is-on { color: var(--fg); border-bottom-color: var(--tint-fg-active, var(--primary)); }
|
|
822
|
-
.ip-tab.is-on svg { opacity: 1; color: var(--tint-fg-active, var(--primary)); }
|
|
823
|
-
.ip-tab:focus-visible,
|
|
559
|
+
/* Keyboard focus ring for the residue interactive elements. The kit's
|
|
560
|
+
.dense-row:focus-visible already covers task rows; the toggle + group head
|
|
561
|
+
are domain residue, so keep their ring here. */
|
|
824
562
|
.tk-toggle:focus-visible,
|
|
825
|
-
.tk-group-head:focus-visible
|
|
826
|
-
.tk-row:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
|
|
827
|
-
.ip-tab-badge {
|
|
828
|
-
font-family: var(--font-mono);
|
|
829
|
-
font-size: 9.5px;
|
|
830
|
-
line-height: 1;
|
|
831
|
-
color: var(--achievement);
|
|
832
|
-
background: var(--achievement-soft);
|
|
833
|
-
border: 1px solid color-mix(in srgb, var(--achievement) 30%, var(--border-soft));
|
|
834
|
-
border-radius: var(--radius-pill, 999px);
|
|
835
|
-
padding: 2px 5px;
|
|
836
|
-
}
|
|
563
|
+
.tk-group-head:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
|
|
837
564
|
|
|
838
565
|
/* === Agenda / Today (D-2) =================================== */
|
|
839
566
|
/* AgendaView root — rendered directly inside .tk-frame (which is overflow:hidden),
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikenga/pkg-tasks",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "Tasks — List, Agenda, Triage over the production tasks schema. Multi-file iframe pkg
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Tasks — List, Agenda, Triage over the production tasks schema. Multi-file iframe pkg; deterministic CSS vendoring build.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -18,7 +18,10 @@
|
|
|
18
18
|
"README.md"
|
|
19
19
|
],
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "
|
|
21
|
+
"build": "node scripts/build.mjs",
|
|
22
22
|
"typecheck": "tsc -p tsconfig.dev.json"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@ikenga/tokens": "^0.3.0"
|
|
23
26
|
}
|
|
24
27
|
}
|