@buoy-gg/highlight-updates 3.0.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/lib/commonjs/highlight-updates/HighlightUpdatesOverlay.js +285 -1
  2. package/lib/commonjs/highlight-updates/components/HighlightFilterView.js +1371 -1
  3. package/lib/commonjs/highlight-updates/components/HighlightUpdatesModal.js +564 -1
  4. package/lib/commonjs/highlight-updates/components/IdentifierBadge.js +267 -1
  5. package/lib/commonjs/highlight-updates/components/IsolatedRenderList.js +178 -1
  6. package/lib/commonjs/highlight-updates/components/ModalHeaderContent.js +309 -1
  7. package/lib/commonjs/highlight-updates/components/RenderCauseBadge.js +500 -1
  8. package/lib/commonjs/highlight-updates/components/RenderDetailView.js +803 -1
  9. package/lib/commonjs/highlight-updates/components/RenderHistoryViewer.js +894 -1
  10. package/lib/commonjs/highlight-updates/components/RenderListItem.js +220 -1
  11. package/lib/commonjs/highlight-updates/components/RendersCopySettingsView.js +562 -1
  12. package/lib/commonjs/highlight-updates/components/StatsDisplay.js +70 -1
  13. package/lib/commonjs/highlight-updates/components/index.js +97 -1
  14. package/lib/commonjs/highlight-updates/types/copySettings.js +107 -1
  15. package/lib/commonjs/highlight-updates/utils/HighlightUpdatesController.js +1819 -1
  16. package/lib/commonjs/highlight-updates/utils/PerformanceLogger.js +359 -1
  17. package/lib/commonjs/highlight-updates/utils/ProfilerInterceptor.js +371 -1
  18. package/lib/commonjs/highlight-updates/utils/RenderCauseDetector.js +1828 -1
  19. package/lib/commonjs/highlight-updates/utils/RenderTracker.js +919 -1
  20. package/lib/commonjs/highlight-updates/utils/ViewTypeMapper.js +264 -1
  21. package/lib/commonjs/highlight-updates/utils/copySettingsStorage.js +49 -1
  22. package/lib/commonjs/highlight-updates/utils/renderExportFormatter.js +58 -1
  23. package/lib/commonjs/highlight-updates/utils/rendersExportFormatter.js +485 -1
  24. package/lib/commonjs/index.js +320 -1
  25. package/lib/commonjs/preset.js +278 -1
  26. package/lib/commonjs/sync/highlightUpdatesSyncAdapter.js +83 -0
  27. package/lib/module/highlight-updates/HighlightUpdatesOverlay.js +278 -1
  28. package/lib/module/highlight-updates/components/HighlightFilterView.js +1365 -1
  29. package/lib/module/highlight-updates/components/HighlightUpdatesModal.js +558 -1
  30. package/lib/module/highlight-updates/components/IdentifierBadge.js +259 -1
  31. package/lib/module/highlight-updates/components/IsolatedRenderList.js +174 -1
  32. package/lib/module/highlight-updates/components/ModalHeaderContent.js +304 -1
  33. package/lib/module/highlight-updates/components/RenderCauseBadge.js +491 -1
  34. package/lib/module/highlight-updates/components/RenderDetailView.js +797 -1
  35. package/lib/module/highlight-updates/components/RenderHistoryViewer.js +888 -1
  36. package/lib/module/highlight-updates/components/RenderListItem.js +215 -1
  37. package/lib/module/highlight-updates/components/RendersCopySettingsView.js +558 -1
  38. package/lib/module/highlight-updates/components/StatsDisplay.js +67 -1
  39. package/lib/module/highlight-updates/components/index.js +16 -1
  40. package/lib/module/highlight-updates/types/copySettings.js +102 -1
  41. package/lib/module/highlight-updates/utils/HighlightUpdatesController.js +1815 -1
  42. package/lib/module/highlight-updates/utils/PerformanceLogger.js +353 -1
  43. package/lib/module/highlight-updates/utils/ProfilerInterceptor.js +358 -1
  44. package/lib/module/highlight-updates/utils/RenderCauseDetector.js +1818 -1
  45. package/lib/module/highlight-updates/utils/RenderTracker.js +916 -1
  46. package/lib/module/highlight-updates/utils/ViewTypeMapper.js +255 -1
  47. package/lib/module/highlight-updates/utils/copySettingsStorage.js +43 -1
  48. package/lib/module/highlight-updates/utils/renderExportFormatter.js +54 -1
  49. package/lib/module/highlight-updates/utils/rendersExportFormatter.js +478 -1
  50. package/lib/module/index.js +74 -1
  51. package/lib/module/preset.js +272 -1
  52. package/lib/module/sync/highlightUpdatesSyncAdapter.js +78 -0
  53. package/lib/typescript/highlight-updates/HighlightUpdatesOverlay.d.ts.map +1 -0
  54. package/lib/typescript/highlight-updates/components/HighlightFilterView.d.ts.map +1 -0
  55. package/lib/typescript/highlight-updates/components/HighlightUpdatesModal.d.ts.map +1 -0
  56. package/lib/typescript/highlight-updates/components/IdentifierBadge.d.ts.map +1 -0
  57. package/lib/typescript/highlight-updates/components/IsolatedRenderList.d.ts.map +1 -0
  58. package/lib/typescript/highlight-updates/components/ModalHeaderContent.d.ts.map +1 -0
  59. package/lib/typescript/highlight-updates/components/RenderCauseBadge.d.ts.map +1 -0
  60. package/lib/typescript/highlight-updates/components/RenderDetailView.d.ts.map +1 -0
  61. package/lib/typescript/highlight-updates/components/RenderHistoryViewer.d.ts.map +1 -0
  62. package/lib/typescript/highlight-updates/components/RenderListItem.d.ts.map +1 -0
  63. package/lib/typescript/highlight-updates/components/RendersCopySettingsView.d.ts.map +1 -0
  64. package/lib/typescript/highlight-updates/components/StatsDisplay.d.ts.map +1 -0
  65. package/lib/typescript/highlight-updates/components/index.d.ts.map +1 -0
  66. package/lib/typescript/highlight-updates/types/copySettings.d.ts.map +1 -0
  67. package/lib/typescript/highlight-updates/utils/HighlightUpdatesController.d.ts +90 -0
  68. package/lib/typescript/highlight-updates/utils/HighlightUpdatesController.d.ts.map +1 -0
  69. package/lib/typescript/highlight-updates/utils/PerformanceLogger.d.ts.map +1 -0
  70. package/lib/typescript/highlight-updates/utils/ProfilerInterceptor.d.ts.map +1 -0
  71. package/lib/typescript/highlight-updates/utils/RenderCauseDetector.d.ts.map +1 -0
  72. package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts +10 -0
  73. package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts.map +1 -0
  74. package/lib/typescript/highlight-updates/utils/ViewTypeMapper.d.ts.map +1 -0
  75. package/lib/typescript/highlight-updates/utils/copySettingsStorage.d.ts.map +1 -0
  76. package/lib/typescript/highlight-updates/utils/renderExportFormatter.d.ts.map +1 -0
  77. package/lib/typescript/highlight-updates/utils/rendersExportFormatter.d.ts.map +1 -0
  78. package/lib/typescript/index.d.ts +1 -0
  79. package/lib/typescript/index.d.ts.map +1 -0
  80. package/lib/typescript/preset.d.ts.map +1 -0
  81. package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts +36 -0
  82. package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts.map +1 -0
  83. package/package.json +7 -7
