Skip to content

Component API Reference

This is the complete API reference for all 26 components in the FiNAN website. Each component is documented with its props, usage examples, and implementation details.

Components that provide structural wrappers and consistent page layouts.

Navbar

Primary navigation bar with responsive menu and branding.

Key Props: currentPath

Used on: All pages

Footer

Site footer with links, contact information, and social media.

Key Props: None (uses siteConfig)

Used on: All pages

TopBanner

Announcement banner displayed at the top of pages.

Key Props: message, link, linkText

Used on: Selected pages

PageHeader

Standard page header with title and optional description.

Key Props: title, description, backgroundImage

Used on: Most content pages

HeroHeader

Large hero section with image, title, and call-to-action.

Key Props: None (uses heroConfig)

Used on: Homepage

Components that display dynamic data from configuration files.

Committee

Displays committee member profiles with photos and roles.

Key Props: None (uses committee data files)

Used on: All representation pages

Partners

Grid display of partner organizations with logos.

Key Props: None (uses partners config)

Used on: Homepage, Partners page

Statistics

Displays key statistics with icons and numbers.

Key Props: None (uses stats config)

Used on: Homepage, About page

Pillars

Showcases organizational pillars or core values.

Key Props: None (uses pillars config)

Used on: Homepage

OurAdvocacy

Displays advocacy focus areas with descriptions.

Key Props: None (uses advocacy config)

Used on: Advocacy page

HowWeHelp

Shows services or help offerings with icons.

Key Props: None (uses services config)

Used on: Homepage, Services page

PublicationCard

Card layout for publications and resources.

Key Props: None (data-driven in page)

Used on: Publications page

FAQAccordion

Collapsible accordion for frequently asked questions.

Key Props: None (uses FAQ config)

Used on: FAQ page

Components specific to event pages and registration.

EventHeaderSection

Hero header designed for event pages with date and location.

Key Props: secondaryButtonText, secondaryButtonLink

Used on: Event pages

EventSched

Displays event schedule with timeline and sessions.

Key Props: schedule

Used on: Event pages

RegistrationSection

Organization registration grid with regional registration details.

Key Props: None (uses registrationSectionConfig)

Used on: Homepage, membership, representation pages

BannerTriennialGathering

Special banner for the triennial gathering event.

Key Props: None (uses banner config)

Used on: Homepage (when active)

Components for blog posts and dynamic content.

Blog

Displays recent Ghost CMS posts in a shared news grid.

Key Props: None (fetches latest posts)

Used on: Homepage, about, contact, membership

BlogRepresentation

Country-specific Ghost CMS feed for representation pages.

Key Props: country

Used on: Representation pages

Components specific to country representation pages.

NordicRepresentation

Overview of all Nordic countries with navigation.

Key Props: None (uses representation config)

Used on: Representation landing page

RepresentationContactSection

Contact information for country representatives.

Key Props: None (uses representation contact config)

Used on: Representation pages

Components designed to encourage user engagement.

CTABanner

Call-to-action banner with button and message.

Key Props: None (uses ctaBannerConfig)

Used on: Multiple pages

Partnership

Partnership call-to-action with benefits and contact.

Key Props: None (uses partnership config)

Used on: Partnership page

Components providing functionality without primary visual content.

StructuredData

Injects JSON-LD structured data for SEO.

Key Props: schemas

Used on: All pages (SEO)

Modal

Reusable modal dialog component.

Key Props: id, title, maxWidth

Used on: Event registration

RegistrationModal

Specialized modal for event registration.

Key Props: None (static links)

Used on: Event pages

  1. Navbar & Footer - Used on every page
  2. Committee - Used on all 8 representation pages
  3. PageHeader - Used on most content pages
  4. Blog / BlogRepresentation - Used for dynamic content display
  • TopBanner
  • PageHeader
  • Statistics
  • Partners

Moderate (Requires understanding of data structures)

Section titled “Moderate (Requires understanding of data structures)”
  • Committee
  • FAQAccordion
  • EventSched
  • Blog
  • Navbar (responsive logic)
  • BlogRepresentation (Ghost CMS integration)
  • StructuredData (JSON-LD schema)
  • Modal (client-side state management)

Components that accept images use Astro’s ImageMetadata type:

import type { ImageMetadata } from 'astro';
interface Props {
image: ImageMetadata;
alt: string;
}

Components that display lists use typed arrays:

import type { CommitteeMember } from '@/data/representation/committee/types';
interface Props {
members: CommitteeMember[];
}

Many components accept optional customization:

interface Props {
title: string;
variant?: 'primary' | 'secondary';
showDescription?: boolean;
}

All components are located in the main FiNAN website repository:

https://github.com/poncardasm/finan-website/tree/main/src/components

Browse the source code to see complete implementations and usage examples.

ComponentCategoryComplexityProps CountUsed On
NavbarLayoutComplex1All pages
FooterLayoutSimple0All pages
TopBannerLayoutSimple3Selected pages
PageHeaderLayoutSimple3Most pages
HeroHeaderLayoutModerate0Homepage
CommitteeContentModerate08 pages
PartnersContentSimple02 pages
StatisticsContentSimple02 pages
PillarsContentSimple0Homepage
OurAdvocacyContentSimple0Advocacy
HowWeHelpContentSimple0Homepage
PublicationCardContentSimple0Publications
FAQAccordionContentModerate0FAQ page
EventHeaderSectionEventModerate2Event pages
EventSchedEventModerate1Event pages
RegistrationSectionEventModerate0Event pages
BannerTriennialGatheringEventSimple0Homepage
BlogBlogModerate04 pages
BlogRepresentationBlogComplex18 pages
NordicRepresentationRepresentationModerate01 page
RepresentationContactSectionRepresentationSimple08 pages
CTABannerCTASimple0Multiple
PartnershipCTASimple01 page
StructuredDataUtilityComplex1All pages
ModalUtilityComplex3Event pages
RegistrationModalUtilityComplex0Event pages

Total Components: 26 Component Types: Layout (5), Content (8), Event (4), Blog (2), Representation (2), CTA (2), Utility (3)