@carbonplan/components 10.4.0 → 11.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dst/index.js CHANGED
@@ -4,6 +4,7 @@ var color = require('@theme-ui/color');
4
4
  var NextLink = require('next/link');
5
5
  var icons = require('@carbonplan/icons');
6
6
  var emoji = require('@carbonplan/emoji');
7
+ var matchMedia = require('@theme-ui/match-media');
7
8
  var Head = require('next/head');
8
9
  var react = require('@emotion/react');
9
10
 
@@ -92,7 +93,7 @@ var event = function event(_ref) {
92
93
  });
93
94
  };
94
95
 
95
- var Link = function Link(_ref2) {
96
+ var Link = function Link(_ref2, ref) {
96
97
  var href = _ref2.href,
97
98
  children = _ref2.children,
98
99
  _ref2$internal = _ref2.internal,
@@ -105,7 +106,9 @@ var Link = function Link(_ref2) {
105
106
  return /*#__PURE__*/React__default['default'].createElement(NextLink__default['default'], {
106
107
  href: href,
107
108
  passHref: true
108
- }, /*#__PURE__*/React__default['default'].createElement(themeUi.Link, props, children));
109
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Link, _extends({
110
+ ref: ref
111
+ }, props), children));
109
112
  } else if (tracking) {
110
113
  var action;
111
114
  var category;
@@ -127,17 +130,21 @@ var Link = function Link(_ref2) {
127
130
  };
128
131
 
129
132
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Link, _extends({
133
+ ref: ref,
130
134
  onClick: track,
131
135
  onContextMenu: track,
132
136
  href: href
133
137
  }, props), children);
134
138
  } else {
135
139
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Link, _extends({
140
+ ref: ref,
136
141
  href: href
137
142
  }, props), children);
138
143
  }
139
144
  };
140
145
 
