@equinor/eds-core-react 0.29.2-dev14022023 → 0.31.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.
Files changed (62) hide show
  1. package/README.md +9 -6
  2. package/dist/eds-core-react.cjs.js +805 -427
  3. package/dist/esm/components/Accordion/AccordionItem.js +17 -7
  4. package/dist/esm/components/Autocomplete/Autocomplete.js +21 -6
  5. package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +1 -1
  6. package/dist/esm/components/Autocomplete/Option.js +17 -13
  7. package/dist/esm/components/Breadcrumbs/Breadcrumb.js +4 -3
  8. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +18 -9
  9. package/dist/esm/components/Button/tokens/contained.js +1 -1
  10. package/dist/esm/components/Button/tokens/contained_icon.js +1 -1
  11. package/dist/esm/components/Button/tokens/ghost.js +1 -1
  12. package/dist/esm/components/Button/tokens/icon.js +1 -1
  13. package/dist/esm/components/Button/tokens/outlined.js +1 -1
  14. package/dist/esm/components/Checkbox/Checkbox.tokens.js +4 -0
  15. package/dist/esm/components/Checkbox/Input.js +12 -9
  16. package/dist/esm/components/Dialog/DialogHeader.js +1 -1
  17. package/dist/esm/components/Input/Input.js +1 -1
  18. package/dist/esm/components/Input/Input.tokens.js +1 -1
  19. package/dist/esm/components/InputWrapper/InputWrapper.tokens.js +1 -1
  20. package/dist/esm/components/Menu/Menu.js +20 -5
  21. package/dist/esm/components/Menu/MenuItem.js +8 -5
  22. package/dist/esm/components/Radio/Radio.js +12 -9
  23. package/dist/esm/components/Radio/Radio.tokens.js +4 -0
  24. package/dist/esm/components/Select/NativeSelect/NativeSelect.js +2 -1
  25. package/dist/esm/components/SideBar/SideBar.js +1 -1
  26. package/dist/esm/components/SideBar/SideBarAccordion/index.js +228 -0
  27. package/dist/esm/components/SideBar/SideBarAccordionItem/index.js +71 -0
  28. package/dist/esm/components/SideBar/SidebarLink/index.js +1 -1
  29. package/dist/esm/components/SideBar/index.js +6 -0
  30. package/dist/esm/components/Slider/Output.js +8 -9
  31. package/dist/esm/components/Slider/Slider.js +98 -61
  32. package/dist/esm/components/Switch/Switch.js +16 -12
  33. package/dist/esm/components/Switch/Switch.styles.js +3 -5
  34. package/dist/esm/components/Switch/Switch.tokens.js +2 -10
  35. package/dist/esm/components/Switch/SwitchDefault.js +1 -1
  36. package/dist/esm/components/Table/DataCell/DataCell.tokens.js +1 -1
  37. package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/mergeWithKey.js +2 -0
  38. package/dist/types/components/Accordion/AccordionItem.d.ts +12 -2
  39. package/dist/types/components/Autocomplete/Autocomplete.d.ts +71 -15
  40. package/dist/types/components/Autocomplete/Option.d.ts +11 -4
  41. package/dist/types/components/Breadcrumbs/Breadcrumb.d.ts +2 -0
  42. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +16 -0
  43. package/dist/types/components/Icon/Icon.d.ts +1 -1
  44. package/dist/types/components/Input/Input.tokens.d.ts +10 -5
  45. package/dist/types/components/InputWrapper/InputWrapper.tokens.d.ts +10 -5
  46. package/dist/types/components/Menu/Menu.d.ts +4 -0
  47. package/dist/types/components/Menu/MenuItem.d.ts +16 -14
  48. package/dist/types/components/Progress/Circular/CircularProgress.d.ts +1 -1
  49. package/dist/types/components/Progress/Dots/DotProgress.d.ts +1 -1
  50. package/dist/types/components/Progress/Star/StarProgress.d.ts +1 -1
  51. package/dist/types/components/SideBar/SideBarAccordion/index.d.ts +38 -0
  52. package/dist/types/components/SideBar/SideBarAccordionItem/index.d.ts +15 -0
  53. package/dist/types/components/SideBar/index.d.ts +4 -0
  54. package/package.json +17 -17
  55. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_curry1.js +0 -0
  56. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_curry2.js +0 -0
  57. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_curry3.js +0 -0
  58. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_has.js +0 -0
  59. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_isObject.js +0 -0
  60. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/internal/_isPlaceholder.js +0 -0
  61. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/mergeDeepRight.js +0 -0
  62. /package/dist/esm/node_modules/.pnpm/{ramda@0.28.0 → ramda@0.29.0}/node_modules/ramda/es/mergeDeepWithKey.js +0 -0
@@ -9,6 +9,8 @@ var _tokens$colors$intera = tokens.colors.interactive,
9
9
  _tokens$spacings$comf = tokens.spacings.comfortable,
10
10
  medium_small = _tokens$spacings$comf.medium_small,
11
11
  x_small = _tokens$spacings$comf.x_small,
12
+ x_large = _tokens$spacings$comf.x_large,
13
+ xx_large = _tokens$spacings$comf.xx_large,
12
14
  _tokens$clickbounds = tokens.clickbounds,
13
15
  clicboundSize = _tokens$clickbounds.default__base,
14
16
  compactClickboundSize = _tokens$clickbounds.compact__standard,
