| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import "@/index.css"
- import { ErrorBoundary, 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 { CodeComponentProvider } from "@opencode-ai/ui/context/code"
- import { Diff } from "@opencode-ai/ui/diff"
- import { Code } from "@opencode-ai/ui/code"
- import { GlobalSyncProvider } from "@/context/global-sync"
- import { LayoutProvider } from "@/context/layout"
- import { GlobalSDKProvider } from "@/context/global-sdk"
- import { TerminalProvider } from "@/context/terminal"
- import { PromptProvider } from "@/context/prompt"
- import { NotificationProvider } from "@/context/notification"
- import { DialogProvider } from "@opencode-ai/ui/context/dialog"
- import { CommandProvider } from "@/context/command"
- import Layout from "@/pages/layout"
- import Home from "@/pages/home"
- import DirectoryLayout from "@/pages/directory-layout"
- import Session from "@/pages/session"
- import { ErrorPage } from "./pages/error"
- import { iife } from "@opencode-ai/util/iife"
- declare global {
- interface Window {
- __OPENCODE__?: { updaterEnabled?: boolean; port?: number }
- }
- }
- const url = iife(() => {
- const param = new URLSearchParams(document.location.search).get("url")
- if (param) return param
- if (location.hostname.includes("opencode.ai")) return "http://localhost:4096"
- if (window.__OPENCODE__) return `http://127.0.0.1:${window.__OPENCODE__.port}`
- if (import.meta.env.DEV)
- return `http://${import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "localhost"}:${import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"}`
- return window.location.origin
- })
- export function App() {
- return (
- <MetaProvider>
- <Font />
- <ErrorBoundary fallback={(error) => <ErrorPage error={error} />}>
- <DialogProvider>
- <MarkedProvider>
- <DiffComponentProvider component={Diff}>
- <CodeComponentProvider component={Code}>
- <GlobalSDKProvider url={url}>
- <GlobalSyncProvider>
- <LayoutProvider>
- <NotificationProvider>
- <Router
- root={(props) => (
- <CommandProvider>
- <Layout>{props.children}</Layout>
- </CommandProvider>
- )}
- >
- <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>
- <TerminalProvider>
- <PromptProvider>
- <Session />
- </PromptProvider>
- </TerminalProvider>
- </Show>
- )}
- />
- </Route>
- </Router>
- </NotificationProvider>
- </LayoutProvider>
- </GlobalSyncProvider>
- </GlobalSDKProvider>
- </CodeComponentProvider>
- </DiffComponentProvider>
- </MarkedProvider>
- </DialogProvider>
- </ErrorBoundary>
- </MetaProvider>
- )
- }
|