@koobiq/components 17.0.0-rc.3 → 17.0.0-rc.5

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 (65) hide show
  1. package/alert/_alert-theme.scss +16 -28
  2. package/alert/alert.component.scss +48 -134
  3. package/code-block/_code-block-theme.scss +23 -1
  4. package/code-block/actionbar.component.scss +2 -2
  5. package/code-block/code-block.component.d.ts +12 -4
  6. package/code-block/code-block.scss +36 -9
  7. package/core/option/_option-action-theme.scss +6 -8
  8. package/core/styles/_variables.scss +1 -1
  9. package/core/styles/common/_tokens.scss +28 -0
  10. package/core/styles/theming/_components-theming.scss +21 -2
  11. package/core/styles/theming/_theming.scss +3 -6
  12. package/esm2022/alert/alert.component.mjs +2 -2
  13. package/esm2022/code-block/actionbar.component.mjs +2 -2
  14. package/esm2022/code-block/code-block.component.mjs +58 -14
  15. package/esm2022/core/version.mjs +2 -2
  16. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  17. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  18. package/esm2022/select/select.component.mjs +33 -6
  19. package/esm2022/splitter/splitter.component.mjs +36 -16
  20. package/esm2022/table/table.component.mjs +29 -6
  21. package/esm2022/table/table.module.mjs +14 -6
  22. package/esm2022/textarea/textarea.component.mjs +9 -7
  23. package/esm2022/toast/toast-container.component.mjs +2 -2
  24. package/esm2022/toast/toast.component.mjs +4 -4
  25. package/esm2022/toast/toast.service.mjs +2 -2
  26. package/esm2022/toast/toast.type.mjs +3 -1
  27. package/fesm2022/koobiq-components-alert.mjs +2 -2
  28. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-code-block.mjs +57 -14
  30. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-core.mjs +1 -1
  32. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-loader-overlay.mjs +1 -1
  34. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-navbar.mjs +2 -2
  36. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-select.mjs +33 -6
  38. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-splitter.mjs +35 -15
  40. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-table.mjs +41 -10
  42. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-textarea.mjs +8 -6
  44. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-toast.mjs +8 -6
  46. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  47. package/icon/_icon-item-theme.scss +6 -0
  48. package/icon/_icon-theme.scss +5 -0
  49. package/input/_input-theme.scss +4 -0
  50. package/link/_link-theme.scss +4 -2
  51. package/navbar/vertical-navbar.scss +1 -0
  52. package/package.json +7 -7
  53. package/prebuilt-themes/dark-theme.css +1 -1
  54. package/prebuilt-themes/light-theme.css +1 -1
  55. package/schematics/ng-add/index.js +5 -5
  56. package/select/select.component.d.ts +5 -1
  57. package/splitter/splitter.component.d.ts +10 -5
  58. package/table/_table-theme.scss +10 -10
  59. package/table/table.component.d.ts +8 -1
  60. package/table/table.module.d.ts +1 -1
  61. package/table/table.scss +39 -40
  62. package/toast/_toast-theme.scss +10 -5
  63. package/toast/toast-container.component.scss +4 -1
  64. package/toast/toast.component.scss +22 -17
  65. package/toast/toast.type.d.ts +2 -0
@@ -1,84 +1,72 @@
1
1
  @use 'sass:meta';
2
2
  @use 'sass:map';
3
3
 
4
+ @use '../core/styles/common/tokens' as *;
4
5
  @use '../core/styles/typography/typography-utils' as *;
5
6
 
6
7
 
