medos-sdk 1.1.12 → 1.1.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.
@@ -142,6 +142,7 @@ export interface AppointmentState {
142
142
  bookingOptionType: BookingOptionType;
143
143
  showPackageExplorer: boolean;
144
144
  packagesLoading: boolean;
145
+ arePackagesConfigured: boolean;
145
146
  bookingType: "PACKAGE_PURCHASE" | "ONE_TIME_APPOINTMENT" | "USE_ACTIVE_PACKAGE";
146
147
  paymentMode: "CASH" | "CARD" | string;
147
148
  packageConfigId?: number;
@@ -1,3 +1,3 @@
1
- export declare const API_BASE_URL = "https://api.medos.one/v1";
1
+ export declare const API_BASE_URL = "https://api-dev.medapi.in/v1";
2
2
  export declare const MONTHS: string[];
3
3
  export declare const WEEKDAYS: string[];
@@ -12,6 +12,7 @@ export function injectThemedStyles() {
12
12
  /* Colors */
13
13
  --medos-color-primary: #27903f;
14
14
  --medos-color-primary-dark: #1e7032;
15
+ --medos-color-primary-hover: #1e7032;
15
16
  --medos-color-background: #ffffff;
16
17
  --medos-color-background-secondary: #f9fafb;
17
18
  --medos-color-surface: #ffffff;
@@ -208,6 +209,11 @@ export function injectThemedStyles() {
208
209
  border: 1px solid var(--medos-color-border, #e5e7eb);
209
210
  }
210
211
 
212
+ .medos-btn-secondary:hover:not(:disabled) {
213
+ background: var(--medos-color-background-secondary, #f9fafb);
214
+ border-color: var(--medos-color-border-hover, #d1d5db);
215
+ }
216
+
211
217
  .medos-actions {
212
218
  display: flex;
213
219
  justify-content: flex-end;
@@ -238,6 +244,373 @@ export function injectThemedStyles() {
238
244
  background: rgba(39, 144, 63, 0.05);
239
245
  }
240
246
 
247
+ /* Booking Option Cards */
248
+ .medos-options-grid {
249
+ display: grid;
250
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
251
+ gap: var(--medos-spacing-lg, 16px);
252
+ }
253
+
254
+ .medos-option-card {
255
+ display: flex;
256
+ flex-direction: column;
257
+ align-items: center;
258
+ padding: var(--medos-spacing-2xl, 24px);
259
+ border: 1px solid var(--medos-color-border, #e5e7eb);
260
+ border-radius: var(--medos-radius-lg, 12px);
261
+ cursor: pointer;
262
+ transition: var(--medos-transition-normal);
263
+ text-align: center;
264
+ background-color: var(--medos-color-surface, #fff);
265
+ box-shadow: var(--medos-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
266
+ }
267
+
268
+ .medos-option-card:hover {
269
+ border-color: var(--medos-color-primary, #27903f);
270
+ background: var(--medos-color-surface-hover, #f9fafb);
271
+ }
272
+
273
+ .medos-option-card.selected {
274
+ border-color: var(--medos-color-primary, #27903f);
275
+ background: rgba(39, 144, 63, 0.08);
276
+ box-shadow: 0 0 0 1px var(--medos-color-primary, #27903f);
277
+ }
278
+
279
+ .medos-option-icon {
280
+ font-size: 32px;
281
+ margin-bottom: var(--medos-spacing-md, 12px);
282
+ }
283
+
284
+ .medos-option-title {
285
+ margin: 0 0 var(--medos-spacing-sm, 8px) 0;
286
+ font-size: var(--medos-typography-font-size-md, 16px);
287
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
288
+ color: var(--medos-color-text, #111827);
289
+ }
290
+
291
+ .medos-option-description {
292
+ margin: 0;
293
+ font-size: var(--medos-typography-font-size-sm, 14px);
294
+ color: var(--medos-color-text-secondary, #6b7280);
295
+ line-height: 1.5;
296
+ }
297
+
298
+ .medos-session-pack-badge {
299
+ margin-top: var(--medos-spacing-md, 12px);
300
+ padding: 6px 14px;
301
+ background-color: var(--medos-color-success-background, #dcfce7);
302
+ color: var(--medos-color-success, #166534);
303
+ border-radius: var(--medos-radius-full, 999px);
304
+ font-size: var(--medos-typography-font-size-xs, 12px);
305
+ font-weight: var(--medos-typography-font-weight-medium, 500);
306
+ }
307
+
308
+ /* Session Pack Cards */
309
+ .medos-session-packs-section {
310
+ margin-bottom: var(--medos-spacing-sm, 8px);
311
+ }
312
+
313
+ .medos-session-packs-title {
314
+ margin: 0 0 var(--medos-spacing-lg, 16px) 0;
315
+ font-size: 15px;
316
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
317
+ color: var(--medos-color-text, #111827);
318
+ }
319
+
320
+ .medos-session-packs-list {
321
+ display: flex;
322
+ flex-direction: column;
323
+ gap: var(--medos-spacing-md, 12px);
324
+ }
325
+
326
+ .medos-session-pack-card {
327
+ display: flex;
328
+ justify-content: space-between;
329
+ align-items: center;
330
+ padding: var(--medos-spacing-lg, 16px);
331
+ border: 1px solid var(--medos-color-border, #e5e7eb);
332
+ border-radius: var(--medos-radius-lg, 12px);
333
+ cursor: pointer;
334
+ transition: var(--medos-transition-normal);
335
+ background-color: var(--medos-color-surface, #fff);
336
+ }
337
+
338
+ .medos-session-pack-card:hover {
339
+ border-color: var(--medos-color-primary, #27903f);
340
+ background: var(--medos-color-surface-hover, #f9fafb);
341
+ }
342
+
343
+ .medos-session-pack-card.selected {
344
+ border-color: var(--medos-color-primary, #27903f);
345
+ background: rgba(39, 144, 63, 0.08);
346
+ }
347
+
348
+ .medos-session-pack-info {
349
+ display: flex;
350
+ flex-direction: column;
351
+ gap: 4px;
352
+ }
353
+
354
+ .medos-session-pack-name {
355
+ font-size: var(--medos-typography-font-size-sm, 14px);
356
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
357
+ color: var(--medos-color-text, #111827);
358
+ }
359
+
360
+ .medos-session-pack-remaining {
361
+ font-size: 13px;
362
+ color: var(--medos-color-text-secondary, #6b7280);
363
+ }
364
+
365
+ .medos-session-pack-doctor {
366
+ font-size: 13px;
367
+ color: var(--medos-color-text-secondary, #6b7280);
368
+ }
369
+
370
+ .medos-session-pack-expiry {
371
+ font-size: var(--medos-typography-font-size-xs, 12px);
372
+ color: var(--medos-color-error, #dc2626);
373
+ font-weight: var(--medos-typography-font-weight-medium, 500);
374
+ }
375
+
376
+ /* Package Cards */
377
+ .medos-packages-grid {
378
+ display: grid;
379
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
380
+ gap: var(--medos-spacing-lg, 16px);
381
+ }
382
+
383
+ .medos-package-card {
384
+ display: flex;
385
+ flex-direction: column;
386
+ padding: var(--medos-spacing-xl, 20px);
387
+ border: 1px solid var(--medos-color-border, #e5e7eb);
388
+ border-radius: var(--medos-radius-lg, 12px);
389
+ cursor: pointer;
390
+ transition: var(--medos-transition-normal);
391
+ background-color: var(--medos-color-surface, #fff);
392
+ box-shadow: var(--medos-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
393
+ }
394
+
395
+ .medos-package-card:hover {
396
+ border-color: var(--medos-color-primary, #27903f);
397
+ background: var(--medos-color-surface-hover, #f9fafb);
398
+ }
399
+
400
+ .medos-package-card.selected {
401
+ border-color: var(--medos-color-primary, #27903f);
402
+ background: rgba(39, 144, 63, 0.08);
403
+ box-shadow: 0 0 0 1px var(--medos-color-primary, #27903f);
404
+ }
405
+
406
+ .medos-package-name {
407
+ margin: 0 0 var(--medos-spacing-sm, 8px) 0;
408
+ font-size: var(--medos-typography-font-size-md, 16px);
409
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
410
+ color: var(--medos-color-text, #111827);
411
+ }
412
+
413
+ .medos-package-description {
414
+ margin: 0 0 var(--medos-spacing-lg, 16px) 0;
415
+ font-size: var(--medos-typography-font-size-sm, 14px);
416
+ color: var(--medos-color-text-secondary, #6b7280);
417
+ line-height: 1.5;
418
+ flex: 1;
419
+ }
420
+
421
+ .medos-package-doctors {
422
+ display: flex;
423
+ flex-wrap: wrap;
424
+ gap: 6px;
425
+ margin-bottom: var(--medos-spacing-md, 12px);
426
+ }
427
+
428
+ .medos-doctor-badge {
429
+ font-size: var(--medos-typography-font-size-xs, 12px);
430
+ color: var(--medos-color-text, #374151);
431
+ background-color: var(--medos-color-background-secondary, #f1f5f9);
432
+ padding: 4px 10px;
433
+ border-radius: var(--medos-radius-full, 999px);
434
+ }
435
+
436
+ .medos-consultation-modes {
437
+ display: flex;
438
+ gap: var(--medos-spacing-sm, 8px);
439
+ margin-bottom: var(--medos-spacing-md, 12px);
440
+ }
441
+
442
+ .medos-mode-badge {
443
+ font-size: 11px;
444
+ color: var(--medos-color-text-secondary, #6b7280);
445
+ background-color: var(--medos-color-background-secondary, #f1f5f9);
446
+ padding: 4px 8px;
447
+ border-radius: 6px;
448
+ }
449
+
450
+ .medos-package-details {
451
+ display: flex;
452
+ justify-content: space-between;
453
+ align-items: center;
454
+ padding-top: var(--medos-spacing-lg, 16px);
455
+ border-top: 1px solid var(--medos-color-border, #e5e7eb);
456
+ }
457
+
458
+ .medos-package-sessions {
459
+ font-size: 13px;
460
+ color: var(--medos-color-text-secondary, #6b7280);
461
+ }
462
+
463
+ .medos-package-price-container {
464
+ display: flex;
465
+ flex-direction: column;
466
+ align-items: flex-end;
467
+ gap: 4px;
468
+ }
469
+
470
+ .medos-original-price {
471
+ font-size: var(--medos-typography-font-size-sm, 14px);
472
+ color: var(--medos-color-text-secondary, #6b7280);
473
+ text-decoration: line-through;
474
+ }
475
+
476
+ .medos-package-price {
477
+ font-size: var(--medos-typography-font-size-lg, 18px);
478
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
479
+ color: var(--medos-color-primary, #27903f);
480
+ }
481
+
482
+ .medos-per-session-price {
483
+ font-size: var(--medos-typography-font-size-xs, 12px);
484
+ color: var(--medos-color-text-secondary, #6b7280);
485
+ font-weight: var(--medos-typography-font-weight-medium, 500);
486
+ }
487
+
488
+ .medos-discount-badge {
489
+ font-size: 11px;
490
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
491
+ color: #fff;
492
+ background-color: var(--medos-color-success, #16a34a);
493
+ padding: 2px 8px;
494
+ border-radius: var(--medos-radius-full, 999px);
495
+ }
496
+
497
+ .medos-package-validity {
498
+ margin-top: var(--medos-spacing-sm, 8px);
499
+ font-size: var(--medos-typography-font-size-xs, 12px);
500
+ color: var(--medos-color-text-secondary, #6b7280);
501
+ }
502
+
503
+ /* Summary Step Styles */
504
+ .medos-summary-container {
505
+ display: flex;
506
+ flex-direction: column;
507
+ gap: var(--medos-spacing-xl, 20px);
508
+ }
509
+
510
+ .medos-summary-title {
511
+ margin: 0;
512
+ font-size: var(--medos-typography-font-size-xl, 20px);
513
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
514
+ color: var(--medos-color-text, #111827);
515
+ }
516
+
517
+ .medos-summary-subtitle {
518
+ margin: 0;
519
+ font-size: var(--medos-typography-font-size-sm, 14px);
520
+ color: var(--medos-color-text-secondary, #6b7280);
521
+ }
522
+
523
+ .medos-summary-section {
524
+ display: flex;
525
+ flex-direction: column;
526
+ gap: var(--medos-spacing-md, 12px);
527
+ }
528
+
529
+ .medos-summary-section-title {
530
+ margin: 0;
531
+ font-size: var(--medos-typography-font-size-md, 16px);
532
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
533
+ color: var(--medos-color-text, #111827);
534
+ display: flex;
535
+ align-items: center;
536
+ gap: var(--medos-spacing-sm, 8px);
537
+ }
538
+
539
+ .medos-summary-card {
540
+ display: flex;
541
+ flex-direction: column;
542
+ gap: var(--medos-spacing-md, 12px);
543
+ padding: var(--medos-spacing-lg, 16px);
544
+ background-color: var(--medos-color-background-secondary, #f9fafb);
545
+ border-radius: var(--medos-radius-md, 8px);
546
+ border: 1px solid var(--medos-color-border, #e5e7eb);
547
+ }
548
+
549
+ .medos-summary-row {
550
+ display: flex;
551
+ justify-content: space-between;
552
+ align-items: center;
553
+ }
554
+
555
+ .medos-summary-label {
556
+ font-size: var(--medos-typography-font-size-sm, 14px);
557
+ color: var(--medos-color-text-secondary, #6b7280);
558
+ }
559
+
560
+ .medos-summary-value {
561
+ font-size: var(--medos-typography-font-size-sm, 14px);
562
+ font-weight: var(--medos-typography-font-weight-medium, 500);
563
+ color: var(--medos-color-text, #111827);
564
+ text-align: right;
565
+ }
566
+
567
+ .medos-summary-total-row {
568
+ padding-top: var(--medos-spacing-md, 12px);
569
+ border-top: 1px solid var(--medos-color-border, #e5e7eb);
570
+ margin-top: 4px;
571
+ }
572
+
573
+ .medos-summary-total-label {
574
+ font-size: var(--medos-typography-font-size-md, 16px);
575
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
576
+ color: var(--medos-color-text, #111827);
577
+ }
578
+
579
+ .medos-summary-total-value {
580
+ font-size: var(--medos-typography-font-size-lg, 18px);
581
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
582
+ color: var(--medos-color-primary, #27903f);
583
+ }
584
+
585
+ .medos-summary-price-container {
586
+ display: flex;
587
+ align-items: center;
588
+ gap: var(--medos-spacing-sm, 8px);
589
+ flex-wrap: wrap;
590
+ justify-content: flex-end;
591
+ }
592
+
593
+ .medos-summary-strikethrough-price {
594
+ font-size: var(--medos-typography-font-size-sm, 14px);
595
+ color: var(--medos-color-text-secondary, #6b7280);
596
+ text-decoration: line-through;
597
+ }
598
+
599
+ .medos-summary-discount-badge {
600
+ font-size: 11px;
601
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
602
+ color: #fff;
603
+ background-color: var(--medos-color-success, #16a34a);
604
+ padding: 2px 8px;
605
+ border-radius: var(--medos-radius-full, 999px);
606
+ }
607
+
608
+ .medos-summary-remaining-info {
609
+ font-size: 13px;
610
+ color: var(--medos-color-text-secondary, #6b7280);
611
+ margin-top: 4px;
612
+ }
613
+
241
614
  /* Time Slots */
242
615
  .medos-slots-grid {
243
616
  display: grid;
@@ -268,6 +641,114 @@ export function injectThemedStyles() {
268
641
  background: rgba(39, 144, 63, 0.1);
269
642
  }
270
643
 
644
+ /* Grouped Slots Container */
645
+ .medos-slots-container-grouped {
646
+ display: flex;
647
+ flex-direction: column;
648
+ gap: var(--medos-spacing-lg, 16px);
649
+ }
650
+
651
+ .medos-slot-period {
652
+ display: flex;
653
+ flex-direction: column;
654
+ gap: var(--medos-spacing-md, 12px);
655
+ }
656
+
657
+ .medos-slot-period-header {
658
+ display: flex;
659
+ align-items: center;
660
+ justify-content: space-between;
661
+ padding-bottom: var(--medos-spacing-sm, 8px);
662
+ border-bottom: 2px solid var(--medos-color-border, #e5e7eb);
663
+ }
664
+
665
+ .medos-slot-period-title {
666
+ font-size: var(--medos-typography-font-size-sm, 14px);
667
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
668
+ color: var(--medos-color-text, #111827);
669
+ text-transform: uppercase;
670
+ letter-spacing: 0.5px;
671
+ }
672
+
673
+ .medos-slot-period-count {
674
+ font-size: var(--medos-typography-font-size-xs, 12px);
675
+ color: var(--medos-color-text-secondary, #6b7280);
676
+ background: var(--medos-color-background-secondary, #f9fafb);
677
+ padding: var(--medos-spacing-xs, 4px) var(--medos-spacing-sm, 8px);
678
+ border-radius: var(--medos-radius-full, 999px);
679
+ }
680
+
681
+ .medos-slot-period-grid {
682
+ display: grid;
683
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
684
+ gap: var(--medos-spacing-md, 12px);
685
+ }
686
+
687
+ /* Slot Button */
688
+ .medos-slot-btn {
689
+ display: flex;
690
+ flex-direction: column;
691
+ align-items: center;
692
+ justify-content: center;
693
+ gap: var(--medos-spacing-xs, 6px);
694
+ padding: var(--medos-spacing-md, 12px) var(--medos-spacing-sm, 10px);
695
+ border: 2px solid var(--medos-color-border, #e5e7eb);
696
+ border-radius: var(--medos-radius-md, 8px);
697
+ background: var(--medos-color-surface, #fff);
698
+ cursor: pointer;
699
+ font-family: inherit;
700
+ transition: all var(--medos-transition-normal);
701
+ position: relative;
702
+ min-height: 80px;
703
+ }
704
+
705
+ .medos-slot-btn:hover:not(:disabled) {
706
+ border-color: var(--medos-color-primary, #27903f);
707
+ background: var(--medos-color-surface-hover, #f9fafb);
708
+ transform: translateY(-2px);
709
+ box-shadow: 0 4px 12px rgba(39, 144, 63, 0.15);
710
+ }
711
+
712
+ .medos-slot-btn:active:not(:disabled) {
713
+ transform: translateY(0);
714
+ }
715
+
716
+ .medos-slot-btn.selected {
717
+ border-color: var(--medos-color-primary, #27903f);
718
+ background: var(--medos-color-primary, #27903f);
719
+ color: var(--medos-color-text-on-primary, #fff);
720
+ box-shadow: 0 4px 12px rgba(39, 144, 63, 0.3);
721
+ }
722
+
723
+ .medos-slot-time-range {
724
+ display: flex;
725
+ align-items: center;
726
+ justify-content: center;
727
+ gap: var(--medos-spacing-xs, 4px);
728
+ font-weight: var(--medos-typography-font-weight-semibold, 600);
729
+ font-size: var(--medos-typography-font-size-md, 16px);
730
+ }
731
+
732
+ .medos-slot-start-time {
733
+ color: inherit;
734
+ }
735
+
736
+ .medos-slot-separator {
737
+ color: inherit;
738
+ opacity: 0.7;
739
+ font-size: var(--medos-typography-font-size-sm, 14px);
740
+ }
741
+
742
+ .medos-slot-end-time {
743
+ color: inherit;
744
+ }
745
+
746
+ .medos-slot-duration {
747
+ font-size: var(--medos-typography-font-size-xs, 12px);
748
+ opacity: 0.75;
749
+ font-weight: var(--medos-typography-font-weight-normal, 400);
750
+ }
751
+
271
752
  /* Phone Input */
272
753
  .medos-phone-input-row {
273
754
  display: flex;
@@ -442,6 +923,52 @@ export function injectThemedStyles() {
442
923
  background: rgba(39, 144, 63, 0.1);
443
924
  font-weight: var(--medos-typography-font-weight-semibold, 600);
444
925
  }
926
+
927
+ /* Responsive Styles */
928
+ @media (max-width: 768px) {
929
+ .medos-slot-period-grid {
930
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
931
+ }
932
+
933
+ .medos-slot-btn {
934
+ min-height: 75px;
935
+ padding: var(--medos-spacing-sm, 10px) var(--medos-spacing-xs, 6px);
936
+ }
937
+
938
+ .medos-slot-time-range {
939
+ font-size: var(--medos-typography-font-size-sm, 14px);
940
+ }
941
+
942
+ .medos-slot-duration {
943
+ font-size: var(--medos-typography-font-size-xs, 11px);
944
+ }
945
+ }
946
+
947
+ @media (max-width: 480px) {
948
+ .medos-slot-period-grid {
949
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
950
+ }
951
+
952
+ .medos-slot-btn {
953
+ min-height: 70px;
954
+ padding: var(--medos-spacing-sm, 8px) var(--medos-spacing-xs, 4px);
955
+ gap: var(--medos-spacing-xs, 4px);
956
+ }
957
+
958
+ .medos-slot-time-range {
959
+ font-size: var(--medos-typography-font-size-sm, 13px);
960
+ }
961
+
962
+ .medos-slot-duration {
963
+ font-size: var(--medos-typography-font-size-xs, 10px);
964
+ }
965
+
966
+ .medos-slot-period-header {
967
+ flex-direction: column;
968
+ align-items: flex-start;
969
+ gap: var(--medos-spacing-xs, 4px);
970
+ }
971
+ }
445
972
  `;
446
973
  document.head.appendChild(styleElement);
447
974
  }