app.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { MetaProvider, Title, Meta } from "@solidjs/meta"
  2. import { Router } from "@solidjs/router"
  3. import { FileRoutes } from "@solidjs/start/router"
  4. import { Suspense } from "solid-js"
  5. import { Favicon } from "@opencode-ai/ui/favicon"
  6. import { Font } from "@opencode-ai/ui/font"
  7. import "@ibm/plex/css/ibm-plex.css"
  8. import "./app.css"
  9. import { LanguageProvider } from "~/context/language"
  10. import { I18nProvider, useI18n } from "~/context/i18n"
  11. import { strip } from "~/lib/language"
  12. function AppMeta() {
  13. const i18n = useI18n()
  14. return (
  15. <>
  16. <Title>opencode</Title>
  17. <Meta name="description" content={i18n.t("app.meta.description")} />
  18. <Favicon />
  19. <Font />
  20. </>
  21. )
  22. }
  23. export default function App() {
  24. return (
  25. <Router
  26. explicitLinks={true}
  27. transformUrl={strip}
  28. root={(props) => (
  29. <LanguageProvider>
  30. <I18nProvider>
  31. <MetaProvider>
  32. <AppMeta />
  33. <Suspense>{props.children}</Suspense>
  34. </MetaProvider>
  35. </I18nProvider>
  36. </LanguageProvider>
  37. )}
  38. >
  39. <FileRoutes />
  40. </Router>
  41. )
  42. }