@siemens/element-theme 47.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 (92) hide show
  1. package/package.json +28 -0
  2. package/src/styles/_accessibility.scss +9 -0
  3. package/src/styles/_all-variables.scss +7 -0
  4. package/src/styles/_bootstrap.scss +26 -0
  5. package/src/styles/_themes.scss +35 -0
  6. package/src/styles/_variables.scss +10 -0
  7. package/src/styles/bootstrap/_alert.scss +60 -0
  8. package/src/styles/bootstrap/_badges.scss +115 -0
  9. package/src/styles/bootstrap/_breadcrumb.scss +32 -0
  10. package/src/styles/bootstrap/_button-group.scss +101 -0
  11. package/src/styles/bootstrap/_buttons.scss +244 -0
  12. package/src/styles/bootstrap/_card.scss +208 -0
  13. package/src/styles/bootstrap/_containers.scss +44 -0
  14. package/src/styles/bootstrap/_dropdowns.scss +216 -0
  15. package/src/styles/bootstrap/_forms.scss +10 -0
  16. package/src/styles/bootstrap/_functions.scss +188 -0
  17. package/src/styles/bootstrap/_grid.scss +33 -0
  18. package/src/styles/bootstrap/_helpers.scss +6 -0
  19. package/src/styles/bootstrap/_images.scss +45 -0
  20. package/src/styles/bootstrap/_list-group.scss +197 -0
  21. package/src/styles/bootstrap/_mixins.scss +30 -0
  22. package/src/styles/bootstrap/_modals.scss +234 -0
  23. package/src/styles/bootstrap/_nav.scss +155 -0
  24. package/src/styles/bootstrap/_pagination.scss +58 -0
  25. package/src/styles/bootstrap/_popovers.scss +188 -0
  26. package/src/styles/bootstrap/_progress.scss +42 -0
  27. package/src/styles/bootstrap/_reboot.scss +618 -0
  28. package/src/styles/bootstrap/_root.scss +22 -0
  29. package/src/styles/bootstrap/_tables.scss +186 -0
  30. package/src/styles/bootstrap/_tooltip.scss +145 -0
  31. package/src/styles/bootstrap/_transitions.scss +28 -0
  32. package/src/styles/bootstrap/_type.scss +235 -0
  33. package/src/styles/bootstrap/_utilities.scss +105 -0
  34. package/src/styles/bootstrap/_variables.scss +654 -0
  35. package/src/styles/bootstrap/forms/_form-check.scss +249 -0
  36. package/src/styles/bootstrap/forms/_form-control.scss +151 -0
  37. package/src/styles/bootstrap/forms/_form-file.scss +29 -0
  38. package/src/styles/bootstrap/forms/_form-label.scss +39 -0
  39. package/src/styles/bootstrap/forms/_form-range.scss +68 -0
  40. package/src/styles/bootstrap/forms/_input-group.scss +103 -0
  41. package/src/styles/bootstrap/forms/_validation.scss +95 -0
  42. package/src/styles/bootstrap/helpers/_clearfix.scss +5 -0
  43. package/src/styles/bootstrap/helpers/_position.scss +34 -0
  44. package/src/styles/bootstrap/helpers/_stacks.scss +13 -0
  45. package/src/styles/bootstrap/helpers/_stretched-link.scss +14 -0
  46. package/src/styles/bootstrap/helpers/_text-truncation.scss +9 -0
  47. package/src/styles/bootstrap/helpers/_visually-hidden.scss +10 -0
  48. package/src/styles/bootstrap/mixins/_backdrop.scss +19 -0
  49. package/src/styles/bootstrap/mixins/_breakpoints.scss +136 -0
  50. package/src/styles/bootstrap/mixins/_clearfix.scss +7 -0
  51. package/src/styles/bootstrap/mixins/_container.scss +7 -0
  52. package/src/styles/bootstrap/mixins/_deprecate.scss +12 -0
  53. package/src/styles/bootstrap/mixins/_gradients.scss +14 -0
  54. package/src/styles/bootstrap/mixins/_grid.scss +171 -0
  55. package/src/styles/bootstrap/mixins/_image.scss +15 -0
  56. package/src/styles/bootstrap/mixins/_lists.scss +5 -0
  57. package/src/styles/bootstrap/mixins/_reset-text.scss +18 -0
  58. package/src/styles/bootstrap/mixins/_table-row.scss +31 -0
  59. package/src/styles/bootstrap/mixins/_text-truncate.scss +7 -0
  60. package/src/styles/bootstrap/mixins/_transition.scss +28 -0
  61. package/src/styles/bootstrap/mixins/_utilities.scss +86 -0
  62. package/src/styles/bootstrap/mixins/_visually-hidden.scss +29 -0
  63. package/src/styles/components/_application-header.scss +244 -0
  64. package/src/styles/components/_container-grid.scss +99 -0
  65. package/src/styles/components/_datatable.scss +328 -0
  66. package/src/styles/components/_drag_drop.scss +105 -0
  67. package/src/styles/components/_electron-titlebar.scss +5 -0
  68. package/src/styles/components/_elevation.scss +21 -0
  69. package/src/styles/components/_focus.scss +21 -0
  70. package/src/styles/components/_icons.scss +25 -0
  71. package/src/styles/components/_layout.scss +105 -0
  72. package/src/styles/components/_links.scss +34 -0
  73. package/src/styles/components/_pills.scss +45 -0
  74. package/src/styles/components/_scrollbar.scss +10 -0
  75. package/src/styles/components/_skeleton.scss +42 -0
  76. package/src/styles/components/_switch.scss +77 -0
  77. package/src/styles/components/_system-banner.scss +5 -0
  78. package/src/styles/components/_widgets.scss +58 -0
  79. package/src/styles/variables/_animations.scss +7 -0
  80. package/src/styles/variables/_elevation.scss +25 -0
  81. package/src/styles/variables/_focus.scss +55 -0
  82. package/src/styles/variables/_layout.scss +6 -0
  83. package/src/styles/variables/_semantic-tokens.scss +178 -0
  84. package/src/styles/variables/_si-vars.scss +19 -0
  85. package/src/styles/variables/_spacers.scss +28 -0
  86. package/src/styles/variables/_typography.scss +66 -0
  87. package/src/styles/variables/_utilities.scss +599 -0
  88. package/src/styles/variables/_zindex.scss +20 -0
  89. package/src/theme/_base-colors.scss +79 -0
  90. package/src/theme/_data-colors.scss +105 -0
  91. package/src/theme/_theme-element.scss +339 -0
  92. package/src/theme.scss +49 -0
