react-native-prod-debugger 1.0.0

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 (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +350 -0
  3. package/lib/commonjs/core/DebugBubble.js +139 -0
  4. package/lib/commonjs/core/DebugBubble.js.map +1 -0
  5. package/lib/commonjs/core/DebugOverlay.js +184 -0
  6. package/lib/commonjs/core/DebugOverlay.js.map +1 -0
  7. package/lib/commonjs/core/DebuggerProvider.js +174 -0
  8. package/lib/commonjs/core/DebuggerProvider.js.map +1 -0
  9. package/lib/commonjs/core/GestureDetector.js +83 -0
  10. package/lib/commonjs/core/GestureDetector.js.map +1 -0
  11. package/lib/commonjs/core/PluginRegistry.js +124 -0
  12. package/lib/commonjs/core/PluginRegistry.js.map +1 -0
  13. package/lib/commonjs/core/theme.js +50 -0
  14. package/lib/commonjs/core/theme.js.map +1 -0
  15. package/lib/commonjs/core/types.js +6 -0
  16. package/lib/commonjs/core/types.js.map +1 -0
  17. package/lib/commonjs/core/useDebugger.js +27 -0
  18. package/lib/commonjs/core/useDebugger.js.map +1 -0
  19. package/lib/commonjs/core/utils.js +239 -0
  20. package/lib/commonjs/core/utils.js.map +1 -0
  21. package/lib/commonjs/index.js +132 -0
  22. package/lib/commonjs/index.js.map +1 -0
  23. package/lib/commonjs/plugins/console/ConsoleInterceptor.js +103 -0
  24. package/lib/commonjs/plugins/console/ConsoleInterceptor.js.map +1 -0
  25. package/lib/commonjs/plugins/console/ConsoleViewerPlugin.js +269 -0
  26. package/lib/commonjs/plugins/console/ConsoleViewerPlugin.js.map +1 -0
  27. package/lib/commonjs/plugins/crashReporter/CrashReporterPlugin.js +363 -0
  28. package/lib/commonjs/plugins/crashReporter/CrashReporterPlugin.js.map +1 -0
  29. package/lib/commonjs/plugins/customActions/CustomActionsPlugin.js +218 -0
  30. package/lib/commonjs/plugins/customActions/CustomActionsPlugin.js.map +1 -0
  31. package/lib/commonjs/plugins/customActions/actionStore.js +46 -0
  32. package/lib/commonjs/plugins/customActions/actionStore.js.map +1 -0
  33. package/lib/commonjs/plugins/deepLinkTester/DeepLinkTesterPlugin.js +268 -0
  34. package/lib/commonjs/plugins/deepLinkTester/DeepLinkTesterPlugin.js.map +1 -0
  35. package/lib/commonjs/plugins/deviceInfo/DeviceInfoPlugin.js +184 -0
  36. package/lib/commonjs/plugins/deviceInfo/DeviceInfoPlugin.js.map +1 -0
  37. package/lib/commonjs/plugins/featureFlags/FeatureFlagsPlugin.js +381 -0
  38. package/lib/commonjs/plugins/featureFlags/FeatureFlagsPlugin.js.map +1 -0
  39. package/lib/commonjs/plugins/featureFlags/flagStore.js +125 -0
  40. package/lib/commonjs/plugins/featureFlags/flagStore.js.map +1 -0
  41. package/lib/commonjs/plugins/navigationInspector/NavigationInspectorPlugin.js +250 -0
  42. package/lib/commonjs/plugins/navigationInspector/NavigationInspectorPlugin.js.map +1 -0
  43. package/lib/commonjs/plugins/navigationInspector/navigationStore.js +65 -0
  44. package/lib/commonjs/plugins/navigationInspector/navigationStore.js.map +1 -0
  45. package/lib/commonjs/plugins/network/NetworkInspectorPlugin.js +709 -0
  46. package/lib/commonjs/plugins/network/NetworkInspectorPlugin.js.map +1 -0
  47. package/lib/commonjs/plugins/network/NetworkInterceptor.js +305 -0
  48. package/lib/commonjs/plugins/network/NetworkInterceptor.js.map +1 -0
  49. package/lib/commonjs/plugins/performance/PerformanceMonitorPlugin.js +261 -0
  50. package/lib/commonjs/plugins/performance/PerformanceMonitorPlugin.js.map +1 -0
  51. package/lib/commonjs/plugins/remoteConfig/RemoteConfigPlugin.js +265 -0
  52. package/lib/commonjs/plugins/remoteConfig/RemoteConfigPlugin.js.map +1 -0
  53. package/lib/commonjs/plugins/remoteConfig/remoteConfigStore.js +50 -0
  54. package/lib/commonjs/plugins/remoteConfig/remoteConfigStore.js.map +1 -0
  55. package/lib/commonjs/plugins/stateInspector/StateInspectorPlugin.js +378 -0
  56. package/lib/commonjs/plugins/stateInspector/StateInspectorPlugin.js.map +1 -0
  57. package/lib/commonjs/plugins/stateInspector/stateAdapterRegistry.js +62 -0
  58. package/lib/commonjs/plugins/stateInspector/stateAdapterRegistry.js.map +1 -0
  59. package/lib/commonjs/plugins/storageBrowser/StorageBrowserPlugin.js +496 -0
  60. package/lib/commonjs/plugins/storageBrowser/StorageBrowserPlugin.js.map +1 -0
  61. package/lib/commonjs/plugins/storageBrowser/storageAdapterRegistry.js +44 -0
  62. package/lib/commonjs/plugins/storageBrowser/storageAdapterRegistry.js.map +1 -0
  63. package/lib/commonjs/plugins/timeline/TimelinePlugin.js +294 -0
  64. package/lib/commonjs/plugins/timeline/TimelinePlugin.js.map +1 -0
  65. package/lib/commonjs/plugins/timeline/timelineStore.js +61 -0
  66. package/lib/commonjs/plugins/timeline/timelineStore.js.map +1 -0
  67. package/lib/module/core/DebugBubble.js +131 -0
  68. package/lib/module/core/DebugBubble.js.map +1 -0
  69. package/lib/module/core/DebugOverlay.js +176 -0
  70. package/lib/module/core/DebugOverlay.js.map +1 -0
  71. package/lib/module/core/DebuggerProvider.js +167 -0
  72. package/lib/module/core/DebuggerProvider.js.map +1 -0
  73. package/lib/module/core/GestureDetector.js +75 -0
  74. package/lib/module/core/GestureDetector.js.map +1 -0
  75. package/lib/module/core/PluginRegistry.js +116 -0
  76. package/lib/module/core/PluginRegistry.js.map +1 -0
  77. package/lib/module/core/theme.js +43 -0
  78. package/lib/module/core/theme.js.map +1 -0
  79. package/lib/module/core/types.js +2 -0
  80. package/lib/module/core/types.js.map +1 -0
  81. package/lib/module/core/useDebugger.js +21 -0
  82. package/lib/module/core/useDebugger.js.map +1 -0
  83. package/lib/module/core/utils.js +219 -0
  84. package/lib/module/core/utils.js.map +1 -0
  85. package/lib/module/index.js +44 -0
  86. package/lib/module/index.js.map +1 -0
  87. package/lib/module/plugins/console/ConsoleInterceptor.js +97 -0
  88. package/lib/module/plugins/console/ConsoleInterceptor.js.map +1 -0
  89. package/lib/module/plugins/console/ConsoleViewerPlugin.js +262 -0
  90. package/lib/module/plugins/console/ConsoleViewerPlugin.js.map +1 -0
  91. package/lib/module/plugins/crashReporter/CrashReporterPlugin.js +357 -0
  92. package/lib/module/plugins/crashReporter/CrashReporterPlugin.js.map +1 -0
  93. package/lib/module/plugins/customActions/CustomActionsPlugin.js +211 -0
  94. package/lib/module/plugins/customActions/CustomActionsPlugin.js.map +1 -0
  95. package/lib/module/plugins/customActions/actionStore.js +38 -0
  96. package/lib/module/plugins/customActions/actionStore.js.map +1 -0
  97. package/lib/module/plugins/deepLinkTester/DeepLinkTesterPlugin.js +261 -0
  98. package/lib/module/plugins/deepLinkTester/DeepLinkTesterPlugin.js.map +1 -0
  99. package/lib/module/plugins/deviceInfo/DeviceInfoPlugin.js +177 -0
  100. package/lib/module/plugins/deviceInfo/DeviceInfoPlugin.js.map +1 -0
  101. package/lib/module/plugins/featureFlags/FeatureFlagsPlugin.js +374 -0
  102. package/lib/module/plugins/featureFlags/FeatureFlagsPlugin.js.map +1 -0
  103. package/lib/module/plugins/featureFlags/flagStore.js +117 -0
  104. package/lib/module/plugins/featureFlags/flagStore.js.map +1 -0
  105. package/lib/module/plugins/navigationInspector/NavigationInspectorPlugin.js +243 -0
  106. package/lib/module/plugins/navigationInspector/NavigationInspectorPlugin.js.map +1 -0
  107. package/lib/module/plugins/navigationInspector/navigationStore.js +58 -0
  108. package/lib/module/plugins/navigationInspector/navigationStore.js.map +1 -0
  109. package/lib/module/plugins/network/NetworkInspectorPlugin.js +703 -0
  110. package/lib/module/plugins/network/NetworkInspectorPlugin.js.map +1 -0
  111. package/lib/module/plugins/network/NetworkInterceptor.js +299 -0
  112. package/lib/module/plugins/network/NetworkInterceptor.js.map +1 -0
  113. package/lib/module/plugins/performance/PerformanceMonitorPlugin.js +254 -0
  114. package/lib/module/plugins/performance/PerformanceMonitorPlugin.js.map +1 -0
  115. package/lib/module/plugins/remoteConfig/RemoteConfigPlugin.js +258 -0
  116. package/lib/module/plugins/remoteConfig/RemoteConfigPlugin.js.map +1 -0
  117. package/lib/module/plugins/remoteConfig/remoteConfigStore.js +43 -0
  118. package/lib/module/plugins/remoteConfig/remoteConfigStore.js.map +1 -0
  119. package/lib/module/plugins/stateInspector/StateInspectorPlugin.js +372 -0
  120. package/lib/module/plugins/stateInspector/StateInspectorPlugin.js.map +1 -0
  121. package/lib/module/plugins/stateInspector/stateAdapterRegistry.js +54 -0
  122. package/lib/module/plugins/stateInspector/stateAdapterRegistry.js.map +1 -0
  123. package/lib/module/plugins/storageBrowser/StorageBrowserPlugin.js +489 -0
  124. package/lib/module/plugins/storageBrowser/StorageBrowserPlugin.js.map +1 -0
  125. package/lib/module/plugins/storageBrowser/storageAdapterRegistry.js +36 -0
  126. package/lib/module/plugins/storageBrowser/storageAdapterRegistry.js.map +1 -0
  127. package/lib/module/plugins/timeline/TimelinePlugin.js +287 -0
  128. package/lib/module/plugins/timeline/TimelinePlugin.js.map +1 -0
  129. package/lib/module/plugins/timeline/timelineStore.js +54 -0
  130. package/lib/module/plugins/timeline/timelineStore.js.map +1 -0
  131. package/lib/typescript/core/DebugBubble.d.ts +22 -0
  132. package/lib/typescript/core/DebugBubble.d.ts.map +1 -0
  133. package/lib/typescript/core/DebugOverlay.d.ts +18 -0
  134. package/lib/typescript/core/DebugOverlay.d.ts.map +1 -0
  135. package/lib/typescript/core/DebuggerProvider.d.ts +25 -0
  136. package/lib/typescript/core/DebuggerProvider.d.ts.map +1 -0
  137. package/lib/typescript/core/GestureDetector.d.ts +20 -0
  138. package/lib/typescript/core/GestureDetector.d.ts.map +1 -0
  139. package/lib/typescript/core/PluginRegistry.d.ts +41 -0
  140. package/lib/typescript/core/PluginRegistry.d.ts.map +1 -0
  141. package/lib/typescript/core/theme.d.ts +11 -0
  142. package/lib/typescript/core/theme.d.ts.map +1 -0
  143. package/lib/typescript/core/types.d.ts +269 -0
  144. package/lib/typescript/core/types.d.ts.map +1 -0
  145. package/lib/typescript/core/useDebugger.d.ts +14 -0
  146. package/lib/typescript/core/useDebugger.d.ts.map +1 -0
  147. package/lib/typescript/core/utils.d.ts +46 -0
  148. package/lib/typescript/core/utils.d.ts.map +1 -0
  149. package/lib/typescript/index.d.ts +23 -0
  150. package/lib/typescript/index.d.ts.map +1 -0
  151. package/lib/typescript/plugins/console/ConsoleInterceptor.d.ts +32 -0
  152. package/lib/typescript/plugins/console/ConsoleInterceptor.d.ts.map +1 -0
  153. package/lib/typescript/plugins/console/ConsoleViewerPlugin.d.ts +3 -0
  154. package/lib/typescript/plugins/console/ConsoleViewerPlugin.d.ts.map +1 -0
  155. package/lib/typescript/plugins/crashReporter/CrashReporterPlugin.d.ts +3 -0
  156. package/lib/typescript/plugins/crashReporter/CrashReporterPlugin.d.ts.map +1 -0
  157. package/lib/typescript/plugins/customActions/CustomActionsPlugin.d.ts +3 -0
  158. package/lib/typescript/plugins/customActions/CustomActionsPlugin.d.ts.map +1 -0
  159. package/lib/typescript/plugins/customActions/actionStore.d.ts +16 -0
  160. package/lib/typescript/plugins/customActions/actionStore.d.ts.map +1 -0
  161. package/lib/typescript/plugins/deepLinkTester/DeepLinkTesterPlugin.d.ts +3 -0
  162. package/lib/typescript/plugins/deepLinkTester/DeepLinkTesterPlugin.d.ts.map +1 -0
  163. package/lib/typescript/plugins/deviceInfo/DeviceInfoPlugin.d.ts +3 -0
  164. package/lib/typescript/plugins/deviceInfo/DeviceInfoPlugin.d.ts.map +1 -0
  165. package/lib/typescript/plugins/featureFlags/FeatureFlagsPlugin.d.ts +3 -0
  166. package/lib/typescript/plugins/featureFlags/FeatureFlagsPlugin.d.ts.map +1 -0
  167. package/lib/typescript/plugins/featureFlags/flagStore.d.ts +45 -0
  168. package/lib/typescript/plugins/featureFlags/flagStore.d.ts.map +1 -0
  169. package/lib/typescript/plugins/navigationInspector/NavigationInspectorPlugin.d.ts +3 -0
  170. package/lib/typescript/plugins/navigationInspector/NavigationInspectorPlugin.d.ts.map +1 -0
  171. package/lib/typescript/plugins/navigationInspector/navigationStore.d.ts +30 -0
  172. package/lib/typescript/plugins/navigationInspector/navigationStore.d.ts.map +1 -0
  173. package/lib/typescript/plugins/network/NetworkInspectorPlugin.d.ts +3 -0
  174. package/lib/typescript/plugins/network/NetworkInspectorPlugin.d.ts.map +1 -0
  175. package/lib/typescript/plugins/network/NetworkInterceptor.d.ts +42 -0
  176. package/lib/typescript/plugins/network/NetworkInterceptor.d.ts.map +1 -0
  177. package/lib/typescript/plugins/performance/PerformanceMonitorPlugin.d.ts +3 -0
  178. package/lib/typescript/plugins/performance/PerformanceMonitorPlugin.d.ts.map +1 -0
  179. package/lib/typescript/plugins/remoteConfig/RemoteConfigPlugin.d.ts +3 -0
  180. package/lib/typescript/plugins/remoteConfig/RemoteConfigPlugin.d.ts.map +1 -0
  181. package/lib/typescript/plugins/remoteConfig/remoteConfigStore.d.ts +20 -0
  182. package/lib/typescript/plugins/remoteConfig/remoteConfigStore.d.ts.map +1 -0
  183. package/lib/typescript/plugins/stateInspector/StateInspectorPlugin.d.ts +3 -0
  184. package/lib/typescript/plugins/stateInspector/StateInspectorPlugin.d.ts.map +1 -0
  185. package/lib/typescript/plugins/stateInspector/stateAdapterRegistry.d.ts +34 -0
  186. package/lib/typescript/plugins/stateInspector/stateAdapterRegistry.d.ts.map +1 -0
  187. package/lib/typescript/plugins/storageBrowser/StorageBrowserPlugin.d.ts +3 -0
  188. package/lib/typescript/plugins/storageBrowser/StorageBrowserPlugin.d.ts.map +1 -0
  189. package/lib/typescript/plugins/storageBrowser/storageAdapterRegistry.d.ts +16 -0
  190. package/lib/typescript/plugins/storageBrowser/storageAdapterRegistry.d.ts.map +1 -0
  191. package/lib/typescript/plugins/timeline/TimelinePlugin.d.ts +3 -0
  192. package/lib/typescript/plugins/timeline/TimelinePlugin.d.ts.map +1 -0
  193. package/lib/typescript/plugins/timeline/timelineStore.d.ts +24 -0
  194. package/lib/typescript/plugins/timeline/timelineStore.d.ts.map +1 -0
  195. package/package.json +131 -0
  196. package/src/core/DebugBubble.tsx +149 -0
  197. package/src/core/DebugOverlay.tsx +211 -0
  198. package/src/core/DebuggerProvider.tsx +211 -0
  199. package/src/core/GestureDetector.tsx +95 -0
  200. package/src/core/PluginRegistry.ts +118 -0
  201. package/src/core/theme.ts +41 -0
  202. package/src/core/types.ts +339 -0
  203. package/src/core/useDebugger.ts +24 -0
  204. package/src/core/utils.ts +221 -0
  205. package/src/index.ts +67 -0
  206. package/src/plugins/console/ConsoleInterceptor.ts +110 -0
  207. package/src/plugins/console/ConsoleViewerPlugin.tsx +241 -0
  208. package/src/plugins/crashReporter/CrashReporterPlugin.tsx +316 -0
  209. package/src/plugins/customActions/CustomActionsPlugin.tsx +199 -0
  210. package/src/plugins/customActions/actionStore.ts +49 -0
  211. package/src/plugins/deepLinkTester/DeepLinkTesterPlugin.tsx +213 -0
  212. package/src/plugins/deviceInfo/DeviceInfoPlugin.tsx +153 -0
  213. package/src/plugins/featureFlags/FeatureFlagsPlugin.tsx +338 -0
  214. package/src/plugins/featureFlags/flagStore.ts +118 -0
  215. package/src/plugins/navigationInspector/NavigationInspectorPlugin.tsx +170 -0
  216. package/src/plugins/navigationInspector/navigationStore.ts +70 -0
  217. package/src/plugins/network/NetworkInspectorPlugin.tsx +598 -0
  218. package/src/plugins/network/NetworkInterceptor.ts +344 -0
  219. package/src/plugins/performance/PerformanceMonitorPlugin.tsx +194 -0
  220. package/src/plugins/remoteConfig/RemoteConfigPlugin.tsx +205 -0
  221. package/src/plugins/remoteConfig/remoteConfigStore.ts +48 -0
  222. package/src/plugins/stateInspector/StateInspectorPlugin.tsx +342 -0
  223. package/src/plugins/stateInspector/stateAdapterRegistry.ts +66 -0
  224. package/src/plugins/storageBrowser/StorageBrowserPlugin.tsx +410 -0
  225. package/src/plugins/storageBrowser/storageAdapterRegistry.ts +47 -0
  226. package/src/plugins/timeline/TimelinePlugin.tsx +242 -0
  227. package/src/plugins/timeline/timelineStore.ts +65 -0
@@ -0,0 +1,287 @@
1
+ import React, { useState, useEffect, useCallback, useMemo } from 'react';
2
+ import { View, Text, FlatList, TouchableOpacity, TextInput, ScrollView, StyleSheet } from 'react-native';
3
+ import { timelineStore } from './timelineStore';
4
+ import { formatTimestamp, safeStringify, copyToClipboard } from '../../core/utils';
5
+ const CATEGORY_COLORS = {
6
+ navigation: '#5B8DEF',
7
+ network: '#FF9500',
8
+ state: '#AF52DE',
9
+ user: '#34C759',
10
+ lifecycle: '#FF3B30',
11
+ custom: '#8E8E93'
12
+ };
13
+ const TimelinePanel = ({
14
+ theme
15
+ }) => {
16
+ const [events, setEvents] = useState([]);
17
+ const [searchQuery, setSearchQuery] = useState('');
18
+ const [categoryFilter, setCategoryFilter] = useState(null);
19
+ const [expandedId, setExpandedId] = useState(null);
20
+ useEffect(() => {
21
+ const unsub = timelineStore.subscribe(setEvents);
22
+ return unsub;
23
+ }, []);
24
+ const categories = useMemo(() => {
25
+ const cats = new Set();
26
+ for (const e of events) cats.add(e.category);
27
+ return Array.from(cats);
28
+ }, [events]);
29
+ const filteredEvents = useMemo(() => {
30
+ let filtered = events;
31
+ if (categoryFilter) {
32
+ filtered = filtered.filter(e => e.category === categoryFilter);
33
+ }
34
+ if (searchQuery) {
35
+ const q = searchQuery.toLowerCase();
36
+ filtered = filtered.filter(e => e.title.toLowerCase().includes(q) || e.category.toLowerCase().includes(q));
37
+ }
38
+ return filtered;
39
+ }, [events, categoryFilter, searchQuery]);
40
+ const handleClear = useCallback(() => {
41
+ timelineStore.clear();
42
+ setExpandedId(null);
43
+ }, []);
44
+ return /*#__PURE__*/React.createElement(View, {
45
+ style: styles.container
46
+ }, /*#__PURE__*/React.createElement(ScrollView, {
47
+ horizontal: true,
48
+ showsHorizontalScrollIndicator: false,
49
+ style: [styles.filterBar, {
50
+ backgroundColor: theme.surface
51
+ }],
52
+ contentContainerStyle: styles.filterContent
53
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
54
+ style: [styles.filterChip, {
55
+ backgroundColor: !categoryFilter ? theme.accent : theme.surfaceAlt,
56
+ borderColor: theme.border
57
+ }],
58
+ onPress: () => setCategoryFilter(null),
59
+ activeOpacity: 0.7
60
+ }, /*#__PURE__*/React.createElement(Text, {
61
+ style: [styles.filterText, {
62
+ color: !categoryFilter ? '#FFF' : theme.textSecondary
63
+ }]
64
+ }, "All (", events.length, ")")), categories.map(cat => /*#__PURE__*/React.createElement(TouchableOpacity, {
65
+ key: cat,
66
+ style: [styles.filterChip, {
67
+ backgroundColor: categoryFilter === cat ? CATEGORY_COLORS[cat] || theme.accent : theme.surfaceAlt,
68
+ borderColor: theme.border
69
+ }],
70
+ onPress: () => setCategoryFilter(categoryFilter === cat ? null : cat),
71
+ activeOpacity: 0.7
72
+ }, /*#__PURE__*/React.createElement(Text, {
73
+ style: [styles.filterText, {
74
+ color: categoryFilter === cat ? '#FFF' : CATEGORY_COLORS[cat] || theme.textSecondary
75
+ }]
76
+ }, cat))), /*#__PURE__*/React.createElement(TouchableOpacity, {
77
+ onPress: handleClear,
78
+ style: [styles.filterChip, {
79
+ backgroundColor: theme.surfaceAlt,
80
+ borderColor: theme.error
81
+ }],
82
+ activeOpacity: 0.7
83
+ }, /*#__PURE__*/React.createElement(Text, {
84
+ style: [styles.filterText, {
85
+ color: theme.error
86
+ }]
87
+ }, "Clear"))), /*#__PURE__*/React.createElement(View, {
88
+ style: [styles.searchContainer, {
89
+ backgroundColor: theme.surface
90
+ }]
91
+ }, /*#__PURE__*/React.createElement(TextInput, {
92
+ style: [styles.searchInput, {
93
+ color: theme.text,
94
+ backgroundColor: theme.surfaceAlt,
95
+ borderColor: theme.border
96
+ }],
97
+ placeholder: "Search events...",
98
+ placeholderTextColor: theme.textMuted,
99
+ value: searchQuery,
100
+ onChangeText: setSearchQuery,
101
+ autoCapitalize: "none"
102
+ })), /*#__PURE__*/React.createElement(FlatList, {
103
+ data: filteredEvents,
104
+ keyExtractor: item => item.id,
105
+ renderItem: ({
106
+ item,
107
+ index
108
+ }) => {
109
+ const catColor = CATEGORY_COLORS[item.category] || theme.textMuted;
110
+ const timeDiff = index < filteredEvents.length - 1 ? item.timestamp - filteredEvents[index + 1].timestamp : 0;
111
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
112
+ style: [styles.eventRow, {
113
+ borderBottomColor: theme.border
114
+ }],
115
+ onPress: () => setExpandedId(expandedId === item.id ? null : item.id),
116
+ activeOpacity: 0.7
117
+ }, /*#__PURE__*/React.createElement(View, {
118
+ style: styles.timelineTrack
119
+ }, /*#__PURE__*/React.createElement(View, {
120
+ style: [styles.timelineDot, {
121
+ backgroundColor: catColor
122
+ }]
123
+ }), index < filteredEvents.length - 1 && /*#__PURE__*/React.createElement(View, {
124
+ style: [styles.timelineLine, {
125
+ backgroundColor: theme.border
126
+ }]
127
+ })), /*#__PURE__*/React.createElement(View, {
128
+ style: styles.eventContent
129
+ }, /*#__PURE__*/React.createElement(View, {
130
+ style: styles.eventHeader
131
+ }, /*#__PURE__*/React.createElement(View, {
132
+ style: [styles.catBadge, {
133
+ backgroundColor: `${catColor}20`
134
+ }]
135
+ }, /*#__PURE__*/React.createElement(Text, {
136
+ style: [styles.catText, {
137
+ color: catColor
138
+ }]
139
+ }, item.category)), /*#__PURE__*/React.createElement(Text, {
140
+ style: [styles.eventTime, {
141
+ color: theme.textMuted
142
+ }]
143
+ }, formatTimestamp(item.timestamp))), /*#__PURE__*/React.createElement(Text, {
144
+ style: [styles.eventTitle, {
145
+ color: theme.text
146
+ }]
147
+ }, item.title), timeDiff > 0 && /*#__PURE__*/React.createElement(Text, {
148
+ style: [styles.timeDiff, {
149
+ color: theme.textMuted
150
+ }]
151
+ }, "+", timeDiff >= 1000 ? `${(timeDiff / 1000).toFixed(1)}s` : `${timeDiff}ms`), expandedId === item.id && item.data !== undefined && item.data !== null && /*#__PURE__*/React.createElement(TouchableOpacity, {
152
+ style: [styles.dataBlock, {
153
+ backgroundColor: theme.codeBackground
154
+ }],
155
+ onLongPress: () => copyToClipboard(safeStringify(item.data)),
156
+ activeOpacity: 0.7
157
+ }, /*#__PURE__*/React.createElement(Text, {
158
+ style: [styles.dataText, {
159
+ color: theme.codeText
160
+ }],
161
+ selectable: true
162
+ }, String(safeStringify(item.data))))));
163
+ },
164
+ ListEmptyComponent: /*#__PURE__*/React.createElement(View, {
165
+ style: styles.emptyContainer
166
+ }, /*#__PURE__*/React.createElement(Text, {
167
+ style: [styles.emptyText, {
168
+ color: theme.textMuted
169
+ }]
170
+ }, "No events logged")),
171
+ initialNumToRender: 30
172
+ }));
173
+ };
174
+ const styles = StyleSheet.create({
175
+ container: {
176
+ flex: 1
177
+ },
178
+ filterBar: {
179
+ maxHeight: 44
180
+ },
181
+ filterContent: {
182
+ paddingHorizontal: 12,
183
+ paddingVertical: 8,
184
+ gap: 6
185
+ },
186
+ filterChip: {
187
+ paddingHorizontal: 10,
188
+ paddingVertical: 4,
189
+ borderRadius: 12,
190
+ borderWidth: 1
191
+ },
192
+ filterText: {
193
+ fontSize: 11,
194
+ fontWeight: '600'
195
+ },
196
+ searchContainer: {
197
+ paddingHorizontal: 12,
198
+ paddingBottom: 8
199
+ },
200
+ searchInput: {
201
+ height: 36,
202
+ borderRadius: 8,
203
+ paddingHorizontal: 12,
204
+ fontSize: 13,
205
+ borderWidth: 1
206
+ },
207
+ eventRow: {
208
+ flexDirection: 'row',
209
+ borderBottomWidth: StyleSheet.hairlineWidth
210
+ },
211
+ timelineTrack: {
212
+ width: 30,
213
+ alignItems: 'center',
214
+ paddingTop: 14
215
+ },
216
+ timelineDot: {
217
+ width: 10,
218
+ height: 10,
219
+ borderRadius: 5,
220
+ zIndex: 1
221
+ },
222
+ timelineLine: {
223
+ width: 2,
224
+ flex: 1,
225
+ marginTop: -2
226
+ },
227
+ eventContent: {
228
+ flex: 1,
229
+ paddingVertical: 10,
230
+ paddingRight: 12
231
+ },
232
+ eventHeader: {
233
+ flexDirection: 'row',
234
+ justifyContent: 'space-between',
235
+ alignItems: 'center',
236
+ marginBottom: 4
237
+ },
238
+ catBadge: {
239
+ paddingHorizontal: 6,
240
+ paddingVertical: 2,
241
+ borderRadius: 4
242
+ },
243
+ catText: {
244
+ fontSize: 9,
245
+ fontWeight: '800',
246
+ textTransform: 'uppercase',
247
+ letterSpacing: 0.5
248
+ },
249
+ eventTime: {
250
+ fontSize: 10
251
+ },
252
+ eventTitle: {
253
+ fontSize: 13,
254
+ fontWeight: '500'
255
+ },
256
+ timeDiff: {
257
+ fontSize: 10,
258
+ marginTop: 2
259
+ },
260
+ dataBlock: {
261
+ padding: 8,
262
+ borderRadius: 6,
263
+ marginTop: 8
264
+ },
265
+ dataText: {
266
+ fontSize: 11,
267
+ fontFamily: 'monospace',
268
+ lineHeight: 16
269
+ },
270
+ emptyContainer: {
271
+ alignItems: 'center',
272
+ paddingVertical: 40
273
+ },
274
+ emptyText: {
275
+ fontSize: 13
276
+ }
277
+ });
278
+ export function createTimelinePlugin() {
279
+ return {
280
+ id: 'timeline',
281
+ name: 'Timeline',
282
+ icon: '📊',
283
+ component: TimelinePanel,
284
+ order: 130
285
+ };
286
+ }
287
+ //# sourceMappingURL=TimelinePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","useMemo","View","Text","FlatList","TouchableOpacity","TextInput","ScrollView","StyleSheet","timelineStore","formatTimestamp","safeStringify","copyToClipboard","CATEGORY_COLORS","navigation","network","state","user","lifecycle","custom","TimelinePanel","theme","events","setEvents","searchQuery","setSearchQuery","categoryFilter","setCategoryFilter","expandedId","setExpandedId","unsub","subscribe","categories","cats","Set","e","add","category","Array","from","filteredEvents","filtered","filter","q","toLowerCase","title","includes","handleClear","clear","createElement","style","styles","container","horizontal","showsHorizontalScrollIndicator","filterBar","backgroundColor","surface","contentContainerStyle","filterContent","filterChip","accent","surfaceAlt","borderColor","border","onPress","activeOpacity","filterText","color","textSecondary","length","map","cat","key","error","searchContainer","searchInput","text","placeholder","placeholderTextColor","textMuted","value","onChangeText","autoCapitalize","data","keyExtractor","item","id","renderItem","index","catColor","timeDiff","timestamp","eventRow","borderBottomColor","timelineTrack","timelineDot","timelineLine","eventContent","eventHeader","catBadge","catText","eventTime","eventTitle","toFixed","undefined","dataBlock","codeBackground","onLongPress","dataText","codeText","selectable","String","ListEmptyComponent","emptyContainer","emptyText","initialNumToRender","create","flex","maxHeight","paddingHorizontal","paddingVertical","gap","borderRadius","borderWidth","fontSize","fontWeight","paddingBottom","height","flexDirection","borderBottomWidth","hairlineWidth","width","alignItems","paddingTop","zIndex","marginTop","paddingRight","justifyContent","marginBottom","textTransform","letterSpacing","padding","fontFamily","lineHeight","createTimelinePlugin","name","icon","component","order"],"sourceRoot":"../../../../src","sources":["plugins/timeline/TimelinePlugin.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ import { generateId } from '../../core/utils';
2
+ /**
3
+ * TimelineStore — Global event logger for tracking app lifecycle events.
4
+ *
5
+ * Records events with category, timestamp, and optional data.
6
+ * Useful for tracking user flows, state transitions, and debugging sequences.
7
+ */
8
+ class TimelineStoreClass {
9
+ events = [];
10
+ listeners = new Set();
11
+ maxEvents = 500;
12
+
13
+ /** Log a timeline event. */
14
+ log(category, title, data) {
15
+ const event = {
16
+ id: generateId(),
17
+ timestamp: Date.now(),
18
+ category,
19
+ title,
20
+ data
21
+ };
22
+ this.events = [event, ...this.events].slice(0, this.maxEvents);
23
+ this.notify();
24
+ }
25
+ getAll() {
26
+ return [...this.events];
27
+ }
28
+ clear() {
29
+ this.events = [];
30
+ this.notify();
31
+ }
32
+ subscribe(listener) {
33
+ this.listeners.add(listener);
34
+ listener(this.events);
35
+ return () => this.listeners.delete(listener);
36
+ }
37
+ notify() {
38
+ const snapshot = this.events;
39
+ for (const l of this.listeners) {
40
+ try {
41
+ l(snapshot);
42
+ } catch {
43
+ /* ignore */
44
+ }
45
+ }
46
+ }
47
+ }
48
+ export const timelineStore = new TimelineStoreClass();
49
+
50
+ /** Log a timeline event. */
51
+ export function logTimelineEvent(category, title, data) {
52
+ timelineStore.log(category, title, data);
53
+ }
54
+ //# sourceMappingURL=timelineStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateId","TimelineStoreClass","events","listeners","Set","maxEvents","log","category","title","data","event","id","timestamp","Date","now","slice","notify","getAll","clear","subscribe","listener","add","delete","snapshot","l","timelineStore","logTimelineEvent"],"sourceRoot":"../../../../src","sources":["plugins/timeline/timelineStore.ts"],"mappings":"AACA,SAASA,UAAU,QAAQ,kBAAkB;AAI7C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,CAAC;EACfC,MAAM,GAAoB,EAAE;EAC5BC,SAAS,GAA0B,IAAIC,GAAG,CAAC,CAAC;EAC5CC,SAAS,GAAG,GAAG;;EAEvB;EACAC,GAAGA,CAACC,QAAmC,EAAEC,KAAa,EAAEC,IAAc,EAAQ;IAC5E,MAAMC,KAAoB,GAAG;MAC3BC,EAAE,EAAEX,UAAU,CAAC,CAAC;MAChBY,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;MACrBP,QAAQ;MACRC,KAAK;MACLC;IACF,CAAC;IACD,IAAI,CAACP,MAAM,GAAG,CAACQ,KAAK,EAAE,GAAG,IAAI,CAACR,MAAM,CAAC,CAACa,KAAK,CAAC,CAAC,EAAE,IAAI,CAACV,SAAS,CAAC;IAC9D,IAAI,CAACW,MAAM,CAAC,CAAC;EACf;EAEAC,MAAMA,CAAA,EAAoB;IACxB,OAAO,CAAC,GAAG,IAAI,CAACf,MAAM,CAAC;EACzB;EACAgB,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAChB,MAAM,GAAG,EAAE;IAChB,IAAI,CAACc,MAAM,CAAC,CAAC;EACf;EAEAG,SAASA,CAACC,QAA0B,EAAc;IAChD,IAAI,CAACjB,SAAS,CAACkB,GAAG,CAACD,QAAQ,CAAC;IAC5BA,QAAQ,CAAC,IAAI,CAAClB,MAAM,CAAC;IACrB,OAAO,MAAM,IAAI,CAACC,SAAS,CAACmB,MAAM,CAACF,QAAQ,CAAC;EAC9C;EAEQJ,MAAMA,CAAA,EAAS;IACrB,MAAMO,QAAQ,GAAG,IAAI,CAACrB,MAAM;IAC5B,KAAK,MAAMsB,CAAC,IAAI,IAAI,CAACrB,SAAS,EAAE;MAC9B,IAAI;QACFqB,CAAC,CAACD,QAAQ,CAAC;MACb,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;AACF;AAEA,OAAO,MAAME,aAAa,GAAG,IAAIxB,kBAAkB,CAAC,CAAC;;AAErD;AACA,OAAO,SAASyB,gBAAgBA,CAC9BnB,QAAmC,EACnCC,KAAa,EACbC,IAAc,EACR;EACNgB,aAAa,CAACnB,GAAG,CAACC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { DebuggerTheme } from './types';
3
+ interface DebugBubbleProps {
4
+ onPress: () => void;
5
+ theme: DebuggerTheme;
6
+ size?: number;
7
+ initialPosition?: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ }
12
+ /**
13
+ * DebugBubble — A floating, draggable FAB that opens the debug overlay.
14
+ *
15
+ * - Fully draggable via PanResponder
16
+ * - Snaps to the nearest screen edge on release
17
+ * - Pulses subtly to indicate interactivity
18
+ * - Renders above all other content
19
+ */
20
+ export declare const DebugBubble: React.FC<DebugBubbleProps>;
21
+ export {};
22
+ //# sourceMappingURL=DebugBubble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugBubble.d.ts","sourceRoot":"","sources":["../../../src/core/DebugBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAU/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiGlD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { DebuggerPlugin, DebuggerTheme } from './types';
3
+ interface DebugOverlayProps {
4
+ plugins: DebuggerPlugin[];
5
+ theme: DebuggerTheme;
6
+ onClose: () => void;
7
+ }
8
+ /**
9
+ * DebugOverlay — Full-screen modal with tab navigation for plugins.
10
+ *
11
+ * - Slide-up animation on open
12
+ * - Scrollable tab bar at the top
13
+ * - Each tab renders a plugin's component
14
+ * - Close button in the header
15
+ */
16
+ export declare const DebugOverlay: React.FC<DebugOverlayProps>;
17
+ export {};
18
+ //# sourceMappingURL=DebugOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugOverlay.d.ts","sourceRoot":"","sources":["../../../src/core/DebugOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAYtE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7D,UAAU,iBAAiB;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6GpD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import type { DebuggerConfig, DebuggerContextValue, ChildrenProp } from './types';
3
+ export declare const DebuggerContext: React.Context<DebuggerContextValue | null>;
4
+ interface DebuggerProviderProps extends ChildrenProp {
5
+ config?: DebuggerConfig;
6
+ }
7
+ /**
8
+ * DebuggerProvider — Wrap your app with this to enable the production debugger.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * import { DebuggerProvider } from 'react-native-prod-debugger';
13
+ *
14
+ * export default function App() {
15
+ * return (
16
+ * <DebuggerProvider config={{ appVersion: '1.2.3' }}>
17
+ * <YourApp />
18
+ * </DebuggerProvider>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
23
+ export declare const DebuggerProvider: React.FC<DebuggerProviderProps>;
24
+ export {};
25
+ //# sourceMappingURL=DebuggerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebuggerProvider.d.ts","sourceRoot":"","sources":["../../../src/core/DebuggerProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2E,MAAM,OAAO,CAAC;AAEhG,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAC;AAwBlG,eAAO,MAAM,eAAe,4CAAmD,CAAC;AA0BhF,UAAU,qBAAsB,SAAQ,YAAY;IAClD,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoI5D,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import type { GestureType, ChildrenProp } from './types';
3
+ interface GestureDetectorProps extends ChildrenProp {
4
+ gesture: GestureType;
5
+ numberOfFingers: number;
6
+ longPressDuration: number;
7
+ onActivate: () => void;
8
+ }
9
+ /**
10
+ * GestureDetector — Invisible wrapper that detects multi-touch gestures.
11
+ *
12
+ * Supported gestures:
13
+ * - `threeFingerLongPress`: N fingers held down for duration ms
14
+ * - `twoFingerTripleTap`: 2 fingers tapped 3 times quickly
15
+ * - `shake`: (detected elsewhere — React Native DevMenu shim)
16
+ * - `custom`: (no built-in behavior — consumers control programmatically)
17
+ */
18
+ export declare const GestureDetector: React.FC<GestureDetectorProps>;
19
+ export {};
20
+ //# sourceMappingURL=GestureDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GestureDetector.d.ts","sourceRoot":"","sources":["../../../src/core/GestureDetector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,UAAU,oBAAqB,SAAQ,YAAY;IACjD,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsE1D,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { DebuggerPlugin } from './types';
2
+ /**
3
+ * PluginRegistry — Central registry for all debugger plugins.
4
+ *
5
+ * Plugins are stored in a static array and sorted by their `order` property.
6
+ * Built-in plugins are registered automatically by DebuggerProvider.
7
+ * Custom plugins can be registered by consumers at any time.
8
+ */
9
+ declare class PluginRegistryClass {
10
+ private plugins;
11
+ private listeners;
12
+ /** Register a plugin. Replaces existing plugin with the same ID. */
13
+ register(plugin: DebuggerPlugin): void;
14
+ /** Unregister a plugin by ID. */
15
+ unregister(id: string): void;
16
+ /** Get all registered plugins, sorted by order. */
17
+ getAll(): DebuggerPlugin[];
18
+ /** Get a plugin by ID. */
19
+ get(id: string): DebuggerPlugin | undefined;
20
+ /** Check if a plugin is registered. */
21
+ has(id: string): boolean;
22
+ /** Get the count of registered plugins. */
23
+ get count(): number;
24
+ /** Subscribe to registry changes. Returns unsubscribe function. */
25
+ subscribe(listener: () => void): () => void;
26
+ /** Initialize all plugins (called by DebuggerProvider on mount). */
27
+ initAll(): void;
28
+ /** Destroy all plugins (called by DebuggerProvider on unmount). */
29
+ destroyAll(): void;
30
+ /** Clear all plugins from the registry. */
31
+ clear(): void;
32
+ private notify;
33
+ }
34
+ /** Singleton plugin registry instance. */
35
+ export declare const PluginRegistry: PluginRegistryClass;
36
+ /** Register a custom plugin. Convenience function. */
37
+ export declare function registerPlugin(plugin: DebuggerPlugin): void;
38
+ /** Unregister a plugin by ID. Convenience function. */
39
+ export declare function unregisterPlugin(id: string): void;
40
+ export {};
41
+ //# sourceMappingURL=PluginRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/PluginRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;GAMG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,SAAS,CAA8B;IAE/C,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAQtC,iCAAiC;IACjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAa5B,mDAAmD;IACnD,MAAM,IAAI,cAAc,EAAE;IAI1B,0BAA0B;IAC1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C,uCAAuC;IACvC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,2CAA2C;IAC3C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAYf,mEAAmE;IACnE,UAAU,IAAI,IAAI;IAYlB,2CAA2C;IAC3C,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,MAAM;CASf;AAED,0CAA0C;AAC1C,eAAO,MAAM,cAAc,qBAA4B,CAAC;AAExD,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAE3D;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,11 @@
1
+ import type { DebuggerTheme } from './types';
2
+ /**
3
+ * Default dark theme — designed for optimal readability on top of any app UI.
4
+ * High-contrast text, muted backgrounds with alpha transparency for the overlay.
5
+ */
6
+ export declare const darkTheme: DebuggerTheme;
7
+ /**
8
+ * Merge user theme overrides with the default dark theme.
9
+ */
10
+ export declare function createTheme(overrides?: Partial<DebuggerTheme>): DebuggerTheme;
11
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/core/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,aA0BvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAG7E"}