@sproutsocial/racine 8.8.0-dar35-beta.0 → 9.1.0-beta-pr-1290.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 (56) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/__flow__/Button/styles.js +1 -1
  3. package/__flow__/Card/styles.js +1 -1
  4. package/__flow__/Drawer/index.stories.js +3 -3
  5. package/__flow__/Drawer/styles.js +1 -1
  6. package/__flow__/KeyboardKey/styles.js +1 -1
  7. package/__flow__/Listbox/__snapshots__/index.test.js.snap +40 -34
  8. package/__flow__/Menu/__snapshots__/index.test.js.snap +15 -12
  9. package/__flow__/Menu/index.js +3 -7
  10. package/__flow__/Menu/index.stories.js +1 -1
  11. package/__flow__/Menu/styles.js +1 -18
  12. package/__flow__/Modal/index.test.js +0 -16
  13. package/__flow__/Modal/styles.js +1 -1
  14. package/__flow__/Popout/index.js +1 -1
  15. package/__flow__/Token/index.js +4 -1
  16. package/__flow__/Token/index.stories.js +11 -0
  17. package/__flow__/Token/styles.js +43 -33
  18. package/__flow__/Tooltip/index.js +1 -1
  19. package/__flow__/themes/_themes.scss +23 -25
  20. package/__flow__/themes/dark/theme.js +179 -159
  21. package/__flow__/themes/default/theme.js +15 -8
  22. package/__flow__/themes/utils/interact.js +12 -0
  23. package/__flow__/types/system-props.flow.js +1 -2
  24. package/commonjs/Button/styles.js +1 -1
  25. package/commonjs/Card/styles.js +1 -1
  26. package/commonjs/Drawer/styles.js +1 -1
  27. package/commonjs/KeyboardKey/styles.js +1 -1
  28. package/commonjs/Menu/index.js +3 -1
  29. package/commonjs/Menu/styles.js +3 -16
  30. package/commonjs/Modal/styles.js +1 -1
  31. package/commonjs/Popout/index.js +1 -1
  32. package/commonjs/Token/index.js +5 -2
  33. package/commonjs/Token/styles.js +19 -50
  34. package/commonjs/Tooltip/index.js +1 -1
  35. package/commonjs/themes/dark/theme.js +178 -157
  36. package/commonjs/themes/default/theme.js +15 -8
  37. package/commonjs/themes/utils/interact.js +19 -0
  38. package/dist/themes/_themes.scss +23 -25
  39. package/dist/themes/dark.scss +18 -11
  40. package/dist/themes/default.scss +14 -15
  41. package/lib/Button/styles.js +1 -1
  42. package/lib/Card/styles.js +1 -1
  43. package/lib/Drawer/styles.js +1 -1
  44. package/lib/KeyboardKey/styles.js +1 -1
  45. package/lib/Menu/index.js +4 -2
  46. package/lib/Menu/styles.js +2 -13
  47. package/lib/Modal/styles.js +1 -1
  48. package/lib/Popout/index.js +1 -1
  49. package/lib/Token/index.js +5 -2
  50. package/lib/Token/styles.js +19 -50
  51. package/lib/Tooltip/index.js +1 -1
  52. package/lib/themes/dark/theme.js +173 -156
  53. package/lib/themes/default/theme.js +14 -8
  54. package/lib/themes/utils/interact.js +13 -0
  55. package/package.json +2 -2
  56. package/__flow__/Modal/__snapshots__/index.test.js.snap +0 -80
@@ -6,68 +6,78 @@ import { focusRing } from "../utils/mixins";
6
6
  import type { TypeTheme } from "../types/theme.flow";
7
7
 
