From 668b596402fe5a17cfb9ed80e0cb08aac3f9e524 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Sun, 20 Jul 2025 10:56:17 +0100 Subject: [PATCH] Updates --- bun.lockb | Bin 216319 -> 217638 bytes components/lib/elements/LinkList.tsx | 1 + .../mdx/markdown/MarkdownEditorDeprecated.tsx | 28 -------------- .../MarkdownEditorSelectorButtons.tsx | 34 +++++------------ components/pages/Home/index.tsx | 1 + layouts/main/(data)/links.tsx | 35 ++++++++---------- layouts/main/(partials)/HeaderLink.tsx | 8 ++-- layouts/main/(sections)/MobileMenu.tsx | 25 ++++++------- layouts/main/Header.tsx | 12 +++--- layouts/main/index.tsx | 4 -- package.json | 1 + pages/404.tsx | 2 + styles/globals.css | 8 ++++ 13 files changed, 59 insertions(+), 100 deletions(-) delete mode 100644 components/lib/mdx/markdown/MarkdownEditorDeprecated.tsx diff --git a/bun.lockb b/bun.lockb index 46b7e53ae7055323fa0415cc56ef5c424623c6a9..1ce9291326d19fb9adf72c8bce24e031a81ce02e 100755 GIT binary patch delta 36993 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 delta 36886 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 C5Yr+6 diff --git a/components/lib/elements/LinkList.tsx b/components/lib/elements/LinkList.tsx index d70b1e8..370e28e 100644 --- a/components/lib/elements/LinkList.tsx +++ b/components/lib/elements/LinkList.tsx @@ -69,6 +69,7 @@ export default function LinkList({ {...props} className={twMerge( "flex flex-row items-center gap-1", + "twui-link-list", props.className )} > diff --git a/components/lib/mdx/markdown/MarkdownEditorDeprecated.tsx b/components/lib/mdx/markdown/MarkdownEditorDeprecated.tsx deleted file mode 100644 index c6079ca..0000000 --- a/components/lib/mdx/markdown/MarkdownEditorDeprecated.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import MDEditor from "@uiw/react-md-editor"; -import rehypeSanitize from "rehype-sanitize"; -import React from "react"; -import remarkGfm from "remark-gfm"; -import rehypePrismPlus from "rehype-prism-plus"; -import ReactDOM from "react-dom"; - -export default function MarkdownEditor() { - const [value, setValue] = React.useState( - `**Hello world!!!** ` - ); - - React.useEffect(() => { - console.log("value", value); - }, [value]); - - return ReactDOM.createPortal( - , - document.getElementById("markdown-modal-root") as HTMLElement - ); -} diff --git a/components/lib/mdx/markdown/MarkdownEditorSelectorButtons.tsx b/components/lib/mdx/markdown/MarkdownEditorSelectorButtons.tsx index 5a1ae69..619a119 100644 --- a/components/lib/mdx/markdown/MarkdownEditorSelectorButtons.tsx +++ b/components/lib/mdx/markdown/MarkdownEditorSelectorButtons.tsx @@ -1,7 +1,6 @@ import React from "react"; import Button from "../../layout/Button"; import Border from "../../elements/Border"; -import { LocalStorageDict } from "@/package-shared/dict/local-storage-dict"; type Props = { preview: boolean; @@ -18,45 +17,30 @@ export default function MarkdownEditorSelectorButtons({ }: Props) { const [ready, setReady] = React.useState(false); + const defSbsName = "TWUIMarkdownEditorDefaultSideBySide"; + const defPrevName = "TWUIMarkdownEditorDefaultPreview"; + React.useEffect(() => { if (!ready) return; if (sideBySide) { - localStorage.setItem( - LocalStorageDict["MarkdownEditorDefaultSideBySide"], - "true" - ); + localStorage.setItem(defSbsName, "true"); } else { - localStorage.removeItem( - LocalStorageDict["MarkdownEditorDefaultSideBySide"] - ); + localStorage.removeItem(defSbsName); } if (preview) { - localStorage.setItem( - LocalStorageDict["MarkdownEditorDefaultPreview"], - "true" - ); + localStorage.setItem(defPrevName, "true"); } else { - localStorage.removeItem( - LocalStorageDict["MarkdownEditorDefaultPreview"] - ); + localStorage.removeItem(defPrevName); } }, [sideBySide, preview, ready]); React.useEffect(() => { - if ( - localStorage.getItem( - LocalStorageDict["MarkdownEditorDefaultPreview"] - ) - ) { + if (localStorage.getItem(defPrevName)) { setPreview(true); } - if ( - !localStorage.getItem( - LocalStorageDict["MarkdownEditorDefaultSideBySide"] - ) - ) { + if (!localStorage.getItem(defSbsName)) { setSideBySide(false); } diff --git a/components/pages/Home/index.tsx b/components/pages/Home/index.tsx index 6b2162e..efbddd4 100644 --- a/components/pages/Home/index.tsx +++ b/components/pages/Home/index.tsx @@ -17,6 +17,7 @@ export default function Main() { - + - {HeaderLinks.map((link, index) => { - return ( - - - {index < HeaderLinks.length - 1 && } - - ); - })} + - - + + {SocialLinks.map((link, index) => { return ; })} diff --git a/layouts/main/Header.tsx b/layouts/main/Header.tsx index 2ff5ec5..2403675 100644 --- a/layouts/main/Header.tsx +++ b/layouts/main/Header.tsx @@ -1,11 +1,11 @@ import { twMerge } from "tailwind-merge"; import { HeaderLinks } from "./(data)/links"; -import HeaderLink from "./(partials)/HeaderLink"; import Row from "@/components/lib/layout/Row"; import Logo from "@/components/general/Logo"; import { Menu } from "lucide-react"; import Button from "@/components/lib/layout/Button"; import React from "react"; +import LinkList from "@/components/lib/elements/LinkList"; type Props = { menuOpen: boolean; @@ -22,13 +22,15 @@ export default function Header({ menuOpen, setMenuOpen }: Props) { )} > - {HeaderLinks.map((link, index) => { - return ; - })} + - diff --git a/layouts/main/index.tsx b/layouts/main/index.tsx index b16fd94..838c08b 100644 --- a/layouts/main/index.tsx +++ b/layouts/main/index.tsx @@ -1,12 +1,8 @@ -import Main from "@/components/lib/layout/Main"; import React, { PropsWithChildren } from "react"; import Aside from "./Aside"; import Header from "./Header"; import Footer from "./Footer"; import { twMerge } from "tailwind-merge"; -import Stack from "@/components/lib/layout/Stack"; -import { HeaderLinks } from "./(data)/links"; -import HeaderLink from "./(partials)/HeaderLink"; import MobileMenu from "./(sections)/MobileMenu"; type Props = PropsWithChildren & {}; diff --git a/package.json b/package.json index 7ec54ad..0ebbc91 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@moduletrace/datasquirel": "^5.1.0", "@moduletrace/twui": "file:./components/lib", "gray-matter": "^4.0.3", + "html-to-react": "^1.7.0", "lodash": "^4.17.21", "lucide-react": "^0.462.0", "next": "15.0.3", diff --git a/pages/404.tsx b/pages/404.tsx index f9166d5..8af5a58 100644 --- a/pages/404.tsx +++ b/pages/404.tsx @@ -26,12 +26,14 @@ export default function Home() { Page Not Found!