mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import React from "react";
|
|
import classnames from "classnames";
|
|
|
|
const baseClass = "data-set";
|
|
|
|
interface IDataSetProps {
|
|
title: React.ReactNode;
|
|
value: React.ReactNode;
|
|
orientation?: "horizontal" | "vertical";
|
|
/** When true, aligns the value row by text baseline instead of vertical
|
|
* center. Use this when the value contains only text (with or without
|
|
* tooltips) so neighboring DataSets in a horizontal row share the same
|
|
* baseline. Do NOT use when the value contains icons, buttons, or status
|
|
* indicators that need vertical centering. */
|
|
textOnly?: boolean;
|
|
className?: string;
|
|
}
|
|
|
|
const DataSet = ({
|
|
title,
|
|
value,
|
|
orientation = "vertical",
|
|
textOnly = false,
|
|
className,
|
|
}: IDataSetProps) => {
|
|
const classNames = classnames(baseClass, className, {
|
|
[`${baseClass}__horizontal`]: orientation === "horizontal",
|
|
[`${baseClass}--text-only`]: textOnly,
|
|
});
|
|
|
|
return (
|
|
<div className={classNames}>
|
|
<dt>
|
|
{title}
|
|
{orientation === "horizontal" && ":"}
|
|
</dt>
|
|
<dd>{value}</dd>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default DataSet;
|