@campxdev/campx-web-utils 2.0.13 → 2.0.14

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 (63) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/types/src/components/Exotel/CallButton.d.ts +10 -0
  3. package/dist/cjs/types/src/components/Exotel/CallDispositionForm.d.ts +29 -0
  4. package/dist/cjs/types/src/components/Exotel/ExotelPhone.d.ts +10 -0
  5. package/dist/cjs/types/src/components/Exotel/ExotelWrapper.d.ts +14 -0
  6. package/dist/cjs/types/src/components/Exotel/MicrophonePermission.d.ts +6 -0
  7. package/dist/cjs/types/src/components/Exotel/index.d.ts +6 -0
  8. package/dist/cjs/types/src/config/index.d.ts +1 -0
  9. package/dist/cjs/types/src/config/voip.config.d.ts +18 -0
  10. package/dist/cjs/types/src/constants/exotel.constants.d.ts +7 -0
  11. package/dist/cjs/types/src/providers/ExotelProvider.d.ts +79 -0
  12. package/dist/cjs/types/src/providers/VoIPProvider.d.ts +33 -0
  13. package/dist/cjs/types/src/providers/index.d.ts +2 -0
  14. package/dist/cjs/types/src/services/crypto/CryptoService.d.ts +23 -0
  15. package/dist/cjs/types/src/services/exotel/ExotelService.d.ts +47 -0
  16. package/dist/cjs/types/src/services/exotel/api.d.ts +158 -0
  17. package/dist/cjs/types/src/services/exotel/index.d.ts +2 -0
  18. package/dist/cjs/types/src/utils/exotel/formatters.d.ts +8 -0
  19. package/dist/cjs/types/src/utils/exotel/index.d.ts +1 -0
  20. package/dist/esm/index.js +2 -2
  21. package/dist/esm/types/src/components/Exotel/CallButton.d.ts +10 -0
  22. package/dist/esm/types/src/components/Exotel/CallDispositionForm.d.ts +29 -0
  23. package/dist/esm/types/src/components/Exotel/ExotelPhone.d.ts +10 -0
  24. package/dist/esm/types/src/components/Exotel/ExotelWrapper.d.ts +14 -0
  25. package/dist/esm/types/src/components/Exotel/MicrophonePermission.d.ts +6 -0
  26. package/dist/esm/types/src/components/Exotel/index.d.ts +6 -0
  27. package/dist/esm/types/src/config/index.d.ts +1 -0
  28. package/dist/esm/types/src/config/voip.config.d.ts +18 -0
  29. package/dist/esm/types/src/constants/exotel.constants.d.ts +7 -0
  30. package/dist/esm/types/src/providers/ExotelProvider.d.ts +79 -0
  31. package/dist/esm/types/src/providers/VoIPProvider.d.ts +33 -0
  32. package/dist/esm/types/src/providers/index.d.ts +2 -0
  33. package/dist/esm/types/src/services/crypto/CryptoService.d.ts +23 -0
  34. package/dist/esm/types/src/services/exotel/ExotelService.d.ts +47 -0
  35. package/dist/esm/types/src/services/exotel/api.d.ts +158 -0
  36. package/dist/esm/types/src/services/exotel/index.d.ts +2 -0
  37. package/dist/esm/types/src/utils/exotel/formatters.d.ts +8 -0
  38. package/dist/esm/types/src/utils/exotel/index.d.ts +1 -0
  39. package/dist/index.d.ts +357 -3
  40. package/dist/styles.css +337 -47
  41. package/dist/types/exotel-crm-websdk.d.ts +46 -0
  42. package/export.ts +6 -0
  43. package/package.json +4 -1
  44. package/src/components/Exotel/CallButton.tsx +164 -0
  45. package/src/components/Exotel/CallDispositionForm.tsx +213 -0
  46. package/src/components/Exotel/ExotelPhone.tsx +482 -0
  47. package/src/components/Exotel/ExotelWrapper.tsx +80 -0
  48. package/src/components/Exotel/MicrophonePermission.tsx +97 -0
  49. package/src/components/Exotel/index.ts +10 -0
  50. package/src/config/index.ts +1 -0
  51. package/src/config/voip.config.ts +26 -0
  52. package/src/constants/exotel.constants.ts +7 -0
  53. package/src/providers/ExotelProvider.tsx +526 -0
  54. package/src/providers/VoIPProvider.tsx +143 -0
  55. package/src/providers/index.ts +2 -0
  56. package/src/selectors/ResearchStageSelector.tsx +1 -0
  57. package/src/services/crypto/CryptoService.ts +112 -0
  58. package/src/services/exotel/ExotelService.ts +238 -0
  59. package/src/services/exotel/api.ts +319 -0
  60. package/src/services/exotel/index.ts +2 -0
  61. package/src/utils/exotel/formatters.ts +17 -0
  62. package/src/utils/exotel/index.ts +1 -0
  63. package/types/exotel-crm-websdk.d.ts +46 -0
