@tolle_/tolle-ui 0.0.30-beta → 0.0.31-beta

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.
@@ -1,8 +1,8 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { trigger, state, style, transition, animate } from '@angular/animations';
3
4
  import { cn } from './utils/cn';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
6
  export class AccordionItemComponent {
7
7
  title = '';
8
8
  class = '';
@@ -25,21 +25,42 @@ export class AccordionItemComponent {
25
25
  <button
26
26
  type="button"
27
27
  (click)="toggle()"
28
- class="flex flex-1 items-center justify-between py-4 font-medium transition-all [&[data-state=open]>i]:rotate-180"
28
+ [attr.aria-expanded]="isOpen"
29
29
  [attr.data-state]="isOpen ? 'open' : 'closed'"
30
+ class="flex flex-1 items-center justify-between py-4 font-medium transition-all group [&[data-state=open]>i]:rotate-180"
30
31
  >
31
- <span class="text-left">{{ title }}</span>
32
- <i class="ri-arrow-down-s-line text-muted-foreground transition-transform"></i>
32
+ <span class="text-left group-hover:underline">{{ title }}</span>
33
+ <i class="ri-arrow-down-s-line text-muted-foreground text-lg transition-transform duration-200 hover:no-underline"></i>
33
34
  </button>
34
35
 
35
36
  <div
36
- *ngIf="isOpen"
37
- class="pb-4 text-sm text-muted-foreground overflow-hidden"
38
- >
39
- <ng-content></ng-content>
37
+ [@expandCollapse]="isOpen ? 'expanded' : 'collapsed'"
38
+ class="overflow-hidden">
39
+ <div class="pb-4 pt-0 text-sm text-muted-foreground">
40
+ <ng-content></ng-content>
41
+ </div>
40
42
  </div>
41
43
  </div>
42
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
44
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], animations: [
45
+ trigger('expandCollapse', [
46
+ state('collapsed', style({
47
+ height: '0px',
48
+ opacity: '0',
49
+ overflow: 'hidden',
50
+ visibility: 'hidden'
51
+ })),
52
+ state('expanded', style({
53
+ height: '*', // "Star" means actual content height
54
+ opacity: '1',
55
+ overflow: 'hidden',
56
+ visibility: 'visible'
57
+ })),
58
+ // Use cubic-bezier to match Tailwind/shadcn-ui default ease
59
+ transition('collapsed <=> expanded', [
60
+ animate('300ms cubic-bezier(0.87, 0, 0.13, 1)')
61
+ ])
62
+ ])
63
+ ] });
43
64
  }
