@instructure/ui-buttons 9.5.2-snapshot-7 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,22 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [9.5.2-snapshot-7](https://github.com/instructure/instructure-ui/compare/v9.5.1...v9.5.2-snapshot-7) (2024-07-31)
6
+ # [9.6.0](https://github.com/instructure/instructure-ui/compare/v9.5.2...v9.6.0) (2024-08-14)
7
7
 
8
+ **Note:** Version bump only for package @instructure/ui-buttons
8
9
 
9
- ### Bug Fixes
10
-
11
- * **ui-buttons:** fix hover enabled when a component is disabled ([f55dc3e](https://github.com/instructure/instructure-ui/commit/f55dc3e81036c25842460869ec03952e14b5ef2b))
12
10
 
13
11
 
14
- ### Features
15
12
 
16
- * **many:** rewrite color system ([1e5809e](https://github.com/instructure/instructure-ui/commit/1e5809e28dee8c2a71703a429609b8d2f95d76e6))
17
13
 
14
+ ## [9.5.2](https://github.com/instructure/instructure-ui/compare/v9.5.1...v9.5.2) (2024-08-05)
18
15
 
19
- ### BREAKING CHANGES
20
-
21
- * **many:** Breaks color overrides in certain cases
16
+ **Note:** Version bump only for package @instructure/ui-buttons
22
17
 
23
18
 
24
19
 
@@ -22,8 +22,29 @@
22
22
  * SOFTWARE.
23
23
  */
24
24
 
25
- import { alpha } from '@instructure/ui-color-utils';
25
+ import { alpha, darken } from '@instructure/ui-color-utils';
26
26
  const activeShadow = 'inset 0 0 0.1875rem 0.0625rem';
27
+ const generateButtonThemeVars = ({
28
+ style,
29
+ textColor,
30
+ ghostTextColor,
31
+ backgroundColor,
32
+ borderColor,
33
+ ghostBorderColor = borderColor
34
+ }) => ({
35
+ [`${style}Color`]: textColor,
36
+ [`${style}BorderColor`]: darken(borderColor, 10),
37
+ [`${style}Background`]: backgroundColor,
38
+ [`${style}HoverBackground`]: darken(backgroundColor, 10),
39
+ [`${style}ActiveBackground`]: darken(backgroundColor, 10),
40
+ [`${style}ActiveBoxShadow`]: `${activeShadow} ${darken(borderColor, 20)}`,
41
+ [`${style}GhostColor`]: ghostTextColor,
42
+ [`${style}GhostBorderColor`]: ghostBorderColor,
43
+ [`${style}GhostBackground`]: 'transparent',
44
+ [`${style}GhostHoverBackground`]: alpha(ghostTextColor, 10),
45
+ [`${style}GhostActiveBackground`]: 'transparent',
46
+ [`${style}GhostActiveBoxShadow`]: `${activeShadow} ${alpha(ghostBorderColor, 28)}`
47
+ });
27
48
 
28
49
  /**
29
50
  * Generates the theme object for the component from the theme and provided additional information
@@ -31,12 +52,38 @@ const activeShadow = 'inset 0 0 0.1875rem 0.0625rem';
31
52
  * @return {Object} The final theme object with the overrides and component variables
32
53
  */
33
54
  const generateComponentTheme = theme => {
34
- var _colors$contrasts, _colors$contrasts2, _colors$contrasts3, _colors$contrasts4, _colors$contrasts5, _colors$contrasts6, _colors$contrasts7, _colors$contrasts8, _colors$contrasts9, _colors$contrasts10, _colors$contrasts11, _colors$contrasts12, _colors$contrasts13, _colors$contrasts14, _colors$contrasts15, _colors$contrasts16, _colors$contrasts17, _colors$contrasts18, _colors$contrasts19, _colors$contrasts20, _colors$contrasts21, _colors$contrasts22, _colors$contrasts23, _colors$contrasts24, _colors$contrasts25, _colors$contrasts26, _colors$contrasts27, _colors$contrasts28, _colors$contrasts29, _colors$contrasts30, _colors$contrasts31, _colors$contrasts32, _colors$contrasts33, _colors$contrasts34, _colors$contrasts35, _colors$contrasts36, _colors$contrasts37, _colors$contrasts38, _colors$contrasts39, _colors$contrasts40, _colors$contrasts41, _colors$contrasts42, _colors$contrasts43, _colors$contrasts44, _colors$contrasts45, _colors$contrasts46, _colors$contrasts47, _colors$contrasts48, _colors$contrasts49, _colors$contrasts50;
35
55
  const borders = theme.borders,
36
56
  colors = theme.colors,
37
57
  forms = theme.forms,
38
58
  spacing = theme.spacing,
39
- typography = theme.typography;
59
+ typography = theme.typography,
60
+ themeName = theme.key;
61
+ const themeSpecificStyle = {
62
+ canvas: {
63
+ ...generateButtonThemeVars({
64
+ style: 'primary',
65
+ backgroundColor: theme['ic-brand-button--primary-bgd'],
66
+ borderColor: theme['ic-brand-button--primary-bgd'],
67
+ textColor: theme['ic-brand-button--primary-text'],
68
+ ghostTextColor: theme['ic-brand-button--primary-bgd']
69
+ }),
70
+ primaryGhostHoverBackground: alpha(theme['ic-brand-button--primary-bgd'], 10)
71
+ },
72
+ 'canvas-high-contrast': {
73
+ secondaryBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderMedium,
74
+ primaryInverseBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderMedium
75
+ },
76
+ instructure: {
77
+ borderRadius: '999em',
78
+ smallPaddingTop: '0.5rem',
79
+ smallPaddingBottom: '0.4375rem',
80
+ mediumPaddingTop: '0.75rem',
81
+ mediumPaddingBottom: '0.75rem',
82
+ largePaddingTop: '1rem',
83
+ largePaddingBottom: '1rem',
84
+ largeFontSize: '1.125rem'
85
+ }
86
+ };
40
87
  const componentVariables = {
41
88
  transform: 'none',
42
89
  hoverTransform: 'none',
@@ -68,69 +115,53 @@ const generateComponentTheme = theme => {
68
115
  iconSizeLarge: '1.625rem',
69
116
  iconTextGap: spacing.xSmall,
70
117
  iconTextGapCondensed: spacing.xxSmall,
71
- primaryColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts = colors.contrasts) === null || _colors$contrasts === void 0 ? void 0 : _colors$contrasts.white1010,
72
- primaryBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts2 = colors.contrasts) === null || _colors$contrasts2 === void 0 ? void 0 : _colors$contrasts2.blue5782,
73
- primaryBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts3 = colors.contrasts) === null || _colors$contrasts3 === void 0 ? void 0 : _colors$contrasts3.blue4570,
74
- primaryHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts4 = colors.contrasts) === null || _colors$contrasts4 === void 0 ? void 0 : _colors$contrasts4.blue5782,
75
- primaryActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts5 = colors.contrasts) === null || _colors$contrasts5 === void 0 ? void 0 : _colors$contrasts5.blue5782,
76
- primaryActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts6 = colors.contrasts) === null || _colors$contrasts6 === void 0 ? void 0 : _colors$contrasts6.white1010}`,
77
- primaryGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts7 = colors.contrasts) === null || _colors$contrasts7 === void 0 ? void 0 : _colors$contrasts7.blue4570,
78
- primaryGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts8 = colors.contrasts) === null || _colors$contrasts8 === void 0 ? void 0 : _colors$contrasts8.blue4570,
79
- primaryGhostBackground: 'transparent',
80
- primaryGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts9 = colors.contrasts) === null || _colors$contrasts9 === void 0 ? void 0 : _colors$contrasts9.blue4570, 10),
81
- primaryGhostActiveBackground: 'transparent',
82
- primaryGhostActiveBoxShadow: `${activeShadow} ${alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts10 = colors.contrasts) === null || _colors$contrasts10 === void 0 ? void 0 : _colors$contrasts10.blue1212, 28)}`,
83
- secondaryColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts11 = colors.contrasts) === null || _colors$contrasts11 === void 0 ? void 0 : _colors$contrasts11.grey125125,
84
- secondaryBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts12 = colors.contrasts) === null || _colors$contrasts12 === void 0 ? void 0 : _colors$contrasts12.grey1214,
85
- secondaryBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts13 = colors.contrasts) === null || _colors$contrasts13 === void 0 ? void 0 : _colors$contrasts13.grey1111,
86
- secondaryHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts14 = colors.contrasts) === null || _colors$contrasts14 === void 0 ? void 0 : _colors$contrasts14.grey1214,
87
- secondaryActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts15 = colors.contrasts) === null || _colors$contrasts15 === void 0 ? void 0 : _colors$contrasts15.grey1214,
88
- secondaryActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts16 = colors.contrasts) === null || _colors$contrasts16 === void 0 ? void 0 : _colors$contrasts16.white1010}`,
89
- secondaryGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts17 = colors.contrasts) === null || _colors$contrasts17 === void 0 ? void 0 : _colors$contrasts17.grey125125,
90
- secondaryGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts18 = colors.contrasts) === null || _colors$contrasts18 === void 0 ? void 0 : _colors$contrasts18.grey125125,
91
- secondaryGhostBackground: 'transparent',
92
- secondaryGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts19 = colors.contrasts) === null || _colors$contrasts19 === void 0 ? void 0 : _colors$contrasts19.grey125125, 10),
93
- secondaryGhostActiveBackground: 'transparent',
94
- secondaryGhostActiveBoxShadow: `${activeShadow} ${alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts20 = colors.contrasts) === null || _colors$contrasts20 === void 0 ? void 0 : _colors$contrasts20.grey125125, 28)}`,
95
- successColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts21 = colors.contrasts) === null || _colors$contrasts21 === void 0 ? void 0 : _colors$contrasts21.white1010,
96
- successBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts22 = colors.contrasts) === null || _colors$contrasts22 === void 0 ? void 0 : _colors$contrasts22.green5782,
97
- successBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts23 = colors.contrasts) === null || _colors$contrasts23 === void 0 ? void 0 : _colors$contrasts23.green4570,
98
- successHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts24 = colors.contrasts) === null || _colors$contrasts24 === void 0 ? void 0 : _colors$contrasts24.green5782,
99
- successActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts25 = colors.contrasts) === null || _colors$contrasts25 === void 0 ? void 0 : _colors$contrasts25.green5782,
100
- successActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts26 = colors.contrasts) === null || _colors$contrasts26 === void 0 ? void 0 : _colors$contrasts26.white1010}`,
101
- successGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts27 = colors.contrasts) === null || _colors$contrasts27 === void 0 ? void 0 : _colors$contrasts27.green4570,
102
- successGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts28 = colors.contrasts) === null || _colors$contrasts28 === void 0 ? void 0 : _colors$contrasts28.green4570,
103
- successGhostBackground: 'transparent',
104
- successGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts29 = colors.contrasts) === null || _colors$contrasts29 === void 0 ? void 0 : _colors$contrasts29.green4570, 10),
105
- successGhostActiveBackground: 'transparent',
106
- successGhostActiveBoxShadow: `${activeShadow} ${alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts30 = colors.contrasts) === null || _colors$contrasts30 === void 0 ? void 0 : _colors$contrasts30.green4570, 28)}`,
107
- dangerColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts31 = colors.contrasts) === null || _colors$contrasts31 === void 0 ? void 0 : _colors$contrasts31.white1010,
108
- dangerBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts32 = colors.contrasts) === null || _colors$contrasts32 === void 0 ? void 0 : _colors$contrasts32.red5782,
109
- dangerBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts33 = colors.contrasts) === null || _colors$contrasts33 === void 0 ? void 0 : _colors$contrasts33.red4570,
110
- dangerHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts34 = colors.contrasts) === null || _colors$contrasts34 === void 0 ? void 0 : _colors$contrasts34.red5782,
111
- dangerActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts35 = colors.contrasts) === null || _colors$contrasts35 === void 0 ? void 0 : _colors$contrasts35.red5782,
112
- dangerActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts36 = colors.contrasts) === null || _colors$contrasts36 === void 0 ? void 0 : _colors$contrasts36.white1010}`,
113
- dangerGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts37 = colors.contrasts) === null || _colors$contrasts37 === void 0 ? void 0 : _colors$contrasts37.red4570,
114
- dangerGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts38 = colors.contrasts) === null || _colors$contrasts38 === void 0 ? void 0 : _colors$contrasts38.red4570,
115
- dangerGhostBackground: 'transparent',
116
- dangerGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts39 = colors.contrasts) === null || _colors$contrasts39 === void 0 ? void 0 : _colors$contrasts39.red4570, 10),
117
- dangerGhostActiveBackground: 'transparent',
118
- dangerGhostActiveBoxShadow: `${activeShadow} ${alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts40 = colors.contrasts) === null || _colors$contrasts40 === void 0 ? void 0 : _colors$contrasts40.red4570, 28)}`,
119
- primaryInverseColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts41 = colors.contrasts) === null || _colors$contrasts41 === void 0 ? void 0 : _colors$contrasts41.grey125125,
120
- primaryInverseBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts42 = colors.contrasts) === null || _colors$contrasts42 === void 0 ? void 0 : _colors$contrasts42.grey1214,
121
- primaryInverseBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts43 = colors.contrasts) === null || _colors$contrasts43 === void 0 ? void 0 : _colors$contrasts43.white1010,
122
- primaryInverseHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts44 = colors.contrasts) === null || _colors$contrasts44 === void 0 ? void 0 : _colors$contrasts44.grey1111,
123
- primaryInverseActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts45 = colors.contrasts) === null || _colors$contrasts45 === void 0 ? void 0 : _colors$contrasts45.white1010,
124
- primaryInverseActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts46 = colors.contrasts) === null || _colors$contrasts46 === void 0 ? void 0 : _colors$contrasts46.white1010}`,
125
- primaryInverseGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts47 = colors.contrasts) === null || _colors$contrasts47 === void 0 ? void 0 : _colors$contrasts47.white1010,
126
- primaryInverseGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts48 = colors.contrasts) === null || _colors$contrasts48 === void 0 ? void 0 : _colors$contrasts48.white1010,
127
- primaryInverseGhostBackground: 'transparent',
128
- primaryInverseGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts49 = colors.contrasts) === null || _colors$contrasts49 === void 0 ? void 0 : _colors$contrasts49.white1010, 10),
129
- primaryInverseGhostActiveBackground: 'transparent',
130
- primaryInverseGhostActiveBoxShadow: `${activeShadow} ${alpha(colors === null || colors === void 0 ? void 0 : (_colors$contrasts50 = colors.contrasts) === null || _colors$contrasts50 === void 0 ? void 0 : _colors$contrasts50.white1010, 28)}`
118
+ ...generateButtonThemeVars({
119
+ style: 'primary',
120
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundBrand,
121
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderBrand,
122
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
123
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textBrand
124
+ }),
125
+ ...generateButtonThemeVars({
126
+ style: 'secondary',
127
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundLight,
128
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderLight,
129
+ ghostBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderDarkest,
130
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest,
131
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest
132
+ }),
133
+ ...generateButtonThemeVars({
134
+ style: 'success',
135
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundSuccess,
136
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderSuccess,
137
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
138
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textSuccess
139
+ }),
140
+ ...generateButtonThemeVars({
141
+ style: 'danger',
142
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundDanger,
143
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderDanger,
144
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
145
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textDanger
146
+ }),
147
+ ...generateButtonThemeVars({
148
+ style: 'primaryInverse',
149
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundLightest,
150
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderLightest,
151
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest,
152
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textLightest
153
+ }),
154
+ // Overrides for primary-inverse to match what was previously the `light` button variant
155
+ primaryInverseBorderColor: darken(colors === null || colors === void 0 ? void 0 : colors.borderLight, 10),
156
+ primaryInverseHoverBackground: darken(colors === null || colors === void 0 ? void 0 : colors.backgroundLightest, 5),
157
+ primaryInverseActiveBackground: colors === null || colors === void 0 ? void 0 : colors.backgroundLightest,
158
+ primaryInverseActiveBoxShadow: `${activeShadow} ${darken(colors === null || colors === void 0 ? void 0 : colors.borderLightest, 25)}`,
159
+ // Overrides for ghost hover states to ensure correct color contrast for a11y
160
+ successGhostHoverBackground: alpha(colors === null || colors === void 0 ? void 0 : colors.textSuccess, 1)
131
161
  };
132
162
  return {
133
- ...componentVariables
163
+ ...componentVariables,
164
+ ...themeSpecificStyle[themeName]
134
165
  };
135
166
  };
136
167
  export default generateComponentTheme;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _alpha = require("@instructure/ui-color-utils/lib/alpha.js");
8
+ var _darken = require("@instructure/ui-color-utils/lib/darken.js");
8
9
  /*
9
10
  * The MIT License (MIT)
10
11
  *
@@ -30,6 +31,27 @@ var _alpha = require("@instructure/ui-color-utils/lib/alpha.js");
30
31
  */
31
32
 
32
33
  const activeShadow = 'inset 0 0 0.1875rem 0.0625rem';
34
+ const generateButtonThemeVars = ({
35
+ style,
36
+ textColor,
37
+ ghostTextColor,
38
+ backgroundColor,
39
+ borderColor,
40
+ ghostBorderColor = borderColor
41
+ }) => ({
42
+ [`${style}Color`]: textColor,
43
+ [`${style}BorderColor`]: (0, _darken.darken)(borderColor, 10),
44
+ [`${style}Background`]: backgroundColor,
45
+ [`${style}HoverBackground`]: (0, _darken.darken)(backgroundColor, 10),
46
+ [`${style}ActiveBackground`]: (0, _darken.darken)(backgroundColor, 10),
47
+ [`${style}ActiveBoxShadow`]: `${activeShadow} ${(0, _darken.darken)(borderColor, 20)}`,
48
+ [`${style}GhostColor`]: ghostTextColor,
49
+ [`${style}GhostBorderColor`]: ghostBorderColor,
50
+ [`${style}GhostBackground`]: 'transparent',
51
+ [`${style}GhostHoverBackground`]: (0, _alpha.alpha)(ghostTextColor, 10),
52
+ [`${style}GhostActiveBackground`]: 'transparent',
53
+ [`${style}GhostActiveBoxShadow`]: `${activeShadow} ${(0, _alpha.alpha)(ghostBorderColor, 28)}`
54
+ });
33
55
 
34
56
  /**
35
57
  * Generates the theme object for the component from the theme and provided additional information
@@ -37,12 +59,38 @@ const activeShadow = 'inset 0 0 0.1875rem 0.0625rem';
37
59
  * @return {Object} The final theme object with the overrides and component variables
38
60
  */
39
61
  const generateComponentTheme = theme => {
40
- var _colors$contrasts, _colors$contrasts2, _colors$contrasts3, _colors$contrasts4, _colors$contrasts5, _colors$contrasts6, _colors$contrasts7, _colors$contrasts8, _colors$contrasts9, _colors$contrasts10, _colors$contrasts11, _colors$contrasts12, _colors$contrasts13, _colors$contrasts14, _colors$contrasts15, _colors$contrasts16, _colors$contrasts17, _colors$contrasts18, _colors$contrasts19, _colors$contrasts20, _colors$contrasts21, _colors$contrasts22, _colors$contrasts23, _colors$contrasts24, _colors$contrasts25, _colors$contrasts26, _colors$contrasts27, _colors$contrasts28, _colors$contrasts29, _colors$contrasts30, _colors$contrasts31, _colors$contrasts32, _colors$contrasts33, _colors$contrasts34, _colors$contrasts35, _colors$contrasts36, _colors$contrasts37, _colors$contrasts38, _colors$contrasts39, _colors$contrasts40, _colors$contrasts41, _colors$contrasts42, _colors$contrasts43, _colors$contrasts44, _colors$contrasts45, _colors$contrasts46, _colors$contrasts47, _colors$contrasts48, _colors$contrasts49, _colors$contrasts50;
41
62
  const borders = theme.borders,
42
63
  colors = theme.colors,
43
64
  forms = theme.forms,
44
65
  spacing = theme.spacing,
45
- typography = theme.typography;
66
+ typography = theme.typography,
67
+ themeName = theme.key;
68
+ const themeSpecificStyle = {
69
+ canvas: {
70
+ ...generateButtonThemeVars({
71
+ style: 'primary',
72
+ backgroundColor: theme['ic-brand-button--primary-bgd'],
73
+ borderColor: theme['ic-brand-button--primary-bgd'],
74
+ textColor: theme['ic-brand-button--primary-text'],
75
+ ghostTextColor: theme['ic-brand-button--primary-bgd']
76
+ }),
77
+ primaryGhostHoverBackground: (0, _alpha.alpha)(theme['ic-brand-button--primary-bgd'], 10)
78
+ },
79
+ 'canvas-high-contrast': {
80
+ secondaryBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderMedium,
81
+ primaryInverseBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderMedium
82
+ },
83
+ instructure: {
84
+ borderRadius: '999em',
85
+ smallPaddingTop: '0.5rem',
86
+ smallPaddingBottom: '0.4375rem',
87
+ mediumPaddingTop: '0.75rem',
88
+ mediumPaddingBottom: '0.75rem',
89
+ largePaddingTop: '1rem',
90
+ largePaddingBottom: '1rem',
91
+ largeFontSize: '1.125rem'
92
+ }
93
+ };
46
94
  const componentVariables = {
47
95
  transform: 'none',
48
96
  hoverTransform: 'none',
@@ -74,69 +122,53 @@ const generateComponentTheme = theme => {
74
122
  iconSizeLarge: '1.625rem',
75
123
  iconTextGap: spacing.xSmall,
76
124
  iconTextGapCondensed: spacing.xxSmall,
77
- primaryColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts = colors.contrasts) === null || _colors$contrasts === void 0 ? void 0 : _colors$contrasts.white1010,
78
- primaryBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts2 = colors.contrasts) === null || _colors$contrasts2 === void 0 ? void 0 : _colors$contrasts2.blue5782,
79
- primaryBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts3 = colors.contrasts) === null || _colors$contrasts3 === void 0 ? void 0 : _colors$contrasts3.blue4570,
80
- primaryHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts4 = colors.contrasts) === null || _colors$contrasts4 === void 0 ? void 0 : _colors$contrasts4.blue5782,
81
- primaryActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts5 = colors.contrasts) === null || _colors$contrasts5 === void 0 ? void 0 : _colors$contrasts5.blue5782,
82
- primaryActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts6 = colors.contrasts) === null || _colors$contrasts6 === void 0 ? void 0 : _colors$contrasts6.white1010}`,
83
- primaryGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts7 = colors.contrasts) === null || _colors$contrasts7 === void 0 ? void 0 : _colors$contrasts7.blue4570,
84
- primaryGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts8 = colors.contrasts) === null || _colors$contrasts8 === void 0 ? void 0 : _colors$contrasts8.blue4570,
85
- primaryGhostBackground: 'transparent',
86
- primaryGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts9 = colors.contrasts) === null || _colors$contrasts9 === void 0 ? void 0 : _colors$contrasts9.blue4570, 10),
87
- primaryGhostActiveBackground: 'transparent',
88
- primaryGhostActiveBoxShadow: `${activeShadow} ${(0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts10 = colors.contrasts) === null || _colors$contrasts10 === void 0 ? void 0 : _colors$contrasts10.blue1212, 28)}`,
89
- secondaryColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts11 = colors.contrasts) === null || _colors$contrasts11 === void 0 ? void 0 : _colors$contrasts11.grey125125,
90
- secondaryBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts12 = colors.contrasts) === null || _colors$contrasts12 === void 0 ? void 0 : _colors$contrasts12.grey1214,
91
- secondaryBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts13 = colors.contrasts) === null || _colors$contrasts13 === void 0 ? void 0 : _colors$contrasts13.grey1111,
92
- secondaryHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts14 = colors.contrasts) === null || _colors$contrasts14 === void 0 ? void 0 : _colors$contrasts14.grey1214,
93
- secondaryActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts15 = colors.contrasts) === null || _colors$contrasts15 === void 0 ? void 0 : _colors$contrasts15.grey1214,
94
- secondaryActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts16 = colors.contrasts) === null || _colors$contrasts16 === void 0 ? void 0 : _colors$contrasts16.white1010}`,
95
- secondaryGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts17 = colors.contrasts) === null || _colors$contrasts17 === void 0 ? void 0 : _colors$contrasts17.grey125125,
96
- secondaryGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts18 = colors.contrasts) === null || _colors$contrasts18 === void 0 ? void 0 : _colors$contrasts18.grey125125,
97
- secondaryGhostBackground: 'transparent',
98
- secondaryGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts19 = colors.contrasts) === null || _colors$contrasts19 === void 0 ? void 0 : _colors$contrasts19.grey125125, 10),
99
- secondaryGhostActiveBackground: 'transparent',
100
- secondaryGhostActiveBoxShadow: `${activeShadow} ${(0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts20 = colors.contrasts) === null || _colors$contrasts20 === void 0 ? void 0 : _colors$contrasts20.grey125125, 28)}`,
101
- successColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts21 = colors.contrasts) === null || _colors$contrasts21 === void 0 ? void 0 : _colors$contrasts21.white1010,
102
- successBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts22 = colors.contrasts) === null || _colors$contrasts22 === void 0 ? void 0 : _colors$contrasts22.green5782,
103
- successBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts23 = colors.contrasts) === null || _colors$contrasts23 === void 0 ? void 0 : _colors$contrasts23.green4570,
104
- successHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts24 = colors.contrasts) === null || _colors$contrasts24 === void 0 ? void 0 : _colors$contrasts24.green5782,
105
- successActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts25 = colors.contrasts) === null || _colors$contrasts25 === void 0 ? void 0 : _colors$contrasts25.green5782,
106
- successActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts26 = colors.contrasts) === null || _colors$contrasts26 === void 0 ? void 0 : _colors$contrasts26.white1010}`,
107
- successGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts27 = colors.contrasts) === null || _colors$contrasts27 === void 0 ? void 0 : _colors$contrasts27.green4570,
108
- successGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts28 = colors.contrasts) === null || _colors$contrasts28 === void 0 ? void 0 : _colors$contrasts28.green4570,
109
- successGhostBackground: 'transparent',
110
- successGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts29 = colors.contrasts) === null || _colors$contrasts29 === void 0 ? void 0 : _colors$contrasts29.green4570, 10),
111
- successGhostActiveBackground: 'transparent',
112
- successGhostActiveBoxShadow: `${activeShadow} ${(0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts30 = colors.contrasts) === null || _colors$contrasts30 === void 0 ? void 0 : _colors$contrasts30.green4570, 28)}`,
113
- dangerColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts31 = colors.contrasts) === null || _colors$contrasts31 === void 0 ? void 0 : _colors$contrasts31.white1010,
114
- dangerBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts32 = colors.contrasts) === null || _colors$contrasts32 === void 0 ? void 0 : _colors$contrasts32.red5782,
115
- dangerBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts33 = colors.contrasts) === null || _colors$contrasts33 === void 0 ? void 0 : _colors$contrasts33.red4570,
116
- dangerHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts34 = colors.contrasts) === null || _colors$contrasts34 === void 0 ? void 0 : _colors$contrasts34.red5782,
117
- dangerActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts35 = colors.contrasts) === null || _colors$contrasts35 === void 0 ? void 0 : _colors$contrasts35.red5782,
118
- dangerActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts36 = colors.contrasts) === null || _colors$contrasts36 === void 0 ? void 0 : _colors$contrasts36.white1010}`,
119
- dangerGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts37 = colors.contrasts) === null || _colors$contrasts37 === void 0 ? void 0 : _colors$contrasts37.red4570,
120
- dangerGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts38 = colors.contrasts) === null || _colors$contrasts38 === void 0 ? void 0 : _colors$contrasts38.red4570,
121
- dangerGhostBackground: 'transparent',
122
- dangerGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts39 = colors.contrasts) === null || _colors$contrasts39 === void 0 ? void 0 : _colors$contrasts39.red4570, 10),
123
- dangerGhostActiveBackground: 'transparent',
124
- dangerGhostActiveBoxShadow: `${activeShadow} ${(0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts40 = colors.contrasts) === null || _colors$contrasts40 === void 0 ? void 0 : _colors$contrasts40.red4570, 28)}`,
125
- primaryInverseColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts41 = colors.contrasts) === null || _colors$contrasts41 === void 0 ? void 0 : _colors$contrasts41.grey125125,
126
- primaryInverseBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts42 = colors.contrasts) === null || _colors$contrasts42 === void 0 ? void 0 : _colors$contrasts42.grey1214,
127
- primaryInverseBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts43 = colors.contrasts) === null || _colors$contrasts43 === void 0 ? void 0 : _colors$contrasts43.white1010,
128
- primaryInverseHoverBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts44 = colors.contrasts) === null || _colors$contrasts44 === void 0 ? void 0 : _colors$contrasts44.grey1111,
129
- primaryInverseActiveBackground: colors === null || colors === void 0 ? void 0 : (_colors$contrasts45 = colors.contrasts) === null || _colors$contrasts45 === void 0 ? void 0 : _colors$contrasts45.white1010,
130
- primaryInverseActiveBoxShadow: `${activeShadow} ${colors === null || colors === void 0 ? void 0 : (_colors$contrasts46 = colors.contrasts) === null || _colors$contrasts46 === void 0 ? void 0 : _colors$contrasts46.white1010}`,
131
- primaryInverseGhostColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts47 = colors.contrasts) === null || _colors$contrasts47 === void 0 ? void 0 : _colors$contrasts47.white1010,
132
- primaryInverseGhostBorderColor: colors === null || colors === void 0 ? void 0 : (_colors$contrasts48 = colors.contrasts) === null || _colors$contrasts48 === void 0 ? void 0 : _colors$contrasts48.white1010,
133
- primaryInverseGhostBackground: 'transparent',
134
- primaryInverseGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts49 = colors.contrasts) === null || _colors$contrasts49 === void 0 ? void 0 : _colors$contrasts49.white1010, 10),
135
- primaryInverseGhostActiveBackground: 'transparent',
136
- primaryInverseGhostActiveBoxShadow: `${activeShadow} ${(0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : (_colors$contrasts50 = colors.contrasts) === null || _colors$contrasts50 === void 0 ? void 0 : _colors$contrasts50.white1010, 28)}`
125
+ ...generateButtonThemeVars({
126
+ style: 'primary',
127
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundBrand,
128
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderBrand,
129
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
130
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textBrand
131
+ }),
132
+ ...generateButtonThemeVars({
133
+ style: 'secondary',
134
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundLight,
135
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderLight,
136
+ ghostBorderColor: colors === null || colors === void 0 ? void 0 : colors.borderDarkest,
137
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest,
138
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest
139
+ }),
140
+ ...generateButtonThemeVars({
141
+ style: 'success',
142
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundSuccess,
143
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderSuccess,
144
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
145
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textSuccess
146
+ }),
147
+ ...generateButtonThemeVars({
148
+ style: 'danger',
149
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundDanger,
150
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderDanger,
151
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textLightest,
152
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textDanger
153
+ }),
154
+ ...generateButtonThemeVars({
155
+ style: 'primaryInverse',
156
+ backgroundColor: colors === null || colors === void 0 ? void 0 : colors.backgroundLightest,
157
+ borderColor: colors === null || colors === void 0 ? void 0 : colors.borderLightest,
158
+ textColor: colors === null || colors === void 0 ? void 0 : colors.textDarkest,
159
+ ghostTextColor: colors === null || colors === void 0 ? void 0 : colors.textLightest
160
+ }),
161
+ // Overrides for primary-inverse to match what was previously the `light` button variant
162
+ primaryInverseBorderColor: (0, _darken.darken)(colors === null || colors === void 0 ? void 0 : colors.borderLight, 10),
163
+ primaryInverseHoverBackground: (0, _darken.darken)(colors === null || colors === void 0 ? void 0 : colors.backgroundLightest, 5),
164
+ primaryInverseActiveBackground: colors === null || colors === void 0 ? void 0 : colors.backgroundLightest,
165
+ primaryInverseActiveBoxShadow: `${activeShadow} ${(0, _darken.darken)(colors === null || colors === void 0 ? void 0 : colors.borderLightest, 25)}`,
166
+ // Overrides for ghost hover states to ensure correct color contrast for a11y
167
+ successGhostHoverBackground: (0, _alpha.alpha)(colors === null || colors === void 0 ? void 0 : colors.textSuccess, 1)
137
168
  };
138
169
  return {
139
- ...componentVariables
170
+ ...componentVariables,
171
+ ...themeSpecificStyle[themeName]
140
172
  };
141
173
  };
142
174
  var _default = exports.default = generateComponentTheme;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/ui-buttons",
3
- "version": "9.5.2-snapshot-7",
3
+ "version": "9.6.0",
4
4
  "description": "Accessible button components",
5
5
  "author": "Instructure, Inc. Engineering and Product Design",
6
6
  "module": "./es/index.js",
@@ -23,10 +23,10 @@
23
23
  },
24
24
  "license": "MIT",
25
25
  "devDependencies": {
26
- "@instructure/ui-axe-check": "9.5.2-snapshot-7",
27
- "@instructure/ui-babel-preset": "9.5.2-snapshot-7",
28
- "@instructure/ui-test-utils": "9.5.2-snapshot-7",
29
- "@instructure/ui-themes": "9.5.2-snapshot-7",
26
+ "@instructure/ui-axe-check": "9.6.0",
27
+ "@instructure/ui-babel-preset": "9.6.0",
28
+ "@instructure/ui-test-utils": "9.6.0",
29
+ "@instructure/ui-themes": "9.6.0",
30
30
  "@testing-library/jest-dom": "^6.4.6",
31
31
  "@testing-library/react": "^15.0.7",
32
32
  "@testing-library/user-event": "^14.5.2",
@@ -34,21 +34,21 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@babel/runtime": "^7.24.5",
37
- "@instructure/console": "9.5.2-snapshot-7",
38
- "@instructure/emotion": "9.5.2-snapshot-7",
39
- "@instructure/shared-types": "9.5.2-snapshot-7",
40
- "@instructure/ui-a11y-content": "9.5.2-snapshot-7",
41
- "@instructure/ui-a11y-utils": "9.5.2-snapshot-7",
42
- "@instructure/ui-color-utils": "9.5.2-snapshot-7",
43
- "@instructure/ui-dom-utils": "9.5.2-snapshot-7",
44
- "@instructure/ui-icons": "9.5.2-snapshot-7",
45
- "@instructure/ui-position": "9.5.2-snapshot-7",
46
- "@instructure/ui-prop-types": "9.5.2-snapshot-7",
47
- "@instructure/ui-react-utils": "9.5.2-snapshot-7",
48
- "@instructure/ui-testable": "9.5.2-snapshot-7",
49
- "@instructure/ui-tooltip": "9.5.2-snapshot-7",
50
- "@instructure/ui-utils": "9.5.2-snapshot-7",
51
- "@instructure/ui-view": "9.5.2-snapshot-7",
37
+ "@instructure/console": "9.6.0",
38
+ "@instructure/emotion": "9.6.0",
39
+ "@instructure/shared-types": "9.6.0",
40
+ "@instructure/ui-a11y-content": "9.6.0",
41
+ "@instructure/ui-a11y-utils": "9.6.0",
42
+ "@instructure/ui-color-utils": "9.6.0",
43
+ "@instructure/ui-dom-utils": "9.6.0",
44
+ "@instructure/ui-icons": "9.6.0",
45
+ "@instructure/ui-position": "9.6.0",
46
+ "@instructure/ui-prop-types": "9.6.0",
47
+ "@instructure/ui-react-utils": "9.6.0",
48
+ "@instructure/ui-testable": "9.6.0",
49
+ "@instructure/ui-tooltip": "9.6.0",
50
+ "@instructure/ui-utils": "9.6.0",
51
+ "@instructure/ui-view": "9.6.0",
52
52
  "keycode": "^2",
53
53
  "prop-types": "^15.8.1"
54
54
  },