package/dist/styles.css CHANGED
@@ -14,6 +14,7 @@
14
14
  --color-red-200: oklch(88.5% 0.062 18.334);
15
15
  --color-red-400: oklch(70.4% 0.191 22.216);
16
16
  --color-red-500: oklch(63.7% 0.237 25.331);
17
+ --color-red-600: oklch(57.7% 0.245 27.325);
17
18
  --color-red-700: oklch(50.5% 0.213 27.518);
18
19
  --color-red-800: oklch(44.4% 0.177 26.899);
19
20
  --color-red-950: oklch(25.8% 0.092 26.042);
@@ -29,12 +30,14 @@
29
30
  --color-yellow-700: oklch(55.4% 0.135 66.442);
30
31
  --color-yellow-950: oklch(28.6% 0.066 53.813);
31
32
  --color-green-50: oklch(98.2% 0.018 155.826);
33
+ --color-green-200: oklch(92.5% 0.084 155.995);
32
34
  --color-green-400: oklch(79.2% 0.209 151.711);
33
35
  --color-green-500: oklch(72.3% 0.219 149.579);
34
36
  --color-green-600: oklch(62.7% 0.194 149.214);
35
37
  --color-green-700: oklch(52.7% 0.154 150.069);
36
38
  --color-green-950: oklch(26.6% 0.065 152.934);
37
39
  --color-blue-50: oklch(97% 0.014 254.604);
40
+ --color-blue-200: oklch(88.2% 0.059 254.128);
38
41
  --color-blue-400: oklch(70.7% 0.165 254.624);
39
42
  --color-blue-500: oklch(62.3% 0.214 259.815);
40
43
  --color-blue-600: oklch(54.6% 0.245 262.881);
@@ -49,11 +52,13 @@
49
52
  --color-pink-700: oklch(52.5% 0.223 3.958);
50
53
  --color-pink-950: oklch(28.4% 0.109 3.907);
51
54
  --color-gray-50: oklch(98.5% 0.002 247.839);
55
+ --color-gray-100: oklch(96.7% 0.003 264.542);
52
56
  --color-gray-200: oklch(92.8% 0.006 264.531);
53
57
  --color-gray-300: oklch(87.2% 0.01 258.338);
54
58
  --color-gray-500: oklch(55.1% 0.027 264.364);
55
59
  --color-gray-600: oklch(44.6% 0.03 256.802);
56
60
  --color-gray-700: oklch(37.3% 0.034 259.733);
61
+ --color-gray-900: oklch(21% 0.034 264.665);
57
62
  --color-black: #000;
58
63
  --color-white: #fff;
59
64
  --spacing: 0.25rem;
@@ -95,6 +100,7 @@
95
100
  --leading-relaxed: 1.625;
96
101
  --radius-xs: 0.125rem;
97
102
  --radius-md: 0.375rem;
103
+ --radius-lg: 0.5rem;
98
104
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
99
105
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
100
106
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
@@ -298,27 +304,99 @@
298
304
  }
299
305
  }
