@viasat/beam-styles 2.0.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 (76) hide show
  1. package/README.md +150 -0
  2. package/all.scss +3 -0
  3. package/components/accordion.module.scss +166 -0
  4. package/components/accordion.vars.scss +3 -0
  5. package/components/actionList.module.scss +211 -0
  6. package/components/actionList.vars.scss +6 -0
  7. package/components/alert.module.scss +158 -0
  8. package/components/aspectRatio.module.scss +21 -0
  9. package/components/avatar.module.scss +204 -0
  10. package/components/badge.module.scss +166 -0
  11. package/components/badgeDot.module.scss +90 -0
  12. package/components/box.module.scss +127 -0
  13. package/components/breadcrumbs.module.scss +149 -0
  14. package/components/button.module.scss +179 -0
  15. package/components/button.vars.scss +129 -0
  16. package/components/card.module.scss +232 -0
  17. package/components/checkbox.module.scss +123 -0
  18. package/components/chip.module.scss +173 -0
  19. package/components/chipsGroup.module.scss +13 -0
  20. package/components/closeButton.module.scss +52 -0
  21. package/components/combobox.module.scss +243 -0
  22. package/components/dialog.module.scss +199 -0
  23. package/components/divider.module.scss +255 -0
  24. package/components/emptyState.module.scss +61 -0
  25. package/components/fileUpload.module.scss +282 -0
  26. package/components/flag.module.scss +11 -0
  27. package/components/floatingui.module.scss +40 -0
  28. package/components/header.module.scss +123 -0
  29. package/components/helperText.module.scss +86 -0
  30. package/components/icon.module.scss +46 -0
  31. package/components/icon.vars.scss +31 -0
  32. package/components/index.scss +40 -0
  33. package/components/inputChoiceGroup.module.scss +46 -0
  34. package/components/label.module.scss +67 -0
  35. package/components/link.module.scss +118 -0
  36. package/components/list.module.scss +204 -0
  37. package/components/logo.module.scss +11 -0
  38. package/components/menu.module.scss +13 -0
  39. package/components/nativeSelect.module.scss +139 -0
  40. package/components/navigation.module.scss +156 -0
  41. package/components/pageHeader.module.scss +93 -0
  42. package/components/pageLayout.module.scss +38 -0
  43. package/components/pagination.module.scss +71 -0
  44. package/components/popover.module.scss +71 -0
  45. package/components/progressBar.module.scss +107 -0
  46. package/components/radioButton.module.scss +115 -0
  47. package/components/segmentedControl.module.scss +212 -0
  48. package/components/sideNav.module.scss +355 -0
  49. package/components/slider.module.scss +240 -0
  50. package/components/spinner.module.scss +261 -0
  51. package/components/spinner.vars.scss +85 -0
  52. package/components/stepper.module.scss +255 -0
  53. package/components/switch.module.scss +194 -0
  54. package/components/tabs.module.scss +412 -0
  55. package/components/text.module.scss +112 -0
  56. package/components/textArea.module.scss +183 -0
  57. package/components/textField.module.scss +162 -0
  58. package/components/toast.module.scss +235 -0
  59. package/components/toastContainer.module.scss +68 -0
  60. package/components/tooltip.module.scss +112 -0
  61. package/package.json +47 -0
  62. package/styles.css +11719 -0
  63. package/styles.css.map +1 -0
  64. package/styles.min.css +20 -0
  65. package/styles.min.css.map +1 -0
  66. package/utils/animation.scss +13 -0
  67. package/utils/constants.scss +1 -0
  68. package/utils/cursors.scss +35 -0
  69. package/utils/globals.scss +17 -0
  70. package/utils/helpers.scss +14 -0
  71. package/utils/index.scss +10 -0
  72. package/utils/mixins.scss +93 -0
  73. package/utils/spacing.scss +82 -0
  74. package/utils/stateLayer.module.scss +55 -0
  75. package/utils/stateLayerVars.scss +75 -0
  76. package/utils/tokens.scss +14 -0
