@koobiq/components 19.5.0 → 19.6.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 (185) hide show
  1. package/accordion/accordion-content.directive.d.ts +4 -0
  2. package/accordion/accordion-trigger.directive.d.ts +4 -0
  3. package/actions-panel/actions-panel-container.scss +6 -0
  4. package/actions-panel/actions-panel-tokens.scss +4 -1
  5. package/autocomplete/autocomplete.component.d.ts +6 -1
  6. package/autocomplete/autocomplete.module.d.ts +1 -1
  7. package/autocomplete/autocomplete.scss +14 -3
  8. package/badge/badge-tokens.scss +3 -3
  9. package/button/button-group.d.ts +45 -0
  10. package/button/button-group.scss +17 -0
  11. package/button/button.component.d.ts +3 -0
  12. package/button/button.module.d.ts +2 -1
  13. package/button/public-api.d.ts +1 -0
  14. package/button-toggle/button-toggle-tokens.scss +1 -1
  15. package/checkbox/checkbox.d.ts +5 -4
  16. package/code-block/code-block-tokens.scss +35 -16
  17. package/code-block/code-block.d.ts +8 -3
  18. package/core/error/error-state-matcher.d.ts +10 -0
  19. package/core/forms/_forms.scss +10 -3
  20. package/core/option/_option-action-theme.scss +1 -0
  21. package/core/option/action-container.scss +4 -6
  22. package/core/option/option.scss +5 -0
  23. package/core/pop-up/pop-up-trigger.d.ts +1 -1
  24. package/core/select/common.d.ts +4 -4
  25. package/core/styles/common/_groups-mixins.scss +79 -0
  26. package/core/styles/common/_groups.scss +4 -34
  27. package/core/styles/common/_overlay.scss +4 -0
  28. package/core/styles/common/_select.scss +4 -0
  29. package/core/styles/theming/scrollbar-tokens.scss +6 -6
  30. package/core/styles/visual/_layout.scss +0 -2
  31. package/core/utils/utils.d.ts +2 -0
  32. package/datepicker/datepicker-input.directive.d.ts +1 -0
  33. package/dropdown/dropdown-trigger.directive.d.ts +5 -0
  34. package/ellipsis-center/ellipsis-center.directive.d.ts +0 -1
  35. package/fesm2022/koobiq-components-accordion.mjs +52 -30
  36. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-actions-panel.mjs +12 -12
  38. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-alert.mjs +16 -16
  40. package/fesm2022/koobiq-components-app-switcher.mjs +25 -25
  41. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-autocomplete.mjs +39 -23
  43. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-badge.mjs +14 -14
  45. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
  47. package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
  48. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-button.mjs +146 -24
  50. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-checkbox.mjs +17 -19
  52. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-clamped-text.mjs +13 -13
  54. package/fesm2022/koobiq-components-code-block.mjs +33 -20
  55. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-content-panel.mjs +28 -28
  57. package/fesm2022/koobiq-components-core.mjs +260 -238
  58. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-datepicker.mjs +40 -64
  60. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-divider.mjs +7 -7
  62. package/fesm2022/koobiq-components-dl.mjs +13 -13
  63. package/fesm2022/koobiq-components-dropdown.mjs +38 -21
  64. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  66. package/fesm2022/koobiq-components-ellipsis-center.mjs +8 -9
  67. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  69. package/fesm2022/koobiq-components-file-upload.mjs +39 -39
  70. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-filter-bar.mjs +109 -97
  72. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-form-field.mjs +67 -60
  74. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-icon.mjs +31 -27
  76. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-inline-edit.mjs +108 -68
  78. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-input.mjs +22 -22
  80. package/fesm2022/koobiq-components-link.mjs +17 -17
  81. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-list.mjs +19 -19
  83. package/fesm2022/koobiq-components-loader-overlay.mjs +28 -19
  84. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-markdown.mjs +54 -22
  86. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-modal.mjs +34 -28
  88. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
  90. package/fesm2022/koobiq-components-navbar.mjs +45 -45
  91. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-notification-center.mjs +16 -16
  93. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-overflow-items.mjs +16 -16
  95. package/fesm2022/koobiq-components-popover.mjs +52 -23
  96. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  98. package/fesm2022/koobiq-components-progress-spinner.mjs +14 -14
  99. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-radio.mjs +10 -10
  101. package/fesm2022/koobiq-components-resizer.mjs +10 -10
  102. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  103. package/fesm2022/koobiq-components-scrollbar.mjs +12 -12
  104. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-search-expandable.mjs +17 -8
  106. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-select.mjs +340 -57
  108. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  110. package/fesm2022/koobiq-components-sidepanel.mjs +27 -27
  111. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-skeleton.mjs +51 -18
  113. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-split-button.mjs +9 -9
  115. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  117. package/fesm2022/koobiq-components-table.mjs +10 -10
  118. package/fesm2022/koobiq-components-tabs.mjs +52 -52
  119. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-tags.mjs +30 -30
  121. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-textarea.mjs +7 -7
  123. package/fesm2022/koobiq-components-time-range.mjs +24 -24
  124. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-timepicker.mjs +10 -10
  126. package/fesm2022/koobiq-components-timezone.mjs +26 -26
  127. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-title.mjs +8 -9
  129. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-toast.mjs +16 -16
  131. package/fesm2022/koobiq-components-toggle.mjs +12 -9
  132. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-tooltip.mjs +84 -51
  134. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-top-bar.mjs +15 -15
  136. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-tree-select.mjs +12 -10
  138. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-tree.mjs +40 -41
  140. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-username.mjs +28 -28
  142. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  143. package/filter-bar/filter-search.d.ts +10 -1
  144. package/filter-bar/pipes/pipe-date.scss +2 -1
  145. package/form-field/form-field.d.ts +19 -1
  146. package/form-field/form-field.scss +22 -2
  147. package/icon/icon-button.component.d.ts +3 -0
  148. package/inline-edit/inline-edit-tokens.scss +3 -3
  149. package/inline-edit/inline-edit.d.ts +30 -11
  150. package/inline-edit/inline-edit.scss +28 -30
  151. package/link/_link-theme.scss +3 -1
  152. package/link/link-tokens.scss +7 -6
  153. package/link/link.component.d.ts +5 -4
  154. package/loader-overlay/_loader-overlay-theme.scss +12 -0
  155. package/loader-overlay/loader-overlay-tokens.scss +1 -0
  156. package/loader-overlay/loader-overlay.component.d.ts +7 -1
  157. package/markdown/_markdown-theme.scss +3 -31
  158. package/markdown/markdown-tokens.scss +0 -11
  159. package/markdown/markdown.component.d.ts +11 -6
  160. package/markdown/markdown.scss +0 -11
  161. package/navbar/navbar.scss +3 -0
  162. package/package.json +4 -5
  163. package/popover/popover.component.d.ts +15 -2
  164. package/prebuilt-themes/dark-theme.css +1 -1
  165. package/prebuilt-themes/light-theme.css +1 -1
  166. package/prebuilt-themes/theme.css +1 -1
  167. package/progress-spinner/progress-spinner.scss +1 -0
  168. package/schematics/ng-add/index.js +4 -5
  169. package/scrollbar/scrollbar-tokens.scss +7 -7
  170. package/search-expandable/search-expandable.d.ts +6 -2
  171. package/select/public-api.d.ts +1 -0
  172. package/select/select-common.d.ts +30 -0
  173. package/select/select.component.d.ts +192 -29
  174. package/select/select.module.d.ts +3 -2
  175. package/sidepanel/sidepanel-config.d.ts +6 -1
  176. package/skeleton/skeleton.d.ts +8 -4
  177. package/skeleton/skeleton.scss +19 -5
  178. package/split-button/_split-button-theme.scss +2 -1
  179. package/tags/tag-tokens.scss +4 -4
  180. package/title/title.directive.d.ts +0 -1
  181. package/toggle/toggle.component.d.ts +4 -3
  182. package/tooltip/tooltip-tokens.scss +4 -4
  183. package/tooltip/tooltip.component.d.ts +20 -2
  184. package/top-bar/top-bar.scss +3 -0
  185. package/tree/tree-option.scss +7 -0