300
306
  @layer utilities {
307
+ .absolute {
308
+ position: absolute;
309
+ }
310
+ .fixed {
311
+ position: fixed;
312
+ }
301
313
  .relative {
302
314
  position: relative;
303
315
  }
316
+ .static {
317
+ position: static;
318
+ }
319
+ .inset-0 {
320
+ inset: calc(var(--spacing) * 0);
321
+ }
322
+ .top-4 {
323
+ top: calc(var(--spacing) * 4);
324
+ }
325
+ .right-4 {
326
+ right: calc(var(--spacing) * 4);
327
+ }
328
+ .mt-1 {
329
+ margin-top: calc(var(--spacing) * 1);
330
+ }
331
+ .mt-2 {
332
+ margin-top: calc(var(--spacing) * 2);
333
+ }
304
334
  .mt-4 {
305
335
  margin-top: calc(var(--spacing) * 4);
306
336
  }
307
337
  .mt-5 {
308
338
  margin-top: calc(var(--spacing) * 5);
309
339
  }
340
+ .mb-1 {
341
+ margin-bottom: calc(var(--spacing) * 1);
342
+ }
343
+ .mb-2 {
344
+ margin-bottom: calc(var(--spacing) * 2);
345
+ }
346
+ .mb-3 {
347
+ margin-bottom: calc(var(--spacing) * 3);
348
+ }
349
+ .mb-4 {
350
+ margin-bottom: calc(var(--spacing) * 4);
351
+ }
352
+ .mb-6 {
353
+ margin-bottom: calc(var(--spacing) * 6);
354
+ }
310
355
  .flex {
311
356
  display: flex;
312
357
  }
313
358
  .inline {
314
359
  display: inline;
315
360
  }
361
+ .inline-flex {
362
+ display: inline-flex;
363
+ }
364
+ .h-4 {
365
+ height: calc(var(--spacing) * 4);
366
+ }
367
+ .h-5 {
368
+ height: calc(var(--spacing) * 5);
369
+ }
316
370
  .h-9 {
317
371
  height: calc(var(--spacing) * 9);
318
372
  }
373
+ .h-10 {
374
+ height: calc(var(--spacing) * 10);
375
+ }
376
+ .h-12 {
377
+ height: calc(var(--spacing) * 12);
378
+ }
319
379
  .h-15 {
320
380
  height: calc(var(--spacing) * 15);
321
381
  }
382
+ .h-24 {
383
+ height: calc(var(--spacing) * 24);
384
+ }
385
+ .w-4 {
386
+ width: calc(var(--spacing) * 4);
387
+ }
388
+ .w-5 {
389
+ width: calc(var(--spacing) * 5);
390
+ }
391
+ .w-10 {
392
+ width: calc(var(--spacing) * 10);
393
+ }
394
+ .w-12 {
395
+ width: calc(var(--spacing) * 12);
396
+ }
397
+ .w-24 {
398
+ width: calc(var(--spacing) * 24);
399
+ }
322
400
  .w-48 {
323
401
  width: calc(var(--spacing) * 48);
324
402
  }
@@ -328,24 +406,64 @@
328
406
  .max-w-\[400px\] {
329
407
  max-width: 400px;
330
408
  }
409
+ .max-w-md {
410
+ max-width: var(--container-md);
411
+ }
331
412
  .flex-1 {
332
413
  flex: 1;
333
414
  }
415
+ .transform {
416
+ transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
417
+ }
418
+ .list-inside {
419
+ list-style-position: inside;
420
+ }
421
+ .list-decimal {
422
+ list-style-type: decimal;
423
+ }
334
424
  .flex-col {
335
425
  flex-direction: column;
336
426
  }
337
427
  .items-center {
338
428
  align-items: center;
339
429
  }
430
+ .justify-between {
431
+ justify-content: space-between;
432
+ }
340
433
  .justify-center {
341
434
  justify-content: center;
342
435
  }
436
+ .justify-start {
437
+ justify-content: flex-start;
438
+ }
439
+ .gap-1\.5 {
440
+ gap: calc(var(--spacing) * 1.5);
441
+ }
442
+ .gap-2 {
443
+ gap: calc(var(--spacing) * 2);
444
+ }
343
445
  .gap-4 {
344
446
  gap: calc(var(--spacing) * 4);
345
447
  }
448
+ .gap-6 {
449
+ gap: calc(var(--spacing) * 6);
450
+ }
346
451
  .gap-8 {
347
452
  gap: calc(var(--spacing) * 8);
348
453
  }
454
+ .space-y-1 {
455
+ :where(& > :not(:last-child)) {
456
+ --tw-space-y-reverse: 0;
457
+ margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
458
+ margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
459
+ }
460
+ }
461
+ .rounded-full {
462
+ border-radius: calc(infinity * 1px);
463
+ }
464
+ .rounded-lg {
465
+ border-radius: var(--radius-lg);
466
+ }
349
467
  .rounded-md {
350
468
  border-radius: var(--radius-md);
351
469
  }
@@ -353,31 +471,203 @@
353
471
  border-style: var(--tw-border-style);
354
472
  border-width: 1px;
355
473
  }
