@skillcdn/console 0.1.9 → 0.1.11

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 (162) hide show
  1. package/README.md +6 -6
  2. package/dist/api.d.ts +6 -5
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +5 -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 +303 -18
  8. package/dist/cli/cli.js.map +1 -1
  9. package/dist/cli/format.d.ts +11 -1
  10. package/dist/cli/format.d.ts.map +1 -1
  11. package/dist/cli/format.js +87 -6
  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 +70 -14
  15. package/dist/cli/help.js.map +1 -1
  16. package/dist/client.d.ts +44 -8
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +32 -4
  19. package/dist/client.js.map +1 -1
  20. package/dist/components/board.d.ts +24 -1
  21. package/dist/components/board.d.ts.map +1 -1
  22. package/dist/components/board.js +66 -5
  23. package/dist/components/board.js.map +1 -1
  24. package/dist/components/calendar.d.ts +54 -0
  25. package/dist/components/calendar.d.ts.map +1 -0
  26. package/dist/components/calendar.js +156 -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 +16 -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 +23 -7
  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/paged.d.ts +14 -0
  44. package/dist/components/paged.d.ts.map +1 -0
  45. package/dist/components/paged.js +28 -0
  46. package/dist/components/paged.js.map +1 -0
  47. package/dist/components/projects.d.ts +22 -2
  48. package/dist/components/projects.d.ts.map +1 -1
  49. package/dist/components/projects.js +35 -7
  50. package/dist/components/projects.js.map +1 -1
  51. package/dist/components/runs.d.ts.map +1 -1
  52. package/dist/components/runs.js +2 -2
  53. package/dist/components/runs.js.map +1 -1
  54. package/dist/components/shell.d.ts +2 -1
  55. package/dist/components/shell.d.ts.map +1 -1
  56. package/dist/components/shell.js +1 -1
  57. package/dist/components/shell.js.map +1 -1
  58. package/dist/components/task-form.d.ts +5 -1
  59. package/dist/components/task-form.d.ts.map +1 -1
  60. package/dist/components/task-form.js +13 -1
  61. package/dist/components/task-form.js.map +1 -1
  62. package/dist/components/task-list.d.ts +16 -0
  63. package/dist/components/task-list.d.ts.map +1 -0
  64. package/dist/components/task-list.js +16 -0
  65. package/dist/components/task-list.js.map +1 -0
  66. package/dist/components/task-view.d.ts +9 -1
  67. package/dist/components/task-view.d.ts.map +1 -1
  68. package/dist/components/task-view.js +10 -4
  69. package/dist/components/task-view.js.map +1 -1
  70. package/dist/components/ui.d.ts +30 -1
  71. package/dist/components/ui.d.ts.map +1 -1
  72. package/dist/components/ui.js +60 -0
  73. package/dist/components/ui.js.map +1 -1
  74. package/dist/components/work.d.ts +10 -0
  75. package/dist/components/work.d.ts.map +1 -0
  76. package/dist/components/work.js +33 -0
  77. package/dist/components/work.js.map +1 -0
  78. package/dist/console.css +658 -0
  79. package/dist/console.d.ts +8 -0
  80. package/dist/console.d.ts.map +1 -1
  81. package/dist/console.js +145 -13
  82. package/dist/console.js.map +1 -1
  83. package/dist/data.d.ts +19 -3
  84. package/dist/data.d.ts.map +1 -1
  85. package/dist/data.js +51 -4
  86. package/dist/data.js.map +1 -1
  87. package/dist/dates.d.ts +39 -0
  88. package/dist/dates.d.ts.map +1 -0
  89. package/dist/dates.js +120 -0
  90. package/dist/dates.js.map +1 -0
  91. package/dist/i18n/en.d.ts +172 -5
  92. package/dist/i18n/en.d.ts.map +1 -1
  93. package/dist/i18n/en.js +183 -6
  94. package/dist/i18n/en.js.map +1 -1
  95. package/dist/i18n/ko.d.ts.map +1 -1
  96. package/dist/i18n/ko.js +178 -6
  97. package/dist/i18n/ko.js.map +1 -1
  98. package/dist/index.d.ts +12 -5
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +12 -5
  101. package/dist/index.js.map +1 -1
  102. package/dist/limits.d.ts +11 -0
  103. package/dist/limits.d.ts.map +1 -1
  104. package/dist/limits.js +11 -0
  105. package/dist/limits.js.map +1 -1
  106. package/dist/marks.d.ts +12 -0
  107. package/dist/marks.d.ts.map +1 -0
  108. package/dist/marks.js +31 -0
  109. package/dist/marks.js.map +1 -0
  110. package/dist/router.d.ts +51 -1
  111. package/dist/router.d.ts.map +1 -1
  112. package/dist/router.js +80 -1
  113. package/dist/router.js.map +1 -1
  114. package/dist/routes.d.ts +14 -1
  115. package/dist/routes.d.ts.map +1 -1
  116. package/dist/routes.js +17 -0
  117. package/dist/routes.js.map +1 -1
  118. package/dist/schemas.d.ts +489 -3
  119. package/dist/schemas.d.ts.map +1 -1
  120. package/dist/schemas.js +150 -9
  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 +31 -0
  125. package/dist/vocabulary.js.map +1 -1
  126. package/docs/specs/cli.md +17 -8
  127. package/docs/specs/rest.md +48 -17
  128. package/package.json +1 -1
  129. package/skills/working-the-board/SKILL.md +7 -6
  130. package/src/api.ts +42 -0
  131. package/src/cli/cli.ts +362 -18
  132. package/src/cli/format.ts +96 -6
  133. package/src/cli/help.ts +77 -15
  134. package/src/client.ts +98 -7
  135. package/src/components/board.tsx +173 -13
  136. package/src/components/calendar.tsx +367 -0
  137. package/src/components/categories.tsx +209 -0
  138. package/src/components/decision-list.tsx +67 -5
  139. package/src/components/event-feed.tsx +46 -27
  140. package/src/components/goals.tsx +264 -0
  141. package/src/components/paged.tsx +39 -0
  142. package/src/components/projects.tsx +128 -10
  143. package/src/components/runs.tsx +7 -1
  144. package/src/components/shell.tsx +5 -2
  145. package/src/components/task-form.tsx +78 -1
  146. package/src/components/task-list.tsx +64 -0
  147. package/src/components/task-view.tsx +75 -4
  148. package/src/components/ui.tsx +116 -1
  149. package/src/components/work.tsx +93 -0
  150. package/src/console.tsx +376 -9
  151. package/src/data.ts +83 -12
  152. package/src/dates.ts +143 -0
  153. package/src/i18n/en.ts +193 -6
  154. package/src/i18n/ko.ts +184 -6
  155. package/src/index.ts +62 -1
  156. package/src/limits.ts +11 -0
  157. package/src/marks.ts +40 -0
  158. package/src/router.ts +131 -6
  159. package/src/routes.ts +19 -0
  160. package/src/schemas.ts +187 -7
  161. package/src/styles/console.css +658 -0
  162. package/src/vocabulary.ts +43 -0