146
+ var Link$1 = React.forwardRef(Link);
147
+
141
148
  var getSizeStyles = function getSizeStyles(size) {
142
149
  if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {
143
150
  throw new Error('Size must be xs, sm, md, lg, or xl');
@@ -188,7 +195,7 @@ var getSizeStyles = function getSizeStyles(size) {
188
195
  };
189
196
  };
190
197
 
191
- var Button = function Button(_ref) {
198
+ var Button = function Button(_ref, ref) {
192
199
  var _ref$size = _ref.size,
193
200
  size = _ref$size === void 0 ? 'sm' : _ref$size,
194
201
  prefix = _ref.prefix,
@@ -358,7 +365,8 @@ var Button = function Button(_ref) {
358
365
  }, suffix && suffix));
359
366
 
360
367
  if (href) {
361
- return /*#__PURE__*/React__default['default'].createElement(Link, _extends({
368
+ return /*#__PURE__*/React__default['default'].createElement(Link$1, _extends({
369
+ ref: ref,
362
370
  href: href,
363
371
  internal: internal,
364
372
  tracking: tracking,
@@ -368,13 +376,16 @@ var Button = function Button(_ref) {
368
376
  }, props), Inner);
369
377
  } else {
370
378
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, _extends({
379
+ ref: ref,
371
380
  as: "button",
372
381
  sx: style
373
382
  }, props), Inner);
374
383
  }
375
384
  };
376
385
 
377
- var Callout = function Callout(_ref) {
386
+ var button = React.forwardRef(Button);
387
+
388
+ var Callout = function Callout(_ref, ref) {
378
389
  var label = _ref.label,
379
390
  children = _ref.children,
380
391
  inverted = _ref.inverted,
@@ -448,7 +459,8 @@ var Callout = function Callout(_ref) {
448
459
  })));
449
460
 
450
461
  if (href) {
451
- return /*#__PURE__*/React__default['default'].createElement(Link, _extends({
462
+ return /*#__PURE__*/React__default['default'].createElement(Link$1, _extends({
463
+ ref: ref,
452
464
  href: href,
453
465
  internal: internal,
454
466
  tracking: tracking,
@@ -456,12 +468,343 @@ var Callout = function Callout(_ref) {
456
468
  }, props), Inner);
457
469
  } else {
458
470
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, _extends({
471
+ ref: ref,
459
472
  as: "button",
460
473
  sx: style
461
474
  }, props), Inner);
462
475
  }
463
476
  };
464
477
 
478
+ var callout = React.forwardRef(Callout);
479
+
480
+ var styles = {
481
+ clim: function clim(setClim) {
482
+ return {
483
+ fontFamily: 'mono',
484
+ fontSize: ['9px', 0, 0, 1],
485
+ letterSpacing: 'smallcaps',
486
+ textTransform: 'uppercase',
487
+ '@media (hover: hover) and (pointer: fine)': {
488
+ '&:hover': {
489
+ borderBottom: setClim ? function (_ref) {
490
+ var colors = _ref.colors;
491
+ return "solid 1px " + colors.primary + " !important";
492
+ } : 'unset'
493
+ }
494
+ },
495
+ '&:focus': {
496
+ outline: 'none',
497
+ borderBottom: setClim ? function (_ref2) {
498
+ var colors = _ref2.colors;
499
+ return "solid 1px " + colors.primary + " !important";
500
+ } : 'unset'
501
+ },
502
+ transition: 'border 0.15s',
503
+ userSelect: setClim ? 'none !important' : 'unset',
504
+ width: 'fit-content',
505
+ minWidth: 'fit-content'
506
+ };
507
+ }
508
+ };
509
+ var DIMENSIONS = {
510
+ width: ['10px', '16px', '16px', '17px'],
511
+ height: ['80px', '110px', '110px', '130px']
512
+ };
513
+
514
+ var Gradient = function Gradient(_ref3) {
515
+ var colormap = _ref3.colormap,
516
+ discrete = _ref3.discrete,
517
+ horizontal = _ref3.horizontal,
518
+ width = _ref3.width,
519
+ height = _ref3.height;
520
+ var step = 1 / colormap.length * 100;
521
+ var values = colormap.map(function (d, i) {
522
+ return "rgb(" + d + ") " + i * step + "% " + (discrete && i < colormap.length - 1 ? (i + 1) * step + "%" : '');
523
+ });
524
+ var css = "linear-gradient(to " + (horizontal ? 'right' : 'top') + ", " + values.join(',') + ")";
525
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
526
+ sx: _extends({}, horizontal ? {
527
+ width: width || DIMENSIONS.height,
528
+ height: height || DIMENSIONS.width
529
+ } : {
530
+ width: width || DIMENSIONS.width,
531
+ minHeight: height || DIMENSIONS.height
532
+ }, {
533
+ mt: horizontal ? ['1px', '1px', '1px', 0] : 0,
534
+ border: function border(_ref4) {
535
+ var colors = _ref4.colors;
536
+ return "solid 1px " + colors.hinted;
537
+ },
538
+ background: css
539
+ })
540
+ });
541
+ };
542
+
543
+ var Label = function Label(_ref5) {
544
+ var label = _ref5.label,
545
+ units = _ref5.units,
546
+ horizontal = _ref5.horizontal;
547
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
548
+ sx: !horizontal && {
549
+ width: ['12px', '17px', '17px', '19px'],
550
+ alignSelf: 'flex-end'
551
+ }
552
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
553
+ sx: _extends({
554
+ mb: horizontal ? 0 : ['-4px', '-4px', '-4px', '-3px'],
555
+ fontFamily: 'mono',
556
+ fontSize: ['9px', 0, 0, 1],
557
+ letterSpacing: 'smallcaps',
558
+ textTransform: 'uppercase'
559
+ }, horizontal ? {} : {
560
+ writingMode: 'vertical-rl',
561
+ transform: 'rotate(180deg)',
562
+ whiteSpace: 'nowrap',
563
+ display: 'inline-block',
564
+ overflow: 'visible'
565
+ })
566
+ }, label, ' ', /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
567
+ as: "span",
568
+ sx: {
569
+ textTransform: 'none',
570
+ color: 'secondary',
571
+ display: 'inline-block'
572
+ }
573
+ }, units)));
574
+ };
575
+
576
+ var Colorbar = function Colorbar(_ref6) {
577
+ var colormap = _ref6.colormap,
578
+ label = _ref6.label,
579
+ clim = _ref6.clim,
580
+ setClim = _ref6.setClim,
581
+ _ref6$setClimStep = _ref6.setClimStep,
582
+ setClimStep = _ref6$setClimStep === void 0 ? 1 : _ref6$setClimStep,
583
+ discrete = _ref6.discrete,
584
+ units = _ref6.units,
585
+ width = _ref6.width,
586
+ height = _ref6.height,
587
+ _ref6$format = _ref6.format,
588
+ format = _ref6$format === void 0 ? function (d) {
589
+ return d;
590
+ } : _ref6$format,
591
+ _ref6$horizontal = _ref6.horizontal,
592
+ horizontal = _ref6$horizontal === void 0 ? false : _ref6$horizontal,
593
+ _ref6$bottom = _ref6.bottom,
594
+ bottom = _ref6$bottom === void 0 ? false : _ref6$bottom,
595
+ sx = _ref6.sx,
596
+ sxClim = _ref6.sxClim,
597
+ props = _objectWithoutPropertiesLoose(_ref6, ["colormap", "label", "clim", "setClim", "setClimStep", "discrete", "units", "width", "height", "format", "horizontal", "bottom", "sx", "sxClim"]);
598
+
599
+ if (!Array.isArray(colormap)) {
600
+ throw new Error("expected array for colormap, got '" + colormap + "'.");
601
+ }
602
+
603
+ var climRef = [React.useRef(), React.useRef()];
604
+
605
+ var _useState = React.useState(false),
606
+ climMinDragging = _useState[0],
607
+ setClimMinDragging = _useState[1];
608
+
609
+ var _useState2 = React.useState(false),
610
+ climMaxDragging = _useState2[0],
611
+ setClimMaxDragging = _useState2[1];
612
+
613
+ var x,
614
+ y,
615
+ dx,
616
+ dy = 0;
617
+ var id = null;
618
+ var init = [0, 0];
619
+ var scale = setClimStep;
620
+
621
+ var draggingFunction = function draggingFunction(e) {
622
+ if (id === 'min' && !climMinDragging) setClimMinDragging(true);
623
+ if (id === 'max' && !climMaxDragging) setClimMaxDragging(true);
624
+ dx = e.pageX - x;
625
+ dy = e.pageY - y;
626
+
627
+ if (horizontal) {
628
+ if (id === 'min') setClim(function (prev) {
629
+ return [Math.min(init[0] + dx * scale, init[1]), prev[1]];
630
+ });
631
+ if (id === 'max') setClim(function (prev) {
632
+ return [prev[0], Math.max(init[1] + dx * scale, init[0])];
633
+ });
634
+ } else {
635
+ if (id === 'min') setClim(function (prev) {
636
+ return [Math.min(init[0] - dy * scale, init[1]), prev[1]];
637
+ });
638
+ if (id === 'max') setClim(function (prev) {
639
+ return [prev[0], Math.max(init[1] - dy * scale, init[0])];
640
+ });
641
+ }
642
+ };
643
+
644
+ var handleMouseDown = function handleMouseDown(e) {
645
+ y = e.pageY;
646
+ x = e.pageX;
647
+ id = e.target.id;
648
+ init = clim;
649
+ document.body.setAttribute('style', horizontal ? 'cursor: ew-resize !important' : 'cursor: ns-resize !important');
650
+ document.addEventListener('mousemove', draggingFunction);
651
+
652
+ var updater = function updater() {
653
+ document.body.setAttribute('style', 'cursor: unset');
654
+ document.removeEventListener('mousemove', draggingFunction);
655
+ window.removeEventListener('mouseup', updater);
656
+ if (id === 'min') setClimMinDragging(false);
657
+ if (id === 'max') setClimMaxDragging(false);
658
+ };
659
+
660
+ window.addEventListener('mouseup', updater);
661
+ };
662
+
663
+ var increment = function increment(e) {
664
+ if (climRef[0].current === document.activeElement) {
665
+ e.preventDefault();
666
+ setClim(function (prev) {
667
+ return [Math.min(prev[0] + scale, prev[1]), prev[1]];
668
+ });
669
+ climRef[0].current.focus();
670
+ }
671
+
672
+ if (climRef[1].current === document.activeElement) {
673
+ e.preventDefault();
674
+ setClim(function (prev) {
675
+ return [prev[0], Math.max(prev[1] + scale, prev[0])];
676
+ });
677
+ climRef[1].current.focus();
678
+ }
679
+ };
680
+
681
+ var decrement = function decrement(e) {
682
+ if (climRef[0].current === document.activeElement) {
683
+ e.preventDefault();
684
+ setClim(function (prev) {
685
+ return [Math.min(prev[0] - scale, prev[1]), prev[1]];
686
+ });
687
+ climRef[0].current.focus();
688
+ }
689
+
690
+ if (climRef[1].current === document.activeElement) {
691
+ e.preventDefault();
692
+ setClim(function (prev) {
693
+ return [prev[0], Math.max(prev[1] - scale, prev[0])];
694
+ });
695
+ climRef[1].current.focus();
696
+ }
697
+ };
698
+
699
+ React.useEffect(function () {
700
+ var listener = function listener(e) {
701
+ if (['ArrowUp', 'ArrowRight'].includes(e.code) || ['ArrowUp', 'ArrowRight'].includes(e.key)) {
702
+ increment(e);
703
+ }
704
+
705
+ if (['ArrowDown', 'ArrowLeft'].includes(e.code) || ['ArrowDown', 'ArrowLeft'].includes(e.key)) {
706
+ decrement(e);
707
+ }
708
+ };
709
+
710
+ window.addEventListener('keydown', listener);
711
+ return function () {
712
+ window.removeEventListener('keydown', listener);
713
+ };
714
+ }, [clim]);
715
+
716
+ var ClimMin = function ClimMin() {
717
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
718
+ id: "min",
719
+ ref: climRef[0],
720
+ tabIndex: 0,
721
+ sx: _extends({}, styles.clim(setClim), {
722
+ ml: label ? horizontal ? bottom ? '0px' : '10px' : ['2px', '1px', '1px', '2px'] : 0,
723
+ mr: horizontal ? ['2px', '1px', '1px', '2px'] : 0,
724
+ mb: horizontal ? 0 : ['-2px', '-2px', '-2px', '-3px'],
725
+ borderBottom: setClim ? climMinDragging ? function (_ref7) {
726
+ var colors = _ref7.colors;
727
+ return "solid 1px " + colors.primary;
728
+ } : function (_ref8) {
729
+ var colors = _ref8.colors;
730
+ return "solid 1px " + colors.secondary;
731
+ } : 'unset',
732
+ cursor: setClim ? horizontal ? 'ew-resize' : 'ns-resize' : 'default'
733
+ }, sxClim),
734
+ onMouseDown: setClim ? handleMouseDown : function () {},
735
+ onClick: function onClick() {
736
+ return climRef[0].current.focus();
737
+ }
738
+ }, format(clim[0]));
739
+ };
740
+
741
+ var ClimMax = function ClimMax() {
742
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
743
+ id: "max",
744
+ ref: climRef[1],
745
+ tabIndex: 0,
746
+ sx: _extends({}, styles.clim(setClim), {
747
+ ml: horizontal ? ['2px', '1px', '1px', '2px'] : ['2px', '1px', '1px', '2px'],
748
+ mt: horizontal ? 0 : ['-2px', '-3px', '-3px', '-3px'],
749
+ borderBottom: setClim ? climMaxDragging ? function (_ref9) {
750
+ var colors = _ref9.colors;
751
+ return "solid 1px " + colors.primary;
752
+ } : function (_ref10) {
753
+ var colors = _ref10.colors;
754
+ return "solid 1px " + colors.secondary;
755
+ } : 'unset',
756
+ cursor: setClim ? horizontal ? 'ew-resize' : 'ns-resize' : 'default'
757
+ }, sxClim),
758
+ onMouseDown: setClim ? handleMouseDown : function () {},
759
+ onClick: function onClick() {
760
+ return climRef[1].current.focus();
761
+ }
762
+ }, format(clim[1]));
763
+ };
764
+
765
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, _extends({}, props, {
766
+ sx: _extends({
767
+ flexDirection: 'row',
768
+ alignItems: 'start',
769
+ justifyContent: 'flex-start',
770
+ gap: ['3px', '6px', '6px', '7px'],
771
+ height: !horizontal ? '100%' : 'unset'
772
+ }, sx)
773
+ }), label && /*#__PURE__*/React__default['default'].createElement(Label, {
774
+ label: label,
775
+ units: units,
776
+ horizontal: horizontal
777
+ }), /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
778
+ sx: {
779
+ flexGrow: horizontal ? 1 : 'unset',
780
+ flexDirection: 'column',
781
+ ml: bottom && label ? '4px' : '0px',
782
+ height: !horizontal ? '100%' : 'unset'
783
+ }
784
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
785
+ sx: {
786
+ gap: ['3px', '6px', '6px', '7px'],
787
+ height: !horizontal ? '100%' : 'unset'
788
+ }
789
+ }, horizontal && clim && !bottom && /*#__PURE__*/React__default['default'].createElement(ClimMin, null), /*#__PURE__*/React__default['default'].createElement(Gradient, {
790
+ colormap: colormap,
791
+ horizontal: horizontal,
792
+ discrete: discrete,
793
+ width: width,
794
+ height: height
795
+ }), horizontal && clim && !bottom && /*#__PURE__*/React__default['default'].createElement(ClimMax, null)), horizontal && clim && bottom && /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
796
+ sx: {
797
+ justifyContent: 'space-between'
798
+ }
799
+ }, /*#__PURE__*/React__default['default'].createElement(ClimMin, null), /*#__PURE__*/React__default['default'].createElement(ClimMax, null))), !horizontal && /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
800
+ sx: {
801
+ flexDirection: 'column-reverse',
802
+ justifyContent: 'space-between',
803
+ height: height || DIMENSIONS.height
804
+ }
805
+ }, clim && /*#__PURE__*/React__default['default'].createElement(ClimMin, null), clim && /*#__PURE__*/React__default['default'].createElement(ClimMax, null)));
806
+ };
807
+
465
808
  var Column = function Column(_ref) {
466
809
  var start = _ref.start,
467
810
  width = _ref.width,
@@ -824,145 +1167,6 @@ var Menu = function Menu(_ref) {
824
1167
  })));