44
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionItemComponent, decorators: [{
45
66
  type: Component,
@@ -47,23 +68,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47
68
  selector: 'tolle-accordion-item',
48
69
  standalone: true,
49
70
  imports: [CommonModule],
71
+ animations: [
72
+ trigger('expandCollapse', [
73
+ state('collapsed', style({
74
+ height: '0px',
75
+ opacity: '0',
76
+ overflow: 'hidden',
77
+ visibility: 'hidden'
78
+ })),
79
+ state('expanded', style({
80
+ height: '*', // "Star" means actual content height
81
+ opacity: '1',
82
+ overflow: 'hidden',
83
+ visibility: 'visible'
84
+ })),
85
+ // Use cubic-bezier to match Tailwind/shadcn-ui default ease
86
+ transition('collapsed <=> expanded', [
87
+ animate('300ms cubic-bezier(0.87, 0, 0.13, 1)')
88
+ ])
89
+ ])
90
+ ],
50
91
  template: `
51
92
  <div [class]="cn('flex flex-col border-b border-border', class)">
52
93
  <button
53
94
  type="button"
54
95
  (click)="toggle()"
55
- class="flex flex-1 items-center justify-between py-4 font-medium transition-all [&[data-state=open]>i]:rotate-180"
96
+ [attr.aria-expanded]="isOpen"
56
97
  [attr.data-state]="isOpen ? 'open' : 'closed'"
98
+ class="flex flex-1 items-center justify-between py-4 font-medium transition-all group [&[data-state=open]>i]:rotate-180"
57
99
  >
58
- <span class="text-left">{{ title }}</span>
59
- <i class="ri-arrow-down-s-line text-muted-foreground transition-transform"></i>
100
+ <span class="text-left group-hover:underline">{{ title }}</span>
101
+ <i class="ri-arrow-down-s-line text-muted-foreground text-lg transition-transform duration-200 hover:no-underline"></i>
60
102
  </button>
61
103
 
62
104
  <div
63
- *ngIf="isOpen"
64
- class="pb-4 text-sm text-muted-foreground overflow-hidden"
65
- >
66
- <ng-content></ng-content>
105
+ [@expandCollapse]="isOpen ? 'expanded' : 'collapsed'"
106
+ class="overflow-hidden">
107
+ <div class="pb-4 pt-0 text-sm text-muted-foreground">
108
+ <ng-content></ng-content>
109
+ </div>
67
110
  </div>
68
111
  </div>
69
112
  `
@@ -75,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
75
118
  }], id: [{
76
119
  type: Input
77
120
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUEyQmhDLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLEVBQUUsQ0FBbUI7SUFFOUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLHFEQUFxRDtJQUNyRCxRQUFRLENBQWlDO0lBRXpDLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBbEJoQixzQkFBc0I7NEZBQXRCLHNCQUFzQixzSUFyQnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULDJEQXBCUyxZQUFZOzs0RkFzQlgsc0JBQXNCO2tCQXpCbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDb250ZW50Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtYWNjb3JkaW9uLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbignZmxleCBmbGV4LWNvbCBib3JkZXItYiBib3JkZXItYm9yZGVyJywgY2xhc3MpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktNCBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBbJltkYXRhLXN0YXRlPW9wZW5dPmldOnJvdGF0ZS0xODBcIlxuICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxlZnRcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1hcnJvdy1kb3duLXMtbGluZSB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi10cmFuc2Zvcm1cIj48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICAgIGNsYXNzPVwicGItNCB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25JdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlkITogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIC8vIFRoaXMgd2lsbCBiZSBzZXQgYnkgdGhlIHBhcmVudCBBY2NvcmRpb24gY29tcG9uZW50XG4gIG9uVG9nZ2xlPzogKGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IHZvaWQ7XG5cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLm9uVG9nZ2xlKSB7XG4gICAgICB0aGlzLm9uVG9nZ2xlKHRoaXMuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY24gPSBjbjtcbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFpRGhDLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLEVBQUUsQ0FBbUI7SUFFOUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLHFEQUFxRDtJQUNyRCxRQUFRLENBQWlDO0lBRXpDLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBbEJoQixzQkFBc0I7NEZBQXRCLHNCQUFzQixzSUF2QnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQsMkRBMUNTLFlBQVksaUJBQ1Y7WUFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO29CQUN2QixNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsR0FBRztvQkFDWixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsVUFBVSxFQUFFLFFBQVE7aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztvQkFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxxQ0FBcUM7b0JBQ2xELE9BQU8sRUFBRSxHQUFHO29CQUNaLFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsU0FBUztpQkFDdEIsQ0FBQyxDQUFDO2dCQUNILDREQUE0RDtnQkFDNUQsVUFBVSxDQUFDLHdCQUF3QixFQUFFO29CQUNuQyxPQUFPLENBQUMsc0NBQXNDLENBQUM7aUJBQ2hELENBQUM7YUFDSCxDQUFDO1NBQ0g7OzRGQXdCVSxzQkFBc0I7a0JBL0NsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRTt3QkFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO2dDQUN2QixNQUFNLEVBQUUsS0FBSztnQ0FDYixPQUFPLEVBQUUsR0FBRztnQ0FDWixRQUFRLEVBQUUsUUFBUTtnQ0FDbEIsVUFBVSxFQUFFLFFBQVE7NkJBQ3JCLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztnQ0FDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxxQ0FBcUM7Z0NBQ2xELE9BQU8sRUFBRSxHQUFHO2dDQUNaLFFBQVEsRUFBRSxRQUFRO2dDQUNsQixVQUFVLEVBQUUsU0FBUzs2QkFDdEIsQ0FBQyxDQUFDOzRCQUNILDREQUE0RDs0QkFDNUQsVUFBVSxDQUFDLHdCQUF3QixFQUFFO2dDQUNuQyxPQUFPLENBQUMsc0NBQXNDLENBQUM7NkJBQ2hELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDtpQkFDRjs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFjY29yZGlvbi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbmRDb2xsYXBzZScsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7XG4gICAgICAgIGhlaWdodDogJzBweCcsXG4gICAgICAgIG9wYWNpdHk6ICcwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgICAgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoe1xuICAgICAgICBoZWlnaHQ6ICcqJywgLy8gXCJTdGFyXCIgbWVhbnMgYWN0dWFsIGNvbnRlbnQgaGVpZ2h0XG4gICAgICAgIG9wYWNpdHk6ICcxJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICAgIH0pKSxcbiAgICAgIC8vIFVzZSBjdWJpYy1iZXppZXIgdG8gbWF0Y2ggVGFpbHdpbmQvc2hhZGNuLXVpIGRlZmF1bHQgZWFzZVxuICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkIDw9PiBleHBhbmRlZCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAsIDAuMTMsIDEpJylcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbignZmxleCBmbGV4LWNvbCBib3JkZXItYiBib3JkZXItYm9yZGVyJywgY2xhc3MpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwiaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktNCBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBncm91cCBbJltkYXRhLXN0YXRlPW9wZW5dPmldOnJvdGF0ZS0xODBcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGVmdCBncm91cC1ob3Zlcjp1bmRlcmxpbmVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1hcnJvdy1kb3duLXMtbGluZSB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1sZyB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgaG92ZXI6bm8tdW5kZXJsaW5lXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgW0BleHBhbmRDb2xsYXBzZV09XCJpc09wZW4gPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxuICAgICAgICBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBwdC0wIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkl0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaWQhOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgLy8gVGhpcyB3aWxsIGJlIHNldCBieSB0aGUgcGFyZW50IEFjY29yZGlvbiBjb21wb25lbnRcbiAgb25Ub2dnbGU/OiAoaWQ6IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZDtcblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMub25Ub2dnbGUpIHtcbiAgICAgIHRoaXMub25Ub2dnbGUodGhpcy5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbiA9IGNuO1xufVxuIl19
@@ -8,31 +8,36 @@ export class AccordionComponent {
8
8
  class = '';
9
9
  items;
10
10
  ngAfterContentInit() {
11
+ // 1. Assign IDs and Listeners on load
12
+ this.initItems();
13
+ // 2. Re-init if items change dynamically (optional but good for robustness)
14
+ this.items.changes.subscribe(() => this.initItems());
15
+ }
16
+ initItems() {
11
17
  this.items.forEach((item, index) => {
12
- // Assign unique ID if none provided
18
+ // Auto-assign ID if missing
13
19
  if (item.id === undefined)
14
- item.id = index;
15
- // Hook into the item's toggle event
20
+ item.id = `accordion-item-${index}`;
21
+ // Set up the toggle bridge
16
22
  item.onToggle = (id) => this.handleToggle(id);
17
23
  });
18
24
  }
19
25
  handleToggle(selectedId) {
20
26
  this.items.forEach(item => {
21
27
  if (item.id === selectedId) {
28
+ // Toggle the clicked item
22
29
  item.isOpen = !item.isOpen;
23
30
  }
24
- else {
25
- // If type is 'single', close all other items
26
- if (this.type === 'single') {
27
- item.isOpen = false;
28
- }
31
+ else if (this.type === 'single') {
32
+ // Close others if in single mode
33
+ item.isOpen = false;
29
34
  }
30
35
  });
31
36
  }
32
37
  cn = cn;
33
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
39
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AccordionComponent, isStandalone: true, selector: "tolle-accordion", inputs: { type: "type", class: "class" }, queries: [{ propertyName: "items", predicate: AccordionItemComponent }], ngImport: i0, template: `
35
- <div [class]="cn('w-full border-t border-border', class)">
40
+ <div [class]="cn('w-full', class)">
36
41
  <ng-content></ng-content>
37
42
  </div>
38
43
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
@@ -42,9 +47,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
42
47
  args: [{
43
48
  selector: 'tolle-accordion',
44
49
  standalone: true,
45
- imports: [CommonModule],
50
+ imports: [CommonModule], // No AccordionItemComponent import needed here if projected via ng-content
46
51
  template: `
47
- <div [class]="cn('w-full border-t border-border', class)">
52
+ <div [class]="cn('w-full', class)">
48
53
  <ng-content></ng-content>
49
54
  </div>
50
55
  `
@@ -57,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
57
62
  type: ContentChildren,
58
63
  args: [AccordionItemComponent]
59
64
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVloQyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksR0FBMEIsUUFBUSxDQUFDO0lBQ3ZDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFYSxLQUFLLENBQXFDO0lBRW5GLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxvQ0FBb0M7WUFDcEMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFFM0Msb0NBQW9DO1lBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQTJCO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDZDQUE2QztnQkFDN0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0E3QmhCLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJJQUlaLHNCQUFzQiw2QkFWN0I7Ozs7R0FJVCwyREFMUyxZQUFZOzs0RkFPWCxrQkFBa0I7a0JBVjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7O0dBSVQ7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFbUMsS0FBSztzQkFBN0MsZUFBZTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQWZ0ZXJDb250ZW50SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1hY2NvcmRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbigndy1mdWxsIGJvcmRlci10IGJvcmRlci1ib3JkZXInLCBjbGFzcylcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdHlwZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvbkl0ZW1Db21wb25lbnQpIGl0ZW1zITogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAvLyBBc3NpZ24gdW5pcXVlIElEIGlmIG5vbmUgcHJvdmlkZWRcbiAgICAgIGlmIChpdGVtLmlkID09PSB1bmRlZmluZWQpIGl0ZW0uaWQgPSBpbmRleDtcblxuICAgICAgLy8gSG9vayBpbnRvIHRoZSBpdGVtJ3MgdG9nZ2xlIGV2ZW50XG4gICAgICBpdGVtLm9uVG9nZ2xlID0gKGlkKSA9PiB0aGlzLmhhbmRsZVRvZ2dsZShpZCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRvZ2dsZShzZWxlY3RlZElkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS5pZCA9PT0gc2VsZWN0ZWRJZCkge1xuICAgICAgICBpdGVtLmlzT3BlbiA9ICFpdGVtLmlzT3BlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHR5cGUgaXMgJ3NpbmdsZScsIGNsb3NlIGFsbCBvdGhlciBpdGVtc1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbiA9IGNuO1xufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVloQyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksR0FBMEIsUUFBUSxDQUFDO0lBQ3ZDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFYSxLQUFLLENBQXFDO0lBRW5GLGtCQUFrQjtRQUNoQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyw0QkFBNEI7WUFDNUIsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsS0FBSyxFQUFFLENBQUM7WUFFL0QsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQTJCO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsMEJBQTBCO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM3QixDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsaUNBQWlDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBcENoQixrQkFBa0I7NEZBQWxCLGtCQUFrQiwySUFJWixzQkFBc0IsNkJBVjdCOzs7O0dBSVQsMkRBTFMsWUFBWTs7NEZBT1gsa0JBQWtCO2tCQVY5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSwyRUFBMkU7b0JBQ3BHLFFBQVEsRUFBRTs7OztHQUlUO2lCQUNGOzhCQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRW1DLEtBQUs7c0JBQTdDLGVBQWU7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtYWNjb3JkaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sIC8vIE5vIEFjY29yZGlvbkl0ZW1Db21wb25lbnQgaW1wb3J0IG5lZWRlZCBoZXJlIGlmIHByb2plY3RlZCB2aWEgbmctY29udGVudFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCd3LWZ1bGwnLCBjbGFzcylcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdHlwZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvbkl0ZW1Db21wb25lbnQpIGl0ZW1zITogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyAxLiBBc3NpZ24gSURzIGFuZCBMaXN0ZW5lcnMgb24gbG9hZFxuICAgIHRoaXMuaW5pdEl0ZW1zKCk7XG5cbiAgICAvLyAyLiBSZS1pbml0IGlmIGl0ZW1zIGNoYW5nZSBkeW5hbWljYWxseSAob3B0aW9uYWwgYnV0IGdvb2QgZm9yIHJvYnVzdG5lc3MpXG4gICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRJdGVtcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEl0ZW1zKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIC8vIEF1dG8tYXNzaWduIElEIGlmIG1pc3NpbmdcbiAgICAgIGlmIChpdGVtLmlkID09PSB1bmRlZmluZWQpIGl0ZW0uaWQgPSBgYWNjb3JkaW9uLWl0ZW0tJHtpbmRleH1gO1xuXG4gICAgICAvLyBTZXQgdXAgdGhlIHRvZ2dsZSBicmlkZ2VcbiAgICAgIGl0ZW0ub25Ub2dnbGUgPSAoaWQpID0+IHRoaXMuaGFuZGxlVG9nZ2xlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG9nZ2xlKHNlbGVjdGVkSWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmlkID09PSBzZWxlY3RlZElkKSB7XG4gICAgICAgIC8vIFRvZ2dsZSB0aGUgY2xpY2tlZCBpdGVtXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gIWl0ZW0uaXNPcGVuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIC8vIENsb3NlIG90aGVycyBpZiBpbiBzaW5nbGUgbW9kZVxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNuID0gY247XG59XG4iXX0=
@@ -1,16 +1,18 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { trigger, transition, style, animate } from '@angular/animations';
3
4
  import { cva } from 'class-variance-authority';
4
5
  import { cn } from './utils/cn';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
7
- const alertVariants = cva("relative w-full rounded-lg border p-4 transition-all duration-300 [&>i~div]:pl-7 [&>i]:absolute [&>i]:left-4 [&>i]:top-4 [&>i]:text-foreground", {
8
+ const alertVariants = cva("relative w-full rounded-lg border p-4 [&>i+div]:translate-y-[-3px] [&>i]:absolute [&>i]:left-4 [&>i]:top-4 [&>i]:text-foreground [&>i~div]:pl-7", {
8
9
  variants: {
9
10
  variant: {
10
11
  default: "bg-background text-foreground",
11
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>i]:text-destructive",
12
- success: "border-emerald-500/50 text-emerald-700 dark:text-emerald-400 [&>i]:text-emerald-600",
13
- warning: "border-amber-500/50 text-amber-700 dark:text-amber-400 [&>i]:text-amber-600",
12
+ destructive: "border-red-500/50 text-red-500 dark:border-red-500 [&>i]:text-red-500",
13
+ success: "border-emerald-500/50 text-emerald-700 dark:border-emerald-500 [&>i]:text-emerald-600 dark:text-emerald-400",
14
+ warning: "border-amber-500/50 text-amber-700 dark:border-amber-500 [&>i]:text-amber-600 dark:text-amber-400",
15
+ info: "border-blue-500/50 text-blue-700 dark:border-blue-500 [&>i]:text-blue-600 dark:text-blue-400",
14
16
  },
15
17
  },
16
18
  defaultVariants: {
@@ -24,24 +26,18 @@ export class AlertComponent {
24
26
  dismissible = false;
25
27
  onClose = new EventEmitter();
26
28
  dismissed = false;
27
- isDismissing = false;
28
29
  alertVariants = alertVariants;
29
30
  cn = cn;
30
31
  dismiss() {
31
- this.isDismissing = true;
32
- // Wait for animation to finish before removing from DOM
33
- setTimeout(() => {
34
- this.dismissed = true;
35
- this.onClose.emit();
36
- }, 300);
32
+ this.dismissed = true;
33
+ this.onClose.emit();
37
34
  }
38
35
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
36
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertComponent, isStandalone: true, selector: "tolle-alert", inputs: { variant: "variant", title: "title", class: "class", dismissible: "dismissible" }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
40
37
  <div
41
38
  *ngIf="!dismissed"
39
+ @fade
42
40
  [class]="cn(alertVariants({ variant }), class)"
43
- [class.opacity-0]="isDismissing"
44
- [class.scale-95]="isDismissing"
45
41
  role="alert"
46
42
  >
47
43
  <ng-content select="[icon]"></ng-content>
@@ -49,22 +45,30 @@ export class AlertComponent {
49
45
  <button
50
46
  *ngIf="dismissible"
51
47
  (click)="dismiss()"
52
- class="absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 group-hover:opacity-100"
53
- [class.opacity-100]="dismissible"
48
+ class="absolute right-2 top-2 rounded-md p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
49
+ type="button"
54
50
  >
55
51
  <i class="ri-close-line text-lg"></i>
52
+ <span class="sr-only">Close</span>
56
53
  </button>
57
54
 
58
55
  <div>
59
56
  <h5 *ngIf="title" class="mb-1 font-medium leading-none tracking-tight">
60
57
  {{ title }}
61
58
  </h5>
62
- <div class="text-sm [&_p]:leading-relaxed">
59
+ <div class="text-sm [&_p]:leading-relaxed opacity-90">
63
60
  <ng-content></ng-content>
64
61
  </div>
65
62
  </div>
66
63
  </div>
67
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
64
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
65
+ trigger('fade', [
66
+ transition(':leave', [
67
+ style({ opacity: 1, transform: 'scale(1)' }),
68
+ animate('300ms ease-in-out', style({ opacity: 0, transform: 'scale(0.95)', height: 0, margin: 0, padding: 0 }))
69
+ ])
70
+ ])
71
+ ] });
68
72
  }
69
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, decorators: [{
70
74
  type: Component,
@@ -72,12 +76,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
72
76
  selector: 'tolle-alert',
73
77
  standalone: true,
74
78
  imports: [CommonModule],
79
+ animations: [
80
+ trigger('fade', [
81
+ transition(':leave', [
82
+ style({ opacity: 1, transform: 'scale(1)' }),
83
+ animate('300ms ease-in-out', style({ opacity: 0, transform: 'scale(0.95)', height: 0, margin: 0, padding: 0 }))
84
+ ])
85
+ ])
86
+ ],
75
87
  template: `
76
88
  <div
77
89
  *ngIf="!dismissed"
90
+ @fade
78
91
  [class]="cn(alertVariants({ variant }), class)"
79
- [class.opacity-0]="isDismissing"
80
- [class.scale-95]="isDismissing"
81
92
  role="alert"
82
93
  >
83
94
  <ng-content select="[icon]"></ng-content>
@@ -85,22 +96,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
85
96
  <button
86
97
  *ngIf="dismissible"
87
98
  (click)="dismiss()"
88
- class="absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 group-hover:opacity-100"
89
- [class.opacity-100]="dismissible"
99
+ class="absolute right-2 top-2 rounded-md p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
100
+ type="button"
90
101
  >
91
102
  <i class="ri-close-line text-lg"></i>
103
+ <span class="sr-only">Close</span>
92
104
  </button>
93
105
 
94
106
  <div>
95
107
  <h5 *ngIf="title" class="mb-1 font-medium leading-none tracking-tight">
96
108
  {{ title }}
97
109
  </h5>
98
- <div class="text-sm [&_p]:leading-relaxed">
110
+ <div class="text-sm [&_p]:leading-relaxed opacity-90">
99
111
  <ng-content></ng-content>
100
112
  </div>
101
113
  </div>
102
114
  </div>
103
- `,
115
+ `
104
116
  }]
105
117
  }], propDecorators: { variant: [{
106
118
  type: Input
@@ -113,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
113
125
  }], onClose: [{
114
126
  type: Output
115
127
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFFaEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUN2QixnSkFBZ0osRUFDaEo7SUFDRSxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsK0JBQStCO1lBQ3hDLFdBQVcsRUFBRSx1RkFBdUY7WUFDcEcsT0FBTyxFQUFFLHFGQUFxRjtZQUM5RixPQUFPLEVBQUUsNkVBQTZFO1NBQ3ZGO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQztBQXNDRixNQUFNLE9BQU8sY0FBYztJQUNoQixPQUFPLEdBQTZCLFNBQVMsQ0FBQztJQUM5QyxLQUFLLENBQVU7SUFDZixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFN0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRVgsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUM5QixFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRWxCLE9BQU87UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6Qix3REFBd0Q7UUFDeEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzt3R0FyQlUsY0FBYzs0RkFBZCxjQUFjLG9NQTlCZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVCwyREE3QlMsWUFBWTs7NEZBK0JYLGNBQWM7a0JBbEMxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7aUJBQ0Y7OEJBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbmNvbnN0IGFsZXJ0VmFyaWFudHMgPSBjdmEoXG4gIFwicmVsYXRpdmUgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIHAtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgWyY+aX5kaXZdOnBsLTcgWyY+aV06YWJzb2x1dGUgWyY+aV06bGVmdC00IFsmPmldOnRvcC00IFsmPmldOnRleHQtZm9yZWdyb3VuZFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJiZy1iYWNrZ3JvdW5kIHRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJib3JkZXItZGVzdHJ1Y3RpdmUvNTAgdGV4dC1kZXN0cnVjdGl2ZSBkYXJrOmJvcmRlci1kZXN0cnVjdGl2ZSBbJj5pXTp0ZXh0LWRlc3RydWN0aXZlXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiYm9yZGVyLWVtZXJhbGQtNTAwLzUwIHRleHQtZW1lcmFsZC03MDAgZGFyazp0ZXh0LWVtZXJhbGQtNDAwIFsmPmldOnRleHQtZW1lcmFsZC02MDBcIixcbiAgICAgICAgd2FybmluZzogXCJib3JkZXItYW1iZXItNTAwLzUwIHRleHQtYW1iZXItNzAwIGRhcms6dGV4dC1hbWJlci00MDAgWyY+aV06dGV4dC1hbWJlci02MDBcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbnR5cGUgQWxlcnRWYXJpYW50cyA9IFZhcmlhbnRQcm9wczx0eXBlb2YgYWxlcnRWYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZGlzbWlzc2VkXCJcbiAgICAgIFtjbGFzc109XCJjbihhbGVydFZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3MpXCJcbiAgICAgIFtjbGFzcy5vcGFjaXR5LTBdPVwiaXNEaXNtaXNzaW5nXCJcbiAgICAgIFtjbGFzcy5zY2FsZS05NV09XCJpc0Rpc21pc3NpbmdcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWNvbl1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJkaXNtaXNzaWJsZVwiXG4gICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTIgdG9wLTIgcm91bmRlZC1tZCBwLTEgdGV4dC1mb3JlZ3JvdW5kLzUwIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHkgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGZvY3VzOm9wYWNpdHktMTAwIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwXCJcbiAgICAgICAgW2NsYXNzLm9wYWNpdHktMTAwXT1cImRpc21pc3NpYmxlXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdj5cbiAgICAgICAgPGg1ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cIm1iLTEgZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgPC9oNT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gWyZfcF06bGVhZGluZy1yZWxheGVkXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEFsZXJ0VmFyaWFudHNbJ3ZhcmlhbnQnXSA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzbWlzc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBkaXNtaXNzZWQgPSBmYWxzZTtcbiAgaXNEaXNtaXNzaW5nID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFsZXJ0VmFyaWFudHMgPSBhbGVydFZhcmlhbnRzO1xuICBwcm90ZWN0ZWQgY24gPSBjbjtcblxuICBkaXNtaXNzKCkge1xuICAgIHRoaXMuaXNEaXNtaXNzaW5nID0gdHJ1ZTtcbiAgICAvLyBXYWl0IGZvciBhbmltYXRpb24gdG8gZmluaXNoIGJlZm9yZSByZW1vdmluZyBmcm9tIERPTVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kaXNtaXNzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICB9LCAzMDApO1xuICB9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRWhDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FDdkIsaUpBQWlKLEVBQ2pKO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxXQUFXLEVBQ1QsdUVBQXVFO1lBQ3pFLE9BQU8sRUFDTCw2R0FBNkc7WUFDL0csT0FBTyxFQUNMLG1HQUFtRztZQUNyRyxJQUFJLEVBQ0YsOEZBQThGO1NBQ2pHO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQztBQThDRixNQUFNLE9BQU8sY0FBYztJQUNoQixPQUFPLEdBQTZCLFNBQVMsQ0FBQztJQUM5QyxLQUFLLENBQVU7SUFDZixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFN0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNSLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDOUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUVsQixPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQWZVLGNBQWM7NEZBQWQsY0FBYyxvTUE5QmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQsMkRBckNTLFlBQVkscUhBQ1Y7WUFDVixPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDaEgsQ0FBQzthQUNILENBQUM7U0FDSDs7NEZBK0JVLGNBQWM7a0JBMUMxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixVQUFVLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sRUFBRTs0QkFDZCxVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztnQ0FDNUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ2hILENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7aUJBQ0Y7OEJBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5jb25zdCBhbGVydFZhcmlhbnRzID0gY3ZhKFxuICBcInJlbGF0aXZlIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBwLTQgWyY+aStkaXZdOnRyYW5zbGF0ZS15LVstM3B4XSBbJj5pXTphYnNvbHV0ZSBbJj5pXTpsZWZ0LTQgWyY+aV06dG9wLTQgWyY+aV06dGV4dC1mb3JlZ3JvdW5kIFsmPml+ZGl2XTpwbC03XCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwiYm9yZGVyLXJlZC01MDAvNTAgdGV4dC1yZWQtNTAwIGRhcms6Ym9yZGVyLXJlZC01MDAgWyY+aV06dGV4dC1yZWQtNTAwXCIsXG4gICAgICAgIHN1Y2Nlc3M6XG4gICAgICAgICAgXCJib3JkZXItZW1lcmFsZC01MDAvNTAgdGV4dC1lbWVyYWxkLTcwMCBkYXJrOmJvcmRlci1lbWVyYWxkLTUwMCBbJj5pXTp0ZXh0LWVtZXJhbGQtNjAwIGRhcms6dGV4dC1lbWVyYWxkLTQwMFwiLFxuICAgICAgICB3YXJuaW5nOlxuICAgICAgICAgIFwiYm9yZGVyLWFtYmVyLTUwMC81MCB0ZXh0LWFtYmVyLTcwMCBkYXJrOmJvcmRlci1hbWJlci01MDAgWyY+aV06dGV4dC1hbWJlci02MDAgZGFyazp0ZXh0LWFtYmVyLTQwMFwiLFxuICAgICAgICBpbmZvOlxuICAgICAgICAgIFwiYm9yZGVyLWJsdWUtNTAwLzUwIHRleHQtYmx1ZS03MDAgZGFyazpib3JkZXItYmx1ZS01MDAgWyY+aV06dGV4dC1ibHVlLTYwMCBkYXJrOnRleHQtYmx1ZS00MDBcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbnR5cGUgQWxlcnRWYXJpYW50cyA9IFZhcmlhbnRQcm9wczx0eXBlb2YgYWxlcnRWYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJywgaGVpZ2h0OiAwLCBtYXJnaW46IDAsIHBhZGRpbmc6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZGlzbWlzc2VkXCJcbiAgICAgIEBmYWRlXG4gICAgICBbY2xhc3NdPVwiY24oYWxlcnRWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzKVwiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImRpc21pc3NpYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiB0b3AtMiByb3VuZGVkLW1kIHAtMSBvcGFjaXR5LTcwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNSAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJtYi0xIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIFsmX3BdOmxlYWRpbmctcmVsYXhlZCBvcGFjaXR5LTkwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFyaWFudDogQWxlcnRWYXJpYW50c1sndmFyaWFudCddID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGRpc21pc3NlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYWxlcnRWYXJpYW50cyA9IGFsZXJ0VmFyaWFudHM7XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gIGRpc21pc3MoKSB7XG4gICAgdGhpcy5kaXNtaXNzZWQgPSB0cnVlO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==