@@ -0,0 +1,156 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { OPEN_TASK_STATES } from "../api.js";
3
+ import { addMonths, daysBetween, firstDayOfWeek, formatMonth, formatWeekday, monthGrid, monthOf, today as todayOf, weekdays, } from "../dates.js";
4
+ import { useLanguage, useWords } from "../i18n/index.js";
5
+ import { cx, PersonChip } from "./ui.js";
6
+ // The calendar of a project (ADR-0019): the month as a grid. A task planned from a start to a
7
+ // due day lies across its days as a bar, in a lane of its own within each week so that the bars
8
+ // of one week never cross; a task with a due day alone sits on it as a dot, and one with a
9
+ // start alone is marked on that day. Who has what says whether the work is on its days. Takes
10
+ // its data as props and nothing from the network; the month shown is the address's (ADR-0010).
11
+ const isOpen = (task) => OPEN_TASK_STATES.includes(task.state);
12
+ /** Whether a task lies across days: a start and a due day, and the due day after the start. */
13
+ const spans = (task) => task.startsOn !== null && task.dueOn !== null && task.startsOn < task.dueOn;
14
+ /**
15
+ * The bars of one week: every task lying across days that touches the week, cut to it, each
16
+ * in the first lane where it crosses nothing that was laid before it. The longest and earliest
17
+ * go first, so that the lanes stay few.
18
+ */
19
+ export function weekSegments(week, tasks) {
20
+ const first = week[0]?.day;
21
+ const last = week[week.length - 1]?.day;
22
+ if (first === undefined || last === undefined) {
23
+ return [];
24
+ }
25
+ const cut = tasks
26
+ .filter(spans)
27
+ .flatMap((task) => {
28
+ const startsOn = task.startsOn ?? first;
29
+ const dueOn = task.dueOn ?? last;
30
+ if (dueOn < first || startsOn > last) {
31
+ return [];
32
+ }
33
+ const from = startsOn < first ? 0 : daysBetween(first, startsOn);
34
+ const to = dueOn > last ? week.length - 1 : daysBetween(first, dueOn);
35
+ return [{ task, from, to, begins: startsOn >= first, ends: dueOn <= last }];
36
+ })
37
+ .sort((a, b) => a.from - b.from || b.to - b.from - (a.to - a.from) || a.task.number - b.task.number);
38
+ const ends = [];
39
+ return cut.map((segment) => {
40
+ let lane = ends.findIndex((end) => end < segment.from);
41
+ if (lane === -1) {
42
+ lane = ends.length;
43
+ ends.push(segment.to);
44
+ }
45
+ else {
46
+ ends[lane] = segment.to;
47
+ }
48
+ return { ...segment, lane };
49
+ });
50
+ }
51
+ function push(map, day, task) {
52
+ const list = map.get(day);
53
+ if (list === undefined) {
54
+ map.set(day, [task]);
55
+ }
56
+ else {
57
+ list.push(task);
58
+ }
59
+ }
60
+ export function Calendar(props) {
61
+ const words = useWords().calendar;
62
+ const { tag } = useLanguage();
63
+ const now = props.today ?? todayOf();
64
+ const firstDay = firstDayOfWeek(tag);
65
+ const weeks = monthGrid(props.month, firstDay);
66
+ const due = new Map();
67
+ const starting = new Map();
68
+ for (const task of props.tasks) {
69
+ if (spans(task)) {
70
+ continue;
71
+ }
72
+ if (task.dueOn !== null) {
73
+ push(due, task.dueOn, task);
74
+ }
75
+ else if (task.startsOn !== null) {
76
+ push(starting, task.startsOn, task);
77
+ }
78
+ }
79
+ // Within a day, what is still open comes first; the rest reads as what was.
80
+ for (const list of due.values()) {
81
+ list.sort((a, b) => Number(isOpen(b)) - Number(isOpen(a)) || a.number - b.number);
82
+ }
83
+ const inMonth = (day) => monthOf(day) === props.month;
84
+ const monthWeeks = weeks.map((week) => ({ week, segments: weekSegments(week, props.tasks) }));
85
+ const nothing = [...due.keys()].every((day) => !inMonth(day)) &&
86
+ [...starting.keys()].every((day) => !inMonth(day)) &&
87
+ monthWeeks.every(({ week, segments }) => segments.every((segment) => !week.slice(segment.from, segment.to + 1).some((cell) => cell.inMonth)));
88
+ const tone = (task, day) => cx(!isOpen(task) && "sc-calendar-over", isOpen(task) && day < now && "sc-calendar-late");
89
+ return (_jsxs("div", { className: "sc-calendar", children: [_jsxs("div", { className: "sc-calendar-head", children: [_jsx("h2", { className: "sc-calendar-month", children: formatMonth(props.month, tag) }), _jsxs("nav", { className: "sc-calendar-nav", "aria-label": words.grid, children: [_jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, -1)), "aria-label": words.previous, children: "<" }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(monthOf(now)), children: words.thisMonth }), _jsx("a", { className: "sc-button sc-button-ghost sc-button-sm", href: props.monthHref(addMonths(props.month, 1)), "aria-label": words.next, children: ">" })] })] }), _jsxs("table", { className: "sc-calendar-grid", "aria-label": words.grid, children: [_jsx("thead", { children: _jsx("tr", { children: weekdays(firstDay).map((weekday) => (_jsx("th", { scope: "col", children: formatWeekday(weekday, tag) }, weekday))) }) }), _jsx("tbody", { children: monthWeeks.map(({ week, segments }) => {
90
+ const lanes = segments.reduce((most, segment) => Math.max(most, segment.lane + 1), 0);
91
+ return (_jsx("tr", { children: week.map((cell, column) => (_jsxs("td", { className: cx("sc-calendar-cell", !cell.inMonth && "sc-calendar-cell-outside", cell.day === now && "sc-calendar-cell-today"), children: [_jsx("span", { className: "sc-calendar-day", children: Number(cell.day.slice(8)) }), Array.from({ length: lanes }, (_, lane) => {
92
+ const segment = segments.find((candidate) => candidate.lane === lane &&
93
+ candidate.from <= column &&
94
+ column <= candidate.to);
95
+ if (segment === undefined) {
96
+ // The lane is someone else's on this day: the bars below keep their height.
97
+ // biome-ignore lint/suspicious/noArrayIndexKey: an empty lane is nothing but its position, and the lanes of a week never reorder
98
+ return _jsx("span", { className: "sc-calendar-lane", "aria-hidden": "true" }, lane);
99
+ }
100
+ const { task } = segment;
101
+ return (_jsx("a", { className: cx("sc-calendar-bar", `sc-category-${task.category?.color ?? "gray"}`, segment.from === column && segment.begins && "sc-calendar-bar-begins", segment.to === column && segment.ends && "sc-calendar-bar-ends", tone(task, task.dueOn ?? cell.day)), href: props.taskHref(task), title: `#${task.number} ${task.title}`, children: segment.from === column && (_jsx("span", { className: "sc-calendar-task-title", children: task.title })) }, task.id));
102
+ }), (due.get(cell.day) ?? []).map((task) => (_jsxs("a", { className: cx("sc-calendar-task", tone(task, cell.day)), href: props.taskHref(task), title: `#${task.number} ${task.title}`, children: [_jsx("span", { className: cx("sc-calendar-dot", `sc-category-${task.category?.color ?? "gray"}`) }), _jsx("span", { className: "sc-calendar-task-title", children: task.title })] }, task.id))), (starting.get(cell.day) ?? []).map((task) => (_jsx("a", { className: "sc-calendar-task sc-calendar-task-start", href: props.taskHref(task), title: `#${task.number} ${task.title}: ${words.startsOnly}`, children: _jsx("span", { className: "sc-calendar-task-title", children: task.title }) }, task.id)))] }, cell.day))) }, week[0]?.day));
103
+ }) })] }), (props.categories ?? []).length > 0 && (_jsx("dl", { className: "sc-calendar-legend", "aria-label": words.legend.title, children: (props.categories ?? []).map((category) => (_jsxs("div", { children: [_jsx("dt", { children: _jsx("span", { className: cx("sc-calendar-dot", `sc-category-${category.color}`) }) }), _jsx("dd", { children: category.name })] }, category.key))) })), nothing && _jsx("p", { className: "sc-muted", children: words.nothingDue })] }));
104
+ }
105
+ /** Who has what, from the open tasks: by login, with the unassigned last. */
106
+ export function workloadOf(tasks, today) {
107
+ const rows = new Map();
108
+ for (const task of tasks.filter(isOpen)) {
109
+ const key = task.assignee?.id ?? "";
110
+ const row = rows.get(key);
111
+ if (row === undefined) {
112
+ rows.set(key, { person: task.assignee ?? undefined, tasks: [task] });
113
+ }
114
+ else {
115
+ row.tasks.push(task);
116
+ }
117
+ }
118
+ const count = (list) => ({
119
+ open: list.length,
120
+ inProgress: list.filter((task) => task.state === "in_progress" || task.state === "in_review")
121
+ .length,
122
+ dueSoon: list.filter((task) => {
123
+ if (task.dueOn === null) {
124
+ return false;
125
+ }
126
+ const days = daysBetween(today, task.dueOn);
127
+ return days >= 0 && days <= 7;
128
+ }).length,
129
+ overdue: list.filter((task) => task.dueOn !== null && task.dueOn < today).length,
130
+ });
131
+ return [...rows.values()]
132
+ .map((row) => ({ person: row.person, ...count(row.tasks) }))
133
+ .sort((a, b) => {
134
+ if (a.person === undefined) {
135
+ return 1;
136
+ }
137
+ if (b.person === undefined) {
138
+ return -1;
139
+ }
140
+ return a.person.login.localeCompare(b.person.login);
141
+ });
142
+ }
143
+ /** Who has what: a row per person, and what of theirs is late or due soon. */
144
+ export function Workload(props) {
145
+ const words = useWords().calendar.workload;
146
+ const rows = workloadOf(props.tasks, props.today ?? todayOf());
147
+ if (rows.length === 0) {
148
+ return null;
149
+ }
150
+ return (_jsxs("table", { className: "sc-workload", "aria-label": words.title, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: words.person }), _jsx("th", { scope: "col", children: words.open }), _jsx("th", { scope: "col", children: words.inProgress }), _jsx("th", { scope: "col", children: words.dueSoon }), _jsx("th", { scope: "col", children: words.overdue })] }) }), _jsx("tbody", { children: rows.map((row) => {
151
+ const href = props.personHref?.(row.person);
152
+ const who = row.person === undefined ? (_jsx("span", { className: "sc-muted", children: words.unassigned })) : (_jsx(PersonChip, { person: row.person }));
153
+ return (_jsxs("tr", { children: [_jsx("th", { scope: "row", children: href === undefined ? who : _jsx("a", { href: href, children: who }) }), _jsx("td", { children: row.open }), _jsx("td", { children: row.inProgress }), _jsx("td", { className: cx(row.dueSoon > 0 && "sc-workload-soon"), children: row.dueSoon }), _jsx("td", { className: cx(row.overdue > 0 && "sc-workload-late"), children: row.overdue })] }, row.person?.id ?? ""));
154
+ }) })] }));
155
+ }
156
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from "react";
2
+ import { type RestCategory, type RestCategoryInput, type RestCategoryPatch } from "../api.js";
3
+ export interface CategoryListProps {
4
+ readonly categories: readonly RestCategory[];
5
+ readonly busy?: boolean | undefined;
6
+ /** Called with a category to add. Left out, the list is read here, not changed. */
7
+ readonly onAdd?: ((input: RestCategoryInput) => void) | undefined;
8
+ readonly onChange?: ((category: RestCategory, patch: RestCategoryPatch) => void) | undefined;
9
+ readonly onRemove?: ((category: RestCategory) => void) | undefined;
10
+ readonly empty?: ReactNode;
11
+ }
12
+ export declare function CategoryList(props: CategoryListProps): import("react").JSX.Element;
13
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/components/categories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AASnB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAkFD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAoGpD"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { CATEGORY_COLORS, MAX_CATEGORY_KEY_LENGTH, MAX_CATEGORY_NAME_LENGTH, } from "../api.js";
4
+ import { useWords } from "../i18n/index.js";
5
+ import { keyOf } from "./projects.js";
6
+ import { Button, CategoryBadge, cx } from "./ui.js";
7
+ /** One category, with its name and its colour open to change where an administrator is looking. */
8
+ function CategoryRow(props) {
9
+ const words = useWords();
10
+ const { category } = props;
11
+ const [name, setName] = useState(category.name);
12
+ const [color, setColor] = useState(category.color);
13
+ const changed = name.trim() !== category.name || color !== category.color;
14
+ if (props.onChange === undefined) {
15
+ return (_jsxs("li", { className: "sc-category-row", children: [_jsx(CategoryBadge, { category: category }), _jsx("code", { className: "sc-project-key", children: category.key })] }));
16
+ }
17
+ return (_jsx("li", { className: "sc-category-row", children: _jsxs("form", { className: "sc-category-form", onSubmit: (event) => {
18
+ event.preventDefault();
19
+ if (changed && name.trim() !== "") {
20
+ props.onChange?.(category, { name: name.trim(), color });
21
+ }
22
+ }, children: [_jsx("span", { className: cx("sc-category-swatch", `sc-category-${color}`), "aria-hidden": "true" }), _jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.categories.nameOf(category.key) }), _jsx("input", { className: "sc-input", value: name, maxLength: MAX_CATEGORY_NAME_LENGTH, required: true, onChange: (event) => setName(event.target.value) })] }), _jsx("code", { className: "sc-project-key", children: category.key }), _jsxs("label", { className: "sc-field sc-field-inline", children: [_jsx("span", { className: "sc-visually-hidden", children: words.categories.colorOf(category.key) }), _jsx("select", { className: "sc-input", value: color, onChange: (event) => setColor(event.target.value), children: CATEGORY_COLORS.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.categoryColor[candidate] }, candidate))) })] }), _jsx(Button, { type: "submit", variant: "primary", size: "sm", disabled: props.busy === true || !changed || name.trim() === "", children: words.common.save }), props.onRemove !== undefined && (_jsx(Button, { variant: "danger", size: "sm", disabled: props.busy === true, onClick: () => props.onRemove?.(category), children: words.common.remove }))] }) }));
23
+ }
24
+ export function CategoryList(props) {
25
+ const words = useWords();
26
+ const form = words.categories.form;
27
+ const [name, setName] = useState("");
28
+ const [key, setKey] = useState("");
29
+ const [keyTouched, setKeyTouched] = useState(false);
30
+ const [color, setColor] = useState("gray");
31
+ const add = (event) => {
32
+ event.preventDefault();
33
+ if (name.trim() === "" || key.trim() === "") {
34
+ return;
35
+ }
36
+ props.onAdd?.({ key: key.trim(), name: name.trim(), color });
37
+ setName("");
38
+ setKey("");
39
+ setKeyTouched(false);
40
+ setColor("gray");
41
+ };
42
+ return (_jsxs("div", { className: "sc-categories", children: [props.categories.length === 0 ? ((props.empty ?? null)) : (_jsx("ul", { className: "sc-category-list", "aria-label": words.categories.list, children: props.categories.map((category) => (_jsx(CategoryRow, { category: category, busy: props.busy, onChange: props.onChange, onRemove: props.onRemove }, category.key))) })), props.onAdd !== undefined && (_jsx("form", { className: "sc-form sc-member-form", "aria-label": words.categories.addAria, onSubmit: add, children: _jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.name }), _jsx("input", { className: "sc-input", value: name, maxLength: MAX_CATEGORY_NAME_LENGTH, required: true, onChange: (event) => {
43
+ setName(event.target.value);
44
+ if (!keyTouched) {
45
+ setKey(keyOf(event.target.value).slice(0, MAX_CATEGORY_KEY_LENGTH));
46
+ }
47
+ } })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.key }), _jsx("input", { className: "sc-input", value: key, maxLength: MAX_CATEGORY_KEY_LENGTH, pattern: "[a-z0-9]([a-z0-9-]*[a-z0-9])?", required: true, title: form.keyHint, onChange: (event) => {
48
+ setKeyTouched(true);
49
+ setKey(event.target.value);
50
+ } })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.color }), _jsx("select", { className: "sc-input", value: color, onChange: (event) => setColor(event.target.value), children: CATEGORY_COLORS.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.categoryColor[candidate] }, candidate))) })] }), _jsx("div", { className: "sc-form-actions", children: _jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || name.trim() === "" || key.trim() === "", children: form.add }) })] }) }))] }));
51
+ }
52
+ //# sourceMappingURL=categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/components/categories.tsx"],"names":[],"mappings":"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"}
@@ -28,5 +28,15 @@ export interface DecisionListProps {
28
28
  readonly busy?: boolean | undefined;
29
29
  readonly empty?: React.ReactNode;
30
30
  }
