mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-09 12:45:25 +03:00
* Break out live page * Improving layouts and add chip component * Improve default camera player sizing * Improve live updating * Cleanup and fit figma * Use fixed height * Masonry layout * Fix stuff * Don't force heights * Adjust scaling * Cleanup * remove sidebar (#9731) * remove sidebar * keep sidebar on mobile for now and add icons * Fix revalidation * Cleanup * Cleanup width * Add chips for activity on cameras * Remove dashboard from header * Use Inter font (#9735) * Show still image when no activity is occurring * remove unused search params * add playing check for webrtc * Don't use grid at all for single column * Fix height on mobile * a few style updates to better match figma (#9745) * Remove active objects when they become stationary * Move to sidebar only and make settings separate component * Fix layout * Animate visibility of chips * Sidebar is full screen * Fix tall aspect ratio cameras * Fix complicated aspect logic * remove * Adjust thumbnail aspect and add text * margin on single column layout * Smaller event thumb text * Simplify basic image view * Only show the red dot when camera is recording * Improve typing for camera toggles * animate chips with react-transition-group (#9763) * don't flash when going to still image * revalidate * tooltips and active tracking outline (#9766) * tooltips * fix tooltip provider and add active tracking outline * remove unused icon * remove figma comment * Get live mode working for jsmpeg * add small gradient below timeago on event thumbnails (#9767) * Create live mode hook and make sure jsmpeg can be used * Enforce env var * Use print * Remove unstable * Add tooltips to thumbnails * Put back vite * Format * Update web/src/components/player/JSMpegPlayer.tsx --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Co-authored-by: Blake Blackshear <blake@frigate.video>
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import Providers from "@/context/providers";
|
|
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
|
import { useState } from "react";
|
|
import Wrapper from "@/components/Wrapper";
|
|
import Sidebar from "@/components/Sidebar";
|
|
import Header from "@/components/Header";
|
|
import Live from "@/pages/Live";
|
|
import History from "@/pages/History";
|
|
import Export from "@/pages/Export";
|
|
import Storage from "@/pages/Storage";
|
|
import System from "@/pages/System";
|
|
import ConfigEditor from "@/pages/ConfigEditor";
|
|
import Logs from "@/pages/Logs";
|
|
import NoMatch from "@/pages/NoMatch";
|
|
import Settings from "@/pages/Settings";
|
|
import UIPlayground from "./pages/UIPlayground";
|
|
|
|
function App() {
|
|
const [sheetOpen, setSheetOpen] = useState(false);
|
|
|
|
const toggleNavbar = () => {
|
|
setSheetOpen((prev) => !prev);
|
|
};
|
|
|
|
return (
|
|
<Providers>
|
|
<BrowserRouter>
|
|
<Wrapper>
|
|
<Header onToggleNavbar={toggleNavbar} />
|
|
<div className="grid grid-cols-[auto,1fr] flex-grow-1 overflow-auto">
|
|
<Sidebar sheetOpen={sheetOpen} setSheetOpen={setSheetOpen} />
|
|
<div
|
|
id="pageRoot"
|
|
className="overflow-x-hidden px-4 py-2 w-screen md:w-full"
|
|
>
|
|
<Routes>
|
|
<Route path="/" element={<Live />} />
|
|
<Route path="/history" element={<History />} />
|
|
<Route path="/export" element={<Export />} />
|
|
<Route path="/storage" element={<Storage />} />
|
|
<Route path="/system" element={<System />} />
|
|
<Route path="/settings" element={<Settings />} />
|
|
<Route path="/config" element={<ConfigEditor />} />
|
|
<Route path="/logs" element={<Logs />} />
|
|
<Route path="/playground" element={<UIPlayground />} />
|
|
<Route path="*" element={<NoMatch />} />
|
|
</Routes>
|
|
</div>
|
|
</div>
|
|
</Wrapper>
|
|
</BrowserRouter>
|
|
</Providers>
|
|
);
|
|
}
|
|
|
|
export default App;
|