first commit; dx 1.0 beta

This commit is contained in:
2025-11-09 22:35:16 +03:00
commit 4d01725955
153 changed files with 6504 additions and 0 deletions
+134
View File
@@ -0,0 +1,134 @@
import { atom, useAtom } from "jotai";
import { atomWithStorage } from "jotai/utils";
import { useEffect } from "react";
import { lazy } from "react";
import { DengiCaching } from "./trash/dengiCashingSystem";
import { ifstyle } from "./trash/helpers";
import { LoginPage } from "./pages/LoginPage";
import { DX4App } from "./pages/DX4AppPage";
export const API_BASE_URL = "http://192.168.3.10:8321/api.php";
const classIDAtom = atomWithStorage("class-id", "");
const adminAtom = atomWithStorage("admin-id", "");
const pickmeModeAtom = atomWithStorage("pickmeMode", false);
const EditorPage = lazy(() => import("./pages/editor"));
const TestPage = lazy(() => import("./pages/test"));
const dengi_cash = new DengiCaching();
// KATAMAZ DENGI ROUTER 4 PRO MAX ULTIMATE
// 💀💀
// PROS - vrode raboatat,
// too simple, lightweight, stupidly fast
// (beacause you basicly download entire site, lol)
// CONS - shit
function firstPathSegment(path) {
const m = path.match(/^\/?([^/]+)/);
return m ? m[1] : "";
}
const secondPathSegment = (p) => p.replace(/^\/?[^/]+/, "").replace(/^\/+/, "");
const routeAtom = atom("/");
const basePageProps = {
// atoms
classIDAtom,
adminAtom,
routeAtom,
// fucntions
setsetRoute,
secondPathSegment,
ifstyle,
// constants
API_BASE_URL,
// caching
dengi_cash,
// etc
pickmeModeAtom, // <3
};
const pages = {
"/": <LoginPage {...basePageProps} />,
"/app": <DX4App {...basePageProps} />,
"/exit": <ExitPage {...basePageProps} />,
"/editor": <EditorPage {...basePageProps} />,
"/test": <TestPage />,
};
let changeAnchor = true;
let defaultAnchor = document.location.hash.substring(1);
// lol 💀
function setsetRoute(setRoute, path) {
changeAnchor = true;
setRoute(path);
document.location.hash = path;
}
export default function DX4() {
const [route, _setRoute] = useAtom(routeAtom);
useEffect(() => {
if (
document.location.hash &&
document.location.hash.substring(1) !== route
) {
_setRoute(document.location.hash.substring(1));
}
window.addEventListener("load", () => {
if (defaultAnchor == "" || defaultAnchor == "/") {
document.location.hash = defaultAnchor;
}
});
}, [route, _setRoute]);
window.addEventListener("hashchange", () => {
if (document.location.hash == "") {
document.location.hash = "/";
}
if (changeAnchor) {
changeAnchor = false;
return;
}
_setRoute(document.location.hash.substring(1));
});
const page = Object.entries(pages).find(
([key]) => firstPathSegment(key) == firstPathSegment(route)
);
return (
(page ? page[1] : false) || <ERROR404 /> || <div>some shit happened</div>
);
}
export function ERROR404() {
const route = useAtom(routeAtom)[0];
return (
<div className="flex items-center justify-center min-h-screen flex-col gap-10">
<div className="text-6xl font-black bg-gradient-to-r from-red-400 to-pink-300 bg-clip-text text-transparent">
404((((
</div>
<div>{route}</div>
</div>
);
}
export function ExitPage() {
const [_userId, setUserId] = useAtom(classIDAtom);
const setRoute = useAtom(routeAtom)[1];
return (
<div className="w-screen h-screen flex items-center justify-center">
<button
className="w-20 h-20 bg-red-500 rounded-full text-white"
onClick={() => {
setUserId("");
setsetRoute(setRoute, "/");
}}
>
viyti
</button>
</div>
);
}