31
+ export interface DecisionLogProps {
32
+ /** The decisions answered, newest first. */
33
+ readonly decisions: readonly RestDecision[];
34
+ readonly tasks?: ReadonlyMap<string, RestTask> | undefined;
35
+ readonly taskHref?: ((task: RestTask) => string) | undefined;
36
+ /** Where each decision's own page is, with its context, its rationale and what followed. */
37
+ readonly decisionHref?: ((decision: RestDecision) => string) | undefined;
38
+ }
39
+ /** The record: one row per decision answered, what was asked, what was chosen, by whom, when. */
40
+ export declare function DecisionLog(props: DecisionLogProps): import("react").JSX.Element;
31
41
  export declare function DecisionList(props: DecisionListProps): import("react").JSX.Element;
32
42
  //# sourceMappingURL=decision-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-list.d.ts","sourceRoot":"","sources":["../../src/components/decision-list.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AASnB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7D,mEAAmE;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1D,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3F,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAyED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA0HpD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1D,yCAAyC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAClC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAmCpD"}
1
+ {"version":3,"file":"decision-list.d.ts","sourceRoot":"","sources":["../../src/components/decision-list.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { useState } from "react";
3
3
  import { MAX_BODY_LENGTH, MAX_NOTE_LENGTH, } from "../api.js";
4
4
  import { useWords } from "../i18n/index.js";
5
5
  import { Markdown } from "./markdown.js";
6
+ import { ShowMore, usePaged } from "./paged.js";
6
7
  import { Button, cx, PersonChip, Time } from "./ui.js";
7
8
  /** What followed the decision: shown, and written or changed by whoever may. */
8
9
  function Outcome(props) {
@@ -43,11 +44,25 @@ export function DecisionCard(props) {
43
44
  }
44
45
  }, children: [_jsx("div", { className: "sc-options-list", role: "radiogroup", "aria-label": words.decisions.options, children: decision.options.map((option) => (_jsxs("label", { className: cx("sc-option", chosen === option.id && "sc-option-chosen"), children: [_jsx("input", { type: "radio", name: `decision-${decision.id}`, value: option.id, checked: chosen === option.id, onChange: () => setChosen(option.id) }), _jsx("span", { children: option.label })] }, option.id))) }), _jsx("input", { className: "sc-input", placeholder: words.decisions.notePlaceholder, maxLength: MAX_NOTE_LENGTH, value: note, onChange: (event) => setNote(event.target.value) }), _jsx("div", { className: "sc-form-actions", children: _jsx(Button, { type: "submit", variant: "primary", size: "sm", disabled: chosen === undefined || props.busy === true, children: words.decisions.answer }) })] })), answered && (_jsx(Outcome, { decision: decision, docHref: props.docHref, onUpdate: props.onUpdate, busy: props.busy }))] }));
