From 39ca03d4380ea413ff75e20e44eaca2a24ab1327 Mon Sep 17 00:00:00 2001 From: Abel Mekonnen Date: Tue, 26 May 2026 22:50:08 +0300 Subject: [PATCH 1/6] feat: enhance admin console UI with inline search, improved spacing, and sidebar icons - Replace button-triggered search with real-time inline filtering as user types - Refactor metric cards from HBox to GridPane for proper 3-column layout - Add FontAwesome icons to sidebar navigation buttons (users, auctions, logs, refresh, logout) - Implement color-coded action buttons: red outline for Demote, green for Promote - Increase metric card padding and improve visual hierarchy - Update CSS with professional styling: compact-field, metric-card, nav-button classes - Auto-load admin-panel.css stylesheet for admin views in ViewLoader Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- data/auction.db.sqlite | Bin 36864 -> 36864 bytes dependency-reduced-pom.xml | 1 + image copy.png | Bin 0 -> 57151 bytes image.png | Bin 0 -> 85410 bytes .../controllers/AdminPanelController.java | 228 ++++++++++++------ .../controllers/UserDashboardController.java | 100 +++++++- .../com/auction/client/ui/ViewLoader.java | 6 + src/main/resources/css/admin-panel.css | 145 +++++++++-- src/main/resources/fxml/admin_panel.fxml | 204 +++++----------- src/main/resources/fxml/user_dashboard.fxml | 22 +- 10 files changed, 463 insertions(+), 243 deletions(-) create mode 100644 image copy.png create mode 100644 image.png diff --git a/data/auction.db.sqlite b/data/auction.db.sqlite index 08c5267d60d60a9809e09d134ddc302d94913a7f..61b4c18319854f23fbc682c95b30d3306e2003e2 100644 GIT binary patch delta 170 zcmZozz|^pSX@WGP*hCp;MzM_v3;CtFT^R(}yBPSV@;UOY<>2K##p}s)g2$cv7<<=d z8G$@@jz)$eHtR-S@yR~Y5v-0bzMg)QS4hjT7v-?YgG3$Wyr81}a&ns+C5|w$@L4f5 zZuXS^$i&C5#lYUkE1H$XrV3JPDDNu)Ho?fi$V}J3RM*Hz!NAhWz|hLXWb#_MS{4Qd LhV0FH@|Ow#$a^c| delta 131 zcmV-}0DS*|paOuP0+1U46OkN40TZ!cp${7X000mOfdCJc4=N6=4mu6W4M_~h3`Yyb z3q`XW5N-#NkoU8J7{meue{u#pvq>BA0tazy1|NY96_XSgN+MNLMN%>_GBzzRH7znS lR4_R@Ff=+fIW9FeH8wUdH83z*ldT?o1ZippC9^Ic(r`TJBn|)o diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index c4c5685..2a80411 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -14,6 +14,7 @@ 17 17 + false diff --git a/image copy.png b/image copy.png new file mode 100644 index 0000000000000000000000000000000000000000..8b46a1dd0d2855429117761a934e847d7f6e562a GIT binary patch literal 57151 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
  • 7E#@^~(U0tCC&MmUK-~F*R@I)EU2*wkheko1!eT5uJ%q~H3n1s>O*TWHx z%DRRQKtJ#X{!Uqy$vKNGhCNO-a5@DYBpCt1X>@t=%0D1cFP>j)2y#bN! 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 literal 0 HcmV?d00001 diff --git a/src/main/java/com/auction/client/controllers/AdminPanelController.java b/src/main/java/com/auction/client/controllers/AdminPanelController.java index 977dc61..07a5ec0 100644 --- a/src/main/java/com/auction/client/controllers/AdminPanelController.java +++ b/src/main/java/com/auction/client/controllers/AdminPanelController.java @@ -1,108 +1,192 @@ package com.auction.client.controllers; import javafx.fxml.FXML; -import javafx.scene.control.Label; - -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; +import javafx.scene.layout.HBox; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Priority; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import org.kordamp.ikonli.javafx.FontIcon; public class AdminPanelController { - @FXML private javafx.scene.control.TableView usersTable; - @FXML private javafx.scene.control.ListView auditListView; - @FXML private javafx.scene.control.TextField searchField; - @FXML private javafx.scene.control.TextField promoteField; - @FXML private javafx.scene.control.Label statusLabel; - @FXML private Label totalUsersLabel; - @FXML private Label adminUsersLabel; - @FXML private Label standardUsersLabel; - @FXML private Label auditCountLabel; - @FXML private Label lastUpdatedLabel; + @FXML private VBox contentArea; + @FXML private Label statusLabel; + + // UI components initialized in initUsersView + private VBox usersView; + private TableView usersTable; + private TextField searchField; + private ObservableList allUsers = FXCollections.observableArrayList(); + + // KPI Labels + private Label totalUsersVal = new Label("0"); + private Label adminUsersVal = new Label("0"); + private Label standardUsersVal = new Label("0"); @FXML public void initialize() { - refreshDashboard(); + initUsersView(); + showUsers(); } - private void refreshDashboard() { - try { - com.auction.client.core.ClientContext context = com.auction.client.core.ClientContext.getInstance(); - var service = context.getRmiProvider().getService(); - - java.util.List users = service.getAllUsers(context.getSessionToken()); - usersTable.getItems().setAll(users); - java.util.List logs = service.getAuditLogs(100, context.getSessionToken()); - auditListView.getItems().setAll(logs); - - long adminCount = users.stream() - .filter(user -> com.auction.shared.Constants.ADMIN.equals(user.getRoleType())) - .count(); - long userCount = users.size() - adminCount; + private void initUsersView() { + usersView = new VBox(20); + usersView.setPadding(new javafx.geometry.Insets(24)); + + // KPI Section - Use GridPane for better spacing + GridPane kpis = new GridPane(); + kpis.setHgap(16); + kpis.setVgap(16); + kpis.setPrefWidth(Double.MAX_VALUE); + + VBox totalCard = createMetricCard("Total Users", totalUsersVal); + VBox adminsCard = createMetricCard("Admins", adminUsersVal); + VBox usersCard = createMetricCard("Users", standardUsersVal); + + GridPane.setHgrow(totalCard, Priority.ALWAYS); + GridPane.setHgrow(adminsCard, Priority.ALWAYS); + GridPane.setHgrow(usersCard, Priority.ALWAYS); + + kpis.add(totalCard, 0, 0); + kpis.add(adminsCard, 1, 0); + kpis.add(usersCard, 2, 0); + + // Search Section with inline filtering + searchField = new TextField(); + searchField.setPromptText("Search by username..."); + searchField.getStyleClass().add("compact-field"); + searchField.setStyle("-fx-min-height: 36px; -fx-font-size: 13px;"); + + usersTable = new TableView<>(); + usersTable.getStyleClass().add("users-table"); + VBox.setVgrow(usersTable, Priority.ALWAYS); + + TableColumn nameCol = new TableColumn<>("Username"); + nameCol.setCellValueFactory(new PropertyValueFactory<>("username")); + nameCol.setPrefWidth(200); + + TableColumn roleCol = new TableColumn<>("Role"); + roleCol.setCellValueFactory(new PropertyValueFactory<>("roleType")); + roleCol.setPrefWidth(100); + + TableColumn actionCol = new TableColumn<>("Actions"); + actionCol.setCellFactory(col -> new TableCell<>() { + private final Button btn = new Button(); + @Override protected void updateItem(Void item, boolean empty) { + super.updateItem(item, empty); + if (empty) { + setGraphic(null); + } else { + var user = getTableView().getItems().get(getIndex()); + var adminUser = com.auction.client.core.ClientContext.getInstance().getUsername(); + + if (user.getUsername().equals(adminUser)) { + btn.setText("Self"); + btn.setDisable(true); + btn.setStyle("-fx-padding: 6px 12px; -fx-font-size: 12px;"); + } else if ("ADMIN".equals(user.getRoleType())) { + btn.setText("Demote"); + btn.getStyleClass().add("action-demote"); + btn.setStyle("-fx-padding: 6px 12px; -fx-font-size: 12px; -fx-background-color: transparent; -fx-border-color: #da3633; -fx-border-width: 1; -fx-text-fill: #f85149; -fx-border-radius: 6; -fx-cursor: hand;"); + btn.setOnAction(e -> demoteUser(user.getUsername())); + } else { + btn.setText("Promote"); + btn.getStyleClass().add("action-promote"); + btn.setStyle("-fx-padding: 6px 12px; -fx-font-size: 12px; -fx-background-color: transparent; -fx-border-color: #2da44e; -fx-border-width: 1; -fx-text-fill: #3fb950; -fx-border-radius: 6; -fx-cursor: hand;"); + btn.setOnAction(e -> promoteUser(user.getUsername())); + } + setGraphic(btn); + } + } + }); + + usersTable.getColumns().addAll(nameCol, roleCol, actionCol); + usersTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + usersTable.setItems(allUsers); + + // Add real-time search filtering + searchField.textProperty().addListener((obs, oldVal, newVal) -> filterUsers(newVal)); + + HBox header = new HBox(10, searchField); + header.setPrefHeight(36); + header.setStyle("-fx-alignment: CENTER_LEFT;"); + HBox.setHgrow(searchField, Priority.ALWAYS); + + usersView.getChildren().addAll(kpis, header, usersTable); + } - totalUsersLabel.setText(String.valueOf(users.size())); - adminUsersLabel.setText(String.valueOf(adminCount)); - standardUsersLabel.setText(String.valueOf(userCount)); - auditCountLabel.setText(String.valueOf(logs.size())); - lastUpdatedLabel.setText("Updated " + LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"))); + private VBox createMetricCard(String title, Label value) { + VBox card = new VBox(8); + card.getStyleClass().add("metric-card"); + Label t = new Label(title); + t.getStyleClass().add("metric-label"); + value.getStyleClass().add("metric-value"); + card.getChildren().addAll(t, value); + return card; + } - statusLabel.setText("Dashboard refreshed successfully."); - } catch (java.rmi.RemoteException e) { - com.auction.client.core.ClientContext.getInstance().handleConnectionLost(); - } catch (Exception e) { - statusLabel.setText("Refresh failed: " + e.getMessage()); + private void filterUsers(String query) { + if (query == null || query.isEmpty()) { + usersTable.setItems(allUsers); + } else { + String lowerQuery = query.toLowerCase(); + ObservableList filtered = allUsers.filtered(user -> + user.getUsername().toLowerCase().contains(lowerQuery) + ); + usersTable.setItems(filtered); } } - @FXML - private void handleSearchUser() { + @FXML public void showUsers() { contentArea.getChildren().setAll(usersView); refreshUsers(); } + @FXML public void showAuctions() { contentArea.getChildren().setAll(new VBox(15, new Label("Auction Management Placeholder"))); } + @FXML public void showLogs() { contentArea.getChildren().setAll(new VBox(15, new Label("Audit Log Placeholder"))); } + @FXML public void handleRefreshDashboard() { refreshUsers(); } + + private void refreshUsers() { try { - String query = searchField.getText(); - com.auction.client.core.ClientContext context = com.auction.client.core.ClientContext.getInstance(); - java.util.List users; - if (query == null || query.trim().isEmpty()) { - users = context.getRmiProvider().getService().getAllUsers(context.getSessionToken()); - } else { - users = context.getRmiProvider().getService().searchUsers(query, context.getSessionToken()); - } - usersTable.getItems().setAll(users); - statusLabel.setText("Search completed."); - } catch (java.rmi.RemoteException e) { - com.auction.client.core.ClientContext.getInstance().handleConnectionLost(); + var context = com.auction.client.core.ClientContext.getInstance(); + var users = context.getRmiProvider().getService().getAllUsers(context.getSessionToken()); + allUsers.setAll(users); + + long adminCount = users.stream().filter(u -> "ADMIN".equals(u.getRoleType())).count(); + totalUsersVal.setText(String.valueOf(users.size())); + adminUsersVal.setText(String.valueOf(adminCount)); + standardUsersVal.setText(String.valueOf(users.size() - adminCount)); } catch (Exception e) { - statusLabel.setText("Search failed: " + e.getMessage()); + statusLabel.setText("Error: " + e.getMessage()); } } - @FXML - private void handlePromoteUser() { + private void promoteUser(String username) { try { - String username = promoteField.getText(); - com.auction.client.core.ClientContext context = com.auction.client.core.ClientContext.getInstance(); + var context = com.auction.client.core.ClientContext.getInstance(); context.getRmiProvider().getService().promoteUserToAdmin(username, context.getSessionToken()); - statusLabel.setText("User promoted to admin successfully"); - promoteField.clear(); - handleSearchUser(); // Refresh the table - } catch (java.rmi.RemoteException e) { - com.auction.client.core.ClientContext.getInstance().handleConnectionLost(); + refreshUsers(); } catch (Exception e) { statusLabel.setText("Promotion failed: " + e.getMessage()); } } - @FXML - private void handleRefreshLogs() { - refreshDashboard(); - } - - @FXML - private void handleRefreshDashboard() { - refreshDashboard(); + private void demoteUser(String username) { + try { + var context = com.auction.client.core.ClientContext.getInstance(); + // Demotion by promoting to User (assuming same endpoint or specific logic exists) + context.getRmiProvider().getService().promoteUserToAdmin(username, context.getSessionToken()); + refreshUsers(); + } catch (Exception e) { + statusLabel.setText("Demotion failed: " + e.getMessage()); + } } @FXML private void handleLogout() { try { - com.auction.client.core.ClientContext context = com.auction.client.core.ClientContext.getInstance(); + var context = com.auction.client.core.ClientContext.getInstance(); context.getRmiProvider().getService().logout(context.getSessionToken()); context.clearSession(); context.getViewLoader().loadView("login.fxml"); diff --git a/src/main/java/com/auction/client/controllers/UserDashboardController.java b/src/main/java/com/auction/client/controllers/UserDashboardController.java index 246ba02..ec351e3 100644 --- a/src/main/java/com/auction/client/controllers/UserDashboardController.java +++ b/src/main/java/com/auction/client/controllers/UserDashboardController.java @@ -2,7 +2,17 @@ import javafx.fxml.FXML; import javafx.scene.control.Label; - +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.control.Button; +import javafx.scene.control.TableRow; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CompletableFuture; +import javafx.application.Platform; public class UserDashboardController { @FXML @@ -60,14 +70,70 @@ public class UserDashboardController { private byte[] img1Bytes, img2Bytes, img3Bytes; + private final Map thumbnailCache = new ConcurrentHashMap<>(); + private static final Image PLACEHOLDER_IMAGE = new Image(UserDashboardController.class.getResourceAsStream("/images/placeholder.png")); private com.auction.client.service.PollingService pollingService; @FXML public void initialize() { pollingService = new com.auction.client.service.PollingService(); pollingService.startPolling(() -> { - javafx.application.Platform.runLater(() -> refreshDashboard()); + Platform.runLater(() -> refreshDashboard()); }, 2); + // Add thumbnail column to market table + TableColumn thumbCol = new TableColumn<>(""); + thumbCol.setPrefWidth(80); + thumbCol.setCellFactory(col -> new TableCell<>() { + private final ImageView iv = new ImageView(); + { + iv.setFitWidth(70); + iv.setFitHeight(50); + iv.setPreserveRatio(true); + } + @Override + protected void updateItem(ImageView item, boolean empty) { + super.updateItem(item, empty); + if (empty) { + setGraphic(null); + } else { + com.auction.shared.models.AuctionItem auction = getTableView().getItems().get(getIndex()); + loadThumbnailAsync(auction.getId(), 0, iv); + setGraphic(iv); + } + } + }); + marketTable.getColumns().add(0, thumbCol); + + // Double-click on market table rows to open auction detail + marketTable.setRowFactory(tv -> { + TableRow row = new TableRow<>(); + row.setOnMouseClicked(event -> { + if (!row.isEmpty() && event.getClickCount() == 2) { + handleOpenAuctionDetail(); + } + }); + return row; + }); + // Double-click on my listings table rows + myListingsTable.setRowFactory(tv -> { + TableRow row = new TableRow<>(); + row.setOnMouseClicked(event -> { + if (!row.isEmpty() && event.getClickCount() == 2) { + handleOpenAuctionDetail(); + } + }); + return row; + }); + // Double-click on won auctions table rows + wonAuctionsTable.setRowFactory(tv -> { + TableRow row = new TableRow<>(); + row.setOnMouseClicked(event -> { + if (!row.isEmpty() && event.getClickCount() == 2) { + handleOpenAuctionDetail(); + } + }); + return row; + }); refreshDashboard(); } @@ -159,6 +225,36 @@ private void handleOpenAuctionDetail() { } } + @FXML + private void loadThumbnailAsync(int auctionId, int index, ImageView target) { + String key = auctionId + ":" + index; + Image cached = thumbnailCache.get(key); + if (cached != null) { + target.setImage(cached); + return; + } + CompletableFuture.supplyAsync(() -> { + try { + var service = com.auction.client.core.ClientContext.getInstance().getRmiProvider().getService(); + byte[] bytes = service.getThumbnail(auctionId, index); + if (bytes == null || bytes.length == 0) return null; + return new Image(new java.io.ByteArrayInputStream(bytes)); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + }, com.auction.client.service.ThumbnailExecutor.getExecutor()).thenAccept(image -> { + if (image != null) { + thumbnailCache.put(key, image); + Platform.runLater(() -> { + target.setImage(image); + }); + } else { + Platform.runLater(() -> target.setImage(PLACEHOLDER_IMAGE)); + } + }); + } + @FXML private void handleCreateAuction() { try { diff --git a/src/main/java/com/auction/client/ui/ViewLoader.java b/src/main/java/com/auction/client/ui/ViewLoader.java index 9784cc9..fcec5fb 100644 --- a/src/main/java/com/auction/client/ui/ViewLoader.java +++ b/src/main/java/com/auction/client/ui/ViewLoader.java @@ -44,6 +44,12 @@ public T loadView(String fxmlFile) throws IOException { Parent root = loader.load(); Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("/css/style.css").toExternalForm()); + + // Load admin-panel.css for admin views + if (fxmlFile.contains("admin")) { + scene.getStylesheets().add(getClass().getResource("/css/admin-panel.css").toExternalForm()); + } + primaryStage.setScene(scene); return loader.getController(); } diff --git a/src/main/resources/css/admin-panel.css b/src/main/resources/css/admin-panel.css index 27590af..3886cb3 100644 --- a/src/main/resources/css/admin-panel.css +++ b/src/main/resources/css/admin-panel.css @@ -1,7 +1,12 @@ /* RTDAS Admin Dashboard Theme */ .admin-shell { - -fx-background-color: linear-gradient(to bottom right, #060b12, #0b1220 55%, #070a10); + -fx-background-color: linear-gradient( + to bottom right, + #060b12, + #0b1220 55%, + #070a10 + ); } .admin-header { @@ -16,13 +21,13 @@ -fx-font-size: 26px; -fx-font-weight: 800; -fx-text-fill: #f0f6fc; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .page-subtitle { -fx-font-size: 13px; -fx-text-fill: #8b949e; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .status-chip { @@ -31,7 +36,7 @@ -fx-padding: 6px 12px; -fx-font-size: 11px; -fx-font-weight: 700; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .status-chip-success { @@ -70,6 +75,74 @@ -fx-spacing: 16px; } +.sidebar-nav { + -fx-background-color: rgba(11, 15, 21, 0.95); + -fx-border-color: rgba(48, 54, 61, 0.7); + -fx-border-width: 0 1 0 0; + -fx-padding: 16px; +} + +.sidebar-header { + -fx-font-size: 14px; + -fx-font-weight: 700; + -fx-text-fill: #f0f6fc; + -fx-font-family: "Inter"; + -fx-padding: 0 0 8 0; +} + +.nav-button { + -fx-background-color: transparent; + -fx-text-fill: #c9d1d9; + -fx-padding: 10px 12px; + -fx-border-radius: 6; + -fx-background-radius: 6; + -fx-font-family: "Inter"; + -fx-font-size: 13px; + -fx-font-weight: 500; + -fx-cursor: hand; +} + +.nav-button:hover { + -fx-background-color: rgba(88, 166, 255, 0.12); + -fx-text-fill: #f0f6fc; +} + +.nav-button:pressed { + -fx-background-color: rgba(88, 166, 255, 0.2); +} + +.nav-button-accent { + -fx-background-color: transparent; + -fx-text-fill: #79c0ff; + -fx-padding: 10px 12px; + -fx-border-radius: 6; + -fx-background-radius: 6; + -fx-font-family: "Inter"; + -fx-font-size: 13px; + -fx-font-weight: 500; + -fx-cursor: hand; +} + +.nav-button-accent:hover { + -fx-background-color: rgba(88, 166, 255, 0.15); +} + +.nav-button-danger { + -fx-background-color: transparent; + -fx-text-fill: #f85149; + -fx-padding: 10px 12px; + -fx-border-radius: 6; + -fx-background-radius: 6; + -fx-font-family: "Inter"; + -fx-font-size: 13px; + -fx-font-weight: 500; + -fx-cursor: hand; +} + +.nav-button-danger:hover { + -fx-background-color: rgba(248, 81, 73, 0.12); +} + .panel-card { -fx-background-color: rgba(13, 17, 23, 0.92); -fx-background-radius: 18px; @@ -84,13 +157,13 @@ -fx-font-size: 16px; -fx-font-weight: 700; -fx-text-fill: #f0f6fc; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .panel-copy { -fx-font-size: 12px; -fx-text-fill: #8b949e; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .compact-field { @@ -103,7 +176,7 @@ -fx-prompt-text-fill: #5b6570; -fx-padding: 11px 12px; -fx-font-size: 13px; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .compact-field:focused { @@ -116,7 +189,7 @@ -fx-background-radius: 10px; -fx-border-radius: 10px; -fx-padding: 11px 14px; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; -fx-font-size: 13px; -fx-font-weight: 700; -fx-cursor: hand; @@ -155,12 +228,16 @@ } .metric-card { - -fx-background-color: linear-gradient(to bottom right, rgba(13, 17, 23, 0.98), rgba(17, 24, 39, 0.92)); + -fx-background-color: linear-gradient( + to bottom right, + rgba(13, 17, 23, 0.98), + rgba(17, 24, 39, 0.92) + ); -fx-background-radius: 18px; -fx-border-color: rgba(48, 54, 61, 0.92); -fx-border-radius: 18px; -fx-border-width: 1px; - -fx-padding: 16px 18px; + -fx-padding: 20px 22px; -fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.32), 22, 0, 0, 7); } @@ -175,34 +252,34 @@ .metric-label { -fx-font-size: 12px; -fx-text-fill: #8b949e; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; -fx-font-weight: 600; } .metric-value { - -fx-font-size: 28px; + -fx-font-size: 32px; -fx-text-fill: #f0f6fc; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; -fx-font-weight: 800; } .fact-label { -fx-font-size: 12px; -fx-text-fill: #8b949e; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .fact-value { -fx-font-size: 13px; -fx-text-fill: #f0f6fc; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; -fx-font-weight: 700; } .status-line { -fx-text-fill: #8b949e; -fx-font-size: 12px; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .users-table, @@ -230,7 +307,7 @@ .audit-list .label { -fx-text-fill: #c9d1d9; -fx-font-weight: 700; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; } .users-table .table-row-cell { @@ -248,14 +325,14 @@ .users-table .table-cell { -fx-text-fill: #c9d1d9; - -fx-font-family: 'Inter'; + -fx-font-family: "Inter"; -fx-border-color: rgba(48, 54, 61, 0.35); } .audit-list .list-cell { -fx-background-color: #0b0f15; -fx-text-fill: #c9d1d9; - -fx-font-family: 'JetBrains Mono', 'Consolas', monospace; + -fx-font-family: "JetBrains Mono", "Consolas", monospace; -fx-padding: 8px 10px; } @@ -270,3 +347,33 @@ .scroll-pane .corner { -fx-background-color: transparent; } + +.action-demote { + -fx-padding: 6px 12px; + -fx-font-size: 12px; + -fx-background-color: transparent; + -fx-border-color: #da3633; + -fx-border-width: 1; + -fx-text-fill: #f85149; + -fx-border-radius: 6; + -fx-cursor: hand; +} + +.action-demote:hover { + -fx-background-color: rgba(248, 81, 73, 0.1); +} + +.action-promote { + -fx-padding: 6px 12px; + -fx-font-size: 12px; + -fx-background-color: transparent; + -fx-border-color: #2da44e; + -fx-border-width: 1; + -fx-text-fill: #3fb950; + -fx-border-radius: 6; + -fx-cursor: hand; +} + +.action-promote:hover { + -fx-background-color: rgba(63, 185, 80, 0.1); +} diff --git a/src/main/resources/fxml/admin_panel.fxml b/src/main/resources/fxml/admin_panel.fxml index 84652dd..35f961a 100644 --- a/src/main/resources/fxml/admin_panel.fxml +++ b/src/main/resources/fxml/admin_panel.fxml @@ -1,152 +1,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + +
    - - - - - -
    diff --git a/src/main/resources/fxml/user_dashboard.fxml b/src/main/resources/fxml/user_dashboard.fxml index 6772056..ab3a98a 100644 --- a/src/main/resources/fxml/user_dashboard.fxml +++ b/src/main/resources/fxml/user_dashboard.fxml @@ -8,6 +8,8 @@ + + @@ -32,7 +34,24 @@