Skip to content

Update navigation and hero components with new messaging and links#55

Merged
Freedisch merged 3 commits into
mainfrom
chrome_land
May 23, 2026
Merged

Update navigation and hero components with new messaging and links#55
Freedisch merged 3 commits into
mainfrom
chrome_land

Conversation

@Freedisch

@Freedisch Freedisch commented May 23, 2026

Copy link
Copy Markdown
Owner

Freedisch added 2 commits May 23, 2026 16:21
Signed-off-by: freedisch <freeproduc@gmail.com>
Signed-off-by: freedisch <freeproduc@gmail.com>
@vercel

vercel Bot commented May 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
synapseai Ready Ready Preview, Comment May 23, 2026 3:40pm

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

Comment thread app/components/cta.tsx

type FormValues = z.infer<typeof formSchema>;
import { FC } from 'react';
import { Chrome, Github } from 'lucide-react';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug — dead code left behind: The waitlist form was the only consumer of app/utils/waitlist/action.ts and app/utils/waitlist/schema.ts. These files are now completely unreferenced dead code and should be deleted.

Similarly, components/ui/form.tsx (a shadcn/ui form component) imports react-hook-form but is no longer imported anywhere in the codebase — also dead code.

Comment thread app/components/cta.tsx Outdated
@@ -1,44 +1,21 @@
'use client';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Convention — 'use client' is no longer needed here. This component was rewritten to be purely declarative — no useState, no useRef, no event handlers. The 'use client' directive forces the entire component into a client bundle unnecessarily. Removing it would let Next.js render this as a server component, reducing JS shipped to the browser.

Comment thread app/components/hero.tsx Outdated
<a
href="#get-access"
className="bg-amber text-white px-7 py-3 text-[12px] tracking-widest uppercase font-medium rounded-sm hover:bg-amber/90 transition-colors"
href="https://chromewebstore.google.com/detail/jjlelibnopjfeefpdplponpnocjfcega?utm_source=item-share-cb"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DRY violation — hardcoded Chrome Web Store URL duplicated 4×. This exact URL appears in hero.tsx, cta.tsx, nav.tsx (desktop), and nav.tsx (mobile). If the extension ID or UTM param ever changes, you'd need to update 4 places.

Consider extracting to a shared constant:

// app/utils/constants.ts
export const CHROME_STORE_URL = 'https://chromewebstore.google.com/detail/jjlelibnopjfeefpdplponpnocjfcega?utm_source=item-share-cb';
export const GITHUB_REPO_URL = 'https://github.com/freedisch/havril';

The GitHub URL (https://github.com/freedisch/havril) is similarly duplicated 4 times across these same files.

Comment thread app/components/cta.tsx Outdated
<section className="py-36 px-6 md:px-12 relative overflow-hidden bg-ink" id="get-access">
<section
className="py-36 px-6 md:px-12 relative overflow-hidden bg-ink"
id="get-access"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Edge case — orphaned anchor id="get-access". The old hero CTA linked to href="#get-access" which smoothly scrolled down to this section. That internal link was replaced with the external Chrome Web Store URL, so nothing navigates to #get-access anymore. This dead anchor should be removed or renamed to something meaningful (e.g. id="install") in case you plan to link to it from elsewhere in the future.

Comment thread app/components/nav.tsx
target="_blank"
rel="noopener noreferrer"
onClick={() => setMenuOpen(false)}
className="inline-flex items-center justify-center gap-2 text-[11px] uppercase bg-amber text-white px-5 py-3 font-medium text-center rounded-sm"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Styling inconsistency — mobile CTA missing tracking-widest. The desktop "Add to Chrome" button (line 48) has tracking-widest but this mobile version only has uppercase without it. The letter-spacing will differ between breakpoints for the same button, which looks inconsistent. Add tracking-widest here to match the desktop variant.

Comment thread app/components/cta.tsx
import { FC } from 'react';
import { Chrome, Github } from 'lucide-react';

export const CTA: FC = () => {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cleanup — unused npm dependencies. With the waitlist form removed, these package.json dependencies are now only referenced by dead code and should be uninstalled:

  • @hookform/resolvers — was used only by the old cta.tsx form
  • react-hook-form — used only by dead cta.tsx form + dead components/ui/form.tsx
  • zod — used only by app/utils/waitlist/schema.ts (dead code)

Keeping unused dependencies inflates install time and bundle size.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They will be reused later

Signed-off-by: freedisch <freeproduc@gmail.com>
@Freedisch Freedisch merged commit bb9e6ab into main May 23, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant