@graview/primitives 0.1.28 → 0.1.30

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 (325) hide show
  1. package/dist/app-bar.d.ts.map +1 -1
  2. package/dist/app-bar.js +44 -14
  3. package/dist/app-bar.js.map +1 -1
  4. package/dist/app-link-door.d.ts +3 -0
  5. package/dist/app-link-door.d.ts.map +1 -0
  6. package/dist/app-link-door.js +11 -0
  7. package/dist/app-link-door.js.map +1 -0
  8. package/dist/app-link.d.ts +20 -0
  9. package/dist/app-link.d.ts.map +1 -0
  10. package/dist/app-link.js +134 -0
  11. package/dist/app-link.js.map +1 -0
  12. package/dist/app-title.d.ts +1 -1
  13. package/dist/app-title.d.ts.map +1 -1
  14. package/dist/app-title.js +7 -3
  15. package/dist/app-title.js.map +1 -1
  16. package/dist/arrange-bar.d.ts +57 -4
  17. package/dist/arrange-bar.d.ts.map +1 -1
  18. package/dist/arrange-bar.js +96 -13
  19. package/dist/arrange-bar.js.map +1 -1
  20. package/dist/arrange-lists.d.ts +62 -1
  21. package/dist/arrange-lists.d.ts.map +1 -1
  22. package/dist/arrange-lists.js +180 -23
  23. package/dist/arrange-lists.js.map +1 -1
  24. package/dist/arrangement.d.ts.map +1 -1
  25. package/dist/arrangement.js +3 -1
  26. package/dist/arrangement.js.map +1 -1
  27. package/dist/bar-panes.d.ts +2 -1
  28. package/dist/bar-panes.d.ts.map +1 -1
  29. package/dist/bar-panes.js +2 -1
  30. package/dist/bar-panes.js.map +1 -1
  31. package/dist/bar-suggested.d.ts +2 -0
  32. package/dist/bar-suggested.d.ts.map +1 -0
  33. package/dist/bar-suggested.js +22 -0
  34. package/dist/bar-suggested.js.map +1 -0
  35. package/dist/chat.d.ts.map +1 -1
  36. package/dist/chat.js +3 -1
  37. package/dist/chat.js.map +1 -1
  38. package/dist/choosing.d.ts +36 -0
  39. package/dist/choosing.d.ts.map +1 -0
  40. package/dist/choosing.js +224 -0
  41. package/dist/choosing.js.map +1 -0
  42. package/dist/connections.d.ts +1 -1
  43. package/dist/connections.d.ts.map +1 -1
  44. package/dist/connections.js +41 -5
  45. package/dist/connections.js.map +1 -1
  46. package/dist/declared-lens-doors.d.ts.map +1 -1
  47. package/dist/declared-lens-doors.js +8 -1
  48. package/dist/declared-lens-doors.js.map +1 -1
  49. package/dist/declared-lenses.d.ts +3 -2
  50. package/dist/declared-lenses.d.ts.map +1 -1
  51. package/dist/declared-lenses.js +5 -4
  52. package/dist/declared-lenses.js.map +1 -1
  53. package/dist/default-views.d.ts.map +1 -1
  54. package/dist/default-views.js +107 -28
  55. package/dist/default-views.js.map +1 -1
  56. package/dist/draft-frame.d.ts +1 -0
  57. package/dist/draft-frame.d.ts.map +1 -1
  58. package/dist/draft-frame.js +1 -0
  59. package/dist/draft-frame.js.map +1 -1
  60. package/dist/editable.d.ts +27 -2
  61. package/dist/editable.d.ts.map +1 -1
  62. package/dist/editable.js +77 -39
  63. package/dist/editable.js.map +1 -1
  64. package/dist/files.d.ts +1 -0
  65. package/dist/files.d.ts.map +1 -1
  66. package/dist/files.js +30 -5
  67. package/dist/files.js.map +1 -1
  68. package/dist/find.d.ts.map +1 -1
  69. package/dist/find.js +115 -10
  70. package/dist/find.js.map +1 -1
  71. package/dist/first-look-door.d.ts +71 -0
  72. package/dist/first-look-door.d.ts.map +1 -0
  73. package/dist/first-look-door.js +95 -0
  74. package/dist/first-look-door.js.map +1 -0
  75. package/dist/first-look.d.ts +12 -0
  76. package/dist/first-look.d.ts.map +1 -0
  77. package/dist/first-look.js +262 -0
  78. package/dist/first-look.js.map +1 -0
  79. package/dist/frame.d.ts +3 -2
  80. package/dist/frame.d.ts.map +1 -1
  81. package/dist/frame.js +21 -2
  82. package/dist/frame.js.map +1 -1
  83. package/dist/framework-views.d.ts +1 -0
  84. package/dist/framework-views.d.ts.map +1 -1
  85. package/dist/framework-views.js +1 -0
  86. package/dist/framework-views.js.map +1 -1
  87. package/dist/here.d.ts +24 -1
  88. package/dist/here.d.ts.map +1 -1
  89. package/dist/here.js +36 -1
  90. package/dist/here.js.map +1 -1
  91. package/dist/home-view.d.ts +1 -0
  92. package/dist/home-view.d.ts.map +1 -1
  93. package/dist/home-view.js +1 -0
  94. package/dist/home-view.js.map +1 -1
  95. package/dist/index.d.ts +20 -4
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +17 -4
  98. package/dist/index.js.map +1 -1
  99. package/dist/installation.js +1 -1
  100. package/dist/installation.js.map +1 -1
  101. package/dist/kind-shape.d.ts +130 -0
  102. package/dist/kind-shape.d.ts.map +1 -0
  103. package/dist/kind-shape.js +299 -0
  104. package/dist/kind-shape.js.map +1 -0
  105. package/dist/kind-stop.d.ts +18 -0
  106. package/dist/kind-stop.d.ts.map +1 -0
  107. package/dist/kind-stop.js +378 -0
  108. package/dist/kind-stop.js.map +1 -0
  109. package/dist/lens/arranging.d.ts.map +1 -1
  110. package/dist/lens/arranging.js +22 -5
  111. package/dist/lens/arranging.js.map +1 -1
  112. package/dist/lens/calendar-dates.d.ts +4 -3
  113. package/dist/lens/calendar-dates.d.ts.map +1 -1
  114. package/dist/lens/calendar-dates.js +12 -5
  115. package/dist/lens/calendar-dates.js.map +1 -1
  116. package/dist/lens/calendar-drawing.d.ts.map +1 -1
  117. package/dist/lens/calendar-drawing.js +14 -10
  118. package/dist/lens/calendar-drawing.js.map +1 -1
  119. package/dist/lens/calendar-options.d.ts +11 -0
  120. package/dist/lens/calendar-options.d.ts.map +1 -1
  121. package/dist/lens/calendar-options.js.map +1 -1
  122. package/dist/lens/calendar-placing.d.ts +13 -0
  123. package/dist/lens/calendar-placing.d.ts.map +1 -1
  124. package/dist/lens/calendar-placing.js +23 -2
  125. package/dist/lens/calendar-placing.js.map +1 -1
  126. package/dist/lens/calendar-spans.d.ts +5 -0
  127. package/dist/lens/calendar-spans.d.ts.map +1 -1
  128. package/dist/lens/calendar-spans.js +18 -6
  129. package/dist/lens/calendar-spans.js.map +1 -1
  130. package/dist/lens/calendar-view.d.ts.map +1 -1
  131. package/dist/lens/calendar-view.js +24 -6
  132. package/dist/lens/calendar-view.js.map +1 -1
  133. package/dist/lens/columns.d.ts +3 -1
  134. package/dist/lens/columns.d.ts.map +1 -1
  135. package/dist/lens/columns.js +40 -11
  136. package/dist/lens/columns.js.map +1 -1
  137. package/dist/lens/coverage.d.ts +8 -2
  138. package/dist/lens/coverage.d.ts.map +1 -1
  139. package/dist/lens/coverage.js +36 -10
  140. package/dist/lens/coverage.js.map +1 -1
  141. package/dist/lens/timeline.d.ts +1 -1
  142. package/dist/lens/timeline.d.ts.map +1 -1
  143. package/dist/lens/timeline.js +126 -16
  144. package/dist/lens/timeline.js.map +1 -1
  145. package/dist/lines-key.d.ts.map +1 -1
  146. package/dist/lines-key.js +11 -5
  147. package/dist/lines-key.js.map +1 -1
  148. package/dist/linked-record-door.d.ts +4 -0
  149. package/dist/linked-record-door.d.ts.map +1 -0
  150. package/dist/linked-record-door.js +12 -0
  151. package/dist/linked-record-door.js.map +1 -0
  152. package/dist/linked-record.d.ts +34 -0
  153. package/dist/linked-record.d.ts.map +1 -0
  154. package/dist/linked-record.js +142 -0
  155. package/dist/linked-record.js.map +1 -0
  156. package/dist/map-asks.d.ts +10 -0
  157. package/dist/map-asks.d.ts.map +1 -0
  158. package/dist/map-asks.js +17 -0
  159. package/dist/map-asks.js.map +1 -0
  160. package/dist/map-key.d.ts +3 -0
  161. package/dist/map-key.d.ts.map +1 -0
  162. package/dist/map-key.js +35 -0
  163. package/dist/map-key.js.map +1 -0
  164. package/dist/map-panel-door.d.ts +26 -0
  165. package/dist/map-panel-door.d.ts.map +1 -0
  166. package/dist/map-panel-door.js +42 -0
  167. package/dist/map-panel-door.js.map +1 -0
  168. package/dist/map-panel.d.ts +8 -0
  169. package/dist/map-panel.d.ts.map +1 -0
  170. package/dist/map-panel.js +351 -0
  171. package/dist/map-panel.js.map +1 -0
  172. package/dist/markdown-body.d.ts +11 -0
  173. package/dist/markdown-body.d.ts.map +1 -0
  174. package/dist/markdown-body.js +89 -0
  175. package/dist/markdown-body.js.map +1 -0
  176. package/dist/notice-stacks.d.ts +13 -0
  177. package/dist/notice-stacks.d.ts.map +1 -0
  178. package/dist/notice-stacks.js +141 -0
  179. package/dist/notice-stacks.js.map +1 -0
  180. package/dist/notices.d.ts +2 -0
  181. package/dist/notices.d.ts.map +1 -1
  182. package/dist/notices.js +30 -132
  183. package/dist/notices.js.map +1 -1
  184. package/dist/pages.d.ts +17 -1
  185. package/dist/pages.d.ts.map +1 -1
  186. package/dist/pages.js +17 -1
  187. package/dist/pages.js.map +1 -1
  188. package/dist/past-bar.d.ts +13 -0
  189. package/dist/past-bar.d.ts.map +1 -0
  190. package/dist/past-bar.js +26 -0
  191. package/dist/past-bar.js.map +1 -0
  192. package/dist/places.d.ts +1 -1
  193. package/dist/places.d.ts.map +1 -1
  194. package/dist/places.js +10 -5
  195. package/dist/places.js.map +1 -1
  196. package/dist/primitives/index.d.ts +19 -1
  197. package/dist/primitives/index.d.ts.map +1 -1
  198. package/dist/primitives/index.js +82 -33
  199. package/dist/primitives/index.js.map +1 -1
  200. package/dist/problem-count.d.ts +18 -0
  201. package/dist/problem-count.d.ts.map +1 -0
  202. package/dist/problem-count.js +46 -0
  203. package/dist/problem-count.js.map +1 -0
  204. package/dist/prose-editor.d.ts +4 -1
  205. package/dist/prose-editor.d.ts.map +1 -1
  206. package/dist/prose-editor.js +13 -6
  207. package/dist/prose-editor.js.map +1 -1
  208. package/dist/relation-key.d.ts +3 -1
  209. package/dist/relation-key.d.ts.map +1 -1
  210. package/dist/relation-key.js +23 -6
  211. package/dist/relation-key.js.map +1 -1
  212. package/dist/repeat-picker-door.d.ts +10 -0
  213. package/dist/repeat-picker-door.d.ts.map +1 -0
  214. package/dist/repeat-picker-door.js +13 -0
  215. package/dist/repeat-picker-door.js.map +1 -0
  216. package/dist/repeat-picker.d.ts +29 -0
  217. package/dist/repeat-picker.d.ts.map +1 -0
  218. package/dist/repeat-picker.js +64 -0
  219. package/dist/repeat-picker.js.map +1 -0
  220. package/dist/resolve-app-context.d.ts +3 -0
  221. package/dist/resolve-app-context.d.ts.map +1 -0
  222. package/dist/resolve-app-context.js +10 -0
  223. package/dist/resolve-app-context.js.map +1 -0
  224. package/dist/rule-line.d.ts.map +1 -1
  225. package/dist/rule-line.js +2 -1
  226. package/dist/rule-line.js.map +1 -1
  227. package/dist/scene-bar.d.ts.map +1 -1
  228. package/dist/scene-bar.js +7 -4
  229. package/dist/scene-bar.js.map +1 -1
  230. package/dist/scene-css.d.ts.map +1 -1
  231. package/dist/scene-css.js +261 -213
  232. package/dist/scene-css.js.map +1 -1
  233. package/dist/scene-places.d.ts +6 -0
  234. package/dist/scene-places.d.ts.map +1 -1
  235. package/dist/scene-places.js +14 -14
  236. package/dist/scene-places.js.map +1 -1
  237. package/dist/scene-way-back-door.d.ts +1 -0
  238. package/dist/scene-way-back-door.d.ts.map +1 -1
  239. package/dist/scene-way-back-door.js +10 -0
  240. package/dist/scene-way-back-door.js.map +1 -1
  241. package/dist/scene.d.ts +5 -1
  242. package/dist/scene.d.ts.map +1 -1
  243. package/dist/scene.js +5 -1
  244. package/dist/scene.js.map +1 -1
  245. package/dist/seat-field.d.ts.map +1 -1
  246. package/dist/seat-field.js +6 -4
  247. package/dist/seat-field.js.map +1 -1
  248. package/dist/seat-panel.d.ts +1 -0
  249. package/dist/seat-panel.d.ts.map +1 -1
  250. package/dist/seat-panel.js +5 -2
  251. package/dist/seat-panel.js.map +1 -1
  252. package/dist/seeding.d.ts.map +1 -1
  253. package/dist/seeding.js +2 -1
  254. package/dist/seeding.js.map +1 -1
  255. package/dist/several-bar.d.ts +23 -0
  256. package/dist/several-bar.d.ts.map +1 -0
  257. package/dist/several-bar.js +158 -0
  258. package/dist/several-bar.js.map +1 -0
  259. package/dist/several-door.d.ts +7 -0
  260. package/dist/several-door.d.ts.map +1 -0
  261. package/dist/several-door.js +20 -0
  262. package/dist/several-door.js.map +1 -0
  263. package/dist/shell.d.ts +20 -2
  264. package/dist/shell.d.ts.map +1 -1
  265. package/dist/shell.js +19 -12
  266. package/dist/shell.js.map +1 -1
  267. package/dist/spec-css.d.ts.map +1 -1
  268. package/dist/spec-css.js +90 -55
  269. package/dist/spec-css.js.map +1 -1
  270. package/dist/spec-views.d.ts +14 -1
  271. package/dist/spec-views.d.ts.map +1 -1
  272. package/dist/spec-views.js +91 -17
  273. package/dist/spec-views.js.map +1 -1
  274. package/dist/states-bar.d.ts +15 -0
  275. package/dist/states-bar.d.ts.map +1 -0
  276. package/dist/states-bar.js +36 -0
  277. package/dist/states-bar.js.map +1 -0
  278. package/dist/suggested.d.ts +13 -0
  279. package/dist/suggested.d.ts.map +1 -0
  280. package/dist/suggested.js +82 -0
  281. package/dist/suggested.js.map +1 -0
  282. package/dist/text-body.d.ts +7 -3
  283. package/dist/text-body.d.ts.map +1 -1
  284. package/dist/text-body.js +10 -2
  285. package/dist/text-body.js.map +1 -1
  286. package/dist/theme.d.ts.map +1 -1
  287. package/dist/theme.js +36 -32
  288. package/dist/theme.js.map +1 -1
  289. package/dist/timeline.d.ts +6 -0
  290. package/dist/timeline.d.ts.map +1 -0
  291. package/dist/timeline.js +129 -0
  292. package/dist/timeline.js.map +1 -0
  293. package/dist/way-back.d.ts.map +1 -1
  294. package/dist/way-back.js +3 -0
  295. package/dist/way-back.js.map +1 -1
  296. package/dist/workbench/activity.d.ts +22 -0
  297. package/dist/workbench/activity.d.ts.map +1 -1
  298. package/dist/workbench/activity.js +126 -26
  299. package/dist/workbench/activity.js.map +1 -1
  300. package/dist/workbench/agent-seat.d.ts.map +1 -1
  301. package/dist/workbench/agent-seat.js +3 -2
  302. package/dist/workbench/agent-seat.js.map +1 -1
  303. package/dist/workbench/answer-args.d.ts +3 -1
  304. package/dist/workbench/answer-args.d.ts.map +1 -1
  305. package/dist/workbench/answer-args.js +84 -14
  306. package/dist/workbench/answer-args.js.map +1 -1
  307. package/dist/workbench/back-out.d.ts.map +1 -1
  308. package/dist/workbench/back-out.js +19 -6
  309. package/dist/workbench/back-out.js.map +1 -1
  310. package/dist/workbench/index.d.ts +1 -1
  311. package/dist/workbench/index.d.ts.map +1 -1
  312. package/dist/workbench/index.js +1 -1
  313. package/dist/workbench/index.js.map +1 -1
  314. package/dist/workbench/inspector-door.d.ts +36 -0
  315. package/dist/workbench/inspector-door.d.ts.map +1 -0
  316. package/dist/workbench/inspector-door.js +97 -0
  317. package/dist/workbench/inspector-door.js.map +1 -0
  318. package/dist/workbench/inspector.d.ts +9 -27
  319. package/dist/workbench/inspector.d.ts.map +1 -1
  320. package/dist/workbench/inspector.js +106 -42
  321. package/dist/workbench/inspector.js.map +1 -1
  322. package/dist/workbench/trail.d.ts.map +1 -1
  323. package/dist/workbench/trail.js +12 -3
  324. package/dist/workbench/trail.js.map +1 -1
  325. package/package.json +6 -6
