mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-10 18:43:09 +03:00
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { ReactNode } from "react";
|
|
import { Label } from "../ui/label";
|
|
|
|
export const SPLIT_ROW_CLASS_NAME =
|
|
"space-y-2 md:grid md:grid-cols-[minmax(14rem,22rem)_minmax(0,1fr)] md:items-start md:gap-x-6 md:space-y-0";
|
|
export const DESCRIPTION_CLASS_NAME = "text-sm text-muted-foreground";
|
|
export const CONTROL_COLUMN_CLASS_NAME = "w-full md:max-w-2xl";
|
|
|
|
type SettingsGroupCardProps = {
|
|
title: string;
|
|
children: ReactNode;
|
|
};
|
|
|
|
export function SettingsGroupCard({ title, children }: SettingsGroupCardProps) {
|
|
return (
|
|
<div className="space-y-4 rounded-lg border border-border/70 bg-card/30 p-4">
|
|
<div className="text-md border-b border-border/60 pb-4 font-semibold text-primary-variant">
|
|
{title}
|
|
</div>
|
|
{children}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
type SplitCardRowProps = {
|
|
label: ReactNode;
|
|
description?: ReactNode;
|
|
content: ReactNode;
|
|
};
|
|
|
|
export function SplitCardRow({
|
|
label,
|
|
description,
|
|
content,
|
|
}: SplitCardRowProps) {
|
|
return (
|
|
<div className={SPLIT_ROW_CLASS_NAME}>
|
|
<div className="space-y-1.5">
|
|
<Label className="text-sm font-medium">{label}</Label>
|
|
{description && (
|
|
<div className={`hidden md:block ${DESCRIPTION_CLASS_NAME}`}>
|
|
{description}
|
|
</div>
|
|
)}
|
|
</div>
|
|
<div className={`${CONTROL_COLUMN_CLASS_NAME} space-y-1.5`}>
|
|
{content}
|
|
{description && (
|
|
<div className={`md:hidden ${DESCRIPTION_CLASS_NAME}`}>
|
|
{description}
|
|
</div>
|
|
)}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|