@koobiq/components 19.8.0 → 19.8.2

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 (74) hide show
  1. package/breadcrumbs/breadcrumbs.d.ts +22 -29
  2. package/breadcrumbs/breadcrumbs.scss +7 -0
  3. package/button/_button-base.scss +20 -0
  4. package/button/_button-theme.scss +3 -11
  5. package/button/button-slots.d.ts +11 -0
  6. package/button/button.component.d.ts +28 -13
  7. package/button/button.module.d.ts +3 -2
  8. package/button/button.scss +0 -11
  9. package/button/public-api.d.ts +1 -0
  10. package/code-block/code-block.d.ts +6 -2
  11. package/core/locales/en-US.d.ts +1 -0
  12. package/core/locales/es-LA.d.ts +1 -0
  13. package/core/locales/locale-service.d.ts +5 -0
  14. package/core/locales/pt-BR.d.ts +1 -0
  15. package/core/locales/ru-RU.d.ts +1 -0
  16. package/core/locales/tk-TM.d.ts +1 -0
  17. package/core/option/_option-theme.scss +5 -14
  18. package/core/pop-up/constants.d.ts +2 -2
  19. package/dropdown/_dropdown-theme.scss +4 -8
  20. package/dropdown/dropdown-trigger.directive.d.ts +11 -0
  21. package/dropdown/dropdown.component.d.ts +8 -0
  22. package/dropdown/dropdown.scss +4 -0
  23. package/fesm2022/koobiq-components-breadcrumbs.mjs +101 -88
  24. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-button.mjs +176 -68
  26. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-code-block.mjs +27 -2
  28. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-core.mjs +14 -10
  30. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-dropdown.mjs +46 -10
  32. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-filter-bar.mjs +8 -8
  34. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-icon.mjs +2 -2
  36. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-navbar.mjs +11 -7
  38. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-notification-center.mjs +155 -18
  40. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-popover.mjs +1 -1
  42. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-select.mjs +3 -1
  44. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-tabs.mjs +31 -10
  46. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  48. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-top-bar.mjs +7 -2
  50. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-tree-select.mjs +2 -2
  52. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-tree.mjs +6 -6
  54. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  55. package/filter-bar/_filter-bar-theme.scss +0 -4
  56. package/icon/icon-item-tokens.scss +1 -1
  57. package/navbar/navbar-item.scss +9 -0
  58. package/notification-center/_notification-center-theme.scss +2 -1
  59. package/notification-center/notification-center.d.ts +29 -1
  60. package/notification-center/notification-center.scss +28 -3
  61. package/notification-center/notification-center.service.d.ts +44 -1
  62. package/notification-center/notification-item.scss +1 -1
  63. package/package.json +9 -9
  64. package/prebuilt-themes/dark-theme.css +1 -1
  65. package/prebuilt-themes/light-theme.css +1 -1
  66. package/prebuilt-themes/theme.css +1 -1
  67. package/schematics/ng-add/index.js +2 -2
  68. package/tabs/_tabs-common.scss +31 -1
  69. package/tabs/_tabs-theme.scss +2 -2
  70. package/tabs/tab-header.component.d.ts +2 -0
  71. package/tabs/tab-label.directive.d.ts +3 -1
  72. package/tabs/tab.component.d.ts +2 -0
  73. package/tree/_tree-theme.scss +4 -0
  74. package/tree-select/_tree-select-theme.scss +39 -0
@@ -450,7 +450,7 @@ class KbqIconItem extends KbqIcon {
450
450
  this.big = false;
451
451
  }
