wip(desktop): progress

This commit is contained in:
Adam 2025-12-14 12:51:36 -06:00
parent 2613f44961
commit 7ade6d386d
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75
4 changed files with 42 additions and 34 deletions

View file

@ -1,20 +1,21 @@
import "@/index.css"
import { Show } from "solid-js"
import { Router, Route, Navigate } from "@solidjs/router"
import { MetaProvider } from "@solidjs/meta"
import { Font } from "@opencode-ai/ui/font"
import { MarkedProvider } from "@opencode-ai/ui/context/marked"
import { DiffComponentProvider } from "@opencode-ai/ui/context/diff"
import { Diff } from "@opencode-ai/ui/diff"
import { GlobalSyncProvider } from "./context/global-sync"
import { GlobalSyncProvider } from "@/context/global-sync"
import { LayoutProvider } from "@/context/layout"
import { GlobalSDKProvider } from "@/context/global-sdk"
import { SessionProvider } from "@/context/session"
import { NotificationProvider } from "@/context/notification"
import { DialogProvider } from "@/context/dialog"
import Layout from "@/pages/layout"
import Home from "@/pages/home"
import DirectoryLayout from "@/pages/directory-layout"
import Session from "@/pages/session"
import { LayoutProvider } from "./context/layout"
import { GlobalSDKProvider } from "./context/global-sdk"
import { SessionProvider } from "./context/session"
import { Show } from "solid-js"
import { NotificationProvider } from "./context/notification"
declare global {
interface Window {
@ -38,27 +39,29 @@ export function App() {
<GlobalSDKProvider url={url}>
<GlobalSyncProvider>
<LayoutProvider>
<NotificationProvider>
<MetaProvider>
<Font />
<Router root={Layout}>
<Route path="/" component={Home} />
<Route path="/:dir" component={DirectoryLayout}>
<Route path="/" component={() => <Navigate href="session" />} />
<Route
path="/session/:id?"
component={(p) => (
<Show when={p.params.id || true} keyed>
<SessionProvider>
<Session />
</SessionProvider>
</Show>
)}
/>
</Route>
</Router>
</MetaProvider>
</NotificationProvider>
<DialogProvider>
<NotificationProvider>
<MetaProvider>
<Font />
<Router root={Layout}>
<Route path="/" component={Home} />
<Route path="/:dir" component={DirectoryLayout}>
<Route path="/" component={() => <Navigate href="session" />} />
<Route
path="/session/:id?"
component={(p) => (
<Show when={p.params.id || true} keyed>
<SessionProvider>
<Session />
</SessionProvider>
</Show>
)}
/>
</Route>
</Router>
</MetaProvider>
</NotificationProvider>
</DialogProvider>
</LayoutProvider>
</GlobalSyncProvider>
</GlobalSDKProvider>

View file

@ -6,7 +6,7 @@ import { LocalProvider } from "@/context/local"
import { base64Decode } from "@opencode-ai/util/encode"
import { DataProvider } from "@opencode-ai/ui/context"
import { iife } from "@opencode-ai/util/iife"
import { DialogProvider, DialogRoot } from "@/context/dialog"
import { DialogRoot } from "@/context/dialog"
export default function Layout(props: ParentProps) {
const params = useParams()
@ -22,9 +22,7 @@ export default function Layout(props: ParentProps) {
return (
<DataProvider data={sync.data} directory={directory()}>
<LocalProvider>
<DialogProvider>
<DialogRoot>{props.children}</DialogRoot>
</DialogProvider>
<DialogRoot>{props.children}</DialogRoot>
</LocalProvider>
</DataProvider>
)

View file

@ -33,6 +33,8 @@ import { useGlobalSDK } from "@/context/global-sdk"
import { useNotification } from "@/context/notification"
import { Binary } from "@opencode-ai/util/binary"
import { Header } from "@/components/header"
import { useDialog } from "@/context/dialog"
import { DialogSelectProvider } from "@/components/dialog-select-provider"
export default function Layout(props: ParentProps) {
const [store, setStore] = createStore({
@ -48,6 +50,11 @@ export default function Layout(props: ParentProps) {
const notification = useNotification()
const navigate = useNavigate()
const providers = useProviders()
const dialog = useDialog()
function connectProvider() {
dialog.replace(() => <DialogSelectProvider />)
}
function navigateToProject(directory: string | undefined) {
if (!directory) return
@ -488,7 +495,7 @@ export default function Layout(props: ParentProps) {
class="flex w-full text-left justify-start text-12-medium text-text-strong stroke-[1.5px] rounded-lg rounded-t-none shadow-none border-t border-border-weak-base pl-2.25 pb-px"
size="large"
icon="plus"
// onClick={connectProvider}
onClick={connectProvider}
>
<Show when={layout.sidebar.opened()}>Connect provider</Show>
</Button>
@ -502,7 +509,7 @@ export default function Layout(props: ParentProps) {
variant="ghost"
size="large"
icon="plus"
// onClick={connectProvider}
onClick={connectProvider}
>
<Show when={layout.sidebar.opened()}>Connect provider</Show>
</Button>

View file

@ -14,7 +14,7 @@ export interface DialogProps extends DialogRootProps {
classList?: ComponentProps<"div">["classList"]
}
export function DialogRoot(props: DialogProps) {
function DialogRoot(props: DialogProps) {
let trigger!: HTMLElement
const [local, others] = splitProps(props, ["trigger", "class", "classList", "children"])