Ask Organizer default breakpoint
This commit is contained in:
@@ -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;
|
||||||
@@ -46,35 +46,58 @@ const ContentLockup = ({
|
|||||||
shape:
|
shape:
|
||||||
"w-[20px] h-[20px] md:w-[24px] md:h-[24px] lg:w-[28px] lg:h-[28px]",
|
"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;
|
const styles = variantStyles[variant] || variantStyles.hero;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
{/* Text content container */}
|
{variant === "ask" ? (
|
||||||
<div className={styles.textContainer}>
|
/* Simplified structure for ask variant */
|
||||||
{/* Title and subtitle group */}
|
|
||||||
<div className={styles.titleGroup}>
|
<div className={styles.titleGroup}>
|
||||||
{/* Title container */}
|
|
||||||
<div className={styles.titleContainer}>
|
<div className={styles.titleContainer}>
|
||||||
<h1 className={styles.title}>{title}</h1>
|
<h1 className={styles.title}>{title}</h1>
|
||||||
{variant === "hero" && (
|
|
||||||
<img
|
|
||||||
src="assets/Shapes_1.svg"
|
|
||||||
alt="Decorative shapes"
|
|
||||||
className={styles.shape}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Subtitle */}
|
|
||||||
<h2 className={styles.subtitle}>{subtitle}</h2>
|
<h2 className={styles.subtitle}>{subtitle}</h2>
|
||||||
</div>
|
</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 */}
|
{/* Subtitle */}
|
||||||
{description && <p className={styles.description}>{description}</p>}
|
<h2 className={styles.subtitle}>{subtitle}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Description */}
|
||||||
|
{description && <p className={styles.description}>{description}</p>}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Link for feature variant */}
|
{/* Link for feature variant */}
|
||||||
{variant === "feature" && linkText && (
|
{variant === "feature" && linkText && (
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import LogoWall from "./components/LogoWall";
|
|||||||
import RuleStack from "./components/RuleStack";
|
import RuleStack from "./components/RuleStack";
|
||||||
import QuoteBlock from "./components/QuoteBlock";
|
import QuoteBlock from "./components/QuoteBlock";
|
||||||
import FeatureGrid from "./components/FeatureGrid";
|
import FeatureGrid from "./components/FeatureGrid";
|
||||||
|
import AskOrganizer from "./components/AskOrganizer";
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
const heroBannerData = {
|
const heroBannerData = {
|
||||||
@@ -43,6 +44,13 @@ export default function Page() {
|
|||||||
"Use our toolkit to improve, document, and evolve your organization.",
|
"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 (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<HeroBanner {...heroBannerData} />
|
<HeroBanner {...heroBannerData} />
|
||||||
@@ -51,6 +59,7 @@ export default function Page() {
|
|||||||
<RuleStack />
|
<RuleStack />
|
||||||
<FeatureGrid {...featureGridData} />
|
<FeatureGrid {...featureGridData} />
|
||||||
<QuoteBlock />
|
<QuoteBlock />
|
||||||
|
<AskOrganizer {...askOrganizerData} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user