Skip to content

feat(landing): update footer#492

Merged
hari merged 4 commits into
mainfrom
feat/footer-redesign
Jun 9, 2026
Merged

feat(landing): update footer#492
hari merged 4 commits into
mainfrom
feat/footer-redesign

Conversation

@sudhashrestha

@sudhashrestha sudhashrestha commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Redesigned footer with brand section, categorized links, and newsletter signup form
    • Added brand font support (Outfit) for premium typography
  • Refactor

    • Improved sibling-focus navigation link spacing and hover behavior
    • Modernized newsletter section with flexible layout options
  • Documentation

    • Updated sibling-focus-nav guide with spacing best practices
  • Style

    • Applied new footer color palette and visual styling

sudhashrestha and others added 2 commits June 9, 2026 18:43
Structured category grid, brand newsletter column, resources link, and
sibling-focus-nav spacing/hover updates for stacked footer links.

Co-authored-by: Cursor <cursoragent@cursor.com>
Shared with the resources page branch — small util for ?ref= on outbound URLs.

Co-authored-by: Cursor <cursoragent@cursor.com>
@sudhashrestha sudhashrestha requested a review from hari June 9, 2026 17:05
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0d9d973d-90ca-4ca6-b46f-c07938bb2c03

📥 Commits

Reviewing files that changed from the base of the PR and between 24135d7 and 2339a70.

📒 Files selected for processing (4)
  • app/(main)/_landing/newsletter.tsx
  • components/footer-stamp.tsx
  • components/site-footer.tsx
  • lib/outbound-ref.ts
✅ Files skipped from review due to trivial changes (1)
  • components/footer-stamp.tsx
🚧 Files skipped from review as they are similar to previous changes (3)
  • lib/outbound-ref.ts
  • components/site-footer.tsx
  • app/(main)/_landing/newsletter.tsx

📝 Walkthrough

Walkthrough

The PR redesigns the site footer from a simple layout to a component-based, themed architecture. It updates SiblingFocusNav with configurable spacing axes and improved hover targeting, refactors the newsletter for prop-driven flexibility, introduces four footer subcomponents, and establishes a complete theming and grid infrastructure. Supporting updates include brand font configuration, AnnouncementRibbon removal, and documentation enhancements.

Changes

Footer Redesign & Component Infrastructure

Layer / File(s) Summary
SiblingFocusNav Spacing & Hover Behavior
animata/container/sibling-focus-nav.tsx, animata/container/sibling-focus-nav.stories.tsx, content/docs/container/sibling-focus-nav.mdx
Spotlight effect now targets only direct child anchors via :has() selectors for hover and focus-visible, replacing prior :hover/:focus-within behavior. Added configurable spacingAxis prop ("x" / "y" / "none" default "x") to replace fixed gap-6 with padding-based spacing. Exposed spacingXClassName and spacingYClassName on the component object. Stories and docs updated to demonstrate and explain the new spacing modes.
FooterSubscribe Email Form Component
components/footer-subscribe.tsx
New client component renders email input with label, submit button (showing loader during submission or external-link icon), and live-updating status messages for success/error states using aria-live="polite".
Newsletter Prop-Driven Flexibility
app/(main)/_landing/newsletter.tsx
NewsletterSection now accepts optional compact and brand props. In brand mode renders lightweight FooterSubscribe form; otherwise renders a Card with layout/styling variations based on compact. Input component branches rendering and applies mode-specific classnames.
Footer Theme, Grid, & Data Infrastructure
lib/footer-theme.ts, lib/footer-grid.ts, lib/brand-font.ts, lib/docs.ts, lib/outbound-ref.ts
New modules establish footer architecture: footer-theme.ts exports color palette and motion/style Tailwind constants; footer-grid.ts defines responsive 8-column layout grid and column assignments; brand-font.ts configures Outfit font with --font-brand CSS variable and label styling; docs.ts enriches getFooterCategories to return FooterCategory[] with links, viewAll metadata, and compact-mode truncation; outbound-ref.ts provides URL ref utility for external links.
Footer UI Subcomponents
components/footer-stamp.tsx, components/footer-bottom.tsx, components/footer-category-grid.tsx
Three new subcomponents: FooterStamp wraps logo in styled container; FooterBottom renders home/codse links, disclaimer, and Nepal branding; FooterCategoryGrid composes Radix accordion (mobile) and multi-column grid (desktop) for category navigation, with per-category link lists and optional "view all" link.
SiteFooter Orchestration & Layout Integration
components/site-footer.tsx, app/(main)/layout.tsx, app/layout.tsx, config/site.ts
Rewrites SiteFooter to compose new footer subcomponents in a themed grid layout. Computes compact footer categories, conditionally highlights "Resources" link based on pathname, integrates SiblingFocusNav for main links, and includes brand-mode NewsletterSection. Sets CSS variables for ink/accent/gold colors. SiteFooter integrates FooterCategoryGrid and FooterBottom. Removes AnnouncementRibbon from layout. Adds brandFont.variable to root <html> className. Updates site description tagline.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • codse/animata#445: Both PRs modify the footer navigation pipeline—lib/docs.ts's getFooterCategories is directly related to earlier footer category handling.
  • codse/animata#466: Both PRs directly modify animata/container/sibling-focus-nav.tsx (hover/focus targeting and configurable spacing behavior).
  • codse/animata#439: Both PRs directly affect app/(main)/layout.tsx usage of AnnouncementRibbon (retrieved PR adds; main PR removes).

