Card
Playground
TSX
'use client';
import { useId } from 'react';
import {
Card,
CardHeader,
CardLogo,
CardLabel,
CardTitle,
CardDescription,
CardContent,
CardFooter,
Button,
Input,
Icon,
} from '@mbsw/ui';
import { LogIn } from 'lucide-react';
export default function Demo() {
const settings = {
"title": "로그인",
"description": "업무용 이메일로 로그인하세요.",
"actionLabel": "로그인"
};
const formId = useId();
return (
<Card style={{ maxWidth: '100%' }}>
<CardHeader>
<CardLogo>
<Icon icon={LogIn} size="lg" decorative />
</CardLogo>
<CardLabel>
<CardTitle>{settings.title}</CardTitle>
<CardDescription style={{ whiteSpace: 'pre-wrap' }}>
{settings.description}
</CardDescription>
</CardLabel>
</CardHeader>
<CardContent>
<form
id={formId}
style={{ display: 'grid', gap: 16, width: '100%' }}
onSubmit={(event) => {
event.preventDefault();
}}
>
<label style={{ display: 'grid', gap: 8 }}>
{"이메일"}
<Input
clearLabel={"입력값 지우기"}
name="email"
type="email"
placeholder="name@company.com"
autoComplete="off"
required
/>
</label>
<label style={{ display: 'grid', gap: 8 }}>
{"비밀번호"}
<Input
clearLabel={"입력값 지우기"}
name="password"
type="password"
placeholder={"비밀번호 입력"}
autoComplete="off"
required
/>
</label>
</form>
</CardContent>
<CardFooter>
<Button size="lg" type="submit" form={formId} style={{ width: '100%' }}>
{settings.actionLabel}
</Button>
</CardFooter>
</Card>
);
}
Content
Title
Description
Button
Usage
Header, Title, Description, Content, Footer로 콘텐츠를 조합합니다. 카드 전체 클릭과 내부 버튼의 동작이 겹치지 않게 구성합니다.
TSX
'use client';
import {
Card,
CardHeader,
CardLabel,
CardTitle,
CardDescription,
CardContent,
} from '@mbsw/ui';
export default function Example() {
return (
<Card>
<CardHeader>
<CardLabel>
<CardTitle>{"로그인"}</CardTitle>
<CardDescription>{"업무용 이메일로 로그인하세요."}</CardDescription>
</CardLabel>
</CardHeader>
<CardContent>{"이메일 / 비밀번호"}</CardContent>
</Card>
);
}
Playground의 Code 탭에서 현재 설정과 동작이 포함된 예제 전체를 복사할 수 있습니다. 공통 CSS 설치는 설치하기를 확인하세요.