@buoy-gg/route-events 7.0.34 → 7.0.36
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/lib/commonjs/components/NavigationStack.js +11 -11
- package/lib/commonjs/components/ReactNavigationRoutes.js +15 -15
- package/lib/commonjs/components/RouteEventDetail.js +1 -1
- package/lib/commonjs/components/RouteEventExpandedContent.js +3 -3
- package/lib/commonjs/components/RouteEventItemCompact.js +2 -2
- package/lib/commonjs/components/RouteEventsModalWithTabs.js +4 -4
- package/lib/commonjs/components/RouteEventsTimeline.js +2 -2
- package/lib/commonjs/components/RoutesSitemap.js +16 -16
- package/lib/commonjs/sync/routeEventsSyncAdapter.js +34 -8
- package/lib/commonjs/useNavigationStack.js +52 -14
- package/lib/module/components/NavigationStack.js +12 -12
- package/lib/module/components/ReactNavigationRoutes.js +16 -16
- package/lib/module/components/RouteEventDetail.js +2 -2
- package/lib/module/components/RouteEventExpandedContent.js +4 -4
- package/lib/module/components/RouteEventItemCompact.js +3 -3
- package/lib/module/components/RouteEventsModalWithTabs.js +5 -5
- package/lib/module/components/RouteEventsTimeline.js +3 -3
- package/lib/module/components/RoutesSitemap.js +17 -17
- package/lib/module/sync/routeEventsSyncAdapter.js +34 -8
- package/lib/module/useNavigationStack.js +52 -15
- package/lib/typescript/components/NavigationStack.d.ts.map +1 -1
- package/lib/typescript/components/ReactNavigationRoutes.d.ts.map +1 -1
- package/lib/typescript/components/RouteEventsModalWithTabs.d.ts.map +1 -1
- package/lib/typescript/components/RouteEventsTimeline.d.ts.map +1 -1
- package/lib/typescript/components/RoutesSitemap.d.ts.map +1 -1
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts +9 -0
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts.map +1 -1
- package/lib/typescript/useNavigationStack.d.ts +8 -0
- package/lib/typescript/useNavigationStack.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import { useState, useMemo, useEffect } from "react";
|
|
11
11
|
import { View, Text, ScrollView, TouchableOpacity, StyleSheet, Alert } from "react-native";
|
|
12
|
-
import { ChevronDown, ChevronRight, InlineCopyButton, ProUpgradeModal, buoyColors, night, useSafeAreaInsets, ToolEmptyState } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { ChevronDown, ChevronRight, InlineCopyButton, ProUpgradeModal, buoyColors, night, useSafeAreaInsets, ToolEmptyState, monoFont } from "@buoy-gg/shared-ui";
|
|
13
13
|
import { useIsPro } from "@buoy-gg/license";
|
|
14
14
|
import { DataViewer } from "@buoy-gg/shared-ui/dataViewer";
|
|
15
15
|
import { useNavigationStack } from "../useNavigationStack";
|
|
@@ -412,7 +412,7 @@ const styles = StyleSheet.create({
|
|
|
412
412
|
loadingText: {
|
|
413
413
|
color: night.color.textSecondary,
|
|
414
414
|
fontSize: 14,
|
|
415
|
-
fontFamily:
|
|
415
|
+
fontFamily: monoFont
|
|
416
416
|
},
|
|
417
417
|
errorContainer: {
|
|
418
418
|
flex: 1,
|
|
@@ -424,13 +424,13 @@ const styles = StyleSheet.create({
|
|
|
424
424
|
color: buoyColors.error,
|
|
425
425
|
fontSize: 16,
|
|
426
426
|
fontWeight: "600",
|
|
427
|
-
fontFamily:
|
|
427
|
+
fontFamily: monoFont,
|
|
428
428
|
marginBottom: 8
|
|
429
429
|
},
|
|
430
430
|
errorDetail: {
|
|
431
431
|
color: night.color.textSecondary,
|
|
432
432
|
fontSize: 12,
|
|
433
|
-
fontFamily:
|
|
433
|
+
fontFamily: monoFont,
|
|
434
434
|
textAlign: "center"
|
|
435
435
|
},
|
|
436
436
|
emptyContainer: {
|
|
@@ -443,13 +443,13 @@ const styles = StyleSheet.create({
|
|
|
443
443
|
color: night.color.text,
|
|
444
444
|
fontSize: 16,
|
|
445
445
|
fontWeight: "600",
|
|
446
|
-
fontFamily:
|
|
446
|
+
fontFamily: monoFont,
|
|
447
447
|
marginBottom: 8
|
|
448
448
|
},
|
|
449
449
|
emptySubtext: {
|
|
450
450
|
color: night.color.textSecondary,
|
|
451
451
|
fontSize: 14,
|
|
452
|
-
fontFamily:
|
|
452
|
+
fontFamily: monoFont,
|
|
453
453
|
textAlign: "center"
|
|
454
454
|
},
|
|
455
455
|
stackScroll: {
|
|
@@ -487,7 +487,7 @@ const styles = StyleSheet.create({
|
|
|
487
487
|
fontSize: 13,
|
|
488
488
|
fontWeight: "600",
|
|
489
489
|
color: night.color.text,
|
|
490
|
-
fontFamily:
|
|
490
|
+
fontFamily: monoFont,
|
|
491
491
|
flex: 1
|
|
492
492
|
},
|
|
493
493
|
copyRouteButton: {
|
|
@@ -503,7 +503,7 @@ const styles = StyleSheet.create({
|
|
|
503
503
|
statusBadgeText: {
|
|
504
504
|
fontSize: 10,
|
|
505
505
|
fontWeight: "600",
|
|
506
|
-
fontFamily:
|
|
506
|
+
fontFamily: monoFont
|
|
507
507
|
},
|
|
508
508
|
expandedContent: {
|
|
509
509
|
paddingHorizontal: 12,
|
|
@@ -518,13 +518,13 @@ const styles = StyleSheet.create({
|
|
|
518
518
|
detailLabel: {
|
|
519
519
|
fontSize: 10,
|
|
520
520
|
color: night.color.textSecondary,
|
|
521
|
-
fontFamily:
|
|
521
|
+
fontFamily: monoFont,
|
|
522
522
|
marginBottom: 2
|
|
523
523
|
},
|
|
524
524
|
detailValue: {
|
|
525
525
|
fontSize: 12,
|
|
526
526
|
color: night.color.text,
|
|
527
|
-
fontFamily:
|
|
527
|
+
fontFamily: monoFont
|
|
528
528
|
},
|
|
529
529
|
dataViewerContainer: {
|
|
530
530
|
marginTop: 4,
|
|
@@ -553,7 +553,7 @@ const styles = StyleSheet.create({
|
|
|
553
553
|
fontSize: 12,
|
|
554
554
|
fontWeight: "600",
|
|
555
555
|
color: night.color.text,
|
|
556
|
-
fontFamily:
|
|
556
|
+
fontFamily: monoFont
|
|
557
557
|
},
|
|
558
558
|
actionButtonTextDisabled: {
|
|
559
559
|
color: night.color.textTertiary
|
|
@@ -561,7 +561,7 @@ const styles = StyleSheet.create({
|
|
|
561
561
|
helpText: {
|
|
562
562
|
fontSize: 9,
|
|
563
563
|
color: night.color.textSecondary,
|
|
564
|
-
fontFamily:
|
|
564
|
+
fontFamily: monoFont,
|
|
565
565
|
textAlign: "center",
|
|
566
566
|
marginTop: 4,
|
|
567
567
|
lineHeight: 12
|
|
@@ -18,7 +18,7 @@ import { getCommonActions, useSafeNavigationContainerRef } from "../utils/safeRe
|
|
|
18
18
|
// (useSafeNavigationContainerRef then yields undefined, so the dispatch
|
|
19
19
|
// paths below never execute).
|
|
20
20
|
const CommonActions = getCommonActions();
|
|
21
|
-
import { Search, ChevronDown, ChevronRight, InlineCopyButton, ToolbarCopyButton, RefreshCw, ProUpgradeModal, buoyColors, night } from "@buoy-gg/shared-ui";
|
|
21
|
+
import { Search, ChevronDown, ChevronRight, InlineCopyButton, ToolbarCopyButton, RefreshCw, ProUpgradeModal, buoyColors, night, monoFont } from "@buoy-gg/shared-ui";
|
|
22
22
|
import { useIsPro } from "@buoy-gg/license";
|
|
23
23
|
|
|
24
24
|
// ============================================================================
|
|
@@ -546,12 +546,12 @@ const styles = StyleSheet.create({
|
|
|
546
546
|
emptyText: {
|
|
547
547
|
color: night.color.textSecondary,
|
|
548
548
|
fontSize: 14,
|
|
549
|
-
fontFamily:
|
|
549
|
+
fontFamily: monoFont
|
|
550
550
|
},
|
|
551
551
|
emptySubtext: {
|
|
552
552
|
color: night.color.textTertiary,
|
|
553
553
|
fontSize: 12,
|
|
554
|
-
fontFamily:
|
|
554
|
+
fontFamily: monoFont,
|
|
555
555
|
marginTop: 8
|
|
556
556
|
},
|
|
557
557
|
header: {
|
|
@@ -589,7 +589,7 @@ const styles = StyleSheet.create({
|
|
|
589
589
|
actionLabel: {
|
|
590
590
|
fontSize: 8,
|
|
591
591
|
color: night.color.textTertiary,
|
|
592
|
-
fontFamily:
|
|
592
|
+
fontFamily: monoFont,
|
|
593
593
|
textTransform: "uppercase",
|
|
594
594
|
letterSpacing: 0.5
|
|
595
595
|
},
|
|
@@ -616,13 +616,13 @@ const styles = StyleSheet.create({
|
|
|
616
616
|
fontSize: 18,
|
|
617
617
|
fontWeight: "800",
|
|
618
618
|
color: night.color.text,
|
|
619
|
-
fontFamily:
|
|
619
|
+
fontFamily: monoFont
|
|
620
620
|
},
|
|
621
621
|
statLabel: {
|
|
622
622
|
fontSize: 10,
|
|
623
623
|
color: night.color.textTertiary,
|
|
624
624
|
marginTop: 4,
|
|
625
|
-
fontFamily:
|
|
625
|
+
fontFamily: monoFont,
|
|
626
626
|
textTransform: "uppercase",
|
|
627
627
|
letterSpacing: 0.5
|
|
628
628
|
},
|
|
@@ -638,7 +638,7 @@ const styles = StyleSheet.create({
|
|
|
638
638
|
flex: 1,
|
|
639
639
|
color: night.color.text,
|
|
640
640
|
fontSize: 14,
|
|
641
|
-
fontFamily:
|
|
641
|
+
fontFamily: monoFont
|
|
642
642
|
},
|
|
643
643
|
clearButton: {
|
|
644
644
|
padding: 4
|
|
@@ -655,7 +655,7 @@ const styles = StyleSheet.create({
|
|
|
655
655
|
color: night.color.accent,
|
|
656
656
|
fontSize: 14,
|
|
657
657
|
fontWeight: "600",
|
|
658
|
-
fontFamily:
|
|
658
|
+
fontFamily: monoFont
|
|
659
659
|
},
|
|
660
660
|
scrollView: {
|
|
661
661
|
flex: 1
|
|
@@ -677,7 +677,7 @@ const styles = StyleSheet.create({
|
|
|
677
677
|
metaText: {
|
|
678
678
|
fontSize: 12,
|
|
679
679
|
color: night.color.textSecondary,
|
|
680
|
-
fontFamily:
|
|
680
|
+
fontFamily: monoFont
|
|
681
681
|
},
|
|
682
682
|
sourceBadge: {
|
|
683
683
|
paddingHorizontal: 8,
|
|
@@ -691,7 +691,7 @@ const styles = StyleSheet.create({
|
|
|
691
691
|
fontSize: 11,
|
|
692
692
|
color: night.color.textSecondary,
|
|
693
693
|
textTransform: "capitalize",
|
|
694
|
-
fontFamily:
|
|
694
|
+
fontFamily: monoFont
|
|
695
695
|
},
|
|
696
696
|
groupContainer: {
|
|
697
697
|
marginVertical: 4
|
|
@@ -716,7 +716,7 @@ const styles = StyleSheet.create({
|
|
|
716
716
|
fontSize: 12,
|
|
717
717
|
fontWeight: "700",
|
|
718
718
|
color: night.color.text,
|
|
719
|
-
fontFamily:
|
|
719
|
+
fontFamily: monoFont,
|
|
720
720
|
textTransform: "uppercase",
|
|
721
721
|
letterSpacing: 0.8
|
|
722
722
|
},
|
|
@@ -735,7 +735,7 @@ const styles = StyleSheet.create({
|
|
|
735
735
|
fontSize: 11,
|
|
736
736
|
fontWeight: "600",
|
|
737
737
|
color: "#3B82F6",
|
|
738
|
-
fontFamily:
|
|
738
|
+
fontFamily: monoFont
|
|
739
739
|
},
|
|
740
740
|
screensList: {
|
|
741
741
|
// Transparent so the night sheet's star field shows through.
|
|
@@ -752,7 +752,7 @@ const styles = StyleSheet.create({
|
|
|
752
752
|
groupDescriptionText: {
|
|
753
753
|
fontSize: 11,
|
|
754
754
|
color: night.color.textSecondary,
|
|
755
|
-
fontFamily:
|
|
755
|
+
fontFamily: monoFont,
|
|
756
756
|
lineHeight: 16
|
|
757
757
|
},
|
|
758
758
|
screenItem: {
|
|
@@ -791,7 +791,7 @@ const styles = StyleSheet.create({
|
|
|
791
791
|
fontSize: 13,
|
|
792
792
|
fontWeight: "600",
|
|
793
793
|
color: night.color.text,
|
|
794
|
-
fontFamily:
|
|
794
|
+
fontFamily: monoFont,
|
|
795
795
|
flex: 1
|
|
796
796
|
},
|
|
797
797
|
screenHeaderActions: {
|
|
@@ -808,7 +808,7 @@ const styles = StyleSheet.create({
|
|
|
808
808
|
statusText: {
|
|
809
809
|
fontSize: 10,
|
|
810
810
|
fontWeight: "600",
|
|
811
|
-
fontFamily:
|
|
811
|
+
fontFamily: monoFont
|
|
812
812
|
},
|
|
813
813
|
headerActionButton: {
|
|
814
814
|
padding: 6,
|
|
@@ -826,7 +826,7 @@ const styles = StyleSheet.create({
|
|
|
826
826
|
navigateButtonText: {
|
|
827
827
|
fontSize: 12,
|
|
828
828
|
color: night.color.accent,
|
|
829
|
-
fontFamily:
|
|
829
|
+
fontFamily: monoFont,
|
|
830
830
|
fontWeight: "600"
|
|
831
831
|
}
|
|
832
832
|
});
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { View, Text, StyleSheet, TouchableOpacity, ScrollView } from "react-native";
|
|
13
|
-
import { Navigation, night } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { Navigation, night, monoFont } from "@buoy-gg/shared-ui";
|
|
14
14
|
import { RouteEventExpandedContent } from "./RouteEventExpandedContent";
|
|
15
15
|
import { getRouteTemplate } from "../utils/routeTemplate";
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -86,7 +86,7 @@ const styles = StyleSheet.create({
|
|
|
86
86
|
fontWeight: "600",
|
|
87
87
|
// Ink on a filled accent surface — the night accent takes dark ink.
|
|
88
88
|
color: night.color.onAccent,
|
|
89
|
-
fontFamily:
|
|
89
|
+
fontFamily: monoFont,
|
|
90
90
|
textTransform: "uppercase",
|
|
91
91
|
letterSpacing: 0.5
|
|
92
92
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { View, Text, StyleSheet } from "react-native";
|
|
13
|
-
import { InlineCopyButton, night } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { InlineCopyButton, night, monoFont } from "@buoy-gg/shared-ui";
|
|
14
14
|
import { DataViewer } from "@buoy-gg/shared-ui/dataViewer";
|
|
15
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
16
|
// Format duration in milliseconds to human-readable string
|
|
@@ -168,14 +168,14 @@ const styles = StyleSheet.create({
|
|
|
168
168
|
detailLabel: {
|
|
169
169
|
fontSize: 10,
|
|
170
170
|
color: night.color.textSecondary,
|
|
171
|
-
fontFamily:
|
|
171
|
+
fontFamily: monoFont,
|
|
172
172
|
fontWeight: "600",
|
|
173
173
|
minWidth: 70
|
|
174
174
|
},
|
|
175
175
|
detailValue: {
|
|
176
176
|
fontSize: 11,
|
|
177
177
|
color: night.color.text,
|
|
178
|
-
fontFamily:
|
|
178
|
+
fontFamily: monoFont,
|
|
179
179
|
flex: 1
|
|
180
180
|
},
|
|
181
181
|
copyButton: {
|
|
@@ -194,7 +194,7 @@ const styles = StyleSheet.create({
|
|
|
194
194
|
dataViewerTitle: {
|
|
195
195
|
fontSize: 11,
|
|
196
196
|
color: night.color.textSecondary,
|
|
197
|
-
fontFamily:
|
|
197
|
+
fontFamily: monoFont,
|
|
198
198
|
fontWeight: "600"
|
|
199
199
|
}
|
|
200
200
|
});
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import { memo, useMemo } from "react";
|
|
10
10
|
import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
|
|
11
|
-
import { CompactRow, RelativeTime, buoyColors, night } from "@buoy-gg/shared-ui";
|
|
11
|
+
import { CompactRow, RelativeTime, buoyColors, night, monoFont } from "@buoy-gg/shared-ui";
|
|
12
12
|
import { RouteEventExpandedContent } from "./RouteEventExpandedContent";
|
|
13
13
|
import { getRouteTemplate } from "../utils/routeTemplate";
|
|
14
14
|
import { eventRowTestID } from "../utils/testIDs";
|
|
@@ -187,7 +187,7 @@ const styles = StyleSheet.create({
|
|
|
187
187
|
badgeText: {
|
|
188
188
|
fontSize: 11,
|
|
189
189
|
fontWeight: "600",
|
|
190
|
-
fontFamily:
|
|
190
|
+
fontFamily: monoFont
|
|
191
191
|
},
|
|
192
192
|
goButton: {
|
|
193
193
|
backgroundColor: night.color.accent,
|
|
@@ -200,6 +200,6 @@ const styles = StyleSheet.create({
|
|
|
200
200
|
fontWeight: "600",
|
|
201
201
|
// Ink on a filled accent surface — the night accent takes dark ink.
|
|
202
202
|
color: night.color.onAccent,
|
|
203
|
-
fontFamily:
|
|
203
|
+
fontFamily: monoFont
|
|
204
204
|
}
|
|
205
205
|
});
|
|
@@ -8,7 +8,7 @@ import { getCommonActions, useSafeNavigationContainerRef } from "../utils/safeRe
|
|
|
8
8
|
// (useSafeNavigationContainerRef then yields undefined, so the dispatch
|
|
9
9
|
// paths below never execute).
|
|
10
10
|
const CommonActions = getCommonActions();
|
|
11
|
-
import { useSafeRouter, isExpoRouterAvailable, windowDragProps, ToolEmptyState, resolveListEmptyState, usePersistedState } from "@buoy-gg/shared-ui";
|
|
11
|
+
import { useSafeRouter, isExpoRouterAvailable, windowDragProps, ToolEmptyState, resolveListEmptyState, usePersistedState, monoFont } from "@buoy-gg/shared-ui";
|
|
12
12
|
import { JsModal, ModalHeader, TabSelector, formatRelativeTime, devToolsStorageKeys, Trash2, Filter, SearchBar, ToolbarCopyButton, Lock, ProUpgradeModal, PowerToggleButton, buoyColors, night, TickProvider, useLimit } from "@buoy-gg/shared-ui";
|
|
13
13
|
import { useIsPro } from "@buoy-gg/license";
|
|
14
14
|
|
|
@@ -643,7 +643,7 @@ const styles = StyleSheet.create({
|
|
|
643
643
|
fontWeight: "600",
|
|
644
644
|
marginTop: 16,
|
|
645
645
|
marginBottom: 8,
|
|
646
|
-
fontFamily:
|
|
646
|
+
fontFamily: monoFont,
|
|
647
647
|
letterSpacing: 0.5,
|
|
648
648
|
textTransform: "uppercase"
|
|
649
649
|
},
|
|
@@ -651,7 +651,7 @@ const styles = StyleSheet.create({
|
|
|
651
651
|
color: night.color.textSecondary,
|
|
652
652
|
fontSize: 14,
|
|
653
653
|
textAlign: "center",
|
|
654
|
-
fontFamily:
|
|
654
|
+
fontFamily: monoFont
|
|
655
655
|
},
|
|
656
656
|
contentWrapper: {
|
|
657
657
|
flex: 1
|
|
@@ -666,7 +666,7 @@ const styles = StyleSheet.create({
|
|
|
666
666
|
statsText: {
|
|
667
667
|
fontSize: 11,
|
|
668
668
|
color: night.color.textSecondary,
|
|
669
|
-
fontFamily:
|
|
669
|
+
fontFamily: monoFont,
|
|
670
670
|
textAlign: "center"
|
|
671
671
|
},
|
|
672
672
|
statsWarning: {
|
|
@@ -696,7 +696,7 @@ const styles = StyleSheet.create({
|
|
|
696
696
|
fontSize: 12,
|
|
697
697
|
fontWeight: "600",
|
|
698
698
|
color: night.color.warning,
|
|
699
|
-
fontFamily:
|
|
699
|
+
fontFamily: monoFont
|
|
700
700
|
},
|
|
701
701
|
lockedEventsBannerSubtext: {
|
|
702
702
|
fontSize: 11,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { useCallback } from "react";
|
|
14
14
|
import { View, Text, FlatList, StyleSheet } from "react-native";
|
|
15
|
-
import { Navigation, night, EVENT_LIST_PRESET } from "@buoy-gg/shared-ui";
|
|
15
|
+
import { Navigation, night, EVENT_LIST_PRESET, monoFont } from "@buoy-gg/shared-ui";
|
|
16
16
|
import { RouteEventItemCompact } from "./RouteEventItemCompact";
|
|
17
17
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
18
|
export function RouteEventsTimeline({
|
|
@@ -90,7 +90,7 @@ const styles = StyleSheet.create({
|
|
|
90
90
|
fontWeight: "600",
|
|
91
91
|
marginTop: 16,
|
|
92
92
|
marginBottom: 8,
|
|
93
|
-
fontFamily:
|
|
93
|
+
fontFamily: monoFont,
|
|
94
94
|
letterSpacing: 0.5,
|
|
95
95
|
textTransform: "uppercase"
|
|
96
96
|
},
|
|
@@ -98,6 +98,6 @@ const styles = StyleSheet.create({
|
|
|
98
98
|
color: night.color.textSecondary,
|
|
99
99
|
fontSize: 14,
|
|
100
100
|
textAlign: "center",
|
|
101
|
-
fontFamily:
|
|
101
|
+
fontFamily: monoFont
|
|
102
102
|
}
|
|
103
103
|
});
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
15
|
-
import { night, ToolEmptyState } from "@buoy-gg/shared-ui";
|
|
15
|
+
import { night, ToolEmptyState, monoFont } from "@buoy-gg/shared-ui";
|
|
16
16
|
import { View, Text, TextInput, TouchableOpacity, ScrollView, StyleSheet, Alert, Platform } from "react-native";
|
|
17
17
|
import { useSafeRouter } from "@buoy-gg/shared-ui";
|
|
18
18
|
import { Search, ChevronDown, ChevronRight, Home, InlineCopyButton, CopyButton, RefreshCw, formatRelativeTime, ProUpgradeModal } from "@buoy-gg/shared-ui";
|
|
@@ -685,7 +685,7 @@ const styles = StyleSheet.create({
|
|
|
685
685
|
loadingText: {
|
|
686
686
|
color: night.color.textSecondary,
|
|
687
687
|
fontSize: 14,
|
|
688
|
-
fontFamily:
|
|
688
|
+
fontFamily: monoFont,
|
|
689
689
|
textAlign: "center",
|
|
690
690
|
lineHeight: 20,
|
|
691
691
|
paddingHorizontal: 32,
|
|
@@ -726,13 +726,13 @@ const styles = StyleSheet.create({
|
|
|
726
726
|
fontSize: 18,
|
|
727
727
|
fontWeight: "800",
|
|
728
728
|
color: night.color.text,
|
|
729
|
-
fontFamily:
|
|
729
|
+
fontFamily: monoFont
|
|
730
730
|
},
|
|
731
731
|
statLabel: {
|
|
732
732
|
fontSize: 10,
|
|
733
733
|
color: night.color.textTertiary,
|
|
734
734
|
marginTop: 4,
|
|
735
|
-
fontFamily:
|
|
735
|
+
fontFamily: monoFont,
|
|
736
736
|
textTransform: "uppercase",
|
|
737
737
|
letterSpacing: 0.5
|
|
738
738
|
},
|
|
@@ -771,7 +771,7 @@ const styles = StyleSheet.create({
|
|
|
771
771
|
actionLabel: {
|
|
772
772
|
fontSize: 8,
|
|
773
773
|
color: night.color.textTertiary,
|
|
774
|
-
fontFamily:
|
|
774
|
+
fontFamily: monoFont,
|
|
775
775
|
textTransform: "uppercase",
|
|
776
776
|
letterSpacing: 0.5
|
|
777
777
|
},
|
|
@@ -795,7 +795,7 @@ const styles = StyleSheet.create({
|
|
|
795
795
|
metaText: {
|
|
796
796
|
fontSize: 12,
|
|
797
797
|
color: night.color.textSecondary,
|
|
798
|
-
fontFamily:
|
|
798
|
+
fontFamily: monoFont
|
|
799
799
|
},
|
|
800
800
|
sourceBadge: {
|
|
801
801
|
paddingHorizontal: 8,
|
|
@@ -809,7 +809,7 @@ const styles = StyleSheet.create({
|
|
|
809
809
|
fontSize: 11,
|
|
810
810
|
color: night.color.textSecondary,
|
|
811
811
|
textTransform: "capitalize",
|
|
812
|
-
fontFamily:
|
|
812
|
+
fontFamily: monoFont
|
|
813
813
|
},
|
|
814
814
|
searchContainer: {
|
|
815
815
|
flexDirection: "row",
|
|
@@ -823,7 +823,7 @@ const styles = StyleSheet.create({
|
|
|
823
823
|
flex: 1,
|
|
824
824
|
color: night.color.text,
|
|
825
825
|
fontSize: 14,
|
|
826
|
-
fontFamily:
|
|
826
|
+
fontFamily: monoFont
|
|
827
827
|
},
|
|
828
828
|
clearButton: {
|
|
829
829
|
padding: 4
|
|
@@ -840,7 +840,7 @@ const styles = StyleSheet.create({
|
|
|
840
840
|
color: night.color.accent,
|
|
841
841
|
fontSize: 14,
|
|
842
842
|
fontWeight: "600",
|
|
843
|
-
fontFamily:
|
|
843
|
+
fontFamily: monoFont
|
|
844
844
|
},
|
|
845
845
|
scrollView: {
|
|
846
846
|
flex: 1
|
|
@@ -855,7 +855,7 @@ const styles = StyleSheet.create({
|
|
|
855
855
|
emptyText: {
|
|
856
856
|
color: night.color.textSecondary,
|
|
857
857
|
fontSize: 14,
|
|
858
|
-
fontFamily:
|
|
858
|
+
fontFamily: monoFont
|
|
859
859
|
},
|
|
860
860
|
groupContainer: {
|
|
861
861
|
marginVertical: 4
|
|
@@ -880,7 +880,7 @@ const styles = StyleSheet.create({
|
|
|
880
880
|
fontSize: 12,
|
|
881
881
|
fontWeight: "700",
|
|
882
882
|
color: night.color.text,
|
|
883
|
-
fontFamily:
|
|
883
|
+
fontFamily: monoFont,
|
|
884
884
|
textTransform: "uppercase",
|
|
885
885
|
letterSpacing: 0.8
|
|
886
886
|
},
|
|
@@ -899,7 +899,7 @@ const styles = StyleSheet.create({
|
|
|
899
899
|
fontSize: 11,
|
|
900
900
|
fontWeight: "600",
|
|
901
901
|
color: "#3B82F6",
|
|
902
|
-
fontFamily:
|
|
902
|
+
fontFamily: monoFont
|
|
903
903
|
},
|
|
904
904
|
routesList: {
|
|
905
905
|
// Transparent so the night sheet's star field shows through.
|
|
@@ -916,7 +916,7 @@ const styles = StyleSheet.create({
|
|
|
916
916
|
groupDescriptionText: {
|
|
917
917
|
fontSize: 11,
|
|
918
918
|
color: night.color.textSecondary,
|
|
919
|
-
fontFamily:
|
|
919
|
+
fontFamily: monoFont,
|
|
920
920
|
lineHeight: 16
|
|
921
921
|
},
|
|
922
922
|
routeItem: {
|
|
@@ -959,7 +959,7 @@ const styles = StyleSheet.create({
|
|
|
959
959
|
fontSize: 13,
|
|
960
960
|
fontWeight: "600",
|
|
961
961
|
color: night.color.text,
|
|
962
|
-
fontFamily:
|
|
962
|
+
fontFamily: monoFont,
|
|
963
963
|
flex: 1
|
|
964
964
|
},
|
|
965
965
|
routeHeaderActions: {
|
|
@@ -982,7 +982,7 @@ const styles = StyleSheet.create({
|
|
|
982
982
|
fontSize: 11,
|
|
983
983
|
fontWeight: "600",
|
|
984
984
|
color: night.color.textSecondary,
|
|
985
|
-
fontFamily:
|
|
985
|
+
fontFamily: monoFont
|
|
986
986
|
},
|
|
987
987
|
typeTag: {
|
|
988
988
|
borderRadius: 4,
|
|
@@ -993,7 +993,7 @@ const styles = StyleSheet.create({
|
|
|
993
993
|
typeText: {
|
|
994
994
|
fontSize: 10,
|
|
995
995
|
fontWeight: "600",
|
|
996
|
-
fontFamily:
|
|
996
|
+
fontFamily: monoFont
|
|
997
997
|
},
|
|
998
998
|
// Compact icon-sized Copy button in the header action cluster.
|
|
999
999
|
iconAction: {
|
|
@@ -1020,7 +1020,7 @@ const styles = StyleSheet.create({
|
|
|
1020
1020
|
goButtonText: {
|
|
1021
1021
|
fontSize: 12,
|
|
1022
1022
|
color: night.color.accent,
|
|
1023
|
-
fontFamily:
|
|
1023
|
+
fontFamily: monoFont,
|
|
1024
1024
|
fontWeight: "600"
|
|
1025
1025
|
},
|
|
1026
1026
|
childrenContainer: {
|
|
@@ -129,7 +129,21 @@ export const routeEventsSyncAdapter = {
|
|
|
129
129
|
// BaseEventStore is newest-FIRST, and the store only captures while
|
|
130
130
|
// something is subscribed.
|
|
131
131
|
const latest = routeEventStore.getEvents()[0];
|
|
132
|
-
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* A RECORDED event only wins while the recorder is running.
|
|
135
|
+
*
|
|
136
|
+
* The store starts capturing when its first subscriber arrives and stops
|
|
137
|
+
* with the last one, so an app with Ask Buoy on the phone and no
|
|
138
|
+
* dashboard attached has NO route events at all — the stack fallback
|
|
139
|
+
* below is its normal path, not the fresh-launch edge case this code was
|
|
140
|
+
* written for. Worse, events left over from a closed capture window are
|
|
141
|
+
* stale the moment the user navigates again: a live QA session read
|
|
142
|
+
* `/(tabs)/menu` from an event six scenarios after the app had moved to
|
|
143
|
+
* `/cart`. The live stack cannot be stale, so it wins whenever nothing
|
|
144
|
+
* is recording.
|
|
145
|
+
*/
|
|
146
|
+
if (latest && routeEventStore.isCapturing()) {
|
|
133
147
|
return {
|
|
134
148
|
path: latest.pathname,
|
|
135
149
|
params: toWireParams(latest.params),
|
|
@@ -137,13 +151,12 @@ export const routeEventsSyncAdapter = {
|
|
|
137
151
|
source: "event"
|
|
138
152
|
};
|
|
139
153
|
}
|
|
140
|
-
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const focused = navigationStackStore.getStack().find(item => item.isFocused) ?? navigationStackStore.getStack().slice(-1)[0];
|
|
154
|
+
|
|
155
|
+
// The live stack knows even when the history is empty, which is the
|
|
156
|
+
// difference between a macro that can run from anywhere and one that
|
|
157
|
+
// only works if you happen to be on the screen it was recorded from.
|
|
158
|
+
const stack = navigationStackStore.getStack();
|
|
159
|
+
const focused = stack.find(item => item.isFocused) ?? stack[stack.length - 1];
|
|
147
160
|
if (focused?.pathname) {
|
|
148
161
|
return {
|
|
149
162
|
path: focused.pathname,
|
|
@@ -152,6 +165,19 @@ export const routeEventsSyncAdapter = {
|
|
|
152
165
|
source: "stack"
|
|
153
166
|
};
|
|
154
167
|
}
|
|
168
|
+
|
|
169
|
+
// No live stack (no <RouteTracker/>) and the recorder is off: an old
|
|
170
|
+
// event is all there is. Say that it may be stale rather than passing it
|
|
171
|
+
// off as where the app is.
|
|
172
|
+
if (latest) {
|
|
173
|
+
return {
|
|
174
|
+
path: latest.pathname,
|
|
175
|
+
params: toWireParams(latest.params),
|
|
176
|
+
at: latest.timestamp,
|
|
177
|
+
source: "event",
|
|
178
|
+
stale: true
|
|
179
|
+
};
|
|
180
|
+
}
|
|
155
181
|
return {
|
|
156
182
|
path: null,
|
|
157
183
|
params: {},
|