@@ -0,0 +1,158 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { counted, layer } from "@graview/core";
3
+ import { inTopLayer } from "@graview/react/provider";
4
+ import { actOnSeveral, actsForSeveral } from "@graview/tools/several";
5
+ import { useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
6
+ import { FOOT_MOVED, placeAtTheFoot } from "./notice-place.js";
7
+ import { AnswerArgs } from "./workbench/answer-args.js";
8
+ import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
9
+ /** The outcome as the bar says it: what was done, what was already so, and what was not, each by name. */
10
+ function outcomeWords(outcome) {
11
+ const parts = [];
12
+ if (outcome.applied.length > 0 && outcome.intent)
13
+ parts.push(`${outcome.intent}.`);
14
+ if (outcome.unchanged.length > 0)
15
+ parts.push(`${outcome.unchanged.length} already so.`);
16
+ if (outcome.allOrNothing)
17
+ parts.push("None of it was kept.");
18
+ return parts.join(" ");
19
+ }
20
+ export function SeveralBar({ store, chosen, principal, context, via, anchor, of, onChooseAll, onClear, onActed }) {
21
+ const [tick, setTick] = useState(0);
22
+ useEffect(() => store.subscribe(() => setTick((now) => now + 1)), [store]);
23
+ const key = chosen.join("\n");
24
+ const { acts, withheld } = useMemo(() => actsForSeveral(store, chosen, { ...(principal ? { principal } : {}), ...(context ? { context } : {}) }),
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ [store, key, principal, context, tick]);
27
+ const [moreOpen, setMoreOpen] = useState(false);
28
+ const [asking, setAsking] = useState(null);
29
+ const [outcome, setOutcome] = useState(null);
30
+ const bar = useRef(null);
31
+ const moreId = useId();
32
+ const kinds = useMemo(() => [...new Set(chosen.map((id) => store.graph.getNode(id)?.kind))], [store, key]); // eslint-disable-line react-hooks/exhaustive-deps
33
+ const count = kinds.length === 1 && kinds[0] ? `${counted(store.schema, kinds[0], chosen.length)} chosen` : `${chosen.length} chosen`;
34
+ /*
35
+ * THE FIRST FEW, AND THE REST BEHIND MORE: the derivation's leading acts
36
+ * in the bar (three on a desk, two under a finger, where each is a row of
37
+ * its own), then everything else, and what sets them aside or removes them
38
+ * last. Seven acts in the bar stood over the very list they act on.
39
+ */
40
+ const room = typeof matchMedia === "function" && matchMedia("(pointer: coarse), (max-width: 599px)").matches ? 2 : 3;
41
+ const everyday = acts.filter((act) => !act.more);
42
+ const shown = everyday.slice(0, room);
43
+ const more = [...everyday.slice(room), ...acts.filter((act) => act.more)];
44
+ // A new choice is a new question: what was asked of the last one is put away.
45
+ useEffect(() => {
46
+ setAsking(null);
47
+ setMoreOpen(false);
48
+ }, [key]);
49
+ /* IN THE TOP LAYER, at the foot of what it is about, placed again as the window moves. */
50
+ useLayoutEffect(() => {
51
+ const element = bar.current;
52
+ if (!element)
53
+ return;
54
+ if (typeof element.showPopover === "function" && !inTopLayer(element)) {
55
+ try {
56
+ element.showPopover();
57
+ }
58
+ catch {
59
+ // The toast rung holds it over every rail where the top layer is not there.
60
+ }
61
+ }
62
+ const place = () => {
63
+ placeAtTheFoot(element, anchor?.() ?? null);
64
+ dispatchEvent(new Event(FOOT_MOVED));
65
+ };
66
+ place();
67
+ addEventListener("resize", place);
68
+ addEventListener("scroll", place, true);
69
+ const grows = typeof ResizeObserver === "function" ? new ResizeObserver(place) : null;
70
+ grows?.observe(element);
71
+ return () => {
72
+ grows?.disconnect();
73
+ removeEventListener("resize", place);
74
+ removeEventListener("scroll", place, true);
75
+ if (element.isConnected && inTopLayer(element)) {
76
+ try {
77
+ element.hidePopover();
78
+ }
79
+ catch {
80
+ // Gone already.
81
+ }
82
+ }
83
+ dispatchEvent(new Event(FOOT_MOVED));
84
+ };
85
+ }, [anchor]);
86
+ /* ESCAPE PUTS THE CHOICE DOWN — or, while an act is asking, the asking first. */
87
+ const latest = useRef({ asking, onClear });
88
+ latest.current = { asking, onClear };
89
+ useEffect(() => {
90
+ const onKey = (event) => {
91
+ if (event.key !== "Escape" || event.defaultPrevented)
92
+ return;
93
+ const active = document.activeElement;
94
+ const inBar = bar.current?.contains(active) ?? false;
95
+ if (!inBar && (active instanceof HTMLTextAreaElement || (active instanceof HTMLInputElement && active.type !== "checkbox") || active instanceof HTMLSelectElement))
96
+ return;
97
+ event.preventDefault();
98
+ event.stopPropagation();
99
+ if (latest.current.asking) {
100
+ setAsking(null);
101
+ return;
102
+ }
103
+ latest.current.onClear();
104
+ };
105
+ document.addEventListener("keydown", onKey);
106
+ return () => document.removeEventListener("keydown", onKey);
107
+ }, []);
108
+ const run = (act, extra = {}) => {
109
+ const done = actOnSeveral(store, { mutation: act.mutation, subject: act.subject, args: { ...act.args, ...extra }, label: act.label }, chosen, {
110
+ ...(principal ? { author: principal } : {}),
111
+ ...(via ? { via } : {}),
112
+ ...(context ? { context } : {}),
113
+ });
114
+ setAsking(null);
115
+ setMoreOpen(false);
116
+ setOutcome(done.refused.length > 0 || done.applied.length === 0 ? done : null);
117
+ onActed(done.refused.map((one) => one.id));
118
+ };
119
+ const press = (act) => {
120
+ setOutcome(null);
121
+ setMoreOpen(false);
122
+ if (act.open.length > 0)
123
+ setAsking(act);
124
+ else
125
+ run(act);
126
+ };
127
+ const button = (act) => (_jsxs("button", { type: "button", className: "graview-several-act", "data-testid": "several-act", "data-act": act.id, "data-mutation": act.mutation, ...(act.destructive ? { "data-tone": "warn" } : {}), "aria-pressed": asking?.id === act.id ? true : undefined, onClick: () => press(act), children: [act.label, act.open.length > 0 ? "…" : ""] }, act.id));
128
+ return (_jsxs("div", { ref: bar, ...{ popover: "manual" }, role: "region", "aria-label": "The chosen records", className: "graview-several-bar", "data-testid": "several-bar", "data-graview-foot": "", "data-graview-overlay": "", "data-graview-popover": "", "data-graview-offstage": "", style: BAR, children: [_jsx("style", { children: SEVERAL_CSS }), _jsxs("div", { className: "graview-several-line", children: [_jsx("span", { role: "status", "aria-live": "polite", className: "graview-several-count", "data-testid": "several-count", children: count }), _jsxs("div", { role: "group", "aria-label": `What to do with the ${chosen.length} chosen`, className: "graview-several-acts", children: [shown.map(button), more.length > 0 ? (_jsx("button", { type: "button", className: "graview-several-act", "data-testid": "several-more", "aria-expanded": moreOpen, "aria-controls": moreId, onClick: () => setMoreOpen((now) => !now), children: "More" })) : null, onChooseAll && of !== undefined && of > chosen.length ? (_jsxs("button", { type: "button", className: "graview-several-quiet", "data-testid": "several-all", onClick: onChooseAll, children: ["Choose all ", of] })) : null, _jsx("button", { type: "button", className: "graview-several-quiet", "data-testid": "several-clear", "aria-keyshortcuts": "Escape", title: "Put the choice down \u2014 Escape", onClick: onClear, children: "Clear" })] })] }), moreOpen ? (_jsx("div", { id: moreId, role: "group", "aria-label": "More", className: "graview-several-acts", "data-testid": "several-more-acts", children: more.map(button) })) : null, acts.length === 0 ? (_jsx("p", { className: "graview-several-said", "data-testid": "several-none", children: withheld.length > 0 ? `Nothing here can be done to all of them by you: ${withheld[0].message}` : "Nothing can be done to all of these at once." })) : null, asking ? (_jsx("div", { className: "graview-several-ask", role: "group", "aria-label": `${asking.label}, for all ${chosen.length}`, "data-testid": "several-ask", children: _jsx(AnswerArgs, { store: store, affordance: asking.affordance, onApply: (args) => run(asking, args), onCancel: () => setAsking(null) }) })) : null, outcome ? (_jsxs("div", { role: "alert", className: "graview-several-said", "data-testid": "several-outcome", children: [outcomeWords(outcome), outcome.refused.length > 0 ? (_jsxs(_Fragment, { children: [" ", outcome.refused.length === 1 ? "One was not changed, and is still chosen:" : `${outcome.refused.length} were not changed, and are still chosen:`, _jsx("ul", { "data-testid": "several-refused", children: outcome.refused.map((one) => (_jsxs("li", { "data-record": one.id, children: ["\u201C", one.label, "\u201D \u2014 ", one.message] }, one.id))) })] })) : null] })) : null] }));
129
+ }
130
+ const BAR = {
131
+ position: "fixed",
132
+ inset: "auto",
133
+ margin: 0,
134
+ zIndex: layer("toast"),
135
+ boxSizing: "border-box",
136
+ width: "max-content",
137
+ height: "auto",
138
+ bottom: "calc(16px + env(safe-area-inset-bottom, 0px))",
139
+ left: 16,
140
+ overflow: "visible",
141
+ };
142
+ const SEVERAL_CSS = `
143
+ .graview-several-bar{display:grid;gap:8px;padding:8px 10px;border:1px solid var(--graview-edge);border-radius:var(--graview-radius,12px);background:var(--graview-float);color:var(--graview-ink);box-shadow:var(--graview-lift-high);font-size:.875rem;line-height:1.4;max-height:70vh;overflow:auto}
144
+ .graview-several-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}
145
+ .graview-several-count{font-weight:600;white-space:nowrap}
146
+ .graview-several-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
147
+ .graview-several-act,.graview-several-quiet{min-height:32px;padding:0 12px;border-radius:8px;font:inherit;cursor:pointer;box-shadow:none}
148
+ .graview-several-act{border:1px solid var(--graview-edge);background:transparent;color:var(--graview-ink);font-weight:600}
149
+ .graview-several-act:hover,.graview-several-act[aria-pressed=true],.graview-several-act[aria-expanded=true]{background:color-mix(in srgb,var(--graview-accent) 14%,transparent)}
150
+ .graview-several-act[data-tone=warn]{color:var(--graview-warn)}
151
+ .graview-several-quiet{border:0;background:none;color:var(--graview-ink-muted);text-decoration:underline;text-underline-offset:2px}
152
+ .graview-several-bar :focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
153
+ .graview-several-said{margin:0;max-width:52ch;overflow-wrap:anywhere}
154
+ .graview-several-said ul{margin:4px 0 0;padding-left:18px}
155
+ .graview-several-ask{padding:8px 4px 2px;border-top:1px solid var(--graview-edge)}
156
+ @media (pointer: coarse){.graview-several-act,.graview-several-quiet{min-height:44px}}
157
+ `;
158
+ //# sourceMappingURL=several-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"several-bar.js","sourceRoot":"","sources":["../src/several-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { SeveralBarProps } from "./several-bar.js";
2
+ /** The bar over a list that has records chosen; nothing while none is. */
3
+ export declare function SeveralBarDoor(props: SeveralBarProps): import("react").JSX.Element | null;
4
+ /** Fetch the bar now if it is not here: for a pointer or the keyboard reaching a list's boxes. */
5
+ export declare const prefetchSeveral: () => void;
6
+ export type { SeveralBarProps } from "./several-bar.js";
7
+ //# sourceMappingURL=several-door.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"several-door.d.ts","sourceRoot":"","sources":["../src/several-door.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWxD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,sCAOpD;AAED,kGAAkG;AAClG,eAAO,MAAM,eAAe,QAAO,IAA0B,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { retryingImport } from "@graview/core/retry";
3
+ import { lazyModule } from "@graview/react/provider";
4
+ import { Suspense } from "react";
5
+ /*
6
+ * THE DOOR TO THE SELECTION BAR: fetched with the first record chosen, or
7
+ * as soon as a list is reached for (`prefetchSeveral`, on a box's first
8
+ * hover or focus) — never in a list's first paint.
9
+ */
10
+ const SEVERAL = /* @__PURE__ */ lazyModule(retryingImport(() => import("./several-bar.js")));
11
+ const Bar = /* @__PURE__ */ SEVERAL.part((module, props) => _jsx(module.SeveralBar, { ...props }), { what: "The selection bar" });
12
+ /** The bar over a list that has records chosen; nothing while none is. */
13
+ export function SeveralBarDoor(props) {
14
+ if (props.chosen.length === 0)
15
+ return null;
16
+ return (_jsx(Suspense, { fallback: null, children: _jsx(Bar, { ...props }) }));
17
+ }
18
+ /** Fetch the bar now if it is not here: for a pointer or the keyboard reaching a list's boxes. */
19
+ export const prefetchSeveral = () => SEVERAL.prefetch();
20
+ //# sourceMappingURL=several-door.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"several-door.js","sourceRoot":"","sources":["../src/several-door.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC;;;;GAIG;AACH,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE7F,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAyC,EAAE,KAAsB,EAAE,EAAE,CAAC,KAAC,MAAM,CAAC,UAAU,OAAK,KAAK,GAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAEjL,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,KAAsB;IACnD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,CACL,KAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YACtB,KAAC,GAAG,OAAK,KAAK,GAAI,GACT,CACZ,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,eAAe,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC"}
package/dist/shell.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { type AnySchema, type HostFiles } from "@graview/core";
1
+ import { type AnySchema, type HostFiles, type ResolveApp } from "@graview/core";
2
2
  import { type Scheme, type SceneProps } from "@graview/react";
3
3
  import type { Responder, ToolCall } from "@graview/tools";
4
4
  import { type ReactNode } from "react";
5
5
  import { type SeatStart } from "./seat-field.js";
6
6
  import { type HostAction } from "./profile.js";
7
7
  import { type NoticeBoard } from "./notices.js";
8
+ import { type FirstLook } from "./first-look-door.js";
8
9
  /**
9
10
  * The shell: everything an application's window holds that is not about
10
11
  * its domain.
@@ -99,6 +100,23 @@ export interface ShellProps<S extends AnySchema> {
99
100
  * handed them: where a picture or a document put on a record is sent.
100
101
  */
101
102
  readonly files?: HostFiles;
103
+ /**
104
+ * THE HOST'S WAY TO NAME ANOTHER APP (FR-171), when the provider around
105
+ * the shell was not handed it: `resolveApp(address, viewer)` answers
106
+ * `{ name, icon?, headline?, href }`, `{ denied: true }` or `null`, and an
107
+ * app-link field draws as that app. Given here, it is asked before the
108
+ * provider's.
109
+ */
110
+ readonly resolveApp?: ResolveApp;
111
+ /**
112
+ * A FIRST LOOK, ONCE: a short run of hints beside the app's own controls —
113
+ * the switch between the scene and the pages, the problems count,
114
+ * Activity and the Ask box, each skipped where it is not drawn — then out
115
+ * of the way. `true` remembers it in this browser; `{ seen, onDone, steps }`
116
+ * hands that to the host and adds its own hints, each naming a control
117
+ * (`FirstLookAnchor`). Off unless given.
118
+ */
119
+ readonly firstLook?: FirstLook;
102
120
  }