@@ -16,6 +18,7 @@ var _tokens$colors$intera = tokens.colors.interactive,
16
18
  var comfortable = {
17
19
  background: primaryColor,
18
20
  typography: labelTypography,
21
+ width: xx_large,
19
22
  spacings: {
20
23
  bottom: medium_small,
21
24
  top: medium_small,
@@ -44,6 +47,7 @@ var comfortable = {
44
47
  },
45
48
  modes: {
46
49
  compact: {
50
+ width: x_large,
47
51
  spacings: {
48
52
  bottom: x_small,
49
53
  top: x_small,
@@ -52,7 +52,8 @@ var NativeSelect = /*#__PURE__*/forwardRef(function NativeSelect(_ref2, ref) {
52
52
  var labelProps = {
53
53
  htmlFor: id,
54
54
  label: label,
55
- meta: meta
55
+ meta: meta,
56
+ disabled: disabled
56
57
  };
57
58
  var showLabel = label || meta;
58
59
  return /*#__PURE__*/jsx(ThemeProvider, {
@@ -42,7 +42,7 @@ var GridContainer = styled.div.withConfig({
42
42
  })(function (_ref2) {
43
43
  var theme = _ref2.theme,
44
44
  open = _ref2.open;
45
- return css(["box-sizing:content-box;", " display:grid;grid-template-rows:1fr auto;height:100%;grid-template-areas:'content' 'footer';background-color:", ";overflow:hidden;width:", ";min-width:", ";"], bordersTemplate(theme.border), theme.background, open ? theme.maxWidth : theme.minWidth, open ? theme.maxWidth : theme.minWidth);
45
+ return css(["box-sizing:content-box;", " display:grid;grid-template-rows:1fr auto;height:100%;grid-template-areas:'content' 'footer';background-color:", ";overflow:auto;width:", ";min-width:", ";"], bordersTemplate(theme.border), theme.background, open ? theme.maxWidth : theme.minWidth, open ? theme.maxWidth : theme.minWidth);
46
46
  });
47
47
  var SideBar = /*#__PURE__*/forwardRef(function (_ref3, ref) {
48
48
  var onToggle = _ref3.onToggle,
@@ -0,0 +1,228 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
+ import { forwardRef, useState, useMemo, Children } from 'react';
5
+ import styled, { css } from 'styled-components';
6
+ import { bordersTemplate, outlineTemplate, useId, mergeRefs } from '@equinor/eds-utils';
7
+ import { chevron_up, chevron_down, arrow_drop_down } from '@equinor/eds-icons';
8
+ import { useSideBar } from '../SideBar.context.js';
9
+ import { sidebar } from '../SideBar.tokens.js';
10
+ import { Icon } from '../../Icon/index.js';
11
+ import { Menu } from '../../Menu/index.js';
12
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
+ import { Typography } from '../../Typography/Typography.js';
14
+ import { Tooltip as Tooltip$1 } from '../../Tooltip/Tooltip.js';
15
+
16
+ var _excluded = ["icon", "label", "isExpanded", "id", "active", "toggleExpand", "onClick", "children", "disabled"];
17
+ var minWidth = sidebar.minWidth,
18
+ _tokens$entities$side = sidebar.entities.sidebarItem,
19
+ minHeight = _tokens$entities$side.minHeight,
20
+ border = _tokens$entities$side.border,
21
+ typographyColor = _tokens$entities$side.typography.color,
22
+ _tokens$entities$side2 = _tokens$entities$side.states,
23
+ _tokens$entities$side3 = _tokens$entities$side2.active,
24
+ menuActiveBackground = _tokens$entities$side3.background,
25
+ typographyActiveColor = _tokens$entities$side3.typography.color,
26
+ menuHoverBackground = _tokens$entities$side2.hover.background,
27
+ focus = _tokens$entities$side2.focus,
28
+ _tokens$entities$side4 = _tokens$entities$side2.disabled,
29
+ menuDisabledBackground = _tokens$entities$side4.background,
30
+ menuDisabledText = _tokens$entities$side4.typography.color;
31
+ var MenuItem = styled.div.withConfig({
32
+ displayName: "SideBarAccordion__MenuItem",
33
+ componentId: "sc-1ekwnbi-0"
34
+ })(function (_ref) {
35
+ var $isExpanded = _ref.$isExpanded;
36
+ return css(["display:grid;grid-template-columns:1fr;place-items:center;text-decoration:none;min-height:", ";", ";&:hover{cursor:pointer;background-color:", ";}&:focus-visible{", ";}"], minHeight, !$isExpanded && bordersTemplate(border), !$isExpanded ? menuHoverBackground : 'none', outlineTemplate(focus.outline));
37
+ });
38
+ var AccordionHeader = styled.h2.withConfig({
39
+ displayName: "SideBarAccordion__AccordionHeader",
40
+ componentId: "sc-1ekwnbi-1"
41
+ })(function (_ref2) {
42
+ var $active = _ref2.$active;
43
+ return css(["margin:0;width:100%;min-height:", ";background-color:", ";&:hover{cursor:pointer;background-color:", ";}"], minHeight, $active ? menuActiveBackground : 'none', $active ? menuActiveBackground : menuHoverBackground);
44
+ });
45
+ var Button = styled.button.withConfig({
46
+ displayName: "SideBarAccordion__Button",
47
+ componentId: "sc-1ekwnbi-2"
48
+ })(function (_ref3) {
49
+ var $active = _ref3.$active;
50
+ return css(["width:100%;min-height:", ";padding:0;border:none;background-color:", ";cursor:pointer;display:grid;place-items:center;&:focus-visible{", ";}&:disabled{background-color:", ";cursor:auto;}"], minHeight, $active ? menuActiveBackground : 'transparent', outlineTemplate(focus.outline), menuDisabledBackground);
51
+ });
52
+ var OpenSidebarButton = styled(Button).withConfig({
53
+ displayName: "SideBarAccordion__OpenSidebarButton",
54
+ componentId: "sc-1ekwnbi-3"
55
+ })(["grid-template-columns:", " 1fr 48px;"], minWidth);
56
+ var ClosedSidebarButton = styled(Button).withConfig({
57
+ displayName: "SideBarAccordion__ClosedSidebarButton",
58
+ componentId: "sc-1ekwnbi-4"
59
+ })(["grid-template-columns:", ";position:relative;overflow:hidden;"], minWidth);
60
+ var AccordionIcon = styled(Icon).withConfig({
61
+ displayName: "SideBarAccordion__AccordionIcon",
62
+ componentId: "sc-1ekwnbi-5"
63
+ })(["position:absolute;bottom:-10px;right:-10px;transform:rotate(-45deg);"]);
64
+ var Panel = styled.div.withConfig({
65
+ displayName: "SideBarAccordion__Panel",
66
+ componentId: "sc-1ekwnbi-6"
67
+ })(["width:100%;", ""], bordersTemplate(border));
68
+ var ItemText = styled(Typography).withConfig({
69
+ displayName: "SideBarAccordion__ItemText",
70
+ componentId: "sc-1ekwnbi-7"
71
+ })(function (_ref4) {
72
+ var $textColor = _ref4.$textColor;
73
+ return css(["justify-self:start;color:", ";&::first-letter{text-transform:capitalize;}"], $textColor);
74
+ });
75
+ var Tooltip = styled(Tooltip$1).withConfig({
76
+ displayName: "SideBarAccordion__Tooltip",
77
+ componentId: "sc-1ekwnbi-8"
78
+ })(["text-transform:capitalize;"]);
79
+ var SideBarAccordion = /*#__PURE__*/forwardRef(function SideBarAccordion(_ref5, ref) {
80
+ var icon = _ref5.icon,
81
+ label = _ref5.label,
82
+ isExpanded = _ref5.isExpanded,
83
+ id = _ref5.id,
84
+ active = _ref5.active,
85
+ toggleExpand = _ref5.toggleExpand,
86
+ onClick = _ref5.onClick,
87
+ children = _ref5.children,
88
+ disabled = _ref5.disabled,
89
+ rest = _objectWithoutProperties(_ref5, _excluded);
90
+ var accordionId = useId(id, 'accordion');
91
+ var _useState = useState(false),
92
+ _useState2 = _slicedToArray(_useState, 2),
93
+ menuIsOpen = _useState2[0],
94
+ setMenuIsOpen = _useState2[1];
95
+ var _useState3 = useState(false),
96
+ _useState4 = _slicedToArray(_useState3, 2),
97
+ accordionIsOpen = _useState4[0],
98
+ setAccordionIsOpen = _useState4[1];
99
+ var _useState5 = useState(null),
100
+ _useState6 = _slicedToArray(_useState5, 2),
101
+ anchorEl = _useState6[0],
102
+ setAnchorEl = _useState6[1];
103
+ var _useSideBar = useSideBar(),
104
+ isOpen = _useSideBar.isOpen;
105
+ var showPanel = toggleExpand !== undefined ? isExpanded : accordionIsOpen;
106
+ var showAsActive = useMemo(function () {
107
+ // Active-state is controlled
108
+ if (active !== undefined) {
109
+ return active;
110
+ }
111
+ var hasActiveChild = false;
112
+ Children.forEach(children, function (child) {
113
+ var item = child;
114
+ if (item.props.active) {
115
+ hasActiveChild = true;
116
+ }
117
+ });
118
+
119
+ // When Sidebar is expanded, we only show accordion header as active if the accordion is closed, to avoid showing two active items at the same time.
120
+ return isOpen ? !showPanel && hasActiveChild : hasActiveChild;
121
+ }, [active, children, showPanel, isOpen]);
122
+ var combinedRefs = useMemo(function () {
123
+ return mergeRefs(setAnchorEl, ref);
124
+ }, [ref]);
125
+ var closeMenu = function closeMenu() {
126
+ setMenuIsOpen(false);
127
+ };
128
+ var onClickWhenSidePanelExpanded = function onClickWhenSidePanelExpanded() {
129
+ if (toggleExpand === undefined) {
130
+ setAccordionIsOpen(!accordionIsOpen);
131
+ } else {
132
+ toggleExpand();
133
+ }
134
+ onClick && onClick();
135
+ };
136
+ var onClickWhenSidePanelClosed = function onClickWhenSidePanelClosed() {
137
+ setMenuIsOpen(!menuIsOpen);
138
+ onClick && onClick();
139
+ };
140
+ var getTextColor = function getTextColor() {
141
+ if (showAsActive) {
142
+ return typographyActiveColor;
143
+ } else if (disabled) {
144
+ return menuDisabledText;
145
+ }
146
+ return typographyColor;
147
+ };
148
+ if (isOpen) {
149
+ return /*#__PURE__*/jsxs(MenuItem, {
150
+ $isExpanded: showPanel,
151
+ children: [/*#__PURE__*/jsx(AccordionHeader, {
152
+ $active: showAsActive,
153
+ children: /*#__PURE__*/jsxs(OpenSidebarButton, _objectSpread(_objectSpread({
154
+ ref: ref,
155
+ id: "header_".concat(accordionId),
156
+ "aria-expanded": showPanel,
157
+ "aria-controls": "panel_".concat(accordionId),
158
+ onClick: onClickWhenSidePanelExpanded,
159
+ disabled: disabled
160
+ }, rest), {}, {
161
+ children: [icon && /*#__PURE__*/jsx(Icon, {
162
+ data: icon,
163
+ color: getTextColor()
164
+ }), /*#__PURE__*/jsx(ItemText, {
165
+ variant: "cell_text",
166
+ group: "table",
167
+ $textColor: getTextColor(),
168
+ children: label
169
+ }), /*#__PURE__*/jsx(Icon, {
170
+ data: showPanel ? chevron_up : chevron_down,
171
+ size: 24,
172
+ color: getTextColor()
173
+ })]
174
+ }))
175
+ }), showPanel && /*#__PURE__*/jsx(Panel, {
176
+ id: "panel_".concat(accordionId),
177
+ role: "region",
178
+ "aria-labelledby": "header_".concat(accordionId),
179
+ children: children
180
+ })]
181
+ });
182
+ }
183
+ var tooltip = menuIsOpen ? '' : label;
184
+ return /*#__PURE__*/jsxs(Fragment, {
185
+ children: [/*#__PURE__*/jsx(Tooltip, {
186
+ title: tooltip,
187
+ placement: "right",
188
+ children: /*#__PURE__*/jsx(MenuItem, {
189
+ $isExpanded: showPanel,
190
+ children: /*#__PURE__*/jsx(AccordionHeader, {
191
+ $active: showAsActive,
192
+ children: /*#__PURE__*/jsxs(ClosedSidebarButton, _objectSpread(_objectSpread({
193
+ ref: combinedRefs,
194
+ id: "anchor-default",
195
+ "aria-haspopup": "true",
196
+ "aria-expanded": menuIsOpen,
197
+ "aria-controls": "menu-default",
198
+ onClick: onClickWhenSidePanelClosed,
199
+ disabled: disabled
200
+ }, rest), {}, {
201
+ children: [icon && /*#__PURE__*/jsx(Icon, {
202
+ data: icon,
203
+ color: getTextColor()
204
+ }), /*#__PURE__*/jsx(AccordionIcon, {
205
+ data: arrow_drop_down,
206
+ size: 24,
207
+ color: getTextColor()
208
+ })]
209
+ }))
210
+ })
211
+ })
212
+ }), /*#__PURE__*/jsx(Menu, {
213
+ open: menuIsOpen,
214
+ placement: 'right-start',
215
+ onClose: closeMenu,
216
+ anchorEl: anchorEl,
217
+ children: Children.map(children, function (child) {
218
+ var item = child;
219
+ return /*#__PURE__*/jsx(Menu.Item, _objectSpread(_objectSpread({}, child.props), {}, {
220
+ children: item.props.label
221
+ }));
222
+ })
223
+ })]
224
+ });
225
+ });
226
+ SideBarAccordion.displayName = 'SidebarAccordion';
227
+
228
+ export { SideBarAccordion };
@@ -0,0 +1,71 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import { forwardRef } from 'react';
4
+ import styled, { css } from 'styled-components';
5
+ import { outlineTemplate } from '@equinor/eds-utils';
6
+ import { sidebar } from '../SideBar.tokens.js';
7
+ import { useSideBar } from '../SideBar.context.js';
8
+ import { jsx } from 'react/jsx-runtime';
9
+ import { Typography } from '../../Typography/Typography.js';
10
+
11
+ var _excluded = ["label", "active", "onClick", "as"];
12
+ var minWidth = sidebar.minWidth,
13
+ _tokens$entities$side = sidebar.entities.sidebarItem,
14
+ minHeight = _tokens$entities$side.minHeight,
15
+ typographyColor = _tokens$entities$side.typography.color,
16
+ _tokens$entities$side2 = _tokens$entities$side.states,
17
+ _tokens$entities$side3 = _tokens$entities$side2.active,
18
+ menuActiveBackground = _tokens$entities$side3.background,
19
+ typographyActiveColor = _tokens$entities$side3.typography.color,
20
+ focus = _tokens$entities$side2.focus,
21
+ menuHoverBackground = _tokens$entities$side2.hover.background;
22
+ var Container = styled.a.withConfig({
23
+ displayName: "SideBarAccordionItem__Container",
24
+ componentId: "sc-1aeo1e1-0"
25
+ })(function (_ref) {
26
+ var $active = _ref.$active;
27
+ return css(["display:grid;grid-template-columns:", " 1fr;justify-items:stretch;background-color:", ";cursor:pointer;text-decoration:none;border:0;width:100%;padding:0;&:hover{background-color:", ";}&:focus-visible{", ";}"], minWidth, $active ? menuActiveBackground : 'transparent', $active ? menuActiveBackground : menuHoverBackground, outlineTemplate(focus.outline));
28
+ });
29
+ var TextWrapper = styled.div.withConfig({
30
+ displayName: "SideBarAccordionItem__TextWrapper",
31
+ componentId: "sc-1aeo1e1-1"
32
+ })(["min-height:", ";grid-column:2;justify-self:start;display:flex;align-items:center;width:100%;"], minHeight);
33
+ var Text = styled(Typography).withConfig({
34
+ displayName: "SideBarAccordionItem__Text",
35
+ componentId: "sc-1aeo1e1-2"
36
+ })(function (_ref2) {
37
+ var $active = _ref2.$active;
38
+ return css(["color:", ";width:100%;&::first-letter{text-transform:capitalize;}"], $active ? typographyActiveColor : typographyColor);
39
+ });
40
+ var SideBarAccordionItem = /*#__PURE__*/forwardRef(function SidebarLink(_ref3, ref) {
41
+ var label = _ref3.label,
42
+ active = _ref3.active,
43
+ onClick = _ref3.onClick,
44
+ _ref3$as = _ref3.as,
45
+ as = _ref3$as === void 0 ? 'a' : _ref3$as,
46
+ rest = _objectWithoutProperties(_ref3, _excluded);
47
+ var _useSideBar = useSideBar(),
48
+ isOpen = _useSideBar.isOpen;
49
+ if (isOpen) {
50
+ return /*#__PURE__*/jsx(Container, _objectSpread(_objectSpread({
51
+ as: as,
52
+ tabIndex: 0,
53
+ $active: active,
54
+ onClick: onClick,
55
+ ref: ref
56
+ }, rest), {}, {
57
+ children: /*#__PURE__*/jsx(TextWrapper, {
58
+ children: /*#__PURE__*/jsx(Text, {
59
+ variant: "cell_text",
60
+ group: "table",
61
+ $active: active,
62
+ children: label
63
+ })
64
+ })
65
+ }));
66
+ }
67
+ return null;
68
+ });
69
+ SideBarAccordionItem.displayName = 'SideBarAccordionItem';
70
+
71
+ export { SideBarAccordionItem };
@@ -31,7 +31,7 @@ var Container = styled.a.withConfig({
31
31
  _theme$entities$sideb3 = _theme$entities$sideb2.disabled,
32
32
  menuDisabledBackground = _theme$entities$sideb3.background,
33
33
  menuDisabledText = _theme$entities$sideb3.typography.color;
34
- return css(["background-color:", ";display:grid;grid-template-columns:", " 1fr;place-items:center;", " text-decoration:none;min-height:", ";&:hover{cursor:pointer;background-color:", ";}&:disabled{background-color:", ";color:", ";}&:focus-visible{", ";}"], $active ? menuActiveBackground : 'none', minWidth, bordersTemplate(border), minHeight, $active ? menuActiveBackground : menuHoverBackground, menuDisabledBackground, menuDisabledText, outlineTemplate(focus.outline));
34
+ return css(["background-color:", ";display:grid;grid-template-columns:", " 1fr;width:100%;padding:0;place-items:center;border:0;", " text-decoration:none;min-height:", ";&:hover{cursor:pointer;background-color:", ";}&:disabled{background-color:", ";color:", ";cursor:not-allowed;& > p{color:", ";}& > svg{fill:", ";}}&:focus-visible{", ";}"], $active ? menuActiveBackground : 'transparent', minWidth, bordersTemplate(border), minHeight, $active ? menuActiveBackground : menuHoverBackground, menuDisabledBackground, menuDisabledText, menuDisabledText, menuDisabledText, outlineTemplate(focus.outline));
35
35
  });
36
36
  var ItemText = styled(Typography).withConfig({
37
37
  displayName: "SidebarLink__ItemText",
@@ -4,6 +4,8 @@ import { SideBarContent } from './SideBarContent.js';
4
4
  import { SideBarFooter } from './SideBarFooter.js';
5
5
  import { SideBarToggle } from './SideBarToggle.js';
6
6
  import { SideBarButton } from './SideBarButton/index.js';
7
+ import { SideBarAccordion } from './SideBarAccordion/index.js';
8
+ import { SideBarAccordionItem } from './SideBarAccordionItem/index.js';
7
9
 
8
10
  var SideBar = SideBar$1;
9
11
  SideBar.Link = SidebarLink;
@@ -11,10 +13,14 @@ SideBar.Content = SideBarContent;
11
13
  SideBar.Footer = SideBarFooter;
12
14
  SideBar.Toggle = SideBarToggle;
13
15
  SideBar.Button = SideBarButton;
16
+ SideBar.Accordion = SideBarAccordion;
17
+ SideBar.AccordionItem = SideBarAccordionItem;
14
18
  SideBar.Link.displayName = 'SideBar.Link';
15
19
  SideBar.Content.displayName = 'SideBar.Content';
16
20
  SideBar.Footer.displayName = 'SideBar.Footer';
17
21
  SideBar.Toggle.displayName = 'SideBar.Toggle';
18
22
  SideBar.Button.displayName = 'SideBar.Button';
23
+ SideBar.Accordion.displayName = 'SideBar.Accordion';
24
+ SideBar.AccordionItem.displayName = 'SideBar.AccordionItem';
19
25
 
20
26
  export { SideBar };
@@ -10,17 +10,16 @@ var _tokens$entities = slider.entities,
10
10
  var StyledOutput = styled.output.withConfig({
11
11
  displayName: "Output__StyledOutput",
12
12
  componentId: "sc-1dy945x-0"
13
- })(["--val:", ";--realWidth:calc(100% - 12px);width:fit-content;position:relative;z-index:1;", " background:", ";padding:0 5px;top:", ";pointer-events:none;margin-left:calc((var(--val) - var(--min)) / var(--dif) * var(--realWidth));transform:translate(calc(-1 * calc(var(--realWidth) / 2)));grid-row:2;grid-column:1 / -1;"], function (_ref) {
14
- var value = _ref.value;
15
- return value;
16
- }, typographyTemplate(output.typography), slider.background, track.spacings.top);
17
- var Output = /*#__PURE__*/forwardRef(function Output(_ref2, ref) {
18
- var children = _ref2.children,
19
- value = _ref2.value,
20
- htmlFor = _ref2.htmlFor;
13
+ })(["--realWidth:calc(100% - 12px);width:fit-content;position:relative;z-index:1;", " background:", ";padding:0 5px;top:", ";pointer-events:none;margin-left:calc((var(--val) - var(--min)) / var(--dif) * var(--realWidth));transform:translate(calc(-1 * calc(var(--realWidth) / 2)));grid-row:2;grid-column:1 / -1;"], typographyTemplate(output.typography), slider.background, track.spacings.top);
14
+ var Output = /*#__PURE__*/forwardRef(function Output(_ref, ref) {
15
+ var children = _ref.children,
16
+ value = _ref.value,
17
+ htmlFor = _ref.htmlFor;
21
18
  return /*#__PURE__*/jsx(StyledOutput, {
22
19
  ref: ref,
23
- value: value,
20
+ style: {
21
+ '--val': value
22
+ },
24
23
  htmlFor: htmlFor,
25
24
  children: children
26
25
  });
@@ -1,6 +1,6 @@
1
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
1
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
2
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
4
4
  import { forwardRef, useState, useEffect, useRef, useCallback } from 'react';
5
5
  import styled, { css } from 'styled-components';
6
6
  import { slider } from './Slider.tokens.js';
@@ -21,41 +21,44 @@ var fakeTrackBgHover = css({
21
21
  });
22
22
  var trackFill = css(["grid-column:1 / span 2;grid-row:2;height:", ";margin-bottom:", ";align-self:end;content:'';"], track.height, track.spacings.bottom);
23
23
  var wrapperGrid = css(["display:grid;grid-template-rows:max-content 24px;grid-template-columns:1fr 1fr;width:100%;position:relative;"]);
24
- var RangeWrapper = styled.div.withConfig({
24
+ var RangeWrapper = styled.div.attrs(function (_ref) {
25
+ var $min = _ref.$min,
26
+ $max = _ref.$max,
27
+ valA = _ref.valA,
28
+ valB = _ref.valB,
29
+ disabled = _ref.disabled,
30
+ style = _ref.style;
31
+ return {
32
+ style: _objectSpread({
33
+ '--a': valA,
34
+ '--b': valB,
35
+ '--min': $min,
36
+ '--max': $max,
37
+ '--background': disabled ? track.entities.indicator.states.disabled.background : track.entities.indicator.background
38
+ }, style)
39
+ };
40
+ }).withConfig({
25
41
  displayName: "Slider__RangeWrapper",
26
42
  componentId: "sc-n1grrg-0"
27
- })(["--a:", ";--b:", ";--min:", ";--max:", ";--dif:calc(var(--max) - var(--min));--realWidth:calc(100% - 12px);", " ", " &::before,&::after{", " background:", ";}&::before{margin-left:calc( calc(", " / 2) + (var(--a) - var(--min)) / var(--dif) * var(--realWidth) );width:calc((var(--b) - var(--a)) / var(--dif) * var(--realWidth));}&::after{margin-left:calc( calc(", " / 2) + (var(--b) - var(--min)) / var(--dif) * var(--realWidth) );width:calc((var(--a) - var(--b)) / var(--dif) * var(--realWidth));}@media (hover:hover) and (pointer:fine){&:hover:not([disabled]){", " &::before,&::after{background:", ";}}}"], function (_ref) {
28
- var valA = _ref.valA;
29
- return valA;
30
- }, function (_ref2) {
31
- var valB = _ref2.valB;
32
- return valB;
33
- }, function (_ref3) {
34
- var min = _ref3.min;
35
- return min;
36
- }, function (_ref4) {
37
- var max = _ref4.max;
38
- return max;
39
- }, wrapperGrid, fakeTrackBg, trackFill, function (_ref5) {
40
- var disabled = _ref5.disabled;
41
- return disabled ? track.entities.indicator.states.disabled.background : track.entities.indicator.background;
42
- }, handle.width, handle.width, fakeTrackBgHover, track.entities.indicator.states.hover.background);
43
- var Wrapper = styled.div.withConfig({
43
+ })(["--dif:calc(var(--max) - var(--min));--realWidth:calc(100% - 12px);", " ", " &::before,&::after{", ";background:var(--background);}&::before{margin-left:calc( calc(", " / 2) + (var(--a) - var(--min)) / var(--dif) * var(--realWidth) );width:calc((var(--b) - var(--a)) / var(--dif) * var(--realWidth));}&::after{margin-left:calc( calc(", " / 2) + (var(--b) - var(--min)) / var(--dif) * var(--realWidth) );width:calc((var(--a) - var(--b)) / var(--dif) * var(--realWidth));}@media (hover:hover) and (pointer:fine){&:hover:not([disabled]){", " &::before,&::after{background:", ";}}}"], wrapperGrid, fakeTrackBg, trackFill, handle.width, handle.width, fakeTrackBgHover, track.entities.indicator.states.hover.background);
44
+ var Wrapper = styled.div.attrs(function (_ref2) {
45
+ var $min = _ref2.$min,
46
+ $max = _ref2.$max,
47
+ value = _ref2.value,
48
+ disabled = _ref2.disabled,
49
+ style = _ref2.style;
50
+ return {
51
+ style: _objectSpread({
52
+ '--min': $min,
53
+ '--max': $max,
54
+ '--value': value,
55
+ '--background': disabled ? track.entities.indicator.states.disabled.background : track.entities.indicator.background
56
+ }, style)
57
+ };
58
+ }).withConfig({
44
59
  displayName: "Slider__Wrapper",
45
60
  componentId: "sc-n1grrg-1"
46
- })(["--min:", ";--max:", ";--dif:calc(var(--max) - var(--min));--value:", ";--realWidth:calc(100% - 12px);", " ", " &::after{", " background:", "}&::after{margin-right:calc( (var(--max) - var(--value)) / var(--dif) * var(--realWidth) );margin-left:3px;}@media (hover:hover) and (pointer:fine){&:hover:not([disabled]){", " &::after{background:", ";}}}"], function (_ref6) {
47
- var min = _ref6.min;
48
- return min;
49
- }, function (_ref7) {
50
- var max = _ref7.max;
51
- return max;
52
- }, function (_ref8) {
53
- var value = _ref8.value;
54
- return value;
55
- }, wrapperGrid, fakeTrackBg, trackFill, function (_ref9) {
56
- var disabled = _ref9.disabled;
57
- return disabled ? track.entities.indicator.states.disabled.background : track.entities.indicator.background;
58
- }, fakeTrackBgHover, track.entities.indicator.states.hover.background);
61
+ })(["--dif:calc(var(--max) - var(--min));--realWidth:calc(100% - 12px);", " ", " &::after{", " background:var(--background)}&::after{margin-right:calc( (var(--max) - var(--value)) / var(--dif) * var(--realWidth) );margin-left:3px;}@media (hover:hover) and (pointer:fine){&:hover:not([disabled]){", " &::after{background:", ";}}}"], wrapperGrid, fakeTrackBg, trackFill, fakeTrackBgHover, track.entities.indicator.states.hover.background);
59
62
  var WrapperGroupLabel = styled.div.withConfig({
60
63
  displayName: "Slider__WrapperGroupLabel",
61
64
  componentId: "sc-n1grrg-2"
@@ -68,26 +71,26 @@ var SrOnlyLabel = styled.label.withConfig({
68
71
  displayName: "Slider__SrOnlyLabel",
69
72
  componentId: "sc-n1grrg-4"
70
73
  })(["position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;"]);
71
- var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
72
- var _ref10$min = _ref10.min,
73
- min = _ref10$min === void 0 ? 0 : _ref10$min,
74
- _ref10$max = _ref10.max,
75
- max = _ref10$max === void 0 ? 100 : _ref10$max,
76
- _ref10$value = _ref10.value,
77
- value = _ref10$value === void 0 ? [40, 60] : _ref10$value,
78
- outputFunction = _ref10.outputFunction,
79
- onChange = _ref10.onChange,
80
- onChangeCommitted = _ref10.onChangeCommitted,
81
- _ref10$minMaxDots = _ref10.minMaxDots,
82
- minMaxDots = _ref10$minMaxDots === void 0 ? true : _ref10$minMaxDots,
83
- _ref10$minMaxValues = _ref10.minMaxValues,
84
- minMaxValues = _ref10$minMaxValues === void 0 ? true : _ref10$minMaxValues,
85
- _ref10$step = _ref10.step,
86
- step = _ref10$step === void 0 ? 1 : _ref10$step,
87
- disabled = _ref10.disabled,
88
- ariaLabelledby = _ref10.ariaLabelledby,
89
- ariaLabelledbyNative = _ref10['aria-labelledby'],
90
- rest = _objectWithoutProperties(_ref10, _excluded);
74
+ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref3, ref) {
75
+ var _ref3$min = _ref3.min,
76
+ min = _ref3$min === void 0 ? 0 : _ref3$min,
77
+ _ref3$max = _ref3.max,
78
+ max = _ref3$max === void 0 ? 100 : _ref3$max,
79
+ _ref3$value = _ref3.value,
80
+ value = _ref3$value === void 0 ? [40, 60] : _ref3$value,
81
+ outputFunction = _ref3.outputFunction,
82
+ onChange = _ref3.onChange,
83
+ onChangeCommitted = _ref3.onChangeCommitted,
84
+ _ref3$minMaxDots = _ref3.minMaxDots,
85
+ minMaxDots = _ref3$minMaxDots === void 0 ? true : _ref3$minMaxDots,
86
+ _ref3$minMaxValues = _ref3.minMaxValues,
87
+ minMaxValues = _ref3$minMaxValues === void 0 ? true : _ref3$minMaxValues,
88
+ _ref3$step = _ref3.step,
89
+ step = _ref3$step === void 0 ? 1 : _ref3$step,
90
+ disabled = _ref3.disabled,
91
+ ariaLabelledby = _ref3.ariaLabelledby,
92
+ ariaLabelledbyNative = _ref3['aria-labelledby'],
93
+ rest = _objectWithoutProperties(_ref3, _excluded);
91
94
  var isRangeSlider = Array.isArray(value);
92
95
  var parsedValue = isRangeSlider ? value : [value];
93
96
  var _useState = useState(parsedValue),
@@ -98,6 +101,10 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
98
101
  _useState4 = _slicedToArray(_useState3, 2),
99
102
  sliderValue = _useState4[0],
100
103
  setSliderValue = _useState4[1];
104
+ var _useState5 = useState(false),
105
+ _useState6 = _slicedToArray(_useState5, 2),
106
+ mousePressed = _useState6[0],
107
+ setMousePressed = _useState6[1];
101
108
  useEffect(function () {
102
109
  if (isRangeSlider) {
103
110
  if (value[0] !== initalValue[0] || value[1] !== initalValue[1]) {
@@ -118,6 +125,18 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
118
125
  if (isRangeSlider) {
119
126
  var _newValue = sliderValue.slice();
120
127
  _newValue[valueArrIdx] = changedValue;
128
+
129
+ //Prevent min/max values from crossing eachother
130
+ if (valueArrIdx === 0 && _newValue[0] >= _newValue[1]) {
131
+ var _maxRange$current;
132
+ _newValue[0] = _newValue[1];
133
+ (_maxRange$current = maxRange.current) === null || _maxRange$current === void 0 ? void 0 : _maxRange$current.focus();
134
+ }
135
+ if (valueArrIdx === 1 && _newValue[1] <= _newValue[0]) {
136
+ var _minRange$current;
137
+ _newValue[1] = _newValue[0];
138
+ (_minRange$current = minRange.current) === null || _minRange$current === void 0 ? void 0 : _minRange$current.focus();
139
+ }
121
140
  setSliderValue(_newValue);
122
141
  if (onChange) {
123
142
  // Callback for provided onChange func
@@ -146,18 +165,18 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
146
165
  };
147
166
  var findClosestRange = function findClosestRange(event) {
148
167
  var target = event.target;
149
- if (target.type === 'output') {
168
+ if (target.type === 'output' || mousePressed) {
150
169
  return;
151
170
  }
152
171
  var bounds = target.getBoundingClientRect();
153
172
  var x = event.clientX - bounds.left;
154
173
  var inputWidth = minRange.current.offsetWidth;
155
- var minValue = minRange.current.value;
156
- var maxValue = maxRange.current.value;
174
+ var minValue = parseFloat(minRange.current.value);
175
+ var maxValue = parseFloat(maxRange.current.value);
157
176
  var diff = max - min;
158
177
  var normX = x / inputWidth * diff + min;
159
- var maxX = Math.abs(normX - parseFloat(maxValue));
160
- var minX = Math.abs(normX - parseFloat(minValue));
178
+ var maxX = Math.abs(normX - maxValue);
179
+ var minX = Math.abs(normX - minValue);
161
180
  if (minX > maxX) {
162
181
  minRange.current.style.zIndex = '10';
163
182
  maxRange.current.style.zIndex = '20';
@@ -165,6 +184,22 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
165
184
  minRange.current.style.zIndex = '20';
166
185
  maxRange.current.style.zIndex = '10';
167
186
  }
187
+ //special cases where both thumbs are all the way to the left or right
188
+ if (minValue === maxValue && minValue === min) {
189
+ minRange.current.style.zIndex = '10';
190
+ maxRange.current.style.zIndex = '20';
191
+ }
192
+ if (minValue === maxValue && maxValue === max) {
193
+ minRange.current.style.zIndex = '20';
194
+ maxRange.current.style.zIndex = '10';
195
+ }
196
+ };
197
+ var handleDragging = function handleDragging(e) {
198
+ if (e.type === 'mousedown') {
199
+ setMousePressed(true);
200
+ } else {
201
+ setMousePressed(false);
202
+ }
168
203
  };
169
204
  var inputIdA = useId(null, 'inputA');
170
205
  var inputIdB = useId(null, 'inputB');
@@ -187,10 +222,12 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
187
222
  "aria-labelledby": getAriaLabelledby(),
188
223
  valA: sliderValue[0],
189
224
  valB: sliderValue[1],
190
- max: max,
191
- min: min,
225
+ $max: max,
226
+ $min: min,
192
227
  disabled: disabled,
193
228
  onMouseMove: findClosestRange,
229
+ onMouseDown: handleDragging,
230
+ onMouseUp: handleDragging,
194
231
  children: [minMaxDots && /*#__PURE__*/jsx(WrapperGroupLabelDots, {}), /*#__PURE__*/jsx(SrOnlyLabel, {
195
232
  htmlFor: inputIdA,
196
233
  children: "Value A"
@@ -256,8 +293,8 @@ var Slider = /*#__PURE__*/forwardRef(function Slider(_ref10, ref) {
256
293
  })]
257
294
  })) : /*#__PURE__*/jsxs(Wrapper, _objectSpread(_objectSpread({}, rest), {}, {
258
295
  ref: ref,
259
- max: max,
260
- min: min,
296
+ $max: max,
297
+ $min: min,
261
298
  value: sliderValue[0],
262
299
  disabled: disabled,
263
300
  children: [/*#__PURE__*/jsx(SliderInput, {