474
+ .border-2 {
475
+ border-style: var(--tw-border-style);
476
+ border-width: 2px;
477
+ }
478
+ .border-t {
479
+ border-top-style: var(--tw-border-style);
480
+ border-top-width: 1px;
481
+ }
482
+ .border-blue-200 {
483
+ border-color: var(--color-blue-200);
484
+ }
485
+ .border-gray-200 {
486
+ border-color: var(--color-gray-200);
487
+ }
488
+ .border-gray-300 {
489
+ border-color: var(--color-gray-300);
490
+ }
491
+ .border-green-200 {
492
+ border-color: var(--color-green-200);
493
+ }
356
494
  .border-red-200 {
357
495
  border-color: var(--color-red-200);
358
496
  }
497
+ .bg-black\/50 {
498
+ background-color: color-mix(in srgb, #000 50%, transparent);
499
+ @supports (color: color-mix(in lab, red, red)) {
500
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
501
+ }
502
+ }
503
+ .bg-blue-50 {
504
+ background-color: var(--color-blue-50);
505
+ }
506
+ .bg-blue-500 {
507
+ background-color: var(--color-blue-500);
508
+ }
509
+ .bg-gray-100 {
510
+ background-color: var(--color-gray-100);
511
+ }
512
+ .bg-gray-200 {
513
+ background-color: var(--color-gray-200);
514
+ }
515
+ .bg-green-50 {
516
+ background-color: var(--color-green-50);
517
+ }
518
+ .bg-green-500 {
519
+ background-color: var(--color-green-500);
520
+ }
521
+ .bg-orange-500 {
522
+ background-color: var(--color-orange-500);
523
+ }
359
524
  .bg-red-50 {
360
525
  background-color: var(--color-red-50);
361
526
  }
362
527
  .bg-transparent {
363
528
  background-color: transparent;
364
529
  }
530
+ .bg-white {
531
+ background-color: var(--color-white);
532
+ }
533
+ .p-1 {
534
+ padding: calc(var(--spacing) * 1);
535
+ }
536
+ .p-3 {
537
+ padding: calc(var(--spacing) * 3);
538
+ }
539
+ .p-4 {
540
+ padding: calc(var(--spacing) * 4);
541
+ }
365
542
  .p-5 {
366
543
  padding: calc(var(--spacing) * 5);
367
544
  }
545
+ .p-6 {
546
+ padding: calc(var(--spacing) * 6);
547
+ }
368
548
  .p-8 {
369
549
  padding: calc(var(--spacing) * 8);
370
550
  }
371
551
  .px-2 {
372
552
  padding-inline: calc(var(--spacing) * 2);
373
553
  }
554
+ .px-3 {
555
+ padding-inline: calc(var(--spacing) * 3);
556
+ }
557
+ .px-6 {
558
+ padding-inline: calc(var(--spacing) * 6);
559
+ }
560
+ .px-8 {
561
+ padding-inline: calc(var(--spacing) * 8);
562
+ }
563
+ .py-1 {
564
+ padding-block: calc(var(--spacing) * 1);
565
+ }
566
+ .pt-4 {
567
+ padding-top: calc(var(--spacing) * 4);
568
+ }
569
+ .text-center {
570
+ text-align: center;
571
+ }
572
+ .text-lg {
573
+ font-size: var(--text-lg);
574
+ line-height: var(--tw-leading, var(--text-lg--line-height));
575
+ }
576
+ .text-sm {
577
+ font-size: var(--text-sm);
578
+ line-height: var(--tw-leading, var(--text-sm--line-height));
579
+ }
580
+ .text-xl {
581
+ font-size: var(--text-xl);
582
+ line-height: var(--tw-leading, var(--text-xl--line-height));
583
+ }
584
+ .text-xs {
585
+ font-size: var(--text-xs);
586
+ line-height: var(--tw-leading, var(--text-xs--line-height));
587
+ }
588
+ .font-medium {
589
+ --tw-font-weight: var(--font-weight-medium);
590
+ font-weight: var(--font-weight-medium);
591
+ }
592
+ .font-semibold {
593
+ --tw-font-weight: var(--font-weight-semibold);
594
+ font-weight: var(--font-weight-semibold);
595
+ }
596
+ .break-all {
597
+ word-break: break-all;
598
+ }
599
+ .text-blue-600 {
600
+ color: var(--color-blue-600);
601
+ }
602
+ .text-gray-500 {
603
+ color: var(--color-gray-500);
604
+ }
605
+ .text-gray-600 {
606
+ color: var(--color-gray-600);
607
+ }
608
+ .text-gray-900 {
609
+ color: var(--color-gray-900);
610
+ }
611
+ .text-green-500 {
612
+ color: var(--color-green-500);
613
+ }
614
+ .text-green-600 {
615
+ color: var(--color-green-600);
616
+ }
617
+ .text-red-500 {
618
+ color: var(--color-red-500);
619
+ }
620
+ .text-red-600 {
621
+ color: var(--color-red-600);
622
+ }
374
623
  .text-red-700 {
375
624
  color: var(--color-red-700);
376
625
  }
626
+ .text-white {
627
+ color: var(--color-white);
628
+ }
629
+ .shadow-2xl {
630
+ --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
631
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
632
+ }
377
633
  .ring {
378
634
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
379
635
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
380
636
  }
637
+ .outline {
638
+ outline-style: var(--tw-outline-style);
639
+ outline-width: 1px;
640
+ }
641
+ .transition-colors {
642
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
643
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
644
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
645
+ }
646
+ .ease-in-out {
647
+ --tw-ease: var(--ease-in-out);
648
+ transition-timing-function: var(--ease-in-out);
649
+ }
650
+ .hover\:bg-gray-50 {
651
+ &:hover {
652
+ @media (hover: hover) {
653
+ background-color: var(--color-gray-50);
654
+ }
655
+ }
656
+ }
657
+ .hover\:bg-gray-100 {
658
+ &:hover {
659
+ @media (hover: hover) {
660
+ background-color: var(--color-gray-100);
661
+ }
662
+ }
663
+ }
664
+ .hover\:bg-green-600 {
665
+ &:hover {
666
+ @media (hover: hover) {
667
+ background-color: var(--color-green-600);
668
+ }
669
+ }
670
+ }
381
671
  .hover\:no-underline {
382
672
  &:hover {
383
673
  @media (hover: hover) {
@@ -4951,31 +5241,6 @@
4951
5241
  inherits: false;
4952
5242
  initial-value: 0;
4953
5243
  }
4954
- @property --tw-rotate-x {
4955
- syntax: "*";
4956
- inherits: false;
4957
- }
4958
- @property --tw-rotate-y {
4959
- syntax: "*";
4960
- inherits: false;
4961
- }
4962
- @property --tw-rotate-z {
4963
- syntax: "*";
4964
- inherits: false;
4965
- }
4966
- @property --tw-skew-x {
4967
- syntax: "*";
4968
- inherits: false;
4969
- }
4970
- @property --tw-skew-y {
4971
- syntax: "*";
4972
- inherits: false;
4973
- }
4974
- @property --tw-space-y-reverse {
4975
- syntax: "*";
4976
- inherits: false;
4977
- initial-value: 0;
4978
- }
4979
5244
  @property --tw-space-x-reverse {
4980
5245
  syntax: "*";
4981
5246
  inherits: false;
@@ -4985,10 +5250,6 @@
4985
5250
  syntax: "*";
4986
5251
  inherits: false;
4987
5252
  }
4988
- @property --tw-font-weight {
4989
- syntax: "*";
4990
- inherits: false;
4991
- }
4992
5253
  @property --tw-tracking {
4993
5254
  syntax: "*";
4994
5255
  inherits: false;
@@ -5013,11 +5274,6 @@
5013
5274
  syntax: "*";
5014
5275
  inherits: false;
5015
5276
  }
5016
- @property --tw-outline-style {
5017
- syntax: "*";
5018
- inherits: false;
5019
- initial-value: solid;
5020
- }
5021
5277
  @property --tw-blur {
5022
5278
  syntax: "*";
5023
5279
  inherits: false;
@@ -5075,10 +5331,6 @@
5075
5331
  syntax: "*";
5076
5332
  inherits: false;
5077
5333
  }
5078
- @property --tw-ease {
5079
- syntax: "*";
5080
- inherits: false;
5081
- }
5082
5334
  @property --tw-content {
5083
5335
  syntax: "*";
5084
5336
  initial-value: "";
@@ -5150,11 +5402,40 @@
5150
5402
  }
5151
5403
  }
5152
5404
  }
5405
+ @property --tw-rotate-x {
5406
+ syntax: "*";
5407
+ inherits: false;
5408
+ }
5409
+ @property --tw-rotate-y {
5410
+ syntax: "*";
5411
+ inherits: false;
5412
+ }
5413
+ @property --tw-rotate-z {
5414
+ syntax: "*";
5415
+ inherits: false;
5416
+ }
5417
+ @property --tw-skew-x {
5418
+ syntax: "*";
5419
+ inherits: false;
5420
+ }
5421
+ @property --tw-skew-y {
5422
+ syntax: "*";
5423
+ inherits: false;
5424
+ }
5425
+ @property --tw-space-y-reverse {
5426
+ syntax: "*";
5427
+ inherits: false;
5428
+ initial-value: 0;
5429
+ }
5153
5430
  @property --tw-border-style {
5154
5431
  syntax: "*";
5155
5432
  inherits: false;
5156
5433
  initial-value: solid;
5157
5434
  }
5435
+ @property --tw-font-weight {
5436
+ syntax: "*";
5437
+ inherits: false;
5438
+ }
5158
5439
  @property --tw-shadow {
5159
5440
  syntax: "*";
5160
5441
  inherits: false;
@@ -5220,6 +5501,15 @@
5220
5501
  inherits: false;
5221
5502
  initial-value: 0 0 #0000;
5222
5503
  }
5504
+ @property --tw-outline-style {
5505
+ syntax: "*";
5506
+ inherits: false;
5507
+ initial-value: solid;
5508
+ }
5509
+ @property --tw-ease {
5510
+ syntax: "*";
5511
+ inherits: false;
5512
+ }
5223
5513
  @keyframes spin {
5224
5514
  to {
5225
5515
  transform: rotate(360deg);
@@ -5233,7 +5523,14 @@
5233
5523
  @layer properties {
5234
5524
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
5235
5525
  *, ::before, ::after, ::backdrop {
5526
+ --tw-rotate-x: initial;
5527
+ --tw-rotate-y: initial;
5528
+ --tw-rotate-z: initial;
5529
+ --tw-skew-x: initial;
5530
+ --tw-skew-y: initial;
5531
+ --tw-space-y-reverse: 0;
5236
5532
  --tw-border-style: solid;
5533
+ --tw-font-weight: initial;
5237
5534
  --tw-shadow: 0 0 #0000;
5238
5535
  --tw-shadow-color: initial;
5239
5536
  --tw-shadow-alpha: 100%;
@@ -5248,25 +5545,19 @@
5248
5545
  --tw-ring-offset-width: 0px;
5249
5546
  --tw-ring-offset-color: #fff;
5250
5547
  --tw-ring-offset-shadow: 0 0 #0000;
5548
+ --tw-outline-style: solid;
5549
+ --tw-ease: initial;
5251
5550
  --tw-translate-x: 0;
5252
5551
  --tw-translate-y: 0;
5253
5552
  --tw-translate-z: 0;
5254
- --tw-rotate-x: initial;
5255
- --tw-rotate-y: initial;
5256
- --tw-rotate-z: initial;
5257
- --tw-skew-x: initial;
5258
- --tw-skew-y: initial;
5259
- --tw-space-y-reverse: 0;
5260
5553
  --tw-space-x-reverse: 0;
5261
5554
  --tw-leading: initial;
5262
- --tw-font-weight: initial;
5263
5555
  --tw-tracking: initial;
5264
5556
  --tw-ordinal: initial;
5265
5557
  --tw-slashed-zero: initial;
5266
5558
  --tw-numeric-figure: initial;
5267
5559
  --tw-numeric-spacing: initial;
5268
5560
  --tw-numeric-fraction: initial;
5269
- --tw-outline-style: solid;
5270
5561
  --tw-blur: initial;
5271
5562
  --tw-brightness: initial;
5272
5563
  --tw-contrast: initial;
@@ -5281,7 +5572,6 @@
5281
5572
  --tw-drop-shadow-alpha: 100%;
5282
5573
  --tw-drop-shadow-size: initial;
5283
5574
  --tw-duration: initial;
5284
- --tw-ease: initial;
5285
5575
  --tw-content: "";
5286
5576
  }
5287
5577
  }
@@ -0,0 +1,46 @@
1
+ declare module '@exotel-npm-dev/exotel-ip-calling-crm-websdk' {
2
+ export interface CallEventData {
3
+ callId: string
4
+ remoteId: string
5
+ remoteDisplayName: string
6
+ callDirection: string
7
+ callState: string
8
+ callDuration: string
9
+ callStartedTime: string
10
+ callEstablishedTime: string
11
+ callEndedTime: string
12
+ callAnswerTime: string
13
+ callEndReason: string
14
+ sessionId: string
15
+ callFromNumber?: string
16
+ status?: string
17
+ }
18
+
19
+ export interface ExotelWebPhoneSDK {
20
+ MakeCall: (
21
+ phoneNumber: string,
22
+ callback: (status: string, data: any) => void
23
+ ) => void
24
+ AcceptCall: () => void
25
+ HangupCall: () => void
26
+ ToggleHold: () => void
27
+ ToggleMute: () => void
28
+ SendDTMF: (digit: string) => void
29
+ RegisterDevice: () => void
30
+ UnRegisterDevice: () => void
31
+ }
32
+
33
+ export default class ExotelCRMWebSDK {
34
+ constructor(
35
+ accessToken: string,
36
+ agentUserId: string,
37
+ autoConnectVOIP: boolean
38
+ )
39
+
40
+ Initialize(
41
+ callEventHandler: (event: string, data: CallEventData) => void,
42
+ registerEventHandler: (state: string) => void,
43
+ sessionEventHandler: (state: string, data: any) => void
44
+ ): Promise<ExotelWebPhoneSDK | null>
45
+ }
46
+ }
package/export.ts CHANGED
@@ -5,3 +5,9 @@ export * from './src/multi-selectors/export';
5
5
  export * from './src/selectors/export';
6
6
  export * from './src/utils/constants';
7
7
  export * from './src/utils/openInNewTab';
8
+
9
+ // Exotel VoIP Integration
10
+ export * from './src/services/exotel';
11
+ export * from './src/providers/ExotelProvider';
12
+ export * from './src/components/Exotel';
13
+ export * from './src/providers/VoIPProvider';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campxdev/campx-web-utils",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "author": "CampX",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -28,12 +28,14 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@campxdev/react-blueprint": "3.0.4",
31
+ "@exotel-npm-dev/exotel-ip-calling-crm-websdk": "^1.2.2",
31
32
  "@hookform/resolvers": "^2.9.10",
32
33
  "axios": "^1.7.2",
33
34
  "cookie-js": "^0.0.1",
34
35
  "date-fns": "^4.1.0",
35
36
  "device-detector-js": "^3.0.3",
36
37
  "framer-motion": "^11.3.21",
38
+ "js-cookie": "^3.0.5",
37
39
  "lucide-react": "^0.553.0",
38
40
  "pullstate": "^1.25.0",
39
41
  "react": "^18.3.1",
@@ -44,6 +46,7 @@
44
46
  "react-router-dom": "^6.24.0",
45
47
  "react-scripts": "5.0.1",
46
48
  "react-toastify": "^9.0.1",
49
+ "scrypt-js": "^3.0.1",
47
50
  "typescript": "^5.5.2",
48
51
  "uuid": "^10.0.0",
49
52
  "web-vitals": "^2.1.0",