@koobiq/components 17.0.0-rc.6 → 17.0.0-rc.8

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 (256) hide show
  1. package/alert/_alert-theme.scss +19 -33
  2. package/alert/alert.component.scss +49 -141
  3. package/autocomplete/_autocomplete-theme.scss +3 -2
  4. package/autocomplete/autocomplete.scss +7 -14
  5. package/badge/_badge-theme.scss +31 -45
  6. package/badge/badge.component.scss +18 -38
  7. package/button/_button-base.scss +7 -13
  8. package/button/_button-theme.scss +29 -85
  9. package/button/button.component.d.ts +3 -2
  10. package/button/button.scss +7 -16
  11. package/button-toggle/_button-toggle-theme.scss +18 -18
  12. package/button-toggle/button-toggle.scss +14 -34
  13. package/card/_card-theme.scss +19 -17
  14. package/card/card.component.scss +2 -4
  15. package/checkbox/_checkbox-theme.scss +44 -43
  16. package/checkbox/checkbox.scss +23 -21
  17. package/code-block/_code-block-theme.scss +27 -26
  18. package/code-block/actionbar.component.scss +7 -18
  19. package/code-block/code-block.scss +21 -66
  20. package/core/form-field/form-field-ref.d.ts +2 -0
  21. package/core/forms/_forms-theme.scss +4 -7
  22. package/core/forms/_forms.scss +13 -42
  23. package/core/locales/locale-service.d.ts +1 -0
  24. package/core/option/_optgroup-theme.scss +4 -5
  25. package/core/option/_option-action-theme.scss +7 -7
  26. package/core/option/_option-theme.scss +16 -20
  27. package/core/select/common.d.ts +35 -0
  28. package/core/select/index.d.ts +1 -0
  29. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +16 -19
  30. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +9 -8
  31. package/core/styles/common/_groups.scss +3 -5
  32. package/core/styles/common/_list.scss +14 -18
  33. package/core/styles/common/_popup.scss +5 -4
  34. package/core/styles/common/_select.scss +11 -16
  35. package/core/styles/common/_tokens.scss +30 -9
  36. package/core/styles/theming/_components-theming.scss +151 -131
  37. package/core/styles/visual/_layout.scss +14 -16
  38. package/datepicker/_datepicker-theme.scss +24 -39
  39. package/datepicker/calendar-body.scss +3 -8
  40. package/datepicker/calendar-header.scss +4 -9
  41. package/datepicker/calendar.scss +5 -16
  42. package/datepicker/datepicker-content.scss +4 -12
  43. package/datepicker/datepicker-input.scss +0 -4
  44. package/datepicker/datepicker-toggle.scss +3 -2
  45. package/divider/_divider-theme.scss +3 -1
  46. package/divider/divider.scss +9 -25
  47. package/dl/_dl-theme.scss +5 -6
  48. package/dl/dl.scss +5 -19
  49. package/dropdown/_dropdown-theme.scss +21 -21
  50. package/dropdown/dropdown-item.scss +5 -11
  51. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  52. package/dropdown/dropdown.scss +6 -14
  53. package/esm2022/alert/alert.component.mjs +2 -2
  54. package/esm2022/badge/badge.component.mjs +2 -2
  55. package/esm2022/button/button.component.mjs +13 -6
  56. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  57. package/esm2022/checkbox/checkbox.mjs +2 -2
  58. package/esm2022/code-block/actionbar.component.mjs +2 -2
  59. package/esm2022/code-block/code-block.component.mjs +2 -2
  60. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  61. package/esm2022/core/locales/locale-service.mjs +5 -2
  62. package/esm2022/core/option/option.mjs +2 -2
  63. package/esm2022/core/select/common.mjs +120 -0
  64. package/esm2022/core/select/index.mjs +2 -1
  65. package/esm2022/core/version.mjs +2 -2
  66. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  67. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  68. package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
  69. package/esm2022/file-upload/multiple-file-upload.component.mjs +2 -2
  70. package/esm2022/file-upload/single-file-upload.component.mjs +2 -2
  71. package/esm2022/form-field/form-field.mjs +2 -2
  72. package/esm2022/form-field/hint.mjs +2 -2
  73. package/esm2022/form-field/password-hint.mjs +2 -2
  74. package/esm2022/icon/icon-item.component.mjs +16 -6
  75. package/esm2022/list/list-selection.component.mjs +2 -2
  76. package/esm2022/list/list.component.mjs +2 -2
  77. package/esm2022/markdown/markdown.component.mjs +2 -2
  78. package/esm2022/navbar/navbar-item.component.mjs +2 -2
  79. package/esm2022/navbar/navbar.component.mjs +2 -2
  80. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  81. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  82. package/esm2022/popover/popover.component.mjs +3 -3
  83. package/esm2022/radio/radio.component.mjs +2 -2
  84. package/esm2022/scrollbar/scrollbar.component.mjs +2 -2
  85. package/esm2022/select/select.component.mjs +18 -114
  86. package/esm2022/select/select.module.mjs +28 -28
  87. package/esm2022/table/table.component.mjs +2 -2
  88. package/esm2022/tabs/tab-group.component.mjs +54 -12
  89. package/esm2022/tabs/tab-header.component.mjs +2 -2
  90. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +2 -2
  91. package/esm2022/tags/tag-default-options.mjs +1 -1
  92. package/esm2022/tags/tag-input.mjs +17 -3
  93. package/esm2022/tags/tag-list.component.mjs +2 -2
  94. package/esm2022/tags/tag.component.mjs +2 -2
  95. package/esm2022/timepicker/timepicker.directive.mjs +10 -2
  96. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  97. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  98. package/esm2022/title/title.directive.mjs +2 -2
  99. package/esm2022/toast/toast.component.mjs +3 -3
  100. package/esm2022/toast/toast.service.mjs +17 -12
  101. package/esm2022/tooltip/tooltip.component.mjs +2 -2
  102. package/esm2022/tree/tree-option.component.mjs +2 -2
  103. package/esm2022/tree-select/tree-select.component.mjs +9 -37
  104. package/esm2022/tree-select/tree-select.module.mjs +31 -11
  105. package/fesm2022/koobiq-components-alert.mjs +2 -2
  106. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-badge.mjs +2 -2
  108. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  110. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  111. package/fesm2022/koobiq-components-button.mjs +12 -5
  112. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  114. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  115. package/fesm2022/koobiq-components-code-block.mjs +4 -4
  116. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  117. package/fesm2022/koobiq-components-core.mjs +124 -7
  118. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-datepicker.mjs +1 -1
  120. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-dropdown.mjs +5 -5
  122. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-file-upload.mjs +4 -4
  124. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-form-field.mjs +6 -6
  126. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-icon.mjs +14 -4
  128. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-list.mjs +4 -4
  130. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  132. package/fesm2022/koobiq-components-navbar.mjs +6 -6
  133. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-popover.mjs +4 -4
  135. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-radio.mjs +2 -2
  137. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-scrollbar.mjs +2 -2
  139. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-select.mjs +46 -142
  141. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-table.mjs +2 -2
  143. package/fesm2022/koobiq-components-tabs.mjs +56 -14
  144. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-tags.mjs +20 -7
  146. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-timepicker.mjs +9 -1
  148. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-timezone.mjs +6 -6
  150. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-title.mjs +1 -1
  152. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-toast.mjs +19 -13
  154. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  156. package/fesm2022/koobiq-components-tree-select.mjs +37 -44
  157. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-tree.mjs +2 -2
  159. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  160. package/file-upload/_file-upload-theme.scss +109 -68
  161. package/file-upload/file-upload.scss +0 -5
  162. package/file-upload/multiple-file-upload.component.scss +35 -99
  163. package/file-upload/single-file-upload.component.scss +12 -31
  164. package/form-field/_form-field-theme.scss +32 -34
  165. package/form-field/_hint-theme.scss +16 -19
  166. package/form-field/cleaner.scss +3 -8
  167. package/form-field/form-field.scss +11 -12
  168. package/form-field/hint.scss +5 -7
  169. package/form-field/password-toggle.scss +3 -9
  170. package/form-field/stepper.scss +4 -10
  171. package/icon/_icon-button-theme.scss +35 -35
  172. package/icon/_icon-item-theme.scss +46 -31
  173. package/icon/_icon-theme.scss +9 -15
  174. package/icon/icon-button.scss +5 -17
  175. package/icon/icon-item.component.d.ts +3 -1
  176. package/icon/icon-item.scss +12 -7
  177. package/icon/icon.scss +0 -5
  178. package/input/_input-theme.scss +2 -3
  179. package/input/input.scss +2 -1
  180. package/link/_link-theme.scss +25 -42
  181. package/list/_list-theme.scss +18 -17
  182. package/list/list.scss +3 -5
  183. package/loader-overlay/_loader-overlay-theme.scss +13 -16
  184. package/loader-overlay/loader-overlay.scss +9 -32
  185. package/markdown/_markdown-theme.scss +41 -44
  186. package/markdown/markdown.scss +38 -88
  187. package/modal/_modal-confirm.scss +2 -6
  188. package/modal/_modal-theme.scss +11 -12
  189. package/modal/modal.scss +18 -24
  190. package/navbar/_navbar-item_horizontal.scss +28 -28
  191. package/navbar/_navbar-item_vertical.scss +31 -30
  192. package/navbar/_navbar-theme.scss +21 -22
  193. package/navbar/navbar-brand.scss +24 -26
  194. package/navbar/navbar-divider.scss +4 -7
  195. package/navbar/navbar-item.scss +11 -13
  196. package/navbar/navbar.scss +2 -5
  197. package/navbar/vertical-navbar.scss +3 -5
  198. package/package.json +9 -9
  199. package/popover/_popover-theme.scss +9 -16
  200. package/popover/popover.scss +18 -24
  201. package/prebuilt-themes/dark-theme.css +1 -1
  202. package/prebuilt-themes/light-theme.css +1 -1
  203. package/progress-bar/_progress-bar-theme.scss +7 -10
  204. package/progress-bar/progress-bar.scss +6 -18
  205. package/progress-spinner/_progress-spinner-theme.scss +6 -7
  206. package/progress-spinner/progress-spinner.scss +8 -17
  207. package/radio/_radio-theme.scss +29 -37
  208. package/radio/radio.scss +20 -39
  209. package/risk-level/_risk-level-theme.scss +25 -30
  210. package/risk-level/risk-level.component.scss +5 -8
  211. package/schematics/ng-add/index.js +6 -6
  212. package/scrollbar/_scrollbar-component-theme.scss +14 -17
  213. package/scrollbar/scrollbar.component.scss +13 -20
  214. package/select/_select-theme.scss +14 -15
  215. package/select/select.component.d.ts +2 -32
  216. package/select/select.module.d.ts +1 -1
  217. package/select/select.scss +3 -10
  218. package/sidepanel/_sidepanel-theme.scss +8 -9
  219. package/sidepanel/sidepanel.scss +19 -30
  220. package/splitter/_splitter-theme.scss +3 -3
  221. package/table/_table-theme.scss +9 -8
  222. package/table/table.scss +12 -12
  223. package/tabs/_tabs-common.scss +4 -7
  224. package/tabs/_tabs-theme.scss +77 -44
  225. package/tabs/tab-group.component.d.ts +9 -3
  226. package/tabs/tab-group.scss +2 -7
  227. package/tabs/tab-header.scss +0 -4
  228. package/tabs/tab-nav-bar/tab-nav-bar.scss +2 -7
  229. package/tags/_tag-theme.scss +23 -26
  230. package/tags/tag-default-options.d.ts +1 -0
  231. package/tags/tag-input.d.ts +7 -1
  232. package/tags/tag-list.scss +6 -5
  233. package/tags/tag.scss +6 -9
  234. package/textarea/_textarea-theme.scss +2 -4
  235. package/textarea/textarea.scss +4 -6
  236. package/timepicker/timepicker.scss +2 -7
  237. package/timezone/_timezone-option-theme.scss +8 -9
  238. package/timezone/timezone-option.component.scss +5 -7
  239. package/timezone/timezone-select.component.d.ts +2 -1
  240. package/timezone/timezone-select.component.scss +2 -3
  241. package/toast/_toast-theme.scss +15 -14
  242. package/toast/toast-container.component.scss +4 -7
  243. package/toast/toast.component.scss +20 -25
  244. package/toast/toast.service.d.ts +8 -4
  245. package/toggle/_toggle-theme.scss +48 -42
  246. package/toggle/toggle.scss +9 -21
  247. package/tooltip/_tooltip-theme.scss +13 -16
  248. package/tooltip/tooltip.scss +8 -10
  249. package/tree/_tree-theme.scss +20 -22
  250. package/tree/toggle.scss +3 -5
  251. package/tree/tree-option.scss +5 -6
  252. package/tree-select/_tree-select-theme.scss +12 -14
  253. package/tree-select/tree-select.component.d.ts +4 -17
  254. package/tree-select/tree-select.module.d.ts +1 -2
  255. package/tree-select/tree-select.scss +1 -5
  256. package/core/styles/_variables.scss +0 -1
