| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { createApp } from "vue";
- import App from "./App.vue";
- import "@/styles/tailwind.css";
- import "@/styles/style.css";
- import Toast from "vue-toastification";
- import "vue-toastification/dist/index.css";
- import { router } from "./router/index.js";
- const appEl = document.getElementById("app");
- function mostrarErroInicial(err) {
- if (!appEl) return;
- if (appEl.dataset.mounted === "1") return;
- const msg = typeof err === "string" ? err : err?.message || String(err || "erro");
- appEl.textContent = `Erro ao iniciar: ${msg}`;
- }
- window.addEventListener("error", (e) => mostrarErroInicial(e?.error || e?.message));
- window.addEventListener("unhandledrejection", (e) => mostrarErroInicial(e?.reason));
- function aplicarTemaInicial() {
- let salvo = null;
- try {
- salvo = localStorage.getItem("theme");
- } catch {
- salvo = null;
- }
- const tema =
- salvo === "dark" || salvo === "light"
- ? salvo
- : window.matchMedia?.("(prefers-color-scheme: dark)")?.matches
- ? "dark"
- : "light";
- document.documentElement.classList.toggle("dark", tema === "dark");
- }
- aplicarTemaInicial();
- const toastOptions = {
- position: "top-right",
- timeout: 4000,
- closeOnClick: true,
- pauseOnFocusLoss: true,
- pauseOnHover: true,
- draggable: true,
- showCloseButtonOnHover: false,
- hideProgressBar: false,
- closeButton: "button",
- icon: true,
- rtl: false,
- };
- const app = createApp(App);
- app.use(router);
- app.use(Toast, toastOptions);
- app.mount("#app");
- if (appEl) appEl.dataset.mounted = "1";
|