@@ -0,0 +1,21 @@
1
+ @use '../utils/constants.scss';
2
+
3
+ $aspectRatioBaseClass: '#{constants.$prefix}aspect-ratio';
4
+
5
+ .#{$aspectRatioBaseClass} {
6
+ aspect-ratio: var(--#{constants.$prefix}comp-aspect-ratio-aspect-ratio);
7
+ width: 100%;
8
+ position: relative;
9
+ overflow: hidden;
10
+
11
+ & img,
12
+ video {
13
+ position: relative;
14
+ z-index: 0;
15
+ object-fit: cover;
16
+ object-position: center;
17
+ width: 100%;
18
+ height: 100%;
19
+ display: block;
20
+ }
21
+ }
@@ -0,0 +1,204 @@
1
+ @use 'sass:map';
2
+ @use '../utils/tokens.scss';
3
+ @use '../utils/constants.scss';
4
+ @use '../utils/mixins.scss' as mixins;
5
+
6
+ @import '../../../../tokens/src/lib/components/Avatar';
7
+
8
+ $avatarSizes: (
9
+ 'xs': (
10
+ 'height': tokens.$bm-comp-avatar-size-xs,
11
+ 'width': tokens.$bm-comp-avatar-size-xs,
12
+ 'icon': tokens.$bm-comp-avatar-size-icon-xs,
13
+ 'gap': tokens.$bm-sem-space-25,
14
+ 'font': tokens.$bm-comp-avatar-typo-xs,
15
+ ),
16
+ 'sm': (
17
+ 'height': tokens.$bm-comp-avatar-size-sm,
18
+ 'width': tokens.$bm-comp-avatar-size-sm,
19
+ 'icon': tokens.$bm-comp-avatar-size-icon-sm,
20
+ 'gap': tokens.$bm-sem-space-25,
21
+ 'font': tokens.$bm-comp-avatar-typo-sm,
22
+ ),
23
+ 'md': (
24
+ 'height': tokens.$bm-comp-avatar-size-md,
25
+ 'width': tokens.$bm-comp-avatar-size-md,
26
+ 'icon': tokens.$bm-comp-avatar-size-icon-md,
27
+ 'gap': tokens.$bm-sem-space-25,
28
+ 'font': tokens.$bm-comp-avatar-typo-md,
29
+ ),
30
+ 'lg': (
31
+ 'height': tokens.$bm-comp-avatar-size-lg,
32
+ 'width': tokens.$bm-comp-avatar-size-lg,
33
+ 'icon': tokens.$bm-comp-avatar-size-icon-lg,
34
+ 'gap': tokens.$bm-sem-space-50,
35
+ 'font': tokens.$bm-comp-avatar-typo-lg,
36
+ ),
37
+ 'xl': (
38
+ 'height': tokens.$bm-comp-avatar-size-xl,
39
+ 'width': tokens.$bm-comp-avatar-size-xl,
40
+ 'icon': tokens.$bm-comp-avatar-size-icon-xl,
41
+ 'gap': tokens.$bm-sem-space-50,
42
+ 'font': tokens.$bm-comp-avatar-typo-xl,
43
+ ),
44
+ );
45
+
46
+ $avatarShapes: (
47
+ 'circle': (
48
+ 'border-radius': tokens.$bm-sem-radius-round,
49
+ ),
50
+ 'square': (
51
+ 'border-radius': tokens.$bm-sem-radius-sm,
52
+ ),
53
+ );
54
+
55
+ $avatarAppearances: (
56
+ 'neutral': (
57
+ 'background': tokens.$bm-comp-avatar-color-neutral-bg,
58
+ 'color': tokens.$bm-comp-avatar-color-neutral-fg,
59
+ ),
60
+ 'accent': (
61
+ 'background': tokens.$bm-comp-avatar-color-accent-bg,
62
+ 'color': tokens.$bm-comp-avatar-color-accent-fg,
63
+ ),
64
+ 'overflow': (
65
+ 'background': tokens.$bm-comp-avatar-color-overflow-bg,
66
+ 'color': tokens.$bm-comp-avatar-color-overflow-fg,
67
+ ),
68
+ );
69
+
70
+ $avatarBaseClass: '#{constants.$prefix}avatar';
71
+
72
+ .#{$avatarBaseClass} {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ overflow: hidden;
77
+ position: relative;
78
+
79
+ &__image {
80
+ display: flex; // NOTE: For web-components
81
+ height: 100%;
82
+ width: 100%;
83
+ }
84
+
85
+ &--interactive {
86
+ cursor: pointer;
87
+ }
88
+
89
+ &--disabled {
90
+ opacity: var(--bm-sem-opacity-disabled);
91
+ user-select: none;
92
+ }
93
+
94
+ &--hidden {
95
+ display: none;
96
+ }
97
+
98
+ &--with-border {
99
+ flex: 0 0 auto;
100
+ outline: tokens.$bm-sem-border-width-md solid tokens.$bm-comp-avatar-color-border;
101
+ }
102
+
103
+ &--content {
104
+ z-index: 1;
105
+ position: relative; // NOTE: For Webcomponent z-index doesn't work without this
106
+ }
107
+
108
+ &:focus-visible {
109
+ @include mixins.simulated-inset-outline();
110
+ }
111
+
112
+ // Generate size modifiers
113
+ // ex. .avatar--sm
114
+ @each $sizeName, $sizeStyles in $avatarSizes {
115
+ &--#{$sizeName} {
116
+ height: map.get($sizeStyles, 'height');
117
+ width: map.get($sizeStyles, 'width');
118
+ }
119
+
120
+ &__icon--#{$sizeName} {
121
+ display: flex; // NOTE: Without this ONLY xs icon displays wrong
122
+ color: tokens.$bm-comp-avatar-color-neutral-fg;
123
+ width: map.get($sizeStyles, 'icon');
124
+ height: map.get($sizeStyles, 'icon');
125
+ }
126
+
127
+ &__text--#{$sizeName} {
128
+ cursor: default;
129
+ font: map.get($sizeStyles, 'font');
130
+ }
131
+ }
132
+
133
+ // Generate shape modifiers
134
+ // ex. .avatar-circle
135
+ @each $shapeName, $shapeStyles in $avatarShapes {
136
+ &--#{$shapeName} {
137
+ border-radius: map.get($shapeStyles, 'border-radius');
138
+ }
139
+ }
140
+
141
+ // Generate shape modifiers
142
+ // ex. .avatar-neutral
143
+ @each $appearanceName, $appearanceStyles in $avatarAppearances {
144
+ &--#{$appearanceName} {
145
+ background: map.get($appearanceStyles, 'background');
146
+ color: map.get($appearanceStyles, 'color');
147
+ }
148
+ }
149
+ }
150
+
151
+ $avatarGroupBaseClass: '#{constants.$prefix}avatar-group';
152
+ .#{$avatarGroupBaseClass} {
153
+ display: flex;
154
+ row-gap: tokens.$bm-sem-space-50;
155
+
156
+ > *,
157
+ bm-avatar {
158
+ flex: 0 0 auto;
159
+ outline: tokens.$bm-sem-border-width-md solid tokens.$bm-comp-avatar-color-border;
160
+ }
161
+
162
+ &--wrapping {
163
+ flex-wrap: wrap;
164
+ }
165
+
166
+ @each $sizeName, $sizeStyles in $avatarSizes {
167
+ &--stacked-#{$sizeName} {
168
+ padding-inline-start: calc(map.get($sizeStyles, 'gap'));
169
+ ::slotted(*) {
170
+ margin-inline-start: calc(map.get($sizeStyles, 'gap') * -1);
171
+ }
172
+ > *,
173
+ bm-avatar {
174
+ margin-inline-start: calc(map.get($sizeStyles, 'gap') * -1);
175
+ }
176
+ }
177
+ }
178
+
179
+ @each $sizeName, $sizeStyles in $avatarSizes {
180
+ &--spaced-#{$sizeName} {
181
+ gap: map.get($sizeStyles, 'gap');
182
+ }
183
+ }
184
+
185
+ @each $sizeName, $sizeStyles in $avatarSizes {
186
+ &--#{$sizeName} {
187
+ ::slotted(*) {
188
+ height: map.get($sizeStyles, 'height');
189
+ }
190
+ }
191
+ }
192
+
193
+ @each $shapeName, $shapeStyles in $avatarShapes {
194
+ &--#{$shapeName} {
195
+ > *,
196
+ bm-avatar {
197
+ border-radius: map.get($shapeStyles, 'border-radius');
198
+ }
199
+ ::slotted(*) {
200
+ border-radius: map.get($shapeStyles, 'border-radius');
201
+ }
202
+ }
203
+ }
204
+ }
@@ -0,0 +1,166 @@
1
+ @use 'sass:map';
2
+ @use '../utils/tokens.scss';
3
+ @use '../utils/constants.scss';
4
+
5
+ @import '../../../../tokens/src/lib/components/Badge';
6
+
7
+ $badgeSizes: (
8
+ 'sm': (
9
+ 'height': tokens.$bm-comp-badge-size-sm-height,
10
+ 'font': tokens.$bm-comp-badge-typo-sm,
11
+ ),
12
+ 'md': (
13
+ 'height': tokens.$bm-comp-badge-size-md-height,
14
+ 'font': tokens.$bm-comp-badge-typo-md,
15
+ ),
16
+ );
17
+
18
+ $badgeAppearanceAndEmphasis: (
19
+ 'positive': (
20
+ 'strong': (
21
+ 'background-color': tokens.$bm-comp-badge-color-positive-strong-bg,
22
+ 'font-color': tokens.$bm-comp-badge-color-positive-strong-fg,
23
+ 'border': tokens.$bm-comp-badge-border-width solid
24
+ tokens.$bm-comp-badge-color-positive-strong-border,
25
+ ),
26
+ 'medium': (
27
+ 'background-color': tokens.$bm-comp-badge-color-positive-medium-bg,
28
+ 'font-color': tokens.$bm-comp-badge-color-positive-medium-fg,
29
+ 'border': tokens.$bm-comp-badge-border-width solid
30
+ tokens.$bm-comp-badge-color-positive-medium-border,
31
+ ),
32
+ 'subtle': (
33
+ 'background-color': tokens.$bm-comp-badge-color-positive-subtle-bg,
34
+ 'font-color': tokens.$bm-comp-badge-color-positive-subtle-fg,
35
+ 'border': tokens.$bm-comp-badge-border-width solid
36
+ tokens.$bm-comp-badge-color-positive-subtle-border,
37
+ ),
38
+ ),
39
+ 'warning': (
40
+ 'strong': (
41
+ 'background-color': tokens.$bm-comp-badge-color-warning-strong-bg,
42
+ 'font-color': tokens.$bm-comp-badge-color-warning-strong-fg,
43
+ 'border': tokens.$bm-comp-badge-border-width solid
44
+ tokens.$bm-comp-badge-color-warning-strong-border,
45
+ ),
46
+ 'medium': (
47
+ 'background-color': tokens.$bm-comp-badge-color-warning-medium-bg,
48
+ 'font-color': tokens.$bm-comp-badge-color-warning-medium-fg,
49
+ 'border': tokens.$bm-comp-badge-border-width solid
50
+ tokens.$bm-comp-badge-color-warning-medium-border,
51
+ ),
52
+ 'subtle': (
53
+ 'background-color': tokens.$bm-comp-badge-color-warning-subtle-bg,
54
+ 'font-color': tokens.$bm-comp-badge-color-warning-subtle-fg,
55
+ 'border': tokens.$bm-comp-badge-border-width solid
56
+ tokens.$bm-comp-badge-color-warning-subtle-border,
57
+ ),
58
+ ),
59
+ 'negative': (
60
+ 'strong': (
61
+ 'background-color': tokens.$bm-comp-badge-color-negative-strong-bg,
62
+ 'font-color': tokens.$bm-comp-badge-color-negative-strong-fg,
63
+ 'border': tokens.$bm-comp-badge-border-width solid
64
+ tokens.$bm-comp-badge-color-negative-strong-border,
65
+ ),
66
+ 'medium': (
67
+ 'background-color': tokens.$bm-comp-badge-color-negative-medium-bg,
68
+ 'font-color': tokens.$bm-comp-badge-color-negative-medium-fg,
69
+ 'border': tokens.$bm-comp-badge-border-width solid
70
+ tokens.$bm-comp-badge-color-negative-medium-border,
71
+ ),
72
+ 'subtle': (
73
+ 'background-color': tokens.$bm-comp-badge-color-negative-subtle-bg,
74
+ 'font-color': tokens.$bm-comp-badge-color-negative-subtle-fg,
75
+ 'border': tokens.$bm-comp-badge-border-width solid
76
+ tokens.$bm-comp-badge-color-negative-subtle-border,
77
+ ),
78
+ ),
79
+ 'infoPrimary': (
80
+ 'strong': (
81
+ 'background-color': tokens.$bm-comp-badge-color-info-primary-strong-bg,
82
+ 'font-color': tokens.$bm-comp-badge-color-info-primary-strong-fg,
83
+ 'border': tokens.$bm-comp-badge-border-width solid
84
+ tokens.$bm-comp-badge-color-info-primary-strong-border,
85
+ ),
86
+ 'medium': (
87
+ 'background-color': tokens.$bm-comp-badge-color-info-primary-medium-bg,
88
+ 'font-color': tokens.$bm-comp-badge-color-info-primary-medium-fg,
89
+ 'border': tokens.$bm-comp-badge-border-width solid
90
+ tokens.$bm-comp-badge-color-info-primary-medium-border,
91
+ ),
92
+ 'subtle': (
93
+ 'background-color': tokens.$bm-comp-badge-color-info-primary-subtle-bg,
94
+ 'font-color': tokens.$bm-comp-badge-color-info-primary-subtle-fg,
95
+ 'border': tokens.$bm-comp-badge-border-width solid
96
+ tokens.$bm-comp-badge-color-info-primary-subtle-border,
97
+ ),
98
+ ),
99
+ 'infoSecondary': (
100
+ 'strong': (
101
+ 'background-color': tokens.$bm-comp-badge-color-info-secondary-strong-bg,
102
+ 'font-color': tokens.$bm-comp-badge-color-info-secondary-strong-fg,
103
+ 'border': tokens.$bm-comp-badge-border-width solid
104
+ tokens.$bm-comp-badge-color-info-secondary-strong-border,
105
+ ),
106
+ 'medium': (
107
+ 'background-color': tokens.$bm-comp-badge-color-info-secondary-medium-bg,
108
+ 'font-color': tokens.$bm-comp-badge-color-info-secondary-medium-fg,
109
+ 'border': tokens.$bm-comp-badge-border-width solid
110
+ tokens.$bm-comp-badge-color-info-secondary-medium-border,
111
+ ),
112
+ 'subtle': (
113
+ 'background-color': tokens.$bm-comp-badge-color-info-secondary-subtle-bg,
114
+ 'font-color': tokens.$bm-comp-badge-color-info-secondary-subtle-fg,
115
+ 'border': tokens.$bm-comp-badge-border-width solid
116
+ tokens.$bm-comp-badge-color-info-secondary-subtle-border,
117
+ ),
118
+ ),
119
+ );
120
+
121
+ $badgeBaseClass: '#{constants.$prefix}badge';
122
+
123
+ .#{$badgeBaseClass} {
124
+ display: inline-flex;
125
+ flex-direction: row;
126
+ align-items: center;
127
+ justify-content: center;
128
+ border-radius: tokens.$bm-comp-badge-radius;
129
+ padding-left: tokens.$bm-comp-badge-space-x;
130
+ padding-right: tokens.$bm-comp-badge-space-x;
131
+ max-width: -moz-fit-content;
132
+ width: fit-content;
133
+ gap: tokens.$bm-comp-badge-space-gap;
134
+ box-shadow: tokens.$bm-comp-badge-shadow;
135
+
136
+ &__icon {
137
+ width: tokens.$bm-comp-badge-size-icon;
138
+ height: tokens.$bm-comp-badge-size-icon;
139
+ transform: translate3d(0, 0, 0);
140
+ }
141
+
142
+ &__label {
143
+ text-wrap: nowrap;
144
+ }
145
+
146
+ // Generate sizes modifiers
147
+ // ex. .badge--sm
148
+ @each $sizeName, $sizeStyles in $badgeSizes {
149
+ &--#{$sizeName} {
150
+ height: map.get($sizeStyles, 'height');
151
+ font: map.get($sizeStyles, 'font');
152
+ }
153
+ }
154
+
155
+ // Generate badge appearance & emphasis mix classes with mapping to values (which are css vars under tokens)
156
+ // ex. .badge--info-primary.badge--strong
157
+ @each $appearance-name, $emphasis in $badgeAppearanceAndEmphasis {
158
+ @each $emphasis-name, $styles in $emphasis {
159
+ &--#{$appearance-name}-#{$emphasis-name} {
160
+ background-color: map.get($styles, 'background-color');
161
+ color: map.get($styles, 'font-color');
162
+ border: map.get($styles, 'border');
163
+ }
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,90 @@
1
+ @use 'sass:map';
2
+ @use '../utils/constants.scss';
3
+ @use '../utils/tokens.scss' as tokens;
4
+
5
+ @import '../../../../tokens/src/lib/components/BadgeDot';
6
+
7
+ $badgeDotBaseClass: '#{constants.$prefix}badge-dot';
8
+
9
+ $appearances: (
10
+ infoPrimary: (
11
+ bg: tokens.$bm-comp-badge-dot-color-info-primary-bg,
12
+ text: tokens.$bm-comp-badge-dot-color-info-primary-text,
13
+ borderCol: tokens.$bm-comp-badge-dot-color-info-primary-border,
14
+ ),
15
+ infoSecondary: (
16
+ bg: tokens.$bm-comp-badge-dot-color-info-secondary-bg,
17
+ text: tokens.$bm-comp-badge-dot-color-info-secondary-text,
18
+ borderCol: tokens.$bm-comp-badge-dot-color-info-secondary-border,
19
+ ),
20
+ positive: (
21
+ bg: tokens.$bm-comp-badge-dot-color-positive-bg,
22
+ text: tokens.$bm-comp-badge-dot-color-positive-text,
23
+ borderCol: tokens.$bm-comp-badge-dot-color-positive-border,
24
+ ),
25
+ warning: (
26
+ bg: tokens.$bm-comp-badge-dot-color-warning-bg,
27
+ text: tokens.$bm-comp-badge-dot-color-warning-text,
28
+ borderCol: tokens.$bm-comp-badge-dot-color-warning-border,
29
+ ),
30
+ negative: (
31
+ bg: tokens.$bm-comp-badge-dot-color-negative-bg,
32
+ text: tokens.$bm-comp-badge-dot-color-negative-text,
33
+ borderCol: tokens.$bm-comp-badge-dot-color-negative-border,
34
+ ),
35
+ );
36
+
37
+ $emphasisLevels: (
38
+ subtle: tokens.$bm-comp-badge-dot-typo-subtle,
39
+ strong: tokens.$bm-comp-badge-dot-typo-strong,
40
+ );
41
+
42
+ .#{$badgeDotBaseClass} {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ gap: tokens.$bm-comp-badge-dot-space-gap;
46
+ font: tokens.$bm-comp-badge-dot-typo-strong;
47
+ min-width: min-content;
48
+ color: map.get(map.get($appearances, infoPrimary), text);
49
+
50
+ &:before {
51
+ content: ' ';
52
+ flex-shrink: 0;
53
+ min-width: tokens.$bm-comp-badge-dot-size;
54
+ width: tokens.$bm-comp-badge-dot-size;
55
+ height: tokens.$bm-comp-badge-dot-size;
56
+ border-radius: tokens.$bm-comp-badge-dot-radius;
57
+ border-width: tokens.$bm-comp-badge-dot-border-width;
58
+ background-color: var(
59
+ --bm-comp-badge-dot-color,
60
+ map.get(map.get($appearances, infoPrimary), bg)
61
+ );
62
+ border-color: var(
63
+ --bm-comp-badge-dot-color,
64
+ map.get(map.get($appearances, infoPrimary), borderCol)
65
+ );
66
+ border-style: solid;
67
+ box-sizing: border-box;
68
+ }
69
+
70
+ &:dir(rtl):before {
71
+ flex-direction: row-reverse;
72
+ }
73
+
74
+ @each $appearance, $values in $appearances {
75
+ &--#{$appearance} {
76
+ &:before {
77
+ background-color: var(--bm-comp-badge-dot-color, map.get($values, bg));
78
+ border-color: var(--bm-comp-badge-dot-color, map.get($values, borderCol));
79
+ }
80
+
81
+ color: map.get($values, text);
82
+ }
83
+ }
84
+
85
+ @each $emphasis, $emphasisValue in $emphasisLevels {
86
+ &--#{$emphasis} {
87
+ font: $emphasisValue;
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,127 @@
1
+ @use 'sass:map';
2
+ @use '../utils/constants.scss';
3
+ @use '../utils/mixins.scss' as mixins;
4
+ @use '../utils/tokens.scss' as tokens;
5
+
6
+ $boxBaseClass: '#{constants.$prefix}box';
7
+
8
+ $backgroundColors: (
9
+ 'surface-00': tokens.$bm-sem-color-surface-00,
10
+ 'surface-00-alt': tokens.$bm-sem-color-surface-00-alt,
11
+ 'surface-01': tokens.$bm-sem-color-surface-01,
12
+ 'surface-02': tokens.$bm-sem-color-surface-02,
13
+ 'surface-03': tokens.$bm-sem-color-surface-03,
14
+ 'surface-positive': tokens.$bm-sem-color-surface-positive,
15
+ 'surface-warning': tokens.$bm-sem-color-surface-warning,
16
+ 'surface-negative': tokens.$bm-sem-color-surface-negative,
17
+ 'surface-info-primary': tokens.$bm-sem-color-surface-info-primary,
18
+ 'surface-info-secondary': tokens.$bm-sem-color-surface-info-secondary,
19
+ 'surface-positive-strong': tokens.$bm-sem-color-surface-positive-strong,
20
+ 'surface-warning-strong': tokens.$bm-sem-color-surface-warning-strong,
21
+ 'surface-negative-strong': tokens.$bm-sem-color-surface-negative-strong,
22
+ 'surface-info-primary-strong': tokens.$bm-sem-color-surface-info-primary-strong,
23
+ 'surface-info-secondary-strong': tokens.$bm-sem-color-surface-info-secondary-strong,
24
+ 'surface-selected': tokens.$bm-sem-color-surface-selected,
25
+ 'surface-selected-subtle': tokens.$bm-sem-color-surface-selected-subtle,
26
+ 'surface-highlight': tokens.$bm-sem-color-surface-highlight,
27
+ 'surface-transparent': tokens.$bm-sem-color-surface-transparent,
28
+ 'surface-inverse': tokens.$bm-sem-color-surface-inverse,
29
+ 'surface-expressive': tokens.$bm-expressive-color-bg,
30
+ 'surface-expressive-stronger': tokens.$bm-expressive-color-bg-stronger,
31
+ 'surface-expressive-inverse': tokens.$bm-expressive-color-inverse-bg,
32
+ );
33
+
34
+ $borderColors: (
35
+ 'border-00': tokens.$bm-sem-color-border-00,
36
+ 'border-00-alt': tokens.$bm-sem-color-border-00-alt,
37
+ 'border-01': tokens.$bm-sem-color-border-01,
38
+ 'border-02': tokens.$bm-sem-color-border-02,
39
+ 'border-03': tokens.$bm-sem-color-border-03,
40
+ 'border-strong': tokens.$bm-sem-color-border-strong,
41
+ 'border-positive': tokens.$bm-sem-color-border-positive,
42
+ 'border-warning': tokens.$bm-sem-color-border-warning,
43
+ 'border-negative': tokens.$bm-sem-color-border-negative,
44
+ 'border-info-primary': tokens.$bm-sem-color-border-info-primary,
45
+ 'border-info-secondary': tokens.$bm-sem-color-border-info-secondary,
46
+ 'border-positive-strong': tokens.$bm-sem-color-border-positive-strong,
47
+ 'border-warning-strong': tokens.$bm-sem-color-border-warning-strong,
48
+ 'border-negative-strong': tokens.$bm-sem-color-border-negative-strong,
49
+ 'border-info-primary-strong': tokens.$bm-sem-color-border-info-primary-strong,
50
+ 'border-info-secondary-strong': tokens.$bm-sem-color-border-info-secondary-strong,
51
+ 'border-selected': tokens.$bm-sem-color-border-selected,
52
+ 'border-focus': tokens.$bm-sem-color-border-focus,
53
+ 'border-inverse': tokens.$bm-sem-color-border-inverse,
54
+ 'border-expressive': tokens.$bm-expressive-color-border,
55
+ 'border-expressive-stronger': tokens.$bm-expressive-color-border-stronger,
56
+ 'border-transparent': tokens.$bm-sem-color-border-transparent,
57
+ );
58
+
59
+ $borderWidths: (
60
+ 'border-width-none': tokens.$bm-sem-border-width-none,
61
+ 'border-width-md': tokens.$bm-sem-border-width-md,
62
+ 'border-width-lg': tokens.$bm-sem-border-width-lg,
63
+ 'border-width-xl': tokens.$bm-sem-border-width-xl,
64
+ 'border-width-divider': tokens.$bm-sem-border-width-md,
65
+ );
66
+
67
+ $shadows: (
68
+ 'shadow-none': tokens.$bm-sem-shadow-none,
69
+ 'shadow-sm': tokens.$bm-sem-shadow-sm,
70
+ 'shadow-md': tokens.$bm-sem-shadow-md,
71
+ 'shadow-lg': tokens.$bm-sem-shadow-lg,
72
+ 'shadow-overlay': tokens.$bm-sem-shadow-overlay,
73
+ );
74
+
75
+ $borderRadius: (
76
+ 'radius-none': tokens.$bm-sem-radius-none,
77
+ 'radius-xs': tokens.$bm-sem-radius-xs,
78
+ 'radius-sm': tokens.$bm-sem-radius-sm,
79
+ 'radius-md': tokens.$bm-sem-radius-md,
80
+ 'radius-lg': tokens.$bm-sem-radius-lg,
81
+ 'radius-round': tokens.$bm-sem-radius-round,
82
+ );
83
+
84
+ .#{$boxBaseClass} {
85
+ @each $borderWidthName, $borderWidthValue in $borderWidths {
86
+ &--#{$borderWidthName} {
87
+ border-width: $borderWidthValue;
88
+ border-style: solid;
89
+
90
+ @if $borderWidthName == 'border-width-divider' {
91
+ border-top-width: 0;
92
+ border-right-width: 0;
93
+ border-left-width: 0;
94
+ }
95
+ }
96
+ }
97
+
98
+ @each $backgroundColorName, $backgroundColorValue in $backgroundColors {
99
+ &--#{$backgroundColorName} {
100
+ background: $backgroundColorValue;
101
+ }
102
+ }
103
+
104
+ @each $borderColorName, $borderColorValue in $borderColors {
105
+ &--#{$borderColorName} {
106
+ border-color: $borderColorValue;
107
+ border-style: solid;
108
+
109
+ // Provide default value when borderWidth props is not set
110
+ &:not([class*='border-width-']) {
111
+ border-width: tokens.$bm-sem-border-width-md;
112
+ }
113
+ }
114
+ }
115
+
116
+ @each $borderRadiusName, $borderRadiusValue in $borderRadius {
117
+ &--#{$borderRadiusName} {
118
+ border-radius: $borderRadiusValue;
119
+ }
120
+ }
121
+
122
+ @each $shadowName, $shadowValue in $shadows {
123
+ &--#{$shadowName} {
124
+ box-shadow: $shadowValue;
125
+ }
126
+ }
127
+ }