@kenyaemr/esm-patient-clinical-view-app 5.4.2-pre.2716 → 5.4.2-pre.2724

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 (72) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/dist/127.js +1 -1
  3. package/dist/40.js +1 -1
  4. package/dist/805.js +1 -0
  5. package/dist/805.js.map +1 -0
  6. package/dist/916.js +1 -1
  7. package/dist/kenyaemr-esm-patient-clinical-view-app.js +2 -2
  8. package/dist/kenyaemr-esm-patient-clinical-view-app.js.buildmanifest.json +36 -36
  9. package/dist/main.js +27 -27
  10. package/dist/main.js.map +1 -1
  11. package/dist/routes.json +1 -1
  12. package/package.json +1 -1
  13. package/src/config-schema.ts +97 -0
  14. package/src/contact-list/contact-tracing-history.component.tsx +18 -15
  15. package/src/maternal-and-child-health/partography/components/pulse-bp-graph.component.tsx +1 -0
  16. package/src/maternal-and-child-health/partography/components/temperature-graph.component.tsx +218 -0
  17. package/src/maternal-and-child-health/partography/components/uterine-contractions-graph.component.tsx +209 -0
  18. package/src/maternal-and-child-health/partography/forms/cervical-contractions-form.component.tsx +211 -0
  19. package/src/maternal-and-child-health/partography/forms/cervix-form.component.tsx +354 -0
  20. package/src/maternal-and-child-health/partography/forms/drugs-iv-fluids-form.component.tsx +321 -0
  21. package/src/maternal-and-child-health/partography/forms/fetal-heart-rate-form.component.tsx +275 -0
  22. package/src/maternal-and-child-health/partography/forms/index.ts +9 -0
  23. package/src/maternal-and-child-health/partography/forms/membrane-amniotic-fluid-form.component.tsx +330 -0
  24. package/src/maternal-and-child-health/partography/forms/oxytocin-form.component.tsx +207 -0
  25. package/src/maternal-and-child-health/partography/forms/pulse-bp-form.component.tsx +174 -0
  26. package/src/maternal-and-child-health/partography/forms/temperature-form.component.tsx +210 -0
  27. package/src/maternal-and-child-health/partography/forms/time-picker-dropdown.component.tsx +218 -0
  28. package/src/maternal-and-child-health/partography/forms/time-picker-dropdown.scss +107 -0
  29. package/src/maternal-and-child-health/partography/forms/time-picker-with-clock.component.tsx +174 -0
  30. package/src/maternal-and-child-health/partography/forms/time-picker-with-clock.scss +178 -0
  31. package/src/maternal-and-child-health/partography/forms/urine-test-form.component.tsx +255 -0
  32. package/src/maternal-and-child-health/partography/forms/useCervixData.ts +16 -0
  33. package/src/maternal-and-child-health/partography/graphs/cervical-contractions-graph.component.tsx +266 -0
  34. package/src/maternal-and-child-health/partography/graphs/cervix-graph.component.tsx +429 -0
  35. package/src/maternal-and-child-health/partography/graphs/drugs-iv-fluids-graph-wrapper.component.tsx +163 -0
  36. package/src/maternal-and-child-health/partography/graphs/drugs-iv-fluids-graph.component.tsx +82 -0
  37. package/src/maternal-and-child-health/partography/graphs/fetal-heart-rate-graph.component.tsx +359 -0
  38. package/src/maternal-and-child-health/partography/graphs/index.ts +10 -0
  39. package/src/maternal-and-child-health/partography/graphs/membrane-amniotic-fluid-graph.component.tsx +266 -0
  40. package/src/maternal-and-child-health/partography/graphs/oxytocin-graph-wrapper.component.tsx +190 -0
  41. package/src/maternal-and-child-health/partography/graphs/oxytocin-graph.component.tsx +126 -0
  42. package/src/maternal-and-child-health/partography/graphs/partograph-graph.component.tsx +266 -0
  43. package/src/maternal-and-child-health/partography/graphs/pulse-bp-graph-wrapper.component.tsx +298 -0
  44. package/src/maternal-and-child-health/partography/graphs/pulse-bp-graph.component.tsx +267 -0
  45. package/src/maternal-and-child-health/partography/graphs/temperature-graph.component.tsx +242 -0
  46. package/src/maternal-and-child-health/partography/graphs/urine-test-graph.component.tsx +246 -0
  47. package/src/maternal-and-child-health/partography/partograph.component.tsx +2141 -118
  48. package/src/maternal-and-child-health/partography/partography-dashboard.meta.ts +8 -0
  49. package/src/maternal-and-child-health/partography/partography-data-form.scss +163 -0
  50. package/src/maternal-and-child-health/partography/partography.resource.ts +233 -326
  51. package/src/maternal-and-child-health/partography/partography.scss +1341 -3
  52. package/src/maternal-and-child-health/partography/resources/blood-pressure.resource.ts +96 -0
  53. package/src/maternal-and-child-health/partography/resources/cervical-dilation.resource.ts +109 -0
  54. package/src/maternal-and-child-health/partography/resources/cervix.resource.ts +362 -0
  55. package/src/maternal-and-child-health/partography/resources/descent-of-head.resource.ts +101 -0
  56. package/src/maternal-and-child-health/partography/resources/drugs-fluids.resource.ts +88 -0
  57. package/src/maternal-and-child-health/partography/resources/fetal-heart-rate.resource.ts +122 -0
  58. package/src/maternal-and-child-health/partography/resources/maternal-pulse.resource.ts +77 -0
  59. package/src/maternal-and-child-health/partography/resources/membrane-amniotic-fluid.resource.ts +108 -0
  60. package/src/maternal-and-child-health/partography/resources/oxytocin.resource.ts +159 -0
  61. package/src/maternal-and-child-health/partography/resources/progress-events.resource.ts +6 -0
  62. package/src/maternal-and-child-health/partography/resources/pulse-bp-combined.resource.ts +53 -0
  63. package/src/maternal-and-child-health/partography/resources/temperature.resource.ts +84 -0
  64. package/src/maternal-and-child-health/partography/resources/uterine-contractions.resource.ts +173 -0
  65. package/src/maternal-and-child-health/partography/table/temperature-table.component.tsx +99 -0
  66. package/src/maternal-and-child-health/partography/table/uterine-contractions-table.component.tsx +86 -0
  67. package/src/maternal-and-child-health/partography/types/index.ts +319 -101
  68. package/translations/am.json +121 -1
  69. package/translations/en.json +121 -1
  70. package/translations/sw.json +121 -1
  71. package/dist/397.js +0 -1
  72. package/dist/397.js.map +0 -1
@@ -8,6 +8,21 @@
8
8
  margin: layout.$spacing-03 0;
9
9
  }
10
10
 
