Files
community-rule/app/components/layout/List/List.view.tsx
T
2026-04-25 17:57:58 -06:00

48 lines
1.3 KiB
TypeScript

"use client";
import { memo } from "react";
import Divider from "../../utility/Divider";
import ListEntry from "../ListEntry";
import { FIGMA_LIST_ROOT } from "../listSizeLayout";
import type { ListViewProps } from "./List.types";
export const ListView = memo(function ListView({
items,
size = "m",
topDivider = true,
leadingIcon = "edit",
className = "",
}: ListViewProps) {
return (
<div
className={`flex w-full max-w-[1590px] flex-col items-start ${className}`}
data-figma-node={FIGMA_LIST_ROOT[size]}
>
{topDivider ? <Divider type="content" orientation="horizontal" /> : null}
<ul className="m-0 flex w-full list-none flex-col items-start p-0">
{items.map((item) => (
<li
key={item.id}
className="flex w-full flex-col items-stretch [list-style:none]"
>
<ListEntry
title={item.title}
description={item.description}
showDescription={item.showDescription}
href={item.href}
onClick={item.onClick}
size={size}
leadingIcon={item.leadingIcon ?? leadingIcon}
variant={item.variant}
topDivider={false}
bottomDivider
/>
</li>
))}
</ul>
</div>
);
});
ListView.displayName = "ListView";