-
Notifications
You must be signed in to change notification settings - Fork 894
feat: UI/UX for regions #7283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: UI/UX for regions #7283
Changes from 28 commits
26d3497
3203ad7
a9ad485
bde8870
69ce5f0
1daa32f
b2e3efb
f78935f
7a2e78e
9b598e8
17f9b00
0683412
69c5734
9879476
7d163fd
e400810
02bcb84
f9446c2
9281333
8cc227f
63dc985
f4b6921
322fda6
89efc57
48a0beb
77d943f
75b8fd4
3391e84
4075b92
b79b460
e879160
27ef4a9
eb38e95
1f8cae4
6a22181
51bdaa2
909801c
836c5a4
0d0ed87
6ed5fe4
163bbff
7dee309
b7cfb39
6b19118
3fed785
5bb44e8
c868fc9
edbe6e4
eb6493c
017b3db
c59a6ba
87e0b6d
fef5b00
d33371d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,13 +11,20 @@ import TemplatesPage from "pages/TemplatesPage/TemplatesPage" | |
import UsersPage from "pages/UsersPage/UsersPage" | ||
import WorkspacesPage from "pages/WorkspacesPage/WorkspacesPage" | ||
import { FC, lazy, Suspense } from "react" | ||
import { Route, Routes, BrowserRouter as Router } from "react-router-dom" | ||
import { | ||
Route, | ||
Routes, | ||
BrowserRouter as Router, | ||
Outlet, | ||
} from "react-router-dom" | ||
import { DashboardLayout } from "./components/Dashboard/DashboardLayout" | ||
import { RequireAuth } from "./components/RequireAuth/RequireAuth" | ||
import { SettingsLayout } from "./components/SettingsLayout/SettingsLayout" | ||
import { DeploySettingsLayout } from "components/DeploySettingsLayout/DeploySettingsLayout" | ||
import { TemplateSettingsLayout } from "pages/TemplateSettingsPage/TemplateSettingsLayout" | ||
import { WorkspaceSettingsLayout } from "pages/WorkspaceSettingsPage/WorkspaceSettingsLayout" | ||
import { DashboardProvider } from "components/Dashboard/DashboardProvider" | ||
import { ProxyProvider } from "contexts/ProxyContext" | ||
|
||
// Lazy load pages | ||
// - Pages that are secondary, not in the main navigation or not usually accessed | ||
|
@@ -38,6 +45,10 @@ const SSHKeysPage = lazy( | |
const TokensPage = lazy( | ||
() => import("./pages/UserSettingsPage/TokensPage/TokensPage"), | ||
) | ||
const WorkspaceProxyPage = lazy( | ||
() => | ||
import("./pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage"), | ||
) | ||
const CreateUserPage = lazy( | ||
() => import("./pages/UsersPage/CreateUserPage/CreateUserPage"), | ||
) | ||
|
@@ -177,127 +188,145 @@ export const AppRouter: FC = () => { | |
|
||
{/* Dashboard routes */} | ||
<Route element={<RequireAuth />}> | ||
<Route element={<DashboardLayout />}> | ||
<Route index element={<IndexPage />} /> | ||
<Route element={<AuthenticatedProviders />}> | ||
Emyrk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
<Route element={<DashboardLayout />}> | ||
<Route index element={<IndexPage />} /> | ||
|
||
<Route path="gitauth" element={<GitAuthPage />} /> | ||
<Route path="gitauth" element={<GitAuthPage />} /> | ||
|
||
<Route path="workspaces" element={<WorkspacesPage />} /> | ||
|
||
<Route path="starter-templates"> | ||
<Route index element={<StarterTemplatesPage />} /> | ||
<Route path=":exampleId" element={<StarterTemplatePage />} /> | ||
</Route> | ||
<Route path="workspaces" element={<WorkspacesPage />} /> | ||
|
||
<Route path="templates"> | ||
<Route index element={<TemplatesPage />} /> | ||
<Route path="new" element={<CreateTemplatePage />} /> | ||
<Route path=":template"> | ||
<Route element={<TemplateLayout />}> | ||
<Route index element={<TemplateSummaryPage />} /> | ||
<Route path="docs" element={<TemplateDocsPage />} /> | ||
<Route path="files" element={<TemplateFilesPage />} /> | ||
<Route path="versions" element={<TemplateVersionsPage />} /> | ||
</Route> | ||
<Route path="starter-templates"> | ||
<Route index element={<StarterTemplatesPage />} /> | ||
<Route path=":exampleId" element={<StarterTemplatePage />} /> | ||
</Route> | ||
|
||
<Route path="workspace" element={<CreateWorkspacePage />} /> | ||
<Route path="templates"> | ||
<Route index element={<TemplatesPage />} /> | ||
<Route path="new" element={<CreateTemplatePage />} /> | ||
<Route path=":template"> | ||
<Route element={<TemplateLayout />}> | ||
<Route index element={<TemplateSummaryPage />} /> | ||
<Route path="docs" element={<TemplateDocsPage />} /> | ||
<Route path="files" element={<TemplateFilesPage />} /> | ||
<Route | ||
path="versions" | ||
element={<TemplateVersionsPage />} | ||
/> | ||
</Route> | ||
|
||
<Route path="settings" element={<TemplateSettingsLayout />}> | ||
<Route index element={<TemplateSettingsPage />} /> | ||
<Route | ||
path="permissions" | ||
element={<TemplatePermissionsPage />} | ||
/> | ||
<Route | ||
path="variables" | ||
element={<TemplateVariablesPage />} | ||
/> | ||
<Route path="schedule" element={<TemplateSchedulePage />} /> | ||
</Route> | ||
<Route path="workspace" element={<CreateWorkspacePage />} /> | ||
|
||
<Route path="versions"> | ||
<Route path=":version"> | ||
<Route index element={<TemplateVersionPage />} /> | ||
<Route path="settings" element={<TemplateSettingsLayout />}> | ||
<Route index element={<TemplateSettingsPage />} /> | ||
<Route | ||
path="permissions" | ||
element={<TemplatePermissionsPage />} | ||
/> | ||
<Route | ||
path="edit" | ||
element={<TemplateVersionEditorPage />} | ||
path="variables" | ||
element={<TemplateVariablesPage />} | ||
/> | ||
<Route | ||
path="schedule" | ||
element={<TemplateSchedulePage />} | ||
/> | ||
</Route> | ||
</Route> | ||
</Route> | ||
</Route> | ||
|
||
<Route path="users"> | ||
<Route element={<UsersLayout />}> | ||
<Route index element={<UsersPage />} /> | ||
<Route path="versions"> | ||
<Route path=":version"> | ||
<Route index element={<TemplateVersionPage />} /> | ||
<Route | ||
path="edit" | ||
element={<TemplateVersionEditorPage />} | ||
/> | ||
</Route> | ||
</Route> | ||
</Route> | ||
</Route> | ||
|
||
<Route path="create" element={<CreateUserPage />} /> | ||
</Route> | ||
<Route path="users"> | ||
<Route element={<UsersLayout />}> | ||
<Route index element={<UsersPage />} /> | ||
</Route> | ||
|
||
<Route path="/groups"> | ||
<Route element={<UsersLayout />}> | ||
<Route index element={<GroupsPage />} /> | ||
<Route path="create" element={<CreateUserPage />} /> | ||
</Route> | ||
|
||
<Route path="create" element={<CreateGroupPage />} /> | ||
<Route path=":groupId" element={<GroupPage />} /> | ||
<Route | ||
path=":groupId/settings" | ||
element={<SettingsGroupPage />} | ||
/> | ||
</Route> | ||
<Route path="/groups"> | ||
<Route element={<UsersLayout />}> | ||
<Route index element={<GroupsPage />} /> | ||
</Route> | ||
|
||
<Route path="/audit" element={<AuditPage />} /> | ||
<Route path="create" element={<CreateGroupPage />} /> | ||
<Route path=":groupId" element={<GroupPage />} /> | ||
<Route | ||
path=":groupId/settings" | ||
element={<SettingsGroupPage />} | ||
/> | ||
</Route> | ||
|
||
<Route | ||
path="/settings/deployment" | ||
element={<DeploySettingsLayout />} | ||
> | ||
<Route path="general" element={<GeneralSettingsPage />} /> | ||
<Route path="licenses" element={<LicensesSettingsPage />} /> | ||
<Route path="licenses/add" element={<AddNewLicensePage />} /> | ||
<Route path="security" element={<SecuritySettingsPage />} /> | ||
<Route path="appearance" element={<AppearanceSettingsPage />} /> | ||
<Route path="network" element={<NetworkSettingsPage />} /> | ||
<Route path="userauth" element={<UserAuthSettingsPage />} /> | ||
<Route path="gitauth" element={<GitAuthSettingsPage />} /> | ||
</Route> | ||
<Route path="/audit" element={<AuditPage />} /> | ||
|
||
<Route path="settings" element={<SettingsLayout />}> | ||
<Route path="account" element={<AccountPage />} /> | ||
<Route path="security" element={<SecurityPage />} /> | ||
<Route path="ssh-keys" element={<SSHKeysPage />} /> | ||
<Route path="tokens"> | ||
<Route index element={<TokensPage />} /> | ||
<Route path="new" element={<CreateTokenPage />} /> | ||
<Route | ||
path="/settings/deployment" | ||
element={<DeploySettingsLayout />} | ||
> | ||
<Route path="general" element={<GeneralSettingsPage />} /> | ||
<Route path="licenses" element={<LicensesSettingsPage />} /> | ||
<Route path="licenses/add" element={<AddNewLicensePage />} /> | ||
<Route path="security" element={<SecuritySettingsPage />} /> | ||
<Route | ||
path="appearance" | ||
element={<AppearanceSettingsPage />} | ||
/> | ||
<Route path="network" element={<NetworkSettingsPage />} /> | ||
<Route path="userauth" element={<UserAuthSettingsPage />} /> | ||
<Route path="gitauth" element={<GitAuthSettingsPage />} /> | ||
</Route> | ||
</Route> | ||
|
||
<Route path="/@:username"> | ||
<Route path=":workspace"> | ||
<Route index element={<WorkspacePage />} /> | ||
<Route path="settings" element={<SettingsLayout />}> | ||
<Route path="account" element={<AccountPage />} /> | ||
<Route path="security" element={<SecurityPage />} /> | ||
<Route path="ssh-keys" element={<SSHKeysPage />} /> | ||
<Route path="tokens"> | ||
<Route index element={<TokensPage />} /> | ||
<Route path="new" element={<CreateTokenPage />} /> | ||
</Route> | ||
<Route | ||
path="builds/:buildNumber" | ||
element={<WorkspaceBuildPage />} | ||
path="workspace-proxies" | ||
element={<WorkspaceProxyPage />} | ||
/> | ||
<Route path="settings" element={<WorkspaceSettingsLayout />}> | ||
<Route index element={<WorkspaceSettingsPage />} /> | ||
</Route> | ||
|
||
<Route path="/@:username"> | ||
<Route path=":workspace"> | ||
<Route index element={<WorkspacePage />} /> | ||
<Route | ||
path="schedule" | ||
element={<WorkspaceSchedulePage />} | ||
path="builds/:buildNumber" | ||
element={<WorkspaceBuildPage />} | ||
/> | ||
<Route | ||
path="settings" | ||
element={<WorkspaceSettingsLayout />} | ||
> | ||
<Route index element={<WorkspaceSettingsPage />} /> | ||
<Route | ||
path="schedule" | ||
element={<WorkspaceSchedulePage />} | ||
/> | ||
</Route> | ||
</Route> | ||
</Route> | ||
</Route> | ||
</Route> | ||
|
||
{/* Terminal and CLI auth pages don't have the dashboard layout */} | ||
<Route | ||
path="/@:username/:workspace/terminal" | ||
element={<TerminalPage />} | ||
/> | ||
<Route path="cli-auth" element={<CliAuthenticationPage />} /> | ||
{/* Terminal and CLI auth pages don't have the dashboard layout */} | ||
<Route | ||
path="/@:username/:workspace/terminal" | ||
element={<TerminalPage />} | ||
/> | ||
<Route path="cli-auth" element={<CliAuthenticationPage />} /> | ||
</Route> | ||
</Route> | ||
|
||
{/* Using path="*"" means "match anything", so this route | ||
|
@@ -309,3 +338,14 @@ export const AppRouter: FC = () => { | |
</Suspense> | ||
) | ||
} | ||
|
||
// AuthenticatedProviders are used to provide authenticated contexts to children | ||
export const AuthenticatedProviders: FC = () => { | ||
return ( | ||
<DashboardProvider> | ||
<ProxyProvider> | ||
<Outlet /> | ||
</ProxyProvider> | ||
</DashboardProvider> | ||
) | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IMO, having a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is also used in the Terminal Page, and the settings page |
Uh oh!
There was an error while loading. Please reload this page.