@testgorilla/tgo-ui 8.19.1 → 9.0.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 (205) hide show
  1. package/components/accordion/index.d.ts +7 -7
  2. package/components/ai-audio-circle/index.d.ts +3 -3
  3. package/components/ai-caveat/index.d.ts +5 -5
  4. package/components/ai-feedback/index.d.ts +14 -14
  5. package/components/alert-banner/index.d.ts +8 -8
  6. package/components/autocomplete/index.d.ts +15 -16
  7. package/components/autocomplete-v2/index.d.ts +36 -32
  8. package/components/avatar/index.d.ts +7 -7
  9. package/components/badge/index.d.ts +6 -6
  10. package/components/breadcrumb/index.d.ts +11 -11
  11. package/components/button/index.d.ts +23 -13
  12. package/components/card/index.d.ts +4 -4
  13. package/components/checkbox/index.d.ts +24 -24
  14. package/components/core/index.d.ts +39 -31
  15. package/components/datepicker/index.d.ts +18 -18
  16. package/components/dialog/index.d.ts +29 -21
  17. package/components/divider/index.d.ts +4 -4
  18. package/components/donut-chart/index.d.ts +3 -3
  19. package/components/dropdown/index.d.ts +37 -33
  20. package/components/elevation-shadow/index.d.ts +3 -3
  21. package/components/empty-state/index.d.ts +7 -7
  22. package/components/field/index.d.ts +33 -44
  23. package/components/file-upload/index.d.ts +14 -13
  24. package/components/filter-button/index.d.ts +19 -19
  25. package/components/gaussian-chart/index.d.ts +8 -8
  26. package/components/icon/index.d.ts +20 -18
  27. package/components/icon-label/index.d.ts +5 -5
  28. package/components/inline-field/index.d.ts +20 -24
  29. package/components/logo/index.d.ts +2 -3
  30. package/components/media-dialog/index.d.ts +3 -3
  31. package/components/multi-input/index.d.ts +25 -16
  32. package/components/navbar/index.d.ts +30 -30
  33. package/components/overflow-menu/index.d.ts +20 -19
  34. package/components/page-header/index.d.ts +5 -5
  35. package/components/paginator/index.d.ts +4 -4
  36. package/components/password-criteria/index.d.ts +13 -12
  37. package/components/password-strength/index.d.ts +6 -6
  38. package/components/phone-input/index.d.ts +28 -30
  39. package/components/progress-bar/index.d.ts +5 -5
  40. package/components/prompt/index.d.ts +25 -25
  41. package/components/radial-progress/index.d.ts +5 -5
  42. package/components/radio-button/index.d.ts +28 -29
  43. package/components/rating/index.d.ts +5 -5
  44. package/components/scale/index.d.ts +4 -4
  45. package/components/segmented-bar/index.d.ts +8 -8
  46. package/components/segmented-button/index.d.ts +17 -16
  47. package/components/selectable-card/index.d.ts +6 -6
  48. package/components/side-navigation/index.d.ts +14 -14
  49. package/components/side-panel/index.d.ts +8 -8
  50. package/components/side-sheet/index.d.ts +19 -17
  51. package/components/snackbar/index.d.ts +16 -15
  52. package/components/spider-chart/index.d.ts +12 -12
  53. package/components/spinner/index.d.ts +5 -5
  54. package/components/stepper/index.d.ts +35 -35
  55. package/components/table/index.d.ts +36 -34
  56. package/components/tabs/index.d.ts +18 -17
  57. package/components/tag/index.d.ts +10 -10
  58. package/components/toggle/index.d.ts +10 -9
  59. package/components/tooltip/index.d.ts +16 -18
  60. package/components/universal-skills/index.d.ts +16 -16
  61. package/components/validation-error/index.d.ts +22 -10
  62. package/components/write-with-ai/index.d.ts +1 -1
  63. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs +36 -15
  64. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs.map +1 -1
  65. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs +9 -12
  66. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs.map +1 -1
  67. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs +7 -10
  68. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs.map +1 -1
  69. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +39 -27
  70. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
  71. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +25 -14
  72. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
  73. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +4 -2
  74. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
  75. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +134 -117
  76. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
  77. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +47 -48
  78. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
  79. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +30 -18
  80. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
  81. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +9 -12
  82. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +1 -1
  83. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +25 -18
  84. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
  85. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +155 -120
  86. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
  87. package/fesm2022/testgorilla-tgo-ui-components-card.mjs +7 -9
  88. package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -1
  89. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +51 -47
  90. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -1
  91. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +1 -1
  92. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
  93. package/fesm2022/testgorilla-tgo-ui-components-core.mjs +2232 -2210
  94. package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
  95. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs +44 -25
  96. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs.map +1 -1
  97. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +55 -31
  98. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
  99. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +8 -11
  100. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +1 -1
  101. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs +8 -10
  102. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs.map +1 -1
  103. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +105 -90
  104. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
  105. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +5 -7
  106. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +1 -1
  107. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +24 -13
  108. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
  109. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +65 -57
  110. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
  111. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs +35 -23
  112. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs.map +1 -1
  113. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +34 -27
  114. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
  115. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs +26 -16
  116. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs.map +1 -1
  117. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs +6 -7
  118. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs.map +1 -1
  119. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +63 -57
  120. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
  121. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +24 -24
  122. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
  123. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +6 -6
  124. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -1
  125. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +6 -6
  126. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
  127. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +4 -4
  128. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
  129. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs +42 -21
  130. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs.map +1 -1
  131. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +44 -32
  132. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
  133. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +39 -21
  134. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
  135. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +10 -14
  136. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
  137. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +7 -9
  138. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -1
  139. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs +33 -20
  140. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs.map +1 -1
  141. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs +9 -12
  142. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs.map +1 -1
  143. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs +82 -73
  144. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs.map +1 -1
  145. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
  146. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +8 -11
  147. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -1
  148. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +47 -40
  149. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
  150. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +7 -10
  151. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
  152. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +43 -48
  153. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
  154. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +7 -12
  155. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -1
  156. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +1 -1
  157. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
  158. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +6 -10
  159. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
  160. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +30 -16
  161. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -1
  162. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +15 -14
  163. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -1
  164. package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs.map +1 -1
  165. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs +8 -11
  166. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs.map +1 -1
  167. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +27 -21
  168. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
  169. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +5 -2
  170. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
  171. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +34 -26
  172. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
  173. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +5 -5
  174. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +1 -1
  175. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +10 -10
  176. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
  177. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +31 -20
  178. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
  179. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs +28 -23
  180. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs.map +1 -1
  181. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +9 -12
  182. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -1
  183. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +85 -79
  184. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
  185. package/fesm2022/testgorilla-tgo-ui-components-table.mjs +74 -51
  186. package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
  187. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs +57 -25
  188. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs.map +1 -1
  189. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +16 -17
  190. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
  191. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +25 -17
  192. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -1
  193. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +44 -28
  194. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +1 -1
  195. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs +34 -27
  196. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs.map +1 -1
  197. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +30 -14
  198. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -1
  199. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +13 -11
  200. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
  201. package/fesm2022/testgorilla-tgo-ui.mjs +6 -8
  202. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  203. package/index.d.ts +4 -4
  204. package/mcp/catalog.json +1 -1
  205. package/package.json +1 -2
