@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,199 @@
1
+ @use '../utils/constants.scss';
2
+ @use '../utils/tokens.scss' as tokens;
3
+ @use './icon.vars.scss' as iconVars;
4
+
5
+ @import '../../../../tokens/src/lib/components/Dialog';
6
+
7
+ $dialogBaseClass: '#{constants.$prefix}dialog';
8
+
9
+ $sizes: (
10
+ 'sm': tokens.$bm-comp-dialog-size-sm,
11
+ 'md': tokens.$bm-comp-dialog-size-md,
12
+ 'lg': tokens.$bm-comp-dialog-size-lg,
13
+ 'xl': tokens.$bm-comp-dialog-size-xl,
14
+ );
15
+
16
+ $appearances: (
17
+ 'information': tokens.$bm-comp-dialog-color-icon-info,
18
+ 'positive': tokens.$bm-comp-dialog-color-icon-positive,
19
+ 'negative': tokens.$bm-comp-dialog-color-icon-negative,
20
+ 'warning': tokens.$bm-comp-dialog-color-icon-warning,
21
+ );
22
+
23
+ .#{$dialogBaseClass} {
24
+ position: relative;
25
+ outline: none;
26
+ background: tokens.$bm-comp-dialog-color-bg;
27
+ border-color: tokens.$bm-comp-dialog-color-border;
28
+ border-radius: tokens.$bm-comp-dialog-radius-default;
29
+ border-width: tokens.$bm-comp-dialog-border-width;
30
+ box-shadow: tokens.$bm-comp-dialog-shadow;
31
+
32
+ display: flex;
33
+ flex-direction: column;
34
+ max-height: 100%;
35
+
36
+ @each $size, $sizeValue in $sizes {
37
+ &--#{$size} {
38
+ width: $sizeValue;
39
+ max-width: $sizeValue;
40
+ }
41
+ }
42
+ }
43
+
44
+ .#{$dialogBaseClass}__header {
45
+ font: tokens.$bm-comp-dialog-typo-heading;
46
+ color: tokens.$bm-comp-dialog-color-heading;
47
+ padding-block: tokens.$bm-comp-dialog-space-heading-top 0;
48
+ padding-inline: tokens.$bm-comp-dialog-space-x;
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: tokens.$bm-comp-dialog-space-heading-gap-y;
52
+ flex-shrink: 0;
53
+
54
+ &__row {
55
+ display: flex;
56
+ gap: tokens.$bm-comp-dialog-space-heading-gap-x;
57
+ justify-content: flex-start;
58
+ width: 100%;
59
+ }
60
+
61
+ &__icon {
62
+ height: 1lh;
63
+ color: tokens.$bm-comp-dialog-color-icon;
64
+
65
+ display: flex;
66
+ align-items: center;
67
+
68
+ @each $appearance, $color in $appearances {
69
+ &--#{$appearance} {
70
+ color: $color;
71
+ #{iconVars.$iconColor}: $color;
72
+ }
73
+ }
74
+ }
75
+
76
+ &__icon svg {
77
+ height: tokens.$bm-comp-dialog-size-icon;
78
+ width: tokens.$bm-comp-dialog-size-icon;
79
+
80
+ #{iconVars.$iconSize}: tokens.$bm-comp-dialog-size-icon;
81
+ #{iconVars.$iconColor}: tokens.$bm-comp-dialog-color-icon;
82
+ }
83
+
84
+ &__heading {
85
+ margin: 0;
86
+ font: inherit;
87
+ }
88
+
89
+ &__close-trigger {
90
+ height: 1lh;
91
+ width: 1lh;
92
+ margin-left: auto;
93
+ }
94
+
95
+ &__description {
96
+ margin: 0;
97
+ }
98
+
99
+ &__description,
100
+ &__children {
101
+ font: tokens.$bm-comp-dialog-typo-description;
102
+ color: tokens.$bm-comp-dialog-color-description;
103
+ }
104
+
105
+ &__divider {
106
+ border: none;
107
+ border-top: tokens.$bm-sem-border-width-md solid tokens.$bm-sem-color-border-01;
108
+
109
+ margin-block: tokens.$bm-comp-dialog-size-divider-wrapper 0;
110
+ margin-inline: calc(tokens.$bm-comp-dialog-space-x * -1);
111
+ }
112
+ }
113
+
114
+ .#{$dialogBaseClass}__body {
115
+ font: tokens.$bm-comp-dialog-typo-body;
116
+ color: tokens.$bm-comp-dialog-color-body;
117
+ padding-block: tokens.$bm-comp-dialog-space-body-y;
118
+ padding-inline: tokens.$bm-comp-dialog-space-x;
119
+
120
+ display: flex;
121
+ flex-direction: column;
122
+ gap: tokens.$bm-comp-dialog-space-body-gap;
123
+
124
+ overflow: auto;
125
+ overscroll-behavior: contain;
126
+
127
+ &:focus {
128
+ outline: var(--bm-sem-border-width-focus) auto var(--bm-sem-color-border-focus);
129
+ }
130
+ }
131
+
132
+ .#{$dialogBaseClass}__footer {
133
+ flex-shrink: 0;
134
+ padding-inline: tokens.$bm-comp-dialog-space-x;
135
+
136
+ &__divider {
137
+ border-top: tokens.$bm-sem-border-width-md solid tokens.$bm-sem-color-border-01;
138
+ display: block;
139
+ }
140
+
141
+ padding-block: tokens.$bm-comp-dialog-space-footer-y;
142
+ display: flex;
143
+ align-items: center;
144
+ flex-direction: row-reverse;
145
+ justify-content: space-between;
146
+ gap: tokens.$bm-comp-dialog-space-footer-gap;
147
+
148
+ &__actions {
149
+ display: flex;
150
+ flex-direction: row-reverse;
151
+ align-items: center;
152
+ gap: tokens.$bm-comp-dialog-space-footer-gap;
153
+ }
154
+
155
+ &__tertiaryActions {
156
+ display: flex;
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Mobile Styles
162
+ */
163
+ .#{$dialogBaseClass} {
164
+ @media all and (max-width: 512px) {
165
+ &__header,
166
+ &__body,
167
+ &__footer {
168
+ padding-inline: tokens.$bm-comp-dialog-space-sm-screen-x;
169
+ }
170
+
171
+ &__header {
172
+ &__divider {
173
+ margin-inline: calc(tokens.$bm-comp-dialog-space-sm-screen-x * -1);
174
+ }
175
+ }
176
+
177
+ &__footer {
178
+ flex-direction: column;
179
+ gap: tokens.$bm-comp-dialog-space-footer-sm-screen-gap;
180
+
181
+ &__actions,
182
+ &__tertiaryActions {
183
+ width: 100%;
184
+ align-self: stretch;
185
+ justify-content: center;
186
+
187
+ > *,
188
+ > [class*='bm-'] {
189
+ width: 100%;
190
+ }
191
+ }
192
+
193
+ &__actions {
194
+ flex-direction: column;
195
+ gap: tokens.$bm-comp-dialog-space-footer-sm-screen-gap;
196
+ }
197
+ }
198
+ }
199
+ }
@@ -0,0 +1,255 @@
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
+ @import '../../../../tokens/src/lib/components/Divider';
7
+
8
+ $dividerBaseClass: '#{constants.$prefix}divider';
9
+ $divider-length: var(--#{constants.$prefix}comp-divider-length, 100%);
10
+
11
+ $borderColors: (
12
+ 'border-00': tokens.$bm-sem-color-border-00,
13
+ 'border-00-alt': tokens.$bm-sem-color-border-00-alt,
14
+ 'border-01': tokens.$bm-sem-color-border-01,
15
+ 'border-02': tokens.$bm-sem-color-border-02,
16
+ 'border-03': tokens.$bm-sem-color-border-03,
17
+ 'border-strong': tokens.$bm-sem-color-border-strong,
18
+ 'border-positive': tokens.$bm-sem-color-border-positive,
19
+ 'border-warning': tokens.$bm-sem-color-border-warning,
20
+ 'border-negative': tokens.$bm-sem-color-border-negative,
21
+ 'border-info-primary': tokens.$bm-sem-color-border-info-primary,
22
+ 'border-info-secondary': tokens.$bm-sem-color-border-info-secondary,
23
+ 'border-positive-strong': tokens.$bm-sem-color-border-positive-strong,
24
+ 'border-warning-strong': tokens.$bm-sem-color-border-warning-strong,
25
+ 'border-negative-strong': tokens.$bm-sem-color-border-negative-strong,
26
+ 'border-info-primary-strong': tokens.$bm-sem-color-border-info-primary-strong,
27
+ 'border-info-secondary-strong': tokens.$bm-sem-color-border-info-secondary-strong,
28
+ 'border-inverse': tokens.$bm-sem-color-border-inverse,
29
+ );
30
+
31
+ $borderWidths: (
32
+ 'md': tokens.$bm-sem-border-width-md,
33
+ 'lg': tokens.$bm-sem-border-width-lg,
34
+ 'xl': tokens.$bm-sem-border-width-xl,
35
+ );
36
+
37
+ :host([orientation='vertical']),
38
+ .bm-divider--vertical {
39
+ height: $divider-length;
40
+ width: auto;
41
+ }
42
+
43
+ :host,
44
+ .bm-divider {
45
+ width: $divider-length;
46
+ }
47
+
48
+ .#{$dividerBaseClass} {
49
+ box-sizing: border-box;
50
+ width: $divider-length;
51
+ height: auto;
52
+
53
+ &--horizontal {
54
+ text-align: center;
55
+ }
56
+
57
+ &--vertical {
58
+ height: $divider-length;
59
+ width: auto;
60
+ min-height: 1.25rem;
61
+
62
+ .#{$dividerBaseClass}__wrapper {
63
+ height: 100%;
64
+ display: flex;
65
+ flex-direction: column;
66
+ align-items: center;
67
+ }
68
+
69
+ &::before,
70
+ &::after {
71
+ width: 0.0625rem;
72
+ height: 100%;
73
+ }
74
+
75
+ .#{$dividerBaseClass}__content {
76
+ padding: tokens.$bm-comp-divider-space-content 0;
77
+ }
78
+ }
79
+
80
+ &__wrapper {
81
+ position: relative;
82
+ display: flex;
83
+ align-items: center;
84
+ height: 100%;
85
+ width: 100%;
86
+
87
+ &::before,
88
+ &::after {
89
+ content: '';
90
+ background-color: currentColor;
91
+ flex: 1 1 auto;
92
+ height: 0.0625rem;
93
+ }
94
+ }
95
+
96
+ &__content {
97
+ font: tokens.$bm-comp-divider-typo-text;
98
+ padding: 0 tokens.$bm-comp-divider-space-content;
99
+ display: inline-flex;
100
+ align-items: center;
101
+ color: tokens.$bm-comp-divider-color-text;
102
+ gap: tokens.$bm-comp-divider-space-content-gap;
103
+ }
104
+
105
+ &__icon {
106
+ display: inline-flex;
107
+ align-items: center;
108
+ color: tokens.$bm-comp-divider-color-icon;
109
+
110
+ svg {
111
+ height: tokens.$bm-comp-divider-size-icon;
112
+ width: tokens.$bm-comp-divider-size-icon;
113
+ }
114
+
115
+ ::slotted([slot='icon']) {
116
+ display: inline-flex;
117
+ height: tokens.$bm-comp-divider-size-icon;
118
+ width: tokens.$bm-comp-divider-size-icon;
119
+ }
120
+ }
121
+
122
+ &--icon-only {
123
+ .#{$dividerBaseClass}__icon {
124
+ margin-right: 0;
125
+ color: tokens.$bm-comp-divider-color-icon;
126
+
127
+ svg {
128
+ height: tokens.$bm-comp-divider-size-icon-only;
129
+ width: tokens.$bm-comp-divider-size-icon-only;
130
+ }
131
+
132
+ ::slotted([slot='icon']) {
133
+ height: tokens.$bm-comp-divider-size-icon-only;
134
+ width: tokens.$bm-comp-divider-size-icon-only;
135
+ }
136
+ }
137
+ }
138
+
139
+ &__text {
140
+ white-space: nowrap;
141
+ }
142
+
143
+ @each $width, $value in $borderWidths {
144
+ &--border-width-#{$width} {
145
+ .#{$dividerBaseClass}__wrapper::before,
146
+ .#{$dividerBaseClass}__wrapper::after {
147
+ height: $value;
148
+ }
149
+
150
+ &.#{$dividerBaseClass}--vertical {
151
+ .#{$dividerBaseClass}__wrapper::before,
152
+ .#{$dividerBaseClass}__wrapper::after {
153
+ width: $value;
154
+ height: auto;
155
+ }
156
+ }
157
+ }
158
+ }
159
+
160
+ &--border-style-dashed {
161
+ .#{$dividerBaseClass}__wrapper::before,
162
+ .#{$dividerBaseClass}__wrapper::after {
163
+ background: repeating-linear-gradient(
164
+ to right,
165
+ currentColor,
166
+ currentColor 0.25rem,
167
+ transparent 0.25rem,
168
+ transparent 0.5rem
169
+ );
170
+ }
171
+
172
+ &.#{$dividerBaseClass}--vertical {
173
+ .#{$dividerBaseClass}__wrapper::before,
174
+ .#{$dividerBaseClass}__wrapper::after {
175
+ background: repeating-linear-gradient(
176
+ to bottom,
177
+ currentColor,
178
+ currentColor 0.25rem,
179
+ transparent 0.25rem,
180
+ transparent 0.5rem
181
+ );
182
+ }
183
+ }
184
+ }
185
+
186
+ &--border-style-dotted {
187
+ .#{$dividerBaseClass}__wrapper::before,
188
+ .#{$dividerBaseClass}__wrapper::after {
189
+ background: repeating-linear-gradient(
190
+ to right,
191
+ currentColor,
192
+ currentColor 0.125rem,
193
+ transparent 0.125rem,
194
+ transparent 0.375rem
195
+ );
196
+ }
197
+
198
+ &.#{$dividerBaseClass}--vertical {
199
+ .#{$dividerBaseClass}__wrapper::before,
200
+ .#{$dividerBaseClass}__wrapper::after {
201
+ background: repeating-linear-gradient(
202
+ to bottom,
203
+ currentColor,
204
+ currentColor 0.125rem,
205
+ transparent 0.125rem,
206
+ transparent 0.375rem
207
+ );
208
+ }
209
+ }
210
+ }
211
+
212
+ @each $color, $value in $borderColors {
213
+ &--border-color-#{$color} {
214
+ color: $value;
215
+ }
216
+ }
217
+
218
+ &--align-start {
219
+ .#{$dividerBaseClass}__wrapper::before {
220
+ flex: 0 1 0%;
221
+ }
222
+ .#{$dividerBaseClass}__wrapper::after {
223
+ flex: 1 1 auto;
224
+ }
225
+ .#{$dividerBaseClass}__content {
226
+ padding-inline-start: 0;
227
+ }
228
+ }
229
+
230
+ &--align-end {
231
+ .#{$dividerBaseClass}__wrapper::before {
232
+ flex: 1 1 auto;
233
+ }
234
+ .#{$dividerBaseClass}__wrapper::after {
235
+ flex: 0 1 0%;
236
+ }
237
+ .#{$dividerBaseClass}__content {
238
+ padding-inline-end: 0;
239
+ }
240
+ }
241
+
242
+ &--vertical {
243
+ &.#{$dividerBaseClass}--align-start {
244
+ .#{$dividerBaseClass}__wrapper::before {
245
+ flex: 0 1 1rem;
246
+ }
247
+ }
248
+
249
+ &.#{$dividerBaseClass}--align-end {
250
+ .#{$dividerBaseClass}__wrapper::after {
251
+ flex: 0 1 1rem;
252
+ }
253
+ }
254
+ }
255
+ }
@@ -0,0 +1,61 @@
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
+ @import '../../../../tokens/src/lib/components/EmptyState';
7
+
8
+ $emptyStateBaseClass: '#{constants.$prefix}empty-state';
9
+
10
+ .#{$emptyStateBaseClass} {
11
+ display: flex;
12
+ flex-direction: column;
13
+ max-width: tokens.$bm-comp-empty-state-size-width;
14
+ align-items: center;
15
+ gap: tokens.$bm-comp-empty-state-space-gap;
16
+
17
+ &__icon,
18
+ ::slotted([slot='icon']) {
19
+ color: tokens.$bm-comp-empty-state-color-icon;
20
+ }
21
+
22
+ &__icon > svg,
23
+ ::slotted([slot='icon']) {
24
+ height: tokens.$bm-comp-empty-state-size-icon;
25
+ width: tokens.$bm-comp-empty-state-size-icon;
26
+ }
27
+
28
+ &__body-container {
29
+ display: flex;
30
+ flex-direction: column;
31
+ align-items: center;
32
+ gap: tokens.$bm-comp-empty-state-space-text-gap;
33
+ }
34
+
35
+ &__heading,
36
+ ::slotted([slot='heading']) {
37
+ text-align: center;
38
+ font: tokens.$bm-comp-empty-state-typo-heading;
39
+ color: tokens.$bm-comp-empty-state-color-heading;
40
+ }
41
+
42
+ &__body,
43
+ ::slotted([slot='body']) {
44
+ display: flex;
45
+ flex-direction: column;
46
+ text-align: center;
47
+ font: tokens.$bm-comp-empty-state-typo-body;
48
+ color: tokens.$bm-comp-empty-state-color-body;
49
+ gap: tokens.$bm-comp-empty-state-space-text-gap;
50
+ }
51
+
52
+ &__actions,
53
+ ::slotted([slot='actions']) {
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ gap: tokens.$bm-comp-empty-state-space-actions-gap;
58
+ }
59
+
60
+ background-color: unset;
61
+ }