@up_si_vale/sivale-componentes-angular 1.0.0 → 1.0.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 (94) hide show
  1. package/esm2022/lib/atoms/button/button.component.mjs +55 -0
  2. package/esm2022/lib/atoms/checkbox/checkbox.component.mjs +174 -0
  3. package/esm2022/lib/atoms/date-picker/date-picker.component.mjs +835 -0
  4. package/esm2022/lib/atoms/input/input.component.mjs +218 -0
  5. package/esm2022/lib/atoms/loader/loader.component.mjs +81 -0
  6. package/esm2022/lib/atoms/radio/radio.component.mjs +142 -0
  7. package/esm2022/lib/atoms/textarea/textarea.component.mjs +126 -0
  8. package/esm2022/lib/directives/asset-source.directive.mjs +68 -0
  9. package/esm2022/lib/directives/icon-source.directive.mjs +65 -0
  10. package/esm2022/lib/directives/no-leading-space.directive.mjs +24 -0
  11. package/esm2022/lib/directives/only-letters.directive.mjs +25 -0
  12. package/esm2022/lib/directives/only-number.directive.mjs +21 -0
  13. package/esm2022/lib/directives/rfc.directive.mjs +67 -0
  14. package/esm2022/lib/directives/tooltip.directive.mjs +199 -0
  15. package/esm2022/lib/models/snackbar.models.mjs +2 -0
  16. package/esm2022/lib/molecules/alert/alert.component.mjs +79 -0
  17. package/esm2022/lib/molecules/copy-input/copy-input.component.mjs +46 -0
  18. package/esm2022/lib/molecules/multiselect/multiselect.component.mjs +466 -0
  19. package/esm2022/lib/molecules/option/option.component.mjs +55 -0
  20. package/esm2022/lib/molecules/phone-input/phone-input.component.mjs +64 -0
  21. package/esm2022/lib/molecules/select/select.component.mjs +498 -0
  22. package/esm2022/lib/molecules/snackbar/snackbar.component.mjs +581 -0
  23. package/esm2022/lib/organisms/sidebar/sidebar-icon.component.mjs +91 -0
  24. package/esm2022/lib/organisms/sidebar/sidebar.component.mjs +115 -0
  25. package/esm2022/lib/services/snackbar.service.mjs +96 -0
  26. package/esm2022/lib/tokens/asset-base-url.token.mjs +10 -0
  27. package/esm2022/public-api.mjs +37 -0
  28. package/esm2022/up_si_vale-sivale-componentes-angular.mjs +5 -0
  29. package/fesm2022/up_si_vale-sivale-componentes-angular.mjs +4116 -0
  30. package/fesm2022/up_si_vale-sivale-componentes-angular.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/atoms/button/button.component.d.ts +20 -0
  33. package/lib/atoms/checkbox/checkbox.component.d.ts +31 -0
  34. package/lib/atoms/date-picker/date-picker.component.d.ts +134 -0
  35. package/lib/atoms/input/input.component.d.ts +35 -0
  36. package/lib/atoms/loader/loader.component.d.ts +10 -0
  37. package/lib/atoms/radio/radio.component.d.ts +25 -0
  38. package/lib/atoms/textarea/textarea.component.d.ts +27 -0
  39. package/lib/directives/asset-source.directive.d.ts +19 -0
  40. package/lib/directives/icon-source.directive.d.ts +18 -0
  41. package/lib/directives/no-leading-space.directive.d.ts +6 -0
  42. package/lib/directives/only-letters.directive.d.ts +7 -0
  43. package/lib/directives/only-number.directive.d.ts +6 -0
  44. package/lib/directives/rfc.directive.d.ts +12 -0
  45. package/lib/directives/tooltip.directive.d.ts +27 -0
  46. package/{src/lib/models/snackbar.models.ts → lib/models/snackbar.models.d.ts} +8 -10
  47. package/lib/molecules/alert/alert.component.d.ts +29 -0
  48. package/lib/molecules/copy-input/copy-input.component.d.ts +14 -0
  49. package/lib/molecules/multiselect/multiselect.component.d.ts +74 -0
  50. package/lib/molecules/option/option.component.d.ts +19 -0
  51. package/lib/molecules/phone-input/phone-input.component.d.ts +12 -0
  52. package/lib/molecules/select/select.component.d.ts +88 -0
  53. package/lib/molecules/snackbar/snackbar.component.d.ts +17 -0
  54. package/lib/organisms/sidebar/sidebar-icon.component.d.ts +8 -0
  55. package/lib/organisms/sidebar/sidebar.component.d.ts +47 -0
  56. package/lib/services/snackbar.service.d.ts +40 -0
  57. package/{src/lib/tokens/asset-base-url.token.ts → lib/tokens/asset-base-url.token.d.ts} +1 -5
  58. package/package.json +39 -28
  59. package/{src/public-api.ts → public-api.d.ts} +3 -15
  60. package/ng-package.json +0 -9
  61. package/src/lib/atoms/button/button.component.html +0 -21
  62. package/src/lib/atoms/button/button.component.scss +0 -242
  63. package/src/lib/atoms/button/button.component.ts +0 -43
  64. package/src/lib/atoms/checkbox/checkbox.component.scss +0 -131
  65. package/src/lib/atoms/checkbox/checkbox.component.ts +0 -130
  66. package/src/lib/atoms/date-picker/date-picker.component.html +0 -295
  67. package/src/lib/atoms/date-picker/date-picker.component.scss +0 -1002
  68. package/src/lib/atoms/date-picker/date-picker.component.ts +0 -942
  69. package/src/lib/atoms/input/input.component.ts +0 -239
  70. package/src/lib/atoms/loader/loader.component.scss +0 -144
  71. package/src/lib/atoms/loader/loader.component.ts +0 -44
  72. package/src/lib/atoms/radio/radio.component.scss +0 -115
  73. package/src/lib/atoms/radio/radio.component.ts +0 -103
  74. package/src/lib/atoms/textarea/textarea.component.ts +0 -155
  75. package/src/lib/directives/asset-source.directive.ts +0 -64
  76. package/src/lib/directives/icon-source.directive.ts +0 -74
  77. package/src/lib/directives/no-leading-space.directive.ts +0 -18
  78. package/src/lib/directives/only-letters.directive.ts +0 -21
  79. package/src/lib/directives/only-number.directive.ts +0 -15
  80. package/src/lib/directives/rfc.directive.ts +0 -60
  81. package/src/lib/directives/tooltip.directive.ts +0 -211
  82. package/src/lib/molecules/copy-input/copy-input.component.html +0 -29
  83. package/src/lib/molecules/copy-input/copy-input.component.scss +0 -101
  84. package/src/lib/molecules/copy-input/copy-input.component.ts +0 -41
  85. package/src/lib/molecules/multiselect/multiselect.component.scss +0 -298
  86. package/src/lib/molecules/multiselect/multiselect.component.ts +0 -487
  87. package/src/lib/molecules/option/option.component.ts +0 -45
  88. package/src/lib/molecules/phone-input/phone-input.component.scss +0 -78
  89. package/src/lib/molecules/phone-input/phone-input.component.ts +0 -43
  90. package/src/lib/molecules/select/select.component.ts +0 -482
  91. package/src/lib/molecules/snackbar/snackbar.component.scss +0 -201
  92. package/src/lib/molecules/snackbar/snackbar.component.ts +0 -321
  93. package/src/lib/services/snackbar.service.ts +0 -103
  94. package/tsconfig.json +0 -31
