Fallback view
화면에 표시할 데이터가 없을 때 사용자에게 현재 상황을 알려주는 요소입니다. 단순히 비어있음을 알리는 것을 넘어, 다음에 무엇을 해야 할지 안내하는 메시지와 액션 버튼을 함께 제공하여 사용 흐름이 끊기지 않도록 돕습니다.
콘텐츠가 비어있거나 오류가난 상황에 사용합니다.
import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView sx={{ margin: 'auto' }}>
<FallbackViewContent>
<FallbackViewText
title="타이틀이 들어가요."
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;아래와 같이 조합하여 사용합니다.
버튼은 항상 FallbackViewActionArea로 감싸서 사용합니다. 버튼 배치는 FallbackViewActionArea의 variant로 지정합니다.
FallbackViewActionArea의 variant에 따라 버튼 레이아웃이 달라집니다.
- single (default)
- horizontal
- vertical
버튼을 하나만 배치할 때 사용합니다.
import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView padding="compact">
<FallbackViewContent>
<FallbackViewText
title="variant: single"
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea variant="single">
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;버튼 두 개를 가로로 나란히 배치합니다.
import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView padding="compact">
<FallbackViewContent>
<FallbackViewText
title="variant: horizontal"
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea variant="horizontal">
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;버튼 두 개를 세로로 쌓아 배치합니다.
import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView padding="compact">
<FallbackViewContent>
<FallbackViewText
title="variant: vertical"
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea variant="vertical">
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;platform에 따라 글자, 버튼 크기, action area 간격이 달라집니다.
- mobile
- desktop (default)
import { FlexBox, SegmentedControl, SegmentedControlItem, FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
import { useState } from 'react';
const Demo = () => {
const [variant, setVariant] = useState('single');
return (
<FlexBox flexDirection="column" alignItems="center" gap="40px" sx={{ width: '100%' }}>
<SegmentedControl value={variant} onValueChange={setVariant} sx={{ width: '100%', maxWidth: 320 }}>
<SegmentedControlItem value="single">Single</SegmentedControlItem>
<SegmentedControlItem value="horizontal">Horizontal</SegmentedControlItem>
<SegmentedControlItem value="vertical">Vertical</SegmentedControlItem>
</SegmentedControl>
<FallbackView platform="desktop">
<FallbackViewContent>
<FallbackViewText
title={`platform: desktop / variant: ${variant}`}
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea variant={variant}>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
{variant !== 'single' && (
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
)}
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
</FlexBox>
)
}
export default Demo;import { FlexBox, SegmentedControl, SegmentedControlItem, FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
import { useState } from 'react';
const Demo = () => {
const [variant, setVariant] = useState('single');
return (
<FlexBox flexDirection="column" alignItems="center" gap="40px" sx={{ width: '100%' }}>
<SegmentedControl value={variant} onValueChange={setVariant} sx={{ width: '100%', maxWidth: 320 }}>
<SegmentedControlItem value="single">Single</SegmentedControlItem>
<SegmentedControlItem value="horizontal">Horizontal</SegmentedControlItem>
<SegmentedControlItem value="vertical">Vertical</SegmentedControlItem>
</SegmentedControl>
<FallbackView platform="mobile">
<FallbackViewContent>
<FallbackViewText
title={`platform: mobile / variant: ${variant}`}
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea variant={variant}>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
{variant !== 'single' && (
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
)}
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
</FlexBox>
)
}
export default Demo;padding 옵션에 따라 상/하 패딩이 달라집니다.
- normal (default)
- compact
flex 레이아웃을 이용한 center 배치 보단, padding을 이용한 배치를 권장합니다.
import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView padding="normal">
<FallbackViewContent>
<FallbackViewText
title="padding: normal"
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;import { FallbackView, FallbackViewContent, FallbackViewText, FallbackViewActionArea, FallbackViewActionAreaButton } from '@montage-ui/core';
const Demo = () => {
return (
<FallbackView padding="compact">
<FallbackViewContent>
<FallbackViewText
title="padding: compact"
description={
<>
상황에 대한 설명이 들어가요.
<br />
설명은 최대 두 줄로 작성해요.
</>
}
/>
<FallbackViewActionArea>
<FallbackViewActionAreaButton>텍스트</FallbackViewActionAreaButton>
</FallbackViewActionArea>
</FallbackViewContent>
</FallbackView>
)
}
export default Demo;정해진 breakpoint에 따라 아래 옵션을 override 할 수 있습니다.
- platform
- padding
- width
FlexBox와 동일한 props를 사용합니다.
variant 외에는 FlexBox와 동일한 props를 사용합니다.
Button과 동일한 props를 사용합니다.
