@skillcdn/console 0.1.24 → 0.3.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.
Files changed (156) hide show
  1. package/README.md +8 -7
  2. package/dist/api.d.ts +2 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +2 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts +1 -1
  7. package/dist/cli/cli.d.ts.map +1 -1
  8. package/dist/cli/cli.js +248 -92
  9. package/dist/cli/cli.js.map +1 -1
  10. package/dist/cli/credentials.d.ts +5 -0
  11. package/dist/cli/credentials.d.ts.map +1 -1
  12. package/dist/cli/credentials.js +2 -0
  13. package/dist/cli/credentials.js.map +1 -1
  14. package/dist/cli/directory.d.ts +7 -0
  15. package/dist/cli/directory.d.ts.map +1 -1
  16. package/dist/cli/directory.js +7 -0
  17. package/dist/cli/directory.js.map +1 -1
  18. package/dist/cli/format.d.ts +13 -28
  19. package/dist/cli/format.d.ts.map +1 -1
  20. package/dist/cli/format.js +74 -274
  21. package/dist/cli/format.js.map +1 -1
  22. package/dist/cli/help.d.ts.map +1 -1
  23. package/dist/cli/help.js +36 -19
  24. package/dist/cli/help.js.map +1 -1
  25. package/dist/cli/pack.d.ts +46 -0
  26. package/dist/cli/pack.d.ts.map +1 -0
  27. package/dist/cli/pack.js +250 -0
  28. package/dist/cli/pack.js.map +1 -0
  29. package/dist/client.d.ts +26 -1
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +14 -1
  32. package/dist/client.js.map +1 -1
  33. package/dist/compat.d.ts +1 -1
  34. package/dist/compat.js +1 -1
  35. package/dist/components/calendar.d.ts +5 -1
  36. package/dist/components/calendar.d.ts.map +1 -1
  37. package/dist/components/calendar.js +3 -3
  38. package/dist/components/calendar.js.map +1 -1
  39. package/dist/components/decision-list.d.ts +13 -1
  40. package/dist/components/decision-list.d.ts.map +1 -1
  41. package/dist/components/decision-list.js +74 -29
  42. package/dist/components/decision-list.js.map +1 -1
  43. package/dist/components/event-feed.d.ts.map +1 -1
  44. package/dist/components/event-feed.js +2 -0
  45. package/dist/components/event-feed.js.map +1 -1
  46. package/dist/components/pack-connect.d.ts +23 -0
  47. package/dist/components/pack-connect.d.ts.map +1 -0
  48. package/dist/components/pack-connect.js +86 -0
  49. package/dist/components/pack-connect.js.map +1 -0
  50. package/dist/components/pack-token.d.ts +27 -0
  51. package/dist/components/pack-token.d.ts.map +1 -0
  52. package/dist/components/pack-token.js +11 -0
  53. package/dist/components/pack-token.js.map +1 -0
  54. package/dist/components/paged.d.ts +24 -0
  55. package/dist/components/paged.d.ts.map +1 -1
  56. package/dist/components/paged.js +40 -4
  57. package/dist/components/paged.js.map +1 -1
  58. package/dist/components/projects.d.ts +13 -0
  59. package/dist/components/projects.d.ts.map +1 -1
  60. package/dist/components/projects.js +37 -5
  61. package/dist/components/projects.js.map +1 -1
  62. package/dist/components/skills.d.ts.map +1 -1
  63. package/dist/components/skills.js +8 -4
  64. package/dist/components/skills.js.map +1 -1
  65. package/dist/components/ui.d.ts +2 -0
  66. package/dist/components/ui.d.ts.map +1 -1
  67. package/dist/components/ui.js +7 -2
  68. package/dist/components/ui.js.map +1 -1
  69. package/dist/components/work.d.ts +3 -1
  70. package/dist/components/work.d.ts.map +1 -1
  71. package/dist/components/work.js +1 -1
  72. package/dist/components/work.js.map +1 -1
  73. package/dist/components/workspace.d.ts +46 -0
  74. package/dist/components/workspace.d.ts.map +1 -0
  75. package/dist/components/workspace.js +124 -0
  76. package/dist/components/workspace.js.map +1 -0
  77. package/dist/console.css +268 -5
  78. package/dist/console.d.ts.map +1 -1
  79. package/dist/console.js +62 -23
  80. package/dist/console.js.map +1 -1
  81. package/dist/data.d.ts +16 -1
  82. package/dist/data.d.ts.map +1 -1
  83. package/dist/data.js +64 -2
  84. package/dist/data.js.map +1 -1
  85. package/dist/dates.d.ts +12 -2
  86. package/dist/dates.d.ts.map +1 -1
  87. package/dist/dates.js +20 -2
  88. package/dist/dates.js.map +1 -1
  89. package/dist/i18n/en.d.ts +66 -0
  90. package/dist/i18n/en.d.ts.map +1 -1
  91. package/dist/i18n/en.js +80 -8
  92. package/dist/i18n/en.js.map +1 -1
  93. package/dist/i18n/ko.d.ts.map +1 -1
  94. package/dist/i18n/ko.js +75 -7
  95. package/dist/i18n/ko.js.map +1 -1
  96. package/dist/index.d.ts +5 -2
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +5 -2
  99. package/dist/index.js.map +1 -1
  100. package/dist/router.d.ts +10 -5
  101. package/dist/router.d.ts.map +1 -1
  102. package/dist/router.js +24 -9
  103. package/dist/router.js.map +1 -1
  104. package/dist/routes.d.ts +4 -0
  105. package/dist/routes.d.ts.map +1 -1
  106. package/dist/routes.js +4 -0
  107. package/dist/routes.js.map +1 -1
  108. package/dist/schemas.d.ts +500 -158
  109. package/dist/schemas.d.ts.map +1 -1
  110. package/dist/schemas.js +169 -165
  111. package/dist/schemas.js.map +1 -1
  112. package/dist/vocabulary.d.ts +19 -1
  113. package/dist/vocabulary.d.ts.map +1 -1
  114. package/dist/vocabulary.js +16 -0
  115. package/dist/vocabulary.js.map +1 -1
  116. package/docs/specs/cli.md +19 -14
  117. package/docs/specs/rest.md +34 -19
  118. package/package.json +2 -1
  119. package/skills/building-a-console/SKILL.md +5 -5
  120. package/skills/building-a-console/references/the-look-from-a-website.md +39 -0
  121. package/skills/deploying-a-console/SKILL.md +9 -8
  122. package/skills/working-the-board/SKILL.md +5 -5
  123. package/skills/working-the-board/references/setting-up.md +1 -1
  124. package/skills/working-the-board/references/terms.md +2 -0
  125. package/skills/working-the-board/references/the-sentence.md +1 -1
  126. package/src/api.ts +18 -7
  127. package/src/cli/cli.ts +345 -109
  128. package/src/cli/credentials.ts +7 -0
  129. package/src/cli/directory.ts +9 -0
  130. package/src/cli/format.ts +82 -341
  131. package/src/cli/help.ts +43 -19
  132. package/src/cli/pack.ts +356 -0
  133. package/src/client.ts +84 -0
  134. package/src/compat.ts +1 -1
  135. package/src/components/calendar.tsx +8 -2
  136. package/src/components/decision-list.tsx +227 -94
  137. package/src/components/event-feed.tsx +2 -0
  138. package/src/components/pack-connect.tsx +179 -0
  139. package/src/components/pack-token.tsx +74 -0
  140. package/src/components/paged.tsx +72 -3
  141. package/src/components/projects.tsx +108 -9
  142. package/src/components/skills.tsx +51 -33
  143. package/src/components/ui.tsx +16 -3
  144. package/src/components/work.tsx +4 -1
  145. package/src/components/workspace.tsx +298 -0
  146. package/src/console.tsx +176 -29
  147. package/src/data.ts +89 -2
  148. package/src/dates.ts +23 -2
  149. package/src/i18n/en.ts +94 -8
  150. package/src/i18n/ko.ts +84 -7
  151. package/src/index.ts +25 -1
  152. package/src/router.ts +37 -14
  153. package/src/routes.ts +4 -0
  154. package/src/schemas.ts +202 -189
  155. package/src/styles/console.css +268 -5
  156. package/src/vocabulary.ts +25 -0