45
46
  }
47
+ /** The record: one row per decision answered, what was asked, what was chosen, by whom, when. */
48
+ export function DecisionLog(props) {
49
+ const words = useWords();
50
+ const { shown, rest, more } = usePaged(props.decisions);
51
+ return (_jsxs(_Fragment, { children: [_jsx("ol", { className: "sc-decision-log", "aria-label": words.decisions.record, children: shown.map((decision) => {
52
+ const task = decision.taskId === null ? undefined : props.tasks?.get(decision.taskId);
53
+ const href = props.decisionHref?.(decision);
54
+ const chosen = decision.options.find((option) => option.id === decision.answer?.option)?.label ??
55
+ decision.answer?.option ??
56
+ "";
57
+ return (_jsxs("li", { className: "sc-decision-row", children: [_jsx("span", { className: "sc-decision-row-question", children: href === undefined ? decision.question : _jsx("a", { href: href, children: decision.question }) }), _jsx("span", { className: "sc-decision-row-answer", children: chosen }), _jsxs("span", { className: "sc-decision-row-meta", children: [decision.answer !== null && (_jsxs(_Fragment, { children: [_jsx(PersonChip, { person: decision.answer.by }), " ", _jsx(Time, { iso: decision.answer.at })] })), task !== undefined &&
58
+ (props.taskHref === undefined ? (_jsxs("span", { className: "sc-card-number", children: ["#", task.number] })) : (_jsxs("a", { className: "sc-card-number", href: props.taskHref(task), children: ["#", task.number] })))] })] }, decision.id));
59
+ }) }), _jsx(ShowMore, { rest: rest, onMore: more })] }));
60
+ }
46
61
  export function DecisionList(props) {
47
62
  const words = useWords();
48
63
  const waiting = props.decisions.filter((decision) => decision.answer === null);
49
64
  const answered = props.decisions.filter((decision) => decision.answer !== null);
50
65
  const card = (decision) => (_jsx(DecisionCard, { decision: decision, task: decision.taskId === null ? undefined : props.tasks.get(decision.taskId), taskHref: props.taskHref, docHref: props.docHref, href: props.decisionHref?.(decision), onAnswer: props.onAnswer, onUpdate: props.onUpdate, busy: props.busy }, decision.id));
51
- return (_jsxs("div", { className: "sc-decisions", children: [_jsxs("section", { "aria-label": words.decisions.waiting, children: [_jsxs("h2", { className: "sc-section-title", children: [words.decisions.waiting, " ", _jsx("span", { className: "sc-column-count", children: waiting.length })] }), waiting.length === 0 ? (props.empty ?? null) : waiting.map(card)] }), answered.length > 0 && (_jsxs("section", { "aria-label": words.decisions.answered, children: [_jsxs("h2", { className: "sc-section-title", children: [words.decisions.answered, " ", _jsx("span", { className: "sc-column-count", children: answered.length })] }), answered.map(card)] }))] }));
66
+ return (_jsxs("div", { className: "sc-decisions", children: [_jsxs("section", { "aria-label": words.decisions.waiting, children: [_jsxs("h2", { className: "sc-section-title", children: [words.decisions.waiting, " ", _jsx("span", { className: "sc-column-count", children: waiting.length })] }), waiting.length === 0 ? (props.empty ?? null) : waiting.map(card)] }), answered.length > 0 && (_jsxs("section", { "aria-label": words.decisions.answered, children: [_jsxs("h2", { className: "sc-section-title", children: [words.decisions.record, " ", _jsx("span", { className: "sc-column-count", children: answered.length })] }), _jsx("p", { className: "sc-lead", children: words.decisions.recordLead }), _jsx(DecisionLog, { decisions: answered, tasks: props.tasks, taskHref: props.taskHref, decisionHref: props.decisionHref })] }))] }));
52
67
  }
