From dbf6351baaeb0e187e8ce1653788c3eba2dc77d7 Mon Sep 17 00:00:00 2001 From: Alan Daniel Date: Mon, 13 Apr 2026 18:33:09 -0400 Subject: [PATCH] Misc UI fixes: markdown improvements, topbar dropdown, file tree hover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix table top spacing by adding flex container to suppress whitespace nodes - Add not-prose to Markdown wrapper to prevent Tailwind Typography overrides - Fix plain code block contrast in light mode with text-foreground - Increase list item gap from 0.5 to 1.5 for better spacing - Add GitHub-flavored alert support (NOTE, TIP, WARNING, etc.) via remark plugin - Wire up topbar more-actions button as dropdown with repo, issue, and X links - Add XLogo brand icon - Improve file tree row hover visibility in dark mode (surface-0 → surface-1) --- .../components/layouts/dashboard-topbar.tsx | 54 +++++++++++++++--- .../src/components/repo/file-tree.tsx | 2 +- apps/dashboard/src/routeTree.gen.ts | 9 +++ packages/icons/src/brand-logos.tsx | 21 +++++++ packages/icons/src/index.ts | 2 +- packages/ui/package.json | 1 + packages/ui/src/components/markdown.tsx | 15 ++--- packages/ui/src/styles/globals.css | 56 +++++++++++++++++++ pnpm-lock.yaml | 11 ++++ 9 files changed, 155 insertions(+), 16 deletions(-) diff --git a/apps/dashboard/src/components/layouts/dashboard-topbar.tsx b/apps/dashboard/src/components/layouts/dashboard-topbar.tsx index 95fb86b..9a14c26 100644 --- a/apps/dashboard/src/components/layouts/dashboard-topbar.tsx +++ b/apps/dashboard/src/components/layouts/dashboard-topbar.tsx @@ -1,4 +1,6 @@ import { + BugIcon, + ExternalLinkIcon, GitPullRequestIcon, HomeIcon, IssuesIcon, @@ -7,6 +9,7 @@ import { ReviewsIcon, SettingsIcon, UserCircleIcon, + XLogo, } from "@diffkit/icons"; import { Avatar, AvatarFallback } from "@diffkit/ui/components/avatar"; import { Button } from "@diffkit/ui/components/button"; @@ -300,13 +303,50 @@ export function DashboardTopbar({
-
); diff --git a/apps/dashboard/src/components/repo/file-tree.tsx b/apps/dashboard/src/components/repo/file-tree.tsx index d2a221d..5614284 100644 --- a/apps/dashboard/src/components/repo/file-tree.tsx +++ b/apps/dashboard/src/components/repo/file-tree.tsx @@ -29,7 +29,7 @@ function FileTreeRow({ return (
diff --git a/apps/dashboard/src/routeTree.gen.ts b/apps/dashboard/src/routeTree.gen.ts index a118f40..5014470 100644 --- a/apps/dashboard/src/routeTree.gen.ts +++ b/apps/dashboard/src/routeTree.gen.ts @@ -583,3 +583,12 @@ const rootRouteChildren: RootRouteChildren = { export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) ._addFileTypes() + +import type { getRouter } from './router.tsx' +import type { createStart } from '@tanstack/react-start' +declare module '@tanstack/react-start' { + interface Register { + ssr: true + router: Awaited> + } +} diff --git a/packages/icons/src/brand-logos.tsx b/packages/icons/src/brand-logos.tsx index d3305eb..f5b085e 100644 --- a/packages/icons/src/brand-logos.tsx +++ b/packages/icons/src/brand-logos.tsx @@ -31,6 +31,27 @@ export function GitHubLogo(props: React.ComponentProps<"svg">) { ); } +export function XLogo(props: React.ComponentProps<"svg">) { + const { className, ...rest } = props; + + return ( + + ); +} + export function GitHubWordmarkLogo(props: React.ComponentProps<"svg">) { const { className, ...rest } = props; diff --git a/packages/icons/src/index.ts b/packages/icons/src/index.ts index c375ec0..3fc4608 100644 --- a/packages/icons/src/index.ts +++ b/packages/icons/src/index.ts @@ -68,6 +68,6 @@ export { ViewIcon, WifiDisconnected01Icon as WifiOffIcon, } from "@hugeicons/react"; -export { GitHubLogo, GitHubWordmarkLogo } from "./brand-logos"; +export { GitHubLogo, GitHubWordmarkLogo, XLogo } from "./brand-logos"; export { PenIcon } from "./pen-icon"; export { SeparatorHorizontalIcon } from "./separator-horizontal-icon"; diff --git a/packages/ui/package.json b/packages/ui/package.json index 1f184b4..e31b0be 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -48,6 +48,7 @@ "react-resizable-panels": "^3.0.3", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", + "remark-github-blockquote-alert": "^2.1.0", "shiki": "^4.0.2", "sonner": "^2.0.1", "tailwind-merge": "^3.3.0", diff --git a/packages/ui/src/components/markdown.tsx b/packages/ui/src/components/markdown.tsx index 8e85839..5f5788c 100644 --- a/packages/ui/src/components/markdown.tsx +++ b/packages/ui/src/components/markdown.tsx @@ -2,6 +2,7 @@ import { Md } from "@m2d/react-markdown/client"; import { Suspense, use, useCallback, useRef, useState } from "react"; import rehypeRaw from "rehype-raw"; import remarkGfm from "remark-gfm"; +import { remarkAlert } from "remark-github-blockquote-alert"; import type { BundledLanguage, Highlighter } from "shiki"; import { vercelDark, vercelLight } from "../lib/shiki-themes"; import { cn } from "../lib/utils"; @@ -140,7 +141,7 @@ function ShikiCode({ code, lang }: { code: string; lang: string }) { -
+					
 						{code}
 					
@@ -200,7 +201,7 @@ const components: Record> = { ), ul: ({ node: _, children, ...props }) => (