ai-text-summary-ng 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +118 -0
  2. package/ai-text-summary-ng-1.0.0.tgz +0 -0
  3. package/app/app.component.d.ts +38 -0
  4. package/app/components/fmode-avatar/fmode-avatar.component.d.ts +16 -0
  5. package/app/components/fmode-badge/fmode-badge.component.d.ts +8 -0
  6. package/app/components/fmode-button/fmode-button.component.d.ts +10 -0
  7. package/app/components/fmode-card/fmode-card.component.d.ts +6 -0
  8. package/app/components/fmode-digital-human/fmode-digital-human.component.d.ts +10 -0
  9. package/app/components/fmode-divider/fmode-divider.component.d.ts +7 -0
  10. package/app/components/fmode-header/fmode-header.component.d.ts +7 -0
  11. package/app/components/fmode-list/fmode-list.component.d.ts +9 -0
  12. package/app/components/fmode-loading/fmode-loading.component.d.ts +6 -0
  13. package/app/components/fmode-select/fmode-select.component.d.ts +17 -0
  14. package/app/components/fmode-tag/fmode-tag.component.d.ts +9 -0
  15. package/app/components/fmode-textarea/fmode-textarea.component.d.ts +15 -0
  16. package/esm2022/ai-text-summary-ng.mjs +5 -0
  17. package/esm2022/app/app.component.mjs +533 -0
  18. package/esm2022/app/components/fmode-avatar/fmode-avatar.component.mjs +83 -0
  19. package/esm2022/app/components/fmode-badge/fmode-badge.component.mjs +49 -0
  20. package/esm2022/app/components/fmode-button/fmode-button.component.mjs +52 -0
  21. package/esm2022/app/components/fmode-card/fmode-card.component.mjs +34 -0
  22. package/esm2022/app/components/fmode-digital-human/fmode-digital-human.component.mjs +119 -0
  23. package/esm2022/app/components/fmode-divider/fmode-divider.component.mjs +35 -0
  24. package/esm2022/app/components/fmode-header/fmode-header.component.mjs +33 -0
  25. package/esm2022/app/components/fmode-list/fmode-list.component.mjs +50 -0
  26. package/esm2022/app/components/fmode-loading/fmode-loading.component.mjs +25 -0
  27. package/esm2022/app/components/fmode-select/fmode-select.component.mjs +62 -0
  28. package/esm2022/app/components/fmode-tag/fmode-tag.component.mjs +54 -0
  29. package/esm2022/app/components/fmode-textarea/fmode-textarea.component.mjs +75 -0
  30. package/esm2022/public-api.mjs +15 -0
  31. package/fesm2022/ai-text-summary-ng.mjs +1155 -0
  32. package/fesm2022/ai-text-summary-ng.mjs.map +1 -0
  33. package/index.d.ts +5 -0
  34. package/package.json +42 -0
  35. package/public-api.d.ts +13 -0
