@skillcdn/console 0.3.0 → 0.3.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.
Files changed (170) hide show
  1. package/README.md +4 -4
  2. package/dist/api.d.ts +4 -4
  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 +5 -1
  7. package/dist/cli/cli.d.ts.map +1 -1
  8. package/dist/cli/cli.js +290 -46
  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 +10 -1
  19. package/dist/cli/format.d.ts.map +1 -1
  20. package/dist/cli/format.js +76 -20
  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 +42 -23
  24. package/dist/cli/help.js.map +1 -1
  25. package/dist/cli/main.js +1 -0
  26. package/dist/cli/main.js.map +1 -1
  27. package/dist/client.d.ts +39 -9
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +24 -3
  30. package/dist/client.js.map +1 -1
  31. package/dist/compat.d.ts +28 -6
  32. package/dist/compat.d.ts.map +1 -1
  33. package/dist/compat.js +55 -14
  34. package/dist/compat.js.map +1 -1
  35. package/dist/components/board.d.ts.map +1 -1
  36. package/dist/components/board.js +6 -4
  37. package/dist/components/board.js.map +1 -1
  38. package/dist/components/calendar.d.ts +18 -8
  39. package/dist/components/calendar.d.ts.map +1 -1
  40. package/dist/components/calendar.js +39 -27
  41. package/dist/components/calendar.js.map +1 -1
  42. package/dist/components/event-feed.d.ts.map +1 -1
  43. package/dist/components/event-feed.js +2 -0
  44. package/dist/components/event-feed.js.map +1 -1
  45. package/dist/components/pack-connect.d.ts +23 -0
  46. package/dist/components/pack-connect.d.ts.map +1 -0
  47. package/dist/components/pack-connect.js +86 -0
  48. package/dist/components/pack-connect.js.map +1 -0
  49. package/dist/components/pack-token.d.ts +27 -0
  50. package/dist/components/pack-token.d.ts.map +1 -0
  51. package/dist/components/pack-token.js +11 -0
  52. package/dist/components/pack-token.js.map +1 -0
  53. package/dist/components/picker.d.ts +39 -0
  54. package/dist/components/picker.d.ts.map +1 -0
  55. package/dist/components/picker.js +155 -0
  56. package/dist/components/picker.js.map +1 -0
  57. package/dist/components/projects.d.ts +13 -0
  58. package/dist/components/projects.d.ts.map +1 -1
  59. package/dist/components/projects.js +37 -5
  60. package/dist/components/projects.js.map +1 -1
  61. package/dist/components/task-form.d.ts +18 -4
  62. package/dist/components/task-form.d.ts.map +1 -1
  63. package/dist/components/task-form.js +56 -13
  64. package/dist/components/task-form.js.map +1 -1
  65. package/dist/components/task-list.js +2 -2
  66. package/dist/components/task-list.js.map +1 -1
  67. package/dist/components/task-view.d.ts +7 -1
  68. package/dist/components/task-view.d.ts.map +1 -1
  69. package/dist/components/task-view.js +6 -5
  70. package/dist/components/task-view.js.map +1 -1
  71. package/dist/components/ui.d.ts +7 -0
  72. package/dist/components/ui.d.ts.map +1 -1
  73. package/dist/components/ui.js +11 -0
  74. package/dist/components/ui.js.map +1 -1
  75. package/dist/components/work.d.ts +3 -1
  76. package/dist/components/work.d.ts.map +1 -1
  77. package/dist/components/work.js +6 -4
  78. package/dist/components/work.js.map +1 -1
  79. package/dist/components/workspace.d.ts +46 -0
  80. package/dist/components/workspace.d.ts.map +1 -0
  81. package/dist/components/workspace.js +124 -0
  82. package/dist/components/workspace.js.map +1 -0
  83. package/dist/console.css +319 -11
  84. package/dist/console.d.ts.map +1 -1
  85. package/dist/console.js +83 -24
  86. package/dist/console.js.map +1 -1
  87. package/dist/data.d.ts +26 -1
  88. package/dist/data.d.ts.map +1 -1
  89. package/dist/data.js +59 -1
  90. package/dist/data.js.map +1 -1
  91. package/dist/dates.d.ts +12 -2
  92. package/dist/dates.d.ts.map +1 -1
  93. package/dist/dates.js +20 -2
  94. package/dist/dates.js.map +1 -1
  95. package/dist/i18n/en.d.ts +64 -3
  96. package/dist/i18n/en.d.ts.map +1 -1
  97. package/dist/i18n/en.js +81 -16
  98. package/dist/i18n/en.js.map +1 -1
  99. package/dist/i18n/ko.d.ts.map +1 -1
  100. package/dist/i18n/ko.js +77 -16
  101. package/dist/i18n/ko.js.map +1 -1
  102. package/dist/index.d.ts +6 -2
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +6 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/limits.d.ts +2 -0
  107. package/dist/limits.d.ts.map +1 -1
  108. package/dist/limits.js +2 -0
  109. package/dist/limits.js.map +1 -1
  110. package/dist/router.d.ts +4 -4
  111. package/dist/router.d.ts.map +1 -1
  112. package/dist/router.js +11 -2
  113. package/dist/router.js.map +1 -1
  114. package/dist/routes.d.ts +4 -0
  115. package/dist/routes.d.ts.map +1 -1
  116. package/dist/routes.js +4 -0
  117. package/dist/routes.js.map +1 -1
  118. package/dist/schemas.d.ts +194 -13
  119. package/dist/schemas.d.ts.map +1 -1
  120. package/dist/schemas.js +121 -21
  121. package/dist/schemas.js.map +1 -1
  122. package/dist/vocabulary.d.ts +21 -1
  123. package/dist/vocabulary.d.ts.map +1 -1
  124. package/dist/vocabulary.js +18 -0
  125. package/dist/vocabulary.js.map +1 -1
  126. package/docs/specs/cli.md +25 -20
  127. package/docs/specs/rest.md +42 -19
  128. package/package.json +2 -2
  129. package/skills/building-a-console/SKILL.md +6 -6
  130. package/skills/building-a-console/references/the-look-from-a-website.md +39 -0
  131. package/skills/deploying-a-console/SKILL.md +9 -8
  132. package/skills/deploying-a-console/references/resources.md +1 -1
  133. package/skills/working-the-board/SKILL.md +5 -5
  134. package/skills/working-the-board/references/setting-up.md +1 -1
  135. package/skills/working-the-board/references/terms.md +3 -1
  136. package/skills/working-the-board/references/the-sentence.md +1 -1
  137. package/src/api.ts +21 -0
  138. package/src/cli/cli.ts +384 -51
  139. package/src/cli/credentials.ts +7 -0
  140. package/src/cli/directory.ts +9 -0
  141. package/src/cli/format.ts +83 -20
  142. package/src/cli/help.ts +50 -23
  143. package/src/cli/main.ts +1 -0
  144. package/src/client.ts +107 -10
  145. package/src/compat.ts +63 -14
  146. package/src/components/board.tsx +10 -4
  147. package/src/components/calendar.tsx +76 -34
  148. package/src/components/event-feed.tsx +2 -0
  149. package/src/components/pack-connect.tsx +179 -0
  150. package/src/components/pack-token.tsx +74 -0
  151. package/src/components/picker.tsx +297 -0
  152. package/src/components/projects.tsx +108 -9
  153. package/src/components/task-form.tsx +149 -63
  154. package/src/components/task-list.tsx +2 -2
  155. package/src/components/task-view.tsx +23 -9
  156. package/src/components/ui.tsx +25 -0
  157. package/src/components/work.tsx +10 -5
  158. package/src/components/workspace.tsx +298 -0
  159. package/src/console.tsx +202 -32
  160. package/src/data.ts +101 -1
  161. package/src/dates.ts +23 -2
  162. package/src/i18n/en.ts +92 -16
  163. package/src/i18n/ko.ts +84 -16
  164. package/src/index.ts +32 -1
  165. package/src/limits.ts +2 -0
  166. package/src/router.ts +17 -5
  167. package/src/routes.ts +4 -0
  168. package/src/schemas.ts +140 -19
  169. package/src/styles/console.css +319 -11
  170. package/src/vocabulary.ts +28 -0
