eleventy-plugin-uncharted 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/css/uncharted.css CHANGED
@@ -44,9 +44,9 @@
44
44
  --chart-column-width: 1rem;
45
45
  --chart-donut-size: 20rem;
46
46
  --chart-donut-hole: 30%;
47
- --chart-dot-size: 0.75rem;
48
- --chart-dot-size-min: 0.375rem;
49
- --chart-dot-size-max: 1.5rem;
47
+ --chart-dot-size: 0.5rem;
48
+ --chart-bubble-size-min: 0.25rem;
49
+ --chart-bubble-size-max: 2rem;
50
50
  --chart-height: 12rem;
51
51
  }
52
52
 
@@ -145,10 +145,11 @@
145
145
  margin-left: 0.125rem;
146
146
  }
147
147
 
148
- /* Dot/scatter/line charts use circular legend markers */
148
+ /* Dot/scatter/line/timeseries charts use circular legend markers */
149
149
  .chart-dot &::before,
150
150
  .chart-line &::before,
151
- .chart-scatter &::before {
151
+ .chart-scatter &::before,
152
+ .chart-timeseries &::before {
152
153
  border-radius: 50%;
153
154
  }
154
155
  }
@@ -557,12 +558,12 @@
557
558
  }
558
559
 
559
560
  :is(.chart-dot, .chart-line) .dot-chart {
561
+ background: var(--chart-bg);
562
+ border-radius: 3px;
560
563
  grid-row: 1;
561
564
  position: relative;
562
565
  min-height: var(--chart-height);
563
566
  box-sizing: border-box;
564
- background: var(--chart-bg);
565
- border-radius: 3px;
566
567
  }
567
568
 
568
569
  /* Inner field sized to content area - dots position relative to this */
@@ -582,9 +583,17 @@
582
583
  min-width: 1.5rem;
583
584
  }
584
585
 
