@buoy-gg/network 7.0.25 → 7.0.27

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 (49) hide show
  1. package/lib/commonjs/network/components/NetworkDetailStepper.js +2 -1
  2. package/lib/commonjs/network/components/NetworkEventDetailView.js +74 -72
  3. package/lib/commonjs/network/components/NetworkEventItemCompact.js +24 -20
  4. package/lib/commonjs/network/components/NetworkEventItemCompact.web.js +24 -6
  5. package/lib/commonjs/network/components/NetworkFilterViewV3.js +12 -12
  6. package/lib/commonjs/network/components/NetworkHeaderLive.js +25 -29
  7. package/lib/commonjs/network/components/NetworkHeaderLive.web.js +24 -6
  8. package/lib/commonjs/network/components/NetworkHeaderMenu.js +10 -9
  9. package/lib/commonjs/network/components/NetworkListScreen.js +2 -1
  10. package/lib/commonjs/network/components/NetworkListScreen.web.js +24 -6
  11. package/lib/commonjs/network/components/NetworkModal.js +45 -31
  12. package/lib/commonjs/network/components/NetworkOverrideHeaderButton.js +10 -7
  13. package/lib/commonjs/network/components/NetworkOverridesButton.js +7 -7
  14. package/lib/commonjs/network/sync/networkSyncAdapter.js +36 -16
  15. package/lib/commonjs/network/utils/networkEventStore.js +26 -0
  16. package/lib/commonjs/network/utils/networkListener.js +173 -39
  17. package/lib/module/network/components/NetworkDetailStepper.js +2 -1
  18. package/lib/module/network/components/NetworkEventDetailView.js +75 -73
  19. package/lib/module/network/components/NetworkEventItemCompact.js +25 -21
  20. package/lib/module/network/components/NetworkEventItemCompact.web.js +24 -6
  21. package/lib/module/network/components/NetworkFilterViewV3.js +13 -13
  22. package/lib/module/network/components/NetworkHeaderLive.js +26 -30
  23. package/lib/module/network/components/NetworkHeaderLive.web.js +24 -6
  24. package/lib/module/network/components/NetworkHeaderMenu.js +11 -10
  25. package/lib/module/network/components/NetworkListScreen.js +3 -2
  26. package/lib/module/network/components/NetworkListScreen.web.js +24 -6
  27. package/lib/module/network/components/NetworkModal.js +46 -32
  28. package/lib/module/network/components/NetworkOverrideHeaderButton.js +11 -8
  29. package/lib/module/network/components/NetworkOverridesButton.js +8 -8
  30. package/lib/module/network/sync/networkSyncAdapter.js +37 -17
  31. package/lib/module/network/utils/networkEventStore.js +26 -0
  32. package/lib/module/network/utils/networkListener.js +171 -38
  33. package/lib/typescript/network/components/NetworkDetailStepper.d.ts.map +1 -1
  34. package/lib/typescript/network/components/NetworkEventDetailView.d.ts.map +1 -1
  35. package/lib/typescript/network/components/NetworkEventItemCompact.d.ts.map +1 -1
  36. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts.map +1 -1
  37. package/lib/typescript/network/components/NetworkFilterViewV3.d.ts.map +1 -1
  38. package/lib/typescript/network/components/NetworkHeaderLive.d.ts.map +1 -1
  39. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts.map +1 -1
  40. package/lib/typescript/network/components/NetworkListScreen.d.ts.map +1 -1
  41. package/lib/typescript/network/components/NetworkListScreen.web.d.ts.map +1 -1
  42. package/lib/typescript/network/components/NetworkModal.d.ts.map +1 -1
  43. package/lib/typescript/network/sync/networkSyncAdapter.d.ts +1 -0
  44. package/lib/typescript/network/sync/networkSyncAdapter.d.ts.map +1 -1
  45. package/lib/typescript/network/utils/networkEventStore.d.ts +17 -0
  46. package/lib/typescript/network/utils/networkEventStore.d.ts.map +1 -1
  47. package/lib/typescript/network/utils/networkListener.d.ts +61 -5
  48. package/lib/typescript/network/utils/networkListener.d.ts.map +1 -1
  49. package/package.json +2 -2
