@buoy-gg/shared-ui 1.7.7 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/lib/commonjs/JsModal.js +33 -8
  2. package/lib/commonjs/clipboard/clipboard-impl.js +1 -1
  3. package/lib/commonjs/clipboard/copyToClipboard.js +0 -2
  4. package/lib/commonjs/dataViewer/diffThemes.js +35 -32
  5. package/lib/commonjs/history/HistoryProvider.js +246 -0
  6. package/lib/commonjs/history/components/HistoryEntryRow.js +146 -0
  7. package/lib/commonjs/history/components/HistoryList.js +174 -0
  8. package/lib/commonjs/history/components/index.js +25 -0
  9. package/lib/commonjs/history/index.js +61 -0
  10. package/lib/commonjs/history/types.js +5 -0
  11. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  12. package/lib/commonjs/hooks/useSafeAreaInsets.js +1 -22
  13. package/lib/commonjs/index.js +37 -46
  14. package/lib/commonjs/license/FeatureGate.js +13 -42
  15. package/lib/commonjs/license/index.js +43 -1
  16. package/lib/commonjs/settings/components/BubbleSettingsSection.js +7 -7
  17. package/lib/commonjs/storage/devToolsStorageKeys.js +11 -0
  18. package/lib/commonjs/ui/components/CopyButton.js +14 -29
  19. package/lib/commonjs/ui/components/DevToolsCard.js +106 -0
  20. package/lib/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.js +2 -1
  21. package/lib/commonjs/ui/components/ExpandablePopover.js +13 -13
  22. package/lib/commonjs/ui/components/index.js +13 -0
  23. package/lib/commonjs/utils/formatting/httpFormatting.js +0 -6
  24. package/lib/commonjs/utils/index.js +0 -31
  25. package/lib/module/JsModal.js +33 -8
  26. package/lib/module/clipboard/clipboard-impl.js +1 -1
  27. package/lib/module/clipboard/copyToClipboard.js +0 -2
  28. package/lib/module/dataViewer/diffThemes.js +35 -32
  29. package/lib/module/history/HistoryProvider.js +237 -0
  30. package/lib/module/history/components/HistoryEntryRow.js +142 -0
  31. package/lib/module/history/components/HistoryList.js +169 -0
  32. package/lib/module/history/components/index.js +8 -0
  33. package/lib/module/history/index.js +15 -0
  34. package/lib/module/history/types.js +3 -0
  35. package/lib/module/hooks/safe-area-impl.js +1 -1
  36. package/lib/module/hooks/useSafeAreaInsets.js +0 -20
  37. package/lib/module/index.js +5 -4
  38. package/lib/module/license/FeatureGate.js +11 -40
  39. package/lib/module/license/index.js +41 -1
  40. package/lib/module/settings/components/BubbleSettingsSection.js +7 -7
  41. package/lib/module/storage/devToolsStorageKeys.js +11 -0
  42. package/lib/module/ui/components/CopyButton.js +12 -28
  43. package/lib/module/ui/components/DevToolsCard.js +102 -0
  44. package/lib/module/ui/components/EventHistoryViewer/EventHistoryViewer.js +2 -1
  45. package/lib/module/ui/components/ExpandablePopover.js +14 -14
  46. package/lib/module/ui/components/index.js +1 -0
  47. package/lib/module/utils/formatting/httpFormatting.js +0 -6
  48. package/lib/module/utils/index.js +0 -1
  49. package/lib/typescript/commonjs/JsModal.d.ts +2 -0
  50. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts +1 -1
  52. package/lib/typescript/commonjs/clipboard/copyToClipboard.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts +1 -1
  54. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/history/HistoryProvider.d.ts +56 -0
  56. package/lib/typescript/commonjs/history/HistoryProvider.d.ts.map +1 -0
  57. package/lib/typescript/commonjs/history/components/HistoryEntryRow.d.ts +22 -0
  58. package/lib/typescript/commonjs/history/components/HistoryEntryRow.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/history/components/HistoryList.d.ts +47 -0
  60. package/lib/typescript/commonjs/history/components/HistoryList.d.ts.map +1 -0
  61. package/lib/typescript/commonjs/history/components/index.d.ts +6 -0
  62. package/lib/typescript/commonjs/history/components/index.d.ts.map +1 -0
  63. package/lib/typescript/commonjs/history/index.d.ts +9 -0
  64. package/lib/typescript/commonjs/history/index.d.ts.map +1 -0
  65. package/lib/typescript/commonjs/history/types.d.ts +171 -0
  66. package/lib/typescript/commonjs/history/types.d.ts.map +1 -0
  67. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  68. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts +0 -13
  69. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/index.d.ts +3 -2
  71. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts +5 -0
  74. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/license/index.d.ts +15 -0
  76. package/lib/typescript/commonjs/license/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +11 -0
  78. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/ui/components/CopyButton.d.ts +0 -2
  80. package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts +54 -0
  82. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +1 -0
  83. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/ui/components/index.d.ts +2 -0
  85. package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/utils/formatting/httpFormatting.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/utils/index.d.ts +0 -1
  88. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
  89. package/lib/typescript/module/JsModal.d.ts +2 -0
  90. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  91. package/lib/typescript/module/clipboard/clipboard-impl.d.ts +1 -1
  92. package/lib/typescript/module/clipboard/copyToClipboard.d.ts.map +1 -1
  93. package/lib/typescript/module/dataViewer/diffThemes.d.ts +1 -1
  94. package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +1 -1
  95. package/lib/typescript/module/history/HistoryProvider.d.ts +56 -0
  96. package/lib/typescript/module/history/HistoryProvider.d.ts.map +1 -0
  97. package/lib/typescript/module/history/components/HistoryEntryRow.d.ts +22 -0
  98. package/lib/typescript/module/history/components/HistoryEntryRow.d.ts.map +1 -0
  99. package/lib/typescript/module/history/components/HistoryList.d.ts +47 -0
  100. package/lib/typescript/module/history/components/HistoryList.d.ts.map +1 -0
  101. package/lib/typescript/module/history/components/index.d.ts +6 -0
  102. package/lib/typescript/module/history/components/index.d.ts.map +1 -0
  103. package/lib/typescript/module/history/index.d.ts +9 -0
  104. package/lib/typescript/module/history/index.d.ts.map +1 -0
  105. package/lib/typescript/module/history/types.d.ts +171 -0
  106. package/lib/typescript/module/history/types.d.ts.map +1 -0
  107. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  108. package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts +0 -13
  109. package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts.map +1 -1
  110. package/lib/typescript/module/index.d.ts +3 -2
  111. package/lib/typescript/module/index.d.ts.map +1 -1
  112. package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
  113. package/lib/typescript/module/license/LicenseEntryModal.d.ts +5 -0
  114. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  115. package/lib/typescript/module/license/index.d.ts +15 -0
  116. package/lib/typescript/module/license/index.d.ts.map +1 -1
  117. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +11 -0
  118. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
  119. package/lib/typescript/module/ui/components/CopyButton.d.ts +0 -2
  120. package/lib/typescript/module/ui/components/CopyButton.d.ts.map +1 -1
  121. package/lib/typescript/module/ui/components/DevToolsCard.d.ts +54 -0
  122. package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +1 -0
  123. package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -1
  124. package/lib/typescript/module/ui/components/index.d.ts +2 -0
  125. package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
  126. package/lib/typescript/module/utils/formatting/httpFormatting.d.ts.map +1 -1
  127. package/lib/typescript/module/utils/index.d.ts +0 -1
  128. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  129. package/package.json +31 -7
  130. package/scripts/detect-clipboard.js +63 -1
  131. package/scripts/detect-safe-area.js +63 -1
  132. package/lib/commonjs/utils/safeAsyncStorage.js +0 -71
  133. package/lib/module/utils/safeAsyncStorage.js +0 -64
  134. package/lib/typescript/commonjs/utils/safeAsyncStorage.d.ts +0 -35
  135. package/lib/typescript/commonjs/utils/safeAsyncStorage.d.ts.map +0 -1
  136. package/lib/typescript/module/utils/safeAsyncStorage.d.ts +0 -35
  137. package/lib/typescript/module/utils/safeAsyncStorage.d.ts.map +0 -1
