_app.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import type { PageProps } from "fresh";
  2. import { define } from "utils/state.ts";
  3. import Modal from "../islands/Modal.tsx";
  4. import Loading from "../islands/Loading.tsx";
  5. import StatusIndicator from "../islands/StatusIndicator.tsx";
  6. export default define.page(({ Component }: PageProps) => {
  7. return (
  8. <html>
  9. <head>
  10. <meta name="theme-color" content="#1e293b" />
  11. <meta name="apple-mobile-web-app-capable" content="yes" />
  12. <meta name="apple-mobile-web-app-status-bar-style" content="default" />
  13. <meta name="apple-mobile-web-app-title" content="Postdown" />
  14. <link rel="apple-touch-icon" href="/icon-192.png" />
  15. <link
  16. href="https://unpkg.com/bootstrap-icons@1.10.4/font/bootstrap-icons.css"
  17. rel="stylesheet"
  18. />
  19. <script
  20. dangerouslySetInnerHTML={{
  21. __html:
  22. `(function(){var t=localStorage.getItem("theme");if(t==="dark"||(!t&&window.matchMedia("(prefers-color-scheme: dark)").matches)){document.documentElement.classList.add("dark")}})()`,
  23. }}
  24. />
  25. </head>
  26. <body className="bg-white dark:bg-gray-900 text-gray-800 dark:text-gray-100 transition-colors">
  27. <StatusIndicator />
  28. <Modal />
  29. <Loading />
  30. <Component />
  31. </body>
  32. </html>
  33. );
  34. });