@@ -1 +1,304 @@
1
- "use strict";import React,{memo}from"react";import{View,TouchableOpacity,TextInput,StyleSheet}from"react-native";import{Trash2,Search,Filter,X,Pause,Copy,ModalHeader,TabSelector,buoyColors,PowerToggleButton}from"@buoy-gg/shared-ui";import{StatsDisplay}from"./StatsDisplay";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const SearchSectionInner=memo(function({isActive:e,searchText:o,onSearchChange:t,onSearchClose:r}){return e?_jsxs(View,{nativeID:"__rn_buoy__search-container",style:styles.headerSearchContainer,children:[_jsx(Search,{size:14,color:buoyColors.textSecondary}),_jsx(TextInput,{style:styles.headerSearchInput,placeholder:"Search testID, nativeID, component...",placeholderTextColor:buoyColors.textMuted,value:o,onChangeText:t,onSubmitEditing:r,onBlur:r,accessibilityLabel:"Search renders",autoCapitalize:"none",autoCorrect:!1,returnKeyType:"search",autoFocus:!0}),o.length>0?_jsx(TouchableOpacity,{onPress:()=>{t(""),r()},style:styles.headerSearchClear,children:_jsx(X,{size:14,color:buoyColors.textSecondary})}):null]}):null});export const SearchSection=SearchSectionInner;const HeaderActionsInner=memo(function({onSearchToggle:e,onFilterToggle:o,onToggleTracking:t,onToggleFreeze:r,onClear:a,onOpenCopySettings:n,isTracking:s,isFrozen:i,activeFilterCount:l,hasRenders:c}){return _jsxs(ModalHeader.Actions,{children:[_jsx(TouchableOpacity,{onPress:e,style:styles.headerActionButton,children:_jsx(Search,{size:14,color:buoyColors.textSecondary})}),_jsx(TouchableOpacity,{onPress:o,style:[styles.headerActionButton,l>0&&styles.activeFilterButton],children:_jsx(Filter,{size:14,color:l>0?buoyColors.primary:buoyColors.textMuted})}),_jsx(TouchableOpacity,{onPress:n,style:[styles.headerActionButton,!c&&styles.headerActionButtonDisabled],disabled:!c,accessibilityLabel:"Open copy settings",children:_jsx(Copy,{size:14,color:c?buoyColors.textSecondary:buoyColors.textMuted})}),_jsx(TouchableOpacity,{onPress:r,style:[styles.headerActionButton,i&&styles.freezeButton,!s&&styles.headerActionButtonDisabled],disabled:!s,children:_jsx(Pause,{size:14,color:s&&i?buoyColors.primary:buoyColors.textMuted})}),_jsx(PowerToggleButton,{isEnabled:s,onToggle:t,accessibilityLabel:"Toggle render tracking"}),_jsx(TouchableOpacity,{onPress:a,style:[styles.headerActionButton,!c&&styles.headerActionButtonDisabled],disabled:!c,children:_jsx(Trash2,{size:14,color:buoyColors.textMuted})})]})});export const HeaderActions=HeaderActionsInner;export const MainListHeader=memo(function({onBack:e,isSearchActive:o,searchText:t,onSearchChange:r,onSearchToggle:a,onSearchClose:n,onFilterToggle:s,onToggleTracking:i,onToggleFreeze:l,onClear:c,onOpenCopySettings:d,isTracking:h,isFrozen:u,activeFilterCount:y,hasRenders:g,searchInputRef:b}){return _jsxs(ModalHeader,{children:[e&&_jsx(ModalHeader.Navigation,{onBack:e}),_jsx(ModalHeader.Content,{title:"",children:o?_jsx(SearchSection,{isActive:o,searchText:t,onSearchChange:r,onSearchClose:n,searchInputRef:b}):_jsx(StatsDisplay,{})}),_jsx(HeaderActions,{onSearchToggle:a,onFilterToggle:s,onToggleTracking:i,onToggleFreeze:l,onClear:c,onOpenCopySettings:d,isTracking:h,isFrozen:u,activeFilterCount:y,hasRenders:g})]})});export const FilterViewHeader=memo(function({onBack:e,activeTab:o,onTabChange:t,activeFilterCount:r=0}){const a=[{key:"filters",label:"Filters"+(r>0?` (${r})`:"")},{key:"settings",label:"Settings"}];return _jsxs(ModalHeader,{children:[_jsx(ModalHeader.Navigation,{onBack:e}),_jsx(ModalHeader.Content,{title:"",noMargin:!0,children:_jsx(TabSelector,{tabs:a,activeTab:o,onTabChange:e=>t(e)})}),_jsx(ModalHeader.Actions,{})]})});export const DetailViewHeader=memo(function({onBack:e,activeTab:o,onTabChange:t,hasHistory:r=!0}){const a=[{key:"details",label:"Details"},{key:"history",label:"History",disabled:!r}];return _jsxs(ModalHeader,{children:[_jsx(ModalHeader.Navigation,{onBack:e}),_jsx(ModalHeader.Content,{title:"",noMargin:!0,children:_jsx(TabSelector,{tabs:a,activeTab:o,onTabChange:e=>t(e)})}),_jsx(ModalHeader.Actions,{})]})});export const CopySettingsViewHeader=memo(function({onBack:e}){return _jsxs(ModalHeader,{children:[_jsx(ModalHeader.Navigation,{onBack:e}),_jsx(ModalHeader.Content,{title:"Copy Settings"})]})});const styles=StyleSheet.create({headerSearchContainer:{flexDirection:"row",alignItems:"center",backgroundColor:buoyColors.input,borderRadius:10,borderWidth:1,borderColor:buoyColors.border,paddingHorizontal:12,paddingVertical:5},headerSearchInput:{flex:1,color:buoyColors.text,fontSize:13,marginLeft:6,paddingVertical:2},headerSearchClear:{marginLeft:6,padding:4},headerActionButton:{width:32,height:32,borderRadius:8,backgroundColor:buoyColors.hover,borderWidth:1,borderColor:buoyColors.border,alignItems:"center",justifyContent:"center"},headerActionButtonDisabled:{opacity:.55},activeFilterButton:{backgroundColor:buoyColors.primary+"15",borderColor:buoyColors.primary+"40"},freezeButton:{backgroundColor:buoyColors.primary+"15",borderColor:buoyColors.primary+"40"}});
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 { View, TouchableOpacity, TextInput, StyleSheet } from "react-native";
14
+ import { Trash2, Search, Filter, X, Pause, Copy, ModalHeader, TabSelector, buoyColors, 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__*/_jsxs(View, {
29
+ nativeID: "__rn_buoy__search-container",
30
+ style: styles.headerSearchContainer,
31
+ children: [/*#__PURE__*/_jsx(Search, {
32
+ size: 14,
33
+ color: buoyColors.textSecondary
34
+ }), /*#__PURE__*/_jsx(TextInput, {
35
+ style: styles.headerSearchInput,
36
+ placeholder: "Search testID, nativeID, component...",
37
+ placeholderTextColor: buoyColors.textMuted,
38
+ value: searchText,
39
+ onChangeText: onSearchChange,
40
+ onSubmitEditing: onSearchClose,
41
+ onBlur: onSearchClose,
42
+ accessibilityLabel: "Search renders",
43
+ autoCapitalize: "none",
44
+ autoCorrect: false,
45
+ returnKeyType: "search",
46
+ autoFocus: true
47
+ }), searchText.length > 0 ? /*#__PURE__*/_jsx(TouchableOpacity, {
48
+ onPress: () => {
49
+ onSearchChange("");
50
+ onSearchClose();
51
+ },
52
+ style: styles.headerSearchClear,
53
+ children: /*#__PURE__*/_jsx(X, {
54
+ size: 14,
55
+ color: buoyColors.textSecondary
56
+ })
57
+ }) : null]
58
+ });
59
+ });
60
+ export const SearchSection = SearchSectionInner;
61
+
62
+ // ============================================================================
63
+ // Header Actions - isolated component for action buttons
64
+ // ============================================================================
65
+
66
+ const HeaderActionsInner = /*#__PURE__*/memo(function HeaderActions({
67
+ onSearchToggle,
68
+ onFilterToggle,
69
+ onToggleTracking,
70
+ onToggleFreeze,
71
+ onClear,
72
+ onOpenCopySettings,
73
+ isTracking,
74
+ isFrozen,
75
+ activeFilterCount,
76
+ hasRenders
77
+ }) {
78
+ return /*#__PURE__*/_jsxs(ModalHeader.Actions, {
79
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
80
+ onPress: onSearchToggle,
81
+ style: styles.headerActionButton,
82
+ children: /*#__PURE__*/_jsx(Search, {
83
+ size: 14,
84
+ color: buoyColors.textSecondary
85
+ })
86
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
87
+ onPress: onFilterToggle,
88
+ style: [styles.headerActionButton, activeFilterCount > 0 && styles.activeFilterButton],
89
+ children: /*#__PURE__*/_jsx(Filter, {
90
+ size: 14,
91
+ color: activeFilterCount > 0 ? buoyColors.primary : buoyColors.textMuted
92
+ })
93
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
94
+ onPress: onOpenCopySettings,
95
+ style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
96
+ disabled: !hasRenders,
97
+ accessibilityLabel: "Open copy settings",
98
+ children: /*#__PURE__*/_jsx(Copy, {
99
+ size: 14,
100
+ color: hasRenders ? buoyColors.textSecondary : buoyColors.textMuted
101
+ })
102
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
103
+ onPress: onToggleFreeze,
104
+ style: [styles.headerActionButton, isFrozen && styles.freezeButton, !isTracking && styles.headerActionButtonDisabled],
105
+ disabled: !isTracking,
106
+ children: /*#__PURE__*/_jsx(Pause, {
107
+ size: 14,
108
+ color: !isTracking ? buoyColors.textMuted : isFrozen ? buoyColors.primary : buoyColors.textMuted
109
+ })
110
+ }), /*#__PURE__*/_jsx(PowerToggleButton, {
111
+ isEnabled: isTracking,
112
+ onToggle: onToggleTracking,
113
+ accessibilityLabel: "Toggle render tracking"
114
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
115
+ onPress: onClear,
116
+ style: [styles.headerActionButton, !hasRenders && styles.headerActionButtonDisabled],
117
+ disabled: !hasRenders,
118
+ children: /*#__PURE__*/_jsx(Trash2, {
119
+ size: 14,
120
+ color: hasRenders ? buoyColors.textMuted : buoyColors.textMuted
121
+ })
122
+ })]
123
+ });
124
+ });
125
+ export const HeaderActions = HeaderActionsInner;
126
+
127
+ // ============================================================================
128
+ // Main List Header - complete header for main list view
129
+ // ============================================================================
130
+
131
+ export const MainListHeader = /*#__PURE__*/memo(function MainListHeader({
132
+ onBack,
133
+ isSearchActive,
134
+ searchText,
135
+ onSearchChange,
136
+ onSearchToggle,
137
+ onSearchClose,
138
+ onFilterToggle,
139
+ onToggleTracking,
140
+ onToggleFreeze,
141
+ onClear,
142
+ onOpenCopySettings,
143
+ isTracking,
144
+ isFrozen,
145
+ activeFilterCount,
146
+ hasRenders,
147
+ searchInputRef
148
+ }) {
149
+ return /*#__PURE__*/_jsxs(ModalHeader, {
150
+ children: [onBack && /*#__PURE__*/_jsx(ModalHeader.Navigation, {
151
+ onBack: onBack
152
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
153
+ title: "",
154
+ children: isSearchActive ? /*#__PURE__*/_jsx(SearchSection, {
155
+ isActive: isSearchActive,
156
+ searchText: searchText,
157
+ onSearchChange: onSearchChange,
158
+ onSearchClose: onSearchClose,
159
+ searchInputRef: searchInputRef
160
+ }) : /*#__PURE__*/_jsx(StatsDisplay, {})
161
+ }), /*#__PURE__*/_jsx(HeaderActions, {
162
+ onSearchToggle: onSearchToggle,
163
+ onFilterToggle: onFilterToggle,
164
+ onToggleTracking: onToggleTracking,
165
+ onToggleFreeze: onToggleFreeze,
166
+ onClear: onClear,
167
+ onOpenCopySettings: onOpenCopySettings,
168
+ isTracking: isTracking,
169
+ isFrozen: isFrozen,
170
+ activeFilterCount: activeFilterCount,
171
+ hasRenders: hasRenders
172
+ })]
173
+ });
174
+ });
175
+
176
+ // ============================================================================
177
+ // Filter View Header
178
+ // ============================================================================
179
+
180
+ export const FilterViewHeader = /*#__PURE__*/memo(function FilterViewHeader({
181
+ onBack,
182
+ activeTab,
183
+ onTabChange,
184
+ activeFilterCount = 0
185
+ }) {
186
+ const tabs = [{
187
+ key: "filters",
188
+ label: `Filters${activeFilterCount > 0 ? ` (${activeFilterCount})` : ""}`
189
+ }, {
190
+ key: "settings",
191
+ label: "Settings"
192
+ }];
193
+ return /*#__PURE__*/_jsxs(ModalHeader, {
194
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
195
+ onBack: onBack
196
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
197
+ title: "",
198
+ noMargin: true,
199
+ children: /*#__PURE__*/_jsx(TabSelector, {
200
+ tabs: tabs,
201
+ activeTab: activeTab,
202
+ onTabChange: tab => onTabChange(tab)
203
+ })
204
+ }), /*#__PURE__*/_jsx(ModalHeader.Actions, {})]
205
+ });
206
+ });
207
+
208
+ // ============================================================================
209
+ // Detail View Header
210
+ // ============================================================================
211
+
212
+ export const DetailViewHeader = /*#__PURE__*/memo(function DetailViewHeader({
213
+ onBack,
214
+ activeTab,
215
+ onTabChange,
216
+ hasHistory = true
217
+ }) {
218
+ const tabs = [{
219
+ key: "details",
220
+ label: "Details"
221
+ }, {
222
+ key: "history",
223
+ label: "History",
224
+ disabled: !hasHistory
225
+ }];
226
+ return /*#__PURE__*/_jsxs(ModalHeader, {
227
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
228
+ onBack: onBack
229
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
230
+ title: "",
231
+ noMargin: true,
232
+ children: /*#__PURE__*/_jsx(TabSelector, {
233
+ tabs: tabs,
234
+ activeTab: activeTab,
235
+ onTabChange: tab => onTabChange(tab)
236
+ })
237
+ }), /*#__PURE__*/_jsx(ModalHeader.Actions, {})]
238
+ });
239
+ });
240
+
241
+ // ============================================================================
242
+ // Copy Settings View Header
243
+ // ============================================================================
244
+
245
+ export const CopySettingsViewHeader = /*#__PURE__*/memo(function CopySettingsViewHeader({
246
+ onBack
247
+ }) {
248
+ return /*#__PURE__*/_jsxs(ModalHeader, {
249
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
250
+ onBack: onBack
251
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
252
+ title: "Copy Settings"
253
+ })]
254
+ });
255
+ });
256
+
257
+ // ============================================================================
258
+ // Styles
259
+ // ============================================================================
260
+
261
+ const styles = StyleSheet.create({
262
+ headerSearchContainer: {
263
+ flexDirection: "row",
264
+ alignItems: "center",
265
+ backgroundColor: buoyColors.input,
266
+ borderRadius: 10,
267
+ borderWidth: 1,
268
+ borderColor: buoyColors.border,
269
+ paddingHorizontal: 12,
270
+ paddingVertical: 5
271
+ },
272
+ headerSearchInput: {
273
+ flex: 1,
274
+ color: buoyColors.text,
275
+ fontSize: 13,
276
+ marginLeft: 6,
277
+ paddingVertical: 2
278
+ },
279
+ headerSearchClear: {
280
+ marginLeft: 6,
281
+ padding: 4
282
+ },
283
+ headerActionButton: {
284
+ width: 32,
285
+ height: 32,
286
+ borderRadius: 8,
287
+ backgroundColor: buoyColors.hover,
288
+ borderWidth: 1,
289
+ borderColor: buoyColors.border,
290
+ alignItems: "center",
291
+ justifyContent: "center"
292
+ },
293
+ headerActionButtonDisabled: {
294
+ opacity: 0.55
295
+ },
296
+ activeFilterButton: {
297
+ backgroundColor: buoyColors.primary + "15",
298
+ borderColor: buoyColors.primary + "40"
299
+ },
300
+ freezeButton: {
301
+ backgroundColor: buoyColors.primary + "15",
302
+ borderColor: buoyColors.primary + "40"
303
+ }
304
+ });