From 0daa2180721edc3ca801597d73b2aa853fdda5f0 Mon Sep 17 00:00:00 2001 From: Francisco Pessano <76450203+FranP-code@users.noreply.github.com> Date: Sun, 13 Jul 2025 20:34:08 -0300 Subject: [PATCH] Fix table alignment and text overflow issues --- astro-app/src/components/ProjectsTable.tsx | 66 +++++++++++----------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/astro-app/src/components/ProjectsTable.tsx b/astro-app/src/components/ProjectsTable.tsx index c7d977b..cd14d60 100644 --- a/astro-app/src/components/ProjectsTable.tsx +++ b/astro-app/src/components/ProjectsTable.tsx @@ -50,17 +50,17 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project ), cell: ({ row }) => ( -
+
{row.original.author_name.charAt(0).toUpperCase()}
-
{row.original.author_name}
-
@{row.original.author_screen_name}
+
{row.original.author_name}
+
@{row.original.author_screen_name}
), - size: 200, + size: 240, }), columnHelper.accessor('project_description', { header: ({ column }) => ( @@ -80,17 +80,17 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project ), cell: ({ row }) => ( -
-

{row.original.project_description}

+
+

{row.original.project_description}

), - size: 350, + size: 400, }), ...(showUrlColumn ? [ columnHelper.accessor('project_url', { header: 'Project', cell: ({ row }) => ( -
+
{row.original.project_url ? ( ( -
+
{row.original.media_thumbnail ? ( ) : (
- No media + No media
)}
), - size: 80, + size: 100, }), columnHelper.accessor('created_at', { header: ({ column }) => ( @@ -147,18 +147,18 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project ), cell: ({ row }) => ( -
+
{formatDistanceToNow(new Date(row.original.created_at), { addSuffix: true })}
), - size: 120, + size: 140, }), columnHelper.accessor('favorite_count', { header: ({ column }) => ( ), cell: ({ row }) => ( -
+
{row.original.favorite_count.toLocaleString()}
), - size: 80, + size: 100, }), columnHelper.accessor('category', { header: ({ column }) => ( @@ -195,13 +195,13 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project ), cell: ({ row }) => ( -
+
{row.original.category}
), - size: 120, + size: 140, }), ], [showUrlColumn]); @@ -226,7 +226,7 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project const virtualizer = useVirtualizer({ count: rows.length, getScrollElement: () => parentRef.current, - estimateSize: () => 80, + estimateSize: () => 88, overscan: 5, }); @@ -235,6 +235,9 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project return cats.sort(); }, [projects]); + // Calculate total width + const totalWidth = table.getHeaderGroups()[0]?.headers.reduce((acc, header) => acc + header.getSize(), 0) || 1000; + return (
@@ -272,18 +275,17 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project
- {/* Table */} -
-
- {/* Header */} -
+ {/* Table Container */} +
+
+ {/* Fixed Header */} +
{table.getHeaderGroups().map((headerGroup) => ( -
+
`${h.getSize()}px`).join(' ') }}> {headerGroup.headers.map((header) => (
{header.isPlaceholder ? null @@ -297,25 +299,25 @@ export function ProjectsTable({ projects, title, showUrlColumn = true }: Project {/* Virtual Scrollable Body */}
-
+
{virtualizer.getVirtualItems().map((virtualRow) => { const row = rows[virtualRow.index]; return (
`${cell.column.getSize()}px`).join(' ') }} > {row.getVisibleCells().map((cell) => (
{flexRender(cell.column.columnDef.cell, cell.getContext())}