gear-orders/web/vite/src/main.tsx

95 lines
2.2 KiB
TypeScript
Raw Normal View History

2026-01-10 03:44:55 +00:00
import React from "react";
import ReactDOM from "react-dom/client";
import { createBrowserRouter } from "react-router";
import { RouterProvider } from "react-router/dom";
2026-01-29 21:30:51 +00:00
import {
createTheme,
MantineProvider,
Input,
Paper,
Slider,
} from "@mantine/core";
2026-01-29 22:23:20 +00:00
import { Notifications } from "@mantine/notifications";
2026-01-10 03:44:55 +00:00
import "@mantine/core/styles.css";
2026-01-30 00:36:06 +00:00
import "@mantine/dates/styles.css";
2026-01-29 22:23:20 +00:00
import "@mantine/notifications/styles.css";
2026-01-10 03:44:55 +00:00
import { Dashboard, subsListLoader } from "./Dashboard";
2026-01-29 21:30:51 +00:00
import { SubOrderSets, subOrderSetsLoader } from "./SubOrderSets";
import { OrderSet, orderSetLoader, orderSetAction } from "./OrderSet";
import { UserContextProvider } from "./UserContext";
2026-03-05 17:55:33 +00:00
import { Header } from "./Header";
2026-03-05 19:46:44 +00:00
import { Profile, profileLoader } from "./Profile";
2026-01-10 03:44:55 +00:00
const theme = createTheme({
components: {
InputWrapper: Input.Wrapper.extend({
defaultProps: {
inputWrapperOrder: ["label", "input", "description", "error"],
2026-01-29 21:30:51 +00:00
mb: "xs",
2026-01-10 03:44:55 +00:00
},
}),
2026-01-29 21:30:51 +00:00
Paper: Paper.extend({
defaultProps: {
p: "sm",
shadow: "xs",
mb: "lg",
},
}),
Slider: Slider.extend({
vars: (theme) =>
({
root: {
"--slider-track-bg": theme.colors.gray[4],
},
2026-01-29 22:23:20 +00:00
}) as any,
2026-01-29 21:30:51 +00:00
}),
2026-01-10 03:44:55 +00:00
},
});
const router = createBrowserRouter([
{
2026-03-05 17:55:33 +00:00
path: "/",
Component: Header,
children: [
{
path: "dashboard",
Component: Dashboard,
loader: subsListLoader,
},
{
path: "profile",
Component: Profile,
2026-03-05 19:46:44 +00:00
loader: profileLoader,
2026-03-05 17:55:33 +00:00
},
{
path: "orders/:username",
Component: SubOrderSets,
loader: subOrderSetsLoader,
},
{
path: "orders/:username/new",
Component: OrderSet,
},
{
path: "orders/:username/:set_id",
Component: OrderSet,
loader: orderSetLoader,
action: orderSetAction,
},
],
2026-01-10 03:44:55 +00:00
},
]);
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<MantineProvider theme={theme}>
<UserContextProvider>
<Notifications />
<RouterProvider router={router} />
</UserContextProvider>
2026-01-10 03:44:55 +00:00
</MantineProvider>
2026-01-29 22:23:20 +00:00
</React.StrictMode>,
2026-01-10 03:44:55 +00:00
);