825
1168
  };
826
1169
 
827
- var Settings = function Settings(_ref) {
828
- var value = _ref.value,
829
- sx = _ref.sx,
830
- props = _objectWithoutPropertiesLoose(_ref, ["value", "sx"]);
831
-
832
- return /*#__PURE__*/React__default['default'].createElement(themeUi.IconButton, _extends({
833
- sx: _extends({
834
- cursor: 'pointer',
835
- fill: 'none',
836
- strokeWidth: '2px',
837
- stroke: 'text',
838
- '.paren': {
839
- opacity: '0'
840
- },
841
- '@media (hover: hover) and (pointer: fine)': {
842
- '&:hover .paren': {
843
- opacity: '1'
844
- }
845
- }
846
- }, sx),
847
- "aria-label": "Toggle Menu"
848
- }, props), !value && /*#__PURE__*/React__default['default'].createElement("svg", {
849
- style: {
850
- width: '50px',
851
- height: '30px',
852
- transform: 'scale(2)',
853
- marginTop: '-3px'
854
- },
855
- xmlns: "http://www.w3.org/2000/svg",
856
- viewBox: "0 0 68 36"
857
- }, /*#__PURE__*/React__default['default'].createElement("line", {
858
- x1: "24",
859
- y1: "2.1",
860
- x2: "24",
861
- y2: "6.1"
862
- }), /*#__PURE__*/React__default['default'].createElement("line", {
863
- x1: "24",
864
- y1: "24.1",
865
- x2: "24",
866
- y2: "33.9"
867
- }), /*#__PURE__*/React__default['default'].createElement("line", {
868
- x1: "44",
869
- y1: "2.1",
870
- x2: "44",
871
- y2: "12.1"
872
- }), /*#__PURE__*/React__default['default'].createElement("line", {
873
- x1: "44",
874
- y1: "30.1",
875
- x2: "44",
876
- y2: "33.9"
877
- }), /*#__PURE__*/React__default['default'].createElement("circle", {
878
- cx: "24",
879
- cy: "15.1",
880
- r: "5"
881
- }), /*#__PURE__*/React__default['default'].createElement("circle", {
882
- cx: "44",
883
- cy: "21.1",
884
- r: "5"
885
- }), /*#__PURE__*/React__default['default'].createElement("path", {
886
- style: {
887
- transition: 'all 0.2s'
888
- },
889
- className: "paren",
890
- d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
891
- }), /*#__PURE__*/React__default['default'].createElement("path", {
892
- style: {
893
- transition: 'all 0.2s'
894
- },
895
- className: "paren",
896
- d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
897
- })), value && /*#__PURE__*/React__default['default'].createElement("svg", {
898
- style: {
899
- width: '50px',
900
- height: '30px',
901
- transform: 'scale(2)',
902
- marginTop: '-3px'
903
- },
904
- xmlns: "http://www.w3.org/2000/svg",
905
- viewBox: "0 0 68 36"
906
- }, /*#__PURE__*/React__default['default'].createElement("line", {
907
- x1: "50.85",
908
- y1: "29.79",
909
- x2: "17.15",
910
- y2: "6.21"
911
- }), /*#__PURE__*/React__default['default'].createElement("line", {
912
- x1: "17.15",
913
- y1: "29.79",
914
- x2: "50.85",
915
- y2: "6.21"
916
- }), /*#__PURE__*/React__default['default'].createElement("path", {
917
- style: {
918
- transition: 'all 0.2s'
919
- },
920
- className: "paren",
921
- d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
922
- }), /*#__PURE__*/React__default['default'].createElement("path", {
923
- style: {
924
- transition: 'all 0.2s'
925
- },
926
- className: "paren",
927
- d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
928
- })));
929
- };
930
-
931
- var Dimmer = function Dimmer(_ref) {
932
- var sx = _ref.sx,
933
- props = _objectWithoutPropertiesLoose(_ref, ["sx"]);
934
-
935
- var _useColorMode = themeUi.useColorMode(),
936
- colorMode = _useColorMode[0],
937
- setColorMode = _useColorMode[1];
938
-
939
- var toggle = React.useCallback(function () {
940
- setColorMode(colorMode === 'light' ? 'dark' : 'light');
941
- }, [colorMode]);
942
- return /*#__PURE__*/React__default['default'].createElement(themeUi.IconButton, _extends({
943
- "aria-label": "Toggle dark mode",
944
- onClick: toggle,
945
- role: "checkbox",
946
- sx: _extends({
947
- width: 32,
948
- height: 32,
949
- display: 'inline-block',
950
- cursor: 'pointer',
951
- color: 'secondary'
952
- }, sx)
953
- }, props), /*#__PURE__*/React__default['default'].createElement(icons.Sun, {
954
- sx: {
955
- strokeWidth: '1.75',
956
- transition: 'stroke 0.15s',
957
- '@media (hover: hover) and (pointer: fine)': {
958
- '&:hover': {
959
- stroke: 'primary'
960
- }
961
- }
962
- }
963
- }));
964
- };
965
-
966
1170
  var sx = {
967
1171
  link: function link(current, label, first) {
968
1172
  if (first === void 0) {
@@ -1077,8 +1281,7 @@ var Header = function Header(_ref3) {
1077
1281
  var status = _ref3.status,
1078
1282
  mode = _ref3.mode,
1079
1283
  nav = _ref3.nav,
1080
- dimmer = _ref3.dimmer,
1081
- settings = _ref3.settings;
1284
+ menuItems = _ref3.menuItems;
1082
1285
 
1083
1286
  var _useState = React.useState(false),
1084
1287
  expanded = _useState[0],
@@ -1090,7 +1293,6 @@ var Header = function Header(_ref3) {
1090
1293
 
1091
1294
  return /*#__PURE__*/React__default['default'].createElement(Row, {
1092
1295
  sx: {
1093
- width: '100%',
1094
1296
  pt: ['12px'],
1095
1297
  pb: [3]
1096
1298
  }
@@ -1142,53 +1344,31 @@ var Header = function Header(_ref3) {
1142
1344
  top: ['-2px', '-3px', '-3px']
1143
1345
  }
1144
1346
  }, status ? "(" + status + ")" : '')), /*#__PURE__*/React__default['default'].createElement(Column, {
1145
- start: [status ? 6 : 4, 6, 12, 12],
1347
+ start: [status ? 6 : 4, 6, 11, 11],
1146
1348
  width: [status ? 1 : 3, 3, 2, 2],
1147
1349
  sx: {
1148
- display: 'flex',
1149
- alignItems: 'center',
1150
- justifyContent: 'flex-end'
1151
- }
1152
- }, /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
1153
- sx: {
1154
- mr: ['18px'],
1155
- position: 'relative',
1156
- top: ['-1px'],
1157
- pointerEvents: expanded || settings && settings.value ? 'none' : 'all',
1158
- transition: 'opacity 0.15s',
1159
- display: [status ? 'none' : 'block', 'block', dimmer === 'top' ? 'block' : 'none', dimmer === 'top' ? 'block' : 'none']
1160
- }
1161
- }, /*#__PURE__*/React__default['default'].createElement(Dimmer, {
1162
- sx: {
1163
- opacity: expanded || settings && settings.value ? 0 : 1,
1164
- color: 'primary'
1350
+ zIndex: 5000
1165
1351
  }
1166
- })), settings && /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
1352
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
1167
1353
  sx: {
1168
- mr: ['21px'],
1169
- position: 'relative',
1170
- pointerEvents: expanded ? 'none' : 'all',
1171
- transition: 'opacity 0.15s',
1172
- display: [status ? 'none' : 'block', 'block', 'none', 'none']
1354
+ justifyContent: 'flex-end'
1173
1355
  }
1174
- }, /*#__PURE__*/React__default['default'].createElement(Settings, {
1175
- value: settings.value,
1176
- onClick: settings.onClick,
1356
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Flex, {
1177
1357
  sx: {
1358
+ mr: '18px',
1359
+ gap: '18px',
1178
1360
  opacity: expanded ? 0 : 1,
1179
- stroke: 'primary'
1361
+ transition: 'opacity 0.15s',
1362
+ justifyContent: 'space-between',
1363
+ alignItems: 'center'
1180
1364
  }
1181
- })), /*#__PURE__*/React__default['default'].createElement(Menu, {
1365
+ }, menuItems), /*#__PURE__*/React__default['default'].createElement(Menu, {
1182
1366
  sx: {
1183
- transition: 'opacity 0.15s',
1184
- pointerEvents: settings && settings.value ? 'none' : 'all',
1185
- opacity: settings && settings.value ? 0 : 1,
1186
- mr: ['-2px'],
1187
- zIndex: 5000
1367
+ mr: ['-2px']
1188
1368
  },
1189
1369
  value: expanded,
1190
1370
  onClick: toggle
1191
- })), /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
1371
+ }))), /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
1192
1372
  sx: {
1193
1373
  opacity: expanded ? 1 : 0,
1194
1374
  pointerEvents: expanded ? 'all' : 'none',
@@ -1388,6 +1568,41 @@ var Footer = function Footer() {
1388
1568
  }))));
