From f985187999190377bfb0fa145963ebed0e0730b6 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Thu, 21 Aug 2025 12:15:42 +0100 Subject: [PATCH] feat(ui): introduce a top-level Clan context --- .../ListClansModal}/ListClansModal.module.css | 0 .../ListClansModal}/ListClansModal.tsx | 19 +- .../ui/src/components/Sidebar/SidebarBody.tsx | 13 +- .../src/components/Sidebar/SidebarHeader.tsx | 27 ++- pkgs/clan-app/ui/src/hooks/queries.ts | 2 +- pkgs/clan-app/ui/src/routes/Clan/Clan.tsx | 219 +++++++++--------- .../ui/src/routes/Onboarding/Onboarding.tsx | 2 +- 7 files changed, 160 insertions(+), 122 deletions(-) rename pkgs/clan-app/ui/src/{routes/Onboarding => components/ListClansModal}/ListClansModal.module.css (100%) rename pkgs/clan-app/ui/src/{routes/Onboarding => components/ListClansModal}/ListClansModal.tsx (84%) diff --git a/pkgs/clan-app/ui/src/routes/Onboarding/ListClansModal.module.css b/pkgs/clan-app/ui/src/components/ListClansModal/ListClansModal.module.css similarity index 100% rename from pkgs/clan-app/ui/src/routes/Onboarding/ListClansModal.module.css rename to pkgs/clan-app/ui/src/components/ListClansModal/ListClansModal.module.css diff --git a/pkgs/clan-app/ui/src/routes/Onboarding/ListClansModal.tsx b/pkgs/clan-app/ui/src/components/ListClansModal/ListClansModal.tsx similarity index 84% rename from pkgs/clan-app/ui/src/routes/Onboarding/ListClansModal.tsx rename to pkgs/clan-app/ui/src/components/ListClansModal/ListClansModal.tsx index c989fc0b9..7a2a5c711 100644 --- a/pkgs/clan-app/ui/src/routes/Onboarding/ListClansModal.tsx +++ b/pkgs/clan-app/ui/src/components/ListClansModal/ListClansModal.tsx @@ -5,15 +5,20 @@ import { Typography } from "@/src/components/Typography/Typography"; import { Button } from "@/src/components/Button/Button"; import { navigateToClan, navigateToOnboarding } from "@/src/hooks/clan"; import { useNavigate } from "@solidjs/router"; -import { For } from "solid-js"; +import { For, Show } from "solid-js"; import { activeClanURI, clanURIs, setActiveClanURI } from "@/src/stores/clan"; import { useClanListQuery } from "@/src/hooks/queries"; +import { Alert } from "@/src/components/Alert/Alert"; -export interface ClansModalProps { +export interface ListClansModalProps { onClose: () => void; + error?: { + title: string; + description: string; + }; } -export const ListClansModal = (props: ClansModalProps) => { +export const ListClansModal = (props: ListClansModalProps) => { const navigate = useNavigate(); const query = useClanListQuery(clanURIs()); @@ -38,6 +43,14 @@ export const ListClansModal = (props: ClansModalProps) => { class={cx(styles.modal)} >
+ + + +
{ export const SidebarBody = (props: SidebarProps) => { const clanURI = useClanURI(); - const machineList = useMachinesQuery(clanURI); + + const ctx = useContext(ClanContext); + if (!ctx) { + throw new Error("ClanContext not found"); + } const sectionLabels = (props.staticSections || []).map( (section) => section.title, @@ -96,7 +101,7 @@ export const SidebarBody = (props: SidebarProps) => {
@@ -91,7 +100,7 @@ export const SidebarHeader = () => {