@@ -0,0 +1,46 @@
1
+ import { type PeopleVisibility, type RestWorkspace, type RestWorkspacePatch, type WeekStart } from "../api.js";
2
+ /** What a workspace is set to until an administrator says otherwise, for a console that answers no setting. */
3
+ export declare const DEFAULT_PEOPLE_VISIBILITY: PeopleVisibility;
4
+ /** Who sees whom, as the workspace says, or as a console older than the setting would have it. */
5
+ export declare function peopleVisibilityOf(workspace: RestWorkspace | undefined): PeopleVisibility;
6
+ /** The day the calendars begin a week on, as the workspace says, or the system default. */
7
+ export declare function weekStartOf(workspace: RestWorkspace | undefined): WeekStart;
8
+ /** The workspace's time zone, or none. */
9
+ export declare function timeZoneOf(workspace: RestWorkspace | undefined): string | undefined;
10
+ /** The zones this browser knows, for the picker to offer; none where it cannot say. */
11
+ export declare function knownTimeZones(): readonly string[];
12
+ /** The zone this device keeps time in, as the browser says; none where it cannot say. */
13
+ export declare function deviceTimeZone(): string | undefined;
14
+ /** A zone's offset from UTC at a moment, as `UTC+09:00`; none where the browser cannot say. */
15
+ export declare function offsetOf(zone: string, at: Date): string | undefined;
16
+ export interface TimeZoneOption {
17
+ readonly name: string;
18
+ /** The offset now, for the person to tell zones apart by; none where the browser cannot say. */
19
+ readonly offset: string | undefined;
20
+ }
21
+ export interface TimeZoneGroup {
22
+ /** The area before the slash, `Asia` of `Asia/Seoul`; empty for a zone with none, such as `UTC`. */
23
+ readonly area: string;
24
+ readonly zones: readonly TimeZoneOption[];
25
+ }
26
+ /**
27
+ * Zones for a picker: by their area, the areas in order, each zone with its offset at `at`; the
28
+ * zones with no area first, since `UTC` is one. `extra` zones the browser does not list, the one
29
+ * set and the device's, are offered too, so that the picker always shows what is chosen.
30
+ */
31
+ export declare function timeZoneGroups(zones: readonly string[], at: Date, extra?: readonly (string | undefined)[]): TimeZoneGroup[];
32
+ export interface WorkspaceSettingsViewProps {
33
+ readonly workspace: RestWorkspace;
34
+ }
35
+ /** The settings as they stand, one row each; where they are changed is the page's business. */
36
+ export declare function WorkspaceSettingsView(props: WorkspaceSettingsViewProps): import("react").JSX.Element;
37
+ export interface WorkspaceSettingsFormProps {
38
+ readonly workspace: RestWorkspace;
39
+ readonly busy?: boolean | undefined;
40
+ /** Called with what changed; nothing is sent when nothing did. */
41
+ readonly onSubmit: (patch: RestWorkspacePatch) => void;
42
+ readonly onCancel?: (() => void) | undefined;
43
+ }
44
+ /** Where an administrator changes the workspace's settings (ADR-0035). */
45
+ export declare function WorkspaceSettingsForm(props: WorkspaceSettingsFormProps): import("react").JSX.Element;
46
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/components/workspace.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAEvB,KAAK,SAAS,EACf,MAAM,WAAW,CAAC;AASnB,+GAA+G;AAC/G,eAAO,MAAM,yBAAyB,EAAE,gBAA6B,CAAC;AAEtE,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,CAEzF;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAE3E;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEnF;AAED,uFAAuF;AACvF,wBAAgB,cAAc,IAAI,SAAS,MAAM,EAAE,CASlD;AAED,yFAAyF;AACzF,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAOnD;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAYnE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,EAAE,EAAE,IAAI,EACR,KAAK,GAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAO,GAC1C,aAAa,EAAE,CAkBjB;AAMD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACnC;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,+BAkCtE;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,+BAkItE"}
@@ -0,0 +1,124 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useMemo, useState } from "react";
3
+ import { PEOPLE_VISIBILITIES, WEEK_STARTS, } from "../api.js";
4
+ import { useWords } from "../i18n/index.js";
5
+ import { Button } from "./ui.js";
6
+ // The workspace's own settings (ADR-0035), as an administrator keeps them on the Settings page:
7
+ // read by everyone, so that a member knows what the board shows them; changed on a form of
8
+ // their own, each setting a row with its words beside its control. Takes its data as props and
9
+ // nothing from the network.
10
+ /** What a workspace is set to until an administrator says otherwise, for a console that answers no setting. */
11
+ export const DEFAULT_PEOPLE_VISIBILITY = "everyone";
12
+ /** Who sees whom, as the workspace says, or as a console older than the setting would have it. */
13
+ export function peopleVisibilityOf(workspace) {
14
+ return workspace?.peopleVisibility ?? DEFAULT_PEOPLE_VISIBILITY;
15
+ }
16
+ /** The day the calendars begin a week on, as the workspace says, or the system default. */
17
+ export function weekStartOf(workspace) {
18
+ return workspace?.weekStart ?? "auto";
19
+ }
20
+ /** The workspace's time zone, or none. */
21
+ export function timeZoneOf(workspace) {
22
+ return workspace?.timeZone ?? undefined;
23
+ }
24
+ /** The zones this browser knows, for the picker to offer; none where it cannot say. */
25
+ export function knownTimeZones() {
26
+ try {
27
+ const intl = Intl;
28
+ return intl.supportedValuesOf?.("timeZone") ?? [];
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ /** The zone this device keeps time in, as the browser says; none where it cannot say. */
35
+ export function deviceTimeZone() {
36
+ try {
37
+ const zone = new Intl.DateTimeFormat().resolvedOptions().timeZone;
38
+ return zone === undefined || zone === "" ? undefined : zone;
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ /** A zone's offset from UTC at a moment, as `UTC+09:00`; none where the browser cannot say. */
45
+ export function offsetOf(zone, at) {
46
+ try {
47
+ const name = new Intl.DateTimeFormat("en-US", { timeZone: zone, timeZoneName: "longOffset" })
48
+ .formatToParts(at)
49
+ .find((part) => part.type === "timeZoneName")?.value;
50
+ if (name === undefined) {
51
+ return undefined;
52
+ }
53
+ return name === "GMT" ? "UTC+00:00" : name.replace(/^GMT/, "UTC");
54
+ }
55
+ catch {
56
+ return undefined;
57
+ }
58
+ }
59
+ /**
60
+ * Zones for a picker: by their area, the areas in order, each zone with its offset at `at`; the
61
+ * zones with no area first, since `UTC` is one. `extra` zones the browser does not list, the one
62
+ * set and the device's, are offered too, so that the picker always shows what is chosen.
63
+ */
64
+ export function timeZoneGroups(zones, at, extra = []) {
65
+ const names = new Set(zones);
66
+ for (const name of extra) {
67
+ if (name !== undefined && name !== "") {
68
+ names.add(name);
69
+ }
70
+ }
71
+ const groups = new Map();
72
+ for (const name of [...names].sort((a, b) => a.localeCompare(b, "en"))) {
73
+ const slash = name.indexOf("/");
74
+ const area = slash < 0 ? "" : name.slice(0, slash);
75
+ const list = groups.get(area) ?? [];
76
+ list.push({ name, offset: offsetOf(name, at) });
77
+ groups.set(area, list);
78
+ }
79
+ return [...groups.entries()]
80
+ .sort(([a], [b]) => (a === "" ? -1 : b === "" ? 1 : a.localeCompare(b, "en")))
81
+ .map(([area, options]) => ({ area, zones: options }));
82
+ }
83
+ /** A zone as the picker shows it: its name, and its offset where known. */
84
+ const labelOf = (zone) => zone.offset === undefined ? zone.name : `${zone.name} (${zone.offset})`;
85
+ /** The settings as they stand, one row each; where they are changed is the page's business. */
86
+ export function WorkspaceSettingsView(props) {
87
+ const words = useWords();
88
+ const settings = words.settings.workspace;
89
+ const zone = timeZoneOf(props.workspace);
90
+ const device = deviceTimeZone();
91
+ const offset = zone === undefined ? undefined : offsetOf(zone, new Date());
92
+ return (_jsxs("dl", { className: "sc-settings-list", children: [_jsxs("div", { className: "sc-settings-item", children: [_jsx("dt", { children: settings.peopleVisibility }), _jsx("dd", { children: words.vocabulary.peopleVisibility[peopleVisibilityOf(props.workspace)] })] }), _jsxs("div", { className: "sc-settings-item", children: [_jsx("dt", { children: settings.weekStart }), _jsx("dd", { children: words.vocabulary.weekStart[weekStartOf(props.workspace)] })] }), _jsxs("div", { className: "sc-settings-item", children: [_jsx("dt", { children: settings.timeZone }), _jsxs("dd", { children: [zone === undefined ? (settings.timeZoneNone) : (_jsxs(_Fragment, { children: [zone, offset !== undefined && _jsxs("span", { className: "sc-muted", children: [" (", offset, ")"] })] })), device !== undefined && device !== zone && (_jsx("span", { className: "sc-settings-note", children: settings.timeZoneDevice(device) }))] })] })] }));
93
+ }
94
+ /** Where an administrator changes the workspace's settings (ADR-0035). */
95
+ export function WorkspaceSettingsForm(props) {
96
+ const words = useWords();
97
+ const settings = words.settings.workspace;
98
+ const ids = { people: useId(), week: useId(), zone: useId() };
99
+ const current = {
100
+ peopleVisibility: peopleVisibilityOf(props.workspace),
101
+ weekStart: weekStartOf(props.workspace),
102
+ timeZone: timeZoneOf(props.workspace) ?? "",
103
+ };
104
+ const [peopleVisibility, setPeopleVisibility] = useState(current.peopleVisibility);
105
+ const [weekStart, setWeekStart] = useState(current.weekStart);
106
+ const [timeZone, setTimeZone] = useState(current.timeZone);
107
+ const device = useMemo(deviceTimeZone, []);
108
+ // UTC is offered whatever the browser lists, beside the zone set and the device's.
109
+ const groups = useMemo(() => timeZoneGroups(knownTimeZones(), new Date(), ["UTC", current.timeZone, device]), [current.timeZone, device]);
110
+ const patch = {
111
+ ...(peopleVisibility === current.peopleVisibility ? {} : { peopleVisibility }),
112
+ ...(weekStart === current.weekStart ? {} : { weekStart }),
113
+ ...(timeZone === current.timeZone ? {} : { timeZone: timeZone === "" ? null : timeZone }),
114
+ };
115
+ const changed = Object.keys(patch).length > 0;
116
+ const submit = (event) => {
117
+ event.preventDefault();
118
+ if (changed) {
119
+ props.onSubmit(patch);
120
+ }
121
+ };
122
+ return (_jsxs("form", { className: "sc-form sc-settings-form", "aria-label": settings.aria, onSubmit: submit, children: [_jsxs("div", { className: "sc-settings-row", children: [_jsxs("div", { className: "sc-settings-words", children: [_jsx("label", { className: "sc-settings-label", htmlFor: ids.people, children: settings.peopleVisibility }), _jsx("p", { className: "sc-settings-hint", children: settings.peopleVisibilityHint })] }), _jsx("div", { className: "sc-settings-control", children: _jsx("select", { id: ids.people, className: "sc-input", value: peopleVisibility, onChange: (event) => setPeopleVisibility(event.target.value), children: PEOPLE_VISIBILITIES.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.peopleVisibility[candidate] }, candidate))) }) })] }), _jsxs("div", { className: "sc-settings-row", children: [_jsxs("div", { className: "sc-settings-words", children: [_jsx("label", { className: "sc-settings-label", htmlFor: ids.week, children: settings.weekStart }), _jsx("p", { className: "sc-settings-hint", children: settings.weekStartHint })] }), _jsx("div", { className: "sc-settings-control", children: _jsx("select", { id: ids.week, className: "sc-input", value: weekStart, onChange: (event) => setWeekStart(event.target.value), children: WEEK_STARTS.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.weekStart[candidate] }, candidate))) }) })] }), _jsxs("div", { className: "sc-settings-row", children: [_jsxs("div", { className: "sc-settings-words", children: [_jsx("label", { className: "sc-settings-label", htmlFor: ids.zone, children: settings.timeZone }), _jsx("p", { className: "sc-settings-hint", children: settings.timeZoneHint })] }), _jsxs("div", { className: "sc-settings-control", children: [_jsxs("select", { id: ids.zone, className: "sc-input", value: timeZone, onChange: (event) => setTimeZone(event.target.value), children: [_jsx("option", { value: "", children: settings.timeZoneNone }), groups.map((group) => group.area === "" ? (group.zones.map((zone) => (_jsx("option", { value: zone.name, children: labelOf(zone) }, zone.name)))) : (_jsx("optgroup", { label: group.area, children: group.zones.map((zone) => (_jsx("option", { value: zone.name, children: labelOf(zone) }, zone.name))) }, group.area)))] }), device !== undefined && device !== timeZone && (_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setTimeZone(device), children: settings.timeZoneUseDevice(device) }))] })] }), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || !changed, children: settings.save }), props.onCancel !== undefined && (_jsx(Button, { type: "button", variant: "ghost", onClick: props.onCancel, children: words.common.cancel }))] })] }));
123
+ }
124
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/components/workspace.tsx"],"names":[],"mappings":"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"}
package/dist/console.css CHANGED
@@ -1177,6 +1177,7 @@ table {
1177
1177
  display: grid;
1178
1178
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
1179
1179
  gap: var(--sc-space-4);
1180
+ align-items: start;
1180
1181
  }
