diff --git a/README.md b/README.md index c182cff..0ee4e25 100644 --- a/README.md +++ b/README.md @@ -166,49 +166,20 @@ Props template — fill in your own values: ```tsx const props: supportUsButtonProps = { - Theme: "", // "AOSSIE" | "light" | "dark" | "minimal" | "corporate" - pattern: "", // "AOSSIE" | "dots" | "grid" | "none" - buttonVariant: "", // "AOSSIE" | "primary" | "secondary" | "ghost" | "gradient" - - hero: { - title: "", // ← your heading - description: "", // ← your subheading - sponsorLabel: "", // ← optional label above org info - Image: { src: "", alt: "" }, // ← hero background image, Note: Remove the prop if you do not require a hero image. - fit: "", // ← use "cover" for full-width images, "contain" for logo-style images to avoid cropping - }, - - organizationInformation: { - name: "", // ← your organization name - description: "", // ← short org description - logo: { src: "", alt: "" }, // ← Add file path to src and alt text for accessibility. Note: Accepts a string path/url. - url: "https://example.com", // ← optional: if a valid https:// URL is provided, the logo becomes clickable - projectInformation: { - name: "", // ← your project name - description: "",// ← short project description - }, - }, - - // Optional — remove if you have no sponsors yet - sponsors: [ - { name: "", logo: "", link: "", sponsorshipTier: "" }, - // Tiers: "Platinum" | "Gold" | "Silver" | "Bronze" (higher → bigger card) - ], - - ctaSection: { - title: "", // ← CTA heading - description: "", // ← why people should sponsor - sponsorLink: [ - { - name: "Examplename", - className: "sponsor-link", - url: "https://example.com/sponsor", - icon: null, // This Accepts ReactNode element(JSX) - newTab: true, - }, - // Add one entry per sponsorship platform - ], - }, + // Theme for the button, can be one of "light", "dark". + Theme: Theme, + + // Information about the organization, including name, description, logo, and project information + organizationInformation: organizationInformation, + + // Information about the project, including name, description, and image + projectInformation: projectInformation, + + // List of current sponsors, each with name, optional logo, link, and sponsorship tier + sponsors: sponsors, + + // Information about the call-to-action section, including title, description, and sponsor links + ctaSection: CTASection }; ; @@ -225,14 +196,11 @@ const props: supportUsButtonProps = { | Prop | Type | Required | Description | | ------------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------- | -| `Theme` | string | No | Theme for the button, can be one of "AOSSIE", "light", "dark", "minimal", or "corporate" | -| `pattern` | string | No | Optional background pattern for the button, can be one of "dots", "grid", "AOSSIE", or "none" | -| `hero` | object | Yes | Information about the Hero section, including title, description, sponsor label, and optional background Image | +| `Theme` | string | No | "light" or "dark" | | `organizationInformation` | object | Yes | Information about the organization, including name, description, logo, and project information | | `sponsors` | array of objects | No | List of current sponsors, each with name, optional logo, link, and sponsorship tier | -| `ctaSection` | object | Yes | Information about the call-to-action section, including title, description, and sponsor links | -| `classNames` | object | No | Optional additional CSS class for custom styling | -| `buttonVariant` | string | No | Optional button variant for styling the call-to-action buttons | +| `ctaSection` | array of object | Yes | Information about the call-to-action section, including title, description, and sponsor links | +| `projectInformation` | object | No | Information about project, which user will see on sponsor page| @@ -253,75 +221,8 @@ Controls the overall visual appearance of the widget. | Value | Description | | ----------- | ---------------------------------------- | -| `AOSSIE` | Default theme styled for AOSSIE branding | -| `corporate` | Corporate styled layout | | `dark` | Dark mode UI | | `light` | Light mode UI | -| `minimal` | Minimal clean design | - - - -## Pattern - -
-Show details - -Adds a decorative background pattern to the hero section. - -| Value | Description | -| -------- | ------------------------- | -| `AOSSIE` | Square and Circle pattern | -| `dots` | Dot pattern background | -| `grid` | Subtle grid pattern | -| `none` | None | - -
- -## hero - -
-Show details - -Controls the top section of the widget. - -| Value | Type | Required | Description | -| -------------- | ------- | -------- | --------------------------- | -| `Image` | `Image` | No | Background or hero image | -| `title` | string | Yes | Main heading | -| `fit` |"cover" / "contain" | No | logo-style images to avoid cropping | -| `description` | string | Yes | Hero description | -| `sponsorLabel` | string | No | Label above sponsor section | - -
- -## Image - -
-Show details - -Used in hero images and organization logos. - -| Value | Type | Required | Description | -| ----- | ------ | -------- | ---------------- | -| `src` | string | No | Imag URl | -| `alt` | string | No | Alternative text | - -
- -## buttonVariant - -
-Show details - -Controls the styling of the call-to-action buttons. - -| Value | Description | -| ----------- | -------------------------- | -| `AOSSIE` | Default styled button | -| `primary` | Primary action button | -| `secondary` | Secondary button style | -| `ghost` | Transparent minimal button | -| `gradient` | Gradient styled button |
@@ -335,10 +236,9 @@ Information about the organization and project. | Value | Type | Required | Description | | -------------------- | -------------------- | -------- | ------------------------ | | `name` | string | Yes | Organization name | -| `description` | string | Yes | Organization description | -| `logo` | `Image` / string | No | Organization logo | -| `url` | string | No | Organization link | -| `projectInformation` | `projectInformation` | No | Project details | +| `desc` | string | Yes | Organization description | +| `image` | string | No | Organization logo | +| `link` | string | No | Organization link | @@ -353,6 +253,7 @@ Details about the project being sponsored. | ------------- | ------ | -------- | ------------------- | | `name` | string | Yes | Project name | | `description` | string | Yes | Project description | +| `image` | string | Yes | Project description | @@ -366,8 +267,6 @@ List of sponsors displayed in the widget. | Value | Type | Required | Description | | ----------------- | ------ | -------- | --------------- | | `name` | string | Yes | Sponsor name | -| `logo` | string | No | Sponsor logo | -| `link` | string | No | Sponsor website | | `sponsorshipTier` | `Tier` | No | Sponsor tier | @@ -397,43 +296,8 @@ Call-to-action section encouraging sponsorship. | Value | Type | Required | Description | | ------------- | --------------- | -------- | ----------------------------- | -| `title` | string | Yes | CTA title | -| `description` | string | Yes | CTA description | -| `sponsorLink` | `sponsorLink[]` | Yes | List of sponsorship platforms | - - - -## sponsorLink - -
-Show details - -Platform links for sponsorship (Patreon, GitHub Sponsors, etc). - -| Value | Type | Required | Description | -| ----------- | --------- | -------- | --------------------- | -| `name` | string | Yes | Platform name | -| `url` | string | Yes | Sponsorship URL | -| `icon` | ReactNode | No | Icon for the platform | -| `className` | string | No | Custom CSS class | -| `newTab` | boolean | No | Open link in new tab | - -
- -## classNames - -
-Show details - -Allows custom styling of different widget sections. - -| Value | Description | -| ------------------------- | ---------------------------- | -| `container` | Root container styling | -| `Hero` | Hero section styling | -| `organizationInformation` | Organization section styling | -| `sponsors` | Sponsors section styling | -| `ctaSection` | CTA section styling | +| `name` | string | Yes | CTA title | +| `url` | string | Yes | CTA url to redirect the user to that page. |
@@ -443,21 +307,6 @@ Allows custom styling of different widget sections. # 📱 App Screenshots -## AOSSIE-Theme - -
-Show details - -AOSSIE-Theme mobile screen preview. - -
- AOSSIE-theme - AOSSIE-theme - AOSSIE-theme -
- -
- ## Light-Theme
@@ -465,11 +314,7 @@ AOSSIE-Theme mobile screen preview. Light-Theme mobile screen preview. -
- AOSSIE-theme - AOSSIE-theme - AOSSIE-theme -
+ AOSSIE-theme
@@ -480,11 +325,7 @@ Light-Theme mobile screen preview. Dark-Theme mobile screen preview. -
- AOSSIE-theme - AOSSIE-theme - AOSSIE-theme -
+AOSSIE-theme diff --git a/package-lock.json b/package-lock.json index 7b743c1..177036b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "support-us-button", - "version": "1.2.0", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "support-us-button", - "version": "1.2.0", + "version": "2.0.0", "license": "GNU General Public License v3.0", "dependencies": { "tslib": "^2.8.1" diff --git a/package.json b/package.json index 7e0c80d..ce221a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "support-us-button", - "version": "1.2.0", + "version": "2.0.0", "description": "A customizable and flexible Support Us button component for integrating sponsorship and donation options into web applications.", "keywords": [ "aossie", @@ -55,6 +55,7 @@ "sideEffects": false, "scripts": { "build": "rollup -c", + "dev": "rollup -c -w", "prepublishOnly": "npm run build" }, "engines": { diff --git a/public/AOSSIE_THEME-SPONSOR.jpeg b/public/AOSSIE_THEME-SPONSOR.jpeg deleted file mode 100644 index 2b4d4a8..0000000 Binary files a/public/AOSSIE_THEME-SPONSOR.jpeg and /dev/null differ diff --git a/public/AOSSIE_THEME.jpeg b/public/AOSSIE_THEME.jpeg deleted file mode 100644 index 48b0b91..0000000 Binary files a/public/AOSSIE_THEME.jpeg and /dev/null differ diff --git a/public/AOSSIE_THEME_CTA.jpeg b/public/AOSSIE_THEME_CTA.jpeg deleted file mode 100644 index 3e5c016..0000000 Binary files a/public/AOSSIE_THEME_CTA.jpeg and /dev/null differ diff --git a/public/DARK_THEME.jpeg b/public/DARK_THEME.jpeg deleted file mode 100644 index f2f7324..0000000 Binary files a/public/DARK_THEME.jpeg and /dev/null differ diff --git a/public/DARK_THEME_CTA.jpeg b/public/DARK_THEME_CTA.jpeg deleted file mode 100644 index f71fcf4..0000000 Binary files a/public/DARK_THEME_CTA.jpeg and /dev/null differ diff --git a/public/DARK_THEME_SPONSOR.png b/public/DARK_THEME_SPONSOR.png deleted file mode 100644 index 7a10441..0000000 Binary files a/public/DARK_THEME_SPONSOR.png and /dev/null differ diff --git a/public/Dark-Theme.png b/public/Dark-Theme.png new file mode 100644 index 0000000..55222ef Binary files /dev/null and b/public/Dark-Theme.png differ diff --git a/public/LIGHT_THEME.jpeg b/public/LIGHT_THEME.jpeg deleted file mode 100644 index 4e7c585..0000000 Binary files a/public/LIGHT_THEME.jpeg and /dev/null differ diff --git a/public/LIGHT_THEME_CTA.jpeg b/public/LIGHT_THEME_CTA.jpeg deleted file mode 100644 index 4cf6e28..0000000 Binary files a/public/LIGHT_THEME_CTA.jpeg and /dev/null differ diff --git a/public/LIGHT_THEME_SPONSOR.png b/public/LIGHT_THEME_SPONSOR.png deleted file mode 100644 index cf9f353..0000000 Binary files a/public/LIGHT_THEME_SPONSOR.png and /dev/null differ diff --git a/public/Light-Theme.png b/public/Light-Theme.png new file mode 100644 index 0000000..f34da24 Binary files /dev/null and b/public/Light-Theme.png differ diff --git a/src/components/SupportUsButton.tsx b/src/components/SupportUsButton.tsx index ecd3b45..6fd761a 100644 --- a/src/components/SupportUsButton.tsx +++ b/src/components/SupportUsButton.tsx @@ -1,51 +1,17 @@ import React from "react"; import type { supportUsButtonProps } from "../types/index"; import type { Theme } from "../types/index"; -import type { ButtonVariant } from "../types/index"; // Function to get the appropriate classes based on the selected theme, used for styling different sections of the component according to the chosen theme function classAccordingToTheme(Theme: Theme): string { switch (Theme) { - case "AOSSIE": - return "bg-primary text-black"; case "light": - return "bg-gray-100 text-gray-800"; + return "bg-[#F4F4F4] text-[#191919]"; case "dark": - return "bg-black text-white"; - case "minimal": - return "bg-transparent text-gray-800 border border-gray-800"; - case "corporate": - return "bg-blue-600 text-white"; + return "bg-[#191919] text-[#F4F4F4]"; default: - return "bg-gray-200 text-gray-800"; - } -} - -// Function to get the appropriate button classes based on the selected button variant, used for styling the call-to-action buttons according to the chosen variant -function getButtonClasses(buttonVariant: ButtonVariant): string { - const base = - "w-full px-5 py-3 font-medium transition-all duration-300 flex items-center justify-center gap-2"; - - const variant = buttonVariant ?? "AOSSIE"; - - if (variant === "primary") { - return `${base} bg-white text-black hover:bg-white/90`; - } - - if (variant === "secondary") { - return `${base} border border-white/30 text-white hover:bg-white/20`; - } - - if (variant === "ghost") { - return `${base} text-white/80 hover:text-white hover:bg-white/10 outline-2 outline-white/10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/20`; - } - - if (variant === "gradient") { - return `${base} bg-gradient-to-r from-indigo-500 to-purple-600 text-white`; + return "bg-black text-white"; } - - // Default to AOSSIE variant - return `${base} bg-primary hover:bg-primary/90 text-black font-black py-4 transition-all active:scale-[0.98] shadow-lg shadow-primary/20`; } // Helper function to validate URLs and prevent XSS through 'javascript:' protocol @@ -60,422 +26,474 @@ function validateUrl(url?: string): string | undefined { // Main component function that renders the support us button, taking in various props for customization and rendering different sections such as hero, organization information, sponsors, and call-to-action based on the provided data and selected theme and button variant function SupportUsButton({ - Theme = "AOSSIE", - pattern = "AOSSIE", - hero = { - title: "Support Our Open Source Project", - description: - "Your support helps us continue to develop and maintain our project.", - sponsorLabel: "You're Sponsoring", - }, + Theme = "dark", organizationInformation, sponsors, ctaSection, - classNames = { - container: "", - Hero: "", - organizationInformation: "", - sponsors: "", - ctaSection: "", - }, - buttonVariant = "AOSSIE", + projectInformation, + Logo = true, }: supportUsButtonProps): React.JSX.Element { - const validatedUrl = validateUrl(organizationInformation?.url); - const logoContent = - typeof organizationInformation.logo === "string" ? ( - - {organizationInformation.logo} - - ) : ( - {organizationInformation.logo?.alt} - ); + const validatedUrl = validateUrl(organizationInformation?.link); + return ( - // Container for the support us button, with dynamic classes based on the selected theme and custom class names
- {/* Hero section with optional background image*/} -
- {hero.Image && ( - {hero.Image.alt} + - )} - {/* Gradient overlay */} -
-
- - {/* Hero title and description */} -
-
+ )} +
+ {/* Border around page */} + -
- - Support heart icon - - -
+ {/* */} + -
-

- {hero.title} -

-

- {hero.description} -

-
-
-
+ {/* */} + + + {/* */} + - {/* Organization information section */} -
-
*/} + + - // Shadows for different themes - ${Theme === "AOSSIE" && "shadow-xl shadow-primary/20"} - ${Theme === "light" && "shadow-xl shadow-gray-300/30"} - ${Theme === "dark" && "shadow-xl shadow-gray-700/30"} - ${Theme === "minimal" && "shadow-xl shadow-gray-800/30"} - ${Theme === "corporate" && "shadow-xl shadow-blue-600/30"} - - // Outline for light and dark themes - ${Theme === "light" && "outline-1 outline-gray-300"} - ${Theme === "dark" && "outline-1 outline-gray-700"} - ${classAccordingToTheme(Theme)}`} + {/* Top left icon */} + - {/* Background grid */} -
- - {/* Gradient background */} - {Theme === "AOSSIE" && ( -
- )} + + - {/* Content container */} -
- {/* Sponsor label */} - {hero.sponsorLabel && ( - - {hero.sponsorLabel} - - )} + {/* Top right icon */} + + + - {/* Organization logo */} + {/* Bottom left Icon */} + + + -
- {organizationInformation?.logo && - (validatedUrl ? ( - - {logoContent} - - ) : ( - logoContent - ))} -
+ {/* Bottom Right Icon */} + + + + +
+
+ + + + + + + Support-us {projectInformation?.name && "for"}{" "} + {projectInformation?.name} + +
+
+ + A Project Powered by + +  {organizationInformation.name} + + + + + +
+
+ +
+ {ctaSection.sponsorLink.map((link, index) => ( + + ))} +
- {/* Organization name and description */} -
-

