app.tsx 1.0 KB

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