dashboard/src/components/appCategory.tsx
2021-06-14 11:29:03 +02:00

42 lines
1,017 B
TypeScript

import styled from "styled-components";
import App, { IAppProps } from "./app";
import { ItemList, Item, SubHeadline } from "./elements";
const CategoryHeadline = styled(SubHeadline)`
padding-top: 1rem;
`;
const CategoryContainer = styled.div`
width: 100%;
`;
export interface IAppCategoryProps {
name: string;
items: Array<IAppProps>;
}
/**
* Renders one app category
* @param {IAppCategoryProps} props props of the given category
* @returns {React.ReactNode} the app category node
*/
const AppCategory = ({ name, items }: IAppCategoryProps) => (
<CategoryContainer>
{name && <CategoryHeadline>{name}</CategoryHeadline>}
<ItemList>
{items.map((app, idx) => (
<Item key={[app.name, idx].join("")}>
<App
name={app.name}
icon={app.icon}
url={app.url}
displayURL={app.displayURL}
newTab={app.newTab}
/>
</Item>
))}
</ItemList>
</CategoryContainer>
);
export default AppCategory;