11
+ .partographyGrid {
12
+ display: grid;
13
+ grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));
14
+ gap: layout.$spacing-05;
15
+
16
+ @media (max-width: 1200px) {
17
+ grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
18
+ }
19
+
20
+ @media (max-width: 768px) {
21
+ grid-template-columns: 1fr;
22
+ gap: layout.$spacing-04;
23
+ }
24
+ }
25
+
11
26
  .partographyTitle {
12
27
  @include type.type-style('heading-compact-02');
13
28
  color: colors.$gray-100;
@@ -46,9 +61,30 @@
46
61
 
47
62
  .graphContainer {
48
63
  padding: layout.$spacing-04;
49
- background-color: colors.$gray-10;
64
+ background-color: colors.$white;
50
65
  border-radius: layout.$spacing-02;
51
66
  margin-bottom: layout.$spacing-04;
67
+ border: 2px solid colors.$gray-40;
68
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
69
+ transition: box-shadow 0.2s ease;
70
+
71
+ &:hover {
72
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2);
73
+ }
74
+
75
+ // Medical chart styling
76
+ &::before {
77
+ content: '';
78
+ position: absolute;
79
+ top: 0;
80
+ left: 0;
81
+ right: 0;
82
+ height: 4px;
83
+ background: linear-gradient(90deg, colors.$blue-60, colors.$green-50, colors.$blue-60);
84
+ border-radius: layout.$spacing-02 layout.$spacing-02 0 0;
85
+ }
86
+
87
+ position: relative;
52
88
  }
53
89
 
54
90
  .graphHeader {
@@ -79,7 +115,6 @@
79
115
  border: 1px solid colors.$gray-30;
80
116
  border-radius: layout.$spacing-02;
81
117
  overflow: hidden;
82
- margin-right: layout.$spacing-03;
83
118
 
84
119
  .viewButton {
85
120
  border-radius: 0;
@@ -139,8 +174,79 @@
139
174
  background-color: colors.$white;
140
175
  padding: layout.$spacing-04;
141
176
  border-radius: layout.$spacing-02;
142
- border: 1px solid colors.$gray-20;
177
+ border: 2px solid colors.$gray-40;
143
178
  margin-bottom: layout.$spacing-04;
179
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
180
+
181
+ // Medical chart styling
182
+ .cds--chart-wrapper {
183
+ border: 1px solid colors.$gray-30;
184
+ border-radius: layout.$spacing-02;
185
+ overflow: hidden;
186
+
187
+ // Enhanced grid lines for medical chart appearance
188
+ .cds--chart {
189
+ background-color: colors.$white;
190
+ background-image: linear-gradient(colors.$gray-20 1px, transparent 1px),
191
+ linear-gradient(90deg, colors.$gray-20 1px, transparent 1px);
192
+ background-size: 20px 20px;
193
+ }
194
+
195
+ // Ensure axis lines are visible and properly styled
196
+ .cds--axis {
197
+ stroke: colors.$gray-60;
198
+ stroke-width: 2px;
199
+ }
200
+
201
+ // Style grid lines to be more prominent
202
+ .cds--grid-line {
203
+ stroke: colors.$gray-30;
204
+ stroke-width: 1px;
205
+ stroke-dasharray: 2, 2;
206
+ }
207
+
208
+ // Enhanced axis labels
209
+ .cds--axis-label {
210
+ fill: colors.$gray-90;
211
+ font-weight: 600;
212
+ font-size: 12px;
213
+ }
214
+
215
+ // Style chart title
216
+ .cds--chart-title {
217
+ fill: colors.$gray-100;
218
+ font-weight: 700;
219
+ font-size: 16px;
220
+ }
221
+ }
222
+ }
223
+
224
+ .emptyChartContainer {
225
+ position: relative;
226
+ height: 500px;
227
+ background-color: colors.$white;
228
+ }
229
+
230
+ .emptyChartOverlay {
231
+ position: absolute;
232
+ top: 50%;
233
+ left: 50%;
234
+ transform: translate(-50%, -50%);
235
+ display: flex;
236
+ flex-direction: column;
237
+ align-items: center;
238
+ gap: layout.$spacing-04;
239
+ background-color: rgba(255, 255, 255, 0.95);
240
+ padding: layout.$spacing-05;
241
+ border-radius: layout.$spacing-02;
242
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
243
+ text-align: center;
244
+
245
+ p {
246
+ margin: 0;
247
+ @include type.type-style('body-compact-01');
248
+ color: colors.$gray-70;
249
+ }
144
250
  }
145
251
 
146
252
  .chartStats {
@@ -361,6 +467,89 @@
361
467
  }
362
468
  }
363
469
 
470
+ // Skeleton loading styles
471
+ .skeletonContainer {
472
+ padding: layout.$spacing-04;
473
+ background-color: colors.$white;
474
+ border-radius: layout.$spacing-02;
475
+ border: 1px solid colors.$gray-20;
476
+ }
477
+
478
+ .graphSkeleton {
479
+ .skeletonChart {
480
+ height: 500px;
481
+ background: linear-gradient(90deg, colors.$gray-20 25%, colors.$gray-10 50%, colors.$gray-20 75%);
482
+ background-size: 200% 100%;
483
+ animation: skeletonLoading 1.5s infinite;
484
+ border-radius: layout.$spacing-02;
485
+ margin-bottom: layout.$spacing-04;
486
+ }
487
+
488
+ .skeletonStats {
489
+ display: flex;
490
+ gap: layout.$spacing-05;
491
+ margin-top: layout.$spacing-04;
492
+ }
493
+
494
+ .skeletonStat {
495
+ background: linear-gradient(90deg, colors.$gray-20 25%, colors.$gray-10 50%, colors.$gray-20 75%);
496
+ background-size: 200% 100%;
497
+ animation: skeletonLoading 1.5s infinite;
498
+ height: layout.$spacing-05;
499
+ border-radius: layout.$spacing-02;
500
+ }
501
+ }
502
+
503
+ .tableSkeleton {
504
+ .skeletonHeader {
505
+ background: linear-gradient(90deg, colors.$gray-20 25%, colors.$gray-10 50%, colors.$gray-20 75%);
506
+ background-size: 200% 100%;
507
+ animation: skeletonLoading 1.5s infinite;
508
+ height: layout.$spacing-05;
509
+ border-radius: layout.$spacing-02;
510
+ margin-bottom: layout.$spacing-04;
511
+ }
512
+
513
+ .skeletonRow {
514
+ display: flex;
515
+ gap: layout.$spacing-05;
516
+ margin-bottom: layout.$spacing-03;
517
+
518
+ .skeletonCell {
519
+ background: linear-gradient(90deg, colors.$gray-20 25%, colors.$gray-10 50%, colors.$gray-20 75%);
520
+ background-size: 200% 100%;
521
+ animation: skeletonLoading 1.5s infinite;
522
+ height: layout.$spacing-04;
523
+ border-radius: layout.$spacing-02;
524
+ }
525
+ }
526
+
527
+ .skeletonFooter {
528
+ background: linear-gradient(90deg, colors.$gray-20 25%, colors.$gray-10 50%, colors.$gray-20 75%);
529
+ background-size: 200% 100%;
530
+ animation: skeletonLoading 1.5s infinite;
531
+ height: layout.$spacing-04;
532
+ border-radius: layout.$spacing-02;
533
+ margin-top: layout.$spacing-04;
534
+ }
535
+ }
536
+
537
+ @keyframes skeletonLoading {
538
+ 0% {
539
+ background-position: -200% 0;
540
+ }
541
+ 100% {
542
+ background-position: 200% 0;
543
+ }
544
+ }
545
+
546
+ // Global skeleton animation (in case CSS modules scoping is an issue)
547
+ :global(.skeleton-loading) {
548
+ background: linear-gradient(90deg, #f4f4f4 25%, #e0e0e0 50%, #f4f4f4 75%);
549
+ background-size: 200% 100%;
550
+ animation: skeletonLoading 1.5s infinite;
551
+ }
552
+
364
553
  .emptyState {
365
554
  display: flex;
366
555
  flex-direction: column;
@@ -376,3 +565,1152 @@
376
565
  @include type.type-style('body-compact-01');
377
566
  }
378
567
  }
