From 54af1236471dc1b89d907b176b302cfcb1457ca5 Mon Sep 17 00:00:00 2001 From: Amr3011 Date: Thu, 5 Mar 2026 19:29:26 +0200 Subject: [PATCH 1/6] refactor: remove unused CSS files and optimize SidebarPanel component - Deleted ScreenShareLayout.css and Sidebar.css as they were no longer needed. - Updated SidebarPanel.tsx to use Tailwind CSS for styling, improving responsiveness and maintainability. - Refactored index.css to unify CSS variable syntax and enhance animation keyframes. - Adjusted tailwind.config.js for cleaner configuration and added new utility classes for better design consistency. --- .../AdminControls/AdminControls.styles.css | 156 ------ .../AdminControls/EndMeetingButton.tsx | 13 +- .../meeting/AdminControls/ParticipantItem.tsx | 31 +- .../AdminControls/ParticipantsList.tsx | 7 +- .../meeting/AdminControls/index.tsx | 5 +- .../src/components/meeting/ChatSidebar.css | 190 ------- .../CustomControlBar/CameraControl.tsx | 16 +- .../CustomControlBar/CustomControlBar.css | 116 ---- .../meeting/CustomControlBar/DeviceMenu.tsx | 19 +- .../CustomControlBar/DeviceMenuItem.tsx | 32 +- .../meeting/CustomControlBar/LeaveButton.tsx | 11 +- .../CustomControlBar/MicrophoneControl.tsx | 16 +- .../CustomControlBar/ScreenShareButton.tsx | 7 +- .../meeting/CustomControlBar/index.tsx | 11 +- .../meeting/LiveKitMeetingRoom/ChatPanel.tsx | 14 +- .../LiveKitMeetingRoom/ControlBarSection.tsx | 26 +- .../meeting/LiveKitMeetingRoom/index.tsx | 3 - .../meeting/MeetingHeader/AdminButton.tsx | 23 +- .../meeting/MeetingHeader/AvatarCircles.tsx | 31 +- .../meeting/MeetingHeader/MeetingHeader.css | 85 --- .../meeting/MeetingHeader/index.tsx | 15 +- .../components/meeting/ScreenShareLayout.css | 87 --- frontend/src/components/meeting/Sidebar.css | 129 ----- .../src/components/meeting/SidebarPanel.tsx | 29 +- frontend/src/index.css | 524 ++++++++++++++++-- frontend/tailwind.config.js | 229 ++++---- 26 files changed, 665 insertions(+), 1160 deletions(-) delete mode 100644 frontend/src/components/meeting/AdminControls/AdminControls.styles.css delete mode 100644 frontend/src/components/meeting/ChatSidebar.css delete mode 100644 frontend/src/components/meeting/CustomControlBar/CustomControlBar.css delete mode 100644 frontend/src/components/meeting/MeetingHeader/MeetingHeader.css delete mode 100644 frontend/src/components/meeting/ScreenShareLayout.css delete mode 100644 frontend/src/components/meeting/Sidebar.css diff --git a/frontend/src/components/meeting/AdminControls/AdminControls.styles.css b/frontend/src/components/meeting/AdminControls/AdminControls.styles.css deleted file mode 100644 index 255272e..0000000 --- a/frontend/src/components/meeting/AdminControls/AdminControls.styles.css +++ /dev/null @@ -1,156 +0,0 @@ -.admin-controls-container { - display: flex; - flex-direction: column; - height: 100%; - overflow: hidden; -} - -.end-meeting-section { - padding: 16px; - border-bottom: 1px solid var(--lk-border-color); - flex-shrink: 0; -} - -.confirm-container { - display: flex; - flex-direction: column; - gap: 8px; -} - -.confirm-text { - font-size: 13px; - color: #fbbf24; - margin: 0; -} - -.confirm-buttons { - display: flex; - gap: 8px; -} - -.end-meeting-btn { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - gap: 8px; - padding: 8px 12px; - background-color: #dc2626; - color: white; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 14px; - font-weight: 500; -} - -.end-meeting-btn:disabled { - cursor: not-allowed; - opacity: 0.6; -} - -.end-meeting-btn-full { - width: 100%; - padding: 10px 12px; -} - -.cancel-btn { - flex: 1; - padding: 8px 12px; - background-color: var(--lk-bg3); - color: var(--lk-fg); - border: 1px solid var(--lk-border-color); - border-radius: 6px; - cursor: pointer; -} - -.participants-section { - flex: 1; - overflow-y: auto; - padding: 16px; -} - -.participants-header { - font-size: 13px; - color: var(--lk-fg2); - margin-bottom: 12px; - font-weight: 500; -} - -.participants-list { - display: flex; - flex-direction: column; - gap: 8px; -} - -.participant-item { - background-color: var(--lk-bg3); - border-radius: 6px; - padding: 12px; - display: flex; - flex-direction: column; - gap: 8px; -} - -.participant-header { - display: flex; - align-items: center; - justify-content: space-between; -} - -.participant-info { - flex: 1; - min-width: 0; -} - -.participant-name-row { - display: flex; - align-items: center; - gap: 6px; - margin-bottom: 2px; -} - -.participant-name { - color: var(--lk-fg); - font-size: 14px; - font-weight: 500; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin: 0; -} - -.badge { - font-size: 10px; - padding: 2px 6px; - border-radius: 4px; - font-weight: 500; -} - -.badge-you { - color: #4ade80; - background-color: rgba(34, 197, 94, 0.2); -} - -.badge-admin { - color: #60a5fa; - background-color: rgba(59, 130, 246, 0.2); -} - -.participant-role { - font-size: 11px; - color: var(--lk-fg2); - margin: 0; -} - -.kick-btn { - padding: 6px; - color: #f87171; - background-color: transparent; - border: none; - border-radius: 4px; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; -} diff --git a/frontend/src/components/meeting/AdminControls/EndMeetingButton.tsx b/frontend/src/components/meeting/AdminControls/EndMeetingButton.tsx index afb4e68..38d20c8 100644 --- a/frontend/src/components/meeting/AdminControls/EndMeetingButton.tsx +++ b/frontend/src/components/meeting/AdminControls/EndMeetingButton.tsx @@ -1,7 +1,6 @@ import React from "react"; import type { EndMeetingButtonProps } from "./types"; import { EndMeetingIcon } from "./icons"; -import "./AdminControls.styles.css"; export const EndMeetingButton: React.FC = ({ onEndMeeting, @@ -19,15 +18,15 @@ export const EndMeetingButton: React.FC = ({ if (showConfirm) { return ( -
-

+

+

Are you sure? This will disconnect all participants.

-
+
@@ -47,7 +46,7 @@ export const EndMeetingButton: React.FC = ({ return ( )} diff --git a/frontend/src/components/meeting/AdminControls/ParticipantsList.tsx b/frontend/src/components/meeting/AdminControls/ParticipantsList.tsx index 4c74149..4ecd3a1 100644 --- a/frontend/src/components/meeting/AdminControls/ParticipantsList.tsx +++ b/frontend/src/components/meeting/AdminControls/ParticipantsList.tsx @@ -1,7 +1,6 @@ import React from "react"; import type { ParticipantsListProps } from "./types"; import { ParticipantItem } from "./ParticipantItem"; -import "./AdminControls.styles.css"; export const ParticipantsList: React.FC = ({ participants, @@ -10,11 +9,11 @@ export const ParticipantsList: React.FC = ({ onMuteTrack, }) => { return ( -
-

+
+

Participants ({participants.length})

-
+
{participants.map((participant) => { const isLocal = participant.identity === localParticipantIdentity; const metadata = participant.metadata diff --git a/frontend/src/components/meeting/AdminControls/index.tsx b/frontend/src/components/meeting/AdminControls/index.tsx index a4f2e0e..37b4d51 100644 --- a/frontend/src/components/meeting/AdminControls/index.tsx +++ b/frontend/src/components/meeting/AdminControls/index.tsx @@ -11,7 +11,6 @@ import { import type { AdminControlsProps } from "./types"; import { EndMeetingButton } from "./EndMeetingButton"; import { ParticipantsList } from "./ParticipantsList"; -import "./AdminControls.styles.css"; export const AdminControls: React.FC = ({ meetingCode, @@ -60,8 +59,8 @@ export const AdminControls: React.FC = ({ }; return ( -
-
+
+