@buoy-gg/shared-ui 7.0.3 → 7.0.5
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/colors/index.js +49 -0
- package/lib/commonjs/dataViewer/DataTreeActionBar.js +389 -0
- package/lib/commonjs/dataViewer/DataTreeActionDock.js +222 -0
- package/lib/commonjs/dataViewer/DataViewer.js +18 -3
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +227 -28
- package/lib/commonjs/dataViewer/index.js +88 -0
- package/lib/commonjs/dataViewer/jsonOps.js +320 -0
- package/lib/commonjs/dataViewer/lineDiff.js +285 -83
- package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +20 -5
- package/lib/commonjs/dataViewer/treeActions.js +167 -0
- package/lib/commonjs/env/EnvironmentSelector.js +2 -2
- package/lib/commonjs/env/EnvironmentSelectorInline.js +2 -2
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/icons/index.js +79 -3
- package/lib/commonjs/icons/lucide-icons-original-full.js +5 -1
- package/lib/commonjs/icons/lucide-icons.js +59 -2
- package/lib/commonjs/index.js +35 -0
- package/lib/commonjs/settings/components/BubbleSettingsSection.js +21 -19
- package/lib/commonjs/storage/devToolsStorageKeys.js +6 -3
- package/lib/commonjs/ui/components/Badge.js +2 -0
- package/lib/commonjs/ui/components/CompactRow.js +7 -0
- package/lib/commonjs/ui/components/CopyButton.js +27 -4
- package/lib/commonjs/ui/components/DevToolsCard.js +11 -0
- package/lib/commonjs/ui/components/DynamicFilterView.js +8 -1
- package/lib/commonjs/ui/components/EmptyState.js +12 -5
- package/lib/commonjs/ui/components/ErrorBoundary.js +3 -2
- package/lib/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.js +63 -11
- package/lib/commonjs/ui/components/ExpandableSection.js +4 -3
- package/lib/commonjs/ui/components/ExpandableSectionHeader.js +2 -1
- package/lib/commonjs/ui/components/FilterViewPattern.js +8 -7
- package/lib/commonjs/ui/components/ListItem.js +7 -5
- package/lib/commonjs/ui/components/PowerToggleButton.js +4 -1
- package/lib/commonjs/ui/components/TabSelector.js +3 -0
- package/lib/commonjs/ui/console/CyberpunkConsoleSection.js +1 -1
- package/lib/commonjs/ui/console/GalaxyButton.js +1 -1
- package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +2 -2
- package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +28 -6
- package/lib/commonjs/ui/gameUI/constants/macOSDesignSystemColors.js +22 -4
- package/lib/commonjs/utils/index.js +25 -0
- package/lib/commonjs/utils/reloadApp.js +144 -0
- package/lib/module/colors/index.js +21 -0
- package/lib/module/dataViewer/DataTreeActionBar.js +384 -0
- package/lib/module/dataViewer/DataTreeActionDock.js +218 -0
- package/lib/module/dataViewer/DataViewer.js +18 -3
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +228 -30
- package/lib/module/dataViewer/index.js +16 -1
- package/lib/module/dataViewer/jsonOps.js +311 -0
- package/lib/module/dataViewer/lineDiff.js +284 -82
- package/lib/module/dataViewer/tree/TreeDiffViewer.js +20 -5
- package/lib/module/dataViewer/treeActions.js +161 -0
- package/lib/module/env/EnvironmentSelector.js +2 -2
- package/lib/module/env/EnvironmentSelectorInline.js +2 -2
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/icons/index.js +10 -1
- package/lib/module/icons/lucide-icons-original-full.js +5 -1
- package/lib/module/icons/lucide-icons.js +56 -0
- package/lib/module/index.js +4 -0
- package/lib/module/settings/components/BubbleSettingsSection.js +21 -19
- package/lib/module/storage/devToolsStorageKeys.js +6 -3
- package/lib/module/ui/components/Badge.js +2 -0
- package/lib/module/ui/components/CompactRow.js +7 -0
- package/lib/module/ui/components/CopyButton.js +29 -6
- package/lib/module/ui/components/DevToolsCard.js +11 -0
- package/lib/module/ui/components/DynamicFilterView.js +8 -1
- package/lib/module/ui/components/EmptyState.js +12 -5
- package/lib/module/ui/components/ErrorBoundary.js +3 -2
- package/lib/module/ui/components/EventHistoryViewer/EventHistoryViewer.js +63 -11
- package/lib/module/ui/components/ExpandableSection.js +4 -3
- package/lib/module/ui/components/ExpandableSectionHeader.js +2 -1
- package/lib/module/ui/components/FilterViewPattern.js +9 -7
- package/lib/module/ui/components/ListItem.js +7 -5
- package/lib/module/ui/components/PowerToggleButton.js +4 -1
- package/lib/module/ui/components/TabSelector.js +3 -0
- package/lib/module/ui/console/CyberpunkConsoleSection.js +1 -1
- package/lib/module/ui/console/GalaxyButton.js +1 -1
- package/lib/module/ui/gameUI/components/GameUICompactStats.js +2 -2
- package/lib/module/ui/gameUI/constants/gameUIColors.js +27 -6
- package/lib/module/ui/gameUI/constants/macOSDesignSystemColors.js +19 -2
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/reloadApp.js +137 -0
- package/lib/typescript/commonjs/colors/index.d.ts +22 -0
- package/lib/typescript/commonjs/colors/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts +53 -0
- package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts +33 -0
- package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts +14 -1
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts +30 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/__tests__/jsonOps.test.d.ts +19 -0
- package/lib/typescript/commonjs/dataViewer/__tests__/jsonOps.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/index.d.ts +5 -1
- package/lib/typescript/commonjs/dataViewer/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/jsonOps.d.ts +124 -0
- package/lib/typescript/commonjs/dataViewer/jsonOps.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts +27 -0
- package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts +8 -1
- package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/treeActions.d.ts +83 -0
- package/lib/typescript/commonjs/dataViewer/treeActions.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/icons/index.d.ts +6 -1
- package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/lucide-icons-original-full.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/lucide-icons.d.ts +9 -0
- package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/settings/components/BubbleSettingsSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +5 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts +7 -1
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/EmptyState.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ErrorBoundary.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts +23 -7
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ExpandableSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ExpandableSectionHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FilterViewPattern.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ListItem.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +36 -30
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts +5 -0
- package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/index.d.ts +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/reloadApp.d.ts +68 -0
- package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +1 -0
- package/lib/typescript/module/colors/index.d.ts +22 -0
- package/lib/typescript/module/colors/index.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts +53 -0
- package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts +33 -0
- package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/DataViewer.d.ts +14 -1
- package/lib/typescript/module/dataViewer/DataViewer.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts +30 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/__tests__/jsonOps.test.d.ts +19 -0
- package/lib/typescript/module/dataViewer/__tests__/jsonOps.test.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/index.d.ts +5 -1
- package/lib/typescript/module/dataViewer/index.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/jsonOps.d.ts +124 -0
- package/lib/typescript/module/dataViewer/jsonOps.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/lineDiff.d.ts +27 -0
- package/lib/typescript/module/dataViewer/lineDiff.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts +8 -1
- package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/treeActions.d.ts +83 -0
- package/lib/typescript/module/dataViewer/treeActions.d.ts.map +1 -0
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/icons/index.d.ts +6 -1
- package/lib/typescript/module/icons/index.d.ts.map +1 -1
- package/lib/typescript/module/icons/lucide-icons-original-full.d.ts.map +1 -1
- package/lib/typescript/module/icons/lucide-icons.d.ts +9 -0
- package/lib/typescript/module/icons/lucide-icons.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/settings/components/BubbleSettingsSection.d.ts.map +1 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +5 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/CopyButton.d.ts +7 -1
- package/lib/typescript/module/ui/components/CopyButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/EmptyState.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ErrorBoundary.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts +23 -7
- package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ExpandableSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ExpandableSectionHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FilterViewPattern.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ListItem.d.ts.map +1 -1
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +36 -30
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts +5 -0
- package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +1 -1
- package/lib/typescript/module/utils/index.d.ts +1 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/reloadApp.d.ts +68 -0
- package/lib/typescript/module/utils/reloadApp.d.ts.map +1 -0
- package/package.json +15 -4
- package/lib/commonjs/icons/ImageOverlayIcon.js +0 -142
- package/lib/module/icons/ImageOverlayIcon.js +0 -137
- package/lib/typescript/commonjs/icons/ImageOverlayIcon.d.ts +0 -14
- package/lib/typescript/commonjs/icons/ImageOverlayIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/ImageOverlayIcon.d.ts +0 -14
- package/lib/typescript/module/icons/ImageOverlayIcon.d.ts.map +0 -1
|
@@ -7,6 +7,16 @@ export * from "./primitives/index.js";
|
|
|
7
7
|
export { NetworkIcon, NETWORK_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
8
8
|
export { EnvIcon, ENV_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
9
9
|
|
|
10
|
+
// Buoy Icon Format icons: authored once in shared/icons/*.json and generated
|
|
11
|
+
// into core, so these are the same artwork the Flutter build renders. Tool
|
|
12
|
+
// packages re-export from here rather than drawing their own copies.
|
|
13
|
+
export { ConsoleIcon, CONSOLE_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
14
|
+
export { ImagesIcon, IMAGES_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
15
|
+
export { ImpersonateIcon, IMPERSONATE_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
16
|
+
export { ImageOverlayIcon, IMAGE_OVERLAY_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
17
|
+
export { ZustandIcon, ZUSTAND_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
18
|
+
export { JotaiIcon, JOTAI_ICON_COLOR } from "@buoy-gg/floating-tools-core";
|
|
19
|
+
|
|
10
20
|
// Export custom icons
|
|
11
21
|
export { EnvLaptopIcon, LaptopIcon } from "./EnvLaptopIcon.js";
|
|
12
22
|
export { ReactQueryIcon } from "./ReactQueryIcon.js";
|
|
@@ -17,7 +27,6 @@ export { RouteMapIcon, RouteIcon, NavigationIcon } from "./RouteMapIcon.js";
|
|
|
17
27
|
export { StackPulseIcon, RenderPulseIcon, HighlightUpdatesIcon } from "./StackPulseIcon.js";
|
|
18
28
|
export { RenderCountIcon } from "./RenderCountIcon.js";
|
|
19
29
|
export { BenchmarkIcon } from "./BenchmarkIcon.js";
|
|
20
|
-
export { ImageOverlayIcon } from "./ImageOverlayIcon.js";
|
|
21
30
|
export { IconBackground } from "./IconBackground.js";
|
|
22
31
|
|
|
23
32
|
// Export lucide icons
|
|
@@ -951,7 +951,11 @@ export const GlobeIcon = ({
|
|
|
951
951
|
strokeWidth = 2,
|
|
952
952
|
...props
|
|
953
953
|
}) => {
|
|
954
|
-
color = gameUIColors.env
|
|
954
|
+
// NOTE: this used to reassign `color = gameUIColors.env` right here, throwing
|
|
955
|
+
// away whatever the caller passed. The default above already covers the
|
|
956
|
+
// "network tool green" case; the reassignment only broke every caller that
|
|
957
|
+
// asked for something else (e.g. the network empty state, which asks for
|
|
958
|
+
// muted grey and was getting a green globe on the white canvas).
|
|
955
959
|
const scale = size / 24;
|
|
956
960
|
const globeSize = 18 * scale;
|
|
957
961
|
return /*#__PURE__*/_jsxs(View, {
|
|
@@ -530,6 +530,62 @@ export const Pin = ({
|
|
|
530
530
|
strokeWidth: strokeWidth
|
|
531
531
|
})]
|
|
532
532
|
});
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Bookmark — the "saved request" glyph (Network tool's favorites).
|
|
536
|
+
*
|
|
537
|
+
* Lucide's Star would be the obvious choice, but these icons are composed from
|
|
538
|
+
* View-based `Line`/`Circle`/`Rect` primitives (there is no `Path`), so a
|
|
539
|
+
* 5-point star isn't drawable here. A bookmark is five straight segments and
|
|
540
|
+
* reads as "kept for later" at 10px, which is what the glyph has to say.
|
|
541
|
+
*/
|
|
542
|
+
export const Bookmark = ({
|
|
543
|
+
size = 24,
|
|
544
|
+
color = "currentColor",
|
|
545
|
+
strokeWidth = 2,
|
|
546
|
+
...props
|
|
547
|
+
}) => /*#__PURE__*/_jsxs(Svg, {
|
|
548
|
+
width: size,
|
|
549
|
+
height: size,
|
|
550
|
+
viewBox: "0 0 24 24",
|
|
551
|
+
...props,
|
|
552
|
+
children: [/*#__PURE__*/_jsx(Line, {
|
|
553
|
+
x1: 5,
|
|
554
|
+
y1: 3,
|
|
555
|
+
x2: 19,
|
|
556
|
+
y2: 3,
|
|
557
|
+
stroke: color,
|
|
558
|
+
strokeWidth: strokeWidth
|
|
559
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
560
|
+
x1: 5,
|
|
561
|
+
y1: 3,
|
|
562
|
+
x2: 5,
|
|
563
|
+
y2: 21,
|
|
564
|
+
stroke: color,
|
|
565
|
+
strokeWidth: strokeWidth
|
|
566
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
567
|
+
x1: 19,
|
|
568
|
+
y1: 3,
|
|
569
|
+
x2: 19,
|
|
570
|
+
y2: 21,
|
|
571
|
+
stroke: color,
|
|
572
|
+
strokeWidth: strokeWidth
|
|
573
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
574
|
+
x1: 5,
|
|
575
|
+
y1: 21,
|
|
576
|
+
x2: 12,
|
|
577
|
+
y2: 15,
|
|
578
|
+
stroke: color,
|
|
579
|
+
strokeWidth: strokeWidth
|
|
580
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
581
|
+
x1: 19,
|
|
582
|
+
y1: 21,
|
|
583
|
+
x2: 12,
|
|
584
|
+
y2: 15,
|
|
585
|
+
stroke: color,
|
|
586
|
+
strokeWidth: strokeWidth
|
|
587
|
+
})]
|
|
588
|
+
});
|
|
533
589
|
export const EyeOff = ({
|
|
534
590
|
size = 24,
|
|
535
591
|
color = "currentColor",
|
package/lib/module/index.js
CHANGED
|
@@ -26,6 +26,8 @@ parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath,
|
|
|
26
26
|
loadOptionalModule, getCachedOptionalModule,
|
|
27
27
|
// Render-commit capture bridge (provider: highlight-updates, consumer: perf-monitor)
|
|
28
28
|
setRenderCaptureProvider, getRenderCaptureProvider,
|
|
29
|
+
// JS-bundle reload (core's `app` adapter + perf-monitor's batch runner)
|
|
30
|
+
reloadApp, scheduleReloadApp, resolveReloadStrategy, REMOTE_RELOAD_DELAY_MS,
|
|
29
31
|
// Subscribable base class for self-managing listeners
|
|
30
32
|
Subscribable,
|
|
31
33
|
// Subscriber count notifier for cross-package notifications
|
|
@@ -54,6 +56,8 @@ export { useSafeAreaInsets, useFilterManager, useDeviceInfo, getDeviceInfo, logD
|
|
|
54
56
|
export { JsModal } from "./JsModal.js";
|
|
55
57
|
// game ui colors
|
|
56
58
|
export { gameUIColors, buoyColors } from "./ui/gameUI/constants/gameUIColors.js";
|
|
59
|
+
// Runtime re-tint hook — only the desktop dashboard's theme switcher uses it.
|
|
60
|
+
export { refreshGameUIColors } from "./ui/gameUI/constants/gameUIColors.js";
|
|
57
61
|
export { macOSColors } from "./ui/gameUI/constants/macOSDesignSystemColors.js";
|
|
58
62
|
export { dialColors } from "./ui/gameUI/constants/gameUIColors.js";
|
|
59
63
|
//EnvironmentIndicator
|
|
@@ -6,6 +6,8 @@ import { useState, useEffect } from "react";
|
|
|
6
6
|
import { CyberpunkSectionButton } from "../../ui/console/CyberpunkSectionButton.js";
|
|
7
7
|
import { devToolsStorageKeys } from "../../storage/devToolsStorageKeys.js";
|
|
8
8
|
import { persistentStorage } from "../../utils/persistentStorage.js";
|
|
9
|
+
import { macOSColors } from "../../ui/gameUI/constants/macOSDesignSystemColors.js";
|
|
10
|
+
import { buoyColors } from "../../ui/gameUI/constants/gameUIColors.js";
|
|
9
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
12
|
const STORAGE_KEY = devToolsStorageKeys.bubble.settings();
|
|
11
13
|
const USER_PREFERENCES_KEY = devToolsStorageKeys.bubble.userPreferences();
|
|
@@ -206,7 +208,7 @@ export function BubbleSettingsDetail({
|
|
|
206
208
|
false: "#4B5563",
|
|
207
209
|
true: "#10B981"
|
|
208
210
|
},
|
|
209
|
-
thumbColor: settings[config.key] ? "#fff" :
|
|
211
|
+
thumbColor: settings[config.key] ? "#fff" : buoyColors.textSecondary
|
|
210
212
|
})]
|
|
211
213
|
}, config.key))
|
|
212
214
|
}), /*#__PURE__*/_jsxs(View, {
|
|
@@ -215,7 +217,7 @@ export function BubbleSettingsDetail({
|
|
|
215
217
|
style: styles.noteContainer,
|
|
216
218
|
children: [/*#__PURE__*/_jsx(EyeOff, {
|
|
217
219
|
size: 16,
|
|
218
|
-
color:
|
|
220
|
+
color: buoyColors.textSecondary
|
|
219
221
|
}), /*#__PURE__*/_jsx(Text, {
|
|
220
222
|
style: styles.noteText,
|
|
221
223
|
children: "User status indicator is always visible and cannot be disabled"
|
|
@@ -244,7 +246,7 @@ const styles = StyleSheet.create({
|
|
|
244
246
|
flexGrow: 1
|
|
245
247
|
},
|
|
246
248
|
sectionCard: {
|
|
247
|
-
backgroundColor:
|
|
249
|
+
backgroundColor: buoyColors.input,
|
|
248
250
|
borderRadius: 8,
|
|
249
251
|
padding: 16,
|
|
250
252
|
flexDirection: "row",
|
|
@@ -264,25 +266,25 @@ const styles = StyleSheet.create({
|
|
|
264
266
|
flex: 1
|
|
265
267
|
},
|
|
266
268
|
title: {
|
|
267
|
-
color:
|
|
269
|
+
color: buoyColors.text,
|
|
268
270
|
fontSize: 14,
|
|
269
271
|
fontWeight: "600",
|
|
270
272
|
marginBottom: 2
|
|
271
273
|
},
|
|
272
274
|
subtitle: {
|
|
273
|
-
color:
|
|
275
|
+
color: buoyColors.textSecondary,
|
|
274
276
|
fontSize: 12
|
|
275
277
|
},
|
|
276
278
|
chevron: {
|
|
277
|
-
color:
|
|
279
|
+
color: macOSColors.text.icon,
|
|
278
280
|
fontSize: 20
|
|
279
281
|
},
|
|
280
282
|
detailContainer: {
|
|
281
283
|
flex: 1,
|
|
282
|
-
backgroundColor:
|
|
284
|
+
backgroundColor: buoyColors.card
|
|
283
285
|
},
|
|
284
286
|
loadingText: {
|
|
285
|
-
color:
|
|
287
|
+
color: buoyColors.textSecondary,
|
|
286
288
|
fontSize: 14,
|
|
287
289
|
textAlign: "center",
|
|
288
290
|
marginTop: 20
|
|
@@ -290,16 +292,16 @@ const styles = StyleSheet.create({
|
|
|
290
292
|
header: {
|
|
291
293
|
padding: 16,
|
|
292
294
|
borderBottomWidth: 1,
|
|
293
|
-
borderBottomColor: "rgba(
|
|
295
|
+
borderBottomColor: "rgba(128, 128, 128, 0.2)"
|
|
294
296
|
},
|
|
295
297
|
headerTitle: {
|
|
296
|
-
color:
|
|
298
|
+
color: buoyColors.text,
|
|
297
299
|
fontSize: 16,
|
|
298
300
|
fontWeight: "600",
|
|
299
301
|
marginBottom: 4
|
|
300
302
|
},
|
|
301
303
|
headerDescription: {
|
|
302
|
-
color:
|
|
304
|
+
color: buoyColors.textSecondary,
|
|
303
305
|
fontSize: 12
|
|
304
306
|
},
|
|
305
307
|
settingsList: {
|
|
@@ -310,7 +312,7 @@ const styles = StyleSheet.create({
|
|
|
310
312
|
alignItems: "center",
|
|
311
313
|
paddingVertical: 12,
|
|
312
314
|
borderBottomWidth: 1,
|
|
313
|
-
borderBottomColor: "rgba(
|
|
315
|
+
borderBottomColor: "rgba(128, 128, 128, 0.1)"
|
|
314
316
|
},
|
|
315
317
|
settingIconContainer: {
|
|
316
318
|
width: 32,
|
|
@@ -324,13 +326,13 @@ const styles = StyleSheet.create({
|
|
|
324
326
|
marginRight: 12
|
|
325
327
|
},
|
|
326
328
|
settingLabel: {
|
|
327
|
-
color:
|
|
329
|
+
color: buoyColors.text,
|
|
328
330
|
fontSize: 14,
|
|
329
331
|
fontWeight: "500",
|
|
330
332
|
marginBottom: 2
|
|
331
333
|
},
|
|
332
334
|
settingDescription: {
|
|
333
|
-
color:
|
|
335
|
+
color: macOSColors.text.icon,
|
|
334
336
|
fontSize: 11
|
|
335
337
|
},
|
|
336
338
|
indicator: {
|
|
@@ -341,7 +343,7 @@ const styles = StyleSheet.create({
|
|
|
341
343
|
footer: {
|
|
342
344
|
padding: 16,
|
|
343
345
|
borderTopWidth: 1,
|
|
344
|
-
borderTopColor: "rgba(
|
|
346
|
+
borderTopColor: "rgba(128, 128, 128, 0.2)"
|
|
345
347
|
},
|
|
346
348
|
noteContainer: {
|
|
347
349
|
flexDirection: "row",
|
|
@@ -350,12 +352,12 @@ const styles = StyleSheet.create({
|
|
|
350
352
|
marginBottom: 8
|
|
351
353
|
},
|
|
352
354
|
noteText: {
|
|
353
|
-
color:
|
|
355
|
+
color: buoyColors.textSecondary,
|
|
354
356
|
fontSize: 12,
|
|
355
357
|
flex: 1
|
|
356
358
|
},
|
|
357
359
|
restartNote: {
|
|
358
|
-
color:
|
|
360
|
+
color: macOSColors.text.icon,
|
|
359
361
|
fontSize: 11,
|
|
360
362
|
fontStyle: "italic"
|
|
361
363
|
},
|
|
@@ -364,10 +366,10 @@ const styles = StyleSheet.create({
|
|
|
364
366
|
paddingVertical: 8,
|
|
365
367
|
marginTop: 8,
|
|
366
368
|
borderTopWidth: 1,
|
|
367
|
-
borderTopColor: "rgba(
|
|
369
|
+
borderTopColor: "rgba(128, 128, 128, 0.12)"
|
|
368
370
|
},
|
|
369
371
|
sectionTitle: {
|
|
370
|
-
color:
|
|
372
|
+
color: buoyColors.textSecondary,
|
|
371
373
|
fontSize: 12,
|
|
372
374
|
fontWeight: "600",
|
|
373
375
|
letterSpacing: 0.5,
|
|
@@ -95,8 +95,6 @@ export const devToolsStorageKeys = {
|
|
|
95
95
|
preferences: () => `${devToolsStorageKeys.storage.root()}_preferences`,
|
|
96
96
|
activeTab: () => `${devToolsStorageKeys.storage.root()}_active_tab`,
|
|
97
97
|
isMonitoring: () => `${devToolsStorageKeys.storage.root()}_is_monitoring`,
|
|
98
|
-
detailView: () => `${devToolsStorageKeys.storage.root()}_detail_view`,
|
|
99
|
-
// 'current' | 'diff'
|
|
100
98
|
diffViewerMode: () => `${devToolsStorageKeys.storage.root()}_diff_viewer_mode` // 'split' | 'tree'
|
|
101
99
|
},
|
|
102
100
|
/**
|
|
@@ -123,7 +121,12 @@ export const devToolsStorageKeys = {
|
|
|
123
121
|
ignoredDomains: () => `${devToolsStorageKeys.network.root()}_ignored_domains`,
|
|
124
122
|
ignoredUrls: () => `${devToolsStorageKeys.network.root()}_ignored_urls`,
|
|
125
123
|
preferences: () => `${devToolsStorageKeys.network.root()}_preferences`,
|
|
126
|
-
copyOptions: () => `${devToolsStorageKeys.network.root()}_copy_options
|
|
124
|
+
copyOptions: () => `${devToolsStorageKeys.network.root()}_copy_options`,
|
|
125
|
+
/**
|
|
126
|
+
* Pinned + saved requests (snapshots, not IDs — request IDs are
|
|
127
|
+
* per-runtime counters and collide across app launches).
|
|
128
|
+
*/
|
|
129
|
+
saved: () => `${devToolsStorageKeys.network.root()}_saved`
|
|
127
130
|
},
|
|
128
131
|
/**
|
|
129
132
|
* Route events-related storage keys
|
|
@@ -204,6 +204,8 @@ const styles = StyleSheet.create({
|
|
|
204
204
|
alignItems: "center"
|
|
205
205
|
},
|
|
206
206
|
methodBadge: {
|
|
207
|
+
// Fixed width keeps the URL column aligned down the list whether or not
|
|
208
|
+
// the badge still has a chip around it.
|
|
207
209
|
minWidth: 45,
|
|
208
210
|
alignItems: "center"
|
|
209
211
|
},
|
|
@@ -114,12 +114,19 @@ const styles = StyleSheet.create({
|
|
|
114
114
|
borderRadius: 8,
|
|
115
115
|
borderWidth: 1,
|
|
116
116
|
borderColor: buoyColors.border + "40",
|
|
117
|
+
// …separated by a single hairline instead of four borders per row.
|
|
118
|
+
// Declared after borderWidth so the specific side wins on the chat path.
|
|
119
|
+
borderBottomWidth: 1,
|
|
120
|
+
borderBottomColor: buoyColors.border + "40",
|
|
117
121
|
padding: 12,
|
|
122
|
+
paddingHorizontal: 12,
|
|
118
123
|
transform: [{
|
|
119
124
|
scale: 1
|
|
120
125
|
}]
|
|
121
126
|
},
|
|
122
127
|
selectedRow: {
|
|
128
|
+
// Neutral fill, no outline, no lift — the same selection language as the
|
|
129
|
+
// sidebar. The classic path keeps its tinted, scaled, glowing card.
|
|
123
130
|
backgroundColor: buoyColors.primary + "15",
|
|
124
131
|
borderColor: buoyColors.primary + "50",
|
|
125
132
|
transform: [{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useState, useRef, useCallback, memo, useEffect } from "react";
|
|
4
|
-
import { TouchableOpacity, StyleSheet } from "react-native";
|
|
4
|
+
import { Text, TouchableOpacity, StyleSheet } from "react-native";
|
|
5
5
|
import { copyToClipboard } from "../../clipboard/copyToClipboard.js";
|
|
6
6
|
import { gameUIColors } from "../gameUI/constants/gameUIColors.js";
|
|
7
7
|
import { Copy, CheckCircle2, AlertTriangle, Trash2 } from "../../icons/lucide-icons.js";
|
|
@@ -12,7 +12,7 @@ import { persistentStorage } from "../../utils/persistentStorage.js";
|
|
|
12
12
|
import { useHintsDisabled } from "../../context/index.js";
|
|
13
13
|
import { ProUpgradeModal } from "../../license/index.js";
|
|
14
14
|
import { useIsPro } from "@buoy-gg/license";
|
|
15
|
-
import { jsx as _jsx,
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
16
|
/**
|
|
17
17
|
* Reusable copy button component with visual feedback
|
|
18
18
|
* Shows different icons for idle, success, and error states
|
|
@@ -55,6 +55,8 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
55
55
|
isFocused = false,
|
|
56
56
|
size = 16,
|
|
57
57
|
buttonStyle,
|
|
58
|
+
label,
|
|
59
|
+
labelStyle,
|
|
58
60
|
onCopySuccess,
|
|
59
61
|
onCopyError,
|
|
60
62
|
feedbackDuration = 1500,
|
|
@@ -176,7 +178,7 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
176
178
|
});
|
|
177
179
|
};
|
|
178
180
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
179
|
-
children: [/*#__PURE__*/
|
|
181
|
+
children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
180
182
|
...touchableProps,
|
|
181
183
|
style: [styles.button, buttonStyle],
|
|
182
184
|
onPress: copyState === "idle" || !isPro ? handlePress : undefined,
|
|
@@ -189,7 +191,12 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
189
191
|
},
|
|
190
192
|
accessibilityLabel: copyState === "idle" ? "Copy to clipboard" : copyState === "success" ? "Copied to clipboard" : "Failed to copy",
|
|
191
193
|
accessibilityRole: "button",
|
|
192
|
-
children: renderIcon()
|
|
194
|
+
children: [renderIcon(), label ? /*#__PURE__*/_jsx(Text, {
|
|
195
|
+
style: [styles.label, {
|
|
196
|
+
color: getColor()
|
|
197
|
+
}, labelStyle],
|
|
198
|
+
children: label
|
|
199
|
+
}) : null]
|
|
193
200
|
}), /*#__PURE__*/_jsx(ClipboardHintBanner, {
|
|
194
201
|
visible: showHint,
|
|
195
202
|
onAcknowledge: handleHintAcknowledge
|
|
@@ -204,7 +211,15 @@ const styles = StyleSheet.create({
|
|
|
204
211
|
button: {
|
|
205
212
|
padding: 4,
|
|
206
213
|
justifyContent: "center",
|
|
207
|
-
alignItems: "center"
|
|
214
|
+
alignItems: "center",
|
|
215
|
+
// Only relevant when a `label` is present; a bare icon button has one
|
|
216
|
+
// child, so the row direction and gap cost it nothing.
|
|
217
|
+
flexDirection: "row",
|
|
218
|
+
gap: 7
|
|
219
|
+
},
|
|
220
|
+
label: {
|
|
221
|
+
fontSize: 12.5,
|
|
222
|
+
fontWeight: "600"
|
|
208
223
|
}
|
|
209
224
|
});
|
|
210
225
|
|
|
@@ -268,7 +283,15 @@ const clearStyles = StyleSheet.create({
|
|
|
268
283
|
button: {
|
|
269
284
|
padding: 4,
|
|
270
285
|
justifyContent: "center",
|
|
271
|
-
alignItems: "center"
|
|
286
|
+
alignItems: "center",
|
|
287
|
+
// Only relevant when a `label` is present; a bare icon button has one
|
|
288
|
+
// child, so the row direction and gap cost it nothing.
|
|
289
|
+
flexDirection: "row",
|
|
290
|
+
gap: 7
|
|
291
|
+
},
|
|
292
|
+
label: {
|
|
293
|
+
fontSize: 12.5,
|
|
294
|
+
fontWeight: "600"
|
|
272
295
|
},
|
|
273
296
|
disabled: {
|
|
274
297
|
opacity: 0.4
|
|
@@ -74,6 +74,11 @@ export function DevToolsCard({
|
|
|
74
74
|
})
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* A bordered tile in a gutter. `CompactRow` is the other row primitive; keep the
|
|
80
|
+
* two in step.
|
|
81
|
+
*/
|
|
77
82
|
const styles = StyleSheet.create({
|
|
78
83
|
wrapper: {
|
|
79
84
|
marginHorizontal: DEVTOOLS_CARD_CONSTANTS.marginHorizontal,
|
|
@@ -84,10 +89,16 @@ const styles = StyleSheet.create({
|
|
|
84
89
|
borderRadius: DEVTOOLS_CARD_CONSTANTS.borderRadius,
|
|
85
90
|
borderWidth: DEVTOOLS_CARD_CONSTANTS.borderWidth,
|
|
86
91
|
borderColor: buoyColors.border + "40",
|
|
92
|
+
// The separator. On classic this just re-states the full outline; on chat
|
|
93
|
+
// it is the ONLY edge the row has.
|
|
94
|
+
borderBottomWidth: 1,
|
|
95
|
+
borderBottomColor: buoyColors.border + "40",
|
|
87
96
|
padding: DEVTOOLS_CARD_CONSTANTS.padding,
|
|
97
|
+
paddingHorizontal: DEVTOOLS_CARD_CONSTANTS.padding,
|
|
88
98
|
minHeight: DEVTOOLS_CARD_CONSTANTS.minHeight
|
|
89
99
|
},
|
|
90
100
|
selectedCard: {
|
|
101
|
+
// Neutral grey fill, no tinted outline and no lift — see CompactRow.
|
|
91
102
|
backgroundColor: buoyColors.primary + "15",
|
|
92
103
|
borderColor: buoyColors.primary + "50",
|
|
93
104
|
shadowColor: buoyColors.primary,
|
|
@@ -381,7 +381,14 @@ const styles = StyleSheet.create({
|
|
|
381
381
|
borderRadius: 8,
|
|
382
382
|
borderWidth: 1
|
|
383
383
|
},
|
|
384
|
+
/**
|
|
385
|
+
* Selection is marked with a 2px accent outline. Border width stays 1 so
|
|
386
|
+
* selecting a
|
|
387
|
+
* tile doesn't shift the grid by a pixel.
|
|
388
|
+
*/
|
|
384
389
|
tabButtonActive: {
|
|
390
|
+
// White THUMB, not a grey one — the INACTIVE tab is already
|
|
391
|
+
// `buoyColors.hover` here, so a grey active state would be invisible.
|
|
385
392
|
backgroundColor: buoyColors.primary + "20",
|
|
386
393
|
borderColor: buoyColors.primary,
|
|
387
394
|
borderWidth: 2
|
|
@@ -444,7 +451,7 @@ const styles = StyleSheet.create({
|
|
|
444
451
|
backgroundColor: buoyColors.primary + "33",
|
|
445
452
|
borderColor: buoyColors.primary,
|
|
446
453
|
borderWidth: 2,
|
|
447
|
-
// Subtle glow effect like web
|
|
454
|
+
// Subtle glow effect like web — no glows on a light surface.
|
|
448
455
|
shadowColor: buoyColors.primary,
|
|
449
456
|
shadowOffset: {
|
|
450
457
|
width: 0,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet, Text, View, TouchableOpacity } from "react-native";
|
|
4
|
+
import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
|
|
4
5
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
6
|
/**
|
|
6
7
|
* Reusable empty state component for consistent empty/no-data displays
|
|
@@ -10,7 +11,7 @@ export function EmptyState({
|
|
|
10
11
|
description,
|
|
11
12
|
icon: Icon,
|
|
12
13
|
iconSize = 48,
|
|
13
|
-
iconColor =
|
|
14
|
+
iconColor = macOSColors.border.hover,
|
|
14
15
|
action,
|
|
15
16
|
variant = "default",
|
|
16
17
|
style
|
|
@@ -87,11 +88,11 @@ const styles = StyleSheet.create({
|
|
|
87
88
|
maxWidth: 300
|
|
88
89
|
},
|
|
89
90
|
cardVariant: {
|
|
90
|
-
backgroundColor: "rgba(
|
|
91
|
+
backgroundColor: "rgba(128, 128, 128, 0.06)",
|
|
91
92
|
padding: 32,
|
|
92
93
|
borderRadius: 8,
|
|
93
94
|
borderWidth: 1,
|
|
94
|
-
borderColor: "rgba(
|
|
95
|
+
borderColor: "rgba(128, 128, 128, 0.1)"
|
|
95
96
|
},
|
|
96
97
|
minimalVariant: {
|
|
97
98
|
padding: 16
|
|
@@ -100,14 +101,20 @@ const styles = StyleSheet.create({
|
|
|
100
101
|
marginBottom: 16
|
|
101
102
|
},
|
|
102
103
|
title: {
|
|
103
|
-
color:
|
|
104
|
+
color: macOSColors.text.icon,
|
|
104
105
|
fontSize: 16,
|
|
105
106
|
fontWeight: "500",
|
|
106
107
|
textAlign: "center",
|
|
107
108
|
marginBottom: 8
|
|
108
109
|
},
|
|
109
110
|
description: {
|
|
110
|
-
|
|
111
|
+
// ⚠️ KNOWN LOW CONTRAST. This reads a BORDER token — border.hover is tuned
|
|
112
|
+
// to be a faint LINE, so as text it lands at ~2.8:1 on the near-black
|
|
113
|
+
// canvas, under WCAG AA. `macOSColors.text.muted` is the real tertiary-text
|
|
114
|
+
// token and would clear it comfortably. Left as-is because it is the
|
|
115
|
+
// shipped look and changing it moves every empty state in the suite; worth
|
|
116
|
+
// a deliberate pass rather than a drive-by.
|
|
117
|
+
color: macOSColors.border.hover,
|
|
111
118
|
fontSize: 14,
|
|
112
119
|
textAlign: "center",
|
|
113
120
|
lineHeight: 20
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { Component } from "react";
|
|
4
4
|
import { View, Text, StyleSheet, TouchableOpacity } from "react-native";
|
|
5
5
|
import { AlertTriangle, RefreshCw } from "../../icons/index.js";
|
|
6
|
+
import { buoyColors } from "../gameUI/constants/gameUIColors.js";
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
8
|
export class ErrorBoundary extends Component {
|
|
8
9
|
constructor(props) {
|
|
@@ -64,7 +65,7 @@ export class ErrorBoundary extends Component {
|
|
|
64
65
|
}
|
|
65
66
|
const styles = StyleSheet.create({
|
|
66
67
|
errorContainer: {
|
|
67
|
-
backgroundColor:
|
|
68
|
+
backgroundColor: buoyColors.card,
|
|
68
69
|
borderRadius: 6,
|
|
69
70
|
borderWidth: 1,
|
|
70
71
|
borderColor: "#EF4444",
|
|
@@ -82,7 +83,7 @@ const styles = StyleSheet.create({
|
|
|
82
83
|
fontWeight: "600"
|
|
83
84
|
},
|
|
84
85
|
errorMessage: {
|
|
85
|
-
color:
|
|
86
|
+
color: buoyColors.textSecondary,
|
|
86
87
|
fontSize: 12,
|
|
87
88
|
textAlign: "center",
|
|
88
89
|
lineHeight: 16
|
|
@@ -16,6 +16,30 @@ import { ViewToggleCards } from "./ViewToggleCards.js";
|
|
|
16
16
|
import { DiffModeTabs } from "./DiffModeTabs.js";
|
|
17
17
|
import { CompareBar } from "./CompareBar.js";
|
|
18
18
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
19
|
+
/**
|
|
20
|
+
* Section wrapper for the diff view: a plain flex box normally, or a ScrollView
|
|
21
|
+
* when the whole section should scroll as one page. Split out so the children
|
|
22
|
+
* are written once instead of duplicated across both branches.
|
|
23
|
+
*/
|
|
24
|
+
function DiffSectionContainer({
|
|
25
|
+
scrolls,
|
|
26
|
+
style,
|
|
27
|
+
children
|
|
28
|
+
}) {
|
|
29
|
+
if (!scrolls) return /*#__PURE__*/_jsx(View, {
|
|
30
|
+
style: style,
|
|
31
|
+
children: children
|
|
32
|
+
});
|
|
33
|
+
// `contentSection` carries `flex: 1`, which is meaningless (and harmful) on a
|
|
34
|
+
// content container — the scrolling variant uses flexGrow padding instead.
|
|
35
|
+
return /*#__PURE__*/_jsx(ScrollView, {
|
|
36
|
+
style: styles.contentScroll,
|
|
37
|
+
contentContainerStyle: styles.contentScrollInner,
|
|
38
|
+
showsVerticalScrollIndicator: true,
|
|
39
|
+
children: children
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
19
43
|
/**
|
|
20
44
|
* EventHistoryViewer is the main container for viewing event history.
|
|
21
45
|
* It composes sub-components to display current value or diff views.
|
|
@@ -51,6 +75,7 @@ export const EventHistoryViewer = /*#__PURE__*/memo(function EventHistoryViewer(
|
|
|
51
75
|
canRightNext,
|
|
52
76
|
onLeftPickerOpen,
|
|
53
77
|
onRightPickerOpen,
|
|
78
|
+
scrollDiffSection,
|
|
54
79
|
// Footer
|
|
55
80
|
disableInternalFooter,
|
|
56
81
|
footerCurrentIndex,
|
|
@@ -60,28 +85,36 @@ export const EventHistoryViewer = /*#__PURE__*/memo(function EventHistoryViewer(
|
|
|
60
85
|
onFooterPrevious,
|
|
61
86
|
onFooterNext
|
|
62
87
|
}) {
|
|
88
|
+
const hasCurrentView = renderCurrentView != null;
|
|
63
89
|
const diffDisabled = footerTotalItems <= 1;
|
|
64
90
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
65
91
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
66
92
|
style: [styles.container, {
|
|
67
|
-
//
|
|
68
|
-
|
|
93
|
+
// Reserve space ONLY for the internal footer, which is absolutely
|
|
94
|
+
// positioned and would otherwise cover the content. An external
|
|
95
|
+
// footer is laid out by the host modal, which already pads the
|
|
96
|
+
// content area by its own footerHeight — adding this on top of that
|
|
97
|
+
// left a dead band above the footer (96px of padding for a footer
|
|
98
|
+
// that isn't in this subtree).
|
|
99
|
+
paddingBottom: !disableInternalFooter && footerTotalItems > 1 ? 96 : 0
|
|
69
100
|
}],
|
|
70
|
-
children: [/*#__PURE__*/_jsx(ViewToggleCards, {
|
|
101
|
+
children: [hasCurrentView && /*#__PURE__*/_jsx(ViewToggleCards, {
|
|
71
102
|
activeView: activeView,
|
|
72
|
-
onViewChange: onViewChange,
|
|
73
|
-
currentLabel: currentViewLabel,
|
|
74
|
-
currentDescription: currentViewDescription,
|
|
103
|
+
onViewChange: onViewChange ?? (() => {}),
|
|
104
|
+
currentLabel: currentViewLabel ?? "",
|
|
105
|
+
currentDescription: currentViewDescription ?? "",
|
|
75
106
|
currentIcon: currentViewIcon,
|
|
76
107
|
diffLabel: diffViewLabel,
|
|
77
108
|
diffDescription: diffViewDescription,
|
|
78
109
|
diffIcon: diffViewIcon,
|
|
79
110
|
diffDisabled: diffDisabled
|
|
80
|
-
}), activeView === "current" && /*#__PURE__*/_jsx(ScrollView, {
|
|
81
|
-
style: styles.
|
|
111
|
+
}), hasCurrentView && activeView === "current" && /*#__PURE__*/_jsx(ScrollView, {
|
|
112
|
+
style: styles.contentScroll,
|
|
113
|
+
contentContainerStyle: styles.contentScrollInner,
|
|
82
114
|
showsVerticalScrollIndicator: true,
|
|
83
|
-
children: renderCurrentView()
|
|
84
|
-
}), activeView === "diff" && /*#__PURE__*/_jsxs(
|
|
115
|
+
children: renderCurrentView?.()
|
|
116
|
+
}), (!hasCurrentView || activeView === "diff") && /*#__PURE__*/_jsxs(DiffSectionContainer, {
|
|
117
|
+
scrolls: scrollDiffSection,
|
|
85
118
|
style: styles.contentSection,
|
|
86
119
|
children: [diffModeTabs && diffModeTabs.length > 0 && onDiffModeChange && /*#__PURE__*/_jsx(DiffModeTabs, {
|
|
87
120
|
tabs: diffModeTabs,
|
|
@@ -101,7 +134,10 @@ export const EventHistoryViewer = /*#__PURE__*/memo(function EventHistoryViewer(
|
|
|
101
134
|
canRightNext: canRightNext,
|
|
102
135
|
onLeftPress: onLeftPickerOpen,
|
|
103
136
|
onRightPress: onRightPickerOpen
|
|
104
|
-
}), renderDiffContent()
|
|
137
|
+
}), scrollDiffSection ? renderDiffContent() : /*#__PURE__*/_jsx(View, {
|
|
138
|
+
style: styles.diffContent,
|
|
139
|
+
children: renderDiffContent()
|
|
140
|
+
})]
|
|
105
141
|
})]
|
|
106
142
|
}), !disableInternalFooter && /*#__PURE__*/_jsx(EventStepperFooter, {
|
|
107
143
|
currentIndex: footerCurrentIndex,
|
|
@@ -121,7 +157,23 @@ const styles = StyleSheet.create({
|
|
|
121
157
|
},
|
|
122
158
|
contentSection: {
|
|
123
159
|
flex: 1,
|
|
160
|
+
minHeight: 0,
|
|
124
161
|
paddingHorizontal: 14,
|
|
125
162
|
paddingVertical: 10
|
|
163
|
+
},
|
|
164
|
+
contentScroll: {
|
|
165
|
+
// No `minHeight: 0` here. On the scroll frame it stops the ScrollView from
|
|
166
|
+
// constraining itself, so a tall value lays out at full content height and
|
|
167
|
+
// spills past the panel and the footer instead of scrolling inside it.
|
|
168
|
+
flex: 1
|
|
169
|
+
},
|
|
170
|
+
contentScrollInner: {
|
|
171
|
+
flexGrow: 1,
|
|
172
|
+
paddingHorizontal: 14,
|
|
173
|
+
paddingVertical: 10
|
|
174
|
+
},
|
|
175
|
+
diffContent: {
|
|
176
|
+
flex: 1,
|
|
177
|
+
minHeight: 0
|
|
126
178
|
}
|
|
127
179
|
});
|