From 98efb76f7b2420bda8ef31ce5a73fb3080b955d2 Mon Sep 17 00:00:00 2001 From: lexx Date: Wed, 6 May 2026 23:16:09 +0300 Subject: [PATCH] removed blade and htmx --- front/js/bootstrap.js | 51 ----------- front/js/helpers.js | 89 +++++++++++++------ front/js/main.js | 62 ++++++------- front/js/svelte/Account.svelte | 11 +-- front/js/svelte/account/Login.svelte | 88 ++++++++++-------- front/js/svelte/account/Verify.svelte | 51 ++++++----- front/js/svelte/common/SpinnerButton.svelte | 16 ++-- front/js/svelte/home/Index.svelte | 13 ++- front/js/svelte/home/RecordRow.svelte | 1 - front/js/svelte/setup/Index.svelte | 24 +++-- front/views/auth/login-success.blade.php | 9 -- front/views/auth/login.blade.php | 37 -------- front/views/auth/verify.blade.php | 24 ----- front/views/components/avatar.blade.php | 43 --------- .../components/button-indicator.blade.php | 4 - front/views/components/notice.blade.php | 4 - front/views/forms/errors.blade.php | 9 -- front/views/home.blade.php | 23 ----- front/views/includes/header.blade.php | 21 ----- front/views/layouts/account.blade.php | 1 - front/views/records/card-row.blade.php | 33 ------- front/views/sidebar/sidebar-item.blade.php | 7 -- front/views/sidebar/sidebar.blade.php | 22 ----- src/Account/AuthServiceLucent.php | 13 ++- src/Account/UserRepo.php | 2 +- src/Account/UserRepoLucent.php | 2 +- src/Account/UserRepoLunar.php | 2 +- src/Http/Controller/AuthController.php | 27 ++++-- src/Http/Controller/HomeController.php | 1 - src/LucentServiceProvider.php | 6 +- src/Svelte/Svelte.php | 4 +- 31 files changed, 235 insertions(+), 465 deletions(-) delete mode 100644 front/js/bootstrap.js delete mode 100644 front/views/auth/login-success.blade.php delete mode 100644 front/views/auth/login.blade.php delete mode 100644 front/views/auth/verify.blade.php delete mode 100644 front/views/components/avatar.blade.php delete mode 100644 front/views/components/button-indicator.blade.php delete mode 100644 front/views/components/notice.blade.php delete mode 100644 front/views/forms/errors.blade.php delete mode 100644 front/views/home.blade.php delete mode 100644 front/views/includes/header.blade.php delete mode 100644 front/views/records/card-row.blade.php delete mode 100644 front/views/sidebar/sidebar-item.blade.php delete mode 100644 front/views/sidebar/sidebar.blade.php diff --git a/front/js/bootstrap.js b/front/js/bootstrap.js deleted file mode 100644 index f5cffd7..0000000 --- a/front/js/bootstrap.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * We'll load the axios HTTP library which allows us to easily issue requests - * to our Laravel back-end. This library automatically handles sending the - * CSRF token as a header based on the value of the "XSRF" token cookie. - */ - -import axios from "axios"; -import {loadHtmxFormsBehaviour} from "./htmx-form.js"; - -loadHtmxFormsBehaviour(); -window.axios = axios; -export const axiosInstance = axios; - -window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; -window.axios.interceptors.request.use( - function (config) { - let list; - list = document.querySelectorAll(".btn-spinner"); - for (let i = 0; i < list.length; ++i) { - list[i].classList.add("spinner-on"); - list[i].disabled = true; - } - - return config; - }, - function (error) { - return Promise.reject(error); - } -); - -window.axios.interceptors.response.use( - function (response) { - let list; - list = document.querySelectorAll(".btn-spinner"); - for (let i = 0; i < list.length; ++i) { - list[i].classList.remove("spinner-on"); - list[i].disabled = false; - } - return response; - }, - function (error) { - let list; - list = document.querySelectorAll(".btn-spinner"); - for (let i = 0; i < list.length; ++i) { - list[i].classList.remove("spinner-on"); - list[i].disabled = false; - } - return Promise.reject(error); - } -); - diff --git a/front/js/helpers.js b/front/js/helpers.js index 63aafea..4fb5427 100644 --- a/front/js/helpers.js +++ b/front/js/helpers.js @@ -1,52 +1,83 @@ -import {formatDistanceToNow, parseJSON, format, parse} from "date-fns"; +import { formatDistanceToNow, parseJSON, format, parse } from "date-fns"; export function friendlyDate(date) { - return formatDistanceToNow(parseJSON(date), {addSuffix: true}); + return formatDistanceToNow(parseJSON(date), { addSuffix: true }); } export function readableDate(date) { - if(!date){ - return ""; - } - return format(parseJSON(date), "dd MMM yyyy"); + if (!date) { + return ""; + } + return format(parseJSON(date), "dd MMM yyyy"); } export function readableDatetime(date) { - if(!date){ - return ""; - } + if (!date) { + return ""; + } - return format(parseJSON(date), "dd MMM yyyy HH:mm"); + return format(parseJSON(date), "dd MMM yyyy HH:mm"); } - export function stripHtml(html = "") { - let tmp = document.createElement("div"); - tmp.innerHTML = html; - return tmp.textContent || tmp.innerText || ""; + let tmp = document.createElement("div"); + tmp.innerHTML = html; + return tmp.textContent || tmp.innerText || ""; } - export function randomId(length = 10) { - return Math.random().toString(36).substring(2, length + 2); + return Math.random() + .toString(36) + .substring(2, length + 2); } export function clickOutside(node) { - - const handleClick = event => { - if (node && !node.contains(event.target) && !event.defaultPrevented) { - node.dispatchEvent( - new CustomEvent('click_outside', node) - ) - } + const handleClick = (event) => { + if (node && !node.contains(event.target) && !event.defaultPrevented) { + node.dispatchEvent(new CustomEvent("click_outside", node)); } + }; - document.addEventListener('click', handleClick, true); + document.addEventListener("click", handleClick, true); - return { - destroy() { - document.removeEventListener('click', handleClick, true); - } - } + return { + destroy() { + document.removeEventListener("click", handleClick, true); + }, + }; } +export function apiFetch(url, options = {}) { + return fetch(url, { + ...options, + headers: { + "Content-Type": "application/json", + "X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content, + ...options.headers, + }, + }); +} + +export function apiPost(url, body, options = {}) { + return fetch(url, { + ...options, + method: "POST", + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + "X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content, + ...options.headers, + }, + }); +} + +export function apiGet(url, options = {}) { + return fetch(url, { + ...options, + method: "GET", + headers: { + "X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').content, + ...options.headers, + }, + }).then((r) => r.json()); +} diff --git a/front/js/main.js b/front/js/main.js index 9df4b5d..59954a0 100644 --- a/front/js/main.js +++ b/front/js/main.js @@ -1,53 +1,47 @@ -import {axiosInstance} from "./bootstrap"; import "../sass/app.scss"; import Account from "./svelte/Account.svelte"; import Channel from "./svelte/Channel.svelte"; -import Mustache from "mustache"; -import 'htmx.org'; - -Mustache.escape = function (value) { - return value; -}; +// import Mustache from "mustache"; +// Mustache.escape = function (value) { +// return value; +// }; // Define all components const entryComponents = { - account: Account, - channel: Channel, + account: Account, + channel: Channel, }; let loadedComponents = []; let loadSvelte = function () { - loadedComponents.map((comp) => comp.$destroy()); - loadedComponents = []; + loadedComponents.map((comp) => comp.$destroy()); + loadedComponents = []; - const elements = document.body.querySelectorAll(".lucent-component"); - if (elements.length === 0) { - return; + const elements = document.body.querySelectorAll(".lucent-component"); + if (elements.length === 0) { + return; + } + const loadElement = function (element) { + const componentId = element.attributes["data-layout"].value; + const [_, component] = Object.entries(entryComponents).find( + ([key, _]) => componentId === key, + ); + if (!component) { + return []; } - const loadElement = function (element) { - const componentId = element.attributes["data-layout"].value; - const [_, component] = Object.entries(entryComponents).find( - ([key, _]) => componentId === key - ); - if (!component) { - return []; - } - const jsonData = document.getElementById( - "json-" + componentId - ).innerHTML; - const props = JSON.parse(jsonData); - props.axios = axiosInstance; - const compOptions = { - target: element, - props: props, - }; - - loadedComponents = [...loadedComponents, new component(compOptions)]; + const jsonData = document.getElementById("json-" + componentId).innerHTML; + const props = JSON.parse(jsonData); + const compOptions = { + target: element, + props: props, }; - Array.from(elements).map(loadElement); + + loadedComponents = [...loadedComponents, new component(compOptions)]; + }; + Array.from(elements).map(loadElement); }; // document.addEventListener("turbo:load", loadSvelte); diff --git a/front/js/svelte/Account.svelte b/front/js/svelte/Account.svelte index 09cf17c..d6eabe3 100644 --- a/front/js/svelte/Account.svelte +++ b/front/js/svelte/Account.svelte @@ -4,7 +4,7 @@ import Verify from "./account/Verify.svelte"; import Profile from "./account/Profile.svelte"; import SetupIndex from "./setup/Index.svelte"; - import {setContext} from "svelte"; + import { setContext } from "svelte"; const components = { register: Register, @@ -23,10 +23,7 @@ setContext("channel", channel); setContext("user", user); -
-

{channel.name ?? "Lucent Setup"}

-
-
- -
+
+ +
diff --git a/front/js/svelte/account/Login.svelte b/front/js/svelte/account/Login.svelte index 06daacc..6b14401 100644 --- a/front/js/svelte/account/Login.svelte +++ b/front/js/svelte/account/Login.svelte @@ -1,54 +1,68 @@ -
- {#if message} - - - {:else} - -
-
- - +