fix(web): improve mobile and tablet responsiveness (#237)

- Remove fixed min-width constraints from comparison tables
  - compare.tsx: remove min-w-[860px]
  - alternatives.tsx: remove min-w-[600px]
  - privacy.tsx: remove min-w-[500px]
- Tables now use native overflow-x-auto for horizontal scroll
- Fix subpage navigation overflow on mobile:
  - Show only icons on mobile (no text labels)
  - Add horizontal scroll support
  - Add proper aria-labels for accessibility
  - Add hover states for better touch feedback

Fixes responsive design issues identified during mobile audit.
This commit is contained in:
Jatin K Malik
2026-02-19 01:22:47 -08:00
committed by GitHub
parent df97164c47
commit be66bdad18
4 changed files with 8 additions and 7 deletions
+1 -1
View File
@@ -138,7 +138,7 @@ export default function AlternativesPage() {
<section className="mb-12 rounded-2xl border border-zinc-200 bg-white p-6 overflow-x-auto dark:border-zinc-700 dark:bg-zinc-800">
<h2 className="mb-6 text-2xl font-bold">Feature Comparison</h2>
<table className="w-full min-w-[600px] text-left">
<table className="w-full text-left">
<thead>
<tr className="border-b border-zinc-200 dark:border-zinc-700">
<th className="pb-3 text-sm font-semibold">Feature</th>
+1 -1
View File
@@ -99,7 +99,7 @@ export default function CompareEnginesPage() {
</section>
<section className="overflow-x-auto rounded-2xl border border-zinc-200 bg-white shadow-sm dark:border-zinc-700 dark:bg-zinc-800">
<table className="w-full min-w-[860px] border-collapse text-left">
<table className="w-full border-collapse text-left">
<thead>
<tr className="border-b border-zinc-200 dark:border-zinc-700">
<th className="px-4 py-3 text-sm font-semibold">Engine</th>
+1 -1
View File
@@ -202,7 +202,7 @@ export default function PrivacyPage() {
<section className="mt-12 rounded-2xl border border-zinc-200 bg-zinc-50 p-8 dark:border-zinc-700 dark:bg-zinc-900/60">
<h2 className="mb-6 text-2xl font-bold">Vocalinux vs Cloud Dictation Services</h2>
<div className="overflow-x-auto">
<table className="w-full min-w-[500px] text-left">
<table className="w-full text-left">
<thead>
<tr className="border-b border-zinc-200 dark:border-zinc-700">
<th className="pb-3 text-sm font-semibold">Feature</th>
+5 -4
View File
@@ -77,17 +77,18 @@ export function SeoSubpageShell({ children }: SeoSubpageShellProps) {
</nav>
</div>
<div className="mx-auto flex max-w-6xl gap-2 px-4 pb-4 sm:hidden">
<div className="mx-auto flex max-w-6xl gap-2 overflow-x-auto px-4 pb-4 sm:hidden scrollbar-thin">
{navLinks.map((item) => {
const Icon = item.icon;
return (
<Link
key={item.href}
href={item.href}
className="inline-flex items-center gap-1 rounded-lg border border-zinc-200 bg-white px-3 py-1.5 text-xs font-medium text-muted-foreground dark:border-zinc-700 dark:bg-zinc-800"
title={item.label}
className="inline-flex items-center justify-center rounded-lg border border-zinc-200 bg-white p-2 text-muted-foreground transition-colors hover:bg-zinc-50 hover:text-foreground dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700"
aria-label={item.label}
>
<Icon className="h-3.5 w-3.5" />
{item.label}
<Icon className="h-4 w-4" />
</Link>
);
})}