dashboard/src/components/appCategory.tsx

43 lines
1,017 B
TypeScript
Raw Normal View History

2020-07-08 19:36:36 +02:00
import styled from "styled-components";
2021-06-14 11:29:03 +02:00
import App, { IAppProps } from "./app";
2020-07-08 19:36:36 +02:00
import { ItemList, Item, SubHeadline } from "./elements";
const CategoryHeadline = styled(SubHeadline)`
padding-top: 1rem;
`;
const CategoryContainer = styled.div`
width: 100%;
`;
export interface IAppCategoryProps {
2020-07-08 19:36:36 +02:00
name: string;
items: Array<IAppProps>;
}
2021-03-21 19:59:18 +01:00
/**
* Renders one app category
2021-06-14 11:29:03 +02:00
* @param {IAppCategoryProps} props props of the given category
* @returns {React.ReactNode} the app category node
2021-03-21 19:59:18 +01:00
*/
2021-06-14 11:29:03 +02:00
const AppCategory = ({ name, items }: IAppCategoryProps) => (
2020-07-08 19:36:36 +02:00
<CategoryContainer>
{name && <CategoryHeadline>{name}</CategoryHeadline>}
<ItemList>
{items.map((app, idx) => (
<Item key={[app.name, idx].join("")}>
<App
name={app.name}
icon={app.icon}
2021-03-21 20:19:44 +01:00
url={app.url}
2020-07-08 19:36:36 +02:00
displayURL={app.displayURL}
2021-04-03 16:54:44 +02:00
newTab={app.newTab}
2020-07-08 19:36:36 +02:00
/>
</Item>
))}
</ItemList>
</CategoryContainer>
);
2021-06-14 11:29:03 +02:00
export default AppCategory;