@opengeni/react-native 4.2.1-canary.39642758903001 → 4.3.1
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/android/build.gradle +15 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/dev/opengeni/textselection/OpenGeniTextSelectionModule.kt +274 -0
- package/dist/{chunk-D3MFBDVR.js → chunk-2RNMGRTB.js} +3 -3
- package/dist/{chunk-D3MFBDVR.js.map → chunk-2RNMGRTB.js.map} +1 -1
- package/dist/{chunk-2W74OY6I.js → chunk-FHPMRXIG.js} +16 -2
- package/dist/chunk-FHPMRXIG.js.map +1 -0
- package/dist/{chunk-YTT4WSJZ.js → chunk-QFV5DISV.js} +3 -3
- package/dist/{chunk-YTT4WSJZ.js.map → chunk-QFV5DISV.js.map} +1 -1
- package/dist/{chunk-U5L2CUMJ.js → chunk-ZZNZBZWV.js} +3 -3
- package/dist/{chunk-U5L2CUMJ.js.map → chunk-ZZNZBZWV.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/timeline/annotations.d.ts +81 -0
- package/dist/timeline/icon-nodes.generated.d.ts +5 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +1186 -197
- package/dist/timeline/index.js.map +1 -1
- package/dist/timeline/markdown.js +5 -2
- package/dist/timeline/markdown.js.map +1 -1
- package/dist/timeline/message-timeline.d.ts +20 -2
- package/dist/timeline/previews.js +2 -2
- package/dist/timeline/queue-dock.d.ts +4 -1
- package/dist/timeline/text-selection.d.ts +44 -0
- package/expo-module.config.json +5 -2
- package/ios/OpenGeniTextSelectionModule.swift +560 -0
- package/package.json +6 -4
- package/src/timeline/activity.tsx +24 -15
- package/src/timeline/annotations.tsx +877 -0
- package/src/timeline/icon-nodes.generated.ts +14 -0
- package/src/timeline/index.ts +2 -0
- package/src/timeline/markdown.tsx +7 -0
- package/src/timeline/message-timeline.tsx +340 -174
- package/src/timeline/queue-dock.tsx +36 -0
- package/src/timeline/session-screen.tsx +122 -4
- package/src/timeline/sheet.tsx +3 -2
- package/src/timeline/text-selection.ts +115 -0
- package/dist/chunk-2W74OY6I.js.map +0 -1
|
@@ -17,6 +17,7 @@ import { blendOver, withAlpha } from "./primitives";
|
|
|
17
17
|
import { CompactSignalsContext } from "./session-signals";
|
|
18
18
|
import { fontStyle, useNativeTimelineTheme } from "./theme";
|
|
19
19
|
import { useNativeTimelineMessages } from "./messages";
|
|
20
|
+
import type { NativeAnnotationLike } from "./annotations";
|
|
20
21
|
|
|
21
22
|
/* ----------------------------------------------------------------------------
|
|
22
23
|
The web session-chrome queue dock above the composer: a "N queued · Steer"
|
|
@@ -40,12 +41,15 @@ export function QueueDock({
|
|
|
40
41
|
queue,
|
|
41
42
|
composer,
|
|
42
43
|
onComposerFocus,
|
|
44
|
+
onReviewAnnotations,
|
|
43
45
|
leading,
|
|
44
46
|
singleSend = false,
|
|
45
47
|
}: {
|
|
46
48
|
queue: TurnQueue;
|
|
47
49
|
composer?: QueueDockComposer | undefined;
|
|
48
50
|
onComposerFocus?: (() => void) | undefined;
|
|
51
|
+
/** Show a waiting message's quotes and notes. */
|
|
52
|
+
onReviewAnnotations?: ((annotations: readonly NativeAnnotationLike[]) => void) | undefined;
|
|
49
53
|
/** Chips sharing the queue chip's row (goal, agents, commands). */
|
|
50
54
|
leading?: ReactNode;
|
|
51
55
|
/** One Send and nothing to choose: no Steer on waiting messages. */
|
|
@@ -215,6 +219,38 @@ export function QueueDock({
|
|
|
215
219
|
>
|
|
216
220
|
{label}
|
|
217
221
|
</Text>
|
|
222
|
+
{annotationCount > 0 && onReviewAnnotations ? (
|
|
223
|
+
<Pressable
|
|
224
|
+
accessibilityRole="button"
|
|
225
|
+
accessibilityLabel={t("timelineAnnotations.reviewCountlabel", {
|
|
226
|
+
countLabel: t("counts.annotations", { count: annotationCount }),
|
|
227
|
+
})}
|
|
228
|
+
hitSlop={8}
|
|
229
|
+
onPress={() => onReviewAnnotations(turn.annotations ?? [])}
|
|
230
|
+
style={({ pressed }) => ({
|
|
231
|
+
flexDirection: "row",
|
|
232
|
+
alignItems: "center",
|
|
233
|
+
gap: 3,
|
|
234
|
+
height: 22,
|
|
235
|
+
paddingHorizontal: 7,
|
|
236
|
+
borderRadius: 11,
|
|
237
|
+
backgroundColor: c["accent-soft"],
|
|
238
|
+
opacity: pressed ? 0.6 : 1,
|
|
239
|
+
})}
|
|
240
|
+
>
|
|
241
|
+
<Icon name="quote" size={10} color={c["fg-muted"]} />
|
|
242
|
+
<Text
|
|
243
|
+
style={{
|
|
244
|
+
...fontStyle(theme, 500),
|
|
245
|
+
fontSize: 11,
|
|
246
|
+
color: c["fg-muted"],
|
|
247
|
+
fontVariant: ["tabular-nums"],
|
|
248
|
+
}}
|
|
249
|
+
>
|
|
250
|
+
{annotationCount}
|
|
251
|
+
</Text>
|
|
252
|
+
</Pressable>
|
|
253
|
+
) : null}
|
|
218
254
|
{turns.length > 1 ? (
|
|
219
255
|
<>
|
|
220
256
|
<RowAction
|
|
@@ -13,7 +13,16 @@ import {
|
|
|
13
13
|
type ComponentRef,
|
|
14
14
|
type ReactNode,
|
|
15
15
|
} from "react";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
ActivityIndicator,
|
|
18
|
+
Alert,
|
|
19
|
+
Image,
|
|
20
|
+
Pressable,
|
|
21
|
+
Text,
|
|
22
|
+
View,
|
|
23
|
+
type TextInput,
|
|
24
|
+
} from "react-native";
|
|
25
|
+
import { annotationHasNote } from "@opengeni/react/timeline-model";
|
|
17
26
|
import {
|
|
18
27
|
defaultChatComposerMessages,
|
|
19
28
|
type ChatComposerMessages,
|
|
@@ -33,6 +42,12 @@ import {
|
|
|
33
42
|
} from "./decisions";
|
|
34
43
|
import { NativeMessageAttachments } from "./message-attachments";
|
|
35
44
|
import { QueueDock } from "./queue-dock";
|
|
45
|
+
import {
|
|
46
|
+
AnnotationsChip,
|
|
47
|
+
AnnotationsSheet,
|
|
48
|
+
type AnnotationReveal,
|
|
49
|
+
type NativeAnnotationLike,
|
|
50
|
+
} from "./annotations";
|
|
36
51
|
import { SessionCommandsList, SessionSignals } from "./session-signals";
|
|
37
52
|
import type { ClientModel, OpenGeniClient, SessionBackgroundCommand } from "@opengeni/sdk";
|
|
38
53
|
import { MessageTimeline, type NativeMessageTimelineProps } from "./message-timeline";
|
|
@@ -156,9 +171,29 @@ function SessionScreenBody({
|
|
|
156
171
|
...timelineProps
|
|
157
172
|
}: Omit<NativeSessionScreenProps, "timelineMessages">) {
|
|
158
173
|
const theme = useNativeTimelineTheme();
|
|
174
|
+
const t = useOpenGeniText();
|
|
159
175
|
const m = useNativeTimelineMessages();
|
|
160
176
|
const { composer, queue, humanInput, approvals, control, attachments } = controller;
|
|
161
177
|
const composerInput = useRef<ComponentRef<typeof TextInput>>(null);
|
|
178
|
+
const annotationReveal = useRef<AnnotationReveal | null>(null);
|
|
179
|
+
const draftAnnotations = composer.annotations ?? [];
|
|
180
|
+
const annotationsIncomplete = draftAnnotations.some(
|
|
181
|
+
(annotation) => annotation.note.trim().length === 0,
|
|
182
|
+
);
|
|
183
|
+
const reviewTargetId = composer.annotationReviewTargetId ?? null;
|
|
184
|
+
const [reviewOpen, setReviewOpen] = useState(false);
|
|
185
|
+
// A new quote, a marker tap or a send with an empty note opens its note.
|
|
186
|
+
useEffect(() => {
|
|
187
|
+
if (reviewTargetId) setReviewOpen(true);
|
|
188
|
+
}, [reviewTargetId]);
|
|
189
|
+
const closeReview = useCallback(() => {
|
|
190
|
+
setReviewOpen(false);
|
|
191
|
+
composer.clearAnnotationReviewTarget?.();
|
|
192
|
+
}, [composer]);
|
|
193
|
+
const [queuedReview, setQueuedReview] = useState<readonly NativeAnnotationLike[] | null>(null);
|
|
194
|
+
// Each send brings the conversation back to its latest row.
|
|
195
|
+
const [followLatestSignal, setFollowLatestSignal] = useState(0);
|
|
196
|
+
const followLatest = useCallback(() => setFollowLatestSignal((value) => value + 1), []);
|
|
162
197
|
// The composer floats over the conversation; its occupied height insets the timeline.
|
|
163
198
|
const [composerHeight, setComposerHeight] = useState(120);
|
|
164
199
|
const items = useMemo(
|
|
@@ -201,6 +236,11 @@ function SessionScreenBody({
|
|
|
201
236
|
<View style={{ flex: 1, backgroundColor: theme.colors.bg }}>
|
|
202
237
|
{topBar}
|
|
203
238
|
<MessageTimeline
|
|
239
|
+
onAnnotate={composer.addAnnotation}
|
|
240
|
+
draftAnnotations={composer.annotations}
|
|
241
|
+
onDraftAnnotationSelect={composer.requestAnnotationReview}
|
|
242
|
+
annotationRevealRef={annotationReveal}
|
|
243
|
+
followLatestSignal={followLatestSignal}
|
|
204
244
|
{...timelineProps}
|
|
205
245
|
hasOlder={controller.hasOlder}
|
|
206
246
|
loadingOlder={controller.loadingOlder}
|
|
@@ -276,14 +316,31 @@ function SessionScreenBody({
|
|
|
276
316
|
onActionFeedback: composerSlots?.onActionFeedback,
|
|
277
317
|
value: composer.value,
|
|
278
318
|
onChangeText: composer.setValue,
|
|
279
|
-
|
|
319
|
+
// A quote without its note cannot be sent: Send opens that note instead
|
|
320
|
+
// of staying disabled with no reason given.
|
|
321
|
+
onSend: () => {
|
|
322
|
+
if (annotationsIncomplete) composer.requestAnnotationReview?.();
|
|
323
|
+
else {
|
|
324
|
+
followLatest();
|
|
325
|
+
void composer.send();
|
|
326
|
+
}
|
|
327
|
+
},
|
|
280
328
|
// The other choice beside Send while the agent works: Queue when
|
|
281
329
|
// Send steers, Steer when Send queues.
|
|
282
330
|
alternateSend: composer.alternateSend ?? null,
|
|
283
331
|
...(composer.sendAlternate
|
|
284
|
-
? {
|
|
332
|
+
? {
|
|
333
|
+
onAlternateSend: () => {
|
|
334
|
+
if (annotationsIncomplete) {
|
|
335
|
+
composer.requestAnnotationReview?.();
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
followLatest();
|
|
339
|
+
void composer.sendAlternate?.();
|
|
340
|
+
},
|
|
341
|
+
}
|
|
285
342
|
: {}),
|
|
286
|
-
canSend: composer.canSend && !busy,
|
|
343
|
+
canSend: (composer.canSend || (annotationsIncomplete && !composer.sending)) && !busy,
|
|
287
344
|
sending: composer.sending,
|
|
288
345
|
running: controller.runActive,
|
|
289
346
|
paused: paused,
|
|
@@ -311,6 +368,44 @@ function SessionScreenBody({
|
|
|
311
368
|
<>
|
|
312
369
|
{composerSlots?.header}
|
|
313
370
|
<AttachmentChips attachments={attachments} />
|
|
371
|
+
{draftAnnotations.length > 0 && composer.removeAnnotation ? (
|
|
372
|
+
<View style={{ paddingHorizontal: 12, paddingTop: 10 }}>
|
|
373
|
+
<AnnotationsChip
|
|
374
|
+
annotations={draftAnnotations}
|
|
375
|
+
onPress={() => composer.requestAnnotationReview?.()}
|
|
376
|
+
onClear={() => {
|
|
377
|
+
const removeAll = () => {
|
|
378
|
+
for (const annotation of draftAnnotations) {
|
|
379
|
+
composer.removeAnnotation?.(annotation.id);
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
// Bare quotes go at once; written notes are worth one confirm,
|
|
383
|
+
// since the × sits right beside the chip.
|
|
384
|
+
if (!draftAnnotations.some((item) => annotationHasNote(item.note))) {
|
|
385
|
+
removeAll();
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
Alert.alert(
|
|
389
|
+
t("native.timeline.annotations.removeAllTitle", {
|
|
390
|
+
count: draftAnnotations.length,
|
|
391
|
+
}),
|
|
392
|
+
t("native.timeline.annotations.removeAllMessage", {
|
|
393
|
+
count: draftAnnotations.filter((item) => annotationHasNote(item.note))
|
|
394
|
+
.length,
|
|
395
|
+
}),
|
|
396
|
+
[
|
|
397
|
+
{ text: t("native.timeline.annotations.cancel"), style: "cancel" },
|
|
398
|
+
{
|
|
399
|
+
text: t("native.timeline.annotations.removeAllConfirm"),
|
|
400
|
+
style: "destructive",
|
|
401
|
+
onPress: removeAll,
|
|
402
|
+
},
|
|
403
|
+
],
|
|
404
|
+
);
|
|
405
|
+
}}
|
|
406
|
+
/>
|
|
407
|
+
</View>
|
|
408
|
+
) : null}
|
|
314
409
|
</>
|
|
315
410
|
),
|
|
316
411
|
above: (
|
|
@@ -320,6 +415,7 @@ function SessionScreenBody({
|
|
|
320
415
|
composer={composer}
|
|
321
416
|
singleSend={composer.singleSend === true}
|
|
322
417
|
onComposerFocus={() => composerInput.current?.focus()}
|
|
418
|
+
onReviewAnnotations={setQueuedReview}
|
|
323
419
|
leading={
|
|
324
420
|
<SessionSignals
|
|
325
421
|
goal={controller.goal}
|
|
@@ -354,6 +450,28 @@ function SessionScreenBody({
|
|
|
354
450
|
</>
|
|
355
451
|
),
|
|
356
452
|
})}
|
|
453
|
+
<AnnotationsSheet
|
|
454
|
+
open={reviewOpen}
|
|
455
|
+
onClose={closeReview}
|
|
456
|
+
annotations={draftAnnotations}
|
|
457
|
+
editable={Boolean(composer.updateAnnotation)}
|
|
458
|
+
focusId={reviewTargetId}
|
|
459
|
+
onFocusConsumed={composer.clearAnnotationReviewTarget}
|
|
460
|
+
onUpdate={composer.updateAnnotation}
|
|
461
|
+
onRemove={composer.removeAnnotation}
|
|
462
|
+
onReveal={(source, quote) => annotationReveal.current?.(source, quote) ?? false}
|
|
463
|
+
onCommit={() => {
|
|
464
|
+
closeReview();
|
|
465
|
+
setTimeout(() => composerInput.current?.focus(), 250);
|
|
466
|
+
}}
|
|
467
|
+
/>
|
|
468
|
+
<AnnotationsSheet
|
|
469
|
+
open={queuedReview !== null}
|
|
470
|
+
onClose={() => setQueuedReview(null)}
|
|
471
|
+
annotations={queuedReview ?? []}
|
|
472
|
+
editable={false}
|
|
473
|
+
onReveal={(source, quote) => annotationReveal.current?.(source, quote) ?? false}
|
|
474
|
+
/>
|
|
357
475
|
</View>
|
|
358
476
|
);
|
|
359
477
|
}
|
package/src/timeline/sheet.tsx
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
KeyboardAvoidingView,
|
|
7
7
|
Modal,
|
|
8
8
|
PanResponder,
|
|
9
|
-
Platform,
|
|
10
9
|
Pressable,
|
|
11
10
|
View,
|
|
12
11
|
useWindowDimensions,
|
|
@@ -96,7 +95,9 @@ export function BottomSheet(props: {
|
|
|
96
95
|
onRequestClose={props.onClose}
|
|
97
96
|
>
|
|
98
97
|
<KeyboardAvoidingView
|
|
99
|
-
|
|
98
|
+
// Edge-to-edge Android doesn't resize a modal's window for the
|
|
99
|
+
// keyboard either, so the sheet lifts itself on both platforms.
|
|
100
|
+
behavior="padding"
|
|
100
101
|
style={{ flex: 1, justifyContent: "flex-end" }}
|
|
101
102
|
>
|
|
102
103
|
<Animated.View
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { DraftTimelineAnnotation } from "@opengeni/sdk";
|
|
2
|
+
import type { TimelineAnnotationSourceDescriptor } from "@opengeni/react/session";
|
|
3
|
+
import { annotationFromSelection } from "@opengeni/react/timeline-model";
|
|
4
|
+
import { useOpenGeniText } from "@opengeni/react/messages";
|
|
5
|
+
import { useEffect, useRef } from "react";
|
|
6
|
+
import { Platform } from "react-native";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Text selection inside timeline messages. A message body sits in a view with
|
|
10
|
+
* this test id prefix plus its annotation source key (empty when it cannot be
|
|
11
|
+
* annotated). On iOS the package's native module then gives its text the
|
|
12
|
+
* system selection (handles, Copy, Look Up, Share) instead of React Native's
|
|
13
|
+
* whole-paragraph Copy; on both platforms it adds Add note to the selection
|
|
14
|
+
* menu when a host takes annotations.
|
|
15
|
+
*/
|
|
16
|
+
export const ANNOTATION_SOURCE_TEST_ID_PREFIX = "og-annotation-source:";
|
|
17
|
+
|
|
18
|
+
export function annotationSourceTestId(sourceKey: string | undefined): string {
|
|
19
|
+
return `${ANNOTATION_SOURCE_TEST_ID_PREFIX}${sourceKey ?? ""}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type AnnotateEvent = { sourceKey: string; quote: string; before: string; after: string };
|
|
23
|
+
|
|
24
|
+
export type QuoteBox = { x: number; y: number; width: number; height: number };
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Where a quote is drawn in its source view: the end of its last glyph, the
|
|
28
|
+
* top of that line's text, and a text box for each line it spans.
|
|
29
|
+
*/
|
|
30
|
+
export type QuoteAnchor = { x: number; top: number; boxes: QuoteBox[] };
|
|
31
|
+
|
|
32
|
+
export type QuoteAnchorQuery = { quote: string; before: string; after: string };
|
|
33
|
+
|
|
34
|
+
type TextSelectionModule = {
|
|
35
|
+
addListener(
|
|
36
|
+
eventName: "onAnnotate",
|
|
37
|
+
listener: (event: AnnotateEvent) => void,
|
|
38
|
+
): { remove(): void };
|
|
39
|
+
setAnnotateTitle(title: string | null): void;
|
|
40
|
+
quoteAnchors?(
|
|
41
|
+
sourceKey: string,
|
|
42
|
+
queries: QuoteAnchorQuery[],
|
|
43
|
+
): Promise<({ x?: number; top?: number; rects?: number[] } | null)[]>;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function textSelectionModule(): TextSelectionModule | null {
|
|
47
|
+
if (Platform.OS !== "ios" && Platform.OS !== "android") return null;
|
|
48
|
+
const registry = (globalThis as { expo?: { modules?: Record<string, unknown> } }).expo?.modules;
|
|
49
|
+
const module = registry?.OpenGeniTextSelection as TextSelectionModule | undefined;
|
|
50
|
+
return module && typeof module.addListener === "function" ? module : null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Whether this build can turn a text selection into an annotation. */
|
|
54
|
+
export function nativeTextAnnotationAvailable(): boolean {
|
|
55
|
+
return textSelectionModule() !== null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Measures where each quote ends inside the source drawn for `sourceKey`;
|
|
60
|
+
* null for a quote that is not drawn there (or without native measuring).
|
|
61
|
+
*/
|
|
62
|
+
export async function measureQuoteAnchors(
|
|
63
|
+
sourceKey: string,
|
|
64
|
+
queries: QuoteAnchorQuery[],
|
|
65
|
+
): Promise<(QuoteAnchor | null)[]> {
|
|
66
|
+
const module = textSelectionModule();
|
|
67
|
+
if (!module?.quoteAnchors || queries.length === 0) return queries.map(() => null);
|
|
68
|
+
try {
|
|
69
|
+
const anchors = await module.quoteAnchors(sourceKey, queries);
|
|
70
|
+
return queries.map((_, index) => {
|
|
71
|
+
const anchor = anchors[index];
|
|
72
|
+
if (typeof anchor?.x !== "number" || typeof anchor.top !== "number") return null;
|
|
73
|
+
const flat = anchor.rects ?? [];
|
|
74
|
+
const boxes: QuoteBox[] = [];
|
|
75
|
+
for (let at = 0; at + 3 < flat.length; at += 4) {
|
|
76
|
+
boxes.push({ x: flat[at]!, y: flat[at + 1]!, width: flat[at + 2]!, height: flat[at + 3]! });
|
|
77
|
+
}
|
|
78
|
+
return { x: anchor.x, top: anchor.top, boxes };
|
|
79
|
+
});
|
|
80
|
+
} catch {
|
|
81
|
+
return queries.map(() => null);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Turns Add note on a selection into a draft annotation for `onAnnotate`.
|
|
87
|
+
* `sources` maps each message's annotation source key to its source.
|
|
88
|
+
*/
|
|
89
|
+
export function useNativeTextAnnotation(
|
|
90
|
+
sources: ReadonlyMap<string, TimelineAnnotationSourceDescriptor>,
|
|
91
|
+
onAnnotate: ((annotation: DraftTimelineAnnotation) => void) | undefined,
|
|
92
|
+
): void {
|
|
93
|
+
const t = useOpenGeniText();
|
|
94
|
+
const latest = useRef({ sources, onAnnotate });
|
|
95
|
+
latest.current = { sources, onAnnotate };
|
|
96
|
+
const enabled = Boolean(onAnnotate);
|
|
97
|
+
const title = t("timelineAnnotationSelection.addNote");
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
const module = textSelectionModule();
|
|
100
|
+
if (!module || !enabled) return;
|
|
101
|
+
// Add note shows while some timeline listens (the module tracks listeners).
|
|
102
|
+
module.setAnnotateTitle(title);
|
|
103
|
+
const subscription = module.addListener("onAnnotate", (event) => {
|
|
104
|
+
const source = latest.current.sources.get(event.sourceKey);
|
|
105
|
+
if (!source) return;
|
|
106
|
+
const annotation = annotationFromSelection(source, {
|
|
107
|
+
text: event.quote,
|
|
108
|
+
textBefore: event.before,
|
|
109
|
+
textAfter: event.after,
|
|
110
|
+
});
|
|
111
|
+
if (annotation) latest.current.onAnnotate?.(annotation);
|
|
112
|
+
});
|
|
113
|
+
return () => subscription.remove();
|
|
114
|
+
}, [enabled, title]);
|
|
115
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/timeline/icon-nodes.generated.ts","../src/timeline/icon.tsx","../src/ui/web-tokens.gen.ts","../src/timeline/theme.tsx"],"names":["jsx","family"],"mappings":"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","file":"chunk-2W74OY6I.js","sourcesContent":["// GENERATED by scripts/generate-native-icons.ts from lucide-react. Do not edit.\nexport const iconNodes = {\n \"arrow-down\": [\n [\n \"path\",\n {\n d: \"M 12 5v14\",\n },\n ],\n [\n \"path\",\n {\n d: \"m19 12-7 7-7-7\",\n },\n ],\n ],\n \"arrow-up\": [\n [\n \"path\",\n {\n d: \"m5 12 7-7 7 7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 19V5\",\n },\n ],\n ],\n bot: [\n [\n \"path\",\n {\n d: \"M 12 8V4H8\",\n },\n ],\n [\n \"rect\",\n {\n width: \"16\",\n height: \"12\",\n x: \"4\",\n y: \"8\",\n rx: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M2 14h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 14h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 13v2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 13v2\",\n },\n ],\n ],\n box: [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"m3.3 7 8.7 5 8.7-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 22V12\",\n },\n ],\n ],\n brain: [\n [\n \"path\",\n {\n d: \"M 12 18V5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.997 5.125a4 4 0 0 1 2.526 5.77\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 18a4 4 0 0 0 2-7.464\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18a4 4 0 0 1-2-7.464\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.003 5.125a4 4 0 0 0-2.526 5.77\",\n },\n ],\n ],\n \"brain-circuit\": [\n [\n \"path\",\n {\n d: \"M 12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 13a4.5 4.5 0 0 0 3-4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.003 5.125A3 3 0 0 0 6.401 6.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.477 10.896a4 4 0 0 1 .585-.396\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18a4 4 0 0 1-1.967-.516\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 13h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18h6a2 2 0 0 1 2 2v1\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 8h8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 8V5a2 2 0 0 1 2-2\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16\",\n cy: \"13\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"3\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"20\",\n cy: \"21\",\n r: \".5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"20\",\n cy: \"8\",\n r: \".5\",\n },\n ],\n ],\n \"calendar-clock\": [\n [\n \"path\",\n {\n d: \"M16 14v2.2l1.6 1\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 2v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 9h5.859\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 2v3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16\",\n cy: \"16\",\n r: \"6\",\n },\n ],\n ],\n check: [\n [\n \"path\",\n {\n d: \"M20 6 9 17l-5-5\",\n },\n ],\n ],\n \"chevron-down\": [\n [\n \"path\",\n {\n d: \"m6 9 6 6 6-6\",\n },\n ],\n ],\n \"chevron-left\": [\n [\n \"path\",\n {\n d: \"m15 18-6-6 6-6\",\n },\n ],\n ],\n \"chevron-right\": [\n [\n \"path\",\n {\n d: \"m9 18 6-6-6-6\",\n },\n ],\n ],\n \"chevron-up\": [\n [\n \"path\",\n {\n d: \"m18 15-6-6-6 6\",\n },\n ],\n ],\n \"circle-alert\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"line\",\n {\n x1: \"12\",\n x2: \"12\",\n y1: \"8\",\n y2: \"12\",\n },\n ],\n [\n \"line\",\n {\n x1: \"12\",\n x2: \"12.01\",\n y1: \"16\",\n y2: \"16\",\n },\n ],\n ],\n \"clock-3\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 6v6h4\",\n },\n ],\n ],\n \"circle-slash\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"line\",\n {\n x1: \"9\",\n x2: \"15\",\n y1: \"15\",\n y2: \"9\",\n },\n ],\n ],\n copy: [\n [\n \"rect\",\n {\n width: \"14\",\n height: \"14\",\n x: \"8\",\n y: \"8\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\",\n },\n ],\n ],\n \"corner-down-right\": [\n [\n \"path\",\n {\n d: \"m15 10 5 5-5 5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 4v7a4 4 0 0 0 4 4h12\",\n },\n ],\n ],\n \"file-diff\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 10h6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 13V7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 17h6\",\n },\n ],\n ],\n \"file-search\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 2v5a1 1 0 0 0 1 1h5\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"11.5\",\n cy: \"14.5\",\n r: \"2.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M13.3 16.3 15 18\",\n },\n ],\n ],\n \"file-text\": [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 2v5a1 1 0 0 0 1 1h5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 9H8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 13H8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 17H8\",\n },\n ],\n ],\n image: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"9\",\n r: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\",\n },\n ],\n ],\n folder: [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n },\n ],\n ],\n \"folder-git\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"13\",\n r: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 13h3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 13h3\",\n },\n ],\n ],\n globe: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M2 12h20\",\n },\n ],\n ],\n keyboard: [\n [\n \"path\",\n {\n d: \"M10 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 12h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 12h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 8h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 16h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 12h.01\",\n },\n ],\n [\n \"rect\",\n {\n width: \"20\",\n height: \"16\",\n x: \"2\",\n y: \"4\",\n rx: \"2\",\n },\n ],\n ],\n \"loader-circle\": [\n [\n \"path\",\n {\n d: \"M21 12a9 9 0 1 1-6.219-8.56\",\n },\n ],\n ],\n \"list-ordered\": [\n [\n \"path\",\n {\n d: \"M11 5h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 12h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 19h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 4h1v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 9h2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\",\n },\n ],\n ],\n \"key-round\": [\n [\n \"path\",\n {\n d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"16.5\",\n cy: \"7.5\",\n r: \".5\",\n fill: \"currentColor\",\n },\n ],\n ],\n menu: [\n [\n \"path\",\n {\n d: \"M4 5h16\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 12h16\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 19h16\",\n },\n ],\n ],\n \"message-circle-question\": [\n [\n \"path\",\n {\n d: \"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 17h.01\",\n },\n ],\n ],\n \"message-square\": [\n [\n \"path\",\n {\n d: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n },\n ],\n ],\n \"message-square-text\": [\n [\n \"path\",\n {\n d: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 11h10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 15h6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 7h8\",\n },\n ],\n ],\n \"messages-square\": [\n [\n \"path\",\n {\n d: \"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1\",\n },\n ],\n ],\n mic: [\n [\n \"path\",\n {\n d: \"M 12 19v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19 10v2a7 7 0 0 1-14 0v-2\",\n },\n ],\n [\n \"rect\",\n {\n x: \"9\",\n y: \"2\",\n width: \"6\",\n height: \"13\",\n rx: \"3\",\n },\n ],\n ],\n \"package-search\": [\n [\n \"path\",\n {\n d: \"M 12 22V12\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20.27 18.27 22 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 10.498V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l.98-.559\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.29 7 12 12l8.71-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"m7.5 4.27 8.997 5.148\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18.5\",\n cy: \"16.5\",\n r: \"2.5\",\n },\n ],\n ],\n paperclip: [\n [\n \"path\",\n {\n d: \"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\",\n },\n ],\n ],\n \"panels-top-left\": [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 9h18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 21V9\",\n },\n ],\n ],\n pause: [\n [\n \"rect\",\n {\n x: \"14\",\n y: \"3\",\n width: \"5\",\n height: \"18\",\n rx: \"1\",\n },\n ],\n [\n \"rect\",\n {\n x: \"5\",\n y: \"3\",\n width: \"5\",\n height: \"18\",\n rx: \"1\",\n },\n ],\n ],\n pencil: [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n },\n ],\n [\n \"path\",\n {\n d: \"m15 5 4 4\",\n },\n ],\n ],\n play: [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n },\n ],\n ],\n plug: [\n [\n \"path\",\n {\n d: \"M 12 22v-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 8V2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 8V2\",\n },\n ],\n ],\n plus: [\n [\n \"path\",\n {\n d: \"M5 12h14\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 5v14\",\n },\n ],\n ],\n search: [\n [\n \"path\",\n {\n d: \"m21 21-4.34-4.34\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"11\",\n cy: \"11\",\n r: \"8\",\n },\n ],\n ],\n server: [\n [\n \"rect\",\n {\n width: \"20\",\n height: \"8\",\n x: \"2\",\n y: \"2\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"rect\",\n {\n width: \"20\",\n height: \"8\",\n x: \"2\",\n y: \"14\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"line\",\n {\n x1: \"6\",\n x2: \"6.01\",\n y1: \"6\",\n y2: \"6\",\n },\n ],\n [\n \"line\",\n {\n x1: \"6\",\n x2: \"6.01\",\n y1: \"18\",\n y2: \"18\",\n },\n ],\n ],\n \"server-cog\": [\n [\n \"path\",\n {\n d: \"m10.852 14.772-.383.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"m13.148 9.228.383-.923\",\n },\n ],\n [\n \"path\",\n {\n d: \"m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544\",\n },\n ],\n [\n \"path\",\n {\n d: \"m14.772 10.852.923-.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"m14.772 13.148.923.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 18h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 6h.01\",\n },\n ],\n [\n \"path\",\n {\n d: \"m9.228 10.852-.923-.383\",\n },\n ],\n [\n \"path\",\n {\n d: \"m9.228 13.148-.923.383\",\n },\n ],\n ],\n settings: [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"3\",\n },\n ],\n ],\n \"share-2\": [\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"5\",\n r: \"3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"6\",\n cy: \"12\",\n r: \"3\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"18\",\n cy: \"19\",\n r: \"3\",\n },\n ],\n [\n \"line\",\n {\n x1: \"8.59\",\n x2: \"15.42\",\n y1: \"13.51\",\n y2: \"17.49\",\n },\n ],\n [\n \"line\",\n {\n x1: \"15.41\",\n x2: \"8.59\",\n y1: \"6.51\",\n y2: \"10.49\",\n },\n ],\n ],\n shrink: [\n [\n \"path\",\n {\n d: \"m15 15 6 6m-6-6v4.8m0-4.8h4.8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 19.8V15m0 0H4.2M9 15l-6 6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 4.2V9m0 0h4.8M15 9l6-6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 4.2V9m0 0H4.2M9 9 3 3\",\n },\n ],\n ],\n sparkles: [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 2v4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 4h-4\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"4\",\n cy: \"20\",\n r: \"2\",\n },\n ],\n ],\n square: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n },\n ],\n ],\n \"square-terminal\": [\n [\n \"path\",\n {\n d: \"m7 11 2-2-2-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 13h4\",\n },\n ],\n [\n \"rect\",\n {\n width: \"18\",\n height: \"18\",\n x: \"3\",\n y: \"3\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n ],\n target: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"6\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"2\",\n },\n ],\n ],\n terminal: [\n [\n \"path\",\n {\n d: \"M 12 19h8\",\n },\n ],\n [\n \"path\",\n {\n d: \"m4 17 6-6-6-6\",\n },\n ],\n ],\n \"thumbs-down\": [\n [\n \"path\",\n {\n d: \"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17 14V2\",\n },\n ],\n ],\n \"thumbs-up\": [\n [\n \"path\",\n {\n d: \"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 10v12\",\n },\n ],\n ],\n \"trash-2\": [\n [\n \"path\",\n {\n d: \"M10 11v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 11v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 6h18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\",\n },\n ],\n ],\n \"triangle-alert\": [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 9v4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 17h.01\",\n },\n ],\n ],\n wrench: [\n [\n \"path\",\n {\n d: \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\",\n },\n ],\n ],\n x: [\n [\n \"path\",\n {\n d: \"M18 6 6 18\",\n },\n ],\n [\n \"path\",\n {\n d: \"m6 6 12 12\",\n },\n ],\n ],\n zap: [\n [\n \"path\",\n {\n d: \"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\",\n },\n ],\n ],\n pin: [\n [\n \"path\",\n {\n d: \"M 12 17v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n },\n ],\n ],\n \"pin-off\": [\n [\n \"path\",\n {\n d: \"M 12 17v5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89\",\n },\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11\",\n },\n ],\n ],\n ellipsis: [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"19\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"5\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n ],\n \"grip-vertical\": [\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"5\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"19\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"12\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"5\",\n r: \"1\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"15\",\n cy: \"19\",\n r: \"1\",\n },\n ],\n ],\n \"audio-lines\": [\n [\n \"path\",\n {\n d: \"M2 10v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 6v11\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 3v18\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 8v7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 5v13\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 10v3\",\n },\n ],\n ],\n \"list-restart\": [\n [\n \"path\",\n {\n d: \"M21 5H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 12H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 19H3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14\",\n },\n ],\n [\n \"path\",\n {\n d: \"M11 10v4h4\",\n },\n ],\n ],\n lock: [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"11\",\n x: \"3\",\n y: \"11\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 11V7a5 5 0 0 1 10 0v4\",\n },\n ],\n ],\n \"building-2\": [\n [\n \"path\",\n {\n d: \"M10 12h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 8h4\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14 21v-3a2 2 0 0 0-4 0v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\",\n },\n ],\n ],\n \"chevrons-up-down\": [\n [\n \"path\",\n {\n d: \"m7 15 5 5 5-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"m7 9 5-5 5 5\",\n },\n ],\n ],\n \"log-out\": [\n [\n \"path\",\n {\n d: \"m16 17 5-5-5-5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 12H9\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\",\n },\n ],\n ],\n \"external-link\": [\n [\n \"path\",\n {\n d: \"M15 3h6v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M10 14 21 3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\",\n },\n ],\n ],\n bell: [\n [\n \"path\",\n {\n d: \"M10.268 21a2 2 0 0 0 3.464 0\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\",\n },\n ],\n ],\n \"user-round\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"8\",\n r: \"5\",\n },\n ],\n [\n \"path\",\n {\n d: \"M20 21a8 8 0 0 0-16 0\",\n },\n ],\n ],\n smartphone: [\n [\n \"rect\",\n {\n width: \"14\",\n height: \"20\",\n x: \"5\",\n y: \"2\",\n rx: \"2\",\n ry: \"2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 18h.01\",\n },\n ],\n ],\n phone: [\n [\n \"path\",\n {\n d: \"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\",\n },\n ],\n ],\n \"phone-off\": [\n [\n \"path\",\n {\n d: \"M10.1 13.9a14 14 0 0 0 3.732 2.668 1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2 18 18 0 0 1-12.728-5.272\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 2 2 22\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4.76 13.582A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 .244.473\",\n },\n ],\n ],\n \"mic-off\": [\n [\n \"path\",\n {\n d: \"M 12 19v3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M15 9.34V5a3 3 0 0 0-5.68-1.33\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16.95 16.95A7 7 0 0 1 5 12v-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M18.89 13.23A7 7 0 0 0 19 12v-2\",\n },\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 9v3a3 3 0 0 0 5.12 2.12\",\n },\n ],\n ],\n \"volume-2\": [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n },\n ],\n [\n \"path\",\n {\n d: \"M16 9a5 5 0 0 1 0 6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19.364 18.364a9 9 0 0 0 0-12.728\",\n },\n ],\n ],\n \"maximize-2\": [\n [\n \"path\",\n {\n d: \"M15 3h6v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"m21 3-7 7\",\n },\n ],\n [\n \"path\",\n {\n d: \"m3 21 7-7\",\n },\n ],\n [\n \"path\",\n {\n d: \"M9 21H3v-6\",\n },\n ],\n ],\n \"rotate-ccw\": [\n [\n \"path\",\n {\n d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3 3v5h5\",\n },\n ],\n ],\n \"shield-check\": [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n },\n ],\n [\n \"path\",\n {\n d: \"m9 12 2 2 4-4\",\n },\n ],\n ],\n inbox: [\n [\n \"polyline\",\n {\n points: \"22 12 16 12 14 15 10 15 8 12 2 12\",\n },\n ],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n },\n ],\n ],\n \"circle-pause\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n },\n ],\n [\n \"line\",\n {\n x1: \"10\",\n x2: \"10\",\n y1: \"15\",\n y2: \"9\",\n },\n ],\n [\n \"line\",\n {\n x1: \"14\",\n x2: \"14\",\n y1: \"15\",\n y2: \"9\",\n },\n ],\n ],\n \"bell-ring\": [\n [\n \"path\",\n {\n d: \"M10.268 21a2 2 0 0 0 3.464 0\",\n },\n ],\n [\n \"path\",\n {\n d: \"M22 8c0-2.3-.8-4.3-2-6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\",\n },\n ],\n [\n \"path\",\n {\n d: \"M4 2C2.8 3.7 2 5.7 2 8\",\n },\n ],\n ],\n \"alarm-clock\": [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"13\",\n r: \"8\",\n },\n ],\n [\n \"path\",\n {\n d: \"M 12 9v4l2 2\",\n },\n ],\n [\n \"path\",\n {\n d: \"M5 3 2 6\",\n },\n ],\n [\n \"path\",\n {\n d: \"m22 6-3-3\",\n },\n ],\n [\n \"path\",\n {\n d: \"M6.38 18.7 4 21\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.64 18.67 20 21\",\n },\n ],\n ],\n \"arrow-up-right\": [\n [\n \"path\",\n {\n d: \"M7 7h10v10\",\n },\n ],\n [\n \"path\",\n {\n d: \"M7 17 17 7\",\n },\n ],\n ],\n camera: [\n [\n \"path\",\n {\n d: \"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"13\",\n r: \"3\",\n },\n ],\n ],\n \"image-plus\": [\n [\n \"path\",\n {\n d: \"M16 5h6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M19 2v6\",\n },\n ],\n [\n \"path\",\n {\n d: \"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5\",\n },\n ],\n [\n \"path\",\n {\n d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"9\",\n cy: \"9\",\n r: \"2\",\n },\n ],\n ],\n eye: [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n },\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"3\",\n },\n ],\n ],\n \"eye-off\": [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n },\n ],\n [\n \"path\",\n {\n d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\",\n },\n ],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n },\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n },\n ],\n ],\n} as const;\n\nexport type NativeIconName = keyof typeof iconNodes;\n","import Svg, { Circle, Line, Path, Polyline, Rect } from \"react-native-svg\";\nimport { iconNodes, type NativeIconName } from \"./icon-nodes.generated\";\n\nexport type { NativeIconName };\n\nconst ELEMENTS = { path: Path, circle: Circle, rect: Rect, line: Line, polyline: Polyline };\n\n/** One lucide glyph with the web's geometry (24 viewBox, 2px round stroke). */\nexport function Icon({\n name,\n size = 14,\n color,\n strokeWidth = 2,\n fill,\n}: {\n name: NativeIconName;\n size?: number;\n color: string;\n strokeWidth?: number;\n /** Solid glyphs (the web fills pause/play). */\n fill?: string | undefined;\n}) {\n const node = iconNodes[name] as ReadonlyArray<readonly [string, Record<string, string | number>]>;\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n {node.map(([tag, attrs]) => {\n const Element = ELEMENTS[tag as keyof typeof ELEMENTS];\n if (!Element) return null;\n const props = { ...attrs } as Record<string, unknown>;\n return (\n <Element\n key={`${tag}:${JSON.stringify(attrs)}`}\n {...props}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill={fill ?? \"none\"}\n />\n );\n })}\n </Svg>\n );\n}\n","// GENERATED by scripts/generate-native-tokens.ts from the web stylesheet. Do not edit.\n// Regenerate after changing packages/react/styles/tokens.css.\nexport const webColorsLight = {\n \"accent\": \"rgb(84, 84, 84)\",\n \"accent-deep\": \"rgb(56, 56, 56)\",\n \"accent-fg\": \"rgb(255, 255, 255)\",\n \"accent-soft\": \"rgba(82, 82, 82, 0.110)\",\n \"accent-strong\": \"rgb(56, 56, 56)\",\n \"bg\": \"rgb(246, 246, 246)\",\n \"border\": \"rgb(222, 222, 222)\",\n \"border-strong\": \"rgb(189, 189, 189)\",\n \"canvas\": \"rgb(255, 255, 255)\",\n \"danger\": \"rgb(194, 21, 47)\",\n \"danger-fg\": \"rgb(255, 255, 255)\",\n \"danger-fill\": \"rgb(183, 22, 45)\",\n \"diff-add-bg\": \"rgba(33, 115, 90, 0.122)\",\n \"diff-del-bg\": \"rgba(181, 25, 41, 0.122)\",\n \"fg\": \"rgb(36, 36, 36)\",\n \"fg-label\": \"rgb(58, 58, 58)\",\n \"fg-muted\": \"rgb(95, 95, 95)\",\n \"fg-subtle\": \"rgb(105, 105, 105)\",\n \"hover\": \"rgba(34, 34, 34, 0.059)\",\n \"primary\": \"rgb(235, 242, 240)\",\n \"primary-border\": \"rgb(196, 213, 208)\",\n \"primary-fg\": \"rgb(41, 41, 41)\",\n \"primary-hover\": \"rgb(206, 212, 210)\",\n \"selection\": \"rgb(226, 226, 226)\",\n \"status-cancelled\": \"rgb(105, 105, 105)\",\n \"status-failed\": \"rgb(183, 22, 45)\",\n \"status-idle\": \"rgb(35, 112, 88)\",\n \"status-queued\": \"rgb(105, 105, 105)\",\n \"status-running\": \"rgb(113, 97, 34)\",\n \"status-waiting\": \"rgb(140, 85, 36)\",\n \"surface-1\": \"rgb(255, 255, 255)\",\n \"surface-2\": \"rgb(238, 238, 238)\",\n \"surface-3\": \"rgb(229, 229, 229)\",\n \"switch-thumb\": \"rgb(255, 255, 255)\",\n \"switch-track\": \"rgb(189, 189, 189)\"\n} as const;\n\nexport const webColorsDark = {\n \"accent\": \"rgb(196, 196, 196)\",\n \"accent-deep\": \"rgb(213, 213, 213)\",\n \"accent-fg\": \"rgb(36, 36, 36)\",\n \"accent-soft\": \"rgba(199, 199, 199, 0.161)\",\n \"accent-strong\": \"rgb(220, 220, 220)\",\n \"bg\": \"rgb(48, 48, 48)\",\n \"border\": \"rgb(69, 69, 69)\",\n \"border-strong\": \"rgb(85, 85, 85)\",\n \"canvas\": \"rgb(32, 32, 32)\",\n \"danger\": \"rgb(249, 142, 139)\",\n \"danger-fg\": \"rgb(255, 255, 255)\",\n \"danger-fill\": \"rgb(179, 54, 61)\",\n \"diff-add-bg\": \"rgba(128, 205, 177, 0.141)\",\n \"diff-del-bg\": \"rgba(248, 149, 142, 0.141)\",\n \"fg\": \"rgb(230, 230, 230)\",\n \"fg-label\": \"rgb(212, 212, 212)\",\n \"fg-muted\": \"rgb(184, 184, 184)\",\n \"fg-subtle\": \"rgb(163, 163, 163)\",\n \"hover\": \"rgba(230, 230, 230, 0.078)\",\n \"primary\": \"rgb(43, 52, 50)\",\n \"primary-border\": \"rgb(78, 94, 89)\",\n \"primary-fg\": \"rgb(238, 238, 238)\",\n \"primary-hover\": \"rgb(72, 80, 78)\",\n \"selection\": \"rgb(72, 72, 72)\",\n \"status-cancelled\": \"rgb(163, 163, 163)\",\n \"status-failed\": \"rgb(247, 148, 145)\",\n \"status-idle\": \"rgb(131, 203, 176)\",\n \"status-queued\": \"rgb(163, 163, 163)\",\n \"status-running\": \"rgb(213, 189, 114)\",\n \"status-waiting\": \"rgb(233, 171, 119)\",\n \"surface-1\": \"rgb(51, 51, 51)\",\n \"surface-2\": \"rgb(56, 56, 56)\",\n \"surface-3\": \"rgb(64, 64, 64)\",\n \"switch-thumb\": \"rgb(163, 163, 163)\",\n \"switch-track\": \"rgb(69, 69, 69)\"\n} as const;\n\nexport const webLengths = {\n \"font-size-base\": 13,\n \"font-size-composer\": 16,\n \"font-size-composer-wide\": 15,\n \"font-size-control\": 12,\n \"font-size-md\": 15,\n \"font-size-menu\": 14,\n \"font-size-sm\": 12,\n \"font-size-xs\": 11,\n \"radius-full\": 9999,\n \"radius-lg\": 14,\n \"radius-md\": 10,\n \"radius-sm\": 6,\n \"radius-xl\": 20,\n \"radius-xs\": 4\n} as const;\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { Platform, type TextStyle } from \"react-native\";\nimport { webColorsDark, webColorsLight, webLengths } from \"../ui/web-tokens.gen\";\n\n/* ----------------------------------------------------------------------------\n Native timeline theme\n\n The web design tokens (generated from the web stylesheet) drive every color,\n size and radius, so the native timeline matches the web app at phone width.\n Hosts override tokens (brand colors, fonts) without forking components.\n -------------------------------------------------------------------------- */\n\nexport type WebColorToken = keyof typeof webColorsLight;\nexport type NativeTimelineColors = Record<WebColorToken, string>;\n\nexport interface NativeTimelineFonts {\n /** Font family per weight for the sans face; undefined → platform system font. */\n sans?: Partial<Record<\"400\" | \"500\" | \"600\" | \"700\", string>> | undefined;\n /** Font family per weight for the mono face; undefined → platform monospace. */\n mono?: Partial<Record<\"400\" | \"500\", string>> | undefined;\n /** Regular-weight italic family (custom fonts cannot be synthesized italic on iOS). */\n sansItalic?: string | undefined;\n /** Extra sans letter spacing (pt) to match the web face's metrics. */\n sansTracking?: number | undefined;\n}\n\nexport interface NativeTimelineTheme {\n scheme: \"light\" | \"dark\";\n colors: NativeTimelineColors;\n size: {\n xs: number;\n sm: number;\n base: number;\n md: number;\n composer: number;\n };\n radius: { xs: number; sm: number; md: number; lg: number; xl: number; full: number };\n fonts: NativeTimelineFonts;\n}\n\nexport interface NativeTimelineThemeOverrides {\n light?: Partial<NativeTimelineColors> | undefined;\n dark?: Partial<NativeTimelineColors> | undefined;\n fonts?: NativeTimelineFonts | undefined;\n}\n\nexport function createNativeTimelineTheme(\n scheme: \"light\" | \"dark\",\n overrides: NativeTimelineThemeOverrides = {},\n): NativeTimelineTheme {\n const base = scheme === \"dark\" ? webColorsDark : webColorsLight;\n return {\n scheme,\n colors: { ...base, ...(scheme === \"dark\" ? overrides.dark : overrides.light) },\n size: {\n xs: webLengths[\"font-size-xs\"],\n sm: webLengths[\"font-size-sm\"],\n base: webLengths[\"font-size-base\"],\n md: webLengths[\"font-size-md\"],\n composer: webLengths[\"font-size-composer\"],\n },\n radius: {\n xs: webLengths[\"radius-xs\"],\n sm: webLengths[\"radius-sm\"],\n md: webLengths[\"radius-md\"],\n lg: webLengths[\"radius-lg\"],\n xl: webLengths[\"radius-xl\"],\n full: webLengths[\"radius-full\"],\n },\n fonts: overrides.fonts ?? {},\n };\n}\n\n/**\n * Fill for an inset block on the page (code blocks). Web uses `surface-1`, which reads\n * as a block on the component `bg`; when the host page itself is `surface-1` (the\n * white or near-black app canvas), the block falls back to the web component `bg` so\n * it never disappears into the page.\n */\nexport function insetSurface(theme: NativeTimelineTheme): string {\n const { colors } = theme;\n if (colors[\"surface-1\"] !== colors.bg) return colors[\"surface-1\"];\n return (theme.scheme === \"dark\" ? webColorsDark : webColorsLight).bg;\n}\n\nconst ThemeContext = createContext<NativeTimelineTheme>(createNativeTimelineTheme(\"light\"));\n\nexport function NativeTimelineThemeProvider({\n scheme,\n overrides,\n children,\n}: {\n scheme: \"light\" | \"dark\";\n overrides?: NativeTimelineThemeOverrides | undefined;\n children: ReactNode;\n}) {\n const theme = useMemo(() => createNativeTimelineTheme(scheme, overrides), [scheme, overrides]);\n return <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>;\n}\n\nexport function useNativeTimelineTheme(): NativeTimelineTheme {\n return useContext(ThemeContext);\n}\n\n/** Text style for a web weight, resolving host font families when supplied. */\nexport function fontStyle(\n theme: NativeTimelineTheme,\n weight: 400 | 500 | 600 | 700 = 400,\n face: \"sans\" | \"mono\" = \"sans\",\n): TextStyle {\n if (face === \"mono\") {\n const family = theme.fonts.mono?.[weight >= 500 ? \"500\" : \"400\"] ?? theme.fonts.mono?.[\"400\"];\n return family ? { fontFamily: family } : { fontFamily: MONO_FALLBACK, fontWeight: `${weight}` };\n }\n const key = `${weight}` as \"400\" | \"500\" | \"600\" | \"700\";\n const family = theme.fonts.sans?.[key];\n // Android measures single-line text without letter spacing, so tracked text loses\n // its last glyphs (a truncated \"…\" shows as \"..\"); the tweak only matters on iOS.\n const tracking =\n theme.fonts.sansTracking && Platform.OS !== \"android\"\n ? { letterSpacing: theme.fonts.sansTracking }\n : {};\n return family ? { fontFamily: family, ...tracking } : { fontWeight: key, ...tracking };\n}\n\nconst MONO_FALLBACK = \"Menlo\";\n\nexport { MONO_FALLBACK };\n"]}
|