From 3eb29e2a4632be4d4aed2011475b963f00271e39 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Sat, 9 May 2026 16:48:13 +0100 Subject: [PATCH] feat: page details section and backlinks --- .../public/locales/en-US/translation.json | 15 +- .../src/components/layouts/global/aside.tsx | 5 + .../layouts/global/global-app-shell.tsx | 4 +- .../global/hooks/atoms/sidebar-atom.ts | 1 + .../components/page-verification-modal.tsx | 12 +- .../src/features/editor/full-editor.tsx | 21 +- .../features/editor/styles/editor.module.css | 12 + .../components/backlinks-list.tsx | 113 +++++++++ .../components/backlinks-modal.tsx | 62 +++++ .../components/page-details-aside.tsx | 233 ++++++++++++++++++ .../page-details/queries/backlinks-query.ts | 45 ++++ .../services/backlinks-service.ts | 26 ++ .../page-details/types/backlink.types.ts | 24 ++ apps/server/src/core/page/dto/backlink.dto.ts | 11 + apps/server/src/core/page/page.controller.ts | 39 +++ apps/server/src/core/page/page.module.ts | 15 +- .../page/services/backlink.service.spec.ts | 163 ++++++++++++ .../core/page/services/backlink.service.ts | 56 +++++ .../database/repos/backlink/backlink.repo.ts | 89 ++++++- packages/editor-ext/src/lib/table/cell.ts | 2 +- packages/editor-ext/src/lib/table/header.ts | 2 +- 21 files changed, 940 insertions(+), 10 deletions(-) create mode 100644 apps/client/src/features/page-details/components/backlinks-list.tsx create mode 100644 apps/client/src/features/page-details/components/backlinks-modal.tsx create mode 100644 apps/client/src/features/page-details/components/page-details-aside.tsx create mode 100644 apps/client/src/features/page-details/queries/backlinks-query.ts create mode 100644 apps/client/src/features/page-details/services/backlinks-service.ts create mode 100644 apps/client/src/features/page-details/types/backlink.types.ts create mode 100644 apps/server/src/core/page/dto/backlink.dto.ts create mode 100644 apps/server/src/core/page/services/backlink.service.spec.ts create mode 100644 apps/server/src/core/page/services/backlink.service.ts diff --git a/apps/client/public/locales/en-US/translation.json b/apps/client/public/locales/en-US/translation.json index f831289b..905fde70 100644 --- a/apps/client/public/locales/en-US/translation.json +++ b/apps/client/public/locales/en-US/translation.json @@ -970,5 +970,18 @@ "Experimental": "Experimental", "Strikethrough": "Strikethrough", "Undo": "Undo", - "Redo": "Redo" + "Redo": "Redo", + "Backlinks": "Backlinks", + "Last updated by": "Last updated by", + "Last updated": "Last updated", + "Stats": "Stats", + "Word count": "Word count", + "Characters": "Characters", + "Incoming links": "Incoming links", + "Outgoing links": "Outgoing links", + "Incoming links ({{count}})": "Incoming links ({{count}})", + "Outgoing links ({{count}})": "Outgoing links ({{count}})", + "No pages link here yet.": "No pages link here yet.", + "This page doesn't link to other pages yet.": "This page doesn't link to other pages yet.", + "Verified until {{date}}": "Verified until {{date}}" } diff --git a/apps/client/src/components/layouts/global/aside.tsx b/apps/client/src/components/layouts/global/aside.tsx index 4f2cf592..73e6a381 100644 --- a/apps/client/src/components/layouts/global/aside.tsx +++ b/apps/client/src/components/layouts/global/aside.tsx @@ -8,6 +8,7 @@ import { TableOfContents } from "@/features/editor/components/table-of-contents/ import { useAtomValue } from "jotai"; import { pageEditorAtom } from "@/features/editor/atoms/editor-atoms.ts"; import AsideChatPanel from "@/ee/ai-chat/components/aside-chat-panel"; +import { PageDetailsAside } from "@/features/page-details/components/page-details-aside.tsx"; export default function Aside() { const [{ tab }] = useAtom(asideStateAtom); @@ -30,6 +31,10 @@ export default function Aside() { component = ; title = "AI Chat"; break; + case "details": + component = ; + title = "Details"; + break; default: component = null; title = null; diff --git a/apps/client/src/components/layouts/global/global-app-shell.tsx b/apps/client/src/components/layouts/global/global-app-shell.tsx index d3d9ebcd..4c56fe07 100644 --- a/apps/client/src/components/layouts/global/global-app-shell.tsx +++ b/apps/client/src/components/layouts/global/global-app-shell.tsx @@ -147,7 +147,9 @@ export default function GlobalAppShell({ ? t("Table of contents") : asideTab === "chat" ? t("AI Chat") - : undefined + : asideTab === "details" + ? t("Details") + : undefined } >