@skillcdn/console 0.1.8 → 0.1.10

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.
Files changed (147) hide show
  1. package/README.md +5 -5
  2. package/dist/api.d.ts +5 -5
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +4 -4
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts.map +1 -1
  7. package/dist/cli/cli.js +255 -10
  8. package/dist/cli/cli.js.map +1 -1
  9. package/dist/cli/format.d.ts +9 -1
  10. package/dist/cli/format.d.ts.map +1 -1
  11. package/dist/cli/format.js +80 -0
  12. package/dist/cli/format.js.map +1 -1
  13. package/dist/cli/help.d.ts.map +1 -1
  14. package/dist/cli/help.js +62 -7
  15. package/dist/cli/help.js.map +1 -1
  16. package/dist/client.d.ts +31 -4
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +19 -3
  19. package/dist/client.js.map +1 -1
  20. package/dist/components/board.d.ts +27 -1
  21. package/dist/components/board.d.ts.map +1 -1
  22. package/dist/components/board.js +75 -7
  23. package/dist/components/board.js.map +1 -1
  24. package/dist/components/calendar.d.ts +34 -0
  25. package/dist/components/calendar.d.ts.map +1 -0
  26. package/dist/components/calendar.js +96 -0
  27. package/dist/components/calendar.js.map +1 -0
  28. package/dist/components/categories.d.ts +13 -0
  29. package/dist/components/categories.d.ts.map +1 -0
  30. package/dist/components/categories.js +52 -0
  31. package/dist/components/categories.js.map +1 -0
  32. package/dist/components/decision-list.d.ts +10 -0
  33. package/dist/components/decision-list.d.ts.map +1 -1
  34. package/dist/components/decision-list.js +14 -1
  35. package/dist/components/decision-list.js.map +1 -1
  36. package/dist/components/event-feed.d.ts.map +1 -1
  37. package/dist/components/event-feed.js +12 -0
  38. package/dist/components/event-feed.js.map +1 -1
  39. package/dist/components/goals.d.ts +35 -0
  40. package/dist/components/goals.d.ts.map +1 -0
  41. package/dist/components/goals.js +45 -0
  42. package/dist/components/goals.js.map +1 -0
  43. package/dist/components/task-form.d.ts +5 -1
  44. package/dist/components/task-form.d.ts.map +1 -1
  45. package/dist/components/task-form.js +13 -1
  46. package/dist/components/task-form.js.map +1 -1
  47. package/dist/components/task-list.d.ts +16 -0
  48. package/dist/components/task-list.d.ts.map +1 -0
  49. package/dist/components/task-list.js +14 -0
  50. package/dist/components/task-list.js.map +1 -0
  51. package/dist/components/task-view.d.ts +9 -1
  52. package/dist/components/task-view.d.ts.map +1 -1
  53. package/dist/components/task-view.js +10 -4
  54. package/dist/components/task-view.js.map +1 -1
  55. package/dist/components/ui.d.ts +30 -1
  56. package/dist/components/ui.d.ts.map +1 -1
  57. package/dist/components/ui.js +60 -0
  58. package/dist/components/ui.js.map +1 -1
  59. package/dist/components/work.d.ts +10 -0
  60. package/dist/components/work.d.ts.map +1 -0
  61. package/dist/components/work.js +29 -0
  62. package/dist/components/work.js.map +1 -0
  63. package/dist/console.css +511 -0
  64. package/dist/console.d.ts +8 -0
  65. package/dist/console.d.ts.map +1 -1
  66. package/dist/console.js +124 -8
  67. package/dist/console.js.map +1 -1
  68. package/dist/data.d.ts +14 -1
  69. package/dist/data.d.ts.map +1 -1
  70. package/dist/data.js +36 -2
  71. package/dist/data.js.map +1 -1
  72. package/dist/dates.d.ts +39 -0
  73. package/dist/dates.d.ts.map +1 -0
  74. package/dist/dates.js +120 -0
  75. package/dist/dates.js.map +1 -0
  76. package/dist/i18n/en.d.ts +162 -1
  77. package/dist/i18n/en.d.ts.map +1 -1
  78. package/dist/i18n/en.js +174 -1
  79. package/dist/i18n/en.js.map +1 -1
  80. package/dist/i18n/ko.d.ts.map +1 -1
  81. package/dist/i18n/ko.js +169 -1
  82. package/dist/i18n/ko.js.map +1 -1
  83. package/dist/index.d.ts +10 -4
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -4
  86. package/dist/index.js.map +1 -1
  87. package/dist/limits.d.ts +5 -0
  88. package/dist/limits.d.ts.map +1 -1
  89. package/dist/limits.js +5 -0
  90. package/dist/limits.js.map +1 -1
  91. package/dist/router.d.ts +50 -1
  92. package/dist/router.d.ts.map +1 -1
  93. package/dist/router.js +74 -1
  94. package/dist/router.js.map +1 -1
  95. package/dist/routes.d.ts +7 -1
  96. package/dist/routes.d.ts.map +1 -1
  97. package/dist/routes.js +9 -0
  98. package/dist/routes.js.map +1 -1
  99. package/dist/schemas.d.ts +366 -0
  100. package/dist/schemas.d.ts.map +1 -1
  101. package/dist/schemas.js +112 -3
  102. package/dist/schemas.js.map +1 -1
  103. package/dist/vocabulary.d.ts +15 -1
  104. package/dist/vocabulary.d.ts.map +1 -1
  105. package/dist/vocabulary.js +26 -0
  106. package/dist/vocabulary.js.map +1 -1
  107. package/docs/specs/cli.md +11 -4
  108. package/docs/specs/rest.md +33 -8
  109. package/package.json +1 -1
  110. package/skills/building-a-console/SKILL.md +4 -4
  111. package/skills/building-a-console/references/the-default-console.md +1 -1
  112. package/skills/deploying-a-console/SKILL.md +11 -10
  113. package/skills/deploying-a-console/assets/deployer-policy.json +13 -12
  114. package/skills/deploying-a-console/assets/secrets.example.json +4 -4
  115. package/skills/deploying-a-console/references/access.md +10 -9
  116. package/skills/deploying-a-console/references/resources.md +107 -50
  117. package/skills/deploying-a-console/references/sizing.md +1 -1
  118. package/skills/deploying-a-console/scripts/store-secrets.mjs +1 -15
  119. package/skills/working-the-board/SKILL.md +7 -6
  120. package/src/api.ts +30 -0
  121. package/src/cli/cli.ts +311 -10
  122. package/src/cli/format.ts +88 -0
  123. package/src/cli/help.ts +69 -7
  124. package/src/client.ts +70 -2
  125. package/src/components/board.tsx +205 -12
  126. package/src/components/calendar.tsx +255 -0
  127. package/src/components/categories.tsx +209 -0
  128. package/src/components/decision-list.tsx +62 -5
  129. package/src/components/event-feed.tsx +12 -0
  130. package/src/components/goals.tsx +264 -0
  131. package/src/components/task-form.tsx +78 -1
  132. package/src/components/task-list.tsx +61 -0
  133. package/src/components/task-view.tsx +74 -3
  134. package/src/components/ui.tsx +116 -1
  135. package/src/components/work.tsx +83 -0
  136. package/src/console.tsx +337 -4
  137. package/src/data.ts +63 -8
  138. package/src/dates.ts +143 -0
  139. package/src/i18n/en.ts +184 -1
  140. package/src/i18n/ko.ts +175 -1
  141. package/src/index.ts +58 -1
  142. package/src/limits.ts +5 -0
  143. package/src/router.ts +119 -6
  144. package/src/routes.ts +10 -0
  145. package/src/schemas.ts +141 -1
  146. package/src/styles/console.css +511 -0
  147. package/src/vocabulary.ts +33 -0