1389
1569
  };
1390
1570
 
1571
+ var Dimmer = function Dimmer(_ref) {
1572
+ var sx = _ref.sx,
1573
+ props = _objectWithoutPropertiesLoose(_ref, ["sx"]);
1574
+
1575
+ var _useColorMode = themeUi.useColorMode(),
1576
+ colorMode = _useColorMode[0],
1577
+ setColorMode = _useColorMode[1];
1578
+
1579
+ var toggle = React.useCallback(function () {
1580
+ setColorMode(colorMode === 'light' ? 'dark' : 'light');
1581
+ }, [colorMode]);
1582
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.IconButton, _extends({
1583
+ "aria-label": "Toggle dark mode",
1584
+ onClick: toggle,
1585
+ role: "checkbox",
1586
+ sx: _extends({
1587
+ width: 32,
1588
+ height: 32,
1589
+ display: 'inline-block',
1590
+ cursor: 'pointer',
1591
+ color: 'secondary'
1592
+ }, sx)
1593
+ }, props), /*#__PURE__*/React__default['default'].createElement(icons.Sun, {
1594
+ sx: {
1595
+ strokeWidth: '1.75',
1596
+ transition: 'stroke 0.15s',
1597
+ '@media (hover: hover) and (pointer: fine)': {
1598
+ '&:hover': {
1599
+ stroke: 'primary'
1600
+ }
1601
+ }
1602
+ }
1603
+ }));
1604
+ };
1605
+
1391
1606
  var GitSha = function GitSha() {
1392
1607
  var sha = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA;
1393
1608
  var owner = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER;
@@ -1699,6 +1914,110 @@ function GuideColumns(_ref2) {
1699
1914
  }));