@@ -0,0 +1,91 @@
1
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class SidebarIconComponent {
6
+ name;
7
+ size = 24;
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarIconComponent, isStandalone: true, selector: "svu-sidebar-icon", inputs: { name: "name", size: "size" }, ngImport: i0, template: `
10
+ <ng-container [ngSwitch]="name">
11
+ <svg *ngSwitchCase="'dashboard'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
12
+ <path d="M8 17h8M11.018 2.764L4.235 8.039c-.453.353-.68.53-.843.75a2 2 0 00-.318.65C3 9.704 3 9.991 3 10.565V17.8c0 1.12 0 1.68.218 2.108a2 2 0 00.874.874C4.52 21 5.08 21 6.2 21h11.6c1.12 0 1.68 0 2.108-.218a2 2 0 00.874-.874C21 19.48 21 18.92 21 17.8v-7.235c0-.574 0-.861-.074-1.126a2 2 0 00-.318-.65c-.163-.22-.39-.397-.843-.75l-6.783-5.275c-.351-.273-.527-.41-.72-.462a1 1 0 00-.508 0c-.193.052-.369.189-.72.462z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
13
+ </svg>
14
+
15
+ <svg *ngSwitchCase="'file-users'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
16
+ <path d="M14 2.27V6.4c0 .56 0 .84.109 1.054a1 1 0 00.437.437C14.76 8 15.04 8 15.6 8h4.13M8 15h8M8 11h4M14 2H8.8c-1.68 0-2.52 0-3.162.327a3 3 0 00-1.311 1.311C4 4.28 4 5.12 4 6.8v10.4c0 1.68 0 2.52.327 3.162a3 3 0 001.311 1.311C6.28 22 7.12 22 8.8 22h6.4c1.68 0 2.52 0 3.162-.327a3 3 0 001.311-1.311C20 19.72 20 18.88 20 17.2V8l-6-6z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
17
+ </svg>
18
+
19
+ <svg *ngSwitchCase="'card'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
20
+ <path d="M22 10H2M22 11V8.2C22 7.08 22 6.52 21.782 6.092a2 2 0 00-.874-.874C20.48 5 19.92 5 18.8 5H5.2C4.08 5 3.52 5 3.092 5.218a2 2 0 00-.874.874C2 6.52 2 7.08 2 8.2V15.8c0 1.12 0 1.68.218 2.108a2 2 0 00.874.874C3.52 19 4.08 19 5.2 19H18.8c1.12 0 1.68 0 2.108-.218a2 2 0 00.874-.874C22 17.48 22 16.92 22 15.8V11z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
21
+ </svg>
22
+
23
+ <svg *ngSwitchCase="'logout'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
24
+ <path d="M16 17l5-5m0 0l-5-5m5 5H9m0-9H7.8c-1.68 0-2.52 0-3.162.327a3 3 0 00-1.311 1.311C3 5.28 3 6.12 3 7.8v8.4c0 1.68 0 2.52.327 3.162a3 3 0 001.311 1.311C5.28 21 6.12 21 7.8 21H9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
25
+ </svg>
26
+
27
+ <svg *ngSwitchCase="'chevron-down'" [attr.width]="size" [attr.height]="size" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
28
+ <path d="M5 7.5l5 5 5-5" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/>
29
+ </svg>
30
+
31
+ <svg *ngSwitchCase="'settings'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
32
+ <path d="M12 15a3 3 0 100-6 3 3 0 000 6z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
33
+ <path d="M19.622 10.395l-1.097-2.65L20 6l-2-2-1.735 1.483-2.707-1.113L12.935 2h-1.954l-.632 2.401-2.645 1.115L6 4 4 6l1.453 1.789-1.08 2.657L2 11v2l2.401.655L5.516 16.3 4 18l2 2 1.791-1.46 2.606 1.072L11 22h2l.604-2.387 2.651-1.098C16.697 18.831 18 20 18 20l2-2-1.484-1.75 1.098-2.652 2.386-.62V11l-2.378-.605z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
34
+ </svg>
35
+
36
+ <svg *ngSwitchCase="'user'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
37
+ <path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2M12 11a4 4 0 100-8 4 4 0 000 8z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
38
+ </svg>
39
+
40
+ <svg *ngSwitchCase="'home'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
41
+ <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
42
+ <path d="M9 22V12h6v10" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
43
+ </svg>
44
+ </ng-container>
45
+ `, isInline: true, styles: [":host{display:inline-flex;line-height:0;color:currentColor}svg{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarIconComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'svu-sidebar-icon', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
50
+ <ng-container [ngSwitch]="name">
51
+ <svg *ngSwitchCase="'dashboard'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
52
+ <path d="M8 17h8M11.018 2.764L4.235 8.039c-.453.353-.68.53-.843.75a2 2 0 00-.318.65C3 9.704 3 9.991 3 10.565V17.8c0 1.12 0 1.68.218 2.108a2 2 0 00.874.874C4.52 21 5.08 21 6.2 21h11.6c1.12 0 1.68 0 2.108-.218a2 2 0 00.874-.874C21 19.48 21 18.92 21 17.8v-7.235c0-.574 0-.861-.074-1.126a2 2 0 00-.318-.65c-.163-.22-.39-.397-.843-.75l-6.783-5.275c-.351-.273-.527-.41-.72-.462a1 1 0 00-.508 0c-.193.052-.369.189-.72.462z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
53
+ </svg>
54
+
55
+ <svg *ngSwitchCase="'file-users'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
56
+ <path d="M14 2.27V6.4c0 .56 0 .84.109 1.054a1 1 0 00.437.437C14.76 8 15.04 8 15.6 8h4.13M8 15h8M8 11h4M14 2H8.8c-1.68 0-2.52 0-3.162.327a3 3 0 00-1.311 1.311C4 4.28 4 5.12 4 6.8v10.4c0 1.68 0 2.52.327 3.162a3 3 0 001.311 1.311C6.28 22 7.12 22 8.8 22h6.4c1.68 0 2.52 0 3.162-.327a3 3 0 001.311-1.311C20 19.72 20 18.88 20 17.2V8l-6-6z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
57
+ </svg>
58
+
59
+ <svg *ngSwitchCase="'card'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
60
+ <path d="M22 10H2M22 11V8.2C22 7.08 22 6.52 21.782 6.092a2 2 0 00-.874-.874C20.48 5 19.92 5 18.8 5H5.2C4.08 5 3.52 5 3.092 5.218a2 2 0 00-.874.874C2 6.52 2 7.08 2 8.2V15.8c0 1.12 0 1.68.218 2.108a2 2 0 00.874.874C3.52 19 4.08 19 5.2 19H18.8c1.12 0 1.68 0 2.108-.218a2 2 0 00.874-.874C22 17.48 22 16.92 22 15.8V11z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
61
+ </svg>
62
+
63
+ <svg *ngSwitchCase="'logout'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
64
+ <path d="M16 17l5-5m0 0l-5-5m5 5H9m0-9H7.8c-1.68 0-2.52 0-3.162.327a3 3 0 00-1.311 1.311C3 5.28 3 6.12 3 7.8v8.4c0 1.68 0 2.52.327 3.162a3 3 0 001.311 1.311C5.28 21 6.12 21 7.8 21H9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
65
+ </svg>
66
+
67
+ <svg *ngSwitchCase="'chevron-down'" [attr.width]="size" [attr.height]="size" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
68
+ <path d="M5 7.5l5 5 5-5" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/>
69
+ </svg>
70
+
71
+ <svg *ngSwitchCase="'settings'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
72
+ <path d="M12 15a3 3 0 100-6 3 3 0 000 6z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
73
+ <path d="M19.622 10.395l-1.097-2.65L20 6l-2-2-1.735 1.483-2.707-1.113L12.935 2h-1.954l-.632 2.401-2.645 1.115L6 4 4 6l1.453 1.789-1.08 2.657L2 11v2l2.401.655L5.516 16.3 4 18l2 2 1.791-1.46 2.606 1.072L11 22h2l.604-2.387 2.651-1.098C16.697 18.831 18 20 18 20l2-2-1.484-1.75 1.098-2.652 2.386-.62V11l-2.378-.605z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
74
+ </svg>
75
+
76
+ <svg *ngSwitchCase="'user'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
77
+ <path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2M12 11a4 4 0 100-8 4 4 0 000 8z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
78
+ </svg>
79
+
80
+ <svg *ngSwitchCase="'home'" [attr.width]="size" [attr.height]="size" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
81
+ <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
82
+ <path d="M9 22V12h6v10" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
83
+ </svg>
84
+ </ng-container>
85
+ `, styles: [":host{display:inline-flex;line-height:0;color:currentColor}svg{display:block}\n"] }]
86
+ }], propDecorators: { name: [{
87
+ type: Input
88
+ }], size: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JnYW5pc21zL3NpZGViYXIvc2lkZWJhci1pY29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWlFL0MsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixJQUFJLENBQW1CO0lBQ3ZCLElBQUksR0FBRyxFQUFFLENBQUM7d0dBRlIsb0JBQW9COzRGQUFwQixvQkFBb0Isb0hBaERyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NULHdKQXRDUyxZQUFZOzs0RkFrRFgsb0JBQW9CO2tCQXJEaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DVDs4QkFhUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJJY29uTmFtZSA9XG4gIHwgJ2Rhc2hib2FyZCdcbiAgfCAnZmlsZS11c2VycydcbiAgfCAnY2FyZCdcbiAgfCAnbG9nb3V0J1xuICB8ICdjaGV2cm9uLWRvd24nXG4gIHwgJ3NldHRpbmdzJ1xuICB8ICd1c2VyJ1xuICB8ICdob21lJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Z1LXNpZGViYXItaWNvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJuYW1lXCI+XG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInZGFzaGJvYXJkJ1wiIFthdHRyLndpZHRoXT1cInNpemVcIiBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZD1cIk04IDE3aDhNMTEuMDE4IDIuNzY0TDQuMjM1IDguMDM5Yy0uNDUzLjM1My0uNjguNTMtLjg0My43NWEyIDIgMCAwMC0uMzE4LjY1QzMgOS43MDQgMyA5Ljk5MSAzIDEwLjU2NVYxNy44YzAgMS4xMiAwIDEuNjguMjE4IDIuMTA4YTIgMiAwIDAwLjg3NC44NzRDNC41MiAyMSA1LjA4IDIxIDYuMiAyMWgxMS42YzEuMTIgMCAxLjY4IDAgMi4xMDgtLjIxOGEyIDIgMCAwMC44NzQtLjg3NEMyMSAxOS40OCAyMSAxOC45MiAyMSAxNy44di03LjIzNWMwLS41NzQgMC0uODYxLS4wNzQtMS4xMjZhMiAyIDAgMDAtLjMxOC0uNjVjLS4xNjMtLjIyLS4zOS0uMzk3LS44NDMtLjc1bC02Ljc4My01LjI3NWMtLjM1MS0uMjczLS41MjctLjQxLS43Mi0uNDYyYTEgMSAwIDAwLS41MDggMGMtLjE5My4wNTItLjM2OS4xODktLjcyLjQ2MnpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG5cbiAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidmaWxlLXVzZXJzJ1wiIFthdHRyLndpZHRoXT1cInNpemVcIiBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNCAyLjI3VjYuNGMwIC41NiAwIC44NC4xMDkgMS4wNTRhMSAxIDAgMDAuNDM3LjQzN0MxNC43NiA4IDE1LjA0IDggMTUuNiA4aDQuMTNNOCAxNWg4TTggMTFoNE0xNCAySDguOGMtMS42OCAwLTIuNTIgMC0zLjE2Mi4zMjdhMyAzIDAgMDAtMS4zMTEgMS4zMTFDNCA0LjI4IDQgNS4xMiA0IDYuOHYxMC40YzAgMS42OCAwIDIuNTIuMzI3IDMuMTYyYTMgMyAwIDAwMS4zMTEgMS4zMTFDNi4yOCAyMiA3LjEyIDIyIDguOCAyMmg2LjRjMS42OCAwIDIuNTIgMCAzLjE2Mi0uMzI3YTMgMyAwIDAwMS4zMTEtMS4zMTFDMjAgMTkuNzIgMjAgMTguODggMjAgMTcuMlY4bC02LTZ6XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY2FyZCdcIiBbYXR0ci53aWR0aF09XCJzaXplXCIgW2F0dHIuaGVpZ2h0XT1cInNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMjIgMTBIMk0yMiAxMVY4LjJDMjIgNy4wOCAyMiA2LjUyIDIxLjc4MiA2LjA5MmEyIDIgMCAwMC0uODc0LS44NzRDMjAuNDggNSAxOS45MiA1IDE4LjggNUg1LjJDNC4wOCA1IDMuNTIgNSAzLjA5MiA1LjIxOGEyIDIgMCAwMC0uODc0Ljg3NEMyIDYuNTIgMiA3LjA4IDIgOC4yVjE1LjhjMCAxLjEyIDAgMS42OC4yMTggMi4xMDhhMiAyIDAgMDAuODc0Ljg3NEMzLjUyIDE5IDQuMDggMTkgNS4yIDE5SDE4LjhjMS4xMiAwIDEuNjggMCAyLjEwOC0uMjE4YTIgMiAwIDAwLjg3NC0uODc0QzIyIDE3LjQ4IDIyIDE2LjkyIDIyIDE1LjhWMTF6XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInbG9nb3V0J1wiIFthdHRyLndpZHRoXT1cInNpemVcIiBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNiAxN2w1LTVtMCAwbC01LTVtNSA1SDltMC05SDcuOGMtMS42OCAwLTIuNTIgMC0zLjE2Mi4zMjdhMyAzIDAgMDAtMS4zMTEgMS4zMTFDMyA1LjI4IDMgNi4xMiAzIDcuOHY4LjRjMCAxLjY4IDAgMi41Mi4zMjcgMy4xNjJhMyAzIDAgMDAxLjMxMSAxLjMxMUM1LjI4IDIxIDYuMTIgMjEgNy44IDIxSDlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG5cbiAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidjaGV2cm9uLWRvd24nXCIgW2F0dHIud2lkdGhdPVwic2l6ZVwiIFthdHRyLmhlaWdodF09XCJzaXplXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTUgNy41bDUgNSA1LTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInc2V0dGluZ3MnXCIgW2F0dHIud2lkdGhdPVwic2l6ZVwiIFthdHRyLmhlaWdodF09XCJzaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTEyIDE1YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2elwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTkuNjIyIDEwLjM5NWwtMS4wOTctMi42NUwyMCA2bC0yLTItMS43MzUgMS40ODMtMi43MDctMS4xMTNMMTIuOTM1IDJoLTEuOTU0bC0uNjMyIDIuNDAxLTIuNjQ1IDEuMTE1TDYgNCA0IDZsMS40NTMgMS43ODktMS4wOCAyLjY1N0wyIDExdjJsMi40MDEuNjU1TDUuNTE2IDE2LjMgNCAxOGwyIDIgMS43OTEtMS40NiAyLjYwNiAxLjA3MkwxMSAyMmgybC42MDQtMi4zODcgMi42NTEtMS4wOThDMTYuNjk3IDE4LjgzMSAxOCAyMCAxOCAyMGwyLTItMS40ODQtMS43NSAxLjA5OC0yLjY1MiAyLjM4Ni0uNjJWMTFsLTIuMzc4LS42MDV6XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCIndXNlcidcIiBbYXR0ci53aWR0aF09XCJzaXplXCIgW2F0dHIuaGVpZ2h0XT1cInNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMjAgMjF2LTJhNCA0IDAgMDAtNC00SDhhNCA0IDAgMDAtNCA0djJNMTIgMTFhNCA0IDAgMTAwLTggNCA0IDAgMDAwIDh6XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInaG9tZSdcIiBbYXR0ci53aWR0aF09XCJzaXplXCIgW2F0dHIuaGVpZ2h0XT1cInNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMyA5bDktNyA5IDd2MTFhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjl6XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk05IDIyVjEyaDZ2MTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckljb25Db21wb25lbnQge1xuICBASW5wdXQoKSBuYW1lITogU2lkZWJhckljb25OYW1lO1xuICBASW5wdXQoKSBzaXplID0gMjQ7XG59XG4iXX0=
@@ -0,0 +1,115 @@
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener, ContentChild, TemplateRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RouterLink, RouterLinkActive } from '@angular/router';
4
+ import { SidebarIconComponent } from './sidebar-icon.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class SidebarComponent {
8
+ hostRef;
9
+ /** Items del menú (datos-driven). Soporta children para sub-navegación. */
10
+ items = [];
11
+ /** Logo: si se pasa la URL se renderiza; alternativamente proyecta contenido con `[sidebarLogo]`. */
12
+ logoSrc;
13
+ logoAlt = 'Logo';
14
+ /** Footer hibrido: si se pasan los inputs se usa el footer por defecto.
15
+ * Para footer custom, proyectar con `[sidebarFooter]` (gana sobre los inputs). */
16
+ userName;
17
+ userEmail;
18
+ /** Si no se pasa, se usa la primera letra de userName. */
19
+ userInitial;
20
+ /** Mostrar/ocultar el botón de logout en el menú de cuenta. */
21
+ showLogout = true;
22
+ logoutLabel = 'Cerrar sesión';
23
+ /** Click en un item (incluye expandibles y hojas). */
24
+ itemClick = new EventEmitter();
25
+ logout = new EventEmitter();
26
+ logoTpl;
27
+ footerTpl;
28
+ expandedKeys = new Set();
29
+ accountMenuOpen = false;
30
+ subsetMatch = {
31
+ paths: 'subset',
32
+ queryParams: 'ignored',
33
+ fragment: 'ignored',
34
+ matrixParams: 'ignored'
35
+ };
36
+ exactMatch = {
37
+ paths: 'exact',
38
+ queryParams: 'ignored',
39
+ fragment: 'ignored',
40
+ matrixParams: 'ignored'
41
+ };
42
+ constructor(hostRef) {
43
+ this.hostRef = hostRef;
44
+ }
45
+ get computedInitial() {
46
+ if (this.userInitial)
47
+ return this.userInitial;
48
+ return (this.userName?.trim().charAt(0) || '').toUpperCase();
49
+ }
50
+ isExpanded(item) {
51
+ return this.expandedKeys.has(item.label);
52
+ }
53
+ onItemClick(item) {
54
+ if (item.children?.length) {
55
+ if (this.expandedKeys.has(item.label)) {
56
+ this.expandedKeys.delete(item.label);
57
+ }
58
+ else {
59
+ this.expandedKeys.add(item.label);
60
+ }
61
+ }
62
+ this.itemClick.emit(item);
63
+ }
64
+ toggleAccountMenu() {
65
+ this.accountMenuOpen = !this.accountMenuOpen;
66
+ }
67
+ onLogoutClick() {
68
+ this.accountMenuOpen = false;
69
+ this.logout.emit();
70
+ }
71
+ onDocumentClick(event) {
72
+ if (!this.accountMenuOpen)
73
+ return;
74
+ const footer = this.hostRef.nativeElement.querySelector('.svu-sidebar__footer');
75
+ if (footer && !footer.contains(event.target)) {
76
+ this.accountMenuOpen = false;
77
+ }
78
+ }
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarComponent, isStandalone: true, selector: "svu-sidebar", inputs: { items: "items", logoSrc: "logoSrc", logoAlt: "logoAlt", userName: "userName", userEmail: "userEmail", userInitial: "userInitial", showLogout: "showLogout", logoutLabel: "logoutLabel" }, outputs: { itemClick: "itemClick", logout: "logout" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, queries: [{ propertyName: "logoTpl", first: true, predicate: ["sidebarLogo"], descendants: true, read: TemplateRef }, { propertyName: "footerTpl", first: true, predicate: ["sidebarFooter"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<aside class=\"svu-sidebar\">\n <div class=\"svu-sidebar__content\">\n <div class=\"svu-sidebar__top\">\n <!-- Logo: slot proyectable o input -->\n <div class=\"svu-sidebar__logo\">\n <ng-container *ngIf=\"logoTpl; else defaultLogo\" [ngTemplateOutlet]=\"logoTpl\"></ng-container>\n <ng-template #defaultLogo>\n <img *ngIf=\"logoSrc\" [src]=\"logoSrc\" [alt]=\"logoAlt\" class=\"svu-sidebar__logo-img\" />\n </ng-template>\n </div>\n\n <!-- Navigation -->\n <nav class=\"svu-sidebar__nav\">\n <ng-container *ngFor=\"let item of items\">\n <!-- Item con children (expandible) -->\n <ng-container *ngIf=\"item.children?.length; else leafItem\">\n <div\n class=\"svu-sidebar__nav-item\"\n [class.svu-sidebar__nav-item--active]=\"parentActive.isActive\"\n (click)=\"onItemClick(item)\"\n [routerLink]=\"item.route || null\"\n routerLinkActive\n #parentActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"subsetMatch\">\n <div class=\"svu-sidebar__nav-item-content\">\n <svu-sidebar-icon *ngIf=\"item.icon\" [name]=\"item.icon\" class=\"svu-sidebar__nav-icon\"></svu-sidebar-icon>\n <span class=\"svu-sidebar__nav-text\">{{ item.label }}</span>\n </div>\n <svu-sidebar-icon\n name=\"chevron-down\"\n [size]=\"20\"\n class=\"svu-sidebar__nav-chevron\"\n [class.svu-sidebar__nav-chevron--open]=\"isExpanded(item)\">\n </svu-sidebar-icon>\n </div>\n\n <div class=\"svu-sidebar__subnav\" *ngIf=\"isExpanded(item)\">\n <a\n *ngFor=\"let child of item.children\"\n class=\"svu-sidebar__subnav-item\"\n [routerLink]=\"child.route\"\n routerLinkActive=\"svu-sidebar__subnav-item--active\"\n [routerLinkActiveOptions]=\"child.exact ? exactMatch : subsetMatch\"\n (click)=\"onItemClick(child)\">\n {{ child.label }}\n </a>\n </div>\n </ng-container>\n\n <!-- Item simple (hoja) -->\n <ng-template #leafItem>\n <a\n class=\"svu-sidebar__nav-item\"\n [routerLink]=\"item.route\"\n routerLinkActive=\"svu-sidebar__nav-item--active\"\n [routerLinkActiveOptions]=\"item.exact ? exactMatch : subsetMatch\"\n (click)=\"onItemClick(item)\">\n <div class=\"svu-sidebar__nav-item-content\">\n <svu-sidebar-icon *ngIf=\"item.icon\" [name]=\"item.icon\" class=\"svu-sidebar__nav-icon\"></svu-sidebar-icon>\n <span class=\"svu-sidebar__nav-text\">{{ item.label }}</span>\n </div>\n </a>\n </ng-template>\n </ng-container>\n </nav>\n </div>\n\n <!-- Footer: slot custom o default (user + logout) -->\n <div class=\"svu-sidebar__footer\">\n <div class=\"svu-sidebar__divider\"></div>\n\n <ng-container *ngIf=\"footerTpl; else defaultFooter\" [ngTemplateOutlet]=\"footerTpl\"></ng-container>\n\n <ng-template #defaultFooter>\n <div class=\"svu-sidebar__account-wrapper\" *ngIf=\"userName\">\n <div class=\"svu-sidebar__account\" (click)=\"toggleAccountMenu()\">\n <div class=\"svu-sidebar__avatar\">\n <span class=\"svu-sidebar__avatar-text\">{{ computedInitial }}</span>\n </div>\n <div class=\"svu-sidebar__user-info\">\n <span class=\"svu-sidebar__user-name\">{{ userName }}</span>\n <span class=\"svu-sidebar__user-email\" *ngIf=\"userEmail\">{{ userEmail }}</span>\n </div>\n </div>\n\n <div *ngIf=\"accountMenuOpen && showLogout\" class=\"svu-sidebar__account-menu\">\n <button type=\"button\" class=\"svu-sidebar__account-menu-item\" (click)=\"onLogoutClick()\">\n <svu-sidebar-icon name=\"logout\" [size]=\"20\"></svu-sidebar-icon>\n <span>{{ logoutLabel }}</span>\n </button>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div class=\"svu-sidebar__border\"></div>\n</aside>\n", styles: [".svu-sidebar{display:flex;width:312px;height:100%;background:#fff;flex-shrink:0}.svu-sidebar__content{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-width:0}.svu-sidebar__border{width:1px;height:100%;background-color:#e9eaeb;flex-shrink:0}.svu-sidebar__top{display:flex;flex-direction:column;gap:24px;padding-top:32px}.svu-sidebar__logo{padding:0 20px 0 24px}.svu-sidebar__logo-img{height:48px;width:auto}.svu-sidebar__nav{display:flex;flex-direction:column;gap:4px;padding:0 16px}.svu-sidebar__nav-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background-color .2s ease;text-decoration:none;color:inherit}.svu-sidebar__nav-item:hover,.svu-sidebar__nav-item--active{background-color:#fafafa}.svu-sidebar__nav-item--active .svu-sidebar__nav-text,.svu-sidebar__nav-item--active .svu-sidebar__nav-icon{color:#2e353a}.svu-sidebar__nav-item-content{display:flex;align-items:center;gap:12px}.svu-sidebar__nav-icon{flex-shrink:0;color:#585d61}.svu-sidebar__nav-text{font-family:Roboto,sans-serif;font-weight:600;font-size:16px;line-height:24px;color:#585d61}.svu-sidebar__nav-chevron{flex-shrink:0;color:#585d61;transition:transform .2s ease}.svu-sidebar__nav-chevron--open{transform:rotate(180deg)}.svu-sidebar__subnav{display:flex;flex-direction:column;gap:2px;padding-left:48px}.svu-sidebar__subnav-item{display:block;padding:6px 12px;border-radius:6px;font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6d7275;text-decoration:none;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__subnav-item:hover{background-color:#fafafa}.svu-sidebar__subnav-item--active{background-color:#fafafa;color:#2e353a;font-weight:600}.svu-sidebar__footer{display:flex;flex-direction:column;gap:24px;padding:0 16px 32px}.svu-sidebar__divider{height:1px;width:100%;background-color:#e9eaeb}.svu-sidebar__account-wrapper{position:relative}.svu-sidebar__account{display:flex;align-items:center;gap:12px;padding:8px;border-radius:8px;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__account:hover{background-color:#fafafa}.svu-sidebar__account-menu{position:absolute;bottom:calc(100% + 8px);left:0;right:0;background:#fff;border:1px solid #E9EAEB;border-radius:8px;box-shadow:0 4px 16px #0000001a;padding:4px;z-index:10}.svu-sidebar__account-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;background:none;border-radius:6px;font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#d92d20;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__account-menu-item:hover{background-color:#fef3f2}.svu-sidebar__avatar{width:40px;height:40px;border-radius:50%;background-color:#364b9f;display:flex;align-items:center;justify-content:center;flex-shrink:0}.svu-sidebar__avatar-text{font-family:Roboto,sans-serif;font-weight:600;font-size:16px;color:#fff}.svu-sidebar__user-info{display:flex;flex-direction:column;min-width:0}.svu-sidebar__user-name{font-family:Roboto,sans-serif;font-weight:600;font-size:14px;line-height:20px;color:#2e353a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.svu-sidebar__user-email{font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6d7275;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: SidebarIconComponent, selector: "svu-sidebar-icon", inputs: ["name", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'svu-sidebar', standalone: true, imports: [CommonModule, RouterLink, RouterLinkActive, SidebarIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside class=\"svu-sidebar\">\n <div class=\"svu-sidebar__content\">\n <div class=\"svu-sidebar__top\">\n <!-- Logo: slot proyectable o input -->\n <div class=\"svu-sidebar__logo\">\n <ng-container *ngIf=\"logoTpl; else defaultLogo\" [ngTemplateOutlet]=\"logoTpl\"></ng-container>\n <ng-template #defaultLogo>\n <img *ngIf=\"logoSrc\" [src]=\"logoSrc\" [alt]=\"logoAlt\" class=\"svu-sidebar__logo-img\" />\n </ng-template>\n </div>\n\n <!-- Navigation -->\n <nav class=\"svu-sidebar__nav\">\n <ng-container *ngFor=\"let item of items\">\n <!-- Item con children (expandible) -->\n <ng-container *ngIf=\"item.children?.length; else leafItem\">\n <div\n class=\"svu-sidebar__nav-item\"\n [class.svu-sidebar__nav-item--active]=\"parentActive.isActive\"\n (click)=\"onItemClick(item)\"\n [routerLink]=\"item.route || null\"\n routerLinkActive\n #parentActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"subsetMatch\">\n <div class=\"svu-sidebar__nav-item-content\">\n <svu-sidebar-icon *ngIf=\"item.icon\" [name]=\"item.icon\" class=\"svu-sidebar__nav-icon\"></svu-sidebar-icon>\n <span class=\"svu-sidebar__nav-text\">{{ item.label }}</span>\n </div>\n <svu-sidebar-icon\n name=\"chevron-down\"\n [size]=\"20\"\n class=\"svu-sidebar__nav-chevron\"\n [class.svu-sidebar__nav-chevron--open]=\"isExpanded(item)\">\n </svu-sidebar-icon>\n </div>\n\n <div class=\"svu-sidebar__subnav\" *ngIf=\"isExpanded(item)\">\n <a\n *ngFor=\"let child of item.children\"\n class=\"svu-sidebar__subnav-item\"\n [routerLink]=\"child.route\"\n routerLinkActive=\"svu-sidebar__subnav-item--active\"\n [routerLinkActiveOptions]=\"child.exact ? exactMatch : subsetMatch\"\n (click)=\"onItemClick(child)\">\n {{ child.label }}\n </a>\n </div>\n </ng-container>\n\n <!-- Item simple (hoja) -->\n <ng-template #leafItem>\n <a\n class=\"svu-sidebar__nav-item\"\n [routerLink]=\"item.route\"\n routerLinkActive=\"svu-sidebar__nav-item--active\"\n [routerLinkActiveOptions]=\"item.exact ? exactMatch : subsetMatch\"\n (click)=\"onItemClick(item)\">\n <div class=\"svu-sidebar__nav-item-content\">\n <svu-sidebar-icon *ngIf=\"item.icon\" [name]=\"item.icon\" class=\"svu-sidebar__nav-icon\"></svu-sidebar-icon>\n <span class=\"svu-sidebar__nav-text\">{{ item.label }}</span>\n </div>\n </a>\n </ng-template>\n </ng-container>\n </nav>\n </div>\n\n <!-- Footer: slot custom o default (user + logout) -->\n <div class=\"svu-sidebar__footer\">\n <div class=\"svu-sidebar__divider\"></div>\n\n <ng-container *ngIf=\"footerTpl; else defaultFooter\" [ngTemplateOutlet]=\"footerTpl\"></ng-container>\n\n <ng-template #defaultFooter>\n <div class=\"svu-sidebar__account-wrapper\" *ngIf=\"userName\">\n <div class=\"svu-sidebar__account\" (click)=\"toggleAccountMenu()\">\n <div class=\"svu-sidebar__avatar\">\n <span class=\"svu-sidebar__avatar-text\">{{ computedInitial }}</span>\n </div>\n <div class=\"svu-sidebar__user-info\">\n <span class=\"svu-sidebar__user-name\">{{ userName }}</span>\n <span class=\"svu-sidebar__user-email\" *ngIf=\"userEmail\">{{ userEmail }}</span>\n </div>\n </div>\n\n <div *ngIf=\"accountMenuOpen && showLogout\" class=\"svu-sidebar__account-menu\">\n <button type=\"button\" class=\"svu-sidebar__account-menu-item\" (click)=\"onLogoutClick()\">\n <svu-sidebar-icon name=\"logout\" [size]=\"20\"></svu-sidebar-icon>\n <span>{{ logoutLabel }}</span>\n </button>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div class=\"svu-sidebar__border\"></div>\n</aside>\n", styles: [".svu-sidebar{display:flex;width:312px;height:100%;background:#fff;flex-shrink:0}.svu-sidebar__content{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-width:0}.svu-sidebar__border{width:1px;height:100%;background-color:#e9eaeb;flex-shrink:0}.svu-sidebar__top{display:flex;flex-direction:column;gap:24px;padding-top:32px}.svu-sidebar__logo{padding:0 20px 0 24px}.svu-sidebar__logo-img{height:48px;width:auto}.svu-sidebar__nav{display:flex;flex-direction:column;gap:4px;padding:0 16px}.svu-sidebar__nav-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background-color .2s ease;text-decoration:none;color:inherit}.svu-sidebar__nav-item:hover,.svu-sidebar__nav-item--active{background-color:#fafafa}.svu-sidebar__nav-item--active .svu-sidebar__nav-text,.svu-sidebar__nav-item--active .svu-sidebar__nav-icon{color:#2e353a}.svu-sidebar__nav-item-content{display:flex;align-items:center;gap:12px}.svu-sidebar__nav-icon{flex-shrink:0;color:#585d61}.svu-sidebar__nav-text{font-family:Roboto,sans-serif;font-weight:600;font-size:16px;line-height:24px;color:#585d61}.svu-sidebar__nav-chevron{flex-shrink:0;color:#585d61;transition:transform .2s ease}.svu-sidebar__nav-chevron--open{transform:rotate(180deg)}.svu-sidebar__subnav{display:flex;flex-direction:column;gap:2px;padding-left:48px}.svu-sidebar__subnav-item{display:block;padding:6px 12px;border-radius:6px;font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6d7275;text-decoration:none;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__subnav-item:hover{background-color:#fafafa}.svu-sidebar__subnav-item--active{background-color:#fafafa;color:#2e353a;font-weight:600}.svu-sidebar__footer{display:flex;flex-direction:column;gap:24px;padding:0 16px 32px}.svu-sidebar__divider{height:1px;width:100%;background-color:#e9eaeb}.svu-sidebar__account-wrapper{position:relative}.svu-sidebar__account{display:flex;align-items:center;gap:12px;padding:8px;border-radius:8px;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__account:hover{background-color:#fafafa}.svu-sidebar__account-menu{position:absolute;bottom:calc(100% + 8px);left:0;right:0;background:#fff;border:1px solid #E9EAEB;border-radius:8px;box-shadow:0 4px 16px #0000001a;padding:4px;z-index:10}.svu-sidebar__account-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;background:none;border-radius:6px;font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#d92d20;cursor:pointer;transition:background-color .2s ease}.svu-sidebar__account-menu-item:hover{background-color:#fef3f2}.svu-sidebar__avatar{width:40px;height:40px;border-radius:50%;background-color:#364b9f;display:flex;align-items:center;justify-content:center;flex-shrink:0}.svu-sidebar__avatar-text{font-family:Roboto,sans-serif;font-weight:600;font-size:16px;color:#fff}.svu-sidebar__user-info{display:flex;flex-direction:column;min-width:0}.svu-sidebar__user-name{font-family:Roboto,sans-serif;font-weight:600;font-size:14px;line-height:20px;color:#2e353a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.svu-sidebar__user-email{font-family:Roboto,sans-serif;font-weight:400;font-size:14px;line-height:20px;color:#6d7275;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
85
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { items: [{
86
+ type: Input
87
+ }], logoSrc: [{
88
+ type: Input
89
+ }], logoAlt: [{
90
+ type: Input
91
+ }], userName: [{
92
+ type: Input
93
+ }], userEmail: [{
94
+ type: Input
95
+ }], userInitial: [{
96
+ type: Input
97
+ }], showLogout: [{
98
+ type: Input
99
+ }], logoutLabel: [{
100
+ type: Input
101
+ }], itemClick: [{
102
+ type: Output
103
+ }], logout: [{
104
+ type: Output
105
+ }], logoTpl: [{
106
+ type: ContentChild,
107
+ args: ['sidebarLogo', { read: TemplateRef }]
108
+ }], footerTpl: [{
109
+ type: ContentChild,
110
+ args: ['sidebarFooter', { read: TemplateRef }]
111
+ }], onDocumentClick: [{
112
+ type: HostListener,
113
+ args: ['document:click', ['$event']]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZ2FuaXNtcy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9vcmdhbmlzbXMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBRXZCLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUF3QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBbUJqRixNQUFNLE9BQU8sZ0JBQWdCO0lBMENQO0lBekNwQiwyRUFBMkU7SUFDbEUsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFFbkMscUdBQXFHO0lBQzVGLE9BQU8sQ0FBVTtJQUNqQixPQUFPLEdBQUcsTUFBTSxDQUFDO0lBRTFCO3VGQUNtRjtJQUMxRSxRQUFRLENBQVU7SUFDbEIsU0FBUyxDQUFVO0lBQzVCLDBEQUEwRDtJQUNqRCxXQUFXLENBQVU7SUFDOUIsK0RBQStEO0lBQ3RELFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsV0FBVyxHQUFHLGVBQWUsQ0FBQztJQUV2QyxzREFBc0Q7SUFDNUMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFDNUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFUSxPQUFPLENBQXdCO0lBQzdCLFNBQVMsQ0FBd0I7SUFFdkYsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDakMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUVmLFdBQVcsR0FBeUI7UUFDM0MsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsU0FBUztRQUN0QixRQUFRLEVBQUUsU0FBUztRQUNuQixZQUFZLEVBQUUsU0FBUztLQUN4QixDQUFDO0lBRU8sVUFBVSxHQUF5QjtRQUMxQyxLQUFLLEVBQUUsT0FBTztRQUNkLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFlBQVksRUFBRSxTQUFTO0tBQ3hCLENBQUM7SUFFRixZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUFHLENBQUM7SUFFeEQsSUFBSSxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFpQjtRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBWTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQzt3R0FoRlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsdWRBc0JVLFdBQVcscUdBQ1QsV0FBVyw2QkN2RHBELGt4SUFrR0EsNDRHRHZFWSxZQUFZLHVhQUFFLFVBQVUsb09BQUUsZ0JBQWdCLDhNQUFFLG9CQUFvQjs7NEZBSy9ELGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxtQkFDMUQsdUJBQXVCLENBQUMsTUFBTTsrRUFNdEMsS0FBSztzQkFBYixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUU2QyxPQUFPO3NCQUExRCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ0ksU0FBUztzQkFBOUQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQW1EcEQsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIENvbnRlbnRDaGlsZCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSwgSXNBY3RpdmVNYXRjaE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2lkZWJhckljb25Db21wb25lbnQsIFNpZGViYXJJY29uTmFtZSB9IGZyb20gJy4vc2lkZWJhci1pY29uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZWJhckl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogU2lkZWJhckljb25OYW1lO1xuICByb3V0ZT86IHN0cmluZztcbiAgLyoqIFN1YnNldCBtYXRjaCBwYXJhIHF1ZSBlbCBwYWRyZSBzZSBtYXJxdWUgYWN0aXZvIGF1bnF1ZSBsYSBydXRhIGhpamEgbm8gZXN0w6kgZXhhY3RhLiAqL1xuICBleGFjdD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogU2lkZWJhckl0ZW1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Z1LXNpZGViYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBTaWRlYmFySWNvbkNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGViYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlYmFyQ29tcG9uZW50IHtcbiAgLyoqIEl0ZW1zIGRlbCBtZW7DuiAoZGF0b3MtZHJpdmVuKS4gU29wb3J0YSBjaGlsZHJlbiBwYXJhIHN1Yi1uYXZlZ2FjacOzbi4gKi9cbiAgQElucHV0KCkgaXRlbXM6IFNpZGViYXJJdGVtW10gPSBbXTtcblxuICAvKiogTG9nbzogc2kgc2UgcGFzYSBsYSBVUkwgc2UgcmVuZGVyaXphOyBhbHRlcm5hdGl2YW1lbnRlIHByb3llY3RhIGNvbnRlbmlkbyBjb24gYFtzaWRlYmFyTG9nb11gLiAqL1xuICBASW5wdXQoKSBsb2dvU3JjPzogc3RyaW5nO1xuICBASW5wdXQoKSBsb2dvQWx0ID0gJ0xvZ28nO1xuXG4gIC8qKiBGb290ZXIgaGlicmlkbzogc2kgc2UgcGFzYW4gbG9zIGlucHV0cyBzZSB1c2EgZWwgZm9vdGVyIHBvciBkZWZlY3RvLlxuICAgKiAgUGFyYSBmb290ZXIgY3VzdG9tLCBwcm95ZWN0YXIgY29uIGBbc2lkZWJhckZvb3Rlcl1gIChnYW5hIHNvYnJlIGxvcyBpbnB1dHMpLiAqL1xuICBASW5wdXQoKSB1c2VyTmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgdXNlckVtYWlsPzogc3RyaW5nO1xuICAvKiogU2kgbm8gc2UgcGFzYSwgc2UgdXNhIGxhIHByaW1lcmEgbGV0cmEgZGUgdXNlck5hbWUuICovXG4gIEBJbnB1dCgpIHVzZXJJbml0aWFsPzogc3RyaW5nO1xuICAvKiogTW9zdHJhci9vY3VsdGFyIGVsIGJvdMOzbiBkZSBsb2dvdXQgZW4gZWwgbWVuw7ogZGUgY3VlbnRhLiAqL1xuICBASW5wdXQoKSBzaG93TG9nb3V0ID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9nb3V0TGFiZWwgPSAnQ2VycmFyIHNlc2nDs24nO1xuXG4gIC8qKiBDbGljayBlbiB1biBpdGVtIChpbmNsdXllIGV4cGFuZGlibGVzIHkgaG9qYXMpLiAqL1xuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTaWRlYmFySXRlbT4oKTtcbiAgQE91dHB1dCgpIGxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAQ29udGVudENoaWxkKCdzaWRlYmFyTG9nbycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgbG9nb1RwbD86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBAQ29udGVudENoaWxkKCdzaWRlYmFyRm9vdGVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBmb290ZXJUcGw/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBleHBhbmRlZEtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgYWNjb3VudE1lbnVPcGVuID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgc3Vic2V0TWF0Y2g6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xuICAgIHBhdGhzOiAnc3Vic2V0JyxcbiAgICBxdWVyeVBhcmFtczogJ2lnbm9yZWQnLFxuICAgIGZyYWdtZW50OiAnaWdub3JlZCcsXG4gICAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCdcbiAgfTtcblxuICByZWFkb25seSBleGFjdE1hdGNoOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcbiAgICBwYXRoczogJ2V4YWN0JyxcbiAgICBxdWVyeVBhcmFtczogJ2lnbm9yZWQnLFxuICAgIGZyYWdtZW50OiAnaWdub3JlZCcsXG4gICAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCdcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIGdldCBjb21wdXRlZEluaXRpYWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51c2VySW5pdGlhbCkgcmV0dXJuIHRoaXMudXNlckluaXRpYWw7XG4gICAgcmV0dXJuICh0aGlzLnVzZXJOYW1lPy50cmltKCkuY2hhckF0KDApIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgaXNFeHBhbmRlZChpdGVtOiBTaWRlYmFySXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkS2V5cy5oYXMoaXRlbS5sYWJlbCk7XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBTaWRlYmFySXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkS2V5cy5oYXMoaXRlbS5sYWJlbCkpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZEtleXMuZGVsZXRlKGl0ZW0ubGFiZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZEtleXMuYWRkKGl0ZW0ubGFiZWwpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgdG9nZ2xlQWNjb3VudE1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5hY2NvdW50TWVudU9wZW4gPSAhdGhpcy5hY2NvdW50TWVudU9wZW47XG4gIH1cblxuICBvbkxvZ291dENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjb3VudE1lbnVPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5sb2dvdXQuZW1pdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjY291bnRNZW51T3BlbikgcmV0dXJuO1xuICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zdnUtc2lkZWJhcl9fZm9vdGVyJyk7XG4gICAgaWYgKGZvb3RlciAmJiAhZm9vdGVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5hY2NvdW50TWVudU9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxhc2lkZSBjbGFzcz1cInN2dS1zaWRlYmFyXCI+XG4gIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fdG9wXCI+XG4gICAgICA8IS0tIExvZ286IHNsb3QgcHJveWVjdGFibGUgbyBpbnB1dCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbG9nb1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nb1RwbDsgZWxzZSBkZWZhdWx0TG9nb1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvZ29UcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9nbz5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwibG9nb1NyY1wiIFtzcmNdPVwibG9nb1NyY1wiIFthbHRdPVwibG9nb0FsdFwiIGNsYXNzPVwic3Z1LXNpZGViYXJfX2xvZ28taW1nXCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE5hdmlnYXRpb24gLS0+XG4gICAgICA8bmF2IGNsYXNzPVwic3Z1LXNpZGViYXJfX25hdlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XG4gICAgICAgICAgPCEtLSBJdGVtIGNvbiBjaGlsZHJlbiAoZXhwYW5kaWJsZSkgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBsZWFmSXRlbVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInN2dS1zaWRlYmFyX19uYXYtaXRlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zdnUtc2lkZWJhcl9fbmF2LWl0ZW0tLWFjdGl2ZV09XCJwYXJlbnRBY3RpdmUuaXNBY3RpdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlIHx8IG51bGxcIlxuICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlXG4gICAgICAgICAgICAgICNwYXJlbnRBY3RpdmU9XCJyb3V0ZXJMaW5rQWN0aXZlXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInN1YnNldE1hdGNoXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxzdnUtc2lkZWJhci1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW25hbWVdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LWljb25cIj48L3N2dS1zaWRlYmFyLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LXRleHRcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHN2dS1zaWRlYmFyLWljb25cbiAgICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LWNoZXZyb25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zdnUtc2lkZWJhcl9fbmF2LWNoZXZyb24tLW9wZW5dPVwiaXNFeHBhbmRlZChpdGVtKVwiPlxuICAgICAgICAgICAgICA8L3N2dS1zaWRlYmFyLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN2dS1zaWRlYmFyX19zdWJuYXZcIiAqbmdJZj1cImlzRXhwYW5kZWQoaXRlbSlcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdnUtc2lkZWJhcl9fc3VibmF2LWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImNoaWxkLnJvdXRlXCJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwic3Z1LXNpZGViYXJfX3N1Ym5hdi1pdGVtLS1hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJjaGlsZC5leGFjdCA/IGV4YWN0TWF0Y2ggOiBzdWJzZXRNYXRjaFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGNoaWxkKVwiPlxuICAgICAgICAgICAgICAgIHt7IGNoaWxkLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBJdGVtIHNpbXBsZSAoaG9qYSkgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsZWFmSXRlbT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwic3Z1LXNpZGViYXJfX25hdi1pdGVtXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZVwiXG4gICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJzdnUtc2lkZWJhcl9fbmF2LWl0ZW0tLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLmV4YWN0ID8gZXhhY3RNYXRjaCA6IHN1YnNldE1hdGNoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxzdnUtc2lkZWJhci1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW25hbWVdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LWljb25cIj48L3N2dS1zaWRlYmFyLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdnUtc2lkZWJhcl9fbmF2LXRleHRcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBGb290ZXI6IHNsb3QgY3VzdG9tIG8gZGVmYXVsdCAodXNlciArIGxvZ291dCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cInN2dS1zaWRlYmFyX19mb290ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9vdGVyVHBsOyBlbHNlIGRlZmF1bHRGb290ZXJcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rm9vdGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Z1LXNpZGViYXJfX2FjY291bnQtd3JhcHBlclwiICpuZ0lmPVwidXNlck5hbWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Z1LXNpZGViYXJfX2FjY291bnRcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3VudE1lbnUoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN2dS1zaWRlYmFyX19hdmF0YXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdnUtc2lkZWJhcl9fYXZhdGFyLXRleHRcIj57eyBjb21wdXRlZEluaXRpYWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdnUtc2lkZWJhcl9fdXNlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Z1LXNpZGViYXJfX3VzZXItbmFtZVwiPnt7IHVzZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2dS1zaWRlYmFyX191c2VyLWVtYWlsXCIgKm5nSWY9XCJ1c2VyRW1haWxcIj57eyB1c2VyRW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY2NvdW50TWVudU9wZW4gJiYgc2hvd0xvZ291dFwiIGNsYXNzPVwic3Z1LXNpZGViYXJfX2FjY291bnQtbWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzdnUtc2lkZWJhcl9fYWNjb3VudC1tZW51LWl0ZW1cIiAoY2xpY2spPVwib25Mb2dvdXRDbGljaygpXCI+XG4gICAgICAgICAgICAgIDxzdnUtc2lkZWJhci1pY29uIG5hbWU9XCJsb2dvdXRcIiBbc2l6ZV09XCIyMFwiPjwvc3Z1LXNpZGViYXItaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgbG9nb3V0TGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic3Z1LXNpZGViYXJfX2JvcmRlclwiPjwvZGl2PlxuPC9hc2lkZT5cbiJdfQ==
@@ -0,0 +1,96 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class SnackbarService {
5
+ snackbarSubject = new Subject();
6
+ snackbar$ = this.snackbarSubject.asObservable();
7
+ dismissSubject = new Subject();
8
+ dismiss$ = this.dismissSubject.asObservable();
9
+ snackbarIdCounter = 0;
10
+ constructor() {
11
+ }
12
+ /**
13
+ * Show success snackbar
14
+ */
15
+ success(message, duration = 5000, position) {
16
+ this.show({
17
+ message,
18
+ type: 'success',
19
+ duration,
20
+ position
21
+ });
22
+ }
23
+ /**
24
+ * Show error snackbar
25
+ */
26
+ error(message, duration = 5000, position) {
27
+ this.show({
28
+ message,
29
+ type: 'error',
30
+ duration,
31
+ position
32
+ });
33
+ }
34
+ /**
35
+ * Show warning snackbar
36
+ */
37
+ warning(message, duration = 5000, position) {
38
+ this.show({
39
+ message,
40
+ type: 'warning',
41
+ duration,
42
+ position
43
+ });
44
+ }
45
+ /**
46
+ * Show info snackbar
47
+ */
48
+ info(message, duration = 5000, position) {
49
+ this.show({
50
+ message,
51
+ type: 'info',
52
+ duration,
53
+ position
54
+ });
55
+ }
56
+ /**
57
+ * Show snackbar with custom configuration
58
+ */
59
+ show(config) {
60
+ const id = `snackbar-${++this.snackbarIdCounter}`;
61
+ const snackbarData = {
62
+ ...config,
63
+ id,
64
+ duration: config.duration ?? 5000,
65
+ position: config.position ?? 'top-right'
66
+ };
67
+ this.snackbarSubject.next(snackbarData);
68
+ // Auto dismiss after duration
69
+ if (snackbarData.duration && snackbarData.duration > 0) {
70
+ setTimeout(() => {
71
+ this.dismiss(id);
72
+ }, snackbarData.duration);
73
+ }
74
+ }
75
+ /**
76
+ * Dismiss specific snackbar by id
77
+ */
78
+ dismiss(id) {
79
+ this.dismissSubject.next(id);
80
+ }
81
+ /**
82
+ * Dismiss all snackbars
83
+ */
84
+ dismissAll() {
85
+ this.dismissSubject.next('all');
86
+ }
87
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
88
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, providedIn: 'root' });
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, decorators: [{
91
+ type: Injectable,
92
+ args: [{
93
+ providedIn: 'root'
94
+ }]
95
+ }], ctorParameters: () => [] });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc25hY2tiYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTS9CLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztJQUMvQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUN4QyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU3QyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFFOUI7SUFDQSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksRUFBRSxRQUEyQjtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTztZQUNQLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksRUFBRSxRQUEyQjtRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTztZQUNQLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksRUFBRSxRQUEyQjtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTztZQUNQLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksRUFBRSxRQUEyQjtRQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTztZQUNQLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsTUFBc0I7UUFDekIsTUFBTSxFQUFFLEdBQUcsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xELE1BQU0sWUFBWSxHQUFpQjtZQUNqQyxHQUFHLE1BQU07WUFDVCxFQUFFO1lBQ0YsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSTtZQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxXQUFXO1NBQ3pDLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV4Qyw4QkFBOEI7UUFDOUIsSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLENBQUMsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO3dHQTlGVSxlQUFlOzRHQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNuYWNrYmFyQ29uZmlnLCBTbmFja2JhckRhdGEsIFNuYWNrYmFyUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvc25hY2tiYXIubW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU25hY2tiYXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzbmFja2JhclN1YmplY3QgPSBuZXcgU3ViamVjdDxTbmFja2JhckRhdGE+KCk7XG4gIHB1YmxpYyBzbmFja2JhciQgPSB0aGlzLnNuYWNrYmFyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGRpc21pc3NTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwdWJsaWMgZGlzbWlzcyQgPSB0aGlzLmRpc21pc3NTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgc25hY2tiYXJJZENvdW50ZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgc3VjY2VzcyBzbmFja2JhclxuICAgKi9cbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwLCBwb3NpdGlvbj86IFNuYWNrYmFyUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgcG9zaXRpb25cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGVycm9yIHNuYWNrYmFyXG4gICAqL1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwLCBwb3NpdGlvbj86IFNuYWNrYmFyUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICBkdXJhdGlvbixcbiAgICAgIHBvc2l0aW9uXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB3YXJuaW5nIHNuYWNrYmFyXG4gICAqL1xuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb246IG51bWJlciA9IDUwMDAsIHBvc2l0aW9uPzogU25hY2tiYXJQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2hvdyh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBwb3NpdGlvblxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgaW5mbyBzbmFja2JhclxuICAgKi9cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwLCBwb3NpdGlvbj86IFNuYWNrYmFyUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgcG9zaXRpb25cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHNuYWNrYmFyIHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNob3coY29uZmlnOiBTbmFja2JhckNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gYHNuYWNrYmFyLSR7Kyt0aGlzLnNuYWNrYmFySWRDb3VudGVyfWA7XG4gICAgY29uc3Qgc25hY2tiYXJEYXRhOiBTbmFja2JhckRhdGEgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBpZCxcbiAgICAgIGR1cmF0aW9uOiBjb25maWcuZHVyYXRpb24gPz8gNTAwMCxcbiAgICAgIHBvc2l0aW9uOiBjb25maWcucG9zaXRpb24gPz8gJ3RvcC1yaWdodCdcbiAgICB9O1xuXG4gICAgdGhpcy5zbmFja2JhclN1YmplY3QubmV4dChzbmFja2JhckRhdGEpO1xuXG4gICAgLy8gQXV0byBkaXNtaXNzIGFmdGVyIGR1cmF0aW9uXG4gICAgaWYgKHNuYWNrYmFyRGF0YS5kdXJhdGlvbiAmJiBzbmFja2JhckRhdGEuZHVyYXRpb24gPiAwKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNtaXNzKGlkKTtcbiAgICAgIH0sIHNuYWNrYmFyRGF0YS5kdXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3Mgc3BlY2lmaWMgc25hY2tiYXIgYnkgaWRcbiAgICovXG4gIGRpc21pc3MoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc1N1YmplY3QubmV4dChpZCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzcyBhbGwgc25hY2tiYXJzXG4gICAqL1xuICBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc1N1YmplY3QubmV4dCgnYWxsJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Base URL para los assets remotos del microfrontend (íconos, imágenes).
4
+ * El consumidor debe proveerlo, normalmente con el valor de `environment.mfAssetsUrl`.
5
+ */
6
+ export const ASSET_BASE_URL = new InjectionToken('ASSET_BASE_URL', {
7
+ providedIn: 'root',
8
+ factory: () => ''
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtYmFzZS11cmwudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Rva2Vucy9hc3NldC1iYXNlLXVybC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxnQkFBZ0IsRUFBRTtJQUN6RSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEJhc2UgVVJMIHBhcmEgbG9zIGFzc2V0cyByZW1vdG9zIGRlbCBtaWNyb2Zyb250ZW5kICjDrWNvbm9zLCBpbcOhZ2VuZXMpLlxuICogRWwgY29uc3VtaWRvciBkZWJlIHByb3ZlZXJsbywgbm9ybWFsbWVudGUgY29uIGVsIHZhbG9yIGRlIGBlbnZpcm9ubWVudC5tZkFzc2V0c1VybGAuXG4gKi9cbmV4cG9ydCBjb25zdCBBU1NFVF9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBU1NFVF9CQVNFX1VSTCcsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiAnJ1xufSk7XG4iXX0=
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Public API Surface of @up_si_vale/sivale-componentes-angular
3
+ */
4
+ // Tokens
5
+ export * from './lib/tokens/asset-base-url.token';
6
+ // Models
7
+ export * from './lib/models/snackbar.models';
8
+ // Services
9
+ export * from './lib/services/snackbar.service';
10
+ // Directives
11
+ export * from './lib/directives/asset-source.directive';
12
+ export * from './lib/directives/icon-source.directive';
13
+ export * from './lib/directives/only-number.directive';
14
+ export * from './lib/directives/only-letters.directive';
15
+ export * from './lib/directives/rfc.directive';
16
+ export * from './lib/directives/no-leading-space.directive';
17
+ export * from './lib/directives/tooltip.directive';
18
+ // Atoms
19
+ export * from './lib/atoms/button/button.component';
20
+ export * from './lib/atoms/input/input.component';
21
+ export * from './lib/atoms/textarea/textarea.component';
22
+ export * from './lib/atoms/checkbox/checkbox.component';
23
+ export * from './lib/atoms/radio/radio.component';
24
+ export * from './lib/atoms/date-picker/date-picker.component';
25
+ export * from './lib/atoms/loader/loader.component';
26
+ // Organisms
27
+ export * from './lib/organisms/sidebar/sidebar-icon.component';
28
+ export * from './lib/organisms/sidebar/sidebar.component';
29
+ // Molecules
30
+ export * from './lib/molecules/option/option.component';
31
+ export * from './lib/molecules/select/select.component';
32
+ export * from './lib/molecules/multiselect/multiselect.component';
33
+ export * from './lib/molecules/phone-input/phone-input.component';
34
+ export * from './lib/molecules/copy-input/copy-input.component';
35
+ export * from './lib/molecules/snackbar/snackbar.component';
36
+ export * from './lib/molecules/alert/alert.component';
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsU0FBUztBQUNULGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsU0FBUztBQUNULGNBQWMsOEJBQThCLENBQUM7QUFFN0MsV0FBVztBQUNYLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsYUFBYTtBQUNiLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsUUFBUTtBQUNSLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsWUFBWTtBQUNaLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxZQUFZO0FBQ1osY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQHVwX3NpX3ZhbGUvc2l2YWxlLWNvbXBvbmVudGVzLWFuZ3VsYXJcbiAqL1xuXG4vLyBUb2tlbnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rva2Vucy9hc3NldC1iYXNlLXVybC50b2tlbic7XG5cbi8vIE1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3NuYWNrYmFyLm1vZGVscyc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zbmFja2Jhci5zZXJ2aWNlJztcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hc3NldC1zb3VyY2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvaWNvbi1zb3VyY2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvb25seS1udW1iZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvb25seS1sZXR0ZXJzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JmYy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9uby1sZWFkaW5nLXNwYWNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuLy8gQXRvbXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F0b21zL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdG9tcy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXRvbXMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F0b21zL3JhZGlvL3JhZGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdG9tcy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXRvbXMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuXG4vLyBPcmdhbmlzbXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL29yZ2FuaXNtcy9zaWRlYmFyL3NpZGViYXItaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3JnYW5pc21zL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQnO1xuXG4vLyBNb2xlY3VsZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbGVjdWxlcy9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2xlY3VsZXMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9sZWN1bGVzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2xlY3VsZXMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbGVjdWxlcy9jb3B5LWlucHV0L2NvcHktaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbGVjdWxlcy9zbmFja2Jhci9zbmFja2Jhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9sZWN1bGVzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBfc2lfdmFsZS1zaXZhbGUtY29tcG9uZW50ZXMtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cF9zaV92YWxlLXNpdmFsZS1jb21wb25lbnRlcy1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=