@@ -0,0 +1,83 @@
1
+ import { Component, Input, Output, EventEmitter } 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 FmodeAvatarComponent {
6
+ name = '';
7
+ imageUrl = '';
8
+ size = 'medium';
9
+ backgroundColor = '#667eea';
10
+ textColor = '#ffffff';
11
+ alt = 'Avatar';
12
+ rounded = false;
13
+ clickable = false;
14
+ onClick = new EventEmitter();
15
+ get initials() {
16
+ if (!this.name)
17
+ return '';
18
+ const words = this.name.trim().split(/\s+/);
19
+ if (words.length >= 2) {
20
+ return (words[0][0] + words[words.length - 1][0]).toUpperCase();
21
+ }
22
+ return this.name.substring(0, 2).toUpperCase();
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeAvatarComponent, isStandalone: true, selector: "fmode-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", backgroundColor: "backgroundColor", textColor: "textColor", alt: "alt", rounded: "rounded", clickable: "clickable" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
26
+ <div
27
+ class="fmode-avatar"
28
+ [class.small]="size === 'small'"
29
+ [class.medium]="size === 'medium'"
30
+ [class.large]="size === 'large'"
31
+ [class.xlarge]="size === 'xlarge'"
32
+ [class.rounded]="rounded"
33
+ [class.clickable]="clickable"
34
+ [style.background-image]="imageUrl ? 'url(' + imageUrl + ')' : ''"
35
+ [style.background-color]="!imageUrl ? backgroundColor : ''"
36
+ [style.color]="textColor"
37
+ (click)="onClick.emit()"
38
+ >
39
+ <span *ngIf="!imageUrl" class="avatar-text">{{ initials }}</span>
40
+ <img *ngIf="imageUrl" [src]="imageUrl" [alt]="alt" class="avatar-image">
41
+ </div>
42
+ `, isInline: true, styles: [".fmode-avatar{display:flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;font-weight:600;font-size:1.2rem;cursor:default;transition:transform .3s,box-shadow .3s;background-size:cover;background-position:center;background-repeat:no-repeat;box-shadow:0 2px 8px #0000001a}.fmode-avatar.small{width:32px;height:32px;font-size:.8rem}.fmode-avatar.medium{width:48px;height:48px;font-size:1rem}.fmode-avatar.large{width:64px;height:64px;font-size:1.2rem}.fmode-avatar.xlarge{width:96px;height:96px;font-size:1.5rem}.fmode-avatar.rounded{border-radius:12px}.fmode-avatar.clickable{cursor:pointer}.fmode-avatar.clickable:hover{transform:scale(1.05);box-shadow:0 4px 12px #00000026}.avatar-text{text-transform:uppercase;letter-spacing:.5px}.avatar-image{width:100%;height:100%;object-fit:cover;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeAvatarComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'fmode-avatar', standalone: true, imports: [CommonModule], template: `
47
+ <div
48
+ class="fmode-avatar"
49
+ [class.small]="size === 'small'"
50
+ [class.medium]="size === 'medium'"
51
+ [class.large]="size === 'large'"
52
+ [class.xlarge]="size === 'xlarge'"
53
+ [class.rounded]="rounded"
54
+ [class.clickable]="clickable"
55
+ [style.background-image]="imageUrl ? 'url(' + imageUrl + ')' : ''"
56
+ [style.background-color]="!imageUrl ? backgroundColor : ''"
57
+ [style.color]="textColor"
58
+ (click)="onClick.emit()"
59
+ >
60
+ <span *ngIf="!imageUrl" class="avatar-text">{{ initials }}</span>
61
+ <img *ngIf="imageUrl" [src]="imageUrl" [alt]="alt" class="avatar-image">
62
+ </div>
63
+ `, styles: [".fmode-avatar{display:flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;font-weight:600;font-size:1.2rem;cursor:default;transition:transform .3s,box-shadow .3s;background-size:cover;background-position:center;background-repeat:no-repeat;box-shadow:0 2px 8px #0000001a}.fmode-avatar.small{width:32px;height:32px;font-size:.8rem}.fmode-avatar.medium{width:48px;height:48px;font-size:1rem}.fmode-avatar.large{width:64px;height:64px;font-size:1.2rem}.fmode-avatar.xlarge{width:96px;height:96px;font-size:1.5rem}.fmode-avatar.rounded{border-radius:12px}.fmode-avatar.clickable{cursor:pointer}.fmode-avatar.clickable:hover{transform:scale(1.05);box-shadow:0 4px 12px #00000026}.avatar-text{text-transform:uppercase;letter-spacing:.5px}.avatar-image{width:100%;height:100%;object-fit:cover;display:block}\n"] }]
64
+ }], propDecorators: { name: [{
65
+ type: Input
66
+ }], imageUrl: [{
67
+ type: Input
68
+ }], size: [{
69
+ type: Input
70
+ }], backgroundColor: [{
71
+ type: Input
72
+ }], textColor: [{
73
+ type: Input
74
+ }], alt: [{
75
+ type: Input
76
+ }], rounded: [{
77
+ type: Input
78
+ }], clickable: [{
79
+ type: Input
80
+ }], onClick: [{
81
+ type: Output
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mbW9kZS1hdmF0YXIvZm1vZGUtYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBMkYvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDVixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxHQUE0QyxRQUFRLENBQUM7SUFDekQsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUM1QixTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ3RCLEdBQUcsR0FBRyxRQUFRLENBQUM7SUFDZixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDakIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFN0MsSUFBSSxRQUFRO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQzt3R0FsQlUsb0JBQW9COzRGQUFwQixvQkFBb0IsMlJBckZyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsdTRCQWxCUyxZQUFZOzs0RkFzRlgsb0JBQW9CO2tCQXpGaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzhCQXFFUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ztb2RlLWF2YXRhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cImZtb2RlLWF2YXRhclwiXG4gICAgICBbY2xhc3Muc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3MubWVkaXVtXT1cInNpemUgPT09ICdtZWRpdW0nXCJcbiAgICAgIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICAgIFtjbGFzcy54bGFyZ2VdPVwic2l6ZSA9PT0gJ3hsYXJnZSdcIlxuICAgICAgW2NsYXNzLnJvdW5kZWRdPVwicm91bmRlZFwiXG4gICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImNsaWNrYWJsZVwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJpbWFnZVVybCA/ICd1cmwoJyArIGltYWdlVXJsICsgJyknIDogJydcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiIWltYWdlVXJsID8gYmFja2dyb3VuZENvbG9yIDogJydcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInRleHRDb2xvclwiXG4gICAgICAoY2xpY2spPVwib25DbGljay5lbWl0KClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWltYWdlVXJsXCIgY2xhc3M9XCJhdmF0YXItdGV4dFwiPnt7IGluaXRpYWxzIH19PC9zcGFuPlxuICAgICAgPGltZyAqbmdJZj1cImltYWdlVXJsXCIgW3NyY109XCJpbWFnZVVybFwiIFthbHRdPVwiYWx0XCIgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5mbW9kZS1hdmF0YXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgYm94LXNoYWRvdyAwLjNzO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cblxuICAgIC5mbW9kZS1hdmF0YXIuc21hbGwge1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYXZhdGFyLm1lZGl1bSB7XG4gICAgICB3aWR0aDogNDhweDtcbiAgICAgIGhlaWdodDogNDhweDtcbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYXZhdGFyLmxhcmdlIHtcbiAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgaGVpZ2h0OiA2NHB4O1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgfVxuXG4gICAgLmZtb2RlLWF2YXRhci54bGFyZ2Uge1xuICAgICAgd2lkdGg6IDk2cHg7XG4gICAgICBoZWlnaHQ6IDk2cHg7XG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYXZhdGFyLnJvdW5kZWQge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICB9XG5cbiAgICAuZm1vZGUtYXZhdGFyLmNsaWNrYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLmZtb2RlLWF2YXRhci5jbGlja2FibGU6aG92ZXIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICB9XG5cbiAgICAuYXZhdGFyLXRleHQge1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICB9XG5cbiAgICAuYXZhdGFyLWltYWdlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIEZtb2RlQXZhdGFyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBpbWFnZVVybCA9ICcnO1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yID0gJyM2NjdlZWEnO1xuICBASW5wdXQoKSB0ZXh0Q29sb3IgPSAnI2ZmZmZmZic7XG4gIEBJbnB1dCgpIGFsdCA9ICdBdmF0YXInO1xuICBASW5wdXQoKSByb3VuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrYWJsZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgaW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMubmFtZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHdvcmRzID0gdGhpcy5uYW1lLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICh3b3Jkcy5sZW5ndGggPj0gMikge1xuICAgICAgcmV0dXJuICh3b3Jkc1swXVswXSArIHdvcmRzW3dvcmRzLmxlbmd0aCAtIDFdWzBdKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYW1lLnN1YnN0cmluZygwLCAyKS50b1VwcGVyQ2FzZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,49 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class FmodeBadgeComponent {
5
+ type = 'primary';
6
+ pill = false;
7
+ outline = false;
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeBadgeComponent, isStandalone: true, selector: "fmode-badge", inputs: { type: "type", pill: "pill", outline: "outline" }, ngImport: i0, template: `
10
+ <span
11
+ class="fmode-badge"
12
+ [class.primary]="type === 'primary'"
13
+ [class.secondary]="type === 'secondary'"
14
+ [class.success]="type === 'success'"
15
+ [class.warning]="type === 'warning'"
16
+ [class.danger]="type === 'danger'"
17
+ [class.info]="type === 'info'"
18
+ [class.pill]="pill"
19
+ [class.outline]="outline"
20
+ >
21
+ <ng-content></ng-content>
22
+ </span>
23
+ `, isInline: true, styles: [".fmode-badge{display:inline-block;padding:.25rem .75rem;font-size:.875rem;font-weight:600;border-radius:4px;letter-spacing:.5px;transition:all .3s}.fmode-badge.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.fmode-badge.secondary{background:#6c757d;color:#fff}.fmode-badge.success{background:#28a745;color:#fff}.fmode-badge.warning{background:#ffc107;color:#212529}.fmode-badge.danger{background:#dc3545;color:#fff}.fmode-badge.info{background:#17a2b8;color:#fff}.fmode-badge.outline{background:transparent;border:2px solid currentColor}.fmode-badge.outline.primary{color:#667eea;border-color:#667eea}.fmode-badge.outline.secondary{color:#6c757d;border-color:#6c757d}.fmode-badge.outline.success{color:#28a745;border-color:#28a745}.fmode-badge.outline.warning{color:#ffc107;border-color:#ffc107}.fmode-badge.outline.danger{color:#dc3545;border-color:#dc3545}.fmode-badge.outline.info{color:#17a2b8;border-color:#17a2b8}.fmode-badge.pill{border-radius:50px;padding:.375rem 1rem}.fmode-badge:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeBadgeComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'fmode-badge', standalone: true, imports: [CommonModule], template: `
28
+ <span
29
+ class="fmode-badge"
30
+ [class.primary]="type === 'primary'"
31
+ [class.secondary]="type === 'secondary'"
32
+ [class.success]="type === 'success'"
33
+ [class.warning]="type === 'warning'"
34
+ [class.danger]="type === 'danger'"
35
+ [class.info]="type === 'info'"
36
+ [class.pill]="pill"
37
+ [class.outline]="outline"
38
+ >
39
+ <ng-content></ng-content>
40
+ </span>
41
+ `, styles: [".fmode-badge{display:inline-block;padding:.25rem .75rem;font-size:.875rem;font-weight:600;border-radius:4px;letter-spacing:.5px;transition:all .3s}.fmode-badge.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.fmode-badge.secondary{background:#6c757d;color:#fff}.fmode-badge.success{background:#28a745;color:#fff}.fmode-badge.warning{background:#ffc107;color:#212529}.fmode-badge.danger{background:#dc3545;color:#fff}.fmode-badge.info{background:#17a2b8;color:#fff}.fmode-badge.outline{background:transparent;border:2px solid currentColor}.fmode-badge.outline.primary{color:#667eea;border-color:#667eea}.fmode-badge.outline.secondary{color:#6c757d;border-color:#6c757d}.fmode-badge.outline.success{color:#28a745;border-color:#28a745}.fmode-badge.outline.warning{color:#ffc107;border-color:#ffc107}.fmode-badge.outline.danger{color:#dc3545;border-color:#dc3545}.fmode-badge.outline.info{color:#17a2b8;border-color:#17a2b8}.fmode-badge.pill{border-radius:50px;padding:.375rem 1rem}.fmode-badge:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}\n"] }]
42
+ }], propDecorators: { type: [{
43
+ type: Input
44
+ }], pill: [{
45
+ type: Input
46
+ }], outline: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Ztb2RlLWJhZGdlL2Ztb2RlLWJhZGdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBNEcvQyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLElBQUksR0FBd0UsU0FBUyxDQUFDO0lBQ3RGLElBQUksR0FBRyxLQUFLLENBQUM7SUFDYixPQUFPLEdBQUcsS0FBSyxDQUFDO3dHQUhkLG1CQUFtQjs0RkFBbkIsbUJBQW1CLG1JQXRHcEI7Ozs7Ozs7Ozs7Ozs7O0dBY1QsZ29DQWZTLFlBQVk7OzRGQXVHWCxtQkFBbUI7a0JBMUcvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7R0FjVDs4QkF5RlEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbW9kZS1iYWRnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImZtb2RlLWJhZGdlXCJcbiAgICAgIFtjbGFzcy5wcmltYXJ5XT1cInR5cGUgPT09ICdwcmltYXJ5J1wiXG4gICAgICBbY2xhc3Muc2Vjb25kYXJ5XT1cInR5cGUgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgIFtjbGFzcy5zdWNjZXNzXT1cInR5cGUgPT09ICdzdWNjZXNzJ1wiXG4gICAgICBbY2xhc3Mud2FybmluZ109XCJ0eXBlID09PSAnd2FybmluZydcIlxuICAgICAgW2NsYXNzLmRhbmdlcl09XCJ0eXBlID09PSAnZGFuZ2VyJ1wiXG4gICAgICBbY2xhc3MuaW5mb109XCJ0eXBlID09PSAnaW5mbydcIlxuICAgICAgW2NsYXNzLnBpbGxdPVwicGlsbFwiXG4gICAgICBbY2xhc3Mub3V0bGluZV09XCJvdXRsaW5lXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9zcGFuPlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmZtb2RlLWJhZGdlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLnByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYmFkZ2Uuc2Vjb25kYXJ5IHtcbiAgICAgIGJhY2tncm91bmQ6ICM2Yzc1N2Q7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLnN1Y2Nlc3Mge1xuICAgICAgYmFja2dyb3VuZDogIzI4YTc0NTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYmFkZ2Uud2FybmluZyB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZjMTA3O1xuICAgICAgY29sb3I6ICMyMTI1Mjk7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLmRhbmdlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZGMzNTQ1O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIC5mbW9kZS1iYWRnZS5pbmZvIHtcbiAgICAgIGJhY2tncm91bmQ6ICMxN2EyYjg7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLm91dGxpbmUge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLm91dGxpbmUucHJpbWFyeSB7XG4gICAgICBjb2xvcjogIzY2N2VlYTtcbiAgICAgIGJvcmRlci1jb2xvcjogIzY2N2VlYTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYmFkZ2Uub3V0bGluZS5zZWNvbmRhcnkge1xuICAgICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJhZGdlLm91dGxpbmUuc3VjY2VzcyB7XG4gICAgICBjb2xvcjogIzI4YTc0NTtcbiAgICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYmFkZ2Uub3V0bGluZS53YXJuaW5nIHtcbiAgICAgIGNvbG9yOiAjZmZjMTA3O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3O1xuICAgIH1cblxuICAgIC5mbW9kZS1iYWRnZS5vdXRsaW5lLmRhbmdlciB7XG4gICAgICBjb2xvcjogI2RjMzU0NTtcbiAgICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYmFkZ2Uub3V0bGluZS5pbmZvIHtcbiAgICAgIGNvbG9yOiAjMTdhMmI4O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4O1xuICAgIH1cblxuICAgIC5mbW9kZS1iYWRnZS5waWxsIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7XG4gICAgICBwYWRkaW5nOiAwLjM3NXJlbSAxcmVtO1xuICAgIH1cblxuICAgIC5mbW9kZS1iYWRnZTpob3ZlciB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgRm1vZGVCYWRnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGU6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnaW5mbycgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIHBpbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgb3V0bGluZSA9IGZhbHNlO1xufVxuIl19
@@ -0,0 +1,52 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class FmodeButtonComponent {
5
+ disabled = false;
6
+ type = 'primary';
7
+ size = 'medium';
8
+ onClick = new EventEmitter();
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeButtonComponent, isStandalone: true, selector: "fmode-button", inputs: { disabled: "disabled", type: "type", size: "size" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
11
+ <button
12
+ [disabled]="disabled"
13
+ [class.primary]="type === 'primary'"
14
+ [class.secondary]="type === 'secondary'"
15
+ [class.success]="type === 'success'"
16
+ [class.danger]="type === 'danger'"
17
+ [class.small]="size === 'small'"
18
+ [class.large]="size === 'large'"
19
+ (click)="onClick.emit()"
20
+ class="fmode-button"
21
+ >
22
+ <ng-content></ng-content>
23
+ </button>
24
+ `, isInline: true, styles: [".fmode-button{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s;font-family:inherit;box-sizing:border-box}.fmode-button:disabled{opacity:.5;cursor:not-allowed}.fmode-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.fmode-button.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.fmode-button.secondary{background:#6c757d;color:#fff}.fmode-button.secondary:hover:not(:disabled){background:#5a6268;transform:translateY(-2px);box-shadow:0 4px 12px #6c757d66}.fmode-button.success{background:#28a745;color:#fff}.fmode-button.success:hover:not(:disabled){background:#218838;transform:translateY(-2px);box-shadow:0 4px 12px #28a74566}.fmode-button.danger{background:#dc3545;color:#fff}.fmode-button.danger:hover:not(:disabled){background:#c82333;transform:translateY(-2px);box-shadow:0 4px 12px #dc354566}.fmode-button.small{padding:.5rem 1rem;font-size:.875rem}.fmode-button.large{padding:1rem 2rem;font-size:1.125rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeButtonComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'fmode-button', standalone: true, imports: [CommonModule], template: `
29
+ <button
30
+ [disabled]="disabled"
31
+ [class.primary]="type === 'primary'"
32
+ [class.secondary]="type === 'secondary'"
33
+ [class.success]="type === 'success'"
34
+ [class.danger]="type === 'danger'"
35
+ [class.small]="size === 'small'"
36
+ [class.large]="size === 'large'"
37
+ (click)="onClick.emit()"
38
+ class="fmode-button"
39
+ >
40
+ <ng-content></ng-content>
41
+ </button>
42
+ `, styles: [".fmode-button{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s;font-family:inherit;box-sizing:border-box}.fmode-button:disabled{opacity:.5;cursor:not-allowed}.fmode-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.fmode-button.primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.fmode-button.secondary{background:#6c757d;color:#fff}.fmode-button.secondary:hover:not(:disabled){background:#5a6268;transform:translateY(-2px);box-shadow:0 4px 12px #6c757d66}.fmode-button.success{background:#28a745;color:#fff}.fmode-button.success:hover:not(:disabled){background:#218838;transform:translateY(-2px);box-shadow:0 4px 12px #28a74566}.fmode-button.danger{background:#dc3545;color:#fff}.fmode-button.danger:hover:not(:disabled){background:#c82333;transform:translateY(-2px);box-shadow:0 4px 12px #dc354566}.fmode-button.small{padding:.5rem 1rem;font-size:.875rem}.fmode-button.large{padding:1rem 2rem;font-size:1.125rem}\n"] }]
43
+ }], propDecorators: { disabled: [{
44
+ type: Input
45
+ }], type: [{
46
+ type: Input
47
+ }], size: [{
48
+ type: Input
49
+ }], onClick: [{
50
+ type: Output
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mbW9kZS1idXR0b24vZm1vZGUtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUE2Ri9DLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLEdBQW1ELFNBQVMsQ0FBQztJQUNqRSxJQUFJLEdBQWlDLFFBQVEsQ0FBQztJQUM3QyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzt3R0FKbEMsb0JBQW9COzRGQUFwQixvQkFBb0IsdUtBdkZyQjs7Ozs7Ozs7Ozs7Ozs7R0FjVCxrbUNBZlMsWUFBWTs7NEZBd0ZYLG9CQUFvQjtrQkEzRmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7OztHQWNUOzhCQTBFUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbW9kZS1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLnByaW1hcnldPVwidHlwZSA9PT0gJ3ByaW1hcnknXCJcbiAgICAgIFtjbGFzcy5zZWNvbmRhcnldPVwidHlwZSA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgW2NsYXNzLnN1Y2Nlc3NdPVwidHlwZSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgIFtjbGFzcy5kYW5nZXJdPVwidHlwZSA9PT0gJ2RhbmdlcidcIlxuICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLmxhcmdlXT1cInNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2suZW1pdCgpXCJcbiAgICAgIGNsYXNzPVwiZm1vZGUtYnV0dG9uXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAuZm1vZGUtYnV0dG9uIHtcbiAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgIC5mbW9kZS1idXR0b246ZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG5cbiAgICAuZm1vZGUtYnV0dG9uLnByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYnV0dG9uLnByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNCk7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJ1dHRvbi5zZWNvbmRhcnkge1xuICAgICAgYmFja2dyb3VuZDogIzZjNzU3ZDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYnV0dG9uLnNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNWE2MjY4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNCk7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJ1dHRvbi5zdWNjZXNzIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyOGE3NDU7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJ1dHRvbi5zdWNjZXNzOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyMTg4Mzg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNDAsIDE2NywgNjksIDAuNCk7XG4gICAgfVxuXG4gICAgLmZtb2RlLWJ1dHRvbi5kYW5nZXIge1xuICAgICAgYmFja2dyb3VuZDogI2RjMzU0NTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuZm1vZGUtYnV0dG9uLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjYzgyMzMzO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIyMCwgNTMsIDY5LCAwLjQpO1xuICAgIH1cblxuICAgIC5mbW9kZS1idXR0b24uc21hbGwge1xuICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cblxuICAgIC5mbW9kZS1idXR0b24ubGFyZ2Uge1xuICAgICAgcGFkZGluZzogMXJlbSAycmVtO1xuICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIEZtb2RlQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgdHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuICBAT3V0cHV0KCkgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbn0iXX0=
@@ -0,0 +1,34 @@
1
+ import { Component, Input } 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 FmodeCardComponent {
6
+ title = '';
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeCardComponent, isStandalone: true, selector: "fmode-card", inputs: { title: "title" }, ngImport: i0, template: `
9
+ <div class="fmode-card">
10
+ <div class="card-header" *ngIf="title">
11
+ <h2 class="card-title">{{ title }}</h2>
12
+ </div>
13
+ <div class="card-body">
14
+ <ng-content></ng-content>
15
+ </div>
16
+ </div>
17
+ `, isInline: true, styles: [".fmode-card{background:#fff;border-radius:12px;box-shadow:0 4px 16px #00000014;overflow:hidden;transition:transform .3s,box-shadow .3s}.fmode-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.card-header{background:linear-gradient(135deg,#f8f9fa,#e9ecef);padding:1rem 1.5rem;border-bottom:2px solid #dee2e6}.card-title{margin:0;font-size:1.1rem;font-weight:600;color:#495057}.card-body{padding:1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeCardComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'fmode-card', standalone: true, imports: [CommonModule], template: `
22
+ <div class="fmode-card">
23
+ <div class="card-header" *ngIf="title">
24
+ <h2 class="card-title">{{ title }}</h2>
25
+ </div>
26
+ <div class="card-body">
27
+ <ng-content></ng-content>
28
+ </div>
29
+ </div>
30
+ `, styles: [".fmode-card{background:#fff;border-radius:12px;box-shadow:0 4px 16px #00000014;overflow:hidden;transition:transform .3s,box-shadow .3s}.fmode-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.card-header{background:linear-gradient(135deg,#f8f9fa,#e9ecef);padding:1rem 1.5rem;border-bottom:2px solid #dee2e6}.card-title{margin:0;font-size:1.1rem;font-weight:600;color:#495057}.card-body{padding:1.5rem}\n"] }]
31
+ }], propDecorators: { title: [{
32
+ type: Input
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm1vZGUtY2FyZC9mbW9kZS1jYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWdEL0MsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixLQUFLLEdBQUcsRUFBRSxDQUFDO3dHQURULGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtHQTFDbkI7Ozs7Ozs7OztHQVNULGlmQVZTLFlBQVk7OzRGQTJDWCxrQkFBa0I7a0JBOUM5QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7O0dBU1Q7OEJBa0NRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ztb2RlLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZm1vZGUtY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmZtb2RlLWNhcmQge1xuICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBib3gtc2hhZG93IDAuM3M7XG4gICAgfVxuXG4gICAgLmZtb2RlLWNhcmQ6aG92ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjhmOWZhIDAlLCAjZTllY2VmIDEwMCUpO1xuICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RlZTJlNjtcbiAgICB9XG5cbiAgICAuY2FyZC10aXRsZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIEZtb2RlQ2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG59Il19
@@ -0,0 +1,119 @@
1
+ import { Component, Input } 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 FmodeDigitalHumanComponent {
6
+ size = 'medium';
7
+ state = 'waiting';
8
+ speechText = '正在处理...';
9
+ ngOnInit() {
10
+ // 初始化状态
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeDigitalHumanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeDigitalHumanComponent, isStandalone: true, selector: "fmode-digital-human", inputs: { size: "size", state: "state", speechText: "speechText" }, ngImport: i0, template: `
14
+ <div
15
+ class="fmode-digital-human"
16
+ [class.small]="size === 'small'"
17
+ [class.medium]="size === 'medium'"
18
+ [class.large]="size === 'large'"
19
+ [class.xlarge]="size === 'xlarge'"
20
+ >
21
+ <div class="digital-human-container">
22
+ <div class="digital-human-avatar">
23
+ <img src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=friendly%20digital%20assistant%20avatar%20with%20glasses%20and%20professional%20appearance&image_size=square_hd"
24
+ alt="Digital Assistant" class="avatar-image">
25
+ </div>
26
+
27
+ <div class="digital-human-animations">
28
+ <div *ngIf="state === 'waiting'" class="animation waiting">
29
+ <div class="pulse"></div>
30
+ <div class="pulse"></div>
31
+ <div class="pulse"></div>
32
+ </div>
33
+
34
+ <div *ngIf="state === 'listening'" class="animation listening">
35
+ <div class="wave">
36
+ <span></span>
37
+ <span></span>
38
+ <span></span>
39
+ <span></span>
40
+ <span></span>
41
+ </div>
42
+ </div>
43
+
44
+ <div *ngIf="state === 'thinking'" class="animation thinking">
45
+ <div class="brain">
46
+ <div class="neuron"></div>
47
+ <div class="neuron"></div>
48
+ <div class="neuron"></div>
49
+ </div>
50
+ </div>
51
+
52
+ <div *ngIf="state === 'speaking'" class="animation speaking">
53
+ <div class="speech-bubble">
54
+ <span>{{ speechText }}</span>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ `, isInline: true, styles: [".fmode-digital-human{display:flex;flex-direction:column;align-items:center;gap:1rem}.digital-human-container{position:relative;display:flex;flex-direction:column;align-items:center}.digital-human-avatar{border-radius:50%;overflow:hidden;box-shadow:0 4px 16px #667eea4d;background:linear-gradient(135deg,#667eea,#764ba2);transition:all .3s}.avatar-image{width:100%;height:100%;object-fit:cover;display:block}.fmode-digital-human.small .digital-human-avatar{width:64px;height:64px}.fmode-digital-human.medium .digital-human-avatar{width:96px;height:96px}.fmode-digital-human.large .digital-human-avatar{width:128px;height:128px}.fmode-digital-human.xlarge .digital-human-avatar{width:160px;height:160px}.digital-human-animations{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:.5rem;width:100%;display:flex;justify-content:center}.animation{display:flex;align-items:center;justify-content:center}.waiting .pulse{width:8px;height:8px;background:#667eea;border-radius:50%;margin:0 3px;animation:pulse 1.5s infinite ease-in-out}.waiting .pulse:nth-child(2){animation-delay:.2s}.waiting .pulse:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,to{transform:scale(.8);opacity:.5}50%{transform:scale(1.2);opacity:1}}.listening .wave{display:flex;align-items:center;gap:4px}.listening .wave span{width:4px;background:#667eea;border-radius:2px;animation:wave 1.5s infinite ease-in-out}.listening .wave span:nth-child(1){height:8px;animation-delay:0s}.listening .wave span:nth-child(2){height:12px;animation-delay:.1s}.listening .wave span:nth-child(3){height:16px;animation-delay:.2s}.listening .wave span:nth-child(4){height:12px;animation-delay:.3s}.listening .wave span:nth-child(5){height:8px;animation-delay:.4s}@keyframes wave{0%,to{transform:scaleY(.5);opacity:.5}50%{transform:scaleY(1);opacity:1}}.thinking .brain{position:relative;width:40px;height:30px}.thinking .neuron{position:absolute;width:6px;height:6px;background:#667eea;border-radius:50%;animation:neuron 2s infinite ease-in-out}.thinking .neuron:nth-child(1){top:0;left:17px;animation-delay:0s}.thinking .neuron:nth-child(2){top:12px;left:4px;animation-delay:.3s}.thinking .neuron:nth-child(3){top:12px;right:4px;animation-delay:.6s}@keyframes neuron{0%,to{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}}.speaking .speech-bubble{background:#fff;padding:.5rem 1rem;border-radius:16px;box-shadow:0 2px 8px #0000001a;max-width:200px;text-align:center;animation:speech 1s infinite ease-in-out}.speaking .speech-bubble:after{content:\"\";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid white}.speaking .speech-bubble span{font-size:.875rem;color:#495057;font-weight:500}@keyframes speech{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeDigitalHumanComponent, decorators: [{
63
+ type: Component,
64
+ args: [{ selector: 'fmode-digital-human', standalone: true, imports: [CommonModule], template: `
65
+ <div
66
+ class="fmode-digital-human"
67
+ [class.small]="size === 'small'"
68
+ [class.medium]="size === 'medium'"
69
+ [class.large]="size === 'large'"
70
+ [class.xlarge]="size === 'xlarge'"
71
+ >
72
+ <div class="digital-human-container">
73
+ <div class="digital-human-avatar">
74
+ <img src="https://trae-api-cn.mchost.guru/api/ide/v1/text_to_image?prompt=friendly%20digital%20assistant%20avatar%20with%20glasses%20and%20professional%20appearance&image_size=square_hd"
75
+ alt="Digital Assistant" class="avatar-image">
76
+ </div>
77
+
78
+ <div class="digital-human-animations">
79
+ <div *ngIf="state === 'waiting'" class="animation waiting">
80
+ <div class="pulse"></div>
81
+ <div class="pulse"></div>
82
+ <div class="pulse"></div>
83
+ </div>
84
+
85
+ <div *ngIf="state === 'listening'" class="animation listening">
86
+ <div class="wave">
87
+ <span></span>
88
+ <span></span>
89
+ <span></span>
90
+ <span></span>
91
+ <span></span>
92
+ </div>
93
+ </div>
94
+
95
+ <div *ngIf="state === 'thinking'" class="animation thinking">
96
+ <div class="brain">
97
+ <div class="neuron"></div>
98
+ <div class="neuron"></div>
99
+ <div class="neuron"></div>
100
+ </div>
101
+ </div>
102
+
103
+ <div *ngIf="state === 'speaking'" class="animation speaking">
104
+ <div class="speech-bubble">
105
+ <span>{{ speechText }}</span>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ `, styles: [".fmode-digital-human{display:flex;flex-direction:column;align-items:center;gap:1rem}.digital-human-container{position:relative;display:flex;flex-direction:column;align-items:center}.digital-human-avatar{border-radius:50%;overflow:hidden;box-shadow:0 4px 16px #667eea4d;background:linear-gradient(135deg,#667eea,#764ba2);transition:all .3s}.avatar-image{width:100%;height:100%;object-fit:cover;display:block}.fmode-digital-human.small .digital-human-avatar{width:64px;height:64px}.fmode-digital-human.medium .digital-human-avatar{width:96px;height:96px}.fmode-digital-human.large .digital-human-avatar{width:128px;height:128px}.fmode-digital-human.xlarge .digital-human-avatar{width:160px;height:160px}.digital-human-animations{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:.5rem;width:100%;display:flex;justify-content:center}.animation{display:flex;align-items:center;justify-content:center}.waiting .pulse{width:8px;height:8px;background:#667eea;border-radius:50%;margin:0 3px;animation:pulse 1.5s infinite ease-in-out}.waiting .pulse:nth-child(2){animation-delay:.2s}.waiting .pulse:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,to{transform:scale(.8);opacity:.5}50%{transform:scale(1.2);opacity:1}}.listening .wave{display:flex;align-items:center;gap:4px}.listening .wave span{width:4px;background:#667eea;border-radius:2px;animation:wave 1.5s infinite ease-in-out}.listening .wave span:nth-child(1){height:8px;animation-delay:0s}.listening .wave span:nth-child(2){height:12px;animation-delay:.1s}.listening .wave span:nth-child(3){height:16px;animation-delay:.2s}.listening .wave span:nth-child(4){height:12px;animation-delay:.3s}.listening .wave span:nth-child(5){height:8px;animation-delay:.4s}@keyframes wave{0%,to{transform:scaleY(.5);opacity:.5}50%{transform:scaleY(1);opacity:1}}.thinking .brain{position:relative;width:40px;height:30px}.thinking .neuron{position:absolute;width:6px;height:6px;background:#667eea;border-radius:50%;animation:neuron 2s infinite ease-in-out}.thinking .neuron:nth-child(1){top:0;left:17px;animation-delay:0s}.thinking .neuron:nth-child(2){top:12px;left:4px;animation-delay:.3s}.thinking .neuron:nth-child(3){top:12px;right:4px;animation-delay:.6s}@keyframes neuron{0%,to{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}}.speaking .speech-bubble{background:#fff;padding:.5rem 1rem;border-radius:16px;box-shadow:0 2px 8px #0000001a;max-width:200px;text-align:center;animation:speech 1s infinite ease-in-out}.speaking .speech-bubble:after{content:\"\";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid white}.speaking .speech-bubble span{font-size:.875rem;color:#495057;font-weight:500}@keyframes speech{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}\n"] }]
112
+ }], propDecorators: { size: [{
113
+ type: Input
114
+ }], state: [{
115
+ type: Input
116
+ }], speechText: [{
117
+ type: Input
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtZGlnaXRhbC1odW1hbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm1vZGUtZGlnaXRhbC1odW1hbi9mbW9kZS1kaWdpdGFsLWh1bWFuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQTZSL0MsTUFBTSxPQUFPLDBCQUEwQjtJQUM1QixJQUFJLEdBQTRDLFFBQVEsQ0FBQztJQUN6RCxLQUFLLEdBQXNELFNBQVMsQ0FBQztJQUNyRSxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBRWhDLFFBQVE7UUFDTixRQUFRO0lBQ1YsQ0FBQzt3R0FQVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtSkF2UjNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDVCxzNEZBaERTLFlBQVk7OzRGQXdSWCwwQkFBMEI7a0JBM1J0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1Q7OEJBeU9RLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm1vZGUtZGlnaXRhbC1odW1hbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cImZtb2RlLWRpZ2l0YWwtaHVtYW5cIlxuICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLm1lZGl1bV09XCJzaXplID09PSAnbWVkaXVtJ1wiXG4gICAgICBbY2xhc3MubGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MueGxhcmdlXT1cInNpemUgPT09ICd4bGFyZ2UnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGlnaXRhbC1odW1hbi1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpZ2l0YWwtaHVtYW4tYXZhdGFyXCI+XG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3RyYWUtYXBpLWNuLm1jaG9zdC5ndXJ1L2FwaS9pZGUvdjEvdGV4dF90b19pbWFnZT9wcm9tcHQ9ZnJpZW5kbHklMjBkaWdpdGFsJTIwYXNzaXN0YW50JTIwYXZhdGFyJTIwd2l0aCUyMGdsYXNzZXMlMjBhbmQlMjBwcm9mZXNzaW9uYWwlMjBhcHBlYXJhbmNlJmltYWdlX3NpemU9c3F1YXJlX2hkXCIgXG4gICAgICAgICAgICAgICBhbHQ9XCJEaWdpdGFsIEFzc2lzdGFudFwiIGNsYXNzPVwiYXZhdGFyLWltYWdlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpZ2l0YWwtaHVtYW4tYW5pbWF0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGF0ZSA9PT0gJ3dhaXRpbmcnXCIgY2xhc3M9XCJhbmltYXRpb24gd2FpdGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bHNlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxzZVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGF0ZSA9PT0gJ2xpc3RlbmluZydcIiBjbGFzcz1cImFuaW1hdGlvbiBsaXN0ZW5pbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0YXRlID09PSAndGhpbmtpbmcnXCIgY2xhc3M9XCJhbmltYXRpb24gdGhpbmtpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmFpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV1cm9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXVyb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldXJvblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0YXRlID09PSAnc3BlYWtpbmcnXCIgY2xhc3M9XCJhbmltYXRpb24gc3BlYWtpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGVlY2gtYnViYmxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHNwZWVjaFRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5mbW9kZS1kaWdpdGFsLWh1bWFuIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMXJlbTtcbiAgICB9XG5cbiAgICAuZGlnaXRhbC1odW1hbi1jb250YWluZXIge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5kaWdpdGFsLWh1bWFuLWF2YXRhciB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjY3ZWVhIDAlLCAjNzY0YmEyIDEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgfVxuXG4gICAgLmF2YXRhci1pbWFnZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLmZtb2RlLWRpZ2l0YWwtaHVtYW4uc21hbGwgLmRpZ2l0YWwtaHVtYW4tYXZhdGFyIHtcbiAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgaGVpZ2h0OiA2NHB4O1xuICAgIH1cblxuICAgIC5mbW9kZS1kaWdpdGFsLWh1bWFuLm1lZGl1bSAuZGlnaXRhbC1odW1hbi1hdmF0YXIge1xuICAgICAgd2lkdGg6IDk2cHg7XG4gICAgICBoZWlnaHQ6IDk2cHg7XG4gICAgfVxuXG4gICAgLmZtb2RlLWRpZ2l0YWwtaHVtYW4ubGFyZ2UgLmRpZ2l0YWwtaHVtYW4tYXZhdGFyIHtcbiAgICAgIHdpZHRoOiAxMjhweDtcbiAgICAgIGhlaWdodDogMTI4cHg7XG4gICAgfVxuXG4gICAgLmZtb2RlLWRpZ2l0YWwtaHVtYW4ueGxhcmdlIC5kaWdpdGFsLWh1bWFuLWF2YXRhciB7XG4gICAgICB3aWR0aDogMTYwcHg7XG4gICAgICBoZWlnaHQ6IDE2MHB4O1xuICAgIH1cblxuICAgIC5kaWdpdGFsLWh1bWFuLWFuaW1hdGlvbnMge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxMDAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFuaW1hdGlvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC8qIFdhaXRpbmcgQW5pbWF0aW9uICovXG4gICAgLndhaXRpbmcgLnB1bHNlIHtcbiAgICAgIHdpZHRoOiA4cHg7XG4gICAgICBoZWlnaHQ6IDhweDtcbiAgICAgIGJhY2tncm91bmQ6ICM2NjdlZWE7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgYW5pbWF0aW9uOiBwdWxzZSAxLjVzIGluZmluaXRlIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIC53YWl0aW5nIC5wdWxzZTpudGgtY2hpbGQoMikge1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjJzO1xuICAgIH1cblxuICAgIC53YWl0aW5nIC5wdWxzZTpudGgtY2hpbGQoMykge1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjRzO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcHVsc2Uge1xuICAgICAgMCUsIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBMaXN0ZW5pbmcgQW5pbWF0aW9uICovXG4gICAgLmxpc3RlbmluZyAud2F2ZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbiB7XG4gICAgICB3aWR0aDogNHB4O1xuICAgICAgYmFja2dyb3VuZDogIzY2N2VlYTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGFuaW1hdGlvbjogd2F2ZSAxLjVzIGluZmluaXRlIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDBzO1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjFzO1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbjpudGgtY2hpbGQoMykge1xuICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjJzO1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbjpudGgtY2hpbGQoNCkge1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjNzO1xuICAgIH1cblxuICAgIC5saXN0ZW5pbmcgLndhdmUgc3BhbjpudGgtY2hpbGQoNSkge1xuICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDAuNHM7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyB3YXZlIHtcbiAgICAgIDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMC41KTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgfVxuICAgICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogVGhpbmtpbmcgQW5pbWF0aW9uICovXG4gICAgLnRoaW5raW5nIC5icmFpbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIGhlaWdodDogMzBweDtcbiAgICB9XG5cbiAgICAudGhpbmtpbmcgLm5ldXJvbiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogNnB4O1xuICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjNjY3ZWVhO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYW5pbWF0aW9uOiBuZXVyb24gMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG4gICAgfVxuXG4gICAgLnRoaW5raW5nIC5uZXVyb246bnRoLWNoaWxkKDEpIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDE3cHg7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDBzO1xuICAgIH1cblxuICAgIC50aGlua2luZyAubmV1cm9uOm50aC1jaGlsZCgyKSB7XG4gICAgICB0b3A6IDEycHg7XG4gICAgICBsZWZ0OiA0cHg7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDAuM3M7XG4gICAgfVxuXG4gICAgLnRoaW5raW5nIC5uZXVyb246bnRoLWNoaWxkKDMpIHtcbiAgICAgIHRvcDogMTJweDtcbiAgICAgIHJpZ2h0OiA0cHg7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDAuNnM7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBuZXVyb24ge1xuICAgICAgMCUsIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIFNwZWFraW5nIEFuaW1hdGlvbiAqL1xuICAgIC5zcGVha2luZyAuc3BlZWNoLWJ1YmJsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgYW5pbWF0aW9uOiBzcGVlY2ggMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG4gICAgfVxuXG4gICAgLnNwZWFraW5nIC5zcGVlY2gtYnViYmxlOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLThweDtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXRvcDogOHB4IHNvbGlkIHdoaXRlO1xuICAgIH1cblxuICAgIC5zcGVha2luZyAuc3BlZWNoLWJ1YmJsZSBzcGFuIHtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBzcGVlY2gge1xuICAgICAgMCUsIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICB9XG4gICAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBGbW9kZURpZ2l0YWxIdW1hbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJyA9ICdtZWRpdW0nO1xuICBASW5wdXQoKSBzdGF0ZTogJ3dhaXRpbmcnIHwgJ2xpc3RlbmluZycgfCAndGhpbmtpbmcnIHwgJ3NwZWFraW5nJyA9ICd3YWl0aW5nJztcbiAgQElucHV0KCkgc3BlZWNoVGV4dCA9ICfmraPlnKjlpITnkIYuLi4nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIOWIneWni+WMlueKtuaAgVxuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Component, Input } 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 FmodeDividerComponent {
6
+ text = '';
7
+ vertical = false;
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeDividerComponent, isStandalone: true, selector: "fmode-divider", inputs: { text: "text", vertical: "vertical" }, ngImport: i0, template: `
10
+ <div
11
+ class="fmode-divider"
12
+ [class.vertical]="vertical"
13
+ [class.with-text]="!!text"
14
+ >
15
+ <span *ngIf="text" class="divider-text">{{ text }}</span>
16
+ </div>
17
+ `, isInline: true, styles: [".fmode-divider{position:relative;display:flex;align-items:center;width:100%;height:1px;background:linear-gradient(90deg,transparent,#e9ecef,transparent);margin:1.5rem 0}.fmode-divider.vertical{width:1px;height:100%;background:linear-gradient(180deg,transparent,#e9ecef,transparent);margin:0 1.5rem}.fmode-divider.with-text:before,.fmode-divider.with-text:after{content:\"\";flex:1;height:1px;background:linear-gradient(90deg,transparent,#e9ecef,transparent)}.fmode-divider.vertical.with-text:before,.fmode-divider.vertical.with-text:after{width:1px;height:100%;background:linear-gradient(180deg,transparent,#e9ecef,transparent)}.divider-text{padding:0 1rem;color:#6c757d;font-size:.875rem;font-weight:500;white-space:nowrap;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeDividerComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'fmode-divider', standalone: true, imports: [CommonModule], template: `
22
+ <div
23
+ class="fmode-divider"
24
+ [class.vertical]="vertical"
25
+ [class.with-text]="!!text"
26
+ >
27
+ <span *ngIf="text" class="divider-text">{{ text }}</span>
28
+ </div>
29
+ `, styles: [".fmode-divider{position:relative;display:flex;align-items:center;width:100%;height:1px;background:linear-gradient(90deg,transparent,#e9ecef,transparent);margin:1.5rem 0}.fmode-divider.vertical{width:1px;height:100%;background:linear-gradient(180deg,transparent,#e9ecef,transparent);margin:0 1.5rem}.fmode-divider.with-text:before,.fmode-divider.with-text:after{content:\"\";flex:1;height:1px;background:linear-gradient(90deg,transparent,#e9ecef,transparent)}.fmode-divider.vertical.with-text:before,.fmode-divider.vertical.with-text:after{width:1px;height:100%;background:linear-gradient(180deg,transparent,#e9ecef,transparent)}.divider-text{padding:0 1rem;color:#6c757d;font-size:.875rem;font-weight:500;white-space:nowrap;background:transparent}\n"] }]
30
+ }], propDecorators: { text: [{
31
+ type: Input
32
+ }], vertical: [{
33
+ type: Input
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm1vZGUtZGl2aWRlci9mbW9kZS1kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQTBEL0MsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ1YsUUFBUSxHQUFHLEtBQUssQ0FBQzt3R0FGZixxQkFBcUI7NEZBQXJCLHFCQUFxQix5SEFwRHRCOzs7Ozs7OztHQVFULHN6QkFUUyxZQUFZOzs0RkFxRFgscUJBQXFCO2tCQXhEakMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7O0dBUVQ7OEJBNkNRLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm1vZGUtZGl2aWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm1vZGUtZGl2aWRlclwiXG4gICAgICBbY2xhc3MudmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgW2NsYXNzLndpdGgtdGV4dF09XCIhIXRleHRcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwidGV4dFwiIGNsYXNzPVwiZGl2aWRlci10ZXh0XCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5mbW9kZS1kaXZpZGVyIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsICNlOWVjZWYsIHRyYW5zcGFyZW50KTtcbiAgICAgIG1hcmdpbjogMS41cmVtIDA7XG4gICAgfVxuXG4gICAgLmZtb2RlLWRpdmlkZXIudmVydGljYWwge1xuICAgICAgd2lkdGg6IDFweDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCAjZTllY2VmLCB0cmFuc3BhcmVudCk7XG4gICAgICBtYXJnaW46IDAgMS41cmVtO1xuICAgIH1cblxuICAgIC5mbW9kZS1kaXZpZGVyLndpdGgtdGV4dDo6YmVmb3JlLFxuICAgIC5mbW9kZS1kaXZpZGVyLndpdGgtdGV4dDo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCAjZTllY2VmLCB0cmFuc3BhcmVudCk7XG4gICAgfVxuXG4gICAgLmZtb2RlLWRpdmlkZXIudmVydGljYWwud2l0aC10ZXh0OjpiZWZvcmUsXG4gICAgLmZtb2RlLWRpdmlkZXIudmVydGljYWwud2l0aC10ZXh0OjphZnRlciB7XG4gICAgICB3aWR0aDogMXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdHJhbnNwYXJlbnQsICNlOWVjZWYsIHRyYW5zcGFyZW50KTtcbiAgICB9XG5cbiAgICAuZGl2aWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBGbW9kZURpdmlkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0ZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHZlcnRpY2FsID0gZmFsc2U7XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ import { Component, Input } 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 FmodeHeaderComponent {
6
+ title = '';
7
+ subtitle = '';
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeHeaderComponent, isStandalone: true, selector: "fmode-header", inputs: { title: "title", subtitle: "subtitle" }, ngImport: i0, template: `
10
+ <header class="fmode-header">
11
+ <div class="header-content">
12
+ <h1 class="header-title">{{ title }}</h1>
13
+ <p class="header-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
14
+ </div>
15
+ </header>
16
+ `, isInline: true, styles: [".fmode-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem 2rem;box-shadow:0 4px 12px #0000001a}.header-content{max-width:1400px;margin:0 auto}.header-title{margin:0;font-size:1.75rem;font-weight:700;letter-spacing:.5px}.header-subtitle{margin:.5rem 0 0;font-size:1rem;opacity:.9}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeHeaderComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'fmode-header', standalone: true, imports: [CommonModule], template: `
21
+ <header class="fmode-header">
22
+ <div class="header-content">
23
+ <h1 class="header-title">{{ title }}</h1>
24
+ <p class="header-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
25
+ </div>
26
+ </header>
27
+ `, styles: [".fmode-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem 2rem;box-shadow:0 4px 12px #0000001a}.header-content{max-width:1400px;margin:0 auto}.header-title{margin:0;font-size:1.75rem;font-weight:700;letter-spacing:.5px}.header-subtitle{margin:.5rem 0 0;font-size:1rem;opacity:.9}\n"] }]
28
+ }], propDecorators: { title: [{
29
+ type: Input
30
+ }], subtitle: [{
31
+ type: Input
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mbW9kZS1oZWFkZXIvZm1vZGUtaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUF5Qy9DLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFFBQVEsR0FBRyxFQUFFLENBQUM7d0dBRlosb0JBQW9COzRGQUFwQixvQkFBb0IsMEhBbkNyQjs7Ozs7OztHQU9ULG1ZQVJTLFlBQVk7OzRGQW9DWCxvQkFBb0I7a0JBdkNoQyxTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7OztHQU9UOzhCQTZCUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm1vZGUtaGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGhlYWRlciBjbGFzcz1cImZtb2RlLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250ZW50XCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRlci10aXRsZVwiPnt7IHRpdGxlIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJoZWFkZXItc3VidGl0bGVcIiAqbmdJZj1cInN1YnRpdGxlXCI+e3sgc3VidGl0bGUgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5mbW9kZS1oZWFkZXIge1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgLmhlYWRlci1jb250ZW50IHtcbiAgICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuXG4gICAgLmhlYWRlci10aXRsZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIH1cblxuICAgIC5oZWFkZXItc3VidGl0bGUge1xuICAgICAgbWFyZ2luOiAwLjVyZW0gMCAwIDA7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBvcGFjaXR5OiAwLjk7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBGbW9kZUhlYWRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlID0gJyc7XG59Il19
@@ -0,0 +1,50 @@
1
+ import { Component, Input, Output, EventEmitter } 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 FmodeListComponent {
6
+ items = [];
7
+ itemClick = new EventEmitter();
8
+ onItemClick(item) {
9
+ this.itemClick.emit(item);
10
+ }
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeListComponent, isStandalone: true, selector: "fmode-list", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, ngImport: i0, template: `
13
+ <div class="fmode-list">
14
+ <div
15
+ *ngFor="let item of items"
16
+ (click)="onItemClick(item)"
17
+ class="list-item"
18
+ >
19
+ <div class="item-content">{{ item }}</div>
20
+ </div>
21
+
22
+ <div *ngIf="items.length === 0" class="empty-state">
23
+ <span>暂无数据</span>
24
+ </div>
25
+ </div>
26
+ `, isInline: true, styles: [".fmode-list{background:#fff;border-radius:8px;overflow:hidden}.list-item{padding:1rem;border-bottom:1px solid #e9ecef;cursor:pointer;transition:background .3s}.list-item:hover{background:#f8f9fa}.list-item:last-child{border-bottom:none}.item-content{color:#495057;line-height:1.6}.empty-state{padding:2rem;text-align:center;color:#6c757d;font-style:italic}\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"] }] });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeListComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'fmode-list', standalone: true, imports: [CommonModule], template: `
31
+ <div class="fmode-list">
32
+ <div
33
+ *ngFor="let item of items"
34
+ (click)="onItemClick(item)"
35
+ class="list-item"
36
+ >
37
+ <div class="item-content">{{ item }}</div>
38
+ </div>
39
+
40
+ <div *ngIf="items.length === 0" class="empty-state">
41
+ <span>暂无数据</span>
42
+ </div>
43
+ </div>
44
+ `, styles: [".fmode-list{background:#fff;border-radius:8px;overflow:hidden}.list-item{padding:1rem;border-bottom:1px solid #e9ecef;cursor:pointer;transition:background .3s}.list-item:hover{background:#f8f9fa}.list-item:last-child{border-bottom:none}.item-content{color:#495057;line-height:1.6}.empty-state{padding:2rem;text-align:center;color:#6c757d;font-style:italic}\n"] }]
45
+ }], propDecorators: { items: [{
46
+ type: Input
47
+ }], itemClick: [{
48
+ type: Output
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm1vZGUtbGlzdC9mbW9kZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBd0QvQyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLEtBQUssR0FBVSxFQUFFLENBQUM7SUFDakIsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFOUMsV0FBVyxDQUFDLElBQVM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzt3R0FOVSxrQkFBa0I7NEZBQWxCLGtCQUFrQix1SUFsRG5COzs7Ozs7Ozs7Ozs7OztHQWNULCthQWZTLFlBQVk7OzRGQW1EWCxrQkFBa0I7a0JBdEQ5QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7R0FjVDs4QkFxQ1EsS0FBSztzQkFBYixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm1vZGUtbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmbW9kZS1saXN0XCI+XG4gICAgICA8ZGl2IFxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwibGlzdC1pdGVtXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPnt7IGl0ZW0gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8c3Bhbj7mmoLml6DmlbDmja48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5mbW9kZS1saXN0IHtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAubGlzdC1pdGVtIHtcbiAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcztcbiAgICB9XG5cbiAgICAubGlzdC1pdGVtOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgfVxuXG4gICAgLmxpc3QtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLml0ZW0tY29udGVudCB7XG4gICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgfVxuXG4gICAgLmVtcHR5LXN0YXRlIHtcbiAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIEZtb2RlTGlzdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55KSB7XG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class FmodeLoadingComponent {
5
+ loadingText = '';
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FmodeLoadingComponent, isStandalone: true, selector: "fmode-loading", inputs: { loadingText: "loadingText" }, ngImport: i0, template: `
8
+ <div class="fmode-loading">
9
+ <div class="loading-spinner"></div>
10
+ <div class="loading-text">{{ loadingText || '加载中...' }}</div>
11
+ </div>
12
+ `, isInline: true, styles: [".fmode-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.loading-spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite}.loading-text{color:#667eea;font-weight:600;font-size:1.1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeLoadingComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'fmode-loading', standalone: true, imports: [CommonModule], template: `
17
+ <div class="fmode-loading">
18
+ <div class="loading-spinner"></div>
19
+ <div class="loading-text">{{ loadingText || '加载中...' }}</div>
20
+ </div>
21
+ `, styles: [".fmode-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.loading-spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite}.loading-text{color:#667eea;font-weight:600;font-size:1.1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
22
+ }], propDecorators: { loadingText: [{
23
+ type: Input
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUtbG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm1vZGUtbG9hZGluZy9mbW9kZS1sb2FkaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBMkMvQyxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLFdBQVcsR0FBRyxFQUFFLENBQUM7d0dBRGYscUJBQXFCOzRGQUFyQixxQkFBcUIsaUhBckN0Qjs7Ozs7R0FLVCxnZEFOUyxZQUFZOzs0RkFzQ1gscUJBQXFCO2tCQXpDakMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7O0dBS1Q7OEJBaUNRLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmbW9kZS1sb2FkaW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZtb2RlLWxvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXRleHRcIj57eyBsb2FkaW5nVGV4dCB8fCAn5Yqg6L295LitLi4uJyB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLmZtb2RlLWxvYWRpbmcge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBnYXA6IDFyZW07XG4gICAgICBwYWRkaW5nOiAycmVtO1xuICAgIH1cblxuICAgIC5sb2FkaW5nLXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICBib3JkZXI6IDRweCBzb2xpZCAjZjNmM2YzO1xuICAgICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICM2NjdlZWE7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xuICAgIH1cblxuICAgIC5sb2FkaW5nLXRleHQge1xuICAgICAgY29sb3I6ICM2NjdlZWE7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBzcGluIHtcbiAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBGbW9kZUxvYWRpbmdDb21wb25lbnQge1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dCA9ICcnO1xufSJdfQ==