@@ -1,11 +1,10 @@
1
+ import { NgStyle, CommonModule } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
- import { Injectable, Input, HostBinding, Optional, Inject, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
+ import { Injectable, Input, HostBinding, Optional, Inject, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
4
  import * as i1 from '@angular/material/icon';
4
- import { MatIconModule } from '@angular/material/icon';
5
+ import { MatIcon, MatIconModule } from '@angular/material/icon';
5
6
  import * as i2 from '@angular/platform-browser';
6
- import * as i4 from '@angular/common';
7
- import { CommonModule } from '@angular/common';
8
- import { HttpClientModule } from '@angular/common/http';
7
+ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
9
8
 
10
9
  /* eslint-disable */
11
10
  /**
@@ -1577,6 +1576,7 @@ class IconsService {
1577
1576
  return;
1578
1577
  }
1579
1578
  const host = document.createElement('div');
1579
+ // eslint-disable-next-line no-unsanitized/property -- SECURITY: SHARED_SVG_DEFS is the library's own build-time SVG gradient markup (first-party constant, not user input)
1580
1580
  host.innerHTML = SHARED_SVG_DEFS;
1581
1581
  document.body.insertBefore(host.firstElementChild, document.body.firstChild);
1582
1582
  }
@@ -1655,58 +1655,65 @@ class IconComponent {
1655
1655
  }
1656
1656
  //Add icon to matIcon registry
1657
1657
  addIcon() {
1658
+ const filename = this.useFullIconName ? this.resolveFullIconName() : this.resolveShortIconName();
1659
+ this.registerIcon(filename);
1660
+ }
1661
+ resolveShortIconName() {
1658
1662
  let filename;
1659
- if (!this.useFullIconName) {
1660
- if (this.filled || this.name?.includes('filled')) {
1661
- this._name = this.name.replace(/-in-line/, '');
1662
- filename =
1663
- this.applicationTheme === 'classic'
1664
- ? tgoIcons.find(icon => icon === this.filledIconName)
1665
- : tgoRebrandIcons.find(icon => icon === this.filledIconName);
1663
+ if (this.filled || this.name?.includes('filled')) {
1664
+ this._name = this.name.replace(/-in-line/, '');
1665
+ filename =
1666
+ this.applicationTheme === 'classic'
1667
+ ? tgoIcons.find(icon => icon === this.filledIconName)
1668
+ : tgoRebrandIcons.find(icon => icon === this.filledIconName);
1669
+ }
1670
+ else {
1671
+ filename =
1672
+ this.applicationTheme === 'classic'
1673
+ ? this.name?.replace(/-filled|-in-line/, '')
1674
+ : this.inlineIconFileName;
1675
+ }
1676
+ filename ??= tgoIcons.find(icon => icon === this._name);
1677
+ this._name = filename;
1678
+ return filename;
1679
+ }
1680
+ resolveFullIconName() {
1681
+ if (this.applicationTheme !== 'classic') {
1682
+ const hasInline = this.name?.includes('-in-line');
1683
+ const hasFilled = this.name?.includes('filled');
1684
+ if (!hasInline && !hasFilled) {
1685
+ this.name = `${this.name}${this.filled ? '-filled' : '-in-line'}`;
1666
1686
  }
1667
- else {
1668
- filename =
1669
- this.applicationTheme === 'classic'
1670
- ? this.name?.replace(/-filled|-in-line/, '')
1671
- : this.inlineIconFileName;
1687
+ else if (!hasInline && hasFilled && this.toggleIconStyle) {
1688
+ this.name = this.name.replace(/-filled/, '-in-line');
1672
1689
  }
1673
- if (!filename) {
1674
- filename = tgoIcons.find(icon => icon === this._name);
1690
+ else if (hasInline && !hasFilled && this.toggleIconStyle && this.filled) {
1691
+ this.name = this.name.replace(/-in-line/, '-filled');
1675
1692
  }
1676
- this._name = filename;
1677
1693
  }
1678
- else {
1679
- if (this.applicationTheme !== 'classic') {
1680
- const hasInline = this.name?.includes('-in-line');
1681
- const hasFilled = this.name?.includes('filled');
1682
- if (!hasInline && !hasFilled) {
1683
- this.name = `${this.name}${this.filled ? '-filled' : '-in-line'}`;
1684
- }
1685
- else if (!hasInline && hasFilled && this.toggleIconStyle) {
1686
- this.name = this.name.replace(/-filled/, '-in-line');
1687
- }
1688
- else if (hasInline && !hasFilled && this.toggleIconStyle && this.filled) {
1689
- this.name = this.name.replace(/-in-line/, '-filled');
1690
- }
1691
- }
1692
- this._name = this.name;
1693
- filename = this.name;
1694
+ this._name = this.name;
1695
+ return this.name;
1696
+ }
1697
+ registerIcon(filename) {
1698
+ if (!filename || this.iconsService.isIconLoaded(filename)) {
1699
+ return;
1694
1700
  }
1695
1701
  const isRebrand = this.applicationTheme !== 'classic';
1696
- if (filename && !this.iconsService.isIconLoaded(filename)) {
1697
- const svgContent = getIconSvgContent(filename, isRebrand);
1698
- if (svgContent) {
1699
- // Icon is available inline - use it directly
1700
- this.matIconRegistry.addSvgIconLiteral(filename, this.domSanitzer.bypassSecurityTrustHtml(svgContent));
1701
- this.iconsService.addIcon(filename);
1702
- }
1703
- else {
1704
- // Icon not found inline - fallback to HTTP request
1705
- // This happens for large icons (>10KB) that are excluded from the bundle
1706
- const path = this.applicationTheme === 'classic' ? '/icons/' : '/icons/rebrand/';
1707
- this.matIconRegistry.addSvgIcon(filename, this.domSanitzer.bypassSecurityTrustResourceUrl(`${path}${filename}.svg`));
1708
- this.iconsService.addIcon(filename);
1709
- }
1702
+ const svgContent = getIconSvgContent(filename, isRebrand);
1703
+ if (svgContent) {
1704
+ // Icon is available inline - use it directly
1705
+ // eslint-disable-next-line no-restricted-syntax -- SECURITY: svgContent is the library's own build-time-generated icon markup (first-party, not user input); MatIconRegistry.addSvgIconLiteral requires SafeHtml.
1706
+ this.matIconRegistry.addSvgIconLiteral(filename, this.domSanitzer.bypassSecurityTrustHtml(svgContent));
1707
+ this.iconsService.addIcon(filename);
1708
+ }
1709
+ else {
1710
+ // Icon not found inline - fallback to HTTP request
1711
+ // This happens for large icons (>10KB) that are excluded from the bundle
1712
+ const path = this.applicationTheme === 'classic' ? '/icons/' : '/icons/rebrand/';
1713
+ this.matIconRegistry.addSvgIcon(filename,
1714
+ // eslint-disable-next-line no-restricted-syntax -- SECURITY: first-party asset URL (fixed /icons/ path + known icon filename); MatIconRegistry.addSvgIcon requires SafeResourceUrl.
1715
+ this.domSanitzer.bypassSecurityTrustResourceUrl(`${path}${filename}.svg`));
1716
+ this.iconsService.addIcon(filename);
1710
1717
  }
1711
1718
  }
1712
1719
  get cssStyle() {
@@ -1729,11 +1736,11 @@ class IconComponent {
1729
1736
  return this.iconsService.isIconLoaded(this._name);
1730
1737
  }
1731
1738
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i1.MatIconRegistry }, { token: i2.DomSanitizer }, { token: IconsService }], target: i0.ɵɵFactoryTarget.Component }); }
1732
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: IconComponent, isStandalone: false, selector: "ui-icon", inputs: { size: "size", cssClass: "cssClass", name: "name", color: "color", filled: "filled", toggleIconStyle: "toggleIconStyle", applicationTheme: "applicationTheme", useFullIconName: "useFullIconName" }, host: { properties: { "style.--icon-size": "this.size" } }, usesOnChanges: true, ngImport: i0, template: "@if (isIconLoaded) {\n <mat-icon [svgIcon]=\"_name\" [attr.class]=\"customCssClass\" [ngStyle]=\"cssStyle\"></mat-icon>\n} @else {\n <div class=\"empty-icon-placeholder\"></div>\n}\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}.empty-icon-placeholder{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}mat-icon{display:flex;color:var(--icon-color)!important}mat-icon.size-16 svg{width:16px;height:16px}mat-icon.size-24 svg{width:24px;height:24px}mat-icon.size-40 svg{width:40px;height:40px}mat-icon.size-80 svg{width:80px;height:80px}mat-icon.dark svg{color:var(--cnp-icon-color, #888888)}mat-icon.white svg{color:var(--cnp-icon-color, #ffffff)}mat-icon.teal svg{color:var(--cnp-icon-color, #46a997)}mat-icon.petrol svg{color:var(--cnp-icon-color, #276678)}mat-icon.black svg{color:var(--cnp-icon-color, #000000)}mat-icon.red svg{color:var(--cnp-icon-color, #e02800)}mat-icon.gray svg,mat-icon.gray path{color:var(--cnp-icon-color, #666666);fill:var(--cnp-icon-color, #666666)}mat-icon.orange svg{color:var(--cnp-icon-color, #d07d00)}mat-icon.rebrand-black svg{color:var(--cnp-icon-color, #242424)}mat-icon.ai svg path{fill:url(#reusableAiInlineGradient) #d410aa}\n"], dependencies: [{ kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None }); }
1739
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: IconComponent, isStandalone: true, selector: "ui-icon", inputs: { size: "size", cssClass: "cssClass", name: "name", color: "color", filled: "filled", toggleIconStyle: "toggleIconStyle", applicationTheme: "applicationTheme", useFullIconName: "useFullIconName" }, host: { properties: { "style.--icon-size": "this.size" } }, usesOnChanges: true, ngImport: i0, template: "@if (isIconLoaded) {\n <mat-icon [svgIcon]=\"_name\" [attr.class]=\"customCssClass\" [ngStyle]=\"cssStyle\"></mat-icon>\n} @else {\n <div class=\"empty-icon-placeholder\"></div>\n}\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}.empty-icon-placeholder{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}mat-icon{display:flex;color:var(--icon-color)!important}mat-icon.size-16 svg{width:16px;height:16px}mat-icon.size-24 svg{width:24px;height:24px}mat-icon.size-40 svg{width:40px;height:40px}mat-icon.size-80 svg{width:80px;height:80px}mat-icon.dark svg{color:var(--cnp-icon-color, #888888)}mat-icon.white svg{color:var(--cnp-icon-color, #ffffff)}mat-icon.teal svg{color:var(--cnp-icon-color, #46a997)}mat-icon.petrol svg{color:var(--cnp-icon-color, #276678)}mat-icon.black svg{color:var(--cnp-icon-color, #000000)}mat-icon.red svg{color:var(--cnp-icon-color, #e02800)}mat-icon.gray svg,mat-icon.gray path{color:var(--cnp-icon-color, #666666);fill:var(--cnp-icon-color, #666666)}mat-icon.orange svg{color:var(--cnp-icon-color, #d07d00)}mat-icon.rebrand-black svg{color:var(--cnp-icon-color, #242424)}mat-icon.ai svg path{fill:url(#reusableAiInlineGradient) #d410aa}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1733
1740
  }
1734
1741
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponent, decorators: [{
1735
1742
  type: Component,
1736
- args: [{ selector: 'ui-icon', encapsulation: ViewEncapsulation.None, standalone: false, template: "@if (isIconLoaded) {\n <mat-icon [svgIcon]=\"_name\" [attr.class]=\"customCssClass\" [ngStyle]=\"cssStyle\"></mat-icon>\n} @else {\n <div class=\"empty-icon-placeholder\"></div>\n}\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}.empty-icon-placeholder{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}mat-icon{display:flex;color:var(--icon-color)!important}mat-icon.size-16 svg{width:16px;height:16px}mat-icon.size-24 svg{width:24px;height:24px}mat-icon.size-40 svg{width:40px;height:40px}mat-icon.size-80 svg{width:80px;height:80px}mat-icon.dark svg{color:var(--cnp-icon-color, #888888)}mat-icon.white svg{color:var(--cnp-icon-color, #ffffff)}mat-icon.teal svg{color:var(--cnp-icon-color, #46a997)}mat-icon.petrol svg{color:var(--cnp-icon-color, #276678)}mat-icon.black svg{color:var(--cnp-icon-color, #000000)}mat-icon.red svg{color:var(--cnp-icon-color, #e02800)}mat-icon.gray svg,mat-icon.gray path{color:var(--cnp-icon-color, #666666);fill:var(--cnp-icon-color, #666666)}mat-icon.orange svg{color:var(--cnp-icon-color, #d07d00)}mat-icon.rebrand-black svg{color:var(--cnp-icon-color, #242424)}mat-icon.ai svg path{fill:url(#reusableAiInlineGradient) #d410aa}\n"] }]
1743
+ args: [{ selector: 'ui-icon', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [MatIcon, NgStyle], template: "@if (isIconLoaded) {\n <mat-icon [svgIcon]=\"_name\" [attr.class]=\"customCssClass\" [ngStyle]=\"cssStyle\"></mat-icon>\n} @else {\n <div class=\"empty-icon-placeholder\"></div>\n}\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}.empty-icon-placeholder{width:calc(var(--icon-size) * 1px)!important;height:calc(var(--icon-size) * 1px)!important}mat-icon{display:flex;color:var(--icon-color)!important}mat-icon.size-16 svg{width:16px;height:16px}mat-icon.size-24 svg{width:24px;height:24px}mat-icon.size-40 svg{width:40px;height:40px}mat-icon.size-80 svg{width:80px;height:80px}mat-icon.dark svg{color:var(--cnp-icon-color, #888888)}mat-icon.white svg{color:var(--cnp-icon-color, #ffffff)}mat-icon.teal svg{color:var(--cnp-icon-color, #46a997)}mat-icon.petrol svg{color:var(--cnp-icon-color, #276678)}mat-icon.black svg{color:var(--cnp-icon-color, #000000)}mat-icon.red svg{color:var(--cnp-icon-color, #e02800)}mat-icon.gray svg,mat-icon.gray path{color:var(--cnp-icon-color, #666666);fill:var(--cnp-icon-color, #666666)}mat-icon.orange svg{color:var(--cnp-icon-color, #d07d00)}mat-icon.rebrand-black svg{color:var(--cnp-icon-color, #242424)}mat-icon.ai svg path{fill:url(#reusableAiInlineGradient) #d410aa}\n"] }]
1737
1744
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1738
1745
  type: Optional
1739
1746
  }, {
@@ -1762,16 +1769,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
1762
1769
 
1763
1770
  class IconComponentModule {
1764
1771
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1765
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, declarations: [IconComponent], imports: [CommonModule, MatIconModule, HttpClientModule], exports: [IconComponent] }); }
1766
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, providers: [HttpClientModule], imports: [CommonModule, MatIconModule, HttpClientModule] }); }
1772
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, imports: [CommonModule, MatIconModule, IconComponent], exports: [IconComponent] }); }
1773
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule, MatIconModule, IconComponent] }); }
1767
1774
  }
1768
1775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IconComponentModule, decorators: [{
1769
1776
  type: NgModule,
1770
1777
  args: [{
1771
- declarations: [IconComponent],
1772
- imports: [CommonModule, MatIconModule, HttpClientModule],
1778
+ imports: [CommonModule, MatIconModule, IconComponent],
1773
1779
  exports: [IconComponent],
1774
- providers: [HttpClientModule],
1780
+ providers: [provideHttpClient(withInterceptorsFromDi())],
1775
1781
  }]
1776
1782
  }] });
1777
1783