@buoy-gg/shared-ui 7.0.34 → 7.0.35

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 (165) hide show
  1. package/lib/commonjs/dataViewer/CyberpunkInput.js +3 -2
  2. package/lib/commonjs/dataViewer/DataTreeActionBar.js +3 -2
  3. package/lib/commonjs/dataViewer/DataTreeActionDock.js +2 -1
  4. package/lib/commonjs/dataViewer/DiffSummary.js +4 -3
  5. package/lib/commonjs/dataViewer/LiveExplorer.js +11 -10
  6. package/lib/commonjs/dataViewer/SplitDiffViewer.js +10 -9
  7. package/lib/commonjs/dataViewer/ThemedSplitView.js +12 -11
  8. package/lib/commonjs/dataViewer/ValueEditModal.js +6 -5
  9. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +4 -3
  10. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +15 -14
  11. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  12. package/lib/commonjs/icons/index.js +533 -1
  13. package/lib/commonjs/license/FreeAccountPrompt.js +2 -1
  14. package/lib/commonjs/license/LicenseEntryModal.js +2 -1
  15. package/lib/commonjs/ui/components/ChangeRow.js +2 -1
  16. package/lib/commonjs/ui/components/ClipboardHintBanner.js +2 -1
  17. package/lib/commonjs/ui/components/CompactRow.js +3 -2
  18. package/lib/commonjs/ui/components/DataInspector.js +3 -2
  19. package/lib/commonjs/ui/components/DetailView.js +2 -1
  20. package/lib/commonjs/ui/components/DynamicFilterView.js +8 -7
  21. package/lib/commonjs/ui/components/EntityFilterView.js +9 -8
  22. package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +5 -4
  23. package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +2 -1
  24. package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +5 -4
  25. package/lib/commonjs/ui/components/EventStepperFooter.js +4 -3
  26. package/lib/commonjs/ui/components/ExpandablePopover.js +12 -4
  27. package/lib/commonjs/ui/components/ExpandedInfoRow.js +3 -2
  28. package/lib/commonjs/ui/components/FilterComponents.js +2 -1
  29. package/lib/commonjs/ui/components/InfoRow.js +2 -1
  30. package/lib/commonjs/ui/components/Pill.js +2 -1
  31. package/lib/commonjs/ui/components/ToolFooter.js +3 -2
  32. package/lib/commonjs/ui/console/CyberpunkSectionButton.js +3 -2
  33. package/lib/commonjs/ui/fonts.js +12 -0
  34. package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  35. package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +12 -11
  36. package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +9 -8
  37. package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  38. package/lib/commonjs/ui/index.js +8 -0
  39. package/lib/commonjs/ui/toolTheme.js +4 -3
  40. package/lib/module/dataViewer/CyberpunkInput.js +3 -2
  41. package/lib/module/dataViewer/DataTreeActionBar.js +3 -2
  42. package/lib/module/dataViewer/DataTreeActionDock.js +2 -1
  43. package/lib/module/dataViewer/DiffSummary.js +4 -3
  44. package/lib/module/dataViewer/LiveExplorer.js +11 -11
  45. package/lib/module/dataViewer/SplitDiffViewer.js +10 -9
  46. package/lib/module/dataViewer/ThemedSplitView.js +12 -11
  47. package/lib/module/dataViewer/ValueEditModal.js +6 -5
  48. package/lib/module/dataViewer/VirtualizedDataExplorer.js +5 -4
  49. package/lib/module/dataViewer/tree/TreeDiffViewer.js +15 -15
  50. package/lib/module/hooks/safe-area-impl.js +1 -1
  51. package/lib/module/icons/index.js +27 -2
  52. package/lib/module/license/FreeAccountPrompt.js +2 -2
  53. package/lib/module/license/LicenseEntryModal.js +3 -3
  54. package/lib/module/ui/components/ChangeRow.js +2 -1
  55. package/lib/module/ui/components/ClipboardHintBanner.js +2 -1
  56. package/lib/module/ui/components/CompactRow.js +3 -2
  57. package/lib/module/ui/components/DataInspector.js +3 -2
  58. package/lib/module/ui/components/DetailView.js +2 -1
  59. package/lib/module/ui/components/DynamicFilterView.js +8 -7
  60. package/lib/module/ui/components/EntityFilterView.js +9 -8
  61. package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +6 -5
  62. package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +3 -2
  63. package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +6 -5
  64. package/lib/module/ui/components/EventStepperFooter.js +4 -3
  65. package/lib/module/ui/components/ExpandablePopover.js +12 -4
  66. package/lib/module/ui/components/ExpandedInfoRow.js +3 -2
  67. package/lib/module/ui/components/FilterComponents.js +2 -2
  68. package/lib/module/ui/components/InfoRow.js +2 -1
  69. package/lib/module/ui/components/Pill.js +2 -1
  70. package/lib/module/ui/components/ToolFooter.js +3 -2
  71. package/lib/module/ui/console/CyberpunkSectionButton.js +3 -2
  72. package/lib/module/ui/fonts.js +8 -0
  73. package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  74. package/lib/module/ui/gameUI/components/GameUICompactStats.js +12 -11
  75. package/lib/module/ui/gameUI/components/GameUIIssuesList.js +9 -8
  76. package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  77. package/lib/module/ui/index.js +3 -0
  78. package/lib/module/ui/toolTheme.js +4 -4
  79. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/dataViewer/ThemedSplitView.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/dataViewer/ValueEditModal.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  90. package/lib/typescript/commonjs/icons/index.d.ts +4 -1
  91. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts +5 -1
  106. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/ui/components/InfoRow.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/ui/components/Pill.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/ui/fonts.d.ts +7 -0
  114. package/lib/typescript/commonjs/ui/fonts.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/ui/index.d.ts +1 -0
  120. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +1 -1
  122. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
  123. package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  124. package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  125. package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +1 -1
  126. package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
  127. package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  128. package/lib/typescript/module/dataViewer/ThemedSplitView.d.ts.map +1 -1
  129. package/lib/typescript/module/dataViewer/ValueEditModal.d.ts.map +1 -1
  130. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  131. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  132. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  133. package/lib/typescript/module/icons/index.d.ts +4 -1
  134. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  135. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  136. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  137. package/lib/typescript/module/ui/components/ChangeRow.d.ts.map +1 -1
  138. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  139. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  140. package/lib/typescript/module/ui/components/DataInspector.d.ts.map +1 -1
  141. package/lib/typescript/module/ui/components/DetailView.d.ts.map +1 -1
  142. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
  143. package/lib/typescript/module/ui/components/EntityFilterView.d.ts.map +1 -1
  144. package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  145. package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  146. package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  147. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
  148. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts +5 -1
  149. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +1 -1
  150. package/lib/typescript/module/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  151. package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +1 -1
  152. package/lib/typescript/module/ui/components/InfoRow.d.ts.map +1 -1
  153. package/lib/typescript/module/ui/components/Pill.d.ts.map +1 -1
  154. package/lib/typescript/module/ui/components/ToolFooter.d.ts.map +1 -1
  155. package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  156. package/lib/typescript/module/ui/fonts.d.ts +7 -0
  157. package/lib/typescript/module/ui/fonts.d.ts.map +1 -0
  158. package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  159. package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  160. package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  161. package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  162. package/lib/typescript/module/ui/index.d.ts +1 -0
  163. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  164. package/lib/typescript/module/ui/toolTheme.d.ts.map +1 -1
  165. package/package.json +4 -4