103
- export declare function Shell<S extends AnySchema>({ home, standing, seat, pagesHref, remembers, syncUrl, renderer, attachRenderer, scheme, onScheme, chat, profileHref, studio, hostActions, signature, ask, notices, files, }: ShellProps<S>): import("react").JSX.Element;
121
+ export declare function Shell<S extends AnySchema>({ home, standing, seat, pagesHref, remembers, syncUrl, renderer, attachRenderer, scheme, onScheme, chat, profileHref, studio, hostActions, signature, ask, notices, files, resolveApp, firstLook, }: ShellProps<S>): import("react").JSX.Element;
104
122
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAA6F,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzJ,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAyB,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAYhG;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS;IAC7C,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,KAAK,SAAS,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mGAAmG;IACnG,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,EACzC,IAAW,EACX,QAAmC,EACnC,IAAI,EACJ,SAAoB,EACpB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,cAAc,EACd,MAAM,EACN,QAAQ,EACR,IAAW,EACX,WAAW,EACX,MAAM,EACN,WAAW,EACX,SAAiB,EACjB,GAAa,EACb,OAAO,EACP,KAAK,GACN,EAAE,UAAU,CAAC,CAAC,CAAC,+BAkIf"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
package/dist/shell.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { faviconHref, pagesTitle, sceneTitle } from "@graview/core";
3
- import { HostFilesContext, Scene, useGraview, useNavigation, UrlSync, useTheKeyboardLandsSomewhere } from "@graview/react";
3
+ import { BesideTheMap, HostFilesContext, Scene, useGraview, useNavigation, UrlSync, useTheKeyboardLandsSomewhere } from "@graview/react";
4
4
  import { useCallback, useState, useRef } from "react";