1700
1915
  }
1701
1916
 
1917
+ var Settings = function Settings(_ref) {
1918
+ var value = _ref.value,
1919
+ sx = _ref.sx,
1920
+ props = _objectWithoutPropertiesLoose(_ref, ["value", "sx"]);
1921
+
1922
+ return /*#__PURE__*/React__default['default'].createElement(themeUi.IconButton, _extends({
1923
+ sx: _extends({
1924
+ cursor: 'pointer',
1925
+ fill: 'none',
1926
+ strokeWidth: '2px',
1927
+ stroke: 'text',
1928
+ '.paren': {
1929
+ opacity: '0'
1930
+ },
1931
+ '@media (hover: hover) and (pointer: fine)': {
1932
+ '&:hover .paren': {
1933
+ opacity: '1'
1934
+ }
1935
+ }
1936
+ }, sx),
1937
+ "aria-label": "Toggle Menu"
1938
+ }, props), !value && /*#__PURE__*/React__default['default'].createElement("svg", {
1939
+ style: {
1940
+ width: '50px',
1941
+ height: '30px',
1942
+ transform: 'scale(2)',
1943
+ marginTop: '-3px'
1944
+ },
1945
+ xmlns: "http://www.w3.org/2000/svg",
1946
+ viewBox: "0 0 68 36"
1947
+ }, /*#__PURE__*/React__default['default'].createElement("line", {
1948
+ x1: "24",
1949
+ y1: "2.1",
1950
+ x2: "24",
1951
+ y2: "6.1"
1952
+ }), /*#__PURE__*/React__default['default'].createElement("line", {
1953
+ x1: "24",
1954
+ y1: "24.1",
1955
+ x2: "24",
1956
+ y2: "33.9"
1957
+ }), /*#__PURE__*/React__default['default'].createElement("line", {
1958
+ x1: "44",
1959
+ y1: "2.1",
1960
+ x2: "44",
1961
+ y2: "12.1"
1962
+ }), /*#__PURE__*/React__default['default'].createElement("line", {
1963
+ x1: "44",
1964
+ y1: "30.1",
1965
+ x2: "44",
1966
+ y2: "33.9"
1967
+ }), /*#__PURE__*/React__default['default'].createElement("circle", {
1968
+ cx: "24",
1969
+ cy: "15.1",
1970
+ r: "5"
1971
+ }), /*#__PURE__*/React__default['default'].createElement("circle", {
1972
+ cx: "44",
1973
+ cy: "21.1",
1974
+ r: "5"
1975
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
1976
+ style: {
1977
+ transition: 'all 0.2s'
1978
+ },
1979
+ className: "paren",
1980
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
1981
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
1982
+ style: {
1983
+ transition: 'all 0.2s'
1984
+ },
1985
+ className: "paren",
1986
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
1987
+ })), value && /*#__PURE__*/React__default['default'].createElement("svg", {
1988
+ style: {
1989
+ width: '50px',
1990
+ height: '30px',
1991
+ transform: 'scale(2)',
1992
+ marginTop: '-3px'
1993
+ },
1994
+ xmlns: "http://www.w3.org/2000/svg",
1995
+ viewBox: "0 0 68 36"
1996
+ }, /*#__PURE__*/React__default['default'].createElement("line", {
1997
+ x1: "50.85",
1998
+ y1: "29.79",
1999
+ x2: "17.15",
2000
+ y2: "6.21"
2001
+ }), /*#__PURE__*/React__default['default'].createElement("line", {
2002
+ x1: "17.15",
2003
+ y1: "29.79",
2004
+ x2: "50.85",
2005
+ y2: "6.21"
2006
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
2007
+ style: {
2008
+ transition: 'all 0.2s'
2009
+ },
2010
+ className: "paren",
2011
+ d: "M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6"
2012
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
2013
+ style: {
2014
+ transition: 'all 0.2s'
2015
+ },
2016
+ className: "paren",
2017
+ d: "M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6"
2018
+ })));
2019
+ };
2020
+
1702
2021
  var Layout = function Layout(_ref) {
1703
2022
  var title = _ref.title,
1704
2023
  description = _ref.description,
@@ -1726,6 +2045,7 @@ var Layout = function Layout(_ref) {
1726
2045
  _ref$container = _ref.container,
1727
2046
  container = _ref$container === void 0 ? true : _ref$container;
1728
2047
  var content = children;
2048
+ var index = matchMedia.useBreakpointIndex();
1729
2049
 
1730
2050
  if (fade) {
1731
2051
  content = /*#__PURE__*/React__default['default'].createElement(FadeIn, {
@@ -1734,7 +2054,34 @@ var Layout = function Layout(_ref) {
1734
2054
  }
1735
2055
 
1736
2056
  if (container) {
1737
- content = /*#__PURE__*/React__default['default'].createElement(themeUi.Container, null, content);
2057
+ content = /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
2058
+ sx: {
2059
+ mb: [8, 8, 9, 10]
2060
+ }
2061
+ }, /*#__PURE__*/React__default['default'].createElement(themeUi.Container, null, content));
2062
+ }
2063
+
2064
+ React.useEffect(function () {
2065
+ if (index > 2 && settings != null && settings.value && settings != null && settings.onClick) {
2066
+ settings == null ? void 0 : settings.onClick();
2067
+ }
2068
+ }, [index, settings == null ? void 0 : settings.value, settings == null ? void 0 : settings.onClick]);
2069
+ var menuItems = [/*#__PURE__*/React__default['default'].createElement(Dimmer, {
2070
+ key: "dimmer",
2071
+ sx: {
2072
+ color: 'primary',
2073
+ mt: '-2px',
2074
+ display: ['block', 'block', dimmer === 'top' ? 'block' : 'none', dimmer === 'top' ? 'block' : 'none']
2075
+ }
2076
+ })];
2077
+
2078
+ if (settings) {
2079
+ menuItems.push( /*#__PURE__*/React__default['default'].createElement(Settings, _extends({
2080
+ key: "settings",
2081
+ sx: {
2082
+ display: ['inherit', 'inherit', 'none', 'none']
2083
+ }
2084
+ }, settings)));
1738
2085
  }
1739
2086
 
1740
2087
  return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, guide && /*#__PURE__*/React__default['default'].createElement(Guide, {
@@ -1766,8 +2113,7 @@ var Layout = function Layout(_ref) {
1766
2113
  mode: links,
1767
2114
  status: status,
1768
2115
  nav: nav,
1769
- settings: settings,
1770
- dimmer: dimmer
2116
+ menuItems: menuItems
1771
2117
  }))), /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
1772
2118
  sx: {
1773
2119
  width: '100%',
@@ -2092,7 +2438,7 @@ var Group = function Group(_ref) {
2092
2438
  }));
2093
2439
  };
