@buoy-gg/highlight-updates 7.0.41 → 7.0.43

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 (108) hide show
  1. package/README.md +11 -71
  2. package/lib/commonjs/highlight-updates/HighlightUpdatesOverlay.js +1 -281
  3. package/lib/commonjs/highlight-updates/components/HighlightFilterView.js +1 -1474
  4. package/lib/commonjs/highlight-updates/components/HighlightUpdatesModal.js +1 -641
  5. package/lib/commonjs/highlight-updates/components/IdentifierBadge.js +1 -273
  6. package/lib/commonjs/highlight-updates/components/IsolatedRenderList.js +1 -188
  7. package/lib/commonjs/highlight-updates/components/ModalHeaderContent.js +1 -293
  8. package/lib/commonjs/highlight-updates/components/RenderCauseBadge.js +1 -508
  9. package/lib/commonjs/highlight-updates/components/RenderDetailView.js +1 -846
  10. package/lib/commonjs/highlight-updates/components/RenderHistoryViewer.js +1 -915
  11. package/lib/commonjs/highlight-updates/components/RenderListItem.js +1 -235
  12. package/lib/commonjs/highlight-updates/components/RendersCopySettingsView.js +1 -469
  13. package/lib/commonjs/highlight-updates/components/StatsDisplay.js +1 -73
  14. package/lib/commonjs/highlight-updates/types/copySettings.js +1 -107
  15. package/lib/commonjs/highlight-updates/utils/CommitProfiler.js +1 -455
  16. package/lib/commonjs/highlight-updates/utils/HighlightUpdatesController.js +1 -1929
  17. package/lib/commonjs/highlight-updates/utils/PerformanceLogger.js +26 -359
  18. package/lib/commonjs/highlight-updates/utils/ProfilerInterceptor.js +1 -371
  19. package/lib/commonjs/highlight-updates/utils/RenderCauseDetector.js +5 -1840
  20. package/lib/commonjs/highlight-updates/utils/RenderTracker.js +1 -952
  21. package/lib/commonjs/highlight-updates/utils/ViewTypeMapper.js +1 -264
  22. package/lib/commonjs/highlight-updates/utils/copySettingsStorage.js +1 -32
  23. package/lib/commonjs/highlight-updates/utils/devtoolsComponentNames.js +1 -188
  24. package/lib/commonjs/highlight-updates/utils/namedComposite.js +1 -41
  25. package/lib/commonjs/highlight-updates/utils/ownStateChanged.js +1 -103
  26. package/lib/commonjs/highlight-updates/utils/rawEventEmitter.js +1 -50
  27. package/lib/commonjs/highlight-updates/utils/rawEventEmitter.web.js +1 -12
  28. package/lib/commonjs/highlight-updates/utils/renderExportFormatter.js +1 -58
  29. package/lib/commonjs/highlight-updates/utils/rendersExportFormatter.js +1 -485
  30. package/lib/commonjs/highlight-updates/utils/screenElements.js +1 -1269
  31. package/lib/commonjs/highlight-updates/utils/tapMatch.js +1 -83
  32. package/lib/commonjs/highlight-updates/utils/testIDs.js +1 -68
  33. package/lib/commonjs/highlight-updates/utils/touchCapture.js +1 -277
  34. package/lib/commonjs/index.js +1 -429
  35. package/lib/commonjs/preset.js +1 -278
  36. package/lib/commonjs/sync/highlightUpdatesSyncAdapter.js +1 -235
  37. package/lib/module/highlight-updates/HighlightUpdatesOverlay.js +1 -274
  38. package/lib/module/highlight-updates/components/HighlightFilterView.js +1 -1468
  39. package/lib/module/highlight-updates/components/HighlightUpdatesModal.js +1 -634
  40. package/lib/module/highlight-updates/components/IdentifierBadge.js +1 -265
  41. package/lib/module/highlight-updates/components/IsolatedRenderList.js +1 -183
  42. package/lib/module/highlight-updates/components/ModalHeaderContent.js +1 -288
  43. package/lib/module/highlight-updates/components/RenderCauseBadge.js +1 -499
  44. package/lib/module/highlight-updates/components/RenderDetailView.js +1 -840
  45. package/lib/module/highlight-updates/components/RenderHistoryViewer.js +1 -908
  46. package/lib/module/highlight-updates/components/RenderListItem.js +1 -230
  47. package/lib/module/highlight-updates/components/RendersCopySettingsView.js +1 -465
  48. package/lib/module/highlight-updates/components/StatsDisplay.js +1 -70
  49. package/lib/module/highlight-updates/types/copySettings.js +1 -102
  50. package/lib/module/highlight-updates/utils/CommitProfiler.js +1 -451
  51. package/lib/module/highlight-updates/utils/HighlightUpdatesController.js +1 -1925
  52. package/lib/module/highlight-updates/utils/PerformanceLogger.js +26 -353
  53. package/lib/module/highlight-updates/utils/ProfilerInterceptor.js +1 -358
  54. package/lib/module/highlight-updates/utils/RenderCauseDetector.js +5 -1830
  55. package/lib/module/highlight-updates/utils/RenderTracker.js +1 -949
  56. package/lib/module/highlight-updates/utils/ViewTypeMapper.js +1 -255
  57. package/lib/module/highlight-updates/utils/copySettingsStorage.js +1 -26
  58. package/lib/module/highlight-updates/utils/devtoolsComponentNames.js +1 -178
  59. package/lib/module/highlight-updates/utils/namedComposite.js +1 -36
  60. package/lib/module/highlight-updates/utils/ownStateChanged.js +1 -98
  61. package/lib/module/highlight-updates/utils/rawEventEmitter.js +1 -46
  62. package/lib/module/highlight-updates/utils/rawEventEmitter.web.js +1 -3
  63. package/lib/module/highlight-updates/utils/renderExportFormatter.js +1 -54
  64. package/lib/module/highlight-updates/utils/rendersExportFormatter.js +1 -478
  65. package/lib/module/highlight-updates/utils/screenElements.js +1 -1263
  66. package/lib/module/highlight-updates/utils/tapMatch.js +1 -76
  67. package/lib/module/highlight-updates/utils/testIDs.js +1 -60
  68. package/lib/module/highlight-updates/utils/touchCapture.js +1 -270
  69. package/lib/module/index.js +1 -130
  70. package/lib/module/preset.js +1 -272
  71. package/lib/module/sync/highlightUpdatesSyncAdapter.js +1 -230
  72. package/lib/web/index.mjs +28 -29
  73. package/package.json +7 -11
  74. package/lib/typescript/highlight-updates/HighlightUpdatesOverlay.d.ts.map +0 -1
  75. package/lib/typescript/highlight-updates/components/HighlightFilterView.d.ts.map +0 -1
  76. package/lib/typescript/highlight-updates/components/HighlightUpdatesModal.d.ts.map +0 -1
  77. package/lib/typescript/highlight-updates/components/IdentifierBadge.d.ts.map +0 -1
  78. package/lib/typescript/highlight-updates/components/IsolatedRenderList.d.ts.map +0 -1
  79. package/lib/typescript/highlight-updates/components/ModalHeaderContent.d.ts.map +0 -1
  80. package/lib/typescript/highlight-updates/components/RenderCauseBadge.d.ts.map +0 -1
  81. package/lib/typescript/highlight-updates/components/RenderDetailView.d.ts.map +0 -1
  82. package/lib/typescript/highlight-updates/components/RenderHistoryViewer.d.ts.map +0 -1
  83. package/lib/typescript/highlight-updates/components/RenderListItem.d.ts.map +0 -1
  84. package/lib/typescript/highlight-updates/components/RendersCopySettingsView.d.ts.map +0 -1
  85. package/lib/typescript/highlight-updates/components/StatsDisplay.d.ts.map +0 -1
  86. package/lib/typescript/highlight-updates/types/copySettings.d.ts.map +0 -1
  87. package/lib/typescript/highlight-updates/utils/CommitProfiler.d.ts.map +0 -1
  88. package/lib/typescript/highlight-updates/utils/HighlightUpdatesController.d.ts.map +0 -1
  89. package/lib/typescript/highlight-updates/utils/PerformanceLogger.d.ts.map +0 -1
  90. package/lib/typescript/highlight-updates/utils/ProfilerInterceptor.d.ts.map +0 -1
  91. package/lib/typescript/highlight-updates/utils/RenderCauseDetector.d.ts.map +0 -1
  92. package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts.map +0 -1
  93. package/lib/typescript/highlight-updates/utils/ViewTypeMapper.d.ts.map +0 -1
  94. package/lib/typescript/highlight-updates/utils/copySettingsStorage.d.ts.map +0 -1
  95. package/lib/typescript/highlight-updates/utils/devtoolsComponentNames.d.ts.map +0 -1
  96. package/lib/typescript/highlight-updates/utils/namedComposite.d.ts.map +0 -1
  97. package/lib/typescript/highlight-updates/utils/ownStateChanged.d.ts.map +0 -1
  98. package/lib/typescript/highlight-updates/utils/rawEventEmitter.d.ts.map +0 -1
  99. package/lib/typescript/highlight-updates/utils/rawEventEmitter.web.d.ts.map +0 -1
  100. package/lib/typescript/highlight-updates/utils/renderExportFormatter.d.ts.map +0 -1
  101. package/lib/typescript/highlight-updates/utils/rendersExportFormatter.d.ts.map +0 -1
  102. package/lib/typescript/highlight-updates/utils/screenElements.d.ts.map +0 -1
  103. package/lib/typescript/highlight-updates/utils/tapMatch.d.ts.map +0 -1
  104. package/lib/typescript/highlight-updates/utils/testIDs.d.ts.map +0 -1
  105. package/lib/typescript/highlight-updates/utils/touchCapture.d.ts.map +0 -1
  106. package/lib/typescript/index.d.ts.map +0 -1
  107. package/lib/typescript/preset.d.ts.map +0 -1
  108. package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts.map +0 -1
