feat: some profile page upgrades

This commit is contained in:
2025-04-03 11:11:30 +03:00
parent cd618e4d1d
commit cbb28fac6f
4 changed files with 45 additions and 29 deletions

View File

@@ -1,8 +1,8 @@
import { FunctionComponent } from "preact"; import { FunctionComponent } from "preact";
import { ErrorBoundary, LocationProvider, Route, Router, useLocation } from "preact-iso"; import { ErrorBoundary, lazy, LocationProvider, Route, Router, useLocation } from "preact-iso";
import "preact/debug"; import "preact/debug";
import LoginPage from "./pages/login"; import LoginPage from "./pages/login";
import ProfilePage from "./pages/profile"; import { AppProvider } from "./providers/AuthProvider";
const HomePage: FunctionComponent = () => { const HomePage: FunctionComponent = () => {
const location = useLocation(); const location = useLocation();
@@ -12,14 +12,17 @@ const HomePage: FunctionComponent = () => {
export function App() { export function App() {
return ( return (
<LocationProvider> <AppProvider>
<ErrorBoundary> <LocationProvider>
<Router> <ErrorBoundary>
<Route path="/" component={HomePage} /> <Router>
<Route path="/login" component={LoginPage} /> <Route path="/" component={HomePage} />
<Route path="/profile" component={ProfilePage} /> <Route path="/login" component={LoginPage} />
</Router> <Route path="/profile/*" component={lazy(() => import("./pages/profile"))} />
</ErrorBoundary> <Route default component={() => <h1>404</h1>} />
</LocationProvider> </Router>
</ErrorBoundary>
</LocationProvider>
</AppProvider>
); );
} }

View File

@@ -1,13 +0,0 @@
import { FunctionComponent } from "preact";
import Menu from "./menu";
const Layout: FunctionComponent = (props) => {
return (
<div class="flex min-w-screen flex-row justify-between">
{props.children}
<Menu />
</div>
);
};
export default Layout;

View File

@@ -1,14 +1,25 @@
import Button from "@/components/ui/Button"; import Button from "@/components/ui/Button";
import Input from "@/components/ui/Input"; import Input from "@/components/ui/Input";
import { useAppContext } from "@/providers/AuthProvider";
import { FunctionComponent } from "preact"; import { FunctionComponent } from "preact";
import { useLocation } from "preact-iso";
import classes from "./login.module.scss"; import classes from "./login.module.scss";
const LoginPage: FunctionComponent = () => { const LoginPage: FunctionComponent = () => {
const { isLoggedIn } = useAppContext();
const location = useLocation();
return ( return (
<div class={classes.login_container}> <div class={classes.login_container}>
<div class={classes.login_card}> <div class={classes.login_card}>
<Input placeholder="Login" textAlign="center" /> <Input placeholder="Login" textAlign="center" />
<Input isPassword placeholder="Password" textAlign="center" /> <Input isPassword placeholder="Password" textAlign="center" />
<Button onClick={() => {}}>Login</Button> <Button
onClick={() => {
isLoggedIn.value = true;
location.route("/profile/settings");
}}
>
Login
</Button>
</div> </div>
</div> </div>
); );

View File

@@ -1,11 +1,26 @@
import Layout from "@/components/layout"; import Menu from "@/components/menu";
import { FunctionComponent } from "preact"; import { FunctionComponent } from "preact";
import { Route, Router, useLocation } from "preact-iso";
const ProfilePage: FunctionComponent = () => { const ProfilePage: FunctionComponent = () => {
const { route } = useLocation();
return ( return (
<Layout> <div class="flex min-w-screen flex-row justify-between">
<p>Profile</p> <div class="w-full overflow-x-auto">
</Layout> <Router>
<Route path="/settings" component={() => <h1>Test</h1>} />
<Route path="/tasks" component={() => <h1>Test2</h1>} />
<Route
default
component={() => {
route("/profile/settings", true);
return null;
}}
/>
</Router>
</div>
<Menu />
</div>
); );
}; };