@@ -1,9 +1,10 @@
1
+ import * as i0 from '@angular/core';
2
+ import { forwardRef, ContentChildren, SkipSelf, Directive, inject, ChangeDetectorRef, signal, effect, numberAttribute, booleanAttribute, Input, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, input, NgModule } from '@angular/core';
3
+ import { leftIconClassName, rightIconClassName, getNodesWithoutComments, KbqColorDirective, KbqComponentColors, KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';
1
4
  import * as i1 from '@angular/cdk/a11y';
2
5
  import { A11yModule } from '@angular/cdk/a11y';
3
6
  import { CdkObserveContent, ObserversModule } from '@angular/cdk/observers';
4
- import * as i0 from '@angular/core';
5
- import { forwardRef, ContentChildren, SkipSelf, Directive, inject, ChangeDetectorRef, numberAttribute, booleanAttribute, Input, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
6
- import { leftIconClassName, rightIconClassName, getNodesWithoutComments, KbqColorDirective, KbqComponentColors, KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';
7
+ import { toObservable } from '@angular/core/rxjs-interop';
7
8
  import { KbqIcon } from '@koobiq/components/icon';
8
9
  import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
9
10
  import { PlatformModule } from '@angular/cdk/platform';
@@ -60,10 +61,10 @@ class KbqButtonCssStyler {
60
61
  });
61
62
  }
62
63
  }