7
- @mixin kbq-alert-default($style) {
8
- background: map.get($style, background);
8
+ @mixin kbq-alert($component, $style-name, $color-name) {
9
+ $style: map.get($component, $style-name);
9
10
 
10
- .kbq-alert__title {
11
- color: map.get($style, title);
12
- }
13
-
14
- .kbq-alert__text {
15
- color: map.get($style, text);
16
- }
17
- }
18
-
19
- @mixin kbq-alert-colored($style) {
20
- background: map.get($style, background);
11
+ background: cssVar('alert-light-#{$style-name}-#{$color-name}-container-background');
21
12
 
22
13
  .kbq-alert__title {
23
- color: map.get($style, title);
14
+ color: cssVar('alert-light-#{$style-name}-#{$color-name}-container-title');
24
15
  }
25
16
 
26
17
  .kbq-alert__text {
27
- color: map.get($style, text);
18
+ color: cssVar('alert-light-#{$style-name}-#{$color-name}-container-text');
28
19
  }
29
20
  }
30
21
 
31
22
  @mixin kbq-alert-theme($theme) {
32
23
  $alert: map.get(map.get($theme, components), alert);
33
24
 
34
- $default: map.get($alert, default);
35
- $colored: map.get($alert, colored);
36
-
37
25
  .kbq-alert__close:focus {
38
26
  outline: none;
39
27
  }
40
28
 
41
29
  .kbq-alert.kbq-alert_default {
42
30
  &.kbq-alert_contrast {
43
- @include kbq-alert-default(map.get($default, contrast));
31
+ @include kbq-alert($alert, default, contrast);
44
32
  }
45
33
 
46
34
  &.kbq-alert_error {
47
- @include kbq-alert-default(map.get($default, error));
35
+ @include kbq-alert($alert, default, error);
48
36
  }
49
37
 
50
38
  &.kbq-alert_warning {
51
- @include kbq-alert-default(map.get($default, warning));
39
+ @include kbq-alert($alert, default, warning);
52
40
  }
53
41
 
54
42
  &.kbq-alert_success {
55
- @include kbq-alert-default(map.get($default, success));
43
+ @include kbq-alert($alert, default, success);
56
44
  }
57
45
 
58
46
  &.kbq-alert_theme {
59
- @include kbq-alert-default(map.get($default, theme));
47
+ @include kbq-alert($alert, default, theme);
60
48
  }
61
49
  }
62
50
 
63
51
  .kbq-alert.kbq-alert_colored {
64
52
  &.kbq-alert_contrast {
65
- @include kbq-alert-colored(map.get($colored, contrast));
53
+ @include kbq-alert($alert, colored, contrast);
66
54
  }
67
55
 
68
56
  &.kbq-alert_error {
69
- @include kbq-alert-colored(map.get($colored, error));
57
+ @include kbq-alert($alert, colored, error);
70
58
  }
71
59
 
72
60
  &.kbq-alert_warning {
73
- @include kbq-alert-colored(map.get($colored, warning));
61
+ @include kbq-alert($alert, colored, warning);
74
62
  }
75
63
 
76
64
  &.kbq-alert_success {
77
- @include kbq-alert-colored(map.get($colored, success));
65
+ @include kbq-alert($alert, colored, success);
78
66
  }
79
67
 
80
68
  &.kbq-alert_theme {
81
- @include kbq-alert-colored(map.get($colored, theme));
69
+ @include kbq-alert($alert, colored, theme);
82
70
  }
83
71
  }
84
72
  }
@@ -1,7 +1,7 @@
1
1
  @use 'sass:meta';
2
2
  @use 'sass:map';
3
3
 
4
- @use '../core/styles/tokens';
4
+ @use '../core/styles/common/tokens' as *;
5
5
 
6
6
 
7
7
  $tokens: meta.module-variables(tokens) !default;
@@ -9,10 +9,10 @@ $tokens: meta.module-variables(tokens) !default;
9
9
  .kbq-alert {
10
10
  display: flex;
11
11
 
12
- width: 492px;
12
+ box-sizing: border-box;
13
13
 
14
14
  & .kbq-alert__content_title {
15
- margin-bottom: map.get($tokens, size-xxs);
15
+ margin-bottom: cssVar(size-xxs);
16
16
  }
17
17
  }
18
18
 
@@ -25,182 +25,96 @@ $tokens: meta.module-variables(tokens) !default;
25
25
  }
26
26
 
