theme.cljs 1016 B

123456789101112131415161718192021222324252627282930
  1. (ns frontend.components.theme
  2. (:require [rum.core :as rum]
  3. [frontend.util :as util]
  4. [frontend.handler.route :as route-handler]
  5. [frontend.version :refer [version]]
  6. [frontend.components.svg :as svg]))
  7. (rum/defc container
  8. [{:keys [route theme on-click nfs-granted? db-restoring?] :as props} child]
  9. (rum/use-effect!
  10. #(let [doc js/document.documentElement
  11. cls (.-classList doc)]
  12. (.setAttribute doc "data-theme" (if (= theme "white") "light" theme))
  13. (if (= theme "dark") ;; for tailwind dark mode
  14. (.add cls "dark")
  15. (.remove cls "dark")))
  16. [theme])
  17. (rum/use-effect!
  18. #(let [db-restored? (false? db-restoring?)]
  19. (if db-restoring?
  20. (util/set-title! "Loading")
  21. (when (or nfs-granted? db-restored?)
  22. (route-handler/update-page-title! route))))
  23. [nfs-granted? db-restoring? route])
  24. [:div
  25. {:class (str theme "-theme")
  26. :on-click on-click}
  27. child])