568
+ // partography.scss
569
+
570
+ .customTimeLabelsContainer {
571
+ display: flex;
572
+ flex-direction: column;
573
+ border-top: 2px solid colors.$gray-40;
574
+ border-left: 2px solid colors.$gray-40;
575
+ border-right: 2px solid colors.$gray-40;
576
+ border-bottom: 2px solid colors.$gray-40;
577
+ margin-top: 0;
578
+ background-color: colors.$white;
579
+ border-radius: 0;
580
+
581
+ // Perfect alignment with chart's plot area
582
+ margin-left: 70px;
583
+ margin-right: 30px;
584
+ width: auto;
585
+
586
+ // Enable horizontal scrolling for dynamic content
587
+ overflow-x: auto;
588
+ overflow-y: hidden;
589
+ }
590
+
591
+ .customTimeLabelsRow {
592
+ display: grid;
593
+ grid-template-columns: 80px repeat(var(--visible-columns, 10), minmax(60px, 1fr)); // Fixed header + dynamic columns
594
+ border-bottom: 1px solid colors.$gray-40;
595
+ min-height: 40px;
596
+ min-width: max-content; // Ensure content doesn't get compressed
597
+
598
+ &:last-child {
599
+ border-bottom: none;
600
+ }
601
+
602
+ &:first-child {
603
+ background-color: colors.$gray-10;
604
+ }
605
+ }
606
+
607
+ .customTimeLabelHeader {
608
+ grid-column: 1 / 2; // First column for header
609
+ font-weight: 700;
610
+ padding: layout.$spacing-03;
611
+ border-right: 1px solid colors.$gray-40;
612
+ text-align: center;
613
+ background-color: colors.$gray-20;
614
+ color: colors.$gray-100;
615
+ @include type.type-style('label-01');
616
+ display: flex;
617
+ align-items: center;
618
+ justify-content: center;
619
+ position: sticky; // Keep header visible during scroll
620
+ left: 0;
621
+ z-index: 1;
622
+ }
623
+
624
+ .customTimeLabelCell {
625
+ padding: layout.$spacing-03;
626
+ text-align: center;
627
+ border-right: 1px solid colors.$gray-40;
628
+ font-weight: 600;
629
+ @include type.type-style('body-compact-01');
630
+ color: colors.$gray-100;
631
+ background-color: colors.$white;
632
+ display: flex;
633
+ align-items: center;
634
+ justify-content: center;
635
+ min-width: 60px; // Minimum column width
636
+
637
+ &:last-child {
638
+ border-right: none;
639
+ }
640
+
641
+ &:hover {
642
+ background-color: colors.$gray-10;
643
+ }
644
+ }
645
+
646
+ // Optional: Adjust chart's axis label styling if needed to make space or match font
647
+ .cds--chart-wrapper {
648
+ // You might need to add specific CSS here to the Carbon Chart itself
649
+ // to fine-tune the bottom axis's appearance or padding if it overlaps
650
+ // or leaves too much space. This can be complex due to shadow DOM.
651
+ // E.g., .cds--chart-wrapper .cds--bottom-axis .cds--axis-labels { display: none; }
652
+ // or .cds--chart-wrapper .cds--bottom-axis .cds--axis-title { padding-bottom: 0; }
653
+
654
+ .cds--bottom-axis .cds--axis-title {
655
+ padding-bottom: 0;
656
+ }
657
+
658
+ // Override line colors for Alert and Action lines
659
+ .cds--line-path {
660
+ // Alert Line - Yellow dotted line
661
+ &[data-group-id='Alert Line'],
662
+ &[aria-label*='Alert Line'] {
663
+ stroke: #ffd700 !important;
664
+ stroke-width: 3px !important;
665
+ stroke-dasharray: 8, 4 !important;
666
+ }
667
+
668
+ // Action Line - Red dotted line
669
+ &[data-group-id='Action Line'],
670
+ &[aria-label*='Action Line'] {
671
+ stroke: #ff0000 !important;
672
+ stroke-width: 3px !important;
673
+ stroke-dasharray: 8, 4 !important;
674
+ }
675
+ }
676
+
677
+ // Alternative selector for different Carbon Charts versions
678
+ svg path {
679
+ &[data-name='Alert Line'] {
680
+ stroke: #ffd700 !important;
681
+ stroke-width: 3px !important;
682
+ stroke-dasharray: 8, 4 !important;
683
+ }
684
+
685
+ &[data-name='Action Line'] {
686
+ stroke: #ff0000 !important;
687
+ stroke-width: 3px !important;
688
+ stroke-dasharray: 8, 4 !important;
689
+ }
690
+ }
691
+
692
+ // Generic line overrides for Alert/Action
693
+ .alert-line {
694
+ stroke: #ffd700 !important;
695
+ stroke-width: 3px !important;
696
+ stroke-dasharray: 8, 4 !important;
697
+ }
698
+
699
+ .action-line {
700
+ stroke: #ff0000 !important;
701
+ stroke-width: 3px !important;
702
+ stroke-dasharray: 8, 4 !important;
703
+ }
704
+
705
+ // More specific targeting for cervix chart lines
706
+ &[data-chart-id='cervix'] {
707
+ svg path {
708
+ // Target Alert Line specifically
709
+ &:nth-last-child(2) {
710
+ stroke: #ffd700 !important;
711
+ stroke-width: 3px !important;
712
+ stroke-dasharray: 8, 4 !important;
713
+ }
714
+
715
+ // Target Action Line specifically
716
+ &:last-child {
717
+ stroke: #ff0000 !important;
718
+ stroke-width: 3px !important;
719
+ stroke-dasharray: 8, 4 !important;
720
+ }
721
+ }
722
+
723
+ // Try targeting by legend item or class
724
+ .line {
725
+ &:nth-last-child(2) {
726
+ stroke: #ffd700 !important;
727
+ stroke-width: 3px !important;
728
+ stroke-dasharray: 8, 4 !important;
729
+ }
730
+
731
+ &:last-child {
732
+ stroke: #ff0000 !important;
733
+ stroke-width: 3px !important;
734
+ stroke-dasharray: 8, 4 !important;
735
+ }
736
+ }
737
+
738
+ // Alternative broader targeting
739
+ svg g[class*='line'] {
740
+ path {
741
+ &:nth-last-child(2) {
742
+ stroke: #ffd700 !important;
743
+ stroke-width: 3px !important;
744
+ stroke-dasharray: 8, 4 !important;
745
+ }
746
+
747
+ &:last-child {
748
+ stroke: #ff0000 !important;
749
+ stroke-width: 3px !important;
750
+ stroke-dasharray: 8, 4 !important;
751
+ }
752
+ }
753
+ }
754
+ }
755
+ }
756
+
757
+ // Global overrides for Alert and Action lines (outside any wrapper)
758
+ :global {
759
+ // Try to target lines by data attributes
760
+ [data-group='Alert Line'] {
761
+ stroke: #ffd700 !important;
762
+ stroke-width: 3px !important;
763
+ stroke-dasharray: 8, 4 !important;
764
+ }
765
+
766
+ [data-group='Action Line'] {
767
+ stroke: #ff0000 !important;
768
+ stroke-width: 3px !important;
769
+ stroke-dasharray: 8, 4 !important;
770
+ }
771
+
772
+ // Try broad SVG path targeting in cervix chart
773
+ [data-chart-id='cervix'] svg path {
774
+ // If there are 3 or more lines (cervix data + alert + action)
775
+ // Target the last two as Alert and Action lines
776
+ &:nth-last-child(2) {
777
+ stroke: #ffd700 !important;
778
+ stroke-width: 3px !important;
779
+ stroke-dasharray: 8, 4 !important;
780
+ }
781
+
782
+ &:last-child {
783
+ stroke: #ff0000 !important;
784
+ stroke-width: 3px !important;
785
+ stroke-dasharray: 8, 4 !important;
786
+ }
787
+ }
788
+ }
789
+
790
+ // Optional: Adjust the height of the chart if the new labels cause overflow
791
+ .chartContainer {
792
+ height: 500px; // Keep this consistent
793
+ // If the new labels cause overlap, you might need to make the chart slightly shorter
794
+ // e.g., height: 450px; and then adjust overall graphContainer height.
795
+ }
796
+
797
+ /* Fetal Heart Rate Section Styles */
798
+ .fetalHeartRateSection {
799
+ margin-bottom: layout.$spacing-07;
800
+ width: 100%;
801
+ }
802
+
803
+ .fetalHeartRateContainer {
804
+ background-color: colors.$white;
805
+ border-radius: layout.$spacing-03;
806
+ border: 2px solid colors.$gray-20;
807
+ padding: layout.$spacing-06;
808
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
809
+ margin-bottom: layout.$spacing-06;
810
+ }
811
+
812
+ .fetalHeartRateHeader {
813
+ display: flex;
814
+ justify-content: space-between;
815
+ align-items: flex-start;
816
+ margin-bottom: layout.$spacing-05;
817
+ border-bottom: 1px solid colors.$gray-20;
818
+ padding-bottom: layout.$spacing-04;
819
+ gap: layout.$spacing-04;
820
+ }
821
+
822
+ .fetalHeartRateHeaderLeft {
823
+ display: flex;
824
+ flex-direction: column;
825
+ align-items: flex-start;
826
+ gap: layout.$spacing-03;
827
+ flex: 1;
828
+ }
829
+
830
+ .fetalHeartRateHeaderRight {
831
+ display: flex;
832
+ align-items: center;
833
+ gap: layout.$spacing-03;
834
+ flex-shrink: 0;
835
+ }
836
+
837
+ .fetalHeartRateActions {
838
+ display: flex;
839
+ align-items: center;
840
+ gap: layout.$spacing-03;
841
+ }
842
+
843
+ .fetalHeartRateTitle {
844
+ @include type.type-style('heading-compact-02');
845
+ color: colors.$gray-100;
846
+ margin: 0;
847
+ font-weight: 600;
848
+ font-size: 1.125rem; // Slightly larger title
849
+ margin-bottom: layout.$spacing-02;
850
+ }
851
+
852
+ .fetalHeartRateControls {
853
+ display: flex;
854
+ align-items: center;
855
+ gap: layout.$spacing-02;
856
+ flex-wrap: wrap;
857
+ }
858
+
859
+ .fetalHeartRateChart {
860
+ min-height: 600px; // Increased height to match cervix graph
861
+ width: 100%;
862
+ margin-top: layout.$spacing-04;
863
+
864
+ // Override Carbon chart styles for this specific chart
865
+ :global(.cds--cc--chart-svg) {
866
+ border: 1px solid colors.$gray-30;
867
+ border-radius: layout.$spacing-02;
868
+ min-height: 600px; // Ensure minimum height
869
+ }
870
+
871
+ // Chart wrapper to ensure proper sizing
872
+ :global(.cds--cc--chart-wrapper) {
873
+ min-height: 600px;
874
+ padding-bottom: layout.$spacing-06; // Extra space for x-axis labels
875
+ }
876
+
877
+ // Grid line styling to match cervix graph
878
+ :global(.cds--cc--grid-line) {
879
+ stroke: colors.$gray-30;
880
+ stroke-opacity: 0.3;
881
+ }
882
+
883
+ // Ensure x-axis labels have proper spacing and are horizontal
884
+ :global(.cds--cc--axis-tick-label) {
885
+ font-size: 12px;
886
+ fill: colors.$gray-70;
887
+ }
888
+
889
+ // X-axis label positioning - ensure they are horizontal
890
+ :global(.cds--cc--axis.cds--cc--axis--bottom .cds--cc--axis-tick-label) {
891
+ text-anchor: middle;
892
+ transform: none !important; // Force no rotation
893
+ }
894
+
895
+ // Y-axis styling
896
+ :global(.cds--cc--axis.cds--cc--axis--left .cds--cc--axis-tick-label) {
897
+ text-anchor: end;
898
+ }
899
+
900
+ // Ensure chart container has enough bottom padding for labels
901
+ :global(.cds--cc--chart-holder) {
902
+ padding-bottom: layout.$spacing-08 !important;
903
+ }
904
+
905
+ // Disable any text rotation on bottom axis
906
+ :global(.cds--cc--axis--bottom text) {
907
+ transform: rotate(0deg) !important;
908
+ }
909
+
910
+ // Axis styling
911
+ :global(.cds--cc--axis) {
912
+ .tick text {
913
+ font-size: 12px;
914
+ fill: colors.$gray-70;
915
+ }
916
+
917
+ .domain {
918
+ stroke: colors.$gray-50;
919
+ }
920
+ }
921
+ }
922
+
923
+ // Fetal Heart Rate Table Value Styling
924
+ .fetalHeartRateValue {
925
+ display: inline-flex;
926
+ align-items: center;
927
+ gap: layout.$spacing-02;
928
+
929
+ &.low {
930
+ color: colors.$gray-70;
931
+
932
+ .arrow {
933
+ color: colors.$gray-70;
934
+ font-size: 1.4em;
935
+ font-weight: bold;
936
+ margin-right: layout.$spacing-02;
937
+ }
938
+ }
939
+
940
+ &.normal {
941
+ color: colors.$green-50;
942
+ font-weight: 500;
943
+ }
944
+
945
+ &.high {
946
+ color: colors.$red-50;
947
+ font-weight: 600;
948
+
949
+ .arrow {
950
+ color: colors.$red-50;
951
+ font-size: 1.4em;
952
+ font-weight: bold;
953
+ margin-right: layout.$spacing-02;
954
+ }
955
+ }
956
+ }
957
+
958
+ /* Membrane Amniotic Fluid Grid Styles */
959
+ .membraneGrid {
960
+ width: 100%;
961
+ margin-top: layout.$spacing-04;
962
+ background: colors.$white;
963
+ border: 1px solid colors.$gray-30;
964
+ border-radius: layout.$spacing-02;
965
+ overflow-x: auto;
966
+ max-height: 300px; // Set a reasonable height
967
+ max-width: 1050px; // Show approximately 13 grids (140px label + 70px * 13 columns = 1050px)
968
+ }
969
+
970
+ .gridContainer {
971
+ display: flex;
972
+ flex-direction: column;
973
+ min-width: fit-content; // Allow natural width based on content
974
+ }
975
+
976
+ .gridHeader {
977
+ display: flex;
978
+ background: colors.$gray-10;
979
+ border-bottom: 2px solid colors.$gray-30;
980
+ font-weight: 600;
981
+ }
982
+
983
+ .gridRow {
984
+ display: flex;
985
+ border-bottom: 1px solid colors.$gray-20;
986
+
987
+ &:last-child {
988
+ border-bottom: none;
989
+ }
990
+ }
991
+
992
+ .gridCell {
993
+ flex: 0 0 70px; // Fixed width for time columns for consistent layout
994
+ min-width: 70px;
995
+ padding: layout.$spacing-03;
996
+ border-right: 1px solid colors.$gray-20;
997
+ text-align: center;
998
+ font-size: 0.875rem;
999
+ display: flex;
1000
+ align-items: center;
1001
+ justify-content: center;
1002
+ min-height: 48px;
1003
+
1004
+ &:last-child {
1005
+ border-right: none;
1006
+ }
1007
+
1008
+ &:first-child {
1009
+ flex: 0 0 140px;
1010
+ min-width: 140px;
1011
+ background: colors.$gray-10;
1012
+ font-weight: 600;
1013
+ text-align: left;
1014
+ justify-content: flex-start;
1015
+ }
1016
+ }
1017
+
1018
+ .gridRowLabel {
1019
+ flex: 0 0 140px;
1020
+ padding: layout.$spacing-03;
1021
+ background: colors.$gray-10;
1022
+ border-right: 2px solid colors.$gray-30;
1023
+ font-weight: 600;
1024
+ display: flex;
1025
+ align-items: center;
1026
+ text-align: left;
1027
+ }
1028
+
1029
+ .legendText {
1030
+ font-size: 0.75rem;
1031
+ color: colors.$gray-70;
1032
+ font-style: italic;
1033
+ }
1034
+
1035
+ // Contraction Level Selector - Simple colored buttons
1036
+ .contractionLevelSelector {
1037
+ display: flex;
1038
+ flex-direction: row;
1039
+ gap: layout.$spacing-02;
1040
+ padding: layout.$spacing-02;
1041
+ justify-content: flex-start;
1042
+ align-items: flex-start;
1043
+ background-color: colors.$gray-10;
1044
+ border-radius: layout.$spacing-02;
1045
+ border: 1px solid colors.$gray-30;
1046
+ margin: layout.$spacing-02 0;
1047
+ flex-wrap: wrap;
1048
+ max-width: fit-content;
1049
+ }
1050
+
1051
+ .contractionLevelOption {
1052
+ display: flex;
1053
+ flex-direction: column;
1054
+ align-items: center;
1055
+ gap: layout.$spacing-01;
1056
+ cursor: pointer;
1057
+ transition: all 0.3s ease;
1058
+ text-align: center;
1059
+ padding: layout.$spacing-01;
1060
+ border-radius: layout.$spacing-02;
1061
+
1062
+ &:hover {
1063
+ transform: translateY(-2px);
1064
+
1065
+ .contractionLevelButton {
1066
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
1067
+ }
1068
+ }
1069
+
1070
+ &.contractionLevelSelected {
1071
+ background-color: colors.$blue-10;
1072
+ border: 2px solid colors.$blue-60;
1073
+
1074
+ .contractionLevelButton {
1075
+ border: 3px solid colors.$blue-60;
1076
+ box-shadow: 0 6px 20px rgba(13, 90, 170, 0.25);
1077
+ }
1078
+ }
1079
+ }
1080
+
1081
+ .contractionLevelTitle {
1082
+ @include type.type-style('label-01');
1083
+ color: colors.$gray-100;
1084
+ font-weight: 600;
1085
+ margin-bottom: layout.$spacing-02;
1086
+ text-align: center;
1087
+ min-height: 16px;
1088
+ font-size: 12px;
1089
+ }
1090
+
1091
+ .contractionLevelButton {
1092
+ width: 70px;
1093
+ height: 70px;
1094
+ display: flex;
1095
+ align-items: center;
1096
+ justify-content: center;
1097
+ border: 2px solid colors.$gray-40;
1098
+ border-radius: layout.$spacing-02;
1099
+ font-size: 28px;
1100
+ font-weight: bold;
1101
+ transition: all 0.3s ease;
1102
+ cursor: pointer;
1103
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
1104
+
1105
+ // None - Light gray background
1106
+ &.none {
1107
+ background-color: colors.$gray-30;
1108
+ color: colors.$gray-100;
1109
+ border-color: colors.$gray-50;
1110
+ }
1111
+
1112
+ // Mild - Light blue background
1113
+ &.mild {
1114
+ background-color: colors.$blue-30;
1115
+ color: colors.$blue-80;
1116
+ border-color: colors.$blue-50;
1117
+ }
1118
+
1119
+ // Moderate - Orange background
1120
+ &.moderate {
1121
+ background-color: colors.$orange-40;
1122
+ color: colors.$orange-90;
1123
+ border-color: colors.$orange-60;
1124
+ }
1125
+
1126
+ // Strong - Dark red background
1127
+ &.strong {
1128
+ background-color: colors.$red-60;
1129
+ color: colors.$white;
1130
+ border-color: colors.$red-70;
1131
+ }
1132
+ }
1133
+
1134
+ .errorMessage {
1135
+ @include type.type-style('label-01');
1136
+ color: colors.$red-60;
1137
+ margin-top: layout.$spacing-02;
1138
+ grid-column: 1 / -1;
1139
+ text-align: center;
1140
+ }
1141
+
1142
+ // Contractions Form Container
1143
+ .contractionsFormContainer {
1144
+ padding: layout.$spacing-03 layout.$spacing-03;
1145
+ max-width: 700px;
1146
+ margin: 0 auto;
1147
+ }
1148
+
1149
+ .formMainSection {
1150
+ display: flex;
1151
+ flex-direction: row;
1152
+ gap: layout.$spacing-03;
1153
+ align-items: flex-start;
1154
+ justify-content: flex-start;
1155
+ }
1156
+
1157
+ .formSectionLeft {
1158
+ flex: 0 0 auto;
1159
+ min-width: 380px;
1160
+ max-width: 420px;
1161
+ }
1162
+
1163
+ .formSectionRight {
1164
+ flex: 0 0 auto;
1165
+ min-width: 200px;
1166
+ max-width: 220px;
1167
+ padding-top: layout.$spacing-02;
1168
+ display: flex;
1169
+ flex-direction: column;
1170
+ align-items: flex-start;
1171
+ margin-left: layout.$spacing-03;
1172
+ }
1173
+
1174
+ .formSection {
1175
+ margin-bottom: layout.$spacing-02;
1176
+ }
1177
+
1178
+ .sectionTitle {
1179
+ @include type.type-style('heading-04');
1180
+ color: colors.$gray-100;
1181
+ margin-bottom: layout.$spacing-01;
1182
+ text-align: left;
1183
+ font-weight: 600;
1184
+ }
1185
+
1186
+ .sectionDescription {
1187
+ @include type.type-style('body-compact-01');
1188
+ color: colors.$gray-70;
1189
+ text-align: left;
1190
+ margin-bottom: layout.$spacing-02;
1191
+ font-style: italic;
1192
+ line-height: 1.3;
1193
+ }
1194
+
1195
+ // Contraction Count Dropdown
1196
+ .contractionCountDropdown {
1197
+ width: 100%;
1198
+ max-width: 280px;
1199
+
1200
+ .cds--dropdown {
1201
+ background-color: colors.$white;
1202
+ border: 2px solid colors.$gray-30;
1203
+ border-radius: layout.$spacing-02;
1204
+
1205
+ &:hover {
1206
+ border-color: colors.$blue-40;
1207
+ }
1208
+
1209
+ &:focus {
1210
+ border-color: colors.$blue-60;
1211
+ box-shadow: 0 0 0 2px rgba(13, 90, 170, 0.2);
1212
+ }
1213
+ }
1214
+
1215
+ .cds--list-box__field {
1216
+ height: 48px;
1217
+ padding: layout.$spacing-03 layout.$spacing-04;
1218
+ }
1219
+
1220
+ .cds--list-box__menu-item {
1221
+ &:hover {
1222
+ background-color: colors.$blue-10;
1223
+ }
1224
+
1225
+ &[aria-selected='true'] {
1226
+ background-color: colors.$blue-20;
1227
+ color: colors.$blue-80;
1228
+ }
1229
+ }
1230
+ }
1231
+
1232
+ // Detailed Cervical Contractions Grid - Partograph Format
1233
+ .contractionsContainer {
1234
+ display: flex;
1235
+ flex-direction: column;
1236
+ border: 2px solid colors.$gray-80;
1237
+ background-color: colors.$white;
1238
+ position: relative;
1239
+ min-height: 300px;
1240
+ overflow-x: auto;
1241
+ }
1242
+
1243
+ .contractionsTimeHeaders {
1244
+ display: grid;
1245
+ grid-template-columns: 60px repeat(13, minmax(50px, 1fr));
1246
+ border-bottom: 2px solid colors.$gray-80;
1247
+ background-color: colors.$gray-10;
1248
+ min-height: 35px;
1249
+ }
1250
+
1251
+ .contractionsTimeHeader {
1252
+ display: flex;
1253
+ align-items: center;
1254
+ justify-content: center;
1255
+ border-right: 1px solid colors.$gray-60;
1256
+ padding: layout.$spacing-02;
1257
+ font-weight: 600;
1258
+ @include type.type-style('label-01');
1259
+
1260
+ &:last-child {
1261
+ border-right: none;
1262
+ }
1263
+ }
1264
+
1265
+ .contractionsTimeSubHeaders {
1266
+ display: grid;
1267
+ grid-template-columns: 60px repeat(13, minmax(50px, 1fr));
1268
+ border-bottom: 1px solid colors.$gray-60;
1269
+ background-color: colors.$gray-10;
1270
+ min-height: 30px;
1271
+ }
1272
+
1273
+ .contractionsTimeSubHeader {
1274
+ display: flex;
1275
+ align-items: center;
1276
+ justify-content: center;
1277
+ border-right: 1px solid colors.$gray-40;
1278
+ padding: layout.$spacing-01;
1279
+ @include type.type-style('caption-01');
1280
+ color: colors.$gray-70;
1281
+
1282
+ &:last-child {
1283
+ border-right: none;
1284
+ }
1285
+ }
1286
+
1287
+ .contractionsYAxisSpacer {
1288
+ border-right: 2px solid colors.$gray-80;
1289
+ background-color: colors.$gray-10;
1290
+ }
1291
+
1292
+ .contractionsGridRow {
1293
+ display: grid;
1294
+ grid-template-columns: 80px repeat(13, minmax(50px, 1fr));
1295
+ border-bottom: 1px solid colors.$gray-40;
1296
+ min-height: 45px;
1297
+
1298
+ &:last-child {
1299
+ border-bottom: 2px solid colors.$gray-80;
1300
+ }
1301
+ }
1302
+
1303
+ .contractionsYAxisLabel {
1304
+ display: flex;
1305
+ align-items: center;
1306
+ justify-content: center;
1307
+ border-right: 2px solid colors.$gray-80;
1308
+ background-color: colors.$gray-10;
1309
+ font-weight: 600;
1310
+ @include type.type-style('label-01');
1311
+ min-width: 50px;
1312
+ padding: layout.$spacing-02;
1313
+ font-size: 16px;
1314
+ color: colors.$gray-100;
1315
+ position: relative;
1316
+
1317
+ // Ensure the numbers are clearly visible
1318
+ &::before {
1319
+ content: attr(data-label);
1320
+ position: absolute;
1321
+ left: 50%;
1322
+ top: 50%;
1323
+ transform: translate(-50%, -50%);
1324
+ font-weight: bold;
1325
+ z-index: 2;
1326
+ }
1327
+ }
1328
+
1329
+ .contractionsGridCell {
1330
+ border-right: 1px solid colors.$gray-40;
1331
+ position: relative;
1332
+ display: flex;
1333
+ align-items: flex-end;
1334
+ justify-content: center;
1335
+ padding: 2px;
1336
+ background-color: colors.$white;
1337
+ transition: background-color 0.2s ease;
1338
+
1339
+ &:last-child {
1340
+ border-right: none;
1341
+ }
1342
+
1343
+ &:hover {
1344
+ background-color: colors.$blue-10;
1345
+ }
1346
+
1347
+ // Bar visualization styles
1348
+ &[data-contraction-level='0'] {
1349
+ background-color: colors.$white;
1350
+ }
1351
+
1352
+ &[data-contraction-level='mild'] {
1353
+ background-image: radial-gradient(circle at 50% 50%, colors.$green-60 1px, transparent 1px);
1354
+ background-size: 6px 6px;
1355
+ background-color: colors.$green-10;
1356
+ }
1357
+
1358
+ &[data-contraction-level='moderate'] {
1359
+ background: repeating-linear-gradient(
1360
+ 45deg,
1361
+ colors.$yellow-10,
1362
+ colors.$yellow-10 3px,
1363
+ colors.$yellow-60 3px,
1364
+ colors.$yellow-60 4px
1365
+ );
1366
+ }
1367
+
1368
+ &[data-contraction-level='strong'] {
1369
+ background-color: colors.$red-60;
1370
+ color: colors.$white;
1371
+ font-weight: bold;
1372
+
1373
+ &::after {
1374
+ content: '3';
1375
+ position: absolute;
1376
+ top: 50%;
1377
+ left: 50%;
1378
+ transform: translate(-50%, -50%);
1379
+ font-size: 18px;
1380
+ }
1381
+ }
1382
+ }
1383
+
1384
+ // Contraction Bar Visual Indicators
1385
+ .contractionBar {
1386
+ width: 100%;
1387
+ height: 100%;
1388
+ position: absolute;
1389
+ top: 0;
1390
+ left: 0;
1391
+ border-radius: 2px;
1392
+ opacity: 0.8;
1393
+ transition: opacity 0.2s ease;
1394
+
1395
+ &:hover {
1396
+ opacity: 1;
1397
+ }
1398
+ }
1399
+
1400
+ .contractionBarNone {
1401
+ background-color: transparent;
1402
+ }
1403
+
1404
+ .contractionBarMild {
1405
+ background-color: colors.$blue-40;
1406
+ border: 2px solid colors.$blue-60;
1407
+ box-shadow: inset 0 0 4px rgba(13, 90, 170, 0.3);
1408
+ }
1409
+
1410
+ .contractionBarModerate {
1411
+ background-color: colors.$orange-50;
1412
+ border: 2px solid colors.$orange-70;
1413
+ box-shadow: inset 0 0 4px rgba(255, 131, 28, 0.3);
1414
+ }
1415
+
1416
+ .contractionBarStrong {
1417
+ background-color: colors.$red-60;
1418
+ border: 2px solid colors.$red-80;
1419
+ box-shadow: inset 0 0 4px rgba(218, 30, 40, 0.3);
1420
+ }
1421
+
1422
+ // Oxytocin Bar Visual Indicators
1423
+ .oxytocinBarLow {
1424
+ background-color: colors.$green-40;
1425
+ border: 2px solid colors.$green-60;
1426
+ box-shadow: inset 0 0 4px rgba(66, 190, 101, 0.3);
1427
+ }
1428
+
1429
+ .oxytocinBarMedium {
1430
+ background-color: colors.$yellow-40;
1431
+ border: 2px solid colors.$yellow-60;
1432
+ box-shadow: inset 0 0 4px rgba(255, 194, 7, 0.3);
1433
+ }
1434
+
1435
+ .oxytocinBarHigh {
1436
+ background-color: colors.$red-50;
1437
+ border: 2px solid colors.$red-70;
1438
+ box-shadow: inset 0 0 4px rgba(218, 30, 40, 0.3);
1439
+ }
1440
+
1441
+ // Grid cell states for filled contractions
1442
+ .contractionsGridCell {
1443
+ // ...existing styles...
1444
+
1445
+ &.contractionBarMild {
1446
+ background-color: colors.$blue-10;
1447
+ border: 1px solid colors.$blue-30;
1448
+ }
1449
+
1450
+ &.contractionBarModerate {
1451
+ background-color: colors.$orange-10;
1452
+ border: 1px solid colors.$orange-30;
1453
+ }
1454
+
1455
+ &.contractionBarStrong {
1456
+ background-color: colors.$red-10;
1457
+ border: 1px solid colors.$red-30;
1458
+ }
1459
+
1460
+ // Add visual feedback for filled cells
1461
+ &[data-filled='true'] {
1462
+ position: relative;
1463
+
1464
+ &::before {
1465
+ content: '';
1466
+ position: absolute;
1467
+ top: 2px;
1468
+ left: 2px;
1469
+ right: 2px;
1470
+ bottom: 2px;
1471
+ border-radius: 1px;
1472
+ background: inherit;
1473
+ z-index: 1;
1474
+ }
1475
+ }
1476
+ }
1477
+
1478
+ .contractionsYAxisTitle {
1479
+ position: absolute;
1480
+ left: -45px;
1481
+ top: 50%;
1482
+ transform: translateY(-50%) rotate(-90deg);
1483
+ transform-origin: center;
1484
+ white-space: nowrap;
1485
+ @include type.type-style('label-01');
1486
+ font-weight: 600;
1487
+ color: colors.$gray-80;
1488
+ }
1489
+
1490
+ // Grid container for cervical contractions
1491
+ .contractionsGrid {
1492
+ position: relative;
1493
+ margin: layout.$spacing-04 0;
1494
+ }
1495
+
1496
+ // Table view styles for cervical contractions
1497
+ .contractionsTable {
1498
+ background-color: colors.$white;
1499
+ border: 1px solid colors.$gray-30;
1500
+ border-radius: layout.$spacing-02;
1501
+ overflow: hidden;
1502
+ }
1503
+
1504
+ .dataTable {
1505
+ width: 100%;
1506
+ border-collapse: collapse;
1507
+
1508
+ th {
1509
+ background-color: colors.$gray-10;
1510
+ padding: layout.$spacing-03;
1511
+ text-align: left;
1512
+ border-bottom: 2px solid colors.$gray-40;
1513
+ @include type.type-style('label-01');
1514
+ font-weight: 600;
1515
+ }
1516
+
1517
+ td {
1518
+ padding: layout.$spacing-03;
1519
+ border-bottom: 1px solid colors.$gray-20;
1520
+ @include type.type-style('body-compact-01');
1521
+ }
1522
+
1523
+ tbody tr:hover {
1524
+ background-color: colors.$gray-10;
1525
+ }
1526
+ }
1527
+
1528
+ .contractionLevelBadge {
1529
+ display: inline-flex;
1530
+ align-items: center;
1531
+ padding: layout.$spacing-01 layout.$spacing-02;
1532
+ border-radius: layout.$spacing-01;
1533
+ font-size: 12px;
1534
+ font-weight: 600;
1535
+ text-transform: uppercase;
1536
+
1537
+ &.none {
1538
+ background-color: colors.$gray-20;
1539
+ color: colors.$gray-80;
1540
+ }
1541
+
1542
+ &.mild {
1543
+ background-color: colors.$blue-20;
1544
+ color: colors.$blue-80;
1545
+ }
1546
+
1547
+ &.moderate {
1548
+ background-color: colors.$orange-20;
1549
+ color: colors.$orange-80;
1550
+ }
1551
+
1552
+ &.strong {
1553
+ background-color: colors.$red-20;
1554
+ color: colors.$red-80;
1555
+ }
1556
+ }
1557
+
1558
+ // ===== DRUGS AND IV FLUIDS GRAPH STYLES =====
1559
+ .drugsIVFluidsGraph {
1560
+ width: 100%;
1561
+ margin: layout.$spacing-05 0;
1562
+ }
1563
+
1564
+ .drugsCell {
1565
+ position: relative;
1566
+ background-color: colors.$white;
1567
+ border: 1px solid colors.$gray-30;
1568
+ padding: layout.$spacing-02;
1569
+ min-height: 60px;
1570
+ display: flex;
1571
+ align-items: center;
1572
+ justify-content: center;
1573
+ text-align: center;
1574
+ font-size: 12px;
1575
+ line-height: 1.2;
1576
+
1577
+ &:hover {
1578
+ background-color: colors.$gray-10;
1579
+ }
1580
+ }
1581
+
1582
+ .drugInfo {
1583
+ display: flex;
1584
+ flex-direction: column;
1585
+ gap: layout.$spacing-01;
1586
+ }
1587
+
1588
+ .drugName {
1589
+ font-weight: 600;
1590
+ color: colors.$gray-100;
1591
+ font-size: 11px;
1592
+ line-height: 1.2;
1593
+ }
1594
+
1595
+ .drugDosage {
1596
+ font-weight: 400;
1597
+ color: colors.$gray-70;
1598
+ font-size: 10px;
1599
+ line-height: 1.1;
1600
+ }
1601
+
1602
+ // Pulse and BP Graph Styling
1603
+ .pulseBPGraph {
1604
+ width: 100%;
1605
+ margin: layout.$spacing-05 0;
1606
+
1607
+ .chartContainer {
1608
+ background-color: colors.$white;
1609
+ padding: layout.$spacing-04;
1610
+ border-radius: layout.$spacing-02;
1611
+ border: 2px solid colors.$gray-40;
1612
+ margin-bottom: layout.$spacing-04;
1613
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1614
+ min-height: 400px;
1615
+
1616
+ // Medical chart styling
1617
+ :global(.cds--chart-wrapper) {
1618
+ border: 1px solid colors.$gray-30;
1619
+ border-radius: layout.$spacing-02;
1620
+ overflow: hidden;
1621
+
1622
+ // Enhanced grid lines for medical chart appearance
1623
+ :global(.cds--chart) {
1624
+ background-color: colors.$white;
1625
+
1626
+ // Grid styling for medical charts
1627
+ :global(.cds--chart-grid-line) {
1628
+ stroke: colors.$gray-30;
1629
+ stroke-width: 1;
1630
+ }
1631
+
1632
+ :global(.cds--chart-axis) {
1633
+ stroke: colors.$gray-50;
1634
+ }
1635
+
1636
+ :global(.cds--chart-axis text) {
1637
+ fill: colors.$gray-90;
1638
+ font-size: 12px;
1639
+ }
1640
+ }
1641
+ }
1642
+
1643
+ .emptyChartMessage {
1644
+ display: flex;
1645
+ align-items: center;
1646
+ justify-content: center;
1647
+ height: 350px;
1648
+ color: colors.$gray-60;
1649
+ font-style: italic;
1650
+ }
1651
+ }
1652
+
1653
+ .timeLabelsContainer {
1654
+ margin-top: layout.$spacing-03;
1655
+ }
1656
+
1657
+ .timeLabelsGrid {
1658
+ display: grid;
1659
+ grid-template-columns: 80px repeat(10, 1fr);
1660
+ gap: 1px;
1661
+ background-color: colors.$gray-30;
1662
+ border: 1px solid colors.$gray-30;
1663
+ border-radius: layout.$spacing-02;
1664
+ }
1665
+
1666
+ .hoursRow,
1667
+ .timeRow {
1668
+ display: contents;
1669
+ }
1670
+
1671
+ .timeLabel {
1672
+ background-color: colors.$gray-10;
1673
+ padding: layout.$spacing-02;
1674
+ font-weight: 600;
1675
+ font-size: 12px;
1676
+ display: flex;
1677
+ align-items: center;
1678
+ justify-content: center;
1679
+ border-right: 1px solid colors.$gray-30;
1680
+ }
1681
+
1682
+ .timeCell {
1683
+ background-color: colors.$white;
1684
+ padding: layout.$spacing-02;
1685
+ font-size: 11px;
1686
+ text-align: center;
1687
+ display: flex;
1688
+ align-items: center;
1689
+ justify-content: center;
1690
+ min-height: 32px;
1691
+ border-right: 1px solid colors.$gray-20;
1692
+
1693
+ &:last-child {
1694
+ border-right: none;
1695
+ }
1696
+ }
1697
+ }
1698
+
1699
+ .pulseBPCell {
1700
+ position: relative;
1701
+ background-color: colors.$white;
1702
+ border: 1px solid colors.$gray-30;
1703
+ padding: layout.$spacing-02;
1704
+ min-height: 60px;
1705
+ display: flex;
1706
+ align-items: center;
1707
+ justify-content: center;
1708
+ text-align: center;
1709
+ font-size: 12px;
1710
+ line-height: 1.2;
1711
+ font-weight: 600;
1712
+
1713
+ &:hover {
1714
+ background-color: colors.$gray-10;
1715
+ }
1716
+ }