Centralize metric and description layouts
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import type { HTMLAttributes, ReactNode } from "react";
|
||||
|
||||
export type MetricGridColumns = 1 | 2 | 3 | 4 | 5 | "auto";
|
||||
export type MetricGridDensity = "compact" | "default" | "loose";
|
||||
export type MetricGridSpacing = "block" | "inset" | "none";
|
||||
export type MetricGridMinimum = "fluid" | "compact" | "default" | "wide";
|
||||
export type MetricGridCollapseAt = "narrow" | "workspace" | "standard" | "wide" | "never";
|
||||
|
||||
export type MetricGridProps = HTMLAttributes<HTMLDivElement> & {
|
||||
children: ReactNode;
|
||||
columns?: MetricGridColumns;
|
||||
density?: MetricGridDensity;
|
||||
spacing?: MetricGridSpacing;
|
||||
minimum?: MetricGridMinimum;
|
||||
collapseAt?: MetricGridCollapseAt;
|
||||
};
|
||||
|
||||
export default function MetricGrid({
|
||||
children,
|
||||
columns = 4,
|
||||
density = "default",
|
||||
spacing = "block",
|
||||
minimum = "default",
|
||||
collapseAt = "workspace",
|
||||
className = "",
|
||||
...props
|
||||
}: MetricGridProps) {
|
||||
return (
|
||||
<div
|
||||
{...props}
|
||||
className={[
|
||||
"metric-group-layout",
|
||||
`metric-group-columns-${columns}`,
|
||||
`metric-group-density-${density}`,
|
||||
`metric-group-spacing-${spacing}`,
|
||||
`metric-group-minimum-${minimum}`,
|
||||
`metric-group-collapse-${collapseAt}`,
|
||||
className
|
||||
].filter(Boolean).join(" ")}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user