icon.component.mjs 7.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { NgClass } from '@angular/common';
  2. import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
  3. import { SizeEnum } from '../../../model/components/size.enum';
  4. import { VariantEnum } from '../../../model/components/variant.enum';
  5. import * as i0 from "@angular/core";
  6. export class IconComponent {
  7. constructor() {
  8. this.icon = '';
  9. this.fill = 'currentColor';
  10. this.strokeWidth = 1.5;
  11. this.strokeColor = 'currentColor';
  12. this.size = SizeEnum.BASE;
  13. this.variant = VariantEnum.OUTLINE;
  14. }
  15. ngOnInit() {
  16. this.strokeColor = this.getFormattedColor(this.strokeColor);
  17. this.fill = this.getFormattedColor(this.fill);
  18. }
  19. get iconPath() {
  20. const icon = this.variant === VariantEnum.SOLID ? `${this.icon}-solid` : this.icon;
  21. return `/assets/icons.svg#${icon}`;
  22. }
  23. getFormattedColor(color) {
  24. if (color.startsWith('--')) {
  25. const rgbValue = getComputedStyle(document.documentElement).getPropertyValue(color).trim();
  26. return `rgb(${rgbValue})`;
  27. }
  28. return color;
  29. }
  30. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
  31. static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: IconComponent, isStandalone: true, selector: "ct-icon", inputs: { icon: "icon", fill: "fill", strokeWidth: "strokeWidth", strokeColor: "strokeColor", size: "size", variant: "variant" }, ngImport: i0, template: "<svg\n [attr.fill]=\"variant === 'solid' ? fill : 'none'\"\n [attr.stroke-width]=\"variant === 'outline' ? strokeWidth : 0\"\n [attr.stroke]=\"strokeColor\"\n class=\"flex\"\n [class.size-3]=\"size === 'xs'\"\n [class.size-4]=\"size === 'sm'\"\n [class.size-5]=\"size === 'base'\"\n [class.size-6]=\"size === 'lg'\"\n [class.size-8]=\"size === 'xl'\">\n <use [attr.xlink:href]=\"iconPath\"></use>\n</svg>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
  32. }
  33. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: IconComponent, decorators: [{
  34. type: Component,
  35. args: [{ selector: 'ct-icon', standalone: true, imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg\n [attr.fill]=\"variant === 'solid' ? fill : 'none'\"\n [attr.stroke-width]=\"variant === 'outline' ? strokeWidth : 0\"\n [attr.stroke]=\"strokeColor\"\n class=\"flex\"\n [class.size-3]=\"size === 'xs'\"\n [class.size-4]=\"size === 'sm'\"\n [class.size-5]=\"size === 'base'\"\n [class.size-6]=\"size === 'lg'\"\n [class.size-8]=\"size === 'xl'\">\n <use [attr.xlink:href]=\"iconPath\"></use>\n</svg>\n" }]
  36. }], propDecorators: { icon: [{
  37. type: Input
  38. }], fill: [{
  39. type: Input
  40. }], strokeWidth: [{
  41. type: Input
  42. }], strokeColor: [{
  43. type: Input
  44. }], size: [{
  45. type: Input
  46. }], variant: [{
  47. type: Input
  48. }] } });
  49. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaXJjbGV0b25lL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9pY29uL2ljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lyY2xldG9uZS9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvaWNvbi9pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQVNyRSxNQUFNLE9BQU8sYUFBYTtJQVAxQjtRQVFXLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQUcsY0FBYyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBQzdCLFNBQUksR0FBc0IsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN4QyxZQUFPLEdBQXlCLFdBQVcsQ0FBQyxPQUFPLENBQUM7S0FtQjlEO0lBakJDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25GLE9BQU8scUJBQXFCLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzRixPQUFPLE9BQU8sUUFBUSxHQUFHLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F4QlUsYUFBYTtrR0FBYixhQUFhLHFNQ1oxQixrYUFZQTs7MkZEQWEsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxTQUFTLGNBQ1AsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDLG1CQUVELHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpemVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvY29tcG9uZW50cy9zaXplLmVudW0nO1xuaW1wb3J0IHsgVmFyaWFudEVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9jb21wb25lbnRzL3ZhcmlhbnQuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N0LWljb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzc10sXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBpY29uID0gJyc7XG4gIEBJbnB1dCgpIGZpbGwgPSAnY3VycmVudENvbG9yJztcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGggPSAxLjU7XG4gIEBJbnB1dCgpIHN0cm9rZUNvbG9yID0gJ2N1cnJlbnRDb2xvcic7XG4gIEBJbnB1dCgpIHNpemU6IFNpemVFbnVtIHwgc3RyaW5nID0gU2l6ZUVudW0uQkFTRTtcbiAgQElucHV0KCkgdmFyaWFudDogVmFyaWFudEVudW0gfCBzdHJpbmcgPSBWYXJpYW50RW51bS5PVVRMSU5FO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Ryb2tlQ29sb3IgPSB0aGlzLmdldEZvcm1hdHRlZENvbG9yKHRoaXMuc3Ryb2tlQ29sb3IpO1xuICAgIHRoaXMuZmlsbCA9IHRoaXMuZ2V0Rm9ybWF0dGVkQ29sb3IodGhpcy5maWxsKTtcbiAgfVxuXG4gIGdldCBpY29uUGF0aCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLnZhcmlhbnQgPT09IFZhcmlhbnRFbnVtLlNPTElEID8gYCR7dGhpcy5pY29ufS1zb2xpZGAgOiB0aGlzLmljb247XG4gICAgcmV0dXJuIGAvYXNzZXRzL2ljb25zLnN2ZyMke2ljb259YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybWF0dGVkQ29sb3IoY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGNvbG9yLnN0YXJ0c1dpdGgoJy0tJykpIHtcbiAgICAgIGNvbnN0IHJnYlZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoY29sb3IpLnRyaW0oKTtcbiAgICAgIHJldHVybiBgcmdiKCR7cmdiVmFsdWV9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuIiwiPHN2Z1xuICBbYXR0ci5maWxsXT1cInZhcmlhbnQgPT09ICdzb2xpZCcgPyBmaWxsIDogJ25vbmUnXCJcbiAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInZhcmlhbnQgPT09ICdvdXRsaW5lJyA/IHN0cm9rZVdpZHRoIDogMFwiXG4gIFthdHRyLnN0cm9rZV09XCJzdHJva2VDb2xvclwiXG4gIGNsYXNzPVwiZmxleFwiXG4gIFtjbGFzcy5zaXplLTNdPVwic2l6ZSA9PT0gJ3hzJ1wiXG4gIFtjbGFzcy5zaXplLTRdPVwic2l6ZSA9PT0gJ3NtJ1wiXG4gIFtjbGFzcy5zaXplLTVdPVwic2l6ZSA9PT0gJ2Jhc2UnXCJcbiAgW2NsYXNzLnNpemUtNl09XCJzaXplID09PSAnbGcnXCJcbiAgW2NsYXNzLnNpemUtOF09XCJzaXplID09PSAneGwnXCI+XG4gIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJpY29uUGF0aFwiPjwvdXNlPlxuPC9zdmc+XG4iXX0=