Files
HKSingleParty/99_references/beacon-main/src/main.tsx
2025-05-28 09:55:51 +08:00

91 lines
2.1 KiB
TypeScript

/**
* @file App entrypoint
*/
// Styles
import "@ionic/react/css/core.css";
import "@ionic/react/css/normalize.css";
import "@ionic/react/css/structure.css";
import "@ionic/react/css/typography.css";
import "@ionic/react/css/padding.css";
import "@ionic/react/css/float-elements.css";
import "@ionic/react/css/text-alignment.css";
import "@ionic/react/css/text-transformation.css";
import "@ionic/react/css/flex-utils.css";
import "@ionic/react/css/display.css";
import "@unocss/reset/tailwind.css";
import "virtual:uno.css";
import "~/theme.css";
import {IonApp, isPlatform, setupIonicReact} from "@ionic/react";
import {IonReactRouter} from "@ionic/react-router";
import {
browserTracingIntegration,
init as sentryInit,
setTags,
} from "@sentry/browser";
import {SupabaseIntegration} from "@supabase/sentry-js-integration";
import {SupabaseClient} from "@supabase/supabase-js";
import {StrictMode} from "react";
import {createRoot} from "react-dom/client";
import {App} from "~/app";
import {
GIT_BRANCH,
GIT_COMMIT,
SENTRY_DSN,
SUPABASE_URL,
VERSION,
} from "~/lib/vars";
// Setup Sentry
if (SENTRY_DSN !== undefined) {
sentryInit({
dsn: SENTRY_DSN,
environment: import.meta.env.MODE,
tracesSampleRate: 1,
integrations: [
new SupabaseIntegration(SupabaseClient, {
tracing: true,
breadcrumbs: true,
errors: true,
}),
browserTracingIntegration({
/**
* Callback to determine if a request should create a span
* @param url Request URL
* @returns Whether a span should be created
*/
shouldCreateSpanForRequest: url =>
!url.startsWith(`${SUPABASE_URL}/rest`),
}),
],
});
setTags({
GIT_BRANCH,
GIT_COMMIT,
VERSION,
});
}
// Setup React
const container = document.getElementById("root");
const root = createRoot(container!);
// Setup Ionic
setupIonicReact({
animated: true,
mode: isPlatform("ios") ? "ios" : "md",
});
root.render(
<StrictMode>
<IonApp>
<IonReactRouter>
<App />
</IonReactRouter>
</IonApp>
</StrictMode>,
);