theme.cljs 968 B

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