Skip to content
This repository has been archived by the owner on Sep 2, 2024. It is now read-only.

Commit

Permalink
feat: initial impl
Browse files Browse the repository at this point in the history
  • Loading branch information
reneaaron committed Jun 11, 2024
1 parent 1cb7632 commit da003a4
Show file tree
Hide file tree
Showing 8 changed files with 261 additions and 352 deletions.
320 changes: 196 additions & 124 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,157 +1,229 @@
import { HashRouter, Navigate, Route, Routes } from "react-router-dom";
import { RouterProvider, createHashRouter } from "react-router-dom";

import { ThemeProvider } from "src/components/ui/theme-provider";
import { usePosthog } from "./hooks/usePosthog";

import AppLayout from "src/components/layouts/AppLayout";
import SettingsLayout from "src/components/layouts/SettingsLayout";
import { DefaultRedirect } from "src/components/redirects/DefaultRedirect";
import { HomeRedirect } from "src/components/redirects/HomeRedirect";
import { SetupRedirect } from "src/components/redirects/SetupRedirect";
import { StartRedirect } from "src/components/redirects/StartRedirect";
import { ThemeProvider } from "src/components/ui/theme-provider";
import { Toaster } from "src/components/ui/toaster";
import { BackupMnemonic } from "src/screens/BackupMnemonic";
import { BackupNode } from "src/screens/BackupNode";
import { Intro } from "src/screens/Intro";
import NotFound from "src/screens/NotFound";
import Start from "src/screens/Start";
import Unlock from "src/screens/Unlock";
import { Welcome } from "src/screens/Welcome";
import AppCreated from "src/screens/apps/AppCreated";
import AppList from "src/screens/apps/AppList";
import NewApp from "src/screens/apps/NewApp";
import ShowApp from "src/screens/apps/ShowApp";
import AppStore from "src/screens/appstore/AppStore";
import Channels from "src/screens/channels/Channels";
import { CurrentChannelOrder } from "src/screens/channels/CurrentChannelOrder";
import NewChannel from "src/screens/channels/NewChannel";
import MigrateAlbyFunds from "src/screens/onboarding/MigrateAlbyFunds";
import BuyBitcoin from "src/screens/onchain/BuyBitcoin";
import DepositBitcoin from "src/screens/onchain/DepositBitcoin";
import ConnectPeer from "src/screens/peers/ConnectPeer";
import Settings from "src/screens/settings/Settings";
import { ImportMnemonic } from "src/screens/setup/ImportMnemonic";
import { SetupFinish } from "src/screens/setup/SetupFinish";
import { SetupNode } from "src/screens/setup/SetupNode";
import { SetupPassword } from "src/screens/setup/SetupPassword";
import Wallet from "src/screens/wallet";
import SignMessage from "src/screens/wallet/SignMessage";
import { usePosthog } from "./hooks/usePosthog";

import SettingsLayout from "src/components/layouts/SettingsLayout";
import TwoColumnFullScreenLayout from "src/components/layouts/TwoColumnFullScreenLayout";
import { OnboardingRedirect } from "src/components/redirects/OnboardingRedirect";
import { Toaster } from "src/components/ui/toaster";
import { BackupNode } from "src/screens/BackupNode";
import { BackupNodeSuccess } from "src/screens/BackupNodeSuccess";
import { Intro } from "src/screens/Intro";
import AlbyAuthRedirect from "src/screens/alby/AlbyAuthRedirect";
import { CurrentChannelOrder } from "src/screens/channels/CurrentChannelOrder";
import { Success } from "src/screens/onboarding/Success";
import BuyBitcoin from "src/screens/onchain/BuyBitcoin";
import Peers from "src/screens/peers/Peers";
import { ChangeUnlockPassword } from "src/screens/settings/ChangeUnlockPassword";
import DebugTools from "src/screens/settings/DebugTools";
import { RestoreNode } from "src/screens/setup/RestoreNode";
import { SetupAdvanced } from "src/screens/setup/SetupAdvanced";
import { BreezForm } from "src/screens/setup/node/BreezForm";
import { CashuForm } from "src/screens/setup/node/CashuForm";
import { GreenlightForm } from "src/screens/setup/node/GreenlightForm";
import { LDKForm } from "src/screens/setup/node/LDKForm";
import { LNDForm } from "src/screens/setup/node/LNDForm";
import { PhoenixdForm } from "src/screens/setup/node/PhoenixdForm";
import { PresetNodeForm } from "src/screens/setup/node/PresetNodeForm";
import Settings from "src/screens/settings/Settings";
import Wallet from "src/screens/wallet";
import SignMessage from "src/screens/wallet/SignMessage";