27
27
  .kbq-alert.kbq-alert_normal {
28
- border-radius: var(
29
- --kbq-alert-size-normal-container-border-radius,
30
- map.get($tokens, alert-size-normal-container-border-radius)
31
- );
28
+ border-radius: cssVar(alert-size-normal-container-border-radius);
32
29
 
33
30
  padding:
34
- var(
35
- --kbq-alert-size-normal-container-padding-top,
36
- map.get($tokens, alert-size-normal-container-padding-top)
37
- )
38
- var(
39
- --kbq-alert-size-normal-container-padding-right,
40
- map.get($tokens, alert-size-normal-container-padding-right)
41
- )
42
- var(
43
- --kbq-alert-size-normal-container-padding-bottom,
44
- map.get($tokens, alert-size-normal-container-padding-bottom)
45
- )
46
- var(
47
- --kbq-alert-size-normal-container-padding-left,
48
- map.get($tokens, alert-size-normal-container-padding-left)
49
- );
31
+ cssVar(alert-size-normal-container-padding-top)
32
+ cssVar(alert-size-normal-container-padding-right)
33
+ cssVar(alert-size-normal-container-padding-bottom)
34
+ cssVar(alert-size-normal-container-padding-left);
50
35
 
51
36
  & .kbq-alert__icon {
52
37
  margin:
53
- var(--kbq-alert-size-normal-icon-margin-top, map.get($tokens, alert-size-normal-icon-margin-top))
54
- var(--kbq-alert-size-normal-icon-margin-right, map.get($tokens, alert-size-normal-icon-margin-right))
55
- var(--kbq-alert-size-normal-icon-margin-bottom, map.get($tokens, alert-size-normal-icon-margin-bottom))
56
- var(--kbq-alert-size-normal-icon-margin-left, map.get($tokens, alert-size-normal-icon-margin-left));
38
+ cssVar(alert-size-normal-icon-margin-top)
39
+ cssVar(alert-size-normal-icon-margin-right)
40
+ cssVar(alert-size-normal-icon-margin-bottom)
41
+ cssVar(alert-size-normal-icon-margin-left);
57
42
 
58
43
  &.kbq-alert__icon_title .kbq-icon {
59
- margin-top: var(
60
- --kbq-alert-size-normal-icon-margin-addon-title,
61
- map.get($tokens, alert-size-normal-icon-margin-addon-title)
62
- );
44
+ margin-top: cssVar(alert-size-normal-icon-margin-addon-title);
63
45
  }
46
+
47
+ display: inline-flex;
48
+ align-self: flex-start;
64
49
  }
65
50
 
66
51
  & .kbq-alert__content {
67
52
  padding:
68
- var(
69
- --kbq-alert-size-normal-content-padding-top,
70
- map.get($tokens, alert-size-normal-content-padding-top)
71
- )
72
- var(
73
- --kbq-alert-size-normal-content-padding-right,
74
- map.get($tokens, alert-size-normal-content-padding-right)
75
- )
76
- var(
77
- --kbq-alert-size-normal-content-padding-bottom,
78
- map.get($tokens, alert-size-normal-content-padding-bottom)
79
- )
80
- var(
81
- --kbq-alert-size-normal-content-padding-left,
82
- map.get($tokens, alert-size-normal-content-padding-left)
83
- );
53
+ cssVar(alert-size-normal-content-padding-top)
54
+ cssVar(alert-size-normal-content-padding-right)
55
+ cssVar(alert-size-normal-content-padding-bottom)
56
+ cssVar(alert-size-normal-content-padding-left);
84
57
  }
85
58
 
86
59
  & .kbq-alert__title {
87
- margin-bottom: var(
88
- --kbq-alert-size-normal-title-margin-bottom,
89
- map.get($tokens, alert-size-normal-title-margin-bottom)
90
- );
60
+ margin-bottom: cssVar(alert-size-normal-title-margin-bottom);
91
61
  }
92
62
 
93
63
  & .kbq-alert__button-stack {
94
- padding-top: var(
95
- --kbq-alert-size-normal-button-stack-padding-top,
96
- map.get($tokens, alert-size-normal-button-stack-padding-top)
97
- );
98
-
99
- padding-bottom: var(
100
- --kbq-alert-size-normal-button-stack-padding-bottom,
101
- map.get($tokens, alert-size-normal-button-stack-padding-bottom)
102
- );
64
+ padding-top: cssVar(alert-size-normal-button-stack-padding-top);
65
+
66
+ padding-bottom: cssVar(alert-size-normal-button-stack-padding-bottom);
103
67
  }
104
68
 
105
69
  & .kbq-alert__close-button {
106
- margin-top: var(
107
- --kbq-alert-size-normal-close-button-margin-top,
108
- map.get($tokens, alert-size-normal-close-button-margin-top)
109
- );
110
-
111
- margin-left: var(
112
- --kbq-alert-size-normal-close-button-margin-left,
113
- map.get($tokens, alert-size-normal-close-button-margin-left)
114
- );
70
+ margin-top: cssVar(alert-size-normal-close-button-margin-top);
71
+ margin-left: cssVar(alert-size-normal-close-button-margin-left);
115
72
  }
116
73
  }
