diff --git a/apps/web/src/components/mobile-workspace/mobile-flow-page.tsx b/apps/web/src/components/mobile-workspace/mobile-flow-page.tsx index 6ad3c6d..9f92ecd 100644 --- a/apps/web/src/components/mobile-workspace/mobile-flow-page.tsx +++ b/apps/web/src/components/mobile-workspace/mobile-flow-page.tsx @@ -16,20 +16,16 @@ export type MobileFlowScreen = | "work-unit-detail"; interface MobileFlowPageProps { - publicDemo?: boolean; screen: MobileFlowScreen; } -export const MobileFlowPage = ({ - publicDemo = false, - screen, -}: MobileFlowPageProps) => { +export const MobileFlowPage = ({ screen }: MobileFlowPageProps) => { const navigate = useNavigate(); const workspace = useMobileWorkspace(); - const homePath = publicDemo ? "/design" : "/"; - const workPath = publicDemo ? "/design/work" : "/work"; - const chatPath = publicDemo ? "/design/chat" : "/chat"; - const detailPath = publicDemo ? "/design/work/flow-08" : "/work/flow-08"; + const homePath = "/"; + const workPath = "/work"; + const chatPath = "/chat"; + const detailPath = "/work/flow-08"; const handleOpenUnit = () => { if (screen === "work-list" && !workspace.expanded) { diff --git a/apps/web/src/routes.ts b/apps/web/src/routes.ts index bbcd50f..0898540 100644 --- a/apps/web/src/routes.ts +++ b/apps/web/src/routes.ts @@ -16,10 +16,4 @@ export default [ route("dashboard", "./routes/app/dashboard/page.tsx"), route("todos", "./routes/app/todos/page.tsx"), ]), - route("design", "./routes/design/layout.tsx", [ - index("./routes/design/page.tsx"), - route("chat", "./routes/design/chat/page.tsx"), - route("work", "./routes/design/work/page.tsx"), - route("work/:workUnitId", "./routes/design/work-unit/page.tsx"), - ]), ] satisfies RouteConfig; diff --git a/apps/web/src/routes/design/chat/page.tsx b/apps/web/src/routes/design/chat/page.tsx deleted file mode 100644 index c1301d7..0000000 --- a/apps/web/src/routes/design/chat/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { MobileFlowPage } from "@/components/mobile-workspace/mobile-flow-page"; - -import type { Route } from "./+types/page"; - -export const meta = (_args: Route.MetaArgs) => [ - { title: "Chat | Zopu" }, - { content: "Chat with Zopu", name: "description" }, -]; - -export default function PublicMobileChatPage() { - return ; -} diff --git a/apps/web/src/routes/design/layout.tsx b/apps/web/src/routes/design/layout.tsx deleted file mode 100644 index df53ece..0000000 --- a/apps/web/src/routes/design/layout.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Outlet } from "react-router"; - -export default function DesignLayout() { - return ( -
- -
- ); -} diff --git a/apps/web/src/routes/design/page.tsx b/apps/web/src/routes/design/page.tsx deleted file mode 100644 index d76a4c3..0000000 --- a/apps/web/src/routes/design/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { MobileFlowPage } from "@/components/mobile-workspace/mobile-flow-page"; - -import type { Route } from "./+types/page"; - -export const meta = (_args: Route.MetaArgs) => [ - { title: "Zopu" }, - { - content: "Review active work and open the next action", - name: "description", - }, -]; - -export default function PublicMobileHomePage() { - return ; -} diff --git a/apps/web/src/routes/design/work-unit/page.tsx b/apps/web/src/routes/design/work-unit/page.tsx deleted file mode 100644 index 6f8d914..0000000 --- a/apps/web/src/routes/design/work-unit/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { MobileFlowPage } from "@/components/mobile-workspace/mobile-flow-page"; - -import type { Route } from "./+types/page"; - -export const meta = (_args: Route.MetaArgs) => [ - { title: "Work unit | Zopu" }, - { - content: "Review the state, next milestone, and activity for a work unit", - name: "description", - }, -]; - -export default function PublicMobileWorkUnitPage() { - return ; -} diff --git a/apps/web/src/routes/design/work/page.tsx b/apps/web/src/routes/design/work/page.tsx deleted file mode 100644 index dcafd8a..0000000 --- a/apps/web/src/routes/design/work/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { MobileFlowPage } from "@/components/mobile-workspace/mobile-flow-page"; - -import type { Route } from "./+types/page"; - -export const meta = (_args: Route.MetaArgs) => [ - { title: "Active work | Zopu" }, - { - content: "Browse active work and expand a work unit in place", - name: "description", - }, -]; - -export default function PublicMobileWorkPage() { - return ; -} diff --git a/packages/ui/src/components/mobile-workspace-screens.tsx b/packages/ui/src/components/mobile-workspace-screens.tsx index 25ff921..6240007 100644 --- a/packages/ui/src/components/mobile-workspace-screens.tsx +++ b/packages/ui/src/components/mobile-workspace-screens.tsx @@ -19,9 +19,6 @@ export type MobileWorkspaceVariant = | "character-pass" | "expanded-work-unit" | "home-expanded-in-place" - | "stacked-final" - | "stacked-final-check" - | "stacked-work-units" | "vertical-work-stack" | "work-units-home"; @@ -50,7 +47,6 @@ const BrandGlyph = ({ className }: { className?: string }) => ( ); interface ProductHeaderProps { - assistant?: boolean; avatar?: boolean; letterLogo?: boolean; onAssistant?: () => void; @@ -59,7 +55,6 @@ interface ProductHeaderProps { } const ProductHeader = ({ - assistant = false, avatar = false, letterLogo = false, onAssistant, @@ -80,29 +75,16 @@ const ProductHeader = ({

{avatar ? ( - <> - {assistant ? ( - - ) : null} - - + ) : ( <> - - -); - -interface FocusStackScreenProps extends ComposerProps { - final: boolean; - letterLogo?: boolean; - onOpen?: () => void; - polishedText?: boolean; -} - -const FocusStackScreen = ({ - final, - letterLogo = false, - onChange, - onOpen, - onSubmit, - polishedText = false, - statusMessage, - value, -}: FocusStackScreenProps) => ( -
- -
-
-
-

- Daily focus -

- {final ? ( - - MON 20 - - ) : null} -
-

- {final - ? "One priority is moving. Two items need attention." - : "You have 4 active work units today."} -

-
-
-
- - RESEARCHING - - WORK-402 -
-
- - BLOCKED - - BUG-12 -
- -
- - - - -
-
- {polishedText ? ( - Polished stacked work-unit reference - ) : null} -
- -
-); - const WorkFeedScreen = ({ onChange, onOpenAssistant, @@ -1147,22 +905,6 @@ export const MobileWorkspaceScreenRenderer = ({ /> ); } - if (variant === "stacked-final" || variant === "stacked-final-check") { - return ( - - ); - } - return ( - - ); + variant satisfies never; + return null; }; diff --git a/packages/ui/src/components/mobile-workspace.tsx b/packages/ui/src/components/mobile-workspace.tsx deleted file mode 100644 index 3febdc2..0000000 --- a/packages/ui/src/components/mobile-workspace.tsx +++ /dev/null @@ -1,937 +0,0 @@ -import { cn } from "@code/ui/lib/utils"; -import { - ArrowLeft, - ArrowUp, - Check, - ChevronRight, - FileText, - Mic, - MoreHorizontal, - Paperclip, - Plus, - Sparkles, - X, -} from "lucide-react"; -import type { - ComponentProps, - FormEvent, - KeyboardEvent, - ReactNode, -} from "react"; - -type WorkUnitTone = "blocked" | "progress" | "ready" | "research"; - -interface WorkUnitSummary { - code: string; - description: string; - id: string; - progress?: number; - status: string; - title: string; - tone: WorkUnitTone; -} - -interface WorkUnitDetail extends WorkUnitSummary { - activity: { - detail: string; - id: string; - title: string; - }[]; - artifacts: number; - currentState: string; - nextMilestone: string; - nextMilestoneDetail: string; - weeklyActivity: number; -} - -const toneClasses: Record< - WorkUnitTone, - { - badge: string; - card: string; - copy: string; - muted: string; - } -> = { - blocked: { - badge: "bg-[#ffe0cf] text-[#c53c08]", - card: "bg-[#fff0e8]", - copy: "text-[#8a2e13]", - muted: "text-[#c68168]", - }, - progress: { - badge: "bg-[#d6e2ff] text-[#315dc0]", - card: "bg-[#e8efff]", - copy: "text-[#14265f]", - muted: "text-[#6e83b4]", - }, - ready: { - badge: "bg-[#dff4e8] text-[#238050]", - card: "bg-[#e8f7ef]", - copy: "text-[#105c35]", - muted: "text-[#61a17e]", - }, - research: { - badge: "bg-[#e7d8ff] text-[#7137ef]", - card: "bg-[#f1e8ff]", - copy: "text-[#3e0b74]", - muted: "text-[#9a7ac5]", - }, -}; - -const MobileWorkspaceHeader = ({ - className, - ...props -}: ComponentProps<"header">) => ( -
-
- Z -
-
-

- Zopu -

-

- 4 active work - units -

-
- - -
-); - -interface MobileCommandComposerProps extends Omit< - ComponentProps<"form">, - "onChange" | "onSubmit" -> { - contextLabel?: string; - hint?: string; - onChange: (value: string) => void; - onSubmit: (event: FormEvent) => void; - placeholder: string; - statusMessage?: string; - value: string; -} - -const handleCommandKeyDown = (event: KeyboardEvent) => { - if ( - event.key === "Enter" && - !event.shiftKey && - !event.nativeEvent.isComposing - ) { - event.preventDefault(); - event.currentTarget.form?.requestSubmit(); - } -}; - -const MobileCommandComposer = ({ - className, - contextLabel, - hint = "Use @ to reference a work unit", - onChange, - onSubmit, - placeholder, - statusMessage, - value, - ...props -}: MobileCommandComposerProps) => ( -