2094
2440
 
2095
- var Input = function Input(_ref) {
2441
+ var Input = function Input(_ref, ref) {
2096
2442
  var _extends2;
2097
2443
 
2098
2444
  var _ref$size = _ref.size,
@@ -2125,10 +2471,13 @@ var Input = function Input(_ref) {
2125
2471
  }, _extends2), getSizeStyles(size), sx);
2126
2472
 
2127
2473
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Input, _extends({}, props, {
2474
+ ref: ref,
2128
2475
  sx: styles
2129
2476
  }));
2130
2477
  };
2131
2478
 
2479
+ var input = React.forwardRef(Input);
2480
+
2132
2481
  var getProps = function getProps(test) {
2133
2482
  return function (props) {
2134
2483
  var next = {};
@@ -2148,7 +2497,8 @@ var Select = function Select(_ref) {
2148
2497
  _ref$size = _ref.size,
2149
2498
  size = _ref$size === void 0 ? 'sm' : _ref$size,
2150
2499
  sx = _ref.sx,
2151
- props = _objectWithoutPropertiesLoose(_ref, ["children", "size", "sx"]);
2500
+ sxSelect = _ref.sxSelect,
2501
+ props = _objectWithoutPropertiesLoose(_ref, ["children", "size", "sx", "sxSelect"]);
2152
2502
 
2153
2503
  var color = sx && sx.color ? sx.color : 'primary';
2154
2504
  var sizeStyles = getSizeStyles(size);
@@ -2219,7 +2569,7 @@ var Select = function Select(_ref) {
2219
2569
  outline: 'none !important',
2220
2570
  background: 'transparent !important'
2221
2571
  }
2222
- }, _extends2))
2572
+ }, _extends2), sxSelect)
2223
2573
  }, omitOnChange), children), /*#__PURE__*/React__default['default'].createElement(icons.Arrow, {
2224
2574
  sx: {
2225
2575
  width: width,
@@ -2234,7 +2584,7 @@ var Select = function Select(_ref) {
2234
2584
  }));
2235
2585
  };
