@buoy-gg/shared-ui 7.0.15 → 7.0.17

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 (121) hide show
  1. package/lib/commonjs/JsModal.web.js +1588 -0
  2. package/lib/commonjs/env/EnvironmentIndicator.web.js +114 -0
  3. package/lib/commonjs/env/EnvironmentSelectorInline.web.js +178 -0
  4. package/lib/commonjs/hooks/index.js +7 -0
  5. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  6. package/lib/commonjs/hooks/usePersistedState.js +71 -0
  7. package/lib/commonjs/icons/index.js +28 -0
  8. package/lib/commonjs/index.js +45 -3
  9. package/lib/commonjs/storage/devToolsStorageKeys.js +22 -0
  10. package/lib/commonjs/stores/ignoredPatternsCore.js +68 -0
  11. package/lib/commonjs/stores/ignoredPatternsStore.js +16 -52
  12. package/lib/commonjs/stores/ignoredPatternsStore.web.js +236 -0
  13. package/lib/commonjs/stores/index.js +1 -1
  14. package/lib/commonjs/ui/components/ModalHeader.js +69 -0
  15. package/lib/commonjs/ui/components/ToolButton.js +90 -0
  16. package/lib/commonjs/ui/components/index.js +7 -0
  17. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +5 -3
  18. package/lib/commonjs/ui/index.js +8 -0
  19. package/lib/commonjs/ui/toolTheme.js +96 -0
  20. package/lib/commonjs/utils/index.js +38 -0
  21. package/lib/commonjs/utils/stateSnapshotRegistry.js +62 -0
  22. package/lib/module/JsModal.web.js +1586 -0
  23. package/lib/module/env/EnvironmentIndicator.web.js +108 -0
  24. package/lib/module/env/EnvironmentSelectorInline.web.js +173 -0
  25. package/lib/module/hooks/index.js +1 -0
  26. package/lib/module/hooks/safe-area-impl.js +1 -1
  27. package/lib/module/hooks/usePersistedState.js +68 -0
  28. package/lib/module/icons/index.js +2 -0
  29. package/lib/module/index.js +7 -3
  30. package/lib/module/storage/devToolsStorageKeys.js +22 -0
  31. package/lib/module/stores/ignoredPatternsCore.js +62 -0
  32. package/lib/module/stores/ignoredPatternsStore.js +5 -51
  33. package/lib/module/stores/ignoredPatternsStore.web.js +221 -0
  34. package/lib/module/stores/index.js +1 -1
  35. package/lib/module/ui/components/ModalHeader.js +70 -2
  36. package/lib/module/ui/components/ToolButton.js +86 -0
  37. package/lib/module/ui/components/index.js +1 -0
  38. package/lib/module/ui/gameUI/constants/gameUIColors.js +4 -2
  39. package/lib/module/ui/index.js +3 -0
  40. package/lib/module/ui/toolTheme.js +93 -0
  41. package/lib/module/utils/index.js +2 -0
  42. package/lib/module/utils/stateSnapshotRegistry.js +55 -0
  43. package/lib/typescript/commonjs/JsModal.web.d.ts +138 -0
  44. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -0
  45. package/lib/typescript/commonjs/env/EnvironmentIndicator.web.d.ts +16 -0
  46. package/lib/typescript/commonjs/env/EnvironmentIndicator.web.d.ts.map +1 -0
  47. package/lib/typescript/commonjs/env/EnvironmentSelectorInline.web.d.ts +8 -0
  48. package/lib/typescript/commonjs/env/EnvironmentSelectorInline.web.d.ts.map +1 -0
  49. package/lib/typescript/commonjs/hooks/index.d.ts +1 -0
  50. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  52. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts +16 -0
  53. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts.map +1 -0
  54. package/lib/typescript/commonjs/icons/index.d.ts +2 -0
  55. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  56. package/lib/typescript/commonjs/index.d.ts +1 -1
  57. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  58. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +19 -0
  59. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts +37 -0
  61. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts.map +1 -0
  62. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts +3 -27
  63. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts +72 -0
  65. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +1 -0
  66. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts +13 -1
  67. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/ui/components/ToolButton.d.ts +24 -0
  69. package/lib/typescript/commonjs/ui/components/ToolButton.d.ts.map +1 -0
  70. package/lib/typescript/commonjs/ui/components/index.d.ts +4 -0
  71. package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +56 -0
  73. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/ui/index.d.ts +1 -0
  75. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/ui/toolTheme.d.ts +68 -0
  77. package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +1 -0
  78. package/lib/typescript/commonjs/utils/index.d.ts +2 -0
  79. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/utils/stateSnapshotRegistry.d.ts +67 -0
  81. package/lib/typescript/commonjs/utils/stateSnapshotRegistry.d.ts.map +1 -0
  82. package/lib/typescript/module/JsModal.web.d.ts +138 -0
  83. package/lib/typescript/module/JsModal.web.d.ts.map +1 -0
  84. package/lib/typescript/module/env/EnvironmentIndicator.web.d.ts +16 -0
  85. package/lib/typescript/module/env/EnvironmentIndicator.web.d.ts.map +1 -0
  86. package/lib/typescript/module/env/EnvironmentSelectorInline.web.d.ts +8 -0
  87. package/lib/typescript/module/env/EnvironmentSelectorInline.web.d.ts.map +1 -0
  88. package/lib/typescript/module/hooks/index.d.ts +1 -0
  89. package/lib/typescript/module/hooks/index.d.ts.map +1 -1
  90. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  91. package/lib/typescript/module/hooks/usePersistedState.d.ts +16 -0
  92. package/lib/typescript/module/hooks/usePersistedState.d.ts.map +1 -0
  93. package/lib/typescript/module/icons/index.d.ts +2 -0
  94. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  95. package/lib/typescript/module/index.d.ts +1 -1
  96. package/lib/typescript/module/index.d.ts.map +1 -1
  97. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +19 -0
  98. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
  99. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts +37 -0
  100. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts.map +1 -0
  101. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts +3 -27
  102. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +1 -1
  103. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts +72 -0
  104. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +1 -0
  105. package/lib/typescript/module/ui/components/ModalHeader.d.ts +13 -1
  106. package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -1
  107. package/lib/typescript/module/ui/components/ToolButton.d.ts +24 -0
  108. package/lib/typescript/module/ui/components/ToolButton.d.ts.map +1 -0
  109. package/lib/typescript/module/ui/components/index.d.ts +4 -0
  110. package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
  111. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +56 -0
  112. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  113. package/lib/typescript/module/ui/index.d.ts +1 -0
  114. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  115. package/lib/typescript/module/ui/toolTheme.d.ts +68 -0
  116. package/lib/typescript/module/ui/toolTheme.d.ts.map +1 -0
  117. package/lib/typescript/module/utils/index.d.ts +2 -0
  118. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  119. package/lib/typescript/module/utils/stateSnapshotRegistry.d.ts +67 -0
  120. package/lib/typescript/module/utils/stateSnapshotRegistry.d.ts.map +1 -0
  121. package/package.json +4 -4