@@ -2351,6 +2351,496 @@ table {
2351
2351
  }
2352
2352
  }
2353
2353
 
2354
+ /* The schedule, the roadmap and the categories (ADR-0019). */
2355
+
2356
+ /* The colours a category may be shown in: names, painted here and nowhere else. Each is a
2357
+ dark fill with a light line and text, so that a badge reads on the glass. */
2358
+ .sc-category-gray {
2359
+ --sc-category-line: #aeb7c4;
2360
+ --sc-category-fill: #2a3240;
2361
+ }
2362
+
2363
+ .sc-category-blue {
2364
+ --sc-category-line: #8fb6ff;
2365
+ --sc-category-fill: #1a2d52;
2366
+ }
2367
+
2368
+ .sc-category-green {
2369
+ --sc-category-line: #6fd3a0;
2370
+ --sc-category-fill: #143326;
2371
+ }
2372
+
2373
+ .sc-category-orange {
2374
+ --sc-category-line: #ffb77a;
2375
+ --sc-category-fill: #3a2414;
2376
+ }
2377
+
2378
+ .sc-category-pink {
2379
+ --sc-category-line: #ff9ac2;
2380
+ --sc-category-fill: #3b1a2b;
2381
+ }
2382
+
2383
+ .sc-category-purple {
2384
+ --sc-category-line: #c4a4ff;
2385
+ --sc-category-fill: #2b1f4a;
2386
+ }
2387
+
2388
+ .sc-category-teal {
2389
+ --sc-category-line: #7ad7d4;
2390
+ --sc-category-fill: #10343a;
2391
+ }
2392
+
2393
+ .sc-category-yellow {
2394
+ --sc-category-line: #f0d36a;
2395
+ --sc-category-fill: #3a3012;
2396
+ }
2397
+
2398
+ .sc-badge-category {
2399
+ border-color: color-mix(in srgb, var(--sc-category-line) 45%, transparent);
2400
+ background: var(--sc-category-fill);
2401
+ color: var(--sc-category-line);
2402
+ }
2403
+
2404
+ .sc-category-swatch,
2405
+ .sc-calendar-dot {
2406
+ display: inline-block;
2407
+ flex: none;
2408
+ width: 0.625rem;
2409
+ height: 0.625rem;
2410
+ border-radius: 50%;
2411
+ background: var(--sc-category-line, var(--sc-color-text-faint));
2412
+ }
2413
+
2414
+ /* The filters above the board: a quiet row of controls, as wide as its words. */
2415
+ .sc-filters {
2416
+ display: flex;
2417
+ flex-wrap: wrap;
2418
+ align-items: center;
2419
+ gap: var(--sc-space-2) var(--sc-space-3);
2420
+ margin-bottom: var(--sc-space-3);
2421
+ }
2422
+
2423
+ .sc-filters .sc-field-inline {
2424
+ flex: none;
2425
+ }
2426
+
2427
+ .sc-filters .sc-input {
2428
+ min-height: 2rem;
2429
+ padding-block: 0;
2430
+ font-size: var(--sc-text-sm);
2431
+ }
2432
+
2433
+ .sc-filters-count {
2434
+ font-size: var(--sc-text-sm);
2435
+ }
2436
+
2437
+ /* Tasks as rows, where the columns are not the point. */
2438
+ .sc-task-rows {
2439
+ display: grid;
2440
+ gap: var(--sc-space-2);
2441
+ margin: 0;
2442
+ padding: 0;
2443
+ list-style: none;
2444
+ }
2445
+
2446
+ .sc-task-row {
2447
+ display: flex;
2448
+ flex-wrap: wrap;
2449
+ align-items: center;
2450
+ gap: var(--sc-space-2) var(--sc-space-3);
2451
+ padding: var(--sc-space-2) var(--sc-space-3);
2452
+ border: var(--sc-border);
2453
+ border-radius: var(--sc-radius-md);
2454
+ background: var(--sc-color-sheet);
2455
+ font-size: var(--sc-text-sm);
2456
+ }
2457
+
2458
+ .sc-task-row-title {
2459
+ flex: 1 1 14rem;
2460
+ min-width: 0;
2461
+ color: var(--sc-color-text);
2462
+ font-weight: var(--sc-weight-medium);
2463
+ text-decoration: none;
2464
+ overflow-wrap: anywhere;
2465
+ }
2466
+
2467
+ .sc-task-row-title:hover {
2468
+ color: var(--sc-color-accent);
2469
+ }
2470
+
2471
+ .sc-task-row-project {
2472
+ color: var(--sc-color-text-faint);
2473
+ font-size: var(--sc-text-xs);
2474
+ }
2475
+
2476
+ .sc-task-row-meta {
2477
+ display: flex;
2478
+ flex-wrap: wrap;
2479
+ align-items: center;
2480
+ gap: var(--sc-space-1);
2481
+ margin-left: auto;
2482
+ }
2483
+
2484
+ /* The calendar: the month as a table, a cell a day, the tasks due in it one line each. */
2485
+ .sc-calendar {
2486
+ display: grid;
2487
+ gap: var(--sc-space-3);
2488
+ }
2489
+
2490
+ .sc-calendar-head {
2491
+ display: flex;
2492
+ flex-wrap: wrap;
2493
+ align-items: center;
2494
+ justify-content: space-between;
2495
+ gap: var(--sc-space-2);
2496
+ }
2497
+
2498
+ .sc-calendar-month {
2499
+ font-size: var(--sc-text-lg);
2500
+ }
2501
+
2502
+ .sc-calendar-nav {
2503
+ display: flex;
2504
+ gap: var(--sc-space-1);
2505
+ }
2506
+
2507
+ .sc-calendar-grid {
2508
+ width: 100%;
2509
+ border-collapse: separate;
2510
+ border-spacing: 0.25rem;
2511
+ table-layout: fixed;
2512
+ }
2513
+
2514
+ .sc-calendar-grid th {
2515
+ padding: var(--sc-space-1);
2516
+ color: var(--sc-color-text-faint);
2517
+ font-size: var(--sc-text-xs);
2518
+ font-weight: var(--sc-weight-medium);
2519
+ letter-spacing: 0.04em;
2520
+ text-align: left;
2521
+ text-transform: uppercase;
2522
+ }
2523
+
2524
+ .sc-calendar-cell {
2525
+ height: 7rem;
2526
+ padding: var(--sc-space-1) var(--sc-space-2);
2527
+ border: var(--sc-border);
2528
+ border-radius: var(--sc-radius-md);
2529
+ background: var(--sc-color-sheet);
2530
+ vertical-align: top;
2531
+ }
2532
+
2533
+ .sc-calendar-cell-outside {
2534
+ background: transparent;
2535
+ color: var(--sc-color-text-faint);
2536
+ }
2537
+
2538
+ .sc-calendar-cell-today {
2539
+ border-color: var(--sc-color-accent);
2540
+ box-shadow: inset 0 0 0 1px var(--sc-color-accent);
2541
+ }
2542
+
2543
+ .sc-calendar-day {
2544
+ display: block;
2545
+ margin-bottom: var(--sc-space-1);
2546
+ font-size: var(--sc-text-xs);
2547
+ font-weight: var(--sc-weight-medium);
2548
+ }
2549
+
2550
+ .sc-calendar-cell-today .sc-calendar-day {
2551
+ color: var(--sc-color-accent);
2552
+ }
2553
+
2554
+ .sc-calendar-task {
2555
+ display: flex;
2556
+ align-items: center;
2557
+ gap: var(--sc-space-1);
2558
+ margin-top: 2px;
2559
+ padding: 1px var(--sc-space-1);
2560
+ border-radius: var(--sc-radius-sm);
2561
+ color: var(--sc-color-text);
2562
+ font-size: var(--sc-text-xs);
2563
+ line-height: 1.4;
2564
+ text-decoration: none;
2565
+ }
2566
+
2567
+ .sc-calendar-task:hover {
2568
+ background: var(--sc-color-sheet-hover);
2569
+ color: var(--sc-color-text);
2570
+ }
2571
+
2572
+ .sc-calendar-task-title {
2573
+ overflow: hidden;
2574
+ text-overflow: ellipsis;
2575
+ white-space: nowrap;
2576
+ }
2577
+
2578
+ .sc-calendar-task-over {
2579
+ color: var(--sc-color-text-faint);
2580
+ text-decoration: line-through;
2581
+ }
2582
+
2583
+ .sc-calendar-task-late {
2584
+ color: var(--sc-color-danger);
2585
+ }
2586
+
2587
+ .sc-calendar-task-start {
2588
+ color: var(--sc-color-text-muted);
2589
+ }
2590
+
2591
+ .sc-calendar-task-start::before {
2592
+ content: "\203A";
2593
+ color: var(--sc-color-text-faint);
2594
+ }
2595
+
2596
+ .sc-calendar-below {
2597
+ display: grid;
2598
+ align-items: start;
2599
+ gap: var(--sc-space-5);
2600
+ margin-top: var(--sc-space-5);
2601
+ }
2602
+
2603
+ @media (min-width: 64rem) {
2604
+ .sc-calendar-below {
2605
+ grid-template-columns: 1fr 1fr;
2606
+ }
2607
+ }
2608
+
2609
+ /* The record of the decisions: a row each. */
2610
+ .sc-decision-log {
2611
+ display: grid;
2612
+ gap: var(--sc-space-2);
2613
+ margin: 0;
2614
+ padding: 0;
2615
+ list-style: none;
2616
+ }
2617
+
2618
+ .sc-decision-row {
2619
+ display: grid;
2620
+ grid-template-columns: minmax(0, 1fr);
2621
+ gap: var(--sc-space-1) var(--sc-space-3);
2622
+ padding: var(--sc-space-2) var(--sc-space-3);
2623
+ border: var(--sc-border);
2624
+ border-radius: var(--sc-radius-md);
2625
+ background: var(--sc-color-sheet);
2626
+ font-size: var(--sc-text-sm);
2627
+ }
2628
+
2629
+ @media (min-width: 40rem) {
2630
+ .sc-decision-row {
2631
+ grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) auto;
2632
+ align-items: center;
2633
+ }
2634
+ }
2635
+
2636
+ .sc-decision-row-question {
2637
+ overflow-wrap: anywhere;
2638
+ }
2639
+
2640
+ .sc-decision-row-question a {
2641
+ color: var(--sc-color-text);
2642
+ text-decoration: none;
2643
+ }
2644
+
2645
+ .sc-decision-row-question a:hover {
2646
+ color: var(--sc-color-accent);
2647
+ }
2648
+
2649
+ .sc-decision-row-answer {
2650
+ color: var(--sc-color-success);
2651
+ font-weight: var(--sc-weight-medium);
2652
+ overflow-wrap: anywhere;
2653
+ }
2654
+
2655
+ .sc-decision-row-meta {
2656
+ display: flex;
2657
+ flex-wrap: wrap;
2658
+ align-items: center;
2659
+ gap: var(--sc-space-2);
2660
+ color: var(--sc-color-text-muted);
2661
+ }
2662
+
2663
+ /* Who has what: a small table, the late numbers in the danger colour. */
2664
+ .sc-workload {
2665
+ width: 100%;
2666
+ max-width: var(--sc-width-prose);
2667
+ border-collapse: collapse;
2668
+ font-size: var(--sc-text-sm);
2669
+ }
2670
+
2671
+ .sc-workload th,
2672
+ .sc-workload td {
2673
+ padding: var(--sc-space-2) var(--sc-space-3);
2674
+ border-bottom: var(--sc-border);
2675
+ text-align: left;
2676
+ }
2677
+
2678
+ .sc-workload thead th {
2679
+ color: var(--sc-color-text-faint);
2680
+ font-size: var(--sc-text-xs);
2681
+ font-weight: var(--sc-weight-medium);
2682
+ letter-spacing: 0.04em;
2683
+ text-transform: uppercase;
2684
+ }
2685
+
2686
+ .sc-workload tbody th {
2687
+ font-weight: var(--sc-weight-normal);
2688
+ }
2689
+
2690
+ .sc-workload tbody th a {
2691
+ color: var(--sc-color-text);
2692
+ text-decoration: none;
2693
+ }
2694
+
2695
+ .sc-workload tbody th a:hover {
2696
+ color: var(--sc-color-accent);
2697
+ }
2698
+
2699
+ .sc-workload td {
2700
+ font-variant-numeric: tabular-nums;
2701
+ }
2702
+
2703
+ .sc-workload-soon {
2704
+ color: var(--sc-color-warning);
2705
+ }
2706
+
2707
+ .sc-workload-late {
2708
+ color: var(--sc-color-danger);
2709
+ font-weight: var(--sc-weight-bold);
2710
+ }
2711
+
2712
+ /* The roadmap: a goal a pane, with how far it is as a bar. */
2713
+ .sc-goals {
2714
+ display: grid;
2715
+ gap: var(--sc-space-3);
2716
+ max-width: var(--sc-width-prose);
2717
+ margin: 0;
2718
+ padding: 0;
2719
+ list-style: none;
2720
+ }
2721
+
2722
+ .sc-goal {
2723
+ display: grid;
2724
+ gap: var(--sc-space-3);
2725
+ padding: var(--sc-space-4) var(--sc-space-5);
2726
+ border: var(--sc-border);
2727
+ border-radius: var(--sc-radius-xl);
2728
+ background: var(--sc-glass-surface);
2729
+ backdrop-filter: var(--sc-glass-backdrop);
2730
+ }
2731
+
2732
+ .sc-goal-done {
2733
+ opacity: 0.75;
2734
+ }
2735
+
2736
+ .sc-goal-dropped {
2737
+ opacity: 0.55;
2738
+ }
2739
+
2740
+ .sc-goal-head {
2741
+ display: flex;
2742
+ flex-wrap: wrap;
2743
+ align-items: center;
2744
+ gap: var(--sc-space-2);
2745
+ }
2746
+
2747
+ .sc-goal-title {
2748
+ flex: 1 1 12rem;
2749
+ color: var(--sc-color-text);
2750
+ font-size: var(--sc-text-lg);
2751
+ font-weight: var(--sc-weight-medium);
2752
+ text-decoration: none;
2753
+ overflow-wrap: anywhere;
2754
+ }
2755
+
2756
+ .sc-goal-title:hover {
2757
+ color: var(--sc-color-accent);
2758
+ }
2759
+
2760
+ .sc-progress {
2761
+ display: grid;
2762
+ gap: var(--sc-space-1);
2763
+ }
2764
+
2765
+ .sc-progress-bar {
2766
+ display: flex;
2767
+ height: 0.5rem;
2768
+ overflow: hidden;
2769
+ border-radius: var(--sc-radius-full);
2770
+ background: var(--sc-color-bg-inset);
2771
+ }
2772
+
2773
+ .sc-progress-done {
2774
+ background: var(--sc-color-success);
2775
+ }
2776
+
2777
+ .sc-progress-working {
2778
+ background: var(--sc-color-accent);
2779
+ }
2780
+
2781
+ .sc-progress-words {
2782
+ color: var(--sc-color-text-muted);
2783
+ font-size: var(--sc-text-xs);
2784
+ }
2785
+
2786
+ .sc-goal-tasks {
2787
+ margin-top: var(--sc-space-3);
2788
+ }
2789
+
2790
+ .sc-goal-tasks-state {
2791
+ margin-bottom: var(--sc-space-2);
2792
+ color: var(--sc-color-text-faint);
2793
+ font-size: var(--sc-text-xs);
2794
+ font-weight: var(--sc-weight-medium);
2795
+ letter-spacing: 0.04em;
2796
+ text-transform: uppercase;
2797
+ }
2798
+
2799
+ /* The categories: a row each, with its name and its colour open to an administrator. */
2800
+ .sc-categories {
2801
+ display: grid;
2802
+ gap: var(--sc-space-4);
2803
+ max-width: var(--sc-width-prose);
2804
+ }
2805
+
2806
+ .sc-category-list {
2807
+ display: grid;
2808
+ gap: var(--sc-space-2);
2809
+ margin: 0;
2810
+ padding: 0;
2811
+ list-style: none;
2812
+ }
2813
+
2814
+ .sc-category-row {
2815
+ display: flex;
2816
+ flex-wrap: wrap;
2817
+ align-items: center;
2818
+ gap: var(--sc-space-2) var(--sc-space-3);
2819
+ padding: var(--sc-space-2) var(--sc-space-3);
2820
+ border: var(--sc-border);
2821
+ border-radius: var(--sc-radius-md);
2822
+ background: var(--sc-color-sheet);
2823
+ }
2824
+
2825
+ .sc-category-form {
2826
+ display: flex;
2827
+ flex: 1;
2828
+ flex-wrap: wrap;
2829
+ align-items: center;
2830
+ gap: var(--sc-space-2) var(--sc-space-3);
2831
+ }
2832
+
2833
+ .sc-category-form .sc-field-inline {
2834
+ flex: 1 1 10rem;
2835
+ }
2836
+
2837
+ /* What is on a person's plate. */
2838
+ .sc-work {
2839
+ display: grid;
2840
+ gap: var(--sc-space-6);
2841
+ max-width: var(--sc-width-prose);
2842
+ }
2843
+
2354
2844
  /* Small screens. */
