@touchcastllc/napster-companion-api-dev 2.0.0-alpha.0 → 2.0.0-alpha.10
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 +29 -0
- package/lib/components/Avatar/controlsAutoHide.d.ts +26 -0
- package/lib/components/Avatar/readyGrow.d.ts +16 -0
- package/lib/components/MicPermission/index.d.ts +7 -0
- package/lib/components/controls/createControlButton.d.ts +9 -0
- package/lib/constants/events.d.ts +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +10 -1
- package/lib/index.esm.js +1 -1
- package/lib/index.js +1 -1
- package/lib/index.standalone.js +1 -1
- package/lib/services/micGate.d.ts +13 -3
- package/lib/services/micRecovery.d.ts +33 -0
- package/lib/services/microphoneManager.d.ts +13 -0
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/selectors.d.ts +3 -0
- package/lib/stores/slices/avatarSlice.d.ts +4 -1
- package/lib/types/index.d.ts +29 -4
- package/lib/utils/canHover.d.ts +7 -0
- package/lib/utils/classnames.d.ts +2 -0
- package/lib/utils/containerSizeWatcher.d.ts +53 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -185,6 +185,35 @@ idle so the next session is one click away.
|
|
|
185
185
|
> inside the persisted frame is lost. The SDK warns when both flags are on. Use one
|
|
186
186
|
> or the other until this is resolved.
|
|
187
187
|
|
|
188
|
+
### Inline layout: minimum container size
|
|
189
|
+
|
|
190
|
+
With `layout: { type: "inline", mountContainer }` the avatar fills the container you
|
|
191
|
+
give it, so you decide how much room it gets. Below the minimum the controls clip, so
|
|
192
|
+
give the container's **content area** (its size without its own border and padding) at
|
|
193
|
+
least:
|
|
194
|
+
|
|
195
|
+
| What has to fit | Minimum |
|
|
196
|
+
| ---------------------------------------------------------- | ---------- |
|
|
197
|
+
| Control bar, 4 buttons (volume, mic, screen share, end) | 176px wide |
|
|
198
|
+
| Control bar, 3 buttons (screen sharing off or unsupported) | 132px wide |
|
|
199
|
+
| Control bar height, `rectangle` and `silhouette` | 80px tall |
|
|
200
|
+
| Control bar height, `round` | 64px tall |
|
|
201
|
+
| Start card (`button.enabled`), default label length | 150px wide |
|
|
202
|
+
|
|
203
|
+
- Each button needs 44px of width: `44 × buttons`.
|
|
204
|
+
- The numbers are the same for all three `style.view` shapes. The height of the avatar
|
|
205
|
+
itself follows the container, so no height beyond the control bar's is needed.
|
|
206
|
+
- A longer `button.label` or `button.description` makes the start card need more width.
|
|
207
|
+
- These sit well below 320px, so the widget keeps working in a 320px-wide page and at
|
|
208
|
+
400% zoom (WCAG 1.4.10 Reflow) as long as the container is not narrower than the table.
|
|
209
|
+
- The fixed layout sizes itself (240px wide) and needs nothing from you.
|
|
210
|
+
|
|
211
|
+
If the widget has less room than it needs, the SDK writes a warning to the console —
|
|
212
|
+
even without `debug: true` — that says how much is missing, for example *"The widget
|
|
213
|
+
has only 175px of width, but the controls need at least 176px, so the buttons are being
|
|
214
|
+
clipped"*. It warns once each time the problem appears and again if it comes back after
|
|
215
|
+
being fixed.
|
|
216
|
+
|
|
188
217
|
For framework-specific setup, version pinning and the first working session, see
|
|
189
218
|
**[developers.napster.com/docs/sdks/web-sdk/installation](https://developers.napster.com/docs/sdks/web-sdk/installation)**.
|
|
190
219
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-hide for the control bar: it fades out a few seconds after the pointer
|
|
3
|
+
* leaves and returns when the pointer comes back.
|
|
4
|
+
*
|
|
5
|
+
* Keyboard focus counts as presence too (CA-841, WCAG 2.1.1 / 2.4.7). The bar
|
|
6
|
+
* is only faded (opacity), not removed, so its buttons stay in the tab order;
|
|
7
|
+
* without this a keyboard user tabbed onto buttons they could not see, and
|
|
8
|
+
* nothing but a mouse movement ever brought the bar back.
|
|
9
|
+
*/
|
|
10
|
+
export interface ControlsAutoHide {
|
|
11
|
+
isVisible(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Start the countdown to hiding the bar. When the countdown ends the bar
|
|
14
|
+
* stays up if a control inside the widget still has focus; it is hidden
|
|
15
|
+
* later, after focus leaves.
|
|
16
|
+
*/
|
|
17
|
+
scheduleHide(): void;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
export interface ControlsAutoHideOptions {
|
|
21
|
+
/** Called whenever the bar becomes visible (`true`) or hidden (`false`). */
|
|
22
|
+
onChange: (visible: boolean) => void;
|
|
23
|
+
/** How long after the pointer or focus leaves before hiding. Default 5000. */
|
|
24
|
+
delayMs?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function createControlsAutoHide(root: HTMLElement, { onChange, delayMs }: ControlsAutoHideOptions): ControlsAutoHide;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ReadyGrowStart {
|
|
2
|
+
/** Uniform scale that shrinks the box's shorter side to the bubble. */
|
|
3
|
+
scale: number;
|
|
4
|
+
/** Clip, in the box's own unscaled pixels, down to a centred circle. */
|
|
5
|
+
insetX: number;
|
|
6
|
+
insetY: number;
|
|
7
|
+
radius: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* First frame of the ready grow-in for a `width` x `height` box: the box
|
|
11
|
+
* scaled down and clipped to a circle, so it lands exactly on the loading
|
|
12
|
+
* bubble. The animation then only moves `transform` and `clip-path` — the
|
|
13
|
+
* box itself never changes size, so nothing is laid out per frame (CA-1122).
|
|
14
|
+
* Null when the box has no size to measure (hidden, or no layout engine).
|
|
15
|
+
*/
|
|
16
|
+
export declare function readyGrowStart(width: number, height: number): ReadyGrowStart | null;
|
|
@@ -40,6 +40,13 @@ export interface MicPermissionOptions {
|
|
|
40
40
|
* the way the avatar's own wrap does).
|
|
41
41
|
*/
|
|
42
42
|
view: string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Renders a close control in the card's corner and reports a click on it.
|
|
45
|
+
* Only for the mid-session card (CA-1076, services/micRecovery.ts), which
|
|
46
|
+
* sits over a live session the user can go back to. The session-start card
|
|
47
|
+
* (micGate.ts) omits it: with no microphone there is no session behind it.
|
|
48
|
+
*/
|
|
49
|
+
onClose?: () => void;
|
|
43
50
|
}
|
|
44
51
|
export type MicPermissionController = BaseController<MicPermissionOptions> & {
|
|
45
52
|
getElement(): HTMLElement;
|
|
@@ -11,3 +11,12 @@
|
|
|
11
11
|
* `:hover` or `:focus-visible`.
|
|
12
12
|
*/
|
|
13
13
|
export declare function createControlButton(extraClass?: string): HTMLButtonElement;
|
|
14
|
+
/**
|
|
15
|
+
* Puts a control's icon in its button, replacing whatever was there.
|
|
16
|
+
*
|
|
17
|
+
* The icon is decorative: the button's own `aria-label` is its name. Without
|
|
18
|
+
* `aria-hidden` assistive technology may announce the unlabelled graphic as
|
|
19
|
+
* well, and `focusable="false"` keeps legacy engines from adding the SVG to
|
|
20
|
+
* the tab order.
|
|
21
|
+
*/
|
|
22
|
+
export declare function setControlIcon(btn: HTMLElement, icon: SVGElement): void;
|
package/lib/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.np_companion-live-container,.np_companion-preview-container{height:100%;margin:0;padding:0;position:absolute;transition:opacity .3s ease-in-out;width:100%}.np_companion-preview-container{opacity:1;z-index:2}.np_companion-preview-container.np_companion-fade-out{opacity:0;pointer-events:none;transition:opacity .5s ease-out}.np_companion-live-container{opacity:0;z-index:1}.np_companion-live-container.np_companion-fade-in{opacity:1;z-index:3}:root{--base-border-radius:10px;--base-gap:20px;--np-ready-grow-duration:150ms}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}::-webkit-input-placeholder{color:hsla(0,0%,100%,.4)}::-moz-placeholder{color:hsla(0,0%,100%,.4)}:-ms-input-placeholder{color:hsla(0,0%,100%,.4)}:-moz-placeholder{color:hsla(0,0%,100%,.4)}a,input{outline:none}.np_companion-hide{display:none!important}.np_companion-align-middle{align-items:center;display:flex;justify-content:center}.np_companion-align-between{align-items:center;display:flex;justify-content:space-between}.np_companion-align-end{align-items:center;display:flex;justify-content:flex-end}.np_companion-align-start{align-items:flex-start;display:flex;justify-content:flex-start}.np_companion__d-none{display:none!important}#np_companion-sdk-root.np_companion-container-fixed{aspect-ratio:4/5;position:fixed;width:240px;z-index:9999}#np_companion-sdk-root.np_companion-container-fixed.np_companion-view-round{aspect-ratio:1/1}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-right{bottom:16px;right:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-left{bottom:16px;left:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-center{bottom:16px;left:50%;transform:translateX(-50%)}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-right{right:16px;top:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-left{left:16px;top:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-center{left:50%;top:16px;transform:translateX(-50%)}#np_companion-sdk-root.np_companion-container-fixed.np_companion-center{left:50%;top:50%;transform:translate(-50%,-50%)}#np_companion-sdk-root.np_companion-container-inline{aspect-ratio:4/5;height:100%;position:relative;width:100%}#np_companion-sdk-root.np_companion-container-inline.np_companion-view-round{aspect-ratio:1/1}#np_companion-avatar-container,.np_companion-avatar{height:100%;position:relative;width:100%}#np_companion-avatar-container{background:transparent;border-radius:var(--base-border-radius);overflow:hidden}#np_companion-avatar-container:not(.np_companion-view-silhouette){box-shadow:0 0 #0000,0 0 #0000,0 0 #0000,0 0 #0000,0 10px 15px -3px color-mix(in oklab,#00000080 100%,transparent),0 4px 6px -4px color-mix(in oklab,#00000080 100%,transparent)}.np_companion-avatar.np_companion-bg-transparent #np_companion-avatar-container.np_companion-view-silhouette{filter:drop-shadow(0 10px 15px rgba(0,0,0,.5)) drop-shadow(0 4px 6px rgba(0,0,0,.5))}#np_companion-avatar-container.np_companion-mic-muted-shape:not(.np_companion-view-silhouette){outline:4px solid #ff0037;outline-offset:0}.np_companion-avatar-wrap{inset:0;position:absolute}.np_companion-avatar-wrap.np_companion-view-round{aspect-ratio:1/1;height:auto}#np_companion-avatar-container.np_companion-view-rectangle.np_companion-status-ready-video:before{backdrop-filter:blur(11.059px);border-radius:0 0 32px 32px;content:"";height:180px;inset:auto 0 0 0;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 65%);mask-image:linear-gradient(180deg,transparent 0,#000 65%);opacity:1;pointer-events:none;position:absolute;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:15}#np_companion-avatar-container.np_companion-view-rectangle.np_companion-status-ready-video:after{background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.5) 62.109%);border-radius:0 0 32px 32px;content:"";height:116px;inset:auto 0 0 0;opacity:1;pointer-events:none;position:absolute;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:15}.np_companion-avatar:has(.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse) #np_companion-avatar-container.np_companion-view-rectangle:after,.np_companion-avatar:has(.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse) #np_companion-avatar-container.np_companion-view-rectangle:before{opacity:0}#np_companion-avatar-container.np_companion-view-round{aspect-ratio:1/1;border-radius:50%;height:auto}.np_companion-avatar-video{border-radius:inherit;height:100%;inset:0;object-fit:cover;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .3s ease-in-out;width:100%;z-index:10}@keyframes np-ready-grow-in{0%{border-radius:50%;height:var(--np-ready-grow-size,135px);width:var(--np-ready-grow-size,135px)}to{border-radius:var(--np-ready-grow-end-radius,50%);height:100%;width:100%}}#np_companion-avatar-container.np_companion-view-rectangle,#np_companion-avatar-container.np_companion-view-silhouette{--np-ready-grow-end-radius:32px}.np_companion-avatar-canvas.np_companion-ready-growing,.np_companion-avatar-video.np_companion-ready-growing{animation:np-ready-grow-in var(--np-ready-grow-duration,.45s) ease-out forwards;margin:auto;z-index:13}.np_companion-avatar-video.no-opacity{opacity:0}.np_companion-avatar-canvas{background-image:var(--np-placeholder-bg-image);background-position:50%;background-size:cover;border-radius:inherit;height:100%;inset:0;object-fit:cover;overflow:hidden;pointer-events:none;position:absolute;width:100%;z-index:1}#np_companion-avatar-container.np_companion-status-entry .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-loading .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-canvas{background-image:none}.np_companion-avatar:has(#np_companion-avatar-container.np_companion-view-round):after{display:none}.np_companion-disclaimer-text{-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;color:#fff;font-size:10px;line-height:12px;margin:auto auto 16px;max-width:940px;opacity:.7;overflow:hidden;padding:0 16px;text-align:center;z-index:12}.np_companion-disclaimer-text a{color:#fff}.np_companion-disclaimer-text a:hover{color:#fff;text-decoration:underline}.np_companion-disclaimer-text a:focus,.np_companion-disclaimer-text a:visited{color:#fff}.np_companion-action-btn-container-wrapper{pointer-events:auto;width:100%}.np_companion-avatar-control-wrap{bottom:16px;left:50%;max-width:calc(100% - 8px);opacity:1;position:absolute;transform:translateX(-50%);transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:99}.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse{opacity:0}.np_companion-avatar-control-wrap.np_companion-avatar-control-view-round{bottom:0}.np_companion-avatar-control-container{background-color:#111;border-radius:32px;box-shadow:0 4px 4px 0 rgba(0,0,0,.25),2px 2px 8px 0 rgba(0,0,0,.12);display:flow-root;position:relative}.np_companion-avatar-control-container.np_companion-avatar-control-view-rectangle{backdrop-filter:none;background-color:transparent;box-shadow:none}.np_companion-avatar:not(.np_companion-bg-transparent) .np_companion-loader-spinner:not(.np_companion-view-silhouette){backdrop-filter:blur(19px);backdrop-filter:none!important;background-color:color-mix(in oklab,hsla(0,0%,87%,.6) 100%,transparent)!important;background-color:transparent!important;filter:none!important;height:100%;width:100%}.np_companion-loader-spinner .loader-container{display:none;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.np_companion-loader-spinner .loader-container .loader{--_m:conic-gradient(#0000 10%,#000),linear-gradient(#000 0 0) content-box;animation:l3 1s linear infinite;aspect-ratio:1;background:#585858;border-radius:50%;-webkit-mask:var(--_m);mask:var(--_m);-webkit-mask-composite:source-out;mask-composite:subtract;padding:4px;width:24px}@keyframes l3{to{transform:rotate(1turn)}}.np_companion-loader-spinner.np_companion-view-round .loader-container .loader{padding:4px;width:212px}#np_companion-avatar-container.np_companion-status-entry .np_companion-entry-point{display:flex}#np_companion-avatar-container .np_companion-loading-photo-bubble{display:none;inset:0;margin:auto;position:absolute;z-index:20}#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble{display:block}#np_companion-avatar-container .np_companion-loading-photo-bubble{height:135px;width:135px}#np_companion-avatar-container .np_companion-loading-photo-bubble .np_companion-photo-bubble-inner{border:3px solid var(--np-accent-color,#be369d);border-radius:100px;inset:6.15px}#np_companion-avatar-container.np_companion-status-loading:not(.np_companion-view-round),#np_companion-avatar-container.np_companion-status-permission-blocked:not(.np_companion-view-round),#np_companion-avatar-container.np_companion-status-permission-pending:not(.np_companion-view-round){border-radius:32px}#np_companion-avatar-container.np_companion-status-entry,#np_companion-avatar-container.np_companion-status-loading,#np_companion-avatar-container.np_companion-status-permission-blocked,#np_companion-avatar-container.np_companion-status-permission-pending{box-shadow:none!important}#np_companion-avatar-container.np_companion-status-entry,#np_companion-avatar-container.np_companion-status-permission-pending{overflow:visible}#np_companion-avatar-container .np_companion-placeholder-bg{border-radius:inherit;display:none;inset:0;overflow:hidden;position:absolute;z-index:11}#np_companion-avatar-container .np_companion-placeholder-bg:before{background-image:linear-gradient(var(--np-placeholder-bg-overlay,hsla(0,0%,7%,.7)),var(--np-placeholder-bg-overlay,hsla(0,0%,7%,.7))),var(--np-placeholder-bg-image);background-position:50%;background-size:cover;content:"";position:absolute}#np_companion-avatar-container.np_companion-view-rectangle .np_companion-placeholder-bg:before,#np_companion-avatar-container.np_companion-view-round .np_companion-placeholder-bg:before,#np_companion-avatar-container.np_companion-view-silhouette .np_companion-placeholder-bg:before{--np-placeholder-bg-overlay:hsla(0,0%,7%,.2);filter:blur(12px);inset:-35px}#np_companion-avatar-container.np_companion-status-loading .np_companion-placeholder-bg{display:block}#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-video,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-video{display:none}#np_companion-avatar-container.np_companion-placeholder-lingering .np_companion-placeholder-bg{display:block}@keyframes np-placeholder-fade-out{0%{opacity:1}to{opacity:0}}#np_companion-avatar-container.np_companion-view-silhouette.np_companion-placeholder-lingering .np_companion-placeholder-bg{animation:np-placeholder-fade-out var(--np-ready-grow-duration,.45s) ease-out forwards}@keyframes np-loading-pulse{0%,to{transform:scale(1)}50%{transform:scale(.92)}}#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-loading-photo-bubble{animation:np-loading-pulse 1.8s ease-in-out infinite;transform-origin:center;will-change:transform}@media (prefers-reduced-motion:reduce){#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-loading-photo-bubble{animation:none}}:root{--np-ctl-btn-size:36px}.np_companion-controls-container{align-items:center;background:hsla(0,0%,100%,.3);border:.5px solid #fff;border-radius:12px;bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,.267),0 2px 5px rgba(0,0,0,.267),0 3px 8px rgba(0,0,0,.267);display:flex;gap:8px;left:50%;max-width:360px;pointer-events:auto;position:absolute;transform:translateX(-50%);transform-origin:bottom center;transition:width .3s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:auto;z-index:99}.np_companion-controls-container.collapsed{gap:0}.np_companion-time-running{color:#fff}.np_companion-controls-time-action-btn-container{align-items:center;background:hsla(0,0%,100%,.1);border-radius:8px;display:flex;filter:grayscale(1);flex-shrink:0;gap:8px;height:32px;padding-left:8px;padding-right:8px;transition:filter .3s ease}.np_companion-controls-mic-control,.np_companion-controls-stop-control{cursor:pointer;display:flex;margin:0 5px;overflow:hidden;transition:opacity .3s ease-in-out,width .3s ease-in-out;width:47px}.np_companion-controls-mic-control.visible,.np_companion-controls-stop-control.visible{opacity:1}.np_companion-controls-mic-control.visible{width:1em}.np_companion-controls-stop-control.visible{width:1.5em}.np_companion-controls-mic-control.hidden,.np_companion-controls-stop-control.hidden{margin:0;opacity:0;padding:0;pointer-events:none;width:0}.np_companion-controls-mic-control:hover svg path{fill:red}.np_companion-controls-stop-control{display:flex;margin:0 5px 0 0}.np_companion-controls-stop-control:hover svg .stop-circle{fill:red}.np_companion-controls-stop-control:hover svg .stop-square{fill:#fff}.np_companion-mic-dropdown{background:#2b2c32;border-radius:4px;border-radius:6px;bottom:35px;box-shadow:0 10px 15px -3px rgba(0,0,0,.2),0 4px 6px -4px rgba(0,0,0,.2),0 0 0 1px #46464d;color:#fff;font-size:14px;list-style-type:none;margin:0;max-height:200px;min-width:300px;overflow-y:auto;overflow:auto;padding:5px;pointer-events:auto;position:absolute;width:auto;z-index:1000}.np_companion-mic-dropdown li{cursor:pointer;padding:8px 12px}.np_companion-mic-dropdown li:hover{background-color:#000}.np_companion-action-btn-container-container{background:transparent;border-radius:80px;gap:8px;padding:12px 16px;transition:all .3s ease-in-out}.np_companion-action-btn-container-container.np_companion_disclaimer-disabled{padding-bottom:16px}.np_companion-action-btn-container-container .np_companion-chat-question-bar-container{border-radius:16px;gap:8px}.np_companion-dark-grey-bg{background:linear-gradient(0deg,#5e5e5e14 0 100%),#ffffff0f}.np_companion-grey-bg{background:linear-gradient(0deg,rgba(94,94,94,.07),rgba(94,94,94,.07)),hsla(0,0%,100%,.04)}#np_companion-sdk-root .np_companion-ctl-btn{align-items:center;appearance:none;border:none;border-radius:80px;box-sizing:border-box;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font:inherit;height:var(--np-ctl-btn-size);justify-content:center;padding:0;transition:all .3s ease-in-out;width:var(--np-ctl-btn-size)}#np_companion-sdk-root .np_companion-ctl-btn:not(.np_companion-ctl-btn--mic){backdrop-filter:blur(50.7px);background:hsla(0,0%,7%,.2);border:none;position:relative}#np_companion-sdk-root .np_companion-ctl-btn:not(.np_companion-ctl-btn--mic):before{background:linear-gradient(135deg,hsla(0,0%,100%,.35),rgba(16,0,38,.35) 50%,hsla(0,0%,100%,.35));border-radius:inherit;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;padding:1px;pointer-events:none;position:absolute}#np_companion-sdk-root .np_companion-ctl-btn--mic{background:radial-gradient(10px 10px at 10% 81%,hsla(24,91%,91%,.5) 0,hsla(24,91%,91%,0) 100%),linear-gradient(to bottom,transparent 0,rgba(0,0,0,.5) 100%),var(--np-accent-color,#be369d);box-shadow:inset 0 2.203px 3.305px rgba(255,150,217,.5),inset 0 -2.203px 3.305px rgba(0,0,0,.15)}#np_companion-sdk-root .np_companion-ctl-btn--mic.np_companion-muted{background:#ff0037;box-shadow:none}@media (hover:hover){#np_companion-sdk-root .np_companion-ctl-btn:hover{background:#fff;box-shadow:none;color:#000}}#np_companion-sdk-root .np_companion-ctl-btn svg{height:20px;width:20px}.np_companion-inactive-overlay{align-items:center;bottom:0;display:flex;justify-content:center;left:0;pointer-events:auto;position:absolute;right:0;top:0;z-index:9999}.np_companion-inactive-dialog{backdrop-filter:blur(19px);background:hsla(0,0%,50%,.3);background-blend-mode:luminosity;border-radius:16px;max-width:500px;overflow:hidden;padding:24px 16px;position:relative;text-align:center;width:100%}@supports (-moz-appearance:none){.np_companion-inactive-dialog{background:rgba(32,32,34,.88);background-blend-mode:normal}}.np_companion-inactive-dialog:before{background:linear-gradient(180deg,hsla(0,0%,100%,.4),hsla(0,0%,100%,0),hsla(0,0%,100%,0),hsla(0,0%,100%,.1));border-radius:16px;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;padding:1.473px;pointer-events:none;position:absolute}.np_companion-inactive-message{color:#fff;font-size:16px;line-height:1.5;margin-bottom:24px;margin-top:0}.np_companion-inactive-timer{display:flex;justify-content:center;margin:24px 0;pointer-events:none}.np_companion-timer-circle{align-items:center;display:flex;height:80px;justify-content:center;position:relative;width:80px}.np_companion-timer-circle svg{height:100%;transform:rotate(-90deg);width:100%}.np_companion-timer-circle path{transition:stroke-dasharray .3s ease}.np_companion-timer-number{color:#fff;font-size:24px;font-weight:500;position:absolute}.np_companion-inactive-buttons{display:flex;gap:12px;justify-content:center}.np_companion-inactive-buttons button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:background-color .2s ease}.np_companion-end-button{background:hsla(0,0%,100%,.1);color:#fff}.np_companion-end-button:hover{background:hsla(0,0%,100%,.2)}.np_companion-continue-button{background:#3c19cd;color:#fff}.np_companion-continue-button:hover{background:#2f13a0}.np_companion-entry-point{align-items:center;display:none;inset:0;justify-content:center;position:absolute;z-index:20}.np_companion-entry-point-card-wrap{max-width:100%;min-width:0}.np_companion-entry-point-card{align-items:center;background:#111;border:0;border-radius:25px;color:inherit;cursor:pointer;display:flex;font:inherit;gap:8px;max-width:100%;padding:12px;position:relative;text-align:left}.np_companion-photo-bubble{flex-shrink:0;height:64px;position:relative;width:64px}.np_companion-photo-bubble-inner{background:linear-gradient(180deg,#0c010a,#3f236b);border-radius:50%;inset:4px;overflow:hidden;position:absolute}.np_companion-photo-bubble-inner--fallback{background:var(--np-accent-color,#be369d)}.np_companion-photo-bubble-image{height:100%;inset:0;object-fit:cover;position:absolute;width:100%}.np_companion-entry-point-text{color:#fff;display:flex;flex-direction:column;gap:4px;min-width:0;width:153px}.np_companion-entry-point-heading{font-size:16px;font-weight:700;letter-spacing:-.6px;line-height:1.2;margin:0}.np_companion-entry-point-description{font-size:12px;font-weight:400;letter-spacing:-.48px;line-height:1.3;margin:0;opacity:.5}#np_companion-sdk-root[data-np-state=active] .np_button-trigger,#np_companion-sdk-root[data-np-state=connecting] .np_button-trigger,#np_companion-sdk-root[data-np-state=idle] .np_companion-live-container{display:none}#np_companion-sdk-root[data-np-state=idle].np_companion-container-fixed{aspect-ratio:auto!important;height:auto!important;width:auto!important}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline{aspect-ratio:auto;height:auto}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline.np_companion-button-align-left{justify-content:flex-start}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline.np_companion-button-align-right{justify-content:flex-end}.np_site-frame{backface-visibility:hidden;border:0;height:100vh;height:100dvh;inset:0;position:fixed;transform:translateZ(0);width:100%;z-index:100000000}.np_site-progress{animation:np_site-progress-grow 6s cubic-bezier(.15,.75,.25,1) forwards;background:var(--np-persist-progress-color,#be369d);border-end-end-radius:3px;box-shadow:0 0 10px var(--np-persist-progress-color,#be369d);height:var(--np-persist-progress-height,3px);left:0;pointer-events:none;position:fixed;top:0;width:0;z-index:100000002}@keyframes np_site-progress-grow{0%{width:0}to{width:92%}}.np_site-progress--done{animation:none;opacity:0;transition:width .14s ease-out,opacity .24s ease-out .12s;width:100%}@media (prefers-reduced-motion:reduce){.np_site-progress{animation:none;width:92%}.np_site-progress--done{transition:opacity .14s linear}}#np_companion-sdk-root .np_companion-mic-permission{--np-mic-permission-accent:var(--np-accent-color,#be369d);--np-mic-permission-accent-hover:color-mix(in srgb,var(--np-accent-color,#be369d) 85%,#000);--np-mic-permission-card-bg:hsla(0,0%,4%,.8);--np-mic-permission-card-radius:27px;align-items:flex-end;display:flex;inset:0;justify-content:center;padding:8px;pointer-events:auto;position:absolute;z-index:9999}#np_companion-sdk-root .np_companion-mic-permission-card{backdrop-filter:blur(19px);background:var(--np-mic-permission-card-bg);border-radius:var(--np-mic-permission-card-radius);box-sizing:border-box;max-width:386px;padding:15px;text-align:center;width:100%}#np_companion-sdk-root .np_companion-mic-permission.np_companion-view-round{padding:8px 0}#np_companion-sdk-root .np_companion-mic-permission-pagination{align-items:center;display:flex;gap:4px;justify-content:center;margin-bottom:8px}#np_companion-sdk-root .np_companion-mic-permission-pagination[hidden]{display:none}#np_companion-sdk-root .np_companion-mic-permission-dot{background:hsla(0,0%,100%,.4);border-radius:2px;height:4px;transition:width .2s ease,background .2s ease;width:4px}#np_companion-sdk-root .np_companion-mic-permission-dot--active{background:#fff;width:16px}#np_companion-sdk-root .np_companion-mic-permission-heading{color:#fff;font-family:inherit;font-size:18px;font-style:normal;font-weight:700;letter-spacing:-.18px;line-height:21.6px;margin:0 0 4px;text-transform:none}#np_companion-sdk-root .np_companion-mic-permission-subheading{color:hsla(0,0%,100%,.5);font-family:inherit;font-size:14px;font-style:normal;font-weight:400;letter-spacing:-.28px;line-height:19.6px;margin:0 0 20px;text-transform:none}#np_companion-sdk-root .np_companion-mic-permission-card:has(.np_companion-mic-permission-actions[hidden]) .np_companion-mic-permission-subheading{margin-bottom:0}#np_companion-sdk-root .np_companion-mic-permission-em--semibold{font-weight:600}#np_companion-sdk-root .np_companion-mic-permission-em--bold{font-weight:700}#np_companion-sdk-root .np_companion-mic-permission-actions{align-items:stretch;display:flex;flex-direction:column;gap:8px}#np_companion-sdk-root .np_companion-mic-permission-actions[hidden]{display:none}#np_companion-sdk-root .np_companion-mic-permission-actions button{border:0;color:#fff;cursor:pointer;font-family:inherit;font-style:normal;font-weight:600;text-transform:none;transition:background .2s ease}#np_companion-sdk-root .np_companion-mic-permission-actions button:disabled{cursor:progress;opacity:.6}#np_companion-sdk-root .np_companion-mic-permission-actions button:focus-visible{outline:2px solid #fff;outline-offset:2px}#np_companion-sdk-root .np_companion-mic-permission-primary{background:var(--np-mic-permission-accent);border-radius:999px;font-size:15px;letter-spacing:-.15px;line-height:22px;min-height:48px;padding:7px 15px}#np_companion-sdk-root .np_companion-mic-permission-primary:hover:not(:disabled){background:var(--np-mic-permission-accent-hover)}#np_companion-sdk-root .np_companion-mic-permission-secondary{background:transparent;font-size:14px;letter-spacing:-.14px;line-height:19.6px;min-height:32px;padding:4px}#np_companion-sdk-root .np_companion-mic-permission-secondary:hover:not(:disabled){color:hsla(0,0%,100%,.8)}#np_companion-sdk-root .np_companion-mic-permission-live{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
|
|
1
|
+
#np_companion-sdk-root .np_companion-mic-permission{--np-mic-permission-accent:var(--np-accent-color,#be369d);--np-mic-permission-accent-hover:color-mix(in srgb,var(--np-accent-color,#be369d) 85%,#000);--np-mic-permission-card-bg:hsla(0,0%,4%,.8);--np-mic-permission-card-radius:27px;align-items:flex-end;display:flex;inset:0;justify-content:center;padding:8px;pointer-events:auto;position:absolute;z-index:9999}#np_companion-sdk-root .np_companion-mic-permission-card{backdrop-filter:blur(19px);background:var(--np-mic-permission-card-bg);border-radius:var(--np-mic-permission-card-radius);box-sizing:border-box;max-width:230px;padding:15px;position:relative;text-align:center;width:100%}#np_companion-sdk-root .np_companion-mic-permission-close{background:transparent;border:0;border-radius:50%;box-sizing:border-box;color:#fff;cursor:pointer;font-family:inherit;font-size:18px;font-weight:400;height:24px;line-height:24px;opacity:.7;padding:0;position:absolute;right:8px;text-align:center;top:8px;transition:opacity .2s ease;width:24px}#np_companion-sdk-root .np_companion-mic-permission-close:hover{opacity:1}#np_companion-sdk-root .np_companion-mic-permission-close:focus-visible{opacity:1;outline:2px solid #fff;outline-offset:2px}#np_companion-sdk-root .np_companion-mic-permission.np_companion-view-round{padding:8px 0}#np_companion-sdk-root .np_companion-mic-permission-pagination{align-items:center;display:flex;gap:4px;justify-content:center;margin-bottom:8px}#np_companion-sdk-root .np_companion-mic-permission-pagination[hidden]{display:none}#np_companion-sdk-root .np_companion-mic-permission-dot{background:hsla(0,0%,100%,.4);border-radius:2px;height:4px;transition:width .2s ease,background .2s ease;width:4px}#np_companion-sdk-root .np_companion-mic-permission-dot--active{background:#fff;width:16px}#np_companion-sdk-root .np_companion-mic-permission-heading{color:#fff;font-family:inherit;font-size:18px;font-style:normal;font-weight:700;letter-spacing:-.18px;line-height:21.6px;margin:0 0 4px;text-transform:none}#np_companion-sdk-root .np_companion-mic-permission-subheading{color:hsla(0,0%,100%,.5);font-family:inherit;font-size:14px;font-style:normal;font-weight:400;letter-spacing:-.28px;line-height:19.6px;margin:0 0 20px;text-transform:none}#np_companion-sdk-root .np_companion-mic-permission-card:has(.np_companion-mic-permission-actions[hidden]) .np_companion-mic-permission-subheading{margin-bottom:0}#np_companion-sdk-root .np_companion-mic-permission-em--semibold{font-weight:600}#np_companion-sdk-root .np_companion-mic-permission-em--bold{font-weight:700}#np_companion-sdk-root .np_companion-mic-permission-actions{align-items:stretch;display:flex;flex-direction:column;gap:8px}#np_companion-sdk-root .np_companion-mic-permission-actions[hidden]{display:none}#np_companion-sdk-root .np_companion-mic-permission-actions button{border:0;color:#fff;cursor:pointer;font-family:inherit;font-style:normal;font-weight:600;text-transform:none;transition:background .2s ease}#np_companion-sdk-root .np_companion-mic-permission-actions button:disabled{cursor:progress;opacity:.6}#np_companion-sdk-root .np_companion-mic-permission-actions button:focus-visible{outline:2px solid #fff;outline-offset:2px}#np_companion-sdk-root .np_companion-mic-permission-primary{background:var(--np-mic-permission-accent);border-radius:999px;font-size:15px;letter-spacing:-.15px;line-height:22px;min-height:48px;padding:7px 15px}#np_companion-sdk-root .np_companion-mic-permission-primary:hover:not(:disabled){background:var(--np-mic-permission-accent-hover)}#np_companion-sdk-root .np_companion-mic-permission-secondary{background:transparent;font-size:14px;letter-spacing:-.14px;line-height:19.6px;min-height:32px;padding:4px}#np_companion-sdk-root .np_companion-mic-permission-secondary:hover:not(:disabled){color:hsla(0,0%,100%,.8)}#np_companion-sdk-root .np_companion-mic-permission-live{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.np_companion-live-container,.np_companion-preview-container{height:100%;margin:0;padding:0;position:absolute;transition:opacity .3s ease-in-out;width:100%}.np_companion-preview-container{opacity:1;z-index:2}.np_companion-preview-container.np_companion-fade-out{opacity:0;pointer-events:none;transition:opacity .5s ease-out}.np_companion-live-container{opacity:0;z-index:1}.np_companion-live-container.np_companion-fade-in{opacity:1;z-index:3}:root{--np-base-border-radius:10px;--np-ready-grow-duration:500ms}:where(#np_companion-sdk-root,#np_companion-sdk-root *,#np_companion-sdk-root :before,#np_companion-sdk-root :after){-webkit-box-sizing:border-box;box-sizing:border-box}.np_companion-hide{display:none!important}.np_companion-align-middle{align-items:center;display:flex;justify-content:center}.np_companion-align-between{align-items:center;display:flex;justify-content:space-between}.np_companion-align-end{align-items:center;display:flex;justify-content:flex-end}.np_companion-align-start{align-items:flex-start;display:flex;justify-content:flex-start}.np_companion__d-none{display:none!important}#np_companion-sdk-root.np_companion-container-fixed{aspect-ratio:4/5;position:fixed;width:240px;z-index:9999}#np_companion-sdk-root.np_companion-container-fixed.np_companion-view-round{aspect-ratio:1/1}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-right{bottom:16px;right:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-left{bottom:16px;left:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-bottom-center{bottom:16px;left:50%;transform:translateX(-50%)}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-right{right:16px;top:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-left{left:16px;top:16px}#np_companion-sdk-root.np_companion-container-fixed.np_companion-top-center{left:50%;top:16px;transform:translateX(-50%)}#np_companion-sdk-root.np_companion-container-fixed.np_companion-center{left:50%;top:50%;transform:translate(-50%,-50%)}#np_companion-sdk-root.np_companion-container-inline{aspect-ratio:4/5;height:100%;position:relative;width:100%}#np_companion-sdk-root.np_companion-container-inline.np_companion-view-round{aspect-ratio:1/1}#np_companion-avatar-container,.np_companion-avatar{height:100%;position:relative;width:100%}#np_companion-avatar-container{background:transparent;border-radius:var(--np-base-border-radius);overflow:hidden}#np_companion-avatar-container:not(.np_companion-view-silhouette){box-shadow:0 0 #0000,0 0 #0000,0 0 #0000,0 0 #0000,0 10px 15px -3px color-mix(in oklab,#00000080 100%,transparent),0 4px 6px -4px color-mix(in oklab,#00000080 100%,transparent)}.np_companion-avatar.np_companion-bg-transparent #np_companion-avatar-container.np_companion-view-silhouette{filter:drop-shadow(0 10px 15px rgba(0,0,0,.5)) drop-shadow(0 4px 6px rgba(0,0,0,.5))}#np_companion-avatar-container.np_companion-mic-muted-shape:not(.np_companion-view-silhouette){outline:4px solid #ff0037;outline-offset:0}.np_companion-avatar-wrap{inset:0;position:absolute}.np_companion-avatar-wrap.np_companion-view-round{aspect-ratio:1/1;height:auto}#np_companion-avatar-container.np_companion-view-rectangle.np_companion-status-ready-video:before{backdrop-filter:blur(11.059px);border-radius:0 0 32px 32px;content:"";height:180px;inset:auto 0 0 0;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 65%);mask-image:linear-gradient(180deg,transparent 0,#000 65%);opacity:1;pointer-events:none;position:absolute;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:15}#np_companion-avatar-container.np_companion-view-rectangle.np_companion-status-ready-video:after{background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.5) 62.109%);border-radius:0 0 32px 32px;content:"";height:116px;inset:auto 0 0 0;opacity:1;pointer-events:none;position:absolute;transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:15}.np_companion-avatar:has(.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse) #np_companion-avatar-container.np_companion-view-rectangle:after,.np_companion-avatar:has(.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse) #np_companion-avatar-container.np_companion-view-rectangle:before{opacity:0}#np_companion-avatar-container.np_companion-view-round{aspect-ratio:1/1;border-radius:50%;height:auto}.np_companion-avatar-video{border-radius:inherit;height:100%;inset:0;object-fit:cover;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .3s ease-in-out;width:100%;z-index:10}@keyframes np-ready-grow-in{0%{clip-path:inset(var(--np-ready-grow-inset-y,0) var(--np-ready-grow-inset-x,0) round var(--np-ready-grow-radius,var(--np-ready-grow-end-radius,50%)));transform:scale(var(--np-ready-grow-scale,1))}to{clip-path:inset(0 round var(--np-ready-grow-end-radius,50%));transform:scale(1)}}#np_companion-avatar-container.np_companion-view-rectangle,#np_companion-avatar-container.np_companion-view-silhouette{--np-ready-grow-end-radius:32px}.np_companion-avatar-canvas.np_companion-ready-growing,.np_companion-avatar-video.np_companion-ready-growing{animation:np-ready-grow-in var(--np-ready-grow-duration,.45s) ease-out forwards;z-index:13}.np_companion-avatar-video.no-opacity{opacity:0}.np_companion-avatar-canvas{background-image:var(--np-placeholder-bg-image);background-position:50%;background-size:cover;border-radius:inherit;height:100%;inset:0;object-fit:cover;overflow:hidden;pointer-events:none;position:absolute;width:100%;z-index:1}#np_companion-avatar-container.np_companion-status-entry .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-loading .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-canvas{background-image:none}.np_companion-avatar:has(#np_companion-avatar-container.np_companion-view-round):after{display:none}.np_companion-disclaimer-text{-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;color:#fff;font-size:10px;line-height:12px;margin:auto auto 16px;max-width:940px;opacity:.7;overflow:hidden;padding:0 16px;text-align:center;z-index:12}.np_companion-disclaimer-text a{color:#fff}.np_companion-disclaimer-text a:hover{color:#fff;text-decoration:underline}.np_companion-disclaimer-text a:focus,.np_companion-disclaimer-text a:visited{color:#fff}.np_companion-action-btn-container-wrapper{pointer-events:auto;width:100%}.np_companion-avatar-control-wrap{bottom:16px;left:50%;max-width:calc(100% - 8px);opacity:1;position:absolute;transform:translateX(-50%);transition:opacity .4s cubic-bezier(.4,0,.2,1);z-index:99}.np_companion-avatar-control-wrap.np_companion-action-btn-container-collapse{opacity:0}.np_companion-avatar-control-wrap.np_companion-avatar-control-view-round{bottom:0}.np_companion-avatar-control-container{background-color:#111;border-radius:32px;box-shadow:0 4px 4px 0 rgba(0,0,0,.25),2px 2px 8px 0 rgba(0,0,0,.12);display:flow-root;position:relative}.np_companion-avatar-control-container.np_companion-avatar-control-view-rectangle{backdrop-filter:none;background-color:transparent;box-shadow:none}.np_companion-avatar:not(.np_companion-bg-transparent) .np_companion-loader-spinner:not(.np_companion-view-silhouette){backdrop-filter:blur(19px);backdrop-filter:none!important;background-color:color-mix(in oklab,hsla(0,0%,87%,.6) 100%,transparent)!important;background-color:transparent!important;filter:none!important;height:100%;width:100%}.np_companion-loader-spinner .loader-container{display:none;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.np_companion-loader-spinner .loader-container .loader{--_m:conic-gradient(#0000 10%,#000),linear-gradient(#000 0 0) content-box;animation:l3 1s linear infinite;aspect-ratio:1;background:#585858;border-radius:50%;-webkit-mask:var(--_m);mask:var(--_m);-webkit-mask-composite:source-out;mask-composite:subtract;padding:4px;width:24px}@keyframes l3{to{transform:rotate(1turn)}}.np_companion-loader-spinner.np_companion-view-round .loader-container .loader{padding:4px;width:212px}#np_companion-avatar-container.np_companion-nonbutton-precheck-hidden{display:none}#np_companion-avatar-container.np_companion-status-entry .np_companion-entry-point{display:flex}#np_companion-avatar-container .np_companion-loading-photo-bubble{display:none;inset:0;margin:auto;position:absolute;z-index:20}#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble{display:block}#np_companion-avatar-container .np_companion-loading-photo-bubble{height:135px;width:135px}#np_companion-avatar-container .np_companion-loading-photo-bubble .np_companion-photo-bubble-inner{border:3px solid var(--np-accent-color,#be369d);border-radius:100px;inset:6.15px}#np_companion-avatar-container.np_companion-status-loading:not(.np_companion-view-round),#np_companion-avatar-container.np_companion-status-permission-blocked:not(.np_companion-view-round),#np_companion-avatar-container.np_companion-status-permission-pending:not(.np_companion-view-round){border-radius:32px}#np_companion-avatar-container.np_companion-status-entry,#np_companion-avatar-container.np_companion-status-loading,#np_companion-avatar-container.np_companion-status-permission-blocked,#np_companion-avatar-container.np_companion-status-permission-pending{box-shadow:none!important}#np_companion-avatar-container.np_companion-status-entry,#np_companion-avatar-container.np_companion-status-permission-pending{overflow:visible}#np_companion-avatar-container .np_companion-placeholder-bg{border-radius:inherit;display:none;inset:0;overflow:hidden;position:absolute;z-index:11}#np_companion-avatar-container.np_companion-view-round .np_companion-placeholder-bg{clip-path:circle(50%)}#np_companion-avatar-container.np_companion-view-rectangle .np_companion-placeholder-bg,#np_companion-avatar-container.np_companion-view-silhouette .np_companion-placeholder-bg{clip-path:inset(0 round 32px)}#np_companion-avatar-container .np_companion-placeholder-bg:before{background-image:linear-gradient(var(--np-placeholder-bg-overlay,hsla(0,0%,7%,.7)),var(--np-placeholder-bg-overlay,hsla(0,0%,7%,.7))),var(--np-placeholder-bg-image);background-position:50%;background-size:cover;content:"";position:absolute}#np_companion-avatar-container.np_companion-view-rectangle .np_companion-placeholder-bg:before,#np_companion-avatar-container.np_companion-view-round .np_companion-placeholder-bg:before,#np_companion-avatar-container.np_companion-view-silhouette .np_companion-placeholder-bg:before{--np-placeholder-bg-overlay:hsla(0,0%,7%,.2);filter:blur(12px);inset:-35px}#np_companion-avatar-container.np_companion-status-loading .np_companion-placeholder-bg{display:block}#np_companion-avatar-container.np_companion-loading-indicator-disabled:not(.np_companion-status-ready-video) .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-loading-indicator-disabled:not(.np_companion-status-ready-video) .np_companion-avatar-video,#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-blocked .np_companion-avatar-video,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-canvas,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-avatar-video{display:none}#np_companion-avatar-container.np_companion-loading-indicator-disabled:not(.np_companion-status-ready-video){box-shadow:none!important}#np_companion-avatar-container.np_companion-placeholder-lingering .np_companion-placeholder-bg{display:block}@keyframes np-placeholder-fade-out{0%{opacity:1}to{opacity:0}}#np_companion-avatar-container.np_companion-view-silhouette.np_companion-placeholder-lingering .np_companion-placeholder-bg{animation:np-placeholder-fade-out var(--np-ready-grow-duration,.45s) ease-out forwards}#np_companion-avatar-container.np_companion-recovery-entering .np_companion-placeholder-bg,#np_companion-avatar-container.np_companion-recovery-entering.np_companion-status-permission-blocked .np_companion-loading-photo-bubble,#np_companion-avatar-container.np_companion-recovery-entering.np_companion-status-permission-pending .np_companion-loading-photo-bubble{animation:np-placeholder-fade-out .2s ease-out forwards;display:block}@keyframes np-loading-pulse{0%,to{transform:scale(1)}50%{transform:scale(.92)}}#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-loading-photo-bubble{animation:np-loading-pulse 1.8s ease-in-out infinite;transform-origin:center;will-change:transform}@media (prefers-reduced-motion:reduce){#np_companion-avatar-container.np_companion-status-loading .np_companion-loading-photo-bubble,#np_companion-avatar-container.np_companion-status-permission-pending .np_companion-loading-photo-bubble{animation:none}}:root{--np-ctl-btn-size:36px}.np_companion-action-btn-container-container{background:transparent;border-radius:80px;gap:8px;padding:12px 16px}.np_companion-action-btn-container-container.np_companion_disclaimer-disabled{padding-bottom:16px}.np_companion-action-btn-container-container .np_companion-chat-question-bar-container{border-radius:16px;gap:8px}.np_companion-dark-grey-bg{background:linear-gradient(0deg,#5e5e5e14 0 100%),#ffffff0f}#np_companion-sdk-root .np_companion-ctl-btn{align-items:center;appearance:none;border:none;border-radius:80px;box-sizing:border-box;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font:inherit;height:var(--np-ctl-btn-size);justify-content:center;padding:0;transition:background-color .3s ease-in-out,color .3s ease-in-out,box-shadow .3s ease-in-out;width:var(--np-ctl-btn-size)}#np_companion-sdk-root .np_companion-ctl-btn:not(.np_companion-ctl-btn--mic){backdrop-filter:blur(50.7px);background:hsla(0,0%,7%,.2);border:none;position:relative}#np_companion-sdk-root .np_companion-ctl-btn:not(.np_companion-ctl-btn--mic):before{background:linear-gradient(135deg,hsla(0,0%,100%,.35),rgba(16,0,38,.35) 50%,hsla(0,0%,100%,.35));border-radius:inherit;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;padding:1px;pointer-events:none;position:absolute}#np_companion-sdk-root .np_companion-ctl-btn--mic{background:radial-gradient(10px 10px at 10% 81%,hsla(24,91%,91%,.5) 0,hsla(24,91%,91%,0) 100%),linear-gradient(to bottom,transparent 0,rgba(0,0,0,.5) 100%),var(--np-accent-color,#be369d);box-shadow:inset 0 2.203px 3.305px rgba(255,150,217,.5),inset 0 -2.203px 3.305px rgba(0,0,0,.15)}#np_companion-sdk-root .np_companion-ctl-btn--mic.np_companion-muted{background:#ff0037;box-shadow:none}@media (hover:hover){#np_companion-sdk-root .np_companion-ctl-btn:hover{background:#fff;box-shadow:none;color:#000}}#np_companion-sdk-root .np_companion-ctl-btn--mic.np_companion-mic-unavailable{position:relative}#np_companion-sdk-root .np_companion-ctl-btn--mic.np_companion-mic-unavailable:after{background:#fbbc04;border-radius:50%;color:#202124;content:"!";font-size:10px;font-weight:700;height:14px;line-height:14px;pointer-events:none;position:absolute;right:-3px;text-align:center;top:-3px;width:14px}#np_companion-sdk-root .np_companion-ctl-btn svg{height:20px;width:20px}.np_companion-inactive-overlay{align-items:center;bottom:0;display:flex;justify-content:center;left:0;pointer-events:auto;position:absolute;right:0;top:0;z-index:9999}.np_companion-inactive-dialog{backdrop-filter:blur(19px);background:hsla(0,0%,50%,.3);background-blend-mode:luminosity;border-radius:16px;max-width:500px;overflow:hidden;padding:24px 16px;position:relative;text-align:center;width:100%}@supports (-moz-appearance:none){.np_companion-inactive-dialog{background:rgba(32,32,34,.88);background-blend-mode:normal}}.np_companion-inactive-dialog:before{background:linear-gradient(180deg,hsla(0,0%,100%,.4),hsla(0,0%,100%,0),hsla(0,0%,100%,0),hsla(0,0%,100%,.1));border-radius:16px;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;padding:1.473px;pointer-events:none;position:absolute}.np_companion-inactive-message{color:#fff;font-size:16px;line-height:1.5;margin-bottom:24px;margin-top:0}.np_companion-inactive-timer{display:flex;justify-content:center;margin:24px 0;pointer-events:none}.np_companion-timer-circle{align-items:center;display:flex;height:80px;justify-content:center;position:relative;width:80px}.np_companion-timer-circle svg{height:100%;transform:rotate(-90deg);width:100%}.np_companion-timer-circle path{transition:stroke-dasharray .3s ease}.np_companion-timer-number{color:#fff;font-size:24px;font-weight:500;position:absolute}.np_companion-inactive-buttons{display:flex;gap:12px;justify-content:center}.np_companion-inactive-buttons button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:background-color .2s ease}.np_companion-end-button{background:hsla(0,0%,100%,.1);color:#fff}.np_companion-end-button:hover{background:hsla(0,0%,100%,.2)}.np_companion-continue-button{background:#3c19cd;color:#fff}.np_companion-continue-button:hover{background:#2f13a0}.np_companion-entry-point{align-items:center;display:none;inset:0;justify-content:center;position:absolute;z-index:20}.np_companion-entry-point-card-wrap{max-width:100%;min-width:0}.np_companion-entry-point-card{align-items:center;background:#111;border:0;border-radius:25px;color:inherit;cursor:pointer;display:flex;font:inherit;gap:8px;max-width:100%;padding:12px;position:relative;text-align:left}.np_companion-photo-bubble{flex-shrink:0;height:64px;position:relative;width:64px}.np_companion-photo-bubble-inner{background:linear-gradient(180deg,#0c010a,#3f236b);border-radius:50%;inset:4px;overflow:hidden;position:absolute}.np_companion-photo-bubble-inner--fallback{background:var(--np-accent-color,#be369d)}.np_companion-photo-bubble-image{height:100%;inset:0;object-fit:cover;position:absolute;width:100%}.np_companion-entry-point-text{color:#fff;display:flex;flex-direction:column;gap:4px;min-width:0;width:153px}.np_companion-entry-point-heading{font-size:16px;font-weight:700;letter-spacing:-.6px;line-height:1.2;margin:0}.np_companion-entry-point-description{font-size:12px;font-weight:400;letter-spacing:-.48px;line-height:1.3;margin:0;opacity:.5}#np_companion-sdk-root[data-np-state=active] .np_button-trigger,#np_companion-sdk-root[data-np-state=connecting] .np_button-trigger,#np_companion-sdk-root[data-np-state=idle] .np_companion-live-container{display:none}#np_companion-sdk-root[data-np-state=idle].np_companion-container-fixed{aspect-ratio:auto!important;height:auto!important;width:auto!important}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline{aspect-ratio:auto;height:auto}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline.np_companion-button-align-left{justify-content:flex-start}#np_companion-sdk-root[data-np-state=idle].np_companion-container-inline.np_companion-button-align-right{justify-content:flex-end}.np_site-frame{backface-visibility:hidden;border:0;height:100vh;height:100dvh;inset:0;position:fixed;transform:translateZ(0);width:100%;z-index:100000000}.np_site-progress{animation:np_site-progress-grow 6s cubic-bezier(.15,.75,.25,1) forwards;background:var(--np-persist-progress-color,#be369d);border-end-end-radius:3px;box-shadow:0 0 10px var(--np-persist-progress-color,#be369d);height:var(--np-persist-progress-height,3px);left:0;pointer-events:none;position:fixed;top:0;width:0;z-index:100000002}@keyframes np_site-progress-grow{0%{width:0}to{width:92%}}.np_site-progress--done{animation:none;opacity:0;transition:width .14s ease-out,opacity .24s ease-out .12s;width:100%}@media (prefers-reduced-motion:reduce){.np_site-progress{animation:none;width:92%}.np_site-progress--done{transition:opacity .14s linear}}
|
package/lib/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ declare class NapsterCompanionApiSdkVanilla implements NapsterCompanionApiSDK {
|
|
|
11
11
|
private rootEl;
|
|
12
12
|
private embed;
|
|
13
13
|
private micGate;
|
|
14
|
+
private micRecovery;
|
|
14
15
|
private getTokenFn;
|
|
15
16
|
private sessionEpoch;
|
|
16
17
|
private webrtcController;
|
|
@@ -20,6 +21,7 @@ declare class NapsterCompanionApiSdkVanilla implements NapsterCompanionApiSDK {
|
|
|
20
21
|
private isInitialized;
|
|
21
22
|
private unloadHandler;
|
|
22
23
|
private pipController;
|
|
24
|
+
private containerSizeWatcher;
|
|
23
25
|
private edgeMcpBridge;
|
|
24
26
|
private persistCtl;
|
|
25
27
|
private onSessionFailedHandler;
|
|
@@ -142,7 +144,14 @@ declare class NapsterCompanionApiSdkVanilla implements NapsterCompanionApiSDK {
|
|
|
142
144
|
};
|
|
143
145
|
}): Promise<NapsterCompanionApiController>;
|
|
144
146
|
/**
|
|
145
|
-
* Initialize the SDK and connect immediately
|
|
147
|
+
* Initialize the SDK and connect immediately.
|
|
148
|
+
*
|
|
149
|
+
* The returned promise resolves as soon as the widget has mounted and
|
|
150
|
+
* rendered — before the microphone prompt, before `getToken()`, before any
|
|
151
|
+
* connection exists. Sending a command right after `await init()` can
|
|
152
|
+
* silently drop it if the session isn't actually connected yet. Use
|
|
153
|
+
* `onAvatarReady` (or `onSessionStatusChange`) to know when the session
|
|
154
|
+
* itself is up.
|
|
146
155
|
*
|
|
147
156
|
* `getToken` is called by the SDK itself once the microphone permission has
|
|
148
157
|
* settled, so the connection token is always fresh when signaling starts. A
|