@@ -875,7 +875,8 @@ table {
875
875
  color var(--sc-transition);
876
876
  }
877
877
 
878
- .sc-button:disabled {
878
+ .sc-button:disabled,
879
+ .sc-button[aria-disabled="true"] {
879
880
  opacity: 0.55;
880
881
  cursor: not-allowed;
881
882
  }
@@ -1176,6 +1177,7 @@ table {
1176
1177
  display: grid;
1177
1178
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
1178
1179
  gap: var(--sc-space-4);
1180
+ align-items: start;
1179
1181
  }
1180
1182
 
1181
1183
  .sc-input {
@@ -1573,6 +1575,10 @@ table {
1573
1575
  }
1574
1576
 
1575
1577
  .sc-answer-option {
1578
+ display: flex;
1579
+ flex-wrap: wrap;
1580
+ align-items: center;
1581
+ gap: var(--sc-space-2);
1576
1582
  font-weight: var(--sc-weight-bold);
1577
1583
  }
1578
1584
 
@@ -1619,6 +1625,17 @@ table {
1619
1625
  accent-color: var(--sc-color-accent);
1620
1626
  }
1621
1627
 
1628
+ /* The last choice is the person's own words: the radio, its label, and the line they write on. */
1629
+ .sc-option-own {
1630
+ flex-wrap: wrap;
1631
+ }
1632
+
1633
+ .sc-option-own .sc-input {
1634
+ flex: 1 1 12rem;
1635
+ min-width: 0;
1636
+ min-height: 2rem;
1637
+ }
1638
+
1622
1639
  /* The feed: a line per event, newest first. */
1623
1640
 
1624
1641
  .sc-feed {
@@ -3020,7 +3037,7 @@ table {
3020
3037
  }
3021
3038
  }
3022
3039
 
3023
- /* The record of the decisions: a row each. */
3040
+ /* The decisions waiting on a person's plate: a row each. */
3024
3041
  .sc-decision-log {
3025
3042
  display: grid;
3026
3043
  gap: var(--sc-space-2);
@@ -3060,18 +3077,109 @@ table {
3060
3077
  color: var(--sc-color-accent);
3061
3078
  }
3062
3079
 
3063
- .sc-decision-row-answer {
3064
- color: var(--sc-color-success);
3080
+ .sc-decision-row-meta {
3081
+ display: flex;
3082
+ flex-wrap: wrap;
3083
+ align-items: center;
3084
+ gap: var(--sc-space-2);
3085
+ color: var(--sc-color-text-muted);
3086
+ }
3087
+
3088
+ /* The record of the decisions: a row each, what was asked on the left and what was answered on
3089
+ the right, each with who and when under it; one column where the window is narrow. */
3090
+ .sc-decision-record {
3091
+ display: grid;
3092
+ gap: var(--sc-space-2);
3093
+ margin: 0;
3094
+ padding: 0;
3095
+ list-style: none;
3096
+ }
3097
+
3098
+ .sc-decision-record-row {
3099
+ display: grid;
3100
+ grid-template-columns: minmax(0, 1fr);
3101
+ gap: var(--sc-space-3) var(--sc-space-6);
3102
+ padding: var(--sc-space-3) var(--sc-space-4);
3103
+ border: var(--sc-border);
3104
+ border-radius: var(--sc-radius-md);
3105
+ background: var(--sc-color-sheet);
3106
+ font-size: var(--sc-text-sm);
3107
+ }
3108
+
3109
+ @media (min-width: 40rem) {
3110
+ .sc-decision-record-row {
3111
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
3112
+ }
3113
+ }
3114
+
3115
+ .sc-decision-record-asked,
3116
+ .sc-decision-record-answer {
3117
+ display: grid;
3118
+ align-content: start;
3119
+ gap: var(--sc-space-1);
3120
+ min-width: 0;
3121
+ }
3122
+
3123
+ .sc-decision-record-question {
3065
3124
  font-weight: var(--sc-weight-medium);
3066
3125
  overflow-wrap: anywhere;
3067
3126
  }
3068
3127
 
3069
- .sc-decision-row-meta {
3128
+ .sc-decision-record-question a {
3129
+ color: var(--sc-color-text);
3130
+ text-decoration: none;
3131
+ }
3132
+
3133
+ .sc-decision-record-question a:hover {
3134
+ color: var(--sc-color-accent);
3135
+ }
3136
+
3137
+ .sc-decision-record-question .sc-card-number {
3138
+ margin-left: var(--sc-space-2);
3139
+ }
3140
+
3141
+ .sc-decision-record-chosen {
3070
3142
  display: flex;
3071
3143
  flex-wrap: wrap;
3072
3144
  align-items: center;
3073
3145
  gap: var(--sc-space-2);
3146
+ color: var(--sc-color-success);
3147
+ font-weight: var(--sc-weight-medium);
3148
+ overflow-wrap: anywhere;
3149
+ }
3150
+
3151
+ /* The word given with the answer: a few lines of it here, the whole on the decision's page. */
3152
+ .sc-decision-record-note {
3153
+ display: -webkit-box;
3154
+ -webkit-box-orient: vertical;
3155
+ -webkit-line-clamp: 3;
3156
+ overflow: hidden;
3157
+ color: var(--sc-color-text-muted);
3158
+ overflow-wrap: anywhere;
3159
+ }
3160
+
3161
+ .sc-decision-record-meta {
3162
+ display: flex;
3163
+ flex-wrap: wrap;
3164
+ align-items: center;
3165
+ gap: var(--sc-space-1) var(--sc-space-2);
3166
+ color: var(--sc-color-text-muted);
3167
+ font-size: var(--sc-text-xs);
3168
+ }
3169
+
3170
+ /* The way between the pages of the record: the step before, what is shown of how many, the step after. */
3171
+ .sc-pager {
3172
+ display: flex;
3173
+ flex-wrap: wrap;
3174
+ align-items: center;
3175
+ justify-content: space-between;
3176
+ gap: var(--sc-space-3);
3177
+ margin-top: var(--sc-space-3);
3178
+ }
3179
+
3180
+ .sc-pager-range {
3074
3181
  color: var(--sc-color-text-muted);
3182
+ font-size: var(--sc-text-sm);
3075
3183
  }
3076
3184
 
3077
3185
  /* Who has what: a small table, the late numbers in the danger colour. */
@@ -4023,3 +4131,158 @@ table {
4023
4131
  .sc-goal-view-list {
4024
4132
  display: block;
4025
4133
  }
4134
+
4135
+ /* The workspace's settings (ADR-0035): each setting a row, its name beside its value; on the form,
4136
+ its name and its hint beside a control of a bounded width, so that a short choice is not a
4137
+ field as wide as the page. */
4138
+ .sc-settings-list {
4139
+ display: grid;
4140
+ margin: 0;
4141
+ font-size: var(--sc-text-sm);
4142
+ }
4143
+
4144
+ .sc-settings-item {
4145
+ display: grid;
4146
+ grid-template-columns: minmax(8rem, 14rem) minmax(0, 1fr);
4147
+ gap: var(--sc-space-1) var(--sc-space-5);
4148
+ padding: var(--sc-space-3) 0;
4149
+ border-top: var(--sc-border);
4150
+ }
4151
+
4152
+ .sc-settings-item:first-child {
4153
+ padding-top: 0;
4154
+ border-top: 0;
4155
+ }
4156
+
4157
+ .sc-settings-item:last-child {
4158
+ padding-bottom: 0;
4159
+ }
4160
+
4161
+ .sc-settings-item dt {
4162
+ color: var(--sc-color-text-muted);
4163
+ }
4164
+
4165
+ .sc-settings-item dd {
4166
+ margin: 0;
4167
+ }
4168
+
4169
+ .sc-settings-note {
4170
+ margin-left: var(--sc-space-3);
4171
+ color: var(--sc-color-text-muted);
4172
+ }
4173
+
4174
+ .sc-settings-form {
4175
+ gap: 0;
4176
+ }
4177
+
4178
+ .sc-settings-row {
4179
+ display: grid;
4180
+ grid-template-columns: minmax(0, 1fr) minmax(14rem, 20rem);
4181
+ gap: var(--sc-space-3) var(--sc-space-6);
4182
+ align-items: start;
4183
+ padding: var(--sc-space-4) 0;
4184
+ border-top: var(--sc-border);
4185
+ }
4186
+
4187
+ .sc-settings-row:first-child {
4188
+ padding-top: 0;
4189
+ border-top: 0;
4190
+ }
4191
+
4192
+ .sc-settings-label {
4193
+ display: block;
4194
+ font-weight: var(--sc-weight-medium);
4195
+ }
4196
+
4197
+ .sc-settings-hint {
4198
+ max-width: var(--sc-width-prose);
4199
+ margin: var(--sc-space-1) 0 0;
4200
+ color: var(--sc-color-text-muted);
4201
+ font-size: var(--sc-text-sm);
4202
+ }
4203
+
4204
+ .sc-settings-control {
4205
+ display: grid;
4206
+ justify-items: start;
4207
+ gap: var(--sc-space-2);
4208
+ }
4209
+
4210
+ .sc-settings-control .sc-input {
4211
+ width: 100%;
4212
+ }
4213
+
4214
+ .sc-settings-form .sc-form-actions {
4215
+ padding-top: var(--sc-space-4);
4216
+ border-top: var(--sc-border);
4217
+ }
4218
+
4219
+ @media (max-width: 40rem) {
4220
+ .sc-settings-item,
4221
+ .sc-settings-row {
4222
+ grid-template-columns: minmax(0, 1fr);
4223
+ }
4224
+ }
4225
+
4226
+ /* The pack token (ADR-0028, ADR-0036): what it is for first, then the two ways to one side by
4227
+ side, each a card with its words before its controls, and the code shown large while the
4228
+ page waits for the approval. */
4229
+ .sc-pack-intro {
4230
+ max-width: var(--sc-width-prose);
4231
+ margin: 0 0 var(--sc-space-5);
4232
+ color: var(--sc-color-text-muted);
4233
+ font-size: var(--sc-text-sm);
4234
+ }
4235
+
4236
+ .sc-pack-ways {
4237
+ display: grid;
4238
+ grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
4239
+ gap: var(--sc-space-4);
4240
+ }
4241
+
4242
+ .sc-pack-way {
4243
+ display: grid;
4244
+ align-content: start;
4245
+ gap: var(--sc-space-3);
4246
+ padding: var(--sc-space-4);
4247
+ border: var(--sc-border);
4248
+ border-radius: var(--sc-radius-lg);
4249
+ background: var(--sc-color-sheet);
4250
+ }
4251
+
4252
+ .sc-pack-way-title {
4253
+ font-size: var(--sc-text-md);
4254
+ font-weight: var(--sc-weight-medium);
4255
+ }
4256
+
4257
+ .sc-pack-way .sc-field-hint {
4258
+ margin-top: 0;
4259
+ }
4260
+
4261
+ .sc-pack-connect {
4262
+ display: grid;
4263
+ gap: var(--sc-space-3);
4264
+ }
4265
+
4266
+ .sc-pack-connect-code {
4267
+ display: flex;
4268
+ flex-wrap: wrap;
4269
+ align-items: baseline;
4270
+ gap: var(--sc-space-3);
4271
+ }
4272
+
4273
+ .sc-pack-code {
4274
+ font-size: var(--sc-text-xl);
4275
+ letter-spacing: 0.12em;
4276
+ }
4277
+
4278
+ .sc-pack-connect-waiting {
4279
+ display: flex;
4280
+ align-items: center;
4281
+ gap: var(--sc-space-2);
4282
+ color: var(--sc-color-text-muted);
4283
+ font-size: var(--sc-text-sm);
4284
+ }
4285
+
4286
+ .sc-pack-actions {
4287
+ margin-top: var(--sc-space-5);
4288
+ }
package/src/vocabulary.ts CHANGED
@@ -97,6 +97,30 @@ export const PROJECT_VISIBILITIES = ["workspace", "private"] as const;
97
97
 
98
98
  export type ProjectVisibility = (typeof PROJECT_VISIBILITIES)[number];
99
99
 
100
+ /**
101
+ * Who sees whom on the People page and in the pickers (ADR-0035): everyone of the workspace,
102
+ * or only the people one shares a project with; an administrator always sees everyone.
103
+ */
104
+ export const PEOPLE_VISIBILITIES = ["everyone", "shared_projects"] as const;
105
+
106
+ export type PeopleVisibility = (typeof PEOPLE_VISIBILITIES)[number];
107
+
108
+ /**
109
+ * The day the calendars begin a week on (ADR-0035): as the language of the pages has it, or
110
+ * Monday, or Sunday, for the whole workspace.
111
+ */
112
+ export const WEEK_STARTS = ["auto", "monday", "sunday"] as const;
113
+
114
+ export type WeekStart = (typeof WEEK_STARTS)[number];
115
+
116
+ /**
117
+ * How a private pack's connection ended short of a token (ADR-0036): the code expired before
118
+ * anyone approved, the person declined at the deployment, or the deployment refused the request.
119
+ */
120
+ export const PACK_CONNECT_ENDINGS = ["expired", "declined", "refused"] as const;
121
+
122
+ export type PackConnectEnding = (typeof PACK_CONNECT_ENDINGS)[number];
123
+
100
124
  /** What a run is doing: at work, waiting for a person's decision, or over in one of three ways. */
101
125
  export const RUN_STATUSES = ["running", "waiting", "finished", "failed", "abandoned"] as const;
102
126
 
@@ -153,6 +177,7 @@ export const EVENT_KINDS = [
153
177
  "person.unlisted",
154
178
  "person.deactivated",
155
179
  "person.reactivated",
180
+ "workspace.updated",
156
181
  "category.created",
157
182
  "category.updated",
158
183
  "category.removed",