@@ -2,96 +2,111 @@
2
2
  @use 'sass:map';
3
3
 
4
4
  @use '../core/styles/typography/typography-utils' as *;
5
+ @use '../core/styles/common/tokens' as *;
5
6
 
6
7
 
7
- @mixin kbq-tab-item-state($state) {
8
- background: map.get($state, background);
9
- color: map.get($state, text);
8
+ @mixin kbq-tab-item-state($component, $type, $sub-type, $style-name) {
9
+ $style: map.get($component, $type, $sub-type, $style-name);
10
+
11
+ $base: tabs-tab-item-#{$type}-#{$sub-type}-#{$style-name};
12
+
13
+ background: kbq-css-variable(#{$base}-background, map.get($style, background));
14
+ color: kbq-css-variable(#{$base}-text, map.get($style, text));
10
15
 
11
16
  & .kbq-icon {
12
- color: map.get($state, icon);
17
+ color: kbq-css-variable(#{$base}-icon, map.get($style, icon));
13
18
  }
14
19
  }
15
20
 
16
- @mixin kbq-tab-item-style($tab-item) {
17
- @include kbq-tab-item-state(map.get($tab-item, default));
21
+ @mixin kbq-tab-item-style($component, $type, $sub-type) {
22
+ @include kbq-tab-item-state($component, $type, $sub-type, default);
18
23
 
19
24
  &:hover:not(.kbq-disabled) {
20
- @include kbq-tab-item-state(map.get($tab-item, hover));
25
+ @include kbq-tab-item-state($component, $type, $sub-type, states-hover);
21
26
  }
22
27
 
23
28
  &.kbq-selected {
24
- @include kbq-tab-item-state(map.get($tab-item, selected));
29
+ @include kbq-tab-item-state($component, $type, $sub-type, states-selected);
25
30
 
26
31
  &:hover {
27
- @include kbq-tab-item-state(map.get($tab-item, selected-hover));
32
+ @include kbq-tab-item-state($component, $type, $sub-type, states-selected-hover);
28
33
  }
29
34
  }
30
35
 
31
36
  &.cdk-keyboard-focused {
32
- border-color: map.get(map.get($tab-item, focused), border-color);
37
+ border-color: kbq-css-variable(
38
+ tabs-tab-item-#{$type}-#{$sub-type}-states-focused-border-color,
39
+ map.get($component, $type, $sub-type, states-focused, border-color)
40
+ );
33
41
  }
34
42
 
35
43
  &.kbq-disabled {
36
- @include kbq-tab-item-state(map.get($tab-item, disabled));
44
+ @include kbq-tab-item-state($component, $type, $sub-type, states-disabled);
37
45
 
38
46
  &.kbq-selected {
39
- @include kbq-tab-item-state(map.get($tab-item, selected-disabled));
47
+ @include kbq-tab-item-state($component, $type, $sub-type, states-selected-disabled);
40
48
  }
41
49
  }
42
50
  }
43
51
 
44
- @mixin kbq-tab-stack-style($tab-stack) {
45
- .kbq-tab-header {
46
- background: map.get($tab-stack, background);
47
- }
48
- }
49
-
50
52
  //noinspection ALL
51
53
  @mixin kbq-tabs-theme($theme) {
52
54
  $tab-item: map.get(map.get($theme, components), tab-item);
53
-
54
55
  $tab-stack: map.get(map.get($theme, components), tab-stack);
55
56
 
56
- $tab-stack_filled: map.get($tab-stack, filled);
57
- $tab-item_filled: map.get($tab-item, filled);
58
-
59
- $tab-stack_transparent: map.get($tab-stack, transparent);
60
- $tab-item_transparent: map.get($tab-item, transparent);
61
-
62
57
  .kbq-tab-group {
63
58
  &.kbq-tab-group_filled {
64
59
  &.kbq-tab-group_on-background {
65
- @include kbq-tab-stack-style(map.get($tab-stack_filled, on-background));
60
+ .kbq-tab-header {
61
+ background: kbq-css-variable(
62
+ tabs-tab-stack-filled-on-background-background,
63
+ map.get($tab-stack, filled, on-background, background)
64
+ );
65
+ }
66
66
 
67
67
  & .kbq-tab-label {
68
- @include kbq-tab-item-style(map.get($tab-item_filled, on-background));
68
+ @include kbq-tab-item-style($tab-item, filled, on-background);
69
69
  }
70
70
  }
71
71
 
72
72
  &.kbq-tab-group_on-surface {
73
- @include kbq-tab-stack-style(map.get($tab-stack_filled, on-surface));
73
+ .kbq-tab-header {
74
+ background: kbq-css-variable(
75
+ tabs-tab-stack-filled-on-surface-background,
76
+ map.get($tab-stack, filled, on-surface, background)
77
+ );
78
+ }
74
79
 
75
80
  & .kbq-tab-label {
76
- @include kbq-tab-item-style(map.get($tab-item_filled, on-background));
81
+ @include kbq-tab-item-style($tab-item, filled, on-background);
77
82
  }
78
83
  }
79
84
  }
80
85
 
81
86
  &.kbq-tab-group_transparent {
82
87
  &.kbq-tab-group_on-background {
83
- @include kbq-tab-stack-style(map.get($tab-stack_transparent, on-background));
88
+ .kbq-tab-header {
89
+ background: kbq-css-variable(
90
+ tabs-tab-stack-transparent-on-background-background,
91
+ map.get($tab-stack, transparent, on-background, background)
92
+ );
93
+ }
84
94
 
85
95
  & .kbq-tab-label {
86
- @include kbq-tab-item-style(map.get($tab-item_transparent, on-background));
96
+ @include kbq-tab-item-style($tab-item, transparent, on-background);
87
97
  }
88
98
  }
89
99
 
90
100
  &.kbq-tab-group_on-surface {
91
- @include kbq-tab-stack-style(map.get($tab-stack_transparent, on-surface));
101
+ .kbq-tab-header {
102
+ background: kbq-css-variable(
103
+ tabs-tab-stack-transparent-on-surface-background,
104
+ map.get($tab-stack, transparent, on-surface, background)
105
+ );
106
+ }
92
107
 
93
108
  & .kbq-tab-label {
94
- @include kbq-tab-item-style(map.get($tab-item_transparent, on-background));
109
+ @include kbq-tab-item-style($tab-item, transparent, on-background);
95
110
  }
96
111
  }
97
112
  }
@@ -100,36 +115,56 @@
100
115
  .kbq-tab-nav-bar {
101
116
  &.kbq-tab-nav-bar_filled {
102
117
  &.kbq-tab-nav-bar_on-background {
103
- @include kbq-tab-stack-style(map.get($tab-stack_filled, on-background));
118
+ .kbq-tab-header {
119
+ background: kbq-css-variable(
120
+ tabs-tab-stack-filled-on-background-background,
121
+ map.get($tab-stack, filled, on-background, background)
122
+ );
123
+ }
104
124
 
105
125
  & .kbq-tab-link {
106
- @include kbq-tab-item-style(map.get($tab-item_filled, on-background));
126
+ @include kbq-tab-item-style($tab-item, filled, on-background);
107
127
  }
108
128
  }
109
129
 
110
130
  &.kbq-tab-nav-bar_on-surface {
111
- @include kbq-tab-stack-style(map.get($tab-stack_filled, on-surface));
131
+ .kbq-tab-header {
132
+ background: kbq-css-variable(
133
+ tabs-tab-stack-filled-on-surface-background,
134
+ map.get($tab-stack, filled, on-surface, background)
135
+ );
136
+ }
112
137
 
113
138
  & .kbq-tab-link {
114
- @include kbq-tab-item-style(map.get($tab-item_filled, on-background));
139
+ @include kbq-tab-item-style($tab-item, filled, on-background);
115
140
  }
116
141
  }
117
142
  }
118
143
 
119
144
  &.kbq-tab-nav-bar_transparent {
120
145
  &.kbq-tab-nav-bar_on-background {
121
- @include kbq-tab-stack-style(map.get($tab-stack_transparent, on-background));
146
+ .kbq-tab-header {
147
+ background: kbq-css-variable(
148
+ tabs-tab-stack-transparent-on-background-background,
149
+ map.get($tab-stack, transparent, on-background, background)
150
+ );
151
+ }
122
152
 
123
153
  & .kbq-tab-link {
124
- @include kbq-tab-item-style(map.get($tab-item_transparent, on-background));
154
+ @include kbq-tab-item-style($tab-item, transparent, on-background);
125
155
  }
126
156
  }
127
157
 
128
158
  &.kbq-tab-nav-bar_on-surface {
129
- @include kbq-tab-stack-style(map.get($tab-stack_transparent, on-surface));
159
+ .kbq-tab-header {
160
+ background: kbq-css-variable(
161
+ tabs-tab-stack-transparent-on-surface-background,
162
+ map.get($tab-stack, transparent, on-surface, background)
163
+ );
164
+ }
130
165
 
131
166
  & .kbq-tab-link {
132
- @include kbq-tab-item-style(map.get($tab-item_transparent, on-background));
167
+ @include kbq-tab-item-style($tab-item, transparent, on-background);
133
168
  }
134
169
  }
135
170
  }
@@ -137,10 +172,8 @@
137
172
  }
138
173
 
139
174
  @mixin kbq-tabs-typography($config) {
140
- $tokens: map.get($config, tokens);
141
-
142
175
  .kbq-tab-label,
143
176
  .kbq-tab-link {
144
- @include kbq-typography-level-to-styles($config, map.get($tokens, tabs-font-text));
177
+ @include kbq-typography-css-variables(tabs, text);
145
178
  }
146
179
  }
@@ -43,6 +43,7 @@ export declare class KbqTabGroupBase {
43
43
  }
44
44
  /** @docs-private */
45
45
  export declare const KbqTabGroupMixinBase: CanDisableCtor & typeof KbqTabGroupBase;
46
+ export type KbqTabSelectBy = string | number | ((tabs: KbqTab[]) => KbqTab | null);
46
47
  /**
47
48
  * Tab-group component. Supports basic tab pairs (label + content) and includes
48
49
  * keyboard navigation.
@@ -64,20 +65,23 @@ export declare class KbqTabGroup extends KbqTabGroupMixinBase implements AfterCo
64
65
  get selectedIndex(): number | null;
65
66
  set selectedIndex(value: number | null);
66
67
  private _selectedIndex;
68
+ get activeTab(): KbqTab | null;
69
+ set activeTab(value: KbqTabSelectBy | null);
67
70
  /** Position of the tab header. */
68
71
  headerPosition: KbqTabHeaderPosition;
69
72
  /** Duration for the tab animation. Must be a valid CSS value (e.g. 600ms). */
70
73
  animationDuration: string;
71
74
  /** Output to enable support for two-way binding on `[(selectedIndex)]` */
72
75
  readonly selectedIndexChange: EventEmitter<number>;
76
+ /** Event emitted when the tab selection has changed. */
77
+ readonly activeTabChange: EventEmitter<string | number | KbqTab>;
73
78
  /** Event emitted when focus has changed within a tab group. */
74
79
  readonly focusChange: EventEmitter<KbqTabChangeEvent>;
75
80
  /** Event emitted when the body animation has completed */
76
81
  readonly animationDone: EventEmitter<void>;
77
82
  /** Event emitted when the tab selection has changed. */
78
83
  readonly selectedTabChange: EventEmitter<KbqTabChangeEvent>;
79
- /** The tab index that should be selected after the content has been checked. */
80
- private indexToSelect;
84
+ private attributeToSelectBy;
81
85
  /** Snapshot of the height of the tab body wrapper before another tab is activated. */
82
86
  private tabBodyWrapperHeight;
83
87
  /** Subscription to tabs being added/removed. */
@@ -114,6 +118,7 @@ export declare class KbqTabGroup extends KbqTabGroupMixinBase implements AfterCo
114
118
  handleClick(tab: KbqTab, tabHeader: KbqTabHeader, index: number): void;
115
119
  /** Retrieves the tabindex for the tab. */
116
120
  getTabIndex(tab: KbqTab, index: number): number | null;
121
+ onSelectFocusedIndex($event: number): void;
117
122
  private checkOverflow;
118
123
  private createChangeEvent;
119
124
  /**
@@ -126,6 +131,7 @@ export declare class KbqTabGroup extends KbqTabGroupMixinBase implements AfterCo
126
131
  private subscribeToResize;
127
132
  /** Clamps the given index to the bounds of 0 and the tabs length. */
128
133
  private clampTabIndex;
134
+ private getTabIndexToSelect;
129
135
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTabGroup, [null, null, { attribute: "vertical"; }, { optional: true; }]>;
130
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqTabGroup, "kbq-tab-group", ["kbqTabGroup"], { "disabled": { "alias": "disabled"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "onSurface": { "alias": "onSurface"; "required": false; }; "dynamicHeight": { "alias": "dynamicHeight"; "required": false; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "headerPosition": { "alias": "headerPosition"; "required": false; }; "animationDuration": { "alias": "animationDuration"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; "focusChange": "focusChange"; "animationDone": "animationDone"; "selectedTabChange": "selectedTabChange"; }, ["tabs"], never, false, never>;
136
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqTabGroup, "kbq-tab-group", ["kbqTabGroup"], { "disabled": { "alias": "disabled"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "onSurface": { "alias": "onSurface"; "required": false; }; "dynamicHeight": { "alias": "dynamicHeight"; "required": false; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; }; "activeTab": { "alias": "activeTab"; "required": false; }; "headerPosition": { "alias": "headerPosition"; "required": false; }; "animationDuration": { "alias": "animationDuration"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; "activeTabChange": "activeTabChange"; "focusChange": "focusChange"; "animationDone": "animationDone"; "selectedTabChange": "selectedTabChange"; }, ["tabs"], never, false, never>;
131
137
  }
@@ -3,11 +3,9 @@
3
3
 
4
4
  @use '../core/styles/common/layout';
5
5
 
6
- @use '../core/styles/tokens';
6
+ @use '../core/styles/common/tokens' as *;
7
7
 
8
8
 
9
- $tokens: meta.module-variables(tokens) !default;
10
-
11
9
  .kbq-tab-group {
12
10
  display: flex;
13
11
  flex-direction: column;
@@ -24,10 +22,7 @@ $tokens: meta.module-variables(tokens) !default;
24
22
  flex-direction: row;
25
23
 
26
24
  .kbq-tab-list__content {
27
- gap: var(
28
- --kbq-tabs-size-tab-stack-vertical-content-gap-vartical,
29
- map.get($tokens, tabs-size-tab-stack-vertical-content-gap-vertical)
30
- ) 0;
25
+ gap: kbq-css-variable(tabs-size-tab-stack-vertical-content-gap-vertical) 0;
31
26
  }
32
27
 
33
28
  & .kbq-tab-header__content {
@@ -4,10 +4,6 @@
4
4
  @use '../core/styles/common/vendor-prefixes';
5
5
  @use 'tabs-common' as *;
6
6
 
7
- @use '../core/styles/tokens';
8
-
9
-
10
- $tokens: meta.module-variables(tokens) !default;
11
7
 
12
8
  .kbq-tab-header {
13
9
  display: flex;
@@ -3,11 +3,9 @@
3
3
 
4
4
  @use '../tabs-common';
5
5
 
6
- @use '../../core/styles/tokens';
6
+ @use '../../core/styles/common/tokens' as *;
7
7
 
8
8
 
9
- $tokens: meta.module-variables(tokens) !default;
10
-
11
9
  .kbq-tab-link {
12
10
  vertical-align: top;
13
11
  text-decoration: none;
@@ -38,9 +36,6 @@ $tokens: meta.module-variables(tokens) !default;
38
36
  &.kbq-tab-group_vertical {
39
37
  flex-direction: column;
40
38
  flex-grow: 0;
41
- gap: var(
42
- --kbq-tabs-size-tab-stack-vertical-content-gap-vartical,
43
- map.get($tokens, tabs-size-tab-stack-vertical-content-gap-vertical)
44
- ) 0;
39
+ gap: kbq-css-variable(tabs-size-tab-stack-vertical-content-gap-vertical) 0;
45
40
  }
46
41
  }
@@ -3,74 +3,71 @@
3
3
 
4
4
  @use '../core/styles/theming/theming' as *;
5
5
  @use '../core/styles/typography/typography-utils' as *;
6
+ @use '../core/styles/common/tokens' as *;
6
7
 
7
8
 
8
- @mixin kbq-tag-state($state) {
9
- background: map.get($state, background);
9
+ @mixin kbq-tag-state($component, $type, $style-name) {
10
+ $style: map.get($component, $type, $style-name);
11
+
12
+ $base: tag-#{$type}-#{$style-name};
13
+
14
+ background: kbq-css-variable(#{$base}-background, map.get($style, background));
10
15
 
11
16
  & .kbq-icon {
12
- color: map.get($state, icon);
17
+ color: kbq-css-variable(#{$base}-icon, map.get($style, icon));
13
18
  }
14
19
 
15
20
  & .kbq-tag__text {
16
- color: map.get($state, text);
21
+ color: kbq-css-variable(#{$base}-text, map.get($style, text));
17
22
  }
18
23
  }
19
24
 
20
- @mixin kbq-tag-color($tag) {
21
- $default: map.get($tag, default);
22
-
23
- @include kbq-tag-state($default);
25
+ @mixin kbq-tag-color($component, $type) {
26
+ @include kbq-tag-state($component, $type, default);
24
27
 
25
28
  &:hover,
26
29
  &.kbq-hovered {
27
- $hover: map.get($tag, hover);
28
-
29
- @include kbq-tag-state($hover);
30
+ @include kbq-tag-state($component, $type, hover);
30
31
  }
31
32
 
32
33
  &.kbq-focused {
33
- $focus: map.get($tag, focus);
34
+ @include kbq-tag-state($component, $type, focus);
34
35
 
35
- @include kbq-tag-state($focus);
36
-
37
- box-shadow: inset 0 0 0 1px map.get($focus, outline), 0 0 0 1px map.get($focus, outline);
36
+ box-shadow:
37
+ inset 0 0 0.1px 1px kbq-css-variable(tag-#{$type}-focus-outline, map.get($component, $type, focus, outline)),
38
+ 0 0 0.1px 1px kbq-css-variable(tag-#{$type}-focus-outline, map.get($component, $type, focus, outline));
38
39
  }
39
40
 
40
41
  &.kbq-disabled {
41
- $disabled: map.get($tag, disabled);
42
-
43
- @include kbq-tag-state($disabled);
42
+ @include kbq-tag-state($component, $type, disabled);
44
43
  }
45
44
  }
46
45
 
47
46
  @mixin kbq-tag-theme($theme) {
48
- $tag: map.get(map.get($theme, components), tag);
47
+ $tag: map.get($theme, components, tag);
49
48
 
50
49
  .kbq-tag {
51
50
  &.kbq-theme {
52
- @include kbq-tag-color(map.get($tag, theme-fade-on));
51
+ @include kbq-tag-color($tag, theme-fade-on);
53
52
  }
54
53
 
55
54
  &.kbq-contrast-fade {
56
- @include kbq-tag-color(map.get($tag, contrast-fade-on));
55
+ @include kbq-tag-color($tag, contrast-fade-on);
57
56
  }
58
57
 
59
58
  &.kbq-error {
60
- @include kbq-tag-color(map.get($tag, error-fade-on));
59
+ @include kbq-tag-color($tag, error-fade-on);
61
60
  }
62
61
  }
63
62
  }
64
63
 
65
64
  @mixin kbq-tag-typography($config) {
66
- $tokens: map.get($config, tokens);
67
-
68
65
  .kbq-tag {
69
- @include kbq-typography-level-to-styles($config, map.get($tokens, tag-font-default));
66
+ @include kbq-typography-css-variables(tag, default);
70
67
  }
71
68
 
72
69
  .kbq-tag-input {
73
- @include kbq-typography-level-to-styles($config, map.get($tokens, tag-input-font-default));
70
+ @include kbq-typography-css-variables(tag-input, default);
74
71
  }
75
72
  }
76
73
 
@@ -7,6 +7,7 @@ export interface KbqTagsDefaultOptions {
7
7
  separators?: {
8
8
  [key: number]: KbqTagSeparator;
9
9
  };
10
+ addOnPaste?: boolean;
10
11
  }
11
12
  /** Injection token to be used to override the default options for the chips module. */
12
13
  export declare const KBQ_TAGS_DEFAULT_OPTIONS: InjectionToken<KbqTagsDefaultOptions>;
@@ -56,6 +56,12 @@ export declare class KbqTagInput implements KbqTagTextControl, OnChanges {
56
56
  get addOnBlur(): boolean;
57
57
  set addOnBlur(value: boolean);
58
58
  private _addOnBlur;
59
+ /**
60
+ * Whether the tagEnd event will be emitted when the text pasted.
61
+ */
62
+ get addOnPaste(): boolean;
63
+ set addOnPaste(value: boolean);
64
+ private _addOnPaste;
59
65
  /** Whether the input is disabled. */
60
66
  get disabled(): boolean;
61
67
  set disabled(value: boolean);
@@ -88,5 +94,5 @@ export declare class KbqTagInput implements KbqTagTextControl, OnChanges {
88
94
  /** Checks whether a keycode is one of the configured separators. */
89
95
  private isSeparatorKey;
90
96
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTagInput, [null, null, null, { optional: true; self: true; }, { optional: true; self: true; }, { optional: true; self: true; }]>;
91
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTagInput, "input[kbqTagInputFor]", ["kbqTagInput", "kbqTagInputFor"], { "separatorKeyCodes": { "alias": "kbqTagInputSeparatorKeyCodes"; "required": false; }; "distinct": { "alias": "distinct"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tagList": { "alias": "kbqTagInputFor"; "required": false; }; "addOnBlur": { "alias": "kbqTagInputAddOnBlur"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "tagEnd": "kbqTagInputTokenEnd"; }, never, never, false, never>;
97
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTagInput, "input[kbqTagInputFor]", ["kbqTagInput", "kbqTagInputFor"], { "separatorKeyCodes": { "alias": "kbqTagInputSeparatorKeyCodes"; "required": false; }; "distinct": { "alias": "distinct"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tagList": { "alias": "kbqTagInputFor"; "required": false; }; "addOnBlur": { "alias": "kbqTagInputAddOnBlur"; "required": false; }; "addOnPaste": { "alias": "kbqTagInputAddOnPaste"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "tagEnd": "kbqTagInputTokenEnd"; }, never, never, false, never>;
92
98
  }
@@ -2,6 +2,7 @@
2
2
  @use 'sass:map';
3
3
 
4
4
  @use '../core/styles/tokens';
5
+ @use '../core/styles/common/tokens' as *;
5
6
 
6
7
 
7
8
  $tokens: meta.module-variables(tokens) !default;
@@ -26,8 +27,8 @@ $tokens: meta.module-variables(tokens) !default;
26
27
 
27
28
  min-height: unset;
28
29
 
29
- padding-top: var(--kbq-tag-size-padding-vertical, map.get($tokens, tag-size-padding-vertical));
30
- padding-bottom: var(--kbq-tag-size-padding-vertical, map.get($tokens, tag-size-padding-vertical));
30
+ padding-top: kbq-css-variable(tag-size-padding-vertical);
31
+ padding-bottom: kbq-css-variable(tag-size-padding-vertical);
31
32
  padding-left: 4px;
32
33
  padding-right: unset;
33
34
  }
@@ -41,7 +42,7 @@ $tokens: meta.module-variables(tokens) !default;
41
42
 
42
43
  min-width: 0;
43
44
 
44
- gap: var(--kbq-tag-list-size-content-gap, map.get($tokens, tag-list-size-content-gap));
45
+ gap: kbq-css-variable(tag-list-size-content-gap);
45
46
 
46
47
  & .kbq-tag-input {
47
48
  max-width: 100%;
@@ -66,11 +67,11 @@ $tokens: meta.module-variables(tokens) !default;
66
67
  var(--kbq-tag-input-size-padding-vertical, #{$padding-vertical}) -
67
68
  var(--kbq-form-field-size-border-width, $border-width)
68
69
  )
69
- var(--kbq-tag-input-size-padding-right, map.get($tokens, tag-input-size-padding-right))
70
+ kbq-css-variable(tag-input-size-padding-right)
70
71
  calc(
71
72
  var(--kbq-tag-input-size-padding-vertical, #{$padding-vertical}) -
72
73
  var(--kbq-form-field-size-border-width, $border-width)
73
74
  )
74
- var(--kbq-tag-input-size-padding-left, map.get($tokens, tag-input-size-padding-left));
75
+ kbq-css-variable(tag-input-size-padding-left);
75
76
  }
76
77
  }
package/tags/tag.scss CHANGED
@@ -1,11 +1,9 @@
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
- $tokens: meta.module-variables(tokens) !default;
8
-
9
7
  .kbq-tag {
10
8
  position: relative;
11
9
 
@@ -14,8 +12,8 @@ $tokens: meta.module-variables(tokens) !default;
14
12
  max-width: 100%;
15
13
 
16
14
  padding:
17
- var(--kbq-tag-size-padding-vertical, map.get($tokens, tag-size-padding-vertical))
18
- var(--kbq-tag-size-padding-horizontal, map.get($tokens, tag-size-padding-horizontal));
15
+ kbq-css-variable(tag-size-padding-vertical)
16
+ kbq-css-variable(tag-size-padding-horizontal);
19
17
 
20
18
  border-radius: 4px;
21
19
 
@@ -32,8 +30,7 @@ $tokens: meta.module-variables(tokens) !default;
32
30
 
33
31
  flex-shrink: 0;
34
32
 
35
- margin-right:
36
- var(--kbq-tag-size-close-button-margin-right, map.get($tokens, tag-size-close-button-margin-right));
33
+ margin-right: kbq-css-variable(tag-size-close-button-margin-right);
37
34
 
38
35
  &:hover {
39
36
  cursor: pointer;
@@ -49,11 +46,11 @@ $tokens: meta.module-variables(tokens) !default;
49
46
  white-space: nowrap;
50
47
  overflow: hidden;
51
48
 
52
- margin: 0 var(--kbq-tag-size-content-gap-horizontal, map.get($tokens, tag-size-content-gap-horizontal));
49
+ margin: 0 kbq-css-variable(tag-size-content-gap-horizontal);
53
50
  }
54
51
 
55
52
  & .kbq-icon_left {
56
- margin-left: var(--kbq-tag-size-icon-margin-left, map.get($tokens, tag-size-icon-margin-left));
53
+ margin-left: kbq-css-variable(tag-size-icon-margin-left);
57
54
  }
58
55
  }
59
56
 
@@ -1,13 +1,11 @@
1
1
  @use 'sass:meta';
2
2
  @use 'sass:map';
3
3
 
4
- @use '../core/styles/typography/typography-utils' as *;
4
+ @use '../core/styles/common/tokens' as *;
5
5
 
6
6
 
7
7
  @mixin kbq-textarea-typography($config) {
8
- $tokens: map.get($config, tokens);
9
-
10
8
  .kbq-textarea {
11
- @include kbq-typography-level-to-styles($config, map.get($tokens, textarea-font-default));
9
+ @include kbq-typography-css-variables(textarea, default);
12
10
  }
13
11
  }
@@ -1,11 +1,9 @@
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
- $tokens: meta.module-variables(tokens) !default;
8
-
9
7
  .kbq-textarea {
10
8
  display: inline-block;
11
9
 
@@ -22,8 +20,8 @@ $tokens: meta.module-variables(tokens) !default;
22
20
  box-sizing: border-box;
23
21
 
24
22
  padding:
25
- var(--kbq-textarea-size-padding-vertical, map.get($tokens, textarea-size-padding-vertical))
26
- var(--kbq-textarea-size-padding-horizontal, map.get($tokens, textarea-size-padding-horizontal));
23
+ kbq-css-variable(textarea-size-padding-vertical)
24
+ kbq-css-variable(textarea-size-padding-horizontal);
27
25
 
28
26
  -webkit-appearance: none; // Chrome textarea height sizing fix
29
27
  vertical-align: bottom; // Chrome textarea height sizing fix
@@ -35,7 +33,7 @@ $tokens: meta.module-variables(tokens) !default;
35
33
 
36
34
  &.kbq-textarea-resizable {
37
35
  resize: vertical;
38
- min-height: var(--kbq-textarea-size-min-height, map.get($tokens, textarea-size-min-height));
36
+ min-height: kbq-css-variable(textarea-size-min-height);
39
37
  }
40
38
  }
41
39
 
@@ -1,16 +1,11 @@
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
- $tokens: meta.module-variables(tokens) !default;
8
-
9
7
  .kbq-timepicker {
10
- padding-right: calc(
11
- var(--kbq-timepicker-size-padding-right, #{map.get($tokens, timepicker-size-padding-right)}) -
12
- var(--kbq-form-field-size-border-width, #{map.get($tokens, form-field-size-border-width)})
13
- );
8
+ padding-right: kbq-css-variable(timepicker-size-padding-right);
14
9
  }
15
10
 
16
11
  .kbq-form-field-type-timepicker {