Banner
Playground
TSX
'use client';
import { useRef, useState } from 'react';
import { Banner, Button, type BannerTone } from '@mbsw/ui';
export default function Demo() {
const settings = {
"showAction": true,
"content": "텍스트",
"actionLabel": "텍스트",
"tone": "primary"
};
const [visible, setVisible] = useState(true);
const transferFocus = useRef(false);
const changeVisibility = (next: boolean, button: HTMLButtonElement) => {
transferFocus.current =
button === button.ownerDocument.activeElement &&
(!next || settings.showAction);
setVisible(next);
};
const restoreFocus = (button: HTMLButtonElement | null) => {
if (button && transferFocus.current) {
transferFocus.current = false;
button.focus();
}
};
return visible ? (
<Banner
tone={settings.tone as BannerTone}
label={<span style={{ whiteSpace: 'pre-wrap' }}>{settings.content}</span>}
actions={
settings.showAction ? (
<Button
ref={restoreFocus}
size="sm"
tone={settings.tone as BannerTone}
variant="solid"
onClick={(event) => changeVisibility(false, event.currentTarget)}
>
{settings.actionLabel}
</Button>
) : undefined
}
/>
) : (
<Button
ref={restoreFocus}
onClick={(event) => changeVisibility(true, event.currentTarget)}
>
{"다시 보기"}
</Button>
);
}
Properties
Tone
Action
Content
Message
Button
Usage
label과 actions를 조합합니다. 자동으로 닫히지 않습니다. 닫기 버튼과 표시 상태는 앱에서 관리합니다.
TSX
'use client';
import { Banner } from '@mbsw/ui';
export default function Example() {
return <Banner tone="primary" label={"텍스트"} />;
}
Playground의 Code 탭에서 현재 설정과 동작이 포함된 예제 전체를 복사할 수 있습니다. 공통 CSS 설치는 설치하기를 확인하세요.