@graview/primitives 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-bar.d.ts +30 -6
- package/dist/app-bar.d.ts.map +1 -1
- package/dist/app-bar.js +55 -27
- package/dist/app-bar.js.map +1 -1
- package/dist/arrange-bar.d.ts +42 -25
- package/dist/arrange-bar.d.ts.map +1 -1
- package/dist/arrange-bar.js +129 -194
- package/dist/arrange-bar.js.map +1 -1
- package/dist/arrange-lists.d.ts +56 -0
- package/dist/arrange-lists.d.ts.map +1 -0
- package/dist/arrange-lists.js +196 -0
- package/dist/arrange-lists.js.map +1 -0
- package/dist/bar-panes.d.ts +3 -1
- package/dist/bar-panes.d.ts.map +1 -1
- package/dist/bar-panes.js +36 -21
- package/dist/bar-panes.js.map +1 -1
- package/dist/chat.d.ts +68 -30
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +205 -222
- package/dist/chat.js.map +1 -1
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +19 -3
- package/dist/connections.js.map +1 -1
- package/dist/declared-lens-doors.d.ts +18 -0
- package/dist/declared-lens-doors.d.ts.map +1 -1
- package/dist/declared-lens-doors.js +25 -3
- package/dist/declared-lens-doors.js.map +1 -1
- package/dist/declared-lenses.d.ts.map +1 -1
- package/dist/declared-lenses.js +4 -7
- package/dist/declared-lenses.js.map +1 -1
- package/dist/draft-door.d.ts +3 -0
- package/dist/draft-door.d.ts.map +1 -0
- package/dist/draft-door.js +22 -0
- package/dist/draft-door.js.map +1 -0
- package/dist/draft-frame.d.ts +25 -0
- package/dist/draft-frame.d.ts.map +1 -0
- package/dist/draft-frame.js +69 -0
- package/dist/draft-frame.js.map +1 -0
- package/dist/editable.d.ts +4 -1
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +9 -8
- package/dist/editable.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +23 -5
- package/dist/find.js.map +1 -1
- package/dist/frame.d.ts +5 -4
- package/dist/frame.d.ts.map +1 -1
- package/dist/frame.js +5 -4
- package/dist/frame.js.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/dist/lens/board.d.ts.map +1 -1
- package/dist/lens/board.js +7 -3
- package/dist/lens/board.js.map +1 -1
- package/dist/lens/calendar-options.d.ts +8 -1
- package/dist/lens/calendar-options.d.ts.map +1 -1
- package/dist/lens/calendar-options.js +5 -0
- package/dist/lens/calendar-options.js.map +1 -1
- package/dist/lens/calendar-view.d.ts.map +1 -1
- package/dist/lens/calendar-view.js +2 -2
- package/dist/lens/calendar-view.js.map +1 -1
- package/dist/lens/columns.d.ts.map +1 -1
- package/dist/lens/columns.js +2 -2
- package/dist/lens/columns.js.map +1 -1
- package/dist/lens/coverage.d.ts.map +1 -1
- package/dist/lens/coverage.js +14 -10
- package/dist/lens/coverage.js.map +1 -1
- package/dist/lens/more.d.ts.map +1 -1
- package/dist/lens/more.js +2 -1
- package/dist/lens/more.js.map +1 -1
- package/dist/lens-keeping.d.ts +17 -0
- package/dist/lens-keeping.d.ts.map +1 -0
- package/dist/lens-keeping.js +127 -0
- package/dist/lens-keeping.js.map +1 -0
- package/dist/lines-key.d.ts +12 -0
- package/dist/lines-key.d.ts.map +1 -0
- package/dist/lines-key.js +74 -0
- package/dist/lines-key.js.map +1 -0
- package/dist/notice-place.d.ts +3 -3
- package/dist/notice-place.d.ts.map +1 -1
- package/dist/notice-place.js +4 -4
- package/dist/notice-place.js.map +1 -1
- package/dist/notices.d.ts +6 -0
- package/dist/notices.d.ts.map +1 -1
- package/dist/notices.js +7 -1
- package/dist/notices.js.map +1 -1
- package/dist/pages.d.ts +10 -5
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +10 -5
- package/dist/pages.js.map +1 -1
- package/dist/places.d.ts +0 -24
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +5 -1
- package/dist/places.js.map +1 -1
- package/dist/profile.d.ts +7 -1
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +2 -2
- package/dist/profile.js.map +1 -1
- package/dist/quick-relations.d.ts.map +1 -1
- package/dist/quick-relations.js +2 -2
- package/dist/quick-relations.js.map +1 -1
- package/dist/reader-lenses.d.ts +21 -0
- package/dist/reader-lenses.d.ts.map +1 -0
- package/dist/reader-lenses.js +27 -0
- package/dist/reader-lenses.js.map +1 -0
- package/dist/relation-key.d.ts +2 -0
- package/dist/relation-key.d.ts.map +1 -1
- package/dist/relation-key.js +13 -23
- package/dist/relation-key.js.map +1 -1
- package/dist/rule-line.d.ts +36 -0
- package/dist/rule-line.d.ts.map +1 -0
- package/dist/rule-line.js +91 -0
- package/dist/rule-line.js.map +1 -0
- package/dist/scene-bar.d.ts +29 -0
- package/dist/scene-bar.d.ts.map +1 -0
- package/dist/scene-bar.js +72 -0
- package/dist/scene-bar.js.map +1 -0
- package/dist/scene-css.d.ts.map +1 -1
- package/dist/scene-css.js +525 -0
- package/dist/scene-css.js.map +1 -1
- package/dist/scene.d.ts +5 -2
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +5 -1
- package/dist/scene.js.map +1 -1
- package/dist/seat-field.d.ts +58 -0
- package/dist/seat-field.d.ts.map +1 -0
- package/dist/seat-field.js +171 -0
- package/dist/seat-field.js.map +1 -0
- package/dist/seat-move.d.ts +32 -0
- package/dist/seat-move.d.ts.map +1 -0
- package/dist/seat-move.js +56 -0
- package/dist/seat-move.js.map +1 -0
- package/dist/seat-panel.d.ts +37 -0
- package/dist/seat-panel.d.ts.map +1 -0
- package/dist/seat-panel.js +134 -0
- package/dist/seat-panel.js.map +1 -0
- package/dist/seat.d.ts +20 -58
- package/dist/seat.d.ts.map +1 -1
- package/dist/seat.js +28 -45
- package/dist/seat.js.map +1 -1
- package/dist/seeding.d.ts.map +1 -1
- package/dist/seeding.js +4 -4
- package/dist/seeding.js.map +1 -1
- package/dist/shell.d.ts +25 -21
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +46 -116
- package/dist/shell.js.map +1 -1
- package/dist/spec-css.d.ts.map +1 -1
- package/dist/spec-css.js +2 -0
- package/dist/spec-css.js.map +1 -1
- package/dist/spec-views.d.ts.map +1 -1
- package/dist/spec-views.js +10 -2
- package/dist/spec-views.js.map +1 -1
- package/dist/subject.d.ts +4 -2
- package/dist/subject.d.ts.map +1 -1
- package/dist/subject.js +12 -8
- package/dist/subject.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +6 -523
- package/dist/theme.js.map +1 -1
- package/dist/view-doors.d.ts.map +1 -1
- package/dist/view-doors.js +7 -0
- package/dist/view-doors.js.map +1 -1
- package/dist/workbench/activity.d.ts.map +1 -1
- package/dist/workbench/activity.js +9 -9
- package/dist/workbench/activity.js.map +1 -1
- package/dist/workbench/back-out.js +3 -3
- package/dist/workbench/back-out.js.map +1 -1
- package/dist/workbench/inspector.d.ts +11 -6
- package/dist/workbench/inspector.d.ts.map +1 -1
- package/dist/workbench/inspector.js +42 -56
- package/dist/workbench/inspector.js.map +1 -1
- package/dist/workbench/standing.d.ts +8 -2
- package/dist/workbench/standing.d.ts.map +1 -1
- package/dist/workbench/standing.js +9 -4
- package/dist/workbench/standing.js.map +1 -1
- package/dist/workbench/trail.d.ts +10 -17
- package/dist/workbench/trail.d.ts.map +1 -1
- package/dist/workbench/trail.js +29 -41
- package/dist/workbench/trail.js.map +1 -1
- package/package.json +7 -7
- package/dist/companion.d.ts +0 -58
- package/dist/companion.d.ts.map +0 -1
- package/dist/companion.js +0 -463
- package/dist/companion.js.map +0 -1
- package/dist/ladder.d.ts +0 -2
- package/dist/ladder.d.ts.map +0 -1
- package/dist/ladder.js +0 -48
- package/dist/ladder.js.map +0 -1
- package/dist/popover.d.ts +0 -21
- package/dist/popover.d.ts.map +0 -1
- package/dist/popover.js +0 -28
- package/dist/popover.js.map +0 -1
- package/dist/wordmark.d.ts +0 -15
- package/dist/wordmark.d.ts.map +0 -1
- package/dist/wordmark.js +0 -50
- package/dist/wordmark.js.map +0 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { labelOf, valueWords, } from "@graview/core";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { directionWords, inSentence } from "./arrange-bar.js";
|
|
5
|
+
/**
|
|
6
|
+
* THE ARRANGING LINE'S LISTS: what "Sort", "Group", "Filter" and "Arrange"
|
|
7
|
+
* open. Fetched when a list is first opened, or when the pointer or the
|
|
8
|
+
* keyboard comes to the line: a page carries only the line up front.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* The far ends a menu offers to narrow by. A menu is for choosing, not for
|
|
12
|
+
* reading a catalog: past FAR_ENDS it holds the most connected (the ones a
|
|
13
|
+
* person most likely means), and the search reaches the rest — a select of
|
|
14
|
+
* 1,177 songs was 1,177 elements in every row that offered it (docs/scale.md).
|
|
15
|
+
*/
|
|
16
|
+
export const FAR_ENDS = 40;
|
|
17
|
+
/** How many distinct values a word field may hold and still be offered as a list to pick from. */
|
|
18
|
+
const WORD_VALUES = 60;
|
|
19
|
+
/** Every value one field holds across a kind. */
|
|
20
|
+
function heldValues(graph, kind, key) {
|
|
21
|
+
return graph.allNodes().filter((node) => node.kind === kind).map((node) => node[key]);
|
|
22
|
+
}
|
|
23
|
+
/** Four round numbers through the spread of what a list holds: £10,000, £15,000, £25,000 — never £23,995. */
|
|
24
|
+
export function roundSteps(values) {
|
|
25
|
+
if (values.length < 2)
|
|
26
|
+
return [];
|
|
27
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
28
|
+
const spread = sorted[sorted.length - 1] - sorted[0];
|
|
29
|
+
if (spread <= 0)
|
|
30
|
+
return [];
|
|
31
|
+
// Rounded to the spread, not the value: prices to the £5,000, years to the year.
|
|
32
|
+
const unit = Math.max(1, 10 ** Math.floor(Math.log10(spread / 4)));
|
|
33
|
+
const step = spread / 4 >= unit * 5 ? unit * 5 : unit;
|
|
34
|
+
const round = (value) => Math.round(value / step) * step;
|
|
35
|
+
return [...new Set([0.2, 0.4, 0.6, 0.8].map((at) => round(sorted[Math.floor(at * (sorted.length - 1))])))].filter((value) => value > 0);
|
|
36
|
+
}
|
|
37
|
+
function farEndsOf(schema, graph, offer) {
|
|
38
|
+
const kinds = offer.far ?? [];
|
|
39
|
+
const seen = new Map();
|
|
40
|
+
const wanted = new Set(kinds);
|
|
41
|
+
for (const node of graph.allNodes()) {
|
|
42
|
+
if (!wanted.has(node.kind))
|
|
43
|
+
continue;
|
|
44
|
+
seen.set(node.id, labelOf(schema.tryDefinition(node.kind), node));
|
|
45
|
+
}
|
|
46
|
+
const ends = [...seen.entries()].map(([id, text]) => ({ id, label: text }));
|
|
47
|
+
const kept = ends.length <= FAR_ENDS
|
|
48
|
+
? ends
|
|
49
|
+
: ends
|
|
50
|
+
.map((end) => ({ end, ties: graph.out(end.id).length + graph.in(end.id).length }))
|
|
51
|
+
.sort((a, b) => b.ties - a.ties || a.end.label.localeCompare(b.end.label))
|
|
52
|
+
.slice(0, FAR_ENDS)
|
|
53
|
+
.map((entry) => entry.end);
|
|
54
|
+
return kept.sort((a, b) => a.label.localeCompare(b.label));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Every way to narrow the kind, known up front — a choice's options, `is`'s
|
|
58
|
+
* words, an edge's far ends, a boolean's yes and no, a few round numbers, a
|
|
59
|
+
* word field's few values — so one press adds a condition. A date wants a
|
|
60
|
+
* day, so it is offered as "before…", "after…" and "on…", which ask for it.
|
|
61
|
+
*/
|
|
62
|
+
export function filterEntries(schema, graph, offers) {
|
|
63
|
+
const entries = [];
|
|
64
|
+
for (const offer of offers.filters) {
|
|
65
|
+
if (offer.about === "is") {
|
|
66
|
+
for (const word of offer.options ?? [])
|
|
67
|
+
entries.push({ value: `is:${word}`, label: word, group: offer.label, condition: { key: "is", value: word } });
|
|
68
|
+
}
|
|
69
|
+
else if (offer.about === "edge") {
|
|
70
|
+
entries.push({ value: `${offer.key}:*`, label: "anything", group: offer.label, condition: { key: offer.key, value: "*" } });
|
|
71
|
+
entries.push({ value: `${offer.key}:none`, label: "nothing", group: offer.label, condition: { key: offer.key, value: "none" } });
|
|
72
|
+
for (const end of farEndsOf(schema, graph, offer))
|
|
73
|
+
entries.push({ value: `${offer.key}:${end.id}`, label: end.label, group: offer.label, condition: { key: offer.key, value: end.id } });
|
|
74
|
+
}
|
|
75
|
+
else if (offer.type === "date") {
|
|
76
|
+
for (const op of ["before", "after", "on"])
|
|
77
|
+
entries.push({ value: `${offer.key}:${op}`, label: `${op}…`, group: offer.label, ask: { key: offer.key, op, label: offer.label } });
|
|
78
|
+
}
|
|
79
|
+
else if (offer.type === "number") {
|
|
80
|
+
// A few round steps through what the list holds: one press, never a number typed blind.
|
|
81
|
+
const definition = schema.tryDefinition(offers.kind);
|
|
82
|
+
const steps = roundSteps(heldValues(graph, offers.kind, offer.key).filter((value) => typeof value === "number"));
|
|
83
|
+
for (const op of ["at-most", "at-least"]) {
|
|
84
|
+
for (const step of op === "at-most" ? steps : [...steps].reverse()) {
|
|
85
|
+
entries.push({ value: `${offer.key}:${op}:${step}`, label: `${op === "at-most" ? "at most" : "at least"} ${valueWords(definition, offer.key, step)}`, group: offer.label, condition: { key: offer.key, value: `${op}:${step}` } });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (offer.type === "text") {
|
|
90
|
+
// A word field by the values it holds — a make, a color — when they are few enough to be a list rather than a name each.
|
|
91
|
+
const held = [...new Set(heldValues(graph, offers.kind, offer.key).filter((value) => typeof value === "string" && value.length > 0 && !value.includes(",")))].sort((a, b) => a.localeCompare(b));
|
|
92
|
+
if (held.length >= 2 && held.length <= WORD_VALUES) {
|
|
93
|
+
for (const word of held)
|
|
94
|
+
entries.push({ value: `${offer.key}:${word}`, label: word, group: offer.label, condition: { key: offer.key, value: word } });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (offer.type === "boolean") {
|
|
98
|
+
entries.push({ value: `${offer.key}:true`, label: "yes", group: offer.label, condition: { key: offer.key, value: "true" } });
|
|
99
|
+
entries.push({ value: `${offer.key}:false`, label: "no", group: offer.label, condition: { key: offer.key, value: "false" } });
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
for (const option of offer.options ?? [])
|
|
103
|
+
entries.push({ value: `${offer.key}:${option}`, label: valueWords(schema.tryDefinition(offers.kind), offer.key, option), group: offer.label, condition: { key: offer.key, value: option } });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return entries;
|
|
107
|
+
}
|
|
108
|
+
const BUCKETS = ["day", "week", "month", "year", "decade"];
|
|
109
|
+
/** One list, or on a narrow line all three; the keyboard to the choice made once it is drawn. */
|
|
110
|
+
export function ArrangeLists(props) {
|
|
111
|
+
const { which, schema, graph, offers, arrangement, set, toggle, has, done } = props;
|
|
112
|
+
const id = props.testId;
|
|
113
|
+
const here = useRef(null);
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
// Arrived after the list opened: the keyboard is on the pane, so it goes to the choice made, else the first entry.
|
|
116
|
+
const pane = here.current?.closest("[data-graview-popover]");
|
|
117
|
+
if (!pane || document.activeElement !== pane)
|
|
118
|
+
return;
|
|
119
|
+
(pane.querySelector('[aria-pressed="true"]') ?? pane.querySelector("button, input"))?.focus({ preventScroll: true });
|
|
120
|
+
}, []);
|
|
121
|
+
const sortOffer = arrangement.sort ? offers.sorts.find((offer) => offer.key === arrangement.sort.by) : undefined;
|
|
122
|
+
const groupOffer = arrangement.group ? offers.groups.find((offer) => offer.key === arrangement.group.by) : undefined;
|
|
123
|
+
const ways = directionWords(sortOffer);
|
|
124
|
+
const natural = offers.natural ? offers.sorts.find((offer) => offer.key === offers.natural.by) : undefined;
|
|
125
|
+
const entries = which === "filter" || (which === "all" && props.parts?.filter) ? filterEntries(schema, graph, offers) : [];
|
|
126
|
+
const sortList = (done) => (_jsxs(_Fragment, { children: [_jsx("p", { children: "Sort by" }), _jsx(Item, { testId: `${id}-sort-default`, value: "", on: !arrangement.sort, onPress: () => (set({ sort: undefined }), done()), children: natural ? `As declared (${inSentence(natural.label)})` : "As they were added" }), offers.sorts.map((offer) => (_jsx(Item, { value: offer.key, on: arrangement.sort?.by === offer.key, onPress: () => (set({ sort: { by: offer.key, direction: arrangement.sort?.direction ?? "asc" } }), done()), children: offer.label }, offer.key))), arrangement.sort ? (_jsxs("div", { role: "group", "aria-label": "Order", "data-testid": `${id}-direction`, children: [_jsx("p", { "aria-hidden": "true", children: "Order" }), ["asc", "desc"].map((direction) => (_jsx(Item, { testId: `${id}-direction-${direction}`, value: direction, on: arrangement.sort.direction === direction, onPress: () => (set({ sort: { by: arrangement.sort.by, direction } }), done()), children: ways[direction] }, direction)))] })) : null] }));
|
|
127
|
+
const groupList = (done) => (_jsxs(_Fragment, { children: [_jsx("p", { children: "Group by" }), _jsx(Item, { testId: `${id}-group-none`, value: "", on: !arrangement.group, onPress: () => (set({ group: undefined }), done()), children: "Not grouped" }), offers.groups.map((offer) => (_jsx(Item, { value: offer.key, on: arrangement.group?.by === offer.key, onPress: () => (set({ group: { by: offer.key } }), done()), children: offer.label }, offer.key))), arrangement.group && groupOffer?.buckets ? (_jsxs("div", { role: "group", "aria-label": "How wide a group is", "data-testid": `${id}-bucket`, children: [_jsx("p", { "aria-hidden": "true", children: "Each group" }), BUCKETS.map((bucket) => (_jsx(Item, { testId: `${id}-bucket-${bucket}`, value: bucket, on: (arrangement.group.bucket ?? "day") === bucket, onPress: () => (set({ group: { by: arrangement.group.by, bucket } }), done()), children: `A ${bucket}` }, bucket)))] })) : null] }));
|
|
128
|
+
const filterList = (done) => _jsx(FilterList, { entries: entries, has: has, testId: id, onToggle: (condition) => (toggle(condition), done()) });
|
|
129
|
+
const parts = props.parts ?? { sort: true, group: true, filter: true };
|
|
130
|
+
return (_jsxs("div", { ref: here, style: { display: "contents" }, children: [_jsx("style", { children: LIST_CSS }), which === "sort" ? sortList(done) : which === "group" ? groupList(done) : which === "filter" ? filterList(done) : (_jsxs(_Fragment, { children: [parts.sort ? _jsx("div", { role: "group", "aria-label": "Sort", children: sortList(done) }) : null, parts.group ? _jsx("div", { role: "group", "aria-label": "Group", children: groupList(done) }) : null, parts.filter ? _jsx("div", { role: "group", "aria-label": "Filter", children: filterList(done) }) : null] }))] }));
|
|
131
|
+
}
|
|
132
|
+
/** One entry of a list: its words, and whether it is the choice made. */
|
|
133
|
+
function Item({ value, on, onPress, testId, children }) {
|
|
134
|
+
return (_jsx("button", { type: "button", className: "graview-arrange-item", value: value, "data-value": value, "aria-pressed": on, onClick: onPress, ...(testId ? { "data-testid": testId } : {}), children: children }));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* THE WAYS TO NARROW, under their offers' names. A condition already on is
|
|
138
|
+
* pressed, and pressing it takes it off. A date's "before…" asks for its
|
|
139
|
+
* day in the list itself, with the browser's own date control — added by
|
|
140
|
+
* Enter or "Add", let go by Escape or "Never mind".
|
|
141
|
+
*/
|
|
142
|
+
function FilterList({ entries, has, testId, onToggle }) {
|
|
143
|
+
const [asking, setAsking] = useState(null);
|
|
144
|
+
if (asking) {
|
|
145
|
+
return _jsx(AskDay, { ask: asking, testId: testId, onDay: (day) => onToggle({ key: asking.key, value: `${asking.op}:${day}` }), onCancel: () => setAsking(null) });
|
|
146
|
+
}
|
|
147
|
+
const groups = [...new Set(entries.map((entry) => entry.group))];
|
|
148
|
+
return (_jsx(_Fragment, { children: groups.map((group) => (_jsxs("div", { role: "group", "aria-label": group, children: [_jsx("p", { "aria-hidden": "true", children: group }), entries
|
|
149
|
+
.filter((entry) => entry.group === group)
|
|
150
|
+
.map((entry) => (_jsx(Item, { value: entry.value, on: entry.condition ? has(entry.condition) : false, onPress: () => (entry.condition ? onToggle(entry.condition) : setAsking(entry.ask)), children: entry.label }, entry.value)))] }, group))) }));
|
|
151
|
+
}
|
|
152
|
+
/*
|
|
153
|
+
* WHICH DAY, ASKED IN THE FILTER ITSELF. "Due before…" opened the browser's
|
|
154
|
+
* own prompt — "which day? (YYYY-MM-DD)" — a box over the whole page that
|
|
155
|
+
* asked a person to type the stored format. The day is asked in the list
|
|
156
|
+
* that wanted it, with the browser's own date control, and added by Enter
|
|
157
|
+
* or "Add"; Escape or "Never mind" lets it go.
|
|
158
|
+
*/
|
|
159
|
+
function AskDay({ ask, testId, onDay, onCancel }) {
|
|
160
|
+
const [day, setDay] = useState("");
|
|
161
|
+
const valid = /^\d{4}-\d{2}-\d{2}$/.test(day) && Number(day.slice(0, 4)) >= 1000;
|
|
162
|
+
const add = () => {
|
|
163
|
+
if (valid)
|
|
164
|
+
onDay(day);
|
|
165
|
+
};
|
|
166
|
+
return (_jsxs("div", { role: "group", "aria-label": `${ask.label} ${ask.op} which day`, "data-testid": `${testId}-ask-day`, className: "graview-arrange-ask", children: [_jsx("p", { "aria-hidden": "true", children: `${ask.label} ${ask.op}` }), _jsx("input", { type: "date", "data-testid": `${testId}-day`, "aria-label": `${ask.label} ${ask.op} which day`, autoFocus: true, value: day, onChange: (event) => setDay(event.target.value), onKeyDown: (event) => {
|
|
167
|
+
if (event.key === "Enter") {
|
|
168
|
+
event.preventDefault();
|
|
169
|
+
add();
|
|
170
|
+
}
|
|
171
|
+
else if (event.key === "Escape") {
|
|
172
|
+
// Back to the list, not out of it: the popover's own Escape is for the list.
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
event.stopPropagation();
|
|
175
|
+
event.nativeEvent.stopImmediatePropagation();
|
|
176
|
+
onCancel();
|
|
177
|
+
}
|
|
178
|
+
} }), _jsxs("span", { children: [_jsx("button", { type: "button", "data-testid": `${testId}-day-add`, disabled: !valid, onClick: add, children: "Add" }), _jsx("button", { type: "button", onClick: onCancel, children: "Never mind" })] })] }));
|
|
179
|
+
}
|
|
180
|
+
const LIST_CSS = `
|
|
181
|
+
.graview-arrange-list{display:grid;align-content:start;width:min(300px,calc(100vw - 24px));height:auto;max-height:min(70vh,520px);overflow:auto;margin:0;padding:6px;border-radius:10px;border:1px solid var(--graview-edge);background:var(--graview-float);box-shadow:var(--graview-lift-high);color:var(--graview-ink);font-size:.875rem;line-height:1.3}
|
|
182
|
+
.graview-arrange-list [role=group]{display:grid}
|
|
183
|
+
.graview-arrange-list p{margin:8px 8px 2px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--graview-ink-muted)}
|
|
184
|
+
.graview-arrange-item{display:flex;align-items:flex-start;gap:8px;width:100%;min-height:30px;margin:0;padding:6px 8px;border:0;border-radius:7px;background:none;font:inherit;text-align:left;color:var(--graview-ink);cursor:pointer;overflow-wrap:anywhere}
|
|
185
|
+
.graview-arrange-item::before{content:"";flex:0 0 12px}
|
|
186
|
+
.graview-arrange-item[aria-pressed=true]{font-weight:600}
|
|
187
|
+
.graview-arrange-item[aria-pressed=true]::before{content:"✓";color:var(--graview-accent)}
|
|
188
|
+
.graview-arrange-item:hover{background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
189
|
+
.graview-arrange-ask{display:grid;gap:8px;padding:0 8px 8px}
|
|
190
|
+
.graview-arrange-ask p{margin:8px 0 0}
|
|
191
|
+
.graview-arrange-ask input{box-sizing:border-box;width:100%;min-height:32px;padding:0 8px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink)}
|
|
192
|
+
.graview-arrange-ask span{display:flex;gap:8px}
|
|
193
|
+
.graview-arrange-ask button{min-height:30px;padding:0 12px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink);cursor:pointer}
|
|
194
|
+
.graview-arrange-ask button:disabled{opacity:.5;cursor:default}
|
|
195
|
+
`;
|
|
196
|
+
//# sourceMappingURL=arrange-lists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrange-lists.js","sourceRoot":"","sources":["../src/arrange-lists.tsx"],"names":[],"mappings":"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"}
|
package/dist/bar-panes.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare function ProblemRows({ violations, pick }: {
|
|
|
12
12
|
* first reached for — the bar draws the person at once, and a page that is
|
|
13
13
|
* never asked who is signed in never carries the answer's furniture.
|
|
14
14
|
*/
|
|
15
|
-
export declare function ProfilePane<S extends AnySchema>({ name, me, scheme, onScheme, profileHref, hostActions, close, part, }: {
|
|
15
|
+
export declare function ProfilePane<S extends AnySchema>({ name, me, scheme, onScheme, profileHref, hostActions, close, part, signature, }: {
|
|
16
16
|
readonly name: string;
|
|
17
17
|
readonly me: AnyGraphNode | undefined;
|
|
18
18
|
readonly scheme?: "light" | "dark" | undefined;
|
|
@@ -22,5 +22,7 @@ export declare function ProfilePane<S extends AnySchema>({ name, me, scheme, onS
|
|
|
22
22
|
readonly close: () => void;
|
|
23
23
|
/** Which part: who you are and the host's own, above the ways into the app; or the seats and the settings, below them. */
|
|
24
24
|
readonly part: "top" | "rest";
|
|
25
|
+
/** A quiet "Built with Graview" at the menu's foot, when the host asks for one. */
|
|
26
|
+
readonly signature?: boolean | undefined;
|
|
25
27
|
}): import("react").JSX.Element;
|
|
26
28
|
//# sourceMappingURL=bar-panes.d.ts.map
|
package/dist/bar-panes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-panes.d.ts","sourceRoot":"","sources":["../src/bar-panes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"bar-panes.d.ts","sourceRoot":"","sources":["../src/bar-panes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAGjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW/C,kIAAkI;AAClI,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAA;CAAE,+BAyD7I;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,EAC/C,IAAI,EACJ,EAAE,EACF,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,IAAI,EACJ,SAAiB,GAClB,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,0HAA0H;IAC1H,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,+BAsLA"}
|
package/dist/bar-panes.js
CHANGED
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { humanizeField } from "@graview/core";
|
|
3
3
|
import { useGraview } from "@graview/react/provider";
|
|
4
4
|
import { choiceStyle } from "./choice.js";
|
|
5
|
-
import { LadderSetting } from "./ladder.js";
|
|
6
5
|
import { Seats } from "./seats.js";
|
|
6
|
+
import { problemLine, problemTitle, RuleLineView, useLined } from "./rule-line.js";
|
|
7
7
|
/*
|
|
8
8
|
* WHAT IS BEHIND THE BAR'S TOOLS (FR-131), fetched when one is first reached
|
|
9
9
|
* for: the bar draws the standing and the person at once, and a page that
|
|
@@ -12,22 +12,29 @@ import { Seats } from "./seats.js";
|
|
|
12
12
|
*/
|
|
13
13
|
/** The problems Standing opens: each says what is broken and how many ways there are to fix it; a press selects what it names. */
|
|
14
14
|
export function ProblemRows({ violations, pick }) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
const { store, brand } = useGraview();
|
|
16
|
+
// Each with its rule's line, once the words are here: the rows say the rule's sentence until then.
|
|
17
|
+
const lined = useLined(store, violations);
|
|
18
|
+
return (_jsx(_Fragment, { children: lined.map((violation, index) => {
|
|
19
|
+
const title = problemTitle(violation);
|
|
20
|
+
const ways = violation.repairs.length > 0 ? `${violation.repairs.length} ${violation.repairs.length === 1 ? "way" : "ways"} to fix` : "";
|
|
21
|
+
return (_jsx("li", { style: {
|
|
22
|
+
// A hairline between rows, not a card around each. Bordered
|
|
23
|
+
// buttons inside a bordered panel is two boxes doing one job,
|
|
24
|
+
// and it made a two-item list look like a dialog.
|
|
25
|
+
borderTop: index === 0 ? "none" : "1px solid var(--graview-edge)",
|
|
26
|
+
}, children: _jsxs("button", { type: "button", onClick: () => pick(violation), ...(violation.line && violation.message !== problemLine(violation) ? { title: violation.message } : {}), style: {
|
|
27
|
+
width: "100%",
|
|
28
|
+
textAlign: "left",
|
|
29
|
+
fontSize: "0.8125rem",
|
|
30
|
+
lineHeight: 1.4,
|
|
31
|
+
padding: "7px 8px",
|
|
32
|
+
border: "1px solid transparent",
|
|
33
|
+
background: "none",
|
|
34
|
+
boxShadow: "none",
|
|
35
|
+
borderRadius: 7,
|
|
36
|
+
}, children: [violation.line ? (_jsx(RuleLineView, { line: violation.line, schema: store.schema, ...(brand ? { brand } : {}), stacked: true, style: { display: "block", color: "var(--graview-ink)" } })) : (_jsx("span", { style: { display: "block", color: "var(--graview-ink)" }, children: violation.message })), title || ways ? (_jsx("span", { style: { color: "var(--graview-ink-faint)", fontSize: "0.75rem" }, children: [title, ways].filter(Boolean).join(" · ") })) : null] }) }, `${violation.invariant}:${index}`));
|
|
37
|
+
}) }));
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* WHAT IS BEHIND THE PERSON ON THE BAR (FR-131): who you are, the host's own
|
|
@@ -36,8 +43,8 @@ export function ProblemRows({ violations, pick }) {
|
|
|
36
43
|
* first reached for — the bar draws the person at once, and a page that is
|
|
37
44
|
* never asked who is signed in never carries the answer's furniture.
|
|
38
45
|
*/
|
|
39
|
-
export function ProfilePane({ name, me, scheme, onScheme, profileHref, hostActions, close, part, }) {
|
|
40
|
-
const { principal, seats, settings, settingValues, chooseSetting, sharing
|
|
46
|
+
export function ProfilePane({ name, me, scheme, onScheme, profileHref, hostActions, close, part, signature = false, }) {
|
|
47
|
+
const { principal, seats, settings, settingValues, chooseSetting, sharing } = useGraview();
|
|
41
48
|
const roles = principal.roles ?? [];
|
|
42
49
|
const popover = { setOpen: (_open) => close() };
|
|
43
50
|
return (_jsx(_Fragment, { children: part === "top" ? (_jsxs(_Fragment, { children: [_jsxs("div", { style: { display: "grid", gap: 3 }, children: [_jsx("span", { style: eyebrow, children: "Signed in as" }), _jsx("strong", { style: { fontSize: "1rem", fontWeight: 550 }, children: name }), _jsx("span", { style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: roles.length > 0
|
|
@@ -66,11 +73,19 @@ export function ProfilePane({ name, me, scheme, onScheme, profileHref, hostActio
|
|
|
66
73
|
}, style: hostRow, children: action.label })) : (_jsx("button", { type: "button", "data-testid": "host-action", className: "graview-host-action", onClick: () => {
|
|
67
74
|
popover.setOpen(false);
|
|
68
75
|
action.onSelect?.();
|
|
69
|
-
}, style: { ...hostRow, width: "100%", textAlign: "left", border: "none", background: "none", boxShadow: "none", font: "inherit", cursor: "pointer" }, children: action.label })) }, action.label))) })) : null] })) : (_jsxs(_Fragment, { children: [seats.length > 1 ? (_jsxs("div", { style: { display: "grid", gap: 6, ...ruled }, children: [_jsx("span", { style: eyebrow, children: "Sit as somebody else" }), _jsx(Seats, {})] })) : null,
|
|
76
|
+
}, style: { ...hostRow, width: "100%", textAlign: "left", border: "none", background: "none", boxShadow: "none", font: "inherit", cursor: "pointer" }, children: action.label })) }, action.label))) })) : null] })) : (_jsxs(_Fragment, { children: [seats.length > 1 ? (_jsxs("div", { style: { display: "grid", gap: 6, ...ruled }, children: [_jsx("span", { style: eyebrow, children: "Sit as somebody else" }), _jsx(Seats, {})] })) : null, settings.length > 0 ? (_jsx("div", { style: { display: "grid", gap: 10, ...ruled }, children: settings.map((setting) => (_jsxs("fieldset", { "data-testid": `setting-${setting.name}`, style: { border: 0, margin: 0, padding: 0, display: "grid", gap: 5 }, children: [_jsx("legend", { style: { ...eyebrow, padding: 0 }, children: setting.title }), setting.description ? (_jsx("span", { style: { fontSize: "0.8125rem", color: "var(--graview-ink-muted)" }, children: setting.description })) : null, _jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 4 }, children: setting.options.map((option) => {
|
|
70
77
|
const chosen = (settingValues[setting.name] ?? setting.initial) === option.value;
|
|
71
78
|
return (_jsx("button", { type: "button", "aria-pressed": chosen, "data-testid": `setting-${setting.name}-${option.value}`, onClick: () => chooseSetting(setting.name, option.value), style: choiceStyle(chosen), children: option.label }, option.value));
|
|
72
|
-
}) })] }, setting.name))) })) : null, scheme !== undefined && onScheme !== undefined ? (_jsxs("div", { style: { display: "grid", gap: 5, ...ruled }, children: [_jsx("span", { style: eyebrow, children: "Scheme" }), _jsx("div", { style: { display: "flex", gap: 4 }, children: ["light", "dark"].map((candidate) => (_jsx("button", { type: "button", "aria-pressed": scheme === candidate, "data-testid": `profile-scheme-${candidate}`, onClick: () => onScheme(candidate), style: choiceStyle(scheme === candidate), children: candidate === "light" ? "☀ Light" : "☾ Dark" }, candidate))) })] })) : null] })) }));
|
|
79
|
+
}) })] }, setting.name))) })) : null, scheme !== undefined && onScheme !== undefined ? (_jsxs("div", { style: { display: "grid", gap: 5, ...ruled }, children: [_jsx("span", { style: eyebrow, children: "Scheme" }), _jsx("div", { style: { display: "flex", gap: 4 }, children: ["light", "dark"].map((candidate) => (_jsx("button", { type: "button", "aria-pressed": scheme === candidate, "data-testid": `profile-scheme-${candidate}`, onClick: () => onScheme(candidate), style: choiceStyle(scheme === candidate), children: candidate === "light" ? "☀ Light" : "☾ Dark" }, candidate))) })] })) : null, signature ? (_jsxs("p", { "data-testid": "graview-signature", style: { ...ruled, margin: 0, display: "flex", alignItems: "center", gap: 6, fontSize: "0.75rem", color: "var(--graview-ink-faint)" }, children: ["Built with", _jsxs("a", { href: "https://graview.dev", target: "_blank", rel: "noopener", style: { display: "inline-flex", alignItems: "center", gap: 4, minHeight: 24, color: "var(--graview-ink-muted)", fontWeight: 600, textDecoration: "none" }, children: [_jsx("span", { "data-testid": "graview-mark", style: { display: "inline-flex", lineHeight: 0 }, dangerouslySetInnerHTML: { __html: MICRO_MARK } }), "Graview"] })] })) : null] })) }));
|
|
73
80
|
}
|
|
81
|
+
/*
|
|
82
|
+
* The kit's micro cut at 14 px, decorative beside the word — exactly what
|
|
83
|
+
* `graviewSymbol({ size: 14 })` draws (a test holds them equal). Written
|
|
84
|
+
* out rather than imported: the symbol's outlines sit beside the identity
|
|
85
|
+
* a page loads up front, and importing them here took their whole kilobyte
|
|
86
|
+
* there for a line most pages never open.
|
|
87
|
+
*/
|
|
88
|
+
const MICRO_MARK = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="14" height="14" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="2.4" stroke-linejoin="round"><path d="M13 11 L3 8 L14 3 H29 L21 9"/><path d="M10 18 L3 23 L16.5 28 L29 21 L22 19"/><path d="M16.5 18.5 V23.5" stroke-linecap="round"/></g><circle cx="16.5" cy="13.5" r="2" fill="var(--graview-mark-point, currentColor)"/></svg>';
|
|
74
89
|
/** A row of the host's: a full fingertip, the ink of the pane, the accent when the keyboard is on it. */
|
|
75
90
|
const hostRow = {
|
|
76
91
|
display: "flex",
|
package/dist/bar-panes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-panes.js","sourceRoot":"","sources":["../src/bar-panes.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAqD,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bar-panes.js","sourceRoot":"","sources":["../src/bar-panes.tsx"],"names":[],"mappings":"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"}
|
package/dist/chat.d.ts
CHANGED
|
@@ -1,46 +1,84 @@
|
|
|
1
1
|
import type { AnySchema } from "@graview/core";
|
|
2
|
-
import { type Responder, type ToolCall } from "@graview/tools";
|
|
2
|
+
import { type Responder, type SeatMove, type ToolCall } from "@graview/tools";
|
|
3
|
+
import { type ReactNode } from "react";
|
|
3
4
|
/**
|
|
4
|
-
* A SEAT YOU CAN TALK TO.
|
|
5
|
+
* A SEAT YOU CAN TALK TO — the conversation itself.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* applied through the same runtime a seat uses, attributed to `chat` in
|
|
12
|
-
* the log, previewer-visible, undoable. Words in, the usual paths out.
|
|
7
|
+
* Every answer comes from a Responder — the graph first, always, and the
|
|
8
|
+
* model the host gave (`ai` on the provider) for what the graph cannot
|
|
9
|
+
* read; a reader is never asked which — and every proposal is an ordinary validated call, applied through
|
|
10
|
+
* the same runtime a seat uses, attributed to `chat` in the log,
|
|
11
|
+
* previewer-visible, undoable. Words in, the usual paths out.
|
|
13
12
|
*
|
|
14
|
-
* The
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* The seat (`seat-field.tsx`, `seat-panel.tsx`) draws this inside its
|
|
14
|
+
* panel, with the app's conversation (`shared`), so a face switch keeps
|
|
15
|
+
* it, and its own field outside it; drawn alone, it keeps its own
|
|
16
|
+
* conversation and its own field.
|
|
17
|
+
*
|
|
18
|
+
* WHAT AN ANSWER CARRIES, AND WHERE IT GOES, is drawn here and nowhere
|
|
19
|
+
* else: the words, the names the words found (each a link that moves the
|
|
20
|
+
* app, through `onPick`), a question at its node, and a proposal as one
|
|
21
|
+
* line with "Do it" and "Not now".
|
|
17
22
|
*/
|
|
18
23
|
export interface ChatPanelProps<S extends AnySchema> {
|
|
19
|
-
/**
|
|
20
|
-
* Drawn INSIDE something that already frames it — the companion rail —
|
|
21
|
-
* rather than as a pill on the bar with a panel hanging off it: no
|
|
22
|
-
* trigger, no float, no border of its own, and always open, because the
|
|
23
|
-
* rail is what opens and closes.
|
|
24
|
-
*/
|
|
25
|
-
readonly inside?: boolean;
|
|
26
24
|
/** How the seat answers. Defaults to the graph's own responder. */
|
|
27
25
|
readonly respond?: Responder<S>;
|
|
28
26
|
/**
|
|
29
|
-
* Where a
|
|
30
|
-
*
|
|
31
|
-
* to the record's page instead.
|
|
27
|
+
* Where a name in an answer goes, pressed. The scene focuses and selects
|
|
28
|
+
* it; a face with no scene to move (Pages) goes to the record's page.
|
|
32
29
|
*/
|
|
33
30
|
readonly onPick?: (id: string) => void;
|
|
34
|
-
/**
|
|
35
|
-
* GROUNDED QUESTIONS, OFFERED BEFORE ANYBODY TYPES. A panel showing an
|
|
36
|
-
* empty field asks the person to guess what it can answer; these are
|
|
37
|
-
* questions the graph's own responder can answer about what is in front
|
|
38
|
-
* of them, and pressing one asks it.
|
|
39
|
-
*/
|
|
40
|
-
readonly offer?: readonly string[];
|
|
41
31
|
/** Feeds the app's activity rail, like any other seat. */
|
|
42
32
|
readonly onCall?: (call: ToolCall) => void;
|
|
43
33
|
readonly testId?: string;
|
|
34
|
+
/** Said before anybody asks: the seat's line, its suggestions and its acts. */
|
|
35
|
+
readonly empty?: ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* The app's conversation rather than this panel's own: kept by the
|
|
38
|
+
* provider, so it outlives the panel and a face switch, and asked into
|
|
39
|
+
* from outside (the seat's field, a suggestion, Find's "Ask:" row).
|
|
40
|
+
*/
|
|
41
|
+
readonly shared?: boolean;
|
|
42
|
+
/** Its own field; the seat's is outside it. */
|
|
43
|
+
readonly composer?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* WHERE AN ANSWER TAKES THE APP ("go to The week"): the routed face
|
|
46
|
+
* navigates to the move's address; the scene makes it a stop when unsaid.
|
|
47
|
+
*/
|
|
48
|
+
readonly onMove?: (move: SeatMove) => void;
|
|
49
|
+
/** The place the reader stands in, by its slug, when the face knows it better than the scene's stop does (Pages). */
|
|
50
|
+
readonly place?: string;
|
|
51
|
+
/** A view was drawn: a face that shows it somewhere of its own (Pages' `/~draft`) goes there. */
|
|
52
|
+
readonly onDraft?: () => void;
|
|
44
53
|
}
|
|
45
|
-
export declare function ChatPanel<S extends AnySchema>({
|
|
54
|
+
export declare function ChatPanel<S extends AnySchema>({ respond, onCall, onPick, testId, empty, shared, composer, onMove, place, onDraft, }: ChatPanelProps<S>): import("react").JSX.Element;
|
|
55
|
+
/** A press that reads as a word, not a capsule: hairline, square-ish, small. */
|
|
56
|
+
export declare const QUIET_BUTTON: {
|
|
57
|
+
readonly font: "inherit";
|
|
58
|
+
readonly fontSize: "0.8125rem";
|
|
59
|
+
readonly minHeight: 26;
|
|
60
|
+
readonly padding: "0 9px";
|
|
61
|
+
readonly borderRadius: 6;
|
|
62
|
+
readonly border: "1px solid var(--graview-edge)";
|
|
63
|
+
readonly background: "var(--graview-panel)";
|
|
64
|
+
readonly boxShadow: "none";
|
|
65
|
+
readonly color: "var(--graview-ink)";
|
|
66
|
+
readonly cursor: "pointer";
|
|
67
|
+
};
|
|
68
|
+
/** A name in an answer, or a suggestion: a link that does something, in the accent. */
|
|
69
|
+
export declare const LINK: {
|
|
70
|
+
readonly font: "inherit";
|
|
71
|
+
readonly fontSize: "0.875rem";
|
|
72
|
+
readonly minHeight: 24;
|
|
73
|
+
readonly padding: 0;
|
|
74
|
+
readonly border: 0;
|
|
75
|
+
readonly borderRadius: 2;
|
|
76
|
+
readonly background: "transparent";
|
|
77
|
+
readonly boxShadow: "none";
|
|
78
|
+
readonly color: "var(--graview-accent)";
|
|
79
|
+
readonly textDecoration: "underline";
|
|
80
|
+
readonly textUnderlineOffset: 3;
|
|
81
|
+
readonly textAlign: "start";
|
|
82
|
+
readonly cursor: "pointer";
|
|
83
|
+
};
|
|
46
84
|
//# sourceMappingURL=chat.d.ts.map
|
package/dist/chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAI3D,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAO9F;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS;IACjD,mEAAmE;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,qHAAqH;IACrH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AA0BD,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,EAC7C,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAe,EACf,KAAK,EACL,MAAc,EACd,QAAe,EACf,MAAM,EACN,KAAK,EACL,OAAO,GACR,EAAE,cAAc,CAAC,CAAC,CAAC,+BA+YnB;AAED,gFAAgF;AAChF,eAAO,MAAM,YAAY;;;;;;;;;;;CAWf,CAAC;AAEX,uFAAuF;AACvF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;CAcP,CAAC"}
|