@@ -181,13 +181,30 @@ const FlaskConical = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
181
181
  d: "M7 16h10"
182
182
  })]
183
183
  });
184
- const Pin = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
184
+ const Pin = ({
185
+ active,
186
+ ...p
187
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Svg, {
185
188
  ...p,
186
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
187
- d: "M12 17v5"
188
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
189
- d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1z"
190
- })]
189
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
190
+ transform: active ? "rotate(-45 12 12) translate(12 12) scale(0.92) translate(-12 -12)" : undefined,
191
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
192
+ d: "M2.97 21.03 8.18 15.82"
193
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
194
+ d: "M4.4 10.81 13.19 19.6"
195
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
196
+ d: "M5.17 10.54 11.43 8.83"
197
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
198
+ d: "M13.46 18.83 15.17 12.57"
199
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
200
+ x: "12.15",
201
+ y: "5.4",
202
+ width: "9.38",
203
+ height: "3.52",
204
+ rx: "1.07",
205
+ transform: "rotate(-45 16.84 7.16)"
206
+ })]
207
+ })
191
208
  });
192
209
 
193
210
  // =============================
@@ -623,6 +640,7 @@ const NetworkEventItemCompact = exports.NetworkEventItemCompact = /*#__PURE__*/(
623
640
  style: styles.topRightContainer,
624
641
  children: [pinned ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Pin, {
625
642
  size: 10,
643
+ active: true,
626
644
  color: macOSColors.semantic.info
627
645
  }) : null, saved ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Bookmark, {
628
646
  size: 10,
@@ -45,7 +45,7 @@ function getContentType(event) {
45
45
  };
46
46
  return {
47
47
  type: "OTHER",
48
- color: _sharedUi.macOSColors.text.muted
48
+ color: _sharedUi.night.color.textTertiary
49
49
  };
50
50
  }
51
51
  function getContentTypeIcon(type) {
@@ -79,7 +79,7 @@ function getMethodColor(method) {
79
79
  case "PATCH":
80
80
  return _sharedUi.macOSColors.semantic.success;
81
81
  default:
82
- return _sharedUi.macOSColors.text.muted;
82
+ return _sharedUi.night.color.textTertiary;
83
83
  }
84
84
  }
85
85
 
@@ -115,7 +115,7 @@ function NetworkFilterViewV3({
115
115
  const renderPatternMeta = (0, _react.useCallback)(pattern => {
116
116
  const mode = patternModes.get(pattern) ?? "contains";
117
117
  const isExact = mode === "exact";
118
- const color = isExact ? _sharedUi.macOSColors.semantic.warning : _sharedUi.macOSColors.semantic.info;
118
+ const color = isExact ? _sharedUi.night.color.warning : _sharedUi.night.color.info;
119
119
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
120
120
  accessibilityRole: "button",
121
121
  accessibilityLabel: `Match mode: ${mode}. Tap to toggle.`,
@@ -331,7 +331,7 @@ function NetworkFilterViewV3({
331
331
  const {
332
332
  color
333
333
  } = representativeEvent ? getContentType(representativeEvent) : {
334
- color: _sharedUi.macOSColors.text.muted
334
+ color: _sharedUi.night.color.textTertiary
335
335
  };
336
336
  return {
337
337
  id: `contentType::${type}`,
@@ -401,7 +401,7 @@ const styles = _reactNative.StyleSheet.create({
401
401
  modeToggleLabel: {
402
402
  fontSize: 11,
403
403
  fontWeight: "600",
404
- color: _sharedUi.macOSColors.text.secondary,
404
+ color: _sharedUi.night.color.textSecondary,
405
405
  fontFamily: "monospace",
406
406
  letterSpacing: 0.3
407
407
  },
@@ -416,27 +416,27 @@ const styles = _reactNative.StyleSheet.create({
416
416
  paddingHorizontal: 10,
417
417
  borderRadius: 8,
418
418
  borderWidth: 1,
419
- borderColor: _sharedUi.macOSColors.border.default,
420
- backgroundColor: _sharedUi.macOSColors.background.hover,
419
+ borderColor: _sharedUi.night.color.border,
420
+ backgroundColor: _sharedUi.night.color.buttonSurface,
421
421
  alignItems: "center"
422
422
  },
423
423
  modeToggleButtonActive: {
424
- borderColor: _sharedUi.macOSColors.semantic.info,
425
- backgroundColor: `${_sharedUi.macOSColors.semantic.info}22`
424
+ borderColor: _sharedUi.night.color.accentBorderStrong,
425
+ backgroundColor: _sharedUi.night.color.accentSoft
426
426
  },
427
427
  modeToggleButtonText: {
428
428
  fontSize: 11,
429
429
  fontWeight: "700",
430
- color: _sharedUi.macOSColors.text.secondary,
430
+ color: _sharedUi.night.color.textSecondary,
431
431
  fontFamily: "monospace",
432
432
  letterSpacing: 0.3
433
433
  },
434
434
  modeToggleButtonTextActive: {
435
- color: _sharedUi.macOSColors.semantic.info
435
+ color: _sharedUi.night.color.accent
436
436
  },
437
437
  modeToggleButtonHint: {
438
438
  fontSize: 9,
439
- color: _sharedUi.macOSColors.text.muted,
439
+ color: _sharedUi.night.color.textTertiary,
440
440
  marginTop: 1
441
441
  }
442
442
  });
@@ -105,7 +105,7 @@ function NetworkClearButton({
105
105
  disabled: !hasEvents,
106
106
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Trash2, {
107
107
  size: 14,
108
- color: hasEvents ? _sharedUi.macOSColors.text.muted : _sharedUi.macOSColors.text.disabled
108
+ color: hasEvents ? _sharedUi.night.color.textSecondary : _sharedUi.night.color.textTertiary
109
109
  })
110
110
  });
111
111
  }
@@ -127,7 +127,7 @@ function NetworkSavedButton({
127
127
  style: styles.headerActionButton,
128
128
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Bookmark, {
129
129
  size: 14,
130
- color: count > 0 ? _sharedUi.macOSColors.semantic.debug : _sharedUi.macOSColors.text.muted
130
+ color: count > 0 ? _sharedUi.night.color.accent : _sharedUi.night.color.textSecondary
131
131
  }), count > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
132
132
  style: styles.savedBadge,
133
133
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
@@ -195,7 +195,8 @@ function NetworkDetailPinActions({
195
195
  style: [styles.headerActionButton, pinned && styles.headerActionButtonActive, atPinCap && styles.headerActionButtonDisabled],
196
196
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Pin, {
197
197
  size: 14,
198
- color: pinned ? _sharedUi.macOSColors.semantic.info : atPinCap ? _sharedUi.macOSColors.text.disabled : _sharedUi.macOSColors.text.secondary
198
+ active: pinned,
199
+ color: pinned ? _sharedUi.night.color.accent : atPinCap ? _sharedUi.night.color.textTertiary : _sharedUi.night.color.textSecondary
199
200
  })
200
201
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
201
202
  "sentry-label": "ignore save request",
@@ -206,7 +207,7 @@ function NetworkDetailPinActions({
206
207
  style: [styles.headerActionButton, saved && styles.headerActionButtonSaved, atSavedCap && isPro && styles.headerActionButtonDisabled],
207
208
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Bookmark, {
208
209
  size: 14,
209
- color: saved ? _sharedUi.macOSColors.semantic.debug : atSavedCap && isPro ? _sharedUi.macOSColors.text.disabled : _sharedUi.macOSColors.text.secondary
210
+ color: saved ? _sharedUi.night.color.accent : atSavedCap && isPro ? _sharedUi.night.color.textTertiary : _sharedUi.night.color.textSecondary
210
211
  })
211
212
  })]
212
213
  });
@@ -238,7 +239,7 @@ function NetworkHeaderCopyButton({
238
239
  disabled: !hasEvents,
239
240
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Copy, {
240
241
  size: 14,
241
- color: hasEvents ? _sharedUi.macOSColors.text.secondary : _sharedUi.macOSColors.text.disabled
242
+ color: hasEvents ? _sharedUi.night.color.textSecondary : _sharedUi.night.color.textTertiary
242
243
  }), label ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
243
244
  style: styles.copyMenuLabel,
244
245
  children: label
@@ -255,7 +256,7 @@ function NetworkHeaderCopyButton({
255
256
  buttonStyle: label ? styles.copyMenuRow : styles.headerActionButton,
256
257
  labelStyle: styles.copyMenuLabel,
257
258
  colors: {
258
- idle: hasEvents ? _sharedUi.macOSColors.text.secondary : _sharedUi.macOSColors.text.disabled,
259
+ idle: hasEvents ? _sharedUi.night.color.textSecondary : _sharedUi.night.color.textTertiary,
259
260
  success: _sharedUi.macOSColors.semantic.success,
260
261
  error: _sharedUi.macOSColors.semantic.error
261
262
  },
@@ -275,7 +276,7 @@ const styles = _reactNative.StyleSheet.create({
275
276
  copyMenuLabel: {
276
277
  fontSize: 13,
277
278
  fontWeight: "600",
278
- color: _sharedUi.macOSColors.text.primary
279
+ color: _sharedUi.night.color.text
279
280
  },
280
281
  headerChipRow: {
281
282
  flexDirection: "row",
@@ -283,31 +284,26 @@ const styles = _reactNative.StyleSheet.create({
283
284
  gap: 8
284
285
  },
285
286
  /**
286
- * Counter chips and toolbar buttons carry a permanent outline; the fill marks
287
- * the active filter.
287
+ * Counter chips and toolbar buttons on the night dark-glass fill — the
288
+ * hairline outline barely registers on the star field, and the fill marks
289
+ * the active filter in the brand accent (the night selection language).
290
+ * Status glyph/count colors stay on the classic semantic palette on
291
+ * purpose — see getStatusColor in NetworkEventItemCompact.
288
292
  */
289
293
  headerChip: {
290
294
  flexDirection: "row",
291
295
  alignItems: "center",
292
296
  gap: 4,
293
- backgroundColor: _sharedUi.macOSColors.background.hover,
297
+ backgroundColor: _sharedUi.night.color.buttonSurface,
294
298
  paddingHorizontal: 10,
295
299
  paddingVertical: 5,
296
300
  borderRadius: 12,
297
301
  borderWidth: 1,
298
- borderColor: _sharedUi.macOSColors.border.default
302
+ borderColor: _sharedUi.night.color.border
299
303
  },
300
304
  headerChipActive: {
301
- backgroundColor: _sharedUi.macOSColors.semantic.infoBackground,
302
- borderColor: _sharedUi.macOSColors.semantic.info + "50",
303
- shadowColor: _sharedUi.macOSColors.semantic.info,
304
- shadowOffset: {
305
- width: 0,
306
- height: 1
307
- },
308
- shadowOpacity: 0.08,
309
- shadowRadius: 2,
310
- elevation: 1
305
+ backgroundColor: _sharedUi.night.color.accentSoft,
306
+ borderColor: _sharedUi.night.color.accentBorderStrong
311
307
  },
312
308
  headerChipValue: {
313
309
  fontSize: 12,
@@ -318,9 +314,9 @@ const styles = _reactNative.StyleSheet.create({
318
314
  width: 32,
319
315
  height: 32,
320
316
  borderRadius: 8,
321
- backgroundColor: _sharedUi.macOSColors.background.hover,
317
+ backgroundColor: _sharedUi.night.color.buttonSurface,
322
318
  borderWidth: 1,
323
- borderColor: _sharedUi.macOSColors.border.default,
319
+ borderColor: _sharedUi.night.color.border,
324
320
  alignItems: "center",
325
321
  justifyContent: "center"
326
322
  },
@@ -328,12 +324,12 @@ const styles = _reactNative.StyleSheet.create({
328
324
  opacity: 0.55
329
325
  },
330
326
  headerActionButtonActive: {
331
- backgroundColor: _sharedUi.macOSColors.semantic.infoBackground,
332
- borderColor: _sharedUi.macOSColors.semantic.info + "50"
327
+ backgroundColor: _sharedUi.night.color.accentSoft,
328
+ borderColor: _sharedUi.night.color.accentBorderStrong
333
329
  },
334
330
  headerActionButtonSaved: {
335
- backgroundColor: _sharedUi.macOSColors.semantic.debug + "1A",
336
- borderColor: _sharedUi.macOSColors.semantic.debug + "50"
331
+ backgroundColor: _sharedUi.night.color.accentSoft,
332
+ borderColor: _sharedUi.night.color.accentBorderStrong
337
333
  },
338
334
  savedBadge: {
339
335
  position: "absolute",
@@ -343,12 +339,12 @@ const styles = _reactNative.StyleSheet.create({
343
339
  height: 14,
344
340
  paddingHorizontal: 3,
345
341
  borderRadius: 7,
346
- backgroundColor: _sharedUi.macOSColors.semantic.debug,
342
+ backgroundColor: _sharedUi.night.color.accent,
347
343
  alignItems: "center",
348
344
  justifyContent: "center"
349
345
  },
350
346
  savedBadgeText: {
351
- color: "#FFFFFF",
347
+ color: _sharedUi.night.color.onAccent,
352
348
  fontSize: 9,
353
349
  fontWeight: "700",
354
350
  fontFamily: "monospace"
@@ -170,13 +170,30 @@ const Bookmark = p => /*#__PURE__*/(0, _jsxRuntime.jsx)(Svg, {
170
170
  d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z"
171
171
  })
172
172
  });
173
- const Pin = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
173
+ const Pin = ({
174
+ active,
175
+ ...p
176
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Svg, {
174
177
  ...p,
175
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
176
- d: "M12 17v5"
177
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
178
- d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1z"
179
- })]
178
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
179
+ transform: active ? "rotate(-45 12 12) translate(12 12) scale(0.92) translate(-12 -12)" : undefined,
180
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
181
+ d: "M2.97 21.03 8.18 15.82"
182
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
183
+ d: "M4.4 10.81 13.19 19.6"
184
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
185
+ d: "M5.17 10.54 11.43 8.83"
186
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
187
+ d: "M13.46 18.83 15.17 12.57"
188
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
189
+ x: "12.15",
190
+ y: "5.4",
191
+ width: "9.38",
192
+ height: "3.52",
193
+ rx: "1.07",
194
+ transform: "rotate(-45 16.84 7.16)"
195
+ })]
196
+ })
180
197
  });
181
198
  const Copy = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
182
199
  ...p,
@@ -385,6 +402,7 @@ function NetworkDetailPinActions({
385
402
  },
386
403
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Pin, {
387
404
  size: 14,
405
+ active: pinned,
388
406
  color: pinned ? macOSColors.semantic.info : atPinCap ? macOSColors.text.disabled : macOSColors.text.secondary
389
407
  })
390
408
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
@@ -113,7 +113,7 @@ const styles = _reactNative.StyleSheet.create({
113
113
  // Only lit while the menu is down — the button is the one thing not covered
114
114
  // by the backdrop, so it has to look like the thing that is currently open.
115
115
  buttonOpen: {
116
- backgroundColor: _sharedUi.macOSColors.background.hover
116
+ backgroundColor: _sharedUi.night.color.surfaceElevated
117
117
  },
118
118
  dots: {
119
119
  flexDirection: "column",
@@ -124,10 +124,10 @@ const styles = _reactNative.StyleSheet.create({
124
124
  width: 3,
125
125
  height: 3,
126
126
  borderRadius: 2,
127
- backgroundColor: _sharedUi.macOSColors.text.secondary
127
+ backgroundColor: _sharedUi.night.color.textSecondary
128
128
  },
129
129
  dotOpen: {
130
- backgroundColor: _sharedUi.macOSColors.text.primary
130
+ backgroundColor: _sharedUi.night.color.text
131
131
  },
132
132
  indicator: {
133
133
  position: "absolute",
@@ -138,7 +138,7 @@ const styles = _reactNative.StyleSheet.create({
138
138
  width: 6,
139
139
  height: 6,
140
140
  borderRadius: 3,
141
- backgroundColor: _sharedUi.macOSColors.semantic.info
141
+ backgroundColor: _sharedUi.night.color.accent
142
142
  },
143
143
  overlay: {
144
144
  ..._sharedUi.absoluteFill,
@@ -148,16 +148,17 @@ const styles = _reactNative.StyleSheet.create({
148
148
  ..._sharedUi.absoluteFill,
149
149
  backgroundColor: "rgba(0,0,0,0.5)"
150
150
  },
151
+ // The night card: near-black surface, hairline border, row radius.
151
152
  panel: {
152
153
  position: "absolute",
153
154
  top: 6,
154
155
  right: 8,
155
156
  minWidth: 196,
156
157
  paddingVertical: 4,
157
- borderRadius: 8,
158
+ borderRadius: 10,
158
159
  borderWidth: 1,
159
- borderColor: _sharedUi.macOSColors.border.hover,
160
- backgroundColor: _sharedUi.macOSColors.background.card
160
+ borderColor: _sharedUi.night.color.border,
161
+ backgroundColor: _sharedUi.night.color.surface
161
162
  },
162
163
  item: {
163
164
  flexDirection: "row",
@@ -174,10 +175,10 @@ const styles = _reactNative.StyleSheet.create({
174
175
  flex: 1,
175
176
  fontSize: 13,
176
177
  fontWeight: "600",
177
- color: _sharedUi.macOSColors.text.primary
178
+ color: _sharedUi.night.color.text
178
179
  },
179
180
  itemDetail: {
180
181
  fontSize: 11,
181
- color: _sharedUi.macOSColors.text.muted
182
+ color: _sharedUi.night.color.textTertiary
182
183
  }
183
184
  });
@@ -71,6 +71,7 @@ function PinnedSection({
71
71
  style: styles.pinnedHeader,
72
72
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Pin, {
73
73
  size: 11,
74
+ active: true,
74
75
  color: _sharedUi.macOSColors.semantic.info
75
76
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
76
77
  style: styles.pinnedTitle,
@@ -237,7 +238,7 @@ function NetworkListScreen({
237
238
  };
238
239
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
239
240
  style: styles.root,
240
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.BackgroundSwitcher, {}), !isEnabled ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
241
+ children: [!isEnabled ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
241
242
  style: styles.disabledBanner,
242
243
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Power, {
243
244
  size: 14,
@@ -127,13 +127,30 @@ const Globe = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
127
127
  d: "M2 12h20"
128
128
  })]
129
129
  });
130
- const Pin = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
130
+ const Pin = ({
131
+ active,
132
+ ...p
133
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Svg, {
131
134
  ...p,
132
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
133
- d: "M12 17v5"
134
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
135
- d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1z"
136
- })]
135
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
136
+ transform: active ? "rotate(-45 12 12) translate(12 12) scale(0.92) translate(-12 -12)" : undefined,
137
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
138
+ d: "M2.97 21.03 8.18 15.82"
139
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
140
+ d: "M4.4 10.81 13.19 19.6"
141
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
142
+ d: "M5.17 10.54 11.43 8.83"
143
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
144
+ d: "M13.46 18.83 15.17 12.57"
145
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
146
+ x: "12.15",
147
+ y: "5.4",
148
+ width: "9.38",
149
+ height: "3.52",
150
+ rx: "1.07",
151
+ transform: "rotate(-45 16.84 7.16)"
152
+ })]
153
+ })
137
154
  });
138
155
  const Power = p => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Svg, {
139
156
  ...p,
@@ -239,6 +256,7 @@ function PinnedSection({
239
256
  style: styles.pinnedHeader,
240
257
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Pin, {
241
258
  size: 11,
259
+ active: true,
242
260
  color: macOSColors.semantic.info
243
261
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
244
262
  style: styles.pinnedTitle,
@@ -365,25 +365,26 @@ function NetworkModalInner({
365
365
 
366
366
  // Compact header with actions (like Sentry/Storage modals)
367
367
  const renderHeaderContent = () => {
368
- // Filter view header with tabs
368
+ // Filter view header with tabs — the night segmented control (the same
369
+ // one the dial settings header uses).
369
370
  if (showFilterView) {
370
- const tabs = [{
371
- key: "filters",
372
- label: "Filters"
373
- }, {
374
- key: "copy",
375
- label: "Copy"
376
- }];
377
371
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
378
372
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
379
373
  onBack: () => setShowFilterView(false)
380
374
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
381
375
  title: "",
382
376
  noMargin: true,
383
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
384
- tabs: tabs,
385
- activeTab: activeTab,
386
- onTabChange: tab => setActiveTab(tab)
377
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.NightSegmented, {
378
+ size: "sm",
379
+ tabs: [{
380
+ key: "filters",
381
+ label: "Filters"
382
+ }, {
383
+ key: "copy",
384
+ label: "Copy"
385
+ }],
386
+ activeKey: activeTab,
387
+ onChange: tab => setActiveTab(tab)
387
388
  })
388
389
  })]
389
390
  });
@@ -449,12 +450,12 @@ function NetworkModalInner({
449
450
  style: styles.headerSearchContainer,
450
451
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
451
452
  size: 14,
452
- color: _sharedUi.macOSColors.text.secondary
453
+ color: _sharedUi.night.color.textSecondary
453
454
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
454
455
  ref: searchInputRef,
455
456
  style: styles.headerSearchInput,
456
457
  placeholder: "Search URL, method, operation, error...",
457
- placeholderTextColor: _sharedUi.macOSColors.text.muted,
458
+ placeholderTextColor: _sharedUi.night.color.placeholder,
458
459
  value: searchText,
459
460
  onChangeText: handleSearch,
460
461
  onSubmitEditing: () => setIsSearchActive(false),
@@ -473,7 +474,7 @@ function NetworkModalInner({
473
474
  style: styles.headerSearchClear,
474
475
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.X, {
475
476
  size: 14,
476
- color: _sharedUi.macOSColors.text.secondary
477
+ color: _sharedUi.night.color.textSecondary
477
478
  })
478
479
  }) : null]
479
480
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_NetworkHeaderLive.NetworkHeaderBadges, {
@@ -489,7 +490,7 @@ function NetworkModalInner({
489
490
  style: styles.headerActionButton,
490
491
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
491
492
  size: 14,
492
- color: _sharedUi.macOSColors.text.secondary
493
+ color: _sharedUi.night.color.textSecondary
493
494
  })
494
495
  }), overridesAvailable ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_NetworkOverridesButton.NetworkOverridesButton, {
495
496
  onPress: () => setShowOverridesView(true)
@@ -525,7 +526,7 @@ function NetworkModalInner({
525
526
  const body = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
526
527
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
527
528
  style: styles.container,
528
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolBackground, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(NetworkDetailScreen, {
529
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(NetworkDetailScreen, {
529
530
  visible: hasSelection,
530
531
  paused: paused,
531
532
  ignoredPatternValues: ignoredPatternValues,
@@ -595,7 +596,7 @@ function NetworkModalInner({
595
596
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_NetworkHeaderMenu.NetworkHeaderMenuItem, {
596
597
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Filter, {
597
598
  size: 14,
598
- color: hasActiveFilter ? _sharedUi.macOSColors.semantic.info : _sharedUi.macOSColors.text.secondary
599
+ color: hasActiveFilter ? _sharedUi.night.color.accent : _sharedUi.night.color.textSecondary
599
600
  }),
600
601
  label: "Filters",
601
602
  detail: hasActiveFilter ? "Active" : undefined,
@@ -607,7 +608,7 @@ function NetworkModalInner({
607
608
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_NetworkHeaderMenu.NetworkHeaderMenuItem, {
608
609
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Bookmark, {
609
610
  size: 14,
610
- color: _sharedUi.macOSColors.text.secondary
611
+ color: _sharedUi.night.color.textSecondary
611
612
  }),
612
613
  label: "Saved requests",
613
614
  onPress: () => {
@@ -659,6 +660,7 @@ function NetworkModalInner({
659
660
  onClose: onClose,
660
661
  onMinimize: onMinimize,
661
662
  persistenceKey: persistenceKey,
663
+ variant: "night",
662
664
  header: {
663
665
  showToggleButton: true,
664
666
  customContent: renderHeaderContent()
@@ -667,7 +669,12 @@ function NetworkModalInner({
667
669
  enablePersistence: true,
668
670
  initialMode: "bottomSheet",
669
671
  enableGlitchEffects: true,
670
- disableScrollWrapper: bodyOwnsScroll,
672
+ disableScrollWrapper: bodyOwnsScroll
673
+ // Night hoists the ToolBackground to the sheet root (field runs through
674
+ // the header). The desktop INLINE panel never goes through JsModal — its
675
+ // host (the workbench) hoists one shared field instead, so the body
676
+ // mounts none of its own in either shell.
677
+ ,
671
678
  styles: {},
672
679
  children: body
673
680
  });
@@ -675,7 +682,10 @@ function NetworkModalInner({
675
682
  const styles = _reactNative.StyleSheet.create({
676
683
  container: {
677
684
  flex: 1,
678
- backgroundColor: _sharedUi.macOSColors.background.base
685
+ // Transparent so the HOST's hoisted star field shows through — the night
686
+ // JsModal's sheet-root field in the modal, the desktop workbench's shared
687
+ // row field in the inline panel.
688
+ backgroundColor: "transparent"
679
689
  },
680
690
  /** Detail = scrolling body + pinned stepper footer. `minHeight: 0` so the
681
691
  * body's ScrollView scrolls instead of stretching the column. */
@@ -688,11 +698,13 @@ const styles = _reactNative.StyleSheet.create({
688
698
  flex: 1
689
699
  },
690
700
  /** Inline shell — fills the host panel; `minHeight: 0` so the list's own
691
- * FlatList can scroll instead of stretching the column. */
701
+ * FlatList can scroll instead of stretching the column. Transparent so the
702
+ * desktop workbench's hoisted sky (one field spanning sidebar + panel)
703
+ * shows through — the shell paints its own base beneath that field. */
692
704
  inlineRoot: {
693
705
  flex: 1,
694
706
  minHeight: 0,
695
- backgroundColor: _sharedUi.macOSColors.background.base
707
+ backgroundColor: "transparent"
696
708
  },
697
709
  inlineHeader: {
698
710
  paddingHorizontal: 12,
@@ -701,19 +713,21 @@ const styles = _reactNative.StyleSheet.create({
701
713
  borderBottomColor: _sharedUi.macOSColors.border.default,
702
714
  backgroundColor: _sharedUi.macOSColors.background.card
703
715
  },
716
+ // Night chrome — the header is glass over the star field, so the search
717
+ // field and action chips sit on the Everlights dark-glass fill.
704
718
  headerSearchContainer: {
705
719
  flexDirection: "row",
706
720
  alignItems: "center",
707
- backgroundColor: _sharedUi.macOSColors.background.input,
708
- borderRadius: 10,
721
+ backgroundColor: _sharedUi.night.color.surfaceElevated,
722
+ borderRadius: _sharedUi.night.radius.row,
709
723
  borderWidth: 1,
710
- borderColor: _sharedUi.macOSColors.border.default,
724
+ borderColor: _sharedUi.night.color.border,
711
725
  paddingHorizontal: 12,
712
726
  paddingVertical: 5
713
727
  },
714
728
  headerSearchInput: {
715
729
  flex: 1,
716
- color: _sharedUi.macOSColors.text.primary,
730
+ color: _sharedUi.night.color.text,
717
731
  fontSize: 13,
718
732
  marginLeft: 6,
719
733
  paddingVertical: 2
@@ -729,15 +743,15 @@ const styles = _reactNative.StyleSheet.create({
729
743
  width: 32,
730
744
  height: 32,
731
745
  borderRadius: 8,
732
- backgroundColor: _sharedUi.macOSColors.background.hover,
746
+ backgroundColor: _sharedUi.night.color.buttonSurface,
733
747
  borderWidth: 1,
734
- borderColor: _sharedUi.macOSColors.border.default,
748
+ borderColor: _sharedUi.night.color.border,
735
749
  alignItems: "center",
736
750
  justifyContent: "center"
737
751
  },
738
752
  activeFilterButton: {
739
- backgroundColor: _sharedUi.macOSColors.semantic.infoBackground,
740
- borderColor: _sharedUi.macOSColors.semantic.info + "40"
753
+ backgroundColor: _sharedUi.night.color.accentSoft,
754
+ borderColor: _sharedUi.night.color.accentBorderStrong
741
755
  }
742
756
  });
743
757