585
- :is(.chart-dot, .chart-line) .dot {
586
+ .chart-dot .dot {
586
587
  width: var(--chart-dot-size);
587
588
  height: var(--chart-dot-size);
589
+ }
590
+
591
+ .chart-line .dot {
592
+ width: var(--chart-dot-size);
593
+ height: var(--chart-dot-size);
594
+ }
595
+
596
+ :is(.chart-dot, .chart-line) .dot {
588
597
  border-radius: 50%;
589
598
  position: absolute;
590
599
  left: 50%;
@@ -600,31 +609,23 @@
600
609
  }
601
610
 
602
611
  /* Dots with icons */
603
- :is(.chart-dot, .chart-line) .dot.has-icon {
612
+ :is(.chart-dot, .chart-line, .chart-timeseries) .dot.has-icon {
604
613
  background: transparent;
605
614
  display: flex;
606
615
  align-items: center;
607
616
  justify-content: center;
608
617
  }
609
618
 
610
- :is(.chart-dot, .chart-line) .dot.has-icon i {
619
+ .chart-dot .dot.has-icon i {
611
620
  color: var(--color);
612
621
  font-size: var(--chart-dot-size);
613
622
  line-height: 1;
614
623
  }
615
624
 
616
- /* Line chart icons: clip the line ends around the icons */
617
- .chart-line:has(.dot.has-icon) .chart-line-segment {
618
- --clip-size: calc(var(--chart-dot-size) * 0.75);
619
- mask-image: linear-gradient(
620
- to right,
621
- transparent 0,
622
- transparent var(--clip-size),
623
- black var(--clip-size),
624
- black calc(100% - var(--clip-size)),
625
- transparent calc(100% - var(--clip-size)),
626
- transparent 100%
627
- );
625
+ :is(.chart-line, .chart-timeseries) .dot.has-icon i {
626
+ color: var(--color);
627
+ font-size: var(--chart-dot-size);
628
+ line-height: 1;
628
629
  }
629
630
 
630
631
  :is(.chart-dot, .chart-line) .dot-labels {
@@ -655,15 +656,198 @@
655
656
  text-overflow: clip;
656
657
  }
657
658
 
659
+ :is(.chart-dot, .chart-line) .dot-labels .axis-title {
660
+ flex-basis: 100%;
661
+ text-align: center;
662
+ font-size: 0.7rem;
663
+ opacity: 0.6;
664
+ white-space: nowrap;
665
+ margin-top: 0.5rem;
666
+ }
667
+
668
+ /* ==========================================================================
669
+ Bubble Chart (Categorical X, Continuous Y, Variable Dot Sizes)
670
+ ========================================================================== */
671
+
672
+ /* Bubble chart uses same layout as dot/line charts */
673
+ .chart-bubble .chart-body {
674
+ display: grid;
675
+ grid-template-columns: auto 1fr;
676
+ grid-template-rows: 1fr auto;
677
+ }
678
+
679
+ .chart-bubble .chart-y-axis {
680
+ grid-row: 1;
681
+ grid-column: 1;
682
+ }
683
+
684
+ .chart-bubble .chart-scroll {
685
+ grid-row: 1 / -1;
686
+ grid-column: 2;
687
+ display: grid;
688
+ grid-template-rows: subgrid;
689
+ overflow-x: auto;
690
+ overflow-y: visible;
691
+ }
692
+
693
+ .chart-bubble .dot-chart {
694
+ background: var(--chart-bg);
695
+ border-radius: 3px;
696
+ grid-row: 1;
697
+ position: relative;
698
+ min-height: var(--chart-height);
699
+ box-sizing: border-box;
700
+ }
701
+
702
+ .chart-bubble .dot-field {
703
+ position: absolute;
704
+ top: 0.5rem;
705
+ right: 0.5rem;
706
+ bottom: 0;
707
+ left: 0.5rem;
708
+ display: flex;
709
+ align-items: stretch;
710
+ }
711
+
712
+ .chart-bubble .dot-col {
713
+ flex: 1;
714
+ position: relative;
715
+ min-width: 1.5rem;
716
+ }
717
+
718
+ .chart-bubble .dot {
719
+ border-radius: 50%;
720
+ position: absolute;
721
+ left: 50%;
722
+ bottom: var(--value);
723
+ transform: translate(-50%, 50%);
724
+ cursor: default;
725
+ background-color: var(--color);
726
+ }
727
+
728
+ /* Variable-sized dots for bubble charts */
729
+ .chart-bubble .dot[style*="--size-scale"] {
730
+ --computed-size: calc(
731
+ var(--chart-bubble-size-min) +
732
+ var(--size-scale) * (var(--chart-bubble-size-max) - var(--chart-bubble-size-min))
733
+ );
734
+ width: var(--computed-size);
735
+ height: var(--computed-size);
736
+ }
737
+
738
+ /* Fallback size when no size-scale */
739
+ .chart-bubble .dot:not([style*="--size-scale"]) {
740
+ width: var(--chart-dot-size);
741
+ height: var(--chart-dot-size);
742
+ }
743
+
744
+ .chart-bubble .dot[title]:hover {
745
+ transform: translate(-50%, 50%) scale(1.3);
746
+ z-index: 1;
747
+ }
748
+
749
+ /* Bubble dots with icons */
750
+ .chart-bubble .dot.has-icon {
751
+ background: transparent;
752
+ display: flex;
753
+ align-items: center;
754
+ justify-content: center;
755
+ }
756
+
757
+ .chart-bubble .dot.has-icon[style*="--size-scale"] i {
758
+ color: var(--color);
759
+ font-size: var(--computed-size);
760
+ line-height: 1;
761
+ }
762
+
763
+ .chart-bubble .dot-labels {
764
+ grid-row: 2;
765
+ display: flex;
766
+ gap: 6px;
767
+ padding: 0 0.5rem;
768
+ margin-top: 0.5rem;
769
+ }
770
+
771
+ .chart-bubble .dot-label {
772
+ flex: 1;
773
+ min-width: 1.5rem;
774
+ font-size: 0.7rem;
775
+ opacity: 0.6;
776
+ text-align: center;
777
+ }
778
+
779
+ /* Rotated bubble labels (opt-in via rotateLabels config) */
780
+ .chart-bubble.rotate-labels .dot-labels {
781
+ padding-top: 0.5rem;
782
+ align-items: flex-start;
783
+ }
784
+
785
+ .chart-bubble.rotate-labels .dot-label {
786
+ writing-mode: vertical-rl;
787
+ transform: rotate(180deg);
788
+ display: flex;
789
+ align-items: center;
790
+ overflow: visible;
791
+ text-overflow: clip;
792
+ }
793
+
794
+ .chart-bubble .dot-labels .axis-title {
795
+ flex-basis: 100%;
796
+ text-align: center;
797
+ font-size: 0.7rem;
798
+ opacity: 0.6;
799
+ white-space: nowrap;
800
+ margin-top: 0.5rem;
801
+ }
802
+
803
+ /* Bubble chart legend uses circular markers */
804
+ .chart-bubble .chart-legend-item::before {
805
+ border-radius: 50%;
806
+ }
807
+
808
+ /* Bubble chart negative Y support */
809
+ .chart-bubble.has-negative-y .dot-field {
810
+ bottom: 0.5rem;
811
+ }
812
+
813
+ .chart-bubble.has-negative-y .chart-y-axis {
814
+ padding-bottom: 0.5rem;
815
+ }
816
+
817
+ .chart-bubble.has-negative-y .dot-field::after {
818
+ content: '';
819
+ position: absolute;
820
+ left: 0;
821
+ right: 0;
822
+ bottom: var(--zero-position, 0);
823
+ height: 1px;
824
+ background-color: currentColor;
825
+ opacity: 0.4;
826
+ pointer-events: none;
827
+ z-index: 0;
828
+ }
829
+
830
+ .chart-bubble.has-negative-y .chart-y-axis {
831
+ position: relative;
832
+ }
833
+
834
+ .chart-bubble.has-negative-y .chart-y-axis .axis-label:nth-child(2) {
835
+ position: absolute;
836
+ right: 0;
837
+ transform: translateY(50%);
838
+ bottom: calc(0.5rem + var(--zero-position, 50%) * 11 / 12);
839
+ }
840
+
658
841
  /* ==========================================================================
659
842
  Line Chart (CSS segments connecting dots)
660
843
  ========================================================================== */
661
844
 
662
- .chart-line .dot-field {
845
+ /* Shared line segment styles for line and timeseries charts */
846
+ :is(.chart-line, .chart-timeseries) .dot-field {
663
847
  container-type: size;
664
848
  }
665
849
 
666
- .chart-line .chart-line-segment {
850
+ :is(.chart-line, .chart-timeseries) .chart-line-segment {
667
851
  position: absolute;
668
852
  left: calc(var(--x1) * 1%);
669
853
  bottom: calc(var(--y1) * 1%);
@@ -677,9 +861,18 @@
677
861
  pointer-events: none;
678
862
  }
679
863
 
680
- /* Hide dots when dots: false */
681
- .chart-line.no-dots .dot {
682
- display: none;
864
+ /* Icon clipping: clip line ends around icons */
865
+ :is(.chart-line, .chart-timeseries):has(.dot.has-icon) .chart-line-segment {
866
+ --clip-size: calc(var(--chart-dot-size) * 0.75);
867
+ mask-image: linear-gradient(
868
+ to right,
869
+ transparent 0,
870
+ transparent var(--clip-size),
871
+ black var(--clip-size),
872
+ black calc(100% - var(--clip-size)),
873
+ transparent calc(100% - var(--clip-size)),
874
+ transparent 100%
875
+ );
683
876
  }
684
877
 
685
878
  /* ==========================================================================
@@ -760,8 +953,8 @@
760
953
  /* Variable-sized dots (size column) */
761
954
  .chart-scatter .dot[style*="--size-scale"] {
762
955
  --computed-size: calc(
763
- var(--chart-dot-size-min) +
764
- var(--size-scale) * (var(--chart-dot-size-max) - var(--chart-dot-size-min))
956
+ var(--chart-bubble-size-min) +
957
+ var(--size-scale) * (var(--chart-bubble-size-max) - var(--chart-bubble-size-min))
765
958
  );
766
959
  width: var(--computed-size);
767
960
  height: var(--computed-size);
@@ -772,6 +965,126 @@
772
965
  font-size: var(--computed-size);
773
966
  }
774
967
 
968
+ /* ==========================================================================
969
+ Time-Series Chart (Continuous X axis with proportional positioning)
970
+ ========================================================================== */
971
+
972
+ .chart-timeseries .chart-body {
973
+ display: grid;
974
+ grid-template-columns: auto 1fr;
975
+ grid-template-rows: 1fr auto;
976
+ overflow: visible;
977
+ }
978
+
979
+ .chart-timeseries .chart-y-axis {
980
+ grid-row: 1;
981
+ grid-column: 1;
982
+ }
983
+
984
+ .chart-timeseries .timeseries-container,
985
+ .chart-timeseries .dot-area,
986
+ .chart-timeseries .dot-field {
987
+ overflow: visible;
988
+ }
989
+
990
+ .chart-timeseries .chart-scroll {
991
+ grid-row: 1 / -1;
992
+ grid-column: 2;
993
+ display: grid;
994
+ grid-template-rows: subgrid;
995
+ overflow-x: auto;
996
+ overflow-y: visible;
997
+ }
998
+
999
+ .chart-timeseries .timeseries-container {
1000
+ grid-row: 1 / -1;
1001
+ grid-column: 1;
1002
+ display: grid;
1003
+ grid-template-rows: subgrid;
1004
+ /* When dots shown, minimum width ensures scrollability */
1005
+ min-width: max(100%, calc(var(--point-count, 0) * 0.75rem));
1006
+ }
1007
+
1008
+ .chart-timeseries .dot-area {
1009
+ grid-row: 1;
1010
+ position: relative;
1011
+ min-height: var(--chart-height);
1012
+ box-sizing: border-box;
1013
+ background: var(--chart-bg);
1014
+ border-radius: 3px;
1015
+ }
1016
+
1017
+ .chart-timeseries .chart-x-axis {
1018
+ grid-row: 2;
1019
+ }
1020
+
1021
+ /* Inner field sized to content area - dots position relative to this */
1022
+ .chart-timeseries .dot-field {
1023
+ position: absolute;
1024
+ inset: 0.5rem 1rem 0;
1025
+ }
1026
+
1027
+ /* Dots positioned by --x and --value (like scatter) */
1028
+ .chart-timeseries .dot {
1029
+ position: absolute;
1030
+ width: var(--chart-dot-size);
1031
+ height: var(--chart-dot-size);
1032
+ border-radius: 50%;
1033
+ left: var(--x);
1034
+ bottom: var(--value);
1035
+ transform: translate(-50%, 50%);
1036
+ cursor: default;
1037
+ background-color: var(--color);
1038
+ }
1039
+
1040
+ .chart-timeseries .dot[title]:hover {
1041
+ transform: translate(-50%, 50%) scale(1.3);
1042
+ z-index: 1;
1043
+ }
1044
+
1045
+ /* Hide dots visually but keep them hoverable for tooltips */
1046
+ :is(.chart-line, .chart-timeseries).no-dots .dot {
1047
+ background: transparent;
1048
+ min-width: var(--chart-dot-size);
1049
+ min-height: var(--chart-dot-size);
1050
+ }
1051
+
1052
+ :is(.chart-line, .chart-timeseries).no-dots .dot:hover {
1053
+ background-color: var(--color);
1054
+ transform: translate(-50%, 50%) scale(1.3);
1055
+ z-index: 1;
1056
+ }
1057
+
1058
+ /* X-axis with positioned labels */
1059
+ .chart-timeseries .timeseries-x-axis {
1060
+ position: relative;
1061
+ padding: 0.25rem 1rem;
1062
+ margin-top: 0.25rem;
1063
+ min-height: 2.5em;
1064
+ }
1065
+
1066
+ .chart-timeseries .timeseries-x-axis .axis-label {
1067
+ position: absolute;
1068
+ font-size: 0.7rem;
1069
+ opacity: 0.6;
1070
+ font-variant-numeric: tabular-nums;
1071
+ /* Position labels to align with dot-field (inset 1rem from dot-area) */
1072
+ left: calc(1rem + var(--x) * (100% - 2rem));
1073
+ transform: translateX(-50%);
1074
+ text-align: center;
1075
+ line-height: 1.2;
1076
+ }
1077
+
1078
+
1079
+ .chart-timeseries .timeseries-x-axis .axis-title {
1080
+ display: block;
1081
+ text-align: center;
1082
+ font-size: 0.7rem;
1083
+ opacity: 0.6;
1084
+ white-space: nowrap;
1085
+ margin-top: 1.25em;
1086
+ }
1087
+
775
1088
  /* Size legend */
776
1089
  .chart-size-legend {
777
1090
  display: flex;
@@ -799,13 +1112,13 @@
799
1112
  }
800
1113
 
801
1114
  .size-dot-min {
802
- width: var(--chart-dot-size-min);
803
- height: var(--chart-dot-size-min);
1115
+ width: var(--chart-bubble-size-min);
1116
+ height: var(--chart-bubble-size-min);
804
1117
  }
805
1118
 
806
1119
  .size-dot-max {
807
- width: var(--chart-dot-size-max);
808
- height: var(--chart-dot-size-max);
1120
+ width: var(--chart-bubble-size-max);
1121
+ height: var(--chart-bubble-size-max);
809
1122
  }
810
1123
 
811
1124
  .size-value {
@@ -1039,15 +1352,27 @@
1039
1352
  }
1040
1353
  }
1041
1354
 
1042
- /* Line chart: clip-path sweep reveals lines and dots left-to-right */
1043
- .chart-animate.chart-line .dot-field {
1044
- clip-path: inset(calc(var(--chart-dot-size) * -0.5) 100% calc(var(--chart-dot-size) * -0.5) 0);
1045
- animation: line-reveal 1.5s cubic-bezier(0.25, 1, 0.5, 1) forwards;
1355
+ /* Line chart: animate scroll container */
1356
+ .chart-animate.chart-line .chart-scroll {
1357
+ clip-path: inset(0 100% 0 0);
1358
+ animation: container-reveal 1.5s cubic-bezier(0.25, 1, 0.5, 1) forwards;
1359
+ }
1360
+
1361
+ /* Timeseries: animate dot-field only (so x-axis labels and background don't animate) */
1362
+ /* Negative insets allow dots to overflow the field bounds */
1363
+ .chart-animate.chart-timeseries .dot-field {
1364
+ clip-path: inset(-1rem 100% -1rem 0);
1365
+ animation: timeseries-reveal 1.5s cubic-bezier(0.25, 1, 0.5, 1) forwards;
1046
1366
  }
1047
1367
 
1048
- @keyframes line-reveal {
1049
- from { clip-path: inset(calc(var(--chart-dot-size) * -0.5) 100% calc(var(--chart-dot-size) * -0.5) 0); }
1050
- to { clip-path: inset(calc(var(--chart-dot-size) * -0.5) 0 calc(var(--chart-dot-size) * -0.5) 0); }
1368
+ @keyframes timeseries-reveal {
1369
+ from { clip-path: inset(-1rem 100% -1rem 0); }
1370
+ to { clip-path: inset(-1rem); }
1371
+ }
1372
+
1373
+ @keyframes container-reveal {
1374
+ from { clip-path: inset(0 100% 0 0); }
1375
+ to { clip-path: inset(0); }
1051
1376
  }
1052
1377
 
1053
1378
  /* Donut chart: clockwise reveal using animated mask */
@@ -1093,6 +1418,44 @@
1093
1418
  }
1094
1419
  }
1095
1420
 
1421
+ /* Bubble chart: dots rise and scale from bottom */
1422
+ .chart-animate.chart-bubble .dot {
1423
+ animation: bubble-rise 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
1424
+ animation-delay: calc(var(--dot-index, 0) * var(--delay-step, 0.08s));
1425
+ opacity: 0;
1426
+ }
1427
+
1428
+ @keyframes bubble-rise {
1429
+ from {
1430
+ bottom: 0;
1431
+ opacity: 0;
1432
+ transform: translate(-50%, 50%) scale(0.3);
1433
+ }
1434
+ to {
1435
+ opacity: 1;
1436
+ transform: translate(-50%, 50%) scale(1);
1437
+ }
1438
+ }
1439
+
1440
+ /* Bubble chart with negatives: dots move from zero axis */
1441
+ .chart-animate.chart-bubble.has-negative-y .dot {
1442
+ animation: bubble-from-zero 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
1443
+ animation-delay: calc(var(--dot-index, 0) * var(--delay-step, 0.08s));
1444
+ opacity: 0;
1445
+ }
1446
+
1447
+ @keyframes bubble-from-zero {
1448
+ from {
1449
+ bottom: var(--zero-position, 0%);
1450
+ opacity: 0;
1451
+ transform: translate(-50%, 50%) scale(0.3);
1452
+ }
1453
+ to {
1454
+ opacity: 1;
1455
+ transform: translate(-50%, 50%) scale(1);
1456
+ }
1457
+ }
1458
+
1096
1459
  /* Sankey chart: SVG flows reveal from left to right */
1097
1460
  .chart-animate.chart-sankey .chart-sankey-flow {
1098
1461
  clip-path: inset(0 100% 0 0);
@@ -1111,28 +1474,29 @@
1111
1474
  .chart-animate .column-track,
1112
1475
  .chart-animate.chart-dot .dot,
1113
1476
  .chart-animate.chart-scatter .dot,
1477
+ .chart-animate.chart-bubble .dot,
1114
1478
  .chart-animate .donut-ring::before,
1115
1479
  .chart-animate.chart-sankey .chart-sankey-flow,
1116
- .chart-animate.chart-line .dot-field {
1480
+ .chart-animate.chart-line .chart-scroll,
1481
+ .chart-animate.chart-timeseries .dot-field {
1117
1482
  animation: none;
1118
1483
  }
1119
1484
 
1120
1485
  .chart-animate.chart-dot .dot,
1121
- .chart-animate.chart-scatter .dot {
1486
+ .chart-animate.chart-scatter .dot,
1487
+ .chart-animate.chart-bubble .dot {
1122
1488
  opacity: 1;
1123
1489
  transform: translate(-50%, 50%);
1124
1490
  }
1125
1491
 
1126
- .chart-animate.chart-line .dot-field {
1492
+ .chart-animate.chart-line .chart-scroll,
1493
+ .chart-animate.has-negative-y .column-track,
1494
+ .chart-animate.chart-sankey .chart-sankey-flow {
1127
1495
  clip-path: none;
1128
1496
  }
1129
1497
 
1130
- .chart-animate.has-negative-y .column-track {
1131
- clip-path: none;
1132
- }
1133
-
1134
- .chart-animate.chart-sankey .chart-sankey-flow {
1135
- clip-path: none;
1498
+ .chart-animate.chart-timeseries .dot-field {
1499
+ clip-path: inset(-1rem);
1136
1500
  }
1137
1501
  }
1138
1502
 
@@ -1202,7 +1566,8 @@
1202
1566
 
1203
1567
  /* Expand dot-field insets for negative values */
1204
1568
  :is(.chart-dot, .chart-line).has-negative-y .dot-field,
1205
- .chart-scatter.has-negative-y .dot-field {
1569
+ .chart-scatter.has-negative-y .dot-field,
1570
+ .chart-timeseries.has-negative-y .dot-field {
1206
1571
  bottom: 0.5rem;
1207
1572
  }
1208
1573
 
@@ -1212,12 +1577,13 @@
1212
1577
 
1213
1578
  /* Y-axis padding adjustment for negative values */
1214
1579
  :is(.chart-dot, .chart-line).has-negative-y .chart-y-axis,
1215
- .chart-scatter.has-negative-y .chart-y-axis {
1580
+ .chart-scatter.has-negative-y .chart-y-axis,
1581
+ .chart-timeseries.has-negative-y .chart-y-axis {
1216
1582
  padding-bottom: 0.5rem;
1217
1583
  }
1218
1584
 
1219
1585
  /* Zero axis lines - use dot-field for proper alignment */
1220
- :is(.chart-dot, .chart-line).has-negative-y .dot-field::after {
1586
+ :is(.chart-dot, .chart-line, .chart-timeseries).has-negative-y .dot-field::after {
1221
1587
  content: '';
1222
1588
  position: absolute;
1223
1589
  left: 0;
@@ -1262,20 +1628,20 @@
1262
1628
  ========================================================================== */
1263
1629
 
1264
1630
  /* Y-axis needs relative positioning for absolute label */
1265
- :is(.chart-dot, .chart-line).has-negative-y .chart-y-axis,
1631
+ :is(.chart-dot, .chart-line, .chart-timeseries).has-negative-y .chart-y-axis,
1266
1632
  .chart-scatter.has-negative-y .chart-y-axis {
1267
1633
  position: relative;
1268
1634
  }
1269
1635
 
1270
1636
  /* Position middle Y-axis label at zero */
1271
- :is(.chart-dot, .chart-line).has-negative-y .chart-y-axis .axis-label:nth-child(2),
1637
+ :is(.chart-dot, .chart-line, .chart-timeseries).has-negative-y .chart-y-axis .axis-label:nth-child(2),
1272
1638
  .chart-scatter.has-negative-y .chart-y-axis .axis-label:nth-child(2) {
1273
1639
  position: absolute;
1274
1640
  right: 0;
1275
1641
  transform: translateY(50%);
1276
1642
  }
1277
1643
 
1278
- :is(.chart-dot, .chart-line).has-negative-y .chart-y-axis .axis-label:nth-child(2) {
1644
+ :is(.chart-dot, .chart-line, .chart-timeseries).has-negative-y .chart-y-axis .axis-label:nth-child(2) {
1279
1645
  bottom: calc(0.5rem + var(--zero-position, 50%) * 11 / 12);
1280
1646
  }
1281
1647
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eleventy-plugin-uncharted",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "An Eleventy plugin that renders CSS-based charts from CSV data using shortcodes",
5
5
  "main": "eleventy.config.js",
6
6
  "type": "module",