function App() {
usePosthog();

const router = createHashRouter([
{
path: "/",
element: <AppLayout />,
handle: { crumb: () => "Home" },
children: [
{
index: true,
element: <HomeRedirect />
},
{
path: "wallet",
element: <DefaultRedirect />,
handle: { crumb: () => "Wallet" },
children: [
{
index: true,
element: <Wallet />,
},
{
path: "sign-message",
element: <SignMessage />

}
]
},
{
path: "settings",
element: <SettingsLayout />,
children: [
{
index: true,
element: <Settings />
},
{
path: "change-unlock-password",
element: <ChangeUnlockPassword />,
},
{
path: "key-backup",
element: <BackupMnemonic />,
},
{
path: "node-backup",
element: <BackupNode />,
}
]
},
{
path: "apps",
element: <DefaultRedirect />,
handle: { crumb: () => "Connections" },
children: [
{
index: true,
element: <AppList />
},

{
path: ":pubkey",
element: <ShowApp />
},
{
path: "new",
element: <NewApp />,
handle: { crumb: () => "New App" }
},
]
},
{
path: "appstore",
element: <DefaultRedirect />,
handle: { crumb: () => "App Store" },
children: [
{
index: true,
element: <AppStore />,
handle: { crumb: () => "App Store" },
}
]
},
{
path: "channels",
element: <DefaultRedirect />,
children: [
{
index: true,
element: <Channels />
},
{
path: "new",
element: <NewChannel />
},
{
path: "order",
element: <CurrentChannelOrder />
},
{
path: "onchain/buy-bitcoin",
element: <BuyBitcoin />
},
{
path: "onchain/deposit-bitcoin",
element: <DepositBitcoin />
}
]
}, {
path: "peers",
element: <DefaultRedirect />,
children: [
{
index: true,
element: <Peers />
},
{
path: "new",
element: <ConnectPeer />
}
]
},
{
path: "debug-tools",
element: <DefaultRedirect />,
children: [
{
index: true,
element: <DebugTools />
}
]
},
]
},
{
path: "intro",
element: <Intro />,
},
{
path: "/*",
element: <NotFound />
}
]);

return (
<>
<ThemeProvider defaultTheme="system" storageKey="vite-ui-theme">
<Toaster />
<HashRouter>
<Routes>
<RouterProvider router={router} />
{/* <Routes>
<Route
path="/node-backup-success"
element={<BackupNodeSuccess />}
/>
<Route element={<TwoColumnFullScreenLayout />}>
<Route
path="/node-backup-success"
element={<BackupNodeSuccess />}
path="start"
element={
<StartRedirect>
<Start />
</StartRedirect>
}
/>
<Route path="/" element={<AppLayout />}>
<Route path="" element={<HomeRedirect />} />
<Route path="settings" element={<DefaultRedirect />}>
<Route element={<SettingsLayout />}>
<Route index element={<Settings />} />
<Route
path="change-unlock-password"
element={<ChangeUnlockPassword />}
/>
<Route path="key-backup" element={<BackupMnemonic />} />
<Route path="node-backup" element={<BackupNode />} />
</Route>
</Route>
<Route path="wallet" element={<DefaultRedirect />}>
<Route index element={<Wallet />} />
<Route path="sign-message" element={<SignMessage />} />
</Route>
<Route path="appstore" element={<DefaultRedirect />}>
<Route index element={<AppStore />} />
</Route>
<Route path="apps" element={<DefaultRedirect />}>
<Route path="new" element={<NewApp />} />
<Route index path="" element={<AppList />} />
<Route path=":pubkey" element={<ShowApp />} />
<Route path="created" element={<AppCreated />} />
</Route>
<Route path="debug-tools" element={<DefaultRedirect />}>
<Route index element={<DebugTools />} />
</Route>
<Route path="channels" element={<DefaultRedirect />}>
<Route index path="" element={<Channels />} />
<Route path="new" element={<NewChannel />} />
<Route path="order" element={<CurrentChannelOrder />} />
<Route
path="onchain/deposit-bitcoin"
element={<DepositBitcoin />}
/>
<Route path="onchain/buy-bitcoin" element={<BuyBitcoin />} />
</Route>
<Route path="peers" element={<DefaultRedirect />}>
<Route index element={<Peers />} />
<Route path="new" element={<ConnectPeer />} />
<Route path="/alby/auth" element={<AlbyAuthRedirect />} />
<Route path="unlock" element={<Unlock />} />
<Route path="welcome" element={<Welcome />} />
<Route path="setup" element={<SetupRedirect />}>
<Route path="" element={<Navigate to="password" replace />} />
<Route path="password" element={<SetupPassword />} />
<Route path="node">
<Route index element={<SetupNode />} />
<Route path="breez" element={<BreezForm />} />
<Route path="greenlight" element={<GreenlightForm />} />
<Route path="ldk" element={<LDKForm />} />
<Route path="preset" element={<PresetNodeForm />} />
<Route path="lnd" element={<LNDForm />} />
<Route path="cashu" element={<CashuForm />} />
<Route path="phoenix" element={<PhoenixdForm />} />
</Route>
<Route path="advanced" element={<SetupAdvanced />} />
<Route path="import-mnemonic" element={<ImportMnemonic />} />
<Route path="node-restore" element={<RestoreNode />} />
<Route path="finish" element={<SetupFinish />} />
</Route>
<Route path="intro" element={<Intro />} />
<Route element={<TwoColumnFullScreenLayout />}>
<Route
path="start"
element={
<StartRedirect>
<Start />
</StartRedirect>
}
/>
<Route path="/alby/auth" element={<AlbyAuthRedirect />} />
<Route path="unlock" element={<Unlock />} />
<Route path="welcome" element={<Welcome />} />
<Route path="setup" element={<SetupRedirect />}>
<Route path="" element={<Navigate to="password" replace />} />
<Route path="password" element={<SetupPassword />} />
<Route path="node">
<Route index element={<SetupNode />} />
<Route path="breez" element={<BreezForm />} />
<Route path="greenlight" element={<GreenlightForm />} />
<Route path="ldk" element={<LDKForm />} />
<Route path="preset" element={<PresetNodeForm />} />
<Route path="lnd" element={<LNDForm />} />
<Route path="cashu" element={<CashuForm />} />
<Route path="phoenix" element={<PhoenixdForm />} />
</Route>
<Route path="advanced" element={<SetupAdvanced />} />
<Route path="import-mnemonic" element={<ImportMnemonic />} />
<Route path="node-restore" element={<RestoreNode />} />
<Route path="finish" element={<SetupFinish />} />
</Route>
<Route path="onboarding" element={<OnboardingRedirect />}>
<Route path="lightning">
<Route path="migrate-alby" element={<MigrateAlbyFunds />} />
</Route>
<Route path="success" element={<Success />} />
<Route path="onboarding" element={<OnboardingRedirect />}>
<Route path="lightning">
<Route path="migrate-alby" element={<MigrateAlbyFunds />} />
</Route>
<Route path="success" element={<Success />} />
</Route>
<Route path="/*" element={<NotFound />} />
</Routes>
</HashRouter>
</ThemeProvider>
</Route>
</Routes>
</HashRouter>*/}
</ThemeProvider >
</>
);
}
Expand Down
16 changes: 9 additions & 7 deletions frontend/src/components/AppHeader.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ReactElement } from "react";
import Breadcrumbs from "src/components/Breadcrumb";

type Props = {
title: string | ReactElement;
Expand All @@ -8,13 +9,14 @@ type Props = {

function AppHeader({ title, description, contentRight }: Props) {
return (
<div className="flex justify-between border-b border-border pb-3 lg:pb-6">
<div className="flex-1">
<h1 className="text-xl lg:text-3xl font-semibold">{title}</h1>
<p className="hidden lg:inline text-muted-foreground">{description}</p>
</div>
<div className="flex gap-3">{contentRight}</div>
</div>
<><Breadcrumbs />
<div className="flex justify-between border-b border-border pb-3 lg:pb-6">
<div className="flex-1">
<h1 className="text-xl lg:text-3xl font-semibold">{title}</h1>
<p className="hidden lg:inline text-muted-foreground">{description}</p>
</div>
<div className="flex gap-3">{contentRight}</div>
</div></>
);
}

Expand Down
Loading

0 comments on commit da003a4

Please sign in to comment.