452
452
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqIconItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
453
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.21", type: KbqIconItem, isStandalone: true, selector: "[kbq-icon-item]", inputs: { iconName: ["kbq-icon-item", "iconName"], fade: "fade", big: "big" }, host: { properties: { "class.kbq-icon-item_normal": "!big", "class.kbq-icon-item_big": "big", "class.kbq-icon-item_fade-off": "!fade", "class.kbq-icon-item_fade-on": "fade" }, classAttribute: "kbq kbq-icon-item kbq-icon-item_filled" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon-item{box-sizing:border-box;border-radius:50%}.kbq-icon-item.kbq-icon-item_normal{padding:var(--kbq-icon-item-size-normal-vertical-padding) var(--kbq-icon-item-size-normal-horizontal-padding)}.kbq-icon-item.kbq-icon-item_big{padding:var(--kbq-icon-item-size-big-vertical-padding) var(--kbq-icon-item-size-big-horizontal-padding)}.kbq-icon-item>svg{fill:currentColor;vertical-align:middle}.kbq-icon-item.kbq-icon-item_filled{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-theme{color:var(--kbq-icon-item-filled-fade-off-theme-color);background:var(--kbq-icon-item-filled-fade-off-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-contrast{color:var(--kbq-icon-item-filled-fade-off-contrast-color);background:var(--kbq-icon-item-filled-fade-off-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-error{color:var(--kbq-icon-item-filled-fade-off-error-color);background:var(--kbq-icon-item-filled-fade-off-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-warning{color:var(--kbq-icon-item-filled-fade-off-warning-color);background:var(--kbq-icon-item-filled-fade-off-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-success{color:var(--kbq-icon-item-filled-fade-off-success-color);background:var(--kbq-icon-item-filled-fade-off-success-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-theme{color:var(--kbq-icon-item-filled-fade-on-theme-color);background:var(--kbq-icon-item-filled-fade-on-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-contrast{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-error{color:var(--kbq-icon-item-filled-fade-on-error-color);background:var(--kbq-icon-item-filled-fade-on-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-warning{color:var(--kbq-icon-item-filled-fade-on-warning-color);background:var(--kbq-icon-item-filled-fade-on-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-success{color:var(--kbq-icon-item-filled-fade-on-success-color);background:var(--kbq-icon-item-filled-fade-on-success-background)}\n", ".kbq-icon-item{--kbq-icon-item-size-normal-horizontal-padding: var(--kbq-size-s);--kbq-icon-item-size-normal-vertical-padding: var(--kbq-size-s);--kbq-icon-item-size-big-horizontal-padding: var(--kbq-size-l);--kbq-icon-item-size-big-vertical-padding: var(--kbq-size-l);--kbq-icon-item-filled-fade-off-theme-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-theme-background: var(--kbq-background-theme);--kbq-icon-item-filled-fade-off-contrast-color: var(--kbq-icon-on-contrast);--kbq-icon-item-filled-fade-off-contrast-background: var(--kbq-background-contrast);--kbq-icon-item-filled-fade-off-error-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-error-background: var(--kbq-background-error);--kbq-icon-item-filled-fade-off-warning-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-warning-background: var(--kbq-background-warning);--kbq-icon-item-filled-fade-off-success-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-success-background: var(--kbq-background-success);--kbq-icon-item-filled-fade-on-theme-color: var(--kbq-icon-theme);--kbq-icon-item-filled-fade-on-theme-background: var(--kbq-background-theme-fade);--kbq-icon-item-filled-fade-on-contrast-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-on-contrast-background: var(--kbq-background-contrast-fade);--kbq-icon-item-filled-fade-on-error-color: var(--kbq-icon-error);--kbq-icon-item-filled-fade-on-error-background: var(--kbq-background-error-fade);--kbq-icon-item-filled-fade-on-warning-color: var(--kbq-icon-warning);--kbq-icon-item-filled-fade-on-warning-background: var(--kbq-background-warning-fade);--kbq-icon-item-filled-fade-on-success-color: var(--kbq-icon-success);--kbq-icon-item-filled-fade-on-success-background: var(--kbq-background-success-fade)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
453
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.21", type: KbqIconItem, isStandalone: true, selector: "[kbq-icon-item]", inputs: { iconName: ["kbq-icon-item", "iconName"], fade: "fade", big: "big" }, host: { properties: { "class.kbq-icon-item_normal": "!big", "class.kbq-icon-item_big": "big", "class.kbq-icon-item_fade-off": "!fade", "class.kbq-icon-item_fade-on": "fade" }, classAttribute: "kbq kbq-icon-item kbq-icon-item_filled" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-icon-item{box-sizing:border-box;border-radius:50%}.kbq-icon-item.kbq-icon-item_normal{padding:var(--kbq-icon-item-size-normal-vertical-padding) var(--kbq-icon-item-size-normal-horizontal-padding)}.kbq-icon-item.kbq-icon-item_big{padding:var(--kbq-icon-item-size-big-vertical-padding) var(--kbq-icon-item-size-big-horizontal-padding)}.kbq-icon-item>svg{fill:currentColor;vertical-align:middle}.kbq-icon-item.kbq-icon-item_filled{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-theme{color:var(--kbq-icon-item-filled-fade-off-theme-color);background:var(--kbq-icon-item-filled-fade-off-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-contrast{color:var(--kbq-icon-item-filled-fade-off-contrast-color);background:var(--kbq-icon-item-filled-fade-off-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-error{color:var(--kbq-icon-item-filled-fade-off-error-color);background:var(--kbq-icon-item-filled-fade-off-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-warning{color:var(--kbq-icon-item-filled-fade-off-warning-color);background:var(--kbq-icon-item-filled-fade-off-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-success{color:var(--kbq-icon-item-filled-fade-off-success-color);background:var(--kbq-icon-item-filled-fade-off-success-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-theme{color:var(--kbq-icon-item-filled-fade-on-theme-color);background:var(--kbq-icon-item-filled-fade-on-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-contrast{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-error{color:var(--kbq-icon-item-filled-fade-on-error-color);background:var(--kbq-icon-item-filled-fade-on-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-warning{color:var(--kbq-icon-item-filled-fade-on-warning-color);background:var(--kbq-icon-item-filled-fade-on-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-success{color:var(--kbq-icon-item-filled-fade-on-success-color);background:var(--kbq-icon-item-filled-fade-on-success-background)}\n", ".kbq-icon-item{--kbq-icon-item-size-normal-horizontal-padding: var(--kbq-size-s);--kbq-icon-item-size-normal-vertical-padding: var(--kbq-size-s);--kbq-icon-item-size-big-horizontal-padding: var(--kbq-size-l);--kbq-icon-item-size-big-vertical-padding: var(--kbq-size-l);--kbq-icon-item-filled-fade-off-theme-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-theme-background: var(--kbq-background-theme);--kbq-icon-item-filled-fade-off-contrast-color: var(--kbq-icon-on-contrast);--kbq-icon-item-filled-fade-off-contrast-background: var(--kbq-background-contrast);--kbq-icon-item-filled-fade-off-error-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-error-background: var(--kbq-background-error);--kbq-icon-item-filled-fade-off-warning-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-off-warning-background: var(--kbq-background-warning);--kbq-icon-item-filled-fade-off-success-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-success-background: var(--kbq-background-success);--kbq-icon-item-filled-fade-on-theme-color: var(--kbq-icon-theme);--kbq-icon-item-filled-fade-on-theme-background: var(--kbq-background-theme-fade);--kbq-icon-item-filled-fade-on-contrast-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-on-contrast-background: var(--kbq-background-contrast-fade);--kbq-icon-item-filled-fade-on-error-color: var(--kbq-icon-error);--kbq-icon-item-filled-fade-on-error-background: var(--kbq-background-error-fade);--kbq-icon-item-filled-fade-on-warning-color: var(--kbq-icon-warning);--kbq-icon-item-filled-fade-on-warning-background: var(--kbq-background-warning-fade);--kbq-icon-item-filled-fade-on-success-color: var(--kbq-icon-success);--kbq-icon-item-filled-fade-on-success-background: var(--kbq-background-success-fade)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
454
454
  }