63
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonCssStyler, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
64
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqButtonCssStyler, isStandalone: true, selector: "[kbq-button]", host: { properties: { "class.kbq-button": "!isIconButton", "class.kbq-button-icon": "isIconButton" } }, queries: [{ propertyName: "icons", predicate: i0.forwardRef(() => KbqIcon) }], ngImport: i0 }); }
64
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonCssStyler, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
65
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqButtonCssStyler, isStandalone: true, selector: "[kbq-button]", host: { properties: { "class.kbq-button": "!isIconButton", "class.kbq-button-icon": "isIconButton" } }, queries: [{ propertyName: "icons", predicate: i0.forwardRef(() => KbqIcon) }], ngImport: i0 }); }
65
66
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonCssStyler, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonCssStyler, decorators: [{
67
68
  type: Directive,
68
69
  args: [{
69
70
  selector: '[kbq-button]',
@@ -86,12 +87,13 @@ class KbqButton extends KbqColorDirective {
86
87
  this._kbqStyle = value || KbqButtonStyles.Filled;
87
88
  this.changeDetectorRef.markForCheck();
88
89
  }
90
+ // @todo 20 In the next major release this feature will be replaced on the input signal.
91
+ /** Whether the button is disabled. */
89
92
  get disabled() {
90
93
  return this._disabled;
91
94
  }
92
95
  set disabled(value) {
93
- this._disabled = value;
94
- this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
96
+ this.disabledSignal.set(value);
95
97
  }
96
98
  get tabIndex() {
97
99
  return this.disabled ? -1 : this._tabIndex;
@@ -106,10 +108,14 @@ class KbqButton extends KbqColorDirective {
106
108
  this.changeDetectorRef = inject(ChangeDetectorRef);
107
109
  this.hasFocus = false;
108
110
  this._kbqStyle = KbqButtonStyles.Filled;
109
- this._disabled = false;
111
+ /** @docs-private */
112
+ this.disabledSignal = signal(false);
110
113
  this._tabIndex = 0;
111
114
  this.color = KbqComponentColors.ContrastFade;
112
115
  this.setDefaultColor(KbqComponentColors.ContrastFade);
116
+ // @todo 20 In the next major release this line will be deleted.
117
+ toObservable(this.disabledSignal).subscribe((value) => (this._disabled = value));
118
+ effect(() => (this.disabledSignal() ? this.stopFocusMonitor() : this.runFocusMonitor()));
113
119
  }
114
120
  ngAfterViewInit() {
115
121
  this.runFocusMonitor();
@@ -151,12 +157,12 @@ class KbqButton extends KbqColorDirective {
151
157
  stopFocusMonitor() {
152
158
  this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
153
159
  }
154
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButton, deps: [{ token: i1.FocusMonitor }, { token: KbqButtonCssStyler }], target: i0.ɵɵFactoryTarget.Component }); }
155
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.19", type: KbqButton, isStandalone: true, selector: "[kbq-button]", inputs: { kbqStyle: "kbqStyle", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute] }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur()" }, properties: { "attr.disabled": "disabled || null", "class.kbq-disabled": "disabled", "attr.tabIndex": "tabIndex", "class": "kbqStyle" } }, providers: [
160
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButton, deps: [{ token: i1.FocusMonitor }, { token: KbqButtonCssStyler }], target: i0.ɵɵFactoryTarget.Component }); }
161
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.20", type: KbqButton, isStandalone: true, selector: "[kbq-button]", inputs: { kbqStyle: "kbqStyle", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute] }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur()" }, properties: { "attr.disabled": "disabled || null", "class.kbq-disabled": "disabled", "attr.tabIndex": "tabIndex", "class": "kbqStyle" } }, providers: [
156
162
  { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqButton }
157
163
  ], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["kbqTitleText"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span #kbqTitleText class=\"kbq-button-wrapper\" (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content />\n</span>\n<span class=\"kbq-button-overlay\" (click)=\"haltDisabledEvents($event)\"></span>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-button,.kbq-light-button,.kbq-button-icon{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;margin:0;height:var(--kbq-button-size-height);min-height:var(--kbq-button-size-height);white-space:nowrap;text-decoration:none;text-align:center;vertical-align:baseline;border:var(--kbq-button-size-border-width) solid transparent;border-radius:var(--kbq-button-size-border-radius)}.kbq-button::-moz-focus-inner,.kbq-light-button::-moz-focus-inner,.kbq-button-icon::-moz-focus-inner{border:0}.kbq-button:focus,.kbq-light-button:focus,.kbq-button-icon:focus{outline:none}.kbq-disabled.kbq-button,.kbq-disabled.kbq-light-button,.kbq-disabled.kbq-button-icon{cursor:default}.cdk-focused.kbq-button,.cdk-focused.kbq-light-button,.cdk-focused.kbq-button-icon{z-index:1}.kbq-button .kbq-button-wrapper,.kbq-light-button .kbq-button-wrapper,.kbq-button-icon .kbq-button-wrapper{display:flex;align-items:center}.kbq-button .kbq-icon_left,.kbq-light-button .kbq-icon_left,.kbq-button-icon .kbq-icon_left{margin-right:var(--kbq-button-size-content-padding)}.kbq-button .kbq-icon_right,.kbq-light-button .kbq-icon_right,.kbq-button-icon .kbq-icon_right{margin-left:var(--kbq-button-size-content-padding)}.kbq-button{padding-left:calc(var(--kbq-button-size-horizontal-padding) - var(--kbq-button-size-border-width));padding-right:calc(var(--kbq-button-size-horizontal-padding) - var(--kbq-button-size-border-width))}.kbq-button-icon{padding-left:calc(var(--kbq-button-icon-size-horizontal-padding) - var(--kbq-button-size-border-width));padding-right:calc(var(--kbq-button-icon-size-horizontal-padding) - var(--kbq-button-size-border-width))}.kbq-button-overlay{position:absolute;top:calc(-1 * var(--kbq-button-size-border-width));left:calc(-1 * var(--kbq-button-size-border-width));right:calc(-1 * var(--kbq-button-size-border-width));bottom:calc(-1 * var(--kbq-button-size-border-width));border-radius:inherit}.kbq-button-overlay{display:none}.kbq-button,.kbq-button-icon{-webkit-font-smoothing:antialiased}.kbq-button.kbq-button_filled.kbq-contrast,.kbq-button-icon.kbq-button_filled.kbq-contrast{border-color:var(--kbq-button-filled-contrast-fade-off-border);color:var(--kbq-button-filled-contrast-fade-off-foreground);background:var(--kbq-button-filled-contrast-fade-off-background)}.kbq-button.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty,.kbq-button.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-filled-contrast-fade-off-left-icon)}.kbq-button.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_filled.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-filled-contrast-fade-off-right-icon)}.kbq-button.kbq-button_filled.kbq-contrast:hover:not(.kbq-disabled),.kbq-button.kbq-button_filled.kbq-contrast.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-filled-contrast-fade-off-states-hover-background)}.kbq-button.kbq-button_filled.kbq-contrast:active:not(.kbq-disabled),.kbq-button.kbq-button_filled.kbq-contrast.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-active:not(.kbq-disabled){background:var(--kbq-button-filled-contrast-fade-off-states-active-background)}.kbq-button.kbq-button_filled.kbq-contrast.kbq-disabled,.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-disabled{color:var(--kbq-button-filled-contrast-fade-off-states-disabled-foreground);background:var(--kbq-button-filled-contrast-fade-off-states-disabled-background);border-color:var(--kbq-button-filled-contrast-fade-off-states-disabled-border)}.kbq-button.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-filled-contrast-fade-off-states-disabled-left-icon)}.kbq-button.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_filled.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-filled-contrast-fade-off-states-disabled-right-icon)}.kbq-button.kbq-button_filled.kbq-contrast-fade,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade{border-color:var(--kbq-button-filled-contrast-fade-on-border);color:var(--kbq-button-filled-contrast-fade-on-foreground);background:var(--kbq-button-filled-contrast-fade-on-background)}.kbq-button.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty,.kbq-button.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-filled-contrast-fade-on-left-icon)}.kbq-button.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-filled-contrast-fade-on-right-icon)}.kbq-button.kbq-button_filled.kbq-contrast-fade:hover:not(.kbq-disabled),.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast-fade:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-filled-contrast-fade-on-states-hover-background)}.kbq-button.kbq-button_filled.kbq-contrast-fade:active:not(.kbq-disabled),.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast-fade:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-active:not(.kbq-disabled){background:var(--kbq-button-filled-contrast-fade-on-states-active-background)}.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-disabled,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-disabled{color:var(--kbq-button-filled-contrast-fade-on-states-disabled-foreground);background:var(--kbq-button-filled-contrast-fade-on-states-disabled-background);border-color:var(--kbq-button-filled-contrast-fade-on-states-disabled-border)}.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-filled-contrast-fade-on-states-disabled-left-icon)}.kbq-button.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_filled.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-filled-contrast-fade-on-states-disabled-right-icon)}.kbq-button.kbq-button_outline.kbq-theme-fade,.kbq-button-icon.kbq-button_outline.kbq-theme-fade{border-color:var(--kbq-button-outline-theme-fade-on-border);color:var(--kbq-button-outline-theme-fade-on-foreground);background:var(--kbq-button-outline-theme-fade-on-background)}.kbq-button.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty,.kbq-button.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-outline-theme-fade-on-left-icon)}.kbq-button.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_outline.kbq-theme-fade .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-outline-theme-fade-on-right-icon)}.kbq-button.kbq-button_outline.kbq-theme-fade:hover:not(.kbq-disabled),.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-theme-fade:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-outline-theme-fade-on-states-hover-background)}.kbq-button.kbq-button_outline.kbq-theme-fade:active:not(.kbq-disabled),.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-theme-fade:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-active:not(.kbq-disabled){background:var(--kbq-button-outline-theme-fade-on-states-active-background)}.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-disabled,.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-disabled{color:var(--kbq-button-outline-theme-fade-on-states-disabled-foreground);background:var(--kbq-button-outline-theme-fade-on-states-disabled-background);border-color:var(--kbq-button-outline-theme-fade-on-states-disabled-border)}.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-outline-theme-fade-on-states-disabled-left-icon)}.kbq-button.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_outline.kbq-theme-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-outline-theme-fade-on-states-disabled-right-icon)}.kbq-button.kbq-button_outline.kbq-contrast-fade,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade{border-color:var(--kbq-button-outline-contrast-fade-on-border);color:var(--kbq-button-outline-contrast-fade-on-foreground);background:var(--kbq-button-outline-contrast-fade-on-background)}.kbq-button.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty,.kbq-button.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-outline-contrast-fade-on-left-icon)}.kbq-button.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-outline-contrast-fade-on-right-icon)}.kbq-button.kbq-button_outline.kbq-contrast-fade:hover:not(.kbq-disabled),.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-contrast-fade:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-outline-contrast-fade-on-states-hover-background)}.kbq-button.kbq-button_outline.kbq-contrast-fade:active:not(.kbq-disabled),.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-contrast-fade:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-active:not(.kbq-disabled){background:var(--kbq-button-outline-contrast-fade-on-states-active-background)}.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-disabled,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-disabled{color:var(--kbq-button-outline-contrast-fade-on-states-disabled-foreground);background:var(--kbq-button-outline-contrast-fade-on-states-disabled-background);border-color:var(--kbq-button-outline-contrast-fade-on-states-disabled-border)}.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-outline-contrast-fade-on-states-disabled-left-icon)}.kbq-button.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_outline.kbq-contrast-fade.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-outline-contrast-fade-on-states-disabled-right-icon)}.kbq-button.kbq-button_transparent.kbq-theme,.kbq-button-icon.kbq-button_transparent.kbq-theme{border-color:var(--kbq-button-transparent-theme-fade-on-border);color:var(--kbq-button-transparent-theme-fade-on-foreground);background:var(--kbq-button-transparent-theme-fade-on-background)}.kbq-button.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty,.kbq-button.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-transparent-theme-fade-on-left-icon)}.kbq-button.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_transparent.kbq-theme .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-transparent-theme-fade-on-right-icon)}.kbq-button.kbq-button_transparent.kbq-theme:hover:not(.kbq-disabled),.kbq-button.kbq-button_transparent.kbq-theme.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-theme:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-transparent-theme-fade-on-states-hover-background)}.kbq-button.kbq-button_transparent.kbq-theme:active:not(.kbq-disabled),.kbq-button.kbq-button_transparent.kbq-theme.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-theme:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-active:not(.kbq-disabled){background:var(--kbq-button-transparent-theme-fade-on-states-active-background)}.kbq-button.kbq-button_transparent.kbq-theme.kbq-disabled,.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-disabled{color:var(--kbq-button-transparent-theme-fade-on-states-disabled-foreground);background:var(--kbq-button-transparent-theme-fade-on-states-disabled-background);border-color:var(--kbq-button-transparent-theme-fade-on-states-disabled-border)}.kbq-button.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-transparent-theme-fade-on-states-disabled-left-icon)}.kbq-button.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_transparent.kbq-theme.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-transparent-theme-fade-on-states-disabled-right-icon)}.kbq-button.kbq-button_transparent.kbq-contrast,.kbq-button-icon.kbq-button_transparent.kbq-contrast{border-color:var(--kbq-button-transparent-contrast-fade-on-border);color:var(--kbq-button-transparent-contrast-fade-on-foreground);background:var(--kbq-button-transparent-contrast-fade-on-background)}.kbq-button.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty,.kbq-button.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-transparent-contrast-fade-on-left-icon)}.kbq-button.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_transparent.kbq-contrast .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-transparent-contrast-fade-on-right-icon)}.kbq-button.kbq-button_transparent.kbq-contrast:hover:not(.kbq-disabled),.kbq-button.kbq-button_transparent.kbq-contrast.kbq-hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-contrast:hover:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-hover:not(.kbq-disabled){background:var(--kbq-button-transparent-contrast-fade-on-states-hover-background)}.kbq-button.kbq-button_transparent.kbq-contrast:active:not(.kbq-disabled),.kbq-button.kbq-button_transparent.kbq-contrast.kbq-active:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-contrast:active:not(.kbq-disabled),.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-active:not(.kbq-disabled){background:var(--kbq-button-transparent-contrast-fade-on-states-active-background)}.kbq-button.kbq-button_transparent.kbq-contrast.kbq-disabled,.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-disabled{color:var(--kbq-button-transparent-contrast-fade-on-states-disabled-foreground);background:var(--kbq-button-transparent-contrast-fade-on-states-disabled-background);border-color:var(--kbq-button-transparent-contrast-fade-on-states-disabled-border)}.kbq-button.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty,.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty,.kbq-button.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left,.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_left{color:var(--kbq-button-transparent-contrast-fade-on-states-disabled-left-icon)}.kbq-button.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right,.kbq-button-icon.kbq-button_transparent.kbq-contrast.kbq-disabled .kbq-icon.kbq-empty.kbq-icon_right{color:var(--kbq-button-transparent-contrast-fade-on-states-disabled-right-icon)}.kbq-button.kbq-button_filled.cdk-keyboard-focused,.kbq-button.kbq-button_outline.cdk-keyboard-focused,.kbq-button.kbq-button_transparent.cdk-keyboard-focused,.kbq-button-icon.kbq-button_filled.cdk-keyboard-focused,.kbq-button-icon.kbq-button_outline.cdk-keyboard-focused,.kbq-button-icon.kbq-button_transparent.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-button,.kbq-button-icon{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}.kbq-button-icon.kbq-button-wrapper .kbq-icon{line-height:var(--kbq-typography-body-line-height)}\n", ".kbq-button,.kbq-button-icon{--kbq-button-size-height: var(--kbq-size-3xl);--kbq-button-size-border-width: var(--kbq-size-border-width);--kbq-button-size-border-radius: var(--kbq-size-border-radius);--kbq-button-size-horizontal-padding: var(--kbq-size-m);--kbq-button-size-content-padding: var(--kbq-size-xs);--kbq-button-icon-size-horizontal-padding: var(--kbq-size-s);--kbq-button-icon-size-vertical-padding: var(--kbq-size-s);--kbq-button-icon-size-content-padding: var(--kbq-size-xxs);--kbq-button-filled-contrast-fade-off-background: var(--kbq-background-contrast);--kbq-button-filled-contrast-fade-off-border: transparent;--kbq-button-filled-contrast-fade-off-foreground: var(--kbq-foreground-on-contrast);--kbq-button-filled-contrast-fade-off-left-icon: var(--kbq-icon-on-contrast);--kbq-button-filled-contrast-fade-off-right-icon: var(--kbq-icon-on-contrast);--kbq-button-filled-contrast-fade-off-states-hover-background: var(--kbq-states-background-contrast-hover);--kbq-button-filled-contrast-fade-off-states-active-background: var(--kbq-states-background-contrast-active);--kbq-button-filled-contrast-fade-off-states-active-hover-background: var(--kbq-states-background-contrast-active);--kbq-button-filled-contrast-fade-off-states-disabled-background: var(--kbq-states-background-disabled);--kbq-button-filled-contrast-fade-off-states-disabled-border: transparent;--kbq-button-filled-contrast-fade-off-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-filled-contrast-fade-off-states-disabled-left-icon: var(--kbq-states-foreground-disabled);--kbq-button-filled-contrast-fade-off-states-disabled-right-icon: var(--kbq-states-foreground-disabled);--kbq-button-filled-contrast-fade-on-background: var(--kbq-background-contrast-fade);--kbq-button-filled-contrast-fade-on-border: transparent;--kbq-button-filled-contrast-fade-on-foreground: var(--kbq-foreground-contrast);--kbq-button-filled-contrast-fade-on-left-icon: var(--kbq-icon-contrast);--kbq-button-filled-contrast-fade-on-right-icon: var(--kbq-icon-contrast);--kbq-button-filled-contrast-fade-on-states-hover-background: var(--kbq-states-background-contrast-fade-hover);--kbq-button-filled-contrast-fade-on-states-active-background: var(--kbq-states-background-contrast-fade-active);--kbq-button-filled-contrast-fade-on-states-active-hover-background: var( --kbq-states-background-contrast-fade-active );--kbq-button-filled-contrast-fade-on-states-disabled-background: var(--kbq-states-background-disabled);--kbq-button-filled-contrast-fade-on-states-disabled-border: transparent;--kbq-button-filled-contrast-fade-on-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-filled-contrast-fade-on-states-disabled-left-icon: var(--kbq-states-foreground-disabled);--kbq-button-filled-contrast-fade-on-states-disabled-right-icon: var(--kbq-states-foreground-disabled);--kbq-button-outline-theme-fade-on-background: transparent;--kbq-button-outline-theme-fade-on-border: var(--kbq-line-theme-fade);--kbq-button-outline-theme-fade-on-foreground: var(--kbq-foreground-theme);--kbq-button-outline-theme-fade-on-left-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-right-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-button-outline-theme-fade-on-states-hover-border: var(--kbq-line-theme-fade);--kbq-button-outline-theme-fade-on-states-hover-foreground: var(--kbq-foreground-theme);--kbq-button-outline-theme-fade-on-states-hover-left-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-hover-right-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-active-background: var(--kbq-states-background-transparent-active);--kbq-button-outline-theme-fade-on-states-active-border: var(--kbq-line-theme-fade);--kbq-button-outline-theme-fade-on-states-active-foreground: var(--kbq-foreground-theme);--kbq-button-outline-theme-fade-on-states-active-left-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-active-right-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-active-hover-background: var(--kbq-states-background-transparent-active);--kbq-button-outline-theme-fade-on-states-active-hover-border: var(--kbq-line-theme-fade);--kbq-button-outline-theme-fade-on-states-active-hover-foreground: var(--kbq-foreground-theme);--kbq-button-outline-theme-fade-on-states-active-hover-left-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-active-hover-right-icon: var(--kbq-icon-theme);--kbq-button-outline-theme-fade-on-states-disabled-background: transparent;--kbq-button-outline-theme-fade-on-states-disabled-border: var(--kbq-states-line-disabled);--kbq-button-outline-theme-fade-on-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-outline-theme-fade-on-states-disabled-left-icon: var(--kbq-states-icon-disabled);--kbq-button-outline-theme-fade-on-states-disabled-right-icon: var(--kbq-states-icon-disabled);--kbq-button-outline-contrast-fade-on-background: transparent;--kbq-button-outline-contrast-fade-on-border: var(--kbq-line-contrast-fade);--kbq-button-outline-contrast-fade-on-foreground: var(--kbq-foreground-contrast);--kbq-button-outline-contrast-fade-on-left-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-right-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-button-outline-contrast-fade-on-states-hover-border: var(--kbq-line-contrast-fade);--kbq-button-outline-contrast-fade-on-states-hover-foreground: var(--kbq-foreground-contrast);--kbq-button-outline-contrast-fade-on-states-hover-left-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-hover-right-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-active-background: var(--kbq-states-background-transparent-active);--kbq-button-outline-contrast-fade-on-states-active-border: var(--kbq-line-contrast-fade);--kbq-button-outline-contrast-fade-on-states-active-foreground: var(--kbq-foreground-contrast);--kbq-button-outline-contrast-fade-on-states-active-left-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-active-right-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-active-hover-background: var( --kbq-states-background-transparent-active );--kbq-button-outline-contrast-fade-on-states-active-hover-border: var(--kbq-line-contrast-fade);--kbq-button-outline-contrast-fade-on-states-active-hover-foreground: var(--kbq-foreground-contrast);--kbq-button-outline-contrast-fade-on-states-active-hover-left-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-active-hover-right-icon: var(--kbq-icon-contrast);--kbq-button-outline-contrast-fade-on-states-disabled-background: transparent;--kbq-button-outline-contrast-fade-on-states-disabled-border: var(--kbq-states-line-disabled);--kbq-button-outline-contrast-fade-on-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-outline-contrast-fade-on-states-disabled-left-icon: var(--kbq-states-icon-disabled);--kbq-button-outline-contrast-fade-on-states-disabled-right-icon: var(--kbq-states-icon-disabled);--kbq-button-transparent-theme-fade-on-border: transparent;--kbq-button-transparent-theme-fade-on-foreground: var(--kbq-foreground-theme);--kbq-button-transparent-theme-fade-on-background: transparent;--kbq-button-transparent-theme-fade-on-left-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-right-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-hover-border: transparent;--kbq-button-transparent-theme-fade-on-states-hover-foreground: var(--kbq-foreground-theme);--kbq-button-transparent-theme-fade-on-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-button-transparent-theme-fade-on-states-hover-left-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-hover-right-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-active-border: transparent;--kbq-button-transparent-theme-fade-on-states-active-foreground: var(--kbq-foreground-theme);--kbq-button-transparent-theme-fade-on-states-active-background: var(--kbq-states-background-transparent-active);--kbq-button-transparent-theme-fade-on-states-active-left-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-active-right-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-active-hover-border: transparent;--kbq-button-transparent-theme-fade-on-states-active-hover-foreground: var(--kbq-foreground-theme);--kbq-button-transparent-theme-fade-on-states-active-hover-background: var( --kbq-states-background-transparent-active );--kbq-button-transparent-theme-fade-on-states-active-hover-left-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-active-hover-right-icon: var(--kbq-icon-theme);--kbq-button-transparent-theme-fade-on-states-disabled-border: transparent;--kbq-button-transparent-theme-fade-on-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-transparent-theme-fade-on-states-disabled-background: transparent;--kbq-button-transparent-theme-fade-on-states-disabled-left-icon: var(--kbq-states-icon-disabled);--kbq-button-transparent-theme-fade-on-states-disabled-right-icon: var(--kbq-states-icon-disabled);--kbq-button-transparent-contrast-fade-on-border: transparent;--kbq-button-transparent-contrast-fade-on-foreground: var(--kbq-foreground-contrast);--kbq-button-transparent-contrast-fade-on-background: transparent;--kbq-button-transparent-contrast-fade-on-left-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-right-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-hover-border: transparent;--kbq-button-transparent-contrast-fade-on-states-hover-foreground: var(--kbq-foreground-contrast);--kbq-button-transparent-contrast-fade-on-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-button-transparent-contrast-fade-on-states-hover-left-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-hover-right-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-active-border: transparent;--kbq-button-transparent-contrast-fade-on-states-active-foreground: var(--kbq-foreground-contrast);--kbq-button-transparent-contrast-fade-on-states-active-background: var(--kbq-states-background-transparent-active);--kbq-button-transparent-contrast-fade-on-states-active-left-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-active-right-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-active-hover-border: transparent;--kbq-button-transparent-contrast-fade-on-states-active-hover-foreground: var(--kbq-foreground-contrast);--kbq-button-transparent-contrast-fade-on-states-active-hover-background: var( --kbq-states-background-transparent-active );--kbq-button-transparent-contrast-fade-on-states-active-hover-left-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-active-hover-right-icon: var(--kbq-icon-contrast);--kbq-button-transparent-contrast-fade-on-states-disabled-border: transparent;--kbq-button-transparent-contrast-fade-on-states-disabled-foreground: var(--kbq-states-foreground-disabled);--kbq-button-transparent-contrast-fade-on-states-disabled-background: transparent;--kbq-button-transparent-contrast-fade-on-states-disabled-left-icon: var(--kbq-states-icon-disabled);--kbq-button-transparent-contrast-fade-on-states-disabled-right-icon: var(--kbq-states-icon-disabled)}\n"], dependencies: [{ kind: "directive", type: CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
158
164
  }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButton, decorators: [{
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButton, decorators: [{
160
166
  type: Component,
161
167
  args: [{ selector: '[kbq-button]', imports: [
162
168
  CdkObserveContent
@@ -183,6 +189,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
183
189
  args: [{ transform: numberAttribute }]
184
190
  }] } });
185
191
 
192
+ /**
193
+ * Root directive that groups related buttons,
194
+ * propagating a shared style, color, and disabled state to every nested button
195
+ */
196
+ class KbqButtonGroupRoot extends KbqColorDirective {
197
+ /**
198
+ * Style applied to the group and propagated to every nested button.
199
+ * individual button's style preserved but updated when group input changed.
200
+ */
201
+ get kbqStyle() {
202
+ return this._kbqStyle && `kbq-button-group-root_${this._kbqStyle}`;
203
+ }
204
+ set kbqStyle(value) {
205
+ this._kbqStyle = value || KbqButtonStyles.Filled;
206
+ this.updateStyle(this._kbqStyle, this.buttons?.());
207
+ }
208
+ /**
209
+ * Color applied to the group and propagated to every nested button.
210
+ * individual button's color preserved but updated when group input changed.
211
+ */
212
+ get color() {
213
+ return this._color;
214
+ }
215
+ set color(value) {
216
+ if (!value)
217
+ return;
218
+ super.color = value;
219
+ this.updateColor(this.color, this.buttons?.());
220
+ }
221
+ /** Whether the root is disabled. */
222
+ get disabled() {
223
+ return this._disabled;
224
+ }
225
+ set disabled(value) {
226
+ this._disabled = value;
227
+ this.updateDisabledState(this._disabled, this.buttons?.());
228
+ }
229
+ constructor() {
230
+ super();
231
+ this.buttons = contentChildren(KbqButton);
232
+ this._kbqStyle = '';
233
+ this.color = KbqComponentColors.ContrastFade;
234
+ this.setDefaultColor(KbqComponentColors.ContrastFade);
235
+ effect(() => {
236
+ const buttons = this.buttons();
237
+ this.updateColor(this.color, buttons);
238
+ this.updateStyle(this._kbqStyle, buttons);
239
+ this.updateDisabledState(this.disabled, buttons);
240
+ });
241
+ }
242
+ updateColor(color, buttons) {
243
+ buttons?.forEach((button) => (button.color = color));
244
+ }
245
+ updateStyle(style, buttons) {
246
+ buttons?.forEach((button) => (button.kbqStyle = style));
247
+ }
248
+ updateDisabledState(state, buttons) {
249
+ if (state === undefined)
250
+ return;
251
+ buttons?.forEach((button) => (button.disabled = state));
252
+ }
253
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonGroupRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
254
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.20", type: KbqButtonGroupRoot, isStandalone: true, selector: "[kbqButtonGroupRoot]", inputs: { kbqStyle: "kbqStyle", color: "color", disabled: ["disabled", "disabled", booleanAttribute] }, host: { properties: { "class": "kbqStyle" } }, queries: [{ propertyName: "buttons", predicate: KbqButton, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
255
+ }
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonGroupRoot, decorators: [{
257
+ type: Directive,
258
+ args: [{
259
+ selector: '[kbqButtonGroupRoot]',
260
+ host: {
261
+ '[class]': 'kbqStyle'
262
+ }
263
+ }]
264
+ }], ctorParameters: () => [], propDecorators: { kbqStyle: [{
265
+ type: Input
266
+ }], color: [{
267
+ type: Input
268
+ }], disabled: [{
269
+ type: Input,
270
+ args: [{ transform: booleanAttribute }]
271
+ }] } });
272
+ /** Groups and styling related `KbqButton`s into a single visual unit. */
273
+ class KbqButtonGroup {
274
+ constructor() {
275
+ /**
276
+ * Layout direction: `'horizontal'` or `'vertical'`
277
+ * @default 'horizontal'
278
+ */
279
+ this.orientation = input('horizontal');
280
+ }
281
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
282
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.20", type: KbqButtonGroup, isStandalone: true, selector: "kbq-button-group, [kbq-button-group]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "class": "\"kbq-button-group_\" + orientation()", "attr.aria-orientation": "orientation()" }, classAttribute: "kbq-button-group" }, hostDirectives: [{ directive: KbqButtonGroupRoot, inputs: ["color", "color", "kbqStyle", "kbqStyle", "disabled", "disabled"] }], ngImport: i0, template: `
283
+ <ng-content />
284
+ `, isInline: true, styles: [".kbq-button-group.kbq-button-group_horizontal{display:flex;flex-direction:row}.kbq-button-group.kbq-button-group_horizontal_justified>:is(.kbq-button,.kbq-button-icon){width:100%}.kbq-button-group.kbq-button-group_horizontal :is(.kbq-button,.kbq-button-icon)+:is(.kbq-button,.kbq-button-icon){margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):not(:first-child):not(:last-child){border-radius:0}.kbq-button-group.kbq-button-group_vertical{display:flex;flex-direction:column}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):not(:first-child):not(:last-child){border-radius:0}.kbq-button-group.kbq-button-group_vertical :is(.kbq-button,.kbq-button-icon)+:is(.kbq-button,.kbq-button-icon){margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-button-group:not(:has(>:not(.kbq-contrast-fade.kbq-button_filled))),.kbq-button-group:not(:has(>:not(.kbq-contrast.kbq-button_filled))){gap:var(--kbq-size-3xs)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
285
+ }
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonGroup, decorators: [{
287
+ type: Component,
288
+ args: [{ selector: 'kbq-button-group, [kbq-button-group]', template: `
289
+ <ng-content />
290
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
291
+ role: 'group',
292
+ class: 'kbq-button-group',
293
+ '[class]': '"kbq-button-group_" + orientation()',
294
+ '[attr.aria-orientation]': 'orientation()'
295
+ }, hostDirectives: [
296
+ { directive: KbqButtonGroupRoot, inputs: ['color', 'kbqStyle', 'disabled'] }
297
+ ], styles: [".kbq-button-group.kbq-button-group_horizontal{display:flex;flex-direction:row}.kbq-button-group.kbq-button-group_horizontal_justified>:is(.kbq-button,.kbq-button-icon){width:100%}.kbq-button-group.kbq-button-group_horizontal :is(.kbq-button,.kbq-button-icon)+:is(.kbq-button,.kbq-button-icon){margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-button-group.kbq-button-group_horizontal>:is(.kbq-button,.kbq-button-icon):not(:first-child):not(:last-child){border-radius:0}.kbq-button-group.kbq-button-group_vertical{display:flex;flex-direction:column}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-button-group.kbq-button-group_vertical>:is(.kbq-button,.kbq-button-icon):not(:first-child):not(:last-child){border-radius:0}.kbq-button-group.kbq-button-group_vertical :is(.kbq-button,.kbq-button-icon)+:is(.kbq-button,.kbq-button-icon){margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-button-group:not(:has(>:not(.kbq-contrast-fade.kbq-button_filled))),.kbq-button-group:not(:has(>:not(.kbq-contrast.kbq-button_filled))){gap:var(--kbq-size-3xs)}\n"] }]
298
+ }] });
299
+
186
300
  /**
187
301
  * This directive enhances `kbq-button` elements acting as dropdown triggers,
188
302
  * visually indicating the active state with the `kbq-active` class,
@@ -194,10 +308,10 @@ class KbqButtonDropdownTrigger {
194
308
  constructor() {
195
309
  this.dropdownTrigger = inject(KbqDropdownTrigger);
196
310
  }
197
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonDropdownTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
198
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqButtonDropdownTrigger, isStandalone: true, selector: "[kbq-button][kbqDropdownTriggerFor]", host: { properties: { "class.kbq-active": "dropdownTrigger.opened" } }, ngImport: i0 }); }
311
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonDropdownTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
312
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqButtonDropdownTrigger, isStandalone: true, selector: "[kbq-button][kbqDropdownTriggerFor]", host: { properties: { "class.kbq-active": "dropdownTrigger.opened" } }, ngImport: i0 }); }
199
313
  }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonDropdownTrigger, decorators: [{
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonDropdownTrigger, decorators: [{
201
315
  type: Directive,
202
316
  args: [{
203
317
  selector: `[kbq-button][kbqDropdownTriggerFor]`,
@@ -208,20 +322,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
208
322
  }] });
209
323
 
210
324
  class KbqButtonModule {
211
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
212
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonModule, imports: [A11yModule,
325
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
326
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonModule, imports: [A11yModule,
213
327
  PlatformModule,
214
328
  ObserversModule,
215
329
  KbqButtonDropdownTrigger,
216
330
  KbqButton,
217
- KbqButtonCssStyler], exports: [KbqButton,
218
331
  KbqButtonCssStyler,
219
- KbqButtonDropdownTrigger] }); }
220
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonModule, imports: [A11yModule,
332
+ KbqButtonGroup,
333
+ KbqButtonGroupRoot], exports: [KbqButton,
334
+ KbqButtonCssStyler,
335
+ KbqButtonDropdownTrigger,
336
+ KbqButtonGroup,
337
+ KbqButtonGroupRoot] }); }
338
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonModule, imports: [A11yModule,
221
339
  PlatformModule,
222
340
  ObserversModule] }); }
223
341
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqButtonModule, decorators: [{
342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqButtonModule, decorators: [{
225
343
  type: NgModule,
226
344
  args: [{
227
345
  imports: [
@@ -230,12 +348,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
230
348
  ObserversModule,
231
349
  KbqButtonDropdownTrigger,
232
350
  KbqButton,
233
- KbqButtonCssStyler
351
+ KbqButtonCssStyler,
352
+ KbqButtonGroup,
353
+ KbqButtonGroupRoot
234
354
  ],
235
355
  exports: [
236
356
  KbqButton,
237
357
  KbqButtonCssStyler,
238
- KbqButtonDropdownTrigger
358
+ KbqButtonDropdownTrigger,
359
+ KbqButtonGroup,
360
+ KbqButtonGroupRoot
239
361
  ]
240
362
  }]
241
363
  }] });
@@ -244,5 +366,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
244
366
  * Generated bundle index. Do not edit.
245
367
  */
246
368
 
247
- export { KbqButton, KbqButtonCssStyler, KbqButtonDropdownTrigger, KbqButtonModule, KbqButtonStyles, buttonLeftIconClassName, buttonRightIconClassName };
369
+ export { KbqButton, KbqButtonCssStyler, KbqButtonDropdownTrigger, KbqButtonGroup, KbqButtonGroupRoot, KbqButtonModule, KbqButtonStyles, buttonLeftIconClassName, buttonRightIconClassName };
248
370
  //# sourceMappingURL=koobiq-components-button.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-button.mjs","sources":["../../../packages/components/button/button.component.ts","../../../packages/components/button/button.component.html","../../../packages/components/button/button.dropdown-trigger.directive.ts","../../../packages/components/button/button.module.ts","../../../packages/components/button/koobiq-components-button.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n QueryList,\n Renderer2,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n getNodesWithoutComments,\n KBQ_TITLE_TEXT_REF,\n KbqColorDirective,\n KbqComponentColors,\n KbqTitleTextRef,\n leftIconClassName,\n rightIconClassName\n} from '@koobiq/components/core';\nimport { KbqIcon } from '@koobiq/components/icon';\n\nexport enum KbqButtonStyles {\n Filled = 'filled',\n Outline = 'outline',\n Transparent = 'transparent'\n}\n\nexport const buttonLeftIconClassName = 'kbq-button-icon_left';\nexport const buttonRightIconClassName = 'kbq-button-icon_right';\n\n@Directive({\n selector: '[kbq-button]',\n host: {\n '[class.kbq-button]': '!isIconButton',\n '[class.kbq-button-icon]': 'isIconButton'\n }\n})\nexport class KbqButtonCssStyler implements AfterContentInit {\n @ContentChildren(forwardRef(() => KbqIcon)) icons: QueryList<KbqIcon>;\n\n nativeElement: HTMLElement;\n\n isIconButton: boolean = false;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @SkipSelf() private cdr: ChangeDetectorRef\n ) {\n this.nativeElement = elementRef.nativeElement;\n }\n\n ngAfterContentInit() {\n this.updateClassModifierForIcons();\n }\n\n updateClassModifierForIcons() {\n this.renderer.removeClass(this.nativeElement, buttonLeftIconClassName);\n this.renderer.removeClass(this.nativeElement, buttonRightIconClassName);\n this.icons\n .map((item) => item.getHostElement())\n .forEach((iconHostElement) => {\n this.renderer.removeClass(iconHostElement, leftIconClassName);\n this.renderer.removeClass(iconHostElement, rightIconClassName);\n });\n\n const twoIcons = 2;\n const filteredNodesWithoutComments = getNodesWithoutComments(\n this.nativeElement.querySelector('.kbq-button-wrapper')!.childNodes as NodeList\n );\n\n const currentIsIconButtonValue =\n !!this.icons.length &&\n this.icons.length === filteredNodesWithoutComments.length &&\n this.icons.length <= twoIcons;\n\n if (currentIsIconButtonValue !== this.isIconButton) {\n this.isIconButton = currentIsIconButtonValue;\n this.cdr.detectChanges();\n }\n\n if (this.icons.length && filteredNodesWithoutComments.length > 1) {\n this.icons\n .map((item) => item.getHostElement())\n .forEach((iconHostElement) => {\n const iconIndex = filteredNodesWithoutComments.findIndex((node) => node === iconHostElement);\n\n if (iconIndex === 0) {\n this.renderer.addClass(iconHostElement, leftIconClassName);\n this.renderer.addClass(this.nativeElement, buttonLeftIconClassName);\n }\n\n if (iconIndex === filteredNodesWithoutComments.length - 1) {\n this.renderer.addClass(iconHostElement, rightIconClassName);\n this.renderer.addClass(this.nativeElement, buttonRightIconClassName);\n }\n });\n }\n }\n}\n\n@Component({\n selector: '[kbq-button]',\n imports: [\n CdkObserveContent\n ],\n templateUrl: './button.component.html',\n styleUrls: ['./button.scss', './button-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disabled || null',\n '[class.kbq-disabled]': 'disabled',\n '[attr.tabIndex]': 'tabIndex',\n '[class]': 'kbqStyle',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur()'\n },\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqButton }]\n})\nexport class KbqButton extends KbqColorDirective implements OnDestroy, AfterViewInit, KbqTitleTextRef {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n hasFocus: boolean = false;\n\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n @Input()\n get kbqStyle(): string {\n return `kbq-button_${this._kbqStyle}`;\n }\n\n set kbqStyle(value: string | KbqButtonStyles) {\n this._kbqStyle = value || KbqButtonStyles.Filled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n private _kbqStyle: string | KbqButtonStyles = KbqButtonStyles.Filled;\n\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n\n this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();\n }\n\n private _disabled: boolean = false;\n\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n constructor(\n private focusMonitor: FocusMonitor,\n private styler: KbqButtonCssStyler\n ) {\n super();\n\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n }\n\n onFocus($event) {\n $event.stopPropagation();\n\n this.hasFocus = true;\n }\n\n onBlur() {\n this.hasFocus = false;\n }\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n focus(): void {\n this.hasFocus = true;\n\n this.getHostElement().focus();\n }\n\n focusViaKeyboard(): void {\n this.hasFocus = true;\n\n this.focusMonitor.focusVia(this.getHostElement(), 'keyboard');\n }\n\n haltDisabledEvents(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n }\n }\n\n projectContentChanged() {\n this.styler.updateClassModifierForIcons();\n }\n\n private runFocusMonitor() {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n}\n","<span #kbqTitleText class=\"kbq-button-wrapper\" (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content />\n</span>\n<span class=\"kbq-button-overlay\" (click)=\"haltDisabledEvents($event)\"></span>\n","import { Directive, inject } from '@angular/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\n\n/**\n * This directive enhances `kbq-button` elements acting as dropdown triggers,\n * visually indicating the active state with the `kbq-active` class,\n * following Koobiq Design System.\n *\n * The directive relies on a separate `KbqDropdownTrigger` directive to get dropdown's state.\n */\n@Directive({\n selector: `[kbq-button][kbqDropdownTriggerFor]`,\n host: {\n '[class.kbq-active]': 'dropdownTrigger.opened'\n }\n})\nexport class KbqButtonDropdownTrigger {\n dropdownTrigger = inject(KbqDropdownTrigger);\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqButton, KbqButtonCssStyler } from './button.component';\nimport { KbqButtonDropdownTrigger } from './button.dropdown-trigger.directive';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n ObserversModule,\n KbqButtonDropdownTrigger,\n KbqButton,\n KbqButtonCssStyler\n ],\n exports: [\n KbqButton,\n KbqButtonCssStyler,\n KbqButtonDropdownTrigger\n ]\n})\nexport class KbqButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-button.mjs","sources":["../../../packages/components/button/button.component.ts","../../../packages/components/button/button.component.html","../../../packages/components/button/button-group.ts","../../../packages/components/button/button.dropdown-trigger.directive.ts","../../../packages/components/button/button.module.ts","../../../packages/components/button/koobiq-components-button.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Input,\n numberAttribute,\n OnDestroy,\n QueryList,\n Renderer2,\n signal,\n SkipSelf,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n getNodesWithoutComments,\n KBQ_TITLE_TEXT_REF,\n KbqColorDirective,\n KbqComponentColors,\n KbqTitleTextRef,\n leftIconClassName,\n rightIconClassName\n} from '@koobiq/components/core';\nimport { KbqIcon } from '@koobiq/components/icon';\n\nexport enum KbqButtonStyles {\n Filled = 'filled',\n Outline = 'outline',\n Transparent = 'transparent'\n}\n\nexport const buttonLeftIconClassName = 'kbq-button-icon_left';\nexport const buttonRightIconClassName = 'kbq-button-icon_right';\n\n@Directive({\n selector: '[kbq-button]',\n host: {\n '[class.kbq-button]': '!isIconButton',\n '[class.kbq-button-icon]': 'isIconButton'\n }\n})\nexport class KbqButtonCssStyler implements AfterContentInit {\n @ContentChildren(forwardRef(() => KbqIcon)) icons: QueryList<KbqIcon>;\n\n nativeElement: HTMLElement;\n\n isIconButton: boolean = false;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @SkipSelf() private cdr: ChangeDetectorRef\n ) {\n this.nativeElement = elementRef.nativeElement;\n }\n\n ngAfterContentInit() {\n this.updateClassModifierForIcons();\n }\n\n updateClassModifierForIcons() {\n this.renderer.removeClass(this.nativeElement, buttonLeftIconClassName);\n this.renderer.removeClass(this.nativeElement, buttonRightIconClassName);\n this.icons\n .map((item) => item.getHostElement())\n .forEach((iconHostElement) => {\n this.renderer.removeClass(iconHostElement, leftIconClassName);\n this.renderer.removeClass(iconHostElement, rightIconClassName);\n });\n\n const twoIcons = 2;\n const filteredNodesWithoutComments = getNodesWithoutComments(\n this.nativeElement.querySelector('.kbq-button-wrapper')!.childNodes as NodeList\n );\n\n const currentIsIconButtonValue =\n !!this.icons.length &&\n this.icons.length === filteredNodesWithoutComments.length &&\n this.icons.length <= twoIcons;\n\n if (currentIsIconButtonValue !== this.isIconButton) {\n this.isIconButton = currentIsIconButtonValue;\n this.cdr.detectChanges();\n }\n\n if (this.icons.length && filteredNodesWithoutComments.length > 1) {\n this.icons\n .map((item) => item.getHostElement())\n .forEach((iconHostElement) => {\n const iconIndex = filteredNodesWithoutComments.findIndex((node) => node === iconHostElement);\n\n if (iconIndex === 0) {\n this.renderer.addClass(iconHostElement, leftIconClassName);\n this.renderer.addClass(this.nativeElement, buttonLeftIconClassName);\n }\n\n if (iconIndex === filteredNodesWithoutComments.length - 1) {\n this.renderer.addClass(iconHostElement, rightIconClassName);\n this.renderer.addClass(this.nativeElement, buttonRightIconClassName);\n }\n });\n }\n }\n}\n\n@Component({\n selector: '[kbq-button]',\n imports: [\n CdkObserveContent\n ],\n templateUrl: './button.component.html',\n styleUrls: ['./button.scss', './button-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disabled || null',\n '[class.kbq-disabled]': 'disabled',\n '[attr.tabIndex]': 'tabIndex',\n '[class]': 'kbqStyle',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur()'\n },\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqButton }]\n})\nexport class KbqButton extends KbqColorDirective implements OnDestroy, AfterViewInit, KbqTitleTextRef {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n hasFocus: boolean = false;\n\n @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef;\n\n @Input()\n get kbqStyle(): string {\n return `kbq-button_${this._kbqStyle}`;\n }\n\n set kbqStyle(value: string | KbqButtonStyles) {\n this._kbqStyle = value || KbqButtonStyles.Filled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n private _kbqStyle: string | KbqButtonStyles = KbqButtonStyles.Filled;\n\n // @todo 20 In the next major release this feature will be replaced on the input signal.\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this.disabledSignal.set(value);\n }\n\n // @todo 20 In the next major release this line will be deleted.\n private _disabled: boolean;\n\n /** @docs-private */\n readonly disabledSignal = signal(false);\n\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n constructor(\n private focusMonitor: FocusMonitor,\n private styler: KbqButtonCssStyler\n ) {\n super();\n\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n // @todo 20 In the next major release this line will be deleted.\n toObservable(this.disabledSignal).subscribe((value) => (this._disabled = value));\n\n effect(() => (this.disabledSignal() ? this.stopFocusMonitor() : this.runFocusMonitor()));\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy() {\n this.stopFocusMonitor();\n }\n\n onFocus($event) {\n $event.stopPropagation();\n\n this.hasFocus = true;\n }\n\n onBlur() {\n this.hasFocus = false;\n }\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n focus(): void {\n this.hasFocus = true;\n\n this.getHostElement().focus();\n }\n\n focusViaKeyboard(): void {\n this.hasFocus = true;\n\n this.focusMonitor.focusVia(this.getHostElement(), 'keyboard');\n }\n\n haltDisabledEvents(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n }\n }\n\n projectContentChanged() {\n this.styler.updateClassModifierForIcons();\n }\n\n private runFocusMonitor() {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n}\n","<span #kbqTitleText class=\"kbq-button-wrapper\" (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content />\n</span>\n<span class=\"kbq-button-overlay\" (click)=\"haltDisabledEvents($event)\"></span>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n Directive,\n effect,\n Input,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqColorDirective, KbqComponentColors, KbqOrientation, ThemePalette } from '@koobiq/components/core';\nimport { KbqButton, KbqButtonStyles } from './button.component';\n\n/**\n * Root directive that groups related buttons,\n * propagating a shared style, color, and disabled state to every nested button\n */\n@Directive({\n selector: '[kbqButtonGroupRoot]',\n host: {\n '[class]': 'kbqStyle'\n }\n})\nexport class KbqButtonGroupRoot extends KbqColorDirective {\n private readonly buttons = contentChildren(KbqButton);\n /**\n * Style applied to the group and propagated to every nested button.\n * individual button's style preserved but updated when group input changed.\n */\n @Input()\n get kbqStyle(): string {\n return this._kbqStyle && `kbq-button-group-root_${this._kbqStyle}`;\n }\n\n set kbqStyle(value: KbqButtonStyles | string) {\n this._kbqStyle = value || KbqButtonStyles.Filled;\n\n this.updateStyle(this._kbqStyle, this.buttons?.());\n }\n\n private _kbqStyle: string | KbqButtonStyles = '';\n\n /**\n * Color applied to the group and propagated to every nested button.\n * individual button's color preserved but updated when group input changed.\n */\n @Input()\n get color(): KbqComponentColors | ThemePalette | string {\n return this._color;\n }\n\n set color(value: KbqComponentColors | ThemePalette | string) {\n if (!value) return;\n\n super.color = value;\n\n this.updateColor(this.color, this.buttons?.());\n }\n\n /** Whether the root is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n\n this.updateDisabledState(this._disabled, this.buttons?.());\n }\n\n /** @docs-private */\n protected _disabled: boolean;\n\n constructor() {\n super();\n\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n effect(() => {\n const buttons = this.buttons();\n\n this.updateColor(this.color, buttons);\n this.updateStyle(this._kbqStyle, buttons);\n this.updateDisabledState(this.disabled, buttons);\n });\n }\n\n private updateColor(color: KbqComponentColors | ThemePalette | string, buttons?: readonly KbqButton[]) {\n buttons?.forEach((button: KbqButton) => (button.color = color));\n }\n\n private updateStyle(style: KbqButtonStyles | string, buttons?: readonly KbqButton[]) {\n buttons?.forEach((button: KbqButton) => (button.kbqStyle = style));\n }\n\n private updateDisabledState(state: boolean, buttons?: readonly KbqButton[]) {\n if (state === undefined) return;\n\n buttons?.forEach((button: KbqButton) => (button.disabled = state));\n }\n}\n\n/** Groups and styling related `KbqButton`s into a single visual unit. */\n@Component({\n selector: 'kbq-button-group, [kbq-button-group]',\n template: `\n <ng-content />\n `,\n styleUrls: ['./button-group.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'group',\n class: 'kbq-button-group',\n '[class]': '\"kbq-button-group_\" + orientation()',\n '[attr.aria-orientation]': 'orientation()'\n },\n hostDirectives: [\n { directive: KbqButtonGroupRoot, inputs: ['color', 'kbqStyle', 'disabled'] }]\n})\nexport class KbqButtonGroup {\n /**\n * Layout direction: `'horizontal'` or `'vertical'`\n * @default 'horizontal'\n */\n readonly orientation = input<KbqOrientation>('horizontal');\n}\n","import { Directive, inject } from '@angular/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\n\n/**\n * This directive enhances `kbq-button` elements acting as dropdown triggers,\n * visually indicating the active state with the `kbq-active` class,\n * following Koobiq Design System.\n *\n * The directive relies on a separate `KbqDropdownTrigger` directive to get dropdown's state.\n */\n@Directive({\n selector: `[kbq-button][kbqDropdownTriggerFor]`,\n host: {\n '[class.kbq-active]': 'dropdownTrigger.opened'\n }\n})\nexport class KbqButtonDropdownTrigger {\n dropdownTrigger = inject(KbqDropdownTrigger);\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonGroup, KbqButtonGroupRoot } from './button-group';\nimport { KbqButton, KbqButtonCssStyler } from './button.component';\nimport { KbqButtonDropdownTrigger } from './button.dropdown-trigger.directive';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n ObserversModule,\n KbqButtonDropdownTrigger,\n KbqButton,\n KbqButtonCssStyler,\n KbqButtonGroup,\n KbqButtonGroupRoot\n ],\n exports: [\n KbqButton,\n KbqButtonCssStyler,\n KbqButtonDropdownTrigger,\n KbqButtonGroup,\n KbqButtonGroupRoot\n ]\n})\nexport class KbqButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}