@@ -0,0 +1,328 @@
1
+ @use '../bootstrap/mixins/text-truncate';
2
+ @use '../bootstrap/variables';
3
+ @use '../variables/animations';
4
+ @use '../variables/focus';
5
+ @use '../variables/semantic-tokens';
6
+ @use '../variables/spacers';
7
+ @use '../variables/typography';
8
+ @use '../variables/utilities';
9
+
10
+ @use 'sass:map';
11
+
12
+ $datatable-header-border-color: variables.$table-border-color !default;
13
+ $datatable-header-background-color: transparent !default;
14
+ $datatable-header-color: semantic-tokens.$element-text-primary !default;
15
+ $datatable-footer-background-color: transparent !default;
16
+
17
+ $datatable-header-height: 40px !default;
18
+ $datatable-cell-min-width: 40px !default;
19
+ $datatable-body-row-min-height: 48px !default;
20
+
21
+ $datatable-ghost-cell-container-background: variables.$table-bg !default;
22
+
23
+ $datatable-ghost-cell-strip-background: semantic-tokens.$element-base-1-hover !default;
24
+ $datatable-ghost-cell-strip-background-image: linear-gradient(
25
+ 90deg,
26
+ semantic-tokens.$element-base-1-hover 0%,
27
+ semantic-tokens.$element-base-1-selected 25%,
28
+ semantic-tokens.$element-base-1-hover 50%
29
+ ) !default;
30
+ $datatable-ghost-cell-strip-radius: 0 !default;
31
+
32
+ .ngx-datatable {
33
+ .ghost-cell-container {
34
+ background: $datatable-ghost-cell-container-background;
35
+ }
36
+
37
+ .ghost-cell-strip {
38
+ background: $datatable-ghost-cell-strip-background;
39
+ background-image: $datatable-ghost-cell-strip-background-image;
40
+ }
41
+ }
42
+
43
+ .ngx-datatable.table-element {
44
+ background-color: variables.$table-bg;
45
+ border-radius: semantic-tokens.$element-radius-2;
46
+
47
+ &.table-custom {
48
+ --si-datatable-row-min-height: 24px;
49
+ }
50
+
51
+ // any kind of selection: apply a row hover state
52
+ &:is(
53
+ .single-selection,
54
+ .multi-selection,
55
+ .multi-click-selection,
56
+ .cell-selection,
57
+ .checkbox-selection
58
+ ) {
59
+ .datatable-row-wrapper {
60
+ &:hover {
61
+ background-color: variables.$table-hover-bg;
62
+ }
63
+ }
64
+ }
65
+
66
+ // any selection type but 'cell'
67
+ &:is(.single-selection, .multi-selection, .multi-click-selection, .checkbox-selection) {
68
+ .datatable-body-row {
69
+ &.active {
70
+ &,
71
+ .datatable-row-group {
72
+ background-color: variables.$table-active-bg;
73
+ }
74
+ }
75
+ }
76
+ }
77
+
78
+ // solely 'cell' selection type
79
+ &.cell-selection {
80
+ .datatable-body-cell {
81
+ &.active,
82
+ &.active .datatable-row-group,
83
+ &:focus,
84
+ &:focus .datatable-row-group {
85
+ background-color: variables.$table-active-bg;
86
+ }
87
+ }
88
+ }
89
+
90
+ // not 'cell' selection type
91
+ &:not(.cell-selection) {
92
+ .datatable-body-row {
93
+ &:focus,
94
+ &:focus .datatable-row-group {
95
+ background-color: variables.$table-active-bg;
96
+ }
97
+ }
98
+ }
99
+
100
+ // 'checkbox' selection
101
+ :is(.datatable-header-cell, .datatable-body-cell) {
102
+ label.datatable-checkbox {
103
+ display: inline-flex;
104
+ inline-size: 13px;
105
+ block-size: 13px;
106
+ margin-block: 0;
107
+ margin-inline: 0 map.get(spacers.$spacers, 6);
108
+ position: relative;
109
+
110
+ > input {
111
+ inline-size: 100%;
112
+ block-size: 100%;
113
+ }
114
+ }
115
+ }
116
+
117
+ .datatable-header-cell {
118
+ label.datatable-checkbox {
119
+ > input {
120
+ inset-block: 0;
121
+ }
122
+ }
123
+ }
124
+
125
+ // Global Row Styles
126
+ :is(.datatable-header, .datatable-body) {
127
+ ghost-loader:not(.ghost-overlay) {
128
+ display: flex;
129
+ flex: 1 1 0;
130
+
131
+ :is(.ghost-cell-strip, .ghost-element, .ghost-loader) {
132
+ display: flex;
133
+ flex: 1 1 0;
134
+ inline-size: unset !important; // stylelint-disable-line declaration-no-important
135
+ }
136
+ }
137
+
138
+ .ghost-cell-strip {
139
+ animation-name: shimmer !important; // stylelint-disable-line declaration-no-important
140
+ animation-duration: animations.element-transition-duration(
141
+ 1.6s
142
+ ) !important; // stylelint-disable-line declaration-no-important
143
+ animation-timing-function: ease-in-out !important; // stylelint-disable-line declaration-no-important
144
+ background-size: 200% 100%;
145
+ background-position-x: 100%;
146
+ }
147
+
148
+ :is(.datatable-header-cell, .datatable-body-cell) {
149
+ display: flex;
150
+ align-items: center;
151
+ padding-block: 0;
152
+ padding-inline: 4px;
153
+ min-inline-size: $datatable-cell-min-width;
154
+ line-height: typography.$si-line-height-body-2;
155
+
156
+ > div {
157
+ padding: 4px;
158
+ }
159
+
160
+ &:first-child {
161
+ padding-inline-start: map.get(spacers.$spacers, 5);
162
+ }
163
+
164
+ &:last-child {
165
+ padding-inline-end: map.get(spacers.$spacers, 5);
166
+ }
167
+ }
168
+
169
+ .datatable-header-cell {
170
+ .datatable-header-cell-template-wrap {
171
+ display: flex;
172
+ align-items: center;
173
+ overflow: hidden;
174
+
175
+ .datatable-header-cell-wrapper {
176
+ @include text-truncate.text-truncate;
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ // Header Styles
183
+ .datatable-header {
184
+ padding: 0;
185
+ display: flex;
186
+ align-items: center;
187
+ border-block-end: 4px solid $datatable-header-border-color;
188
+ background-color: $datatable-header-background-color;
189
+ color: $datatable-header-color;
190
+ block-size: $datatable-header-height;
191
+ vertical-align: baseline;
192
+ font-size: typography.$si-font-size-title-2;
193
+ font-weight: typography.$si-font-weight-title-2;
194
+ line-height: typography.$si-line-height-title-2;
195
+ user-select: none;
196
+
197
+ .sort-btn {
198
+ color: $datatable-header-color !important; // stylelint-disable-line declaration-no-important
199
+ }
200
+
201
+ // Resizable handle
202
+ .resizeable:hover {
203
+ .resize-handle {
204
+ background-color: semantic-tokens.$element-base-0;
205
+ inline-size: 2px;
206
+ border-radius: 2px;
207
+ padding-block: 0;
208
+ padding-inline: 2px;
209
+ }
210
+ }
211
+
212
+ :is(.datatable-row-left, .datatable-row-right) {
213
+ background-color: variables.$table-bg;
214
+ display: flex;
215
+
216
+ .datatable-header-cell {
217
+ flex-shrink: 0;
218
+ }
219
+ }
220
+
221
+ .datatable-header-cell:focus-visible {
222
+ @include focus.make-outline-focus();
223
+ }
224
+ }
225
+
226
+ // Body Styles
227
+ .datatable-body {
228
+ .datatable-row-wrapper {
229
+ min-block-size: var(--si-datatable-row-min-height, #{$datatable-body-row-min-height});
230
+ justify-content: center;
231
+ padding: 0;
232
+ inline-size: 100%;
233
+ }
234
+
235
+ .datatable-body-row {
236
+ border-block-end: 1px solid $datatable-header-border-color;
237
+ inline-size: 100% !important; // stylelint-disable-line declaration-no-important
238
+ min-inline-size: fit-content;
239
+
240
+ .datatable-body-cell-label {
241
+ overflow: inherit;
242
+ text-overflow: ellipsis;
243
+ }
244
+
245
+ &:hover:not(.active) {
246
+ background-color: variables.$table-hover-bg;
247
+
248
+ :is(.datatable-row-left, .datatable-row-right) {
249
+ background-color: variables.$table-hover-bg;
250
+ }
251
+ }
252
+
253
+ :is(.datatable-row-left, .datatable-row-right) {
254
+ background-color: variables.$table-bg;
255
+ }
256
+ }
257
+
258
+ .datatable-body-cell,
259
+ .datatable-body-row {
260
+ &:focus-visible {
261
+ position: relative;
262
+
263
+ &::after {
264
+ position: absolute;
265
+ content: '';
266
+ inset: 0;
267
+ z-index: 9;
268
+ pointer-events: none; // Otherwise this can block mouse events if the focus is on a row/cell.
269
+ @include focus.make-outline-focus-inside();
270
+ }
271
+ }
272
+ }
273
+ }
274
+
275
+ // Footer Styles
276
+ .datatable-footer {
277
+ display: flex;
278
+ align-items: flex-end;
279
+ flex: 1;
280
+ align-content: flex-end;
281
+ background-color: $datatable-footer-background-color;
282
+ color: semantic-tokens.$element-text-secondary;
283
+ font-size: typography.$si-font-size-caption-1;
284
+ margin-block-start: -4px;
285
+ position: relative;
286
+ z-index: 11;
287
+
288
+ .datatable-footer-inner {
289
+ background-color: variables.$table-bg;
290
+ padding-inline-start: map.get(spacers.$spacers, 6);
291
+ padding-inline-end: map.get(spacers.$spacers, 4);
292
+ position: relative;
293
+
294
+ &::before {
295
+ position: absolute;
296
+ content: '';
297
+ inset-block-start: 0;
298
+ inset-inline-start: 0;
299
+ inline-size: 100%;
300
+ block-size: 1px;
301
+ background-color: var(--element-base-0);
302
+ }
303
+ }
304
+ }
305
+
306
+ > div {
307
+ block-size: unset !important; // stylelint-disable-line declaration-no-important
308
+ min-block-size: 100%;
309
+ display: flex;
310
+ flex-direction: column;
311
+ }
312
+
313
+ // Tree view icon styles
314
+ .datatable-tree-button {
315
+ border: 0;
316
+ background: none;
317
+ margin-inline: map.get(spacers.$spacers, 2);
318
+ padding: 0;
319
+
320
+ &[disabled] {
321
+ display: none;
322
+ }
323
+
324
+ &:focus-visible {
325
+ @include focus.make-outline-focus-inside();
326
+ }
327
+ }
328
+ }
@@ -0,0 +1,105 @@
1
+ @use '../variables';
2
+
3
+ /* stylelint-disable declaration-no-important */
4
+
5
+ body:has(.cdk-drag-preview) {
6
+ cursor: grabbing !important;
7
+
8
+ .cdk-drop-list:not(.cdk-drop-list-dragging) {
9
+ &:hover,
10
+ *:hover {
11
+ cursor: no-drop !important;
12
+ }
13
+ cursor: no-drop !important;
14
+ }
15
+
16
+ .cdk-drop-list.cdk-drop-list-dragging {
17
+ &:hover,
18
+ *:hover {
19
+ cursor: grabbing !important;
20
+ }
21
+ }
22
+ }
23
+
24
+ .cdk-drag-preview {
25
+ background-color: variables.$element-base-3 !important;
26
+ box-shadow: variables.$element-elevation-2 !important;
27
+ position: relative !important;
28
+ inset-inline-start: -5px !important;
29
+ inset-block-start: -10px !important;
30
+
31
+ .cdk-drag-handle {
32
+ &:hover {
33
+ cursor: grabbing !important;
34
+ }
35
+ }
36
+ }
37
+
38
+ .cdk-drag-handle {
39
+ font-size: 24px;
40
+ color: variables.$element-ui-2;
41
+ }
42
+
43
+ .cdk-drag-disabled {
44
+ .cdk-drag-handle {
45
+ cursor: not-allowed;
46
+ }
47
+
48
+ &:not(:has(.cdk-drag-handle)) {
49
+ cursor: not-allowed;
50
+ }
51
+ }
52
+
53
+ .cdk-drag:not(.cdk-drag-disabled) {
54
+ .cdk-drag-handle {
55
+ &:is(:hover, .hover) {
56
+ cursor: grab;
57
+ }
58
+ }
59
+
60
+ &:not(:has(.cdk-drag-handle)) {
61
+ &:hover,
62
+ .grab-area:hover {
63
+ cursor: grab;
64
+ }
65
+
66
+ .cdk-drag-dragging {
67
+ cursor: grabbing;
68
+ }
69
+ }
70
+ }
71
+
72
+ .cdk-drag-placeholder {
73
+ opacity: 0.3;
74
+ background-color: variables.$element-base-information !important;
75
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
76
+ min-block-size: 45px;
77
+ font-size: 0; // hide direct text
78
+ * {
79
+ visibility: hidden;
80
+ }
81
+ }
82
+
83
+ .cdk-drop-list-dragging .cdk-drag {
84
+ transition: transform 250ms cubic-bezier(0, 0, 0.2, 1) !important;
85
+ }
86
+
87
+ .droppable-container {
88
+ &.drop-border {
89
+ border: 1px dashed variables.$element-ui-2;
90
+ }
91
+
92
+ .cdk-drag-placeholder {
93
+ display: none;
94
+ }
95
+
96
+ &.cdk-drop-list-dragging,
97
+ .cdk-drop-list-dragging {
98
+ @include variables.make-outline-focus-inside();
99
+ cursor: grabbing !important;
100
+
101
+ &.focus-none > .focus-direct-sub-inside {
102
+ @include variables.make-outline-focus-inside();
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,5 @@
1
+ @use '../variables';
2
+
3
+ .in-electron {
4
+ --element-titlebar-spacing: #{variables.$si-titlebar-height};
5
+ }
@@ -0,0 +1,21 @@
1
+ @use '../variables/elevation';
2
+
3
+ .shadow-none {
4
+ box-shadow: none;
5
+ }
6
+
7
+ .elevation-1 {
8
+ box-shadow: elevation.$element-elevation-1;
9
+ }
10
+
11
+ .elevation-2 {
12
+ box-shadow: elevation.$element-elevation-2;
13
+ }
14
+
15
+ .elevation-3 {
16
+ box-shadow: elevation.$element-elevation-3;
17
+ }
18
+
19
+ .elevation-4 {
20
+ box-shadow: elevation.$element-elevation-4;
21
+ }
@@ -0,0 +1,21 @@
1
+ @use '../variables/focus';
2
+
3
+ // Unified focus styling
4
+
5
+ *:focus-visible,
6
+ *.focus-default:focus-visible,
7
+ *:focus-visible .focus-sub,
8
+ *:focus-visible > .focus-direct-sub,
9
+ *:focus-visible > .focus-direct-sub-inside {
10
+ @include focus.make-outline-focus();
11
+ }
12
+
13
+ *.focus-inside:focus-visible,
14
+ *:focus-visible .focus-sub-inside,
15
+ *:focus-visible > .focus-direct-sub-inside {
16
+ outline-offset: focus.$focus-style-outline-inside-offset;
17
+ }
18
+
19
+ .focus-none {
20
+ outline: none !important; // stylelint-disable-line declaration-no-important
21
+ }
@@ -0,0 +1,25 @@
1
+ @use '../variables';
2
+ @use '../variables/utilities';
3
+
4
+ .icon {
5
+ font-size: variables.$si-icon-font-size;
6
+ }
7
+
8
+ .icon-small {
9
+ font-size: variables.$si-icon-font-size-small;
10
+ }
11
+
12
+ .spinning {
13
+ animation: 1.5s linear infinite spinner-border;
14
+ }
15
+
16
+ .smooth-auto {
17
+ -webkit-font-smoothing: auto !important; // stylelint-disable-line declaration-no-important
18
+ -moz-osx-font-smoothing: auto !important; // stylelint-disable-line declaration-no-important
19
+ }
20
+
21
+ @include utilities.rtl {
22
+ .flip-rtl {
23
+ transform: scaleX(-1);
24
+ }
25
+ }
@@ -0,0 +1,105 @@
1
+ @use 'sass:map';
2
+ @use '../variables';
3
+ @use '../bootstrap/mixins/breakpoints';
4
+
5
+ .si-layout-fixed-height {
6
+ &,
7
+ .si-layout-inner {
8
+ @include variables.si-layout-fixed-height;
9
+ }
10
+ }
11
+
12
+ .si-layout-main-padding {
13
+ padding-block: map.get(variables.$spacers, 6) 0;
14
+ padding-inline: map.get(variables.$spacers, 6);
15
+
16
+ @include breakpoints.media-breakpoint-up(md) {
17
+ padding-inline: map.get(variables.$spacers, 9);
18
+ }
19
+ }
20
+
21
+ .si-layout-top-element {
22
+ transition: margin-inline variables.$element-default-transition-duration;
23
+ margin-inline: var(--si-layout-header-first-element-offset, 0)
24
+ var(--si-layout-header-first-element-offset-end, 0);
25
+ }
26
+
27
+ .si-layout-status {
28
+ margin-block-end: map.get(variables.$spacers, 4);
29
+ margin-block-start: -#{map.get(variables.$spacers, 4)};
30
+ }
31
+
32
+ .si-layout-breadcrumb {
33
+ display: block;
34
+ margin-block-end: map.get(variables.$spacers, 4);
35
+
36
+ &.si-layout-top-element {
37
+ margin-block-end: map.get(variables.$spacers, 6);
38
+ }
39
+ }
40
+
41
+ .si-layout-header {
42
+ display: grid;
43
+ grid-template-columns: 1fr auto;
44
+ grid-template-areas:
45
+ 'title title'
46
+ 'subtitle subtitle'
47
+ 'actions actions';
48
+ margin-block-end: map.get(variables.$spacers, 8);
49
+ }
50
+
51
+ .si-layout-title {
52
+ grid-area: title;
53
+ margin-block-end: 0;
54
+
55
+ &.si-layout-top-element + .si-layout-subtitle {
56
+ margin-inline: var(--si-layout-header-first-element-offset, 0)
57
+ var(--si-layout-header-first-element-offset-end, 0);
58
+ }
59
+ }
60
+
61
+ .si-layout-subtitle {
62
+ grid-area: subtitle;
63
+ margin-block-start: map.get(variables.$spacers, 4);
64
+ margin-block-end: 0;
65
+ color: variables.$element-text-secondary;
66
+ @include variables.si-font(
67
+ variables.$si-font-size-body-2,
68
+ variables.$si-line-height-body-2,
69
+ variables.$si-font-weight-body-2
70
+ );
71
+ }
72
+
73
+ .si-layout-actions {
74
+ grid-area: actions;
75
+ margin-block-start: map.get(variables.$spacers, 6);
76
+ }
77
+
78
+ @include breakpoints.media-breakpoint-up(sm) {
79
+ .si-layout-breadcrumb {
80
+ margin-block-end: map.get(
81
+ variables.$spacers,
82
+ 4
83
+ ) !important; // stylelint-disable-line declaration-no-important
84
+ }
85
+ }
86
+
87
+ @include breakpoints.media-breakpoint-up(md) {
88
+ .si-layout-header {
89
+ grid-template-areas:
90
+ 'title actions'
91
+ 'subtitle actions';
92
+ }
93
+
94
+ .si-layout-actions {
95
+ margin-block-start: 0;
96
+ }
97
+
98
+ .si-layout-status {
99
+ margin-block-start: 0;
100
+ margin-block-end: map.get(
101
+ variables.$spacers,
102
+ 6
103
+ ) !important; // stylelint-disable-line declaration-no-important
104
+ }
105
+ }
@@ -0,0 +1,34 @@
1
+ @use '../variables/semantic-tokens';
2
+
3
+ @use 'sass:math';
4
+ // so that @extend works
5
+ @use '../bootstrap/reboot';
6
+
7
+ $si-link-icon-size: math.div(20em, 14);
8
+ $si-link-icon-line-height: math.div(14em, 20);
9
+ $si-link-icon-spacing: math.div(4em, 20);
10
+
11
+ a:active {
12
+ color: semantic-tokens.$element-ui-0-hover;
13
+ text-decoration: underline;
14
+ }
15
+
16
+ .link {
17
+ @extend a;
18
+ }
19
+
20
+ .link-icon {
21
+ font-size: $si-link-icon-size !important; // stylelint-disable-line declaration-no-important
22
+ line-height: $si-link-icon-line-height !important; // stylelint-disable-line declaration-no-important
23
+ margin-block-start: -(math.div(20em - 14em, 2 * 20) + math.div(2.5em, 20));
24
+ margin-block-end: math.div(20em - 14em, -2 * 20);
25
+ vertical-align: middle;
26
+ }
27
+
28
+ .link-start {
29
+ margin-inline-end: $si-link-icon-spacing;
30
+ }
31
+
32
+ .link-end {
33
+ margin-inline-start: $si-link-icon-spacing;
34
+ }
@@ -0,0 +1,45 @@
1
+ @use '../variables';
2
+
3
+ @use 'sass:map';
4
+
5
+ .pill {
6
+ display: flex;
7
+ align-items: center;
8
+ block-size: 24px;
9
+ border-radius: 12px;
10
+ background: variables.$element-base-0;
11
+ padding-block: map.get(variables.$spacers, 2);
12
+ padding-inline: map.get(variables.$spacers, 4);
13
+ max-inline-size: 100%;
14
+
15
+ &.active {
16
+ background: variables.$element-base-1-selected;
17
+ }
18
+
19
+ &.pill-interactive {
20
+ cursor: pointer;
21
+
22
+ &:hover {
23
+ background: variables.$element-action-secondary-hover;
24
+ }
25
+ }
26
+ }
27
+
28
+ .pill-group {
29
+ display: flex;
30
+ gap: map.get(variables.$spacers, 1);
31
+
32
+ .pill {
33
+ border-radius: 0;
34
+
35
+ &:first-child {
36
+ border-start-start-radius: 12px;
37
+ border-end-start-radius: 12px;
38
+ }
39
+
40
+ &:last-child {
41
+ border-start-end-radius: 12px;
42
+ border-end-end-radius: 12px;
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,10 @@
1
+ @use '../variables/semantic-tokens';
2
+
3
+ html {
4
+ scrollbar-color: color-mix(
5
+ in srgb,
6
+ semantic-tokens.$element-ui-2 60%,
7
+ semantic-tokens.$element-base-1
8
+ )
9
+ semantic-tokens.$element-base-1;
10
+ }