@skillcdn/console 0.1.14 → 0.1.16
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 +5 -4
- package/SKILLCDN.md +2 -0
- package/dist/agent-name.d.ts +3 -0
- package/dist/agent-name.d.ts.map +1 -0
- package/dist/agent-name.js +9 -0
- package/dist/agent-name.js.map +1 -0
- package/dist/api.d.ts +6 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -4
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +225 -24
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +14 -4
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +59 -10
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +28 -12
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +5 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/client.d.ts +20 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -2
- package/dist/client.js.map +1 -1
- package/dist/components/calendar.d.ts +35 -2
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +80 -31
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/connect.d.ts +4 -1
- package/dist/components/connect.d.ts.map +1 -1
- package/dist/components/connect.js +7 -3
- package/dist/components/connect.js.map +1 -1
- package/dist/components/decision-list.d.ts.map +1 -1
- package/dist/components/decision-list.js +2 -2
- package/dist/components/decision-list.js.map +1 -1
- package/dist/components/documents.d.ts +5 -0
- package/dist/components/documents.d.ts.map +1 -1
- package/dist/components/documents.js +3 -2
- package/dist/components/documents.js.map +1 -1
- package/dist/components/event-feed.d.ts +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +10 -1
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/people.d.ts +24 -1
- package/dist/components/people.d.ts.map +1 -1
- package/dist/components/people.js +35 -3
- package/dist/components/people.js.map +1 -1
- package/dist/components/projects.d.ts +10 -1
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +8 -5
- package/dist/components/projects.js.map +1 -1
- package/dist/components/rules.d.ts +40 -0
- package/dist/components/rules.d.ts.map +1 -0
- package/dist/components/rules.js +46 -0
- package/dist/components/rules.js.map +1 -0
- package/dist/components/runs.d.ts +1 -1
- package/dist/components/runs.d.ts.map +1 -1
- package/dist/components/runs.js +2 -1
- package/dist/components/runs.js.map +1 -1
- package/dist/components/skills.d.ts.map +1 -1
- package/dist/components/skills.js +5 -1
- package/dist/components/skills.js.map +1 -1
- package/dist/components/task-form.d.ts.map +1 -1
- package/dist/components/task-form.js +1 -1
- package/dist/components/task-form.js.map +1 -1
- package/dist/components/tokens.d.ts.map +1 -1
- package/dist/components/tokens.js +2 -9
- package/dist/components/tokens.js.map +1 -1
- package/dist/components/ui.d.ts +7 -2
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/components/ui.js +13 -0
- package/dist/components/ui.js.map +1 -1
- package/dist/components/work.d.ts +5 -1
- package/dist/components/work.d.ts.map +1 -1
- package/dist/components/work.js +1 -1
- package/dist/components/work.js.map +1 -1
- package/dist/console.css +263 -17
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +197 -43
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +19 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +27 -1
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +84 -9
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +84 -13
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +84 -13
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +4 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +4 -0
- package/dist/limits.js.map +1 -1
- package/dist/router.d.ts +30 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +50 -10
- package/dist/router.js.map +1 -1
- package/dist/routes.d.ts +14 -4
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +17 -2
- package/dist/routes.js.map +1 -1
- package/dist/rules.d.ts +28 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +102 -0
- package/dist/rules.js.map +1 -0
- package/dist/schemas.d.ts +652 -4
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +96 -6
- package/dist/schemas.js.map +1 -1
- package/dist/vocabulary.d.ts +21 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +21 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +13 -9
- package/docs/specs/rest.md +33 -9
- package/package.json +1 -1
- package/skills/building-a-console/SKILL.md +1 -1
- package/skills/deploying-a-console/SKILL.md +5 -5
- package/skills/deploying-a-console/assets/secrets.example.json +2 -1
- package/skills/deploying-a-console/references/access.md +10 -6
- package/skills/deploying-a-console/references/resources.md +10 -7
- package/skills/working-the-board/SKILL.md +10 -9
- package/skills/working-the-board/references/project-rules.md +36 -0
- package/src/agent-name.ts +9 -0
- package/src/api.ts +37 -0
- package/src/cli/cli.ts +264 -26
- package/src/cli/format.ts +74 -10
- package/src/cli/help.ts +31 -11
- package/src/cli/main.ts +5 -0
- package/src/client.ts +47 -1
- package/src/components/calendar.tsx +252 -51
- package/src/components/connect.tsx +12 -6
- package/src/components/decision-list.tsx +2 -1
- package/src/components/documents.tsx +7 -3
- package/src/components/event-feed.tsx +16 -3
- package/src/components/people.tsx +244 -35
- package/src/components/projects.tsx +37 -14
- package/src/components/rules.tsx +167 -0
- package/src/components/runs.tsx +4 -2
- package/src/components/skills.tsx +22 -10
- package/src/components/task-form.tsx +1 -0
- package/src/components/tokens.tsx +2 -14
- package/src/components/ui.tsx +25 -2
- package/src/components/work.tsx +34 -28
- package/src/console.tsx +524 -45
- package/src/data.ts +52 -2
- package/src/i18n/en.ts +94 -14
- package/src/i18n/ko.ts +90 -14
- package/src/index.ts +16 -1
- package/src/limits.ts +4 -0
- package/src/router.ts +67 -12
- package/src/routes.ts +23 -3
- package/src/rules.ts +109 -0
- package/src/schemas.ts +121 -4
- package/src/styles/console.css +263 -17
- package/src/vocabulary.ts +30 -0
package/src/styles/console.css
CHANGED
|
@@ -957,6 +957,12 @@ table {
|
|
|
957
957
|
line-height: 1;
|
|
958
958
|
}
|
|
959
959
|
|
|
960
|
+
.sc-avatar-xs {
|
|
961
|
+
width: 0.875rem;
|
|
962
|
+
height: 0.875rem;
|
|
963
|
+
font-size: 0.5rem;
|
|
964
|
+
}
|
|
965
|
+
|
|
960
966
|
.sc-avatar-sm {
|
|
961
967
|
width: 1.5rem;
|
|
962
968
|
height: 1.5rem;
|
|
@@ -1065,9 +1071,15 @@ table {
|
|
|
1065
1071
|
border-radius: 50%;
|
|
1066
1072
|
}
|
|
1067
1073
|
|
|
1068
|
-
|
|
1074
|
+
/* The ring turns whatever the motion preference: it says that the page still waits, and a ring
|
|
1075
|
+
that stands still reads as a page that stopped. Where motion is to be reduced it turns slowly. */
|
|
1076
|
+
.sc-spinner-ring {
|
|
1077
|
+
animation: sc-spin 700ms linear infinite;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1069
1081
|
.sc-spinner-ring {
|
|
1070
|
-
animation:
|
|
1082
|
+
animation-duration: 1.6s;
|
|
1071
1083
|
}
|
|
1072
1084
|
}
|
|
1073
1085
|
|
|
@@ -1915,6 +1927,30 @@ table {
|
|
|
1915
1927
|
font-size: var(--sc-text-sm);
|
|
1916
1928
|
}
|
|
1917
1929
|
|
|
1930
|
+
/* What let a person in, when they were deactivated, when a login was let in: beside the name, smaller. */
|
|
1931
|
+
.sc-person-note {
|
|
1932
|
+
font-size: var(--sc-text-xs);
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
/* Those let in and not signed in yet, and those deactivated: sections below everyone in. */
|
|
1936
|
+
.sc-people-section {
|
|
1937
|
+
margin-top: var(--sc-space-6);
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
.sc-person-row-out .sc-person {
|
|
1941
|
+
opacity: 0.7;
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
.sc-listing-form .sc-field-row {
|
|
1945
|
+
align-items: end;
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
.sc-field-hint {
|
|
1949
|
+
margin-top: var(--sc-space-2);
|
|
1950
|
+
color: var(--sc-color-text-muted);
|
|
1951
|
+
font-size: var(--sc-text-sm);
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1918
1954
|
/* Projects: what a person may see, each with what they are in it and what waits in it. */
|
|
1919
1955
|
|
|
1920
1956
|
.sc-projects {
|
|
@@ -2118,6 +2154,21 @@ table {
|
|
|
2118
2154
|
word-break: break-all;
|
|
2119
2155
|
}
|
|
2120
2156
|
|
|
2157
|
+
/* A text to copy as it is, with the way to copy it in its corner. */
|
|
2158
|
+
.sc-copyable {
|
|
2159
|
+
position: relative;
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
.sc-copyable .sc-code {
|
|
2163
|
+
padding-right: 5rem;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
.sc-copyable .sc-button {
|
|
2167
|
+
position: absolute;
|
|
2168
|
+
top: var(--sc-space-2);
|
|
2169
|
+
right: var(--sc-space-2);
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2121
2172
|
.sc-code-input {
|
|
2122
2173
|
max-width: 12rem;
|
|
2123
2174
|
font-family: var(--sc-font-mono);
|
|
@@ -2606,12 +2657,12 @@ table {
|
|
|
2606
2657
|
font-size: var(--sc-text-xs);
|
|
2607
2658
|
line-height: 1;
|
|
2608
2659
|
text-decoration: none;
|
|
2609
|
-
overflow: hidden;
|
|
2610
2660
|
white-space: nowrap;
|
|
2611
2661
|
}
|
|
2612
2662
|
|
|
2663
|
+
/* Lit a little under the pointer by its colour, not by a filter, which would light the card within it too. */
|
|
2613
2664
|
.sc-calendar-bar:hover {
|
|
2614
|
-
|
|
2665
|
+
background: color-mix(in srgb, var(--sc-category-fill), white 12%);
|
|
2615
2666
|
}
|
|
2616
2667
|
|
|
2617
2668
|
.sc-calendar-bar-begins {
|
|
@@ -2661,15 +2712,6 @@ table {
|
|
|
2661
2712
|
margin: 0;
|
|
2662
2713
|
}
|
|
2663
2714
|
|
|
2664
|
-
.sc-calendar-task-start {
|
|
2665
|
-
color: var(--sc-color-text-muted);
|
|
2666
|
-
}
|
|
2667
|
-
|
|
2668
|
-
.sc-calendar-task-start::before {
|
|
2669
|
-
content: "\203A";
|
|
2670
|
-
color: var(--sc-color-text-faint);
|
|
2671
|
-
}
|
|
2672
|
-
|
|
2673
2715
|
/* The button under a list shown a page at a time. */
|
|
2674
2716
|
.sc-show-more {
|
|
2675
2717
|
margin-top: var(--sc-space-3);
|
|
@@ -2677,6 +2719,7 @@ table {
|
|
|
2677
2719
|
|
|
2678
2720
|
/* A project's mark: its symbol on its colour. */
|
|
2679
2721
|
.sc-mark {
|
|
2722
|
+
position: relative;
|
|
2680
2723
|
display: inline-flex;
|
|
2681
2724
|
flex: none;
|
|
2682
2725
|
align-items: center;
|
|
@@ -2714,7 +2757,7 @@ table {
|
|
|
2714
2757
|
align-items: end;
|
|
2715
2758
|
}
|
|
2716
2759
|
|
|
2717
|
-
/* A project's own image,
|
|
2760
|
+
/* A project's own image over the symbol, filling the mark; the symbol shows until the image is there. */
|
|
2718
2761
|
.sc-mark-pictured {
|
|
2719
2762
|
padding: 0;
|
|
2720
2763
|
overflow: hidden;
|
|
@@ -2722,6 +2765,8 @@ table {
|
|
|
2722
2765
|
}
|
|
2723
2766
|
|
|
2724
2767
|
.sc-mark-image {
|
|
2768
|
+
position: absolute;
|
|
2769
|
+
inset: 0;
|
|
2725
2770
|
display: block;
|
|
2726
2771
|
width: 100%;
|
|
2727
2772
|
height: 100%;
|
|
@@ -2974,6 +3019,86 @@ table {
|
|
|
2974
3019
|
flex: 1 1 10rem;
|
|
2975
3020
|
}
|
|
2976
3021
|
|
|
3022
|
+
/* The task under the pointer in full: a card within its item with its title and the facts its page
|
|
3023
|
+
lists, above or below the item, whichever side has more room, and moved left where it would
|
|
3024
|
+
leave the window; the calendar measures that as the pointer arrives, since only the browser
|
|
3025
|
+
knows where the item is. The card lies out of the accessible tree and takes no pointer. */
|
|
3026
|
+
.sc-calendar-task,
|
|
3027
|
+
.sc-calendar-bar {
|
|
3028
|
+
position: relative;
|
|
3029
|
+
}
|
|
3030
|
+
|
|
3031
|
+
/* The item under the pointer rises above its neighbours, which would otherwise paint over its card. */
|
|
3032
|
+
.sc-calendar-task:hover,
|
|
3033
|
+
.sc-calendar-task:focus-visible,
|
|
3034
|
+
.sc-calendar-bar:hover,
|
|
3035
|
+
.sc-calendar-bar:focus-visible {
|
|
3036
|
+
z-index: 20;
|
|
3037
|
+
}
|
|
3038
|
+
|
|
3039
|
+
.sc-task-tip {
|
|
3040
|
+
position: absolute;
|
|
3041
|
+
left: 0;
|
|
3042
|
+
z-index: 20;
|
|
3043
|
+
width: max-content;
|
|
3044
|
+
max-width: 20rem;
|
|
3045
|
+
padding: var(--sc-space-2) var(--sc-space-3);
|
|
3046
|
+
border: var(--sc-border);
|
|
3047
|
+
border-radius: var(--sc-radius-md);
|
|
3048
|
+
background: var(--sc-color-bg-inset);
|
|
3049
|
+
box-shadow: var(--sc-shadow-stage);
|
|
3050
|
+
color: var(--sc-color-text);
|
|
3051
|
+
font-size: var(--sc-text-xs);
|
|
3052
|
+
font-weight: var(--sc-weight-normal);
|
|
3053
|
+
line-height: 1.4;
|
|
3054
|
+
text-align: left;
|
|
3055
|
+
text-decoration: none;
|
|
3056
|
+
white-space: normal;
|
|
3057
|
+
overflow-wrap: anywhere;
|
|
3058
|
+
pointer-events: none;
|
|
3059
|
+
animation: sc-task-tip-in 120ms ease-out 100ms backwards;
|
|
3060
|
+
}
|
|
3061
|
+
|
|
3062
|
+
.sc-task-tip-above {
|
|
3063
|
+
bottom: calc(100% + var(--sc-space-1));
|
|
3064
|
+
}
|
|
3065
|
+
|
|
3066
|
+
.sc-task-tip-below {
|
|
3067
|
+
top: calc(100% + var(--sc-space-1));
|
|
3068
|
+
}
|
|
3069
|
+
|
|
3070
|
+
.sc-task-tip-title {
|
|
3071
|
+
margin: 0 0 var(--sc-space-2);
|
|
3072
|
+
font-weight: var(--sc-weight-medium);
|
|
3073
|
+
}
|
|
3074
|
+
|
|
3075
|
+
.sc-task-tip-facts {
|
|
3076
|
+
display: grid;
|
|
3077
|
+
grid-template-columns: auto 1fr;
|
|
3078
|
+
gap: var(--sc-space-1) var(--sc-space-3);
|
|
3079
|
+
margin: 0;
|
|
3080
|
+
}
|
|
3081
|
+
|
|
3082
|
+
.sc-task-tip-facts > div {
|
|
3083
|
+
display: contents;
|
|
3084
|
+
}
|
|
3085
|
+
|
|
3086
|
+
.sc-task-tip-facts dt {
|
|
3087
|
+
color: var(--sc-color-text-faint);
|
|
3088
|
+
font-weight: var(--sc-weight-medium);
|
|
3089
|
+
}
|
|
3090
|
+
|
|
3091
|
+
.sc-task-tip-facts dd {
|
|
3092
|
+
margin: 0;
|
|
3093
|
+
}
|
|
3094
|
+
|
|
3095
|
+
/* The card arrives after a moment, so that a pointer passing over the days opens none. */
|
|
3096
|
+
@keyframes sc-task-tip-in {
|
|
3097
|
+
from {
|
|
3098
|
+
opacity: 0;
|
|
3099
|
+
}
|
|
3100
|
+
}
|
|
3101
|
+
|
|
2977
3102
|
/* One week on its own, the only row there is: its days are taller than a month's. */
|
|
2978
3103
|
.sc-week .sc-calendar-cell {
|
|
2979
3104
|
height: 9rem;
|
|
@@ -2990,6 +3115,11 @@ table {
|
|
|
2990
3115
|
margin-right: 0;
|
|
2991
3116
|
}
|
|
2992
3117
|
|
|
3118
|
+
/* Who has a task, before its title on a project's calendar; a bar has no gap of its own. */
|
|
3119
|
+
.sc-calendar-bar .sc-avatar {
|
|
3120
|
+
margin-right: var(--sc-space-1);
|
|
3121
|
+
}
|
|
3122
|
+
|
|
2993
3123
|
/* What is on a person's plate: the week across the page, the lists below it at reading width. */
|
|
2994
3124
|
.sc-work {
|
|
2995
3125
|
display: grid;
|
|
@@ -3077,8 +3207,7 @@ table {
|
|
|
3077
3207
|
padding: 0;
|
|
3078
3208
|
}
|
|
3079
3209
|
|
|
3080
|
-
.sc-calendar-task-title
|
|
3081
|
-
.sc-calendar-task-start {
|
|
3210
|
+
.sc-calendar-task-title {
|
|
3082
3211
|
display: none;
|
|
3083
3212
|
}
|
|
3084
3213
|
|
|
@@ -3094,7 +3223,9 @@ table {
|
|
|
3094
3223
|
}
|
|
3095
3224
|
|
|
3096
3225
|
/* A bar is a line here, too thin for a mark; a task on its day keeps its mark as its dot. */
|
|
3097
|
-
.sc-calendar-bar .sc-mark
|
|
3226
|
+
.sc-calendar-bar .sc-mark,
|
|
3227
|
+
.sc-calendar-bar .sc-avatar,
|
|
3228
|
+
.sc-calendar-task .sc-avatar {
|
|
3098
3229
|
display: none;
|
|
3099
3230
|
}
|
|
3100
3231
|
|
|
@@ -3102,6 +3233,27 @@ table {
|
|
|
3102
3233
|
margin: 0;
|
|
3103
3234
|
}
|
|
3104
3235
|
|
|
3236
|
+
/* No pointer rests on a phone's calendar, and the lists below say the titles. */
|
|
3237
|
+
.sc-task-tip {
|
|
3238
|
+
display: none;
|
|
3239
|
+
}
|
|
3240
|
+
|
|
3241
|
+
/* A text to copy keeps the whole width here; the button that copies it sits below it. */
|
|
3242
|
+
.sc-copyable {
|
|
3243
|
+
display: grid;
|
|
3244
|
+
justify-items: end;
|
|
3245
|
+
gap: var(--sc-space-2);
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
.sc-copyable .sc-code {
|
|
3249
|
+
width: 100%;
|
|
3250
|
+
padding-right: var(--sc-space-4);
|
|
3251
|
+
}
|
|
3252
|
+
|
|
3253
|
+
.sc-copyable .sc-button {
|
|
3254
|
+
position: static;
|
|
3255
|
+
}
|
|
3256
|
+
|
|
3105
3257
|
.sc-feed-item {
|
|
3106
3258
|
grid-template-columns: 1fr;
|
|
3107
3259
|
gap: var(--sc-space-1);
|
|
@@ -3122,3 +3274,97 @@ table {
|
|
|
3122
3274
|
border-radius: var(--sc-radius-lg);
|
|
3123
3275
|
}
|
|
3124
3276
|
}
|
|
3277
|
+
|
|
3278
|
+
/* An input with what stands before it: the deployment's origin before a skills address. */
|
|
3279
|
+
.sc-input-group {
|
|
3280
|
+
display: flex;
|
|
3281
|
+
align-items: stretch;
|
|
3282
|
+
}
|
|
3283
|
+
|
|
3284
|
+
.sc-input-prefix {
|
|
3285
|
+
display: inline-flex;
|
|
3286
|
+
align-items: center;
|
|
3287
|
+
padding: 0 var(--sc-space-3);
|
|
3288
|
+
border: 1px solid var(--sc-color-border-strong);
|
|
3289
|
+
border-right: 0;
|
|
3290
|
+
border-radius: var(--sc-radius-md) 0 0 var(--sc-radius-md);
|
|
3291
|
+
background: color-mix(in srgb, var(--sc-color-field) 60%, var(--sc-color-border));
|
|
3292
|
+
color: var(--sc-color-text-muted);
|
|
3293
|
+
font-size: var(--sc-text-sm);
|
|
3294
|
+
white-space: nowrap;
|
|
3295
|
+
}
|
|
3296
|
+
|
|
3297
|
+
.sc-input-group .sc-input-prefix + .sc-input {
|
|
3298
|
+
border-radius: 0 var(--sc-radius-md) var(--sc-radius-md) 0;
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3301
|
+
/* The rules (ADR-0023): the facts of the page they are written on stand above the text. */
|
|
3302
|
+
.sc-rules-facts {
|
|
3303
|
+
display: flex;
|
|
3304
|
+
flex-wrap: wrap;
|
|
3305
|
+
align-items: center;
|
|
3306
|
+
gap: var(--sc-space-2);
|
|
3307
|
+
margin: 0 0 var(--sc-space-3);
|
|
3308
|
+
color: var(--sc-color-text-muted);
|
|
3309
|
+
font-size: var(--sc-text-sm);
|
|
3310
|
+
}
|
|
3311
|
+
|
|
3312
|
+
/* The categories on the settings, as chips, with the way to the page that keeps them. */
|
|
3313
|
+
.sc-category-chips {
|
|
3314
|
+
display: flex;
|
|
3315
|
+
flex-wrap: wrap;
|
|
3316
|
+
gap: var(--sc-space-2);
|
|
3317
|
+
margin: 0 0 var(--sc-space-4);
|
|
3318
|
+
}
|
|
3319
|
+
|
|
3320
|
+
/* The facts of a thing inside a panel: a list in the panel, not a pane of their own. */
|
|
3321
|
+
.sc-facts-plain {
|
|
3322
|
+
padding: 0;
|
|
3323
|
+
border: 0;
|
|
3324
|
+
border-radius: 0;
|
|
3325
|
+
background: none;
|
|
3326
|
+
backdrop-filter: none;
|
|
3327
|
+
box-shadow: none;
|
|
3328
|
+
}
|
|
3329
|
+
|
|
3330
|
+
.sc-facts-plain::before {
|
|
3331
|
+
content: none;
|
|
3332
|
+
}
|
|
3333
|
+
|
|
3334
|
+
/* A fact that needs the whole row: a description. */
|
|
3335
|
+
.sc-facts-wide {
|
|
3336
|
+
grid-column: 1 / -1;
|
|
3337
|
+
}
|
|
3338
|
+
|
|
3339
|
+
/* A section's title with what stands beside it: a way to where the thing is kept. */
|
|
3340
|
+
.sc-section-head {
|
|
3341
|
+
display: flex;
|
|
3342
|
+
flex-wrap: wrap;
|
|
3343
|
+
align-items: baseline;
|
|
3344
|
+
justify-content: space-between;
|
|
3345
|
+
gap: var(--sc-space-2) var(--sc-space-4);
|
|
3346
|
+
margin-bottom: var(--sc-space-3);
|
|
3347
|
+
}
|
|
3348
|
+
|
|
3349
|
+
.sc-section-head .sc-section-title {
|
|
3350
|
+
margin-bottom: 0;
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3353
|
+
/* The ways to change the rules stand off the text, as a form's actions do. */
|
|
3354
|
+
.sc-rules-actions {
|
|
3355
|
+
display: flex;
|
|
3356
|
+
flex-wrap: wrap;
|
|
3357
|
+
gap: var(--sc-space-2);
|
|
3358
|
+
margin-top: var(--sc-space-4);
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
/* The rules folded under where they come from, where the page is about something else. */
|
|
3362
|
+
.sc-rules-fold > summary {
|
|
3363
|
+
cursor: pointer;
|
|
3364
|
+
color: var(--sc-color-text-muted);
|
|
3365
|
+
font-size: var(--sc-text-sm);
|
|
3366
|
+
}
|
|
3367
|
+
|
|
3368
|
+
.sc-rules-fold[open] > summary {
|
|
3369
|
+
margin-bottom: var(--sc-space-3);
|
|
3370
|
+
}
|
package/src/vocabulary.ts
CHANGED
|
@@ -70,6 +70,23 @@ export const PERSON_ROLES = ["admin", "member"] as const;
|
|
|
70
70
|
|
|
71
71
|
export type PersonRole = (typeof PERSON_ROLES)[number];
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Whether a person is in: `active`, or `deactivated`, which is kept rather than deleted so that
|
|
75
|
+
* what they did stays theirs (ADR-0022). A deactivated person is refused on every request.
|
|
76
|
+
*/
|
|
77
|
+
export const PERSON_STATUSES = ["active", "deactivated"] as const;
|
|
78
|
+
|
|
79
|
+
export type PersonStatus = (typeof PERSON_STATUSES)[number];
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* What let a person in (ADR-0022): the organization at the git host the deployment names,
|
|
83
|
+
* whose members come and go with it; the Workspace domain the deployment names; or an
|
|
84
|
+
* administrator, who listed their login on the People page.
|
|
85
|
+
*/
|
|
86
|
+
export const MEMBERSHIP_SOURCES = ["organization", "domain", "listed"] as const;
|
|
87
|
+
|
|
88
|
+
export type MembershipSource = (typeof MEMBERSHIP_SOURCES)[number];
|
|
89
|
+
|
|
73
90
|
/** What a person is within a project: an owner configures it, a member works on it. */
|
|
74
91
|
export const PROJECT_ROLES = ["owner", "member"] as const;
|
|
75
92
|
|
|
@@ -115,6 +132,15 @@ export const SKILLS_STATUSES = [
|
|
|
115
132
|
|
|
116
133
|
export type SkillsStatus = (typeof SKILLS_STATUSES)[number];
|
|
117
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Where the rules that hold on a board come from (ADR-0023): the console's own, since the
|
|
137
|
+
* organization wrote none; a page the organization or the project wrote; or none, for a
|
|
138
|
+
* project that adds nothing to the workspace's.
|
|
139
|
+
*/
|
|
140
|
+
export const RULES_SOURCES = ["reference", "written", "none"] as const;
|
|
141
|
+
|
|
142
|
+
export type RulesSource = (typeof RULES_SOURCES)[number];
|
|
143
|
+
|
|
118
144
|
/**
|
|
119
145
|
* What can happen to the board. Every change of state is one of these, written down once with
|
|
120
146
|
* who did it: the live feed shows them as they happen, and the audit trail keeps them.
|
|
@@ -122,6 +148,10 @@ export type SkillsStatus = (typeof SKILLS_STATUSES)[number];
|
|
|
122
148
|
export const EVENT_KINDS = [
|
|
123
149
|
"person.joined",
|
|
124
150
|
"person.role_changed",
|
|
151
|
+
"person.listed",
|
|
152
|
+
"person.unlisted",
|
|
153
|
+
"person.deactivated",
|
|
154
|
+
"person.reactivated",
|
|
125
155
|
"category.created",
|
|
126
156
|
"category.updated",
|
|
127
157
|
"category.removed",
|