@@ -216,26 +216,6 @@ export const SafeAreaConfig = {
216
216
  }
217
217
  };
218
218
 
219
- /**
220
- * Compatibility hook that returns the window frame dimensions
221
- *
222
- * @returns Frame object with x, y, width, height properties
223
- *
224
- * @deprecated Use Dimensions.get("window") directly instead
225
- */
226
- export const useSafeAreaFrame = () => {
227
- const {
228
- width,
229
- height
230
- } = Dimensions.get("window");
231
- return {
232
- x: 0,
233
- y: 0,
234
- width,
235
- height
236
- };
237
- };
238
-
239
219
  /**
240
220
  * Export the pure JS implementation directly for compatibility
241
221
  *
@@ -9,9 +9,7 @@ export {
9
9
  displayValue, parseDisplayValue,
10
10
  // Safe area utilities
11
11
  getSafeAreaInsets,
12
- // Async storage utilities (legacy - wraps persistentStorage)
13
- safeGetItem, safeSetItem, safeRemoveItem, isPersistentStorageAvailable, useSafeAsyncStorage,
14
- // Persistent storage utilities (new)
12
+ // Persistent storage utilities
15
13
  persistentStorage, isUsingPersistentStorage, getStorageBackendType,
16
14
  // String utilities
17
15
  safeStringify,
@@ -54,5 +52,8 @@ export { EnvironmentSelectorInline } from "./env/EnvironmentSelectorInline.js";
54
52
  // Context exports
55
53
  export { HintsProvider, useHintsDisabled, useHintsContext } from "./context/index.js";
56
54
 
55
+ // History DevTools exports
56
+ export * from "./history/index.js";
57
+
57
58
  // License/Feature gating exports
58
- export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal, ManageDevicesModal, ProBadge, ProUpgradeModal } from "./license/index.js";
59
+ export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, LicenseEntryModal, ManageDevicesModal, ProBadge, ProUpgradeModal, getUseIsPro, getUseLicense } from "./license/index.js";
@@ -11,6 +11,7 @@ import { View, Text, StyleSheet, TouchableOpacity, Linking, Modal } from "react-
11
11
  import { gameUIColors, buoyColors } from "../ui/gameUI/constants/gameUIColors.js";
12
12
  import { LockIcon, X, Zap, Shield, Clock, Check } from "../icons/lucide-icons.js";
13
13
  import { LicenseEntryModal } from "./LicenseEntryModal.js";
14
+ import { useIsPro, useLicense } from "@buoy-gg/license";
14
15
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
16
  /**
16
17
  * Simple Pro badge for marking premium features
@@ -42,32 +43,6 @@ export const ProUpgradeModal = ({
42
43
  description: `${featureName} requires a Pro subscription.`
43
44
  });
44
45
  };
45
-
46
- // Lazy load the license hooks to avoid circular dependencies
47
- let _useIsPro = null;
48
- let _useLicense = null;
49
- let _loadAttempted = false;
50
- function loadLicenseModule() {
51
- if (_loadAttempted) return;
52
- _loadAttempted = true;
53
- try {
54
- const mod = require("@buoy-gg/license");
55
- if (mod) {
56
- _useIsPro = mod.useIsPro ?? null;
57
- _useLicense = mod.useLicense ?? null;
58
- }
59
- } catch {
60
- // License package not available - will use fallback
61
- }
62
- }
63
- function getUseIsPro() {
64
- loadLicenseModule();
65
- return _useIsPro ?? (() => false);
66
- }
67
- function getUseLicense() {
68
- loadLicenseModule();
69
- return _useLicense;
70
- }
71
46
  /**
72
47
  * Default upgrade prompt shown when user doesn't have Pro access
73
48
  * Opens LicenseEntryModal when clicked (unless custom onUpgradePress provided)
@@ -78,10 +53,7 @@ export const UpgradePrompt = ({
78
53
  compact = false
79
54
  }) => {
80
55
  const [showLicenseModal, setShowLicenseModal] = useState(false);
81
-
82
- // Get license hook if available
83
- const useLicenseHook = getUseLicense();
84
- const license = useLicenseHook?.();
56
+ const license = useLicense();
85
57
  const handlePress = useCallback(() => {
86
58
  if (onUpgradePress) {
87
59
  onUpgradePress();
@@ -165,7 +137,6 @@ export const FeatureGate = ({
165
137
  previewMode = false,
166
138
  onUpgradePress
167
139
  }) => {
168
- const useIsPro = getUseIsPro();
169
140
  const isPro = useIsPro();
170
141
 
171
142
  // Pro users see the full content
@@ -213,7 +184,6 @@ export const FeatureGate = ({
213
184
  * Returns { hasAccess, isPro, showUpgrade }
214
185
  */
