adilallo/component/AskOrganizer #14

Merged
an.di merged 5 commits from adilallo/component/AskOrganizer into adilallo/component/FeatureGrid 2025-08-28 20:29:45 +00:00
4 changed files with 137 additions and 16 deletions
Showing only changes of commit 0f996889d2 - Show all commits
+42
View File
@@ -0,0 +1,42 @@
"use client";
import React from "react";
import ContentLockup from "./ContentLockup";
import Button from "./Button";
const AskOrganizer = ({
title,
subtitle,
description,
buttonText = "Ask an organizer",
buttonHref = "#",
className = "",
}) => {
return (
<section
className={`py-[var(--spacing-scale-032)] px-[var(--spacing-scale-032)] ${className}`}
aria-labelledby="ask-organizer-headline"
role="region"
tabIndex={-1}
>
<div className="flex flex-col gap-[var(--spacing-scale-040)]">
{/* Content Lockup */}
<ContentLockup
title={title}
subtitle={subtitle}
description={description}
variant="ask"
/>
{/* Button */}
<div className="flex justify-center">
<Button href={buttonHref} size="small" variant="default">
{buttonText}
</Button>
</div>
</div>
</section>
);
};
export default AskOrganizer;
+39 -16
View File
@@ -46,35 +46,58 @@ const ContentLockup = ({
shape:
"w-[20px] h-[20px] md:w-[24px] md:h-[24px] lg:w-[28px] lg:h-[28px]",
},
ask: {
container: "flex flex-col gap-[var(--spacing-scale-008)] relative z-10",
textContainer: "flex flex-col gap-[var(--spacing-scale-008)]",
titleGroup: "flex flex-col gap-[var(--spacing-scale-008)]",
titleContainer:
"flex gap-[var(--spacing-scale-008)] items-center justify-center",
title:
"font-bricolage-grotesque font-medium text-[36px] leading-[110%] tracking-[0] text-[var(--color-content-default-brand-primary)] text-center",
subtitle:
"font-inter font-normal text-[18px] leading-[130%] tracking-[0] text-[var(--color-content-default-primary)] text-center",
shape:
"w-[16px] h-[16px] md:w-[20px] md:h-[20px] lg:w-[24px] lg:h-[24px]",
},
};
const styles = variantStyles[variant] || variantStyles.hero;
return (
<div className={styles.container}>
{/* Text content container */}
<div className={styles.textContainer}>
{/* Title and subtitle group */}
{variant === "ask" ? (
/* Simplified structure for ask variant */
<div className={styles.titleGroup}>
{/* Title container */}
<div className={styles.titleContainer}>
<h1 className={styles.title}>{title}</h1>
{variant === "hero" && (
<img
src="assets/Shapes_1.svg"
alt="Decorative shapes"
className={styles.shape}
/>
)}
</div>
{/* Subtitle */}
<h2 className={styles.subtitle}>{subtitle}</h2>
</div>
) : (
/* Full structure for other variants */
<div className={styles.textContainer}>
{/* Title and subtitle group */}
<div className={styles.titleGroup}>
{/* Title container */}
<div className={styles.titleContainer}>
<h1 className={styles.title}>{title}</h1>
{variant === "hero" && (
<img
src="assets/Shapes_1.svg"
alt="Decorative shapes"
className={styles.shape}
/>
)}
</div>
{/* Description */}
{description && <p className={styles.description}>{description}</p>}
</div>
{/* Subtitle */}
<h2 className={styles.subtitle}>{subtitle}</h2>
</div>
{/* Description */}
{description && <p className={styles.description}>{description}</p>}
</div>
)}
{/* Link for feature variant */}
{variant === "feature" && linkText && (
+9
View File
@@ -4,6 +4,7 @@ import LogoWall from "./components/LogoWall";
import RuleStack from "./components/RuleStack";
import QuoteBlock from "./components/QuoteBlock";
import FeatureGrid from "./components/FeatureGrid";
import AskOrganizer from "./components/AskOrganizer";
export default function Page() {
const heroBannerData = {
@@ -43,6 +44,13 @@ export default function Page() {
"Use our toolkit to improve, document, and evolve your organization.",
};
const askOrganizerData = {
title: "Still have questions?",
subtitle: "Get answers from an experienced organizer",
buttonText: "Ask an organizer",
buttonHref: "#contact",
};
return (
<div>
<HeroBanner {...heroBannerData} />
@@ -51,6 +59,7 @@ export default function Page() {
<RuleStack />
<FeatureGrid {...featureGridData} />
<QuoteBlock />
<AskOrganizer {...askOrganizerData} />
</div>
);
}
+47
View File
@@ -0,0 +1,47 @@
import AskOrganizer from "../app/components/AskOrganizer";
export default {
title: "Components/AskOrganizer",
component: AskOrganizer,
parameters: {
docs: {
description: {
component:
"The AskOrganizer component provides clear pathways for user inquiries. This component serves as a conversion point throughout the platform.",
},
},
},
argTypes: {
title: {
control: "text",
description: "The main title for the ask organizer section",
},
subtitle: {
control: "text",
description: "The subtitle text",
},
description: {
control: "text",
description: "Additional description text",
},
buttonText: {
control: "text",
description: "Text for the call-to-action button",
},
buttonHref: {
control: "text",
description: "URL for the button link",
},
},
};
export const Default = {
args: {
title: "Need help getting started?",
subtitle: "Our organizers are here to support you",
description:
"Whether you're forming a new community or improving an existing one, our experienced organizers can provide guidance tailored to your specific needs.",
buttonText: "Ask an organizer",
buttonHref: "#contact",
},
};