From 9ded6fa9953ed8ceacb4023d3740007aefdcd6a0 Mon Sep 17 00:00:00 2001 From: Artem Bulgakov Date: Sat, 26 Oct 2024 03:07:05 +0300 Subject: [PATCH] feat: refactor general layout; topbar; add 'feedback' button --- index.html | 6 +- src/app/routes/__root.tsx | 18 +- .../_with_menu/account/connect-telegram.tsx | 2 +- src/app/routes/_with_menu/account/route.tsx | 9 +- src/app/routes/_with_menu/dashboard.tsx | 9 +- src/app/routes/_with_menu/extension.tsx | 9 +- src/app/routes/_with_menu/maps.tsx | 13 +- .../routes/_with_menu/music-room.index.tsx | 9 +- .../_with_menu/music-room.instructions.tsx | 9 +- src/app/routes/_with_menu/room-booking.tsx | 13 +- src/app/routes/_with_menu/rooms.tsx | 9 +- src/app/routes/_with_menu/route.tsx | 6 +- .../routes/_with_menu/schedule/$category.tsx | 9 +- src/app/routes/_with_menu/schedule/index.tsx | 22 +- src/app/routes/_with_menu/scholarship.tsx | 9 +- src/app/routes/_with_menu/search.tsx | 11 +- src/app/routes/_with_menu/sport.tsx | 9 +- src/components/calendar/CalendarViewer.tsx | 4 +- .../calendar/EventGroupExportModal.tsx | 24 +- .../calendar/MusicRoomExportModal.tsx | 32 +-- src/components/calendar/SportExportModal.tsx | 32 +-- src/components/common/Tooltip.tsx | 10 +- src/components/dashboard/DashboardPage.tsx | 259 +++++++++--------- src/components/dorm-rooms/DormRoomsPage.tsx | 2 +- src/components/extension/ExtensionPage.tsx | 2 +- src/components/layout/LeaveFeedbackButton.tsx | 20 ++ src/components/layout/Navbar.tsx | 37 --- src/components/layout/Sidebar.tsx | 103 ++++--- src/components/layout/SidebarSection.tsx | 3 +- src/components/layout/SwitchThemeButton.tsx | 21 +- src/components/layout/Topbar.tsx | 20 ++ src/components/layout/UserMenu.tsx | 23 +- src/components/maps/MapsPage.tsx | 8 +- src/components/music-room/MusicRoomPage.tsx | 202 +++++++------- .../room-booking/BookingTimeline.vue | 2 - .../room-booking/RoomBookingPage.tsx | 32 ++- src/components/schedule/CategoryContainer.tsx | 2 +- .../schedule/ClarificationContainer.tsx | 2 +- src/components/schedule/EventGroupPage.tsx | 97 ++++--- src/components/schedule/ScheduleList.tsx | 8 +- src/components/schedule/ScheduleMainPage.tsx | 4 +- .../scholarship/ScholarshipPage.tsx | 4 +- src/components/search/SearchPage.tsx | 2 +- src/components/sport/SportPage.tsx | 120 ++++---- tailwind.config.ts | 1 - 45 files changed, 588 insertions(+), 660 deletions(-) create mode 100644 src/components/layout/LeaveFeedbackButton.tsx delete mode 100644 src/components/layout/Navbar.tsx create mode 100644 src/components/layout/Topbar.tsx diff --git a/index.html b/index.html index b0b14e3..6df171e 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - + @@ -36,14 +36,14 @@ - + -
+
()({ // 404 page notFoundComponent: () => ( -
+
-
-
-
-

404 / not found

- - Go to main - -
+
+
+

404 / not found

+ + Go to dashboard +
-
+
), diff --git a/src/app/routes/_with_menu/account/connect-telegram.tsx b/src/app/routes/_with_menu/account/connect-telegram.tsx index 3884418..8b1307f 100644 --- a/src/app/routes/_with_menu/account/connect-telegram.tsx +++ b/src/app/routes/_with_menu/account/connect-telegram.tsx @@ -17,7 +17,7 @@ export const Route = createFileRoute("/_with_menu/account/connect-telegram")({ -
+
InNoHassle logo ( -
- +
+
), diff --git a/src/app/routes/_with_menu/dashboard.tsx b/src/app/routes/_with_menu/dashboard.tsx index 630bff8..b75523f 100644 --- a/src/app/routes/_with_menu/dashboard.tsx +++ b/src/app/routes/_with_menu/dashboard.tsx @@ -1,11 +1,11 @@ import { DashboardPage } from "@/components/dashboard/DashboardPage.tsx"; -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/dashboard")({ component: () => ( -
+
Dashboard - +
), diff --git a/src/app/routes/_with_menu/extension.tsx b/src/app/routes/_with_menu/extension.tsx index bd363dd..aa1c797 100644 --- a/src/app/routes/_with_menu/extension.tsx +++ b/src/app/routes/_with_menu/extension.tsx @@ -1,11 +1,11 @@ import { ExtensionPage } from "@/components/extension/ExtensionPage.tsx"; -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/extension")({ component: () => ( -
+
Browser extension - +
), diff --git a/src/app/routes/_with_menu/maps.tsx b/src/app/routes/_with_menu/maps.tsx index bb20949..5d5605b 100644 --- a/src/app/routes/_with_menu/maps.tsx +++ b/src/app/routes/_with_menu/maps.tsx @@ -1,4 +1,4 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { MapsPage } from "@/components/maps/MapsPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; @@ -15,7 +15,7 @@ export const Route = createFileRoute("/_with_menu/maps")({ component: function RouteComponent() { const { sceneId } = Route.useSearch(); return ( -
+
Maps - -
- -
+ +
); }, diff --git a/src/app/routes/_with_menu/music-room.index.tsx b/src/app/routes/_with_menu/music-room.index.tsx index 31e1afe..6072a8a 100644 --- a/src/app/routes/_with_menu/music-room.index.tsx +++ b/src/app/routes/_with_menu/music-room.index.tsx @@ -1,20 +1,17 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { MusicRoomPage } from "@/components/music-room/MusicRoomPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/music-room/")({ component: () => ( -
+
Music room - +
), diff --git a/src/app/routes/_with_menu/music-room.instructions.tsx b/src/app/routes/_with_menu/music-room.instructions.tsx index f94b5a5..652594b 100644 --- a/src/app/routes/_with_menu/music-room.instructions.tsx +++ b/src/app/routes/_with_menu/music-room.instructions.tsx @@ -1,20 +1,17 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { MusicRoomInstructions } from "@/components/music-room/MusicRoomInstructions.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/music-room/instructions")({ component: () => ( -
+
Music room - +
), diff --git a/src/app/routes/_with_menu/room-booking.tsx b/src/app/routes/_with_menu/room-booking.tsx index 21312e5..6e0021b 100644 --- a/src/app/routes/_with_menu/room-booking.tsx +++ b/src/app/routes/_with_menu/room-booking.tsx @@ -1,11 +1,11 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { RoomBookingPage } from "@/components/room-booking/RoomBookingPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/room-booking")({ component: () => ( -
+
Room booking - -
- -
+ +
), }); diff --git a/src/app/routes/_with_menu/rooms.tsx b/src/app/routes/_with_menu/rooms.tsx index 9041c92..dd270d7 100644 --- a/src/app/routes/_with_menu/rooms.tsx +++ b/src/app/routes/_with_menu/rooms.tsx @@ -1,11 +1,11 @@ import { DormRoomsPage } from "@/components/dorm-rooms/DormRoomsPage.tsx"; -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/rooms")({ component: () => ( -
+
Dorm rooms - +
), diff --git a/src/app/routes/_with_menu/route.tsx b/src/app/routes/_with_menu/route.tsx index b7c5b4a..262e807 100644 --- a/src/app/routes/_with_menu/route.tsx +++ b/src/app/routes/_with_menu/route.tsx @@ -3,11 +3,11 @@ import { createFileRoute, Outlet } from "@tanstack/react-router"; export const Route = createFileRoute("/_with_menu")({ component: () => ( -
+
-
+
-
+
), diff --git a/src/app/routes/_with_menu/schedule/$category.tsx b/src/app/routes/_with_menu/schedule/$category.tsx index 5b694a5..31c5e9b 100644 --- a/src/app/routes/_with_menu/schedule/$category.tsx +++ b/src/app/routes/_with_menu/schedule/$category.tsx @@ -1,4 +1,4 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import ScheduleList from "@/components/schedule/ScheduleList.tsx"; import { getCategoryInfoBySlug } from "@/lib/events/events-view-config.ts"; import { createFileRoute, redirect } from "@tanstack/react-router"; @@ -14,16 +14,13 @@ export const Route = createFileRoute("/_with_menu/schedule/$category")({ } return ( -
+
{categoryInfo.title} — Schedule - +
); diff --git a/src/app/routes/_with_menu/schedule/index.tsx b/src/app/routes/_with_menu/schedule/index.tsx index b4cf55f..2aeb78b 100644 --- a/src/app/routes/_with_menu/schedule/index.tsx +++ b/src/app/routes/_with_menu/schedule/index.tsx @@ -1,11 +1,11 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { ScheduleMainPage } from "@/components/schedule/ScheduleMainPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/schedule/")({ component: () => ( -
+
Schedule - - Services developed by{" "} - - one-zero-eight - {" "} - community for Innopolis students. - - } - /> +
), diff --git a/src/app/routes/_with_menu/scholarship.tsx b/src/app/routes/_with_menu/scholarship.tsx index 6c55530..043a5d0 100644 --- a/src/app/routes/_with_menu/scholarship.tsx +++ b/src/app/routes/_with_menu/scholarship.tsx @@ -1,11 +1,11 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { ScholarshipPage } from "@/components/scholarship/ScholarshipPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/scholarship")({ component: () => ( -
+
Scholarship calculator - +
), diff --git a/src/app/routes/_with_menu/search.tsx b/src/app/routes/_with_menu/search.tsx index 7e26107..9d2a735 100644 --- a/src/app/routes/_with_menu/search.tsx +++ b/src/app/routes/_with_menu/search.tsx @@ -1,4 +1,4 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { SearchPage } from "@/components/search/SearchPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Suspense } from "react"; @@ -20,19 +20,16 @@ export const Route = createFileRoute("/_with_menu/search")({ const { q } = Route.useSearch(); return ( -
+
Search - +
diff --git a/src/app/routes/_with_menu/sport.tsx b/src/app/routes/_with_menu/sport.tsx index 558c29b..1fb4199 100644 --- a/src/app/routes/_with_menu/sport.tsx +++ b/src/app/routes/_with_menu/sport.tsx @@ -1,11 +1,11 @@ -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import { SportPage } from "@/components/sport/SportPage.tsx"; import { createFileRoute } from "@tanstack/react-router"; import { Helmet } from "react-helmet-async"; export const Route = createFileRoute("/_with_menu/sport")({ component: () => ( -
+
Sport bot - +
), diff --git a/src/components/calendar/CalendarViewer.tsx b/src/components/calendar/CalendarViewer.tsx index 1f39519..7953467 100644 --- a/src/components/calendar/CalendarViewer.tsx +++ b/src/components/calendar/CalendarViewer.tsx @@ -278,7 +278,7 @@ export default function CalendarViewer({ }, [urls]); return ( -
+
{calendarComponent} {popoverInfo.event && popoverInfo.eventElement && (  }
{timeText && ( -
+
{timeText}
)} diff --git a/src/components/calendar/EventGroupExportModal.tsx b/src/components/calendar/EventGroupExportModal.tsx index 51d9ca7..4febdc0 100644 --- a/src/components/calendar/EventGroupExportModal.tsx +++ b/src/components/calendar/EventGroupExportModal.tsx @@ -69,14 +69,14 @@ export function EventGroupExportModal({ className="flex h-fit w-full flex-col p-4 @2xl/export:w-3/4 @5xl/export:w-1/2" >
-
+
{/* Heading and description */}
Export to your calendar
{/* Export steps */} -
    +
    • Copy the link.
    • Paste the link and click Add.
    - {/* Calendar itself */} -
    - -
+ {/* Calendar itself */} +
diff --git a/src/components/calendar/MusicRoomExportModal.tsx b/src/components/calendar/MusicRoomExportModal.tsx index d951987..26c8fe3 100644 --- a/src/components/calendar/MusicRoomExportModal.tsx +++ b/src/components/calendar/MusicRoomExportModal.tsx @@ -79,14 +79,14 @@ export function MusicRoomExportModal({ className="flex h-fit w-full flex-col p-4 @2xl/export:w-3/4 @5xl/export:w-1/2" >
-
+
{/* Heading and description */}
Export music room bookings
{/* Export steps */} -
    +
    • Copy the personal link. {!scheduleKey ? ( @@ -129,21 +129,19 @@ export function MusicRoomExportModal({
    • Paste the link and click Add.
    - {/* Calendar itself */} -
    - -
+ {/* Calendar itself */} +
diff --git a/src/components/calendar/SportExportModal.tsx b/src/components/calendar/SportExportModal.tsx index 5b82ec9..317842a 100644 --- a/src/components/calendar/SportExportModal.tsx +++ b/src/components/calendar/SportExportModal.tsx @@ -79,14 +79,14 @@ export function SportExportModal({ className="flex h-fit w-full flex-col p-4 @2xl/export:w-3/4 @5xl/export:w-1/2" >
-
+
{/* Heading and description */}
Export sport trainings
{/* Export steps */} -
    +
    • Copy the personal link. {!scheduleKey ? ( @@ -130,21 +130,19 @@ export function SportExportModal({
    • Paste the link and click Add.
    - {/* Calendar itself */} -
    - -
+ {/* Calendar itself */} +
diff --git a/src/components/common/Tooltip.tsx b/src/components/common/Tooltip.tsx index 7f99381..ecdaa1e 100644 --- a/src/components/common/Tooltip.tsx +++ b/src/components/common/Tooltip.tsx @@ -28,13 +28,7 @@ export default function Tooltip({ open: isOpen, onOpenChange: setIsOpen, whileElementsMounted: autoUpdate, - middleware: [ - offset(5), - flip({ - fallbackAxisSideDirection: "start", - }), - shift(), - ], + middleware: [offset(5), flip(), shift()], }); // Transition effect @@ -73,7 +67,7 @@ export default function Tooltip({ ref={refs.setFloating} style={{ ...floatingStyles, ...transitionStyles }} {...getFloatingProps()} - className="pointer-events-none z-10 rounded-xl bg-primary-main px-8 py-2 text-sm text-text-main drop-shadow-md" + className="pointer-events-none z-10 rounded-xl bg-primary-main px-4 py-2 text-sm text-text-main drop-shadow-md" > {content}
diff --git a/src/components/dashboard/DashboardPage.tsx b/src/components/dashboard/DashboardPage.tsx index c1885b7..0f183ae 100644 --- a/src/components/dashboard/DashboardPage.tsx +++ b/src/components/dashboard/DashboardPage.tsx @@ -39,71 +39,58 @@ export function DashboardPage() { return ( <> -
-
- {me.telegram?.photo_url ? ( - Your avatar - ) : ( - - )} -
-
-

{me.innopolis_sso?.name}

-

- {me.innopolis_sso?.email} -

-
-
- -
- -
-
-

- Telegram channel -

-

- Join one-zero-eight channel - in Telegram for all important information about InNoHassle. -

+
+
+
+ {me.telegram?.photo_url ? ( + Your avatar + ) : ( + + )} +
+
+

{me.innopolis_sso?.name}

+

+ {me.innopolis_sso?.email} +

+
-
-
-
- Schedule -
- {predefined?.event_groups.map((v) => ( - - ))} - - } - tooltip="Open Telegram bot" - /> - } - /> - {musicRoomIsSuccess && ( + +
+ +
+
+

+ Telegram channel +

+

+ Join one-zero-eight{" "} + channel in Telegram for all important information about + InNoHassle. +

+
+
+
+
+ Schedule +
+ {predefined?.event_groups.map((v) => ( + + ))} } @@ -111,78 +98,92 @@ export function DashboardPage() { /> } /> - )} - - Moodle - - NEW - - - } - description="Your Moodle deadlines" - buttons={ - + {musicRoomIsSuccess && ( + + } + tooltip="Open Telegram bot" + /> } - tooltip="Install the browser extension to sync Moodle calendar" /> - } - /> -
-
-
- Favorites - {eventsUser?.favorite_event_groups === undefined || - eventsUser.favorite_event_groups.length === 0 ? ( -

- Add favorite calendars using star button. -
- - Explore schedules - -

- ) : ( -
- {eventsUser.favorite_event_groups.map((v) => ( - - ))} + )} + + Moodle + + NEW + + + } + description="Your Moodle deadlines" + buttons={ + + } + tooltip="Install the browser extension to sync Moodle calendar" + /> + } + />
- )} -
-
-

Your calendar

-
- = 1280 - ? "dayGridMonth" - : width >= 1024 - ? "timeGridWeek" - : "listMonth" - : "dayGridMonth" - } - viewId="page" - /> +
+
+ Favorites + {eventsUser?.favorite_event_groups === undefined || + eventsUser.favorite_event_groups.length === 0 ? ( +

+ Add favorite calendars using star button. +
+ + Explore schedules + +

+ ) : ( +
+ {eventsUser.favorite_event_groups.map((v) => ( + + ))} +
+ )} +
+
+

Your calendar

+ = 1280 + ? "dayGridMonth" + : width >= 1024 + ? "timeGridWeek" + : "listMonth" + : "dayGridMonth" + } + viewId="page" + /> ); } diff --git a/src/components/dorm-rooms/DormRoomsPage.tsx b/src/components/dorm-rooms/DormRoomsPage.tsx index ca02f6c..890725e 100644 --- a/src/components/dorm-rooms/DormRoomsPage.tsx +++ b/src/components/dorm-rooms/DormRoomsPage.tsx @@ -1,6 +1,6 @@ export function DormRoomsPage() { return ( -
+
diff --git a/src/components/extension/ExtensionPage.tsx b/src/components/extension/ExtensionPage.tsx index ed9a8e8..1b2e89e 100644 --- a/src/components/extension/ExtensionPage.tsx +++ b/src/components/extension/ExtensionPage.tsx @@ -2,7 +2,7 @@ import ExtensionScreenshotPNG from "/extension-screenshot.png"; export function ExtensionPage() { return ( -
+
diff --git a/src/components/layout/LeaveFeedbackButton.tsx b/src/components/layout/LeaveFeedbackButton.tsx new file mode 100644 index 0000000..f7cf278 --- /dev/null +++ b/src/components/layout/LeaveFeedbackButton.tsx @@ -0,0 +1,20 @@ +import Tooltip from "@/components/common/Tooltip.tsx"; + +export function LeaveFeedbackButton() { + return ( + + +
+
+ +
+
+
+
+ ); +} diff --git a/src/components/layout/Navbar.tsx b/src/components/layout/Navbar.tsx deleted file mode 100644 index f48d281..0000000 --- a/src/components/layout/Navbar.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { SidebarMenuButton } from "@/components/layout/Sidebar"; -import SwitchThemeButton from "@/components/layout/SwitchThemeButton"; -import UserMenu from "@/components/layout/UserMenu"; -import clsx from "clsx"; - -export function Navbar({ - children, - className, -}: React.PropsWithChildren<{ - className?: string; -}>) { - return ( - - ); -} - -export function NavbarTemplate({ - title, - description, -}: { - title: React.ReactNode; - description: React.ReactNode; -}) { - return ( - -

{title}

-

{description}

-
- ); -} diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index e6598ed..c41635f 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -1,4 +1,5 @@ import Tooltip from "@/components/common/Tooltip.tsx"; +import { LeaveFeedbackButton } from "@/components/layout/LeaveFeedbackButton.tsx"; import SidebarSection from "@/components/layout/SidebarSection"; import SwitchThemeButton from "@/components/layout/SwitchThemeButton"; import UserMenu from "@/components/layout/UserMenu"; @@ -168,64 +169,60 @@ function Sidebar({ children }: React.PropsWithChildren) { /> {children} diff --git a/src/components/layout/SidebarSection.tsx b/src/components/layout/SidebarSection.tsx index a0936c7..6a6ad85 100644 --- a/src/components/layout/SidebarSection.tsx +++ b/src/components/layout/SidebarSection.tsx @@ -16,7 +16,7 @@ function SidebarSection(props: SectionProps) { const element = (
{element} diff --git a/src/components/layout/SwitchThemeButton.tsx b/src/components/layout/SwitchThemeButton.tsx index 6d65fe8..ef1fec6 100644 --- a/src/components/layout/SwitchThemeButton.tsx +++ b/src/components/layout/SwitchThemeButton.tsx @@ -1,3 +1,4 @@ +import Tooltip from "@/components/common/Tooltip.tsx"; import { useTernaryDarkMode } from "usehooks-ts"; export default function SwitchThemeButton() { @@ -8,14 +9,16 @@ export default function SwitchThemeButton() { }); return ( - + + + ); } diff --git a/src/components/layout/Topbar.tsx b/src/components/layout/Topbar.tsx new file mode 100644 index 0000000..7f29763 --- /dev/null +++ b/src/components/layout/Topbar.tsx @@ -0,0 +1,20 @@ +import { LeaveFeedbackButton } from "@/components/layout/LeaveFeedbackButton.tsx"; +import { SidebarMenuButton } from "@/components/layout/Sidebar"; +import SwitchThemeButton from "@/components/layout/SwitchThemeButton"; +import UserMenu from "@/components/layout/UserMenu"; + +export function Topbar({ title }: { title: React.ReactNode }) { + return ( + + ); +} diff --git a/src/components/layout/UserMenu.tsx b/src/components/layout/UserMenu.tsx index 030ce6e..9539f67 100644 --- a/src/components/layout/UserMenu.tsx +++ b/src/components/layout/UserMenu.tsx @@ -1,6 +1,7 @@ import { navigateToSignOut } from "@/api/accounts/sign-in.ts"; import { useMe } from "@/api/accounts/user.ts"; import { SignInButtonIcon } from "@/components/common/SignInButton"; +import Tooltip from "@/components/common/Tooltip.tsx"; import { SidebarContext } from "@/components/layout/Sidebar"; import { autoUpdate, @@ -66,17 +67,19 @@ function UserMenu({ isMobile, isSidebar }: UserMenuProps) { return ( <> -
- + + {isMounted && ( diff --git a/src/components/maps/MapsPage.tsx b/src/components/maps/MapsPage.tsx index add3d6d..066d4b5 100644 --- a/src/components/maps/MapsPage.tsx +++ b/src/components/maps/MapsPage.tsx @@ -9,8 +9,8 @@ export function MapsPage({ sceneId }: { sceneId: string | undefined }) { scenes?.find((scene) => scene.scene_id === sceneId) ?? scenes?.[0]; return ( -
-
+
+
{scenes?.map((scene) => ( -
+
-
+

Legend:

{currentScene.legend?.map((legendEntry) => (
diff --git a/src/components/music-room/MusicRoomPage.tsx b/src/components/music-room/MusicRoomPage.tsx index 1d3fff4..f99dc02 100644 --- a/src/components/music-room/MusicRoomPage.tsx +++ b/src/components/music-room/MusicRoomPage.tsx @@ -9,110 +9,110 @@ export function MusicRoomPage() { const [exportModalOpen, setExportModalOpen] = useState(false); return ( <> -
-
- -
- -
-
-

- Telegram bot -

-

- Register in Telegram bot to book timeslots. -

-
-
- -
- -
-
-

- Instructions -

-

- Read rules and guides on how to access the Music room. Every - visitor should accept these conditions. -

-
- - +
+
+
+ +
+ +
+
+

+ Telegram bot +

+

+ Register in Telegram bot to book timeslots. +

+
+
+ +
+ +
+
+

+ Instructions +

+

+ Read rules and guides on how to access the Music room. Every + visitor should accept these conditions. +

+
+ + +
+
+ +
-
- +
+

Booking calendar

+ setExportModalOpen(true)} + />
-
-

Booking calendar

- setExportModalOpen(true)} - /> -
-
- -
+ - - { - setNewBookingSlot(newBooking); - setBookingDetails(undefined); - setModalOpen(true); - }} - onBookingClick={(booking: Booking) => { - setBookingDetails(booking); - setNewBookingSlot(undefined); - setModalOpen(true); - }} - /> - +
+ + { + setNewBookingSlot(newBooking); + setBookingDetails(undefined); + setModalOpen(true); + }} + onBookingClick={(booking: Booking) => { + setBookingDetails(booking); + setNewBookingSlot(undefined); + setModalOpen(true); + }} + /> + +
+
{Object.entries(viewConfig.categories) .filter(([_, v]) => !v.outdated) .map(([_, v]) => ( diff --git a/src/components/schedule/ClarificationContainer.tsx b/src/components/schedule/ClarificationContainer.tsx index f0dd711..b1f4a6a 100644 --- a/src/components/schedule/ClarificationContainer.tsx +++ b/src/components/schedule/ClarificationContainer.tsx @@ -3,7 +3,7 @@ import { ClarificationCard } from "@/components/schedule/ClarificationCard"; export function ClarificationContainer() { return ( -
+
diff --git a/src/components/schedule/EventGroupPage.tsx b/src/components/schedule/EventGroupPage.tsx index 90a3e6d..ae72645 100644 --- a/src/components/schedule/EventGroupPage.tsx +++ b/src/components/schedule/EventGroupPage.tsx @@ -1,7 +1,7 @@ import { $events } from "@/api/events"; import { Calendar } from "@/components/calendar/Calendar.tsx"; import { EventGroupExportModal } from "@/components/calendar/EventGroupExportModal.tsx"; -import { NavbarTemplate } from "@/components/layout/Navbar.tsx"; +import { Topbar } from "@/components/layout/Topbar.tsx"; import ExportButton from "@/components/schedule/ExportButton.tsx"; import FavoriteButton from "@/components/schedule/group-card/FavoriteButton.tsx"; import { getICSLink } from "@/lib/events/links.ts"; @@ -25,59 +25,58 @@ export function EventGroupPage({ alias }: { alias: string }) { )} +
- -
+ className="min-h-64 bg-primary-main bg-repeat p-4" + /> {group && ( -
-
-
-

{group.name}

-

- {group.description || - "Hello world, this is a long description about my life and this elective."} -

-
- -
-

Tags

-
- {group.tags?.map((tag) => ( -
- {tag.name} +
+
+
+
+

{group.name}

+

+ {group.description || + "Hello world, this is a long description about my life and this elective."} +

- ))} -
-
-

Calendar

- setExportModalOpen(true)} /> -
-
- = 1280 - ? "dayGridMonth" - : width >= 1024 - ? "timeGridWeek" - : "listMonth" - : "dayGridMonth" - } - viewId="page" - /> + +
+

Tags

+
+ {group.tags?.map((tag) => ( +
+ {tag.name} +
+ ))} +
+
+

Calendar

+ setExportModalOpen(true)} /> +
+ = 1280 + ? "dayGridMonth" + : width >= 1024 + ? "timeGridWeek" + : "listMonth" + : "dayGridMonth" + } + viewId="page" + />
)} -
+
+
{categoryInfo?.filtersTagTypes.map((v) => ( @@ -84,8 +84,6 @@ export default function ScheduleList({ category }: ScheduleListProps) {
-
- {Object.keys(groups).length > 0 ? ( Object.keys(groups) .sort() @@ -111,6 +109,6 @@ export default function ScheduleList({ category }: ScheduleListProps) { )} - +
); } diff --git a/src/components/schedule/ScheduleMainPage.tsx b/src/components/schedule/ScheduleMainPage.tsx index f469142..5c8f551 100755 --- a/src/components/schedule/ScheduleMainPage.tsx +++ b/src/components/schedule/ScheduleMainPage.tsx @@ -5,10 +5,10 @@ import { DashboardButton } from "@/components/schedule/DashboardButton.tsx"; export function ScheduleMainPage() { return ( <> -

+

Choose the category

-
+
diff --git a/src/components/scholarship/ScholarshipPage.tsx b/src/components/scholarship/ScholarshipPage.tsx index 6543ef0..0afd3bb 100644 --- a/src/components/scholarship/ScholarshipPage.tsx +++ b/src/components/scholarship/ScholarshipPage.tsx @@ -8,11 +8,11 @@ import ScholarshipCalculator from "@/components/scholarship/ScholarshipCalculato export function ScholarshipPage() { return ( <> -
+
-
+

Information

Academic scholarships:

diff --git a/src/components/search/SearchPage.tsx b/src/components/search/SearchPage.tsx index bf9fa7b..56c3f6d 100644 --- a/src/components/search/SearchPage.tsx +++ b/src/components/search/SearchPage.tsx @@ -36,7 +36,7 @@ export function SearchPage({ searchQuery }: { searchQuery: string }) { }; return ( -
+
{searchResult && ( diff --git a/src/components/sport/SportPage.tsx b/src/components/sport/SportPage.tsx index ad73c8f..5530de6 100644 --- a/src/components/sport/SportPage.tsx +++ b/src/components/sport/SportPage.tsx @@ -8,69 +8,69 @@ export function SportPage() { const [exportModalOpen, setExportModalOpen] = useState(false); return ( <> -