2355
2845
 
2356
2846
  @media (max-width: 40rem) {
@@ -2410,6 +2900,27 @@ table {
2410
2900
  grid-auto-columns: min(var(--sc-column-width), 85vw);
2411
2901
  }
2412
2902
 
2903
+ /* A phone's calendar has room for a dot per task and no more; the lists below say the rest. */
2904
+ .sc-calendar-grid {
2905
+ border-spacing: 2px;
2906
+ }
2907
+
2908
+ .sc-calendar-cell {
2909
+ height: 3.25rem;
2910
+ padding: 2px var(--sc-space-1);
2911
+ }
2912
+
2913
+ .sc-calendar-task {
2914
+ display: inline-flex;
2915
+ margin: 1px 2px 0 0;
2916
+ padding: 0;
2917
+ }
2918
+
2919
+ .sc-calendar-task-title,
2920
+ .sc-calendar-task-start {
2921
+ display: none;
2922
+ }
2923
+
2413
2924
  .sc-feed-item {
2414
2925
  grid-template-columns: 1fr;
2415
2926
  gap: var(--sc-space-1);
package/src/vocabulary.ts CHANGED
@@ -14,11 +14,39 @@ export const TASK_STATES = [
14
14
 
15
15
  export type TaskState = (typeof TASK_STATES)[number];
16
16
 
17
+ /** The states a task is still open in: not done, not dropped. */
18
+ export const OPEN_TASK_STATES: readonly TaskState[] = ["idea", "ready", "in_progress", "in_review"];
19
+
17
20
  /** How much a task matters next to the others, in rising order. */
18
21
  export const TASK_PRIORITIES = ["low", "normal", "high", "urgent"] as const;
19
22
 
20
23
  export type TaskPriority = (typeof TASK_PRIORITIES)[number];
21
24
 
25
+ /**
26
+ * The states of a goal on the roadmap (ADR-0019): planned for later, being worked towards,
27
+ * reached, or let go. A person says which; the tasks under it say how far it is.
28
+ */
29
+ export const GOAL_STATES = ["planned", "active", "done", "dropped"] as const;
30
+
31
+ export type GoalState = (typeof GOAL_STATES)[number];
32
+
33
+ /**
34
+ * The colours a category may be shown in: names, so that a custom console paints them in its
35
+ * own tokens and no value an administrator typed reaches a stylesheet.
36
+ */
37
+ export const CATEGORY_COLORS = [
38
+ "gray",
39
+ "blue",
40
+ "green",
41
+ "orange",
42
+ "pink",
43
+ "purple",
44
+ "teal",
45
+ "yellow",
46
+ ] as const;
47
+
48
+ export type CategoryColor = (typeof CATEGORY_COLORS)[number];
49
+
22
50
  /** The identity providers people may sign in through: the git host, and Google (Workspace). */
23
51
  export const PROVIDER_KEYS = ["gh", "google"] as const;
24
52
 
@@ -85,11 +113,16 @@ export type SkillsStatus = (typeof SKILLS_STATUSES)[number];
85
113
  export const EVENT_KINDS = [
86
114
  "person.joined",
87
115
  "person.role_changed",
116
+ "category.created",
117
+ "category.updated",
118
+ "category.removed",
88
119
  "project.created",
89
120
  "project.updated",
90
121
  "project.member_added",
91
122
  "project.member_changed",
92
123
  "project.member_removed",
124
+ "goal.created",
125
+ "goal.updated",
93
126
  "task.created",
94
127
  "task.updated",
95
128
  "task.moved",