@buoy-gg/route-events 7.0.26 → 7.0.28
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/RouteParser.js +8 -4
- package/lib/commonjs/components/NavigationStack.js +19 -18
- package/lib/commonjs/components/ReactNavigationRoutes.js +108 -106
- package/lib/commonjs/components/RouteEventDetail.js +9 -6
- package/lib/commonjs/components/RouteEventExpandedContent.js +3 -3
- package/lib/commonjs/components/RouteEventItemCompact.js +5 -4
- package/lib/commonjs/components/RouteEventsModalWithTabs.js +48 -25
- package/lib/commonjs/components/RouteEventsTimeline.js +3 -3
- package/lib/commonjs/components/RoutesSitemap.js +129 -129
- package/lib/commonjs/sync/routeEventsSyncAdapter.js +9 -3
- package/lib/commonjs/useNavigationStack.js +4 -5
- package/lib/commonjs/useRouteObserverReactNavigation.js +1 -5
- package/lib/commonjs/utils/safeReactNavigation.js +62 -6
- package/lib/module/RouteParser.js +8 -4
- package/lib/module/components/NavigationStack.js +20 -19
- package/lib/module/components/ReactNavigationRoutes.js +111 -109
- package/lib/module/components/RouteEventDetail.js +10 -7
- package/lib/module/components/RouteEventExpandedContent.js +4 -4
- package/lib/module/components/RouteEventItemCompact.js +6 -5
- package/lib/module/components/RouteEventsModalWithTabs.js +51 -28
- package/lib/module/components/RouteEventsTimeline.js +4 -4
- package/lib/module/components/RoutesSitemap.js +131 -131
- package/lib/module/sync/routeEventsSyncAdapter.js +9 -3
- package/lib/module/useNavigationStack.js +6 -7
- package/lib/module/useRouteObserverReactNavigation.js +3 -7
- package/lib/module/utils/safeReactNavigation.js +62 -6
- package/lib/typescript/RouteParser.d.ts.map +1 -1
- 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 +7 -0
- package/lib/typescript/components/RouteEventsModalWithTabs.d.ts.map +1 -1
- package/lib/typescript/components/RoutesSitemap.d.ts.map +1 -1
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts +1 -0
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts.map +1 -1
- package/lib/typescript/useNavigationStack.d.ts.map +1 -1
- package/lib/typescript/useRouteObserverReactNavigation.d.ts.map +1 -1
- package/lib/typescript/utils/safeReactNavigation.d.ts +6 -5
- package/lib/typescript/utils/safeReactNavigation.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -146,15 +146,19 @@ export class RouteParser {
|
|
|
146
146
|
*/
|
|
147
147
|
static organizeRoutes(routes) {
|
|
148
148
|
const groups = [];
|
|
149
|
-
|
|
149
|
+
|
|
150
|
+
// Flatten before grouping, like every other bucket — static/index screens
|
|
151
|
+
// nested under layouts (e.g. (tabs)/about at depth 2) must still be listed,
|
|
152
|
+
// or the stats header counts routes the list never shows.
|
|
153
|
+
const staticRoutes = this.flattenRoutes(routes).filter(r => r.type === 'static' || r.type === 'index');
|
|
150
154
|
const dynamicRoutes = this.flattenRoutes(routes).filter(r => r.type === 'dynamic' || r.type === 'catch-all');
|
|
151
155
|
const layoutRoutes = this.flattenRoutes(routes).filter(r => r.type === 'layout');
|
|
152
156
|
const groupedRoutes = this.flattenRoutes(routes).filter(r => r.type === 'group');
|
|
153
|
-
if (
|
|
157
|
+
if (staticRoutes.length > 0) {
|
|
154
158
|
groups.push({
|
|
155
|
-
title: '
|
|
159
|
+
title: 'Static Routes',
|
|
156
160
|
icon: '',
|
|
157
|
-
routes:
|
|
161
|
+
routes: staticRoutes
|
|
158
162
|
});
|
|
159
163
|
}
|
|
160
164
|
if (dynamicRoutes.length > 0) {
|
|
@@ -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, useSafeAreaInsets } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { ChevronDown, ChevronRight, InlineCopyButton, ProUpgradeModal, buoyColors, night, useSafeAreaInsets } 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";
|
|
@@ -255,10 +255,10 @@ export function NavigationStack({
|
|
|
255
255
|
style: styles.expandIndicator,
|
|
256
256
|
children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
|
|
257
257
|
size: 14,
|
|
258
|
-
color:
|
|
258
|
+
color: night.color.textSecondary
|
|
259
259
|
}) : /*#__PURE__*/_jsx(ChevronRight, {
|
|
260
260
|
size: 14,
|
|
261
|
-
color:
|
|
261
|
+
color: night.color.textSecondary
|
|
262
262
|
})
|
|
263
263
|
}), /*#__PURE__*/_jsx(Text, {
|
|
264
264
|
style: styles.stackItemPath,
|
|
@@ -371,7 +371,8 @@ export function NavigationStack({
|
|
|
371
371
|
const styles = StyleSheet.create({
|
|
372
372
|
container: {
|
|
373
373
|
flex: 1,
|
|
374
|
-
|
|
374
|
+
// Transparent so JsModal's ToolBackground shows through (the modal paints opaque base beneath it).
|
|
375
|
+
backgroundColor: "transparent"
|
|
375
376
|
},
|
|
376
377
|
loadingContainer: {
|
|
377
378
|
flex: 1,
|
|
@@ -380,7 +381,7 @@ const styles = StyleSheet.create({
|
|
|
380
381
|
padding: 32
|
|
381
382
|
},
|
|
382
383
|
loadingText: {
|
|
383
|
-
color:
|
|
384
|
+
color: night.color.textSecondary,
|
|
384
385
|
fontSize: 14,
|
|
385
386
|
fontFamily: "monospace"
|
|
386
387
|
},
|
|
@@ -398,7 +399,7 @@ const styles = StyleSheet.create({
|
|
|
398
399
|
marginBottom: 8
|
|
399
400
|
},
|
|
400
401
|
errorDetail: {
|
|
401
|
-
color:
|
|
402
|
+
color: night.color.textSecondary,
|
|
402
403
|
fontSize: 12,
|
|
403
404
|
fontFamily: "monospace",
|
|
404
405
|
textAlign: "center"
|
|
@@ -410,14 +411,14 @@ const styles = StyleSheet.create({
|
|
|
410
411
|
padding: 32
|
|
411
412
|
},
|
|
412
413
|
emptyText: {
|
|
413
|
-
color:
|
|
414
|
+
color: night.color.text,
|
|
414
415
|
fontSize: 16,
|
|
415
416
|
fontWeight: "600",
|
|
416
417
|
fontFamily: "monospace",
|
|
417
418
|
marginBottom: 8
|
|
418
419
|
},
|
|
419
420
|
emptySubtext: {
|
|
420
|
-
color:
|
|
421
|
+
color: night.color.textSecondary,
|
|
421
422
|
fontSize: 14,
|
|
422
423
|
fontFamily: "monospace",
|
|
423
424
|
textAlign: "center"
|
|
@@ -432,14 +433,14 @@ const styles = StyleSheet.create({
|
|
|
432
433
|
marginBottom: 6
|
|
433
434
|
},
|
|
434
435
|
stackItem: {
|
|
435
|
-
backgroundColor:
|
|
436
|
+
backgroundColor: night.color.surface,
|
|
436
437
|
borderRadius: 6,
|
|
437
438
|
borderWidth: 1,
|
|
438
|
-
borderColor:
|
|
439
|
+
borderColor: night.color.border,
|
|
439
440
|
overflow: "hidden"
|
|
440
441
|
},
|
|
441
442
|
stackItemSelected: {
|
|
442
|
-
borderColor:
|
|
443
|
+
borderColor: night.color.accent,
|
|
443
444
|
borderWidth: 2
|
|
444
445
|
},
|
|
445
446
|
stackItemHeader: {
|
|
@@ -456,7 +457,7 @@ const styles = StyleSheet.create({
|
|
|
456
457
|
stackItemPath: {
|
|
457
458
|
fontSize: 13,
|
|
458
459
|
fontWeight: "600",
|
|
459
|
-
color:
|
|
460
|
+
color: night.color.text,
|
|
460
461
|
fontFamily: "monospace",
|
|
461
462
|
flex: 1
|
|
462
463
|
},
|
|
@@ -480,20 +481,20 @@ const styles = StyleSheet.create({
|
|
|
480
481
|
paddingTop: 8,
|
|
481
482
|
paddingBottom: 12,
|
|
482
483
|
borderTopWidth: 1,
|
|
483
|
-
borderTopColor:
|
|
484
|
+
borderTopColor: night.color.border
|
|
484
485
|
},
|
|
485
486
|
detailRow: {
|
|
486
487
|
marginBottom: 8
|
|
487
488
|
},
|
|
488
489
|
detailLabel: {
|
|
489
490
|
fontSize: 10,
|
|
490
|
-
color:
|
|
491
|
+
color: night.color.textSecondary,
|
|
491
492
|
fontFamily: "monospace",
|
|
492
493
|
marginBottom: 2
|
|
493
494
|
},
|
|
494
495
|
detailValue: {
|
|
495
496
|
fontSize: 12,
|
|
496
|
-
color:
|
|
497
|
+
color: night.color.text,
|
|
497
498
|
fontFamily: "monospace"
|
|
498
499
|
},
|
|
499
500
|
dataViewerContainer: {
|
|
@@ -510,7 +511,7 @@ const styles = StyleSheet.create({
|
|
|
510
511
|
flex: 1
|
|
511
512
|
},
|
|
512
513
|
actionButton: {
|
|
513
|
-
backgroundColor:
|
|
514
|
+
backgroundColor: night.color.surfaceElevated,
|
|
514
515
|
paddingVertical: 8,
|
|
515
516
|
paddingHorizontal: 8,
|
|
516
517
|
borderRadius: 6,
|
|
@@ -522,15 +523,15 @@ const styles = StyleSheet.create({
|
|
|
522
523
|
actionButtonText: {
|
|
523
524
|
fontSize: 12,
|
|
524
525
|
fontWeight: "600",
|
|
525
|
-
color:
|
|
526
|
+
color: night.color.text,
|
|
526
527
|
fontFamily: "monospace"
|
|
527
528
|
},
|
|
528
529
|
actionButtonTextDisabled: {
|
|
529
|
-
color:
|
|
530
|
+
color: night.color.textTertiary
|
|
530
531
|
},
|
|
531
532
|
helpText: {
|
|
532
533
|
fontSize: 9,
|
|
533
|
-
color:
|
|
534
|
+
color: night.color.textSecondary,
|
|
534
535
|
fontFamily: "monospace",
|
|
535
536
|
textAlign: "center",
|
|
536
537
|
marginTop: 4,
|
|
@@ -10,16 +10,15 @@
|
|
|
10
10
|
* Provides navigation to any discovered screen using nested screen/params actions.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import { useState, useCallback, useMemo, useEffect
|
|
13
|
+
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
14
14
|
import { View, Text, TextInput, TouchableOpacity, ScrollView, StyleSheet, Alert } from "react-native";
|
|
15
|
-
import { getCommonActions,
|
|
15
|
+
import { getCommonActions, useSafeNavigationContainerRef } from "../utils/safeReactNavigation";
|
|
16
16
|
|
|
17
|
-
// Resolved once at module load; null when
|
|
18
|
-
// (
|
|
19
|
-
//
|
|
17
|
+
// Resolved once at module load; null when React Navigation is absent
|
|
18
|
+
// (useSafeNavigationContainerRef then yields undefined, so the dispatch
|
|
19
|
+
// paths below never execute).
|
|
20
20
|
const CommonActions = getCommonActions();
|
|
21
|
-
|
|
22
|
-
import { Search, ChevronDown, ChevronRight, InlineCopyButton, ToolbarCopyButton, RefreshCw, ProUpgradeModal, buoyColors } from "@buoy-gg/shared-ui";
|
|
21
|
+
import { Search, ChevronDown, ChevronRight, InlineCopyButton, ToolbarCopyButton, RefreshCw, ProUpgradeModal, buoyColors, night } from "@buoy-gg/shared-ui";
|
|
23
22
|
import { useIsPro } from "@buoy-gg/license";
|
|
24
23
|
|
|
25
24
|
// ============================================================================
|
|
@@ -121,7 +120,7 @@ function buildNestedNavigateAction(path) {
|
|
|
121
120
|
export function ReactNavigationRoutes({
|
|
122
121
|
style
|
|
123
122
|
}) {
|
|
124
|
-
const containerRef =
|
|
123
|
+
const containerRef = useSafeNavigationContainerRef();
|
|
125
124
|
const [navigationState, setNavigationState] = useState(() => containerRef?.getRootState?.() ?? null);
|
|
126
125
|
const [searchQuery, setSearchQuery] = useState("");
|
|
127
126
|
const [isSearching, setIsSearching] = useState(false);
|
|
@@ -275,72 +274,15 @@ export function ReactNavigationRoutes({
|
|
|
275
274
|
}
|
|
276
275
|
return /*#__PURE__*/_jsxs(View, {
|
|
277
276
|
style: [styles.container, style],
|
|
278
|
-
children: [
|
|
279
|
-
style: styles.header,
|
|
280
|
-
children: [/*#__PURE__*/_jsxs(View, {
|
|
281
|
-
style: styles.actionsRow,
|
|
282
|
-
children: [/*#__PURE__*/_jsxs(View, {
|
|
283
|
-
style: styles.actionWrapper,
|
|
284
|
-
children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
285
|
-
value: copyAllData,
|
|
286
|
-
buttonStyle: styles.actionButtonHeader
|
|
287
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
288
|
-
style: styles.actionLabel,
|
|
289
|
-
children: "Copy"
|
|
290
|
-
})]
|
|
291
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
292
|
-
style: styles.actionWrapper,
|
|
293
|
-
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
294
|
-
style: [styles.iconButton, isRefreshing && styles.refreshButtonDisabled],
|
|
295
|
-
onPress: handleRefresh,
|
|
296
|
-
disabled: isRefreshing,
|
|
297
|
-
children: /*#__PURE__*/_jsx(RefreshCw, {
|
|
298
|
-
size: 16,
|
|
299
|
-
color: isRefreshing ? buoyColors.textMuted : buoyColors.textSecondary
|
|
300
|
-
})
|
|
301
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
302
|
-
style: styles.actionLabel,
|
|
303
|
-
children: "Refresh"
|
|
304
|
-
})]
|
|
305
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
306
|
-
style: styles.actionWrapper,
|
|
307
|
-
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
308
|
-
style: styles.iconButton,
|
|
309
|
-
onPress: () => setIsSearching(true),
|
|
310
|
-
children: /*#__PURE__*/_jsx(Search, {
|
|
311
|
-
size: 16,
|
|
312
|
-
color: buoyColors.textSecondary
|
|
313
|
-
})
|
|
314
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
315
|
-
style: styles.actionLabel,
|
|
316
|
-
children: "Search"
|
|
317
|
-
})]
|
|
318
|
-
})]
|
|
319
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
320
|
-
style: styles.statsGrid,
|
|
321
|
-
children: [/*#__PURE__*/_jsx(StatItem, {
|
|
322
|
-
value: stats.total,
|
|
323
|
-
label: "Screens"
|
|
324
|
-
}), /*#__PURE__*/_jsx(StatItem, {
|
|
325
|
-
value: stats.mounted,
|
|
326
|
-
label: "Mounted"
|
|
327
|
-
}), /*#__PURE__*/_jsx(StatItem, {
|
|
328
|
-
value: stats.available,
|
|
329
|
-
label: "Available"
|
|
330
|
-
}), /*#__PURE__*/_jsx(StatItem, {
|
|
331
|
-
value: stats.navigators,
|
|
332
|
-
label: "Navigators"
|
|
333
|
-
})]
|
|
334
|
-
})]
|
|
335
|
-
}) : /*#__PURE__*/_jsxs(View, {
|
|
277
|
+
children: [isSearching && /*#__PURE__*/_jsxs(View, {
|
|
336
278
|
style: styles.searchContainer,
|
|
337
279
|
children: [/*#__PURE__*/_jsx(Search, {
|
|
338
280
|
size: 16,
|
|
339
|
-
color:
|
|
281
|
+
color: night.color.textTertiary
|
|
340
282
|
}), /*#__PURE__*/_jsx(TextInput, {
|
|
341
283
|
style: styles.searchInput,
|
|
342
284
|
placeholder: "Search screens...",
|
|
343
|
-
placeholderTextColor:
|
|
285
|
+
placeholderTextColor: night.color.placeholder,
|
|
344
286
|
value: searchQuery,
|
|
345
287
|
onChangeText: setSearchQuery,
|
|
346
288
|
autoCapitalize: "none",
|
|
@@ -367,7 +309,64 @@ export function ReactNavigationRoutes({
|
|
|
367
309
|
}), /*#__PURE__*/_jsxs(ScrollView, {
|
|
368
310
|
style: styles.scrollView,
|
|
369
311
|
contentContainerStyle: styles.scrollContent,
|
|
370
|
-
children: [
|
|
312
|
+
children: [!isSearching && /*#__PURE__*/_jsxs(View, {
|
|
313
|
+
style: styles.header,
|
|
314
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
315
|
+
style: styles.actionsRow,
|
|
316
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
317
|
+
style: styles.actionWrapper,
|
|
318
|
+
children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
319
|
+
value: copyAllData,
|
|
320
|
+
buttonStyle: styles.actionButtonHeader
|
|
321
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
322
|
+
style: styles.actionLabel,
|
|
323
|
+
children: "Copy"
|
|
324
|
+
})]
|
|
325
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
326
|
+
style: styles.actionWrapper,
|
|
327
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
328
|
+
style: [styles.iconButton, isRefreshing && styles.refreshButtonDisabled],
|
|
329
|
+
onPress: handleRefresh,
|
|
330
|
+
disabled: isRefreshing,
|
|
331
|
+
children: /*#__PURE__*/_jsx(RefreshCw, {
|
|
332
|
+
size: 16,
|
|
333
|
+
color: isRefreshing ? night.color.textTertiary : night.color.textSecondary
|
|
334
|
+
})
|
|
335
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
336
|
+
style: styles.actionLabel,
|
|
337
|
+
children: "Refresh"
|
|
338
|
+
})]
|
|
339
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
340
|
+
style: styles.actionWrapper,
|
|
341
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
342
|
+
style: styles.iconButton,
|
|
343
|
+
onPress: () => setIsSearching(true),
|
|
344
|
+
children: /*#__PURE__*/_jsx(Search, {
|
|
345
|
+
size: 16,
|
|
346
|
+
color: night.color.textSecondary
|
|
347
|
+
})
|
|
348
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
349
|
+
style: styles.actionLabel,
|
|
350
|
+
children: "Search"
|
|
351
|
+
})]
|
|
352
|
+
})]
|
|
353
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
354
|
+
style: styles.statsGrid,
|
|
355
|
+
children: [/*#__PURE__*/_jsx(StatItem, {
|
|
356
|
+
value: stats.total,
|
|
357
|
+
label: "Screens"
|
|
358
|
+
}), /*#__PURE__*/_jsx(StatItem, {
|
|
359
|
+
value: stats.mounted,
|
|
360
|
+
label: "Mounted"
|
|
361
|
+
}), /*#__PURE__*/_jsx(StatItem, {
|
|
362
|
+
value: stats.available,
|
|
363
|
+
label: "Available"
|
|
364
|
+
}), /*#__PURE__*/_jsx(StatItem, {
|
|
365
|
+
value: stats.navigators,
|
|
366
|
+
label: "Navigators"
|
|
367
|
+
})]
|
|
368
|
+
})]
|
|
369
|
+
}), filteredGroups.length === 0 ? /*#__PURE__*/_jsx(View, {
|
|
371
370
|
style: styles.emptyState,
|
|
372
371
|
children: /*#__PURE__*/_jsx(Text, {
|
|
373
372
|
style: styles.emptyText,
|
|
@@ -438,10 +437,10 @@ function NavigatorGroupView({
|
|
|
438
437
|
style: styles.groupHeaderLeft,
|
|
439
438
|
children: [isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
|
|
440
439
|
size: 14,
|
|
441
|
-
color:
|
|
440
|
+
color: night.color.textSecondary
|
|
442
441
|
}) : /*#__PURE__*/_jsx(ChevronRight, {
|
|
443
442
|
size: 14,
|
|
444
|
-
color:
|
|
443
|
+
color: night.color.textSecondary
|
|
445
444
|
}), /*#__PURE__*/_jsx(Text, {
|
|
446
445
|
style: styles.groupTitle,
|
|
447
446
|
numberOfLines: 1,
|
|
@@ -477,7 +476,7 @@ function ScreenItemView({
|
|
|
477
476
|
onToggleExpand,
|
|
478
477
|
onNavigate
|
|
479
478
|
}) {
|
|
480
|
-
const statusColor = screen.isFocused ? buoyColors.success : screen.isMounted ? "#3B82F6" :
|
|
479
|
+
const statusColor = screen.isFocused ? buoyColors.success : screen.isMounted ? "#3B82F6" : night.color.textTertiary;
|
|
481
480
|
const statusLabel = screen.isFocused ? "FOCUSED" : screen.isMounted ? "MOUNTED" : "AVAILABLE";
|
|
482
481
|
return /*#__PURE__*/_jsx(View, {
|
|
483
482
|
style: styles.screenItem,
|
|
@@ -491,10 +490,10 @@ function ScreenItemView({
|
|
|
491
490
|
style: styles.expandIndicator,
|
|
492
491
|
children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
|
|
493
492
|
size: 14,
|
|
494
|
-
color:
|
|
493
|
+
color: night.color.textSecondary
|
|
495
494
|
}) : /*#__PURE__*/_jsx(ChevronRight, {
|
|
496
495
|
size: 14,
|
|
497
|
-
color:
|
|
496
|
+
color: night.color.textSecondary
|
|
498
497
|
})
|
|
499
498
|
}), /*#__PURE__*/_jsx(Text, {
|
|
500
499
|
style: styles.screenName,
|
|
@@ -537,19 +536,20 @@ function ScreenItemView({
|
|
|
537
536
|
const styles = StyleSheet.create({
|
|
538
537
|
container: {
|
|
539
538
|
flex: 1,
|
|
540
|
-
|
|
539
|
+
// Transparent so JsModal's ToolBackground shows through (the modal paints opaque base beneath it).
|
|
540
|
+
backgroundColor: "transparent"
|
|
541
541
|
},
|
|
542
542
|
emptyState: {
|
|
543
543
|
padding: 32,
|
|
544
544
|
alignItems: "center"
|
|
545
545
|
},
|
|
546
546
|
emptyText: {
|
|
547
|
-
color:
|
|
547
|
+
color: night.color.textSecondary,
|
|
548
548
|
fontSize: 14,
|
|
549
549
|
fontFamily: "monospace"
|
|
550
550
|
},
|
|
551
551
|
emptySubtext: {
|
|
552
|
-
color:
|
|
552
|
+
color: night.color.textTertiary,
|
|
553
553
|
fontSize: 12,
|
|
554
554
|
fontFamily: "monospace",
|
|
555
555
|
marginTop: 8
|
|
@@ -558,8 +558,9 @@ const styles = StyleSheet.create({
|
|
|
558
558
|
flexDirection: "column",
|
|
559
559
|
padding: 8,
|
|
560
560
|
borderBottomWidth: 1,
|
|
561
|
-
borderBottomColor:
|
|
562
|
-
gap: 12
|
|
561
|
+
borderBottomColor: night.color.border,
|
|
562
|
+
gap: 12,
|
|
563
|
+
marginBottom: 8
|
|
563
564
|
},
|
|
564
565
|
actionsRow: {
|
|
565
566
|
flexDirection: "row",
|
|
@@ -577,7 +578,7 @@ const styles = StyleSheet.create({
|
|
|
577
578
|
actionButtonHeader: {
|
|
578
579
|
padding: 6,
|
|
579
580
|
borderRadius: 4,
|
|
580
|
-
backgroundColor:
|
|
581
|
+
backgroundColor: night.color.surfaceElevated
|
|
581
582
|
},
|
|
582
583
|
iconButton: {
|
|
583
584
|
padding: 6,
|
|
@@ -587,7 +588,7 @@ const styles = StyleSheet.create({
|
|
|
587
588
|
},
|
|
588
589
|
actionLabel: {
|
|
589
590
|
fontSize: 8,
|
|
590
|
-
color:
|
|
591
|
+
color: night.color.textTertiary,
|
|
591
592
|
fontFamily: "monospace",
|
|
592
593
|
textTransform: "uppercase",
|
|
593
594
|
letterSpacing: 0.5
|
|
@@ -605,7 +606,7 @@ const styles = StyleSheet.create({
|
|
|
605
606
|
flexShrink: 1,
|
|
606
607
|
flexBasis: "20%",
|
|
607
608
|
minWidth: 70,
|
|
608
|
-
backgroundColor:
|
|
609
|
+
backgroundColor: night.color.surface,
|
|
609
610
|
borderRadius: 8,
|
|
610
611
|
paddingVertical: 10,
|
|
611
612
|
paddingHorizontal: 12,
|
|
@@ -614,12 +615,12 @@ const styles = StyleSheet.create({
|
|
|
614
615
|
statValue: {
|
|
615
616
|
fontSize: 18,
|
|
616
617
|
fontWeight: "800",
|
|
617
|
-
color:
|
|
618
|
+
color: night.color.text,
|
|
618
619
|
fontFamily: "monospace"
|
|
619
620
|
},
|
|
620
621
|
statLabel: {
|
|
621
622
|
fontSize: 10,
|
|
622
|
-
color:
|
|
623
|
+
color: night.color.textTertiary,
|
|
623
624
|
marginTop: 4,
|
|
624
625
|
fontFamily: "monospace",
|
|
625
626
|
textTransform: "uppercase",
|
|
@@ -631,11 +632,11 @@ const styles = StyleSheet.create({
|
|
|
631
632
|
padding: 8,
|
|
632
633
|
gap: 8,
|
|
633
634
|
borderBottomWidth: 1,
|
|
634
|
-
borderBottomColor:
|
|
635
|
+
borderBottomColor: night.color.border
|
|
635
636
|
},
|
|
636
637
|
searchInput: {
|
|
637
638
|
flex: 1,
|
|
638
|
-
color:
|
|
639
|
+
color: night.color.text,
|
|
639
640
|
fontSize: 14,
|
|
640
641
|
fontFamily: "monospace"
|
|
641
642
|
},
|
|
@@ -643,7 +644,7 @@ const styles = StyleSheet.create({
|
|
|
643
644
|
padding: 4
|
|
644
645
|
},
|
|
645
646
|
clearButtonText: {
|
|
646
|
-
color:
|
|
647
|
+
color: night.color.textTertiary,
|
|
647
648
|
fontSize: 18
|
|
648
649
|
},
|
|
649
650
|
closeSearchButton: {
|
|
@@ -651,7 +652,7 @@ const styles = StyleSheet.create({
|
|
|
651
652
|
paddingVertical: 4
|
|
652
653
|
},
|
|
653
654
|
closeSearchText: {
|
|
654
|
-
color:
|
|
655
|
+
color: night.color.accent,
|
|
655
656
|
fontSize: 14,
|
|
656
657
|
fontWeight: "600",
|
|
657
658
|
fontFamily: "monospace"
|
|
@@ -660,7 +661,7 @@ const styles = StyleSheet.create({
|
|
|
660
661
|
flex: 1
|
|
661
662
|
},
|
|
662
663
|
scrollContent: {
|
|
663
|
-
|
|
664
|
+
paddingBottom: 8
|
|
664
665
|
},
|
|
665
666
|
metaFooter: {
|
|
666
667
|
flexDirection: "row",
|
|
@@ -671,11 +672,11 @@ const styles = StyleSheet.create({
|
|
|
671
672
|
paddingVertical: 16,
|
|
672
673
|
marginTop: 16,
|
|
673
674
|
borderTopWidth: 1,
|
|
674
|
-
borderTopColor:
|
|
675
|
+
borderTopColor: night.color.border
|
|
675
676
|
},
|
|
676
677
|
metaText: {
|
|
677
678
|
fontSize: 12,
|
|
678
|
-
color:
|
|
679
|
+
color: night.color.textSecondary,
|
|
679
680
|
fontFamily: "monospace"
|
|
680
681
|
},
|
|
681
682
|
sourceBadge: {
|
|
@@ -683,12 +684,12 @@ const styles = StyleSheet.create({
|
|
|
683
684
|
paddingVertical: 2,
|
|
684
685
|
borderRadius: 999,
|
|
685
686
|
borderWidth: 1,
|
|
686
|
-
borderColor:
|
|
687
|
-
backgroundColor:
|
|
687
|
+
borderColor: night.color.border,
|
|
688
|
+
backgroundColor: night.color.surface
|
|
688
689
|
},
|
|
689
690
|
sourceText: {
|
|
690
691
|
fontSize: 11,
|
|
691
|
-
color:
|
|
692
|
+
color: night.color.textSecondary,
|
|
692
693
|
textTransform: "capitalize",
|
|
693
694
|
fontFamily: "monospace"
|
|
694
695
|
},
|
|
@@ -701,9 +702,9 @@ const styles = StyleSheet.create({
|
|
|
701
702
|
justifyContent: "space-between",
|
|
702
703
|
padding: 12,
|
|
703
704
|
paddingHorizontal: 16,
|
|
704
|
-
backgroundColor:
|
|
705
|
+
backgroundColor: night.color.surface,
|
|
705
706
|
borderLeftWidth: 3,
|
|
706
|
-
borderLeftColor:
|
|
707
|
+
borderLeftColor: night.color.fillTertiary
|
|
707
708
|
},
|
|
708
709
|
groupHeaderLeft: {
|
|
709
710
|
flexDirection: "row",
|
|
@@ -714,7 +715,7 @@ const styles = StyleSheet.create({
|
|
|
714
715
|
groupTitle: {
|
|
715
716
|
fontSize: 12,
|
|
716
717
|
fontWeight: "700",
|
|
717
|
-
color:
|
|
718
|
+
color: night.color.text,
|
|
718
719
|
fontFamily: "monospace",
|
|
719
720
|
textTransform: "uppercase",
|
|
720
721
|
letterSpacing: 0.8
|
|
@@ -737,19 +738,20 @@ const styles = StyleSheet.create({
|
|
|
737
738
|
fontFamily: "monospace"
|
|
738
739
|
},
|
|
739
740
|
screensList: {
|
|
740
|
-
|
|
741
|
+
// Transparent so the night sheet's star field shows through.
|
|
742
|
+
backgroundColor: "transparent"
|
|
741
743
|
},
|
|
742
744
|
groupDescription: {
|
|
743
745
|
paddingHorizontal: 16,
|
|
744
746
|
paddingVertical: 8,
|
|
745
747
|
marginBottom: 8,
|
|
746
|
-
backgroundColor:
|
|
748
|
+
backgroundColor: night.color.surfaceElevated,
|
|
747
749
|
borderLeftWidth: 3,
|
|
748
|
-
borderLeftColor:
|
|
750
|
+
borderLeftColor: night.color.fillTertiary
|
|
749
751
|
},
|
|
750
752
|
groupDescriptionText: {
|
|
751
753
|
fontSize: 11,
|
|
752
|
-
color:
|
|
754
|
+
color: night.color.textSecondary,
|
|
753
755
|
fontFamily: "monospace",
|
|
754
756
|
lineHeight: 16
|
|
755
757
|
},
|
|
@@ -762,10 +764,10 @@ const styles = StyleSheet.create({
|
|
|
762
764
|
justifyContent: "space-between",
|
|
763
765
|
paddingVertical: 10,
|
|
764
766
|
paddingHorizontal: 12,
|
|
765
|
-
backgroundColor:
|
|
767
|
+
backgroundColor: night.color.surface,
|
|
766
768
|
borderRadius: 6,
|
|
767
769
|
borderWidth: 1,
|
|
768
|
-
borderColor:
|
|
770
|
+
borderColor: night.color.border,
|
|
769
771
|
shadowColor: "#000",
|
|
770
772
|
shadowOffset: {
|
|
771
773
|
width: 0,
|
|
@@ -788,7 +790,7 @@ const styles = StyleSheet.create({
|
|
|
788
790
|
screenName: {
|
|
789
791
|
fontSize: 13,
|
|
790
792
|
fontWeight: "600",
|
|
791
|
-
color:
|
|
793
|
+
color: night.color.text,
|
|
792
794
|
fontFamily: "monospace",
|
|
793
795
|
flex: 1
|
|
794
796
|
},
|
|
@@ -811,19 +813,19 @@ const styles = StyleSheet.create({
|
|
|
811
813
|
headerActionButton: {
|
|
812
814
|
padding: 6,
|
|
813
815
|
borderRadius: 4,
|
|
814
|
-
backgroundColor:
|
|
816
|
+
backgroundColor: night.color.surfaceElevated,
|
|
815
817
|
borderWidth: 1,
|
|
816
|
-
borderColor:
|
|
818
|
+
borderColor: night.color.border,
|
|
817
819
|
alignItems: "center",
|
|
818
820
|
justifyContent: "center"
|
|
819
821
|
},
|
|
820
822
|
navigateButton: {
|
|
821
|
-
backgroundColor:
|
|
822
|
-
borderColor:
|
|
823
|
+
backgroundColor: night.color.accentSoft,
|
|
824
|
+
borderColor: night.color.accentBorder
|
|
823
825
|
},
|
|
824
826
|
navigateButtonText: {
|
|
825
827
|
fontSize: 12,
|
|
826
|
-
color:
|
|
828
|
+
color: night.color.accent,
|
|
827
829
|
fontFamily: "monospace",
|
|
828
830
|
fontWeight: "600"
|
|
829
831
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { View, Text, StyleSheet, TouchableOpacity, ScrollView } from "react-native";
|
|
13
|
-
import { Navigation,
|
|
13
|
+
import { Navigation, night } 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";
|
|
@@ -39,7 +39,7 @@ export function RouteEventDetail({
|
|
|
39
39
|
activeOpacity: 0.8,
|
|
40
40
|
children: [/*#__PURE__*/_jsx(Navigation, {
|
|
41
41
|
size: 16,
|
|
42
|
-
color:
|
|
42
|
+
color: night.color.onAccent
|
|
43
43
|
}), /*#__PURE__*/_jsx(Text, {
|
|
44
44
|
style: styles.goButtonText,
|
|
45
45
|
children: "Go to route"
|
|
@@ -51,7 +51,8 @@ export function RouteEventDetail({
|
|
|
51
51
|
const styles = StyleSheet.create({
|
|
52
52
|
container: {
|
|
53
53
|
flex: 1,
|
|
54
|
-
|
|
54
|
+
// Transparent so the night sheet's star field shows through.
|
|
55
|
+
backgroundColor: "transparent"
|
|
55
56
|
},
|
|
56
57
|
scroll: {
|
|
57
58
|
flex: 1
|
|
@@ -62,23 +63,25 @@ const styles = StyleSheet.create({
|
|
|
62
63
|
footer: {
|
|
63
64
|
paddingHorizontal: 16,
|
|
64
65
|
paddingVertical: 12,
|
|
65
|
-
|
|
66
|
+
// Transparent so the night sheet's star field shows through.
|
|
67
|
+
backgroundColor: "transparent",
|
|
66
68
|
borderTopWidth: 1,
|
|
67
|
-
borderTopColor:
|
|
69
|
+
borderTopColor: night.color.border
|
|
68
70
|
},
|
|
69
71
|
goButton: {
|
|
70
72
|
flexDirection: "row",
|
|
71
73
|
alignItems: "center",
|
|
72
74
|
justifyContent: "center",
|
|
73
75
|
gap: 8,
|
|
74
|
-
backgroundColor:
|
|
76
|
+
backgroundColor: night.color.accent,
|
|
75
77
|
paddingVertical: 12,
|
|
76
78
|
borderRadius: 8
|
|
77
79
|
},
|
|
78
80
|
goButtonText: {
|
|
79
81
|
fontSize: 13,
|
|
80
82
|
fontWeight: "600",
|
|
81
|
-
|
|
83
|
+
// Ink on a filled accent surface — the night accent takes dark ink.
|
|
84
|
+
color: night.color.onAccent,
|
|
82
85
|
fontFamily: "monospace",
|
|
83
86
|
textTransform: "uppercase",
|
|
84
87
|
letterSpacing: 0.5
|