@memberjunction/ng-explorer-settings 3.3.0 → 4.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.
- package/dist/lib/account-info/account-info.component.d.ts +23 -0
- package/dist/lib/account-info/account-info.component.d.ts.map +1 -0
- package/dist/lib/account-info/account-info.component.js +157 -0
- package/dist/lib/account-info/account-info.component.js.map +1 -0
- package/dist/lib/appearance-settings/appearance-settings.component.d.ts +15 -0
- package/dist/lib/appearance-settings/appearance-settings.component.d.ts.map +1 -0
- package/dist/lib/appearance-settings/appearance-settings.component.js +79 -0
- package/dist/lib/appearance-settings/appearance-settings.component.js.map +1 -0
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.js +20 -18
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +3 -2
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +20 -15
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/application-settings/application-settings.component.d.ts +113 -0
- package/dist/lib/application-settings/application-settings.component.d.ts.map +1 -0
- package/dist/lib/application-settings/application-settings.component.js +523 -0
- package/dist/lib/application-settings/application-settings.component.js.map +1 -0
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +13 -10
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +44 -43
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/general-settings/general-settings.component.d.ts +14 -0
- package/dist/lib/general-settings/general-settings.component.d.ts.map +1 -0
- package/dist/lib/general-settings/general-settings.component.js +50 -0
- package/dist/lib/general-settings/general-settings.component.js.map +1 -0
- package/dist/lib/module.d.ts +30 -28
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +64 -37
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.js +9 -8
- package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.js +32 -32
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +11 -8
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +5 -14
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +149 -419
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/components/settings-card/settings-card.component.d.ts +27 -0
- package/dist/lib/shared/components/settings-card/settings-card.component.d.ts.map +1 -0
- package/dist/lib/shared/components/settings-card/settings-card.component.js +170 -0
- package/dist/lib/shared/components/settings-card/settings-card.component.js.map +1 -0
- package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
- package/dist/lib/shared/settings-card.component.js +4 -4
- package/dist/lib/shared/settings-card.component.js.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.d.ts +2 -2
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +21 -16
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config.component.d.ts.map +1 -1
- package/dist/lib/user-app-config/user-app-config.component.js +14 -11
- package/dist/lib/user-app-config/user-app-config.component.js.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.js +37 -36
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +23 -19
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.js +16 -12
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/dist/public-api.d.ts +5 -12
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +6 -38
- package/dist/public-api.js.map +1 -1
- package/package.json +35 -37
|
@@ -47,7 +47,7 @@ function ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Cond
|
|
|
47
47
|
i0.ɵɵtext(2);
|
|
48
48
|
i0.ɵɵelementEnd();
|
|
49
49
|
i0.ɵɵelementStart(3, "div", 81);
|
|
50
|
-
i0.ɵɵ
|
|
50
|
+
i0.ɵɵconditionalCreate(4, ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Conditional_38_For_2_Conditional_0_Conditional_4_Template, 2, 0, "span", 82);
|
|
51
51
|
i0.ɵɵelementStart(5, "span", 83);
|
|
52
52
|
i0.ɵɵtext(6);
|
|
53
53
|
i0.ɵɵelementEnd()()();
|
|
@@ -58,10 +58,10 @@ function ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Cond
|
|
|
58
58
|
i0.ɵɵadvance(2);
|
|
59
59
|
i0.ɵɵconditional(appEntity_r6.DefaultForNewUser ? 4 : -1);
|
|
60
60
|
i0.ɵɵadvance(2);
|
|
61
|
-
i0.ɵɵtextInterpolate1("Order: ", appEntity_r6.Sequence
|
|
61
|
+
i0.ɵɵtextInterpolate1("Order: ", appEntity_r6.Sequence);
|
|
62
62
|
} }
|
|
63
63
|
function ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Conditional_38_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
-
i0.ɵɵ
|
|
64
|
+
i0.ɵɵconditionalCreate(0, ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Conditional_38_For_2_Conditional_0_Template, 7, 3, "div", 79);
|
|
65
65
|
} if (rf & 2) {
|
|
66
66
|
let tmp_23_0;
|
|
67
67
|
const appEntity_r6 = ctx.$implicit;
|
|
@@ -132,7 +132,7 @@ function ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Temp
|
|
|
132
132
|
i0.ɵɵelement(36, "i", 71);
|
|
133
133
|
i0.ɵɵtext(37, " Application Entities ");
|
|
134
134
|
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵ
|
|
135
|
+
i0.ɵɵconditionalCreate(38, ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Conditional_38_Template, 3, 0, "div", 77)(39, ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Conditional_39_Template, 2, 0, "p", 78);
|
|
136
136
|
i0.ɵɵelementEnd()();
|
|
137
137
|
} if (rf & 2) {
|
|
138
138
|
const app_r4 = i0.ɵɵnextContext().$implicit;
|
|
@@ -183,7 +183,7 @@ function ApplicationManagementComponent_Conditional_62_For_3_Template(rf, ctx) {
|
|
|
183
183
|
i0.ɵɵelementStart(18, "button", 63);
|
|
184
184
|
i0.ɵɵelement(19, "i", 64);
|
|
185
185
|
i0.ɵɵelementEnd()()();
|
|
186
|
-
i0.ɵɵ
|
|
186
|
+
i0.ɵɵconditionalCreate(20, ApplicationManagementComponent_Conditional_62_For_3_Conditional_20_Template, 40, 15, "div", 65);
|
|
187
187
|
i0.ɵɵelementEnd();
|
|
188
188
|
} if (rf & 2) {
|
|
189
189
|
const app_r4 = ctx.$implicit;
|
|
@@ -221,7 +221,7 @@ function ApplicationManagementComponent_Conditional_62_Conditional_4_Template(rf
|
|
|
221
221
|
function ApplicationManagementComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
|
|
222
222
|
i0.ɵɵelementStart(0, "div", 36)(1, "div", 45);
|
|
223
223
|
i0.ɵɵrepeaterCreate(2, ApplicationManagementComponent_Conditional_62_For_3_Template, 21, 13, "div", 46, _forTrack0);
|
|
224
|
-
i0.ɵɵ
|
|
224
|
+
i0.ɵɵconditionalCreate(4, ApplicationManagementComponent_Conditional_62_Conditional_4_Template, 6, 0, "div", 47);
|
|
225
225
|
i0.ɵɵelementEnd()();
|
|
226
226
|
} if (rf & 2) {
|
|
227
227
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -265,7 +265,7 @@ function ApplicationManagementComponent_Conditional_64_Template(rf, ctx) { if (r
|
|
|
265
265
|
i0.ɵɵelementEnd()();
|
|
266
266
|
i0.ɵɵelementStart(17, "div", 97)(18, "button", 98);
|
|
267
267
|
i0.ɵɵlistener("click", function ApplicationManagementComponent_Conditional_64_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deleteApplication()); });
|
|
268
|
-
i0.ɵɵ
|
|
268
|
+
i0.ɵɵconditionalCreate(19, ApplicationManagementComponent_Conditional_64_Conditional_19_Template, 2, 0)(20, ApplicationManagementComponent_Conditional_64_Conditional_20_Template, 2, 0);
|
|
269
269
|
i0.ɵɵelementEnd();
|
|
270
270
|
i0.ɵɵelementStart(21, "button", 99);
|
|
271
271
|
i0.ɵɵlistener("click", function ApplicationManagementComponent_Conditional_64_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showDeleteConfirm = false); });
|
|
@@ -281,6 +281,7 @@ function ApplicationManagementComponent_Conditional_64_Template(rf, ctx) { if (r
|
|
|
281
281
|
i0.ɵɵconditional(ctx_r1.isLoading ? 19 : 20);
|
|
282
282
|
} }
|
|
283
283
|
let ApplicationManagementComponent = class ApplicationManagementComponent extends BaseDashboard {
|
|
284
|
+
cdr;
|
|
284
285
|
// State management
|
|
285
286
|
applications = [];
|
|
286
287
|
filteredApplications = [];
|
|
@@ -308,8 +309,9 @@ let ApplicationManagementComponent = class ApplicationManagementComponent extend
|
|
|
308
309
|
expandedAppId = null;
|
|
309
310
|
destroy$ = new Subject();
|
|
310
311
|
metadata = new Metadata();
|
|
311
|
-
constructor() {
|
|
312
|
+
constructor(cdr) {
|
|
312
313
|
super();
|
|
314
|
+
this.cdr = cdr;
|
|
313
315
|
}
|
|
314
316
|
async GetResourceDisplayName(data) {
|
|
315
317
|
return "Application Management";
|
|
@@ -398,6 +400,7 @@ let ApplicationManagementComponent = class ApplicationManagementComponent extend
|
|
|
398
400
|
app.Description?.toLowerCase().includes(searchLower));
|
|
399
401
|
}
|
|
400
402
|
this.filteredApplications = filtered;
|
|
403
|
+
this.cdr.detectChanges();
|
|
401
404
|
}
|
|
402
405
|
calculateStats() {
|
|
403
406
|
// For now, consider all applications as active
|
|
@@ -549,8 +552,8 @@ let ApplicationManagementComponent = class ApplicationManagementComponent extend
|
|
|
549
552
|
refreshData() {
|
|
550
553
|
this.loadInitialData();
|
|
551
554
|
}
|
|
552
|
-
static ɵfac = function ApplicationManagementComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationManagementComponent)(); };
|
|
553
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationManagementComponent, selectors: [["mj-application-management"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 65, vars: 23, consts: [[1, "application-management-container"], [1, "sticky-header"], ["role", "toolbar", "aria-label", "Application management actions", 1, "action-buttons"], ["aria-label", "Refresh applications", 1, "mj-btn", "mj-btn-secondary", "mj-btn-icon-mobile", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-refresh"], [1, "btn-text"], ["aria-label", "Add new application", 1, "mj-btn", "mj-btn-primary", "mj-btn-icon-mobile", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["role", "region", "aria-label", "Application statistics", 1, "mj-grid-4"], [1, "mj-card"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-total"], [1, "fa-solid", "fa-cubes"], [1, "stat-content"], ["aria-label", "Total applications count", 1, "stat-value"], [1, "stat-label"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-active"], [1, "fa-solid", "fa-check-circle"], ["aria-label", "Active applications count", 1, "stat-value"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-entities"], [1, "fa-solid", "fa-database"], ["aria-label", "Total entities count", 1, "stat-value"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-public"], [1, "fa-solid", "fa-globe"], ["aria-label", "Public entities count", 1, "stat-value"], ["role", "search", "aria-label", "Filter applications", 1, "filters-section"], [1, "filters-row"], [1, "mj-search"], ["aria-hidden", "true", 1, "fa-solid", "fa-search", "mj-search-icon"], ["type", "text", "placeholder", "Search applications by name or description...", "aria-label", "Search applications", 1, "mj-search-input", 3, "input", "value"], [1, "mj-filter-group"], ["id", "status-filter-label", 1, "mj-filter-label"], ["role", "group", "aria-labelledby", "status-filter-label", 1, "mj-filter-buttons"], [1, "mj-btn", "mj-btn-ghost", 3, "click"], [1, "scrollable-content"], ["role", "status", "aria-live", "polite", 1, "loading-container"], ["role", "alert", 1, "error-container"], [1, "content-area"], [3, "result", "visible", "data"], ["role", "presentation", 1, "modal-backdrop"], ["text", "Loading applications..."], [1, "error-content"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "error-icon"], [1, "error-message"], [1, "mj-btn", "mj-btn-primary", 3, "click"], [1, "fa-solid", "fa-refresh"], ["role", "list", 1, "applications-list"], ["role", "listitem", 1, "app-card", 3, "expanded"], [1, "empty-state"], ["role", "listitem", 1, "app-card"], ["role", "button", 1, "app-header", 3, "click"], [1, "app-info"], [1, "app-icon-wrapper"], ["aria-hidden", "true"], [1, "app-details"], [1, "app-name"], [1, "app-description"], [1, "app-meta"], [1, "status-badge"], [1, "app-actions", 3, "click"], ["title", "Edit", 1, "mj-btn", "mj-btn-ghost", "mj-btn-sm", 3, "click"], [1, "fa-solid", "fa-edit"], ["title", "Delete", 1, "mj-btn", "mj-btn-ghost", "mj-btn-sm", "mj-btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], ["aria-label", "Toggle details", 1, "expand-btn"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], [1, "app-content"], [1, "mobile-actions-bar", 3, "click"], [1, "mobile-action-buttons"], [1, "btn-label"], [1, "app-stats"], [1, "stat-item"], ["aria-hidden", "true", 1, "fa-solid", "fa-database"], [1, "stat-value"], ["aria-hidden", "true", 1, "fa-solid", "fa-calendar"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock"], [1, "entities-section"], [1, "section-title"], [1, "entities-grid"], [1, "no-entities"], [1, "entity-item"], [1, "entity-name"], [1, "entity-meta"], [1, "entity-badge", "public"], [1, "entity-sequence"], ["aria-hidden", "true", 1, "fa-solid", "fa-cubes", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], ["role", "presentation", 1, "modal-backdrop", 3, "click"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "delete-dialog-title", "aria-describedby", "delete-dialog-description", 1, "modal-dialog", 3, "click"], [1, "modal-header"], ["id", "delete-dialog-title", 1, "modal-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "text-danger"], ["aria-label", "Close dialog", 1, "modal-close", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], ["id", "delete-dialog-description", 1, "modal-body"], [1, "text-warning"], ["aria-hidden", "true", 1, "fa-solid", "fa-warning"], [1, "modal-footer"], [1, "mj-btn", "mj-btn-danger", 3, "click", "disabled"], [1, "mj-btn", "mj-btn-secondary", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "fa-spin"], ["aria-hidden", "true", 1, "fa-solid", "fa-trash"]], template: function ApplicationManagementComponent_Template(rf, ctx) { if (rf & 1) {
|
|
555
|
+
static ɵfac = function ApplicationManagementComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ApplicationManagementComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
556
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ApplicationManagementComponent, selectors: [["mj-application-management"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 65, vars: 23, consts: [[1, "application-management-container"], [1, "sticky-header"], ["role", "toolbar", "aria-label", "Application management actions", 1, "action-buttons"], ["aria-label", "Refresh applications", 1, "mj-btn", "mj-btn-secondary", "mj-btn-icon-mobile", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-refresh"], [1, "btn-text"], ["aria-label", "Add new application", 1, "mj-btn", "mj-btn-primary", "mj-btn-icon-mobile", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["role", "region", "aria-label", "Application statistics", 1, "mj-grid-4"], [1, "mj-card"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-total"], [1, "fa-solid", "fa-cubes"], [1, "stat-content"], ["aria-label", "Total applications count", 1, "stat-value"], [1, "stat-label"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-active"], [1, "fa-solid", "fa-check-circle"], ["aria-label", "Active applications count", 1, "stat-value"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-entities"], [1, "fa-solid", "fa-database"], ["aria-label", "Total entities count", 1, "stat-value"], ["aria-hidden", "true", 1, "stat-icon", "stat-icon-public"], [1, "fa-solid", "fa-globe"], ["aria-label", "Public entities count", 1, "stat-value"], ["role", "search", "aria-label", "Filter applications", 1, "filters-section"], [1, "filters-row"], [1, "mj-search"], ["aria-hidden", "true", 1, "fa-solid", "fa-search", "mj-search-icon"], ["type", "text", "placeholder", "Search applications by name or description...", "aria-label", "Search applications", 1, "mj-search-input", 3, "input", "value"], [1, "mj-filter-group"], ["id", "status-filter-label", 1, "mj-filter-label"], ["role", "group", "aria-labelledby", "status-filter-label", 1, "mj-filter-buttons"], [1, "mj-btn", "mj-btn-ghost", 3, "click"], [1, "scrollable-content"], ["role", "status", "aria-live", "polite", 1, "loading-container"], ["role", "alert", 1, "error-container"], [1, "content-area"], [3, "result", "visible", "data"], ["role", "presentation", 1, "modal-backdrop"], ["text", "Loading applications..."], [1, "error-content"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "error-icon"], [1, "error-message"], [1, "mj-btn", "mj-btn-primary", 3, "click"], [1, "fa-solid", "fa-refresh"], ["role", "list", 1, "applications-list"], ["role", "listitem", 1, "app-card", 3, "expanded"], [1, "empty-state"], ["role", "listitem", 1, "app-card"], ["role", "button", 1, "app-header", 3, "click"], [1, "app-info"], [1, "app-icon-wrapper"], ["aria-hidden", "true"], [1, "app-details"], [1, "app-name"], [1, "app-description"], [1, "app-meta"], [1, "status-badge"], [1, "app-actions", 3, "click"], ["title", "Edit", 1, "mj-btn", "mj-btn-ghost", "mj-btn-sm", 3, "click"], [1, "fa-solid", "fa-edit"], ["title", "Delete", 1, "mj-btn", "mj-btn-ghost", "mj-btn-sm", "mj-btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], ["aria-label", "Toggle details", 1, "expand-btn"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], [1, "app-content"], [1, "mobile-actions-bar", 3, "click"], [1, "mobile-action-buttons"], [1, "btn-label"], [1, "app-stats"], [1, "stat-item"], ["aria-hidden", "true", 1, "fa-solid", "fa-database"], [1, "stat-value"], ["aria-hidden", "true", 1, "fa-solid", "fa-calendar"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock"], [1, "entities-section"], [1, "section-title"], [1, "entities-grid"], [1, "no-entities"], [1, "entity-item"], [1, "entity-name"], [1, "entity-meta"], [1, "entity-badge", "public"], [1, "entity-sequence"], ["aria-hidden", "true", 1, "fa-solid", "fa-cubes", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], ["role", "presentation", 1, "modal-backdrop", 3, "click"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "delete-dialog-title", "aria-describedby", "delete-dialog-description", 1, "modal-dialog", 3, "click"], [1, "modal-header"], ["id", "delete-dialog-title", 1, "modal-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "text-danger"], ["aria-label", "Close dialog", 1, "modal-close", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], ["id", "delete-dialog-description", 1, "modal-body"], [1, "text-warning"], ["aria-hidden", "true", 1, "fa-solid", "fa-warning"], [1, "modal-footer"], [1, "mj-btn", "mj-btn-danger", 3, "click", "disabled"], [1, "mj-btn", "mj-btn-secondary", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "fa-spin"], ["aria-hidden", "true", 1, "fa-solid", "fa-trash"]], template: function ApplicationManagementComponent_Template(rf, ctx) { if (rf & 1) {
|
|
554
557
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "button", 3);
|
|
555
558
|
i0.ɵɵlistener("click", function ApplicationManagementComponent_Template_button_click_3_listener() { return ctx.refreshData(); });
|
|
556
559
|
i0.ɵɵelement(4, "i", 4);
|
|
@@ -620,12 +623,14 @@ let ApplicationManagementComponent = class ApplicationManagementComponent extend
|
|
|
620
623
|
i0.ɵɵtext(58, " Inactive ");
|
|
621
624
|
i0.ɵɵelementEnd()()()()()();
|
|
622
625
|
i0.ɵɵelementStart(59, "div", 33);
|
|
623
|
-
i0.ɵɵ
|
|
626
|
+
i0.ɵɵconditionalCreate(60, ApplicationManagementComponent_Conditional_60_Template, 2, 0, "div", 34);
|
|
627
|
+
i0.ɵɵconditionalCreate(61, ApplicationManagementComponent_Conditional_61_Template, 8, 1, "div", 35);
|
|
628
|
+
i0.ɵɵconditionalCreate(62, ApplicationManagementComponent_Conditional_62_Template, 5, 1, "div", 36);
|
|
624
629
|
i0.ɵɵelementEnd();
|
|
625
630
|
i0.ɵɵelementStart(63, "mj-application-dialog", 37);
|
|
626
631
|
i0.ɵɵlistener("result", function ApplicationManagementComponent_Template_mj_application_dialog_result_63_listener($event) { return ctx.onApplicationDialogResult($event); });
|
|
627
632
|
i0.ɵɵelementEnd();
|
|
628
|
-
i0.ɵɵ
|
|
633
|
+
i0.ɵɵconditionalCreate(64, ApplicationManagementComponent_Conditional_64_Template, 23, 3, "div", 38);
|
|
629
634
|
i0.ɵɵelementEnd();
|
|
630
635
|
} if (rf & 2) {
|
|
631
636
|
i0.ɵɵadvance(3);
|
|
@@ -669,7 +674,7 @@ ApplicationManagementComponent = __decorate([
|
|
|
669
674
|
export { ApplicationManagementComponent };
|
|
670
675
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ApplicationManagementComponent, [{
|
|
671
676
|
type: Component,
|
|
672
|
-
args: [{ selector: 'mj-application-management', template: "<div class=\"application-management-container\">\n <!-- Sticky Header Section -->\n <div class=\"sticky-header\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\" role=\"toolbar\" aria-label=\"Application management actions\">\n <button\n class=\"mj-btn mj-btn-secondary mj-btn-icon-mobile\"\n (click)=\"refreshData()\"\n [disabled]=\"isLoading\"\n aria-label=\"Refresh applications\"\n >\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\" aria-hidden=\"true\"></i>\n <span class=\"btn-text\">Refresh</span>\n </button>\n <button class=\"mj-btn mj-btn-primary mj-btn-icon-mobile\" (click)=\"createNewApplication()\" aria-label=\"Add new application\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <span class=\"btn-text\">Add Application</span>\n </button>\n </div>\n\n <!-- Stats Cards -->\n <div class=\"mj-grid-4\" role=\"region\" aria-label=\"Application statistics\">\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-total\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total applications count\">{{ stats.totalApplications }}</div>\n <div class=\"stat-label\">Total Applications</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-active\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Active applications count\">{{ stats.activeApplications }}</div>\n <div class=\"stat-label\">Active Applications</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-entities\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total entities count\">{{ stats.totalEntities }}</div>\n <div class=\"stat-label\">Total Entities</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-public\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-globe\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Public entities count\">{{ stats.publicEntities }}</div>\n <div class=\"stat-label\">Public Entities</div>\n </div>\n </div>\n </div>\n\n <!-- Filters Section -->\n <div class=\"filters-section\" role=\"search\" aria-label=\"Filter applications\">\n <div class=\"filters-row\">\n <!-- Search - Enhanced prominent search box -->\n <div class=\"mj-search\">\n <i class=\"fa-solid fa-search mj-search-icon\" aria-hidden=\"true\"></i>\n <input\n type=\"text\"\n class=\"mj-search-input\"\n placeholder=\"Search applications by name or description...\"\n (input)=\"onSearchChange($event)\"\n [value]=\"filters$.value.search\"\n aria-label=\"Search applications\"\n />\n </div>\n\n <!-- Status Filter -->\n <div class=\"mj-filter-group\">\n <label class=\"mj-filter-label\" id=\"status-filter-label\">Status</label>\n <div class=\"mj-filter-buttons\" role=\"group\" aria-labelledby=\"status-filter-label\">\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'all'\"\n (click)=\"onStatusFilterChange('all')\"\n [attr.aria-pressed]=\"filters$.value.status === 'all'\"\n >\n All\n </button>\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'active'\"\n (click)=\"onStatusFilterChange('active')\"\n [attr.aria-pressed]=\"filters$.value.status === 'active'\"\n >\n Active\n </button>\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'inactive'\"\n (click)=\"onStatusFilterChange('inactive')\"\n [attr.aria-pressed]=\"filters$.value.status === 'inactive'\"\n >\n Inactive\n </button>\n </div>\n </div>\n </div>\n </div>\n </div><!-- End Sticky Header -->\n\n <!-- Scrollable Content Section -->\n <div class=\"scrollable-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\">\n <mj-loading text=\"Loading applications...\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button class=\"mj-btn mj-btn-primary\" (click)=\"loadInitialData()\">\n <i class=\"fa-solid fa-refresh\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Content Area -->\n @if (!isLoading && !error) {\n <div class=\"content-area\">\n <div class=\"applications-list\" role=\"list\">\n @for (app of filteredApplications; track app.ID) {\n <div class=\"app-card\" [class.expanded]=\"isAppExpanded(app.ID)\" role=\"listitem\">\n <div class=\"app-header\" (click)=\"toggleAppExpansion(app.ID)\" role=\"button\" [attr.aria-expanded]=\"isAppExpanded(app.ID)\">\n <div class=\"app-info\">\n <div class=\"app-icon-wrapper\">\n <i [class]=\"'fa-solid ' + getAppIcon(app)\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"app-details\">\n <h3 class=\"app-name\">{{ app.Name }}</h3>\n <p class=\"app-description\">{{ app.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"app-meta\">\n <span class=\"status-badge\" [class]=\"getAppStatusClass(app)\">\n {{ getAppStatusLabel(app) }}\n </span>\n <div class=\"app-actions\" (click)=\"$event.stopPropagation()\">\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm\"\n (click)=\"editApplication(app)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + app.Name\"\n >\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm mj-btn-danger\"\n (click)=\"confirmDeleteApplication(app)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + app.Name\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n <button class=\"expand-btn\" aria-label=\"Toggle details\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isAppExpanded(app.ID)) {\n <div class=\"app-content\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"status-badge\" [class]=\"getAppStatusClass(app)\">\n {{ getAppStatusLabel(app) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm\"\n (click)=\"editApplication(app)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + app.Name\"\n >\n <i class=\"fa-solid fa-edit\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm mj-btn-danger\"\n (click)=\"confirmDeleteApplication(app)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + app.Name\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n <span class=\"btn-label\">Delete</span>\n </button>\n </div>\n </div>\n\n <div class=\"app-stats\">\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Entities:</span>\n <span class=\"stat-value\">{{ getAppEntities(app.ID).length }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-calendar\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Created:</span>\n <span class=\"stat-value\">{{ app.__mj_CreatedAt | date:'short' }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Updated:</span>\n <span class=\"stat-value\">{{ app.__mj_UpdatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <div class=\"entities-section\">\n <h4 class=\"section-title\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n Application Entities\n </h4>\n\n @if (getAppEntities(app.ID).length > 0) {\n <div class=\"entities-grid\">\n @for (appEntity of getAppEntities(app.ID); track appEntity.ID) {\n @if (getEntityInfo(appEntity.EntityID); as entity) {\n <div class=\"entity-item\">\n <div class=\"entity-name\">{{ entity.Name }}</div>\n <div class=\"entity-meta\">\n @if (appEntity.DefaultForNewUser) {\n <span class=\"entity-badge public\">Public</span>\n }\n <span class=\"entity-sequence\">Order: {{ appEntity.Sequence }}</span>\n </div>\n </div>\n }\n }\n </div>\n } @else {\n <p class=\"no-entities\">No entities configured for this application</p>\n }\n </div>\n </div>\n }\n </div>\n }\n\n @if (filteredApplications.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-cubes empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">No applications found</p>\n <p class=\"empty-subtext\">Try adjusting your filters or create a new application</p>\n </div>\n }\n </div>\n </div>\n }\n </div><!-- End Scrollable Content -->\n\n <!-- Application Dialog -->\n <mj-application-dialog\n [visible]=\"showApplicationDialog\"\n [data]=\"applicationDialogData\"\n (result)=\"onApplicationDialogResult($event)\"\n ></mj-application-dialog>\n\n <!-- Delete Confirmation Dialog -->\n @if (showDeleteConfirm && selectedApp) {\n <div class=\"modal-backdrop\" (click)=\"showDeleteConfirm = false\" role=\"presentation\">\n <div\n class=\"modal-dialog\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n aria-describedby=\"delete-dialog-description\"\n >\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"delete-dialog-title\">\n <i class=\"fa-solid fa-exclamation-triangle text-danger\" aria-hidden=\"true\"></i>\n Confirm Delete\n </h3>\n <button\n class=\"modal-close\"\n (click)=\"showDeleteConfirm = false\"\n aria-label=\"Close dialog\"\n >\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"modal-body\" id=\"delete-dialog-description\">\n <p>Are you sure you want to delete the application <strong>{{ selectedApp.Name }}</strong>?</p>\n <p class=\"text-warning\">\n <i class=\"fa-solid fa-warning\" aria-hidden=\"true\"></i>\n This will remove all entity associations for this application.\n </p>\n </div>\n <div class=\"modal-footer\">\n <!-- Primary action (Delete) on LEFT per MD3 design guide -->\n <button class=\"mj-btn mj-btn-danger\" (click)=\"deleteApplication()\" [disabled]=\"isLoading\">\n @if (isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Deleting...\n } @else {\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n Delete Application\n }\n </button>\n <button class=\"mj-btn mj-btn-secondary\" (click)=\"showDeleteConfirm = false\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* =============================================================================\n Application Management Component - MD3 Design System\n Following Material Design 3 color palette and design tokens\n ============================================================================= */\n\n/* -----------------------------------------------------------------------------\n Host Element - Using shared MD3 tokens from _md3-theme.scss\n ----------------------------------------------------------------------------- */\n:host {\n /* Host element fills container but doesn't scroll itself */\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n/* -----------------------------------------------------------------------------\n Container & Layout\n ----------------------------------------------------------------------------- */\n.application-management-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n position: relative;\n width: 100%;\n background: var(--mat-sys-surface);\n}\n\n/* -----------------------------------------------------------------------------\n Sticky Header - Always visible controls\n ----------------------------------------------------------------------------- */\n.sticky-header {\n flex-shrink: 0;\n background: var(--mat-sys-surface);\n border-bottom: 1px solid var(--mat-sys-outline-variant);\n box-shadow: var(--mat-sys-elevation-1);\n z-index: 10;\n}\n\n/* -----------------------------------------------------------------------------\n Scrollable Content - Application list area\n ----------------------------------------------------------------------------- */\n.scrollable-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n padding: 1rem;\n background: var(--mat-sys-surface-container-lowest);\n}\n\n@media (min-width: 768px) {\n .scrollable-content {\n padding: 1.5rem 2rem;\n }\n}\n\n@media (min-width: 1024px) {\n .scrollable-content {\n padding: 2rem;\n }\n}\n\n@media (min-width: 1440px) {\n .scrollable-content {\n padding: 2rem 2.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons (In Sticky Header)\n ----------------------------------------------------------------------------- */\n.action-buttons {\n flex-shrink: 0;\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n padding: 0.75rem 1rem;\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 768px) {\n .action-buttons {\n padding: 1rem 1.5rem;\n }\n}\n\n@media (max-width: 639px) {\n .action-buttons {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Statistics Cards - Static Display (Non-interactive)\n ----------------------------------------------------------------------------- */\n.mj-grid-4 {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n padding: 0 1rem 0.75rem 1rem;\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 768px) {\n .mj-grid-4 {\n grid-template-columns: repeat(4, 1fr);\n padding: 0 1.5rem 1rem 1.5rem;\n gap: 0.75rem;\n }\n}\n\n@media (min-width: 1024px) {\n .mj-grid-4 {\n gap: 1rem;\n }\n}\n\n.mj-card {\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-medium);\n padding: 1rem;\n box-shadow: none;\n display: flex;\n align-items: center;\n gap: 1rem;\n border: 1px solid var(--mat-sys-outline-variant);\n cursor: default;\n pointer-events: none;\n}\n\n@media (min-width: 768px) {\n .mj-card {\n padding: 1rem 1.25rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Stat Icon Containers\n ----------------------------------------------------------------------------- */\n.stat-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--mat-sys-corner-medium);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n@media (min-width: 768px) {\n .stat-icon {\n width: 52px;\n height: 52px;\n font-size: 1.375rem;\n }\n}\n\n.stat-icon-total {\n background: var(--mat-sys-primary-container);\n color: var(--mat-sys-primary);\n}\n\n.stat-icon-active {\n background: var(--mat-sys-tertiary-container);\n color: var(--mat-sys-tertiary);\n}\n\n.stat-icon-entities {\n background: var(--mat-sys-secondary-container);\n color: #B5751A;\n}\n\n.stat-icon-public {\n background: var(--mat-sys-tertiary-container);\n color: var(--mat-sys-tertiary);\n}\n\n/* -----------------------------------------------------------------------------\n Stat Content Typography\n ----------------------------------------------------------------------------- */\n.stat-content {\n flex: 1;\n min-width: 0;\n}\n\n.stat-content .stat-value {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--mat-sys-on-surface);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n@media (min-width: 768px) {\n .stat-content .stat-value {\n font-size: 2rem;\n }\n}\n\n.stat-content .stat-label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-top: 0.25rem;\n}\n\n@media (min-width: 768px) {\n .stat-content .stat-label {\n font-size: 0.8125rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Filters Section\n ----------------------------------------------------------------------------- */\n.filters-section {\n flex-shrink: 0;\n background: var(--mat-sys-surface-container);\n margin: 0 1rem 0.75rem 1rem;\n padding: 0.75rem;\n border-radius: var(--mat-sys-corner-small);\n border: 1px solid var(--mat-sys-outline-variant);\n}\n\n@media (min-width: 768px) {\n .filters-section {\n margin: 0 1.5rem 1rem 1.5rem;\n padding: 0.875rem 1rem;\n }\n}\n\n.filters-row {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n flex-wrap: wrap;\n}\n\n@media (min-width: 768px) {\n .filters-row {\n gap: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Search Input\n ----------------------------------------------------------------------------- */\n.mj-search {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n@media (min-width: 640px) {\n .mj-search {\n min-width: 280px;\n }\n}\n\n@media (min-width: 1024px) {\n .mj-search {\n min-width: 400px;\n max-width: 600px;\n }\n}\n\n@media (min-width: 1440px) {\n .mj-search {\n min-width: 500px;\n max-width: 800px;\n }\n}\n\n.mj-search .mj-search-icon {\n position: absolute;\n left: 1rem;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mat-sys-on-surface-variant);\n font-size: 1rem;\n transition: color 0.2s ease;\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-icon {\n left: 1.25rem;\n font-size: 1.125rem;\n }\n}\n\n.mj-search .mj-search-input {\n width: 100%;\n padding: 0.875rem 1rem 0.875rem 2.75rem;\n border: 2px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-full);\n font-size: 1rem;\n background: var(--mat-sys-surface);\n color: var(--mat-sys-on-surface);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-input {\n padding: 1rem 1.25rem 1rem 3.25rem;\n font-size: 1.0625rem;\n box-shadow: var(--mat-sys-elevation-1);\n }\n}\n\n@media (min-width: 1440px) {\n .mj-search .mj-search-input {\n padding: 1.125rem 1.5rem 1.125rem 3.5rem;\n }\n}\n\n.mj-search .mj-search-input::placeholder {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.mj-search .mj-search-input:hover {\n border-color: var(--mat-sys-primary);\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.mj-search .mj-search-input:focus {\n outline: none;\n border-color: var(--mat-sys-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-input:focus {\n box-shadow: var(--mat-sys-elevation-2), 0 0 0 3px rgba(0, 118, 182, 0.2);\n }\n}\n\n.mj-search:focus-within .mj-search-icon {\n color: var(--mat-sys-primary);\n}\n\n/* -----------------------------------------------------------------------------\n Filter Button Group\n ----------------------------------------------------------------------------- */\n.mj-filter-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.mj-filter-group .mj-filter-label {\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--mat-sys-on-surface);\n}\n\n.mj-filter-group .mj-filter-buttons {\n display: flex;\n background: #EDF0F4;\n border-radius: var(--mat-sys-corner-full);\n padding: 4px;\n gap: 2px;\n}\n\n.mj-filter-buttons .mj-btn-ghost {\n border-radius: var(--mat-sys-corner-full);\n padding: 0.5rem 1rem;\n font-size: 0.875rem;\n font-weight: 500;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.mj-filter-buttons .mj-btn-ghost:hover:not(:disabled):not(.mj-btn-primary) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.mj-filter-buttons .mj-btn-primary {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n/* -----------------------------------------------------------------------------\n Content Area - Inside scrollable section\n ----------------------------------------------------------------------------- */\n.content-area {\n flex: 1 1 auto;\n overflow: visible;\n position: relative;\n background: var(--mat-sys-surface);\n border-radius: var(--mat-sys-corner-large);\n box-shadow: var(--mat-sys-elevation-1);\n padding: 1rem;\n border: 1px solid var(--mat-sys-outline-variant);\n}\n\n@media (min-width: 768px) {\n .content-area {\n padding: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Applications List\n ----------------------------------------------------------------------------- */\n.applications-list {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n/* -----------------------------------------------------------------------------\n Application Card - Interactive\n ----------------------------------------------------------------------------- */\n.app-card {\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-large);\n overflow: hidden;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n cursor: pointer;\n}\n\n.app-card:hover {\n box-shadow: var(--mat-sys-elevation-2);\n border-color: var(--mat-sys-primary);\n}\n\n.app-card.expanded {\n box-shadow: var(--mat-sys-elevation-3);\n border-color: var(--mat-sys-primary);\n}\n\n.app-card.expanded .expand-btn i {\n transform: rotate(180deg);\n}\n\n.app-header {\n padding: 1.25rem 1.5rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n background: var(--mat-sys-surface-container-lowest);\n transition: background-color 0.2s ease;\n}\n\n.app-header:hover {\n background: var(--mat-sys-surface-container-low);\n}\n\n.app-info {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n}\n\n.app-icon-wrapper {\n width: 48px;\n height: 48px;\n border-radius: var(--mat-sys-corner-medium);\n background: var(--mat-sys-primary-container);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mat-sys-primary);\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.app-details {\n flex: 1;\n min-width: 0;\n}\n\n.app-details .app-name {\n font-size: 1.0625rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 0.25rem 0;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n\n.app-details .app-description {\n font-size: 0.9375rem;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (max-width: 639px) {\n .app-details .app-description {\n white-space: normal;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n}\n\n.app-meta {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-shrink: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Status Badge\n ----------------------------------------------------------------------------- */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.875rem;\n border-radius: var(--mat-sys-corner-full);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.status-badge.status-active {\n background: var(--mat-sys-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--mat-sys-tertiary);\n}\n\n.status-badge.status-inactive {\n background: var(--mat-sys-error-container);\n color: var(--mat-sys-on-error-container);\n border: 1px solid var(--mat-sys-error);\n}\n\n.status-badge i {\n font-size: 0.625rem;\n}\n\n/* -----------------------------------------------------------------------------\n Application Actions\n ----------------------------------------------------------------------------- */\n.app-actions {\n display: flex;\n gap: 0.5rem;\n}\n\n.expand-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n font-size: 1rem;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--mat-sys-corner-full);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.expand-btn:hover {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.expand-btn i {\n transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n/* -----------------------------------------------------------------------------\n Application Content (Expanded)\n ----------------------------------------------------------------------------- */\n.app-content {\n padding: 1.5rem;\n background: var(--mat-sys-surface);\n border-top: 1px solid var(--mat-sys-outline-variant);\n animation: slideDown 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.mobile-actions-bar {\n display: none;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.app-stats {\n display: flex;\n gap: 2rem;\n margin-bottom: 1.5rem;\n flex-wrap: wrap;\n}\n\n.app-stats .stat-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.9375rem;\n}\n\n.app-stats .stat-item i {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.app-stats .stat-item .stat-label {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.app-stats .stat-item .stat-value {\n color: var(--mat-sys-on-surface);\n font-weight: 600;\n}\n\n/* -----------------------------------------------------------------------------\n Entities Section\n ----------------------------------------------------------------------------- */\n.entities-section {\n padding: 1rem;\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-small);\n}\n\n.entities-section .section-title {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1rem 0;\n}\n\n.entities-section .section-title i {\n color: var(--mat-sys-primary);\n font-size: 1.125rem;\n}\n\n.entities-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .entities-grid {\n grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));\n }\n}\n\n.entity-item {\n padding: 0.75rem;\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-small);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.entity-item:hover {\n border-color: var(--mat-sys-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.entity-item .entity-name {\n font-size: 0.9375rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin-bottom: 0.25rem;\n}\n\n.entity-item .entity-meta {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.8125rem;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.entity-badge {\n padding: 0.125rem 0.5rem;\n border-radius: var(--mat-sys-corner-full);\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.entity-badge.public {\n background: var(--mat-sys-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--mat-sys-tertiary);\n}\n\n.entity-sequence {\n font-size: 0.8125rem;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.no-entities {\n color: var(--mat-sys-on-surface-variant);\n font-size: 0.9375rem;\n text-align: center;\n padding: 1rem;\n margin: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Empty State\n ----------------------------------------------------------------------------- */\n.empty-state {\n text-align: center;\n padding: 4rem 2rem;\n}\n\n.empty-state .empty-icon {\n font-size: 4rem;\n color: var(--mat-sys-outline-variant);\n margin-bottom: 1.5rem;\n}\n\n.empty-state .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 0.5rem 0;\n}\n\n.empty-state .empty-subtext {\n font-size: 1rem;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Loading State\n ----------------------------------------------------------------------------- */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n}\n\n/* -----------------------------------------------------------------------------\n Error State\n ----------------------------------------------------------------------------- */\n.error-container {\n text-align: center;\n padding: 4rem 2rem;\n}\n\n.error-container .error-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n}\n\n.error-container .error-icon {\n font-size: 3.5rem;\n color: var(--mat-sys-error);\n margin-bottom: 1rem;\n}\n\n.error-container .error-message {\n font-size: 1.0625rem;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1.5rem 0;\n}\n\n/* -----------------------------------------------------------------------------\n Modal Dialog\n ----------------------------------------------------------------------------- */\n.modal-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.2s cubic-bezier(0, 0, 0.2, 1);\n padding: 1rem;\n}\n\n.modal-dialog {\n background: var(--mat-sys-surface);\n border-radius: var(--mat-sys-corner-extra-large);\n box-shadow: var(--mat-sys-elevation-5);\n max-width: 500px;\n width: 100%;\n max-height: 90vh;\n overflow: hidden;\n animation: slideUp 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid var(--mat-sys-outline-variant);\n}\n\n.modal-header .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0;\n}\n\n.modal-header .modal-close {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: var(--mat-sys-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal-header .modal-close:hover {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.modal-body {\n padding: 1.5rem;\n}\n\n.modal-body p {\n font-size: 1.0625rem;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1rem 0;\n}\n\n.modal-body p:last-child {\n margin-bottom: 0;\n}\n\n.modal-body .text-warning {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: var(--mat-sys-secondary-container);\n color: var(--mat-sys-secondary);\n border-radius: var(--mat-sys-corner-small);\n font-weight: 500;\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-start;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid var(--mat-sys-outline-variant);\n background: var(--mat-sys-surface-container-low);\n}\n\n/* -----------------------------------------------------------------------------\n Button System\n ----------------------------------------------------------------------------- */\n.mj-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.75rem 1.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mat-sys-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: nowrap;\n min-height: 44px;\n}\n\n.mj-btn:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n/* Primary Button - Dark, lightens on hover */\n.mj-btn-primary {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.mj-btn-primary:hover:not(:disabled) {\n background: #3395C8;\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n.mj-btn-primary:active:not(:disabled) {\n background: #4BA5D4;\n transform: scale(0.98);\n}\n\n/* Secondary Button - Light, darkens on hover */\n.mj-btn-secondary {\n background: var(--mat-sys-surface);\n color: var(--mat-sys-primary);\n border: 1px solid var(--mat-sys-outline);\n}\n\n.mj-btn-secondary:hover:not(:disabled) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n border-color: var(--mat-sys-primary);\n}\n\n.mj-btn-secondary:active:not(:disabled) {\n background: #005A8C;\n border-color: #005A8C;\n}\n\n/* Ghost Button - Transparent, fills on hover */\n.mj-btn-ghost {\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.mj-btn-ghost:hover:not(:disabled) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.mj-btn-ghost:active:not(:disabled) {\n background: #005A8C;\n}\n\n/* Danger Button - Dark red, lightens on hover */\n.mj-btn-danger {\n background: var(--mat-sys-error);\n color: var(--mat-sys-on-error);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.mj-btn-danger:hover:not(:disabled) {\n background: #E57373;\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n.mj-btn-danger:active:not(:disabled) {\n background: #EF9A9A;\n transform: scale(0.98);\n}\n\n/* Small Button */\n.mj-btn-sm {\n padding: 0.5rem 0.875rem;\n font-size: 0.8125rem;\n min-height: 36px;\n}\n\n/* Icon-only Button */\n.mj-btn-icon-only {\n padding: 0.625rem;\n min-width: 44px;\n min-height: 44px;\n}\n\n/* Icon-mobile buttons show text on larger screens */\n.mj-btn-icon-mobile {\n gap: 0.5rem;\n}\n\n.mj-btn-icon-mobile .btn-text {\n display: inline;\n}\n\n/* -----------------------------------------------------------------------------\n Utility Classes\n ----------------------------------------------------------------------------- */\n.text-danger {\n color: var(--mat-sys-error);\n}\n\n.text-warning {\n color: var(--mat-sys-secondary);\n}\n\n/* -----------------------------------------------------------------------------\n Desktop (1440px+) - Large Screen Optimizations\n ----------------------------------------------------------------------------- */\n@media (min-width: 1440px) {\n .application-management-container {\n max-width: 1920px;\n margin: 0 auto;\n }\n\n .action-buttons {\n padding: 1rem 2rem;\n }\n\n .mj-grid-4 {\n padding: 0 2rem 1rem 2rem;\n gap: 1.25rem;\n }\n\n .filters-section {\n margin: 0 2rem 1rem 2rem;\n padding: 1rem 1.25rem;\n }\n\n .content-area {\n padding: 2rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Animations\n ----------------------------------------------------------------------------- */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Accessibility: Focus Indicators\n ----------------------------------------------------------------------------- */\n.mj-search-input:focus-visible,\nbutton:focus-visible,\n.mj-btn:focus-visible {\n outline: 2px solid var(--mat-sys-primary);\n outline-offset: 2px;\n}\n\n/* -----------------------------------------------------------------------------\n Accessibility: Reduced Motion\n ----------------------------------------------------------------------------- */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Mobile-specific adjustments (< 640px)\n ----------------------------------------------------------------------------- */\n@media (max-width: 639px) {\n /* Compact sticky header for mobile */\n .sticky-header {\n padding: 0;\n }\n\n /* Compact action buttons row */\n .action-buttons {\n padding: 0.5rem 0.75rem;\n gap: 0.5rem;\n justify-content: flex-end;\n }\n\n /* Icon-only buttons on mobile - keep pill shape */\n .mj-btn-icon-mobile {\n padding: 0.5rem 0.75rem;\n min-height: 40px;\n gap: 0;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mj-btn-icon-mobile .btn-text {\n display: none;\n }\n\n .mj-btn-icon-mobile i {\n font-size: 1.125rem;\n }\n\n /* Hide stats cards on mobile to save space */\n .mj-grid-4 {\n display: none !important;\n }\n\n /* Compact filters section */\n .filters-section {\n margin: 0 0.5rem 0.5rem 0.5rem;\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-small);\n }\n\n .filters-row {\n gap: 0.5rem;\n flex-direction: column;\n align-items: stretch;\n }\n\n /* Full-width compact search on mobile */\n .mj-search {\n min-width: 100%;\n }\n\n .mj-search .mj-search-input {\n padding: 0.625rem 1rem 0.625rem 2.5rem;\n min-height: 40px;\n font-size: 0.9375rem;\n border-width: 2px;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mj-search .mj-search-icon {\n left: 0.75rem;\n font-size: 0.875rem;\n }\n\n /* Horizontal scrollable filter buttons */\n .mj-filter-group {\n width: 100%;\n }\n\n .mj-filter-group .mj-filter-label {\n display: none;\n }\n\n .mj-filter-group .mj-filter-buttons {\n display: flex;\n width: 100%;\n justify-content: stretch;\n }\n\n .mj-filter-buttons .mj-btn {\n flex: 1;\n padding: 0.375rem 0.75rem;\n min-height: 36px;\n font-size: 0.75rem;\n font-weight: 500;\n border-radius: var(--mat-sys-corner-full);\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n /* Hover state for filter buttons on mobile */\n .mj-filter-buttons .mj-btn:hover:not(:disabled):not(.mj-btn-primary) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n }\n\n /* Active/selected state for filter buttons on mobile */\n .mj-filter-buttons .mj-btn.mj-btn-primary {\n background: var(--mat-sys-primary) !important;\n color: var(--mat-sys-on-primary) !important;\n box-shadow: var(--mat-sys-elevation-1);\n }\n\n /* More compact scrollable content */\n .scrollable-content {\n padding: 0.5rem;\n }\n\n /* Compact content area */\n .content-area {\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-small);\n }\n\n /* Modal styles */\n .modal-backdrop {\n padding: 0.5rem;\n }\n\n .modal-dialog {\n border-radius: var(--mat-sys-corner-extra-large);\n max-height: 95vh;\n }\n\n .modal-footer {\n flex-direction: column;\n }\n\n .modal-footer .mj-btn {\n width: 100%;\n justify-content: center;\n border-radius: var(--mat-sys-corner-full);\n }\n\n /* App Card Mobile Layout */\n .applications-list {\n gap: 0.5rem;\n }\n\n .app-card {\n border-radius: var(--mat-sys-corner-small);\n overflow: hidden;\n }\n\n .app-header {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.75rem;\n }\n\n .app-info {\n flex: 1;\n min-width: 0;\n flex-direction: row;\n align-items: flex-start;\n gap: 0.75rem;\n }\n\n .app-icon-wrapper {\n width: 36px;\n height: 36px;\n font-size: 0.875rem;\n flex-shrink: 0;\n border-radius: var(--mat-sys-corner-small);\n }\n\n .app-details {\n flex: 1;\n min-width: 0;\n }\n\n .app-details .app-name {\n font-size: 0.9375rem;\n line-height: 1.3;\n margin-bottom: 0.125rem;\n }\n\n .app-details .app-description {\n font-size: 0.8125rem;\n -webkit-line-clamp: 1;\n line-clamp: 1;\n }\n\n /* On mobile: hide status and actions in header, show only expand button */\n .app-meta {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding-top: 0;\n border-top: none;\n width: auto;\n }\n\n .app-meta .status-badge {\n display: none;\n }\n\n .app-meta .app-actions {\n display: none;\n }\n\n .expand-btn {\n flex-shrink: 0;\n min-width: 36px;\n min-height: 36px;\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .expand-btn i {\n font-size: 1rem;\n }\n\n /* Mobile actions bar - visible on mobile only */\n .mobile-actions-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 0.75rem;\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-small);\n margin-bottom: 0.75rem;\n }\n\n .mobile-actions-bar .status-badge {\n padding: 0.25rem 0.625rem;\n font-size: 0.6875rem;\n }\n\n .mobile-action-buttons {\n display: flex;\n gap: 0.5rem;\n }\n\n .mobile-action-buttons .mj-btn-sm {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.5rem 0.875rem;\n min-height: 36px;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mobile-action-buttons .mj-btn-sm i {\n font-size: 0.875rem;\n }\n\n .mobile-action-buttons .btn-label {\n font-size: 0.8125rem;\n }\n\n .app-stats {\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: 1rem;\n }\n\n .app-content {\n padding: 0.75rem;\n }\n\n /* Entities grid in expanded view */\n .entities-grid {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n\n .entity-item {\n padding: 0.5rem;\n }\n\n .entity-item .entity-name {\n font-size: 0.875rem;\n word-break: break-word;\n }\n\n /* Empty state compact */\n .empty-state {\n padding: 2rem 1rem;\n }\n\n .empty-state .empty-icon {\n font-size: 2.5rem;\n }\n\n /* Loading container compact */\n .loading-container {\n padding: 2rem 1rem;\n }\n}\n\n/* Small mobile (< 375px) - Extra compact */\n@media (max-width: 374px) {\n .action-buttons {\n padding: 0.375rem 0.5rem;\n }\n\n .filters-section {\n margin: 0 0.375rem 0.375rem 0.375rem;\n padding: 0.375rem;\n }\n\n .scrollable-content {\n padding: 0.375rem;\n }\n\n .content-area {\n padding: 0.375rem;\n }\n\n .app-header {\n padding: 0.625rem;\n }\n}\n"] }]
|
|
673
|
-
}], () => [], null); })();
|
|
674
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationManagementComponent, { className: "ApplicationManagementComponent", filePath: "src/lib/application-management/application-management.component.ts", lineNumber:
|
|
677
|
+
args: [{ standalone: false, selector: 'mj-application-management', template: "<div class=\"application-management-container\">\n <!-- Sticky Header Section -->\n <div class=\"sticky-header\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\" role=\"toolbar\" aria-label=\"Application management actions\">\n <button\n class=\"mj-btn mj-btn-secondary mj-btn-icon-mobile\"\n (click)=\"refreshData()\"\n [disabled]=\"isLoading\"\n aria-label=\"Refresh applications\"\n >\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\" aria-hidden=\"true\"></i>\n <span class=\"btn-text\">Refresh</span>\n </button>\n <button class=\"mj-btn mj-btn-primary mj-btn-icon-mobile\" (click)=\"createNewApplication()\" aria-label=\"Add new application\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <span class=\"btn-text\">Add Application</span>\n </button>\n </div>\n\n <!-- Stats Cards -->\n <div class=\"mj-grid-4\" role=\"region\" aria-label=\"Application statistics\">\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-total\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total applications count\">{{ stats.totalApplications }}</div>\n <div class=\"stat-label\">Total Applications</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-active\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Active applications count\">{{ stats.activeApplications }}</div>\n <div class=\"stat-label\">Active Applications</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-entities\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total entities count\">{{ stats.totalEntities }}</div>\n <div class=\"stat-label\">Total Entities</div>\n </div>\n </div>\n\n <div class=\"mj-card\">\n <div class=\"stat-icon stat-icon-public\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-globe\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Public entities count\">{{ stats.publicEntities }}</div>\n <div class=\"stat-label\">Public Entities</div>\n </div>\n </div>\n </div>\n\n <!-- Filters Section -->\n <div class=\"filters-section\" role=\"search\" aria-label=\"Filter applications\">\n <div class=\"filters-row\">\n <!-- Search - Enhanced prominent search box -->\n <div class=\"mj-search\">\n <i class=\"fa-solid fa-search mj-search-icon\" aria-hidden=\"true\"></i>\n <input\n type=\"text\"\n class=\"mj-search-input\"\n placeholder=\"Search applications by name or description...\"\n (input)=\"onSearchChange($event)\"\n [value]=\"filters$.value.search\"\n aria-label=\"Search applications\"\n />\n </div>\n\n <!-- Status Filter -->\n <div class=\"mj-filter-group\">\n <label class=\"mj-filter-label\" id=\"status-filter-label\">Status</label>\n <div class=\"mj-filter-buttons\" role=\"group\" aria-labelledby=\"status-filter-label\">\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'all'\"\n (click)=\"onStatusFilterChange('all')\"\n [attr.aria-pressed]=\"filters$.value.status === 'all'\"\n >\n All\n </button>\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'active'\"\n (click)=\"onStatusFilterChange('active')\"\n [attr.aria-pressed]=\"filters$.value.status === 'active'\"\n >\n Active\n </button>\n <button\n class=\"mj-btn mj-btn-ghost\"\n [class.mj-btn-primary]=\"filters$.value.status === 'inactive'\"\n (click)=\"onStatusFilterChange('inactive')\"\n [attr.aria-pressed]=\"filters$.value.status === 'inactive'\"\n >\n Inactive\n </button>\n </div>\n </div>\n </div>\n </div>\n </div><!-- End Sticky Header -->\n\n <!-- Scrollable Content Section -->\n <div class=\"scrollable-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\">\n <mj-loading text=\"Loading applications...\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button class=\"mj-btn mj-btn-primary\" (click)=\"loadInitialData()\">\n <i class=\"fa-solid fa-refresh\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Content Area -->\n @if (!isLoading && !error) {\n <div class=\"content-area\">\n <div class=\"applications-list\" role=\"list\">\n @for (app of filteredApplications; track app.ID) {\n <div class=\"app-card\" [class.expanded]=\"isAppExpanded(app.ID)\" role=\"listitem\">\n <div class=\"app-header\" (click)=\"toggleAppExpansion(app.ID)\" role=\"button\" [attr.aria-expanded]=\"isAppExpanded(app.ID)\">\n <div class=\"app-info\">\n <div class=\"app-icon-wrapper\">\n <i [class]=\"'fa-solid ' + getAppIcon(app)\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"app-details\">\n <h3 class=\"app-name\">{{ app.Name }}</h3>\n <p class=\"app-description\">{{ app.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"app-meta\">\n <span class=\"status-badge\" [class]=\"getAppStatusClass(app)\">\n {{ getAppStatusLabel(app) }}\n </span>\n <div class=\"app-actions\" (click)=\"$event.stopPropagation()\">\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm\"\n (click)=\"editApplication(app)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + app.Name\"\n >\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm mj-btn-danger\"\n (click)=\"confirmDeleteApplication(app)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + app.Name\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n <button class=\"expand-btn\" aria-label=\"Toggle details\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isAppExpanded(app.ID)) {\n <div class=\"app-content\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"status-badge\" [class]=\"getAppStatusClass(app)\">\n {{ getAppStatusLabel(app) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm\"\n (click)=\"editApplication(app)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + app.Name\"\n >\n <i class=\"fa-solid fa-edit\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n <button\n class=\"mj-btn mj-btn-ghost mj-btn-sm mj-btn-danger\"\n (click)=\"confirmDeleteApplication(app)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + app.Name\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n <span class=\"btn-label\">Delete</span>\n </button>\n </div>\n </div>\n\n <div class=\"app-stats\">\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Entities:</span>\n <span class=\"stat-value\">{{ getAppEntities(app.ID).length }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-calendar\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Created:</span>\n <span class=\"stat-value\">{{ app.__mj_CreatedAt | date:'short' }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Updated:</span>\n <span class=\"stat-value\">{{ app.__mj_UpdatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <div class=\"entities-section\">\n <h4 class=\"section-title\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n Application Entities\n </h4>\n\n @if (getAppEntities(app.ID).length > 0) {\n <div class=\"entities-grid\">\n @for (appEntity of getAppEntities(app.ID); track appEntity.ID) {\n @if (getEntityInfo(appEntity.EntityID); as entity) {\n <div class=\"entity-item\">\n <div class=\"entity-name\">{{ entity.Name }}</div>\n <div class=\"entity-meta\">\n @if (appEntity.DefaultForNewUser) {\n <span class=\"entity-badge public\">Public</span>\n }\n <span class=\"entity-sequence\">Order: {{ appEntity.Sequence }}</span>\n </div>\n </div>\n }\n }\n </div>\n } @else {\n <p class=\"no-entities\">No entities configured for this application</p>\n }\n </div>\n </div>\n }\n </div>\n }\n\n @if (filteredApplications.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-cubes empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">No applications found</p>\n <p class=\"empty-subtext\">Try adjusting your filters or create a new application</p>\n </div>\n }\n </div>\n </div>\n }\n </div><!-- End Scrollable Content -->\n\n <!-- Application Dialog -->\n <mj-application-dialog\n [visible]=\"showApplicationDialog\"\n [data]=\"applicationDialogData\"\n (result)=\"onApplicationDialogResult($event)\"\n ></mj-application-dialog>\n\n <!-- Delete Confirmation Dialog -->\n @if (showDeleteConfirm && selectedApp) {\n <div class=\"modal-backdrop\" (click)=\"showDeleteConfirm = false\" role=\"presentation\">\n <div\n class=\"modal-dialog\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n aria-describedby=\"delete-dialog-description\"\n >\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"delete-dialog-title\">\n <i class=\"fa-solid fa-exclamation-triangle text-danger\" aria-hidden=\"true\"></i>\n Confirm Delete\n </h3>\n <button\n class=\"modal-close\"\n (click)=\"showDeleteConfirm = false\"\n aria-label=\"Close dialog\"\n >\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"modal-body\" id=\"delete-dialog-description\">\n <p>Are you sure you want to delete the application <strong>{{ selectedApp.Name }}</strong>?</p>\n <p class=\"text-warning\">\n <i class=\"fa-solid fa-warning\" aria-hidden=\"true\"></i>\n This will remove all entity associations for this application.\n </p>\n </div>\n <div class=\"modal-footer\">\n <!-- Primary action (Delete) on LEFT per MD3 design guide -->\n <button class=\"mj-btn mj-btn-danger\" (click)=\"deleteApplication()\" [disabled]=\"isLoading\">\n @if (isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Deleting...\n } @else {\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n Delete Application\n }\n </button>\n <button class=\"mj-btn mj-btn-secondary\" (click)=\"showDeleteConfirm = false\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* =============================================================================\n Application Management Component - MD3 Design System\n Following Material Design 3 color palette and design tokens\n ============================================================================= */\n\n/* -----------------------------------------------------------------------------\n Host Element - Using shared MD3 tokens from _md3-theme.scss\n ----------------------------------------------------------------------------- */\n:host {\n /* Host element fills container but doesn't scroll itself */\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n/* -----------------------------------------------------------------------------\n Container & Layout\n ----------------------------------------------------------------------------- */\n.application-management-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n position: relative;\n width: 100%;\n background: var(--mat-sys-surface);\n}\n\n/* -----------------------------------------------------------------------------\n Sticky Header - Always visible controls\n ----------------------------------------------------------------------------- */\n.sticky-header {\n flex-shrink: 0;\n background: var(--mat-sys-surface);\n border-bottom: 1px solid var(--mat-sys-outline-variant);\n box-shadow: var(--mat-sys-elevation-1);\n z-index: 10;\n}\n\n/* -----------------------------------------------------------------------------\n Scrollable Content - Application list area\n ----------------------------------------------------------------------------- */\n.scrollable-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n padding: 1rem;\n background: var(--mat-sys-surface-container-lowest);\n}\n\n@media (min-width: 768px) {\n .scrollable-content {\n padding: 1.5rem 2rem;\n }\n}\n\n@media (min-width: 1024px) {\n .scrollable-content {\n padding: 2rem;\n }\n}\n\n@media (min-width: 1440px) {\n .scrollable-content {\n padding: 2rem 2.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons (In Sticky Header)\n ----------------------------------------------------------------------------- */\n.action-buttons {\n flex-shrink: 0;\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n padding: 0.75rem 1rem;\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 768px) {\n .action-buttons {\n padding: 1rem 1.5rem;\n }\n}\n\n@media (max-width: 639px) {\n .action-buttons {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Statistics Cards - Static Display (Non-interactive)\n ----------------------------------------------------------------------------- */\n.mj-grid-4 {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n padding: 0 1rem 0.75rem 1rem;\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 768px) {\n .mj-grid-4 {\n grid-template-columns: repeat(4, 1fr);\n padding: 0 1.5rem 1rem 1.5rem;\n gap: 0.75rem;\n }\n}\n\n@media (min-width: 1024px) {\n .mj-grid-4 {\n gap: 1rem;\n }\n}\n\n.mj-card {\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-medium);\n padding: 1rem;\n box-shadow: none;\n display: flex;\n align-items: center;\n gap: 1rem;\n border: 1px solid var(--mat-sys-outline-variant);\n cursor: default;\n pointer-events: none;\n}\n\n@media (min-width: 768px) {\n .mj-card {\n padding: 1rem 1.25rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Stat Icon Containers\n ----------------------------------------------------------------------------- */\n.stat-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--mat-sys-corner-medium);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n@media (min-width: 768px) {\n .stat-icon {\n width: 52px;\n height: 52px;\n font-size: 1.375rem;\n }\n}\n\n.stat-icon-total {\n background: var(--mat-sys-primary-container);\n color: var(--mat-sys-primary);\n}\n\n.stat-icon-active {\n background: var(--mat-sys-tertiary-container);\n color: var(--mat-sys-tertiary);\n}\n\n.stat-icon-entities {\n background: var(--mat-sys-secondary-container);\n color: #B5751A;\n}\n\n.stat-icon-public {\n background: var(--mat-sys-tertiary-container);\n color: var(--mat-sys-tertiary);\n}\n\n/* -----------------------------------------------------------------------------\n Stat Content Typography\n ----------------------------------------------------------------------------- */\n.stat-content {\n flex: 1;\n min-width: 0;\n}\n\n.stat-content .stat-value {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--mat-sys-on-surface);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n@media (min-width: 768px) {\n .stat-content .stat-value {\n font-size: 2rem;\n }\n}\n\n.stat-content .stat-label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-top: 0.25rem;\n}\n\n@media (min-width: 768px) {\n .stat-content .stat-label {\n font-size: 0.8125rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Filters Section\n ----------------------------------------------------------------------------- */\n.filters-section {\n flex-shrink: 0;\n background: var(--mat-sys-surface-container);\n margin: 0 1rem 0.75rem 1rem;\n padding: 0.75rem;\n border-radius: var(--mat-sys-corner-small);\n border: 1px solid var(--mat-sys-outline-variant);\n}\n\n@media (min-width: 768px) {\n .filters-section {\n margin: 0 1.5rem 1rem 1.5rem;\n padding: 0.875rem 1rem;\n }\n}\n\n.filters-row {\n display: flex;\n gap: 1rem;\n align-items: flex-end;\n flex-wrap: wrap;\n}\n\n@media (min-width: 768px) {\n .filters-row {\n gap: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Search Input\n ----------------------------------------------------------------------------- */\n.mj-search {\n position: relative;\n flex: 1;\n min-width: 200px;\n}\n\n@media (min-width: 640px) {\n .mj-search {\n min-width: 280px;\n }\n}\n\n@media (min-width: 1024px) {\n .mj-search {\n min-width: 400px;\n max-width: 600px;\n }\n}\n\n@media (min-width: 1440px) {\n .mj-search {\n min-width: 500px;\n max-width: 800px;\n }\n}\n\n.mj-search .mj-search-icon {\n position: absolute;\n left: 1rem;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mat-sys-on-surface-variant);\n font-size: 1rem;\n transition: color 0.2s ease;\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-icon {\n left: 1.25rem;\n font-size: 1.125rem;\n }\n}\n\n.mj-search .mj-search-input {\n width: 100%;\n padding: 0.875rem 1rem 0.875rem 2.75rem;\n border: 2px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-full);\n font-size: 1rem;\n background: var(--mat-sys-surface);\n color: var(--mat-sys-on-surface);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-input {\n padding: 1rem 1.25rem 1rem 3.25rem;\n font-size: 1.0625rem;\n box-shadow: var(--mat-sys-elevation-1);\n }\n}\n\n@media (min-width: 1440px) {\n .mj-search .mj-search-input {\n padding: 1.125rem 1.5rem 1.125rem 3.5rem;\n }\n}\n\n.mj-search .mj-search-input::placeholder {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.mj-search .mj-search-input:hover {\n border-color: var(--mat-sys-primary);\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.mj-search .mj-search-input:focus {\n outline: none;\n border-color: var(--mat-sys-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--mat-sys-surface);\n}\n\n@media (min-width: 1024px) {\n .mj-search .mj-search-input:focus {\n box-shadow: var(--mat-sys-elevation-2), 0 0 0 3px rgba(0, 118, 182, 0.2);\n }\n}\n\n.mj-search:focus-within .mj-search-icon {\n color: var(--mat-sys-primary);\n}\n\n/* -----------------------------------------------------------------------------\n Filter Button Group\n ----------------------------------------------------------------------------- */\n.mj-filter-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.mj-filter-group .mj-filter-label {\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--mat-sys-on-surface);\n}\n\n.mj-filter-group .mj-filter-buttons {\n display: flex;\n background: #EDF0F4;\n border-radius: var(--mat-sys-corner-full);\n padding: 4px;\n gap: 2px;\n}\n\n.mj-filter-buttons .mj-btn-ghost {\n border-radius: var(--mat-sys-corner-full);\n padding: 0.5rem 1rem;\n font-size: 0.875rem;\n font-weight: 500;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.mj-filter-buttons .mj-btn-ghost:hover:not(:disabled):not(.mj-btn-primary) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.mj-filter-buttons .mj-btn-primary {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n/* -----------------------------------------------------------------------------\n Content Area - Inside scrollable section\n ----------------------------------------------------------------------------- */\n.content-area {\n flex: 1 1 auto;\n overflow: visible;\n position: relative;\n background: var(--mat-sys-surface);\n border-radius: var(--mat-sys-corner-large);\n box-shadow: var(--mat-sys-elevation-1);\n padding: 1rem;\n border: 1px solid var(--mat-sys-outline-variant);\n}\n\n@media (min-width: 768px) {\n .content-area {\n padding: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Applications List\n ----------------------------------------------------------------------------- */\n.applications-list {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n/* -----------------------------------------------------------------------------\n Application Card - Interactive\n ----------------------------------------------------------------------------- */\n.app-card {\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-large);\n overflow: hidden;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n cursor: pointer;\n}\n\n.app-card:hover {\n box-shadow: var(--mat-sys-elevation-2);\n border-color: var(--mat-sys-primary);\n}\n\n.app-card.expanded {\n box-shadow: var(--mat-sys-elevation-3);\n border-color: var(--mat-sys-primary);\n}\n\n.app-card.expanded .expand-btn i {\n transform: rotate(180deg);\n}\n\n.app-header {\n padding: 1.25rem 1.5rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n background: var(--mat-sys-surface-container-lowest);\n transition: background-color 0.2s ease;\n}\n\n.app-header:hover {\n background: var(--mat-sys-surface-container-low);\n}\n\n.app-info {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n}\n\n.app-icon-wrapper {\n width: 48px;\n height: 48px;\n border-radius: var(--mat-sys-corner-medium);\n background: var(--mat-sys-primary-container);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mat-sys-primary);\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.app-details {\n flex: 1;\n min-width: 0;\n}\n\n.app-details .app-name {\n font-size: 1.0625rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 0.25rem 0;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n\n.app-details .app-description {\n font-size: 0.9375rem;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (max-width: 639px) {\n .app-details .app-description {\n white-space: normal;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n}\n\n.app-meta {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-shrink: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Status Badge\n ----------------------------------------------------------------------------- */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.875rem;\n border-radius: var(--mat-sys-corner-full);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.status-badge.status-active {\n background: var(--mat-sys-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--mat-sys-tertiary);\n}\n\n.status-badge.status-inactive {\n background: var(--mat-sys-error-container);\n color: var(--mat-sys-on-error-container);\n border: 1px solid var(--mat-sys-error);\n}\n\n.status-badge i {\n font-size: 0.625rem;\n}\n\n/* -----------------------------------------------------------------------------\n Application Actions\n ----------------------------------------------------------------------------- */\n.app-actions {\n display: flex;\n gap: 0.5rem;\n}\n\n.expand-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n font-size: 1rem;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--mat-sys-corner-full);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.expand-btn:hover {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.expand-btn i {\n transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n/* -----------------------------------------------------------------------------\n Application Content (Expanded)\n ----------------------------------------------------------------------------- */\n.app-content {\n padding: 1.5rem;\n background: var(--mat-sys-surface);\n border-top: 1px solid var(--mat-sys-outline-variant);\n animation: slideDown 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.mobile-actions-bar {\n display: none;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.app-stats {\n display: flex;\n gap: 2rem;\n margin-bottom: 1.5rem;\n flex-wrap: wrap;\n}\n\n.app-stats .stat-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.9375rem;\n}\n\n.app-stats .stat-item i {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.app-stats .stat-item .stat-label {\n color: var(--mat-sys-on-surface-variant);\n}\n\n.app-stats .stat-item .stat-value {\n color: var(--mat-sys-on-surface);\n font-weight: 600;\n}\n\n/* -----------------------------------------------------------------------------\n Entities Section\n ----------------------------------------------------------------------------- */\n.entities-section {\n padding: 1rem;\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-small);\n}\n\n.entities-section .section-title {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1rem 0;\n}\n\n.entities-section .section-title i {\n color: var(--mat-sys-primary);\n font-size: 1.125rem;\n}\n\n.entities-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 0.75rem;\n}\n\n@media (min-width: 640px) {\n .entities-grid {\n grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));\n }\n}\n\n.entity-item {\n padding: 0.75rem;\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline-variant);\n border-radius: var(--mat-sys-corner-small);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.entity-item:hover {\n border-color: var(--mat-sys-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.entity-item .entity-name {\n font-size: 0.9375rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin-bottom: 0.25rem;\n}\n\n.entity-item .entity-meta {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.8125rem;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.entity-badge {\n padding: 0.125rem 0.5rem;\n border-radius: var(--mat-sys-corner-full);\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.entity-badge.public {\n background: var(--mat-sys-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--mat-sys-tertiary);\n}\n\n.entity-sequence {\n font-size: 0.8125rem;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.no-entities {\n color: var(--mat-sys-on-surface-variant);\n font-size: 0.9375rem;\n text-align: center;\n padding: 1rem;\n margin: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Empty State\n ----------------------------------------------------------------------------- */\n.empty-state {\n text-align: center;\n padding: 4rem 2rem;\n}\n\n.empty-state .empty-icon {\n font-size: 4rem;\n color: var(--mat-sys-outline-variant);\n margin-bottom: 1.5rem;\n}\n\n.empty-state .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0 0 0.5rem 0;\n}\n\n.empty-state .empty-subtext {\n font-size: 1rem;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n}\n\n/* -----------------------------------------------------------------------------\n Loading State\n ----------------------------------------------------------------------------- */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n}\n\n/* -----------------------------------------------------------------------------\n Error State\n ----------------------------------------------------------------------------- */\n.error-container {\n text-align: center;\n padding: 4rem 2rem;\n}\n\n.error-container .error-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n}\n\n.error-container .error-icon {\n font-size: 3.5rem;\n color: var(--mat-sys-error);\n margin-bottom: 1rem;\n}\n\n.error-container .error-message {\n font-size: 1.0625rem;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1.5rem 0;\n}\n\n/* -----------------------------------------------------------------------------\n Modal Dialog\n ----------------------------------------------------------------------------- */\n.modal-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.2s cubic-bezier(0, 0, 0.2, 1);\n padding: 1rem;\n}\n\n.modal-dialog {\n background: var(--mat-sys-surface);\n border-radius: var(--mat-sys-corner-extra-large);\n box-shadow: var(--mat-sys-elevation-5);\n max-width: 500px;\n width: 100%;\n max-height: 90vh;\n overflow: hidden;\n animation: slideUp 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid var(--mat-sys-outline-variant);\n}\n\n.modal-header .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n margin: 0;\n}\n\n.modal-header .modal-close {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: var(--mat-sys-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal-header .modal-close:hover {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.modal-body {\n padding: 1.5rem;\n}\n\n.modal-body p {\n font-size: 1.0625rem;\n color: var(--mat-sys-on-surface);\n margin: 0 0 1rem 0;\n}\n\n.modal-body p:last-child {\n margin-bottom: 0;\n}\n\n.modal-body .text-warning {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: var(--mat-sys-secondary-container);\n color: var(--mat-sys-secondary);\n border-radius: var(--mat-sys-corner-small);\n font-weight: 500;\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-start;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid var(--mat-sys-outline-variant);\n background: var(--mat-sys-surface-container-low);\n}\n\n/* -----------------------------------------------------------------------------\n Button System\n ----------------------------------------------------------------------------- */\n.mj-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.75rem 1.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mat-sys-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: nowrap;\n min-height: 44px;\n}\n\n.mj-btn:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n/* Primary Button - Dark, lightens on hover */\n.mj-btn-primary {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.mj-btn-primary:hover:not(:disabled) {\n background: #3395C8;\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n.mj-btn-primary:active:not(:disabled) {\n background: #4BA5D4;\n transform: scale(0.98);\n}\n\n/* Secondary Button - Light, darkens on hover */\n.mj-btn-secondary {\n background: var(--mat-sys-surface);\n color: var(--mat-sys-primary);\n border: 1px solid var(--mat-sys-outline);\n}\n\n.mj-btn-secondary:hover:not(:disabled) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n border-color: var(--mat-sys-primary);\n}\n\n.mj-btn-secondary:active:not(:disabled) {\n background: #005A8C;\n border-color: #005A8C;\n}\n\n/* Ghost Button - Transparent, fills on hover */\n.mj-btn-ghost {\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n}\n\n.mj-btn-ghost:hover:not(:disabled) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n}\n\n.mj-btn-ghost:active:not(:disabled) {\n background: #005A8C;\n}\n\n/* Danger Button - Dark red, lightens on hover */\n.mj-btn-danger {\n background: var(--mat-sys-error);\n color: var(--mat-sys-on-error);\n box-shadow: var(--mat-sys-elevation-1);\n}\n\n.mj-btn-danger:hover:not(:disabled) {\n background: #E57373;\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n.mj-btn-danger:active:not(:disabled) {\n background: #EF9A9A;\n transform: scale(0.98);\n}\n\n/* Small Button */\n.mj-btn-sm {\n padding: 0.5rem 0.875rem;\n font-size: 0.8125rem;\n min-height: 36px;\n}\n\n/* Icon-only Button */\n.mj-btn-icon-only {\n padding: 0.625rem;\n min-width: 44px;\n min-height: 44px;\n}\n\n/* Icon-mobile buttons show text on larger screens */\n.mj-btn-icon-mobile {\n gap: 0.5rem;\n}\n\n.mj-btn-icon-mobile .btn-text {\n display: inline;\n}\n\n/* -----------------------------------------------------------------------------\n Utility Classes\n ----------------------------------------------------------------------------- */\n.text-danger {\n color: var(--mat-sys-error);\n}\n\n.text-warning {\n color: var(--mat-sys-secondary);\n}\n\n/* -----------------------------------------------------------------------------\n Desktop (1440px+) - Large Screen Optimizations\n ----------------------------------------------------------------------------- */\n@media (min-width: 1440px) {\n .application-management-container {\n max-width: 1920px;\n margin: 0 auto;\n }\n\n .action-buttons {\n padding: 1rem 2rem;\n }\n\n .mj-grid-4 {\n padding: 0 2rem 1rem 2rem;\n gap: 1.25rem;\n }\n\n .filters-section {\n margin: 0 2rem 1rem 2rem;\n padding: 1rem 1.25rem;\n }\n\n .content-area {\n padding: 2rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Animations\n ----------------------------------------------------------------------------- */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Accessibility: Focus Indicators\n ----------------------------------------------------------------------------- */\n.mj-search-input:focus-visible,\nbutton:focus-visible,\n.mj-btn:focus-visible {\n outline: 2px solid var(--mat-sys-primary);\n outline-offset: 2px;\n}\n\n/* -----------------------------------------------------------------------------\n Accessibility: Reduced Motion\n ----------------------------------------------------------------------------- */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Mobile-specific adjustments (< 640px)\n ----------------------------------------------------------------------------- */\n@media (max-width: 639px) {\n /* Compact sticky header for mobile */\n .sticky-header {\n padding: 0;\n }\n\n /* Compact action buttons row */\n .action-buttons {\n padding: 0.5rem 0.75rem;\n gap: 0.5rem;\n justify-content: flex-end;\n }\n\n /* Icon-only buttons on mobile - keep pill shape */\n .mj-btn-icon-mobile {\n padding: 0.5rem 0.75rem;\n min-height: 40px;\n gap: 0;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mj-btn-icon-mobile .btn-text {\n display: none;\n }\n\n .mj-btn-icon-mobile i {\n font-size: 1.125rem;\n }\n\n /* Hide stats cards on mobile to save space */\n .mj-grid-4 {\n display: none !important;\n }\n\n /* Compact filters section */\n .filters-section {\n margin: 0 0.5rem 0.5rem 0.5rem;\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-small);\n }\n\n .filters-row {\n gap: 0.5rem;\n flex-direction: column;\n align-items: stretch;\n }\n\n /* Full-width compact search on mobile */\n .mj-search {\n min-width: 100%;\n }\n\n .mj-search .mj-search-input {\n padding: 0.625rem 1rem 0.625rem 2.5rem;\n min-height: 40px;\n font-size: 0.9375rem;\n border-width: 2px;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mj-search .mj-search-icon {\n left: 0.75rem;\n font-size: 0.875rem;\n }\n\n /* Horizontal scrollable filter buttons */\n .mj-filter-group {\n width: 100%;\n }\n\n .mj-filter-group .mj-filter-label {\n display: none;\n }\n\n .mj-filter-group .mj-filter-buttons {\n display: flex;\n width: 100%;\n justify-content: stretch;\n }\n\n .mj-filter-buttons .mj-btn {\n flex: 1;\n padding: 0.375rem 0.75rem;\n min-height: 36px;\n font-size: 0.75rem;\n font-weight: 500;\n border-radius: var(--mat-sys-corner-full);\n background: transparent;\n color: var(--mat-sys-on-surface-variant);\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n /* Hover state for filter buttons on mobile */\n .mj-filter-buttons .mj-btn:hover:not(:disabled):not(.mj-btn-primary) {\n background: var(--mat-sys-primary);\n color: var(--mat-sys-on-primary);\n }\n\n /* Active/selected state for filter buttons on mobile */\n .mj-filter-buttons .mj-btn.mj-btn-primary {\n background: var(--mat-sys-primary) !important;\n color: var(--mat-sys-on-primary) !important;\n box-shadow: var(--mat-sys-elevation-1);\n }\n\n /* More compact scrollable content */\n .scrollable-content {\n padding: 0.5rem;\n }\n\n /* Compact content area */\n .content-area {\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-small);\n }\n\n /* Modal styles */\n .modal-backdrop {\n padding: 0.5rem;\n }\n\n .modal-dialog {\n border-radius: var(--mat-sys-corner-extra-large);\n max-height: 95vh;\n }\n\n .modal-footer {\n flex-direction: column;\n }\n\n .modal-footer .mj-btn {\n width: 100%;\n justify-content: center;\n border-radius: var(--mat-sys-corner-full);\n }\n\n /* App Card Mobile Layout */\n .applications-list {\n gap: 0.5rem;\n }\n\n .app-card {\n border-radius: var(--mat-sys-corner-small);\n overflow: hidden;\n }\n\n .app-header {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.75rem;\n }\n\n .app-info {\n flex: 1;\n min-width: 0;\n flex-direction: row;\n align-items: flex-start;\n gap: 0.75rem;\n }\n\n .app-icon-wrapper {\n width: 36px;\n height: 36px;\n font-size: 0.875rem;\n flex-shrink: 0;\n border-radius: var(--mat-sys-corner-small);\n }\n\n .app-details {\n flex: 1;\n min-width: 0;\n }\n\n .app-details .app-name {\n font-size: 0.9375rem;\n line-height: 1.3;\n margin-bottom: 0.125rem;\n }\n\n .app-details .app-description {\n font-size: 0.8125rem;\n -webkit-line-clamp: 1;\n line-clamp: 1;\n }\n\n /* On mobile: hide status and actions in header, show only expand button */\n .app-meta {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding-top: 0;\n border-top: none;\n width: auto;\n }\n\n .app-meta .status-badge {\n display: none;\n }\n\n .app-meta .app-actions {\n display: none;\n }\n\n .expand-btn {\n flex-shrink: 0;\n min-width: 36px;\n min-height: 36px;\n padding: 0.5rem;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .expand-btn i {\n font-size: 1rem;\n }\n\n /* Mobile actions bar - visible on mobile only */\n .mobile-actions-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 0.75rem;\n background: var(--mat-sys-surface-container-low);\n border-radius: var(--mat-sys-corner-small);\n margin-bottom: 0.75rem;\n }\n\n .mobile-actions-bar .status-badge {\n padding: 0.25rem 0.625rem;\n font-size: 0.6875rem;\n }\n\n .mobile-action-buttons {\n display: flex;\n gap: 0.5rem;\n }\n\n .mobile-action-buttons .mj-btn-sm {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.5rem 0.875rem;\n min-height: 36px;\n border-radius: var(--mat-sys-corner-full);\n }\n\n .mobile-action-buttons .mj-btn-sm i {\n font-size: 0.875rem;\n }\n\n .mobile-action-buttons .btn-label {\n font-size: 0.8125rem;\n }\n\n .app-stats {\n flex-direction: column;\n gap: 0.5rem;\n margin-bottom: 1rem;\n }\n\n .app-content {\n padding: 0.75rem;\n }\n\n /* Entities grid in expanded view */\n .entities-grid {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n\n .entity-item {\n padding: 0.5rem;\n }\n\n .entity-item .entity-name {\n font-size: 0.875rem;\n word-break: break-word;\n }\n\n /* Empty state compact */\n .empty-state {\n padding: 2rem 1rem;\n }\n\n .empty-state .empty-icon {\n font-size: 2.5rem;\n }\n\n /* Loading container compact */\n .loading-container {\n padding: 2rem 1rem;\n }\n}\n\n/* Small mobile (< 375px) - Extra compact */\n@media (max-width: 374px) {\n .action-buttons {\n padding: 0.375rem 0.5rem;\n }\n\n .filters-section {\n margin: 0 0.375rem 0.375rem 0.375rem;\n padding: 0.375rem;\n }\n\n .scrollable-content {\n padding: 0.375rem;\n }\n\n .content-area {\n padding: 0.375rem;\n }\n\n .app-header {\n padding: 0.625rem;\n }\n}\n"] }]
|
|
678
|
+
}], () => [{ type: i0.ChangeDetectorRef }], null); })();
|
|
679
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ApplicationManagementComponent, { className: "ApplicationManagementComponent", filePath: "src/lib/application-management/application-management.component.ts", lineNumber: 29 }); })();
|
|
675
680
|
//# sourceMappingURL=application-management.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-management.component.js","sourceRoot":"","sources":["../../../src/lib/application-management/application-management.component.ts","../../../src/lib/application-management/application-management.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"application-management.component.js","sourceRoot":"","sources":["../../../src/lib/application-management/application-management.component.ts","../../../src/lib/application-management/application-management.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { OnInit, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { ApplicationManager, BaseApplication } from '@memberjunction/ng-base-application';
|
|
3
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Represents an app item in the configuration UI
|
|
7
|
+
*/
|
|
8
|
+
interface AppConfigItem {
|
|
9
|
+
App: BaseApplication;
|
|
10
|
+
UserAppId: string | null;
|
|
11
|
+
Sequence: number;
|
|
12
|
+
IsActive: boolean;
|
|
13
|
+
IsDirty: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Inline component for configuring user's application visibility and order.
|
|
17
|
+
* Allows users to:
|
|
18
|
+
* - Select which applications to show in the app switcher
|
|
19
|
+
* - Reorder applications via drag-and-drop
|
|
20
|
+
*/
|
|
21
|
+
export declare class ApplicationSettingsComponent implements OnInit {
|
|
22
|
+
private appManager;
|
|
23
|
+
private sharedService;
|
|
24
|
+
private cdr;
|
|
25
|
+
AllApps: AppConfigItem[];
|
|
26
|
+
ActiveApps: AppConfigItem[];
|
|
27
|
+
AvailableApps: AppConfigItem[];
|
|
28
|
+
IsLoading: boolean;
|
|
29
|
+
IsSaving: boolean;
|
|
30
|
+
ErrorMessage: string;
|
|
31
|
+
SuccessMessage: string;
|
|
32
|
+
private draggedItem;
|
|
33
|
+
private draggedIndex;
|
|
34
|
+
private dropTargetIndex;
|
|
35
|
+
constructor(appManager: ApplicationManager, sharedService: SharedService, cdr: ChangeDetectorRef);
|
|
36
|
+
ngOnInit(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Loads the user's current app configuration
|
|
39
|
+
*/
|
|
40
|
+
LoadConfiguration(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Builds app config items by matching system apps with user's UserApplication records
|
|
43
|
+
*/
|
|
44
|
+
private BuildAppConfigItems;
|
|
45
|
+
/**
|
|
46
|
+
* Separates apps into active and available lists based on IsActive state
|
|
47
|
+
*/
|
|
48
|
+
private RefreshAppLists;
|
|
49
|
+
/**
|
|
50
|
+
* Native drag start handler
|
|
51
|
+
*/
|
|
52
|
+
OnDragStart(event: DragEvent, item: AppConfigItem, index: number): void;
|
|
53
|
+
/**
|
|
54
|
+
* Native drag over handler - allows drop
|
|
55
|
+
*/
|
|
56
|
+
OnDragOver(event: DragEvent): void;
|
|
57
|
+
/**
|
|
58
|
+
* Native drag enter handler - tracks drop target
|
|
59
|
+
*/
|
|
60
|
+
OnDragEnter(event: DragEvent, index: number): void;
|
|
61
|
+
/**
|
|
62
|
+
* Native drag end handler - cleanup
|
|
63
|
+
*/
|
|
64
|
+
OnDragEnd(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Native drop handler - reorder items
|
|
67
|
+
*/
|
|
68
|
+
OnDrop(event: DragEvent): void;
|
|
69
|
+
/**
|
|
70
|
+
* Adds an app to the user's active list
|
|
71
|
+
*/
|
|
72
|
+
AddApp(item: AppConfigItem): void;
|
|
73
|
+
/**
|
|
74
|
+
* Removes an app from the user's active list
|
|
75
|
+
*/
|
|
76
|
+
RemoveApp(item: AppConfigItem): void;
|
|
77
|
+
/**
|
|
78
|
+
* Moves an app up in the order
|
|
79
|
+
*/
|
|
80
|
+
MoveUp(item: AppConfigItem): void;
|
|
81
|
+
/**
|
|
82
|
+
* Moves an app down in the order
|
|
83
|
+
*/
|
|
84
|
+
MoveDown(item: AppConfigItem): void;
|
|
85
|
+
/**
|
|
86
|
+
* Checks if there are any unsaved changes
|
|
87
|
+
*/
|
|
88
|
+
HasChanges(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Saves the user's app configuration
|
|
91
|
+
*/
|
|
92
|
+
Save(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Updates an existing UserApplication record
|
|
95
|
+
*/
|
|
96
|
+
private UpdateUserApplication;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a new UserApplication record
|
|
99
|
+
*/
|
|
100
|
+
private CreateUserApplication;
|
|
101
|
+
/**
|
|
102
|
+
* Resets all changes and reloads the configuration
|
|
103
|
+
*/
|
|
104
|
+
Reset(): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Check if drop target is active
|
|
107
|
+
*/
|
|
108
|
+
IsDropTarget(index: number): boolean;
|
|
109
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationSettingsComponent, never>;
|
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationSettingsComponent, "mj-application-settings", never, {}, {}, never, never, false, never>;
|
|
111
|
+
}
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=application-settings.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-settings.component.d.ts","sourceRoot":"","sources":["../../../src/lib/application-settings/application-settings.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D;;GAEG;AACH,UAAU,aAAa;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAMa,4BAA6B,YAAW,MAAM;IAqBvD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IArBb,OAAO,EAAE,aAAa,EAAE,CAAM;IAG9B,UAAU,EAAE,aAAa,EAAE,CAAM;IAGjC,aAAa,EAAE,aAAa,EAAE,CAAM;IAEpC,SAAS,UAAS;IAClB,QAAQ,UAAS;IACjB,YAAY,SAAM;IAClB,cAAc,SAAM;IAGpB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAM;gBAGnB,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAG1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUvE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAOlC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAyB9B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOjC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAepC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAkBjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAkBnC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;yCA3VzB,4BAA4B;2CAA5B,4BAA4B;CA8VxC"}
|