File: /home/globfdxw/www/wp-content/plugins/give/src/Views/Components/AdminDetailsPage/AdminSection.tsx
/**
* External Dependencies
*/
import { ReactNode } from 'react';
/**
* Internal Dependencies
*/
import sharedStyles from '@givewp/components/AdminDetailsPage/AdminDetailsPage.module.scss';
import ErrorBoundary from './ErrorBoundary';
/**
* @since 4.4.0
*/
interface AdminSectionProps {
title: string;
description: string;
children: ReactNode;
}
/**
* @since 4.4.0
*/
interface AdminSectionFieldProps {
subtitle?: string;
description?: string;
children: ReactNode;
error?: string;
}
/**
* @since 4.13.1 Add description prop
* @since 4.4.0
*/
export function AdminSectionField({ subtitle, description, children, error }: AdminSectionFieldProps) {
return (
<ErrorBoundary>
<div className={sharedStyles.sectionField}>
{subtitle && <h3 className={sharedStyles.sectionSubtitle}>{subtitle}</h3>}
{description && <p className={sharedStyles.sectionDescription}>{description}</p>}
{children}
{error && <div className={sharedStyles.errorMsg}>{error}</div>}
</div>
</ErrorBoundary>
);
}
/**
* @since 4.4.0
*/
export function AdminSectionsWrapper({ children }: { children: ReactNode }) {
return (
<div className={sharedStyles.sections}>
{children}
</div>
);
}
/**
* @since 4.4.0
*/
export default function AdminSection({ title, description, children }: AdminSectionProps) {
return (
<ErrorBoundary>
<div className={sharedStyles.section}>
<div className={sharedStyles.leftColumn}>
<h2 className={sharedStyles.sectionTitle}>{title}</h2>
<div className={sharedStyles.sectionDescription}>
{description}
</div>
</div>
<div className={sharedStyles.rightColumn}>
{children}
</div>
</div>
</ErrorBoundary>
);
}