@staylift-tech/conv-widget 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +220 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  3. package/dist/cjs/index-BDscJkkF.js +1464 -0
  4. package/dist/cjs/index.cjs.js +10 -0
  5. package/dist/cjs/loader.cjs.js +13 -0
  6. package/dist/cjs/staylift-orb.cjs.entry.js +117 -0
  7. package/dist/cjs/staylift-widget.cjs.entry.js +26479 -0
  8. package/dist/cjs/staylift-widget.cjs.js +25 -0
  9. package/dist/collection/collection-manifest.json +13 -0
  10. package/dist/collection/components/staylift-orb/staylift-orb.css +15 -0
  11. package/dist/collection/components/staylift-orb/staylift-orb.js +229 -0
  12. package/dist/collection/components/staylift-widget/staylift-widget.css +578 -0
  13. package/dist/collection/components/staylift-widget/staylift-widget.js +898 -0
  14. package/dist/collection/index.js +3 -0
  15. package/dist/collection/types.js +1 -0
  16. package/dist/components/index.d.ts +35 -0
  17. package/dist/components/index.js +1 -0
  18. package/dist/components/p-DnOZjbwA.js +1 -0
  19. package/dist/components/staylift-orb.d.ts +11 -0
  20. package/dist/components/staylift-orb.js +1 -0
  21. package/dist/components/staylift-widget.d.ts +11 -0
  22. package/dist/components/staylift-widget.js +1 -0
  23. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  24. package/dist/esm/index-DAtfDq5B.js +1456 -0
  25. package/dist/esm/index.js +3 -0
  26. package/dist/esm/loader.js +11 -0
  27. package/dist/esm/staylift-orb.entry.js +115 -0
  28. package/dist/esm/staylift-widget.entry.js +26477 -0
  29. package/dist/esm/staylift-widget.js +21 -0
  30. package/dist/index.cjs.js +1 -0
  31. package/dist/index.js +1 -0
  32. package/dist/staylift-widget/index.esm.js +1 -0
  33. package/dist/staylift-widget/p-37510f2e.entry.js +1 -0
  34. package/dist/staylift-widget/p-94923740.entry.js +1 -0
  35. package/dist/staylift-widget/p-DAtfDq5B.js +2 -0
  36. package/dist/staylift-widget/p-DQuL1Twl.js +1 -0
  37. package/dist/staylift-widget/staylift-widget.esm.js +1 -0
  38. package/dist/types/components/staylift-orb/staylift-orb.d.ts +19 -0
  39. package/dist/types/components/staylift-widget/staylift-widget.d.ts +80 -0
  40. package/dist/types/components.d.ts +212 -0
  41. package/dist/types/index.d.ts +3 -0
  42. package/dist/types/stencil-public-runtime.d.ts +1839 -0
  43. package/dist/types/types.d.ts +1 -0
  44. package/loader/cdn.js +1 -0
  45. package/loader/index.cjs.js +1 -0
  46. package/loader/index.d.ts +24 -0
  47. package/loader/index.es2017.js +1 -0
  48. package/loader/index.js +2 -0
  49. package/package.json +58 -0
