Contextual Floating Button
특정 콘텍스트에서 떠오르는 액션 버튼입니다. 스크롤 위치나 사용자 행동에 따라 동적으로 나타나는 액션을 제공할 때 사용됩니다.
import { IconBellFill } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon } from "@seed-design/react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonPreview() {
return (
<ContextualFloatingButton>
<PrefixIcon svg={<IconBellFill />} />
알림 설정
</ContextualFloatingButton>
);
}Installation
npx @seed-design/cli@latest add ui:contextual-floating-buttonProps
Prop
Type
Examples
Float Composition
Contextual Floating Button은 <Float> 컴포넌트와 함께 사용하면 편리합니다.
import { IconBellFill } from "@karrotmarket/react-monochrome-icon";
import { Box, Float, PrefixIcon } from "@seed-design/react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonFloatComposition() {
return (
<Box
position="relative"
width="300px"
height="500px"
borderWidth={1}
borderColor="stroke.neutralMuted"
>
<Float placement="bottom-center" offsetY="x4">
<ContextualFloatingButton>
<PrefixIcon svg={<IconBellFill />} />
알림 설정
</ContextualFloatingButton>
</Float>
</Box>
);
}Solid Variant
import { IconPlusLine } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon } from "@seed-design/react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonSolid() {
return (
<ContextualFloatingButton variant="solid">
<PrefixIcon svg={<IconPlusLine />} />
Solid Variant
</ContextualFloatingButton>
);
}Layer Variant
import { IconPlusLine } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon } from "@seed-design/react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonLayer() {
return (
<ContextualFloatingButton variant="layer">
<PrefixIcon svg={<IconPlusLine />} />
Layer Variant
</ContextualFloatingButton>
);
}Icon Only
import { IconPlusFill } from "@karrotmarket/react-monochrome-icon";
import { Icon } from "@seed-design/react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonIconOnly() {
return (
<ContextualFloatingButton layout="iconOnly" aria-label="추가">
<Icon svg={<IconPlusFill />} />
</ContextualFloatingButton>
);
}Loading
import { IconPlusLine } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon } from "@seed-design/react";
import { useState } from "react";
import { ContextualFloatingButton } from "seed-design/ui/contextual-floating-button";
export default function ContextualFloatingButtonLoading() {
const [loading, setLoading] = useState(false);
function handleClick() {
setLoading(true);
setTimeout(() => setLoading(false), 2000);
}
// 이벤트 핸들링이 필요할 수 있으므로 loading은 disabled를 포함하지 않습니다. 이벤트 발생을 원하지 않는 경우, disabled 속성을 추가해주세요.
return (
<ContextualFloatingButton loading={loading} onClick={handleClick}>
<PrefixIcon svg={<IconPlusLine />} />
시간이 걸리는 액션
</ContextualFloatingButton>
);
}Last updated on