ldc-ker-chant/resources/ts/app.tsx
2026-09-09 09:47:55 +02:00

39 lines
1.1 KiB
TypeScript

import { createInertiaApp } from "@inertiajs/react";
import axios from "axios";
import { resolvePageComponent } from "laravel-vite-plugin/inertia-helpers";
import type { ComponentType } from "react";
import { createRoot, hydrateRoot } from "react-dom/client";
type PageComponent = ComponentType<Record<string, unknown>>;
interface PageModule {
default: PageComponent;
}
const appName: string = (import.meta.env as Record<string, string>)
.VITE_APP_NAME;
const appPages = import.meta.glob<PageModule>("./*/Pages/**/*.tsx");
void createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: async (name) => {
const page = await resolvePageComponent<PageModule>(
`./${name}.tsx`,
appPages,
);
return page.default;
},
setup({ el, App, props }) {
if (el.childElementCount > 0) {
hydrateRoot(el, <App {...props} />);
} else {
createRoot(el).render(<App {...props} />);
}
},
progress: {
color: "#4B5563",
},
});
window.axios = axios;
window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";