Contextual Floating Button
이 문서는 정리 중이에요. 문의 내용은 #_design_core 채널을 찾아주세요.
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 contextual-floating-button
pnpm dlx @seed-design/cli@latest add contextual-floating-button
yarn dlx @seed-design/cli@latest add contextual-floating-button
bun x @seed-design/cli@latest add contextual-floating-button
Props
Prop | Type | Default |
---|---|---|
asChild? | boolean | false |
disabled? | boolean | false |
loading? | boolean | false |
layout? | "withText" | "iconOnly" | withText |
variant? | "solid" | "layer" | solid |
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.neutral"
>
<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">
<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