5
5
  import { withOverview } from "@graview/layout/view";
6
6
  import { SeatField } from "./seat-field.js";
7
7
  import { LinesKey } from "./lines-key.js";
8
+ import { MapPanel } from "./map-panel-door.js";
8
9
  import { ShowInstallation } from "./installation.js";
9
10
  import { Profile } from "./profile.js";
10
11
  import { createNoticeBoard, NoticeBoardContext, Notices } from "./notices.js";
@@ -15,10 +16,13 @@ import { AppBar } from "./app-bar.js";
15
16
  import { useScenePlaces } from "./scene-places.js";
16
17
  import { SceneBarTools, SceneTrail, useCallLog } from "./scene-bar.js";
17
18
  import { SceneWayBack } from "./scene-way-back.js";
19
+ import { PastBar } from "./past-bar.js";
18
20
  import { BackOut, Inspector, OverviewButton, Standing } from "./workbench/index.js";
19
21
  import { useFavicon } from "./app-title.js";
20
22
  import { useViewportHeight } from "./primitives/measure.js";
21
- export function Shell({ home = null, standing = "Everything is in order", seat, pagesHref = "/pages", remembers = false, syncUrl = false, renderer = "dom", attachRenderer, scheme, onScheme, chat = true, profileHref, studio, hostActions, signature = false, ask = "field", notices, files, }) {
23
+ import { ResolveAppContext } from "./resolve-app-context.js";
24
+ import { FirstLookDoor } from "./first-look-door.js";
25
+ export function Shell({ home = null, standing = "Everything is in order", seat, pagesHref = "/pages", remembers = false, syncUrl = false, renderer = "dom", attachRenderer, scheme, onScheme, chat = true, profileHref, studio, hostActions, signature = false, ask = "field", notices, files, resolveApp, firstLook, }) {
22
26
  const { brand, views, store } = useGraview();
23
27
  const { view, go } = useNavigation();
24
28
  /* The lenses this reader kept from the seat, beside the app's own places, before anything draws them. */
@@ -34,6 +38,8 @@ export function Shell({ home = null, standing = "Everything is in order", seat,
34
38
  // The picture the notices are drawn over (FR-75).
35
39
  const picture = useRef(null);
36
40
  const scene = useCallback(() => picture.current, []);
41
+ // Where a first look finds the app's own controls.
42
+ const inShell = useCallback(() => shell.current, []);
37
43
  const [calls, onCall] = useCallLog();
38
44
  // Where the bar keeps Find and the face's own tool, once it has drawn them.
39
45
  const [barFind, setBarFind] = useState(null);
@@ -52,15 +58,16 @@ export function Shell({ home = null, standing = "Everything is in order", seat,
52
58
  go: () => go(home ? { ...view, focusId: home, overview: false } : withOverview(view, true)),
53
59
  current: home ? view.focusId === home && !view.overview : Boolean(view.overview),
54
60
  };
55
- const drawn = (_jsx(NoticeBoardContext.Provider, { value: board, children: _jsxs("div", { ref: shell, style: { display: "flex", flexDirection: "column", height: screen ?? "100dvh", overflow: "hidden" }, children: [syncUrl ? _jsx(UrlSync, {}) : null, _jsx(AppBar, { brand: brand, name: brand?.name ?? "Graview", description: brand?.subtitle, home: homeWay, ...(pagesHref
56
- ? {
57
- faces: {
58
- scene: { label: sceneTitle(arrangement), current: true, go: () => undefined },
59
- // The pages are on their own address.
60
- pages: { label: pagesTitle(arrangement), current: false, go: () => window.location.assign(pagesHref) },
61
- },
62
- }
63
- : {}), places: [], current: null, reach: {}, scenePlaces: scenePlaces, onFind: setBarFind, tools: _jsxs(_Fragment, { children: [_jsx(Standing, { clean: standing }), _jsx(Profile, { scheme: scheme, onScheme: onScheme, ...(profileHref ? { profileHref } : {}), ...(hostActions ? { hostActions } : {}), signature: signature, keeping: _jsxs(_Fragment, { children: [_jsx(ShowInstallation, {}), studio] }) })] }) }), _jsx(SceneBarTools, { find: barFind, calls: calls, remembers: remembers, ...(seat ? { seat: seat(onCall) } : {}) }), _jsx(BackOut, { home: home }), _jsxs("main", { ref: picture, tabIndex: -1, style: { position: "relative", flex: "1 1 auto", minHeight: 0, containerType: "size", outline: "none" }, children: [_jsx(Scene, { renderer: renderer, ...(attachRenderer ? { attachRenderer } : {}) }), _jsx(SceneTrail, { home: home }), _jsx(OverviewButton, {}), _jsx(LinesKey, {}), _jsx(DraftDoor, {}), _jsx(SeatField, { start: chat === false ? "hidden" : ask, onCall: onCall, ...(typeof chat === "object" && chat.respond ? { respond: chat.respond } : {}) }), _jsx(Inspector, { placement: "menu" }), _jsx(SceneWayBack, {})] }), _jsx(Notices, { board: board, anchor: scene })] }) }));
64
- return files ? _jsx(HostFilesContext.Provider, { value: files, children: drawn }) : drawn;
61
+ const drawn = (_jsx(NoticeBoardContext.Provider, { value: board, children: _jsx(BesideTheMap.Provider, { value: true, children: _jsxs("div", { ref: shell, style: { display: "flex", flexDirection: "column", height: screen ?? "100dvh", overflow: "hidden" }, children: [syncUrl ? _jsx(UrlSync, {}) : null, _jsx(AppBar, { brand: brand, name: brand?.name ?? "Graview", description: brand?.subtitle, home: homeWay, ...(pagesHref
62
+ ? {
63
+ faces: {
64
+ scene: { label: sceneTitle(arrangement), current: true, go: () => undefined },
65
+ // The pages are on their own address.
66
+ pages: { label: pagesTitle(arrangement), current: false, go: () => window.location.assign(pagesHref) },
67
+ },
68
+ }
69
+ : {}), places: [], current: null, reach: {}, scenePlaces: scenePlaces, onFind: setBarFind, tools: _jsxs(_Fragment, { children: [_jsx(Standing, { clean: standing }), _jsx(Profile, { scheme: scheme, onScheme: onScheme, ...(profileHref ? { profileHref } : {}), ...(hostActions ? { hostActions } : {}), signature: signature, keeping: _jsxs(_Fragment, { children: [_jsx(ShowInstallation, {}), studio] }) })] }) }), _jsx(SceneBarTools, { find: barFind, calls: calls, remembers: remembers, ...(seat ? { seat: seat(onCall) } : {}) }), _jsx(BackOut, { home: home }), _jsxs("main", { ref: picture, tabIndex: -1, style: { position: "relative", flex: "1 1 auto", minHeight: 0, containerType: "size", outline: "none" }, children: [_jsx(Scene, { renderer: renderer, ...(attachRenderer ? { attachRenderer } : {}) }), _jsx(SceneTrail, { home: home }), _jsx(OverviewButton, {}), _jsx(LinesKey, {}), _jsx(DraftDoor, {}), _jsx(SeatField, { start: chat === false ? "hidden" : ask, onCall: onCall, ...(typeof chat === "object" && chat.respond ? { respond: chat.respond } : {}) }), _jsx(MapPanel, {}), _jsx(Inspector, { placement: "menu" }), _jsx(SceneWayBack, {}), _jsx(PastBar, { face: "scene" })] }), _jsx(Notices, { board: board, anchor: scene }), firstLook ? _jsx(FirstLookDoor, { firstLook: firstLook, root: inShell, app: appKeyOf(brand, store.schema) }) : null] }) }) }));
70
+ const resolved = resolveApp ? _jsx(ResolveAppContext.Provider, { value: resolveApp, children: drawn }) : drawn;
71
+ return files ? _jsx(HostFilesContext.Provider, { value: files, children: resolved }) : resolved;
65
72
  }
66
73
  //# sourceMappingURL=shell.js.map
package/dist/shell.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-css.d.ts","sourceRoot":"","sources":["../src/spec-css.ts"],"names":[],"mappings":"AAEA,+GAA+G;AAC/G,eAAO,MAAM,aAAa,QAmEzB,CAAC"}
1
+ {"version":3,"file":"spec-css.d.ts","sourceRoot":"","sources":["../src/spec-css.ts"],"names":[],"mappings":"AAEA,+GAA+G;AAC/G,eAAO,MAAM,aAAa,QAsGzB,CAAC"}
package/dist/spec-css.js CHANGED
@@ -1,71 +1,106 @@
1
1
  import { LOCAL_LAYERS } from "@graview/core";
2
2
  /** The stylesheet the blocks are drawn with: classes over the theme's tokens, and nothing a spec can reach. */
3
3
  export const SPEC_VIEW_CSS = `
4
- .graview-spec { display: flex; flex-direction: column; gap: 6px; min-width: 0; color: var(--graview-ink); }
4
+ .graview-spec{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--graview-ink)}
5
5
  ${ /* A ROW IS A LINE OF A LIST, NOT A CAPSULE (FR-113, FR-117). It was a
6
6
  pill holding a title, a badge and a progress block on one line, every one
7
7
  of them cut with an ellipsis: at a phone's width "Lv 3" drew as "L…" and
8
8
  "3 of 5" as "3 of". Now the small blocks keep their own width, the title
9
9
  takes what is left and wraps, and a row too narrow for all of it wraps
10
10
  onto a second line before anything is cut. */""}
11
- .graview-spec-row { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 10px; box-sizing: border-box; max-width: 100%; padding: 5px 10px; border: 1px solid var(--graview-edge); border-radius: var(--graview-radius-sm, 8px); background: var(--graview-panel); font-size: 0.875rem; }
12
- .graview-spec-row[data-selected] { border-color: var(--graview-accent); }
13
- .graview-spec-row > * { flex: 0 0 auto; min-width: 0; max-width: 100%; }
14
- .graview-spec-row > .graview-spec-title, .graview-spec-row > .graview-spec-text { flex: 1 1 9rem; overflow-wrap: anywhere; }
15
- .graview-spec-row > .graview-spec-title { font-size: 0.9375rem; }
16
- .graview-spec-row > .graview-spec-progress { grid-template-columns: auto minmax(3rem, 5rem) auto; align-items: center; column-gap: 6px; }
17
- .graview-spec-list[data-as="row"] .graview-spec-row { border-width: 0 0 1px; border-radius: 0; background: transparent; padding: 6px 2px; }
18
- [data-graview-rows] .graview-spec-row { border-width: 0; border-radius: 0; background: transparent; padding: 2px 0; }
19
- [data-graview-rows] .graview-spec-row > .graview-spec-title { font-size: 1.0625rem; font-weight: 600; }
20
- .graview-spec-page { padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid var(--graview-edge); }
21
- .graview-spec-title { font-family: var(--graview-font-display, inherit); font-weight: 600; font-size: 1rem; line-height: 1.3; overflow-wrap: anywhere; }
22
- .graview-spec-text { margin: 0; font-size: 0.875rem; line-height: 1.45; overflow-wrap: anywhere; }
23
- .graview-spec-text[data-graview-tone] { color: var(--graview-spec-tone); }
11
+ .graview-spec-row{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 10px;box-sizing:border-box;max-width:100%;padding:5px 10px;border:1px solid var(--graview-edge);border-radius:var(--graview-radius-sm,8px);background:var(--graview-panel);font-size:.875rem}
12
+ .graview-spec-row[data-selected]{border-color:var(--graview-accent)}
13
+ .graview-spec-row>*{flex:0 0 auto;min-width:0;max-width:100%}
14
+ .graview-spec-row>.graview-spec-title,.graview-spec-row>.graview-spec-text{flex:1 1 9rem;overflow-wrap:anywhere}
15
+ .graview-spec-row>.graview-spec-title{font-size:.9375rem}
16
+ .graview-spec-row>.graview-spec-progress{grid-template-columns:auto minmax(3rem,5rem) auto;align-items:center;column-gap:6px}
17
+ .graview-spec-list[data-as="row"] .graview-spec-row{border-width:0 0 1px;border-radius:0;background:transparent;padding:6px 2px}
18
+ [data-graview-rows] .graview-spec-row{border-width:0;border-radius:0;background:transparent;padding:2px 0}
19
+ [data-graview-rows] .graview-spec-row>.graview-spec-title{font-size:var(--graview-text-body);font-weight:500}
20
+ .graview-spec-page{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--graview-edge)}
21
+ .graview-spec-title{font-family:var(--graview-font-display,inherit);font-weight:600;font-size:1rem;line-height:1.3;overflow-wrap:anywhere}
22
+ .graview-spec-text{margin:0;font-size:.875rem;line-height:1.45;overflow-wrap:anywhere}
23
+ .graview-spec-text[data-graview-tone]{color:var(--graview-spec-tone)}
24
24
  ${ /* A STATE BADGE, the one pill a record wears (FR-117), and never cut
25
25
  (FR-118): it is as wide as its words, and only words longer than the
26
26
  whole line they stand in wrap. */""}
27
- .graview-spec-badge { align-self: flex-start; display: inline-block; max-width: 100%; box-sizing: border-box; padding: 1px 8px; border: 1px solid currentColor; border-radius: 999px; background: var(--graview-panel); color: var(--graview-spec-tone, var(--graview-ink-muted)); font-size: 0.8125rem; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
28
- .graview-spec-row .graview-spec-badge, .graview-spec-group[data-direction="row"] .graview-spec-badge { align-self: center; }
29
- .graview-spec [data-graview-tone="good"] { --graview-spec-tone: var(--graview-good); }
30
- .graview-spec [data-graview-tone="bad"] { --graview-spec-tone: var(--graview-bad); }
31
- .graview-spec [data-graview-tone="warn"] { --graview-spec-tone: var(--graview-warn); }
32
- .graview-spec [data-graview-tone="accent"] { --graview-spec-tone: var(--graview-accent); }
33
- .graview-spec [data-graview-tone="neutral"] { --graview-spec-tone: var(--graview-ink-muted); }
34
- .graview-spec-field { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: baseline; min-width: 0; font-size: 0.875rem; line-height: 1.4; }
35
- .graview-spec-label { color: var(--graview-ink-muted); }
36
- .graview-spec-value { min-width: 0; color: var(--graview-ink); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
37
- .graview-spec-link { position: relative; z-index: ${LOCAL_LAYERS.raised}; color: var(--graview-accent); text-decoration: underline; }
38
- .graview-spec-progress { display: grid; gap: 4px; font-size: 0.8125rem; }
39
- .graview-spec-progress > .graview-spec-label, .graview-spec-progress > .graview-spec-value { white-space: nowrap; }
40
- .graview-spec-track { display: block; height: 6px; border-radius: 999px; background: var(--graview-edge); overflow: hidden; }
41
- .graview-spec-fill { display: block; height: 100%; background: var(--graview-accent); }
42
- .graview-spec-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
43
- .graview-spec-group[data-direction="row"] { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
44
- .graview-spec-row .graview-spec-group { flex: 1 1 9rem; }
45
- .graview-spec-divider { width: 100%; margin: 2px 0; border: 0; border-top: 1px solid var(--graview-edge); }
46
- .graview-spec-figure { display: inline-flex; width: 22px; height: 22px; }
47
- .graview-spec-row[data-graview-tall] { flex-direction: column; flex-wrap: nowrap; align-items: stretch; border-radius: 10px; padding: 8px 12px; }
48
- .graview-spec-row[data-graview-tall] .graview-spec-badge { align-self: flex-start; }
49
- .graview-spec-home, .graview-spec-place { gap: 14px; }
50
- .graview-spec-headline { margin: 0; font-family: var(--graview-font-display, inherit); font-weight: 600; letter-spacing: -0.01em; line-height: 1.15; overflow-wrap: anywhere; font-size: 1.125rem; }
51
- .graview-spec-headline[data-level="1"] { font-size: clamp(1.75rem, 5vw, 2.75rem); line-height: 1.05; text-wrap: balance; }
52
- .graview-spec-headline[data-level="2"] { font-size: clamp(1.25rem, 3vw, 1.625rem); margin-top: 8px; }
53
- .graview-spec-number { display: grid; gap: 2px; justify-items: start; }
54
- .graview-spec-number-value { font-family: var(--graview-font-display, inherit); font-weight: 600; font-size: 1.75rem; line-height: 1.05; letter-spacing: -0.015em; font-variant-numeric: tabular-nums; }
55
- .graview-spec-card .graview-spec-number-value, .graview-spec-row .graview-spec-number-value { font-size: 1.25rem; }
56
- .graview-spec-number .graview-spec-label { font-size: 0.8125rem; }
27
+ .graview-spec-badge{align-self:flex-start;display:inline-block;max-width:100%;box-sizing:border-box;padding:1px 8px;border:1px solid currentColor;border-radius:999px;background:var(--graview-panel);color:var(--graview-spec-tone,var(--graview-ink-muted));font-size:.8125rem;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
28
+ .graview-spec-row .graview-spec-badge,.graview-spec-group[data-direction="row"] .graview-spec-badge{align-self:center}
29
+ .graview-spec [data-graview-tone="good"]{--graview-spec-tone:var(--graview-good)}
30
+ .graview-spec [data-graview-tone="bad"]{--graview-spec-tone:var(--graview-bad)}
31
+ .graview-spec [data-graview-tone="warn"]{--graview-spec-tone:var(--graview-warn)}
32
+ .graview-spec [data-graview-tone="accent"]{--graview-spec-tone:var(--graview-accent)}
33
+ .graview-spec [data-graview-tone="neutral"]{--graview-spec-tone:var(--graview-ink-muted)}
34
+ .graview-spec-field{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline;min-width:0;font-size:.875rem;line-height:1.4}
35
+ .graview-spec-label{color:var(--graview-ink-muted)}
36
+ .graview-spec-value{min-width:0;color:var(--graview-ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
37
+ .graview-spec-link { position: relative; z-index: ${LOCAL_LAYERS.raised}; color: var(--graview-accent); text-decoration: underline; display: inline-flex; align-items: center; min-height: 24px; }
38
+ .graview-spec-progress{display:grid;gap:4px;font-size:.8125rem}
39
+ .graview-spec-progress>.graview-spec-label,.graview-spec-progress>.graview-spec-value{white-space:nowrap}
40
+ .graview-spec-track{display:block;height:6px;border-radius:999px;background:var(--graview-edge);overflow:hidden}
41
+ .graview-spec-fill{display:block;height:100%;background:var(--graview-accent)}
42
+ .graview-spec-group{display:flex;flex-direction:column;gap:6px;min-width:0}
43
+ ${ /* A ROW GROUP LAYS ANY BLOCK SIDE BY SIDE. Four figures sat in a row,
44
+ but four lines of text, or two columns of meters, each took the whole
45
+ width and stacked: a paragraph's natural width is the line it is in.
46
+ Each block in a row takes a share of it — a figure a narrower one, a
47
+ badge and a picture only their own — and wraps onto the next line on a
48
+ phone, before anything is squeezed past reading. */""}
49
+ .graview-spec-group[data-direction="row"]{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:10px 16px}
50
+ .graview-spec-group[data-direction="row"]>*{flex:1 1 12rem;min-width:0}
51
+ .graview-spec-group[data-direction="row"]>.graview-spec-number{flex-basis:7rem}
52
+ .graview-spec-group[data-direction="row"]>:is(.graview-spec-badge,.graview-spec-badges,.graview-spec-figure,.graview-spec-link){flex:0 1 auto}
53
+ .graview-spec-group[data-direction="row"]>:is(.graview-spec-headline,.graview-spec-divider){flex-basis:100%}
54
+ .graview-spec-row .graview-spec-group{flex:1 1 9rem}
55
+ ${ /* BADGES THAT FOLLOW ONE ANOTHER FLOW AS CHIPS DO, wrapping when the line is full. */""}
56
+ .graview-spec-badges{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0}
57
+ .graview-spec-badges:empty{display:none}
58
+ .graview-spec-badges>.graview-spec-badge{align-self:center}
59
+ .graview-spec-divider{width:100%;margin:2px 0;border:0;border-top:1px solid var(--graview-edge)}
60
+ .graview-spec-figure{display:inline-flex;width:22px;height:22px}
61
+ .graview-spec-row[data-graview-tall]{flex-direction:column;flex-wrap:nowrap;align-items:stretch;border-radius:10px;padding:8px 12px}
62
+ .graview-spec-row[data-graview-tall] .graview-spec-badge{align-self:flex-start}
63
+ .graview-spec-home,.graview-spec-place{gap:14px}
64
+ .graview-spec-headline{margin:0;font-family:var(--graview-font-display,inherit);font-weight:600;letter-spacing:-0.01em;line-height:1.15;overflow-wrap:anywhere;font-size:1.125rem}
65
+ .graview-spec-headline[data-level="1"]{font-size:clamp(1.75rem,5vw,2.75rem);line-height:1.05;text-wrap:balance}
66
+ .graview-spec-headline[data-level="2"]{font-size:clamp(1.25rem,3vw,1.625rem);margin-top:8px}
67
+ .graview-spec-number{display:grid;gap:2px;justify-items:start}
68
+ .graview-spec-number-value{font-family:var(--graview-font-display,inherit);font-weight:600;font-size:1.75rem;line-height:1.05;letter-spacing:-0.015em;font-variant-numeric:tabular-nums}
69
+ .graview-spec-card .graview-spec-number-value,.graview-spec-row .graview-spec-number-value{font-size:1.25rem}
70
+ .graview-spec-number .graview-spec-label{font-size:.8125rem}
71
+ ${ /* A FIGURE SAID LARGE ("emphasis": "large"): a stat tile's number at the
72
+ size of the home's own heading, in its display face. */""}
73
+ .graview-spec-number[data-emphasis="large"] .graview-spec-number-value{font-size:clamp(2.25rem,6vw,3.25rem);line-height:1}
74
+ .graview-spec-card .graview-spec-number[data-emphasis="large"] .graview-spec-number-value,.graview-spec-row .graview-spec-number[data-emphasis="large"] .graview-spec-number-value{font-size:1.75rem}
57
75
  .graview-spec-listing { display: grid; gap: 10px; min-width: 0; position: relative; z-index: ${LOCAL_LAYERS.raised}; }
58
- .graview-spec-list-group { display: grid; gap: 8px; min-width: 0; }
59
- .graview-spec-list-heading { margin: 6px 0 0; font-family: var(--graview-font-display, inherit); font-size: 1rem; font-weight: 600; padding-bottom: 4px; border-bottom: 1px solid var(--graview-edge-bright, var(--graview-edge)); }
60
- .graview-spec-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; min-width: 0; }
61
- .graview-spec-list[data-as="card"] { grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: 10px; }
62
- .graview-spec-list[data-as="names"] { display: flex; flex-wrap: wrap; gap: 4px 12px; }
63
- .graview-spec-item { position: relative; min-width: 0; }
64
- .graview-spec-item-name { font-size: 0.875rem; font-weight: 600; }
65
- .graview-spec-item-link { all: unset; position: absolute; inset: 0; min-height: 24px; border-radius: 10px; cursor: pointer; }
66
- .graview-spec-item-link:hover { background: color-mix(in srgb, var(--graview-accent) 6%, transparent); }
67
- .graview-spec-item-link:focus-visible { outline: 2px solid var(--graview-accent); outline-offset: 2px; }
76
+ .graview-spec-list-group{display:grid;gap:8px;min-width:0}
77
+ .graview-spec-list-heading{margin:6px 0 0;font-family:var(--graview-font-display,inherit);font-size:1rem;font-weight:600;padding-bottom:4px;border-bottom:1px solid var(--graview-edge-bright,var(--graview-edge))}
78
+ .graview-spec-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;min-width:0}
79
+ ${ /* CARDS IN ONE ROW KEEP THEIR OWN HEIGHT: a card with a long summary
80
+ stretched every card beside it to its height. */""}
81
+ .graview-spec-list[data-as="card"]{grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:10px;align-items:start}
82
+ .graview-spec-list[data-as="names"]{display:flex;flex-wrap:wrap;gap:4px 12px}
83
+ .graview-spec-item{position:relative;min-width:0}
84
+ .graview-spec-item-name{font-size:.875rem;font-weight:600}
85
+ .graview-spec-item-link{all:unset;position:absolute;inset:0;z-index:${LOCAL_LAYERS.raised};min-height:24px;border-radius:10px;cursor:pointer}
86
+ .graview-spec-item-link:hover{background:color-mix(in srgb,var(--graview-accent) 6%,transparent)}
87
+ .graview-spec-item-link:focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
68
88
  .graview-spec-item .graview-spec-listing { z-index: ${LOCAL_LAYERS.raised}; }
69
- .graview-spec-empty, .graview-spec-more { color: var(--graview-ink-muted); }
89
+ .graview-spec-empty,.graview-spec-more{color:var(--graview-ink-muted)}
90
+ .graview-spec-see-all{position:static;font-weight:600}
91
+ .graview-spec-show-more{font:inherit;font-weight:600;color:var(--graview-accent);background:none;border:1px solid var(--graview-edge);border-radius:var(--graview-radius,8px);min-height:32px;padding:4px 12px;cursor:pointer}
92
+ .graview-spec-show-more:focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
93
+ ${ /* A LONG TEXT IS READ AT A GLANCE ON A CARD AND A ROW: three lines on a
94
+ card, one on a row, cut with an ellipsis; the record's page says it whole.
95
+ A card that printed a thirty-line summary made a row of cards a wall of
96
+ text (\`{summary|excerpt}\` says a sentence on purpose). */""}
97
+ .graview-spec-card .graview-spec-text,.graview-spec-card .graview-spec-value{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;max-height:4.35em}
98
+ .graview-spec-row .graview-spec-text,.graview-spec-row .graview-spec-value{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;overflow:hidden;max-height:1.45em}
99
+ .graview-spec-card .graview-spec-text>*,.graview-spec-row .graview-spec-text>*{margin-block:0}
100
+ .graview-spec-row .graview-spec-value,.graview-spec-row .graview-spec-text{white-space:normal !important}
101
+ ${ /* A PROGRESS'S FIGURE IS NO PROSE: "3 of 5" under its bar is said whole.
102
+ The clamp's height is in the value's own ems, and a progress's line is
103
+ taller than 1.45 of them, so a row cut the figure's foot (19 of 21 px). */""}
104
+ .graview-spec-progress>.graview-spec-value{display:inline;-webkit-line-clamp:none;line-clamp:none;max-height:none;overflow:visible;white-space:nowrap !important}
70
105
  `;
71
106
  //# sourceMappingURL=spec-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-css.js","sourceRoot":"","sources":["../src/spec-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,+GAA+G;AAC/G,MAAM,CAAC,MAAM,aAAa,GAAG;;EAE3B,CAAA;;;;;gDAK+C,EAAE;;;;;;;;;;;;;;EAcjD,CAAA;;oCAEmC,EAAE;;;;;;;;;;;oDAWa,YAAY,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;+FAoBwB,YAAY,CAAC,MAAM;;;;;;;;;;;sDAW5D,YAAY,CAAC,MAAM;;CAExE,CAAC"}
1
+ {"version":3,"file":"spec-css.js","sourceRoot":"","sources":["../src/spec-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,+GAA+G;AAC/G,MAAM,CAAC,MAAM,aAAa,GAAG;;EAE3B,CAAA;;;;;gDAK+C,EAAE;;;;;;;;;;;;;;EAcjD,CAAA;;oCAEmC,EAAE;;;;;;;;;;;oDAWa,YAAY,CAAC,MAAM;;;;;;EAMrE,CAAA;;;;;sDAKqD,EAAE;;;;;;;EAOvD,CAAA,sFAAuF,EAAE;;;;;;;;;;;;;;;;EAgBzF,CAAA;0DACyD,EAAE;;;+FAGkC,YAAY,CAAC,MAAM;;;;EAIhH,CAAA;mDACkD,EAAE;;;;;sEAKgB,YAAY,CAAC,MAAM;;;sDAGnC,YAAY,CAAC,MAAM;;;;;EAKvE,CAAA;;;8DAG6D,EAAE;;;;;EAK/D,CAAA;;6EAE4E,EAAE;;CAE/E,CAAC"}
@@ -54,6 +54,14 @@ export declare const MAX_LIST_DEPTH = 3;
54
54
  export interface SpecLinkTo {
55
55
  readonly href: (node: AnyGraphNode) => string;
56
56
  readonly go: (node: AnyGraphNode) => void;
57
+ /**
58
+ * The way to the rest of a list cut short, where the face has somewhere to
59
+ * go ("See all 96 features"): drawn by the face, under the records shown.
60
+ */
61
+ readonly more?: (list: {
62
+ readonly members: readonly AnyGraphNode[];
63
+ readonly total: number;
64
+ }) => ReactNode;
57
65
  }
58
66
  export declare const SpecLinks: import("react").Context<SpecLinkTo | null>;
59
67
  /**
@@ -71,7 +79,12 @@ export declare const HeadingsUnder: import("react").Context<number>;
71
79
  * it first. Given only where the home is the page.
72
80
  */
73
81
  export declare const HomeLine: import("react").Context<ReactNode>;
74
- /** The whole item is the way to its record: a link stretched over it, under any link the item draws itself. */
82
+ /**
83
+ * The whole item is the way to its record: a link stretched over it, under
84
+ * any link the item draws itself. First in the item, so a reader hears the
85
+ * name before the details; raised over the picture drawn after it, and
86
+ * under what is raised after it (a link, a box to choose it).
87
+ */
75
88
  export declare function ListedLink({ node, label }: {
76
89
  readonly node: AnyGraphNode;
77
90
  readonly label: string;