8
8
  const Container: StyledComponent<any, TypeTheme, *> = styled.button`
9
- font-family: ${(props) => props.theme.fontFamily};
10
- ${(props) => props.theme.typography[200]};
11
9
  position: relative;
12
10
  display: inline-block;
13
- padding: ${(props) => props.theme.space[200]}
14
- ${(props) => props.theme.space[300]};
15
11
  margin: 0;
16
- color: ${(props) => props.theme.colors.text.body};
17
- background: ${(props) => props.theme.colors.container.background.base};
18
- border: 1px solid ${(props) => props.theme.colors.container.border.base};
19
- font-weight: ${(props) => props.theme.fontWeights.normal};
20
12
  line-height: 1;
21
13
  vertical-align: middle;
22
- border-radius: ${(props) => props.theme.radii[500]};
23
14
  outline: none;
24
- transition: all ${(props) => props.theme.duration.fast}
25
- ${(props) => props.theme.easing.ease_inout};
15
+ /* Theme Properties */
16
+ ${({ theme }) => css`
17
+ ${theme.typography[200]}
18
+ font-family: ${theme.fontFamily};
19
+ font-weight: ${theme.fontWeights.normal};
20
+ border: 1px solid ${theme.colors.container.border.base};
21
+ border-radius: ${theme.radii[500]};
22
+ color: ${theme.colors.text.body};
23
+ background: ${theme.colors.container.background.base};
24
+ padding: ${theme.space[200]} ${theme.space[300]};
25
+ transition: all ${theme.duration.fast} ${theme.easing.ease_inout};
26
+ `}
26
27
 
27
28
  &:focus {
28
29
  ${focusRing}
29
30
  }
30
31
 
31
- ${(props) =>
32
- props.closeable &&
32
+ ${({ theme, palette }) =>
33
+ palette === "blue" &&
33
34
  css`
34
- cursor: pointer;
35
+ color: ${theme.colors.text.body};
36
+ background: ${theme.colors.container.background.decorative.blue};
37
+ border: 1px solid ${theme.colors.container.border.decorative.blue};
38
+ &:hover,
39
+ &:active {
40
+ cursor: pointer;
41
+ box-shadow: ${theme.shadows.low};
42
+ border: 1px solid
43
+ ${theme.utils.interact(theme.colors.container.border.decorative.blue)};
44
+ }
45
+ `}
35
46
 
47
+ ${({ closeable, theme }) =>
48
+ closeable &&
49
+ css`
50
+ cursor: pointer;
36
51
  &:hover,
37
52
  &:active {
38
- color: ${(props) => props.theme.colors.text.body};
53
+ box-shadow: ${theme.shadows.low};
39
54
  border: 1px solid
40
- ${(props) => props.theme.colors.container.border.decorative.neutral};
41
- background-color: ${(props) =>
42
- props.theme.colors.container.background.decorative.neutral};
55
+ ${theme.utils.interact(theme.colors.container.border.base)};
43
56
  }
44
57
  `}
45
58
 
46
- ${(props) =>
47
- props.disabled &&
59
+ ${({ disabled, theme }) =>
60
+ disabled &&
48
61
  css`
49
62
  opacity: 0.4;
50
63
  cursor: not-allowed;
51
64
  &:hover,
52
65
  &:active {
53
- background: ${(props) => props.theme.colors.container.background.base};
54
- border: 1px solid ${(props) => props.theme.colors.container.border.base};
66
+ box-shadow: none;
67
+ border: 1px solid ${theme.colors.container.border.base};
55
68
  }
56
69
  `}
57
-
58
- ${(props) =>
59
- !props.valid &&
70
+
71
+ ${({ valid, theme }) =>
72
+ !valid &&
60
73
  css`
61
- color: ${(props) => props.theme.colors.text.body};
62
- border-color: ${(props) => props.theme.colors.container.border.error};
63
- background: ${(props) => props.theme.colors.container.background.error};
64
-
74
+ color: ${theme.colors.text.error};
75
+ background: ${theme.colors.container.background.error};
76
+ border: 1px solid ${theme.colors.container.border.error};
65
77
  &:hover {
66
- color: ${(props) => props.theme.colors.text.body};
78
+ box-shadow: ${theme.shadows.low};
67
79
  border: 1px solid
68
- ${(props) => props.theme.colors.container.border.error};
69
- background-color: ${(props) =>
70
- props.theme.colors.container.background.error};
80
+ ${theme.utils.interact(theme.colors.container.border.error)};
71
81
  }
