Path: blob/1.0-develop/resources/scripts/components/elements/ContentBox.tsx
7461 views
import React from 'react';1import FlashMessageRender from '@/components/FlashMessageRender';2import SpinnerOverlay from '@/components/elements/SpinnerOverlay';3import tw from 'twin.macro';45type Props = Readonly<6React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {7title?: string;8borderColor?: string;9showFlashes?: string | boolean;10showLoadingOverlay?: boolean;11}12>;1314const ContentBox = ({ title, borderColor, showFlashes, showLoadingOverlay, children, ...props }: Props) => (15<div {...props}>16{title && <h2 css={tw`text-neutral-300 mb-4 px-4 text-2xl`}>{title}</h2>}17{showFlashes && (18<FlashMessageRender byKey={typeof showFlashes === 'string' ? showFlashes : undefined} css={tw`mb-4`} />19)}20<div css={[tw`bg-neutral-700 p-4 rounded shadow-lg relative`, !!borderColor && tw`border-t-4`]}>21<SpinnerOverlay visible={showLoadingOverlay || false} />22{children}23</div>24</div>25);2627export default ContentBox;282930