Suggested reviewers

  • hari

🐰 A footer so grand, with columns and grace,
Spotlight that dances through sibling-link space,
From theme to component, each piece has its place,
The newsletter now bows to the brand's embrace!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.26% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(landing): update footer' directly and accurately summarizes the primary change—a comprehensive footer redesign affecting the landing page.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/footer-redesign

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🧹 Nitpick comments (1)
components/footer-bottom.tsx (1)

15-15: ⚡ Quick win

Use brand yellow for highlight styling to match design guidelines.

The selection highlight currently uses selection:bg-black/30; this should use the brand yellow token (#ffcc00) per project rule for highlights.

As per coding guidelines "**/*.{tsx,ts,css}: Use brand yellow #ffcc00 (from logo) for highlights and badges".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/footer-bottom.tsx` at line 15, Replace the selection highlight
class in the footer container string so it uses the brand yellow token instead
of the current black translucent value: locate the class string that contains
selection:bg-black/30 (in the footer-bottom component where the class list
includes "border-t border-black/8 bg-white px-5 py-10 text-center
selection:bg-black/30 selection:text-white sm:px-8 sm:py-12") and change the
selection background to the brand yellow (`#ffcc00`) (e.g., use the Tailwind
arbitrary color syntax selection:bg-[`#ffcc00`]) and adjust selection text color
as needed for contrast.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/`(main)/_landing/newsletter.tsx:
- Line 9: Remove the unused import statement for FOOTER_INK: delete the "import
{ FOOTER_INK } ..." line at the top of the newsletter component file and ensure
no other references to the FOOTER_INK symbol (e.g., in render or props) remain;
if any accidental references exist, either replace them with the correct
constant or remove those references too.
- Around line 62-63: Tailwind v4 requires the important modifier (!) at the end
of the utility; update the class strings in the array where
"hover:!bg-[hsl(var(--accent))]/90" and "hover:!text-white" appear (inside the
JSX array near the compact ternary in newsletter.tsx) to use
"hover:bg-[hsl(var(--accent))]/90!" and "hover:text-white!" respectively so the
important modifier is suffixing each utility.

In `@components/footer-stamp.tsx`:
- Line 11: The Tailwind arbitrary-variant uses the old leading-! important
syntax which v4 rejects; update the class on Icons.logo so the important
modifier is a suffix of the utility. Locate the Icons.logo usage (className
"pointer-events-none w-[300%] max-w-none scale-[2] opacity-[0.18]
[&_*]:!fill-(--footer-stamp)") and change the variant from
"[&_*]:!fill-(--footer-stamp)" to the v4 form "[&_*]:fill-(--footer-stamp)!" so
the SVG fill override is applied correctly.

In `@components/site-footer.tsx`:
- Line 95: The inline style on the span (the element with className
"leading-relaxed" in components/site-footer.tsx) uses textBoxTrim (CSS
text-box-trim) which Firefox ignores; update the style to keep textBoxTrim as a
progressive enhancement but add a compatible fallback (for example set an
explicit lineHeight or adjust padding/margin as the baseline, then apply
textBoxTrim after it) so Firefox users get the intended spacing — locate the
span rendering in SiteFooter/ site-footer.tsx and change the style prop to
include the fallback spacing properties plus the existing textBoxTrim property.

In `@lib/outbound-ref.ts`:
- Line 10: new URL(href) can throw on malformed or non-absolute hrefs; wrap the
URL parsing in a try/catch around the new URL(href) call (the expression that
creates const url) and if parsing fails return the original href (or a safe
fallback) instead of letting the exception propagate. Locate the place where
const url = new URL(href) is used in outbound-ref.ts, catch any error from new
URL(href), and short-circuit the function to return href (or a defined safe
value) so rendering paths do not crash.

In `@styles/globals.css`:
- Line 429: The global CSS accent/ring hue was changed to a blue value; restore
the theme token back to the required purple-violet by updating the --accent (and
any --ring that derives from it) declarations to the repository standard
purple/violet HSL token (use the same HSL triple used elsewhere for
purple/violet theme tokens), replacing the blue HSL value currently set for
--accent so that hsl(var(--accent)) matches the mandated purple/violet across
all occurrences of --accent/--ring in this file (search for the --accent and
--ring declarations and swap the value back to the canonical purple/violet
token).

---

Nitpick comments:
In `@components/footer-bottom.tsx`:
- Line 15: Replace the selection highlight class in the footer container string
so it uses the brand yellow token instead of the current black translucent
value: locate the class string that contains selection:bg-black/30 (in the
footer-bottom component where the class list includes "border-t border-black/8
bg-white px-5 py-10 text-center selection:bg-black/30 selection:text-white
sm:px-8 sm:py-12") and change the selection background to the brand yellow
(`#ffcc00`) (e.g., use the Tailwind arbitrary color syntax selection:bg-[`#ffcc00`])
and adjust selection text color as needed for contrast.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 84b88f51-1df0-4d74-b343-dd3084e951e2