117
74
 
118
75
  .kbq-alert.kbq-alert_compact {
119
- border-radius: var(
120
- --kbq-alert-size-compact-container-border-radius,
121
- map.get($tokens, alert-size-compact-container-border-radius)
122
- );
76
+ border-radius: cssVar(alert-size-compact-container-border-radius);
123
77
 
124
78
  padding:
125
- var(
126
- --kbq-alert-size-compact-container-padding-top,
127
- map.get($tokens, alert-size-compact-container-padding-top)
128
- )
129
- var(
130
- --kbq-alert-size-compact-container-padding-right,
131
- map.get($tokens, alert-size-compact-container-padding-right)
132
- )
133
- var(
134
- --kbq-alert-size-compact-container-padding-bottom,
135
- map.get($tokens, alert-size-compact-container-padding-bottom)
136
- )
137
- var(
138
- --kbq-alert-size-compact-container-padding-left,
139
- map.get($tokens, alert-size-compact-container-padding-left)
140
- );
79
+ cssVar(alert-size-compact-container-padding-top)
80
+ cssVar(alert-size-compact-container-padding-right)
81
+ cssVar(alert-size-compact-container-padding-bottom)
82
+ cssVar(alert-size-compact-container-padding-left);
141
83
 
142
84
  & .kbq-alert__icon {
143
- margin-top: var(--kbq-alert-size-compact-icon-margin-top, map.get($tokens, alert-size-compact-icon-margin-top));
85
+ margin-top: cssVar(alert-size-compact-icon-margin-top);
144
86
 
145
- margin-right:
146
- var(--kbq-alert-size-compact-icon-margin-right, map.get($tokens, alert-size-compact-icon-margin-right));
87
+ margin-right: cssVar(alert-size-compact-icon-margin-right);
147
88
 
148
89
  &.kbq-alert__icon_title .kbq-icon {
149
- margin-top: var(
150
- --kbq-alert-size-compact-icon-margin-addon-title,
151
- map.get($tokens, alert-size-compact-icon-margin-addon-title)
152
- );
90
+ margin-top: cssVar(alert-size-compact-icon-margin-addon-title);
153
91
  }
92
+
93
+ display: inline-flex;
94
+ align-self: flex-start;
154
95
  }
155
96
 
156
97
  & .kbq-alert__content {
157
98
  padding:
158
- var(
159
- --kbq-alert-size-compact-content-padding-top,
160
- map.get($tokens, alert-size-compact-content-padding-top)
161
- )
162
- var(
163
- --kbq-alert-size-compact-content-padding-right,
164
- map.get($tokens, alert-size-compact-content-padding-right)
165
- )
166
- var(
167
- --kbq-alert-size-compact-content-padding-bottom,
168
- map.get($tokens, alert-size-compact-content-padding-bottom)
169
- )
170
- var(
171
- --kbq-alert-size-compact-content-padding-left,
172
- map.get($tokens, alert-size-compact-content-padding-left)
173
- );
99
+ cssVar(alert-size-compact-content-padding-top)
100
+ cssVar(alert-size-compact-content-padding-right)
101
+ cssVar(alert-size-compact-content-padding-bottom)
102
+ cssVar(alert-size-compact-content-padding-left);
174
103
  }
175
104
 
176
105
  & .kbq-alert__title {
177
- margin-bottom: var(
178
- --kbq-alert-size-compact-title-margin-bottom,
179
- map.get($tokens, alert-size-compact-title-margin-bottom)
180
- );
106
+ margin-bottom: cssVar(alert-size-compact-title-margin-bottom);
181
107
  }
182
108
 
183
109
  & .kbq-alert__button-stack {
184
- padding-top: var(
185
- --kbq-alert-size-compact-button-stack-padding-top,
186
- map.get($tokens, alert-size-compact-button-stack-padding-top)
187
- );
188
-
189
- padding-bottom: var(
190
- --kbq-alert-size-compact-button-stack-padding-bottom,
191
- map.get($tokens, alert-size-compact-button-stack-padding-bottom)
192
- );
110
+ padding-top: cssVar(alert-size-compact-button-stack-padding-top);
111
+
112
+ padding-bottom: cssVar(alert-size-compact-button-stack-padding-bottom);
193
113
  }
194
114
 
195
115
  & .kbq-alert__close-button {
196
- margin-top: var(
197
- --kbq-alert-size-compact-close-button-margin-top,
198
- map.get($tokens, alert-size-compact-close-button-margin-top)
199
- );
200
-
201
- margin-left: var(
202
- --kbq-alert-size-compact-close-button-margin-left,
203
- map.get($tokens, alert-size-compact-close-button-margin-left)
204
- );
116
+ margin-top: cssVar(alert-size-compact-close-button-margin-top);
117
+
118
+ margin-left: cssVar(alert-size-compact-close-button-margin-left);
205
119
  }
206
120
  }
