Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/components/elements/TitledGreyBox.tsx
7461 views
1
import React, { memo } from 'react';
2
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
import { IconProp } from '@fortawesome/fontawesome-svg-core';
4
import tw from 'twin.macro';
5
import isEqual from 'react-fast-compare';
6
7
interface Props {
8
icon?: IconProp;
9
title: string | React.ReactNode;
10
className?: string;
11
children: React.ReactNode;
12
}
13
14
const TitledGreyBox = ({ icon, title, children, className }: Props) => (
15
<div css={tw`rounded shadow-md bg-neutral-700`} className={className}>
16
<div css={tw`bg-neutral-900 rounded-t p-3 border-b border-black`}>
17
{typeof title === 'string' ? (
18
<p css={tw`text-sm uppercase`}>
19
{icon && <FontAwesomeIcon icon={icon} css={tw`mr-2 text-neutral-300`} />}
20
{title}
21
</p>
22
) : (
23
title
24
)}
25
</div>
26
<div css={tw`p-3`}>{children}</div>
27
</div>
28
);
29
30
export default memo(TitledGreyBox, isEqual);
31
32