72
82
  `}
73
83
 
@@ -159,7 +159,7 @@ const Content = ({
159
159
  m={200}
160
160
  color="text.body"
161
161
  bg="container.background.base"
162
- boxShadow={300}
162
+ boxShadow="medium"
163
163
  border={500}
164
164
  borderColor="container.border.base"
165
165
  // $FlowIssue - upgrade v0.112.0
@@ -3,25 +3,21 @@
3
3
 
4
4
  // SET-UP
5
5
  // These files are auto-generated based on JS theme files, ensuring our SCSS theme variables stay in sync.
6
- @import "dist/themes/default.scss";
7
- @import "dist/themes/dark.scss";
6
+ @import "../../dist/themes/default.scss";
7
+ @import "../../dist/themes/dark.scss";
8
8
 
9
9
  // In the JS theme files, the theme object is exported as "default" (i.e., using "export default"),
10
10
  // so we need to map-get "default" to access it.
11
11
  $themes: (
12
- default: map-get($default, "default"),
13
- dark: map-get($dark, "default")
12
+ light: map-get($default, "default"),
13
+ dark: map-get($dark, "default")
14
14
  );
15
15
 
16
16
  // MIXIN
17
17
  // CSS properties that are theme-dependent must be wrapped in this mixin
18
18
  @mixin themed() {
19
19
  @each $theme, $map in $themes {
20
- // ~ selects siblings to the specified selector, * selects all children of those siblings,
21
- // which makes ~ * a kind of nephew selector. Thus we can target all elements on the page even if they are
22
- // not a direct descendent of the element that we apply the theme classname to.
23
- // This is important for pop-ups and modals, since they are often mounted directly to the body.
24
- .theme--#{$theme} ~ * & {
20
+ .theme--#{$theme} & {
25
21
  $theme-map: () !global;
26
22
  @each $key, $submap in $map {
27
23
  $value: map-get(map-get($themes, $theme), "#{$key}");
@@ -37,78 +33,79 @@ $themes: (
37
33
  // This function will allow you to get any value from the theme.
38
34
  // @param {string} $key - the period-separated path to the value in the theme object. e.g., "colors.text.body"
39
35
  @function t($key) {
40
- $keys: _string-split($key, ".");
36
+ $keys: _str-split($key, ".");
41
37
  @return _map-deep-get($theme-map, $keys);
42
38
  }
43
39
 
44
- // These functions are convenience methods to get theme values for subsets of the theme.
40
+ // The rest of the functions are convenience methods to get theme values for subsets of the theme.
45
41
  // @param {string} $key - the period-separated path to the value in the theme object, with "colors." omitted. e.g., "text.body"
46
42
  @function colors($key) {
47
- $keys: _string-split($key, ".");
43
+ $keys: _str-split($key, ".");
48
44
  @return _map-deep-get($theme-map, join("colors", $keys));
49
45
  }
50
46
 
51
47
  // @param {string} $key - the period-separated path to the value in the theme object, with "typography." omitted. e.g., "100.fontSize"
52
48
  @function typography($key) {
53
- $keys: _string-split($key, ".");
49
+ $keys: _str-split($key, ".");
54
50
  @return _map-deep-get($theme-map, join("typography", $keys));
55
51
  }
56
52
 
57
53
  // @param {string} $key - the period-separated path to the value in the theme object, with "fontWeights." omitted. e.g., "normal"
58
54
  @function fontWeights($key) {
59
- $keys: _string-split($key, ".");
55
+ $keys: _str-split($key, ".");
60
56
  @return _map-deep-get($theme-map, join("fontWeights", $keys));
61
57
  }
62
58
 
63
59
  // @param {string} $key - the period-separated path to the value in the theme object, with "space." omitted. e.g., "100"
64
60
  @function space($key) {
65
- $keys: _string-split($key, ".");
61
+ $keys: _str-split($key, ".");
66
62
  @return _map-deep-get($theme-map, join("space", $keys));
67
63
  }
68
64
 
69
65
  // @param {string} $key - the period-separated path to the value in the theme object, with "radii." omitted. e.g., "inner"
70
66
  @function radii($key) {
71
- $keys: _string-split($key, ".");
67
+ $keys: _str-split($key, ".");
72
68
  @return _map-deep-get($theme-map, join("radii", $keys));
73
69
  }
74
70
 
75
71
  // @param {string} $key - the period-separated path to the value in the theme object, with "borders." omitted. e.g., "500"
76
72
  @function borders($key) {
77
- $keys: _string-split($key, ".");
73
+ $keys: _str-split($key, ".");
78
74
  @return _map-deep-get($theme-map, join("borders", $keys));
79
75
  }
80
76
 
81
77
  // @param {string} $key - the period-separated path to the value in the theme object, with "borderWidths." omitted. e.g., "500"
82
78
  @function borderWidths($key) {
83
- $keys: _string-split($key, ".");
79
+ $keys: _str-split($key, ".");
84
80
  @return _map-deep-get($theme-map, join("borderWidths", $keys));
85
81
  }
86
82
 
87
83
  // @param {string} $key - the period-separated path to the value in the theme object, with "shadows." omitted. e.g., "low"
88
84
  @function shadows($key) {
89
- $keys: _string-split($key, ".");
85
+ $keys: _str-split($key, ".");
90
86
  @return _map-deep-get($theme-map, join("shadows", $keys));
91
87
  }
92
88
 
93
89
  // @param {string} $key - the period-separated path to the value in the theme object, with "easing." omitted. e.g., "ease_in"
94
90
  @function easing($key) {
95
- $keys: _string-split($key, ".");
91
+ $keys: _str-split($key, ".");
96
92
  @return _map-deep-get($theme-map, join("easing", $keys));
97
93
  }
98
94
 
99
95
  // @param {string} $key - the period-separated path to the value in the theme object, with "duration." omitted. e.g., "fast"
100
96
  @function duration($key) {
101
- $keys: _string-split($key, ".");
97
+ $keys: _str-split($key, ".");
102
98
  @return _map-deep-get($theme-map, join("duration", $keys));
103
99
  }
104
100
 
105
101
  // UTILITIES
106
102
  // Helper functions that power the functions above. Not relevant to the theme.
107
- // If you import this file with @use, they will not be included.
103
+ // If you import this file with @use, these functions will be excluded because they are private.
108
104
 
109
105
  // Via https://stackoverflow.com/a/42295154
110
- // Only works with a single-character separator
111
- @function _string-split($string, $separator) {
106
+ // Used to split period-separated object keys, e.g. "colors.text.body" => ["colors", "text", "body"]
107
+ // Only works with a single-character separator.
108
+ @function _str-split($string, $separator) {
112
109
  // empty array/list
113
110
  $split-arr: ();
114
111
  // first index of separator in string
@@ -131,7 +128,8 @@ $themes: (
131
128
  }
132
129
 
133
130
  // Adapted from https://css-tricks.com/snippets/sass/deep-getset-maps/
134
- // Iterates over a list of keys to read multi-level maps
131
+ // Iterates over a list of keys to read multi-level maps.
132
+ // e.g., _map-deep-get((colors: (text: (body: "#364141"))), ["colors", "text", "body"]) => "#364141"
135
133
  @function _map-deep-get($map, $keys) {
136
134
  @each $key in $keys {
137
135
  $map: map-get($map, $key);
@@ -1,6 +1,7 @@
1
1
  // @flow strict-local
2
2
 
3
3
  import COLORS from "@sproutsocial/seeds-color";
4
+ import DEPTH from "@sproutsocial/seeds-depth";
4
5
  import defaultTheme from "../default/theme";
5
6
  import { datavizPalette } from "./dataviz-palette";
6
7
  import {
@@ -13,189 +14,208 @@ import {
13
14
  neutral,
14
15
  } from "./decorative-palettes";
15
16
 
16
- const darkTheme = {
17
- ...defaultTheme,
18
- colors: {
19
- ...defaultTheme.colors,
20
- app: {
21
- background: {
22
- base: COLORS.COLOR_NEUTRAL_1000,
17
+ import interact from "../utils/interact";
18
+
19
+ const MODE = "default-dark";
20
+
21
+ export const shadows = {
22
+ low: `${DEPTH.ELEVATION_LEVEL_100} ${COLORS.COLOR_NEUTRAL_1100}FF`,
23
+ medium: `${DEPTH.ELEVATION_LEVEL_300} ${COLORS.COLOR_NEUTRAL_1100}FF`,
24
+ high: `${DEPTH.ELEVATION_LEVEL_400} ${COLORS.COLOR_NEUTRAL_1100}FF`,
25
+ };
26
+
27
+ const colors = {
28
+ ...defaultTheme.colors,
29
+ utils: {
30
+ interact: interact(MODE),
31
+ },
32
+ app: {
33
+ background: {
34
+ base: COLORS.COLOR_NEUTRAL_1000,
35
+ },
36
+ },
37
+ container: {
38
+ background: {
39
+ base: COLORS.COLOR_NEUTRAL_900,
40
+ success: green.background,
41
+ warning: yellow.background,
42
+ error: red.background,
43
+ info: blue.background,
44
+ opportunity: purple.background,
45
+ danger: red.background,
46
+ decorative: {
47
+ green: green.background,
48
+ blue: blue.background,
49
+ purple: purple.background,
50
+ yellow: yellow.background,
51
+ orange: orange.background,
52
+ red: red.background,
53
+ neutral: neutral.background,
54
+ },
55
+ selected: COLORS.COLOR_NEUTRAL_0,
56
+ },
57
+ border: {
58
+ base: COLORS.COLOR_NEUTRAL_1100,
59
+ success: green.highlight,
60
+ warning: yellow.highlight,
61
+ error: red.highlight,
62
+ danger: red.highlight,
63
+ info: blue.highlight,
64
+ opportunity: purple.highlight,
65
+ decorative: {
66
+ green: green.highlight,
67
+ blue: blue.highlight,
68
+ purple: purple.highlight,
69
+ yellow: yellow.highlight,
70
+ orange: orange.highlight,
71
+ red: red.highlight,
72
+ neutral: neutral.highlight,
23
73
  },
74
+ selected: COLORS.COLOR_NEUTRAL_0,
24
75
  },
25
- container: {
76
+ },
77
+ button: {
78
+ primary: {
26
79
  background: {
27
- base: COLORS.COLOR_NEUTRAL_900,
28
- success: green.background,
29
- warning: yellow.background,
30
- error: red.background,
31
- info: blue.background,
32
- opportunity: purple.background,
33
- danger: red.background,
34
- decorative: {
35
- green: green.background,
36
- blue: blue.background,
37
- purple: purple.background,
38
- yellow: yellow.background,
39
- orange: orange.background,
40
- red: red.background,
41
- neutral: neutral.background,
42
- },
43
- selected: COLORS.COLOR_NEUTRAL_0,
80
+ base: COLORS.COLOR_BLUE_400,
81
+ hover: COLORS.COLOR_BLUE_300,
82
+ active: COLORS.COLOR_BLUE_200,
44
83
  },
45
84
  border: {
46
- base: COLORS.COLOR_NEUTRAL_1100,
47
- success: green.highlight,
48
- warning: yellow.highlight,
49
- error: red.highlight,
50
- danger: red.highlight,
51
- info: blue.highlight,
52
- opportunity: purple.highlight,
53
- decorative: {
54
- green: green.highlight,
55
- blue: blue.highlight,
56
- purple: purple.highlight,
57
- yellow: yellow.highlight,
58
- orange: orange.highlight,
59
- red: red.highlight,
60
- neutral: neutral.highlight,
61
- },
62
- selected: COLORS.COLOR_NEUTRAL_0,
85
+ base: "transparent",
63
86
  },
64
- },
65
- button: {
66
- primary: {
67
- background: {
68
- base: COLORS.COLOR_BLUE_400,
69
- hover: COLORS.COLOR_BLUE_300,
70
- active: COLORS.COLOR_BLUE_200,
71
- },
72
- border: {
73
- base: "transparent",
74
- },
75
- text: {
76
- base: COLORS.COLOR_NEUTRAL_900,
77
- hover: COLORS.COLOR_NEUTRAL_1000,
78
- },
79
- },
80
- secondary: {
81
- background: {
82
- base: "transparent",
83
- hover: COLORS.COLOR_NEUTRAL_100,
84
- active: COLORS.COLOR_NEUTRAL_0,
85
- },
86
- border: {
87
- base: COLORS.COLOR_NEUTRAL_0,
88
- },
89
- text: {
90
- base: COLORS.COLOR_NEUTRAL_0,
91
- hover: COLORS.COLOR_NEUTRAL_800,
92
- },
93
- },
94
- pill: {
95
- background: {
96
- base: "transparent",
97
- hover: COLORS.COLOR_NEUTRAL_1000,
98
- active: COLORS.COLOR_NEUTRAL_900,
99
- },
100
- border: {
101
- base: "transparent",
102
- },
103
- text: {
104
- base: COLORS.COLOR_NEUTRAL_100,
105
- hover: COLORS.COLOR_NEUTRAL_0,
106
- },
107
- },
108
- destructive: {
109
- background: {
110
- base: COLORS.COLOR_RED_400,
111
- hover: COLORS.COLOR_RED_300,
112
- active: COLORS.COLOR_RED_200,
113
- },
114
- border: {
115
- base: "transparent",
116
- },
117
- text: {
118
- base: COLORS.COLOR_NEUTRAL_900,
119
- hover: COLORS.COLOR_NEUTRAL_1000,
120
- },
121
- },
122
- placeholder: {
123
- background: {
124
- base: "transparent",
125
- hover: COLORS.COLOR_NEUTRAL_1100,
126
- active: COLORS.COLOR_NEUTRAL_1100,
127
- },
128
- border: {
129
- base: COLORS.COLOR_NEUTRAL_500,
130
- },
131
- text: {
132
- base: COLORS.COLOR_BLUE_400,
133
- hover: COLORS.COLOR_BLUE_300,
134
- },
135
- },
136
- unstyled: {
137
- background: {
138
- base: "transparent",
139
- },
140
- border: {
141
- base: "transparent",
142
- },
143
- text: {
144
- base: COLORS.COLOR_NEUTRAL_300,
145
- hover: COLORS.COLOR_NEUTRAL_200,
146
- },
87
+ text: {
88
+ base: COLORS.COLOR_NEUTRAL_900,
89
+ hover: COLORS.COLOR_NEUTRAL_1000,
147
90
  },
148
91
  },
149
- link: {
150
- base: COLORS.COLOR_BLUE_400,
151
- hover: COLORS.COLOR_BLUE_300,
152
- },
153
- text: {
154
- headline: COLORS.COLOR_NEUTRAL_0,
155
- subtext: COLORS.COLOR_NEUTRAL_300,
156
- body: COLORS.COLOR_NEUTRAL_100,
157
- inverse: COLORS.COLOR_NEUTRAL_900,
158
- error: COLORS.COLOR_RED_400,
92
+ secondary: {
93
+ background: {
94
+ base: "transparent",
95
+ hover: COLORS.COLOR_NEUTRAL_100,
96
+ active: COLORS.COLOR_NEUTRAL_0,
97
+ },
98
+ border: {
99
+ base: COLORS.COLOR_NEUTRAL_0,
100
+ },
101
+ text: {
102
+ base: COLORS.COLOR_NEUTRAL_0,
103
+ hover: COLORS.COLOR_NEUTRAL_800,
104
+ },
159
105
  },
160
- icon: {
161
- base: COLORS.COLOR_NEUTRAL_100,
162
- inverse: COLORS.COLOR_NEUTRAL_900,
163
- success: green.foreground,
164
- warning: yellow.foreground,
165
- error: red.foreground,
166
- danger: red.foreground,
167
- info: blue.foreground,
168
- opportunity: purple.foreground,
106
+ pill: {
107
+ background: {
108
+ base: "transparent",
109
+ hover: COLORS.COLOR_NEUTRAL_1000,
110
+ active: COLORS.COLOR_NEUTRAL_900,
111
+ },
112
+ border: {
113
+ base: "transparent",
114
+ },
115
+ text: {
116
+ base: COLORS.COLOR_NEUTRAL_100,
117
+ hover: COLORS.COLOR_NEUTRAL_0,
118
+ },
169
119
  },
170
- form: {
120
+ destructive: {
171
121
  background: {
122
+ base: COLORS.COLOR_RED_400,
123
+ hover: COLORS.COLOR_RED_300,
124
+ active: COLORS.COLOR_RED_200,
125
+ },
126
+ border: {
127
+ base: "transparent",
128
+ },
129
+ text: {
172
130
  base: COLORS.COLOR_NEUTRAL_900,
173
- selected: COLORS.COLOR_NEUTRAL_0,
131
+ hover: COLORS.COLOR_NEUTRAL_1000,
132
+ },
133
+ },
134
+ placeholder: {
135
+ background: {
136
+ base: "transparent",
137
+ hover: COLORS.COLOR_NEUTRAL_1100,
138
+ active: COLORS.COLOR_NEUTRAL_1100,
174
139
  },
175
140
  border: {
176
141
  base: COLORS.COLOR_NEUTRAL_500,
177
- error: red.highlight,
178
- warning: yellow.highlight,
179
- selected: COLORS.COLOR_NEUTRAL_0,
180
142
  },
181
- placeholder: {
182
- base: COLORS.COLOR_NEUTRAL_500,
143
+ text: {
144
+ base: COLORS.COLOR_BLUE_400,
145
+ hover: COLORS.COLOR_BLUE_300,
183
146
  },
184
147
  },
185
- listItem: {
148
+ unstyled: {
186
149
  background: {
187
150
  base: "transparent",
188
- hover: COLORS.COLOR_NEUTRAL_800,
189
- selected: COLORS.COLOR_NEUTRAL_0,
190
151
  },
152
+ border: {
153
+ base: "transparent",
154
+ },
155
+ text: {
156
+ base: COLORS.COLOR_NEUTRAL_300,
157
+ hover: COLORS.COLOR_NEUTRAL_200,
158
+ },
159
+ },
160
+ },
161
+ link: {
162
+ base: COLORS.COLOR_BLUE_400,
163
+ hover: COLORS.COLOR_BLUE_300,
164
+ },
165
+ text: {
166
+ headline: COLORS.COLOR_NEUTRAL_0,
167
+ subtext: COLORS.COLOR_NEUTRAL_300,
168
+ body: COLORS.COLOR_NEUTRAL_100,
169
+ inverse: COLORS.COLOR_NEUTRAL_900,
170
+ error: COLORS.COLOR_RED_400,
171
+ },
172
+ icon: {
173
+ base: COLORS.COLOR_NEUTRAL_100,
174
+ inverse: COLORS.COLOR_NEUTRAL_900,
175
+ success: green.foreground,
176
+ warning: yellow.foreground,
177
+ error: red.foreground,
178
+ danger: red.foreground,
179
+ info: blue.foreground,
180
+ opportunity: purple.foreground,
181
+ },
182
+ form: {
183
+ background: {
184
+ base: COLORS.COLOR_NEUTRAL_900,
185
+ selected: COLORS.COLOR_NEUTRAL_0,
191
186
  },
192
- dataviz: {
193
- map: datavizPalette.DATAVIZ_COLORS_MAP,
194
- list: datavizPalette.DATAVIZ_COLORS_LIST,
187
+ border: {
188
+ base: COLORS.COLOR_NEUTRAL_500,
189
+ error: red.highlight,
190
+ warning: yellow.highlight,
191
+ selected: COLORS.COLOR_NEUTRAL_0,
192
+ },
193
+ placeholder: {
194
+ base: COLORS.COLOR_NEUTRAL_500,
195
195
  },
196
- ...datavizPalette,
197
196
  },
198
- mode: "dark",
197
+ listItem: {
198
+ background: {
199
+ base: "transparent",
200
+ hover: COLORS.COLOR_NEUTRAL_800,
201
+ selected: COLORS.COLOR_NEUTRAL_0,
202
+ },
203
+ },
204
+ elevation: {
205
+ base: COLORS.COLOR_NEUTRAL_1100,
206
+ },
207
+ dataviz: {
208
+ map: datavizPalette.DATAVIZ_COLORS_MAP,
209
+ list: datavizPalette.DATAVIZ_COLORS_LIST,
210
+ },
211
+ ...datavizPalette,
212
+ };
213
+
214
+ const darkTheme = {
215
+ ...defaultTheme,
216
+ colors,
217
+ shadows,
218
+ mode: MODE,
199
219
  };
200
220
 
201
221
  export default darkTheme;
@@ -19,8 +19,12 @@ import DEPTH from "@sproutsocial/seeds-depth";
19
19
  import MOTION from "@sproutsocial/seeds-motion";
20
20
  import BORDER from "@sproutsocial/seeds-border";
21
21
 
22
+ import interact from "../utils/interact";
23
+
22
24
  export const breakpoints = ["900px", "1200px", "1500px", "1800px"];
23
25
 
26
+ const MODE = "default-light";
27
+
24
28
  const colors = {
25
29
  app: {
26
30
  background: {
@@ -194,6 +198,9 @@ const colors = {
194
198
  selected: COLORS.COLOR_NEUTRAL_800,
195
199
  },
196
200
  },
201
+ elevation: {
202
+ base: `${COLORS.COLOR_NEUTRAL_900}3D`,
203
+ },
197
204
  network: {
198
205
  twitter: NETWORKCOLORS.NETWORK_COLOR_TWITTER,
199
206
  twitter_like: NETWORKCOLORS.NETWORK_COLOR_TWITTER_LIKE,
@@ -300,10 +307,9 @@ export const borderWidths = {
300
307
  };
301
308
 
302
309
  export const shadows = {
303
- "100": DEPTH.ELEVATION_LEVEL_100,
304
- "200": DEPTH.ELEVATION_LEVEL_200,
305
- "300": DEPTH.ELEVATION_LEVEL_300,
306
- "400": DEPTH.ELEVATION_LEVEL_400,
310
+ low: `${DEPTH.ELEVATION_LEVEL_100} ${COLORS.COLOR_NEUTRAL_900}3D`,
311
+ medium: `${DEPTH.ELEVATION_LEVEL_300} ${COLORS.COLOR_NEUTRAL_900}3D`,
312
+ high: `${DEPTH.ELEVATION_LEVEL_400} ${COLORS.COLOR_NEUTRAL_900}3D`,
307
313
  };
308
314
 
309
315
  export const easing = {
@@ -319,6 +325,9 @@ export const duration = {
319
325
  };
320
326
 
321
327
  const theme = {
328
+ utils: {
329
+ interact: interact(MODE),
330
+ },
322
331
  breakpoints,
323
332
  colors,
324
333
  typography: {
@@ -342,12 +351,10 @@ const theme = {
342
351
  },
343
352
  borders,
344
353
  borderWidths,
345
- shadows: {
346
- ...shadows,
347
- shadows,
348
- },
354
+ shadows,
349
355
  easing,
350
356
  duration,
357
+ mode: MODE,
351
358
  };
352
359
 
353
360
  export default theme;