455
455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqIconItem, decorators: [{
456
456
  type: Component,
@@ -460,7 +460,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
460
460
  '[class.kbq-icon-item_big]': 'big',
461
461
  '[class.kbq-icon-item_fade-off]': '!fade',
462
462
  '[class.kbq-icon-item_fade-on]': 'fade'
463
- }, styles: [".kbq-icon-item{box-sizing:border-box;border-radius:50%}.kbq-icon-item.kbq-icon-item_normal{padding:var(--kbq-icon-item-size-normal-vertical-padding) var(--kbq-icon-item-size-normal-horizontal-padding)}.kbq-icon-item.kbq-icon-item_big{padding:var(--kbq-icon-item-size-big-vertical-padding) var(--kbq-icon-item-size-big-horizontal-padding)}.kbq-icon-item>svg{fill:currentColor;vertical-align:middle}.kbq-icon-item.kbq-icon-item_filled{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-theme{color:var(--kbq-icon-item-filled-fade-off-theme-color);background:var(--kbq-icon-item-filled-fade-off-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-contrast{color:var(--kbq-icon-item-filled-fade-off-contrast-color);background:var(--kbq-icon-item-filled-fade-off-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-error{color:var(--kbq-icon-item-filled-fade-off-error-color);background:var(--kbq-icon-item-filled-fade-off-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-warning{color:var(--kbq-icon-item-filled-fade-off-warning-color);background:var(--kbq-icon-item-filled-fade-off-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-success{color:var(--kbq-icon-item-filled-fade-off-success-color);background:var(--kbq-icon-item-filled-fade-off-success-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-theme{color:var(--kbq-icon-item-filled-fade-on-theme-color);background:var(--kbq-icon-item-filled-fade-on-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-contrast{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-error{color:var(--kbq-icon-item-filled-fade-on-error-color);background:var(--kbq-icon-item-filled-fade-on-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-warning{color:var(--kbq-icon-item-filled-fade-on-warning-color);background:var(--kbq-icon-item-filled-fade-on-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-success{color:var(--kbq-icon-item-filled-fade-on-success-color);background:var(--kbq-icon-item-filled-fade-on-success-background)}\n", ".kbq-icon-item{--kbq-icon-item-size-normal-horizontal-padding: var(--kbq-size-s);--kbq-icon-item-size-normal-vertical-padding: var(--kbq-size-s);--kbq-icon-item-size-big-horizontal-padding: var(--kbq-size-l);--kbq-icon-item-size-big-vertical-padding: var(--kbq-size-l);--kbq-icon-item-filled-fade-off-theme-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-theme-background: var(--kbq-background-theme);--kbq-icon-item-filled-fade-off-contrast-color: var(--kbq-icon-on-contrast);--kbq-icon-item-filled-fade-off-contrast-background: var(--kbq-background-contrast);--kbq-icon-item-filled-fade-off-error-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-error-background: var(--kbq-background-error);--kbq-icon-item-filled-fade-off-warning-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-warning-background: var(--kbq-background-warning);--kbq-icon-item-filled-fade-off-success-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-success-background: var(--kbq-background-success);--kbq-icon-item-filled-fade-on-theme-color: var(--kbq-icon-theme);--kbq-icon-item-filled-fade-on-theme-background: var(--kbq-background-theme-fade);--kbq-icon-item-filled-fade-on-contrast-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-on-contrast-background: var(--kbq-background-contrast-fade);--kbq-icon-item-filled-fade-on-error-color: var(--kbq-icon-error);--kbq-icon-item-filled-fade-on-error-background: var(--kbq-background-error-fade);--kbq-icon-item-filled-fade-on-warning-color: var(--kbq-icon-warning);--kbq-icon-item-filled-fade-on-warning-background: var(--kbq-background-warning-fade);--kbq-icon-item-filled-fade-on-success-color: var(--kbq-icon-success);--kbq-icon-item-filled-fade-on-success-background: var(--kbq-background-success-fade)}\n"] }]
463
+ }, styles: [".kbq-icon-item{box-sizing:border-box;border-radius:50%}.kbq-icon-item.kbq-icon-item_normal{padding:var(--kbq-icon-item-size-normal-vertical-padding) var(--kbq-icon-item-size-normal-horizontal-padding)}.kbq-icon-item.kbq-icon-item_big{padding:var(--kbq-icon-item-size-big-vertical-padding) var(--kbq-icon-item-size-big-horizontal-padding)}.kbq-icon-item>svg{fill:currentColor;vertical-align:middle}.kbq-icon-item.kbq-icon-item_filled{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-theme{color:var(--kbq-icon-item-filled-fade-off-theme-color);background:var(--kbq-icon-item-filled-fade-off-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-contrast{color:var(--kbq-icon-item-filled-fade-off-contrast-color);background:var(--kbq-icon-item-filled-fade-off-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-error{color:var(--kbq-icon-item-filled-fade-off-error-color);background:var(--kbq-icon-item-filled-fade-off-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-warning{color:var(--kbq-icon-item-filled-fade-off-warning-color);background:var(--kbq-icon-item-filled-fade-off-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-off.kbq-success{color:var(--kbq-icon-item-filled-fade-off-success-color);background:var(--kbq-icon-item-filled-fade-off-success-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-theme{color:var(--kbq-icon-item-filled-fade-on-theme-color);background:var(--kbq-icon-item-filled-fade-on-theme-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-contrast{color:var(--kbq-icon-item-filled-fade-on-contrast-color);background:var(--kbq-icon-item-filled-fade-on-contrast-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-error{color:var(--kbq-icon-item-filled-fade-on-error-color);background:var(--kbq-icon-item-filled-fade-on-error-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-warning{color:var(--kbq-icon-item-filled-fade-on-warning-color);background:var(--kbq-icon-item-filled-fade-on-warning-background)}.kbq-icon-item.kbq-icon-item_filled.kbq-icon-item_fade-on.kbq-success{color:var(--kbq-icon-item-filled-fade-on-success-color);background:var(--kbq-icon-item-filled-fade-on-success-background)}\n", ".kbq-icon-item{--kbq-icon-item-size-normal-horizontal-padding: var(--kbq-size-s);--kbq-icon-item-size-normal-vertical-padding: var(--kbq-size-s);--kbq-icon-item-size-big-horizontal-padding: var(--kbq-size-l);--kbq-icon-item-size-big-vertical-padding: var(--kbq-size-l);--kbq-icon-item-filled-fade-off-theme-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-theme-background: var(--kbq-background-theme);--kbq-icon-item-filled-fade-off-contrast-color: var(--kbq-icon-on-contrast);--kbq-icon-item-filled-fade-off-contrast-background: var(--kbq-background-contrast);--kbq-icon-item-filled-fade-off-error-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-error-background: var(--kbq-background-error);--kbq-icon-item-filled-fade-off-warning-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-off-warning-background: var(--kbq-background-warning);--kbq-icon-item-filled-fade-off-success-color: var(--kbq-icon-white);--kbq-icon-item-filled-fade-off-success-background: var(--kbq-background-success);--kbq-icon-item-filled-fade-on-theme-color: var(--kbq-icon-theme);--kbq-icon-item-filled-fade-on-theme-background: var(--kbq-background-theme-fade);--kbq-icon-item-filled-fade-on-contrast-color: var(--kbq-icon-contrast);--kbq-icon-item-filled-fade-on-contrast-background: var(--kbq-background-contrast-fade);--kbq-icon-item-filled-fade-on-error-color: var(--kbq-icon-error);--kbq-icon-item-filled-fade-on-error-background: var(--kbq-background-error-fade);--kbq-icon-item-filled-fade-on-warning-color: var(--kbq-icon-warning);--kbq-icon-item-filled-fade-on-warning-background: var(--kbq-background-warning-fade);--kbq-icon-item-filled-fade-on-success-color: var(--kbq-icon-success);--kbq-icon-item-filled-fade-on-success-background: var(--kbq-background-success-fade)}\n"] }]
464
464
  }], propDecorators: { iconName: [{
465
465
  type: Input,
466
466
  args: [{ alias: 'kbq-icon-item' }]
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-icon.mjs","sources":["../../../packages/components/icon/icon-registry-providers.ts","../../../packages/components/icon/icon-registry.ts","../../../packages/components/icon/icon.component.ts","../../../packages/components/icon/icon-button.component.ts","../../../packages/components/icon/icon-item.component.ts","../../../packages/components/icon/icon.module.ts","../../../packages/components/icon/koobiq-components-icon.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport interface KbqIconsConfig {\n /** URL to the SVG sprite file. Must be served as a static asset. */\n spriteUrl: string;\n /** Optional namespace to register the sprite under. */\n namespace?: string;\n}\n\nexport const KBQ_ICONS_CONFIG = new InjectionToken<KbqIconsConfig[]>('KBQ_ICONS_CONFIG');\n\n/**\n * A function that resolves an icon name to either an inline SVG string or a URL string.\n * Return `null` to indicate this resolver does not handle the given name.\n */\nexport type KbqIconResolver = (name: string) => string | null;\n\n/**\n * Multi-valued injection token for icon resolver functions.\n * Resolvers are tried in registration order; the first non-null result wins.\n */\nexport const KBQ_ICON_RESOLVER = new InjectionToken<KbqIconResolver[]>('KBQ_ICON_RESOLVER');\n\n/** Configures the icon registry to load icons from one or more SVG sprite assets. */\nexport function kbqIconsProvider(...sprites: KbqIconsConfig[]): Provider {\n return { provide: KBQ_ICONS_CONFIG, useValue: sprites };\n}\n\n/**\n * Registers a resolver function that maps icon names to SVG strings or URLs.\n * Multiple resolvers can be registered; they are tried in registration order.\n */\nexport function kbqIconsResolverProvider(resolver: KbqIconResolver): Provider {\n return { provide: KBQ_ICON_RESOLVER, useValue: resolver, multi: true };\n}\n\n/**\n * Registers a name→SVG/URL dictionary as an icon resolver.\n * Values starting with `<` are treated as inline SVG (no HTTP request).\n * All other values are treated as URLs and fetched at runtime.\n *\n * @example\n * kbqIconsDictProvider({ 'chevron-down-s_16': '<svg>...</svg>' })\n */\nexport function kbqIconsDictProvider(dict: Record<string, string>): Provider {\n return kbqIconsResolverProvider((name) => dict[name] ?? null);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share } from 'rxjs/operators';\nimport { KBQ_ICON_RESOLVER, KBQ_ICONS_CONFIG } from './icon-registry-providers';\n\nexport interface KbqIconOptions {\n viewBox?: string;\n withCredentials?: boolean;\n}\n\ninterface KbqSvgIconConfig {\n svgText: SafeHtml | null;\n url: SafeResourceUrl | null;\n options: KbqIconOptions | undefined;\n /** Cached parsed element (for literal icons or already-fetched URLs). */\n svgElement: SVGElement | null;\n}\n\nfunction iconKey(namespace: string, name: string): string {\n return namespace ? `${namespace}:${name}` : name;\n}\n\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqIconRegistry {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly httpClient = inject(HttpClient, { optional: true });\n private readonly iconsConfig = inject(KBQ_ICONS_CONFIG, { optional: true });\n private readonly resolvers = inject(KBQ_ICON_RESOLVER, { optional: true }) ?? [];\n\n /** Individual icon configs, keyed by \"namespace:name\". */\n private readonly iconConfigs = new Map<string, KbqSvgIconConfig>();\n\n /** Icon-set configs per namespace. */\n private readonly iconSetConfigs = new Map<string, KbqSvgIconConfig[]>();\n\n /** In-progress URL fetches to dedupe concurrent requests. */\n private readonly inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Cached parsed SVG sets, keyed by URL string. */\n private readonly cachedIconSets = new Map<string, SVGElement>();\n\n constructor() {\n this.registerIconSet();\n }\n\n /** Registers an SVG icon by URL in the default namespace. */\n addSvgIcon(name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconInNamespace('', name, url, options);\n }\n\n /** Registers an SVG icon from an inline HTML string in the default namespace. */\n addSvgIconLiteral(name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n this.addSvgIconLiteralInNamespace('', name, literal, options);\n }\n\n /** Registers an SVG icon by URL under the given namespace. */\n addSvgIconInNamespace(namespace: string, name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.cacheIcon(namespace, name, { url, svgText: null, options, svgElement: null });\n }\n\n /** Registers an SVG icon from an inline HTML string under the given namespace. */\n addSvgIconLiteralInNamespace(namespace: string, name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitized) {\n throw Error(`KbqIconRegistry: literal for icon \"${iconKey(namespace, name)}\" sanitized to empty string.`);\n }\n\n this.cacheIcon(namespace, name, {\n url: null,\n svgText: this.sanitizer.bypassSecurityTrustHtml(sanitized),\n options,\n svgElement: null\n });\n }\n\n /** Registers an SVG sprite file in the default namespace. Icons are looked up by their `symbol id`. */\n addSvgIconSet(url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconSetInNamespace('', url, options);\n }\n\n /** Registers an SVG sprite file under the given namespace. Duplicate URLs are silently ignored. */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url) ?? '';\n const sets = this.iconSetConfigs.get(namespace) ?? [];\n const alreadyRegistered = sets.some(\n (set) => this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, set.url!) === urlStr\n );\n\n if (alreadyRegistered) return;\n\n const config: KbqSvgIconConfig = { url, svgText: null, options, svgElement: null };\n\n sets.push(config);\n this.iconSetConfigs.set(namespace, sets);\n }\n\n /**\n * Emits a cloned SVGElement for the given name.\n * Accepts \"namespace:name\" syntax.\n */\n getNamedSvgIcon(name: string, namespace = ''): Observable<SVGElement> {\n let resolvedNs = namespace;\n let resolvedName = name;\n\n if (resolvedName.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, resolvedName) ?? '';\n\n return of(this.svgElementFromText(sanitized));\n }\n\n const colonIndex = name.indexOf(':');\n\n if (colonIndex !== -1) {\n resolvedNs = name.slice(0, colonIndex);\n resolvedName = name.slice(colonIndex + 1);\n }\n\n const key = iconKey(resolvedNs, resolvedName);\n\n const iconConfig = this.iconConfigs.get(key);\n\n if (iconConfig) {\n return this.loadIcon(iconConfig, resolvedName);\n }\n\n for (const resolver of this.resolvers) {\n const result = resolver(resolvedName);\n\n if (result == null) continue;\n\n const config: KbqSvgIconConfig = {\n url: null,\n svgText: null,\n svgElement: null,\n options: undefined\n };\n\n if (result.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, result) ?? '';\n\n config.svgText = this.sanitizer.bypassSecurityTrustHtml(sanitized);\n } else {\n config.url = this.sanitizer.bypassSecurityTrustResourceUrl(result);\n }\n\n this.iconConfigs.set(key, config);\n\n return this.loadIcon(config, resolvedName);\n }\n\n const sets = this.iconSetConfigs.get(resolvedNs);\n\n if (sets?.length) {\n return this.loadIconFromSets(resolvedName, sets);\n }\n\n return throwError(() => Error(`KbqIconRegistry: no icon registered for \"${key}\".`));\n }\n\n private cacheIcon(namespace: string, name: string, config: KbqSvgIconConfig): this {\n this.iconConfigs.set(iconKey(namespace, name), config);\n\n return this;\n }\n\n private loadIcon(config: KbqSvgIconConfig, name: string): Observable<SVGElement> {\n if (config.svgElement) {\n return of(cloneSvg(config.svgElement));\n }\n\n if (config.svgText) {\n const svg = this.svgElementFromText(config.svgText as string, config.options);\n\n config.svgElement = svg;\n\n return of(cloneSvg(svg));\n }\n\n if (config.url) {\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n\n return cloneSvg(svg);\n })\n );\n }\n\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" has neither URL nor literal.`));\n }\n\n private registerIconSet(): void {\n if (!this.iconsConfig) return;\n\n for (const config of this.iconsConfig) {\n const url = this.sanitizer.bypassSecurityTrustResourceUrl(config.spriteUrl);\n\n if (config.namespace) {\n this.addSvgIconSetInNamespace(config.namespace, url);\n } else {\n this.addSvgIconSet(url);\n }\n }\n }\n\n private loadIconFromSets(name: string, sets: KbqSvgIconConfig[]): Observable<SVGElement> {\n const sources = sets\n .slice()\n .reverse()\n .map((set) => this.loadIconSet(set));\n\n const tryNext = (index: number): Observable<SVGElement> => {\n if (index >= sources.length) {\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" not found in any registered icon set.`));\n }\n\n return sources[index].pipe(\n map((setElement) => {\n const icon = this.extractIconFromSet(name, setElement);\n\n if (!icon) {\n throw Error(`KbqIconRegistry: icon \"${name}\" not found in set.`);\n }\n\n return icon;\n }),\n catchError(() => tryNext(index + 1))\n );\n };\n\n return tryNext(0);\n }\n\n private loadIconSet(config: KbqSvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n if (!config.url) {\n return throwError(() => Error('KbqIconRegistry: icon set has no URL.'));\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, config.url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: icon set URL failed sanitization.'));\n }\n\n if (this.cachedIconSets.has(urlStr)) {\n config.svgElement = this.cachedIconSets.get(urlStr)!;\n\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n this.cachedIconSets.set(urlStr, svg);\n\n return svg;\n })\n );\n }\n\n private extractIconFromSet(name: string, setElement: SVGElement): SVGElement | null {\n const symbol = setElement.querySelector(`#${name}`);\n\n if (!symbol) return null;\n\n const svg = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n const viewBox = symbol.getAttribute('viewBox') || setElement.getAttribute('viewBox') || '0 0 24 24';\n\n svg.setAttribute('viewBox', viewBox);\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n for (const child of Array.from(symbol.childNodes)) {\n svg.appendChild(child.cloneNode(true));\n }\n\n return svg;\n }\n\n private svgElementFromText(text: string, options?: KbqIconOptions): SVGElement {\n const div = this.document.createElement('div');\n\n div.innerHTML = text;\n\n const svg = div.querySelector('svg') as SVGElement | null;\n\n if (!svg) {\n throw Error('KbqIconRegistry: could not find <svg> element in icon markup.');\n }\n\n if (options?.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n return svg;\n }\n\n private fetchUrl(url: SafeResourceUrl, withCredentials = false): Observable<string> {\n if (!this.httpClient) {\n throw Error(\n 'KbqIconRegistry: HttpClient is required for loading icons from URLs. ' +\n 'Provide it via provideHttpClient() or HttpClientModule.'\n );\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: URL failed security sanitization.'));\n }\n\n const inProgress = this.inProgressUrlFetches.get(urlStr);\n\n if (inProgress) return inProgress;\n\n const fetch = this.httpClient.get(urlStr, { responseType: 'text', withCredentials }).pipe(\n share(),\n finalize(() => this.inProgressUrlFetches.delete(urlStr))\n );\n\n this.inProgressUrlFetches.set(urlStr, fetch);\n\n return fetch;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { EMPTY, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { KbqIconRegistry } from './icon-registry';\n\n@Component({\n selector: '[kbq-icon]',\n template: '<ng-content />',\n styleUrls: ['icon.scss', 'icon-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon',\n '[class]': 'svgIcon ? null : iconName',\n '[class.kbq-error]': 'color === \"error\" || hasError'\n }\n})\nexport class KbqIcon extends KbqColorDirective implements AfterContentInit, OnChanges {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly formField = inject(KBQ_FORM_FIELD_REF, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly registry = inject(KbqIconRegistry, { optional: true });\n protected readonly destroyRef = inject(DestroyRef);\n\n @Input() small = false;\n @Input() autoColor = false;\n\n hasError: boolean = false;\n\n /** Name of an icon within a @koobiq/icons. Accepts \"namespace:name\" syntax. */\n @Input({ alias: 'kbq-icon' }) iconName: string;\n\n protected name = 'KbqIcon';\n\n /**\n * True when icon is being rendered as inline SVG.\n * @docs-private\n */\n protected svgIcon = false;\n\n /** @docs-private */\n protected readonly svgIconName = new ReplaySubject<string | undefined>(1);\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n updateMaxHeight() {\n if (this.name !== 'KbqIcon') {\n return;\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n this.getHostElement().style.maxHeight = `${size}px`;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconName) {\n this.svgIconName.next(changes['iconName'].currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.autoColor) {\n this.formField?.control?.stateChanges.subscribe(this.updateState);\n this.updateState();\n }\n\n this.updateMaxHeight();\n\n this.svgIconName\n .pipe(\n switchMap((name) => {\n if (!this.registry || !name) {\n this.svgIcon = false;\n\n return EMPTY;\n }\n\n return this.registry.getNamedSvgIcon(name);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: (svg) => {\n this.svgIcon = true;\n const host = this.getHostElement();\n\n // Remove any previously injected SVG.\n const existing = host.querySelector('svg');\n\n if (existing) {\n host.removeChild(existing);\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n svg.setAttribute('width', `${size}`);\n svg.setAttribute('height', `${size}`);\n }\n\n host.insertBefore(svg, host.firstChild);\n this.changeDetectorRef.markForCheck();\n },\n error: () => {\n // Icon not registered — fall through to font-class path.\n this.svgIcon = false;\n this.updateMaxHeight();\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private updateState = () => {\n this.hasError = this.formField?.control?.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private parseIconSize(): number {\n const baseName = this.iconName?.includes(':') ? this.iconName.split(':')[1] : this.iconName;\n\n return parseInt(baseName?.split('_').pop() ?? '');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Input,\n OnDestroy,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-button]`,\n template: '<ng-content />',\n styleUrls: ['icon-button.scss', 'icon-button-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon-button',\n\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-icon-button_small]': 'small'\n }\n})\nexport class KbqIconButton extends KbqIcon implements AfterViewInit, OnDestroy {\n protected readonly focusMonitor = inject(FocusMonitor);\n\n @Input() small = false;\n\n /** Name of an icon within a @koobiq/icons. */\n @Input({ alias: 'kbq-icon-button' }) iconName: string;\n\n @Input()\n get tabindex() {\n return this.disabled ? null : this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = 0;\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 override name = 'KbqIconButton';\n\n constructor() {\n super();\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 private runFocusMonitor() {\n this.focusMonitor.monitor(this.getHostElement(), true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.getHostElement());\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-item]`,\n template: '<ng-content />',\n styleUrls: ['icon-item.scss', 'icon-item-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon-item kbq-icon-item_filled',\n '[class.kbq-icon-item_normal]': '!big',\n '[class.kbq-icon-item_big]': 'big',\n '[class.kbq-icon-item_fade-off]': '!fade',\n '[class.kbq-icon-item_fade-on]': 'fade'\n }\n})\nexport class KbqIconItem extends KbqIcon {\n override name = 'KbqIconItem';\n\n /** Name of an icon within a @koobiq/icons. */\n @Input({ alias: 'kbq-icon-item' }) iconName: string;\n\n @Input() fade: boolean = false;\n @Input() big: boolean = false;\n}\n","import { NgModule } from '@angular/core';\nimport { KbqIconButton } from './icon-button.component';\nimport { KbqIconItem } from './icon-item.component';\nimport { KbqIcon } from './icon.component';\n\nconst COMPONENTS = [\n KbqIcon,\n KbqIconButton,\n KbqIconItem\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqIconModule {}\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-icon.mjs","sources":["../../../packages/components/icon/icon-registry-providers.ts","../../../packages/components/icon/icon-registry.ts","../../../packages/components/icon/icon.component.ts","../../../packages/components/icon/icon-button.component.ts","../../../packages/components/icon/icon-item.component.ts","../../../packages/components/icon/icon.module.ts","../../../packages/components/icon/koobiq-components-icon.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport interface KbqIconsConfig {\n /** URL to the SVG sprite file. Must be served as a static asset. */\n spriteUrl: string;\n /** Optional namespace to register the sprite under. */\n namespace?: string;\n}\n\nexport const KBQ_ICONS_CONFIG = new InjectionToken<KbqIconsConfig[]>('KBQ_ICONS_CONFIG');\n\n/**\n * A function that resolves an icon name to either an inline SVG string or a URL string.\n * Return `null` to indicate this resolver does not handle the given name.\n */\nexport type KbqIconResolver = (name: string) => string | null;\n\n/**\n * Multi-valued injection token for icon resolver functions.\n * Resolvers are tried in registration order; the first non-null result wins.\n */\nexport const KBQ_ICON_RESOLVER = new InjectionToken<KbqIconResolver[]>('KBQ_ICON_RESOLVER');\n\n/** Configures the icon registry to load icons from one or more SVG sprite assets. */\nexport function kbqIconsProvider(...sprites: KbqIconsConfig[]): Provider {\n return { provide: KBQ_ICONS_CONFIG, useValue: sprites };\n}\n\n/**\n * Registers a resolver function that maps icon names to SVG strings or URLs.\n * Multiple resolvers can be registered; they are tried in registration order.\n */\nexport function kbqIconsResolverProvider(resolver: KbqIconResolver): Provider {\n return { provide: KBQ_ICON_RESOLVER, useValue: resolver, multi: true };\n}\n\n/**\n * Registers a name→SVG/URL dictionary as an icon resolver.\n * Values starting with `<` are treated as inline SVG (no HTTP request).\n * All other values are treated as URLs and fetched at runtime.\n *\n * @example\n * kbqIconsDictProvider({ 'chevron-down-s_16': '<svg>...</svg>' })\n */\nexport function kbqIconsDictProvider(dict: Record<string, string>): Provider {\n return kbqIconsResolverProvider((name) => dict[name] ?? null);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share } from 'rxjs/operators';\nimport { KBQ_ICON_RESOLVER, KBQ_ICONS_CONFIG } from './icon-registry-providers';\n\nexport interface KbqIconOptions {\n viewBox?: string;\n withCredentials?: boolean;\n}\n\ninterface KbqSvgIconConfig {\n svgText: SafeHtml | null;\n url: SafeResourceUrl | null;\n options: KbqIconOptions | undefined;\n /** Cached parsed element (for literal icons or already-fetched URLs). */\n svgElement: SVGElement | null;\n}\n\nfunction iconKey(namespace: string, name: string): string {\n return namespace ? `${namespace}:${name}` : name;\n}\n\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqIconRegistry {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly httpClient = inject(HttpClient, { optional: true });\n private readonly iconsConfig = inject(KBQ_ICONS_CONFIG, { optional: true });\n private readonly resolvers = inject(KBQ_ICON_RESOLVER, { optional: true }) ?? [];\n\n /** Individual icon configs, keyed by \"namespace:name\". */\n private readonly iconConfigs = new Map<string, KbqSvgIconConfig>();\n\n /** Icon-set configs per namespace. */\n private readonly iconSetConfigs = new Map<string, KbqSvgIconConfig[]>();\n\n /** In-progress URL fetches to dedupe concurrent requests. */\n private readonly inProgressUrlFetches = new Map<string, Observable<string>>();\n\n /** Cached parsed SVG sets, keyed by URL string. */\n private readonly cachedIconSets = new Map<string, SVGElement>();\n\n constructor() {\n this.registerIconSet();\n }\n\n /** Registers an SVG icon by URL in the default namespace. */\n addSvgIcon(name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconInNamespace('', name, url, options);\n }\n\n /** Registers an SVG icon from an inline HTML string in the default namespace. */\n addSvgIconLiteral(name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n this.addSvgIconLiteralInNamespace('', name, literal, options);\n }\n\n /** Registers an SVG icon by URL under the given namespace. */\n addSvgIconInNamespace(namespace: string, name: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.cacheIcon(namespace, name, { url, svgText: null, options, svgElement: null });\n }\n\n /** Registers an SVG icon from an inline HTML string under the given namespace. */\n addSvgIconLiteralInNamespace(namespace: string, name: string, literal: SafeHtml, options?: KbqIconOptions): void {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitized) {\n throw Error(`KbqIconRegistry: literal for icon \"${iconKey(namespace, name)}\" sanitized to empty string.`);\n }\n\n this.cacheIcon(namespace, name, {\n url: null,\n svgText: this.sanitizer.bypassSecurityTrustHtml(sanitized),\n options,\n svgElement: null\n });\n }\n\n /** Registers an SVG sprite file in the default namespace. Icons are looked up by their `symbol id`. */\n addSvgIconSet(url: SafeResourceUrl, options?: KbqIconOptions): void {\n this.addSvgIconSetInNamespace('', url, options);\n }\n\n /** Registers an SVG sprite file under the given namespace. Duplicate URLs are silently ignored. */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: KbqIconOptions): void {\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url) ?? '';\n const sets = this.iconSetConfigs.get(namespace) ?? [];\n const alreadyRegistered = sets.some(\n (set) => this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, set.url!) === urlStr\n );\n\n if (alreadyRegistered) return;\n\n const config: KbqSvgIconConfig = { url, svgText: null, options, svgElement: null };\n\n sets.push(config);\n this.iconSetConfigs.set(namespace, sets);\n }\n\n /**\n * Emits a cloned SVGElement for the given name.\n * Accepts \"namespace:name\" syntax.\n */\n getNamedSvgIcon(name: string, namespace = ''): Observable<SVGElement> {\n let resolvedNs = namespace;\n let resolvedName = name;\n\n if (resolvedName.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, resolvedName) ?? '';\n\n return of(this.svgElementFromText(sanitized));\n }\n\n const colonIndex = name.indexOf(':');\n\n if (colonIndex !== -1) {\n resolvedNs = name.slice(0, colonIndex);\n resolvedName = name.slice(colonIndex + 1);\n }\n\n const key = iconKey(resolvedNs, resolvedName);\n\n const iconConfig = this.iconConfigs.get(key);\n\n if (iconConfig) {\n return this.loadIcon(iconConfig, resolvedName);\n }\n\n for (const resolver of this.resolvers) {\n const result = resolver(resolvedName);\n\n if (result == null) continue;\n\n const config: KbqSvgIconConfig = {\n url: null,\n svgText: null,\n svgElement: null,\n options: undefined\n };\n\n if (result.trimStart().startsWith('<')) {\n const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, result) ?? '';\n\n config.svgText = this.sanitizer.bypassSecurityTrustHtml(sanitized);\n } else {\n config.url = this.sanitizer.bypassSecurityTrustResourceUrl(result);\n }\n\n this.iconConfigs.set(key, config);\n\n return this.loadIcon(config, resolvedName);\n }\n\n const sets = this.iconSetConfigs.get(resolvedNs);\n\n if (sets?.length) {\n return this.loadIconFromSets(resolvedName, sets);\n }\n\n return throwError(() => Error(`KbqIconRegistry: no icon registered for \"${key}\".`));\n }\n\n private cacheIcon(namespace: string, name: string, config: KbqSvgIconConfig): this {\n this.iconConfigs.set(iconKey(namespace, name), config);\n\n return this;\n }\n\n private loadIcon(config: KbqSvgIconConfig, name: string): Observable<SVGElement> {\n if (config.svgElement) {\n return of(cloneSvg(config.svgElement));\n }\n\n if (config.svgText) {\n const svg = this.svgElementFromText(config.svgText as string, config.options);\n\n config.svgElement = svg;\n\n return of(cloneSvg(svg));\n }\n\n if (config.url) {\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n\n return cloneSvg(svg);\n })\n );\n }\n\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" has neither URL nor literal.`));\n }\n\n private registerIconSet(): void {\n if (!this.iconsConfig) return;\n\n for (const config of this.iconsConfig) {\n const url = this.sanitizer.bypassSecurityTrustResourceUrl(config.spriteUrl);\n\n if (config.namespace) {\n this.addSvgIconSetInNamespace(config.namespace, url);\n } else {\n this.addSvgIconSet(url);\n }\n }\n }\n\n private loadIconFromSets(name: string, sets: KbqSvgIconConfig[]): Observable<SVGElement> {\n const sources = sets\n .slice()\n .reverse()\n .map((set) => this.loadIconSet(set));\n\n const tryNext = (index: number): Observable<SVGElement> => {\n if (index >= sources.length) {\n return throwError(() => Error(`KbqIconRegistry: icon \"${name}\" not found in any registered icon set.`));\n }\n\n return sources[index].pipe(\n map((setElement) => {\n const icon = this.extractIconFromSet(name, setElement);\n\n if (!icon) {\n throw Error(`KbqIconRegistry: icon \"${name}\" not found in set.`);\n }\n\n return icon;\n }),\n catchError(() => tryNext(index + 1))\n );\n };\n\n return tryNext(0);\n }\n\n private loadIconSet(config: KbqSvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n if (!config.url) {\n return throwError(() => Error('KbqIconRegistry: icon set has no URL.'));\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, config.url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: icon set URL failed sanitization.'));\n }\n\n if (this.cachedIconSets.has(urlStr)) {\n config.svgElement = this.cachedIconSets.get(urlStr)!;\n\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url, config.options?.withCredentials).pipe(\n map((text) => {\n const svg = this.svgElementFromText(text, config.options);\n\n config.svgElement = svg;\n this.cachedIconSets.set(urlStr, svg);\n\n return svg;\n })\n );\n }\n\n private extractIconFromSet(name: string, setElement: SVGElement): SVGElement | null {\n const symbol = setElement.querySelector(`#${name}`);\n\n if (!symbol) return null;\n\n const svg = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n const viewBox = symbol.getAttribute('viewBox') || setElement.getAttribute('viewBox') || '0 0 24 24';\n\n svg.setAttribute('viewBox', viewBox);\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n for (const child of Array.from(symbol.childNodes)) {\n svg.appendChild(child.cloneNode(true));\n }\n\n return svg;\n }\n\n private svgElementFromText(text: string, options?: KbqIconOptions): SVGElement {\n const div = this.document.createElement('div');\n\n div.innerHTML = text;\n\n const svg = div.querySelector('svg') as SVGElement | null;\n\n if (!svg) {\n throw Error('KbqIconRegistry: could not find <svg> element in icon markup.');\n }\n\n if (options?.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n return svg;\n }\n\n private fetchUrl(url: SafeResourceUrl, withCredentials = false): Observable<string> {\n if (!this.httpClient) {\n throw Error(\n 'KbqIconRegistry: HttpClient is required for loading icons from URLs. ' +\n 'Provide it via provideHttpClient() or HttpClientModule.'\n );\n }\n\n const urlStr = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n\n if (!urlStr) {\n return throwError(() => Error('KbqIconRegistry: URL failed security sanitization.'));\n }\n\n const inProgress = this.inProgressUrlFetches.get(urlStr);\n\n if (inProgress) return inProgress;\n\n const fetch = this.httpClient.get(urlStr, { responseType: 'text', withCredentials }).pipe(\n share(),\n finalize(() => this.inProgressUrlFetches.delete(urlStr))\n );\n\n this.inProgressUrlFetches.set(urlStr, fetch);\n\n return fetch;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { EMPTY, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { KbqIconRegistry } from './icon-registry';\n\n@Component({\n selector: '[kbq-icon]',\n template: '<ng-content />',\n styleUrls: ['icon.scss', 'icon-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon',\n '[class]': 'svgIcon ? null : iconName',\n '[class.kbq-error]': 'color === \"error\" || hasError'\n }\n})\nexport class KbqIcon extends KbqColorDirective implements AfterContentInit, OnChanges {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly formField = inject(KBQ_FORM_FIELD_REF, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly registry = inject(KbqIconRegistry, { optional: true });\n protected readonly destroyRef = inject(DestroyRef);\n\n @Input() small = false;\n @Input() autoColor = false;\n\n hasError: boolean = false;\n\n /** Name of an icon within a @koobiq/icons. Accepts \"namespace:name\" syntax. */\n @Input({ alias: 'kbq-icon' }) iconName: string;\n\n protected name = 'KbqIcon';\n\n /**\n * True when icon is being rendered as inline SVG.\n * @docs-private\n */\n protected svgIcon = false;\n\n /** @docs-private */\n protected readonly svgIconName = new ReplaySubject<string | undefined>(1);\n\n getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n updateMaxHeight() {\n if (this.name !== 'KbqIcon') {\n return;\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n this.getHostElement().style.maxHeight = `${size}px`;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.iconName) {\n this.svgIconName.next(changes['iconName'].currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.autoColor) {\n this.formField?.control?.stateChanges.subscribe(this.updateState);\n this.updateState();\n }\n\n this.updateMaxHeight();\n\n this.svgIconName\n .pipe(\n switchMap((name) => {\n if (!this.registry || !name) {\n this.svgIcon = false;\n\n return EMPTY;\n }\n\n return this.registry.getNamedSvgIcon(name);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: (svg) => {\n this.svgIcon = true;\n const host = this.getHostElement();\n\n // Remove any previously injected SVG.\n const existing = host.querySelector('svg');\n\n if (existing) {\n host.removeChild(existing);\n }\n\n const size = this.parseIconSize();\n\n if (size) {\n svg.setAttribute('width', `${size}`);\n svg.setAttribute('height', `${size}`);\n }\n\n host.insertBefore(svg, host.firstChild);\n this.changeDetectorRef.markForCheck();\n },\n error: () => {\n // Icon not registered — fall through to font-class path.\n this.svgIcon = false;\n this.updateMaxHeight();\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private updateState = () => {\n this.hasError = this.formField?.control?.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private parseIconSize(): number {\n const baseName = this.iconName?.includes(':') ? this.iconName.split(':')[1] : this.iconName;\n\n return parseInt(baseName?.split('_').pop() ?? '');\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Input,\n OnDestroy,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-button]`,\n template: '<ng-content />',\n styleUrls: ['icon-button.scss', 'icon-button-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon-button',\n\n '[attr.tabindex]': 'tabindex',\n '[attr.disabled]': 'disabled || null',\n\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-icon-button_small]': 'small'\n }\n})\nexport class KbqIconButton extends KbqIcon implements AfterViewInit, OnDestroy {\n protected readonly focusMonitor = inject(FocusMonitor);\n\n @Input() small = false;\n\n /** Name of an icon within a @koobiq/icons. */\n @Input({ alias: 'kbq-icon-button' }) iconName: string;\n\n @Input()\n get tabindex() {\n return this.disabled ? null : this._tabindex;\n }\n\n set tabindex(value: any) {\n this._tabindex = value;\n }\n\n private _tabindex = 0;\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 override name = 'KbqIconButton';\n\n constructor() {\n super();\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 private runFocusMonitor() {\n this.focusMonitor.monitor(this.getHostElement(), true);\n }\n\n private stopFocusMonitor() {\n this.focusMonitor.stopMonitoring(this.getHostElement());\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqIcon } from './icon.component';\n\n@Component({\n selector: `[kbq-icon-item]`,\n template: '<ng-content />',\n styleUrls: ['icon-item.scss', 'icon-item-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq kbq-icon-item kbq-icon-item_filled',\n '[class.kbq-icon-item_normal]': '!big',\n '[class.kbq-icon-item_big]': 'big',\n '[class.kbq-icon-item_fade-off]': '!fade',\n '[class.kbq-icon-item_fade-on]': 'fade'\n }\n})\nexport class KbqIconItem extends KbqIcon {\n override name = 'KbqIconItem';\n\n /** Name of an icon within a @koobiq/icons. */\n @Input({ alias: 'kbq-icon-item' }) iconName: string;\n\n @Input() fade: boolean = false;\n @Input() big: boolean = false;\n}\n","import { NgModule } from '@angular/core';\nimport { KbqIconButton } from './icon-button.component';\nimport { KbqIconItem } from './icon-item.component';\nimport { KbqIcon } from './icon.component';\n\nconst COMPONENTS = [\n KbqIcon,\n KbqIconButton,\n KbqIconItem\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}