@buoy-gg/route-events 7.0.25 → 7.0.27
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/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/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/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
|
@@ -150,15 +150,19 @@ class RouteParser {
|
|
|
150
150
|
*/
|
|
151
151
|
static organizeRoutes(routes) {
|
|
152
152
|
const groups = [];
|
|
153
|
-
|
|
153
|
+
|
|
154
|
+
// Flatten before grouping, like every other bucket — static/index screens
|
|
155
|
+
// nested under layouts (e.g. (tabs)/about at depth 2) must still be listed,
|
|
156
|
+
// or the stats header counts routes the list never shows.
|
|
157
|
+
const staticRoutes = this.flattenRoutes(routes).filter(r => r.type === 'static' || r.type === 'index');
|
|
154
158
|
const dynamicRoutes = this.flattenRoutes(routes).filter(r => r.type === 'dynamic' || r.type === 'catch-all');
|
|
155
159
|
const layoutRoutes = this.flattenRoutes(routes).filter(r => r.type === 'layout');
|
|
156
160
|
const groupedRoutes = this.flattenRoutes(routes).filter(r => r.type === 'group');
|
|
157
|
-
if (
|
|
161
|
+
if (staticRoutes.length > 0) {
|
|
158
162
|
groups.push({
|
|
159
|
-
title: '
|
|
163
|
+
title: 'Static Routes',
|
|
160
164
|
icon: '',
|
|
161
|
-
routes:
|
|
165
|
+
routes: staticRoutes
|
|
162
166
|
});
|
|
163
167
|
}
|
|
164
168
|
if (dynamicRoutes.length > 0) {
|
|
@@ -259,10 +259,10 @@ function NavigationStack({
|
|
|
259
259
|
style: styles.expandIndicator,
|
|
260
260
|
children: isExpanded ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronDown, {
|
|
261
261
|
size: 14,
|
|
262
|
-
color: _sharedUi.
|
|
262
|
+
color: _sharedUi.night.color.textSecondary
|
|
263
263
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronRight, {
|
|
264
264
|
size: 14,
|
|
265
|
-
color: _sharedUi.
|
|
265
|
+
color: _sharedUi.night.color.textSecondary
|
|
266
266
|
})
|
|
267
267
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
268
268
|
style: styles.stackItemPath,
|
|
@@ -375,7 +375,8 @@ function NavigationStack({
|
|
|
375
375
|
const styles = _reactNative.StyleSheet.create({
|
|
376
376
|
container: {
|
|
377
377
|
flex: 1,
|
|
378
|
-
|
|
378
|
+
// Transparent so JsModal's ToolBackground shows through (the modal paints opaque base beneath it).
|
|
379
|
+
backgroundColor: "transparent"
|
|
379
380
|
},
|
|
380
381
|
loadingContainer: {
|
|
381
382
|
flex: 1,
|
|
@@ -384,7 +385,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
384
385
|
padding: 32
|
|
385
386
|
},
|
|
386
387
|
loadingText: {
|
|
387
|
-
color: _sharedUi.
|
|
388
|
+
color: _sharedUi.night.color.textSecondary,
|
|
388
389
|
fontSize: 14,
|
|
389
390
|
fontFamily: "monospace"
|
|
390
391
|
},
|
|
@@ -402,7 +403,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
402
403
|
marginBottom: 8
|
|
403
404
|
},
|
|
404
405
|
errorDetail: {
|
|
405
|
-
color: _sharedUi.
|
|
406
|
+
color: _sharedUi.night.color.textSecondary,
|
|
406
407
|
fontSize: 12,
|
|
407
408
|
fontFamily: "monospace",
|
|
408
409
|
textAlign: "center"
|
|
@@ -414,14 +415,14 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
414
415
|
padding: 32
|
|
415
416
|
},
|
|
416
417
|
emptyText: {
|
|
417
|
-
color: _sharedUi.
|
|
418
|
+
color: _sharedUi.night.color.text,
|
|
418
419
|
fontSize: 16,
|
|
419
420
|
fontWeight: "600",
|
|
420
421
|
fontFamily: "monospace",
|
|
421
422
|
marginBottom: 8
|
|
422
423
|
},
|
|
423
424
|
emptySubtext: {
|
|
424
|
-
color: _sharedUi.
|
|
425
|
+
color: _sharedUi.night.color.textSecondary,
|
|
425
426
|
fontSize: 14,
|
|
426
427
|
fontFamily: "monospace",
|
|
427
428
|
textAlign: "center"
|
|
@@ -436,14 +437,14 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
436
437
|
marginBottom: 6
|
|
437
438
|
},
|
|
438
439
|
stackItem: {
|
|
439
|
-
backgroundColor: _sharedUi.
|
|
440
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
440
441
|
borderRadius: 6,
|
|
441
442
|
borderWidth: 1,
|
|
442
|
-
borderColor: _sharedUi.
|
|
443
|
+
borderColor: _sharedUi.night.color.border,
|
|
443
444
|
overflow: "hidden"
|
|
444
445
|
},
|
|
445
446
|
stackItemSelected: {
|
|
446
|
-
borderColor: _sharedUi.
|
|
447
|
+
borderColor: _sharedUi.night.color.accent,
|
|
447
448
|
borderWidth: 2
|
|
448
449
|
},
|
|
449
450
|
stackItemHeader: {
|
|
@@ -460,7 +461,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
460
461
|
stackItemPath: {
|
|
461
462
|
fontSize: 13,
|
|
462
463
|
fontWeight: "600",
|
|
463
|
-
color: _sharedUi.
|
|
464
|
+
color: _sharedUi.night.color.text,
|
|
464
465
|
fontFamily: "monospace",
|
|
465
466
|
flex: 1
|
|
466
467
|
},
|
|
@@ -484,20 +485,20 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
484
485
|
paddingTop: 8,
|
|
485
486
|
paddingBottom: 12,
|
|
486
487
|
borderTopWidth: 1,
|
|
487
|
-
borderTopColor: _sharedUi.
|
|
488
|
+
borderTopColor: _sharedUi.night.color.border
|
|
488
489
|
},
|
|
489
490
|
detailRow: {
|
|
490
491
|
marginBottom: 8
|
|
491
492
|
},
|
|
492
493
|
detailLabel: {
|
|
493
494
|
fontSize: 10,
|
|
494
|
-
color: _sharedUi.
|
|
495
|
+
color: _sharedUi.night.color.textSecondary,
|
|
495
496
|
fontFamily: "monospace",
|
|
496
497
|
marginBottom: 2
|
|
497
498
|
},
|
|
498
499
|
detailValue: {
|
|
499
500
|
fontSize: 12,
|
|
500
|
-
color: _sharedUi.
|
|
501
|
+
color: _sharedUi.night.color.text,
|
|
501
502
|
fontFamily: "monospace"
|
|
502
503
|
},
|
|
503
504
|
dataViewerContainer: {
|
|
@@ -514,7 +515,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
514
515
|
flex: 1
|
|
515
516
|
},
|
|
516
517
|
actionButton: {
|
|
517
|
-
backgroundColor: _sharedUi.
|
|
518
|
+
backgroundColor: _sharedUi.night.color.surfaceElevated,
|
|
518
519
|
paddingVertical: 8,
|
|
519
520
|
paddingHorizontal: 8,
|
|
520
521
|
borderRadius: 6,
|
|
@@ -526,15 +527,15 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
526
527
|
actionButtonText: {
|
|
527
528
|
fontSize: 12,
|
|
528
529
|
fontWeight: "600",
|
|
529
|
-
color: _sharedUi.
|
|
530
|
+
color: _sharedUi.night.color.text,
|
|
530
531
|
fontFamily: "monospace"
|
|
531
532
|
},
|
|
532
533
|
actionButtonTextDisabled: {
|
|
533
|
-
color: _sharedUi.
|
|
534
|
+
color: _sharedUi.night.color.textTertiary
|
|
534
535
|
},
|
|
535
536
|
helpText: {
|
|
536
537
|
fontSize: 9,
|
|
537
|
-
color: _sharedUi.
|
|
538
|
+
color: _sharedUi.night.color.textSecondary,
|
|
538
539
|
fontFamily: "monospace",
|
|
539
540
|
textAlign: "center",
|
|
540
541
|
marginTop: 4,
|
|
@@ -20,11 +20,10 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
20
20
|
* Provides navigation to any discovered screen using nested screen/params actions.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
// Resolved once at module load; null when
|
|
24
|
-
// (
|
|
25
|
-
//
|
|
23
|
+
// Resolved once at module load; null when React Navigation is absent
|
|
24
|
+
// (useSafeNavigationContainerRef then yields undefined, so the dispatch
|
|
25
|
+
// paths below never execute).
|
|
26
26
|
const CommonActions = (0, _safeReactNavigation.getCommonActions)();
|
|
27
|
-
const NavigationContainerRefContext = (0, _safeReactNavigation.getNavigationContainerRefContext)();
|
|
28
27
|
|
|
29
28
|
// ============================================================================
|
|
30
29
|
// Types
|
|
@@ -125,7 +124,7 @@ function buildNestedNavigateAction(path) {
|
|
|
125
124
|
function ReactNavigationRoutes({
|
|
126
125
|
style
|
|
127
126
|
}) {
|
|
128
|
-
const containerRef = (0,
|
|
127
|
+
const containerRef = (0, _safeReactNavigation.useSafeNavigationContainerRef)();
|
|
129
128
|
const [navigationState, setNavigationState] = (0, _react.useState)(() => containerRef?.getRootState?.() ?? null);
|
|
130
129
|
const [searchQuery, setSearchQuery] = (0, _react.useState)("");
|
|
131
130
|
const [isSearching, setIsSearching] = (0, _react.useState)(false);
|
|
@@ -279,72 +278,15 @@ function ReactNavigationRoutes({
|
|
|
279
278
|
}
|
|
280
279
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
281
280
|
style: [styles.container, style],
|
|
282
|
-
children: [
|
|
283
|
-
style: styles.header,
|
|
284
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
285
|
-
style: styles.actionsRow,
|
|
286
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
287
|
-
style: styles.actionWrapper,
|
|
288
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
|
|
289
|
-
value: copyAllData,
|
|
290
|
-
buttonStyle: styles.actionButtonHeader
|
|
291
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
292
|
-
style: styles.actionLabel,
|
|
293
|
-
children: "Copy"
|
|
294
|
-
})]
|
|
295
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
296
|
-
style: styles.actionWrapper,
|
|
297
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
298
|
-
style: [styles.iconButton, isRefreshing && styles.refreshButtonDisabled],
|
|
299
|
-
onPress: handleRefresh,
|
|
300
|
-
disabled: isRefreshing,
|
|
301
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.RefreshCw, {
|
|
302
|
-
size: 16,
|
|
303
|
-
color: isRefreshing ? _sharedUi.buoyColors.textMuted : _sharedUi.buoyColors.textSecondary
|
|
304
|
-
})
|
|
305
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
306
|
-
style: styles.actionLabel,
|
|
307
|
-
children: "Refresh"
|
|
308
|
-
})]
|
|
309
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
310
|
-
style: styles.actionWrapper,
|
|
311
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
312
|
-
style: styles.iconButton,
|
|
313
|
-
onPress: () => setIsSearching(true),
|
|
314
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
|
|
315
|
-
size: 16,
|
|
316
|
-
color: _sharedUi.buoyColors.textSecondary
|
|
317
|
-
})
|
|
318
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
319
|
-
style: styles.actionLabel,
|
|
320
|
-
children: "Search"
|
|
321
|
-
})]
|
|
322
|
-
})]
|
|
323
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
324
|
-
style: styles.statsGrid,
|
|
325
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
326
|
-
value: stats.total,
|
|
327
|
-
label: "Screens"
|
|
328
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
329
|
-
value: stats.mounted,
|
|
330
|
-
label: "Mounted"
|
|
331
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
332
|
-
value: stats.available,
|
|
333
|
-
label: "Available"
|
|
334
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
335
|
-
value: stats.navigators,
|
|
336
|
-
label: "Navigators"
|
|
337
|
-
})]
|
|
338
|
-
})]
|
|
339
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
281
|
+
children: [isSearching && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
340
282
|
style: styles.searchContainer,
|
|
341
283
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
|
|
342
284
|
size: 16,
|
|
343
|
-
color: _sharedUi.
|
|
285
|
+
color: _sharedUi.night.color.textTertiary
|
|
344
286
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
345
287
|
style: styles.searchInput,
|
|
346
288
|
placeholder: "Search screens...",
|
|
347
|
-
placeholderTextColor: _sharedUi.
|
|
289
|
+
placeholderTextColor: _sharedUi.night.color.placeholder,
|
|
348
290
|
value: searchQuery,
|
|
349
291
|
onChangeText: setSearchQuery,
|
|
350
292
|
autoCapitalize: "none",
|
|
@@ -371,7 +313,64 @@ function ReactNavigationRoutes({
|
|
|
371
313
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
372
314
|
style: styles.scrollView,
|
|
373
315
|
contentContainerStyle: styles.scrollContent,
|
|
374
|
-
children: [
|
|
316
|
+
children: [!isSearching && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
317
|
+
style: styles.header,
|
|
318
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
319
|
+
style: styles.actionsRow,
|
|
320
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
321
|
+
style: styles.actionWrapper,
|
|
322
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
|
|
323
|
+
value: copyAllData,
|
|
324
|
+
buttonStyle: styles.actionButtonHeader
|
|
325
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
326
|
+
style: styles.actionLabel,
|
|
327
|
+
children: "Copy"
|
|
328
|
+
})]
|
|
329
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
330
|
+
style: styles.actionWrapper,
|
|
331
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
332
|
+
style: [styles.iconButton, isRefreshing && styles.refreshButtonDisabled],
|
|
333
|
+
onPress: handleRefresh,
|
|
334
|
+
disabled: isRefreshing,
|
|
335
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.RefreshCw, {
|
|
336
|
+
size: 16,
|
|
337
|
+
color: isRefreshing ? _sharedUi.night.color.textTertiary : _sharedUi.night.color.textSecondary
|
|
338
|
+
})
|
|
339
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
340
|
+
style: styles.actionLabel,
|
|
341
|
+
children: "Refresh"
|
|
342
|
+
})]
|
|
343
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
344
|
+
style: styles.actionWrapper,
|
|
345
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
346
|
+
style: styles.iconButton,
|
|
347
|
+
onPress: () => setIsSearching(true),
|
|
348
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
|
|
349
|
+
size: 16,
|
|
350
|
+
color: _sharedUi.night.color.textSecondary
|
|
351
|
+
})
|
|
352
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
353
|
+
style: styles.actionLabel,
|
|
354
|
+
children: "Search"
|
|
355
|
+
})]
|
|
356
|
+
})]
|
|
357
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
358
|
+
style: styles.statsGrid,
|
|
359
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
360
|
+
value: stats.total,
|
|
361
|
+
label: "Screens"
|
|
362
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
363
|
+
value: stats.mounted,
|
|
364
|
+
label: "Mounted"
|
|
365
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
366
|
+
value: stats.available,
|
|
367
|
+
label: "Available"
|
|
368
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatItem, {
|
|
369
|
+
value: stats.navigators,
|
|
370
|
+
label: "Navigators"
|
|
371
|
+
})]
|
|
372
|
+
})]
|
|
373
|
+
}), filteredGroups.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
375
374
|
style: styles.emptyState,
|
|
376
375
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
377
376
|
style: styles.emptyText,
|
|
@@ -442,10 +441,10 @@ function NavigatorGroupView({
|
|
|
442
441
|
style: styles.groupHeaderLeft,
|
|
443
442
|
children: [isExpanded ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronDown, {
|
|
444
443
|
size: 14,
|
|
445
|
-
color: _sharedUi.
|
|
444
|
+
color: _sharedUi.night.color.textSecondary
|
|
446
445
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronRight, {
|
|
447
446
|
size: 14,
|
|
448
|
-
color: _sharedUi.
|
|
447
|
+
color: _sharedUi.night.color.textSecondary
|
|
449
448
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
450
449
|
style: styles.groupTitle,
|
|
451
450
|
numberOfLines: 1,
|
|
@@ -481,7 +480,7 @@ function ScreenItemView({
|
|
|
481
480
|
onToggleExpand,
|
|
482
481
|
onNavigate
|
|
483
482
|
}) {
|
|
484
|
-
const statusColor = screen.isFocused ? _sharedUi.buoyColors.success : screen.isMounted ? "#3B82F6" : _sharedUi.
|
|
483
|
+
const statusColor = screen.isFocused ? _sharedUi.buoyColors.success : screen.isMounted ? "#3B82F6" : _sharedUi.night.color.textTertiary;
|
|
485
484
|
const statusLabel = screen.isFocused ? "FOCUSED" : screen.isMounted ? "MOUNTED" : "AVAILABLE";
|
|
486
485
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
487
486
|
style: styles.screenItem,
|
|
@@ -495,10 +494,10 @@ function ScreenItemView({
|
|
|
495
494
|
style: styles.expandIndicator,
|
|
496
495
|
children: isExpanded ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronDown, {
|
|
497
496
|
size: 14,
|
|
498
|
-
color: _sharedUi.
|
|
497
|
+
color: _sharedUi.night.color.textSecondary
|
|
499
498
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ChevronRight, {
|
|
500
499
|
size: 14,
|
|
501
|
-
color: _sharedUi.
|
|
500
|
+
color: _sharedUi.night.color.textSecondary
|
|
502
501
|
})
|
|
503
502
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
504
503
|
style: styles.screenName,
|
|
@@ -541,19 +540,20 @@ function ScreenItemView({
|
|
|
541
540
|
const styles = _reactNative.StyleSheet.create({
|
|
542
541
|
container: {
|
|
543
542
|
flex: 1,
|
|
544
|
-
|
|
543
|
+
// Transparent so JsModal's ToolBackground shows through (the modal paints opaque base beneath it).
|
|
544
|
+
backgroundColor: "transparent"
|
|
545
545
|
},
|
|
546
546
|
emptyState: {
|
|
547
547
|
padding: 32,
|
|
548
548
|
alignItems: "center"
|
|
549
549
|
},
|
|
550
550
|
emptyText: {
|
|
551
|
-
color: _sharedUi.
|
|
551
|
+
color: _sharedUi.night.color.textSecondary,
|
|
552
552
|
fontSize: 14,
|
|
553
553
|
fontFamily: "monospace"
|
|
554
554
|
},
|
|
555
555
|
emptySubtext: {
|
|
556
|
-
color: _sharedUi.
|
|
556
|
+
color: _sharedUi.night.color.textTertiary,
|
|
557
557
|
fontSize: 12,
|
|
558
558
|
fontFamily: "monospace",
|
|
559
559
|
marginTop: 8
|
|
@@ -562,8 +562,9 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
562
562
|
flexDirection: "column",
|
|
563
563
|
padding: 8,
|
|
564
564
|
borderBottomWidth: 1,
|
|
565
|
-
borderBottomColor: _sharedUi.
|
|
566
|
-
gap: 12
|
|
565
|
+
borderBottomColor: _sharedUi.night.color.border,
|
|
566
|
+
gap: 12,
|
|
567
|
+
marginBottom: 8
|
|
567
568
|
},
|
|
568
569
|
actionsRow: {
|
|
569
570
|
flexDirection: "row",
|
|
@@ -581,7 +582,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
581
582
|
actionButtonHeader: {
|
|
582
583
|
padding: 6,
|
|
583
584
|
borderRadius: 4,
|
|
584
|
-
backgroundColor: _sharedUi.
|
|
585
|
+
backgroundColor: _sharedUi.night.color.surfaceElevated
|
|
585
586
|
},
|
|
586
587
|
iconButton: {
|
|
587
588
|
padding: 6,
|
|
@@ -591,7 +592,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
591
592
|
},
|
|
592
593
|
actionLabel: {
|
|
593
594
|
fontSize: 8,
|
|
594
|
-
color: _sharedUi.
|
|
595
|
+
color: _sharedUi.night.color.textTertiary,
|
|
595
596
|
fontFamily: "monospace",
|
|
596
597
|
textTransform: "uppercase",
|
|
597
598
|
letterSpacing: 0.5
|
|
@@ -609,7 +610,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
609
610
|
flexShrink: 1,
|
|
610
611
|
flexBasis: "20%",
|
|
611
612
|
minWidth: 70,
|
|
612
|
-
backgroundColor: _sharedUi.
|
|
613
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
613
614
|
borderRadius: 8,
|
|
614
615
|
paddingVertical: 10,
|
|
615
616
|
paddingHorizontal: 12,
|
|
@@ -618,12 +619,12 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
618
619
|
statValue: {
|
|
619
620
|
fontSize: 18,
|
|
620
621
|
fontWeight: "800",
|
|
621
|
-
color: _sharedUi.
|
|
622
|
+
color: _sharedUi.night.color.text,
|
|
622
623
|
fontFamily: "monospace"
|
|
623
624
|
},
|
|
624
625
|
statLabel: {
|
|
625
626
|
fontSize: 10,
|
|
626
|
-
color: _sharedUi.
|
|
627
|
+
color: _sharedUi.night.color.textTertiary,
|
|
627
628
|
marginTop: 4,
|
|
628
629
|
fontFamily: "monospace",
|
|
629
630
|
textTransform: "uppercase",
|
|
@@ -635,11 +636,11 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
635
636
|
padding: 8,
|
|
636
637
|
gap: 8,
|
|
637
638
|
borderBottomWidth: 1,
|
|
638
|
-
borderBottomColor: _sharedUi.
|
|
639
|
+
borderBottomColor: _sharedUi.night.color.border
|
|
639
640
|
},
|
|
640
641
|
searchInput: {
|
|
641
642
|
flex: 1,
|
|
642
|
-
color: _sharedUi.
|
|
643
|
+
color: _sharedUi.night.color.text,
|
|
643
644
|
fontSize: 14,
|
|
644
645
|
fontFamily: "monospace"
|
|
645
646
|
},
|
|
@@ -647,7 +648,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
647
648
|
padding: 4
|
|
648
649
|
},
|
|
649
650
|
clearButtonText: {
|
|
650
|
-
color: _sharedUi.
|
|
651
|
+
color: _sharedUi.night.color.textTertiary,
|
|
651
652
|
fontSize: 18
|
|
652
653
|
},
|
|
653
654
|
closeSearchButton: {
|
|
@@ -655,7 +656,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
655
656
|
paddingVertical: 4
|
|
656
657
|
},
|
|
657
658
|
closeSearchText: {
|
|
658
|
-
color: _sharedUi.
|
|
659
|
+
color: _sharedUi.night.color.accent,
|
|
659
660
|
fontSize: 14,
|
|
660
661
|
fontWeight: "600",
|
|
661
662
|
fontFamily: "monospace"
|
|
@@ -664,7 +665,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
664
665
|
flex: 1
|
|
665
666
|
},
|
|
666
667
|
scrollContent: {
|
|
667
|
-
|
|
668
|
+
paddingBottom: 8
|
|
668
669
|
},
|
|
669
670
|
metaFooter: {
|
|
670
671
|
flexDirection: "row",
|
|
@@ -675,11 +676,11 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
675
676
|
paddingVertical: 16,
|
|
676
677
|
marginTop: 16,
|
|
677
678
|
borderTopWidth: 1,
|
|
678
|
-
borderTopColor: _sharedUi.
|
|
679
|
+
borderTopColor: _sharedUi.night.color.border
|
|
679
680
|
},
|
|
680
681
|
metaText: {
|
|
681
682
|
fontSize: 12,
|
|
682
|
-
color: _sharedUi.
|
|
683
|
+
color: _sharedUi.night.color.textSecondary,
|
|
683
684
|
fontFamily: "monospace"
|
|
684
685
|
},
|
|
685
686
|
sourceBadge: {
|
|
@@ -687,12 +688,12 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
687
688
|
paddingVertical: 2,
|
|
688
689
|
borderRadius: 999,
|
|
689
690
|
borderWidth: 1,
|
|
690
|
-
borderColor: _sharedUi.
|
|
691
|
-
backgroundColor: _sharedUi.
|
|
691
|
+
borderColor: _sharedUi.night.color.border,
|
|
692
|
+
backgroundColor: _sharedUi.night.color.surface
|
|
692
693
|
},
|
|
693
694
|
sourceText: {
|
|
694
695
|
fontSize: 11,
|
|
695
|
-
color: _sharedUi.
|
|
696
|
+
color: _sharedUi.night.color.textSecondary,
|
|
696
697
|
textTransform: "capitalize",
|
|
697
698
|
fontFamily: "monospace"
|
|
698
699
|
},
|
|
@@ -705,9 +706,9 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
705
706
|
justifyContent: "space-between",
|
|
706
707
|
padding: 12,
|
|
707
708
|
paddingHorizontal: 16,
|
|
708
|
-
backgroundColor: _sharedUi.
|
|
709
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
709
710
|
borderLeftWidth: 3,
|
|
710
|
-
borderLeftColor: _sharedUi.
|
|
711
|
+
borderLeftColor: _sharedUi.night.color.fillTertiary
|
|
711
712
|
},
|
|
712
713
|
groupHeaderLeft: {
|
|
713
714
|
flexDirection: "row",
|
|
@@ -718,7 +719,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
718
719
|
groupTitle: {
|
|
719
720
|
fontSize: 12,
|
|
720
721
|
fontWeight: "700",
|
|
721
|
-
color: _sharedUi.
|
|
722
|
+
color: _sharedUi.night.color.text,
|
|
722
723
|
fontFamily: "monospace",
|
|
723
724
|
textTransform: "uppercase",
|
|
724
725
|
letterSpacing: 0.8
|
|
@@ -741,19 +742,20 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
741
742
|
fontFamily: "monospace"
|
|
742
743
|
},
|
|
743
744
|
screensList: {
|
|
744
|
-
|
|
745
|
+
// Transparent so the night sheet's star field shows through.
|
|
746
|
+
backgroundColor: "transparent"
|
|
745
747
|
},
|
|
746
748
|
groupDescription: {
|
|
747
749
|
paddingHorizontal: 16,
|
|
748
750
|
paddingVertical: 8,
|
|
749
751
|
marginBottom: 8,
|
|
750
|
-
backgroundColor: _sharedUi.
|
|
752
|
+
backgroundColor: _sharedUi.night.color.surfaceElevated,
|
|
751
753
|
borderLeftWidth: 3,
|
|
752
|
-
borderLeftColor: _sharedUi.
|
|
754
|
+
borderLeftColor: _sharedUi.night.color.fillTertiary
|
|
753
755
|
},
|
|
754
756
|
groupDescriptionText: {
|
|
755
757
|
fontSize: 11,
|
|
756
|
-
color: _sharedUi.
|
|
758
|
+
color: _sharedUi.night.color.textSecondary,
|
|
757
759
|
fontFamily: "monospace",
|
|
758
760
|
lineHeight: 16
|
|
759
761
|
},
|
|
@@ -766,10 +768,10 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
766
768
|
justifyContent: "space-between",
|
|
767
769
|
paddingVertical: 10,
|
|
768
770
|
paddingHorizontal: 12,
|
|
769
|
-
backgroundColor: _sharedUi.
|
|
771
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
770
772
|
borderRadius: 6,
|
|
771
773
|
borderWidth: 1,
|
|
772
|
-
borderColor: _sharedUi.
|
|
774
|
+
borderColor: _sharedUi.night.color.border,
|
|
773
775
|
shadowColor: "#000",
|
|
774
776
|
shadowOffset: {
|
|
775
777
|
width: 0,
|
|
@@ -792,7 +794,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
792
794
|
screenName: {
|
|
793
795
|
fontSize: 13,
|
|
794
796
|
fontWeight: "600",
|
|
795
|
-
color: _sharedUi.
|
|
797
|
+
color: _sharedUi.night.color.text,
|
|
796
798
|
fontFamily: "monospace",
|
|
797
799
|
flex: 1
|
|
798
800
|
},
|
|
@@ -815,19 +817,19 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
815
817
|
headerActionButton: {
|
|
816
818
|
padding: 6,
|
|
817
819
|
borderRadius: 4,
|
|
818
|
-
backgroundColor: _sharedUi.
|
|
820
|
+
backgroundColor: _sharedUi.night.color.surfaceElevated,
|
|
819
821
|
borderWidth: 1,
|
|
820
|
-
borderColor: _sharedUi.
|
|
822
|
+
borderColor: _sharedUi.night.color.border,
|
|
821
823
|
alignItems: "center",
|
|
822
824
|
justifyContent: "center"
|
|
823
825
|
},
|
|
824
826
|
navigateButton: {
|
|
825
|
-
backgroundColor: _sharedUi.
|
|
826
|
-
borderColor: _sharedUi.
|
|
827
|
+
backgroundColor: _sharedUi.night.color.accentSoft,
|
|
828
|
+
borderColor: _sharedUi.night.color.accentBorder
|
|
827
829
|
},
|
|
828
830
|
navigateButtonText: {
|
|
829
831
|
fontSize: 12,
|
|
830
|
-
color: _sharedUi.
|
|
832
|
+
color: _sharedUi.night.color.accent,
|
|
831
833
|
fontFamily: "monospace",
|
|
832
834
|
fontWeight: "600"
|
|
833
835
|
}
|
|
@@ -43,7 +43,7 @@ function RouteEventDetail({
|
|
|
43
43
|
activeOpacity: 0.8,
|
|
44
44
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Navigation, {
|
|
45
45
|
size: 16,
|
|
46
|
-
color:
|
|
46
|
+
color: _sharedUi.night.color.onAccent
|
|
47
47
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
48
48
|
style: styles.goButtonText,
|
|
49
49
|
children: "Go to route"
|
|
@@ -55,7 +55,8 @@ function RouteEventDetail({
|
|
|
55
55
|
const styles = _reactNative.StyleSheet.create({
|
|
56
56
|
container: {
|
|
57
57
|
flex: 1,
|
|
58
|
-
|
|
58
|
+
// Transparent so the night sheet's star field shows through.
|
|
59
|
+
backgroundColor: "transparent"
|
|
59
60
|
},
|
|
60
61
|
scroll: {
|
|
61
62
|
flex: 1
|
|
@@ -66,23 +67,25 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
66
67
|
footer: {
|
|
67
68
|
paddingHorizontal: 16,
|
|
68
69
|
paddingVertical: 12,
|
|
69
|
-
|
|
70
|
+
// Transparent so the night sheet's star field shows through.
|
|
71
|
+
backgroundColor: "transparent",
|
|
70
72
|
borderTopWidth: 1,
|
|
71
|
-
borderTopColor: _sharedUi.
|
|
73
|
+
borderTopColor: _sharedUi.night.color.border
|
|
72
74
|
},
|
|
73
75
|
goButton: {
|
|
74
76
|
flexDirection: "row",
|
|
75
77
|
alignItems: "center",
|
|
76
78
|
justifyContent: "center",
|
|
77
79
|
gap: 8,
|
|
78
|
-
backgroundColor: _sharedUi.
|
|
80
|
+
backgroundColor: _sharedUi.night.color.accent,
|
|
79
81
|
paddingVertical: 12,
|
|
80
82
|
borderRadius: 8
|
|
81
83
|
},
|
|
82
84
|
goButtonText: {
|
|
83
85
|
fontSize: 13,
|
|
84
86
|
fontWeight: "600",
|
|
85
|
-
|
|
87
|
+
// Ink on a filled accent surface — the night accent takes dark ink.
|
|
88
|
+
color: _sharedUi.night.color.onAccent,
|
|
86
89
|
fontFamily: "monospace",
|
|
87
90
|
textTransform: "uppercase",
|
|
88
91
|
letterSpacing: 0.5
|
|
@@ -156,14 +156,14 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
156
156
|
},
|
|
157
157
|
detailLabel: {
|
|
158
158
|
fontSize: 10,
|
|
159
|
-
color: _sharedUi.
|
|
159
|
+
color: _sharedUi.night.color.textSecondary,
|
|
160
160
|
fontFamily: "monospace",
|
|
161
161
|
fontWeight: "600",
|
|
162
162
|
minWidth: 70
|
|
163
163
|
},
|
|
164
164
|
detailValue: {
|
|
165
165
|
fontSize: 11,
|
|
166
|
-
color: _sharedUi.
|
|
166
|
+
color: _sharedUi.night.color.text,
|
|
167
167
|
fontFamily: "monospace",
|
|
168
168
|
flex: 1
|
|
169
169
|
},
|
|
@@ -182,7 +182,7 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
182
182
|
},
|
|
183
183
|
dataViewerTitle: {
|
|
184
184
|
fontSize: 11,
|
|
185
|
-
color: _sharedUi.
|
|
185
|
+
color: _sharedUi.night.color.textSecondary,
|
|
186
186
|
fontFamily: "monospace",
|
|
187
187
|
fontWeight: "600"
|
|
188
188
|
}
|