@buoy-gg/core 7.0.56 → 7.0.58

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 (58) hide show
  1. package/lib/commonjs/browserRegister.js +1 -1
  2. package/lib/commonjs/floatingMenu/AppHost.web.js +1 -1
  3. package/lib/commonjs/floatingMenu/BrowserToolRuntime.js +1 -1
  4. package/lib/commonjs/floatingMenu/BuoyCodeSignIn.js +1 -0
  5. package/lib/commonjs/floatingMenu/BuoySignIn.js +1 -1
  6. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.shared.js +1 -1
  7. package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +1 -1
  8. package/lib/commonjs/floatingMenu/MinimizedToolsStack.web.js +1 -1
  9. package/lib/commonjs/floatingMenu/capacitorBackButton.js +1 -0
  10. package/lib/commonjs/floatingMenu/capacitorHostInfo.js +1 -0
  11. package/lib/commonjs/floatingMenu/deviceIdentity.js +1 -1
  12. package/lib/commonjs/floatingMenu/dial/DialDevTools.web.js +1 -1
  13. package/lib/commonjs/floatingMenu/dial/DialIcon.js +1 -1
  14. package/lib/commonjs/floatingMenu/dial/OnboardingTooltip.web.js +1 -1
  15. package/lib/commonjs/floatingMenu/dial/dialA11y.js +1 -0
  16. package/lib/commonjs/index.web.js +1 -1
  17. package/lib/commonjs/version.js +1 -1
  18. package/lib/module/browserRegister.js +1 -1
  19. package/lib/module/floatingMenu/AppHost.web.js +1 -1
  20. package/lib/module/floatingMenu/BrowserToolRuntime.js +1 -1
  21. package/lib/module/floatingMenu/BuoyCodeSignIn.js +1 -0
  22. package/lib/module/floatingMenu/BuoySignIn.js +1 -1
  23. package/lib/module/floatingMenu/DevToolsSettingsModal.shared.js +1 -1
  24. package/lib/module/floatingMenu/FloatingDevTools.web.js +1 -1
  25. package/lib/module/floatingMenu/MinimizedToolsStack.web.js +1 -1
  26. package/lib/module/floatingMenu/capacitorBackButton.js +1 -0
  27. package/lib/module/floatingMenu/capacitorHostInfo.js +1 -0
  28. package/lib/module/floatingMenu/deviceIdentity.js +1 -1
  29. package/lib/module/floatingMenu/dial/DialDevTools.web.js +1 -1
  30. package/lib/module/floatingMenu/dial/DialIcon.js +1 -1
  31. package/lib/module/floatingMenu/dial/OnboardingTooltip.web.js +1 -1
  32. package/lib/module/floatingMenu/dial/dialA11y.js +1 -0
  33. package/lib/module/index.web.js +1 -1
  34. package/lib/module/version.js +1 -1
  35. package/lib/typescript/commonjs/floatingMenu/BuoyCodeSignIn.d.ts +4 -0
  36. package/lib/typescript/commonjs/floatingMenu/BuoySignIn.d.ts +1 -3
  37. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts +27 -2
  38. package/lib/typescript/commonjs/floatingMenu/capacitorBackButton.d.ts +17 -0
  39. package/lib/typescript/commonjs/floatingMenu/capacitorHostInfo.d.ts +75 -0
  40. package/lib/typescript/commonjs/floatingMenu/dial/dialA11y.d.ts +2 -0
  41. package/lib/typescript/commonjs/index.web.d.ts +2 -0
  42. package/lib/typescript/commonjs/version.d.ts +1 -1
  43. package/lib/typescript/module/floatingMenu/BuoyCodeSignIn.d.ts +4 -0
  44. package/lib/typescript/module/floatingMenu/BuoySignIn.d.ts +1 -3
  45. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts +27 -2
  46. package/lib/typescript/module/floatingMenu/capacitorBackButton.d.ts +17 -0
  47. package/lib/typescript/module/floatingMenu/capacitorHostInfo.d.ts +75 -0
  48. package/lib/typescript/module/floatingMenu/dial/dialA11y.d.ts +2 -0
  49. package/lib/typescript/module/index.web.d.ts +2 -0
  50. package/lib/typescript/module/version.d.ts +1 -1
  51. package/lib/web/chunks/chunk-CLXYMJTS.mjs +1 -0
  52. package/lib/web/chunks/{chunk-QZDVCMCT.mjs → chunk-GLXZCY6W.mjs} +1 -1
  53. package/lib/web/index.mjs +2 -2
  54. package/lib/web/register-server.mjs +1 -1
  55. package/lib/web/register.mjs +1 -1
  56. package/lib/web/toolkit.mjs +1 -1
  57. package/package.json +5 -5
  58. package/lib/web/chunks/chunk-R7RGRTY5.mjs +0 -1
@@ -1,8 +1,10 @@
1
+ import type { ReactNode } from 'react';
1
2
  import { type WebToolConfig, type Environment, type UserRole } from '@buoy-gg/floating-tools-react';
2
3
  import { type BrowserToolModules } from '../utils/createWebTools';
3
4
  import type { BrowserToolConfig } from '../utils/createWebTool';
4
5
  import type { ExternalSyncOptions } from './autoExternalSync';