📥 Commits

Reviewing files that changed from the base of the PR and between 5e0a651 and 24135d7.

📒 Files selected for processing (19)
  • animata/container/sibling-focus-nav.stories.tsx
  • animata/container/sibling-focus-nav.tsx
  • app/(main)/_landing/newsletter.tsx
  • app/(main)/layout.tsx
  • app/layout.tsx
  • components/footer-bottom.tsx
  • components/footer-category-grid.tsx
  • components/footer-stamp.tsx
  • components/footer-subscribe.tsx
  • components/site-footer.tsx
  • config/site.ts
  • content/docs/changelog/2026-06.mdx
  • content/docs/container/sibling-focus-nav.mdx
  • lib/brand-font.ts
  • lib/docs.ts
  • lib/footer-grid.ts
  • lib/footer-theme.ts
  • lib/outbound-ref.ts
  • styles/globals.css
💤 Files with no reviewable changes (1)
  • app/(main)/layout.tsx

Comment thread app/(main)/_landing/newsletter.tsx Outdated
Comment thread app/(main)/_landing/newsletter.tsx Outdated
Comment thread components/footer-stamp.tsx Outdated
Comment thread components/site-footer.tsx Outdated
Comment thread lib/outbound-ref.ts Outdated
Comment thread styles/globals.css Outdated
Remove unused import and fix Tailwind v4 important suffix syntax.
Guard outbound URL parsing, restore global accent tokens, and add
textBoxTrim fallback spacing for Firefox.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 9, 2026

Copy link
Copy Markdown

Deploying animata with  Cloudflare Pages  Cloudflare Pages

Latest commit: 56719b8
Status:⚡️  Build in progress...

View logs

@hari hari merged commit 307c0c7 into main Jun 9, 2026
4 of 5 checks passed
@hari hari deleted the feat/footer-redesign branch June 9, 2026 17:24
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.

2 participants