@@ -1,288 +1 @@
1
- "use strict";
2
-
3
- /**
4
- * ModalHeaderContent
5
- *
6
- * Memoized header content components for the HighlightUpdatesModal.
7
- * Extracted to prevent re-renders when parent state changes unrelated to header.
8
- *
9
- * Following the optimization guide: extract inline JSX to memoized components.
10
- */
11
-
12
- import React, { memo } from "react";
13
- import { TouchableOpacity, StyleSheet } from "react-native";
14
- import { Trash2, Search, Filter, Pause, Copy, ModalHeader, TabSelector, night, PowerToggleButton } from "@buoy-gg/shared-ui";
15
- import { StatsDisplay } from "./StatsDisplay";
16
-
17
- // ============================================================================
18
- // Search Section - isolated component for search UI
19
- // ============================================================================
20
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
21
- const SearchSectionInner = /*#__PURE__*/memo(function SearchSection({
22
- isActive,
23
- searchText,
24
- onSearchChange,
25
- onSearchClose
26
- }) {
27
- if (!isActive) return null;
28
- return /*#__PURE__*/_jsx(ModalHeader.Search, {
29
- value: searchText,
30
- onChangeText: onSearchChange,
31
- onCancel: () => {
32
- onSearchChange("");
33
- onSearchClose();
34
- },
35
- onDismiss: onSearchClose,
36
- dismissOnBlur: true,
37
- clearOnlyWhenText: true,
38
- placeholder: "Search testID, nativeID, component...",
39
- accessibilityLabel: "Search renders",
40
- iconSize: 14,
41
- testID: "buoy-highlight-search-field",
42
- containerTestID: "buoy-highlight-search-container",
43
- containerNativeID: "__rn_buoy__search-container",
44
- clearTestID: "buoy-highlight-search-clear"
45
- });
46
- });
47
- export const SearchSection = SearchSectionInner;
48
-
49
- // ============================================================================
50
- // Header Actions - isolated component for action buttons
51
- // ============================================================================
52
-
53
- const HeaderActionsInner = /*#__PURE__*/memo(function HeaderActions({
54
- onSearchToggle,
55
- onFilterToggle,
56
- onToggleTracking,
57
- onToggleFreeze,
58
- onClear,
59
- onOpenCopySettings,
60
- isTracking,
61
- isFrozen,
62
- activeFilterCount,
63
- hasRenders
64
- }) {
65
- return /*#__PURE__*/_jsxs(ModalHeader.Actions, {
66
- children: [/*#__PURE__*/_jsx(TouchableOpacity, {
67
- testID: "buoy-highlight-search",
68
- accessibilityRole: "button",
69
- accessibilityLabel: "Search renders",
70
- onPress: onSearchToggle,
71
- style: styles.headerActionButton,
72
- children: /*#__PURE__*/_jsx(Search, {
73
- size: 14,
74
- color: night.color.textSecondary
75
- })
76
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
77
- testID: "buoy-highlight-filters",
78
- accessibilityRole: "button",
79
- accessibilityLabel: activeFilterCount > 0 ? `Filters, ${activeFilterCount} active` : "Filters",
80
- onPress: onFilterToggle,
81
- style: [styles.headerActionButton, activeFilterCount > 0 && styles.activeFilterButton],
82
- children: /*#__PURE__*/_jsx(Filter, {
83
- size: 14,
84
- color: activeFilterCount > 0 ? night.color.accent : night.color.textTertiary
85
- })
86
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
87
- testID: "buoy-highlight-copy",
88
- accessibilityRole: "button",
89
- onPress: onOpenCopySettings,
90
- style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
91
- disabled: !hasRenders,
92
- accessibilityLabel: "Open copy settings",
93
- children: /*#__PURE__*/_jsx(Copy, {
94
- size: 14,
95
- color: hasRenders ? night.color.textSecondary : night.color.textTertiary
96
- })
97
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
98
- testID: "buoy-highlight-freeze",
99
- accessibilityRole: "button",
100
- accessibilityLabel: isFrozen ? "Unfreeze frame" : "Freeze frame",
101
- onPress: onToggleFreeze,
102
- style: [styles.headerActionButton, isFrozen && styles.freezeButton, !isTracking && styles.headerActionButtonDisabled],
103
- disabled: !isTracking,
104
- children: /*#__PURE__*/_jsx(Pause, {
105
- size: 14,
106
- color: !isTracking ? night.color.textTertiary : isFrozen ? night.color.accent : night.color.textTertiary
107
- })
108
- }), /*#__PURE__*/_jsx(PowerToggleButton, {
109
- testID: "buoy-highlight-power",
110
- isEnabled: isTracking,
111
- onToggle: onToggleTracking,
112
- accessibilityLabel: "Toggle render tracking"
113
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
114
- testID: "buoy-highlight-clear",
115
- accessibilityRole: "button",
116
- accessibilityLabel: "Clear tracked renders",
117
- onPress: onClear,
118
- style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
119
- disabled: !hasRenders,
120
- children: /*#__PURE__*/_jsx(Trash2, {
121
- size: 14,
122
- color: hasRenders ? night.color.textTertiary : night.color.textTertiary
123
- })
124
- })]
125
- });
126
- });
127
- export const HeaderActions = HeaderActionsInner;
128
-
129
- // ============================================================================
130
- // Main List Header - complete header for main list view
131
- // ============================================================================
132
-
133
- export const MainListHeader = /*#__PURE__*/memo(function MainListHeader({
134
- onBack,
135
- isSearchActive,
136
- searchText,
137
- onSearchChange,
138
- onSearchToggle,
139
- onSearchClose,
140
- onFilterToggle,
141
- onToggleTracking,
142
- onToggleFreeze,
143
- onClear,
144
- onOpenCopySettings,
145
- isTracking,
146
- isFrozen,
147
- activeFilterCount,
148
- hasRenders,
149
- searchInputRef
150
- }) {
151
- return /*#__PURE__*/_jsxs(ModalHeader, {
152
- children: [onBack && /*#__PURE__*/_jsx(ModalHeader.Navigation, {
153
- onBack: onBack
154
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
155
- title: "",
156
- children: isSearchActive ? /*#__PURE__*/_jsx(SearchSection, {
157
- isActive: isSearchActive,
158
- searchText: searchText,
159
- onSearchChange: onSearchChange,
160
- onSearchClose: onSearchClose,
161
- searchInputRef: searchInputRef
162
- }) : /*#__PURE__*/_jsx(StatsDisplay, {})
163
- }), /*#__PURE__*/_jsx(HeaderActions, {
164
- onSearchToggle: onSearchToggle,
165
- onFilterToggle: onFilterToggle,
166
- onToggleTracking: onToggleTracking,
167
- onToggleFreeze: onToggleFreeze,
168
- onClear: onClear,
169
- onOpenCopySettings: onOpenCopySettings,
170
- isTracking: isTracking,
171
- isFrozen: isFrozen,
172
- activeFilterCount: activeFilterCount,
173
- hasRenders: hasRenders
174
- })]
175
- });
176
- });
177
-
178
- // ============================================================================
179
- // Filter View Header
180
- // ============================================================================
181
-
182
- export const FilterViewHeader = /*#__PURE__*/memo(function FilterViewHeader({
183
- onBack,
184
- activeTab,
185
- onTabChange,
186
- activeFilterCount = 0
187
- }) {
188
- const tabs = [{
189
- key: "filters",
190
- label: `Filters${activeFilterCount > 0 ? ` (${activeFilterCount})` : ""}`
191
- }, {
192
- key: "settings",
193
- label: "Settings"
194
- }];
195
- return /*#__PURE__*/_jsxs(ModalHeader, {
196
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
197
- onBack: onBack
198
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
199
- title: "",
200
- noMargin: true,
201
- children: /*#__PURE__*/_jsx(TabSelector, {
202
- tabs: tabs,
203
- activeTab: activeTab,
204
- onTabChange: tab => onTabChange(tab),
205
- testIDPrefix: "buoy-highlight-filter-tab"
206
- })
207
- }), /*#__PURE__*/_jsx(ModalHeader.Actions, {})]
208
- });
209
- });
210
-
211
- // ============================================================================
212
- // Detail View Header
213
- // ============================================================================
214
-
215
- export const DetailViewHeader = /*#__PURE__*/memo(function DetailViewHeader({
216
- onBack,
217
- activeTab,
218
- onTabChange,
219
- hasHistory = true
220
- }) {
221
- const tabs = [{
222
- key: "details",
223
- label: "Details"
224
- }, {
225
- key: "history",
226
- label: "History",
227
- disabled: !hasHistory
228
- }];
229
- return /*#__PURE__*/_jsxs(ModalHeader, {
230
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
231
- onBack: onBack
232
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
233
- title: "",
234
- noMargin: true,
235
- children: /*#__PURE__*/_jsx(TabSelector, {
236
- tabs: tabs,
237
- activeTab: activeTab,
238
- onTabChange: tab => onTabChange(tab),
239
- testIDPrefix: "buoy-highlight-detail-tab"
240
- })
241
- }), /*#__PURE__*/_jsx(ModalHeader.Actions, {})]
242
- });
243
- });
244
-
245
- // ============================================================================
246
- // Copy Settings View Header
247
- // ============================================================================
248
-
249
- export const CopySettingsViewHeader = /*#__PURE__*/memo(function CopySettingsViewHeader({
250
- onBack
251
- }) {
252
- return /*#__PURE__*/_jsxs(ModalHeader, {
253
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
254
- onBack: onBack
255
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
256
- title: "Copy Settings",
257
- testID: "buoy-highlight-copy-title"
258
- })]
259
- });
260
- });
261
-
262
- // ============================================================================
263
- // Styles
264
- // ============================================================================
265
-
266
- const styles = StyleSheet.create({
267
- headerActionButton: {
268
- width: 32,
269
- height: 32,
270
- borderRadius: 8,
271
- backgroundColor: night.color.buttonSurface,
272
- borderWidth: 1,
273
- borderColor: night.color.border,
274
- alignItems: "center",
275
- justifyContent: "center"
276
- },
277
- headerActionButtonDisabled: {
278
- opacity: 0.55
279
- },
280
- activeFilterButton: {
281
- backgroundColor: night.color.accentSoft,
282
- borderColor: night.color.accentBorderStrong
283
- },
284
- freezeButton: {
285
- backgroundColor: night.color.accentSoft,
286
- borderColor: night.color.accentBorderStrong
287
- }
288
- });
1
+ "use strict";import V,{memo as g}from"react";import{TouchableOpacity as f,StyleSheet as m}from"react-native";import{Trash2 as A,Search as H,Filter as k,Pause as z,Copy as v,ModalHeader as t,TabSelector as S,night as o,PowerToggleButton as w}from"@buoy-gg/shared-ui";import{StatsDisplay as L}from"./StatsDisplay";import{jsx as e,jsxs as p}from"react/jsx-runtime";const P=g(function u({isActive:r,searchText:n,onSearchChange:c,onSearchClose:i}){if(!r)return null;return e(t.Search,{value:n,onChangeText:c,onCancel:()=>{c("");i()},onDismiss:i,dismissOnBlur:true,clearOnlyWhenText:true,placeholder:"Search testID, nativeID, component...",accessibilityLabel:"Search renders",iconSize:14,testID:"buoy-highlight-search-field",containerTestID:"buoy-highlight-search-container",containerNativeID:"__rn_buoy__search-container",clearTestID:"buoy-highlight-search-clear"})});export const SearchSection=P;const F=g(function u({onSearchToggle:r,onFilterToggle:n,onToggleTracking:c,onToggleFreeze:i,onClear:s,onOpenCopySettings:h,isTracking:b,isFrozen:y,activeFilterCount:d,hasRenders:l}){return p(t.Actions,{children:[e(f,{testID:"buoy-highlight-search",accessibilityRole:"button",accessibilityLabel:"Search renders",onPress:r,style:a.headerActionButton,children:e(H,{size:14,color:o.color.textSecondary})}),e(f,{testID:"buoy-highlight-filters",accessibilityRole:"button",accessibilityLabel:d>0?`Filters, ${d} active`:"Filters",onPress:n,style:[a.headerActionButton,d>0&&a.activeFilterButton],children:e(k,{size:14,color:d>0?o.color.accent:o.color.textTertiary})}),e(f,{testID:"buoy-highlight-copy",accessibilityRole:"button",onPress:h,style:[a.headerActionButton,!l&&a.headerActionButtonDisabled],disabled:!l,accessibilityLabel:"Open copy settings",children:e(v,{size:14,color:l?o.color.textSecondary:o.color.textTertiary})}),e(f,{testID:"buoy-highlight-freeze",accessibilityRole:"button",accessibilityLabel:y?"Unfreeze frame":"Freeze frame",onPress:i,style:[a.headerActionButton,y&&a.freezeButton,!b&&a.headerActionButtonDisabled],disabled:!b,children:e(z,{size:14,color:!b?o.color.textTertiary:y?o.color.accent:o.color.textTertiary})}),e(w,{testID:"buoy-highlight-power",isEnabled:b,onToggle:c,accessibilityLabel:"Toggle render tracking"}),e(f,{testID:"buoy-highlight-clear",accessibilityRole:"button",accessibilityLabel:"Clear tracked renders",onPress:s,style:[a.headerActionButton,!l&&a.headerActionButtonDisabled],disabled:!l,children:e(A,{size:14,color:l?o.color.textTertiary:o.color.textTertiary})})]})});export const HeaderActions=F;export const MainListHeader=g(function u({onBack:r,isSearchActive:n,searchText:c,onSearchChange:i,onSearchToggle:s,onSearchClose:h,onFilterToggle:b,onToggleTracking:y,onToggleFreeze:d,onClear:l,onOpenCopySettings:D,isTracking:T,isFrozen:x,activeFilterCount:B,hasRenders:C,searchInputRef:I}){return p(t,{children:[r&&e(t.Navigation,{onBack:r}),e(t.Content,{title:"",children:n?e(SearchSection,{isActive:n,searchText:c,onSearchChange:i,onSearchClose:h,searchInputRef:I}):e(L,{})}),e(HeaderActions,{onSearchToggle:s,onFilterToggle:b,onToggleTracking:y,onToggleFreeze:d,onClear:l,onOpenCopySettings:D,isTracking:T,isFrozen:x,activeFilterCount:B,hasRenders:C})]})});export const FilterViewHeader=g(function u({onBack:r,activeTab:n,onTabChange:c,activeFilterCount:i=0}){const s=[{key:"filters",label:`Filters${i>0?` (${i})`:""}`},{key:"settings",label:"Settings"}];return p(t,{children:[e(t.Navigation,{onBack:r}),e(t.Content,{title:"",noMargin:true,children:e(S,{tabs:s,activeTab:n,onTabChange:h=>c(h),testIDPrefix:"buoy-highlight-filter-tab"})}),e(t.Actions,{})]})});export const DetailViewHeader=g(function u({onBack:r,activeTab:n,onTabChange:c,hasHistory:i=true}){const s=[{key:"details",label:"Details"},{key:"history",label:"History",disabled:!i}];return p(t,{children:[e(t.Navigation,{onBack:r}),e(t.Content,{title:"",noMargin:true,children:e(S,{tabs:s,activeTab:n,onTabChange:h=>c(h),testIDPrefix:"buoy-highlight-detail-tab"})}),e(t.Actions,{})]})});export const CopySettingsViewHeader=g(function u({onBack:r}){return p(t,{children:[e(t.Navigation,{onBack:r}),e(t.Content,{title:"Copy Settings",testID:"buoy-highlight-copy-title"})]})});const a=m.create({headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:o.color.buttonSurface,borderWidth:1,borderColor:o.color.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},activeFilterButton:{backgroundColor:o.color.accentSoft,borderColor:o.color.accentBorderStrong},freezeButton:{backgroundColor:o.color.accentSoft,borderColor:o.color.accentBorderStrong}});