5
- import type { EnvVarConfig } from './FloatingDevTools';
6
+ import type { EnvVarConfig, FloatingAskBuoyConfig, StorageKeyConfig } from './FloatingDevTools';
7
+ import { type DefaultDialConfig, type DefaultFloatingConfig } from './defaultConfig';
6
8
  export interface FloatingDevToolsProps {
7
9
  /** Current environment (local, dev, qa, staging, prod) */
8
10
  environment?: Environment;
@@ -21,6 +23,23 @@ export interface FloatingDevToolsProps {
21
23
  sentryGetClient?: () => unknown;
22
24
  /** Disable onboarding tooltips */
23
25
  disableHints?: boolean;
26
+ /**
27
+ * Hide the whole shell: bubble, dial and every open tool. Open tools stay in
28
+ * the host's state and come back when `hidden` clears (native parity).
29
+ */
30
+ hidden?: boolean;
31
+ /** Rendered inside the dev tools providers, after the tool layer (native parity). */
32
+ children?: ReactNode;
33
+ /** Tools enabled in the floating bubble when the user has no saved settings. */
34
+ defaultFloatingTools?: DefaultFloatingConfig;
35
+ /** Tools enabled in the dial when the user has no saved settings (max 6). */
36
+ defaultDialTools?: DefaultDialConfig;
37
+ /** Zustand stores to watch; same as calling `zustand.watchStores` (needs the zustand module). */
38
+ zustandStores?: Record<string, any>;
39
+ /** Storage keys the Storage tool should check (needs the storage module). */
40
+ requiredStorageKeys?: StorageKeyConfig[];
41
+ /** One-prop Ask Buoy setup (needs the ask-buoy module). */
42
+ askBuoy?: FloatingAskBuoyConfig;
24
43
  /** Keep capture and desktop sync running without the floating menu. */
25
44
  headless?: boolean;
26
45
  licenseKey?: string;
@@ -29,8 +48,14 @@ export interface FloatingDevToolsProps {
29
48
  * is signed in. Buoy then opens for that person, with no key in the build.
30
49
  * Only render FloatingDevTools with this for your own admins and testers.
31
50
  * The site must be on your list at buoy.gg/dashboard/sites.
51
+ *
52
+ * In a Capacitor app this is sign in with a code, as on native. The app id
53
+ * defaults to the bundle id; `signIn={{ appId }}` sets it. Add `app:` plus
54
+ * that id to your Sites list.
32
55
  */
33
- signIn?: boolean;
56
+ signIn?: boolean | {
57
+ appId?: string;
58
+ };
34
59
  /** @deprecated Accounts are required for all dev tools. */
35
60
  requireLicense?: boolean;
36
61
  }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * True while Buoy is handling Android back (a tool is open). A plain Capacitor
3
+ * app with its own `App.addListener('backButton', …)` should skip its action
4
+ * while this is true: every App listener receives the press, and Buoy can't
5
+ * see or stop the others. Ionic apps don't need this.
6
+ */
7
+ export declare function isBuoyHoldingBackButton(): boolean;
8
+ /** Between Ionic's menu (99) and overlays (100). Ionic compares with >=, so fractions work. */
9
+ export declare const BUOY_BACK_PRIORITY = 99.5;
10
+ /** Ionic is mounted and handling hardware back (its config can turn that off). */
11
+ export declare function ionicHandlesBack(): boolean;
12
+ /**
13
+ * Close the last open tool on Android back while `active`.
14
+ * `onBack` is read through a ref, so a new callback never re-registers.
15
+ */
16
+ export declare function useCapacitorBackButton(active: boolean, onBack: () => void): void;
17
+ //# sourceMappingURL=capacitorBackButton.d.ts.map
@@ -0,0 +1,75 @@
1
+ /** UA hint only: "iPhone"/"iPad" on iOS, the model on Android, null when unknown. */
2
+ export declare function hardwareFromUserAgent(ua: string, platform: "ios" | "android"): string | null;
3
+ /**
4
+ * True when the UA looks like the Android emulator. A hint, used only to pick
5
+ * the 10.0.2.2 broker alias (same heuristic as native platformUtils.ts).
6
+ */
7
+ export declare function isAndroidEmulatorUserAgent(ua: string): boolean;
8
+ /** Where a Capacitor app without the App plugin keeps the name it first launched with. */
9
+ export declare const CAPACITOR_APP_NAME_KEY = "@react_buoy_capacitor_app_name";
10
+ /**
11
+ * The device id's prefix must not change between launches. Without the App
12
+ * plugin the only name is the page title, which can differ by launch route,
13
+ * so the first one seen is kept in localStorage and reused from then on.
14
+ */
15
+ export declare function persistedAppName(title: string | null): string | null;
16
+ export interface HostInfo {
17
+ /** `ios`/`android` in a Capacitor shell, `web` otherwise. */
18
+ platform: "ios" | "android" | "web";
19
+ appName: string | null;
20
+ hardwareName: string;
21
+ /** Sent as extraDeviceInfo so Desktop and MCP can tell Capacitor from RN. */
22
+ extraDeviceInfo?: Record<string, string>;
23
+ /**
24
+ * False while plugin lookups are still running. Dial only once ready, or the
25
+ * device would register under one name and then re-register under another.
26
+ */
27
+ ready: boolean;
28
+ }
29
+ /** Synchronous first answer; the hook below upgrades it from plugins. */
30
+ export declare function initialHostInfo(): HostInfo;
31
+ /**
32
+ * The identity inputs for the browser sync. Computed once per mount (so a
33
+ * page-title change mid-session can't rename the device), then upgraded once
34
+ * from the App/Device plugins when a Capacitor app ships them.
35
+ */
36
+ export declare function useHostInfo(): HostInfo;
37
+ export interface BrokerPageInfo {
38
+ protocol: string;
39
+ hostname: string;
40
+ origin: string;
41
+ userAgent: string;
42
+ /** window.WEBVIEW_SERVER_URL, which Capacitor's native shell sets. */
43
+ serverUrl?: string | null;
44
+ }
45
+ /**
46
+ * Whether the page is the app's bundled copy (served on the phone) rather
47
+ * than a live-reload dev server. iOS sets WEBVIEW_SERVER_URL to the bundled
48
+ * origin (scheme://hostname) even during live reload, so a match means
49
+ * bundled. Android sets it to the live-reload URL when there is one, so it
50
+ * can't tell them apart; there, the bundled page is served from localhost.
51
+ */
52
+ export declare function isBundledPage(platform: "ios" | "android", page: BrokerPageInfo): boolean;
53
+ /**
54
+ * Where the dev machine's broker is, seen from a Capacitor WebView.
55
+ *
56
+ * Native RN reads Metro's host. A Capacitor page has two shapes:
57
+ * - bundled (`capacitor://localhost`, `https://localhost`, or an iOS
58
+ * `server.hostname`; see isBundledPage): the page host is the phone
59
+ * itself, so the broker default is localhost. That reaches the Mac from
60
+ * the iOS simulator, and from an Android phone over `adb reverse`.
61
+ * - live reload (`server.url`): the page host IS the dev machine, so the
62
+ * default web rule (page host) is already right, on any port.
63
+ * On the Android emulator, localhost is the emulator, so loopback hosts move
64
+ * to 10.0.2.2 (the emulator's alias for the Mac), explicit URLs included.
65
+ * Returns `url` unchanged outside a Capacitor shell.
66
+ */
67
+ export declare function capacitorBrokerURL(url: string, explicit: boolean, platform: "ios" | "android" | "web", page?: BrokerPageInfo | null): string;
68
+ /**
69
+ * The one-line fix for a broker the WebView may refuse to reach, or null.
70
+ * Android serves bundled pages from https://localhost by default, and blocks
71
+ * plain http/ws from it (mixed content) and cleartext traffic in general.
72
+ * Buoy can't read the native config, so show this only after a failed dial.
73
+ */
74
+ export declare function capacitorTransportProblem(url: string, platform: "ios" | "android" | "web", page?: BrokerPageInfo | null): string | null;
75
+ //# sourceMappingURL=capacitorHostInfo.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function dialAccessibilityLabel(id: string | undefined, name: string): string;
2
+ //# sourceMappingURL=dialA11y.d.ts.map
@@ -10,6 +10,7 @@ export { FloatingDevTools } from "./floatingMenu/FloatingDevTools.web";
10
10
  export type { FloatingDevToolsProps } from "./floatingMenu/FloatingDevTools.web";
11
11
  export { createWebTool } from "./utils/createWebTool";
12
12
  export { clearReleaseOptIn } from "./releaseOptIn";
13
+ export { isBuoyHoldingBackButton } from "./floatingMenu/capacitorBackButton";
13
14
  export { FloatingTools, UserStatus, Divider } from "./floatingMenu/floatingTools.web";
14
15
  export type { FloatingToolsProps } from "./floatingMenu/floatingTools.web";
15
16
  export { DialMenu } from "./floatingMenu/dial/DialDevTools.web";
@@ -25,4 +26,5 @@ export * from "./toolkit";
25
26
  export { useToolHost, useToolHeader, type ToolHostContextValue, type ToolHeaderOverride, type ToolToastType } from "./floatingMenu/ToolHost";
26
27
  export { DevToolsVisibilityProvider, useDevToolsVisibility } from "./floatingMenu/DevToolsVisibilityContext";
27
28
  export { appSyncAdapter } from "./floatingMenu/sync/appSyncAdapter";
29
+ export { LicenseManager } from "@buoy-gg/license";
28
30
  //# sourceMappingURL=index.web.d.ts.map
@@ -9,5 +9,5 @@
9
9
  * Drift is prevented by a test that fails when this disagrees with
10
10
  * package.json, so a version bump that forgets this file cannot ship.
11
11
  */
12
- export declare const SDK_VERSION = "7.0.56";
12
+ export declare const SDK_VERSION = "7.0.58";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1,4 @@
1
+ export declare function BuoySignIn({ needsPlan }: {
2
+ needsPlan?: boolean;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=BuoyCodeSignIn.d.ts.map
@@ -1,4 +1,2 @@
1
- export declare function BuoySignIn({ needsPlan }: {
2
- needsPlan?: boolean;
3
- }): import("react").JSX.Element;
1
+ export { BuoySignIn } from "./BuoyCodeSignIn";
4
2
  //# sourceMappingURL=BuoySignIn.d.ts.map
@@ -1,8 +1,10 @@
1
+ import type { ReactNode } from 'react';
1
2
  import { type WebToolConfig, type Environment, type UserRole } from '@buoy-gg/floating-tools-react';
2
3
  import { type BrowserToolModules } from '../utils/createWebTools';
3
4
  import type { BrowserToolConfig } from '../utils/createWebTool';
4
5
  import type { ExternalSyncOptions } from './autoExternalSync';
5
- import type { EnvVarConfig } from './FloatingDevTools';
6
+ import type { EnvVarConfig, FloatingAskBuoyConfig, StorageKeyConfig } from './FloatingDevTools';
7
+ import { type DefaultDialConfig, type DefaultFloatingConfig } from './defaultConfig';
6
8
  export interface FloatingDevToolsProps {
7
9
  /** Current environment (local, dev, qa, staging, prod) */
8
10
  environment?: Environment;
@@ -21,6 +23,23 @@ export interface FloatingDevToolsProps {
21
23
  sentryGetClient?: () => unknown;
22
24
  /** Disable onboarding tooltips */
23
25
  disableHints?: boolean;
26
+ /**
27
+ * Hide the whole shell: bubble, dial and every open tool. Open tools stay in
28
+ * the host's state and come back when `hidden` clears (native parity).
29
+ */
30
+ hidden?: boolean;
31
+ /** Rendered inside the dev tools providers, after the tool layer (native parity). */
32
+ children?: ReactNode;
33
+ /** Tools enabled in the floating bubble when the user has no saved settings. */
34
+ defaultFloatingTools?: DefaultFloatingConfig;
35
+ /** Tools enabled in the dial when the user has no saved settings (max 6). */
36
+ defaultDialTools?: DefaultDialConfig;
37
+ /** Zustand stores to watch; same as calling `zustand.watchStores` (needs the zustand module). */
38
+ zustandStores?: Record<string, any>;
39
+ /** Storage keys the Storage tool should check (needs the storage module). */
40
+ requiredStorageKeys?: StorageKeyConfig[];
41
+ /** One-prop Ask Buoy setup (needs the ask-buoy module). */
42
+ askBuoy?: FloatingAskBuoyConfig;
24
43
  /** Keep capture and desktop sync running without the floating menu. */
25
44
  headless?: boolean;
26
45
  licenseKey?: string;
@@ -29,8 +48,14 @@ export interface FloatingDevToolsProps {
29
48
  * is signed in. Buoy then opens for that person, with no key in the build.
30
49
  * Only render FloatingDevTools with this for your own admins and testers.
31
50
  * The site must be on your list at buoy.gg/dashboard/sites.
51
+ *
52
+ * In a Capacitor app this is sign in with a code, as on native. The app id
53
+ * defaults to the bundle id; `signIn={{ appId }}` sets it. Add `app:` plus
54
+ * that id to your Sites list.
32
55
  */
33
- signIn?: boolean;
56
+ signIn?: boolean | {
57
+ appId?: string;
58
+ };
34
59
  /** @deprecated Accounts are required for all dev tools. */
35
60
  requireLicense?: boolean;
36
61
  }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * True while Buoy is handling Android back (a tool is open). A plain Capacitor
3
+ * app with its own `App.addListener('backButton', …)` should skip its action
4
+ * while this is true: every App listener receives the press, and Buoy can't
5
+ * see or stop the others. Ionic apps don't need this.
6
+ */
7
+ export declare function isBuoyHoldingBackButton(): boolean;
8
+ /** Between Ionic's menu (99) and overlays (100). Ionic compares with >=, so fractions work. */
9
+ export declare const BUOY_BACK_PRIORITY = 99.5;
10
+ /** Ionic is mounted and handling hardware back (its config can turn that off). */
11
+ export declare function ionicHandlesBack(): boolean;
12
+ /**
13
+ * Close the last open tool on Android back while `active`.
14
+ * `onBack` is read through a ref, so a new callback never re-registers.
15
+ */
16
+ export declare function useCapacitorBackButton(active: boolean, onBack: () => void): void;
17
+ //# sourceMappingURL=capacitorBackButton.d.ts.map
@@ -0,0 +1,75 @@
1
+ /** UA hint only: "iPhone"/"iPad" on iOS, the model on Android, null when unknown. */
2
+ export declare function hardwareFromUserAgent(ua: string, platform: "ios" | "android"): string | null;
3
+ /**
4
+ * True when the UA looks like the Android emulator. A hint, used only to pick
5
+ * the 10.0.2.2 broker alias (same heuristic as native platformUtils.ts).
6
+ */
7
+ export declare function isAndroidEmulatorUserAgent(ua: string): boolean;
8
+ /** Where a Capacitor app without the App plugin keeps the name it first launched with. */
9
+ export declare const CAPACITOR_APP_NAME_KEY = "@react_buoy_capacitor_app_name";
10
+ /**
11
+ * The device id's prefix must not change between launches. Without the App
12
+ * plugin the only name is the page title, which can differ by launch route,
13
+ * so the first one seen is kept in localStorage and reused from then on.
14
+ */
15
+ export declare function persistedAppName(title: string | null): string | null;
16
+ export interface HostInfo {
17
+ /** `ios`/`android` in a Capacitor shell, `web` otherwise. */
18
+ platform: "ios" | "android" | "web";
19
+ appName: string | null;
20
+ hardwareName: string;
21
+ /** Sent as extraDeviceInfo so Desktop and MCP can tell Capacitor from RN. */
22
+ extraDeviceInfo?: Record<string, string>;
23
+ /**
24
+ * False while plugin lookups are still running. Dial only once ready, or the
25
+ * device would register under one name and then re-register under another.
26
+ */
27
+ ready: boolean;
28
+ }
29
+ /** Synchronous first answer; the hook below upgrades it from plugins. */
30
+ export declare function initialHostInfo(): HostInfo;
31
+ /**
32
+ * The identity inputs for the browser sync. Computed once per mount (so a
33
+ * page-title change mid-session can't rename the device), then upgraded once
34
+ * from the App/Device plugins when a Capacitor app ships them.
35
+ */
36
+ export declare function useHostInfo(): HostInfo;
37
+ export interface BrokerPageInfo {
38
+ protocol: string;
39
+ hostname: string;
40
+ origin: string;
41
+ userAgent: string;
42
+ /** window.WEBVIEW_SERVER_URL, which Capacitor's native shell sets. */
43
+ serverUrl?: string | null;
44
+ }
45
+ /**
46
+ * Whether the page is the app's bundled copy (served on the phone) rather
47
+ * than a live-reload dev server. iOS sets WEBVIEW_SERVER_URL to the bundled
48
+ * origin (scheme://hostname) even during live reload, so a match means
49
+ * bundled. Android sets it to the live-reload URL when there is one, so it
50
+ * can't tell them apart; there, the bundled page is served from localhost.
51
+ */
52
+ export declare function isBundledPage(platform: "ios" | "android", page: BrokerPageInfo): boolean;
53
+ /**
54
+ * Where the dev machine's broker is, seen from a Capacitor WebView.
55
+ *
56
+ * Native RN reads Metro's host. A Capacitor page has two shapes:
57
+ * - bundled (`capacitor://localhost`, `https://localhost`, or an iOS
58
+ * `server.hostname`; see isBundledPage): the page host is the phone
59
+ * itself, so the broker default is localhost. That reaches the Mac from
60
+ * the iOS simulator, and from an Android phone over `adb reverse`.
61
+ * - live reload (`server.url`): the page host IS the dev machine, so the
62
+ * default web rule (page host) is already right, on any port.
63
+ * On the Android emulator, localhost is the emulator, so loopback hosts move
64
+ * to 10.0.2.2 (the emulator's alias for the Mac), explicit URLs included.
65
+ * Returns `url` unchanged outside a Capacitor shell.
66
+ */
67
+ export declare function capacitorBrokerURL(url: string, explicit: boolean, platform: "ios" | "android" | "web", page?: BrokerPageInfo | null): string;
68
+ /**
69
+ * The one-line fix for a broker the WebView may refuse to reach, or null.
70
+ * Android serves bundled pages from https://localhost by default, and blocks
71
+ * plain http/ws from it (mixed content) and cleartext traffic in general.
72
+ * Buoy can't read the native config, so show this only after a failed dial.
73
+ */
74
+ export declare function capacitorTransportProblem(url: string, platform: "ios" | "android" | "web", page?: BrokerPageInfo | null): string | null;
75
+ //# sourceMappingURL=capacitorHostInfo.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function dialAccessibilityLabel(id: string | undefined, name: string): string;
2
+ //# sourceMappingURL=dialA11y.d.ts.map
@@ -10,6 +10,7 @@ export { FloatingDevTools } from "./floatingMenu/FloatingDevTools.web";
10
10
  export type { FloatingDevToolsProps } from "./floatingMenu/FloatingDevTools.web";
11
11
  export { createWebTool } from "./utils/createWebTool";
12
12
  export { clearReleaseOptIn } from "./releaseOptIn";
13
+ export { isBuoyHoldingBackButton } from "./floatingMenu/capacitorBackButton";
13
14
  export { FloatingTools, UserStatus, Divider } from "./floatingMenu/floatingTools.web";
14
15
  export type { FloatingToolsProps } from "./floatingMenu/floatingTools.web";
15
16
  export { DialMenu } from "./floatingMenu/dial/DialDevTools.web";
@@ -25,4 +26,5 @@ export * from "./toolkit";
25
26
  export { useToolHost, useToolHeader, type ToolHostContextValue, type ToolHeaderOverride, type ToolToastType } from "./floatingMenu/ToolHost";
26
27
  export { DevToolsVisibilityProvider, useDevToolsVisibility } from "./floatingMenu/DevToolsVisibilityContext";
27
28
  export { appSyncAdapter } from "./floatingMenu/sync/appSyncAdapter";
29
+ export { LicenseManager } from "@buoy-gg/license";
28
30
  //# sourceMappingURL=index.web.d.ts.map
@@ -9,5 +9,5 @@
9
9
  * Drift is prevented by a test that fails when this disagrees with
10
10
  * package.json, so a version bump that forgets this file cannot ship.
11
11
  */
12
- export declare const SDK_VERSION = "7.0.56";
12
+ export declare const SDK_VERSION = "7.0.58";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ "use client";var u=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var p=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var s=(e,r)=>{for(var t in r)u(e,t,{get:r[t],enumerable:true})},i=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of l(r))!f.call(e,o)&&o!==t&&u(e,o,{get:()=>r[o],enumerable:!(a=n(r,o))||a.enumerable});return e},c=(e,r,t)=>(i(e,r,"default"),t&&i(t,r,"default"));var y=(()=>{try{let e=globalThis.Capacitor;if(e&&typeof e.isNativePlatform=="function"&&e.isNativePlatform())return e.DEBUG===true}catch{}return process.env.NODE_ENV!=="production"})();typeof window<"u"&&typeof globalThis.global>"u"&&(globalThis.global=globalThis);export{p as a,s as b,c,y as d};
@@ -1 +1 @@
1
- "use client";import{b as B,c as M}from"./chunk-R7RGRTY5.mjs";import{toolTheme as V}from"@buoy-gg/shared-ui/web";var v={};B(v,{AccessibilityInfo:()=>D,ActivityIndicator:()=>ke,Alert:()=>Me,Animated:()=>w,AppRegistry:()=>H,AppState:()=>F,Appearance:()=>R,BackHandler:()=>z,Button:()=>Ae,CheckBox:()=>Q,Clipboard:()=>N,DeviceEventEmitter:()=>fe,Dimensions:()=>S,Easing:()=>O,FlatList:()=>Z,I18nManager:()=>U,Image:()=>ee,ImageBackground:()=>ae,InteractionManager:()=>K,Keyboard:()=>W,KeyboardAvoidingView:()=>se,LayoutAnimation:()=>j,Linking:()=>$,LogBox:()=>pe,Modal:()=>Te,NativeEventEmitter:()=>G,NativeModules:()=>I,PanResponder:()=>q,Picker:()=>te,PixelRatio:()=>J,Platform:()=>C,Pressable:()=>Ce,ProgressBar:()=>oe,RefreshControl:()=>re,SafeAreaView:()=>ie,ScrollView:()=>E,SectionList:()=>ne,Share:()=>X,StatusBar:()=>le,StyleSheet:()=>b,Switch:()=>Ee,Text:()=>x,TextInput:()=>ve,Touchable:()=>ce,TouchableHighlight:()=>we,TouchableNativeFeedback:()=>de,TouchableOpacity:()=>T,TouchableWithoutFeedback:()=>Se,UIManager:()=>Y,Vibration:()=>_,View:()=>f,VirtualizedList:()=>ue,YellowBox:()=>me,findNodeHandle:()=>Be,unstable_createElement:()=>P,useColorScheme:()=>he,useLocaleContext:()=>ge,useWindowDimensions:()=>xe});M(v,L);import*as L from"react-native-web";import{unstable_createElement as P,NativeModules as I,AccessibilityInfo as D,Animated as w,Appearance as R,AppRegistry as H,AppState as F,BackHandler as z,Clipboard as N,Dimensions as S,Easing as O,I18nManager as U,Keyboard as W,InteractionManager as K,LayoutAnimation as j,Linking as $,NativeEventEmitter as G,PanResponder as q,PixelRatio as J,Platform as C,Share as X,StyleSheet as b,UIManager as Y,Vibration as _,CheckBox as Q,FlatList as Z,Image as ee,ImageBackground as ae,KeyboardAvoidingView as se,Picker as te,ProgressBar as oe,RefreshControl as re,SafeAreaView as ie,SectionList as ne,StatusBar as le,Touchable as ce,TouchableNativeFeedback as de,VirtualizedList as ue,YellowBox as me,LogBox as pe,DeviceEventEmitter as fe,useColorScheme as he,useLocaleContext as ge,useWindowDimensions as xe}from"react-native-web";import*as i from"react-native-web";import{createElement as be,forwardRef as ye}from"react";function l(a){let t=ye((r,s)=>{let{accessibilityState:c,accessibilityValue:m,...u}=r;for(let d of["busy","checked","disabled","expanded","selected"])c?.[d]!==void 0&&u[`aria-${d}`]===void 0&&(u[`aria-${d}`]=c[d]);for(let[d,n]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))m?.[d]!==void 0&&u[`aria-${n}`]===void 0&&(u[`aria-${n}`]=m[d]);return be(a,{...u,ref:s})}),o=a.State;return o&&Object.assign(t,{State:o}),t.displayName=a.displayName??a.name??"NativeWebView",t}var f=l(i.View),x=l(i.Text),ve=l(i.TextInput),T=l(i.TouchableOpacity),we=l(i.TouchableHighlight),Se=l(i.TouchableWithoutFeedback),Ce=l(i.Pressable),E=l(i.ScrollView),Te=l(i.Modal),Ee=l(i.Switch),ke=l(i.ActivityIndicator),Ae=l(i.Button),Be=i.findNodeHandle,Me={alert(a,t,o,r){if(typeof document>"u")return;let s=document.createElement("dialog");s.dataset.buoyRoot="",s.setAttribute("aria-label",a),s.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let c=document.createElement("h2");if(c.textContent=a,c.style.cssText="font-size:18px;margin:0 0 12px",s.appendChild(c),t){let n=document.createElement("p");n.textContent=t,n.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",s.appendChild(n)}let m=document.createElement("div");m.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let u=o?.length?o:[{text:"OK"}],d=()=>{s.close?.(),s.remove()};for(let n of u){let g=document.createElement("button");g.type="button",g.textContent=n.text??"OK",g.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${n.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,g.onclick=()=>{d(),n.onPress?.()},m.appendChild(g)}s.addEventListener("cancel",n=>{n.preventDefault(),r?.cancelable!==false&&(d(),r?.onDismiss?.())}),s.appendChild(m),document.body.appendChild(s),s.showModal?s.showModal():s.setAttribute("open","")}};import{CopyButton as Ve,toolTheme as e}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as Le,SplitDiffViewer as Pe}from"@buoy-gg/shared-ui/web/dataViewer";import{jsx as p,jsxs as k}from"react/jsx-runtime";var Ie={success:e.colors.success,active:e.colors.success,connected:e.colors.success,error:e.colors.error,failed:e.colors.error,warning:e.colors.warning,stale:e.colors.warning,pending:e.colors.info,loading:e.colors.info,fetching:e.colors.info,info:e.colors.info,inactive:e.colors.textMuted,idle:e.colors.textMuted};function A(a){return Ie[a.toLowerCase()]??e.colors.textMuted}var De={GET:e.colors.info,POST:e.colors.success,PUT:e.colors.warning,PATCH:e.colors.warning,DELETE:e.colors.error};function Re(a){return De[a.toUpperCase()]??e.colors.textSecondary}var He={string:e.colors.success,number:e.colors.info,boolean:e.colors.warning,object:e.colors.accent,array:e.colors.accent,function:e.colors.error,null:e.colors.textMuted,undefined:e.colors.textMuted};function Fe(a){return He[a.toLowerCase()]??e.colors.textSecondary}function ze({children:a,color:t=e.colors.textSecondary,icon:o,size:r="small",pill:s=false,mono:c=false,style:m}){let u=typeof a=="string"||typeof a=="number";return k(f,{style:[h.base,r==="medium"&&h.medium,s&&h.pill,{backgroundColor:t+"1A",borderColor:t+"40"},m],children:[o,u?p(x,{style:[h.text,r==="medium"&&h.textMedium,c&&h.textMono,{color:t}],numberOfLines:1,children:a}):a]})}var h=b.create({base:{flexDirection:"row",alignItems:"center",alignSelf:"flex-start",gap:4,borderWidth:1,borderRadius:e.radius.sm,paddingHorizontal:6,paddingVertical:2},medium:{paddingHorizontal:8,paddingVertical:3},pill:{borderRadius:e.radius.pill,minWidth:20,justifyContent:"center"},text:{fontSize:10,fontWeight:"600",letterSpacing:.3},textMedium:{fontSize:12},textMono:{fontFamily:e.text.mono.fontFamily}});function Ne({status:a,color:t,size:o=8,style:r}){let s=t??(a?A(a):e.colors.textMuted);return p(f,{style:[{width:o,height:o,borderRadius:o/2,backgroundColor:s},r]})}function Oe({label:a,value:t,copyable:o=false,style:r}){let s=typeof t=="string"||typeof t=="number";return k(f,{style:[y.row,r],children:[p(x,{style:y.label,numberOfLines:1,children:a}),p(f,{style:y.value,children:s?p(x,{style:y.valueText,numberOfLines:2,children:String(t)}):t}),o&&t!=null&&p(Ve,{value:t,size:12})]})}var y=b.create({row:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingVertical:3},label:{...e.text.label,color:e.colors.textMuted,minWidth:72},value:{flex:1,flexDirection:"row",alignItems:"center"},valueText:{...e.text.mono,color:e.colors.text}});function Ue({oldValue:a,newValue:t,mode:o="tree",showUnchanged:r=true,scrollEnabled:s=false,height:c=220}){return o==="text"?p(Pe,{oldValue:a,newValue:t,height:c}):p(Le,{oldValue:a,newValue:t,showUnchanged:r,scrollEnabled:s})}import{ToolButton as We,CopyButton as Ke,PowerToggleButton as je}from"@buoy-gg/shared-ui/web";import{CompactRow as $e,DevToolsCard as Ge}from"@buoy-gg/shared-ui/web";import{SectionHeader as qe,CollapsibleSection as Je,TabSelector as Xe,EmptyState as Ye,SearchBar as _e,EventStepperFooter as Qe}from"@buoy-gg/shared-ui/web";import{DataViewer as Ze}from"@buoy-gg/shared-ui/web/dataViewer";import{BaseEventStore as ea}from"@buoy-gg/shared-ui/web";import{RelativeTime as aa}from"@buoy-gg/shared-ui/web";import{formatBytes as sa,formatDuration as ta,formatNumber as oa,truncateMiddle as ra,safeStringify as ia}from"@buoy-gg/shared-ui/web";import{usePersistedState as na,persistentStorage as la,devToolsStorageKeys as ca}from"@buoy-gg/shared-ui/web";import{useSafeAreaInsets as da,copyToClipboard as ua}from"@buoy-gg/shared-ui/web";import{JsModal as ma}from"@buoy-gg/shared-ui/web";import{Activity as pa,AlertTriangle as fa,Bug as ha,Check as ga,CheckCircle as xa,ChevronDown as ba,ChevronLeft as ya,ChevronRight as va,ChevronUp as wa,Clock as Sa,Copy as Ca,Database as Ta,Eye as Ea,EyeOff as ka,FileJson as Aa,FileText as Ba,Filter as Ma,FlaskConical as Va,Globe as La,Hash as Pa,Info as Ia,Key as Da,Layers as Ra,Lock as Ha,Pause as Fa,Play as za,Plus as Na,Power as Oa,RefreshCw as Ua,Search as Wa,Settings as Ka,Shield as ja,Trash2 as $a,User as Ga,Wifi as qa,X as Ja,Zap as Xa,AlertCircle as Ya,BarChart3 as _a,Bookmark as Qa,Cloud as Za,Download as es,Edit3 as as,GitBranch as ss,HardDrive as ts,HelpCircle as os,Home as rs,Image as is,Link as ns,Maximize2 as ls,Minus as cs,Palette as ds,Pin as us,Route as ms,Server as ps,Smartphone as fs,Square as hs,CheckSquare as gs,Timer as xs,Unlock as bs,Upload as ys,Users as vs,XCircle as ws}from"@buoy-gg/shared-ui/web";export{f as a,x as b,T as c,E as d,v as e,w as f,S as g,C as h,b as i,A as j,Re as k,Fe as l,ze as m,Ne as n,Oe as o,Ue as p,V as q,We as r,Ke as s,je as t,$e as u,Ge as v,qe as w,Je as x,Xe as y,Ye as z,_e as A,Qe as B,Ze as C,ea as D,aa as E,sa as F,ta as G,oa as H,ra as I,ia as J,na as K,la as L,ca as M,da as N,ua as O,ma as P,pa as Q,fa as R,ha as S,ga as T,xa as U,ba as V,ya as W,va as X,wa as Y,Sa as Z,Ca as _,Ta as $,Ea as aa,ka as ba,Aa as ca,Ba as da,Ma as ea,Va as fa,La as ga,Pa as ha,Ia as ia,Da as ja,Ra as ka,Ha as la,Fa as ma,za as na,Na as oa,Oa as pa,Ua as qa,Wa as ra,Ka as sa,ja as ta,$a as ua,Ga as va,qa as wa,Ja as xa,Xa as ya,Ya as za,_a as Aa,Qa as Ba,Za as Ca,es as Da,as as Ea,ss as Fa,ts as Ga,os as Ha,rs as Ia,is as Ja,ns as Ka,ls as La,cs as Ma,ds as Na,us as Oa,ms as Pa,ps as Qa,fs as Ra,hs as Sa,gs as Ta,xs as Ua,bs as Va,ys as Wa,vs as Xa,ws as Ya};
1
+ "use client";import{b as L,c as P}from"./chunk-CLXYMJTS.mjs";import{toolTheme as I}from"@buoy-gg/shared-ui/web";var v={};L(v,{AccessibilityInfo:()=>F,ActivityIndicator:()=>B,Alert:()=>Me,Animated:()=>w,AppRegistry:()=>N,AppState:()=>O,Appearance:()=>z,BackHandler:()=>U,Button:()=>Ae,CheckBox:()=>ae,Clipboard:()=>W,DeviceEventEmitter:()=>xe,Dimensions:()=>S,Easing:()=>K,FlatList:()=>se,I18nManager:()=>j,Image:()=>te,ImageBackground:()=>oe,InteractionManager:()=>G,Keyboard:()=>$,KeyboardAvoidingView:()=>re,LayoutAnimation:()=>q,Linking:()=>J,LogBox:()=>ge,Modal:()=>A,NativeEventEmitter:()=>_,NativeModules:()=>H,PanResponder:()=>X,Picker:()=>ie,PixelRatio:()=>Y,Platform:()=>C,Pressable:()=>E,ProgressBar:()=>ne,RefreshControl:()=>le,SafeAreaView:()=>ce,ScrollView:()=>k,SectionList:()=>de,Share:()=>Z,StatusBar:()=>ue,StyleSheet:()=>b,Switch:()=>ke,Text:()=>x,TextInput:()=>Ce,Touchable:()=>me,TouchableHighlight:()=>Te,TouchableNativeFeedback:()=>pe,TouchableOpacity:()=>T,TouchableWithoutFeedback:()=>Ee,UIManager:()=>Q,Vibration:()=>ee,View:()=>f,VirtualizedList:()=>fe,YellowBox:()=>he,findNodeHandle:()=>Be,unstable_createElement:()=>R,useColorScheme:()=>be,useLocaleContext:()=>ye,useWindowDimensions:()=>ve});P(v,D);import*as D from"react-native-web";import{unstable_createElement as R,NativeModules as H,AccessibilityInfo as F,Animated as w,Appearance as z,AppRegistry as N,AppState as O,BackHandler as U,Clipboard as W,Dimensions as S,Easing as K,I18nManager as j,Keyboard as $,InteractionManager as G,LayoutAnimation as q,Linking as J,NativeEventEmitter as _,PanResponder as X,PixelRatio as Y,Platform as C,Share as Z,StyleSheet as b,UIManager as Q,Vibration as ee,CheckBox as ae,FlatList as se,Image as te,ImageBackground as oe,KeyboardAvoidingView as re,Picker as ie,ProgressBar as ne,RefreshControl as le,SafeAreaView as ce,SectionList as de,StatusBar as ue,Touchable as me,TouchableNativeFeedback as pe,VirtualizedList as fe,YellowBox as he,LogBox as ge,DeviceEventEmitter as xe,useColorScheme as be,useLocaleContext as ye,useWindowDimensions as ve}from"react-native-web";import*as i from"react-native-web";import{createElement as we,forwardRef as Se}from"react";function l(a){let t=Se((r,s)=>{let{accessibilityState:c,accessibilityValue:m,...u}=r;for(let d of["busy","checked","disabled","expanded","selected"])c?.[d]!==void 0&&u[`aria-${d}`]===void 0&&(u[`aria-${d}`]=c[d]);for(let[d,n]of Object.entries({min:"valuemin",max:"valuemax",now:"valuenow",text:"valuetext"}))m?.[d]!==void 0&&u[`aria-${n}`]===void 0&&(u[`aria-${n}`]=m[d]);return we(a,{...u,ref:s})}),o=a.State;return o&&Object.assign(t,{State:o}),t.displayName=a.displayName??a.name??"NativeWebView",t}var f=l(i.View),x=l(i.Text),Ce=l(i.TextInput),T=l(i.TouchableOpacity),Te=l(i.TouchableHighlight),Ee=l(i.TouchableWithoutFeedback),E=l(i.Pressable),k=l(i.ScrollView),A=l(i.Modal),ke=l(i.Switch),B=l(i.ActivityIndicator),Ae=l(i.Button),Be=i.findNodeHandle,Me={alert(a,t,o,r){if(typeof document>"u")return;let s=document.createElement("dialog");s.dataset.buoyRoot="",s.setAttribute("aria-label",a),s.style.cssText="position:fixed;inset:0;margin:auto;width:min(440px,90vw);padding:24px;border:1px solid #475569;border-radius:14px;background:#17212e;color:#f1f5f9;font:14px system-ui;box-shadow:0 20px 80px #0008;z-index:2147483647";let c=document.createElement("h2");if(c.textContent=a,c.style.cssText="font-size:18px;margin:0 0 12px",s.appendChild(c),t){let n=document.createElement("p");n.textContent=t,n.style.cssText="line-height:1.5;white-space:pre-wrap;margin:0 0 20px",s.appendChild(n)}let m=document.createElement("div");m.style.cssText="display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px";let u=o?.length?o:[{text:"OK"}],d=()=>{s.close?.(),s.remove()};for(let n of u){let g=document.createElement("button");g.type="button",g.textContent=n.text??"OK",g.style.cssText=`padding:9px 14px;border:1px solid #64748b;border-radius:7px;color:white;background:${n.style==="destructive"?"#a52b38":"#283a4d"};cursor:pointer;font:inherit`,g.onclick=()=>{d(),n.onPress?.()},m.appendChild(g)}s.addEventListener("cancel",n=>{n.preventDefault(),r?.cancelable!==false&&(d(),r?.onDismiss?.())}),s.appendChild(m),document.body.appendChild(s),s.showModal?s.showModal():s.setAttribute("open","")}};import{CopyButton as Ve,toolTheme as e}from"@buoy-gg/shared-ui/web";import{TreeDiffViewer as Le,SplitDiffViewer as Pe}from"@buoy-gg/shared-ui/web/dataViewer";import{jsx as p,jsxs as M}from"react/jsx-runtime";var Ie={success:e.colors.success,active:e.colors.success,connected:e.colors.success,error:e.colors.error,failed:e.colors.error,warning:e.colors.warning,stale:e.colors.warning,pending:e.colors.info,loading:e.colors.info,fetching:e.colors.info,info:e.colors.info,inactive:e.colors.textMuted,idle:e.colors.textMuted};function V(a){return Ie[a.toLowerCase()]??e.colors.textMuted}var De={GET:e.colors.info,POST:e.colors.success,PUT:e.colors.warning,PATCH:e.colors.warning,DELETE:e.colors.error};function Re(a){return De[a.toUpperCase()]??e.colors.textSecondary}var He={string:e.colors.success,number:e.colors.info,boolean:e.colors.warning,object:e.colors.accent,array:e.colors.accent,function:e.colors.error,null:e.colors.textMuted,undefined:e.colors.textMuted};function Fe(a){return He[a.toLowerCase()]??e.colors.textSecondary}function ze({children:a,color:t=e.colors.textSecondary,icon:o,size:r="small",pill:s=false,mono:c=false,style:m}){let u=typeof a=="string"||typeof a=="number";return M(f,{style:[h.base,r==="medium"&&h.medium,s&&h.pill,{backgroundColor:t+"1A",borderColor:t+"40"},m],children:[o,u?p(x,{style:[h.text,r==="medium"&&h.textMedium,c&&h.textMono,{color:t}],numberOfLines:1,children:a}):a]})}var h=b.create({base:{flexDirection:"row",alignItems:"center",alignSelf:"flex-start",gap:4,borderWidth:1,borderRadius:e.radius.sm,paddingHorizontal:6,paddingVertical:2},medium:{paddingHorizontal:8,paddingVertical:3},pill:{borderRadius:e.radius.pill,minWidth:20,justifyContent:"center"},text:{fontSize:10,fontWeight:"600",letterSpacing:.3},textMedium:{fontSize:12},textMono:{fontFamily:e.text.mono.fontFamily}});function Ne({status:a,color:t,size:o=8,style:r}){let s=t??(a?V(a):e.colors.textMuted);return p(f,{style:[{width:o,height:o,borderRadius:o/2,backgroundColor:s},r]})}function Oe({label:a,value:t,copyable:o=false,style:r}){let s=typeof t=="string"||typeof t=="number";return M(f,{style:[y.row,r],children:[p(x,{style:y.label,numberOfLines:1,children:a}),p(f,{style:y.value,children:s?p(x,{style:y.valueText,numberOfLines:2,children:String(t)}):t}),o&&t!=null&&p(Ve,{value:t,size:12})]})}var y=b.create({row:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingVertical:3},label:{...e.text.label,color:e.colors.textMuted,minWidth:72},value:{flex:1,flexDirection:"row",alignItems:"center"},valueText:{...e.text.mono,color:e.colors.text}});function Ue({oldValue:a,newValue:t,mode:o="tree",showUnchanged:r=true,scrollEnabled:s=false,height:c=220}){return o==="text"?p(Pe,{oldValue:a,newValue:t,height:c}):p(Le,{oldValue:a,newValue:t,showUnchanged:r,scrollEnabled:s})}import{ToolButton as We,CopyButton as Ke,PowerToggleButton as je}from"@buoy-gg/shared-ui/web";import{CompactRow as $e,DevToolsCard as Ge}from"@buoy-gg/shared-ui/web";import{SectionHeader as qe,CollapsibleSection as Je,TabSelector as _e,EmptyState as Xe,SearchBar as Ye,EventStepperFooter as Ze}from"@buoy-gg/shared-ui/web";import{DataViewer as Qe}from"@buoy-gg/shared-ui/web/dataViewer";import{BaseEventStore as ea}from"@buoy-gg/shared-ui/web";import{RelativeTime as aa}from"@buoy-gg/shared-ui/web";import{formatBytes as sa,formatDuration as ta,formatNumber as oa,truncateMiddle as ra,safeStringify as ia}from"@buoy-gg/shared-ui/web";import{usePersistedState as na,persistentStorage as la,devToolsStorageKeys as ca}from"@buoy-gg/shared-ui/web";import{useSafeAreaInsets as da,copyToClipboard as ua}from"@buoy-gg/shared-ui/web";import{JsModal as ma}from"@buoy-gg/shared-ui/web";import{Activity as pa,AlertTriangle as fa,Bug as ha,Check as ga,CheckCircle as xa,ChevronDown as ba,ChevronLeft as ya,ChevronRight as va,ChevronUp as wa,Clock as Sa,Copy as Ca,Database as Ta,Eye as Ea,EyeOff as ka,FileJson as Aa,FileText as Ba,Filter as Ma,FlaskConical as Va,Globe as La,Hash as Pa,Info as Ia,Key as Da,Layers as Ra,Lock as Ha,Pause as Fa,Play as za,Plus as Na,Power as Oa,RefreshCw as Ua,Search as Wa,Settings as Ka,Shield as ja,Trash2 as $a,User as Ga,Wifi as qa,X as Ja,Zap as _a,AlertCircle as Xa,BarChart3 as Ya,Bookmark as Za,Cloud as Qa,Download as es,Edit3 as as,GitBranch as ss,HardDrive as ts,HelpCircle as os,Home as rs,Image as is,Link as ns,Maximize2 as ls,Minus as cs,Palette as ds,Pin as us,Route as ms,Server as ps,Smartphone as fs,Square as hs,CheckSquare as gs,Timer as xs,Unlock as bs,Upload as ys,Users as vs,XCircle as ws}from"@buoy-gg/shared-ui/web";export{f as a,x as b,T as c,E as d,k as e,A as f,B as g,v as h,w as i,S as j,C as k,b as l,V as m,Re as n,Fe as o,ze as p,Ne as q,Oe as r,Ue as s,I as t,We as u,Ke as v,je as w,$e as x,Ge as y,qe as z,Je as A,_e as B,Xe as C,Ye as D,Ze as E,Qe as F,ea as G,aa as H,sa as I,ta as J,oa as K,ra as L,ia as M,na as N,la as O,ca as P,da as Q,ua as R,ma as S,pa as T,fa as U,ha as V,ga as W,xa as X,ba as Y,ya as Z,va as _,wa as $,Sa as aa,Ca as ba,Ta as ca,Ea as da,ka as ea,Aa as fa,Ba as ga,Ma as ha,Va as ia,La as ja,Pa as ka,Ia as la,Da as ma,Ra as na,Ha as oa,Fa as pa,za as qa,Na as ra,Oa as sa,Ua as ta,Wa as ua,Ka as va,ja as wa,$a as xa,Ga as ya,qa as za,Ja as Aa,_a as Ba,Xa as Ca,Ya as Da,Za as Ea,Qa as Fa,es as Ga,as as Ha,ss as Ia,ts as Ja,os as Ka,rs as La,is as Ma,ns as Na,ls as Oa,cs as Pa,ds as Qa,us as Ra,ms as Sa,ps as Ta,fs as Ua,hs as Va,gs as Wa,xs as Xa,bs as Ya,ys as Za,vs as _a,ws as $a};