@@ -11,12 +11,22 @@
11
11
  $actionbar: map.get($style, actionbar);
12
12
  $collapse: map.get($style, collapse);
13
13
 
14
- border-color: map.get($container, border);
15
14
  background: map.get($container, background);
16
15
 
17
16
  & .kbq-tab-header {
18
17
  $header: map.get($style, header);
19
18
  background: map.get($header, background) !important;
19
+ border-color: map.get($container, border);
20
+ }
21
+
22
+ .kbq-tab-body__wrapper {
23
+ border-color: map.get($container, border);
24
+ }
25
+
26
+ &:not(.kbq-code-block_no-header) {
27
+ .kbq-tab-body__wrapper {
28
+ border-top-color: transparent;
29
+ }
20
30
  }
21
31
 
22
32
  & .kbq-code-block-actionbar {
@@ -335,6 +345,18 @@
335
345
  @include kbq-code-block-style(map.get($code-block, filled));
336
346
  }
337
347
 
348
+ .kbq-tab-group.kbq-focused {
349
+ // paint focus border from the top since because of border constraints
350
+ .kbq-tab-header {
351
+ box-shadow: 0 3px 0 -1px map.get(map.get($theme, states), focused-color);
352
+ }
353
+
354
+ .kbq-tab-body__wrapper {
355
+ border-color: map.get(map.get($theme, states), focused-color);
356
+ box-shadow: inset 0 0 0 1px map.get(map.get($theme, states), focused-color);
357
+ }
358
+ }
359
+
338
360
  .kbq-tab-header {
339
361
  & .kbq-tab-label.kbq-tab-label_horizontal,
340
362
  & .kbq-tab-header__pagination {
@@ -16,7 +16,7 @@ $tokens: meta.module-variables(tokens) !default;
16
16
  top: -1px;
17
17
  right: 0;
18
18
 
19
- padding:
19
+ margin:
20
20
  var(
21
21
  --kbq-code-block-size-actionbar-padding-vertical,
22
22
  map.get($tokens, code-block-size-actionbar-padding-vertical)
@@ -38,7 +38,7 @@ $tokens: meta.module-variables(tokens) !default;
38
38
  --kbq-code-block-size-actionbar-fade-gradient-width,
39
39
  map.get($tokens, code-block-size-actionbar-fade-gradient-width)
40
40
  );
41
- height: 40px;
41
+ height: 32px;
42
42
 
43
43
  margin-top: calc(
44
44
  var(
@@ -1,8 +1,9 @@
1
1
  import { Clipboard } from '@angular/cdk/clipboard';
2
- import { InjectionToken, ElementRef, ChangeDetectorRef, OnDestroy, Renderer2 } from '@angular/core';
2
+ import { InjectionToken, ElementRef, ChangeDetectorRef, OnDestroy, Renderer2, AfterViewInit } from '@angular/core';
3
3
  import { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';
4
4
  import { Subject } from 'rxjs';
5
5
  import { KbqCodeBlockConfiguration, KbqCodeFile } from './code-block.types';
6
+ import { FocusMonitor } from '@angular/cdk/a11y';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;
8
9
  export declare const DEFAULT_EXTENSION = "txt";
@@ -35,11 +36,12 @@ export declare const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION: {
35
36
  viewLessText: string;
36
37
  openExternalSystemTooltip: string;
37
38
  };
38
- export declare class KbqCodeBlockComponent implements OnDestroy {
39
+ export declare class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {
39
40
  private elementRef;
40
41
  private changeDetectorRef;
41
42
  private clipboard;
42
43
  private renderer;
44
+ private focusMonitor;
43
45
  config: KbqCodeBlockConfiguration;
44
46
  tabGroup: KbqTabGroup;
45
47
  lineNumbers: boolean;
@@ -54,10 +56,14 @@ export declare class KbqCodeBlockComponent implements OnDestroy {
54
56
  viewAll: boolean;
55
57
  multiLine: boolean;
56
58
  isTopOverflow: boolean;
59
+ hasFocus: boolean;
57
60
  readonly resizeStream: Subject<Event>;
61
+ readonly currentCodeBlock: Subject<HTMLElement>;
58
62
  private readonly resizeDebounceInterval;
59
63
  private resizeSubscription;
60
- constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, clipboard: Clipboard, renderer: Renderer2, config: KbqCodeBlockConfiguration);
64
+ private codeBlockSubscription;
65
+ constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, clipboard: Clipboard, renderer: Renderer2, focusMonitor: FocusMonitor, config: KbqCodeBlockConfiguration);
66
+ ngAfterViewInit(): void;
61
67
  ngOnDestroy(): void;
62
68
  updateHeader: () => void;
63
69
  toggleSoftWrap(): void;
@@ -70,8 +76,10 @@ export declare class KbqCodeBlockComponent implements OnDestroy {
70
76
  onSelectTab($event: KbqTabChangeEvent): void;
71
77
  checkOverflow(currentCodeContentElement: HTMLElement): void;
72
78
  onShowMoreClick(currentCodeContentElement: HTMLPreElement): void;
79
+ canShowFocus(currentCodeContent: HTMLPreElement): boolean;
73
80
  private updateMultiline;
74
81
  private getFullFileName;
75
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqCodeBlockComponent, [null, null, null, null, { optional: true; }]>;
82
+ onEnter(currentCodeBlock: HTMLPreElement): void;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqCodeBlockComponent, [null, null, null, null, null, { optional: true; }]>;
76
84
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqCodeBlockComponent, "kbq-code-block", ["kbqCodeBlock"], { "lineNumbers": { "alias": "lineNumbers"; "required": false; }; "codeFiles": { "alias": "codeFiles"; "required": false; }; "filled": { "alias": "filled"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "softWrap": { "alias": "softWrap"; "required": false; }; }, {}, never, never, false, never>;
77
85
  }
@@ -4,6 +4,12 @@
4
4
 
5
5
  $tokens: meta.module-variables(tokens) !default;
6
6
 
7
+ $border-radius: var(
8
+ --kbq-code-block-size-container-border-radius, map.get($tokens, code-block-size-container-border-radius)
9
+ );
10
+ $border-width: var(
11
+ --kbq-code-block-size-container-border-width, map.get($tokens, code-block-size-container-border-width)
12
+ );
7
13
 
8
14
  /* stylelint-disable no-descending-specificity */
9
15
  .kbq-code-block {
@@ -18,13 +24,8 @@ $tokens: meta.module-variables(tokens) !default;
18
24
  -moz-hyphens: none;
19
25
  -webkit-hyphens: none;
20
26
 
21
- border-width: var(
22
- --kbq-code-block-size-container-border-width, map.get($tokens, code-block-size-container-border-width)
23
- );
24
- border-style: solid;
25
- border-radius: var(
26
- --kbq-code-block-size-container-border-radius, map.get($tokens, code-block-size-container-border-radius)
27
- );
27
+ border-radius: $border-radius;
28
+ border-width: 0;
28
29
 
29
30
  .kbq-tab-header {
30
31
  // 4 buttons + margin
@@ -46,6 +47,10 @@ $tokens: meta.module-variables(tokens) !default;
46
47
  --kbq-code-block-size-header-padding-left,
47
48
  map.get($tokens, code-block-size-header-padding-left)
48
49
  );
50
+
51
+ border-width: $border-width $border-width 0 $border-width;
52
+ border-style: solid;
53
+ border-radius: $border-radius $border-radius 0 0;
49
54
  }
50
55
 
51
56
  .kbq-code-block__code {
@@ -66,6 +71,12 @@ $tokens: meta.module-variables(tokens) !default;
66
71
  --kbq-code-block-size-with-header-content-padding-horizontal,
67
72
  map.get($tokens, code-block-size-with-header-content-padding-horizontal)
68
73
  );
74
+
75
+ border-radius: $border-radius;
76
+
77
+ &:focus-visible {
78
+ outline: none;
79
+ }
69
80
  }
70
81
 
71
82
  .hljs-ln-numbers {
@@ -92,11 +103,22 @@ $tokens: meta.module-variables(tokens) !default;
92
103
  }
93
104
  }
94
105
 
106
+ &:not(.kbq-code-block_no-header) {
107
+ .kbq-tab-body__wrapper {
108
+ border-top-width: 0;
109
+ }
110
+ }
111
+
95
112
  &.kbq-code-block_no-header {
96
113
  .kbq-tab-header {
97
114
  display: none;
98
115
  }
99
116
 
117
+ .kbq-tab-body__wrapper {
118
+ border-width: $border-width;
119
+ border-radius: $border-radius;
120
+ }
121
+
100
122
  .kbq-code-block__code {
101
123
  position: relative;
102
124
 
@@ -134,6 +156,10 @@ $tokens: meta.module-variables(tokens) !default;
134
156
  .kbq-tab-body__wrapper {
135
157
  flex-direction: column;
136
158
  position: unset;
159
+
160
+ border-width: $border-width;
161
+ border-style: solid;
162
+ border-radius: 0 0 $border-radius $border-radius;
137
163
  }
138
164
 
139
165
  .kbq-tab-body.kbq-tab-body__active {
@@ -176,10 +202,11 @@ $tokens: meta.module-variables(tokens) !default;
176
202
  justify-content: center;
177
203
  overflow: hidden;
178
204
 
179
- width: 100%;
205
+ width: calc(100% - $border-width * 2);
180
206
 
181
207
  position: absolute;
182
- bottom: 0;
208
+ bottom: $border-width;
209
+ border-radius: $border-radius;
183
210
 
184
211
  &.kbq-code-block__show-more_collapsed {
185
212
  padding-top: var(
@@ -8,9 +8,7 @@
8
8
  $foreground: map.get($theme, foreground);
9
9
  $background: map.get($theme, background);
10
10
 
11
- $secondary: map.get($theme, secondary);
12
-
13
- $is-dark: map.get($theme, is-dark);
11
+ $states: map.get($theme, states);
14
12
 
15
13
  .kbq-option-action {
16
14
  &.cdk-keyboard-focused {
@@ -20,22 +18,22 @@
20
18
  &:active,
21
19
  &.kbq-pressed {
22
20
  & .kbq-icon {
23
- color: kbq-color($secondary, if($is-dark, 70, 30));
21
+ color: map.get(map.get($states, icon), contrast-fade);
24
22
  }
25
23
 
26
- background-color: kbq-color($secondary, A16);
24
+ background-color: map.get($background, transparent);
27
25
  }
28
26
 
29
27
  &:hover .kbq-icon {
30
- color: kbq-color($secondary, if($is-dark, 70, 30));
28
+ color: map.get(map.get($states, icon), contrast-fade-hover);
31
29
  }
32
30
 
33
31
  &.kbq-disabled {
34
32
  & .kbq-icon {
35
- color: kbq-color($secondary, if($is-dark, 30, 70));
33
+ color: map.get(map.get($states, icon), disabled);
36
34
  }
37
35
 
38
- background-color: transparent;
36
+ background-color: map.get($background, transparent);
39
37
  }
40
38
  }
41
39
  }
@@ -1 +1 @@
1
- $z-index-loader-overlay: 10;
1
+
@@ -0,0 +1,28 @@
1
+ @use 'sass:map';
2
+ @use 'sass:meta';
3
+ @use 'sass:string';
4
+ @use 'sass:list';
5
+
6
+ @use '../tokens';
7
+
8
+
9
+ $tokens: meta.module-variables(tokens) !default;
10
+
11
+
12
+ @function cssVar($name) {
13
+ @if string.index($name, light-) {
14
+ $short-name: '';
15
+
16
+ @each $part in string.split($name, '-light') {
17
+ $short-name: $short-name + $part;
18
+ }
19
+
20
+ @return var(--kbq-#{$short-name}, map.get($tokens, $name));
21
+ } @else {
22
+ @return var(--kbq-#{$name}, map.get($tokens, $name));
23
+ }
24
+ }
25
+
26
+ @function getToken($name) {
27
+ @return map.get($tokens, $name);
28
+ }