@koobiq/components 20.0.0 → 20.2.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 (231) hide show
  1. package/accordion/_accordion-theme.scss +1 -1
  2. package/accordion/accordion-tokens.scss +1 -0
  3. package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +4 -18
  4. package/accordion/{accordion.component.scss → accordion.scss} +12 -5
  5. package/accordion/index.d.ts +215 -119
  6. package/actions-panel/index.d.ts +1 -0
  7. package/alert/_alert-theme.scss +14 -4
  8. package/alert/alert-tokens.scss +4 -4
  9. package/alert/alert.component.scss +24 -13
  10. package/alert/index.d.ts +63 -29
  11. package/app-switcher/app-switcher-dropdown-app.scss +2 -0
  12. package/autocomplete/autocomplete.scss +2 -1
  13. package/autocomplete/index.d.ts +35 -29
  14. package/badge/index.d.ts +2 -3
  15. package/breadcrumbs/breadcrumbs.scss +4 -0
  16. package/breadcrumbs/index.d.ts +2 -1
  17. package/button/button-group.scss +42 -2
  18. package/button-toggle/button-toggle.scss +23 -0
  19. package/button-toggle/index.d.ts +3 -1
  20. package/checkbox/checkbox.scss +5 -4
  21. package/clamped-text/index.d.ts +4 -2
  22. package/core/index.d.ts +515 -21
  23. package/core/styles/_core.scss +2 -0
  24. package/core/styles/common/_animation.scss +35 -24
  25. package/core/styles/common/_connected-overlay.scss +36 -0
  26. package/core/styles/common/_select.scss +7 -2
  27. package/core/styles/theming/_components-theming.scss +1 -1
  28. package/core/styles/theming/_scrollbar-theme.scss +4 -0
  29. package/datepicker/_datepicker-theme.scss +1 -1
  30. package/datepicker/datepicker-toggle.scss +3 -3
  31. package/dl/index.d.ts +1 -0
  32. package/dropdown/dropdown-item.scss +16 -0
  33. package/dropdown/dropdown-tokens.scss +2 -1
  34. package/dropdown/dropdown.scss +11 -2
  35. package/dropdown/index.d.ts +73 -6
  36. package/fesm2022/koobiq-components-accordion.mjs +406 -303
  37. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  38. package/fesm2022/koobiq-components-actions-panel.mjs +15 -6
  39. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  40. package/fesm2022/koobiq-components-alert.mjs +88 -48
  41. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-app-switcher.mjs +7 -7
  43. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-autocomplete.mjs +37 -23
  45. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-badge.mjs +5 -4
  47. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  48. package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
  49. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  50. package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
  51. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  52. package/fesm2022/koobiq-components-button.mjs +4 -4
  53. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  54. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  55. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-clamped-text.mjs +9 -0
  57. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-code-block.mjs +5 -1
  59. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-core.mjs +544 -113
  61. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-datepicker.mjs +13 -10
  63. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  64. package/fesm2022/koobiq-components-dl.mjs +3 -2
  65. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  66. package/fesm2022/koobiq-components-dropdown.mjs +105 -31
  67. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-file-upload.mjs +33 -22
  69. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-filter-bar.mjs +1169 -782
  71. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-flag.mjs +66 -0
  73. package/fesm2022/koobiq-components-flag.mjs.map +1 -0
  74. package/fesm2022/koobiq-components-form-field.mjs +6 -6
  75. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-icon.mjs +16 -7
  77. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-inline-edit.mjs +30 -7
  79. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-list.mjs +39 -20
  81. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  83. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-modal.mjs +9 -5
  85. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-navbar.mjs +123 -27
  87. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-notification-center.mjs +193 -19
  89. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
  91. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-popover.mjs +9 -4
  93. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
  95. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
  97. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-radio.mjs +3 -7
  99. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-search-expandable.mjs +43 -8
  101. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-select.mjs +72 -59
  103. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-sidebar.mjs +4 -0
  105. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
  107. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-skeleton.mjs +2 -2
  109. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-split-button.mjs +5 -12
  111. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-splitter.mjs +6 -2
  113. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-table.mjs +8 -6
  115. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-tabs.mjs +42 -18
  117. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-tags.mjs +8 -1
  119. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-textarea.mjs +7 -14
  121. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-time-range.mjs +4 -4
  123. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-timepicker.mjs +3 -4
  125. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  126. package/fesm2022/koobiq-components-timezone.mjs +9 -5
  127. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-title.mjs +132 -14
  129. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-toast.mjs +1 -1
  131. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  133. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-tooltip.mjs +168 -8
  135. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-tree-select.mjs +79 -38
  137. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-tree.mjs +67 -41
  139. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-username.mjs +16 -3
  141. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  142. package/file-upload/file-upload-tokens.scss +1 -0
  143. package/file-upload/index.d.ts +10 -7
  144. package/filter-bar/_filter-bar-theme.scss +82 -0
  145. package/filter-bar/filter-bar-tokens.scss +9 -0
  146. package/filter-bar/filter-bar.scss +10 -4
  147. package/filter-bar/filter-refresher.scss +1 -1
  148. package/filter-bar/filters.scss +25 -20
  149. package/filter-bar/index.d.ts +764 -336
  150. package/filter-bar/pipes/base-pipe.scss +12 -44
  151. package/filter-bar/pipes/pipe-date.scss +20 -14
  152. package/filter-bar/pipes/pipe-input.scss +10 -0
  153. package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
  154. package/filter-bar/pipes/pipe-multiselect.scss +5 -3
  155. package/filter-bar/pipes/pipe-readonly.scss +4 -13
  156. package/filter-bar/pipes/pipe-select.scss +3 -1
  157. package/filter-bar/pipes/pipe-tree-select.scss +3 -1
  158. package/flag/flag.scss +53 -0
  159. package/flag/index.d.ts +44 -0
  160. package/icon/icon-button.scss +3 -1
  161. package/icon/icon-item-tokens.scss +1 -1
  162. package/icon/index.d.ts +15 -2
  163. package/inline-edit/index.d.ts +5 -0
  164. package/inline-edit/inline-edit.scss +7 -7
  165. package/link/link-tokens.scss +2 -2
  166. package/list/index.d.ts +11 -2
  167. package/loader-overlay/loader-overlay-tokens.scss +1 -1
  168. package/modal/_modal-animation.scss +6 -6
  169. package/modal/_modal-theme.scss +5 -0
  170. package/modal/index.d.ts +3 -1
  171. package/modal/modal.scss +15 -0
  172. package/navbar/_navbar-item_vertical.scss +7 -5
  173. package/navbar/index.d.ts +39 -4
  174. package/navbar/navbar-brand.scss +17 -7
  175. package/navbar/navbar-item.scss +9 -0
  176. package/notification-center/_notification-center-theme.scss +2 -1
  177. package/notification-center/index.d.ts +89 -3
  178. package/notification-center/notification-center.scss +42 -4
  179. package/notification-center/notification-item.scss +3 -2
  180. package/overflow-items/index.d.ts +1 -0
  181. package/package.json +7 -3
  182. package/prebuilt-themes/dark-theme.css +1 -1
  183. package/prebuilt-themes/light-theme.css +1 -1
  184. package/prebuilt-themes/theme.css +1 -1
  185. package/progress-bar/progress-bar.scss +4 -0
  186. package/progress-spinner/progress-spinner.scss +5 -1
  187. package/radio/index.d.ts +1 -5
  188. package/radio/radio.scss +18 -4
  189. package/schematics/collection.json +15 -0
  190. package/schematics/migrations/alert-signals/README.md +64 -0
  191. package/schematics/migrations/alert-signals/data.js +70 -0
  192. package/schematics/migrations/alert-signals/index.js +350 -0
  193. package/schematics/migrations/alert-signals/schema.json +20 -0
  194. package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
  195. package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
  196. package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
  197. package/schematics/migrations/filter-bar-signals/README.md +66 -0
  198. package/schematics/migrations/filter-bar-signals/data.js +72 -0
  199. package/schematics/migrations/filter-bar-signals/index.js +316 -0
  200. package/schematics/migrations/filter-bar-signals/schema.json +20 -0
  201. package/schematics/migrations.json +15 -0
  202. package/schematics/ng-add/index.js +1 -1
  203. package/schematics/utils/angular-parsing.js +11 -2
  204. package/search-expandable/index.d.ts +3 -0
  205. package/select/index.d.ts +59 -24
  206. package/sidebar/index.d.ts +1 -0
  207. package/skeleton/skeleton.scss +4 -0
  208. package/split-button/_split-button-theme.scss +2 -2
  209. package/splitter/_splitter-theme.scss +2 -2
  210. package/splitter/index.d.ts +1 -0
  211. package/table/_table-theme.scss +4 -0
  212. package/table/index.d.ts +3 -2
  213. package/tabs/_tabs-common.scss +60 -31
  214. package/tabs/_tabs-theme.scss +12 -0
  215. package/tabs/index.d.ts +4 -2
  216. package/tabs/tab-header.scss +15 -0
  217. package/tabs/tab-nav-bar.scss +4 -0
  218. package/tabs/tabs-tokens.scss +2 -1
  219. package/textarea/index.d.ts +0 -1
  220. package/time-range/time-range.scss +0 -8
  221. package/timepicker/timepicker.scss +2 -2
  222. package/timezone/index.d.ts +2 -3
  223. package/title/index.d.ts +92 -2
  224. package/tooltip/index.d.ts +124 -7
  225. package/tree/_tree-theme.scss +2 -7
  226. package/tree/index.d.ts +19 -4
  227. package/tree/toggle.scss +5 -0
  228. package/tree/tree-option.scss +0 -4
  229. package/tree-select/_tree-select-theme.scss +1 -1
  230. package/tree-select/index.d.ts +53 -22
  231. package/username/index.d.ts +20 -2
