import clsx from 'clsx'; import React from 'react'; import { useHistory } from 'react-router-dom'; import Helmet from 'soapbox/components/helmet'; import { useSoapboxConfig } from 'soapbox/hooks'; import { Card, CardBody, CardHeader, CardTitle } from '../card/card'; type IColumnHeader = Pick; /** Contains the column title with optional back button. */ const ColumnHeader: React.FC = ({ label, backHref, className }) => { const history = useHistory(); const handleBackClick = () => { if (backHref) { history.push(backHref); return; } if (history.length === 1) { history.push('/'); } else { history.goBack(); } }; return ( ); }; export interface IColumn { /** Route the back button goes to. */ backHref?: string /** Column title text. */ label?: string /** Whether this column should have a transparent background. */ transparent?: boolean /** Whether this column should have a title and back button. */ withHeader?: boolean /** Extra class name for top
element. */ className?: string /** Ref forwarded to column. */ ref?: React.Ref /** Children to display in the column. */ children?: React.ReactNode } /** A backdrop for the main section of the UI. */ const Column: React.FC = React.forwardRef((props, ref: React.ForwardedRef): JSX.Element => { const { backHref, children, label, transparent = false, withHeader = true, className } = props; const soapboxConfig = useSoapboxConfig(); return (
{label} {soapboxConfig.appleAppId && ( )} {withHeader && ( )} {children}
); }); export { Column, ColumnHeader, };