53
68
  //# sourceMappingURL=decision-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-list.js","sourceRoot":"","sources":["../../src/components/decision-list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-list.js","sourceRoot":"","sources":["../../src/components/decision-list.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-feed.d.ts","sourceRoot":"","sources":["../../src/components/event-feed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAM,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQlD,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAE,QAAa,GAAG,MAAM,CAyE5E;AAED,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAkC9C"}
1
+ {"version":3,"file":"event-feed.d.ts","sourceRoot":"","sources":["../../src/components/event-feed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAM,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AASlD,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,GAAE,QAAa,GAAG,MAAM,CAuF5E;AAED,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAsC9C"}
@@ -1,6 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { en } from "../i18n/en.js";
3
3
  import { useWords } from "../i18n/index.js";
4
+ import { ShowMore, usePaged } from "./paged.js";
4
5
  import { PersonChip, Time } from "./ui.js";
5
6
  // The feed: one line per event, newest first, as a sentence a person reads at a glance: who,
6
7
  // as which agent when through one, and what. It takes its data as props and nothing from the
@@ -25,6 +26,8 @@ export function describeEvent(event, words = en) {
25
26
  : feed.role.other;
26
27
  const login = data.login ?? feed.someone;
27
28
  const question = data.question ?? feed.aQuestion;
29
+ const goal = data.title ?? feed.aGoal;
30
+ const category = data.name ?? data.key ?? feed.aCategory;
28
31
  switch (event.kind) {
29
32
  case "person.joined":
30
33
  return feed.event.personJoined();
@@ -40,6 +43,16 @@ export function describeEvent(event, words = en) {
40
43
  return feed.event.memberChanged(login, role(data.role), project);
41
44
  case "project.member_removed":
42
45
  return feed.event.memberRemoved(login, project);
46
+ case "category.created":
47
+ return feed.event.categoryCreated(category);
48
+ case "category.updated":
49
+ return feed.event.categoryUpdated(fields, category);
50
+ case "category.removed":
51
+ return feed.event.categoryRemoved(category);
52
+ case "goal.created":
53
+ return feed.event.goalCreated(goal);
54
+ case "goal.updated":
55
+ return feed.event.goalUpdated(fields, goal);
43
56
  case "task.created":
44
57
  return feed.event.taskCreated(task);
45
58
  case "task.moved":
@@ -58,6 +71,8 @@ export function describeEvent(event, words = en) {
58
71
  return feed.event.runReported(task, data.excerpt);
59
72
  case "run.handed_in":
60
73
  return feed.event.runHandedIn(data.label ?? feed.something, task);
74
+ case "run.taken_over":
75
+ return feed.event.runTakenOver(task, data.agent ?? feed.someone);
61
76
  case "run.ended":
62
77
  return data.status === "finished"
63
78
  ? feed.event.runFinished(task)
@@ -76,14 +91,15 @@ export function describeEvent(event, words = en) {
76
91
  }
77
92
  export function EventFeed(props) {
78
93
  const words = useWords();
94
+ const newestFirst = [...props.events].reverse();
95
+ const { shown, rest, more } = usePaged(newestFirst);
79
96
  if (props.events.length === 0) {
80
97
  return _jsx("div", { className: "sc-feed", children: props.empty ?? null });
81
98
  }
82
- const newestFirst = [...props.events].reverse();
83
- return (_jsx("ol", { className: "sc-feed", "aria-label": words.feed.list, children: newestFirst.map((event) => {
84
- const href = props.href?.(event);
85
- const said = describeEvent(event, words);
86
- return (_jsxs("li", { className: "sc-feed-item", children: [_jsxs("span", { className: "sc-feed-actor", children: [event.actor === null ? (_jsx("span", { className: "sc-person-login", children: words.feed.console })) : (_jsx(PersonChip, { person: event.actor })), event.agent !== null && (_jsx("span", { className: "sc-feed-agent", title: words.feed.asTitle, children: words.feed.as(event.agent) }))] }), _jsx("span", { className: "sc-feed-words", children: href === undefined ? said : _jsx("a", { href: href, children: said }) }), _jsx(Time, { iso: event.createdAt })] }, event.id));
87
- }) }));
99
+ return (_jsxs(_Fragment, { children: [_jsx("ol", { className: "sc-feed", "aria-label": words.feed.list, children: shown.map((event) => {
100
+ const href = props.href?.(event);
101
+ const said = describeEvent(event, words);
102
+ return (_jsxs("li", { className: "sc-feed-item", children: [_jsxs("span", { className: "sc-feed-actor", children: [event.actor === null ? (_jsx("span", { className: "sc-person-login", children: words.feed.console })) : (_jsx(PersonChip, { person: event.actor })), event.agent !== null && (_jsx("span", { className: "sc-feed-agent", title: words.feed.asTitle, children: words.feed.as(event.agent) }))] }), _jsx("span", { className: "sc-feed-words", children: href === undefined ? said : _jsx("a", { href: href, children: said }) }), _jsx(Time, { iso: event.createdAt })] }, event.id));
103
+ }) }), _jsx(ShowMore, { rest: rest, onMore: more })] }));
88
104
  }
89
105
  //# sourceMappingURL=event-feed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-feed.js","sourceRoot":"","sources":["../../src/components/event-feed.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-feed.js","sourceRoot":"","sources":["../../src/components/event-feed.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type ReactNode } from "react";
2
+ import { type GoalState, type RestGoal, type RestGoalInput, type RestTask } from "../api.js";
3
+ export interface GoalListProps {
4
+ readonly goals: readonly RestGoal[];
5
+ readonly goalHref: (goal: RestGoal) => string;
6
+ /** The day to count from; the browser's today when left out. */
7
+ readonly today?: string | undefined;
8
+ readonly empty?: ReactNode;
9
+ }
10
+ export declare function GoalList(props: GoalListProps): import("react").JSX.Element;
11
+ export interface GoalFormProps {
12
+ /** The goal to change; left out, the form sets a new one. */
13
+ readonly goal?: RestGoal | undefined;
14
+ readonly busy?: boolean | undefined;
15
+ readonly error?: string | undefined;
16
+ readonly onSubmit: (input: RestGoalInput) => void;
17
+ readonly onCancel?: (() => void) | undefined;
18
+ }
19
+ export declare function GoalForm(props: GoalFormProps): import("react").JSX.Element;
20
+ export interface GoalViewProps {
21
+ readonly goal: RestGoal;
22
+ /** The tasks of the board; those that work towards the goal are shown, by state. */
23
+ readonly tasks: readonly RestTask[];
24
+ readonly taskHref: (task: RestTask) => string;
25
+ /** Where a document of the project is read, by its path, for the links in what was written. */
26
+ readonly docHref?: ((path: string) => string) | undefined;
27
+ readonly today?: string | undefined;
28
+ /** Where the goal is changed; left out, it cannot be changed from here. */
29
+ readonly editHref?: string | undefined;
30
+ /** Called when an owner moves the goal to another state from here. */
31
+ readonly onMove?: ((goal: RestGoal, state: GoalState) => void) | undefined;
32
+ readonly busy?: boolean | undefined;
33
+ }
34
+ export declare function GoalView(props: GoalViewProps): import("react").JSX.Element;
35
+ //# sourceMappingURL=goals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../../src/components/goals.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AACjE,OAAO,EAEL,KAAK,SAAS,EAGd,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEd,MAAM,WAAW,CAAC;AAenB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAuB5C;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAmF5C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAgG5C"}
@@ -0,0 +1,45 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { GOAL_STATES, MAX_BODY_LENGTH, MAX_TITLE_LENGTH, TASK_STATES, } from "../api.js";
4
+ import { useWords } from "../i18n/index.js";
5
+ import { Markdown } from "./markdown.js";
6
+ import { TaskList } from "./task-list.js";
7
+ import { Button, Day, DueBadge, GoalStateBadge, PersonChip, ProgressBar, Time } from "./ui.js";
8
+ // The roadmap of a project (ADR-0019): its goals, each with the day it is meant to be reached
9
+ // by and how far its tasks are, read from the board as it stands. The list, one goal with its
10
+ // tasks, and the form an owner sets one with. Each takes its data as props and nothing from
11
+ // the network; what people wrote is shown as text, never as HTML.
12
+ /** A goal's day on the calendar's terms: reached or let go, it is a plain fact; else it may be late. */
13
+ const dueState = (goal) => goal.state === "done" ? "done" : goal.state === "dropped" ? "dropped" : "ready";
14
+ export function GoalList(props) {
15
+ const words = useWords().roadmap;
16
+ if (props.goals.length === 0) {
17
+ return _jsx(_Fragment, { children: props.empty ?? null });
18
+ }
19
+ return (_jsx("ul", { className: "sc-goals", "aria-label": words.title, children: props.goals.map((goal) => (_jsxs("li", { className: `sc-goal sc-goal-${goal.state}`, children: [_jsxs("div", { className: "sc-goal-head", children: [_jsx("a", { className: "sc-goal-title", href: props.goalHref(goal), children: goal.title }), _jsx(GoalStateBadge, { state: goal.state }), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] }), _jsx(ProgressBar, { counts: goal.taskCounts })] }, goal.id))) }));
20
+ }
21
+ export function GoalForm(props) {
22
+ const words = useWords();
23
+ const form = words.roadmap.form;
24
+ const { goal } = props;
25
+ const [title, setTitle] = useState(goal?.title ?? "");
26
+ const [body, setBody] = useState(goal?.body ?? "");
27
+ const [state, setState] = useState(goal?.state ?? "planned");
28
+ const [dueOn, setDueOn] = useState(goal?.dueOn ?? "");
29
+ const submit = (event) => {
30
+ event.preventDefault();
31
+ props.onSubmit({ title: title.trim(), body, state, dueOn: dueOn === "" ? null : dueOn });
32
+ };
33
+ return (_jsxs("form", { className: "sc-form", onSubmit: submit, children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.title }), _jsx("input", { className: "sc-input", value: title, maxLength: MAX_TITLE_LENGTH, required: true, onChange: (event) => setTitle(event.target.value) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.body }), _jsx("textarea", { className: "sc-input sc-textarea", value: body, maxLength: MAX_BODY_LENGTH, rows: 4, placeholder: form.bodyPlaceholder, onChange: (event) => setBody(event.target.value) })] }), _jsxs("div", { className: "sc-field-row", children: [_jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.state }), _jsx("select", { className: "sc-input", value: state, onChange: (event) => setState(event.target.value), children: GOAL_STATES.map((candidate) => (_jsx("option", { value: candidate, children: words.vocabulary.goalState[candidate] }, candidate))) })] }), _jsxs("label", { className: "sc-field", children: [_jsx("span", { className: "sc-field-label", children: form.dueOn }), _jsx("input", { className: "sc-input", type: "date", value: dueOn, onChange: (event) => setDueOn(event.target.value) })] })] }), props.error !== undefined && (_jsx("p", { className: "sc-form-error", role: "alert", children: props.error })), _jsxs("div", { className: "sc-form-actions", children: [_jsx(Button, { type: "submit", variant: "primary", disabled: props.busy === true || title.trim() === "", children: goal === undefined ? form.set : words.common.save }), props.onCancel !== undefined && (_jsx(Button, { variant: "ghost", onClick: props.onCancel, children: words.common.cancel }))] })] }));
34
+ }
35
+ export function GoalView(props) {
36
+ const words = useWords();
37
+ const roadmap = words.roadmap;
38
+ const { goal } = props;
39
+ const towards = props.tasks.filter((task) => task.goalId === goal.id);
40
+ return (_jsxs("div", { className: "sc-task sc-goal-view", children: [_jsxs("header", { className: "sc-task-header", children: [_jsx("h1", { className: "sc-task-title", children: goal.title }), _jsxs("div", { className: "sc-task-badges", children: [_jsx(GoalStateBadge, { state: goal.state }), goal.dueOn !== null && (_jsx(DueBadge, { dueOn: goal.dueOn, state: dueState(goal), today: props.today }))] })] }), _jsxs("div", { className: "sc-task-body", children: [_jsxs("div", { className: "sc-task-main", children: [_jsx(ProgressBar, { counts: goal.taskCounts }), goal.body.length > 0 ? (_jsx(Markdown, { source: goal.body, docHref: props.docHref })) : (_jsx("p", { className: "sc-muted", children: roadmap.nothingMore })), _jsxs("section", { className: "sc-task-section", "aria-label": roadmap.tasks, children: [_jsx("h2", { className: "sc-section-title", children: roadmap.tasks }), towards.length === 0 ? (_jsx("p", { className: "sc-muted", children: roadmap.noTasks })) : (TASK_STATES.map((state) => {
41
+ const inState = towards.filter((task) => task.state === state);
42
+ return inState.length === 0 ? null : (_jsxs("div", { className: "sc-goal-tasks", children: [_jsxs("h3", { className: "sc-goal-tasks-state", children: [words.vocabulary.state[state], " ", _jsx("span", { className: "sc-column-count", children: inState.length })] }), _jsx(TaskList, { tasks: inState, taskHref: props.taskHref, today: props.today })] }, state));
43
+ }))] })] }), _jsxs("aside", { className: "sc-task-aside", "aria-label": words.task.facts, children: [_jsxs("dl", { className: "sc-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: roadmap.state }), _jsx("dd", { children: props.onMove === undefined ? (words.vocabulary.goalState[goal.state]) : (_jsx("select", { className: "sc-input", "aria-label": roadmap.state, value: goal.state, disabled: props.busy === true, onChange: (event) => props.onMove?.(goal, event.target.value), children: GOAL_STATES.map((state) => (_jsx("option", { value: state, children: words.vocabulary.goalState[state] }, state))) })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.target }), _jsx("dd", { children: goal.dueOn === null ? (_jsx("span", { className: "sc-muted", children: roadmap.noTarget })) : (_jsx(Day, { day: goal.dueOn })) })] }), _jsxs("div", { children: [_jsx("dt", { children: roadmap.setBy }), _jsxs("dd", { children: [_jsx(PersonChip, { person: goal.createdBy }), " ", _jsx(Time, { iso: goal.createdAt })] })] })] }), props.editHref !== undefined && (_jsx("div", { className: "sc-task-actions", children: _jsx("a", { className: "sc-button sc-button-secondary", href: props.editHref, children: words.common.edit }) }))] })] })] }));
44
+ }
45
+ //# sourceMappingURL=goals.js.map