215
186
  export function useFeatureGate() {
216
- const useIsPro = getUseIsPro();
217
187
  const isPro = useIsPro();
218
188
  const showUpgrade = () => {
219
189
  Linking.openURL("https://buoy.gg/pro");
@@ -236,10 +206,7 @@ export const ProFeatureBanner = ({
236
206
  benefits
237
207
  }) => {
238
208
  const [showLicenseModal, setShowLicenseModal] = useState(false);
239
-
240
- // Get license hook if available
241
- const useLicenseHook = getUseLicense();
242
- const license = useLicenseHook?.();
209
+ const license = useLicense();
243
210
  const handleUpgrade = useCallback(() => {
244
211
  setShowLicenseModal(true);
245
212
  }, []);
@@ -315,16 +282,19 @@ export const UpgradeModal = ({
315
282
  }) => {
316
283
  const hasBenefits = benefits && benefits.length > 0;
317
284
  const [showLicenseModal, setShowLicenseModal] = useState(false);
318
-
319
- // Get license hook if available
320
- const useLicenseHook = getUseLicense();
321
- const license = useLicenseHook?.();
285
+ const license = useLicense();
322
286
  const handleUpgrade = useCallback(() => {
323
287
  setShowLicenseModal(true);
324
288
  }, []);
325
289
  const handleCloseLicenseModal = useCallback(() => {
326
290
  setShowLicenseModal(false);
327
291
  }, []);
292
+
293
+ // When license activation succeeds, close both modals
294
+ const handleLicenseSuccess = useCallback(() => {
295
+ setShowLicenseModal(false);
296
+ onClose();
297
+ }, [onClose]);
328
298
  if (!visible) return null;
329
299
  return /*#__PURE__*/_jsxs(_Fragment, {
330
300
  children: [/*#__PURE__*/_jsx(Modal, {
@@ -428,6 +398,7 @@ export const UpgradeModal = ({
428
398
  }), /*#__PURE__*/_jsx(LicenseEntryModal, {
429
399
  visible: showLicenseModal,
430
400
  onClose: handleCloseLicenseModal,
401
+ onSuccess: handleLicenseSuccess,
431
402
  license: license
432
403
  })]
433
404
  });
@@ -2,4 +2,44 @@
2
2
 
3
3
  export { FeatureGate, UpgradePrompt, useFeatureGate, ProFeatureBanner, UpgradeModal, ProBadge, ProUpgradeModal } from "./FeatureGate.js";
4
4
  export { LicenseEntryModal } from "./LicenseEntryModal.js";
5
- export { ManageDevicesModal } from "./ManageDevicesModal.js";
5
+ export { ManageDevicesModal } from "./ManageDevicesModal.js";
6
+ // Centralized lazy loading for license hooks to avoid duplication across packages
7
+ // This is the SINGLE source of truth - all packages should import from here
8
+ let _useIsPro = null;
9
+ let _useLicense = null;
10
+ let _licenseLoadAttempted = false;
11
+ function loadLicenseModuleCentral() {
12
+ if (_licenseLoadAttempted) return;
13
+ _licenseLoadAttempted = true;
14
+ try {
15
+ const mod = require("@buoy-gg/license");
16
+ if (mod) {
17
+ _useIsPro = mod.useIsPro ?? null;
18
+ _useLicense = mod.useLicense ?? null;
19
+ }
20
+ } catch {
21
+ // License package not available - will use fallback
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Get the useIsPro hook from @buoy-gg/license
27
+ * Falls back to () => false if license package is not available
28
+ *
29
+ * IMPORTANT: Use this instead of doing your own lazy loading in other packages
30
+ */
31
+ export function getUseIsPro() {
32
+ loadLicenseModuleCentral();
33
+ return _useIsPro ?? (() => false);
34
+ }
35
+
36
+ /**
37
+ * Get the useLicense hook from @buoy-gg/license
38
+ * Returns null if license package is not available
39
+ *
40
+ * IMPORTANT: Use this instead of doing your own lazy loading in other packages
41
+ */
42
+ export function getUseLicense() {
43
+ loadLicenseModuleCentral();
44
+ return _useLicense;
45
+ }
@@ -5,7 +5,7 @@ import { Settings, EyeOff, Database } from "../../icons/index.js";
5
5
  import { useState, useEffect } from "react";
6
6
  import { CyberpunkSectionButton } from "../../ui/console/CyberpunkSectionButton.js";
7
7
  import { devToolsStorageKeys } from "../../storage/devToolsStorageKeys.js";
8
- import { safeGetItem, safeSetItem } from "../../utils/safeAsyncStorage.js";
8
+ import { persistentStorage } from "../../utils/persistentStorage.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const STORAGE_KEY = devToolsStorageKeys.bubble.settings();
11
11
  const USER_PREFERENCES_KEY = devToolsStorageKeys.bubble.userPreferences();
@@ -26,7 +26,7 @@ export function BubbleSettingsSection({
26
26
  }, []);
27
27
  const loadSettings = async () => {
28
28
  try {
29
- const stored = await safeGetItem(STORAGE_KEY);
29
+ const stored = await persistentStorage.getItem(STORAGE_KEY);
30
30
  if (stored) {
31
31
  setSettings(JSON.parse(stored));
32
32
  }
@@ -58,7 +58,7 @@ export function BubbleSettingsDetail({
58
58
  }, []);
59
59
  const loadSettings = async () => {
60
60
  try {
61
- const stored = await safeGetItem(STORAGE_KEY);
61
+ const stored = await persistentStorage.getItem(STORAGE_KEY);
62
62
  if (stored) {
63
63
  setSettings(JSON.parse(stored));
64
64
  }
@@ -70,7 +70,7 @@ export function BubbleSettingsDetail({
70
70
  };
71
71
  const saveSettings = async newSettings => {
72
72
  try {
73
- await safeSetItem(STORAGE_KEY, JSON.stringify(newSettings));
73
+ await persistentStorage.setItem(STORAGE_KEY, JSON.stringify(newSettings));
74
74
  setSettings(newSettings);
75
75
  // Trigger the callback to reload settings in the parent
76
76
  onSettingsChange?.(newSettings);
@@ -86,14 +86,14 @@ export function BubbleSettingsDetail({
86
86
 
87
87
  // Mark this preference as explicitly set by the user
88
88
  try {
89
- const prefsStored = await safeGetItem(USER_PREFERENCES_KEY);
89
+ const prefsStored = await persistentStorage.getItem(USER_PREFERENCES_KEY);
90
90
  const currentPrefs = prefsStored ? JSON.parse(prefsStored) : {};
91
91
  const prefKey = key.replace("show", "hasSet");
92
92
  const updatedPrefs = {
93
93
  ...currentPrefs,
94
94
  [prefKey]: true
95
95
  };
96
- await safeSetItem(USER_PREFERENCES_KEY, JSON.stringify(updatedPrefs));
96
+ await persistentStorage.setItem(USER_PREFERENCES_KEY, JSON.stringify(updatedPrefs));
97
97
  } catch (error) {
98
98
  console.error("Failed to save user preference marker:", error);
99
99
  }
@@ -230,7 +230,7 @@ export function BubbleSettingsDetail({
230
230
  }
231
231
  export async function getBubbleVisibilitySettings() {
232
232
  try {
233
- const stored = await safeGetItem(STORAGE_KEY);
233
+ const stored = await persistentStorage.getItem(STORAGE_KEY);
234
234
  if (stored) {
235
235
  return JSON.parse(stored);
236
236
  }
@@ -155,6 +155,17 @@ export const devToolsStorageKeys = {
155
155
  activeTab: () => `${devToolsStorageKeys.benchmark.root()}_active_tab`,
156
156
  settings: () => `${devToolsStorageKeys.benchmark.root()}_settings`,
157
157
  selectedReports: () => `${devToolsStorageKeys.benchmark.root()}_selected_reports`
158
+ },
159
+ /**
160
+ * Unified events-related storage keys
161
+ */
162
+ events: {
163
+ root: () => `${devToolsStorageKeys.base}_events`,
164
+ modal: () => `${devToolsStorageKeys.events.root()}_modal`,
165
+ /** Selected badge/source filters */
166
+ enabledSources: () => `${devToolsStorageKeys.events.root()}_enabled_sources`,
167
+ /** Copy/export settings */
168
+ copySettings: () => `${devToolsStorageKeys.events.root()}_copy_settings`
158
169
  }
159
170
  };
160
171
 
@@ -7,30 +7,11 @@ import { gameUIColors } from "../gameUI/constants/gameUIColors.js";
7
7
  import { Copy, CheckCircle2, AlertTriangle } from "../../icons/lucide-icons.js";
8
8
  import { ClipboardHintBanner } from "./ClipboardHintBanner.js";
9
9
  import { devToolsStorageKeys } from "../../storage/devToolsStorageKeys.js";
10
- import { safeGetItem, safeSetItem } from "../../utils/safeAsyncStorage.js";
10
+ import { persistentStorage } from "../../utils/persistentStorage.js";
11
11
  import { useHintsDisabled } from "../../context/index.js";
12
- import { ProUpgradeModal } from "../../license/FeatureGate.js";
13
-
14
- // Lazy load the license hooks to avoid circular dependencies
12
+ import { ProUpgradeModal } from "../../license/index.js";
13
+ import { useIsPro } from "@buoy-gg/license";
15
14
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
16
- let _useIsPro = null;
17
- let _licenseLoadAttempted = false;
18
- function loadLicenseModule() {
19
- if (_licenseLoadAttempted) return;
20
- _licenseLoadAttempted = true;
21
- try {
22
- const mod = require("@buoy-gg/license");
23
- if (mod) {
24
- _useIsPro = mod.useIsPro ?? null;
25
- }
26
- } catch {
27
- // License package not available - will use fallback (assume not Pro)
28
- }
29
- }
30
- function getUseIsPro() {
31
- loadLicenseModule();
32
- return _useIsPro ?? (() => false);
33
- }
34
15
  /**
35
16
  * Reusable copy button component with visual feedback
36
17
  * Shows different icons for idle, success, and error states
@@ -47,7 +28,7 @@ async function loadHintAcknowledged() {
47
28
  globalHintLoadPromise = (async () => {
48
29
  try {
49
30
  const hintKey = devToolsStorageKeys.clipboard.hintAcknowledged();
50
- const acknowledged = await safeGetItem(hintKey);
31
+ const acknowledged = await persistentStorage.getItem(hintKey);
51
32
  globalHintAcknowledged = acknowledged === "true";
52
33
  return globalHintAcknowledged;
53
34
  } catch {
@@ -61,7 +42,7 @@ async function loadHintAcknowledged() {
61
42
  async function setHintAcknowledged() {
62
43
  try {
63
44
  const hintKey = devToolsStorageKeys.clipboard.hintAcknowledged();
64
- await safeSetItem(hintKey, "true");
45
+ await persistentStorage.setItem(hintKey, "true");
65
46
  globalHintAcknowledged = true;
66
47
  } catch {
67
48
  // Failed to save, just update local state
@@ -77,16 +58,19 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
77
58
  onCopyError,
78
59
  feedbackDuration = 1500,
79
60
  colors = {},
80
- disabled: _deprecated,
81
- // Ignored - Pro status checked internally
82
61
  ...touchableProps
83
62
  }) {
84
- // Check Pro status internally - copy is a Pro-only feature
85
- const useIsPro = getUseIsPro();
86
63
  const isPro = useIsPro();
87
64
  const [copyState, setCopyState] = useState("idle");
88
65
  const [showHint, setShowHint] = useState(false);
89
66
  const [showLicenseModal, setShowLicenseModal] = useState(false);
67
+
68
+ // Auto-close upgrade modal when user becomes Pro
69
+ useEffect(() => {
70
+ if (showLicenseModal && isPro) {
71
+ setShowLicenseModal(false);
72
+ }
73
+ }, [showLicenseModal, isPro]);
90
74
  const hintsDisabled = useHintsDisabled();
91
75
  const valueRef = useRef(value);
92
76
  const timeoutRef = useRef(null);
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * DevToolsCard
5
+ *
6
+ * A unified container component for all DevTools list items.
7
+ * Provides consistent sizing, spacing, and styling across all packages.
8
+ *
9
+ * Usage:
10
+ * ```tsx
11
+ * <DevToolsCard onPress={handlePress} isSelected={selected}>
12
+ * <YourCustomContent />
13
+ * </DevToolsCard>
14
+ * ```
15
+ */
16
+
17
+ import { View, TouchableOpacity, StyleSheet } from "react-native";
18
+ import { buoyColors } from "../gameUI/constants/gameUIColors.js";
19
+
20
+ /**
21
+ * Standard card dimensions - adjust these to change all DevTools cards globally
22
+ */
23
+ import { jsx as _jsx } from "react/jsx-runtime";
24
+ export const DEVTOOLS_CARD_CONSTANTS = {
25
+ /** Horizontal padding inside the card */
26
+ padding: 12,
27
+ /** Horizontal margin between card and screen edge */
28
+ marginHorizontal: 12,
29
+ /** Vertical margin between cards */
30
+ marginVertical: 4,
31
+ /** Card corner radius */
32
+ borderRadius: 8,
33
+ /** Minimum height for touch accessibility (Apple HIG) */
34
+ minHeight: 44,
35
+ /** Border width */
36
+ borderWidth: 1
37
+ };
38
+ export function DevToolsCard({
39
+ children,
40
+ onPress,
41
+ onLongPress,
42
+ isSelected = false,
43
+ disabled = false,
44
+ activeOpacity = 0.8,
45
+ style,
46
+ contentStyle,
47
+ testID
48
+ }) {
49
+ const isInteractive = !!onPress || !!onLongPress;
50
+
51
+ // Non-interactive card (just a container)
52
+ if (!isInteractive) {
53
+ return /*#__PURE__*/_jsx(View, {
54
+ style: [styles.wrapper, style],
55
+ testID: testID,
56
+ children: /*#__PURE__*/_jsx(View, {
57
+ style: [styles.card, isSelected && styles.selectedCard, contentStyle],
58
+ children: children
59
+ })
60
+ });
61
+ }
62
+
63
+ // Interactive card
64
+ return /*#__PURE__*/_jsx(View, {
65
+ style: [styles.wrapper, style],
66
+ children: /*#__PURE__*/_jsx(TouchableOpacity, {
67
+ style: [styles.card, isSelected && styles.selectedCard, contentStyle],
68
+ onPress: onPress,
69
+ onLongPress: onLongPress,
70
+ activeOpacity: activeOpacity,
71
+ disabled: disabled,
72
+ testID: testID,
73
+ children: children
74
+ })
75
+ });
76
+ }
77
+ const styles = StyleSheet.create({
78
+ wrapper: {
79
+ marginHorizontal: DEVTOOLS_CARD_CONSTANTS.marginHorizontal,
80
+ marginVertical: DEVTOOLS_CARD_CONSTANTS.marginVertical
81
+ },
82
+ card: {
83
+ backgroundColor: buoyColors.card,
84
+ borderRadius: DEVTOOLS_CARD_CONSTANTS.borderRadius,
85
+ borderWidth: DEVTOOLS_CARD_CONSTANTS.borderWidth,
86
+ borderColor: buoyColors.border + "40",
87
+ padding: DEVTOOLS_CARD_CONSTANTS.padding,
88
+ minHeight: DEVTOOLS_CARD_CONSTANTS.minHeight
89
+ },
90
+ selectedCard: {
91
+ backgroundColor: buoyColors.primary + "15",
92
+ borderColor: buoyColors.primary + "50",
93
+ shadowColor: buoyColors.primary,
94
+ shadowOffset: {
95
+ width: 0,
96
+ height: 0
97
+ },
98
+ shadowOpacity: 0.1,
99
+ shadowRadius: 8,
100
+ elevation: 2
101
+ }
102
+ });
@@ -64,7 +64,8 @@ export const EventHistoryViewer = /*#__PURE__*/memo(function EventHistoryViewer(
64
64
  return /*#__PURE__*/_jsxs(_Fragment, {
65
65
  children: [/*#__PURE__*/_jsxs(View, {
66
66
  style: [styles.container, {
67
- paddingBottom: !disableInternalFooter && footerTotalItems > 1 ? 80 : 0
67
+ // Add padding when footer is shown (internal or external via modal)
68
+ paddingBottom: footerTotalItems > 1 ? 96 : 0
68
69
  }],
69
70
  children: [/*#__PURE__*/_jsx(ViewToggleCards, {
70
71
  activeView: activeView,
@@ -3,7 +3,7 @@
3
3
  import React, { useCallback, useEffect, useRef, useState } from "react";
4
4
  import { Animated, TouchableOpacity, View, Text, StyleSheet } from "react-native";
5
5
  import { ChevronUp } from "../../icons/index.js";
6
- import { gameUIColors } from "../gameUI/constants/gameUIColors.js";
6
+ import { buoyColors } from "../gameUI/constants/gameUIColors.js";
7
7
 
8
8
  // ============================================================================
9
9
  // Types
@@ -60,7 +60,7 @@ function CollapsedPeek({
60
60
  children: customContent || /*#__PURE__*/_jsxs(_Fragment, {
61
61
  children: [/*#__PURE__*/_jsx(ChevronUp, {
62
62
  size: 12,
63
- color: gameUIColors.muted,
63
+ color: buoyColors.textMuted,
64
64
  strokeWidth: 2
65
65
  }), showCount && count !== undefined && count > 1 && /*#__PURE__*/_jsx(Text, {
66
66
  style: styles.peekCount,
@@ -107,7 +107,7 @@ function ExpandedWrapper({
107
107
  accessibilityRole: "button",
108
108
  children: /*#__PURE__*/_jsx(ChevronUp, {
109
109
  size: 12,
110
- color: gameUIColors.muted,
110
+ color: buoyColors.textMuted,
111
111
  style: {
112
112
  transform: [{
113
113
  rotate: "180deg"
@@ -154,9 +154,9 @@ export function ExpandablePopover({
154
154
  try {
155
155
  // Dynamic import to avoid circular dependency
156
156
  const {
157
- safeGetItem
158
- } = await import("../../utils/safeAsyncStorage");
159
- const saved = await safeGetItem(storageKey);
157
+ persistentStorage
158
+ } = await import("../../utils/persistentStorage");
159
+ const saved = await persistentStorage.getItem(storageKey);
160
160
  if (saved === "true") {
161
161
  setIsExpanded(true);
162
162
  progress.setValue(1);
@@ -175,9 +175,9 @@ export function ExpandablePopover({
175
175
  const persistExpanded = async () => {
176
176
  try {
177
177
  const {
178
- safeSetItem
179
- } = await import("../../utils/safeAsyncStorage");
180
- await safeSetItem(storageKey, isExpanded ? "true" : "false");
178
+ persistentStorage
179
+ } = await import("../../utils/persistentStorage");
180
+ await persistentStorage.setItem(storageKey, isExpanded ? "true" : "false");
181
181
  } catch {
182
182
  // Ignore errors
183
183
  }
@@ -294,12 +294,12 @@ const styles = StyleSheet.create({
294
294
  borderTopRightRadius: 6,
295
295
  borderBottomLeftRadius: 0,
296
296
  borderBottomRightRadius: 0,
297
- backgroundColor: gameUIColors.panel,
297
+ backgroundColor: buoyColors.card,
298
298
  borderTopWidth: 1,
299
299
  borderLeftWidth: 1,
300
300
  borderRightWidth: 1,
301
301
  borderBottomWidth: 0,
302
- borderColor: gameUIColors.muted + "66",
302
+ borderColor: buoyColors.textMuted + "66",
303
303
  flexDirection: "row",
304
304
  alignItems: "center",
305
305
  justifyContent: "center",
@@ -308,11 +308,11 @@ const styles = StyleSheet.create({
308
308
  peekCount: {
309
309
  fontSize: 9,
310
310
  fontWeight: "600",
311
- color: gameUIColors.muted,
311
+ color: buoyColors.textMuted,
312
312
  marginLeft: 1
313
313
  },
314
314
  expandedContainer: {
315
- backgroundColor: gameUIColors.panel,
315
+ backgroundColor: buoyColors.card,
316
316
  borderTopLeftRadius: 6,
317
317
  borderTopRightRadius: 6,
318
318
  borderBottomLeftRadius: 0,
@@ -321,7 +321,7 @@ const styles = StyleSheet.create({
321
321
  borderLeftWidth: 1,
322
322
  borderRightWidth: 1,
323
323
  borderBottomWidth: 0,
324
- borderColor: gameUIColors.muted + "66"
324
+ borderColor: buoyColors.textMuted + "66"
325
325
  },
326
326
  expandedInner: {
327
327
  alignItems: "center",
@@ -16,6 +16,7 @@ export { TabSelector } from "./TabSelector.js";
16
16
  export { EventListItem } from "./EventListItem.js";
17
17
  export { StatsCard } from "./StatsCard.js";
18
18
  export { CompactRow } from "./CompactRow.js";
19
+ export { DevToolsCard, DEVTOOLS_CARD_CONSTANTS } from "./DevToolsCard.js";
19
20
  export { HeaderSearchButton } from "./HeaderSearchButton.js";
20
21
  export { EmptyState, NoDataEmptyState, NoResultsEmptyState, NoSearchResultsEmptyState } from "./EmptyState.js";
21
22
  export { StatusIndicator } from "./StatusIndicator.js";
@@ -129,17 +129,11 @@ export function parseUrl(url) {
129
129
  try {
130
130
  const parsed = new URL(url);
131
131
  return {
132
- //@ts-expect-error - URL is not typed
133
132
  protocol: parsed.protocol.replace(":", ""),
134
- //@ts-expect-error - URL is not typed
135
133
  host: parsed.hostname,
136
- //@ts-expect-error - URL is not typed
137
134
  port: parsed.port || undefined,
138
- //@ts-expect-error - URL is not typed
139
135
  pathname: parsed.pathname,
140
- //@ts-expect-error - URL is not typed
141
136
  search: parsed.search || undefined,
142
- //@ts-expect-error - URL is not typed
143
137
  hash: parsed.hash || undefined
144
138
  };
145
139
  } catch {
@@ -2,7 +2,6 @@
2
2
 
3
3
  export { displayValue, parseDisplayValue } from "./displayValue.js";
4
4
  export { getSafeAreaInsets } from "./getSafeAreaInsets.js";
5
- export { safeGetItem, safeSetItem, safeRemoveItem, isPersistentStorageAvailable, useSafeAsyncStorage } from "./safeAsyncStorage.js";
6
5
  export { persistentStorage, isUsingPersistentStorage, getStorageBackendType } from "./persistentStorage.js";
7
6
  export { safeStringify } from "./safeStringify.js";
8
7
  export { getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstructorName, isEmpty, getValueSize } from "./typeHelpers.js";
@@ -72,6 +72,8 @@ interface JsModalProps {
72
72
  initialModalState?: ModalState;
73
73
  /** z-index for stacking multiple modals (higher = on top) */
74
74
  zIndex?: number;
75
+ /** If true, children are rendered directly without ScrollView wrapper (use when children have their own FlatList/ScrollView) */
76
+ disableScrollWrapper?: boolean;
75
77
  }
76
78
  export declare const JsModal: import("react").NamedExoticComponent<JsModalProps>;
77
79
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;AA4FtB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAErD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8gDD,eAAO,MAAM,OAAO,oDAAyB,CAAC"}
1
+ {"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;AA4FtB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAErD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gIAAgI;IAChI,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA6hDD,eAAO,MAAM,OAAO,oDAAyB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated clipboard implementation
3
3
  * Detected: none
4
- * Generated at: 2026-01-03T18:51:49.000Z
4
+ * Generated at: 2026-01-12T04:02:16.197Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-clipboard.js
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../../src/clipboard/copyToClipboard.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA0CtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C"}
1
+ {"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../../src/clipboard/copyToClipboard.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C"}
@@ -48,7 +48,7 @@ export interface DiffTheme {
48
48
  export declare const gitClassicTheme: DiffTheme;
49
49
  /**
50
50
  * Dev Tools Default Theme
51
- * Clean dark theme using our gameUIColors
51
+ * Clean dark theme matching Buoy website brand colors
52
52
  */
53
53
  export declare const devToolsDefaultTheme: DiffTheme;
54
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"diffThemes.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/diffThemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,cAAc,EAAE,MAAM,CAAC;IAGvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SA2C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAqDlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"diffThemes.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/diffThemes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,cAAc,EAAE,MAAM,CAAC;IAGvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SA2C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAwDlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC"}