2236
2586
 
2237
- var Slider = function Slider(_ref) {
2587
+ var Slider = function Slider(_ref, ref) {
2238
2588
  var sx = _ref.sx,
2239
2589
  props = _objectWithoutPropertiesLoose(_ref, ["sx"]);
2240
2590
 
@@ -2244,6 +2594,7 @@ var Slider = function Slider(_ref) {
2244
2594
  colors = _useThemeUI.theme.rawColors;
2245
2595
 
2246
2596
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Slider, _extends({
2597
+ ref: ref,
2247
2598
  sx: _extends({
2248
2599
  '&::-webkit-slider-thumb': {
2249
2600
  height: [22, 18, 16],
@@ -2275,7 +2626,9 @@ var Slider = function Slider(_ref) {
2275
2626
  }, props));
2276
2627
  };
2277
2628
 
2278
- var styles = {
2629
+ var slider = React.forwardRef(Slider);
2630
+
2631
+ var styles$1 = {
2279
2632
  reset: {
2280
2633
  verticalAlign: 'baseline',
2281
2634
  border: 0,
@@ -2347,7 +2700,7 @@ var Table = function Table(_ref) {
2347
2700
  }
2348
2701
  }, header && /*#__PURE__*/React__default['default'].createElement(Row, {
2349
2702
  as: "tr",
2350
- sx: _extends({}, styles.reset, styles.header, styles.row, {
2703
+ sx: _extends({}, styles$1.reset, styles$1.header, styles$1.row, {
2351
2704
  color: color,
2352
2705
  borderTopWidth: !borderTop ? '0px' : '1px'
2353
2706
  })
@@ -2355,13 +2708,13 @@ var Table = function Table(_ref) {
2355
2708
  as: "td",
2356
2709
  start: [1],
2357
2710
  width: columns,
2358
- sx: styles.index
2711
+ sx: styles$1.index
2359
2712
  }, header)), data.map(function (row, i) {
2360
2713
  return /*#__PURE__*/React__default['default'].createElement(Row, {
2361
2714
  as: "tr",
2362
2715
  columns: columns,
2363
2716
  key: i,
2364
- sx: _extends({}, styles.reset, styles.row, {
2717
+ sx: _extends({}, styles$1.reset, styles$1.row, {
2365
2718
  pb: borderBottom && i === data.length - 1 ? ['18px', '18px', '18px', '22px'] : [3, 3, 3, '20px'],
2366
2719
  borderBottomWidth: borderBottom && i === data.length - 1 ? '1px' : '0px',
2367
2720
  borderTopWidth: !borderTop && i === 0 && !header ? '0px' : '1px'
@@ -2372,13 +2725,13 @@ var Table = function Table(_ref) {
2372
2725
  key: j,
2373
2726
  start: start[j],
2374
2727
  width: width[j],
2375
- sx: j == 0 && index ? _extends({}, styles.reset, styles.index) : _extends({}, styles.reset, styles.entry)
2728
+ sx: j == 0 && index ? _extends({}, styles$1.reset, styles$1.index) : _extends({}, styles$1.reset, styles$1.entry)
2376
2729
  }, column);
2377
2730
  }));
2378
2731
  })));
2379
2732
  };
2380
2733
 
2381
- var Toggle = function Toggle(_ref) {
2734
+ var Toggle = function Toggle(_ref, ref) {
2382
2735
  var value = _ref.value,
2383
2736
  onClick = _ref.onClick,
2384
2737
  disabled = _ref.disabled,
@@ -2388,6 +2741,7 @@ var Toggle = function Toggle(_ref) {
2388
2741
  var color$1 = sx && sx.color ? sx.color : 'primary';
2389
2742
  value = disabled ? false : value;
2390
2743
  return /*#__PURE__*/React__default['default'].createElement(themeUi.Box, _extends({
2744
+ ref: ref,
2391
2745
  as: "button",
2392
2746
  onClick: onClick,
2393
2747
  role: "checkbox",
@@ -2425,6 +2779,8 @@ var Toggle = function Toggle(_ref) {
2425
2779
  })));
2426
2780
  };
2427
2781
 
2782
+ var toggle = React.forwardRef(Toggle);
2783
+
2428
2784
  var Tracking = function Tracking(_ref) {
2429
2785
  var id = _ref.id;
2430
2786
 
@@ -2448,7 +2804,6 @@ var Tray = function Tray(_ref) {
2448
2804
  children = _ref.children;
2449
2805
  return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
2450
2806
  sx: {
2451
- display: ['initial', 'initial', 'none', 'none'],
2452
2807
  position: 'fixed',
2453
2808
  top: '56px',
2454
2809
  bottom: '0px',
@@ -2463,7 +2818,6 @@ var Tray = function Tray(_ref) {
2463
2818
  }
2464
2819
  }), /*#__PURE__*/React__default['default'].createElement(themeUi.Box, {
2465
2820
  sx: _extends({
2466
- display: ['initial', 'initial', 'none', 'none'],
2467
2821
  position: 'fixed',
2468
2822
  width: 'calc(100vw)',
2469
2823
  top: '0px',
@@ -2524,8 +2878,9 @@ var formatDate = function formatDate(date, options) {
2524
2878
  };
2525
2879
 
2526
2880
  exports.Badge = Badge;
2527
- exports.Button = Button;
2528
- exports.Callout = Callout;
2881
+ exports.Button = button;
2882
+ exports.Callout = callout;
2883
+ exports.Colorbar = Colorbar;
2529
2884
  exports.Column = Column;
2530
2885
  exports.Custom404 = Custom404;
2531
2886
  exports.Dimmer = Dimmer;
@@ -2536,9 +2891,9 @@ exports.Footer = Footer;
2536
2891
  exports.Group = Group;
2537
2892
  exports.Guide = Guide;
2538
2893
  exports.Header = Header;
2539
- exports.Input = Input;
2894
+ exports.Input = input;
2540
2895
  exports.Layout = Layout;
2541
- exports.Link = Link;
2896
+ exports.Link = Link$1;
2542
2897
  exports.Logo = Logo;
2543
2898
  exports.Menu = Menu;
2544
2899
  exports.Meta = Meta;
@@ -2547,10 +2902,10 @@ exports.Row = Row;
2547
2902
  exports.Scrollbar = Scrollbar;
2548
2903
  exports.Select = Select;
2549
2904
  exports.Settings = Settings;
2550
- exports.Slider = Slider;
2905
+ exports.Slider = slider;
2551
2906
  exports.Table = Table;
2552
2907
  exports.Tag = Tag;
2553
- exports.Toggle = Toggle;
2908
+ exports.Toggle = toggle;
2554
2909
  exports.Tracking = Tracking;
2555
2910
  exports.Tray = Tray;
2556
2911
  exports.formatDate = formatDate;