app.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import "@/index.css"
  2. import { Router, Route, Navigate } from "@solidjs/router"
  3. import { MetaProvider } from "@solidjs/meta"
  4. import { Font } from "@opencode-ai/ui/font"
  5. import { MarkedProvider } from "@opencode-ai/ui/context/marked"
  6. import { DiffComponentProvider } from "@opencode-ai/ui/context/diff"
  7. import { Diff } from "@opencode-ai/ui/diff"
  8. import { GlobalSyncProvider } from "./context/global-sync"
  9. import Layout from "@/pages/layout"
  10. import Home from "@/pages/home"
  11. import DirectoryLayout from "@/pages/directory-layout"
  12. import Session from "@/pages/session"
  13. import { LayoutProvider } from "./context/layout"
  14. import { GlobalSDKProvider } from "./context/global-sdk"
  15. import { SessionProvider } from "./context/session"
  16. import { Show } from "solid-js"
  17. const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1"
  18. const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"
  19. const url =
  20. new URLSearchParams(document.location.search).get("url") ||
  21. (location.hostname.includes("opencode.ai") || location.hostname.includes("localhost")
  22. ? `http://${host}:${port}`
  23. : "/")
  24. export function App() {
  25. return (
  26. <MarkedProvider>
  27. <DiffComponentProvider component={Diff}>
  28. <GlobalSDKProvider url={url}>
  29. <GlobalSyncProvider>
  30. <LayoutProvider>
  31. <MetaProvider>
  32. <Font />
  33. <Router root={Layout}>
  34. <Route path="/" component={Home} />
  35. <Route path="/:dir" component={DirectoryLayout}>
  36. <Route path="/" component={() => <Navigate href="session" />} />
  37. <Route
  38. path="/session/:id?"
  39. component={(p) => (
  40. <Show when={p.params.id || true} keyed>
  41. <SessionProvider>
  42. <Session />
  43. </SessionProvider>
  44. </Show>
  45. )}
  46. />
  47. </Route>
  48. </Router>
  49. </MetaProvider>
  50. </LayoutProvider>
  51. </GlobalSyncProvider>
  52. </GlobalSDKProvider>
  53. </DiffComponentProvider>
  54. </MarkedProvider>
  55. )
  56. }