@bitbaum/chatkit 0.22.0 → 0.23.0
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/README.md +68 -0
- package/dist/react/CommentThread.d.ts +69 -0
- package/dist/react/CommentThread.d.ts.map +1 -0
- package/dist/react/CommentThread.js +78 -0
- package/dist/react/CommentThread.js.map +1 -0
- package/dist/react/Composer.d.ts.map +1 -1
- package/dist/react/Composer.js +5 -29
- package/dist/react/Composer.js.map +1 -1
- package/dist/react/DictationField.d.ts +78 -0
- package/dist/react/DictationField.d.ts.map +1 -0
- package/dist/react/DictationField.js +128 -0
- package/dist/react/DictationField.js.map +1 -0
- package/dist/react/Voice.d.ts +27 -0
- package/dist/react/Voice.d.ts.map +1 -0
- package/dist/react/Voice.js +43 -0
- package/dist/react/Voice.js.map +1 -0
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/hooks.js +17 -1
- package/dist/react/hooks.js.map +1 -1
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -1
- package/dist/replies.js +1 -1
- package/dist/replies.js.map +1 -1
- package/dist/scroll.d.ts +11 -0
- package/dist/scroll.d.ts.map +1 -1
- package/dist/scroll.js +9 -0
- package/dist/scroll.js.map +1 -1
- package/package.json +3 -3
- package/styles.css +232 -0
package/README.md
CHANGED
|
@@ -422,6 +422,68 @@ remembered for 30 days so the next press records immediately. Every failure is
|
|
|
422
422
|
shown in words (blocked mic, nothing heard, not available), never as a button
|
|
423
423
|
that does nothing. `rememberKey: null` stores nothing on the device.
|
|
424
424
|
|
|
425
|
+
### Any other text box — `DictationField` (0.23)
|
|
426
|
+
|
|
427
|
+
A text box that is not a conversation — a note, a title, a bio, a message to a
|
|
428
|
+
seller — is still a place a person would rather speak than type. Every such
|
|
429
|
+
box is this component, not a `<textarea>` made by hand:
|
|
430
|
+
|
|
431
|
+
```tsx
|
|
432
|
+
<DictationField
|
|
433
|
+
label="Note"
|
|
434
|
+
value={note}
|
|
435
|
+
onValueChange={setNote}
|
|
436
|
+
voice={{ transcribeUrl: "/api/transcribe" }} // the same server leg as Composer
|
|
437
|
+
improve={{ // optional: writing help
|
|
438
|
+
suggestions: ["Make it tighter", "Fix the grammar"],
|
|
439
|
+
run: async (text, instruction) => (await askYourModel(text, instruction)) ?? null,
|
|
440
|
+
}}
|
|
441
|
+
/>
|
|
442
|
+
<DictationField label="Title" value={title} onValueChange={setTitle} multiline={false} />
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
The microphone is `Composer`'s: Web Speech first, recording when the browser's
|
|
446
|
+
recogniser is silent, a take shown with its timer and kept for a retry when
|
|
447
|
+
transcription fails. Dictation appends to what is there. 16px text, 44px
|
|
448
|
+
targets, a visible label wired to the field.
|
|
449
|
+
|
|
450
|
+
`improve` is chatkit's half of writing help only: how a person asks (one tap on
|
|
451
|
+
a suggestion, or say or type what to change), that it is working, that it
|
|
452
|
+
failed — in words, with their text untouched — and **Undo** until the next edit.
|
|
453
|
+
Chatkit ships no model call and no prompt: `run` is yours (or
|
|
454
|
+
`@bitbaum/writingkit`'s `assist`). Return `null` when it could not be done.
|
|
455
|
+
|
|
456
|
+
Single-line fields (`multiline={false}`) keep the controls beside the text. Colour
|
|
457
|
+
and radius follow the same `--ck-*` variables as the composer. The styles are
|
|
458
|
+
in `styles.css` (not in the embedded `styles/chat.css`: this is not a chat
|
|
459
|
+
surface).
|
|
460
|
+
|
|
461
|
+
### Comments — `CommentThread` (0.23)
|
|
462
|
+
|
|
463
|
+
The conversation under anything: an article, a page, a listing.
|
|
464
|
+
|
|
465
|
+
```tsx
|
|
466
|
+
<CommentThread
|
|
467
|
+
comments={loaded} // oldest first; re-mount with a key to reload
|
|
468
|
+
viewer={user ? { name: user.name } : null}
|
|
469
|
+
signInHref="/sign-in?next=/articles/1" // a signed-out reader is shown the way in
|
|
470
|
+
canRemove={(c) => c.authorId === user?.id || user?.id === article.authorId}
|
|
471
|
+
transport={{
|
|
472
|
+
post: async (text) => (await api.post(text)), // returns the stored comment
|
|
473
|
+
remove: async (id) => { await api.remove(id); },
|
|
474
|
+
}}
|
|
475
|
+
voice={{ transcribeUrl: "/api/transcribe" }}
|
|
476
|
+
timeZone="Europe/Zurich"
|
|
477
|
+
/>
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
The component owns the list, the optimistic removal (rolled back, in words, if
|
|
481
|
+
it fails) and every failure message; the box is `Composer`, so it has the
|
|
482
|
+
microphone, 16px text and Enter-to-send; a refused post keeps the draft in the
|
|
483
|
+
box. A comment is shown as text, never as markup, with its line breaks. Times
|
|
484
|
+
render in `timeZone` (UTC by default, so the server's and the browser's markup
|
|
485
|
+
agree), or through your own `formatTime`.
|
|
486
|
+
|
|
425
487
|
### Suggested replies
|
|
426
488
|
|
|
427
489
|
The two to four things the person is likely to say next, as buttons under the
|
|
@@ -850,6 +912,12 @@ on `Composer`, `labels` on `ChatThread`.
|
|
|
850
912
|
anatomy, New chat, Temporary chat that writes nothing, the open chat
|
|
851
913
|
back after a reload, attachments on, a queue behind a running answer.
|
|
852
914
|
|
|
915
|
+
12. Any other text box is `DictationField`: the same microphone, 16px text and
|
|
916
|
+
44px targets as the composer, and an optional Improve with Undo.
|
|
917
|
+
13. A conversation under an item is `CommentThread`: oldest first, the same box
|
|
918
|
+
with the microphone, remove your own, a way to sign in for a reader who
|
|
919
|
+
cannot yet write.
|
|
920
|
+
|
|
853
921
|
`pnpm run verify` proves all of it: unit and render tests, then
|
|
854
922
|
`test/browser.mjs` drives Chromium through the demo at desktop and 390px, light
|
|
855
923
|
and dark, and speaks into a fake microphone past a silent recogniser.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type ComposerVoice } from "./Composer.js";
|
|
2
|
+
export type CommentItem = {
|
|
3
|
+
id: string;
|
|
4
|
+
/** The name readers see. */
|
|
5
|
+
author: string;
|
|
6
|
+
/** Plain text; line breaks are kept. */
|
|
7
|
+
body: string;
|
|
8
|
+
createdAt: string | number | Date;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Where comments go. The component owns the list, the optimistic removal and
|
|
12
|
+
* every failure message; the app owns the database and who may do what.
|
|
13
|
+
*/
|
|
14
|
+
export type CommentTransport = {
|
|
15
|
+
/** Store the comment and return it as stored (its id, its author, its time). Throw to refuse. */
|
|
16
|
+
post: (text: string) => Promise<CommentItem>;
|
|
17
|
+
/** Delete one. Omit and nobody gets a Remove button. */
|
|
18
|
+
remove?: (id: string) => Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
export type CommentThreadLabels = {
|
|
21
|
+
/** The heading: "No comments yet", "1 comment", "7 comments". */
|
|
22
|
+
count: (n: number) => string;
|
|
23
|
+
placeholder: string;
|
|
24
|
+
ariaLabel: string;
|
|
25
|
+
send: string;
|
|
26
|
+
signIn: string;
|
|
27
|
+
remove: string;
|
|
28
|
+
postFailed: string;
|
|
29
|
+
removeFailed: string;
|
|
30
|
+
postedAs: (name: string) => string;
|
|
31
|
+
};
|
|
32
|
+
export declare const DEFAULT_COMMENT_THREAD_LABELS: CommentThreadLabels;
|
|
33
|
+
export type CommentThreadProps = {
|
|
34
|
+
/** The comments as loaded, oldest first. Re-mount (a `key`) to load a new set. */
|
|
35
|
+
comments: readonly CommentItem[];
|
|
36
|
+
transport: CommentTransport;
|
|
37
|
+
/** Who is looking. `null`: readers see the thread and a sign-in link, not the box. */
|
|
38
|
+
viewer: {
|
|
39
|
+
name: string;
|
|
40
|
+
} | null;
|
|
41
|
+
/** Where "Sign in to comment" goes. Required for a signed-out reader to have a way forward. */
|
|
42
|
+
signInHref?: string;
|
|
43
|
+
/** Who may remove which comment (its author; the page's owner). Default: nobody. */
|
|
44
|
+
canRemove?: (comment: CommentItem) => boolean;
|
|
45
|
+
/** The microphone of the box. Pass `{ transcribeUrl }` for the server leg. */
|
|
46
|
+
voice?: ComposerVoice | false;
|
|
47
|
+
/**
|
|
48
|
+
* How a time reads. Default: `locale` in `timeZone` (UTC when none is given,
|
|
49
|
+
* so the server's and the browser's markup agree). Pass your own to match
|
|
50
|
+
* the rest of the product.
|
|
51
|
+
*/
|
|
52
|
+
formatTime?: (at: Date) => string;
|
|
53
|
+
locale?: string;
|
|
54
|
+
timeZone?: string;
|
|
55
|
+
/** Heading level. Default 2. */
|
|
56
|
+
headingLevel?: 2 | 3 | 4;
|
|
57
|
+
labels?: Partial<CommentThreadLabels>;
|
|
58
|
+
className?: string;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The conversation under anything: an article, a page, a listing. Comments
|
|
62
|
+
* read oldest first, the box is chatkit's `Composer` (so it has the
|
|
63
|
+
* microphone, 16px text and Enter-to-send like every other box in the fleet),
|
|
64
|
+
* and a person can remove what they wrote. Reading needs nothing; writing
|
|
65
|
+
* needs `viewer`, and a signed-out reader is shown the way to sign in on the
|
|
66
|
+
* same screen, never a dead end.
|
|
67
|
+
*/
|
|
68
|
+
export declare function CommentThread({ comments, transport, viewer, signInHref, canRemove, voice, formatTime, locale, timeZone, headingLevel, labels: overrides, className, }: CommentThreadProps): import("react").JSX.Element;
|
|
69
|
+
//# sourceMappingURL=CommentThread.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentThread.d.ts","sourceRoot":"","sources":["../../src/react/CommentThread.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iGAAiG;IACjG,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,iEAAiE;IACjE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,mBAU3C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kFAAkF;IAClF,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,sFAAsF;IACtF,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAC9C,8EAA8E;IAC9E,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,MAAM,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAaF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,YAAgB,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GACV,EAAE,kBAAkB,+BA6GpB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createElement, useId, useState } from "react";
|
|
4
|
+
import { Composer } from "./Composer.js";
|
|
5
|
+
export const DEFAULT_COMMENT_THREAD_LABELS = {
|
|
6
|
+
count: (n) => (n === 0 ? "No comments yet" : n === 1 ? "1 comment" : `${n} comments`),
|
|
7
|
+
placeholder: "Say something about this…",
|
|
8
|
+
ariaLabel: "Write a comment",
|
|
9
|
+
send: "Comment",
|
|
10
|
+
signIn: "Sign in to comment",
|
|
11
|
+
remove: "Remove",
|
|
12
|
+
postFailed: "The comment could not be posted. Your text is still in the box; try again.",
|
|
13
|
+
removeFailed: "The comment could not be removed. Try again.",
|
|
14
|
+
postedAs: (name) => `Posted as ${name}.`,
|
|
15
|
+
};
|
|
16
|
+
function defaultTime(locale, timeZone) {
|
|
17
|
+
const fmt = new Intl.DateTimeFormat(locale, {
|
|
18
|
+
day: "numeric",
|
|
19
|
+
month: "short",
|
|
20
|
+
hour: "2-digit",
|
|
21
|
+
minute: "2-digit",
|
|
22
|
+
timeZone: timeZone ?? "UTC",
|
|
23
|
+
});
|
|
24
|
+
return (at) => fmt.format(at);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The conversation under anything: an article, a page, a listing. Comments
|
|
28
|
+
* read oldest first, the box is chatkit's `Composer` (so it has the
|
|
29
|
+
* microphone, 16px text and Enter-to-send like every other box in the fleet),
|
|
30
|
+
* and a person can remove what they wrote. Reading needs nothing; writing
|
|
31
|
+
* needs `viewer`, and a signed-out reader is shown the way to sign in on the
|
|
32
|
+
* same screen, never a dead end.
|
|
33
|
+
*/
|
|
34
|
+
export function CommentThread({ comments, transport, viewer, signInHref, canRemove, voice, formatTime, locale, timeZone, headingLevel = 2, labels: overrides, className, }) {
|
|
35
|
+
const labels = { ...DEFAULT_COMMENT_THREAD_LABELS, ...overrides };
|
|
36
|
+
const [list, setList] = useState(() => [...comments]);
|
|
37
|
+
const [draft, setDraft] = useState("");
|
|
38
|
+
const [sending, setSending] = useState(false);
|
|
39
|
+
const [error, setError] = useState(null);
|
|
40
|
+
const headingId = useId();
|
|
41
|
+
const time = formatTime ?? defaultTime(locale, timeZone);
|
|
42
|
+
const post = async (text) => {
|
|
43
|
+
setError(null);
|
|
44
|
+
setSending(true);
|
|
45
|
+
try {
|
|
46
|
+
const created = await transport.post(text);
|
|
47
|
+
setList((current) => [...current, created]);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
setError(labels.postFailed);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setSending(false);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const remove = async (id) => {
|
|
59
|
+
if (!transport.remove)
|
|
60
|
+
return;
|
|
61
|
+
setError(null);
|
|
62
|
+
const before = list;
|
|
63
|
+
setList((current) => current.filter((c) => c.id !== id));
|
|
64
|
+
try {
|
|
65
|
+
await transport.remove(id);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
setList(before);
|
|
69
|
+
setError(labels.removeFailed);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const heading = createElement(`h${headingLevel}`, { id: headingId, className: "ck-comments-title" }, labels.count(list.length));
|
|
73
|
+
return (_jsxs("section", { className: className ? `ck-comments ${className}` : "ck-comments", "aria-labelledby": headingId, children: [heading, list.length > 0 && (_jsx("ol", { className: "ck-comment-list", children: list.map((c) => {
|
|
74
|
+
const at = new Date(c.createdAt);
|
|
75
|
+
return (_jsxs("li", { className: "ck-comment", children: [_jsxs("p", { className: "ck-comment-meta", children: [_jsx("strong", { children: c.author }), _jsx("span", { "aria-hidden": true, children: " \u00B7 " }), _jsx("time", { dateTime: at.toISOString(), children: time(at) }), transport.remove && canRemove?.(c) && (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": true, children: " \u00B7 " }), _jsx("button", { type: "button", className: "ck-comment-remove", onClick: () => void remove(c.id), children: labels.remove })] }))] }), _jsx("p", { className: "ck-comment-body", children: c.body })] }, c.id));
|
|
76
|
+
}) })), error && (_jsx("p", { className: "ck-problem", role: "alert", children: _jsx("span", { children: error }) })), viewer ? (_jsx("div", { className: "ck-comment-box", children: _jsx(Composer, { onSend: post, placeholder: labels.placeholder, ariaLabel: labels.ariaLabel, sending: sending, value: draft, onValueChange: setDraft, attach: false, voice: voice, labels: { send: labels.send }, hint: labels.postedAs(viewer.name) }) })) : (signInHref && (_jsx("p", { className: "ck-comment-signin", children: _jsx("a", { className: "ck-comment-signin-link", href: signInHref, children: labels.signIn }) })))] }));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=CommentThread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentThread.js","sourceRoot":"","sources":["../../src/react/CommentThread.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/react/Composer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,GAAG,EACR,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/react/Composer.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/Composer.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useImperativeHandle, useRef, useState, } from "react";
|
|
4
|
-
import { appendTranscript, composerCanSend, composerOutgoingText,
|
|
4
|
+
import { appendTranscript, composerCanSend, composerOutgoingText, shouldClearDraft, } from "../composer.js";
|
|
5
5
|
import { DEFAULT_DICTATION_MESSAGES, isAudioFile } from "../dictation.js";
|
|
6
6
|
import { DEFAULT_ATTACHMENT_NOTES, } from "../attachments.js";
|
|
7
7
|
import { useDictation } from "./use-dictation.js";
|
|
8
|
+
import { VoiceBar, VoiceProblem } from "./Voice.js";
|
|
8
9
|
import { useAttachments } from "./use-attachments.js";
|
|
9
10
|
import { useAutoGrow } from "./hooks.js";
|
|
10
11
|
import { AttachMenu, DEFAULT_ATTACH_MENU_LABELS, } from "./AttachMenu.js";
|
|
11
|
-
import { IconArrowUp,
|
|
12
|
+
import { IconArrowUp, IconFile, IconMic, IconSpinner, IconStop, IconX } from "./icons.js";
|
|
12
13
|
export const DEFAULT_COMPOSER_LABELS = {
|
|
13
14
|
send: "Send",
|
|
14
15
|
stop: "Stop generating",
|
|
@@ -39,31 +40,6 @@ function AttachmentStrip({ attachments, labels, }) {
|
|
|
39
40
|
return (_jsxs("div", { className: "ck-attach-item", children: [a.kind === "image" && a.previewUrl ? (_jsx("img", { src: a.previewUrl, alt: a.name, className: "ck-attach-thumb" })) : (_jsxs("span", { className: "ck-attach-file", children: [_jsx(IconFile, {}), _jsx("span", { className: "ck-truncate", children: a.name })] })), _jsx("button", { type: "button", className: "ck-attach-remove", onClick: () => attachments.remove(key), "aria-label": labels.remove(a.name), title: labels.remove(a.name), children: _jsx(IconX, {}) })] }, key));
|
|
40
41
|
}), attachments.note && (_jsx("button", { type: "button", className: "ck-note", onClick: attachments.clearNote, children: attachments.note }))] }));
|
|
41
42
|
}
|
|
42
|
-
/**
|
|
43
|
-
* The words as they are heard, one line, always showing its end: the
|
|
44
|
-
* newest words are what the person is checking. Scrolled by hand rather
|
|
45
|
-
* than laid out right-to-left, so punctuation stays where the language
|
|
46
|
-
* puts it.
|
|
47
|
-
*/
|
|
48
|
-
function LiveWords({ text, dim }) {
|
|
49
|
-
const ref = useRef(null);
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
const el = ref.current;
|
|
52
|
-
if (el)
|
|
53
|
-
el.scrollLeft = el.scrollWidth;
|
|
54
|
-
}, [text]);
|
|
55
|
-
return (_jsx("span", { ref: ref, className: dim ? "ck-voice-live ck-voice-live-dim" : "ck-voice-live", children: text }));
|
|
56
|
-
}
|
|
57
|
-
function Elapsed({ since }) {
|
|
58
|
-
const [now, setNow] = useState(() => Date.now());
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
if (since === null)
|
|
61
|
-
return;
|
|
62
|
-
const t = setInterval(() => setNow(Date.now()), 250);
|
|
63
|
-
return () => clearInterval(t);
|
|
64
|
-
}, [since]);
|
|
65
|
-
return (_jsx("span", { className: "ck-voice-timer", children: formatElapsed(since === null ? 0 : (now - since) / 1000) }));
|
|
66
|
-
}
|
|
67
43
|
/**
|
|
68
44
|
* THE composer: write words — or say them, or paste a screenshot — and send
|
|
69
45
|
* them. Enter sends, Shift+Enter breaks the line, an IME composition never
|
|
@@ -176,7 +152,7 @@ export function Composer({ onSend, placeholder, ariaLabel, disabled = false, sen
|
|
|
176
152
|
})();
|
|
177
153
|
}
|
|
178
154
|
};
|
|
179
|
-
return (_jsxs("div", { className: "ck-composer-wrap", children: [above, _jsxs("div", { className: "ck-composer-frame", children: [
|
|
155
|
+
return (_jsxs("div", { className: "ck-composer-wrap", children: [above, _jsxs("div", { className: "ck-composer-frame", children: [_jsx(VoiceBar, { dictation: dictation, labels: labels }), _jsxs("div", { className: density === "compact" ? "ck-composer ck-composer-compact" : "ck-composer", children: [showModes && (_jsx("div", { className: "ck-modes", role: "group", children: modes.map((m) => (_jsx("button", { type: "button", className: "ck-mode", "aria-pressed": m.id === mode, title: m.hint, onClick: () => onModeChange?.(m.id), children: m.label }, m.id))) })), header, attachOn && stagedPosition === "above" && (_jsx(AttachmentStrip, { attachments: attachments, labels: labels })), _jsx("textarea", { ref: textareaRef, className: "ck-input", rows: 1, value: text, autoFocus: autoFocus, disabled: disabled || transcribing, placeholder: listening ? labels.listening : sending && queue ? labels.queue : placeholder, "aria-label": ariaLabel ?? placeholder, enterKeyHint: "send", onChange: (e) => {
|
|
180
156
|
const next = e.target.value;
|
|
181
157
|
if (onEmptySlash && next === "/" && text === "") {
|
|
182
158
|
onEmptySlash();
|
|
@@ -191,6 +167,6 @@ export function Composer({ onSend, placeholder, ariaLabel, disabled = false, sen
|
|
|
191
167
|
e.preventDefault();
|
|
192
168
|
void submit();
|
|
193
169
|
}
|
|
194
|
-
} }), attachOn && stagedPosition === "below" && (_jsx(AttachmentStrip, { attachments: attachments, labels: labels })), _jsxs("div", { className: "ck-actions", children: [_jsxs("div", { className: "ck-tools", children: [(attachOn || extras.length > 0) && (_jsx(AttachMenu, { onFiles: onFiles, disabled: disabled || (attachments.full && extras.length === 0), labels: { attach: labels.attach, ...labels.attachMenu }, sources: attachOn ? undefined : [], rows: extras })), voiceOn && (_jsx("button", { type: "button", className: listening ? "ck-icon-btn ck-mic ck-mic-on" : "ck-icon-btn ck-mic", onClick: dictation.toggle, disabled: disabled || transcribing, "aria-label": listening ? labels.voiceStop : labels.voice, "aria-pressed": listening, title: listening ? labels.voiceStop : labels.voice, children: transcribing ? _jsx(IconSpinner, {}) : _jsx(IconMic, {}) })), tools, hint && _jsx("span", { className: "ck-hint", children: hint })] }), _jsxs("div", { className: "ck-submit", children: [trailing, sending && onStop ? (_jsxs(_Fragment, { children: [queue && canSend && (_jsx("button", { type: "button", className: "ck-send", onClick: () => void submit(), "aria-label": labels.send, title: labels.send, children: _jsx(IconArrowUp, {}) })), _jsx("button", { type: "button", className: "ck-send ck-send-stop", onClick: onStop, "aria-label": labels.stop, title: labels.stop, children: _jsx(IconStop, {}) })] })) : (!listening && (_jsx("button", { type: "button", className: "ck-send", disabled: !canSend, onClick: () => void submit(), "aria-label": labels.send, title: sendBlockedReason ?? labels.send, children: sending ? _jsx(IconSpinner, {}) : _jsx(IconArrowUp, {}) })))] })] }), footer] })] }),
|
|
170
|
+
} }), attachOn && stagedPosition === "below" && (_jsx(AttachmentStrip, { attachments: attachments, labels: labels })), _jsxs("div", { className: "ck-actions", children: [_jsxs("div", { className: "ck-tools", children: [(attachOn || extras.length > 0) && (_jsx(AttachMenu, { onFiles: onFiles, disabled: disabled || (attachments.full && extras.length === 0), labels: { attach: labels.attach, ...labels.attachMenu }, sources: attachOn ? undefined : [], rows: extras })), voiceOn && (_jsx("button", { type: "button", className: listening ? "ck-icon-btn ck-mic ck-mic-on" : "ck-icon-btn ck-mic", onClick: dictation.toggle, disabled: disabled || transcribing, "aria-label": listening ? labels.voiceStop : labels.voice, "aria-pressed": listening, title: listening ? labels.voiceStop : labels.voice, children: transcribing ? _jsx(IconSpinner, {}) : _jsx(IconMic, {}) })), tools, hint && _jsx("span", { className: "ck-hint", children: hint })] }), _jsxs("div", { className: "ck-submit", children: [trailing, sending && onStop ? (_jsxs(_Fragment, { children: [queue && canSend && (_jsx("button", { type: "button", className: "ck-send", onClick: () => void submit(), "aria-label": labels.send, title: labels.send, children: _jsx(IconArrowUp, {}) })), _jsx("button", { type: "button", className: "ck-send ck-send-stop", onClick: onStop, "aria-label": labels.stop, title: labels.stop, children: _jsx(IconStop, {}) })] })) : (!listening && (_jsx("button", { type: "button", className: "ck-send", disabled: !canSend, onClick: () => void submit(), "aria-label": labels.send, title: sendBlockedReason ?? labels.send, children: sending ? _jsx(IconSpinner, {}) : _jsx(IconArrowUp, {}) })))] })] }), footer] })] }), _jsx(VoiceProblem, { dictation: dictation, labels: labels })] }));
|
|
195
171
|
}
|
|
196
172
|
//# sourceMappingURL=Composer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/react/Composer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/react/Composer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type ReactNode, type Ref } from "react";
|
|
2
|
+
import { type DictationProblem } from "../dictation.js";
|
|
3
|
+
import type { ComposerVoice } from "./Composer.js";
|
|
4
|
+
export type DictationFieldLabels = {
|
|
5
|
+
voice: string;
|
|
6
|
+
voiceStop: string;
|
|
7
|
+
cancelRecording: string;
|
|
8
|
+
confirmRecording: string;
|
|
9
|
+
transcribing: string;
|
|
10
|
+
listening: string;
|
|
11
|
+
retryTake: string;
|
|
12
|
+
dismiss: string;
|
|
13
|
+
dictation: Record<DictationProblem, string>;
|
|
14
|
+
/** The button that opens the improve panel. */
|
|
15
|
+
improve: string;
|
|
16
|
+
/** Placeholder of the "what should change?" box. */
|
|
17
|
+
improveWhat: string;
|
|
18
|
+
improveApply: string;
|
|
19
|
+
improveWorking: string;
|
|
20
|
+
improveFailed: string;
|
|
21
|
+
/** Shown after a change, beside Undo. */
|
|
22
|
+
improved: string;
|
|
23
|
+
undo: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const DEFAULT_DICTATION_FIELD_LABELS: DictationFieldLabels;
|
|
26
|
+
/**
|
|
27
|
+
* Writing help for a field: given the text and what the person asked for,
|
|
28
|
+
* resolve to the new text, or to `null` when it could not be done. Chatkit
|
|
29
|
+
* ships no model call and no prompt — the app (or `@bitbaum/writingkit`)
|
|
30
|
+
* owns those — only the way a person asks, sees and takes it back.
|
|
31
|
+
*/
|
|
32
|
+
export type ImproveRun = (text: string, instruction: string) => Promise<string | null | undefined>;
|
|
33
|
+
export type DictationFieldProps = {
|
|
34
|
+
value: string;
|
|
35
|
+
onValueChange: (next: string) => void;
|
|
36
|
+
/** Visible label. Without one, `ariaLabel` is required for assistive tech. */
|
|
37
|
+
label?: ReactNode;
|
|
38
|
+
ariaLabel?: string;
|
|
39
|
+
id?: string;
|
|
40
|
+
placeholder?: string;
|
|
41
|
+
/** `false`: a one-line field (a title, a summary). Default: a growing text area. */
|
|
42
|
+
multiline?: boolean;
|
|
43
|
+
/** Fewest rows a multiline field shows. Default 3. */
|
|
44
|
+
rows?: number;
|
|
45
|
+
maxLength?: number;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
required?: boolean;
|
|
48
|
+
/** The microphone. Pass `{ transcribeUrl }` for the server leg; `false` hides it. */
|
|
49
|
+
voice?: ComposerVoice | false;
|
|
50
|
+
/** Give it, and a non-empty field offers "Improve". */
|
|
51
|
+
improve?: {
|
|
52
|
+
run: ImproveRun;
|
|
53
|
+
suggestions?: readonly string[];
|
|
54
|
+
};
|
|
55
|
+
/** Under the field: a count, a rule, an example. */
|
|
56
|
+
hint?: ReactNode;
|
|
57
|
+
inputRef?: Ref<HTMLTextAreaElement | HTMLInputElement>;
|
|
58
|
+
labels?: Partial<Omit<DictationFieldLabels, "dictation">> & {
|
|
59
|
+
dictation?: Partial<DictationFieldLabels["dictation"]>;
|
|
60
|
+
};
|
|
61
|
+
className?: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* ANY text box a person types words into: the microphone is part of it.
|
|
65
|
+
*
|
|
66
|
+
* This is the rule from AGENTS.md ("The experience belongs to the package")
|
|
67
|
+
* made a component: a field made by hand in an app has no microphone, 14px
|
|
68
|
+
* text that makes iOS zoom the page, and no way to take a failed take back —
|
|
69
|
+
* so there is one, and it is this. `Composer` is the same thing for a
|
|
70
|
+
* conversation (it also sends); this is for everything else: a note, a title,
|
|
71
|
+
* a bio, a message to a seller.
|
|
72
|
+
*
|
|
73
|
+
* Controlled. Dictation appends to what is there. With `improve`, a field that
|
|
74
|
+
* has text offers one more control: pick a suggestion or say or type what to
|
|
75
|
+
* change, the text is replaced, and Undo puts it back until the next edit.
|
|
76
|
+
*/
|
|
77
|
+
export declare function DictationField({ value, onValueChange, label, ariaLabel, id, placeholder, multiline, rows, maxLength, disabled, required, voice, improve, hint, inputRef, labels: overrides, className, }: DictationFieldProps): import("react").JSX.Element;
|
|
78
|
+
//# sourceMappingURL=DictationField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictationField.d.ts","sourceRoot":"","sources":["../../src/react/DictationField.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC5C,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,oBAkB5C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/D,oDAAoD;IACpD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,GAAG;QAC1D,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;KACxD,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,aAAa,EACb,KAAK,EACL,SAAS,EACT,EAAE,EACF,WAAW,EACX,SAAgB,EAChB,IAAQ,EACR,SAAS,EACT,QAAgB,EAChB,QAAQ,EACR,KAAU,EACV,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EAAE,SAAS,EACjB,SAAS,GACV,EAAE,mBAAmB,+BAwMrB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
4
|
+
import { appendTranscript } from "../composer.js";
|
|
5
|
+
import { DEFAULT_DICTATION_MESSAGES } from "../dictation.js";
|
|
6
|
+
import { useDictation } from "./use-dictation.js";
|
|
7
|
+
import { useAutoGrow } from "./hooks.js";
|
|
8
|
+
import { VoiceBar, VoiceProblem } from "./Voice.js";
|
|
9
|
+
import { IconMic, IconSpinner } from "./icons.js";
|
|
10
|
+
export const DEFAULT_DICTATION_FIELD_LABELS = {
|
|
11
|
+
voice: "Speak instead of typing",
|
|
12
|
+
voiceStop: "Stop recording",
|
|
13
|
+
cancelRecording: "Cancel recording",
|
|
14
|
+
confirmRecording: "Done — use what I said",
|
|
15
|
+
transcribing: "Transcribing…",
|
|
16
|
+
listening: "Listening…",
|
|
17
|
+
retryTake: "Try again",
|
|
18
|
+
dismiss: "Dismiss",
|
|
19
|
+
dictation: DEFAULT_DICTATION_MESSAGES,
|
|
20
|
+
improve: "Improve",
|
|
21
|
+
improveWhat: "What should change?",
|
|
22
|
+
improveApply: "Change it",
|
|
23
|
+
improveWorking: "Working on it…",
|
|
24
|
+
improveFailed: "That did not work just now. Your text is unchanged; try again, or edit it by hand.",
|
|
25
|
+
improved: "Changed by writing help.",
|
|
26
|
+
undo: "Undo",
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* ANY text box a person types words into: the microphone is part of it.
|
|
30
|
+
*
|
|
31
|
+
* This is the rule from AGENTS.md ("The experience belongs to the package")
|
|
32
|
+
* made a component: a field made by hand in an app has no microphone, 14px
|
|
33
|
+
* text that makes iOS zoom the page, and no way to take a failed take back —
|
|
34
|
+
* so there is one, and it is this. `Composer` is the same thing for a
|
|
35
|
+
* conversation (it also sends); this is for everything else: a note, a title,
|
|
36
|
+
* a bio, a message to a seller.
|
|
37
|
+
*
|
|
38
|
+
* Controlled. Dictation appends to what is there. With `improve`, a field that
|
|
39
|
+
* has text offers one more control: pick a suggestion or say or type what to
|
|
40
|
+
* change, the text is replaced, and Undo puts it back until the next edit.
|
|
41
|
+
*/
|
|
42
|
+
export function DictationField({ value, onValueChange, label, ariaLabel, id, placeholder, multiline = true, rows = 3, maxLength, disabled = false, required, voice = {}, improve, hint, inputRef, labels: overrides, className, }) {
|
|
43
|
+
const labels = {
|
|
44
|
+
...DEFAULT_DICTATION_FIELD_LABELS,
|
|
45
|
+
...overrides,
|
|
46
|
+
dictation: { ...DEFAULT_DICTATION_FIELD_LABELS.dictation, ...overrides?.dictation },
|
|
47
|
+
};
|
|
48
|
+
const autoId = useId();
|
|
49
|
+
const fieldId = id ?? `ck-field-${autoId}`;
|
|
50
|
+
// The latest text, for a take that finishes after more typing.
|
|
51
|
+
const valueRef = useRef(value);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
valueRef.current = value;
|
|
54
|
+
});
|
|
55
|
+
const set = (next) => {
|
|
56
|
+
valueRef.current = next;
|
|
57
|
+
onValueChange(next);
|
|
58
|
+
};
|
|
59
|
+
const areaRef = useRef(null);
|
|
60
|
+
useAutoGrow(areaRef, multiline ? value : "");
|
|
61
|
+
const dictation = useDictation({
|
|
62
|
+
...(voice || {}),
|
|
63
|
+
onText: (said) => {
|
|
64
|
+
setUndo(null);
|
|
65
|
+
set(appendTranscript(valueRef.current, said));
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
const voiceOn = voice !== false && dictation.supported;
|
|
69
|
+
const listening = dictation.status === "listening";
|
|
70
|
+
const transcribing = dictation.status === "transcribing";
|
|
71
|
+
const [open, setOpen] = useState(false);
|
|
72
|
+
const [working, setWorking] = useState(false);
|
|
73
|
+
const [failed, setFailed] = useState(false);
|
|
74
|
+
const [instruction, setInstruction] = useState("");
|
|
75
|
+
const [undo, setUndo] = useState(null);
|
|
76
|
+
const run = async (what) => {
|
|
77
|
+
if (!improve || working || !what.trim())
|
|
78
|
+
return;
|
|
79
|
+
setWorking(true);
|
|
80
|
+
setFailed(false);
|
|
81
|
+
const before = valueRef.current;
|
|
82
|
+
try {
|
|
83
|
+
const next = await improve.run(before, what.trim());
|
|
84
|
+
if (typeof next === "string" && next.trim()) {
|
|
85
|
+
setUndo(before);
|
|
86
|
+
set(next);
|
|
87
|
+
setOpen(false);
|
|
88
|
+
setInstruction("");
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
setFailed(true);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
setFailed(true);
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
setWorking(false);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const canImprove = Boolean(improve) && value.trim().length > 0;
|
|
101
|
+
const common = {
|
|
102
|
+
id: fieldId,
|
|
103
|
+
className: "ck-field-input",
|
|
104
|
+
value,
|
|
105
|
+
placeholder: listening ? labels.listening : placeholder,
|
|
106
|
+
maxLength,
|
|
107
|
+
required,
|
|
108
|
+
disabled: disabled || transcribing,
|
|
109
|
+
"aria-label": label ? undefined : (ariaLabel ?? placeholder),
|
|
110
|
+
};
|
|
111
|
+
const onChange = (next) => {
|
|
112
|
+
setUndo(null);
|
|
113
|
+
set(next);
|
|
114
|
+
};
|
|
115
|
+
const setRefs = (el) => {
|
|
116
|
+
if (multiline)
|
|
117
|
+
areaRef.current = el;
|
|
118
|
+
if (typeof inputRef === "function")
|
|
119
|
+
inputRef(el);
|
|
120
|
+
else if (inputRef)
|
|
121
|
+
inputRef.current = el;
|
|
122
|
+
};
|
|
123
|
+
return (_jsxs("div", { className: className ? `ck-field-wrap ${className}` : "ck-field-wrap", children: [label && (_jsx("label", { className: "ck-field-label", htmlFor: fieldId, children: label })), _jsxs("div", { className: "ck-field-frame", children: [_jsx(VoiceBar, { dictation: dictation, labels: labels }), _jsxs("div", { className: multiline ? "ck-field" : "ck-field ck-field-single", children: [multiline ? (_jsx("textarea", { ...common, ref: setRefs, rows: rows, onChange: (e) => onChange(e.target.value) })) : (_jsx("input", { ...common, ref: setRefs, type: "text", enterKeyHint: "done", onChange: (e) => onChange(e.target.value) })), _jsxs("div", { className: "ck-field-actions", children: [canImprove && (_jsx("button", { type: "button", className: "ck-field-improve", "aria-expanded": open, disabled: disabled || working, onClick: () => setOpen((o) => !o), children: labels.improve })), voiceOn && (_jsx("button", { type: "button", className: listening ? "ck-icon-btn ck-mic ck-mic-on" : "ck-icon-btn ck-mic", onClick: dictation.toggle, disabled: disabled || transcribing, "aria-label": listening ? labels.voiceStop : labels.voice, "aria-pressed": listening, title: listening ? labels.voiceStop : labels.voice, children: transcribing ? _jsx(IconSpinner, {}) : _jsx(IconMic, {}) }))] })] })] }), open && improve && (_jsxs("div", { className: "ck-field-improve-panel", children: [improve.suggestions && improve.suggestions.length > 0 && (_jsx("div", { className: "ck-field-suggestions", role: "group", children: improve.suggestions.map((s) => (_jsx("button", { type: "button", className: "ck-field-suggestion", disabled: working, onClick: () => void run(s), children: s }, s))) })), _jsxs("div", { className: "ck-field-improve-row", children: [_jsx(DictationField, { value: instruction, onValueChange: setInstruction, multiline: false, placeholder: labels.improveWhat, ariaLabel: labels.improveWhat, voice: voice, disabled: working, labels: overrides }), _jsx("button", { type: "button", className: "ck-field-apply", disabled: working || !instruction.trim(), onClick: () => void run(instruction), children: working ? labels.improveWorking : labels.improveApply })] }), failed && (_jsx("p", { className: "ck-problem", role: "alert", children: _jsx("span", { children: labels.improveFailed }) }))] })), undo !== null && (_jsxs("p", { className: "ck-field-undo", role: "status", children: [_jsx("span", { children: labels.improved }), _jsx("button", { type: "button", className: "ck-problem-retry", onClick: () => {
|
|
124
|
+
set(undo);
|
|
125
|
+
setUndo(null);
|
|
126
|
+
}, children: labels.undo })] })), _jsx(VoiceProblem, { dictation: dictation, labels: labels }), hint && _jsx("div", { className: "ck-field-hint", children: hint })] }));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=DictationField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictationField.js","sourceRoot":"","sources":["../../src/react/DictationField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DictationProblem } from "../dictation.js";
|
|
2
|
+
import type { DictationController } from "./use-dictation.js";
|
|
3
|
+
/**
|
|
4
|
+
* The microphone's two visible states, drawn once. `Composer` and
|
|
5
|
+
* `DictationField` both put them over / under their box, so a take looks and
|
|
6
|
+
* behaves the same in a chat, in a comment and in a title field — the same
|
|
7
|
+
* "every control the same everywhere" rule as the rest of the package.
|
|
8
|
+
*/
|
|
9
|
+
export type VoiceLabels = {
|
|
10
|
+
cancelRecording: string;
|
|
11
|
+
confirmRecording: string;
|
|
12
|
+
transcribing: string;
|
|
13
|
+
retryTake: string;
|
|
14
|
+
dismiss: string;
|
|
15
|
+
dictation: Record<DictationProblem, string>;
|
|
16
|
+
};
|
|
17
|
+
/** Covers its positioned parent while a take is live or being written down. */
|
|
18
|
+
export declare function VoiceBar({ dictation, labels, }: {
|
|
19
|
+
dictation: DictationController;
|
|
20
|
+
labels: VoiceLabels;
|
|
21
|
+
}): import("react").JSX.Element | null;
|
|
22
|
+
/** A mic failure, in words, with the way forward: try the kept take again, or dismiss. */
|
|
23
|
+
export declare function VoiceProblem({ dictation, labels, }: {
|
|
24
|
+
dictation: DictationController;
|
|
25
|
+
labels: VoiceLabels;
|
|
26
|
+
}): import("react").JSX.Element | null;
|
|
27
|
+
//# sourceMappingURL=Voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Voice.d.ts","sourceRoot":"","sources":["../../src/react/Voice.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC7C,CAAC;AAiCF,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;CACrB,sCAkDA;AAED,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;CACrB,sCA8BA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { formatElapsed } from "../composer.js";
|
|
5
|
+
import { IconCheck, IconSpinner, IconX } from "./icons.js";
|
|
6
|
+
/**
|
|
7
|
+
* What has been heard so far, as one line that follows the end of the words:
|
|
8
|
+
* a long sentence scrolls with the speaker instead of freezing on its start.
|
|
9
|
+
*/
|
|
10
|
+
function LiveWords({ text, dim }) {
|
|
11
|
+
const ref = useRef(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const el = ref.current;
|
|
14
|
+
if (el)
|
|
15
|
+
el.scrollLeft = el.scrollWidth;
|
|
16
|
+
}, [text]);
|
|
17
|
+
return (_jsx("span", { ref: ref, className: dim ? "ck-voice-live ck-voice-live-dim" : "ck-voice-live", children: text }));
|
|
18
|
+
}
|
|
19
|
+
function Elapsed({ since }) {
|
|
20
|
+
const [now, setNow] = useState(() => Date.now());
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (since === null)
|
|
23
|
+
return;
|
|
24
|
+
const t = setInterval(() => setNow(Date.now()), 250);
|
|
25
|
+
return () => clearInterval(t);
|
|
26
|
+
}, [since]);
|
|
27
|
+
return (_jsx("span", { className: "ck-voice-timer", children: formatElapsed(since === null ? 0 : (now - since) / 1000) }));
|
|
28
|
+
}
|
|
29
|
+
/** Covers its positioned parent while a take is live or being written down. */
|
|
30
|
+
export function VoiceBar({ dictation, labels, }) {
|
|
31
|
+
const listening = dictation.status === "listening";
|
|
32
|
+
const transcribing = dictation.status === "transcribing";
|
|
33
|
+
if (!listening && !transcribing)
|
|
34
|
+
return null;
|
|
35
|
+
return (_jsx("div", { className: "ck-voice-bar", role: "status", "aria-live": "polite", children: listening ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "ck-voice-dot", "aria-hidden": true }), dictation.liveText ? (_jsx(LiveWords, { text: dictation.liveText })) : (_jsx("span", { className: "ck-voice-wave", "aria-hidden": true, children: Array.from({ length: 9 }).map((_, i) => (_jsx("span", {}, i))) })), _jsx(Elapsed, { since: dictation.startedAt }), _jsx("button", { type: "button", className: "ck-icon-btn", onClick: dictation.cancel, "aria-label": labels.cancelRecording, title: labels.cancelRecording, children: _jsx(IconX, {}) }), _jsx("button", { type: "button", className: "ck-voice-confirm", onClick: dictation.stop, "aria-label": labels.confirmRecording, title: labels.confirmRecording, children: _jsx(IconCheck, {}) })] })) : (_jsxs(_Fragment, { children: [_jsx(IconSpinner, {}), dictation.liveText ? (_jsx(LiveWords, { text: dictation.liveText, dim: true })) : (_jsx("span", { className: "ck-voice-timer", children: labels.transcribing }))] })) }));
|
|
36
|
+
}
|
|
37
|
+
/** A mic failure, in words, with the way forward: try the kept take again, or dismiss. */
|
|
38
|
+
export function VoiceProblem({ dictation, labels, }) {
|
|
39
|
+
if (!dictation.problem)
|
|
40
|
+
return null;
|
|
41
|
+
return (_jsxs("p", { className: "ck-problem", role: "status", children: [_jsxs("span", { children: [labels.dictation[dictation.problem], dictation.problemDetail && (_jsxs("span", { className: "ck-problem-detail", children: [" ", dictation.problemDetail] }))] }), dictation.canRetry && (_jsx("button", { type: "button", className: "ck-problem-retry", onClick: () => void dictation.retry(), disabled: dictation.status !== "idle", children: labels.retryTake })), _jsx("button", { type: "button", className: "ck-problem-x", onClick: dictation.clearProblem, "aria-label": labels.dismiss, children: _jsx(IconX, {}) })] }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=Voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Voice.js","sourceRoot":"","sources":["../../src/react/Voice.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAO;;iBAUhC,MAAM;EAYhB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAO;;iBAUhC,MAAM;EAYhB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;;;;;;;EA4LrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,OAAO,UAAO,QAqBvF;AAED;;;;;;;;gFAQgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAM,QAqB/F"}
|
package/dist/react/hooks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from "react";
|
|
3
|
-
import { isFollowing } from "../scroll.js";
|
|
3
|
+
import { isAtBottom, isFollowing } from "../scroll.js";
|
|
4
4
|
/**
|
|
5
5
|
* Copy + a checkmark that resets. Failures are swallowed on purpose (insecure
|
|
6
6
|
* origin, denied permission): the text stays selectable, so a failed copy
|
|
@@ -60,6 +60,11 @@ export function useStickToBottom(changes, grew) {
|
|
|
60
60
|
else if (top > previousTop.current + 1 &&
|
|
61
61
|
(downwardIntent.current || draggingScrollbar.current))
|
|
62
62
|
follow(isFollowing(el));
|
|
63
|
+
// Arriving at the very bottom by any downward scroll (a fling that runs
|
|
64
|
+
// on after the finger lifted, a scroll anchored by the browser) is being
|
|
65
|
+
// back at the latest message, whatever the last touch event said.
|
|
66
|
+
else if (top > previousTop.current + 1 && isAtBottom(el))
|
|
67
|
+
follow(true);
|
|
63
68
|
previousTop.current = top;
|
|
64
69
|
}, [follow]);
|
|
65
70
|
const pin = useCallback((smooth = false) => {
|
|
@@ -128,6 +133,15 @@ export function useStickToBottom(changes, grew) {
|
|
|
128
133
|
const touchStart = (event) => {
|
|
129
134
|
touchY = event.touches[0]?.clientY;
|
|
130
135
|
};
|
|
136
|
+
// A finger rocks back a pixel or two as it lifts. That last touchmove
|
|
137
|
+
// reads as "scrolling up" and paused following at the bottom, leaving
|
|
138
|
+
// the jump button on screen with nowhere to jump to (OrangeCat on
|
|
139
|
+
// Android, 2026-11-01). Where the gesture ENDS decides: at the very
|
|
140
|
+
// bottom, the reader is following again.
|
|
141
|
+
const touchEnd = (event) => {
|
|
142
|
+
if (event.touches.length === 0 && isAtBottom(selected))
|
|
143
|
+
follow(true);
|
|
144
|
+
};
|
|
131
145
|
const touchMove = (event) => {
|
|
132
146
|
const y = event.touches[0]?.clientY;
|
|
133
147
|
if (y !== undefined && touchY !== undefined) {
|
|
@@ -168,6 +182,8 @@ export function useStickToBottom(changes, grew) {
|
|
|
168
182
|
["wheel", wheel],
|
|
169
183
|
["touchstart", touchStart],
|
|
170
184
|
["touchmove", touchMove],
|
|
185
|
+
["touchend", touchEnd],
|
|
186
|
+
["touchcancel", touchEnd],
|
|
171
187
|
["keydown", key],
|
|
172
188
|
];
|
|
173
189
|
for (const [name, listener] of events)
|
package/dist/react/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,WAAW,EACX,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export { Composer, DEFAULT_COMPOSER_LABELS } from "./Composer.js";
|
|
|
11
11
|
export type { ComposerProps, ComposerLabels, ComposerLabelOverrides, ComposerVoice, ComposerHandle, } from "./Composer.js";
|
|
12
12
|
export { ChatThread, ChatMessage, ChatReplies, ChatStarters, starterParts, ThinkingRow, formatThinkingDuration, DEFAULT_THREAD_LABELS, } from "./Thread.js";
|
|
13
13
|
export type { ChatMessageData, ChatFailure, FooterInfo, MessageChip, ChatSpeaker, LiveTurn, Starter, Thinking, ThinkingStep, ThreadLabels, } from "./Thread.js";
|
|
14
|
+
export { DictationField, DEFAULT_DICTATION_FIELD_LABELS } from "./DictationField.js";
|
|
15
|
+
export type { DictationFieldProps, DictationFieldLabels, ImproveRun } from "./DictationField.js";
|
|
16
|
+
export { CommentThread, DEFAULT_COMMENT_THREAD_LABELS } from "./CommentThread.js";
|
|
17
|
+
export type { CommentItem, CommentTransport, CommentThreadProps, CommentThreadLabels, } from "./CommentThread.js";
|
|
14
18
|
export { ChatScreen } from "./Screen.js";
|
|
15
19
|
export { Markdown, SourcesRow, defaultRenderLink, defaultRenderCitation } from "./Markdown.js";
|
|
16
20
|
export { AnswerActions, DEFAULT_ANSWER_ACTIONS_LABELS } from "./AnswerActions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9F,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { Composer, DEFAULT_COMPOSER_LABELS } from "./Composer.js";
|
|
11
11
|
export { ChatThread, ChatMessage, ChatReplies, ChatStarters, starterParts, ThinkingRow, formatThinkingDuration, DEFAULT_THREAD_LABELS, } from "./Thread.js";
|
|
12
|
+
export { DictationField, DEFAULT_DICTATION_FIELD_LABELS } from "./DictationField.js";
|
|
13
|
+
export { CommentThread, DEFAULT_COMMENT_THREAD_LABELS } from "./CommentThread.js";
|
|
12
14
|
export { ChatScreen } from "./Screen.js";
|
|
13
15
|
export { Markdown, SourcesRow, defaultRenderLink, defaultRenderCitation } from "./Markdown.js";
|
|
14
16
|
export { AnswerActions, DEFAULT_ANSWER_ACTIONS_LABELS } from "./AnswerActions.js";
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAQlE,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAarB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAQlE,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAarB,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAOlF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/replies.js
CHANGED
|
@@ -31,7 +31,7 @@ export const REPLIES_INSTRUCTION = [
|
|
|
31
31
|
"```" + REPLIES_FENCE,
|
|
32
32
|
'["Yes, do it", "Show me first", "Not now"]',
|
|
33
33
|
"```",
|
|
34
|
-
|
|
34
|
+
'Rules: write them in the person\'s language, in their voice (what THEY would say, not what you would). Each under 40 characters. Each must make sense sent on its own. Never repeat what they already said. When your answer ends on a question to them, the replies are short answers to that question ("About two weeks", "After a fall"), never your own question repeated and not next steps. Put the block last, after everything else. Do not write any heading or label before it (no Quick replies, Follow-up questions or the like, in any language): the replies are drawn as buttons. Leave it out only when the conversation is over (a goodbye, a thanks with nothing left to do).',
|
|
35
35
|
].join("\n");
|
|
36
36
|
const COMPLETE = new RegExp("\\n?```" + REPLIES_FENCE + "\\s*([\\s\\S]*?)```", "i");
|
|
37
37
|
// A complete JSON array of short strings as the answer's last paragraph, with
|
package/dist/replies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAgB7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,sBAAsB;IACtB,0LAA0L;IAC1L,KAAK,GAAG,aAAa;IACrB,4CAA4C;IAC5C,KAAK;IACL,
|
|
1
|
+
{"version":3,"file":"replies.js","sourceRoot":"","sources":["../src/replies.ts"],"names":[],"mappings":"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"}
|
package/dist/scroll.d.ts
CHANGED
|
@@ -10,4 +10,15 @@ export declare function isFollowing(el: {
|
|
|
10
10
|
scrollTop: number;
|
|
11
11
|
clientHeight: number;
|
|
12
12
|
}, threshold?: number): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Close enough to the bottom that nothing is left to jump to: a finger's
|
|
15
|
+
* lift-off wobble, sub-pixel rounding. Far tighter than the follow threshold,
|
|
16
|
+
* so a deliberate small scroll up still pauses following.
|
|
17
|
+
*/
|
|
18
|
+
export declare const AT_BOTTOM_PX = 16;
|
|
19
|
+
export declare function isAtBottom(el: {
|
|
20
|
+
scrollHeight: number;
|
|
21
|
+
scrollTop: number;
|
|
22
|
+
clientHeight: number;
|
|
23
|
+
}, slack?: number): boolean;
|
|
13
24
|
//# sourceMappingURL=scroll.d.ts.map
|
package/dist/scroll.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../src/scroll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,wBAAgB,WAAW,CACzB,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACrE,SAAS,SAAsB,GAC9B,OAAO,CAET"}
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../src/scroll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,wBAAgB,WAAW,CACzB,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACrE,SAAS,SAAsB,GAC9B,OAAO,CAET;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,wBAAgB,UAAU,CACxB,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACrE,KAAK,SAAe,GACnB,OAAO,CAET"}
|
package/dist/scroll.js
CHANGED
|
@@ -8,4 +8,13 @@ export const FOLLOW_THRESHOLD_PX = 120;
|
|
|
8
8
|
export function isFollowing(el, threshold = FOLLOW_THRESHOLD_PX) {
|
|
9
9
|
return el.scrollHeight - el.scrollTop - el.clientHeight < threshold;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Close enough to the bottom that nothing is left to jump to: a finger's
|
|
13
|
+
* lift-off wobble, sub-pixel rounding. Far tighter than the follow threshold,
|
|
14
|
+
* so a deliberate small scroll up still pauses following.
|
|
15
|
+
*/
|
|
16
|
+
export const AT_BOTTOM_PX = 16;
|
|
17
|
+
export function isAtBottom(el, slack = AT_BOTTOM_PX) {
|
|
18
|
+
return el.scrollHeight - el.scrollTop - el.clientHeight <= slack;
|
|
19
|
+
}
|
|
11
20
|
//# sourceMappingURL=scroll.js.map
|
package/dist/scroll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../src/scroll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,MAAM,UAAU,WAAW,CACzB,EAAqE,EACrE,SAAS,GAAG,mBAAmB;IAE/B,OAAO,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC;AACtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../src/scroll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,MAAM,UAAU,WAAW,CACzB,EAAqE,EACrE,SAAS,GAAG,mBAAmB;IAE/B,OAAO,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,MAAM,UAAU,UAAU,CACxB,EAAqE,EACrE,KAAK,GAAG,YAAY;IAEpB,OAAO,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC;AACnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitbaum/chatkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "One chat for every product: a composer with a microphone that always works, a thread that does not fight the reader, messages with copy and retry, and LLM markdown — the fleet's chat standard as a package.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Cato",
|
|
@@ -79,10 +79,10 @@
|
|
|
79
79
|
"format": "prettier --write .",
|
|
80
80
|
"format:check": "prettier --check .",
|
|
81
81
|
"demo": "esbuild demo/demo.tsx --bundle --jsx=automatic --format=iife --define:process.env.NODE_ENV='\"production\"' --outfile=demo/dist/demo.js --log-level=warning",
|
|
82
|
-
"test:browser": "pnpm run demo && node test/browser.mjs && node test/browser-scroll.mjs && node test/browser-app.mjs && node test/browser-pdf.mjs"
|
|
82
|
+
"test:browser": "pnpm run demo && node test/browser.mjs && node test/browser-scroll.mjs && node test/browser-app.mjs && node test/browser-pdf.mjs && node test/browser-field.mjs"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@bitbaum/design-tokens": "^1.2
|
|
85
|
+
"@bitbaum/design-tokens": "^1.5.2",
|
|
86
86
|
"@eslint/js": "^10.0.1",
|
|
87
87
|
"@types/node": "^26.4.0",
|
|
88
88
|
"@types/react": "^19.2.18",
|
package/styles.css
CHANGED
|
@@ -2426,3 +2426,235 @@ a.ck-turn-chip:hover {
|
|
|
2426
2426
|
animation: none;
|
|
2427
2427
|
}
|
|
2428
2428
|
}
|
|
2429
|
+
|
|
2430
|
+
/* ── field and comments: after the ChatApp boundary on purpose ─────────────
|
|
2431
|
+
DictationField and CommentThread. Not a chat surface, so not in the
|
|
2432
|
+
embedded styles/chat.css (the widget's budget is for the chat). The same
|
|
2433
|
+
frame, 16px text, mic and voice bar as the composer, for everything that is
|
|
2434
|
+
not a conversation. */
|
|
2435
|
+
.ck-field-wrap,
|
|
2436
|
+
.ck-comments {
|
|
2437
|
+
font-family: var(--ck-font);
|
|
2438
|
+
color: var(--ck-fg);
|
|
2439
|
+
min-width: 0;
|
|
2440
|
+
}
|
|
2441
|
+
.ck-field-wrap *,
|
|
2442
|
+
.ck-comments * {
|
|
2443
|
+
box-sizing: border-box;
|
|
2444
|
+
}
|
|
2445
|
+
.ck-field-wrap {
|
|
2446
|
+
display: flex;
|
|
2447
|
+
flex-direction: column;
|
|
2448
|
+
gap: 0.375rem;
|
|
2449
|
+
}
|
|
2450
|
+
.ck-field-label {
|
|
2451
|
+
font-size: 0.875rem;
|
|
2452
|
+
font-weight: 600;
|
|
2453
|
+
color: var(--ck-fg-2);
|
|
2454
|
+
}
|
|
2455
|
+
.ck-field-frame {
|
|
2456
|
+
position: relative;
|
|
2457
|
+
min-width: 0;
|
|
2458
|
+
}
|
|
2459
|
+
.ck-field {
|
|
2460
|
+
display: flex;
|
|
2461
|
+
flex-direction: column;
|
|
2462
|
+
min-width: 0;
|
|
2463
|
+
padding: 0.5rem 0.625rem 0.5rem;
|
|
2464
|
+
border: 1px solid var(--ck-line);
|
|
2465
|
+
border-radius: var(--ck-radius-sm);
|
|
2466
|
+
background: var(--ck-bg);
|
|
2467
|
+
transition: border-color 0.15s ease;
|
|
2468
|
+
}
|
|
2469
|
+
.ck-field:focus-within {
|
|
2470
|
+
border-color: var(--ck-line-2);
|
|
2471
|
+
outline: 2px solid var(--ck-accent);
|
|
2472
|
+
outline-offset: 1px;
|
|
2473
|
+
}
|
|
2474
|
+
.ck-field-input {
|
|
2475
|
+
display: block;
|
|
2476
|
+
width: 100%;
|
|
2477
|
+
min-width: 0;
|
|
2478
|
+
min-height: 2.5rem;
|
|
2479
|
+
resize: none;
|
|
2480
|
+
padding: 0.25rem 0.125rem;
|
|
2481
|
+
border: 0;
|
|
2482
|
+
outline: none;
|
|
2483
|
+
background: transparent;
|
|
2484
|
+
color: var(--ck-fg);
|
|
2485
|
+
font: inherit;
|
|
2486
|
+
font-size: max(16px, var(--ck-text));
|
|
2487
|
+
line-height: var(--ck-leading);
|
|
2488
|
+
}
|
|
2489
|
+
.ck-field-input::placeholder {
|
|
2490
|
+
color: var(--ck-muted);
|
|
2491
|
+
}
|
|
2492
|
+
.ck-field-input:disabled {
|
|
2493
|
+
opacity: 0.6;
|
|
2494
|
+
}
|
|
2495
|
+
/* A multiline field: the controls sit under the text, on the right. */
|
|
2496
|
+
.ck-field-actions {
|
|
2497
|
+
display: flex;
|
|
2498
|
+
align-items: center;
|
|
2499
|
+
justify-content: flex-end;
|
|
2500
|
+
gap: 0.375rem;
|
|
2501
|
+
min-height: 0;
|
|
2502
|
+
}
|
|
2503
|
+
.ck-field-actions:empty {
|
|
2504
|
+
display: none;
|
|
2505
|
+
}
|
|
2506
|
+
/* A one-line field: the controls sit beside the text. */
|
|
2507
|
+
.ck-field-single {
|
|
2508
|
+
flex-direction: row;
|
|
2509
|
+
align-items: center;
|
|
2510
|
+
gap: 0.375rem;
|
|
2511
|
+
}
|
|
2512
|
+
.ck-field-single .ck-field-input {
|
|
2513
|
+
flex: 1;
|
|
2514
|
+
}
|
|
2515
|
+
.ck-field-improve,
|
|
2516
|
+
.ck-field-apply,
|
|
2517
|
+
.ck-field-suggestion {
|
|
2518
|
+
min-height: var(--ck-target);
|
|
2519
|
+
padding: 0 0.875rem;
|
|
2520
|
+
border: 1px solid var(--ck-line-2);
|
|
2521
|
+
border-radius: 999px;
|
|
2522
|
+
background: var(--ck-raised);
|
|
2523
|
+
color: var(--ck-fg);
|
|
2524
|
+
font: inherit;
|
|
2525
|
+
font-size: 0.9375rem;
|
|
2526
|
+
font-weight: 600;
|
|
2527
|
+
cursor: pointer;
|
|
2528
|
+
}
|
|
2529
|
+
.ck-field-improve[aria-expanded="true"] {
|
|
2530
|
+
border-color: var(--ck-accent);
|
|
2531
|
+
background: var(--ck-accent-soft);
|
|
2532
|
+
}
|
|
2533
|
+
.ck-field-improve:disabled,
|
|
2534
|
+
.ck-field-apply:disabled,
|
|
2535
|
+
.ck-field-suggestion:disabled {
|
|
2536
|
+
opacity: 0.5;
|
|
2537
|
+
cursor: default;
|
|
2538
|
+
}
|
|
2539
|
+
.ck-field-improve-panel {
|
|
2540
|
+
display: flex;
|
|
2541
|
+
flex-direction: column;
|
|
2542
|
+
gap: 0.5rem;
|
|
2543
|
+
padding: 0.625rem;
|
|
2544
|
+
border: 1px solid var(--ck-line);
|
|
2545
|
+
border-radius: var(--ck-radius-sm);
|
|
2546
|
+
background: var(--ck-overlay);
|
|
2547
|
+
}
|
|
2548
|
+
/* Suggestions are a few choices: an even grid, never wrapping pills. */
|
|
2549
|
+
.ck-field-suggestions {
|
|
2550
|
+
display: grid;
|
|
2551
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
2552
|
+
gap: 0.375rem;
|
|
2553
|
+
}
|
|
2554
|
+
.ck-field-suggestion {
|
|
2555
|
+
min-width: 0;
|
|
2556
|
+
text-align: center;
|
|
2557
|
+
line-height: 1.25;
|
|
2558
|
+
padding-block: 0.5rem;
|
|
2559
|
+
}
|
|
2560
|
+
.ck-field-improve-row {
|
|
2561
|
+
display: flex;
|
|
2562
|
+
align-items: flex-start;
|
|
2563
|
+
gap: 0.375rem;
|
|
2564
|
+
}
|
|
2565
|
+
.ck-field-improve-row > .ck-field-wrap {
|
|
2566
|
+
flex: 1;
|
|
2567
|
+
}
|
|
2568
|
+
.ck-field-undo {
|
|
2569
|
+
display: flex;
|
|
2570
|
+
align-items: center;
|
|
2571
|
+
gap: 0.5rem;
|
|
2572
|
+
margin: 0;
|
|
2573
|
+
font-size: 0.9375rem;
|
|
2574
|
+
color: var(--ck-fg-2);
|
|
2575
|
+
}
|
|
2576
|
+
.ck-field-hint {
|
|
2577
|
+
font-size: 0.875rem;
|
|
2578
|
+
color: var(--ck-muted);
|
|
2579
|
+
}
|
|
2580
|
+
:where(.ck-field-wrap, .ck-comments) button:focus-visible,
|
|
2581
|
+
.ck-comment-signin-link:focus-visible {
|
|
2582
|
+
outline: 2px solid var(--ck-accent);
|
|
2583
|
+
outline-offset: 2px;
|
|
2584
|
+
}
|
|
2585
|
+
|
|
2586
|
+
/* ── comments: the conversation under anything ──────────────────────────── */
|
|
2587
|
+
.ck-comments {
|
|
2588
|
+
display: flex;
|
|
2589
|
+
flex-direction: column;
|
|
2590
|
+
gap: 0.75rem;
|
|
2591
|
+
}
|
|
2592
|
+
.ck-comments-title {
|
|
2593
|
+
margin: 0;
|
|
2594
|
+
font-size: 1.25rem;
|
|
2595
|
+
font-weight: 600;
|
|
2596
|
+
line-height: 1.3;
|
|
2597
|
+
}
|
|
2598
|
+
.ck-comment-list {
|
|
2599
|
+
list-style: none;
|
|
2600
|
+
margin: 0;
|
|
2601
|
+
padding: 0;
|
|
2602
|
+
}
|
|
2603
|
+
.ck-comment {
|
|
2604
|
+
padding: 0.75rem 0;
|
|
2605
|
+
border-top: 1px solid var(--ck-line);
|
|
2606
|
+
}
|
|
2607
|
+
.ck-comment:first-child {
|
|
2608
|
+
border-top: 0;
|
|
2609
|
+
}
|
|
2610
|
+
.ck-comment-meta {
|
|
2611
|
+
margin: 0 0 0.25rem;
|
|
2612
|
+
font-size: 0.875rem;
|
|
2613
|
+
color: var(--ck-muted);
|
|
2614
|
+
}
|
|
2615
|
+
.ck-comment-meta strong {
|
|
2616
|
+
color: var(--ck-fg);
|
|
2617
|
+
}
|
|
2618
|
+
.ck-comment-body {
|
|
2619
|
+
margin: 0;
|
|
2620
|
+
font-size: max(16px, var(--ck-text));
|
|
2621
|
+
line-height: var(--ck-leading);
|
|
2622
|
+
white-space: pre-wrap;
|
|
2623
|
+
overflow-wrap: anywhere;
|
|
2624
|
+
}
|
|
2625
|
+
.ck-comment-remove {
|
|
2626
|
+
min-height: 2rem;
|
|
2627
|
+
padding: 0;
|
|
2628
|
+
border: 0;
|
|
2629
|
+
background: none;
|
|
2630
|
+
color: var(--ck-accent);
|
|
2631
|
+
font: inherit;
|
|
2632
|
+
font-weight: 600;
|
|
2633
|
+
cursor: pointer;
|
|
2634
|
+
}
|
|
2635
|
+
.ck-comment-signin {
|
|
2636
|
+
margin: 0;
|
|
2637
|
+
}
|
|
2638
|
+
.ck-comment-signin-link {
|
|
2639
|
+
display: inline-flex;
|
|
2640
|
+
align-items: center;
|
|
2641
|
+
min-height: var(--ck-target);
|
|
2642
|
+
padding: 0 1rem;
|
|
2643
|
+
border: 1px solid var(--ck-line-2);
|
|
2644
|
+
border-radius: 999px;
|
|
2645
|
+
background: var(--ck-raised);
|
|
2646
|
+
color: var(--ck-fg);
|
|
2647
|
+
font-weight: 600;
|
|
2648
|
+
text-decoration: none;
|
|
2649
|
+
}
|
|
2650
|
+
@media (max-width: 380px) {
|
|
2651
|
+
.ck-field-suggestions {
|
|
2652
|
+
grid-template-columns: minmax(0, 1fr);
|
|
2653
|
+
}
|
|
2654
|
+
.ck-field-improve-row {
|
|
2655
|
+
flex-direction: column;
|
|
2656
|
+
}
|
|
2657
|
+
.ck-field-improve-row > .ck-field-wrap {
|
|
2658
|
+
width: 100%;
|
|
2659
|
+
}
|
|
2660
|
+
}
|