@balinasoftware/balinaui-components 3.0.0 → 3.2.3
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.
|
@@ -4,6 +4,7 @@ import * as i1 from '@angular/common';
|
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i2 from '@angular/router';
|
|
6
6
|
import { RouterModule } from '@angular/router';
|
|
7
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
8
|
|
|
8
9
|
class BalinauiComponents {
|
|
9
10
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: BalinauiComponents, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -16,21 +17,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
16
17
|
|
|
17
18
|
class Navbar {
|
|
18
19
|
elementRef;
|
|
20
|
+
// Brand
|
|
19
21
|
brand = 'Aero';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
logoAlt = 'Aero logo';
|
|
23
|
+
image = '';
|
|
24
|
+
// Navigation
|
|
25
|
+
links = [];
|
|
26
|
+
// Authentication
|
|
25
27
|
initiallyLoggedIn = false;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
// User profile
|
|
29
|
+
user = {
|
|
30
|
+
username: 'Guest User',
|
|
31
|
+
email: 'guest@example.com',
|
|
32
|
+
image: '',
|
|
33
|
+
role: 'Guest',
|
|
34
|
+
name: undefined
|
|
35
|
+
};
|
|
36
|
+
// Icons
|
|
37
|
+
notificationIcon = 'notifications';
|
|
38
|
+
profileIcon = 'account_circle';
|
|
39
|
+
userIcon = 'person';
|
|
40
|
+
logoutIcon = 'logout';
|
|
41
|
+
// Events
|
|
29
42
|
login = new EventEmitter();
|
|
30
43
|
logout = new EventEmitter();
|
|
31
44
|
isLoggedIn = false;
|
|
32
45
|
isDropdownOpen = false;
|
|
33
|
-
Aerologo;
|
|
34
46
|
constructor(elementRef) {
|
|
35
47
|
this.elementRef = elementRef;
|
|
36
48
|
}
|
|
@@ -49,29 +61,37 @@ class Navbar {
|
|
|
49
61
|
this.isDropdownOpen = false;
|
|
50
62
|
this.logout.emit();
|
|
51
63
|
}
|
|
52
|
-
// Close the dropdown when clicking outside of it
|
|
53
64
|
onDocumentClick(event) {
|
|
54
|
-
if (this.isDropdownOpen &&
|
|
65
|
+
if (this.isDropdownOpen &&
|
|
66
|
+
!this.elementRef.nativeElement.contains(event.target)) {
|
|
55
67
|
this.isDropdownOpen = false;
|
|
56
68
|
}
|
|
57
69
|
}
|
|
58
70
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Navbar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: Navbar, isStandalone: true, selector: "lib-navbar", inputs: { brand: "brand", links: "links", initiallyLoggedIn: "initiallyLoggedIn",
|
|
71
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: Navbar, isStandalone: true, selector: "lib-navbar", inputs: { brand: "brand", logoAlt: "logoAlt", image: "image", links: "links", initiallyLoggedIn: "initiallyLoggedIn", user: "user", notificationIcon: "notificationIcon", profileIcon: "profileIcon", userIcon: "userIcon", logoutIcon: "logoutIcon" }, outputs: { login: "login", logout: "logout" }, host: { listeners: { "document:mousedown": "onDocumentClick($event)" } }, ngImport: i0, template: "<header class=\"anv-navbar\">\n\n <!--TOP STRIPE-->\n <div class=\"anv-topbar\"></div>\n <!--NAVBAR-->\n <div class=\"anv-stripes\">\n <div class=\"anv-content\">\n\n <!--BRAND / LOGO-->\n <img *ngIf=\"image\" [src]=\"image\" [alt]=\"logoAlt\" class=\"anv-brand-icon\" />\n <span *ngIf=\"brand\" class=\"anv-brand-name\">\n {{ brand }}\n </span>\n\n <!--NAVIGATION LINKS-->\n <nav class=\"anv-links\" aria-label=\"Main navigation\">\n <a *ngFor=\"let link of links\" [routerLink]=\"link.url\" routerLinkActive=\"anv-link-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\" class=\"anv-link\">\n {{ link.label }}\n </a>\n </nav>\n\n\n <!--ACTIONS-->\n <div class=\"anv-actions\">\n <!--NOTIFICATION-->\n <button type=\"button\" class=\"anv-icon-btn\" aria-label=\"Notifications\">\n <span class=\"material-icons\">\n {{ notificationIcon }}\n </span>\n </button>\n\n \n <!--DIVIDER-->\n <span class=\"anv-divider\"></span>\n\n <!--LOGIN-->\n <button *ngIf=\"!isLoggedIn\" type=\"button\" class=\"anv-login-btn\" (click)=\"handleLoginClick()\">\n Login\n </button>\n\n <!--PROFILE-->\n <div *ngIf=\"isLoggedIn\" class=\"anv-profile-wrap\">\n\n <!-- PROFILE BUTTON -->\n <button type=\"button\" class=\"anv-profile-btn\" (click)=\"handleProfileClick()\"\n [attr.aria-expanded]=\"isDropdownOpen\" aria-haspopup=\"true\" aria-label=\"User profile\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" class=\"anv-profile-image\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ profileIcon }}\n </span>\n \n </button>\n\n <!-- PROFILE DROPDOWN-->\n\n <div *ngIf=\"isDropdownOpen\" class=\"anv-dropdown\">\n <!-- USER INFORMATION -->\n <div class=\"anv-dropdown-header\">\n <!-- USER IMAGE -->\n <div class=\"anv-dropdown-avatar\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ userIcon }}\n </span>\n </div>\n\n <!-- USER DETAILS -->\n\n <div class=\"anv-dropdown-info\">\n <span class=\"anv-dropdown-name\">\n {{ user.name }}\n </span>\n <span class=\"anv-dropdown-email\">\n {{ user.email }}\n </span>\n <span *ngIf=\"user.role\" class=\"anv-dropdown-role\">\n {{ user.role }}\n </span>\n </div>\n </div>\n\n <!-- DIVIDER -->\n <hr class=\"anv-dropdown-sep\">\n <!-- LOGOUT -->\n <button type=\"button\" class=\"anv-dropdown-item anv-logout\" (click)=\"handleLogoutClick()\">\n <span class=\"material-icons\">\n {{ logoutIcon }}\n </span>\n <span>\n Log out\n </span>\n </button>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</header>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*,*:before,*:after{box-sizing:border-box}.anv-navbar{display:flex;font-family:Inter,Arial,sans-serif;background:#fff;position:relative;z-index:1000}.anv-stripes{width:100%;background:#fff;border-bottom:1px solid #e6e6e6;box-shadow:0 2px 12px #0000000d}.anv-content{width:min(1350px,100%);margin:auto 20px auto auto;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:18px clamp(50px,3vw,60px)}.anv-brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.anv-brand-icon{width:clamp(60px,7vw,100px);height:auto;object-fit:contain;transition:.3s}.anv-brand-icon:hover{transform:scale(1.08)}.anv-brand-name{font-size:22px;font-weight:700;color:#1f4d4a;white-space:nowrap}.anv-links{display:flex;justify-content:right;align-items:center;flex:1;gap:clamp(18px,3vw,40px);min-width:0}.anv-link{position:relative;text-decoration:none;color:#555;font-size:17px;font-weight:600;transition:.3s;white-space:nowrap}.anv-link:hover{color:#1f4d4a}.anv-link:after{content:\"\";position:absolute;left:0;bottom:-8px;width:0;height:2px;background:#1f4d4a;transition:.3s}.anv-link:hover:after{width:100%}.anv-actions{display:flex;align-items:center;gap:18px;flex-shrink:0;margin-left:auto}.anv-icon-btn{width:42px;height:42px;display:flex;justify-content:center;align-items:center;border:none;background:none;cursor:pointer;transition:.3s;border-radius:50%}.anv-icon-btn:hover{background:#f4f4f4;transform:translateY(-2px)}.anv-divider{width:1px;height:32px;background:#d8d8d8}.anv-login-btn{padding:10px 24px;border:none;border-radius:30px;background:#1f4d4a;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:.3s}.anv-login-btn:hover{background:#163836;transform:translateY(-2px);box-shadow:0 8px 18px #0000002e}.anv-login-btn:active{transform:scale(.96)}.anv-profile-wrap{position:relative}.anv-profile-btn{width:48px;height:48px;border:none;border-radius:50%;background:#111;color:#fff;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:.3s}.anv-profile-btn:hover{transform:scale(1.08);box-shadow:0 8px 18px #00000026}.anv-dropdown{position:absolute;top:calc(100% + 12px);right:0;width:260px;background:#fff;border-radius:14px;box-shadow:0 12px 30px #0000002e;overflow:hidden;animation:dropdown .25s ease;z-index:999}@keyframes dropdown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.anv-dropdown-header{display:flex;align-items:center;gap:12px;padding:16px}.anv-dropdown-avatar{width:45px;height:45px;border-radius:50%;background:#111;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700}.anv-dropdown-info{display:flex;flex-direction:column;overflow:hidden}.anv-dropdown-name{font-weight:700;font-size:15px}.anv-dropdown-email{font-size:13px;color:#777;overflow:hidden;text-overflow:ellipsis}.anv-dropdown-sep{border:none;border-top:1px solid #eee;margin:0}.anv-dropdown-item{width:100%;padding:14px 18px;background:none;border:none;cursor:pointer;text-align:left;font-size:15px;transition:.3s}.anv-dropdown-item:hover{background:#f7f7f7}.anv-logout{color:#d32f2f;font-weight:600}@media(max-width:992px){.anv-content{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 20px;gap:12px}.anv-brand{flex-shrink:0}.anv-brand-icon{width:90px}.anv-links{flex:1;display:flex;justify-content:center;gap:18px;min-width:0;overflow:hidden}.anv-link{font-size:14px}.anv-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-left:auto}.anv-login-btn{padding:8px 16px;font-size:13px}.anv-profile-btn{width:40px;height:40px}}@media(max-width:768px){.anv-content{padding:12px 16px;gap:10px}.anv-brand-icon{width:80px}.anv-link{font-size:13px}.anv-links{gap:10px;overflow-x:auto;scrollbar-width:none}.anv-links::-webkit-scrollbar{display:none}.anv-login-btn{padding:7px 12px;font-size:12px}.anv-profile-btn{width:36px;height:36px}}.anv-navbar,.anv-stripes{width:100%;background:#fff}.anv-content{width:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatIconModule }] });
|
|
60
72
|
}
|
|
61
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Navbar, decorators: [{
|
|
62
74
|
type: Component,
|
|
63
|
-
args: [{ selector: 'lib-navbar', standalone: true, imports: [CommonModule, RouterModule], template: "<header class=\"anv-navbar\">\n <div class=\"anv-
|
|
75
|
+
args: [{ selector: 'lib-navbar', standalone: true, imports: [CommonModule, RouterModule, MatIconModule], template: "<header class=\"anv-navbar\">\n\n <!--TOP STRIPE-->\n <div class=\"anv-topbar\"></div>\n <!--NAVBAR-->\n <div class=\"anv-stripes\">\n <div class=\"anv-content\">\n\n <!--BRAND / LOGO-->\n <img *ngIf=\"image\" [src]=\"image\" [alt]=\"logoAlt\" class=\"anv-brand-icon\" />\n <span *ngIf=\"brand\" class=\"anv-brand-name\">\n {{ brand }}\n </span>\n\n <!--NAVIGATION LINKS-->\n <nav class=\"anv-links\" aria-label=\"Main navigation\">\n <a *ngFor=\"let link of links\" [routerLink]=\"link.url\" routerLinkActive=\"anv-link-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\" class=\"anv-link\">\n {{ link.label }}\n </a>\n </nav>\n\n\n <!--ACTIONS-->\n <div class=\"anv-actions\">\n <!--NOTIFICATION-->\n <button type=\"button\" class=\"anv-icon-btn\" aria-label=\"Notifications\">\n <span class=\"material-icons\">\n {{ notificationIcon }}\n </span>\n </button>\n\n \n <!--DIVIDER-->\n <span class=\"anv-divider\"></span>\n\n <!--LOGIN-->\n <button *ngIf=\"!isLoggedIn\" type=\"button\" class=\"anv-login-btn\" (click)=\"handleLoginClick()\">\n Login\n </button>\n\n <!--PROFILE-->\n <div *ngIf=\"isLoggedIn\" class=\"anv-profile-wrap\">\n\n <!-- PROFILE BUTTON -->\n <button type=\"button\" class=\"anv-profile-btn\" (click)=\"handleProfileClick()\"\n [attr.aria-expanded]=\"isDropdownOpen\" aria-haspopup=\"true\" aria-label=\"User profile\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" class=\"anv-profile-image\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ profileIcon }}\n </span>\n \n </button>\n\n <!-- PROFILE DROPDOWN-->\n\n <div *ngIf=\"isDropdownOpen\" class=\"anv-dropdown\">\n <!-- USER INFORMATION -->\n <div class=\"anv-dropdown-header\">\n <!-- USER IMAGE -->\n <div class=\"anv-dropdown-avatar\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ userIcon }}\n </span>\n </div>\n\n <!-- USER DETAILS -->\n\n <div class=\"anv-dropdown-info\">\n <span class=\"anv-dropdown-name\">\n {{ user.name }}\n </span>\n <span class=\"anv-dropdown-email\">\n {{ user.email }}\n </span>\n <span *ngIf=\"user.role\" class=\"anv-dropdown-role\">\n {{ user.role }}\n </span>\n </div>\n </div>\n\n <!-- DIVIDER -->\n <hr class=\"anv-dropdown-sep\">\n <!-- LOGOUT -->\n <button type=\"button\" class=\"anv-dropdown-item anv-logout\" (click)=\"handleLogoutClick()\">\n <span class=\"material-icons\">\n {{ logoutIcon }}\n </span>\n <span>\n Log out\n </span>\n </button>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</header>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*,*:before,*:after{box-sizing:border-box}.anv-navbar{display:flex;font-family:Inter,Arial,sans-serif;background:#fff;position:relative;z-index:1000}.anv-stripes{width:100%;background:#fff;border-bottom:1px solid #e6e6e6;box-shadow:0 2px 12px #0000000d}.anv-content{width:min(1350px,100%);margin:auto 20px auto auto;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:18px clamp(50px,3vw,60px)}.anv-brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.anv-brand-icon{width:clamp(60px,7vw,100px);height:auto;object-fit:contain;transition:.3s}.anv-brand-icon:hover{transform:scale(1.08)}.anv-brand-name{font-size:22px;font-weight:700;color:#1f4d4a;white-space:nowrap}.anv-links{display:flex;justify-content:right;align-items:center;flex:1;gap:clamp(18px,3vw,40px);min-width:0}.anv-link{position:relative;text-decoration:none;color:#555;font-size:17px;font-weight:600;transition:.3s;white-space:nowrap}.anv-link:hover{color:#1f4d4a}.anv-link:after{content:\"\";position:absolute;left:0;bottom:-8px;width:0;height:2px;background:#1f4d4a;transition:.3s}.anv-link:hover:after{width:100%}.anv-actions{display:flex;align-items:center;gap:18px;flex-shrink:0;margin-left:auto}.anv-icon-btn{width:42px;height:42px;display:flex;justify-content:center;align-items:center;border:none;background:none;cursor:pointer;transition:.3s;border-radius:50%}.anv-icon-btn:hover{background:#f4f4f4;transform:translateY(-2px)}.anv-divider{width:1px;height:32px;background:#d8d8d8}.anv-login-btn{padding:10px 24px;border:none;border-radius:30px;background:#1f4d4a;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:.3s}.anv-login-btn:hover{background:#163836;transform:translateY(-2px);box-shadow:0 8px 18px #0000002e}.anv-login-btn:active{transform:scale(.96)}.anv-profile-wrap{position:relative}.anv-profile-btn{width:48px;height:48px;border:none;border-radius:50%;background:#111;color:#fff;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:.3s}.anv-profile-btn:hover{transform:scale(1.08);box-shadow:0 8px 18px #00000026}.anv-dropdown{position:absolute;top:calc(100% + 12px);right:0;width:260px;background:#fff;border-radius:14px;box-shadow:0 12px 30px #0000002e;overflow:hidden;animation:dropdown .25s ease;z-index:999}@keyframes dropdown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.anv-dropdown-header{display:flex;align-items:center;gap:12px;padding:16px}.anv-dropdown-avatar{width:45px;height:45px;border-radius:50%;background:#111;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700}.anv-dropdown-info{display:flex;flex-direction:column;overflow:hidden}.anv-dropdown-name{font-weight:700;font-size:15px}.anv-dropdown-email{font-size:13px;color:#777;overflow:hidden;text-overflow:ellipsis}.anv-dropdown-sep{border:none;border-top:1px solid #eee;margin:0}.anv-dropdown-item{width:100%;padding:14px 18px;background:none;border:none;cursor:pointer;text-align:left;font-size:15px;transition:.3s}.anv-dropdown-item:hover{background:#f7f7f7}.anv-logout{color:#d32f2f;font-weight:600}@media(max-width:992px){.anv-content{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 20px;gap:12px}.anv-brand{flex-shrink:0}.anv-brand-icon{width:90px}.anv-links{flex:1;display:flex;justify-content:center;gap:18px;min-width:0;overflow:hidden}.anv-link{font-size:14px}.anv-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-left:auto}.anv-login-btn{padding:8px 16px;font-size:13px}.anv-profile-btn{width:40px;height:40px}}@media(max-width:768px){.anv-content{padding:12px 16px;gap:10px}.anv-brand-icon{width:80px}.anv-link{font-size:13px}.anv-links{gap:10px;overflow-x:auto;scrollbar-width:none}.anv-links::-webkit-scrollbar{display:none}.anv-login-btn{padding:7px 12px;font-size:12px}.anv-profile-btn{width:36px;height:36px}}.anv-navbar,.anv-stripes{width:100%;background:#fff}.anv-content{width:100%;box-sizing:border-box}\n"] }]
|
|
64
76
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { brand: [{
|
|
65
77
|
type: Input
|
|
78
|
+
}], logoAlt: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], image: [{
|
|
81
|
+
type: Input
|
|
66
82
|
}], links: [{
|
|
67
83
|
type: Input
|
|
68
84
|
}], initiallyLoggedIn: [{
|
|
69
85
|
type: Input
|
|
70
|
-
}],
|
|
86
|
+
}], user: [{
|
|
71
87
|
type: Input
|
|
72
|
-
}],
|
|
88
|
+
}], notificationIcon: [{
|
|
73
89
|
type: Input
|
|
74
|
-
}],
|
|
90
|
+
}], profileIcon: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], userIcon: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], logoutIcon: [{
|
|
75
95
|
type: Input
|
|
76
96
|
}], login: [{
|
|
77
97
|
type: Output
|
|
@@ -82,6 +102,168 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
82
102
|
args: ['document:mousedown', ['$event']]
|
|
83
103
|
}] } });
|
|
84
104
|
|
|
105
|
+
class Button {
|
|
106
|
+
// CONTENT
|
|
107
|
+
text = 'Button';
|
|
108
|
+
// BUTTON TYPE
|
|
109
|
+
type = 'button';
|
|
110
|
+
// VARIANT
|
|
111
|
+
variant = 'solid';
|
|
112
|
+
// STANDARD COLOR
|
|
113
|
+
color = 'primary';
|
|
114
|
+
// CUSTOM COLORS
|
|
115
|
+
customColor;
|
|
116
|
+
hoverColor;
|
|
117
|
+
activeColor;
|
|
118
|
+
textColor;
|
|
119
|
+
borderColor;
|
|
120
|
+
hoverTextColor;
|
|
121
|
+
activeTextColor;
|
|
122
|
+
disabledColor;
|
|
123
|
+
disabledTextColor;
|
|
124
|
+
disabledBorderColor;
|
|
125
|
+
// SIZE
|
|
126
|
+
size = 'md';
|
|
127
|
+
// DISABLED
|
|
128
|
+
disabled = false;
|
|
129
|
+
// CLICK EVENT
|
|
130
|
+
buttonClick = new EventEmitter();
|
|
131
|
+
// CLICK HANDLER
|
|
132
|
+
handleClick(event) {
|
|
133
|
+
if (this.disabled) {
|
|
134
|
+
event.preventDefault();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.buttonClick.emit(event);
|
|
138
|
+
}
|
|
139
|
+
// CSS VARIABLES
|
|
140
|
+
get buttonStyles() {
|
|
141
|
+
const styles = {};
|
|
142
|
+
if (this.customColor) {
|
|
143
|
+
styles['--button-custom-color'] = this.customColor;
|
|
144
|
+
}
|
|
145
|
+
if (this.hoverColor) {
|
|
146
|
+
styles['--button-hover-color'] = this.hoverColor;
|
|
147
|
+
}
|
|
148
|
+
if (this.activeColor) {
|
|
149
|
+
styles['--button-active-color'] = this.activeColor;
|
|
150
|
+
}
|
|
151
|
+
if (this.textColor) {
|
|
152
|
+
styles['--button-text-color'] = this.textColor;
|
|
153
|
+
}
|
|
154
|
+
if (this.borderColor) {
|
|
155
|
+
styles['--button-border-color'] = this.borderColor;
|
|
156
|
+
}
|
|
157
|
+
if (this.hoverTextColor) {
|
|
158
|
+
styles['--button-hover-text-color'] = this.hoverTextColor;
|
|
159
|
+
}
|
|
160
|
+
if (this.activeTextColor) {
|
|
161
|
+
styles['--button-active-text-color'] = this.activeTextColor;
|
|
162
|
+
}
|
|
163
|
+
if (this.disabledColor) {
|
|
164
|
+
styles['--button-disabled-color'] = this.disabledColor;
|
|
165
|
+
}
|
|
166
|
+
if (this.disabledTextColor) {
|
|
167
|
+
styles['--button-disabled-text-color'] =
|
|
168
|
+
this.disabledTextColor;
|
|
169
|
+
}
|
|
170
|
+
if (this.disabledBorderColor) {
|
|
171
|
+
styles['--button-disabled-border-color'] =
|
|
172
|
+
this.disabledBorderColor;
|
|
173
|
+
}
|
|
174
|
+
return styles;
|
|
175
|
+
}
|
|
176
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
177
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: Button, isStandalone: true, selector: "lib-button", inputs: { text: "text", type: "type", variant: "variant", color: "color", customColor: "customColor", hoverColor: "hoverColor", activeColor: "activeColor", textColor: "textColor", borderColor: "borderColor", hoverTextColor: "hoverTextColor", activeTextColor: "activeTextColor", disabledColor: "disabledColor", disabledTextColor: "disabledTextColor", disabledBorderColor: "disabledBorderColor", size: "size", disabled: "disabled" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n\n [ngClass]=\"[\n 'lib-button',\n 'lib-button-' + variant,\n 'lib-button-' + color,\n 'lib-button-' + size\n ]\"\n\n [ngStyle]=\"buttonStyles\"\n\n (click)=\"handleClick($event)\"\n>\n {{ text }}\n</button>", styles: [".lib-button{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af;--button-custom-color: var(--button-default-color);--button-hover-color: var(--button-default-hover-color);--button-active-color: var(--button-default-active-color);--button-text-color: #ffffff;--button-border-color: var(--button-custom-color);--button-hover-text-color: var(--button-text-color);--button-active-text-color: var(--button-text-color);--button-disabled-color: #e5e7eb;--button-disabled-text-color: #9ca3af;--button-disabled-border-color: #d1d5db;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--button-border-color);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:600;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease,transform .1s ease;outline:none}.lib-button-xs{min-height:28px;padding:5px 10px;font-size:12px;border-radius:6px}.lib-button-sm{min-height:34px;padding:7px 14px;font-size:13px;border-radius:7px}.lib-button-md{min-height:40px;padding:9px 18px;font-size:14px;border-radius:8px}.lib-button-lg{min-height:46px;padding:11px 22px;font-size:16px;border-radius:9px}.lib-button-xl{min-height:54px;padding:13px 28px;font-size:18px;border-radius:10px}.lib-button-solid{background:var(--button-custom-color);border-color:var(--button-border-color);color:var(--button-text-color)}.lib-button-solid:hover:not(:disabled){background:var(--button-hover-color);border-color:var(--button-hover-color);color:var(--button-hover-text-color)}.lib-button-solid:active:not(:disabled){background:var(--button-active-color);border-color:var(--button-active-color);color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-outline{background:transparent;border-color:var(--button-border-color);color:var(--button-custom-color)}.lib-button-outline:hover:not(:disabled){background:var(--button-hover-color);border-color:var(--button-hover-color);color:var(--button-hover-text-color)}.lib-button-outline:active:not(:disabled){background:var(--button-active-color);border-color:var(--button-active-color);color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-ghost{background:transparent;border-color:transparent;color:var(--button-custom-color)}.lib-button-ghost:hover:not(:disabled){background:var(--button-hover-color);border-color:transparent;color:var(--button-hover-text-color)}.lib-button-ghost:active:not(:disabled){background:var(--button-active-color);border-color:transparent;color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-primary{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af}.lib-button-secondary{--button-default-color: #64748b;--button-default-hover-color: #475569;--button-default-active-color: #334155}.lib-button-success{--button-default-color: #16a34a;--button-default-hover-color: #15803d;--button-default-active-color: #166534}.lib-button-danger{--button-default-color: #dc2626;--button-default-hover-color: #b91c1c;--button-default-active-color: #991b1b}.lib-button-warning{--button-default-color: #f59e0b;--button-default-hover-color: #d97706;--button-default-active-color: #b45309}.lib-button-info{--button-default-color: #0891b2;--button-default-hover-color: #0e7490;--button-default-active-color: #155e75}.lib-button-neutral{--button-default-color: #374151;--button-default-hover-color: #1f2937;--button-default-active-color: #111827}.lib-button-light{--button-default-color: #f8fafc;--button-default-hover-color: #e2e8f0;--button-default-active-color: #cbd5e1;--button-text-color: #1e293b}.lib-button-dark{--button-default-color: #1e293b;--button-default-hover-color: #0f172a;--button-default-active-color: #020617;--button-text-color: #ffffff}.lib-button-link{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af;background:transparent;border-color:transparent;color:var(--button-custom-color);padding-left:4px;padding-right:4px}.lib-button-link:hover:not(:disabled){background:transparent;border-color:transparent;color:var(--button-hover-color);text-decoration:underline}.lib-button-link:active:not(:disabled){background:transparent;border-color:transparent;color:var(--button-active-color);transform:none}.lib-button:focus-visible{outline:3px solid rgba(37,99,235,.25);outline-offset:2px}.lib-button:disabled{background:var(--button-disabled-color)!important;border-color:var(--button-disabled-border-color)!important;color:var(--button-disabled-text-color)!important;cursor:not-allowed;opacity:.8;transform:none!important;box-shadow:none!important}.lib-button-link:disabled{background:transparent!important;border-color:transparent!important;color:var(--button-disabled-text-color)!important;text-decoration:none}@media(max-width:480px){.lib-button-xl{min-height:50px;padding:11px 22px;font-size:16px}.lib-button-lg{min-height:44px;padding:10px 18px;font-size:15px}.lib-button-md{min-height:38px;padding:8px 16px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
178
|
+
}
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Button, decorators: [{
|
|
180
|
+
type: Component,
|
|
181
|
+
args: [{ selector: 'lib-button', standalone: true, imports: [CommonModule], template: "<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n\n [ngClass]=\"[\n 'lib-button',\n 'lib-button-' + variant,\n 'lib-button-' + color,\n 'lib-button-' + size\n ]\"\n\n [ngStyle]=\"buttonStyles\"\n\n (click)=\"handleClick($event)\"\n>\n {{ text }}\n</button>", styles: [".lib-button{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af;--button-custom-color: var(--button-default-color);--button-hover-color: var(--button-default-hover-color);--button-active-color: var(--button-default-active-color);--button-text-color: #ffffff;--button-border-color: var(--button-custom-color);--button-hover-text-color: var(--button-text-color);--button-active-text-color: var(--button-text-color);--button-disabled-color: #e5e7eb;--button-disabled-text-color: #9ca3af;--button-disabled-border-color: #d1d5db;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--button-border-color);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:600;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease,transform .1s ease;outline:none}.lib-button-xs{min-height:28px;padding:5px 10px;font-size:12px;border-radius:6px}.lib-button-sm{min-height:34px;padding:7px 14px;font-size:13px;border-radius:7px}.lib-button-md{min-height:40px;padding:9px 18px;font-size:14px;border-radius:8px}.lib-button-lg{min-height:46px;padding:11px 22px;font-size:16px;border-radius:9px}.lib-button-xl{min-height:54px;padding:13px 28px;font-size:18px;border-radius:10px}.lib-button-solid{background:var(--button-custom-color);border-color:var(--button-border-color);color:var(--button-text-color)}.lib-button-solid:hover:not(:disabled){background:var(--button-hover-color);border-color:var(--button-hover-color);color:var(--button-hover-text-color)}.lib-button-solid:active:not(:disabled){background:var(--button-active-color);border-color:var(--button-active-color);color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-outline{background:transparent;border-color:var(--button-border-color);color:var(--button-custom-color)}.lib-button-outline:hover:not(:disabled){background:var(--button-hover-color);border-color:var(--button-hover-color);color:var(--button-hover-text-color)}.lib-button-outline:active:not(:disabled){background:var(--button-active-color);border-color:var(--button-active-color);color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-ghost{background:transparent;border-color:transparent;color:var(--button-custom-color)}.lib-button-ghost:hover:not(:disabled){background:var(--button-hover-color);border-color:transparent;color:var(--button-hover-text-color)}.lib-button-ghost:active:not(:disabled){background:var(--button-active-color);border-color:transparent;color:var(--button-active-text-color);transform:translateY(1px)}.lib-button-primary{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af}.lib-button-secondary{--button-default-color: #64748b;--button-default-hover-color: #475569;--button-default-active-color: #334155}.lib-button-success{--button-default-color: #16a34a;--button-default-hover-color: #15803d;--button-default-active-color: #166534}.lib-button-danger{--button-default-color: #dc2626;--button-default-hover-color: #b91c1c;--button-default-active-color: #991b1b}.lib-button-warning{--button-default-color: #f59e0b;--button-default-hover-color: #d97706;--button-default-active-color: #b45309}.lib-button-info{--button-default-color: #0891b2;--button-default-hover-color: #0e7490;--button-default-active-color: #155e75}.lib-button-neutral{--button-default-color: #374151;--button-default-hover-color: #1f2937;--button-default-active-color: #111827}.lib-button-light{--button-default-color: #f8fafc;--button-default-hover-color: #e2e8f0;--button-default-active-color: #cbd5e1;--button-text-color: #1e293b}.lib-button-dark{--button-default-color: #1e293b;--button-default-hover-color: #0f172a;--button-default-active-color: #020617;--button-text-color: #ffffff}.lib-button-link{--button-default-color: #2563eb;--button-default-hover-color: #1d4ed8;--button-default-active-color: #1e40af;background:transparent;border-color:transparent;color:var(--button-custom-color);padding-left:4px;padding-right:4px}.lib-button-link:hover:not(:disabled){background:transparent;border-color:transparent;color:var(--button-hover-color);text-decoration:underline}.lib-button-link:active:not(:disabled){background:transparent;border-color:transparent;color:var(--button-active-color);transform:none}.lib-button:focus-visible{outline:3px solid rgba(37,99,235,.25);outline-offset:2px}.lib-button:disabled{background:var(--button-disabled-color)!important;border-color:var(--button-disabled-border-color)!important;color:var(--button-disabled-text-color)!important;cursor:not-allowed;opacity:.8;transform:none!important;box-shadow:none!important}.lib-button-link:disabled{background:transparent!important;border-color:transparent!important;color:var(--button-disabled-text-color)!important;text-decoration:none}@media(max-width:480px){.lib-button-xl{min-height:50px;padding:11px 22px;font-size:16px}.lib-button-lg{min-height:44px;padding:10px 18px;font-size:15px}.lib-button-md{min-height:38px;padding:8px 16px}}\n"] }]
|
|
182
|
+
}], propDecorators: { text: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], type: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], variant: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], color: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], customColor: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], hoverColor: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], activeColor: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], textColor: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], borderColor: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], hoverTextColor: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], activeTextColor: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}], disabledColor: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], disabledTextColor: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], disabledBorderColor: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], size: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], disabled: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], buttonClick: [{
|
|
215
|
+
type: Output
|
|
216
|
+
}] } });
|
|
217
|
+
|
|
218
|
+
class Card {
|
|
219
|
+
title = 'Last 24 hours';
|
|
220
|
+
month = 'Jul';
|
|
221
|
+
day = 9;
|
|
222
|
+
description = '156 flights were monitored with 96.8% on-time performance. Minor delays occurred due to weather and air traffic.';
|
|
223
|
+
cardClick = new EventEmitter();
|
|
224
|
+
onCardClick() {
|
|
225
|
+
this.cardClick.emit();
|
|
226
|
+
}
|
|
227
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Card, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
228
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: Card, isStandalone: true, selector: "lib-card", inputs: { title: "title", month: "month", day: "day", description: "description" }, outputs: { cardClick: "cardClick" }, ngImport: i0, template: "<div class=\"card mat-elevation-z1\" (click)=\"onCardClick()\" role=\"button\" tabindex=\"0\">\n\n <!-- Title -->\n <h2 class=\"mat-headline-4 card-title\">\n {{ title }}\n </h2>\n\n <!-- Content -->\n <div class=\"card-content\">\n\n <!-- Date -->\n <div class=\"date-box\">\n\n <div class=\"month mat-title-medium\">\n {{ month }}\n </div>\n\n <div class=\"day mat-headline-5\">\n {{ day }}\n </div>\n\n </div>\n\n <!-- Description -->\n <div class=\"description mat-body-large\">\n {{ description }}\n </div>\n\n </div>\n\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.card{width:100%;min-height:180px;box-sizing:border-box;border:3px solid #dedede;border-radius:12px;padding:30px 26px;background:#fff;display:flex;flex-direction:column;cursor:pointer;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.card:hover{border-color:#c8c8c8;box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.card-title{margin:0 0 34px;font-size:38px;font-weight:700;line-height:1.1}.card-content{display:flex;align-items:center;gap:25px;flex:1;justify-content:center;margin:0 0 0 37px}.date-box{width:92px;min-width:92px;height:96px;border-radius:12px;background:#f3f1ee;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid #d6d1cc}.month{color:#6b1f2b;font-weight:700;font-size:24px;line-height:1}.day{color:#000;font-size:26px;font-weight:700;line-height:1;padding-top:6px}.description{max-width:560px;color:#222;font-size:20px;font-weight:500;line-height:1.3}@media(max-width:768px){.card{padding:25px 20px}.card-title{font-size:32px;margin-bottom:25px}.description{font-size:18px}}@media(max-width:500px){.card{min-height:auto;padding:22px 16px}.card-title{font-size:28px;margin-bottom:22px}.card-content{align-items:flex-start;gap:16px}.date-box{width:75px;min-width:75px;height:85px}.month{font-size:20px}.date-line{width:48px}.day{font-size:23px}.description{font-size:16px}}\n"] });
|
|
229
|
+
}
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: Card, decorators: [{
|
|
231
|
+
type: Component,
|
|
232
|
+
args: [{ selector: 'lib-card', imports: [], template: "<div class=\"card mat-elevation-z1\" (click)=\"onCardClick()\" role=\"button\" tabindex=\"0\">\n\n <!-- Title -->\n <h2 class=\"mat-headline-4 card-title\">\n {{ title }}\n </h2>\n\n <!-- Content -->\n <div class=\"card-content\">\n\n <!-- Date -->\n <div class=\"date-box\">\n\n <div class=\"month mat-title-medium\">\n {{ month }}\n </div>\n\n <div class=\"day mat-headline-5\">\n {{ day }}\n </div>\n\n </div>\n\n <!-- Description -->\n <div class=\"description mat-body-large\">\n {{ description }}\n </div>\n\n </div>\n\n</div>", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";.card{width:100%;min-height:180px;box-sizing:border-box;border:3px solid #dedede;border-radius:12px;padding:30px 26px;background:#fff;display:flex;flex-direction:column;cursor:pointer;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.card:hover{border-color:#c8c8c8;box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.card-title{margin:0 0 34px;font-size:38px;font-weight:700;line-height:1.1}.card-content{display:flex;align-items:center;gap:25px;flex:1;justify-content:center;margin:0 0 0 37px}.date-box{width:92px;min-width:92px;height:96px;border-radius:12px;background:#f3f1ee;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid #d6d1cc}.month{color:#6b1f2b;font-weight:700;font-size:24px;line-height:1}.day{color:#000;font-size:26px;font-weight:700;line-height:1;padding-top:6px}.description{max-width:560px;color:#222;font-size:20px;font-weight:500;line-height:1.3}@media(max-width:768px){.card{padding:25px 20px}.card-title{font-size:32px;margin-bottom:25px}.description{font-size:18px}}@media(max-width:500px){.card{min-height:auto;padding:22px 16px}.card-title{font-size:28px;margin-bottom:22px}.card-content{align-items:flex-start;gap:16px}.date-box{width:75px;min-width:75px;height:85px}.month{font-size:20px}.date-line{width:48px}.day{font-size:23px}.description{font-size:16px}}\n"] }]
|
|
233
|
+
}], propDecorators: { title: [{
|
|
234
|
+
type: Input
|
|
235
|
+
}], month: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], day: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], description: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], cardClick: [{
|
|
242
|
+
type: Output
|
|
243
|
+
}] } });
|
|
244
|
+
|
|
245
|
+
class TimeFilter {
|
|
246
|
+
label = 'Last 24 hours';
|
|
247
|
+
selected = false;
|
|
248
|
+
selectedChange = new EventEmitter();
|
|
249
|
+
onClick() {
|
|
250
|
+
this.selected = !this.selected;
|
|
251
|
+
this.selectedChange.emit(this.selected);
|
|
252
|
+
}
|
|
253
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TimeFilter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
254
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: TimeFilter, isStandalone: true, selector: "lib-time-filter", inputs: { label: "label", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<div class=\"time-filter\" (click)=\"onClick()\" role=\"button\" tabindex=\"0\">\n <div class=\"radio-circle\" [class.selected]=\"selected\">\n <div class=\"radio-dot\"></div>\n </div>\n\n <span class=\"label\">\n {{ label }}\n </span>\n</div>", styles: [".time-filter{display:flex;align-items:center;gap:16px;width:fit-content;cursor:pointer;-webkit-user-select:none;user-select:none}.radio-circle{width:24px;height:24px;border:2px solid #a6a6a6;border-radius:50%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;transition:border-color .2s ease}.radio-dot{width:12px;height:12px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-circle.selected{border-color:#1976d2}.radio-circle.selected .radio-dot{background:#1976d2}.label{font-size:20px;font-weight:400;color:#000;line-height:1}.label:hover{color:#333}\n"] });
|
|
255
|
+
}
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TimeFilter, decorators: [{
|
|
257
|
+
type: Component,
|
|
258
|
+
args: [{ selector: 'lib-time-filter', imports: [], template: "<div class=\"time-filter\" (click)=\"onClick()\" role=\"button\" tabindex=\"0\">\n <div class=\"radio-circle\" [class.selected]=\"selected\">\n <div class=\"radio-dot\"></div>\n </div>\n\n <span class=\"label\">\n {{ label }}\n </span>\n</div>", styles: [".time-filter{display:flex;align-items:center;gap:16px;width:fit-content;cursor:pointer;-webkit-user-select:none;user-select:none}.radio-circle{width:24px;height:24px;border:2px solid #a6a6a6;border-radius:50%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;transition:border-color .2s ease}.radio-dot{width:12px;height:12px;border-radius:50%;background:transparent;transition:background .2s ease}.radio-circle.selected{border-color:#1976d2}.radio-circle.selected .radio-dot{background:#1976d2}.label{font-size:20px;font-weight:400;color:#000;line-height:1}.label:hover{color:#333}\n"] }]
|
|
259
|
+
}], propDecorators: { label: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], selected: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], selectedChange: [{
|
|
264
|
+
type: Output
|
|
265
|
+
}] } });
|
|
266
|
+
|
|
85
267
|
/*
|
|
86
268
|
* Public API Surface of balinaui-components
|
|
87
269
|
*/
|
|
@@ -90,5 +272,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
90
272
|
* Generated bundle index. Do not edit.
|
|
91
273
|
*/
|
|
92
274
|
|
|
93
|
-
export { BalinauiComponents, Navbar };
|
|
275
|
+
export { BalinauiComponents, Button, Card, Navbar, TimeFilter };
|
|
94
276
|
//# sourceMappingURL=balinasoftware-balinaui-components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balinasoftware-balinaui-components.mjs","sources":["../../../projects/balinaui-components/src/lib/balinaui-components.ts","../../../projects/balinaui-components/src/lib/navbar/navbar.ts","../../../projects/balinaui-components/src/lib/navbar/navbar.html","../../../projects/balinaui-components/src/public-api.ts","../../../projects/balinaui-components/src/balinasoftware-balinaui-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-balinaui-components',\n imports: [],\n template: ` <p>balinaui-components works!</p> `,\n styles: ``,\n})\nexport class BalinauiComponents {}\n","import { Component,ElementRef,HostListener,Input,Output,ViewEncapsulation, } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nexport interface NavLink {\n label: string;\n url: string;\n}\n\n@Component({\n selector: 'lib-navbar',\n standalone: true,\n imports: [CommonModule, RouterModule],\n templateUrl: './navbar.html',\n styleUrl: './navbar.css',\n})\nexport class Navbar {\n @Input() brand = 'Aero';\n @Input() links: NavLink[] = [\n { label: 'Home', url: '/' },\n { label: 'About', url: '/about' },\n { label: 'Contact', url: '/contact' }\n ];\n @Input() initiallyLoggedIn = false;\n @Input() userName = 'Guest User';\n @Input() userEmail = 'guest@example.com';\n \n @Input()image = 'https://i.pinimg.com/1200x/4a/57/0c/4a570c4e8dbb4729567848eb69c19055.jpg';\n\n @Output() login = new EventEmitter();\n @Output() logout = new EventEmitter();\n\n isLoggedIn = false;\n isDropdownOpen = false;\nAerologo: any;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.isLoggedIn = this.initiallyLoggedIn;\n }\n\n handleLoginClick() {\n this.isLoggedIn = true;\n this.login.emit();\n }\n\n handleProfileClick() {\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n handleLogoutClick() {\n this.isLoggedIn = false;\n this.isDropdownOpen = false;\n this.logout.emit();\n }\n\n // Close the dropdown when clicking outside of it\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)) {\n this.isDropdownOpen = false;\n }\n }\n}\n","<header class=\"anv-navbar\">\n <div class=\"anv-stripes\">\n <div class=\"anv-content\">\n <div class=\"anv-brand\">\n <img [src]=\"image\"\n [alt]=\"Aerologo\"\n class=\"anv-brand-icon\" >\n </div>\n\n <nav class=\"anv-links\">\n <a\n *ngFor=\"let link of links\"\n [routerLink]=\"link.url\"\n class=\"anv-link\">\n {{ link.label }}\n </a>\n </nav>\n\n <div class=\"anv-actions\">\n <button class=\"anv-icon-btn\" aria-label=\"Notifications\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"/>\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"/>\n </svg>\n </button>\n\n <span class=\"anv-divider\"></span>\n\n <button *ngIf=\"!isLoggedIn\" class=\"anv-login-btn\" (click)=\"handleLoginClick()\">\n Login\n </button>\n\n <div *ngIf=\"isLoggedIn\" class=\"anv-profile-wrap\">\n <button\n class=\"anv-profile-btn\"\n (click)=\"handleProfileClick()\"\n [attr.aria-expanded]=\"isDropdownOpen\"\n aria-haspopup=\"true\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"12\" cy=\"7\" r=\"4\"/>\n </svg>\n </button>\n\n <div *ngIf=\"isDropdownOpen\" class=\"anv-dropdown\">\n <div class=\"anv-dropdown-header\">\n <div class=\"anv-dropdown-avatar\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"12\" cy=\"7\" r=\"4\"/>\n </svg>\n </div>\n <div class=\"anv-dropdown-info\">\n <span class=\"anv-dropdown-name\">{{ userName }}</span>\n <span class=\"anv-dropdown-email\">{{ userEmail }}</span>\n </div>\n </div>\n <hr class=\"anv-dropdown-sep\" />\n <button class=\"anv-dropdown-item anv-logout\" (click)=\"handleLogoutClick()\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/>\n <polyline points=\"16 17 21 12 16 7\"/>\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\"/>\n </svg>\n Log out\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</header>","/*\n * Public API Surface of balinaui-components\n */\n\nexport * from './lib/balinaui-components';\nexport * from './lib/navbar/navbar';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"balinasoftware-balinaui-components.mjs","sources":["../../../projects/balinaui-components/src/lib/balinaui-components.ts","../../../projects/balinaui-components/src/lib/navbar/navbar.ts","../../../projects/balinaui-components/src/lib/navbar/navbar.html","../../../projects/balinaui-components/src/lib/button/button.ts","../../../projects/balinaui-components/src/lib/button/button.html","../../../projects/balinaui-components/src/lib/card/card.ts","../../../projects/balinaui-components/src/lib/card/card.html","../../../projects/balinaui-components/src/lib/time-filter/time-filter.ts","../../../projects/balinaui-components/src/lib/time-filter/time-filter.html","../../../projects/balinaui-components/src/public-api.ts","../../../projects/balinaui-components/src/balinasoftware-balinaui-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-balinaui-components',\n imports: [],\n template: ` <p>balinaui-components works!</p> `,\n styles: ``,\n})\nexport class BalinauiComponents {}\n","import { Component, ElementRef, HostListener, Input, Output, ViewEncapsulation, } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nexport interface NavLink {\n label: string;\n url: string;\n}\n\nexport interface UserProfile {\n name: any;\n username: string;\n email: string;\n image?: string;\n role?: string;\n initials?: string;\n}\n@Component({\n selector: 'lib-navbar',\n standalone: true,\n imports: [CommonModule, RouterModule, MatIconModule],\n templateUrl: './navbar.html',\n styleUrl: './navbar.css',\n})\nexport class Navbar {\n\n // Brand\n @Input() brand = 'Aero';\n\n @Input() logoAlt = 'Aero logo';\n\n @Input() image = '';\n\n // Navigation\n @Input() links: NavLink[] = [];\n\n // Authentication\n @Input() initiallyLoggedIn = false;\n\n // User profile\n @Input() user: UserProfile = {\n username: 'Guest User',\n email: 'guest@example.com',\n image: '',\n role: 'Guest',\n name: undefined\n };\n\n // Icons\n @Input() notificationIcon = 'notifications';\n\n @Input() profileIcon = 'account_circle';\n\n @Input() userIcon = 'person';\n\n @Input() logoutIcon = 'logout';\n\n // Events\n @Output() login = new EventEmitter<void>();\n\n @Output() logout = new EventEmitter<void>();\n\n isLoggedIn = false;\n isDropdownOpen = false;\n\n constructor(private elementRef: ElementRef) { }\n\n ngOnInit(): void {\n this.isLoggedIn = this.initiallyLoggedIn;\n }\n\n handleLoginClick(): void {\n this.isLoggedIn = true;\n this.login.emit();\n }\n\n handleProfileClick(): void {\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n handleLogoutClick(): void {\n this.isLoggedIn = false;\n this.isDropdownOpen = false;\n this.logout.emit();\n }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n\n if (\n this.isDropdownOpen &&\n !this.elementRef.nativeElement.contains(event.target)\n ) {\n this.isDropdownOpen = false;\n }\n }\n}\n","<header class=\"anv-navbar\">\n\n <!--TOP STRIPE-->\n <div class=\"anv-topbar\"></div>\n <!--NAVBAR-->\n <div class=\"anv-stripes\">\n <div class=\"anv-content\">\n\n <!--BRAND / LOGO-->\n <img *ngIf=\"image\" [src]=\"image\" [alt]=\"logoAlt\" class=\"anv-brand-icon\" />\n <span *ngIf=\"brand\" class=\"anv-brand-name\">\n {{ brand }}\n </span>\n\n <!--NAVIGATION LINKS-->\n <nav class=\"anv-links\" aria-label=\"Main navigation\">\n <a *ngFor=\"let link of links\" [routerLink]=\"link.url\" routerLinkActive=\"anv-link-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\" class=\"anv-link\">\n {{ link.label }}\n </a>\n </nav>\n\n\n <!--ACTIONS-->\n <div class=\"anv-actions\">\n <!--NOTIFICATION-->\n <button type=\"button\" class=\"anv-icon-btn\" aria-label=\"Notifications\">\n <span class=\"material-icons\">\n {{ notificationIcon }}\n </span>\n </button>\n\n \n <!--DIVIDER-->\n <span class=\"anv-divider\"></span>\n\n <!--LOGIN-->\n <button *ngIf=\"!isLoggedIn\" type=\"button\" class=\"anv-login-btn\" (click)=\"handleLoginClick()\">\n Login\n </button>\n\n <!--PROFILE-->\n <div *ngIf=\"isLoggedIn\" class=\"anv-profile-wrap\">\n\n <!-- PROFILE BUTTON -->\n <button type=\"button\" class=\"anv-profile-btn\" (click)=\"handleProfileClick()\"\n [attr.aria-expanded]=\"isDropdownOpen\" aria-haspopup=\"true\" aria-label=\"User profile\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" class=\"anv-profile-image\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ profileIcon }}\n </span>\n \n </button>\n\n <!-- PROFILE DROPDOWN-->\n\n <div *ngIf=\"isDropdownOpen\" class=\"anv-dropdown\">\n <!-- USER INFORMATION -->\n <div class=\"anv-dropdown-header\">\n <!-- USER IMAGE -->\n <div class=\"anv-dropdown-avatar\">\n <img *ngIf=\"user.image\" [src]=\"user.image\" [alt]=\"user.name\" />\n <span *ngIf=\"!user.image\" class=\"material-icons\">\n {{ userIcon }}\n </span>\n </div>\n\n <!-- USER DETAILS -->\n\n <div class=\"anv-dropdown-info\">\n <span class=\"anv-dropdown-name\">\n {{ user.name }}\n </span>\n <span class=\"anv-dropdown-email\">\n {{ user.email }}\n </span>\n <span *ngIf=\"user.role\" class=\"anv-dropdown-role\">\n {{ user.role }}\n </span>\n </div>\n </div>\n\n <!-- DIVIDER -->\n <hr class=\"anv-dropdown-sep\">\n <!-- LOGOUT -->\n <button type=\"button\" class=\"anv-dropdown-item anv-logout\" (click)=\"handleLogoutClick()\">\n <span class=\"material-icons\">\n {{ logoutIcon }}\n </span>\n <span>\n Log out\n </span>\n </button>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</header>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nexport type ButtonVariant =\n | 'solid'\n | 'outline'\n | 'ghost';\n\nexport type ButtonColor =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'neutral'\n | 'light'\n | 'dark'\n | 'link';\n\nexport type ButtonSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl';\n\n@Component({\n selector: 'lib-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.html',\n styleUrl: './button.css',\n})\nexport class Button {\n // CONTENT\n @Input() text = 'Button';\n // BUTTON TYPE\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n // VARIANT\n @Input() variant: ButtonVariant = 'solid';\n // STANDARD COLOR\n @Input() color: ButtonColor = 'primary';\n // CUSTOM COLORS\n @Input() customColor?: string;\n @Input() hoverColor?: string;\n @Input() activeColor?: string;\n @Input() textColor?: string;\n @Input() borderColor?: string;\n @Input() hoverTextColor?: string;\n @Input() activeTextColor?: string;\n @Input() disabledColor?: string;\n @Input() disabledTextColor?: string;\n @Input() disabledBorderColor?: string;\n // SIZE\n @Input() size: ButtonSize = 'md';\n // DISABLED\n @Input() disabled = false;\n // CLICK EVENT\n \n @Output() buttonClick = new EventEmitter<MouseEvent>();\n // CLICK HANDLER\n handleClick(event: MouseEvent): void {\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n this.buttonClick.emit(event);\n }\n\n // CSS VARIABLES\n\n get buttonStyles(): Record<string, string> {\n\n const styles: Record<string, string> = {};\n\n if (this.customColor) {\n styles['--button-custom-color'] = this.customColor;\n }\n\n if (this.hoverColor) {\n styles['--button-hover-color'] = this.hoverColor;\n }\n\n if (this.activeColor) {\n styles['--button-active-color'] = this.activeColor;\n }\n\n if (this.textColor) {\n styles['--button-text-color'] = this.textColor;\n }\n\n if (this.borderColor) {\n styles['--button-border-color'] = this.borderColor;\n }\n\n if (this.hoverTextColor) {\n styles['--button-hover-text-color'] = this.hoverTextColor;\n }\n\n if (this.activeTextColor) {\n styles['--button-active-text-color'] = this.activeTextColor;\n }\n\n if (this.disabledColor) {\n styles['--button-disabled-color'] = this.disabledColor;\n }\n\n if (this.disabledTextColor) {\n styles['--button-disabled-text-color'] =\n this.disabledTextColor;\n }\n\n if (this.disabledBorderColor) {\n styles['--button-disabled-border-color'] =\n this.disabledBorderColor;\n }\n\n return styles;\n }\n}","<button\n [type]=\"type\"\n [disabled]=\"disabled\"\n\n [ngClass]=\"[\n 'lib-button',\n 'lib-button-' + variant,\n 'lib-button-' + color,\n 'lib-button-' + size\n ]\"\n\n [ngStyle]=\"buttonStyles\"\n\n (click)=\"handleClick($event)\"\n>\n {{ text }}\n</button>","import { Component , Input ,Output ,EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-card',\n imports: [],\n templateUrl: './card.html',\n styleUrl: './card.css',\n})\nexport class Card {\n @Input() title: string = 'Last 24 hours';\n\n @Input() month: string = 'Jul';\n\n @Input() day: string | number = 9;\n\n @Input() description: string =\n '156 flights were monitored with 96.8% on-time performance. Minor delays occurred due to weather and air traffic.';\n\n @Output() cardClick = new EventEmitter<void>();\n\n onCardClick(): void {\n this.cardClick.emit();\n }\n}\n","<div class=\"card mat-elevation-z1\" (click)=\"onCardClick()\" role=\"button\" tabindex=\"0\">\n\n <!-- Title -->\n <h2 class=\"mat-headline-4 card-title\">\n {{ title }}\n </h2>\n\n <!-- Content -->\n <div class=\"card-content\">\n\n <!-- Date -->\n <div class=\"date-box\">\n\n <div class=\"month mat-title-medium\">\n {{ month }}\n </div>\n\n <div class=\"day mat-headline-5\">\n {{ day }}\n </div>\n\n </div>\n\n <!-- Description -->\n <div class=\"description mat-body-large\">\n {{ description }}\n </div>\n\n </div>\n\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-time-filter',\n imports: [],\n templateUrl: './time-filter.html',\n styleUrl: './time-filter.css',\n})\nexport class TimeFilter {\n @Input() label: string = 'Last 24 hours';\n\n @Input() selected: boolean = false;\n\n @Output() selectedChange = new EventEmitter<boolean>();\n\n onClick(): void {\n this.selected = !this.selected;\n this.selectedChange.emit(this.selected);\n }\n}\n","<div class=\"time-filter\" (click)=\"onClick()\" role=\"button\" tabindex=\"0\">\n <div class=\"radio-circle\" [class.selected]=\"selected\">\n <div class=\"radio-dot\"></div>\n </div>\n\n <span class=\"label\">\n {{ label }}\n </span>\n</div>","/*\n * Public API Surface of balinaui-components\n */\n\nexport * from './lib/balinaui-components';\nexport * from './lib/navbar/navbar';\nexport * from './lib/button/button';\nexport * from './lib/card/card';\nexport * from './lib/time-filter/time-filter';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,19 +10,30 @@ interface NavLink {
|
|
|
10
10
|
label: string;
|
|
11
11
|
url: string;
|
|
12
12
|
}
|
|
13
|
+
interface UserProfile {
|
|
14
|
+
name: any;
|
|
15
|
+
username: string;
|
|
16
|
+
email: string;
|
|
17
|
+
image?: string;
|
|
18
|
+
role?: string;
|
|
19
|
+
initials?: string;
|
|
20
|
+
}
|
|
13
21
|
declare class Navbar {
|
|
14
22
|
private elementRef;
|
|
15
23
|
brand: string;
|
|
24
|
+
logoAlt: string;
|
|
25
|
+
image: string;
|
|
16
26
|
links: NavLink[];
|
|
17
27
|
initiallyLoggedIn: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
user: UserProfile;
|
|
29
|
+
notificationIcon: string;
|
|
30
|
+
profileIcon: string;
|
|
31
|
+
userIcon: string;
|
|
32
|
+
logoutIcon: string;
|
|
33
|
+
login: EventEmitter<void>;
|
|
34
|
+
logout: EventEmitter<void>;
|
|
23
35
|
isLoggedIn: boolean;
|
|
24
36
|
isDropdownOpen: boolean;
|
|
25
|
-
Aerologo: any;
|
|
26
37
|
constructor(elementRef: ElementRef);
|
|
27
38
|
ngOnInit(): void;
|
|
28
39
|
handleLoginClick(): void;
|
|
@@ -30,8 +41,55 @@ declare class Navbar {
|
|
|
30
41
|
handleLogoutClick(): void;
|
|
31
42
|
onDocumentClick(event: MouseEvent): void;
|
|
32
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<Navbar, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<Navbar, "lib-navbar", never, { "brand": { "alias": "brand"; "required": false; }; "links": { "alias": "links"; "required": false; }; "initiallyLoggedIn": { "alias": "initiallyLoggedIn"; "required": false; }; "
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Navbar, "lib-navbar", never, { "brand": { "alias": "brand"; "required": false; }; "logoAlt": { "alias": "logoAlt"; "required": false; }; "image": { "alias": "image"; "required": false; }; "links": { "alias": "links"; "required": false; }; "initiallyLoggedIn": { "alias": "initiallyLoggedIn"; "required": false; }; "user": { "alias": "user"; "required": false; }; "notificationIcon": { "alias": "notificationIcon"; "required": false; }; "profileIcon": { "alias": "profileIcon"; "required": false; }; "userIcon": { "alias": "userIcon"; "required": false; }; "logoutIcon": { "alias": "logoutIcon"; "required": false; }; }, { "login": "login"; "logout": "logout"; }, never, never, true, never>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
type ButtonVariant = 'solid' | 'outline' | 'ghost';
|
|
48
|
+
type ButtonColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'neutral' | 'light' | 'dark' | 'link';
|
|
49
|
+
type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
50
|
+
declare class Button {
|
|
51
|
+
text: string;
|
|
52
|
+
type: 'button' | 'submit' | 'reset';
|
|
53
|
+
variant: ButtonVariant;
|
|
54
|
+
color: ButtonColor;
|
|
55
|
+
customColor?: string;
|
|
56
|
+
hoverColor?: string;
|
|
57
|
+
activeColor?: string;
|
|
58
|
+
textColor?: string;
|
|
59
|
+
borderColor?: string;
|
|
60
|
+
hoverTextColor?: string;
|
|
61
|
+
activeTextColor?: string;
|
|
62
|
+
disabledColor?: string;
|
|
63
|
+
disabledTextColor?: string;
|
|
64
|
+
disabledBorderColor?: string;
|
|
65
|
+
size: ButtonSize;
|
|
66
|
+
disabled: boolean;
|
|
67
|
+
buttonClick: EventEmitter<MouseEvent>;
|
|
68
|
+
handleClick(event: MouseEvent): void;
|
|
69
|
+
get buttonStyles(): Record<string, string>;
|
|
70
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Button, never>;
|
|
71
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Button, "lib-button", never, { "text": { "alias": "text"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "color": { "alias": "color"; "required": false; }; "customColor": { "alias": "customColor"; "required": false; }; "hoverColor": { "alias": "hoverColor"; "required": false; }; "activeColor": { "alias": "activeColor"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; "hoverTextColor": { "alias": "hoverTextColor"; "required": false; }; "activeTextColor": { "alias": "activeTextColor"; "required": false; }; "disabledColor": { "alias": "disabledColor"; "required": false; }; "disabledTextColor": { "alias": "disabledTextColor"; "required": false; }; "disabledBorderColor": { "alias": "disabledBorderColor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "buttonClick": "buttonClick"; }, never, never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
declare class Card {
|
|
75
|
+
title: string;
|
|
76
|
+
month: string;
|
|
77
|
+
day: string | number;
|
|
78
|
+
description: string;
|
|
79
|
+
cardClick: EventEmitter<void>;
|
|
80
|
+
onCardClick(): void;
|
|
81
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Card, never>;
|
|
82
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Card, "lib-card", never, { "title": { "alias": "title"; "required": false; }; "month": { "alias": "month"; "required": false; }; "day": { "alias": "day"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, { "cardClick": "cardClick"; }, never, never, true, never>;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
declare class TimeFilter {
|
|
86
|
+
label: string;
|
|
87
|
+
selected: boolean;
|
|
88
|
+
selectedChange: EventEmitter<boolean>;
|
|
89
|
+
onClick(): void;
|
|
90
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TimeFilter, never>;
|
|
91
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TimeFilter, "lib-time-filter", never, { "label": { "alias": "label"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; }, { "selectedChange": "selectedChange"; }, never, never, true, never>;
|
|
34
92
|
}
|
|
35
93
|
|
|
36
|
-
export { BalinauiComponents, Navbar };
|
|
37
|
-
export type { NavLink };
|
|
94
|
+
export { BalinauiComponents, Button, Card, Navbar, TimeFilter };
|
|
95
|
+
export type { ButtonColor, ButtonSize, ButtonVariant, NavLink, UserProfile };
|