Update navigation and hero components with new messaging and links#55
Conversation
Signed-off-by: freedisch <freeproduc@gmail.com>
Signed-off-by: freedisch <freeproduc@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
|
||
| type FormValues = z.infer<typeof formSchema>; | ||
| import { FC } from 'react'; | ||
| import { Chrome, Github } from 'lucide-react'; |
There was a problem hiding this comment.
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.
| @@ -1,44 +1,21 @@ | |||
| 'use client'; | |||
There was a problem hiding this comment.
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.
| <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" |
There was a problem hiding this comment.
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.
| <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" |
There was a problem hiding this comment.
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.
| 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" |
There was a problem hiding this comment.
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.
| import { FC } from 'react'; | ||
| import { Chrome, Github } from 'lucide-react'; | ||
|
|
||
| export const CTA: FC = () => { |
There was a problem hiding this comment.
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 oldcta.tsxformreact-hook-form— used only by deadcta.tsxform + deadcomponents/ui/form.tsxzod— used only byapp/utils/waitlist/schema.ts(dead code)
Keeping unused dependencies inflates install time and bundle size.
There was a problem hiding this comment.
They will be reused later
Signed-off-by: freedisch <freeproduc@gmail.com>
Uh oh!
There was an error while loading. Please reload this page.