cobrowse-agent-ui 1.4.2 → 1.6.0

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.
package/README.md CHANGED
@@ -11,15 +11,13 @@ achieve this from an app that's also using `i18next` to handle localization.
11
11
  // i18n.js
12
12
 
13
13
  import i18n from 'i18next';
14
- import { i18n as i18nAgentUI } from 'cobrowse-agent-ui';
14
+ import { bindI18n } from 'cobrowse-agent-ui';
15
15
 
16
16
  i18n.init({
17
17
  // ...
18
18
  });
19
19
 
20
- i18n.on('languageChanged', (language) => {
21
- i18nAgentUI.changeLanguage(language);
22
- });
20
+ bindI18n(i18n);
23
21
 
24
22
  export default i18n;
25
23
  ```
@@ -28,12 +26,12 @@ export default i18n;
28
26
 
29
27
  To add a new locale follow these steps:
30
28
 
31
- - Add a new entry to the `locales` array inside `i18next-parser.config.js`.
29
+ - Add a new entry to the `locales` array inside `i18next.config.ts`.
32
30
  - Run the `npm run i18n` command to generate a new locale file.
33
- - Import the new locale JSON file inside `lib/i18n.js` and add it to the `resources` object (in the i18n instance
31
+ - Import the new locale JSON file inside `lib/i18n/instance.ts` and add it to the `resources` object (in the i18n instance
34
32
  configuration) keyed by the locale key.
35
- - Import the relevant `date-fns` locale inside `lib/i18n.js`.
36
- - Add a new entry to the `SUPPORTED_LOCALES` constant inside `lib/i18n.js`.
33
+ - Import the relevant `date-fns` locale inside `lib/i18n/instance.ts`.
34
+ - Add a new entry to `dateLocales` inside `lib/i18n/instance.ts`.
37
35
 
38
36
  **Note:** ensure the locale code matches the ones provided by the
39
37
  [date-fns library](https://github.com/date-fns/date-fns/tree/main/src/locale) as these are used to localize dates as well.
@@ -1 +1 @@
1
- .PlatformIcon-module__root__ogAvA{width:.9rem;height:.9rem;vertical-align:middle}.Device-module__root__UZx82{padding:6px;display:flex;align-items:center;position:relative;gap:12px}.Device-module__online__1AxAp .Device-module__deviceStatus__0yCZg{outline:2px solid #c7ea30}.Device-module__lastSeen__6lPw2{font-size:.85rem;color:#777}.Device-module__deviceStatus__0yCZg{height:36px;width:36px;padding:4px;outline:2px solid rgba(4,13,60,.25);border-radius:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:transparent}.Device-module__platformIcon__Y-uEy{height:100%;width:auto;pointer-events:none;display:flex;align-items:center;justify-content:center;color:inherit}.Device-module__details__hiywz{display:flex;flex-direction:column;gap:2px;flex:1;color:inherit}.Session-module__root__cORao{appearance:none;border:none;background:none;padding:6px;display:flex;align-items:center;flex-wrap:wrap;gap:12px;text-align:start;font-family:inherit;line-height:inherit;outline:none}.Session-module__clickable__ZEtjv{cursor:pointer;width:100%}.Session-module__root__cORao:focus-visible{outline:2px solid #040d3c;outline-offset:2px}.Session-module__details__oye-t{flex:1;display:flex;flex-direction:column;gap:4px}.Session-module__subdetails__rorhH{display:flex;align-items:baseline;color:#777;gap:12px}.Session-module__recorded__aV5Ih{text-transform:uppercase;font-size:10px;margin-inline-start:3px;letter-spacing:.05rem;color:#0b1220;cursor:pointer}.Session-module__active__1c1v0{color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;background-color:#3cc56e;padding:1px 6px;border-radius:4px;display:inline-block}.Session-module__activated__g-IUA{white-space:nowrap}.Session-module__recorded__aV5Ih:before{content:"";width:8px;height:8px;margin-inline-end:4px;background:red;border-radius:100%;display:inline-block}.Session-module__duration__2WYUC{font-weight:700;font-size:12px;color:inherit}.SmartConnectButton-module__root__11QZi{appearance:none;border:none;display:inline-block;background:#f6f4f8;padding:12px 16px;cursor:not-allowed;border-radius:4px;font-weight:600;font-size:1rem;font-family:inherit;line-height:inherit;opacity:.6;transition:background .15s ease,color .15s ease,transform .12s ease,opacity .12s ease;outline:none}.SmartConnectButton-module__connectable__9zFuL{background:#040d3c;color:#fff;cursor:pointer;opacity:1}.SmartConnectButton-module__root__11QZi:focus-visible{outline:2px solid #040d3c;outline-offset:2px}.SmartConnectButton-module__root__11QZi:active.SmartConnectButton-module__connectable__9zFuL{transform:translateY(1px)}.RefreshButton-module__root__2r6Po{padding:4px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;color:#6f7780;cursor:pointer}.RefreshButton-module__icon__ZMGzA{width:18px;height:18px;transition:transform .2s ease-out}.RefreshButton-module__icon__ZMGzA:hover{transform:rotate(25deg)}@keyframes Loader-module__spin__HaoIa{to{transform:rotate(360deg)}}.Loader-module__root__CuLMw{display:flex;justify-content:center}.Loader-module__icon__vaPyL{width:50px;height:50px;animation:Loader-module__spin__HaoIa 2s linear infinite;color:#040d3c}.CodeEntry-module__root__CEZCb{text-align:center;white-space:nowrap;display:inline-flex;align-items:center;gap:10px;border:none;margin:0;padding:0;min-inline-size:0}.CodeEntry-module__legend__GN0ge{padding:0;font-weight:700;display:contents}.CodeEntry-module__digits__aob60{display:inline-flex;align-items:center}.CodeEntry-module__input__Mp3LR{font-size:1rem;width:1.6rem;height:2rem;margin:.2rem;text-align:center;border-radius:4px;border:1px solid #dfe3f0;background:#fff;color:#0b1220;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease;appearance:textfield}.CodeEntry-module__input__Mp3LR:nth-of-type(3){margin-inline-end:.6rem}.CodeEntry-module__input__Mp3LR[type=number]::-webkit-outer-spin-button,.CodeEntry-module__input__Mp3LR[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}.CodeEntry-module__input__Mp3LR:focus{border-color:#040d3c;box-shadow:0 0 0 3px #040d3c29;outline:none}@keyframes CodeEntry-module__shake__0xLiW{10%,90%{transform:translate3d(-2px,0,0)}20%,80%{transform:translate3d(3px,0,0)}30%,50%,70%{transform:translate3d(-7px,0,0)}40%,60%{transform:translate3d(7px,0,0)}}.CodeEntry-module__invalid__0fo6R{animation:CodeEntry-module__shake__0xLiW .6s cubic-bezier(.16,.07,.19,.97) both;transform:translateZ(0)}.ExternalLink-module__root__7-WiY{position:absolute;right:10px;display:flex;align-items:center;gap:4px;text-decoration:none;color:var(--text-color-base)}.ExternalLink-module__root__7-WiY:hover{text-decoration:underline}.ExternalLink-module__root__7-WiY:visited{color:#0e0c26;color:var(--text-color-base)}.UserIcon-module__root__-NL30{color:#fff;display:inline-flex;align-items:center;justify-content:center;text-align:center;background-size:cover;background-position:center;padding:16px;border-radius:50%;width:1.5rem;height:1.5rem;border:1px solid #ddd;flex:0 0 auto;white-space:nowrap}.Tabs-module__root__vrPV-{--tab-text-color: #6f7780;--tab-active-color: #040d3c;--tab-border-color: #d7dce2;--tab-focus-outline-color: #040d3c;width:100%;display:flex;flex-direction:column;gap:10px;min-height:0;flex:1 1}.Tabs-module__header__ZVkH2{display:flex;align-items:center;border-bottom:1px solid var(--tab-border-color);gap:12px}.Tabs-module__tabList__thjbJ{display:flex;margin:0}.Tabs-module__tab__HyAQH{position:relative;margin-bottom:-1px;padding:10px;border:none;background:transparent;color:var(--tab-text-color);font-size:14px;font-weight:600;border-bottom:2px solid transparent;cursor:pointer;transition:color .3s,border .3s}.Tabs-module__tabHover__yC8x3{color:var(--tab-active-color)}.Tabs-module__tab__HyAQH:focus-visible{outline:2px solid var(--tab-focus-outline-color);outline-offset:2px}.Tabs-module__tabActive__4FIE-{color:var(--tab-active-color);border-bottom:2px solid var(--tab-active-color)}.Tabs-module__tabPanels__xvxyl{overflow-y:auto;flex:1 1;min-height:0;width:100%}.Tabs-module__refresh__MV7Wh{margin-inline-start:auto}.BlockingError-module__root__p05Os{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:10px;height:100%;text-align:center}.BlockingError-module__heading__XCJtI{font-size:1.5rem;font-weight:700}.BlockingError-module__message__1KWtP{font-size:1.2rem}
1
+ .CodeEntry-module__root__CEZCb{text-align:center;white-space:nowrap;display:inline-flex;align-items:center;gap:10px;border:none;margin:0;padding:0;min-inline-size:0}.CodeEntry-module__legend__GN0ge{padding:0;font-weight:700;display:contents}.CodeEntry-module__digits__aob60{display:inline-flex;align-items:center}.CodeEntry-module__input__Mp3LR{font-size:1rem;width:1.6rem;height:2rem;margin:.2rem;text-align:center;border-radius:4px;border:1px solid #dfe3f0;background:#fff;color:#0b1220;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease;appearance:textfield}.CodeEntry-module__input__Mp3LR:nth-of-type(3){margin-inline-end:.6rem}.CodeEntry-module__input__Mp3LR[type=number]::-webkit-outer-spin-button,.CodeEntry-module__input__Mp3LR[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}.CodeEntry-module__input__Mp3LR:focus-visible{border-color:#040d3c}@keyframes CodeEntry-module__shake__0xLiW{10%,90%{transform:translate3d(-2px,0,0)}20%,80%{transform:translate3d(3px,0,0)}30%,50%,70%{transform:translate3d(-7px,0,0)}40%,60%{transform:translate3d(7px,0,0)}}.CodeEntry-module__invalid__0fo6R{animation:CodeEntry-module__shake__0xLiW .6s cubic-bezier(.16,.07,.19,.97) both;transform:translateZ(0)}.Button-module__root__FeqPS{appearance:none;border:none;display:inline-block;background:#f6f4f8;padding:12px 16px;border-radius:4px;font-weight:600;font-size:1rem;font-family:inherit;line-height:inherit;transition:background .15s ease,color .15s ease,transform .12s ease,opacity .12s ease;outline:none}.Button-module__root__FeqPS:disabled{cursor:not-allowed;opacity:.6}.PlatformIcon-module__root__ogAvA{width:.9rem;height:.9rem;vertical-align:middle}.Device-module__root__UZx82{padding:6px;display:flex;align-items:center;position:relative;gap:12px}.Device-module__deviceType__XLr3o{color:#0e0c26}.Device-module__lastSeen__6lPw2{color:#6f6d82}.Device-module__onlineStatus__qY0ly{display:flex;align-items:center;gap:6px}.Device-module__onlineIndicator__AjhAU{background:#22c55e;height:12px;width:12px;border:2px solid #BBF7D0;border-radius:9999px}.Device-module__deviceStatus__0yCZg{height:32px;width:32px;padding:4px;outline:1px solid rgba(4,13,60,.25);border-radius:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:transparent}.Device-module__platformIcon__Y-uEy{height:100%;width:auto;pointer-events:none;display:flex;align-items:center;justify-content:center;color:inherit;padding:2px}.Device-module__details__hiywz{display:flex;flex-direction:column;gap:4px;flex:1;color:inherit;font-size:14px}.Session-module__root__cORao{appearance:none;border:none;background:none;padding:6px;display:flex;align-items:center;flex-wrap:wrap;gap:12px;text-align:start;font-family:inherit;line-height:inherit;outline:none}.Session-module__clickable__ZEtjv{cursor:pointer;width:100%}.Session-module__details__oye-t{flex:1;display:flex;flex-direction:column;gap:4px;font-size:14px}.Session-module__deviceType__tXRrM{display:flex;gap:8px;align-items:center;color:#0e0c26}.Session-module__subdetails__rorhH{display:flex;align-items:baseline;color:#6f6d82;gap:12px}.Session-module__recorded__aV5Ih{text-transform:uppercase;font-size:10px;margin-inline-start:3px;letter-spacing:.05rem;color:#0b1220;cursor:pointer}.Session-module__active__1c1v0{display:flex;align-items:center;gap:6px}.Session-module__activeIndicator__lWO9H{background:#22c55e;height:12px;width:12px;border:2px solid #BBF7D0;border-radius:9999px;flex:1}.Session-module__activated__g-IUA{white-space:nowrap;display:flex;gap:10px;align-items:center}.Session-module__recorded__aV5Ih:before{content:"";width:8px;height:8px;margin-inline-end:4px;background:red;border-radius:100%;display:inline-block}.Session-module__duration__2WYUC{display:flex;gap:4px;align-items:center}.SmartConnectButton-module__connectable__9zFuL{background:#040d3c;color:#fff;cursor:pointer;opacity:1}.SmartConnectButton-module__connectable__9zFuL:active{transform:translateY(1px)}.RefreshButton-module__root__2r6Po{padding:4px;background:transparent;display:flex;align-items:center;justify-content:center;color:#6f7780;cursor:pointer;opacity:1}.RefreshButton-module__icon__ZMGzA{width:18px;height:18px;transition:transform .2s ease-out}.RefreshButton-module__icon__ZMGzA:hover{transform:rotate(25deg)}.Loader-module__root__CuLMw{display:flex;justify-content:center}.Loader-module__spinner__tOnAQ{display:grid;width:24px;height:24px;animation:Loader-module__spin__HaoIa 4s infinite}.Loader-module__spinner__tOnAQ:before,.Loader-module__spinner__tOnAQ:after{content:"";grid-area:1 / 1;border-radius:50%;animation:Loader-module__spin__HaoIa 1s infinite linear}.Loader-module__spinner__tOnAQ:after{border:4px solid;border-color:#0e0c26 #0e0c26 #d7dae9 #d7dae9;animation-direction:reverse}@keyframes Loader-module__spin__HaoIa{to{transform:rotate(1turn)}}.ExternalLink-module__root__7-WiY{position:absolute;right:10px;display:flex;align-items:center;gap:4px;text-decoration:none;color:var(--text-color-base)}.ExternalLink-module__root__7-WiY:hover{text-decoration:underline}.ExternalLink-module__root__7-WiY:visited{color:#0e0c26;color:var(--text-color-base)}.UserIcon-module__root__-NL30{color:#fff;display:inline-flex;align-items:center;justify-content:center;text-align:center;background-size:cover;background-position:center;padding:16px;border-radius:50%;width:1.5rem;height:1.5rem;border:1px solid #ddd;flex:0 0 auto;white-space:nowrap}.CancelButton-module__root__CbF-w{height:40px;border-radius:62px;background-color:#b91c1c;color:#fff;padding:4px 20px;cursor:pointer;opacity:1}.CancelButton-module__root__CbF-w:hover{background-color:#dc2626}.BlockingError-module__root__myw6b{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:10px;height:100%;text-align:center}.BlockingError-module__heading__FzjhY{font-size:1.5rem;font-weight:700}.BlockingError-module__message__7jJ2T{font-size:1.2rem}.Overlay-module__root__qqUZs{position:absolute;inset:0;z-index:1;pointer-events:none}.Overlay-module__content__5FwWj{display:contents;pointer-events:auto}.SessionEmbed-module__root__Y9AHn{position:relative;width:100%;height:100%}.ConnectDevice-module__root__JnmG1{display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;height:100%;width:100%;background:#0e0c26;color:#fff}.ConnectDevice-module__statusMessage__JWNqk{font-size:1.2rem}.focus-module__focusRing__rvgPB:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-width, 3px) var(--focus-ring-color, rgba(4, 13, 60, .16))}.Tabs-module__root__vrPV-{--tab-text-color: #6f7780;--tab-active-color: #040d3c;--tab-border-color: #d7dce2;width:100%;display:flex;flex-direction:column;gap:10px;min-height:0;flex:1 1}.Tabs-module__header__ZVkH2{display:flex;align-items:center;border-bottom:1px solid var(--tab-border-color);gap:12px}.Tabs-module__tabList__thjbJ{display:flex;margin:0}.Tabs-module__tab__HyAQH{position:relative;margin-bottom:-1px;padding:10px;border:none;background:transparent;color:var(--tab-text-color);font-size:14px;font-weight:600;border-bottom:2px solid transparent;cursor:pointer;transition:color .3s,border .3s}.Tabs-module__tabHover__yC8x3{color:var(--tab-active-color)}.Tabs-module__tabActive__4FIE-{color:var(--tab-active-color);border-bottom:2px solid var(--tab-active-color)}.Tabs-module__tabPanels__xvxyl{overflow-y:auto;flex:1 1;min-height:0;width:100%}.Tabs-module__panelItem__jS1PJ{position:relative}.Tabs-module__panelItem__jS1PJ+.Tabs-module__panelItem__jS1PJ:before{content:"";position:absolute;top:0;left:6px;right:6px;border-top:1px solid #E1E1E4}.Tabs-module__refresh__MV7Wh{margin-inline-start:auto}.SessionAction-module__recorded__wCyhA{display:flex;gap:4px;align-items:center}.SessionAction-module__recordedIcon__clzY-{height:14px;width:14px}.CodeEntry-module__root__XlJve{display:flex;flex-direction:column;gap:4px}.CodeEntry-module__supportLabel__4nBLA{display:none}@media screen and (min-width:300px){.CodeEntry-module__supportLabel__4nBLA{display:inline}}
@@ -1,18 +1,71 @@
1
1
  import { ComponentPropsWithoutRef } from 'react';
2
2
  import { CSSProperties } from 'react';
3
+ import { default as default_2 } from 'cobrowse-agent-sdk';
3
4
  import { Device as Device_2 } from 'cobrowse-agent-sdk';
4
5
  import { DeviceInfo as DeviceInfo_2 } from 'cobrowse-agent-sdk';
5
6
  import { ElementType } from 'react';
6
7
  import { ForwardedRef } from 'react';
7
8
  import { i18n as i18n_2 } from 'i18next';
9
+ import { InitOptions } from 'i18next';
8
10
  import { JSX } from 'react/jsx-runtime';
9
11
  import { ReactNode } from 'react';
12
+ import { RemoteContext } from 'cobrowse-agent-sdk';
10
13
  import { Session as Session_2 } from 'cobrowse-agent-sdk';
11
14
  import { SVGProps } from 'react';
12
15
 
16
+ declare interface BaseButtonProps {
17
+ className?: string;
18
+ }
19
+
13
20
  declare interface BaseSessionProps<TSession extends SessionData = SessionData> {
14
21
  session: TSession;
15
22
  className?: string;
23
+ joinSessionButtonClassName?: string;
24
+ children?: ReactNode;
25
+ }
26
+
27
+ export declare const bindI18n: (consumerI18n: {
28
+ language: string;
29
+ resolvedLanguage?: string | undefined;
30
+ on: {
31
+ (event: "initialized", callback: (options: InitOptions) => void): void;
32
+ (event: "loaded", callback: (loaded: {
33
+ [language: string]: {
34
+ [namespace: string]: boolean;
35
+ };
36
+ }) => void): void;
37
+ (event: "failedLoading", callback: (lng: string, ns: string, msg: string) => void): void;
38
+ (event: "missingKey", callback: (lngs: readonly string[], namespace: string, key: string, res: string) => void): void;
39
+ (event: "added" | "removed", callback: (lng: string, ns: string) => void): void;
40
+ (event: "languageChanged", callback: (lng: string) => void): void;
41
+ (event: string, listener: (...args: any[]) => void): void;
42
+ };
43
+ off: (event: string, listener?: (...args: any[]) => void) => void;
44
+ }) => () => void;
45
+
46
+ export declare const BlockingError: ({ heading, message, children }: BlockingErrorProps) => JSX.Element;
47
+
48
+ export declare interface BlockingErrorProps {
49
+ heading?: string;
50
+ message?: string;
51
+ children?: ReactNode;
52
+ }
53
+
54
+ export declare const Button: <TElement extends ElementType = "button">({ as, className, ...props }: ButtonProps<TElement>) => JSX.Element;
55
+
56
+ export declare type ButtonProps<TElement extends ElementType = typeof DEFAULT_TAG> = BaseButtonProps & PropsOf<TElement> & {
57
+ as?: TElement;
58
+ };
59
+
60
+ export declare const CancelButton: ({ type, className, children, ...props }: CancelButtonProps) => JSX.Element;
61
+
62
+ export declare interface CancelButtonProps extends ComponentPropsWithoutRef<'button'> {
63
+ }
64
+
65
+ export declare const CobrowseProvider: ({ cobrowse, children }: CobrowseProviderProps) => JSX.Element;
66
+
67
+ export declare interface CobrowseProviderProps {
68
+ cobrowse: default_2;
16
69
  children?: ReactNode;
17
70
  }
18
71
 
@@ -33,7 +86,39 @@ export declare interface CodeEntryProps {
33
86
  children?: ReactNode;
34
87
  }
35
88
 
36
- declare const DEFAULT_TAG: "div";
89
+ export declare const ConnectDevice: ((props: ConnectDeviceProps) => ReactNode) & {
90
+ StatusMessage: (props: ConnectDeviceStatusMessageProps) => ReactNode;
91
+ Loader: (props: ConnectDeviceLoaderProps) => ReactNode;
92
+ CancelButton: (props: CancelButtonProps) => ReactNode;
93
+ };
94
+
95
+ declare interface ConnectDeviceLoaderProps {
96
+ attempt: number;
97
+ maxPushAttempts?: number;
98
+ }
99
+
100
+ export declare interface ConnectDeviceProps {
101
+ deviceId: string;
102
+ onConnectAttempt?: (attempt: number) => void;
103
+ onConnected?: (session: Session_2) => void;
104
+ onCancelled?: (session: Session_2) => void;
105
+ onEnded?: (session: Session_2) => void;
106
+ onError?: (error: unknown) => void;
107
+ maxPushAttempts?: number;
108
+ pushRetryMs?: number;
109
+ className?: string;
110
+ children: (attempt: number, cancel: () => void) => ReactNode;
111
+ }
112
+
113
+ declare interface ConnectDeviceStatusMessageProps {
114
+ attempt: number;
115
+ maxPushAttempts?: number;
116
+ className?: string;
117
+ }
118
+
119
+ declare const DEFAULT_TAG: "button";
120
+
121
+ declare const DEFAULT_TAG_2: "div";
37
122
 
38
123
  export declare const Device: <T extends DeviceData = DeviceData>({ style, className, device, children }: DeviceProps<T>) => JSX.Element;
39
124
 
@@ -57,35 +142,76 @@ export declare interface ExternalLinkProps {
57
142
  children?: ReactNode;
58
143
  }
59
144
 
145
+ export declare const Frame: ({ src, onError, title, width, height, style, children, ...props }: FrameProps) => JSX.Element;
146
+
147
+ export declare interface FrameProps extends IframeProps {
148
+ src: string;
149
+ children?: ReactNode;
150
+ onError?: (error: unknown) => void;
151
+ }
152
+
60
153
  export declare const i18n: i18n_2;
61
154
 
155
+ declare type IframeProps = Omit<ComponentPropsWithoutRef<'iframe'>, 'frameBorder' | 'onError' | 'src'>;
156
+
62
157
  export declare const Loader: ({ children }: LoaderProps) => JSX.Element;
63
158
 
64
159
  export declare interface LoaderProps {
65
160
  children?: ReactNode;
66
161
  }
67
162
 
68
- export declare const PlatformIcon: ({ platform, className, ...props }: PlatformIconProps) => JSX.Element;
163
+ export declare const PlatformIcon: ({ device, className, ...props }: PlatformIconProps) => JSX.Element;
69
164
 
70
165
  declare interface PlatformIconProps extends SVGProps<SVGSVGElement> {
71
- platform: DeviceInfo_2['platform'];
166
+ device: DeviceInfo;
72
167
  className?: string;
73
168
  }
74
169
 
75
170
  declare type PropsOf<T extends ElementType> = ComponentPropsWithoutRef<T>;
76
171
 
172
+ declare type PropsOf_2<T extends ElementType> = ComponentPropsWithoutRef<T>;
173
+
77
174
  export declare const RefreshButton: ({ className, children, ...props }: RefreshButtonProps) => JSX.Element;
78
175
 
79
176
  export declare interface RefreshButtonProps extends ComponentPropsWithoutRef<'button'> {
80
177
  }
81
178
 
82
- export declare const Session: <TSession extends SessionData = SessionData, TElement extends ElementType = "div">({ as, session, onClick, className, children, ...props }: SessionProps<TSession, TElement>) => JSX.Element;
179
+ export declare const Session: <TSession extends SessionData = SessionData, TElement extends ElementType = "div">({ as, session, onClick, className, joinSessionButtonClassName, children, ...props }: SessionProps<TSession, TElement>) => JSX.Element;
83
180
 
84
- export declare type SessionData = Pick<Session_2, 'id' | 'state' | 'recorded' | 'activated' | 'ended'> & {
181
+ export declare type SessionData = Pick<Session_2, 'id' | 'state' | 'recorded' | 'activated' | 'ended' | 'getRecording' | 'recording'> & {
85
182
  device: DeviceInfo;
86
183
  };
87
184
 
88
- export declare type SessionProps<TSession extends SessionData = SessionData, TElement extends ElementType = typeof DEFAULT_TAG> = BaseSessionProps<TSession> & Omit<PropsOf<TElement>, 'onClick'> & {
185
+ export declare const SessionEmbed: (({ id, endAction, popout, agentTools, deviceControls, sessionDetails, messages, onError, onLoaded, onUpdated, onActivated, onEnded, className, children, ...props }: SessionEmbedProps) => JSX.Element) & {
186
+ Overlay: ({ state, children }: SessionEmbedOverlayProps) => JSX.Element | null;
187
+ };
188
+
189
+ declare type SessionEmbedFrameProps = Omit<FrameProps, 'src' | 'onLoad' | 'onEnded' | 'onError'>;
190
+
191
+ declare interface SessionEmbedOverlayProps {
192
+ state: SessionEmbedOverlayState;
193
+ children: ReactNode;
194
+ }
195
+
196
+ declare type SessionEmbedOverlayState = 'loading' | Session_2['state'];
197
+
198
+ export declare interface SessionEmbedProps extends SessionEmbedFrameProps {
199
+ id: string;
200
+ endAction?: 'dashboard' | 'none' | 'code';
201
+ popout?: 'none';
202
+ agentTools?: 'none';
203
+ deviceControls?: 'none';
204
+ sessionDetails?: 'none';
205
+ messages?: 'none';
206
+ onLoaded?: (session: Session_2) => void;
207
+ onUpdated?: (session: Session_2) => void;
208
+ onActivated?: (session: Session_2) => void;
209
+ onEnded?: (session: Session_2) => void;
210
+ onError?: FrameProps['onError'];
211
+ children?: ReactNode;
212
+ }
213
+
214
+ export declare type SessionProps<TSession extends SessionData = SessionData, TElement extends ElementType = typeof DEFAULT_TAG_2> = BaseSessionProps<TSession> & Omit<PropsOf_2<TElement>, 'onClick'> & {
89
215
  as?: TElement;
90
216
  onClick?: (session: TSession) => void;
91
217
  };
@@ -98,6 +224,12 @@ export declare interface SmartConnectButtonProps<T extends DeviceData = DeviceDa
98
224
  children?: ReactNode;
99
225
  }
100
226
 
227
+ export declare const useCobrowse: () => default_2;
228
+
229
+ export declare const useRemoteContext: typeof useRemoteContext_2;
230
+
231
+ declare function useRemoteContext_2(target?: HTMLIFrameElement | null): RemoteContext | null;
232
+
101
233
  export declare const UserIcon: ({ user, className }: UserIconProps) => JSX.Element | null;
102
234
 
103
235
  declare interface UserIconProps {
@@ -111,4 +243,6 @@ declare interface UserIconUser {
111
243
  colour?: string;
112
244
  }
113
245
 
246
+ export declare const useSession: (source: RemoteContext | Session_2 | null) => Session_2 | null;
247
+
114
248
  export { }