function ListingSection()

in _includes/pageelements/ListingSection.11ty.tsx [18:93]


function ListingSection({
	title,
	subtitle,
	anchor,
	moreLink,
	resources,
	separator,
	isSection = true,
	includeCardFooter = true,
	sectionExtraClass,
	includeContentType = false,
}: ListingSectionProps) {
	/* A reusable component for section-style paginated ResourceCard listings */
	const columnClassName = isSection
		? undefined
		: "is-half-tablet is-one-third-desktop";

	const sectionClassName = sectionExtraClass ? sectionExtraClass : "";

	const listing = (
		<div class="columns is-multiline">
			{resources.map((resource) => {
				return (
					<ResourceCard
						resource={resource}
						columnClassName={columnClassName}
						includeCardFooter={includeCardFooter}
						includeContentType={includeContentType}
					></ResourceCard>
				);
			})}
		</div>
	);

	const container = (
		<div class="container" id={anchor}>
			<div class="columns is-vcentered is-mobile">
				<div class="column is-10 is-10-tablet is-10-desktop">
					<h2 class="mt-2 mb-4 is-size-2 is-size-3-mobile has-text-weight-bold">
						{title}
					</h2>
					{subtitle && (
						<p class="subtitle is-size-3 is-size-4-mobile has-text-grey mb-5">
							{subtitle}
						</p>
					)}
				</div>
				{moreLink && (
					<div class="column has-text-right">
						<a class="button is-rounded is-outlined" href={moreLink}>
							More...
						</a>
					</div>
				)}
			</div>
			<div class="container">{listing}</div>
		</div>
	);

	const result = isSection ? (
		<section class={`section ${sectionClassName}`}>{container}</section>
	) : (
		container
	);

	return (
		<Fragment>
			{separator && (
				<section class="container">
					<hr />
				</section>
			)}
			{result}
		</Fragment>
	);
}