- {organizationInformation.name} -

-

- {organizationInformation.description} +

+ {projectInformation?.name && ( +
+
+ {projectInformation?.name} + + About {projectInformation?.name} + +
+

+ + + + {projectInformation?.description}

+ )} - {/* Line */} - {organizationInformation.projectInformation && ( -
- )} +
+ + + + +
- {/* Project information */} - {organizationInformation.projectInformation && ( -
-

- ABOUT PROJECT:{" "} - {organizationInformation.projectInformation.name} -

-

- "{organizationInformation.projectInformation.description}" -

-
- )} +
+
+ {organizationInformation.name} + + About {organizationInformation.name} + +
+

+ + + + {organizationInformation.desc} +

-
- - {/* Sponsors section */} - {sponsors && sponsors.length > 0 && ( -
- {sponsors && sponsors.length > 0 && ( - // List of sponsors with their logos and links, styled according to the selected theme and custom class names -
- {/* Sponsor pattern AOSSIE */} - {pattern === "AOSSIE" && ( -
- )} - {/* Sponsor pattern Grid */} - {pattern === "grid" && ( -
- )} - {/* Sponsor pattern Dots */} - {pattern === "dots" && ( -
- )} +
+
+ + Supported By Global + + + + + Powerhouses +
- {/* Section title */} -
-
-

+ {sponsors?.map((sponsor, index) => ( +
+
+ - Our Sponsors -

+ + + + + + + + + + + + + + +
- {/* Underline */} -
+
+ {sponsor.name} + + {sponsor.sponsorshipTier} Sponsor +
-
- {/* Sponsor logos */} - -
- )} -
- )} - - {/* Call-to-action section with title, description, and sponsor links */} -
-
-

- {ctaSection.title} -

-

- {ctaSection.description} -

-
- {ctaSection.sponsorLink.map((link, index) => ( - -
- {link.icon && {link.icon}} -

{link.name}

+ + + + + + + + + + + + + +
-
+
))}
diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..7f70183 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1 @@ +declare module "*.css"; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 7e915f2..5f8d9ad 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,9 +15,6 @@ export { default } from "./components/SupportUsButton"; export type { Theme, - ButtonVariant, - Image, - Hero, projectInformation, organizationInformation, sponsor, @@ -25,6 +22,5 @@ export type { sponsorLink, CTASection, Tier, - Pattern, supportUsButtonProps, } from "./types/index"; diff --git a/src/styles/style.css b/src/styles/style.css index 4064385..49c46c8 100644 --- a/src/styles/style.css +++ b/src/styles/style.css @@ -1,26 +1,22 @@ @import "tailwindcss"; @theme { - --color-primary: #FFD700; - --color-background-light: #F9FAFB; - --color-background-dark: #000000; - --color-surface-dark: #111111; - --color-card-dark: #1A1A1A; + --color-primary: #ffd700; + --color-background-light: #f9fafb; + --color-background-dark: #000000; + --color-surface-dark: #111111; + --color-card-dark: #1a1a1a; } -/* Sponsor Patterns */ -.sponsor-pattern-AOSSIE { - background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%2391c44a' fill-opacity='0.6'%3E%3Ccircle cx='15' cy='20' r='10'/%3E%3Crect x='5' y='40' width='20' height='20' rx='5'/%3E%3C/g%3E%3C/svg%3E"); +.md-container { + @media (width >= 768px) { + flex-direction: row; + } } -/* Grid Pattern */ -.sponsor-pattern-grid { - background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%2391c44a' stroke-opacity='0.4' stroke-width='1'%3E%3Cpath d='M0 0H100M0 20H100M0 40H100M0 60H100M0 80H100M0 100H100'/%3E%3Cpath d='M0 0V100M20 0V100M40 0V100M60 0V100M80 0V100M100 0V100'/%3E%3C/g%3E%3C/svg%3E"); -} - -.gradient-bg { - background: - linear-gradient(340deg, #0f0f0f 20%, #292308 25%, transparent 100%), - linear-gradient(150deg, #0f0f0f 10%, #292308 20%, #ffd000 30%,transparent 100%), - linear-gradient(50deg, #ffd000 100%, #ffd000 100%); +.md-justify-between { + @media (width >= 900px) { + flex-direction: row; + + } } diff --git a/src/types/index.ts b/src/types/index.ts index 688754f..1824ed9 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,41 +1,8 @@ -import type { ReactNode } from "react"; - /* ========================= Theme ========================= */ -export type Theme = "AOSSIE" | "light" | "dark" | "minimal" | "corporate"; - -/* ========================================================= - Button Variant -========================================================= */ - -export type ButtonVariant = 'AOSSIE'| "primary" | "secondary" | "ghost" | "gradient"; - -/* ========================= - IMAGE TYPE -========================= */ - -export type Image = { - src?: string; - alt?: string; -}; - -/* ========================= - Hero SECTION -========================= */ - -export type Hero = { - /** Optional Hero background Image */ - Image?: Image; - - title: string; - description: string; - fit?: "cover" | "contain"; - - /** Label like: YOU'RE SPONSORING */ - sponsorLabel?: string; -}; +export type Theme = "light" | "dark"; /* ========================= PROJECT INFORMATION @@ -44,6 +11,7 @@ export type Hero = { export type projectInformation = { name: string; description: string; + image: string; }; /* ========================= @@ -52,12 +20,9 @@ export type projectInformation = { export type organizationInformation = { name: string; - description: string; - - /** Organization logo */ - logo?: Image | string; - url?: string; - projectInformation?: projectInformation; + desc: string; + image: string; + link: string; }; /* ========================= @@ -71,13 +36,8 @@ export type Tier = "Platinum" | "Gold" | "Silver" | "Bronze"; ========================= */ export type sponsor = { - name: string; - /** Sponsor logo or avatar */ - logo?: string; - - /** Sponsor website */ - link?: string; + name: string; /** Sponsorship tier */ sponsorshipTier?: Tier; @@ -96,11 +56,6 @@ export type sponsors = sponsor[]; export type sponsorLink = { name: string; url: string; - icon?: ReactNode; - className?: string; - - /** open link in new tab */ - newTab?: boolean; }; /* ========================= @@ -108,17 +63,9 @@ export type sponsorLink = { ========================= */ export type CTASection = { - title: string; - description: string; sponsorLink: sponsorLink[]; }; -/* ========================= - BACKGROUND PATTERNS -========================= */ - -export type Pattern = "AOSSIE" | "dots" | "grid" | "none"; - /* ========================= SUPPORT US COMPO PROPS ========================= */ @@ -127,30 +74,18 @@ export interface supportUsButtonProps { // Theme for the button, can be one of "AOSSIE", "light", "dark", "minimal", or "corporate" Theme?: Theme; - // Optional background pattern for the button, can be one of "dots", "grid", "stripes", or "none" - pattern?: Pattern; - - // Information about the Hero section, including title, description, sponsor label, and optional background Image - hero: Hero; + // BG Logo + Logo?: boolean; // Information about the organization, including name, description, logo, and project information organizationInformation: organizationInformation; + // Information about the project, including name, description, and image + projectInformation?: projectInformation; + // List of current sponsors, each with name, optional logo, link, and sponsorship tier sponsors?: sponsors; // Information about the call-to-action section, including title, description, and sponsor links ctaSection: CTASection; - - // Optional class name for custom styling - classNames?: { - container?: string; - Hero?: string; - organizationInformation?: string; - sponsors?: string; - ctaSection?: string; - }; - - // Optional button variant for styling the call-to-action buttons - buttonVariant?: ButtonVariant; }