forked from baron/baron-sso
검색/필터 바 공토 shell 컴포넌트 추가
This commit is contained in:
44
common/ui/search-filter-bar.tsx
Normal file
44
common/ui/search-filter-bar.tsx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import type { HTMLAttributes, ReactNode } from "react";
|
||||||
|
|
||||||
|
function cx(...classNames: Array<string | false | null | undefined>) {
|
||||||
|
return classNames.filter(Boolean).join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
export const commonSearchFilterBarRowClass =
|
||||||
|
"flex flex-col gap-3 md:flex-row md:items-center md:justify-between";
|
||||||
|
export const commonSearchFilterBarPrimaryClass =
|
||||||
|
"flex min-w-0 flex-1 flex-col gap-3 md:flex-row md:items-center";
|
||||||
|
export const commonSearchFilterBarActionsClass =
|
||||||
|
"flex flex-wrap items-center gap-2";
|
||||||
|
export const commonSearchFilterBarAdvancedClass =
|
||||||
|
"flex flex-col gap-4 rounded-lg border border-border/40 bg-secondary/30 p-4 animate-in fade-in slide-in-from-top-2 duration-200";
|
||||||
|
|
||||||
|
type SearchFilterBarProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
||||||
|
actions?: ReactNode;
|
||||||
|
advanced?: ReactNode;
|
||||||
|
advancedOpen?: boolean;
|
||||||
|
primary: ReactNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function SearchFilterBar({
|
||||||
|
actions,
|
||||||
|
advanced,
|
||||||
|
advancedOpen = false,
|
||||||
|
className,
|
||||||
|
primary,
|
||||||
|
...props
|
||||||
|
}: SearchFilterBarProps) {
|
||||||
|
return (
|
||||||
|
<div className={cx("space-y-3", className)} {...props}>
|
||||||
|
<div className={commonSearchFilterBarRowClass}>
|
||||||
|
<div className={commonSearchFilterBarPrimaryClass}>{primary}</div>
|
||||||
|
{actions ? (
|
||||||
|
<div className={commonSearchFilterBarActionsClass}>{actions}</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
{advanced && advancedOpen ? (
|
||||||
|
<div className={commonSearchFilterBarAdvancedClass}>{advanced}</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user