@@ -8,8 +8,9 @@ import { night } from "../ui/night/nightTheme.js";
8
8
  import { CopyButton } from "../ui/components/CopyButton.js";
9
9
  import { ChevronRight } from "../icons/index.js";
10
10
  import { IndentGuidesOverlay } from "./IndentGuidesOverlay.js";
11
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { monoFont } from "../ui/fonts.js";
12
12
  // Stable constants to prevent re-renders [[memory:4875251]]
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
14
  const HIT_SLOP_10 = {
14
15
  top: 10,
15
16
  bottom: 10,
@@ -174,7 +175,7 @@ const STABLE_STYLES = StyleSheet.create({
174
175
  fontSize: 12,
175
176
  fontWeight: "500",
176
177
  // font-medium
177
- fontFamily: "monospace",
178
+ fontFamily: monoFont,
178
179
  marginRight: 8,
179
180
  flexShrink: 1
180
181
  },
@@ -184,12 +185,12 @@ const STABLE_STYLES = StyleSheet.create({
184
185
  fontSize: 12,
185
186
  fontWeight: "500",
186
187
  // font-medium
187
- fontFamily: "monospace",
188
+ fontFamily: monoFont,
188
189
  flexShrink: 1
189
190
  },
190
191
  valueText: {
191
192
  fontSize: 12,
192
- fontFamily: "monospace",
193
+ fontFamily: monoFont,
193
194
  flex: 1,
194
195
  color: gameUIColors.primaryLight // text-gray-300
195
196
  },
@@ -19,7 +19,7 @@ import React, { useMemo, useState, useEffect, useRef } from "react";
19
19
  import { View, Text, ScrollView, StyleSheet, TouchableOpacity } from "react-native";
20
20
  import { gameUIColors, night } from "@buoy-gg/shared-ui";
21
21
  import { isAbsent } from "../lineDiff.js";
22
-
22
+ import { monoFont } from "../../ui/fonts.js";
23
23
  // ============================================
24
24
  // TYPES & INTERFACES
25
25
  // ============================================
@@ -785,16 +785,16 @@ const styles = StyleSheet.create({
785
785
  summaryIcon: {
786
786
  fontSize: 14,
787
787
  fontWeight: "700",
788
- fontFamily: "monospace"
788
+ fontFamily: monoFont
789
789
  },
790
790
  summaryCount: {
791
791
  fontSize: 13,
792
792
  fontWeight: "600",
793
- fontFamily: "monospace"
793
+ fontFamily: monoFont
794
794
  },
795
795
  summaryLabel: {
796
796
  fontSize: 11,
797
- fontFamily: "monospace",
797
+ fontFamily: monoFont,
798
798
  opacity: 0.9
799
799
  },
800
800
  scrollView: {
@@ -818,7 +818,7 @@ const styles = StyleSheet.create({
818
818
  },
819
819
  lineNumberText: {
820
820
  fontSize: 11,
821
- fontFamily: "monospace",
821
+ fontFamily: monoFont,
822
822
  textAlign: "right"
823
823
  },
824
824
  marker: {
@@ -830,7 +830,7 @@ const styles = StyleSheet.create({
830
830
  },
831
831
  markerText: {
832
832
  fontSize: 12,
833
- fontFamily: "monospace",
833
+ fontFamily: monoFont,
834
834
  fontWeight: "600"
835
835
  },
836
836
  content: {
@@ -851,33 +851,33 @@ const styles = StyleSheet.create({
851
851
  },
852
852
  expandIcon: {
853
853
  fontSize: 11,
854
- fontFamily: "monospace",
854
+ fontFamily: monoFont,
855
855
  fontWeight: "600"
856
856
  },
857
857
  colon: {
858
858
  fontSize: 12,
859
- fontFamily: "monospace",
859
+ fontFamily: monoFont,
860
860
  marginHorizontal: 4
861
861
  },
862
862
  key: {
863
863
  fontSize: 11,
864
- fontFamily: "monospace",
864
+ fontFamily: monoFont,
865
865
  fontWeight: "500",
866
866
  opacity: 0.9
867
867
  },
868
868
  value: {
869
869
  fontSize: 11,
870
- fontFamily: "monospace",
870
+ fontFamily: monoFont,
871
871
  maxWidth: "80%"
872
872
  },
873
873
  arrow: {
874
874
  fontSize: 12,
875
- fontFamily: "monospace",
875
+ fontFamily: monoFont,
876
876
  fontWeight: "600"
877
877
  },
878
878
  badge: {
879
879
  fontSize: 11,
880
- fontFamily: "monospace",
880
+ fontFamily: monoFont,
881
881
  fontWeight: "600",
882
882
  marginLeft: 8
883
883
  },
@@ -889,19 +889,19 @@ const styles = StyleSheet.create({
889
889
  },
890
890
  emptyIcon: {
891
891
  fontSize: 48,
892
- fontFamily: "monospace",
892
+ fontFamily: monoFont,
893
893
  opacity: 0.2,
894
894
  marginBottom: 12
895
895
  },
896
896
  emptyTitle: {
897
897
  fontSize: 14,
898
- fontFamily: "monospace",
898
+ fontFamily: monoFont,
899
899
  fontWeight: "600",
900
900
  marginBottom: 4
901
901
  },
902
902
  emptySubtitle: {
903
903
  fontSize: 12,
904
- fontFamily: "monospace",
904
+ fontFamily: monoFont,
905
905
  opacity: 0.6
906
906
  }
907
907
  });
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Auto-generated safe area implementation
5
5
  * Detected: none
6
- * Generated at: 2026-09-04T01:21:28.486Z
6
+ * Generated at: 2026-09-04T23:36:20.710Z
7
7
  *
8
8
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
9
9
  *
@@ -28,8 +28,33 @@ export { WifiCircuitIcon } from "./WifiCircuitIcon.js";
28
28
  export { RouteMapIcon, RouteIcon, NavigationIcon } from "./RouteMapIcon.js";
29
29
  export { StackPulseIcon, RenderPulseIcon, HighlightUpdatesIcon } from "./StackPulseIcon.js";
30
30
  export { RenderCountIcon } from "./RenderCountIcon.js";
31
- export { BenchmarkIcon } from "./BenchmarkIcon.js";
31
+ // The hand-drawn stopwatch is legacy; `BenchmarkIcon` is the BIF artwork (same on every port).
32
+ export { BenchmarkIcon as BenchmarkLegacyIcon } from "./BenchmarkIcon.js";
32
33
  export { IconBackground } from "./IconBackground.js";
33
34
 
34
35
  // Export lucide icons
35
- export * from "./lucide-icons.js";
36
+ export * from "./lucide-icons.js";
37
+
38
+ // The lucide glyph tier, drawn from shared/icons/glyphs/*.json — the SAME data
39
+ // the Flutter and Swift renderers read. React Native used to carry a second,
40
+ // hand-drawn copy of these icons (`./lucide-icons`), so `Globe` was one drawing
41
+ // on RN and another on every port; the cross-framework parity sheet measured
42
+ // `icons/globe-24` 10.8 % apart on both. These explicit exports shadow the
43
+ // `export * from "./lucide-icons"` above (the same trick `WifiBifIcon` uses),
44
+ // so one edit to a JSON now moves all three frameworks. The hand-drawn
45
+ // originals stay reachable as `<Name>Icon` from `./lucide-icons`.
46
+ //
47
+ // `Pin` is deliberately NOT here: RN's pin carries an extra `active` prop that
48
+ // stands it upright, which the glyph data has no way to express (the ports draw
49
+ // the resting pose only). `WifiIcon` stays lucide for the same kind of reason —
50
+ // see the `WifiBifIcon` note below.
51
+ export { ActivityGlyph as Activity, AlertCircleGlyph as AlertCircle, AlertTriangleGlyph as AlertTriangle, BookmarkGlyph as Bookmark, BoxGlyph as Box, BugGlyph as Bug, CheckCircleGlyph as CheckCircle, CheckGlyph as Check, ChevronDownGlyph as ChevronDown, ChevronLeftGlyph as ChevronLeft, ChevronRightGlyph as ChevronRight, ChevronUpGlyph as ChevronUp, ClockGlyph as Clock, CopyGlyph as Copy, DatabaseGlyph as Database, DockBottomGlyph as DockBottom, DownloadGlyph as Download, Edit3Glyph as Edit3, EyeOffGlyph as EyeOff, EyeGlyph as Eye, FileJsonGlyph as FileJson, FileTextGlyph as FileText, FilmGlyph as Film, FilterGlyph as Filter, FlaskConicalGlyph as FlaskConical, FloatWindowGlyph as FloatWindow, GitBranchGlyph as GitBranch, GlobeGlyph as Globe, HashGlyph as Hash, HomeGlyph as Home, ImageGlyph as Image, InfoGlyph as Info, KeyGlyph as Key, LayersGlyph as Layers, LinkGlyph as Link, LockGlyph as Lock, MinusGlyph as Minus, MusicGlyph as Music, NavigationGlyph as Navigation, PaletteGlyph as Palette, PauseGlyph as Pause, PlayGlyph as Play, PlusGlyph as Plus, PowerGlyph as Power, RefreshCwGlyph as RefreshCw, SearchGlyph as Search, ServerGlyph as Server, SettingsGlyph as Settings, ShieldGlyph as Shield, Trash2Glyph as Trash2,
52
+ // RN aliases `Trash` onto `Trash2Icon`; the glyph has to shadow both.
53
+ Trash2Glyph as Trash, UnlockGlyph as Unlock, UploadGlyph as Upload, UserGlyph as User, WifiGlyph as Wifi, XCircleGlyph as XCircle, XGlyph as X, ZapGlyph as Zap } from "@buoy-gg/floating-tools-core";
54
+
55
+ // Every BIF brand icon the dial can show, re-exported so the parity sheet (and tools) render
56
+ // the same artwork by name — see shared/parity/specimens.json `icons/bif-*`.
57
+ export { SentryIcon, EventsIcon, RoutesIcon, RoutePinIcon, RoutePathIcon, RouteDotIcon, RouteTwoPinsIcon, CameraIcon, HighlightIcon, ReduxIcon, StorageIcon, AskBuoyIcon, HighlighterIcon, QueryIcon, ScenariosIcon } from "@buoy-gg/floating-tools-core";
58
+ // `WifiIcon` here stays the lucide glyph (react-query's online toggle); the BIF wifi ships as
59
+ // `WifiBifIcon`. `BenchmarkIcon` IS the BIF stopwatch since 2026-09-04 (perf-monitor's dial icon).
60
+ export { WifiIcon as WifiBifIcon, BenchmarkIcon, BENCHMARK_ICON_COLOR } from "@buoy-gg/floating-tools-core";
@@ -19,7 +19,7 @@ import { buoyColors } from "../ui/gameUI/constants/gameUIColors.js";
19
19
  import { Check, Copy, X } from "../icons/lucide-icons.js";
20
20
  import { copyToClipboard } from "../clipboard/index.js";
21
21
  import { openPricing } from "./openPricing.js";
22
-
22
+ import { monoFont } from "../ui/fonts.js";
23
23
  /** The one thing a reader has to be able to act on. */
24
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
25
  export const LOGIN_COMMAND = "npx buoy login";
@@ -155,7 +155,7 @@ const styles = StyleSheet.create({
155
155
  fontSize: 14,
156
156
  fontWeight: "600",
157
157
  color: buoyColors.text,
158
- fontFamily: "monospace"
158
+ fontFamily: monoFont
159
159
  },
160
160
  reassure: {
161
161
  fontSize: 12,
@@ -9,12 +9,12 @@
9
9
  */
10
10
 
11
11
  import React, { useCallback } from "react";
12
- import { View, Text, TouchableOpacity, StyleSheet, Modal, Platform } from "react-native";
12
+ import { View, Text, TouchableOpacity, StyleSheet, Modal } from "react-native";
13
13
  import { absoluteFill } from "../utils/absoluteFill.js";
14
14
  import { macOSColors } from "../ui/gameUI/constants/macOSDesignSystemColors.js";
15
15
  import { openPricing, isWeb } from "./openPricing.js";
16
16
  import { X, Key, Link, FileCode, Copy } from "../icons/lucide-icons.js";
17
-
17
+ import { monoFont } from "../ui/fonts.js";
18
18
  // For clipboard functionality
19
19
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
20
  let Clipboard = null;
@@ -339,7 +339,7 @@ const styles = StyleSheet.create({
339
339
  },
340
340
  codeText: {
341
341
  fontSize: 11,
342
- fontFamily: Platform.OS === "ios" ? "Menlo" : "monospace",
342
+ fontFamily: monoFont,
343
343
  lineHeight: 18,
344
344
  color: macOSColors.text.primary
345
345
  },
@@ -23,6 +23,7 @@ import { buoyColors } from "../gameUI/constants/gameUIColors.js";
23
23
  import { CompactRow } from "./CompactRow.js";
24
24
  import { Clock, Zap } from "../../icons/index.js";
25
25
  import { RelativeTime } from "../../utils/time/RelativeTime.js";
26
+ import { monoFont } from "../fonts.js";
26
27
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
28
  export function ChangeRow({
28
29
  statusColor,
@@ -97,7 +98,7 @@ const styles = StyleSheet.create({
97
98
  badgeText: {
98
99
  fontSize: 11,
99
100
  fontWeight: "600",
100
- fontFamily: "monospace"
101
+ fontFamily: monoFont
101
102
  },
102
103
  iconBadge: {
103
104
  paddingHorizontal: 4
@@ -11,6 +11,7 @@
11
11
  import { memo, useCallback } from "react";
12
12
  import { View, Text, TouchableOpacity, StyleSheet, Modal, Pressable } from "react-native";
13
13
  import { gameUIColors } from "../gameUI/index.js";
14
+ import { monoFont } from "../fonts.js";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  /**
16
17
  * A modal hint that teaches users about iOS Simulator clipboard sync
@@ -125,7 +126,7 @@ const styles = StyleSheet.create({
125
126
  textAlign: "center"
126
127
  },
127
128
  menuPath: {
128
- fontFamily: "monospace",
129
+ fontFamily: monoFont,
129
130
  fontSize: 12,
130
131
  color: gameUIColors.primary,
131
132
  fontWeight: "600"
@@ -3,6 +3,7 @@
3
3
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
4
4
  import { ChevronDown, ChevronRight } from "../../icons/index.js";
5
5
  import { night } from "../night/nightTheme.js";
6
+ import { monoFont } from "../fonts.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  export function CompactRow({
8
9
  statusDotColor,
@@ -221,7 +222,7 @@ const styles = StyleSheet.create({
221
222
  paddingHorizontal: 12
222
223
  },
223
224
  queryHash: {
224
- fontFamily: "monospace",
225
+ fontFamily: monoFont,
225
226
  fontSize: 12,
226
227
  color: night.color.text,
227
228
  lineHeight: 16
@@ -265,6 +266,6 @@ const styles = StyleSheet.create({
265
266
  bottomRightText: {
266
267
  fontSize: 9,
267
268
  color: night.color.textTertiary,
268
- fontFamily: "monospace"
269
+ fontFamily: monoFont
269
270
  }
270
271
  });
@@ -5,6 +5,7 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity, TextInput } from
5
5
  import { Search, Edit3, Check, X } from "../../icons/index.js";
6
6
  import { gameUIColors } from "../gameUI/index.js";
7
7
  import { CopyButton } from "./CopyButton.js";
8
+ import { monoFont } from "../fonts.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function DataInspector({
10
11
  data,
@@ -264,14 +265,14 @@ const styles = StyleSheet.create({
264
265
  maxHeight: 300
265
266
  },
266
267
  codeText: {
267
- fontFamily: "monospace",
268
+ fontFamily: monoFont,
268
269
  fontSize: 11,
269
270
  color: gameUIColors.text,
270
271
  padding: 12,
271
272
  lineHeight: 16
272
273
  },
273
274
  editor: {
274
- fontFamily: "monospace",
275
+ fontFamily: monoFont,
275
276
  fontSize: 11,
276
277
  color: gameUIColors.text,
277
278
  padding: 12,
@@ -5,6 +5,7 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity } from "react-nati
5
5
  import { gameUIColors } from "../gameUI/index.js";
6
6
  import { ModalHeader } from "./ModalHeader.js";
7
7
  import { CopyButton } from "./CopyButton.js";
8
+ import { monoFont } from "../fonts.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export function DetailView({
10
11
  children,
@@ -293,7 +294,7 @@ const styles = StyleSheet.create({
293
294
  },
294
295
  dataText: {
295
296
  fontSize: 12,
296
- fontFamily: "monospace",
297
+ fontFamily: monoFont,
297
298
  color: gameUIColors.text
298
299
  },
299
300
  statusBar: {
@@ -8,6 +8,7 @@ import { FilterList, AddFilterInput, AddFilterButton } from "./FilterComponents.
8
8
  import { useFilterManager } from "../../hooks/useFilterManager.js";
9
9
  import { buoyColors } from "../gameUI/constants/gameUIColors.js";
10
10
  import { night } from "../night/nightTheme.js";
11
+ import { monoFont } from "../fonts.js";
11
12
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
13
  export function DynamicFilterView({
13
14
  sections = [],
@@ -489,7 +490,7 @@ const styles = StyleSheet.create({
489
490
  fontSize: 14,
490
491
  fontWeight: "700",
491
492
  color: night.color.text,
492
- fontFamily: "monospace",
493
+ fontFamily: monoFont,
493
494
  marginTop: 3,
494
495
  marginBottom: 1,
495
496
  textShadowColor: "rgba(0, 0, 0, 0.2)",
@@ -503,7 +504,7 @@ const styles = StyleSheet.create({
503
504
  fontSize: 11,
504
505
  fontWeight: "500",
505
506
  color: night.color.textTertiary,
506
- fontFamily: "monospace",
507
+ fontFamily: monoFont,
507
508
  marginTop: 3,
508
509
  marginBottom: 1
509
510
  },
@@ -547,7 +548,7 @@ const styles = StyleSheet.create({
547
548
  fontSize: 13,
548
549
  fontWeight: "700",
549
550
  letterSpacing: 0.3,
550
- fontFamily: "monospace"
551
+ fontFamily: monoFont
551
552
  },
552
553
  activeFiltersSection: {
553
554
  backgroundColor: night.color.surface,
@@ -686,7 +687,7 @@ const styles = StyleSheet.create({
686
687
  flex: 1,
687
688
  fontSize: 11,
688
689
  color: night.color.text,
689
- fontFamily: "monospace",
690
+ fontFamily: monoFont,
690
691
  marginRight: 8
691
692
  },
692
693
  howItWorksSection: {
@@ -705,7 +706,7 @@ const styles = StyleSheet.create({
705
706
  marginBottom: 12,
706
707
  marginTop: 8,
707
708
  paddingHorizontal: 16,
708
- fontFamily: "monospace"
709
+ fontFamily: monoFont
709
710
  },
710
711
  examplesContainer: {
711
712
  paddingTop: 8,
@@ -718,14 +719,14 @@ const styles = StyleSheet.create({
718
719
  fontSize: 10,
719
720
  fontWeight: "600",
720
721
  color: night.color.textTertiary,
721
- fontFamily: "monospace",
722
+ fontFamily: monoFont,
722
723
  letterSpacing: 0.5,
723
724
  marginBottom: 6
724
725
  },
725
726
  exampleItem: {
726
727
  fontSize: 10,
727
728
  color: night.color.textTertiary,
728
- fontFamily: "monospace",
729
+ fontFamily: monoFont,
729
730
  lineHeight: 16
730
731
  },
731
732
  previewSection: {
@@ -23,6 +23,7 @@ import { Filter, X } from "../../icons/index.js";
23
23
  import { night } from "../night/nightTheme.js";
24
24
  import { SectionHeader } from "./SectionHeader.js";
25
25
  import { AddFilterButton, AddFilterInput } from "./FilterComponents.js";
26
+ import { monoFont } from "../fonts.js";
26
27
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
27
28
  /** True if any active pattern hides this entity. */
28
29
  function isHidden(entity, ignoredPatterns) {
@@ -264,7 +265,7 @@ const styles = StyleSheet.create({
264
265
  flex: 1,
265
266
  fontSize: 12,
266
267
  fontWeight: "600",
267
- fontFamily: "monospace"
268
+ fontFamily: monoFont
268
269
  },
269
270
  entityTextHidden: {
270
271
  color: night.color.textTertiary,
@@ -274,12 +275,12 @@ const styles = StyleSheet.create({
274
275
  fontSize: 10,
275
276
  fontWeight: "500",
276
277
  color: night.color.textTertiary,
277
- fontFamily: "monospace"
278
+ fontFamily: monoFont
278
279
  },
279
280
  addLabel: {
280
281
  fontSize: 10,
281
282
  fontWeight: "600",
282
- fontFamily: "monospace"
283
+ fontFamily: monoFont
283
284
  },
284
285
  addInputWrapper: {
285
286
  paddingHorizontal: 16,
@@ -306,7 +307,7 @@ const styles = StyleSheet.create({
306
307
  patternText: {
307
308
  flex: 1,
308
309
  fontSize: 12,
309
- fontFamily: "monospace",
310
+ fontFamily: monoFont,
310
311
  color: night.color.text
311
312
  },
312
313
  emptyText: {
@@ -315,7 +316,7 @@ const styles = StyleSheet.create({
315
316
  paddingHorizontal: 16,
316
317
  paddingTop: 8,
317
318
  paddingBottom: 16,
318
- fontFamily: "monospace"
319
+ fontFamily: monoFont
319
320
  },
320
321
  howItWorksText: {
321
322
  fontSize: 11,
@@ -323,7 +324,7 @@ const styles = StyleSheet.create({
323
324
  lineHeight: 16,
324
325
  marginTop: 8,
325
326
  paddingHorizontal: 16,
326
- fontFamily: "monospace"
327
+ fontFamily: monoFont
327
328
  },
328
329
  examplesContainer: {
329
330
  paddingTop: 8,
@@ -337,14 +338,14 @@ const styles = StyleSheet.create({
337
338
  fontSize: 10,
338
339
  fontWeight: "600",
339
340
  color: night.color.textTertiary,
340
- fontFamily: "monospace",
341
+ fontFamily: monoFont,
341
342
  letterSpacing: 0.5,
342
343
  marginBottom: 6
343
344
  },
344
345
  exampleItem: {
345
346
  fontSize: 10,
346
347
  color: night.color.textTertiary,
347
- fontFamily: "monospace",
348
+ fontFamily: monoFont,
348
349
  lineHeight: 16
349
350
  }
350
351
  });
@@ -12,11 +12,12 @@ import React, { memo } from "react";
12
12
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
13
13
  import { macOSColors } from "../../gameUI/constants/macOSDesignSystemColors.js";
14
14
  import { ChevronLeft, ChevronRight } from "../../../icons/lucide-icons.js";
15
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ import { monoFont } from "../../fonts.js";
16
16
  /**
17
17
  * CompareBar displays a side-by-side comparison of two events
18
18
  * with optional navigation controls for any-to-any compare mode.
19
19
  */
20
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
21
  export const CompareBar = /*#__PURE__*/memo(function CompareBar({
21
22
  leftEvent,
22
23
  rightEvent,
@@ -150,7 +151,7 @@ const styles = StyleSheet.create({
150
151
  },
151
152
  label: {
152
153
  fontSize: 10,
153
- fontFamily: "monospace",
154
+ fontFamily: monoFont,
154
155
  fontWeight: "700",
155
156
  letterSpacing: 0.5,
156
157
  textTransform: "uppercase"
@@ -185,17 +186,17 @@ const styles = StyleSheet.create({
185
186
  index: {
186
187
  fontSize: 10,
187
188
  color: macOSColors.text.secondary,
188
- fontFamily: "monospace"
189
+ fontFamily: monoFont
189
190
  },
190
191
  time: {
191
192
  fontSize: 11,
192
193
  color: macOSColors.text.primary,
193
- fontFamily: "monospace"
194
+ fontFamily: monoFont
194
195
  },
195
196
  relative: {
196
197
  fontSize: 10,
197
198
  color: macOSColors.text.secondary,
198
- fontFamily: "monospace"
199
+ fontFamily: monoFont
199
200
  },
200
201
  divider: {
201
202
  width: 1,
@@ -11,11 +11,12 @@
11
11
  import React, { memo } from "react";
12
12
  import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
13
13
  import { macOSColors } from "../../gameUI/constants/macOSDesignSystemColors.js";
14
- import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { monoFont } from "../../fonts.js";
15
15
  /**
16
16
  * DiffModeTabs displays a horizontal tab bar for switching
17
17
  * between different diff visualization modes.
18
18
  */
19
+ import { jsx as _jsx } from "react/jsx-runtime";
19
20
  export const DiffModeTabs = /*#__PURE__*/memo(function DiffModeTabs({
20
21
  tabs,
21
22
  activeTab,
@@ -79,7 +80,7 @@ const styles = StyleSheet.create({
79
80
  },
80
81
  tabText: {
81
82
  fontSize: 11,
82
- fontFamily: "monospace",
83
+ fontFamily: monoFont,
83
84
  fontWeight: "600",
84
85
  color: macOSColors.text.secondary,
85
86
  letterSpacing: 0.5
@@ -13,11 +13,12 @@ import { View, Text, TouchableOpacity, ScrollView, StyleSheet } from "react-nati
13
13
  import { absoluteFill } from "../../../utils/absoluteFill.js";
14
14
  import { macOSColors } from "../../gameUI/constants/macOSDesignSystemColors.js";
15
15
  import { X } from "../../../icons/lucide-icons.js";
16
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ import { monoFont } from "../../fonts.js";
17
17
  /**
18
18
  * EventPickerModal displays a modal for selecting events
19
19
  * with color-coded styling based on position (left/right).
20
20
  */
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
21
22
  export const EventPickerModal = /*#__PURE__*/memo(function EventPickerModal({
22
23
  isOpen,
23
24
  onClose,
@@ -118,7 +119,7 @@ const styles = StyleSheet.create({
118
119
  title: {
119
120
  fontSize: 13,
120
121
  fontWeight: "700",
121
- fontFamily: "monospace",
122
+ fontFamily: monoFont,
122
123
  textTransform: "uppercase",
123
124
  marginBottom: 8,
124
125
  letterSpacing: 0.6
@@ -185,18 +186,18 @@ const styles = StyleSheet.create({
185
186
  itemIndex: {
186
187
  fontSize: 10,
187
188
  color: macOSColors.text.secondary,
188
- fontFamily: "monospace",
189
+ fontFamily: monoFont,
189
190
  width: 40
190
191
  },
191
192
  itemTime: {
192
193
  fontSize: 11,
193
194
  color: macOSColors.text.primary,
194
- fontFamily: "monospace",
195
+ fontFamily: monoFont,
195
196
  flex: 1
196
197
  },
197
198
  itemRelative: {
198
199
  fontSize: 10,
199
200
  color: macOSColors.text.secondary,
200
- fontFamily: "monospace"
201
+ fontFamily: monoFont
201
202
  }
202
203
  });
@@ -14,6 +14,7 @@ import { ChevronLeft, ChevronRight } from "../../icons/lucide-icons.js";
14
14
  import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
15
15
  import { night } from "../night/nightTheme.js";
16
16
  import { useSafeAreaInsets } from "../../hooks/useSafeAreaInsets.js";
17
+ import { monoFont } from "../fonts.js";
17
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
19
  /**
19
20
  * A footer component for navigating through a list of events/items.
@@ -132,7 +133,7 @@ const styles = StyleSheet.create({
132
133
  fontSize: 12,
133
134
  fontWeight: "600",
134
135
  color: macOSColors.text.primary,
135
- fontFamily: "monospace",
136
+ fontFamily: monoFont,
136
137
  textTransform: "uppercase"
137
138
  },
138
139
  navButtonTextDisabled: {
@@ -145,13 +146,13 @@ const styles = StyleSheet.create({
145
146
  fontSize: 14,
146
147
  fontWeight: "700",
147
148
  color: macOSColors.text.primary,
148
- fontFamily: "monospace",
149
+ fontFamily: monoFont,
149
150
  textTransform: "uppercase"
150
151
  },
151
152
  subtitleText: {
152
153
  fontSize: 11,
153
154
  color: macOSColors.text.secondary,
154
- fontFamily: "monospace",
155
+ fontFamily: monoFont,
155
156
  marginTop: 2
156
157
  },
157
158
  // ── Night variant (see ui/night/nightTheme.ts): near-black glass bar with