@@ -0,0 +1,578 @@
1
+ /* ============================================
2
+ STAYLIFT WIDGET - ELEVENLABS-STYLE UI
3
+ ============================================ */
4
+
5
+ :host {
6
+ --sl-primary: #6366f1;
7
+ --sl-bg: #18181b;
8
+ --sl-text: #ffffff;
9
+ --sl-muted: #a1a1aa;
10
+ --sl-border: #27272a;
11
+ --sl-surface: #27272a;
12
+ --sl-success: #22c55e;
13
+ --sl-danger: #ef4444;
14
+
15
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
16
+ font-size: 14px;
17
+ line-height: 1.5;
18
+ color: var(--sl-text);
19
+ }
20
+
21
+ .sl-widget * { box-sizing: border-box; }
22
+
23
+ /* ============ FLOATING ============ */
24
+
25
+ .sl-floating {
26
+ position: fixed;
27
+ z-index: 999999;
28
+ }
29
+
30
+ /* Horizontal positioning */
31
+ .sl-x-left { left: 20px; right: auto; }
32
+ .sl-x-center { left: 50%; right: auto; transform: translateX(-50%); }
33
+ .sl-x-right { right: 20px; left: auto; }
34
+
35
+ /* Vertical positioning */
36
+ .sl-y-top { top: 20px; bottom: auto; }
37
+ .sl-y-bottom { bottom: 20px; top: auto; }
38
+
39
+ /* Old circular FAB (kept for reference) */
40
+ .sl-fab {
41
+ width: 64px;
42
+ height: 64px;
43
+ border-radius: 50%;
44
+ border: 1px solid var(--sl-border);
45
+ background: var(--sl-bg);
46
+ cursor: pointer;
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
51
+ transition: transform 0.2s, box-shadow 0.2s;
52
+ padding: 8px;
53
+ }
54
+
55
+ .sl-fab:hover {
56
+ transform: scale(1.05);
57
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
58
+ }
59
+
60
+ /* New pill-shaped FAB */
61
+ .sl-fab-pill {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 16px;
65
+ padding: 12px 16px 12px 12px;
66
+ background: var(--sl-bg);
67
+ border: 1px solid var(--sl-border);
68
+ border-radius: 32px;
69
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
70
+ animation: sl-fade-in 0.2s ease;
71
+ }
72
+
73
+ .sl-fab-avatar {
74
+ width: 48px;
75
+ height: 48px;
76
+ border-radius: 50%;
77
+ overflow: hidden;
78
+ flex-shrink: 0;
79
+ border: 1px solid var(--sl-border);
80
+ }
81
+
82
+ .sl-fab-avatar-img {
83
+ width: 100%;
84
+ height: 100%;
85
+ object-fit: cover;
86
+ }
87
+
88
+ .sl-fab-content {
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: 8px;
92
+ }
93
+
94
+ .sl-fab-prompt {
95
+ font-size: 14px;
96
+ font-weight: 500;
97
+ color: var(--sl-text);
98
+ white-space: nowrap;
99
+ }
100
+
101
+ .sl-fab-btn {
102
+ padding: 8px 20px;
103
+ border: none;
104
+ border-radius: 20px;
105
+ background: var(--sl-primary);
106
+ color: white;
107
+ font-size: 13px;
108
+ font-weight: 500;
109
+ cursor: pointer;
110
+ transition: all 0.2s;
111
+ }
112
+
113
+ .sl-fab-btn:hover {
114
+ filter: brightness(1.1);
115
+ transform: translateY(-1px);
116
+ }
117
+
118
+ /* ============ CARD ============ */
119
+
120
+ .sl-card {
121
+ width: 400px;
122
+ height: 380px;
123
+ max-height: calc(100vh - 100px);
124
+ background: var(--sl-bg);
125
+ border-radius: 16px;
126
+ border: 1px solid var(--sl-border);
127
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
128
+ display: flex;
129
+ flex-direction: column;
130
+ overflow: hidden;
131
+ animation: sl-fade-in 0.2s ease;
132
+ }
133
+
134
+ .sl-inline {
135
+ width: 100%;
136
+ max-width: 500px;
137
+ height: 380px;
138
+ background: var(--sl-bg);
139
+ border-radius: 16px;
140
+ border: 1px solid var(--sl-border);
141
+ display: flex;
142
+ flex-direction: column;
143
+ overflow: hidden;
144
+ }
145
+
146
+ @keyframes sl-fade-in {
147
+ from { opacity: 0; transform: translateY(10px) scale(0.98); }
148
+ to { opacity: 1; transform: translateY(0) scale(1); }
149
+ }
150
+
151
+ /* ============ HEADER ============ */
152
+
153
+ .sl-header {
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: space-between;
157
+ padding: 16px;
158
+ flex-shrink: 0;
159
+ border-bottom: 1px solid var(--sl-border);
160
+ }
161
+
162
+ .sl-header-left {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 16px;
166
+ }
167
+
168
+ .sl-orb-ring {
169
+ width: 40px;
170
+ height: 40px;
171
+ border-radius: 50%;
172
+ border: 1px solid var(--sl-border);
173
+ overflow: hidden;
174
+ flex-shrink: 0;
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ }
179
+
180
+ .sl-header-avatar-img {
181
+ width: 100%;
182
+ height: 100%;
183
+ object-fit: cover;
184
+ object-position: center center;
185
+ display: block;
186
+ }
187
+
188
+ .sl-header-text {
189
+ display: flex;
190
+ flex-direction: column;
191
+ gap: 2px;
192
+ }
193
+
194
+ .sl-title {
195
+ font-size: 14px;
196
+ font-weight: 500;
197
+ color: var(--sl-text);
198
+ line-height: 1.2;
199
+ }
200
+
201
+ .sl-subtitle {
202
+ font-size: 12px;
203
+ color: var(--sl-muted);
204
+ line-height: 1.2;
205
+ }
206
+
207
+ .sl-error { color: var(--sl-danger); }
208
+ .sl-connected { color: var(--sl-success); }
209
+
210
+ .sl-shimmer {
211
+ background: linear-gradient(90deg, var(--sl-muted) 0%, var(--sl-text) 50%, var(--sl-muted) 100%);
212
+ background-size: 200% 100%;
213
+ -webkit-background-clip: text;
214
+ -webkit-text-fill-color: transparent;
215
+ background-clip: text;
216
+ animation: sl-shimmer 1.5s infinite;
217
+ text-transform: capitalize;
218
+ }
219
+
220
+ @keyframes sl-shimmer {
221
+ 0% { background-position: 200% 0; }
222
+ 100% { background-position: -200% 0; }
223
+ }
224
+
225
+ .sl-header-right {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: 12px;
229
+ }
230
+
231
+ .sl-dot {
232
+ width: 8px;
233
+ height: 8px;
234
+ border-radius: 50%;
235
+ background: var(--sl-muted);
236
+ opacity: 0.4;
237
+ transition: all 0.3s;
238
+ }
239
+
240
+ .sl-dot--active {
241
+ background: var(--sl-success);
242
+ opacity: 1;
243
+ box-shadow: 0 0 8px rgba(34, 197, 94, 0.5);
244
+ }
245
+
246
+ .sl-dot--pulse {
247
+ background: var(--sl-text);
248
+ opacity: 0.4;
249
+ animation: sl-pulse 1s infinite;
250
+ }
251
+
252
+ @keyframes sl-pulse {
253
+ 0%, 100% { opacity: 0.4; }
254
+ 50% { opacity: 0.8; }
255
+ }
256
+
257
+ .sl-close {
258
+ width: 32px;
259
+ height: 32px;
260
+ border-radius: 50%;
261
+ border: none;
262
+ background: transparent;
263
+ color: var(--sl-muted);
264
+ cursor: pointer;
265
+ display: flex;
266
+ align-items: center;
267
+ justify-content: center;
268
+ transition: all 0.2s;
269
+ }
270
+
271
+ .sl-close:hover {
272
+ background: var(--sl-surface);
273
+ color: var(--sl-text);
274
+ }
275
+
276
+ /* ============ CONTENT ============ */
277
+
278
+ .sl-content {
279
+ flex: 1;
280
+ overflow-y: auto;
281
+ padding: 24px;
282
+ display: flex;
283
+ flex-direction: column;
284
+ gap: 8px;
285
+ }
286
+
287
+ .sl-empty {
288
+ flex: 1;
289
+ display: flex;
290
+ flex-direction: column;
291
+ align-items: center;
292
+ justify-content: center;
293
+ text-align: center;
294
+ gap: 12px;
295
+ }
296
+
297
+ .sl-empty-title {
298
+ margin: 0;
299
+ font-size: 15px;
300
+ font-weight: 500;
301
+ color: var(--sl-text);
302
+ }
303
+
304
+ .sl-empty-desc {
305
+ margin: 0;
306
+ font-size: 13px;
307
+ color: var(--sl-muted);
308
+ }
309
+
310
+ /* ============ MESSAGES ============ */
311
+
312
+ .sl-msg {
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: 4px;
316
+ }
317
+
318
+ .sl-msg-row {
319
+ display: flex;
320
+ align-items: flex-end;
321
+ gap: 8px;
322
+ }
323
+
324
+ .sl-msg--user .sl-msg-row {
325
+ justify-content: flex-end;
326
+ }
327
+
328
+ .sl-msg--assistant .sl-msg-row {
329
+ justify-content: flex-start;
330
+ }
331
+
332
+ .sl-msg-bubble {
333
+ max-width: 85%;
334
+ padding: 10px 14px;
335
+ border-radius: 12px;
336
+ font-size: 14px;
337
+ line-height: 1.5;
338
+ white-space: pre-wrap;
339
+ word-wrap: break-word;
340
+ }
341
+
342
+ .sl-msg--user .sl-msg-bubble {
343
+ background: var(--sl-primary);
344
+ color: white;
345
+ border-bottom-right-radius: 4px;
346
+ }
347
+
348
+ .sl-msg--assistant .sl-msg-bubble {
349
+ background: var(--sl-surface);
350
+ color: var(--sl-text);
351
+ border-bottom-left-radius: 4px;
352
+ }
353
+
354
+ .sl-msg-orb {
355
+ width: 24px;
356
+ height: 24px;
357
+ border-radius: 50%;
358
+ border: 1px solid var(--sl-border);
359
+ overflow: hidden;
360
+ flex-shrink: 0;
361
+ }
362
+
363
+ .sl-msg-actions {
364
+ display: flex;
365
+ gap: 4px;
366
+ padding-left: 32px;
367
+ }
368
+
369
+ .sl-action {
370
+ width: 28px;
371
+ height: 28px;
372
+ border-radius: 6px;
373
+ border: none;
374
+ background: transparent;
375
+ color: var(--sl-muted);
376
+ cursor: pointer;
377
+ display: flex;
378
+ align-items: center;
379
+ justify-content: center;
380
+ transition: all 0.2s;
381
+ }
382
+
383
+ .sl-action:hover {
384
+ background: var(--sl-surface);
385
+ color: var(--sl-text);
386
+ }
387
+
388
+ /* ============ FOOTER ============ */
389
+
390
+ .sl-footer {
391
+ padding: 16px;
392
+ border-top: 1px solid var(--sl-border);
393
+ flex-shrink: 0;
394
+ }
395
+
396
+ .sl-branding {
397
+ text-align: center;
398
+ margin-bottom: 12px;
399
+ }
400
+
401
+ .sl-branding a {
402
+ font-size: 11px;
403
+ color: var(--sl-muted);
404
+ text-decoration: none;
405
+ opacity: 0.6;
406
+ transition: opacity 0.2s;
407
+ }
408
+
409
+ .sl-branding a:hover {
410
+ opacity: 1;
411
+ }
412
+
413
+ .sl-input-row {
414
+ display: flex;
415
+ align-items: center;
416
+ gap: 8px;
417
+ }
418
+
419
+ .sl-input {
420
+ flex: 1;
421
+ height: 36px;
422
+ padding: 0 12px;
423
+ border: none;
424
+ border-radius: 8px;
425
+ background: transparent;
426
+ color: var(--sl-text);
427
+ font-size: 14px;
428
+ outline: none;
429
+ }
430
+
431
+ .sl-input::placeholder {
432
+ color: var(--sl-muted);
433
+ }
434
+
435
+ .sl-input:disabled {
436
+ opacity: 0.5;
437
+ cursor: not-allowed;
438
+ }
439
+
440
+ .sl-btn {
441
+ width: 36px;
442
+ height: 36px;
443
+ border-radius: 50%;
444
+ border: none;
445
+ background: transparent;
446
+ color: var(--sl-muted);
447
+ cursor: pointer;
448
+ display: flex;
449
+ align-items: center;
450
+ justify-content: center;
451
+ transition: all 0.2s;
452
+ flex-shrink: 0;
453
+ }
454
+
455
+ .sl-btn:hover:not(:disabled) {
456
+ background: var(--sl-surface);
457
+ color: var(--sl-text);
458
+ }
459
+
460
+ .sl-btn:disabled {
461
+ opacity: 0.3;
462
+ cursor: not-allowed;
463
+ }
464
+
465
+ .sl-btn--end {
466
+ background: var(--sl-surface);
467
+ color: var(--sl-text);
468
+ }
469
+
470
+ .sl-btn--end:hover:not(:disabled) {
471
+ background: var(--sl-danger);
472
+ color: white;
473
+ }
474
+
475
+ /* ============ TERMS ============ */
476
+
477
+ .sl-terms {
478
+ display: flex;
479
+ flex-direction: column;
480
+ height: 100%;
481
+ padding: 24px;
482
+ }
483
+
484
+ .sl-terms-content {
485
+ flex: 1;
486
+ display: flex;
487
+ flex-direction: column;
488
+ justify-content: center;
489
+ gap: 16px;
490
+ }
491
+
492
+ .sl-terms-title {
493
+ margin: 0;
494
+ font-size: 18px;
495
+ font-weight: 600;
496
+ color: var(--sl-text);
497
+ }
498
+
499
+ .sl-terms-text {
500
+ margin: 0;
501
+ font-size: 14px;
502
+ line-height: 1.6;
503
+ color: var(--sl-text);
504
+ }
505
+
506
+ .sl-terms-warning {
507
+ margin: 0;
508
+ font-size: 13px;
509
+ line-height: 1.5;
510
+ color: var(--sl-muted);
511
+ font-style: italic;
512
+ }
513
+
514
+ .sl-terms-actions {
515
+ display: flex;
516
+ gap: 12px;
517
+ padding-top: 16px;
518
+ border-top: 1px solid var(--sl-border);
519
+ }
520
+
521
+ .sl-terms-btn {
522
+ flex: 1;
523
+ padding: 12px 20px;
524
+ border: none;
525
+ border-radius: 8px;
526
+ font-size: 14px;
527
+ font-weight: 500;
528
+ cursor: pointer;
529
+ transition: all 0.2s;
530
+ }
531
+
532
+ .sl-terms-btn--decline {
533
+ background: var(--sl-surface);
534
+ color: var(--sl-muted);
535
+ }
536
+
537
+ .sl-terms-btn--decline:hover {
538
+ background: var(--sl-border);
539
+ color: var(--sl-text);
540
+ }
541
+
542
+ .sl-terms-btn--agree {
543
+ background: var(--sl-primary);
544
+ color: white;
545
+ }
546
+
547
+ .sl-terms-btn--agree:hover {
548
+ filter: brightness(1.1);
549
+ }
550
+
551
+ /* ============ RESPONSIVE ============ */
552
+
553
+ @media (max-width: 480px) {
554
+ .sl-card {
555
+ width: calc(100vw - 32px);
556
+ max-width: 400px;
557
+ }
558
+
559
+ .sl-floating.sl-x-left,
560
+ .sl-floating.sl-x-right {
561
+ left: 16px;
562
+ right: 16px;
563
+ }
564
+
565
+ .sl-floating.sl-x-center {
566
+ left: 16px;
567
+ right: 16px;
568
+ transform: none;
569
+ }
570
+
571
+ .sl-floating.sl-y-bottom {
572
+ bottom: 16px;
573
+ }
574
+
575
+ .sl-floating.sl-y-top {
576
+ top: 16px;
577
+ }
578
+ }