# Scroll Fog URL: /lynx/components/scroll-fog Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/components/scroll-fog.mdx 스크롤 가능한 영역에서 사용자에게 추가 콘텐츠가 있음을 시각적으로 알려주는 힌트 역할을 합니다. 사용 가능 버전: @seed-design/lynx-react@1.0.0 ## Preview ```tsx import "./styles"; import { Box, ScrollFog, Text, VStack, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 20 }, (_, index) => index + 1); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( {ITEMS.map((item) => ( 콘텐츠 {item} ))} ); } ``` Scroll Fog는 완전한 Scroll Area보다 간단한 스크롤 힌트를 위한 컴포넌트입니다. 스크롤 영역 위에 Rootage의 `gradient.fade-mask`를 사용하는 별도의 비인터랙티브 mask layer를 표시합니다. ## Installation - npm: npm install @seed-design/lynx-react - pnpm: pnpm add @seed-design/lynx-react - yarn: yarn add @seed-design/lynx-react - bun: bun add @seed-design/lynx-react Lynx의 `ScrollFog`는 Registry snippet이나 Recipe 없이 `@seed-design/lynx-react` 패키지에서 직접 제공합니다. ## Usage `ScrollFog`는 React 버전과 동일하게 임의 방향의 `placement`, 공통 `size`, 방향별 `sizes`, `hideScrollBar`를 지원합니다. `placement`에 `top`, `bottom`, `left`, `right`를 원하는 조합으로 지정할 수 있습니다. Fog 레이어는 터치 입력을 가로채지 않으므로 콘텐츠를 스크롤하거나 조작할 수 있습니다. ```tsx import { ScrollFog } from "@seed-design/lynx-react"; export function App() { return ( 스크롤할 콘텐츠 ); } ``` ## Props ### Scroll Fog ## Examples ### Padding ScrollFog는 항상 fog 효과를 표시하므로, 지정된 방향에 충분한 padding이 필요합니다. - **최소 padding**: 20px을 유지해야 합니다. - **화면 전체를 차지하는 세로 스크롤**: 하단 80px, 상단 20px padding을 권장합니다. - **가로 스크롤**: 좌우 20px padding을 권장합니다. ```tsx // 상하 스크롤 - 상하 padding 필요 ... // 좌우 스크롤 - 좌우 padding 필요 ... ``` ### Horizontal Scroll 가로 스크롤이 필요한 경우 `placement={["left", "right"]}`를 사용하여 좌우 fog 효과를 적용할 수 있습니다. 콘텐츠가 잘리지 않도록 좌우 20px padding을 제공하세요. ```tsx import "./styles"; import { Box, HStack, ScrollFog, Text, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 15 }, (_, index) => index + 1); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( {ITEMS.map((item) => ( 항목 {item} ))} ); } ``` ### Size `size`를 사용해 모든 방향의 fog 크기를 한 번에 조절할 수 있습니다. `sizes`를 사용하면 각 방향의 크기를 다르게 지정할 수 있습니다. ```tsx import "./styles"; import { Box, ScrollFog, Text, VStack, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 20 }, (_, index) => index + 1); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( fog size: 40px {ITEMS.map((item) => ( 콘텐츠 {item} ))} ); } ``` ```tsx import "./styles"; import { Box, ScrollFog, Text, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 100 }, (_, index) => index + 1); const ROWS = Array.from({ length: 10 }, (_, rowIndex) => ({ id: rowIndex + 1, items: ITEMS.slice(rowIndex * 10, rowIndex * 10 + 10), })); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( {ROWS.map((row) => ( {row.items.map((item) => ( {item} ))} ))} ); } ``` ### All Directions 2D 스크롤이 필요한 경우 `placement={["top", "bottom", "left", "right"]}`를 사용하여 모든 방향에 fog 효과를 적용할 수 있습니다. ```tsx import "./styles"; import { Box, ScrollFog, Text, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 100 }, (_, index) => index + 1); const ROWS = Array.from({ length: 10 }, (_, rowIndex) => ({ id: rowIndex + 1, items: ITEMS.slice(rowIndex * 10, rowIndex * 10 + 10), })); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( {ROWS.map((row) => ( {row.items.map((item) => ( {item} ))} ))} ); } ``` ### Hide Scrollbar `hideScrollBar`를 사용하면 fog 효과는 유지하면서 스크롤바를 숨길 수 있습니다. ```tsx import "./styles"; import { Box, ScrollFog, Text, VStack, useSeedClassName } from "@seed-design/lynx-react"; const ITEMS = Array.from({ length: 20 }, (_, index) => index + 1); export default function Example() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( hideScrollBar: true {ITEMS.map((item) => ( 콘텐츠 {item} ))} ); } ```