From 990fd692b2baed54cad731725b0b1d12db4c8ccd Mon Sep 17 00:00:00 2001 From: motatoes Date: Thu, 30 Oct 2025 20:37:48 -0700 Subject: [PATCH 1/5] make create modal prettier --- .../_dashboard/dashboard/units.index.tsx | 62 ++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx index 5a83491b9..2d30cf698 100644 --- a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx +++ b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx @@ -1,7 +1,7 @@ import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { createFileRoute, Link } from '@tanstack/react-router' -import { ArrowLeft, Plus, Database, ExternalLink, Lock, Unlock } from 'lucide-react' +import { ArrowLeft, Plus, Database, ExternalLink, Lock, Unlock, Cloud, HardDrive } from 'lucide-react' import { Table, TableBody, @@ -21,6 +21,8 @@ import { } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" +import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" +import { Badge } from "@/components/ui/badge" import { useState } from "react" import { createUnitFn } from "@/api/statesman_serverFunctions" import { listUnitsFn } from '@/api/statesman_serverFunctions' @@ -59,6 +61,7 @@ function CreateUnitModal({ onUnitCreated }: { onUnitCreated: () => void }) { const [unitName, setUnitName] = useState("") const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) + const [unitType, setUnitType] = useState<'local' | 'remote'>("local") const { user, organisationId } = Route.useLoaderData() const handleSubmit = async (e: React.FormEvent) => { @@ -114,6 +117,63 @@ function CreateUnitModal({ onUnitCreated }: { onUnitCreated: () => void }) { /> {error &&

{error}

} +
+ + setUnitType(v as 'local' | 'remote')} + className="mt-3 grid grid-cols-1 gap-3" + > + {/* Local option card */} + + + {/* Remote option card (disabled) */} + + +
+ + + ) + })} + + +
+ +
+ + )} diff --git a/ui/src/routes/index.tsx b/ui/src/routes/index.tsx index 902828965..c21b1395e 100644 --- a/ui/src/routes/index.tsx +++ b/ui/src/routes/index.tsx @@ -1,4 +1,4 @@ -import { createFileRoute } from '@tanstack/react-router'; +import { createFileRoute, redirect } from '@tanstack/react-router'; import { getSignInUrl } from '../authkit/serverFunctions'; import SignInButton from '../components/sign-in-button'; import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '../components/ui/collapsible'; @@ -7,6 +7,9 @@ export const Route = createFileRoute('/')({ component: Home, loader: async ({ context }) => { const { user } = context; + if (user) { + throw redirect({ href: '/dashboard/units' }); + } const url = await getSignInUrl(); return { user, url }; }, diff --git a/ui/src/styles/global.css b/ui/src/styles/global.css index ac6844236..7499bd626 100644 --- a/ui/src/styles/global.css +++ b/ui/src/styles/global.css @@ -92,3 +92,12 @@ body { @apply bg-background text-foreground; } } + +/* Radix Themes / WorkOS widgets: ensure dropdown/poppers render above app chrome */ +[data-radix-popper-content-wrapper] { + z-index: 9999 !important; +} +.rt-PopperContent, +.rt-DropdownMenuContent { + z-index: 9999 !important; +} From 68307e547dc89c121e4a50d02b0f0a0f5b9984e4 Mon Sep 17 00:00:00 2001 From: motatoes Date: Fri, 31 Oct 2025 12:09:10 -0700 Subject: [PATCH 3/5] redirect to unit details on creation --- .../_authenticated/_dashboard/dashboard/units.index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx index 2d30cf698..f032319ed 100644 --- a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx +++ b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx @@ -1,6 +1,6 @@ import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { createFileRoute, Link } from '@tanstack/react-router' +import { createFileRoute, Link, useRouter } from '@tanstack/react-router' import { ArrowLeft, Plus, Database, ExternalLink, Lock, Unlock, Cloud, HardDrive } from 'lucide-react' import { Table, @@ -192,11 +192,15 @@ function RouteComponent() { const { unitsData, organisationId, user } = Route.useLoaderData() const [units, setUnits] = useState(unitsData?.units || []) const navigate = Route.useNavigate() - + const router = useRouter() + async function handleUnitCreated() { const unitsData = await listUnitsFn({data: {organisationId: organisationId, userId: user?.id || '', email: user?.email || ''}}) setUnits(unitsData.units) + navigate({ to: '/dashboard/units/$unitId', params: { unitId: unitsData.units[0].id } }) + router.invalidate() } + return (<>
From 59e245d8b67d4fed4ca97a09099c4dfa0ad083c2 Mon Sep 17 00:00:00 2001 From: motatoes Date: Fri, 31 Oct 2025 12:11:47 -0700 Subject: [PATCH 4/5] add last updated --- .../_authenticated/_dashboard/dashboard/units.$unitId.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/routes/_authenticated/_dashboard/dashboard/units.$unitId.tsx b/ui/src/routes/_authenticated/_dashboard/dashboard/units.$unitId.tsx index ee533d6a0..11270810a 100644 --- a/ui/src/routes/_authenticated/_dashboard/dashboard/units.$unitId.tsx +++ b/ui/src/routes/_authenticated/_dashboard/dashboard/units.$unitId.tsx @@ -316,7 +316,7 @@ function RouteComponent() { ID: {unit.id} - Version {unit.version} • Last updated {formatDate(unit.updated)} • {formatBytes(unit.size)} + Last updated {formatDate(unit.updated)} • {formatBytes(unit.size)} From 8125ec9bc8baab24013b4e293a22cbd0fa761086 Mon Sep 17 00:00:00 2001 From: motatoes Date: Fri, 31 Oct 2025 14:58:05 -0700 Subject: [PATCH 5/5] actually we dont want to redirect --- .../routes/_authenticated/_dashboard/dashboard/units.index.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx index f032319ed..f952f928d 100644 --- a/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx +++ b/ui/src/routes/_authenticated/_dashboard/dashboard/units.index.tsx @@ -197,8 +197,6 @@ function RouteComponent() { async function handleUnitCreated() { const unitsData = await listUnitsFn({data: {organisationId: organisationId, userId: user?.id || '', email: user?.email || ''}}) setUnits(unitsData.units) - navigate({ to: '/dashboard/units/$unitId', params: { unitId: unitsData.units[0].id } }) - router.invalidate() } return (<>