@@ -6,6 +6,62 @@
6
6
  * 2. Uncomment the theme you want
7
7
  * 3. Save and refresh
8
8
  */
9
+ export declare const _defaultTheme: {
10
+ border: string;
11
+ blackTint1: string;
12
+ blackTint2: string;
13
+ blackTint3: string;
14
+ success: string;
15
+ warning: string;
16
+ error: string;
17
+ info: string;
18
+ critical: string;
19
+ optional: string;
20
+ env: string;
21
+ storage: string;
22
+ query: string;
23
+ debug: string;
24
+ network: string;
25
+ dataTypes: {
26
+ object: string;
27
+ array: string;
28
+ string: string;
29
+ number: string;
30
+ boolean: string;
31
+ function: string;
32
+ undefined: string;
33
+ null: string;
34
+ };
35
+ text: string;
36
+ secondary: string;
37
+ tertiary: string;
38
+ muted: string;
39
+ neonGlow: {
40
+ primary: string;
41
+ secondary: string;
42
+ tertiary: string;
43
+ };
44
+ diff: {
45
+ addedBackground: string;
46
+ removedBackground: string;
47
+ modifiedBackground: string;
48
+ unchangedBackground: string;
49
+ contextBackground: string;
50
+ addedText: string;
51
+ removedText: string;
52
+ modifiedText: string;
53
+ unchangedText: string;
54
+ addedWordHighlight: string;
55
+ removedWordHighlight: string;
56
+ lineNumberBackground: string;
57
+ lineNumberText: string;
58
+ lineNumberBorder: string;
59
+ markerAddedBackground: string;
60
+ markerRemovedBackground: string;
61
+ markerModifiedBackground: string;
62
+ markerText: string;
63
+ };
64
+ };
9
65
  export declare const gameUIColors: {
10
66
  background: string;
11
67
  panel: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gameUIColors.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/gameUI/constants/gameUIColors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+HH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmC,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD;;;;qEAIqE;AACrE,eAAO,MAAM,mBAAmB,YAG/B,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAsBb,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC;AAGnD,eAAO,MAAM,UAAU;;;;;;;;CAQtB,CAAC"}
1
+ {"version":3,"file":"gameUIColors.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/gameUI/constants/gameUIColors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EzB,CAAC;AAuCF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmC,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD;;;;qEAIqE;AACrE,eAAO,MAAM,mBAAmB,YAG/B,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAsBb,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC;AAGnD,eAAO,MAAM,UAAU;;;;;;;;CAQtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from "./components";
2
+ export { toolTheme, type ToolTheme } from "./toolTheme";
2
3
  export { CyberpunkSectionButton } from "./console/CyberpunkSectionButton";
3
4
  export * from "./gameUI";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,cAAc,UAAU,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { TextStyle } from "react-native";
2
+ /**
3
+ * Semantic design tokens for dev-tool surfaces — the single documented entry
4
+ * point for custom-tool authors (and, over time, internal tools).
5
+ *
6
+ * Buoy historically grew three color systems (`buoyColors`, `gameUIColors`,
7
+ * `macOSColors`) with tribal knowledge about which to use where. `toolTheme`
8
+ * encodes that knowledge: surfaces/text come from the brand palette, semantic
9
+ * status colors from the gameUI palette. Consumers should not need to know
10
+ * that split exists.
11
+ */
12
+ export declare const toolTheme: {
13
+ readonly colors: {
14
+ /** Modal/page background. */
15
+ readonly surface: "#121212";
16
+ /** Card / row background, one step above surface. */
17
+ readonly card: "#1A1A1A";
18
+ /** Pressed/hover background. */
19
+ readonly hover: "#242424";
20
+ /** Text-input background. */
21
+ readonly input: "#2A2A2A";
22
+ readonly border: "#333333";
23
+ readonly borderStrong: "#444444";
24
+ readonly text: "#E0E0E0";
25
+ readonly textSecondary: "#A0A0A0";
26
+ readonly textMuted: "#888888";
27
+ /** Buoy teal — primary accent. */
28
+ readonly accent: "#20C997";
29
+ readonly success: string;
30
+ readonly warning: string;
31
+ readonly error: string;
32
+ readonly info: string;
33
+ };
34
+ /**
35
+ * Text presets matching the styles internal tools re-declare per file.
36
+ * Spread into a style: `style={[toolTheme.text.label, { color: ... }]}`.
37
+ */
38
+ readonly text: {
39
+ /** Modal/section titles. */
40
+ readonly title: TextStyle;
41
+ /** Default body copy. */
42
+ readonly body: TextStyle;
43
+ /** Secondary copy under a primary line. */
44
+ readonly subtitle: TextStyle;
45
+ /** ALL-CAPS section labels ("LOCAL OVERRIDES"). */
46
+ readonly label: TextStyle;
47
+ /** Monospace values (keys, ids, payload snippets). */
48
+ readonly mono: TextStyle;
49
+ /** Timestamps and fine print. */
50
+ readonly small: TextStyle;
51
+ };
52
+ /** 4-based spacing scale used across tool surfaces. */
53
+ readonly spacing: {
54
+ readonly xs: 4;
55
+ readonly sm: 8;
56
+ readonly md: 12;
57
+ readonly lg: 16;
58
+ readonly xl: 24;
59
+ };
60
+ readonly radius: {
61
+ readonly sm: 6;
62
+ readonly md: 8;
63
+ readonly lg: 12;
64
+ readonly pill: 9999;
65
+ };
66
+ };
67
+ export type ToolTheme = typeof toolTheme;
68
+ //# sourceMappingURL=toolTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolTheme.d.ts","sourceRoot":"","sources":["../../../../src/ui/toolTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;QAElB,6BAA6B;;QAE7B,qDAAqD;;QAErD,gCAAgC;;QAEhC,6BAA6B;;;;;;;QAS7B,kCAAkC;;;;;;;IAQpC;;;OAGG;;QAED,4BAA4B;wBAKvB,SAAS;QACd,yBAAyB;uBAIpB,SAAS;QACd,2CAA2C;2BAItC,SAAS;QACd,mDAAmD;wBAO9C,SAAS;QACd,sDAAsD;uBAKjD,SAAS;QACd,iCAAiC;wBAK5B,SAAS;;IAGhB,uDAAuD;;;;;;;;;;;;;;CAe/C,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
@@ -7,6 +7,8 @@ export { getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstruc
7
7
  export { parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath, } from "./valueFormatting";
8
8
  export { loadOptionalModule, getCachedOptionalModule } from "./loadOptionalModule";
9
9
  export { setRenderCaptureProvider, getRenderCaptureProvider, type RenderCaptureProvider, type RenderCaptureSummary, type RenderCaptureTopComponent, } from "./renderCaptureRegistry";
10
+ export { registerStateSnapshotProvider, getStateSnapshotProviders, getStateSnapshotProvider, subscribeToStateSnapshotProviders, type StateSnapshotProvider, type StateSnapshotProviderStatus, type StateSnapshotCapture, type StateSnapshotRestoreResult, } from "./stateSnapshotRegistry";
11
+ export { serialize as superJsonSerialize, deserialize as superJsonDeserialize, type SuperJSONResult, } from "./minimalSuperJSON";
10
12
  export { reloadApp, scheduleReloadApp, resolveReloadStrategy, REMOTE_RELOAD_DELAY_MS, type ReloadStrategy, type ResolvedReloadStrategy, } from "./reloadApp";
11
13
  export { Subscribable, type SubscribableListener } from "./subscribable";
12
14
  export { subscriberCountNotifier, subscribeToSubscriberCountChanges, notifySubscriberCountChange, } from "./subscriberCountNotifier";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,SAAS,IAAI,kBAAkB,EAC/B,WAAW,IAAI,oBAAoB,EACnC,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Cross-package bridge for app-state snapshot & restore (Time Machine).
3
+ *
4
+ * Each state tool (`@buoy-gg/storage`, `@buoy-gg/redux`, `@buoy-gg/zustand`,
5
+ * `@buoy-gg/jotai`, `@buoy-gg/react-query`) registers a provider here at
6
+ * module init (or from its app-lifetime sync hook); `@buoy-gg/time-machine`
7
+ * consumes the registry. Neither side imports the other — same
8
+ * optional-capability pattern as renderCaptureRegistry.
9
+ *
10
+ * Apps can also register custom providers for state Buoy doesn't know about.
11
+ */
12
+ export interface StateSnapshotProviderStatus {
13
+ canCapture: boolean;
14
+ canRestore: boolean;
15
+ /** Human-actionable reason when a capability is unavailable. */
16
+ detail?: string;
17
+ }
18
+ export interface StateSnapshotCapture {
19
+ /**
20
+ * Raw JS value tree. May contain Date/Map/Set/etc. (the vault serializes
21
+ * with superjson) but MUST NOT contain functions — providers strip them
22
+ * and record how to re-graft on restore inside their own data envelope.
23
+ */
24
+ data: unknown;
25
+ warnings: string[];
26
+ }
27
+ export interface StateSnapshotRestoreResult {
28
+ /** True when the state verifiably changed (or was verified already-equal). */
29
+ ok: boolean;
30
+ /** Keys / stores / atoms / queries written. */
31
+ applied: number;
32
+ /** Items that could not be restored, with a reason each. */
33
+ skipped: {
34
+ id: string;
35
+ reason: string;
36
+ }[];
37
+ warnings: string[];
38
+ }
39
+ export interface StateSnapshotProvider {
40
+ /** Stable source id, e.g. "storage" | "redux" | "zustand" | "jotai" | "query". */
41
+ id: string;
42
+ /** Display name, e.g. "Storage", "React Query". */
43
+ label: string;
44
+ /** Cheap capability probe — drives UI gating and restore-mode suggestions. */
45
+ status(): StateSnapshotProviderStatus;
46
+ capture(): Promise<StateSnapshotCapture>;
47
+ restore(data: unknown): Promise<StateSnapshotRestoreResult>;
48
+ /**
49
+ * Optional: wipe this source to fresh-install state. Used by the
50
+ * "restore baseline" flow (typically followed by a JS reload so in-memory
51
+ * stores rebuild themselves from the wiped persisted state).
52
+ */
53
+ clear?(): Promise<StateSnapshotRestoreResult>;
54
+ }
55
+ type Listener = () => void;
56
+ /**
57
+ * Register a provider. Last registration wins for a given id.
58
+ * Returns an unregister function (only removes the provider if it is still
59
+ * the registered one for that id).
60
+ */
61
+ export declare function registerStateSnapshotProvider(provider: StateSnapshotProvider): () => void;
62
+ export declare function getStateSnapshotProviders(): StateSnapshotProvider[];
63
+ export declare function getStateSnapshotProvider(id: string): StateSnapshotProvider | null;
64
+ /** Notifies when providers register/unregister (query registers late). */
65
+ export declare function subscribeToStateSnapshotProviders(listener: Listener): () => void;
66
+ export {};
67
+ //# sourceMappingURL=stateSnapshotRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateSnapshotRegistry.d.ts","sourceRoot":"","sources":["../../../../src/utils/stateSnapshotRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,8EAA8E;IAC9E,EAAE,EAAE,OAAO,CAAC;IACZ,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,MAAM,IAAI,2BAA2B,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC5D;;;;OAIG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC/C;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAe3B;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,IAAI,CASZ;AAED,wBAAgB,yBAAyB,IAAI,qBAAqB,EAAE,CAEnE;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,GACT,qBAAqB,GAAG,IAAI,CAE9B;AAED,0EAA0E;AAC1E,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,QAAQ,GACjB,MAAM,IAAI,CAKZ"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * JsModal.web — DOM port of JsModal.tsx (React Native).
3
+ *
4
+ * The dual-mode tool-panel container: draggable bottom sheet ⇄ floating
5
+ * window. Same exported names (`JsModal`, `ModalMode`, `ModalState`), same
6
+ * prop contract, same gesture spec and persistence key/JSON shape as the
7
+ * native file. Zero react-native imports — header chrome that lives in
8
+ * shared-ui RN components (`WindowControls`, `DraggableHeader`, `ModalHeader`,
9
+ * `ModalHintBanner`) is replicated as DOM with provenance comments, the same
10
+ * way DevToolsSettingsModal.web.tsx replicates the WindowControls close dot.
11
+ *
12
+ * Gesture spec (verbatim from native):
13
+ * - Sheet header drag: steal at |dy| > 3px, absolute finger anchoring
14
+ * (height = screenH − (pointerY − grab offset)), clamped to
15
+ * [minHeight, maxHeight ?? screenH − safeTop]. Fast downward swipe closes:
16
+ * (vy > 0.8 px/ms && dy > 50) || (dy > 150 && height <= minHeight).
17
+ * - Floating header drag (DraggableHeader.tsx): drag starts at
18
+ * |dx|+|dy| > 5, position unclamped during move, clamped on release to
19
+ * x ∈ [0, screenW − width], y ∈ [safeTop, screenH − height].
20
+ * - Corner resize (bottom corners only): moves < 0.5px ignored; rect clamped
21
+ * to safe-area bounds; min size = screenW*0.25 × 80.
22
+ * - Header taps (both modes): taps accumulate within a 500ms window and
23
+ * settle after 300ms — 2 taps toggles mode, ≥3 taps minimizes.
24
+ *
25
+ * Persistence (verbatim from native ModalStorage): the `persistenceKey` prop
26
+ * is the storage key, used verbatim (native callers pass fully-derived
27
+ * `@react_buoy…` keys or short keys — no extra derivation happens here
28
+ * either). JSON shape `{ mode, panelHeight, dimensions: {width, height, top,
29
+ * left}, isVisible }`, saved on a 500ms debounce after state loads, with the
30
+ * same in-memory cache in front of storage. Backed by a local
31
+ * localStorage adapter matching the `persistentStorage` API — importing
32
+ * `./utils/persistentStorage` is avoided on purpose: its lazy `require()`
33
+ * probing of expo-file-system/AsyncStorage doesn't survive Vite's ESM graph.
34
+ * The hint-acknowledged flag uses the real `devToolsStorageKeys` helper
35
+ * (zero-dep) so the key matches native exactly.
36
+ *
37
+ * Intentional deviations from the native file (all logged):
38
+ * - No native-driver springs: rAF drives all animations. The open/close
39
+ * spring (tension 180, friction 22, ~300ms settle) is approximated with a
40
+ * 300ms ease-out-cubic; native `Animated.timing` calls keep their exact
41
+ * durations (200ms fades, 300ms minimize) with ease-in-out.
42
+ * - No RN Modal/overlay layer: fixed-position divs with the `zIndex` prop
43
+ * (default 1000, same as the native styles).
44
+ * - `benchMotion` and `animatedHeight` (DEV-only benchmark seams) are
45
+ * accepted and no-op'd — the web build has no tool-bench harness.
46
+ * - `CyberpunkModalHeader` complete-replacement detection in ModalHeader is
47
+ * not ported (that component is RN-only); custom header content renders
48
+ * inside the standard header structure, with `onMinimize` injected via
49
+ * cloneElement like native's non-replacement path.
50
+ * - Native captures `Dimensions.get("window")` once at module load; the web
51
+ * twin reads `window.innerWidth/innerHeight` lazily so late layout (Tauri/
52
+ * WKWebView) doesn't bake in a 0×0 screen.
53
+ * - Safe-area insets come from a one-shot `env(safe-area-inset-*)` probe
54
+ * (same trick as floatingTools.web.tsx) instead of the RN hook.
55
+ * - On restore-from-minimize, the floating position re-syncs from the last
56
+ * committed dimensions when the panel becomes visible: the web AppHost
57
+ * doesn't pass `initialModalState` back, and without the re-sync the panel
58
+ * would reappear at the minimize target.
59
+ * - `JsModalProps` is additionally exported (native keeps it private) so web
60
+ * consumers can type wrappers without redeclaring the contract.
61
+ * - `visible={false}` renders children in a `display:none` div (state and
62
+ * listeners survive) instead of native's offscreen −9999 container.
63
+ * - The hidden/floating/bottomSheet root branches carry distinct React keys:
64
+ * the rAF animations write opacity/transform straight to the DOM, and DOM
65
+ * reuse across branches (e.g. an async persisted-mode flip mid-entrance)
66
+ * would leak those styles onto unrelated chrome (blank header bug).
67
+ *
68
+ * @platform React DOM Web (Vite, Tauri, Capacitor/Ionic, Electron)
69
+ */
70
+ import { type CSSProperties, type ReactNode } from "react";
71
+ export type ModalMode = "bottomSheet" | "floating";
72
+ interface HeaderConfig {
73
+ title?: string;
74
+ subtitle?: string;
75
+ showToggleButton?: boolean;
76
+ customContent?: ReactNode;
77
+ hideCloseButton?: boolean;
78
+ hideMinimizeButton?: boolean;
79
+ }
80
+ interface CustomStyles {
81
+ container?: CSSProperties;
82
+ content?: CSSProperties;
83
+ }
84
+ /** Modal state that can be saved and restored when minimizing/restoring. */
85
+ export interface ModalState {
86
+ mode: ModalMode;
87
+ panelHeight?: number;
88
+ floatingPosition?: {
89
+ x: number;
90
+ y: number;
91
+ };
92
+ floatingDimensions?: {
93
+ width: number;
94
+ height: number;
95
+ };
96
+ }
97
+ export interface JsModalProps {
98
+ visible: boolean;
99
+ onClose: () => void;
100
+ children: ReactNode;
101
+ header?: HeaderConfig;
102
+ styles?: CustomStyles;
103
+ minHeight?: number;
104
+ maxHeight?: number;
105
+ initialHeight?: number;
106
+ /** DEV-only native seam (external Animated height) — accepted, no-op on web. */
107
+ animatedHeight?: unknown;
108
+ /** DEV-only native benchmark motion — accepted, no-op on web. */
109
+ benchMotion?: "resize" | "float-drag" | "float-resize" | "mode-cycle";
110
+ initialMode?: ModalMode;
111
+ onModeChange?: (mode: ModalMode) => void;
112
+ persistenceKey?: string;
113
+ enablePersistence?: boolean;
114
+ enableGlitchEffects?: boolean;
115
+ initialFloatingPosition?: {
116
+ x?: number;
117
+ y?: number;
118
+ };
119
+ footer?: ReactNode;
120
+ footerHeight?: number;
121
+ onBack?: () => void;
122
+ /** Callback when minimize is requested - receives current modal state for restoration */
123
+ onMinimize?: (modalState: ModalState) => void;
124
+ /** Target position for minimize animation (where the icon will appear) */
125
+ minimizeTargetPosition?: {
126
+ x: number;
127
+ y: number;
128
+ };
129
+ /** Initial modal state to restore from (when restoring from minimized) */
130
+ initialModalState?: ModalState;
131
+ /** z-index for stacking multiple modals (higher = on top) */
132
+ zIndex?: number;
133
+ /** If true, children render directly without the scroll wrapper */
134
+ disableScrollWrapper?: boolean;
135
+ }
136
+ export declare const JsModal: import("react").NamedExoticComponent<JsModalProps>;
137
+ export {};
138
+ //# sourceMappingURL=JsModal.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsModal.web.d.ts","sourceRoot":"","sources":["../../../src/JsModal.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAEH,OAAO,EASL,KAAK,aAAa,EAGlB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAmHf,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IAEpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,WAAW,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA88CD,eAAO,MAAM,OAAO,oDAAyB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type Environment } from '../types/types';
2
+ export interface EnvironmentIndicatorProps {
3
+ environment: Environment | string;
4
+ /** When true, the badge becomes pressable and shows a dropdown indicator */
5
+ interactive?: boolean;
6
+ /** Called when the badge is pressed (only when interactive is true) */
7
+ onPress?: () => void;
8
+ }
9
+ interface EnvironmentConfig {
10
+ label: string;
11
+ backgroundColor: string;
12
+ }
13
+ export declare function getEnvironmentConfig(environment: Environment | string): EnvironmentConfig;
14
+ export declare function EnvironmentIndicator({ environment, interactive, onPress, }: EnvironmentIndicatorProps): import("react").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=EnvironmentIndicator.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentIndicator.web.d.ts","sourceRoot":"","sources":["../../../../src/env/EnvironmentIndicator.web.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,gBAAgB,CAAC;AAExE,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC;IAClC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,GAAG,MAAM,GAChC,iBAAiB,CAcnB;AAkBD,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,WAAmB,EACnB,OAAO,GACR,EAAE,yBAAyB,+BA+C3B"}
@@ -0,0 +1,8 @@
1
+ import { type Environment } from '../types/types';
2
+ export interface EnvironmentSelectorInlineProps {
3
+ currentEnvironment: Environment | string;
4
+ availableEnvironments: Array<Environment | string>;
5
+ onSelect: (env: Environment) => void;
6
+ }
7
+ export declare function EnvironmentSelectorInline({ currentEnvironment, availableEnvironments, onSelect, }: EnvironmentSelectorInlineProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=EnvironmentSelectorInline.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentSelectorInline.web.d.ts","sourceRoot":"","sources":["../../../../src/env/EnvironmentSelectorInline.web.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,EAAE,WAAW,GAAG,MAAM,CAAC;IACzC,qBAAqB,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACtC;AA0CD,wBAAgB,yBAAyB,CAAC,EACxC,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,GACT,EAAE,8BAA8B,+BA6HhC"}
@@ -1,4 +1,5 @@
1
1
  export { useFilterManager } from "./useFilterManager";
2
+ export { usePersistedState } from "./usePersistedState";
2
3
  export { useSafeAreaInsets } from "./useSafeAreaInsets";
3
4
  export { getSafeAreaInsets } from "./useSafeAreaInsets";
4
5
  export { useDeviceInfo, getDeviceInfo, logDeviceInfo, type DeviceInfo, type PlatformInfo, type DisplayInfo, type AccessibilitySettings, type AppearanceInfo, type LocaleInfo, type StatusBarInfo, type KeyboardInfo, type AppStateInfo, type UniqueIdentifiers, type SettingsInfo, } from "./useDeviceInfo";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated safe area implementation
3
3
  * Detected: none
4
- * Generated at: 2026-08-05T21:40:54.216Z
4
+ * Generated at: 2026-08-07T14:32:36.664Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
7
7
  *
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `useState` persisted through `persistentStorage` (FileSystem → AsyncStorage
3
+ * → memory). Replaces the load-then-`hasLoaded`-guard `useEffect` pattern
4
+ * every tool used to hand-roll.
5
+ *
6
+ * Values are JSON-serialized; the default is returned until hydration
7
+ * completes (subsequent mounts of the same key hydrate synchronously from an
8
+ * in-memory cache). The third tuple element reports hydration so callers can
9
+ * defer writes that must not clobber a not-yet-loaded value.
10
+ *
11
+ * ```tsx
12
+ * const [tab, setTab, tabHydrated] = usePersistedState("@react_buoy_custom_flags_tab", "flags");
13
+ * ```
14
+ */
15
+ export declare function usePersistedState<T>(key: string, defaultValue: T): [T, (next: T | ((prev: T) => T)) => void, boolean];
16
+ //# sourceMappingURL=usePersistedState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePersistedState.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePersistedState.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,GACd,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,CAoDpD"}
@@ -2,7 +2,9 @@ export * from "./primitives";
2
2
  export { NetworkIcon, NETWORK_ICON_COLOR } from "@buoy-gg/floating-tools-core";
3
3
  export { EnvIcon, ENV_ICON_COLOR } from "@buoy-gg/floating-tools-core";
4
4
  export { ConsoleIcon, CONSOLE_ICON_COLOR } from "@buoy-gg/floating-tools-core";
5
+ export { TimeMachineIcon, TIME_MACHINE_ICON_COLOR } from "@buoy-gg/floating-tools-core";
5
6
  export { ImagesIcon, IMAGES_ICON_COLOR } from "@buoy-gg/floating-tools-core";
7
+ export { AssetsIcon, ASSETS_ICON_COLOR } from "@buoy-gg/floating-tools-core";
6
8
  export { ImpersonateIcon, IMPERSONATE_ICON_COLOR } from "@buoy-gg/floating-tools-core";
7
9
  export { ImageOverlayIcon, IMAGE_OVERLAY_ICON_COLOR } from "@buoy-gg/floating-tools-core";
8
10
  export { ZustandIcon, ZUSTAND_ICON_COLOR } from "@buoy-gg/floating-tools-core";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/icons/index.tsx"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/icons/index.tsx"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,cAAc,gBAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export * from "./ui";
2
2
  export * from "./stores";
3
- export { absoluteFill, displayValue, parseDisplayValue, getSafeAreaInsets, persistentStorage, isUsingPersistentStorage, getStorageBackendType, safeStringify, getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstructorName, isEmpty, getValueSize, parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath, loadOptionalModule, getCachedOptionalModule, setRenderCaptureProvider, getRenderCaptureProvider, type RenderCaptureProvider, type RenderCaptureSummary, type RenderCaptureTopComponent, reloadApp, scheduleReloadApp, resolveReloadStrategy, REMOTE_RELOAD_DELAY_MS, type ReloadStrategy, type ResolvedReloadStrategy, Subscribable, type SubscribableListener, subscriberCountNotifier, subscribeToSubscriberCountChanges, notifySubscriberCountChange, useSafeRouter, useSafePathname, useSafeSegments, useSafeGlobalSearchParams, getSafeRouter, getSafeCurrentPathname, isExpoRouterAvailable, } from "./utils";
3
+ export { absoluteFill, displayValue, parseDisplayValue, getSafeAreaInsets, persistentStorage, isUsingPersistentStorage, getStorageBackendType, safeStringify, getValueType, isPrimitive, isJsonSerializable, isValidJson, getConstructorName, isEmpty, getValueSize, parseValue, formatValue, getTypeColor, truncateText, flattenObject, formatPath, loadOptionalModule, getCachedOptionalModule, setRenderCaptureProvider, getRenderCaptureProvider, type RenderCaptureProvider, type RenderCaptureSummary, type RenderCaptureTopComponent, registerStateSnapshotProvider, getStateSnapshotProviders, getStateSnapshotProvider, subscribeToStateSnapshotProviders, type StateSnapshotProvider, type StateSnapshotProviderStatus, type StateSnapshotCapture, type StateSnapshotRestoreResult, superJsonSerialize, superJsonDeserialize, type SuperJSONResult, reloadApp, scheduleReloadApp, resolveReloadStrategy, REMOTE_RELOAD_DELAY_MS, type ReloadStrategy, type ResolvedReloadStrategy, Subscribable, type SubscribableListener, subscriberCountNotifier, subscribeToSubscriberCountChanges, notifySubscriberCountChange, useSafeRouter, useSafePathname, useSafeSegments, useSafeGlobalSearchParams, getSafeRouter, getSafeCurrentPathname, isExpoRouterAvailable, } from "./utils";
4
4
  export * from "./utils/formatting";
5
5
  export * from "./utils/time";
6
6
  export { isPlainObject as isPlainObjectUtil } from "./utils/typeHelpers";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,MAAM,CAAC;AAGrB,cAAc,UAAU,CAAC;AAGzB,OAAO,EAEL,YAAY,EAEZ,YAAY,EACZ,iBAAiB,EAEjB,iBAAiB,EAEjB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EAErB,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,YAAY,EAEZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EAEV,kBAAkB,EAClB,uBAAuB,EAEvB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAE/B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,eAAe,EAEpB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,YAAY,EACZ,KAAK,oBAAoB,EAEzB,uBAAuB,EACvB,iCAAiC,EACjC,2BAA2B,EAE3B,aAAa,EACb,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAGjB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,YAAY,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG7E,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjL,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -29,6 +29,25 @@ export declare const devToolsStorageKeys: {
29
29
  readonly dimensions: () => "@react_buoy_modal_dimensions";
30
30
  readonly hintAcknowledged: () => "@react_buoy_modal_hint_acknowledged";
31
31
  };
32
+ /**
33
+ * Namespace factory for third-party custom tools. Keys share the
34
+ * `@react_buoy` prefix, so `isDevToolsStorageKey` filtering (and the Storage
35
+ * tool's internal-key handling) covers custom-tool persistence for free.
36
+ *
37
+ * ```ts
38
+ * const keys = devToolsStorageKeys.custom("feature-flags");
39
+ * keys.modal(); // "@react_buoy_custom_feature-flags_modal"
40
+ * keys.key("overrides"); // "@react_buoy_custom_feature-flags_overrides"
41
+ * ```
42
+ */
43
+ readonly custom: (toolId: string) => {
44
+ root: () => string;
45
+ /** JsModal `persistenceKey` for this tool's window dimensions. */
46
+ modal: () => string;
47
+ settings: () => string;
48
+ /** Arbitrary tool-scoped key. */
49
+ key: (suffix: string) => string;
50
+ };
32
51
  /**
33
52
  * Settings-related storage keys
34
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"devToolsStorageKeys.d.ts","sourceRoot":"","sources":["../../../../src/storage/devToolsStorageKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;IAUH;;OAEG;;;;;;QAQD,kDAAkD;;QAElD,gCAAgC;;QAGhC,gCAAgC;;;IAKlC;;OAEG;;;QAGD,mCAAmC;;QAEnC,qEAAqE;;;IAIvE;;OAEG;;;;;IAOH;;OAEG;;;;;;;IAQH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;;;;;;;IAuBH;;OAEG;;;;;;;;;;;IAiBH;;OAEG;;;;;;;;;;QAcD;;;WAGG;;QAEH;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;IAgBH;;OAEG;;;;;;;QAUD,2BAA2B;;;IAK7B;;OAEG;;;;;;;;;IAcH;;OAEG;;;;QAID,oCAAoC;;QAGpC,wCAAwC;;QAGxC,2BAA2B;;;CAIrB,CAAC;AAwBX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA0BzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAsBpD"}
1
+ {"version":3,"file":"devToolsStorageKeys.d.ts","sourceRoot":"","sources":["../../../../src/storage/devToolsStorageKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;IAUH;;;;;;;;;;OAUG;8BACc,MAAM;;QAInB,kEAAkE;;;QAGlE,iCAAiC;sBACnB,MAAM;;IAIxB;;OAEG;;;;;;QAQD,kDAAkD;;QAElD,gCAAgC;;QAGhC,gCAAgC;;;IAKlC;;OAEG;;;QAGD,mCAAmC;;QAEnC,qEAAqE;;;IAIvE;;OAEG;;;;;IAOH;;OAEG;;;;;;;IAQH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;;;;;;;IAuBH;;OAEG;;;;;;;;;;;IAiBH;;OAEG;;;;;;;;;;QAcD;;;WAGG;;QAEH;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;IAgBH;;OAEG;;;;;;;QAUD,2BAA2B;;;IAK7B;;OAEG;;;;;;;;;IAcH;;OAEG;;;;QAID,oCAAoC;;QAGpC,wCAAwC;;QAGxC,2BAA2B;;;CAIrB,CAAC;AAwBX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA0BzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAsBpD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Pure, dependency-free part of the ignored-patterns feature — split from
3
+ * ignoredPatternsStore.ts so web consumers (which shim `@buoy-gg/shared-ui`
4
+ * and must not pull the store's relative `../utils/persistentStorage` import
5
+ * with its expo/async-storage requires into the bundle graph) can share the
6
+ * exact matching semantics. The store imports and re-exports everything here;
7
+ * the native barrel is unchanged.
8
+ */
9
+ /**
10
+ * How a pattern matches a URL:
11
+ *
12
+ * - `contains`: case-insensitive substring match on the full URL (legacy behavior).
13
+ * - `exact`: smart equality — if pattern starts with `/`, matches URL.pathname;
14
+ * if it starts with `http://`/`https://`, matches origin+pathname; otherwise
15
+ * matches URL.host.
16
+ */
17
+ export type IgnoredPatternMatchMode = "contains" | "exact";
18
+ /** A single exclude pattern with its match mode. */
19
+ export interface IgnoredPattern {
20
+ value: string;
21
+ mode: IgnoredPatternMatchMode;
22
+ }
23
+ /** Patterns hidden by default — Buoy's own license API traffic. */
24
+ export declare const DEFAULT_IGNORED_PATTERNS: ReadonlyArray<IgnoredPattern>;
25
+ /**
26
+ * Returns true when `url` matches the ignored `pattern` according to its mode.
27
+ *
28
+ * `contains` → case-insensitive substring on the full URL (legacy behavior).
29
+ * `exact` → smart equality: pattern starting with `/` compares URL.pathname,
30
+ * full URLs compare origin+pathname (ignoring query/hash), bare
31
+ * values compare URL.host. Falls back to literal equality if URL
32
+ * parsing fails (e.g. relative URLs).
33
+ */
34
+ export declare function urlMatchesIgnoredPattern(url: string, pattern: IgnoredPattern): boolean;
35
+ /** Convenience: does `url` match ANY of the ignored `patterns`? */
36
+ export declare function isUrlIgnored(url: string, patterns: ReadonlyArray<IgnoredPattern>): boolean;
37
+ //# sourceMappingURL=ignoredPatternsCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignoredPatternsCore.d.ts","sourceRoot":"","sources":["../../../../src/stores/ignoredPatternsCore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,uBAAuB,CAAC;CAC/B;AAED,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC,cAAc,CAElE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,GACtB,OAAO,CAoBT;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,GACtC,OAAO,CAGT"}