1181
1182
 
1182
1183
  .sc-input {
@@ -1237,6 +1238,150 @@ table {
1237
1238
  justify-self: start;
1238
1239
  }
1239
1240
 
1241
+ /* The workers of a task on its form: each a chip with the way to take them off, and the way to add one. */
1242
+ .sc-chips {
1243
+ display: flex;
1244
+ flex-wrap: wrap;
1245
+ align-items: center;
1246
+ gap: var(--sc-space-2);
1247
+ }
1248
+
1249
+ .sc-chip {
1250
+ display: inline-flex;
1251
+ align-items: center;
1252
+ gap: var(--sc-space-1);
1253
+ min-height: var(--sc-control-size);
1254
+ padding: 0 var(--sc-space-1) 0 var(--sc-space-2);
1255
+ border: var(--sc-border);
1256
+ border-radius: var(--sc-radius-md);
1257
+ background: var(--sc-color-bg-inset);
1258
+ font-size: var(--sc-text-sm);
1259
+ }
1260
+
1261
+ .sc-chip-remove,
1262
+ .sc-picker-clear {
1263
+ display: inline-grid;
1264
+ flex: none;
1265
+ place-items: center;
1266
+ width: 1.5rem;
1267
+ height: 1.5rem;
1268
+ border: 0;
1269
+ border-radius: var(--sc-radius-sm);
1270
+ background: transparent;
1271
+ color: var(--sc-color-text-muted);
1272
+ font-size: var(--sc-text-md);
1273
+ line-height: 1;
1274
+ cursor: pointer;
1275
+ }
1276
+
1277
+ .sc-chip-remove:hover:not(:disabled),
1278
+ .sc-picker-clear:hover:not(:disabled) {
1279
+ background: var(--sc-color-bg-raised);
1280
+ color: var(--sc-color-text);
1281
+ }
1282
+
1283
+ .sc-chip-remove:focus-visible,
1284
+ .sc-picker-clear:focus-visible {
1285
+ outline: var(--sc-focus-ring);
1286
+ }
1287
+
1288
+ .sc-chips .sc-chip-add {
1289
+ width: auto;
1290
+ min-width: 10rem;
1291
+ }
1292
+
1293
+ /* A picker: the field that searches a listing, its page of results under it, and the choice in its place. */
1294
+ .sc-picker {
1295
+ position: relative;
1296
+ min-width: 0;
1297
+ }
1298
+
1299
+ .sc-picker-chosen {
1300
+ display: flex;
1301
+ align-items: center;
1302
+ gap: var(--sc-space-2);
1303
+ min-height: var(--sc-control-size);
1304
+ padding: var(--sc-space-1) var(--sc-space-1) var(--sc-space-1) var(--sc-space-3);
1305
+ border: 1px solid var(--sc-color-border-strong);
1306
+ border-radius: var(--sc-radius-md);
1307
+ background: var(--sc-color-field);
1308
+ font-size: var(--sc-text-sm);
1309
+ }
1310
+
1311
+ .sc-picker-value {
1312
+ flex: 1;
1313
+ min-width: 0;
1314
+ overflow: hidden;
1315
+ text-overflow: ellipsis;
1316
+ white-space: nowrap;
1317
+ }
1318
+
1319
+ .sc-picker-list {
1320
+ position: absolute;
1321
+ z-index: 40;
1322
+ top: calc(100% + var(--sc-space-1));
1323
+ right: 0;
1324
+ left: 0;
1325
+ max-height: 18rem;
1326
+ margin: 0;
1327
+ padding: var(--sc-space-1);
1328
+ overflow-y: auto;
1329
+ list-style: none;
1330
+ border: var(--sc-border);
1331
+ border-radius: var(--sc-radius-md);
1332
+ background: var(--sc-color-bg-inset);
1333
+ box-shadow: var(--sc-shadow-stage);
1334
+ font-size: var(--sc-text-sm);
1335
+ }
1336
+
1337
+ /* Where the window has no room below the field, and more above, the list stands above it. */
1338
+ .sc-picker-list-above {
1339
+ top: auto;
1340
+ bottom: calc(100% + var(--sc-space-1));
1341
+ }
1342
+
1343
+ .sc-picker-option {
1344
+ padding: var(--sc-space-2);
1345
+ overflow: hidden;
1346
+ border-radius: var(--sc-radius-sm);
1347
+ text-overflow: ellipsis;
1348
+ white-space: nowrap;
1349
+ cursor: pointer;
1350
+ }
1351
+
1352
+ .sc-picker-option-active {
1353
+ background: var(--sc-color-bg-raised);
1354
+ }
1355
+
1356
+ .sc-picker-note {
1357
+ padding: var(--sc-space-2);
1358
+ }
1359
+
1360
+ /* The workers of a task on a card or a row: pictures side by side, and how many more. */
1361
+ .sc-workers {
1362
+ display: inline-flex;
1363
+ align-items: center;
1364
+ }
1365
+
1366
+ .sc-workers > * + * {
1367
+ margin-left: -0.375rem;
1368
+ }
1369
+
1370
+ .sc-workers-more {
1371
+ margin-inline: var(--sc-space-1);
1372
+ color: var(--sc-color-text-muted);
1373
+ font-size: var(--sc-text-xs);
1374
+ font-weight: var(--sc-weight-medium);
1375
+ }
1376
+
1377
+ .sc-worker-list {
1378
+ display: grid;
1379
+ gap: var(--sc-space-1);
1380
+ margin: 0;
1381
+ padding: 0;
1382
+ list-style: none;
1383
+ }
1384
+
1240
1385
  .sc-form-actions {
1241
1386
  display: flex;
1242
1387
  flex-wrap: wrap;
@@ -2905,8 +3050,10 @@ table {
2905
3050
  white-space: nowrap;
2906
3051
  }
2907
3052
 
2908
- /* Lit a little under the pointer by its colour, not by a filter, which would light the card within it too. */
2909
- .sc-calendar-bar:hover {
3053
+ /* The task under the pointer is lit a little by its colour, in every piece of its bar and in
3054
+ every week it crosses, never one piece alone; by its colour and not by a filter, which would
3055
+ light the card within it too. */
3056
+ .sc-calendar-bar-pointed {
2910
3057
  background: color-mix(in srgb, var(--sc-category-fill), white 12%);
2911
3058
  }
2912
3059
 
@@ -2924,6 +3071,18 @@ table {
2924
3071
  border-end-end-radius: var(--sc-radius-full);
2925
3072
  }
2926
3073
 
3074
+ /* The title of a bar with more days in the week runs along the bar as far as its days reach,
3075
+ less the room of its end, instead of stopping at the first day's edge: above every piece,
3076
+ the one under the pointer included, and under the cards; the pointer goes through it to the
3077
+ piece of the day beneath. The days are the first piece's own custom property. */
3078
+ .sc-calendar-task-title-spanning {
3079
+ position: relative;
3080
+ z-index: 25;
3081
+ flex: none;
3082
+ max-width: calc(var(--sc-span, 1) * 100% - 2.25rem);
3083
+ pointer-events: none;
3084
+ }
3085
+
2927
3086
  .sc-calendar-bar.sc-calendar-late {
2928
3087
  border-color: color-mix(in srgb, var(--sc-color-danger) 70%, transparent);
2929
3088
  color: var(--sc-color-danger);
@@ -3364,18 +3523,12 @@ table {
3364
3523
  position: relative;
3365
3524
  }
3366
3525
 
3367
- /* The item under the pointer rises above its neighbours, which would otherwise paint over its card. */
3368
- .sc-calendar-task:hover,
3369
- .sc-calendar-task:focus-visible,
3370
- .sc-calendar-bar:hover,
3371
- .sc-calendar-bar:focus-visible {
3372
- z-index: 20;
3373
- }
3374
-
3526
+ /* The card rises above its neighbours and above a title running along a bar; the item under the
3527
+ pointer itself stays in its layer, so that nothing of it covers such a title. */
3375
3528
  .sc-task-tip {
3376
3529
  position: absolute;
3377
3530
  left: 0;
3378
- z-index: 20;
3531
+ z-index: 30;
3379
3532
  width: max-content;
3380
3533
  max-width: 20rem;
3381
3534
  padding: var(--sc-space-2) var(--sc-space-3);
@@ -4130,3 +4283,158 @@ table {
4130
4283
  .sc-goal-view-list {
4131
4284
  display: block;
4132
4285
  }
4286
+
4287
+ /* The workspace's settings (ADR-0035): each setting a row, its name beside its value; on the form,
4288
+ its name and its hint beside a control of a bounded width, so that a short choice is not a
4289
+ field as wide as the page. */
4290
+ .sc-settings-list {
4291
+ display: grid;
4292
+ margin: 0;
4293
+ font-size: var(--sc-text-sm);
4294
+ }
4295
+
4296
+ .sc-settings-item {
4297
+ display: grid;
4298
+ grid-template-columns: minmax(8rem, 14rem) minmax(0, 1fr);
4299
+ gap: var(--sc-space-1) var(--sc-space-5);
4300
+ padding: var(--sc-space-3) 0;
4301
+ border-top: var(--sc-border);
4302
+ }
4303
+
4304
+ .sc-settings-item:first-child {
4305
+ padding-top: 0;
4306
+ border-top: 0;
4307
+ }
4308
+
4309
+ .sc-settings-item:last-child {
4310
+ padding-bottom: 0;
4311
+ }
4312
+
4313
+ .sc-settings-item dt {
4314
+ color: var(--sc-color-text-muted);
4315
+ }
4316
+
4317
+ .sc-settings-item dd {
4318
+ margin: 0;
4319
+ }
4320
+
4321
+ .sc-settings-note {
4322
+ margin-left: var(--sc-space-3);
4323
+ color: var(--sc-color-text-muted);
4324
+ }
4325
+
4326
+ .sc-settings-form {
4327
+ gap: 0;
4328
+ }
4329
+
4330
+ .sc-settings-row {
4331
+ display: grid;
4332
+ grid-template-columns: minmax(0, 1fr) minmax(14rem, 20rem);
4333
+ gap: var(--sc-space-3) var(--sc-space-6);
4334
+ align-items: start;
4335
+ padding: var(--sc-space-4) 0;
4336
+ border-top: var(--sc-border);
4337
+ }
4338
+
4339
+ .sc-settings-row:first-child {
4340
+ padding-top: 0;
4341
+ border-top: 0;
4342
+ }
4343
+
4344
+ .sc-settings-label {
4345
+ display: block;
4346
+ font-weight: var(--sc-weight-medium);
4347
+ }
4348
+
4349
+ .sc-settings-hint {
4350
+ max-width: var(--sc-width-prose);
4351
+ margin: var(--sc-space-1) 0 0;
4352
+ color: var(--sc-color-text-muted);
4353
+ font-size: var(--sc-text-sm);
4354
+ }
4355
+
4356
+ .sc-settings-control {
4357
+ display: grid;
4358
+ justify-items: start;
4359
+ gap: var(--sc-space-2);
4360
+ }
4361
+
4362
+ .sc-settings-control .sc-input {
4363
+ width: 100%;
4364
+ }
4365
+
4366
+ .sc-settings-form .sc-form-actions {
4367
+ padding-top: var(--sc-space-4);
4368
+ border-top: var(--sc-border);
4369
+ }
4370
+
4371
+ @media (max-width: 40rem) {
4372
+ .sc-settings-item,
4373
+ .sc-settings-row {
4374
+ grid-template-columns: minmax(0, 1fr);
4375
+ }
4376
+ }
4377
+
4378
+ /* The pack token (ADR-0028, ADR-0036): what it is for first, then the two ways to one side by
4379
+ side, each a card with its words before its controls, and the code shown large while the
4380
+ page waits for the approval. */
4381
+ .sc-pack-intro {
4382
+ max-width: var(--sc-width-prose);
4383
+ margin: 0 0 var(--sc-space-5);
4384
+ color: var(--sc-color-text-muted);
4385
+ font-size: var(--sc-text-sm);
4386
+ }
4387
+
4388
+ .sc-pack-ways {
4389
+ display: grid;
4390
+ grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
4391
+ gap: var(--sc-space-4);
4392
+ }
4393
+
4394
+ .sc-pack-way {
4395
+ display: grid;
4396
+ align-content: start;
4397
+ gap: var(--sc-space-3);
4398
+ padding: var(--sc-space-4);
4399
+ border: var(--sc-border);
4400
+ border-radius: var(--sc-radius-lg);
4401
+ background: var(--sc-color-sheet);
4402
+ }
4403
+
4404
+ .sc-pack-way-title {
4405
+ font-size: var(--sc-text-md);
4406
+ font-weight: var(--sc-weight-medium);
4407
+ }
4408
+
4409
+ .sc-pack-way .sc-field-hint {
4410
+ margin-top: 0;
4411
+ }
4412
+
4413
+ .sc-pack-connect {
4414
+ display: grid;
4415
+ gap: var(--sc-space-3);
4416
+ }
4417
+
4418
+ .sc-pack-connect-code {
4419
+ display: flex;
4420
+ flex-wrap: wrap;
4421
+ align-items: baseline;
4422
+ gap: var(--sc-space-3);
4423
+ }
4424
+
4425
+ .sc-pack-code {
4426
+ font-size: var(--sc-text-xl);
4427
+ letter-spacing: 0.12em;
4428
+ }
4429
+
4430
+ .sc-pack-connect-waiting {
4431
+ display: flex;
4432
+ align-items: center;
4433
+ gap: var(--sc-space-2);
4434
+ color: var(--sc-color-text-muted);
4435
+ font-size: var(--sc-text-sm);
4436
+ }
4437
+
4438
+ .sc-pack-actions {
4439
+ margin-top: var(--sc-space-5);
4440
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.tsx"],"names":[],"mappings":"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"}