@sippet-ai/operator-widget 0.0.12
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/LICENSE +2 -0
- package/README.md +136 -0
- package/cdn/loader.js +146 -0
- package/custom-elements.json +2241 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/voip-widget/index.d.ts +18 -0
- package/dist/components/voip-widget/index.js +4 -0
- package/dist/components/voip-widget/voip-widget-contacts-tab.d.ts +14 -0
- package/dist/components/voip-widget/voip-widget-contacts-tab.js +45 -0
- package/dist/components/voip-widget/voip-widget-history-tab.d.ts +13 -0
- package/dist/components/voip-widget/voip-widget-history-tab.js +43 -0
- package/dist/components/voip-widget/voip-widget-launcher.d.ts +18 -0
- package/dist/components/voip-widget/voip-widget-launcher.js +100 -0
- package/dist/components/voip-widget/voip-widget-panel.d.ts +21 -0
- package/dist/components/voip-widget/voip-widget-panel.js +193 -0
- package/dist/components/voip-widget/voip-widget-phone-tab.d.ts +21 -0
- package/dist/components/voip-widget/voip-widget-phone-tab.js +187 -0
- package/dist/components/voip-widget/voip-widget-queue-tab.d.ts +14 -0
- package/dist/components/voip-widget/voip-widget-queue-tab.js +49 -0
- package/dist/components/voip-widget/voip-widget-settings-tab.d.ts +21 -0
- package/dist/components/voip-widget/voip-widget-settings-tab.js +135 -0
- package/dist/components/voip-widget/voip-widget.d.ts +142 -0
- package/dist/components/voip-widget/voip-widget.js +1329 -0
- package/dist/components/voip-widget/voip-widget.types.d.ts +22 -0
- package/dist/components/voip-widget/voip-widget.types.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/lib/realtime.d.ts +1 -0
- package/dist/lib/realtime.js +1 -0
- package/dist/lib/sippet.d.ts +40 -0
- package/dist/lib/sippet.js +197 -0
- package/dist/lib/tailwindMixin.d.ts +6 -0
- package/dist/lib/tailwindMixin.js +24 -0
- package/dist/styles/tailwind.global.css +2 -0
- package/dist/styles/tailwind.global.css.js +1 -0
- package/package.json +126 -0
- package/react/SippetAIVoipWidget.d.ts +158 -0
- package/react/SippetAIVoipWidget.js +72 -0
- package/react/SippetAIVoipWidgetContactsTab.d.ts +67 -0
- package/react/SippetAIVoipWidgetContactsTab.js +29 -0
- package/react/SippetAIVoipWidgetHistoryTab.d.ts +55 -0
- package/react/SippetAIVoipWidgetHistoryTab.js +26 -0
- package/react/SippetAIVoipWidgetLauncher.d.ts +83 -0
- package/react/SippetAIVoipWidgetLauncher.js +41 -0
- package/react/SippetAIVoipWidgetPanel.d.ts +87 -0
- package/react/SippetAIVoipWidgetPanel.js +43 -0
- package/react/SippetAIVoipWidgetPhoneTab.d.ts +87 -0
- package/react/SippetAIVoipWidgetPhoneTab.js +43 -0
- package/react/SippetAIVoipWidgetQueueTab.d.ts +67 -0
- package/react/SippetAIVoipWidgetQueueTab.js +27 -0
- package/react/SippetAIVoipWidgetSettingsTab.d.ts +91 -0
- package/react/SippetAIVoipWidgetSettingsTab.js +47 -0
- package/react/index.d.ts +8 -0
- package/react/index.js +8 -0
- package/react/react-utils.js +67 -0
- package/types/custom-element-jsx.d.ts +956 -0
- package/types/custom-element-svelte.d.ts +264 -0
- package/types/custom-element-vuejs.d.ts +234 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type VoipTab = 'phone' | 'queue' | 'contacts' | 'history' | 'settings';
|
|
2
|
+
export type SipStatus = 'idle' | 'connecting' | 'connected' | 'error';
|
|
3
|
+
export type CallState = 'idle' | 'incoming' | 'outgoing' | 'active' | 'held';
|
|
4
|
+
export type Contact = {
|
|
5
|
+
name: string;
|
|
6
|
+
number: string;
|
|
7
|
+
};
|
|
8
|
+
export type HistoryEntry = {
|
|
9
|
+
name: string;
|
|
10
|
+
number: string;
|
|
11
|
+
time: string;
|
|
12
|
+
type: string;
|
|
13
|
+
};
|
|
14
|
+
export type QueuedCall = {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
time: string;
|
|
18
|
+
};
|
|
19
|
+
export type MediaDeviceOption = {
|
|
20
|
+
id: string;
|
|
21
|
+
label: string;
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DEFAULT_BASE_URL, getSocket, initSocket, joinEventsChannel, type EventsChannel, type EventsChannelEvent, type InitSocketOptions, type SocketOptions, } from '@sippet-ai/sdk-js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DEFAULT_BASE_URL, getSocket, initSocket, joinEventsChannel, } from '@sippet-ai/sdk-js';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const sippet: {
|
|
2
|
+
setApiKey(apiKey: string | null): void;
|
|
3
|
+
setSessionAuth(enabled: boolean): void;
|
|
4
|
+
setApiOrigin(apiOrigin: string | null): void;
|
|
5
|
+
call(phoneNumber: string): Promise<"not implemented yet" | "ok">;
|
|
6
|
+
answer(_callUuid?: string): Promise<"not implemented yet" | "ok">;
|
|
7
|
+
decline(_callUuid?: string): Promise<"not implemented yet" | "ok">;
|
|
8
|
+
hold(_callUuid?: string): Promise<"not implemented yet" | "ok">;
|
|
9
|
+
transfer(_callUuid: string, _queue: string): Promise<string>;
|
|
10
|
+
callDetails(callUuid: string): Promise<{
|
|
11
|
+
success: false;
|
|
12
|
+
errors: import("@sippet-ai/sdk-js/dist/ash_rpc.js").AshRpcError[];
|
|
13
|
+
} | {
|
|
14
|
+
success: boolean;
|
|
15
|
+
data: {
|
|
16
|
+
call: {
|
|
17
|
+
id: string;
|
|
18
|
+
} & {
|
|
19
|
+
direction: "inbound" | "outbound";
|
|
20
|
+
} & {
|
|
21
|
+
fromNumber: string;
|
|
22
|
+
} & {
|
|
23
|
+
toNumber: string;
|
|
24
|
+
} & {
|
|
25
|
+
status: "answered" | "completed" | "initiated" | "ringing" | "failed" | "busy" | "no_answer" | null;
|
|
26
|
+
} & {
|
|
27
|
+
callUuid: string;
|
|
28
|
+
} & {
|
|
29
|
+
startedAt: string | null;
|
|
30
|
+
} & {
|
|
31
|
+
endedAt: string | null;
|
|
32
|
+
} & {
|
|
33
|
+
durationSeconds: number | null;
|
|
34
|
+
};
|
|
35
|
+
codec: import("@sippet-ai/sdk-js").InferCallCodecResult | null;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
getQueue(): Promise<import("@sippet-ai/sdk-js").ListCallQueueEntriesResult<("id" | "callUuid" | "queueName" | "callerIdNumber" | "callerIdName" | "state" | "agentName" | "waitStartedAt")[], unknown>>;
|
|
39
|
+
getActiveCalls(): Promise<import("@sippet-ai/sdk-js").ListCallsResult<("id" | "direction" | "fromNumber" | "toNumber" | "status" | "callUuid" | "startedAt" | "endedAt" | "durationSeconds")[], unknown>>;
|
|
40
|
+
};
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { buildCSRFHeaders, callCodec, listCallQueueEntries, listCalls, } from '@sippet-ai/sdk-js';
|
|
2
|
+
const WIDGET_SELECTOR = 'sippetai-voip-widget';
|
|
3
|
+
let configuredApiKey = null;
|
|
4
|
+
let configuredSessionAuth = false;
|
|
5
|
+
let configuredApiOrigin = null;
|
|
6
|
+
function getWidget() {
|
|
7
|
+
if (typeof document === 'undefined')
|
|
8
|
+
return null;
|
|
9
|
+
return document.querySelector(WIDGET_SELECTOR);
|
|
10
|
+
}
|
|
11
|
+
function requireWidget() {
|
|
12
|
+
const widget = getWidget();
|
|
13
|
+
if (!widget) {
|
|
14
|
+
throw new Error('sippetai-voip-widget not found on the page');
|
|
15
|
+
}
|
|
16
|
+
return widget;
|
|
17
|
+
}
|
|
18
|
+
function resolveApiKey(widget) {
|
|
19
|
+
if (resolveSessionAuth(widget)) {
|
|
20
|
+
throw new Error('apiKey is not used when sessionAuth is enabled');
|
|
21
|
+
}
|
|
22
|
+
const key = configuredApiKey ??
|
|
23
|
+
widget?.apiKey ??
|
|
24
|
+
widget?.getAttribute?.('api-key') ??
|
|
25
|
+
widget?.getAttribute?.('apiKey');
|
|
26
|
+
if (typeof key !== 'string' || key.length === 0) {
|
|
27
|
+
throw new Error('apiKey is required for this action');
|
|
28
|
+
}
|
|
29
|
+
return key;
|
|
30
|
+
}
|
|
31
|
+
function resolveSessionAuth(widget) {
|
|
32
|
+
if (configuredSessionAuth)
|
|
33
|
+
return true;
|
|
34
|
+
if (widget?.sessionAuth)
|
|
35
|
+
return true;
|
|
36
|
+
const attribute = widget?.getAttribute?.('session-auth');
|
|
37
|
+
return attribute !== null;
|
|
38
|
+
}
|
|
39
|
+
function resolveApiOrigin(widget) {
|
|
40
|
+
const apiOrigin = configuredApiOrigin ??
|
|
41
|
+
widget?.apiOrigin ??
|
|
42
|
+
widget?.getAttribute?.('api-origin');
|
|
43
|
+
return typeof apiOrigin === 'string' && apiOrigin.length > 0
|
|
44
|
+
? apiOrigin
|
|
45
|
+
: null;
|
|
46
|
+
}
|
|
47
|
+
function configureSdk(apiOrigin) {
|
|
48
|
+
if (!apiOrigin || typeof globalThis === 'undefined')
|
|
49
|
+
return;
|
|
50
|
+
const configHolder = globalThis;
|
|
51
|
+
configHolder.SippetAiSdkConfig = {
|
|
52
|
+
...configHolder.SippetAiSdkConfig,
|
|
53
|
+
rpcRunEndpoint: `${apiOrigin}/rpc/run`,
|
|
54
|
+
rpcValidateEndpoint: `${apiOrigin}/rpc/validate`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function rpcConfig() {
|
|
58
|
+
const widget = getWidget();
|
|
59
|
+
if (resolveSessionAuth(widget ?? undefined)) {
|
|
60
|
+
configureSdk(resolveApiOrigin(widget ?? undefined));
|
|
61
|
+
return {
|
|
62
|
+
headers: buildCSRFHeaders(),
|
|
63
|
+
fetchOptions: { credentials: 'include' },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const apiKey = resolveApiKey(widget ?? undefined);
|
|
67
|
+
return { headers: { 'x-api-key': apiKey } };
|
|
68
|
+
}
|
|
69
|
+
export const sippet = {
|
|
70
|
+
setApiKey(apiKey) {
|
|
71
|
+
configuredApiKey = typeof apiKey === 'string' ? apiKey : null;
|
|
72
|
+
},
|
|
73
|
+
setSessionAuth(enabled) {
|
|
74
|
+
configuredSessionAuth = Boolean(enabled);
|
|
75
|
+
},
|
|
76
|
+
setApiOrigin(apiOrigin) {
|
|
77
|
+
configuredApiOrigin = typeof apiOrigin === 'string' ? apiOrigin : null;
|
|
78
|
+
configureSdk(configuredApiOrigin);
|
|
79
|
+
},
|
|
80
|
+
async call(phoneNumber) {
|
|
81
|
+
const widget = requireWidget();
|
|
82
|
+
widget.openPanel?.('phone');
|
|
83
|
+
if (!widget.callNumber)
|
|
84
|
+
return 'not implemented yet';
|
|
85
|
+
await widget.callNumber(phoneNumber);
|
|
86
|
+
return 'ok';
|
|
87
|
+
},
|
|
88
|
+
async answer(_callUuid) {
|
|
89
|
+
void _callUuid;
|
|
90
|
+
const widget = requireWidget();
|
|
91
|
+
widget.openPanel?.('phone');
|
|
92
|
+
if (!widget.answerCall)
|
|
93
|
+
return 'not implemented yet';
|
|
94
|
+
await widget.answerCall();
|
|
95
|
+
return 'ok';
|
|
96
|
+
},
|
|
97
|
+
async decline(_callUuid) {
|
|
98
|
+
void _callUuid;
|
|
99
|
+
const widget = requireWidget();
|
|
100
|
+
widget.openPanel?.('phone');
|
|
101
|
+
if (!widget.declineCall)
|
|
102
|
+
return 'not implemented yet';
|
|
103
|
+
await widget.declineCall();
|
|
104
|
+
return 'ok';
|
|
105
|
+
},
|
|
106
|
+
async hold(_callUuid) {
|
|
107
|
+
void _callUuid;
|
|
108
|
+
const widget = requireWidget();
|
|
109
|
+
widget.openPanel?.('phone');
|
|
110
|
+
if (!widget.toggleHold)
|
|
111
|
+
return 'not implemented yet';
|
|
112
|
+
await widget.toggleHold();
|
|
113
|
+
return 'ok';
|
|
114
|
+
},
|
|
115
|
+
async transfer(_callUuid, _queue) {
|
|
116
|
+
void _callUuid;
|
|
117
|
+
void _queue;
|
|
118
|
+
return 'not implemented yet';
|
|
119
|
+
},
|
|
120
|
+
async callDetails(callUuid) {
|
|
121
|
+
const config = rpcConfig();
|
|
122
|
+
const result = await listCalls({
|
|
123
|
+
fields: [
|
|
124
|
+
'id',
|
|
125
|
+
'callUuid',
|
|
126
|
+
'direction',
|
|
127
|
+
'fromNumber',
|
|
128
|
+
'toNumber',
|
|
129
|
+
'status',
|
|
130
|
+
'startedAt',
|
|
131
|
+
'endedAt',
|
|
132
|
+
'durationSeconds',
|
|
133
|
+
],
|
|
134
|
+
filter: {
|
|
135
|
+
callUuid: { eq: callUuid },
|
|
136
|
+
},
|
|
137
|
+
...config,
|
|
138
|
+
});
|
|
139
|
+
if (!result.success) {
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
const call = result.data[0] ?? null;
|
|
143
|
+
if (!call) {
|
|
144
|
+
return { success: true, data: null };
|
|
145
|
+
}
|
|
146
|
+
const codecResult = await callCodec({
|
|
147
|
+
input: { callUuid },
|
|
148
|
+
...config,
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
success: true,
|
|
152
|
+
data: {
|
|
153
|
+
call,
|
|
154
|
+
codec: codecResult.success ? codecResult.data : null,
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
},
|
|
158
|
+
async getQueue() {
|
|
159
|
+
const config = rpcConfig();
|
|
160
|
+
return listCallQueueEntries({
|
|
161
|
+
fields: [
|
|
162
|
+
'id',
|
|
163
|
+
'callUuid',
|
|
164
|
+
'queueName',
|
|
165
|
+
'callerIdNumber',
|
|
166
|
+
'callerIdName',
|
|
167
|
+
'state',
|
|
168
|
+
'agentName',
|
|
169
|
+
'waitStartedAt',
|
|
170
|
+
],
|
|
171
|
+
filter: {
|
|
172
|
+
state: { in: ['waiting', 'offering'] },
|
|
173
|
+
},
|
|
174
|
+
...config,
|
|
175
|
+
});
|
|
176
|
+
},
|
|
177
|
+
async getActiveCalls() {
|
|
178
|
+
const config = rpcConfig();
|
|
179
|
+
return listCalls({
|
|
180
|
+
fields: [
|
|
181
|
+
'id',
|
|
182
|
+
'callUuid',
|
|
183
|
+
'direction',
|
|
184
|
+
'fromNumber',
|
|
185
|
+
'toNumber',
|
|
186
|
+
'status',
|
|
187
|
+
'startedAt',
|
|
188
|
+
'endedAt',
|
|
189
|
+
'durationSeconds',
|
|
190
|
+
],
|
|
191
|
+
filter: {
|
|
192
|
+
status: { in: ['initiated', 'ringing', 'answered'] },
|
|
193
|
+
},
|
|
194
|
+
...config,
|
|
195
|
+
});
|
|
196
|
+
},
|
|
197
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { adoptStyles, unsafeCSS } from 'lit';
|
|
2
|
+
import tailwindCss from '../styles/tailwind.global.css.js';
|
|
3
|
+
export const tailwind = unsafeCSS(tailwindCss);
|
|
4
|
+
// https://github.com/tailwindlabs/tailwindcss/issues/15005
|
|
5
|
+
// Set all @property values from tailwind on the document
|
|
6
|
+
// And only do this once (check if there is already a stylesheet with the same content)
|
|
7
|
+
if (tailwind.styleSheet &&
|
|
8
|
+
document?.adoptedStyleSheets &&
|
|
9
|
+
!document.adoptedStyleSheets.some(sheet => sheet.cssRules[0]?.cssText === tailwind.styleSheet?.cssRules[0].cssText)) {
|
|
10
|
+
const propertiesSheet = new CSSStyleSheet();
|
|
11
|
+
let code = tailwind.cssText;
|
|
12
|
+
code = code
|
|
13
|
+
.replaceAll('inherits: false', 'inherits: true')
|
|
14
|
+
.substring(code.indexOf('@property'));
|
|
15
|
+
propertiesSheet.replaceSync(code);
|
|
16
|
+
document.adoptedStyleSheets.push(propertiesSheet);
|
|
17
|
+
}
|
|
18
|
+
export const TW = (superClass) => class extends superClass {
|
|
19
|
+
connectedCallback() {
|
|
20
|
+
super.connectedCallback();
|
|
21
|
+
if (this.shadowRoot)
|
|
22
|
+
adoptStyles(this.shadowRoot, [tailwind]);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-50:oklch(98% .016 73.684);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-400:oklch(82.8% .189 84.429);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-100:oklch(95.1% .026 236.824);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-12{top:calc(var(--spacing)*12)}.-right-1{right:calc(var(--spacing)*-1)}.right-6{right:calc(var(--spacing)*6)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-11{height:calc(var(--spacing)*11)}.h-14{height:calc(var(--spacing)*14)}.h-\[480px\]{height:480px}.h-full{height:100%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-44{width:calc(var(--spacing)*44)}.w-60{width:calc(var(--spacing)*60)}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-grab{cursor:grab}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-900{border-color:var(--color-slate-900)}.border-white{border-color:var(--color-white)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-700{background-color:var(--color-red-700)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/80{background-color:#0f172bcc}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/80{background-color:color-mix(in oklab,var(--color-slate-900)80%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-amber-100{--tw-gradient-from:var(--color-amber-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-orange-50{--tw-gradient-via:var(--color-orange-50);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-sky-100{--tw-gradient-to:var(--color-sky-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.text-center{text-align:center}.font-sans{font-family:var(--font-sans)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-emerald-700{color:var(--color-emerald-700)}.text-red-700{color:var(--color-red-700)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}}.voip-primary{color:#fff;background-image:linear-gradient(#ffffff2e,#ffffff0a),linear-gradient(#4c1d95,#2e1065),linear-gradient(#ffffff1f,#ffffff05),linear-gradient(#3b136a,#1f0b3a);box-shadow:0 1px 2px #00000059,inset 0 1px #ffffff14}.voip-primary:hover{box-shadow:0 1px 2px #00000059,inset 0 1px #ffffff14,0 4px 25px 1px #8b5cf666}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-50:oklch(98% .016 73.684);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-400:oklch(82.8% .189 84.429);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-100:oklch(95.1% .026 236.824);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-12{top:calc(var(--spacing)*12)}.-right-1{right:calc(var(--spacing)*-1)}.right-6{right:calc(var(--spacing)*6)}.bottom-6{bottom:calc(var(--spacing)*6)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-11{height:calc(var(--spacing)*11)}.h-14{height:calc(var(--spacing)*14)}.h-\\[480px\\]{height:480px}.h-full{height:100%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-44{width:calc(var(--spacing)*44)}.w-60{width:calc(var(--spacing)*60)}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-grab{cursor:grab}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-900{border-color:var(--color-slate-900)}.border-white{border-color:var(--color-white)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-700{background-color:var(--color-red-700)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\\/80{background-color:#0f172bcc}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\\/80{background-color:color-mix(in oklab,var(--color-slate-900)80%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-amber-100{--tw-gradient-from:var(--color-amber-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-orange-50{--tw-gradient-via:var(--color-orange-50);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-sky-100{--tw-gradient-to:var(--color-sky-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.text-center{text-align:center}.font-sans{font-family:var(--font-sans)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-emerald-700{color:var(--color-emerald-700)}.text-red-700{color:var(--color-red-700)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\\:bg-slate-100:hover{background-color:var(--color-slate-100)}}.voip-primary{color:#fff;background-image:linear-gradient(#ffffff2e,#ffffff0a),linear-gradient(#4c1d95,#2e1065),linear-gradient(#ffffff1f,#ffffff05),linear-gradient(#3b136a,#1f0b3a);box-shadow:0 1px 2px #00000059,inset 0 1px #ffffff14}.voip-primary:hover{box-shadow:0 1px 2px #00000059,inset 0 1px #ffffff14,0 4px 25px 1px #8b5cf666}}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:\"*\";inherits:false}@property --tw-gradient-from{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:\"<color>\";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:\"*\";inherits:false}@property --tw-gradient-via-stops{syntax:\"*\";inherits:false}@property --tw-gradient-from-position{syntax:\"<length-percentage>\";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:\"<length-percentage>\";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:\"<length-percentage>\";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}";
|
package/package.json
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sippet-ai/operator-widget",
|
|
3
|
+
"version": "0.0.12",
|
|
4
|
+
"description": "Sippet AI's operator widget to enable telephony calling features in any web application.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"analyze": "cem analyze",
|
|
9
|
+
"analyze:dev": "cem analyze --watch",
|
|
10
|
+
"clean:build": "npx rimraf dist react types public cdn custom-elements.json",
|
|
11
|
+
"clean": "git clean -fqdx",
|
|
12
|
+
"dev": "npm run build && concurrently -k -r \"npm run analyze:dev\" \"npm run build:watch\" \"npm run storybook\"",
|
|
13
|
+
"test": "web-test-runner --group default",
|
|
14
|
+
"prebuild": "npm run clean:build",
|
|
15
|
+
"build": "tsc -p tsconfig.build.json && node ./scripts/copy-dist-styles.mjs && npm run analyze && npm run build:kitchen-sink",
|
|
16
|
+
"build:cdn": "npx cross-env BUILD_TARGET=cdn vite build && npm run analyze",
|
|
17
|
+
"build:html": "npx cross-env BUILD_TARGET=html vite build",
|
|
18
|
+
"prebuild:react": "npm run clean:build && tsc -p tsconfig.build.json && npm run analyze",
|
|
19
|
+
"build:react": "node ./scripts/copy-dist-styles.mjs && npx cross-env BUILD_TARGET=react vite build && npx rimraf -rf ./public/react/html",
|
|
20
|
+
"build:kitchen-sink": "npx rimraf ./public && npm run build:cdn && npm run build:html && npm run build:react",
|
|
21
|
+
"build:watch": "concurrently -k -r \"tsc --watch\" \"npx cross-env BUILD_TARGET=cdn vite build --watch\" \"npx cross-env BUILD_TARGET=html vite build --watch\"",
|
|
22
|
+
"new": "plop",
|
|
23
|
+
"deploy": "npm run build && npm publish",
|
|
24
|
+
"format": "npm run format:eslint && npm run format:prettier",
|
|
25
|
+
"format:eslint": "npx eslint --fix",
|
|
26
|
+
"format:prettier": "npx prettier . --write",
|
|
27
|
+
"lint": "wctools validate && npm run lint:eslint && npm run lint:prettier",
|
|
28
|
+
"lint:eslint": "npx eslint",
|
|
29
|
+
"lint:prettier": "npx prettier . --check",
|
|
30
|
+
"prepare": "husky && npx playwright install-deps",
|
|
31
|
+
"storybook": "storybook dev -p 6006",
|
|
32
|
+
"build-storybook": "storybook build"
|
|
33
|
+
},
|
|
34
|
+
"author": "Sippet AI",
|
|
35
|
+
"license": "UNLICENSED",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@sippet-ai/sdk-js": "workspace:*",
|
|
38
|
+
"code-bubble": "^1.3.3",
|
|
39
|
+
"lit": "^3.2.1",
|
|
40
|
+
"lucide": "^0.562.0",
|
|
41
|
+
"phoenix": "^1.7.18",
|
|
42
|
+
"sip.js": "^0.21.2",
|
|
43
|
+
"wc-dox": "^1.3.5"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
47
|
+
"@eslint/js": "^9.16.0",
|
|
48
|
+
"@eslint/json": "^0.8.0",
|
|
49
|
+
"@eslint/markdown": "^6.2.1",
|
|
50
|
+
"@open-wc/testing": "^4.0.0",
|
|
51
|
+
"@playwright/test": "^1.46.1",
|
|
52
|
+
"@storybook/addon-a11y": "^10.1.11",
|
|
53
|
+
"@storybook/addon-docs": "^10.1.11",
|
|
54
|
+
"@storybook/addon-links": "^10.1.11",
|
|
55
|
+
"@storybook/web-components": "^10.1.11",
|
|
56
|
+
"@storybook/web-components-vite": "^10.1.11",
|
|
57
|
+
"@tailwindcss/cli": "^4.1.18",
|
|
58
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
59
|
+
"@types/mocha": "^10.0.2",
|
|
60
|
+
"@types/phoenix": "^1.6.7",
|
|
61
|
+
"@wc-toolkit/cem-inheritance": "^1.2.2",
|
|
62
|
+
"@wc-toolkit/cem-sorter": "^1.0.1",
|
|
63
|
+
"@wc-toolkit/cem-validator": "^1.0.3",
|
|
64
|
+
"@wc-toolkit/jsdoc-tags": "^1.1.0",
|
|
65
|
+
"@wc-toolkit/jsx-types": "^1.5.2",
|
|
66
|
+
"@wc-toolkit/lazy-loader": "^1.0.1",
|
|
67
|
+
"@wc-toolkit/module-path-resolver": "^1.0.0",
|
|
68
|
+
"@wc-toolkit/react-wrappers": "^1.1.1",
|
|
69
|
+
"@wc-toolkit/storybook-helpers": "^10.0.0",
|
|
70
|
+
"@wc-toolkit/type-parser": "^1.2.0",
|
|
71
|
+
"@wc-toolkit/wctools": "^0.0.18",
|
|
72
|
+
"@web/dev-server-esbuild": "^1.0.4",
|
|
73
|
+
"@web/test-runner": "^0.20.2",
|
|
74
|
+
"@web/test-runner-commands": "^0.9.0",
|
|
75
|
+
"@web/test-runner-playwright": "^0.11.1",
|
|
76
|
+
"concurrently": "^9.1.0",
|
|
77
|
+
"custom-element-svelte-integration": "^1.1.2",
|
|
78
|
+
"custom-element-vuejs-integration": "^1.3.3",
|
|
79
|
+
"custom-elements-manifest-deprecator": "^1.1.1",
|
|
80
|
+
"eslint": "^9.16.0",
|
|
81
|
+
"eslint-config-prettier": "^9.1.0",
|
|
82
|
+
"eslint-plugin-lit": "^1.15.0",
|
|
83
|
+
"eslint-plugin-lit-a11y": "^5.1.1",
|
|
84
|
+
"eslint-plugin-require-extensions": "^0.1.3",
|
|
85
|
+
"eslint-plugin-storybook": "^10.1.11",
|
|
86
|
+
"glob": "^11.0.0",
|
|
87
|
+
"globals": "^15.13.0",
|
|
88
|
+
"husky": "^9.0.11",
|
|
89
|
+
"lint-staged": "^15.2.7",
|
|
90
|
+
"plop": "^4.0.1",
|
|
91
|
+
"prettier": "^3.3.2",
|
|
92
|
+
"rollup-plugin-summary": "^3.0.0",
|
|
93
|
+
"storybook": "^10.1.11",
|
|
94
|
+
"tailwindcss": "^4.1.18",
|
|
95
|
+
"typescript": "^5.5.3",
|
|
96
|
+
"typescript-eslint": "^8.17.0",
|
|
97
|
+
"vite": "^7.3.0",
|
|
98
|
+
"vite-plugin-dts": "^4.5.4"
|
|
99
|
+
},
|
|
100
|
+
"lint-staged": {
|
|
101
|
+
"*.js": "eslint --cache --fix",
|
|
102
|
+
"*.format:prettier": "prettier --write"
|
|
103
|
+
},
|
|
104
|
+
"files": [
|
|
105
|
+
"cdn",
|
|
106
|
+
"eslint",
|
|
107
|
+
"dist",
|
|
108
|
+
"react",
|
|
109
|
+
"types",
|
|
110
|
+
"index.d.ts",
|
|
111
|
+
"index.js",
|
|
112
|
+
"package.json",
|
|
113
|
+
"custom-elements.json",
|
|
114
|
+
"vscode.css-custom-data.json",
|
|
115
|
+
"vscode.html-custom-data.json",
|
|
116
|
+
"web-types.json"
|
|
117
|
+
],
|
|
118
|
+
"keywords": [
|
|
119
|
+
"web-components",
|
|
120
|
+
"custom-elements",
|
|
121
|
+
"lit-element",
|
|
122
|
+
"typescript",
|
|
123
|
+
"lit"
|
|
124
|
+
],
|
|
125
|
+
"customElements": "custom-elements.json"
|
|
126
|
+
}
|