package/select/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import { ConnectedPosition, CdkConnectedOverlay, CdkOverlayOrigin } from '@angul
9
9
  import { CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
10
10
  import { ControlValueAccessor, NgForm, FormGroupDirective, NgControl } from '@angular/forms';
11
11
  import * as i2 from '@koobiq/components/core';
12
- import { KbqAbstractSelect, CanUpdateErrorState, ErrorStateMatcher, KbqLocaleService, KbqOptionBase, ActiveDescendantKeyManager, KbqOption, KbqSelectTrigger, KbqSelectMatcher, KbqOptgroup, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqOptionSelectionChange, KbqVirtualOption, KbqComponentColors } from '@koobiq/components/core';
12
+ import { KbqAbstractSelect, CanUpdateErrorState, ErrorStateMatcher, KbqLocaleService, KbqPanelWidth, KbqPanelMinWidth, KbqPanelMaxWidth, KbqOptionBase, ActiveDescendantKeyManager, KbqOption, KbqSelectTrigger, KbqSelectMatcher, KbqOptgroup, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqOptionSelectionChange, KbqSelectAllEvent, KbqVirtualOption, KbqComponentColors } from '@koobiq/components/core';
13
13
  import * as i11 from '@koobiq/components/form-field';
14
14
  import { KbqFormFieldControl, KbqCleaner } from '@koobiq/components/form-field';
15
15
  import * as i4 from '@koobiq/components/tags';
@@ -53,6 +53,7 @@ declare class KbqOptionTooltip extends KbqTooltipTrigger implements AfterViewIni
53
53
  private readonly option;
54
54
  private readonly resizeObserver;
55
55
  private readonly contentObserver;
56
+ private readonly isBrowser;
56
57
  private readonly debounceInterval;
57
58
  private resizeSubscription;
58
59
  private contentObserverSubscription;
@@ -74,19 +75,27 @@ declare class KbqSelectChange {
74
75
  value: any;
75
76
  constructor(source: KbqSelect, value: any);
76
77
  }
77
- /** Select panel width type. */
78
- type KbqSelectPanelWidth = 'auto' | number | null;
78
+ /**
79
+ * Select panel width type.
80
+ * @deprecated Use `KbqPanelWidth` from `@koobiq/components/core` instead.
81
+ */
82
+ type KbqSelectPanelWidth = KbqPanelWidth;
79
83
  /** Options for the `kbq-select` that can be configured using the `KBQ_SELECT_OPTIONS` injection token. */
80
84
  type KbqSelectOptions = Partial<{
81
85
  /**
82
86
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
83
87
  * If set to null or an empty string, the panel will grow to match the longest option's text.
84
88
  */
85
- panelWidth: KbqSelectPanelWidth;
89
+ panelWidth: KbqPanelWidth;
86
90
  /**
87
91
  * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.
88
92
  */
89
- panelMinWidth: Exclude<KbqSelectPanelWidth, 'auto'>;
93
+ panelMinWidth: KbqPanelMinWidth;
94
+ /**
95
+ * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an
96
+ * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.
97
+ */
98
+ panelMaxWidth: KbqPanelMaxWidth;
90
99
  /**
91
100
  * Whether to enable hiding search by default if options is less than minimum.
92
101
  *
@@ -102,11 +111,16 @@ declare const KBQ_SELECT_OPTIONS: InjectionToken<Partial<{
102
111
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
103
112
  * If set to null or an empty string, the panel will grow to match the longest option's text.
104
113
  */
105
- panelWidth: KbqSelectPanelWidth;
114
+ panelWidth: KbqPanelWidth;
106
115
  /**
107
116
  * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.
108
117
  */
109
- panelMinWidth: Exclude<KbqSelectPanelWidth, "auto">;
118
+ panelMinWidth: KbqPanelMinWidth;
119
+ /**
120
+ * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an
121
+ * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.
122
+ */
123
+ panelMaxWidth: KbqPanelMaxWidth;
110
124
  /**
111
125
  * Whether to enable hiding search by default if options is less than minimum.
112
126
  *
@@ -144,11 +158,16 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
144
158
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
145
159
  * If set to null or an empty string, the panel will grow to match the longest option's text.
146
160
  */
147
- panelWidth: KbqSelectPanelWidth;
161
+ panelWidth: KbqPanelWidth;
148
162
  /**
149
163
  * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.
150
164
  */
151
- panelMinWidth: Exclude<KbqSelectPanelWidth, "auto">;
165
+ panelMinWidth: KbqPanelMinWidth;
166
+ /**
167
+ * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an
168
+ * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.
169
+ */
170
+ panelMaxWidth: KbqPanelMaxWidth;
152
171
  /**
153
172
  * Whether to enable hiding search by default if options is less than minimum.
154
173
  *
@@ -187,11 +206,20 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
187
206
  /** Strategy that will be used to handle scrolling while the select panel is open. */
188
207
  scrollStrategy: _angular_cdk_overlay_module_d.ScrollStrategy;
189
208
  /**
190
- * The y-offset of the overlay panel in relation to the trigger's top start corner.
191
- * This must be adjusted to align the selected option text over the trigger text
192
- * when the panel opens. Will change based on the y-position of the selected option.
209
+ * The y-offset of the overlay panel in relation to the trigger.
210
+ *
211
+ * @deprecated noop. The trigger↔panel gap is now controlled by the `--kbq-connected-overlay-gap` CSS
212
+ * variable (transparent padding inside the pane via the `kbq-connected-overlay_below/_above` panel
213
+ * classes), not by a physical overlay offset — so setting this has no effect. Will be removed in 21.0.0.
193
214
  */
194
215
  offsetY: number;
216
+ /**
217
+ * Minimum space to keep between the overlay and the viewport edge.
218
+ * At least `defaultOffsetY` so CDK's fit check — which runs before the `kbq-connected-overlay_below/_above`
219
+ * gap padding is applied to the pane — stays conservative enough to absorb that padding instead of
220
+ * letting the panel overflow the viewport by the size of the gap.
221
+ */
222
+ protected readonly viewportMargin: number;
195
223
  /**
196
224
  * This position config ensures that the top "start" corner of the overlay
197
225
  * is aligned with the top "start" of the origin by default (overlapping
@@ -283,6 +311,11 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
283
311
  readonly closedStream: Observable<void>;
284
312
  /** Event emitted when the selected value has been changed by the user. */
285
313
  readonly selectionChange: _angular_core.OutputEmitterRef<KbqSelectChange>;
314
+ /**
315
+ * Event emitted when all options are selected or deselected via the Ctrl/Cmd + A shortcut.
316
+ * Not emitted when a custom `selectAllHandler` is supplied — the handler owns the behaviour then.
317
+ */
318
+ readonly onSelectAll: _angular_core.OutputEmitterRef<KbqSelectAllEvent<KbqOption, KbqSelect>>;
286
319
  /**
287
320
  * Event that emits whenever the raw value of the select changes. This is here primarily
288
321
  * to facilitate the two-way binding for the `value` input.
@@ -346,6 +379,8 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
346
379
  * for primitive values where `value` itself is the display label.
347
380
  */
348
381
  readonly virtualOptionFactory: _angular_core.InputSignal<((value: any) => KbqVirtualOption) | undefined>;
382
+ /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */
383
+ readonly selectAllToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
349
384
  /**
350
385
  * Function for handling the Ctrl + A (select all) keyboard combination.
351
386
  * By default, the internal handler selects all options.
@@ -355,15 +390,22 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
355
390
  get selectAllHandler(): (event: KeyboardEvent, select: KbqSelect) => void;
356
391
  set selectAllHandler(fn: (event: KeyboardEvent, select: KbqSelect) => void);
357
392
  /**
358
- * Width of the panel. If set to `auto`, the panel will match the trigger width.
359
- * If set to null or an empty string, the panel will grow to match the longest option's text.
393
+ * Width of the panel. If set to `auto`, the panel will match the trigger width, but will never be
394
+ * narrower than `panelMinWidth`. If set to null or an empty string, the panel will grow to match the
395
+ * longest option's text. Any other value is used as an exact width, and `panelMinWidth` is not applied.
360
396
  */
361
- panelWidth: KbqSelectPanelWidth;
397
+ readonly panelWidth: _angular_core.InputSignal<KbqPanelWidth>;
362
398
  /**
363
399
  * Minimum width of the panel in pixels.
364
400
  * If minWidth is larger than window width, it will be ignored.
365
401
  */
366
- panelMinWidth: Exclude<KbqSelectPanelWidth, 'auto'>;
402
+ readonly panelMinWidth: _angular_core.InputSignalWithTransform<KbqPanelMinWidth, unknown>;
403
+ /**
404
+ * Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes
405
+ * the panel narrower than the trigger, and never clamps an explicit `panelWidth`.
406
+ * When null, the `--kbq-panel-size-width-max` token applies.
407
+ */
408
+ readonly panelMaxWidth: _angular_core.InputSignalWithTransform<KbqPanelMaxWidth, unknown>;
367
409
  /** Value of the select control. Can be a single value or array of values for multiple selection. */
368
410
  get value(): any;
369
411
  set value(newValue: any);
@@ -429,10 +471,6 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
429
471
  private readonly uid;
430
472
  /** Subject that emits when the component visibility changes. */
431
473
  private visibleChanges;
432
- /** Width of the overlay panel in pixels or as a string. */
433
- protected overlayWidth: string | number;
434
- /** Minimum width of the overlay panel in pixels. */
435
- protected overlayMinWidth: string | number;
436
474
  /** Origin element for the overlay panel positioning. */
437
475
  protected overlayOrigin?: CdkOverlayOrigin | ElementRef;
438
476
  /** Flag indicating if the dropdown class has been added to the overlay container. */
@@ -655,8 +693,6 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
655
693
  private highlightCorrectOption;
656
694
  /** Scrolls the active option into view. */
657
695
  private scrollActiveOptionIntoView;
658
- /** Gets how wide the overlay panel should be. */
659
- private getOverlayWidth;
660
696
  /** Comparison function to specify which option is displayed. Defaults to object equality. */
661
697
  private _compareWith;
662
698
  /** Function for handling the combination Ctrl + A (select all). By default, the internal handler is used. */
@@ -676,9 +712,8 @@ declare class KbqSelect extends KbqAbstractSelect implements AfterContentInit, O
676
712
  /** Removes the dropdown class from the overlay container when select closes. */
677
713
  private removeClassFromOverlayContainer;
678
714
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqSelect, never>;
679
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "showPreselectedValues": { "alias": "showPreselectedValues"; "required": false; "isSignal": true; }; "triggerValuesLimit": { "alias": "triggerValuesLimit"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; "isSignal": true; }; "multiline": { "alias": "multiline"; "required": false; "isSignal": true; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "scrolledToBottomOffset": { "alias": "scrolledToBottomOffset"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "virtualOptionFactory": { "alias": "virtualOptionFactory"; "required": false; "isSignal": true; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "beforeOpened": "beforeOpened"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; "scrolledToBottom": "scrolledToBottom"; }, ["footer", "cdkVirtualForOf", "virtualScrollViewport", "customTrigger", "customMatcher", "customTagTemplateRef", "cleaner", "optionGroups", "search", "searchEmpty", "options"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "*", "kbq-select-footer,[kbq-select-footer]"], true, never>;
715
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqSelect, "kbq-select", ["kbqSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "showPreselectedValues": { "alias": "showPreselectedValues"; "required": false; "isSignal": true; }; "triggerValuesLimit": { "alias": "triggerValuesLimit"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; "isSignal": true; }; "multiline": { "alias": "multiline"; "required": false; "isSignal": true; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "scrolledToBottomOffset": { "alias": "scrolledToBottomOffset"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "virtualOptionFactory": { "alias": "virtualOptionFactory"; "required": false; "isSignal": true; }; "selectAllToggle": { "alias": "selectAllToggle"; "required": false; "isSignal": true; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; "isSignal": true; }; "panelMaxWidth": { "alias": "panelMaxWidth"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "beforeOpened": "beforeOpened"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "onSelectAll": "onSelectAll"; "valueChange": "valueChange"; "scrolledToBottom": "scrolledToBottom"; }, ["footer", "cdkVirtualForOf", "virtualScrollViewport", "customTrigger", "customMatcher", "customTagTemplateRef", "cleaner", "optionGroups", "search", "searchEmpty", "options"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "*", "kbq-select-footer,[kbq-select-footer]"], true, never>;
680
716
  static ngAcceptInputType_multiple: unknown;
681
- static ngAcceptInputType_panelMinWidth: unknown;
682
717
  static ngAcceptInputType_tabIndex: unknown;
683
718
  static ngAcceptInputType_disabled: unknown;
684
719
  }
@@ -37,6 +37,7 @@ declare class KbqSidebar implements OnDestroy, AfterContentInit {
37
37
  protected readonly document: Document;
38
38
  private readonly renderer;
39
39
  private readonly changeDetectorRef;
40
+ private readonly isBrowser;
40
41
  get opened(): boolean;
41
42
  set opened(value: boolean);
42
43
  private _opened;
@@ -52,5 +52,9 @@
52
52
  var(--kbq-skeleton-animation-wave-end) 100%
53
53
  );
54
54
  animation: wave var(--kbq-skeleton-animation-duration) ease-in var(--kbq-skeleton-animation-delay) infinite;
55
+
56
+ @media (prefers-reduced-motion: reduce) {
57
+ animation: none;
58
+ }
55
59
  }
56
60
  }
@@ -1,7 +1,7 @@
1
1
  @mixin kbq-split-button-theme() {
2
2
  .kbq-split-button {
3
3
  &:hover:has(.kbq-button_transparent) {
4
- background: var(--kbq-states-background-transparent-hover, rgba(108, 115, 147, 0.08));
4
+ background: var(--kbq-states-background-transparent-hover);
5
5
  }
6
6
 
7
7
  & .kbq-split-button_item {
@@ -102,7 +102,7 @@
102
102
  }
103
103
 
104
104
  & .kbq-split-button_second:before {
105
- background: rgba(138, 143, 168, 0.6);
105
+ background: var(--kbq-states-line-disabled);
106
106
  }
107
107
  }
108
108
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  &:hover,
8
8
  &.kbq-gutter_dragged {
9
- background-color: rgba(106, 115, 150, 0.08);
9
+ background-color: var(--kbq-states-background-transparent-hover);
10
10
  }
11
11
 
12
12
  &.kbq-gutter_vertical {
@@ -21,6 +21,6 @@
21
21
  }
22
22
 
23
23
  .kbq-gutter-ghost {
24
- background: rgba(106, 115, 150, 0.16);
24
+ background: var(--kbq-states-background-transparent-active);
25
25
  }
26
26
  }
@@ -112,6 +112,7 @@ declare class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy {
112
112
  private splitter;
113
113
  readonly sizeChange: i0.OutputEmitterRef<number>;
114
114
  private readonly window;
115
+ private readonly platform;
115
116
  isResizing(): boolean;
116
117
  disableFlex(): void;
117
118
  ngAfterViewInit(): void;
@@ -16,7 +16,11 @@
16
16
  & > td {
17
17
  color: var(--kbq-foreground-contrast);
18
18
  }
19
+ }
20
+ }
19
21
 
22
+ &:not(.kbq-table_disable-hover) > tbody {
23
+ & > tr {
20
24
  &.kbq-hovered td,
21
25
  &:hover td {
22
26
  background-color: var(--kbq-states-background-transparent-hover);
package/table/index.d.ts CHANGED
@@ -4,9 +4,10 @@ import * as i1 from '@angular/cdk/a11y';
4
4
  import * as i2 from '@angular/cdk/platform';
5
5
 
6
6
  declare class KbqTable {
7
- readonly border: i0.InputSignal<boolean>;
7
+ readonly border: i0.InputSignalWithTransform<boolean, unknown>;
8
+ readonly disableHover: i0.InputSignalWithTransform<boolean, unknown>;
8
9
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTable, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqTable, "table[kbq-table]", ["kbqTable"], { "border": { "alias": "border"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqTable, "table[kbq-table]", ["kbqTable"], { "border": { "alias": "border"; "required": false; "isSignal": true; }; "disableHover": { "alias": "disableHover"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10
11
  }
11
12
  declare class KbqTableCellContent {
12
13
  readonly button: i0.Signal<KbqButton | undefined>;
@@ -33,25 +33,6 @@
33
33
 
34
34
  outline: none;
35
35
 
36
- &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
37
- padding-left: 14px;
38
- padding-right: 14px;
39
- }
40
-
41
- &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical).kbq-tab-label_with-icon-left {
42
- padding-left: tokens.kbq-difference-series-css-variables(
43
- [tabs-size-tab-item-padding-horizontal,
44
- tabs-size-tab-item-focus-outline-width]
45
- );
46
- }
47
-
48
- &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical).kbq-tab-label_with-icon-right {
49
- padding-right: tokens.kbq-difference-series-css-variables(
50
- [tabs-size-tab-item-padding-horizontal,
51
- tabs-size-tab-item-focus-outline-width]
52
- );
53
- }
54
-
55
36
  &.kbq-selected {
56
37
  cursor: default;
57
38
  }
@@ -75,30 +56,63 @@
75
56
  &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical):before {
76
57
  content: '';
77
58
  position: absolute;
78
- left: 0;
79
- right: 0;
80
- top: -10px;
81
- bottom: -10px;
59
+ inset: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)))
60
+ calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
61
+ }
62
+
63
+ &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical):not(.kbq-tab-label_icon-only):after {
64
+ content: '';
65
+ position: absolute;
66
+ left: calc(
67
+ var(--kbq-tabs-size-tab-item-padding-horizontal) - var(--kbq-tabs-size-tab-item-focus-outline-width)
68
+ );
69
+ right: calc(
70
+ var(--kbq-tabs-size-tab-item-padding-horizontal) - var(--kbq-tabs-size-tab-item-focus-outline-width)
71
+ );
72
+ bottom: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
73
+ height: 3px;
74
+ border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
75
+ background: transparent;
76
+ transition: background 0.2s ease-in-out;
77
+ pointer-events: none;
82
78
  }
83
79
 
84
80
  &.kbq-tab-label_icon-only {
85
81
  width: var(--kbq-size-3xl);
86
82
  height: var(--kbq-size-3xl);
87
83
  padding: 0 !important;
88
- margin-inline: var(--kbq-size-xs);
84
+ margin-inline: var(--kbq-size-xxs);
89
85
  box-sizing: content-box;
90
86
 
91
- // Keep the space between icon-only tabs clickable after adding margins.
87
+ &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
88
+ width: var(--kbq-tabs-size-tab-item-underlined-icon-only-size);
89
+ height: var(--kbq-tabs-size-tab-item-underlined-icon-only-size);
90
+
91
+ &:before {
92
+ left: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
93
+ right: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
94
+ }
95
+
96
+ &:after {
97
+ top: auto;
98
+ bottom: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
99
+ height: 3px;
100
+ left: calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
101
+ right: calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
102
+ border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
103
+ transition: background 0.2s ease-in-out;
104
+ pointer-events: none;
105
+ }
106
+ }
107
+
92
108
  &:not(.kbq-tab-label_vertical):after {
93
109
  content: '';
94
110
  display: block;
95
111
  position: absolute;
96
112
  top: 0;
97
113
  bottom: 0;
98
- // Absolute offsets are calculated from the padding box, so we add
99
- // focus outline width to fully cover the visual margin gap.
100
- left: calc(-1 * (var(--kbq-size-xs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
101
- right: calc(-1 * (var(--kbq-size-xs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
114
+ left: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
115
+ right: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
102
116
  background: transparent;
103
117
  }
104
118
  }
@@ -144,7 +158,18 @@
144
158
  }
145
159
 
146
160
  .kbq-tab-header_underlined:not(.kbq-tab-header_vertical) .kbq-tab-list__content {
147
- padding: 8px 0;
161
+ padding: var(--kbq-size-s) 0;
162
+
163
+ // Negative margin shifts the first tab left so the focus frame can extend beyond the
164
+ // container edge (instead of padding-left:0 which would clip it under overflow:hidden).
165
+ > .kbq-tab-label:first-child:not(.kbq-tab-label_icon-only),
166
+ > .kbq-tab-link:first-child {
167
+ margin-inline-start: calc(-1 * var(--kbq-tabs-size-tab-item-padding-horizontal));
168
+ }
169
+
170
+ > .kbq-tab-label_icon-only:first-child {
171
+ margin-inline-start: 0;
172
+ }
148
173
  }
149
174
 
150
175
  .kbq-tab-header_underlined:not(.kbq-tab-header_vertical):after {
@@ -166,8 +191,12 @@
166
191
  position: absolute;
167
192
  bottom: 0;
168
193
  height: 3px;
169
- border-radius: 2px 2px 0 0;
194
+ border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
170
195
  background: var(--kbq-line-contrast);
171
196
  transition: all 0.2s ease-in-out;
197
+
198
+ &.kbq-disabled {
199
+ background: var(--kbq-states-icon-disabled);
200
+ }
172
201
  }
173
202
  }
@@ -16,6 +16,14 @@
16
16
 
17
17
  &:is(:hover, .kbq-hover):not(.kbq-disabled) {
18
18
  @include kbq-tab-item-state($type, $sub-type, states-hover);
19
+
20
+ &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
21
+ background: transparent;
22
+
23
+ &:not(.kbq-selected)::after {
24
+ background: var(--kbq-line-contrast-fade);
25
+ }
26
+ }
19
27
  }
20
28
 
21
29
  &.kbq-tab-label_empty {
@@ -27,6 +35,10 @@
27
35
 
28
36
  &.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
29
37
  background: none;
38
+
39
+ &::after {
40
+ background: transparent;
41
+ }
30
42
  }
31
43
 
32
44
  &:is(:hover, .kbq-hover) {
package/tabs/index.d.ts CHANGED
@@ -408,10 +408,10 @@ declare class KbqTabHeader extends KbqPaginatedTabHeader {
408
408
  readonly tabList: ElementRef;
409
409
  readonly nextPaginator: ElementRef<HTMLElement>;
410
410
  readonly previousPaginator: ElementRef<HTMLElement>;
411
- /** Width of the active tab, adjusted for icon-only tab margins. */
411
+ private readonly isBrowser;
412
412
  protected get activeTabOffsetWidth(): number | undefined;
413
- /** Left offset of the active tab, adjusted for icon-only tab margins. */
414
413
  protected get activeTabOffsetLeft(): number | undefined;
414
+ protected get activeTabDisabled(): boolean;
415
415
  protected itemSelected(event: KeyboardEvent): void;
416
416
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTabHeader, never>;
417
417
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqTabHeader, "kbq-tab-header", never, { "underlined": { "alias": "underlined"; "required": false; "isSignal": true; }; }, { "selectFocusedIndex": "selectFocusedIndex"; "indexFocused": "indexFocused"; }, ["items"], ["*"], true, never>;
@@ -554,6 +554,7 @@ declare class KbqTabNavBar extends KbqPaginatedTabHeader implements AfterContent
554
554
  readonly nextPaginator: ElementRef<HTMLElement>;
555
555
  readonly previousPaginator: ElementRef<HTMLElement>;
556
556
  readonly items: QueryList<KbqTabLink>;
557
+ private readonly isBrowser;
557
558
  /** Whether the nav bar background should be transparent. */
558
559
  readonly transparent: i0.InputSignalWithTransform<boolean, unknown>;
559
560
  readonly onSurface: i0.InputSignalWithTransform<boolean, unknown>;
@@ -566,6 +567,7 @@ declare class KbqTabNavBar extends KbqPaginatedTabHeader implements AfterContent
566
567
  get role(): string | null;
567
568
  protected get activeTabOffsetWidth(): number | undefined;
568
569
  protected get activeTabOffsetLeft(): number | undefined;
570
+ protected get activeTabDisabled(): boolean;
569
571
  ngAfterContentInit(): void;
570
572
  protected itemSelected(): void;
571
573
  /** Notifies the component that the active link has been changed. */
@@ -8,6 +8,17 @@
8
8
  overflow: hidden;
9
9
  position: relative;
10
10
  flex-shrink: 0;
11
+ border-radius: var(--kbq-tabs-size-tab-stack-horizontal-border-radius);
12
+
13
+ &.kbq-tab-header_underlined {
14
+ .kbq-tab-group:not(.kbq-tab-group_on-surface) & {
15
+ border-radius: 0;
16
+ }
17
+
18
+ &:not(.kbq-tab-header__pagination-controls_enabled) {
19
+ overflow: visible;
20
+ }
21
+ }
11
22
  }
12
23
 
13
24
  .kbq-tab-list__content {
@@ -31,6 +42,10 @@
31
42
  flex-grow: 1;
32
43
  z-index: 1;
33
44
  overflow: hidden;
45
+
46
+ .kbq-tab-header_underlined:not(.kbq-tab-header__pagination-controls_enabled) & {
47
+ overflow: visible;
48
+ }
34
49
  }
35
50
 
36
51
  .kbq-tab-list {
@@ -13,6 +13,10 @@
13
13
  overflow: hidden;
14
14
  }
15
15
 
16
+ &.kbq-tab-header_underlined:not(.kbq-tab-header__pagination-controls_enabled) .kbq-tab-link__container {
17
+ overflow: visible;
18
+ }
19
+
16
20
  .kbq-tab-list {
17
21
  position: relative;
18
22
  width: 100%;
@@ -5,8 +5,9 @@
5
5
  --kbq-tabs-size-tab-item-content-gap-horizontal: var(--kbq-size-xxs);
6
6
  --kbq-tabs-size-tab-item-border-radius: var(--kbq-size-s);
7
7
  --kbq-tabs-size-tab-item-focus-outline-width: var(--kbq-size-3xs);
8
- --kbq-tabs-size-tab-stack-horizontal-border-radius: var(--kbq-size-s);
8
+ --kbq-tabs-size-tab-stack-horizontal-border-radius: var(--kbq-size-border-radius);
9
9
  --kbq-tabs-size-tab-stack-vertical-content-gap-vertical: var(--kbq-size-s);
10
+ --kbq-tabs-size-tab-item-underlined-icon-only-size: calc(var(--kbq-size-3xl) - var(--kbq-size-xxs));
10
11
  /* THEME TOKENS */
11
12
  --kbq-tabs-tab-item-filled-on-background-default-background: transparent;
12
13
  --kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);
@@ -88,7 +88,6 @@ declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, OnChanges
88
88
  private _id;
89
89
  private _required;
90
90
  private valueAccessor;
91
- private growSubscription;
92
91
  private lineHeight;
93
92
  private minHeight;
94
93
  private rowsCount;
@@ -33,14 +33,6 @@
33
33
  flex-direction: column;
34
34
  gap: var(--kbq-size-s);
35
35
 
36
- .kbq-time-range-editor__predefined {
37
- column-count: 2;
38
-
39
- .kbq-time-range-editor__predefined-option {
40
- display: block;
41
- }
42
- }
43
-
44
36
  .kbq-time-range-editor__date-time {
45
37
  display: flex;
46
38
  flex-direction: row;
@@ -1,8 +1,8 @@
1
1
  @use '../core/styles/common/tokens' as *;
2
2
 
3
3
  .kbq-timepicker {
4
- // FIXME: default token doesn't exist
5
- padding-right: var(--kbq-timepicker-size-padding-right);
4
+ // @TODO define --kbq-timepicker-size-padding-right in design-tokens; fallback keeps spacing meanwhile
5
+ padding-right: var(--kbq-timepicker-size-padding-right, var(--kbq-size-s));
6
6
  }
7
7
 
8
8
  .kbq-form-field-type-timepicker {
@@ -5,7 +5,7 @@ import { KbqOption } from '@koobiq/components/core';
5
5
  import * as i6 from '@koobiq/components/tooltip';
6
6
  import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
7
7
  import * as i3 from '@koobiq/components/select';
8
- import { KbqSelect, KbqSelectPanelWidth } from '@koobiq/components/select';
8
+ import { KbqSelect } from '@koobiq/components/select';
9
9
  import * as i1 from '@angular/cdk/overlay';
10
10
  import * as i4 from '@koobiq/components/icon';
11
11
  import * as i5 from '@koobiq/components/tags';
@@ -48,6 +48,7 @@ declare class KbqTimezoneOptionTooltip extends KbqTooltipTrigger implements Afte
48
48
  private readonly changeDetectorRef;
49
49
  private readonly resizeObserver;
50
50
  private readonly contentObserver;
51
+ private readonly platform;
51
52
  private readonly debounceInterval;
52
53
  private resizeSubscription;
53
54
  private contentObserverSubscription;
@@ -68,8 +69,6 @@ declare class KbqTimezoneSelectTrigger {
68
69
  }
69
70
  declare class KbqTimezoneSelect extends KbqSelect implements AfterContentInit {
70
71
  readonly customTrigger: i0.Signal<KbqTimezoneSelectTrigger | undefined>;
71
- panelWidth: KbqSelectPanelWidth;
72
- panelMinWidth: number;
73
72
  ngAfterContentInit(): void;
74
73
  private updateLocaleParamsForSearch;
75
74
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimezoneSelect, never>;