import { ElementType, PropsWithChildren } from 'react'; import { GNBListRootProps, GNBListItemProps, UserInfoProps } from './GNBList.types'; /** * GNB 리스트의 루트 컴포넌트 * * @description * GNB 리스트의 컨테이너 역할을 합니다. * - withUserInfo prop에 따라 스타일 자동 조정 * * @param {Object} props * @param {boolean} [props.withUserInfo=false] - 사용자 정보 포함 여부 * @param {string} [props.className] - 추가 CSS 클래스 * @param {ReactNode} props.children - 메뉴 구성 요소 (UserInfo, List, SubList) * * @example * // 기본 메뉴 리스트 * * * 프로젝트 * 설정 * * * * @example * // 사용자 정보 포함 메뉴 * * * * 계정 설정 * * * 로그아웃 * * */ declare const Root: ({ withUserInfo, children, className, }: GNBListRootProps) => import("react/jsx-runtime").JSX.Element; /** * 사용자 정보 컴포넌트 * * @description * 사용자의 프로필 이미지, 이름, 이메일을 표시합니다. * * @param {Object} props * @param {string} [props.imgUrl] - 프로필 이미지 URL * @param {string} [props.username] - 사용자 이름 * @param {string} [props.email] - 사용자 이메일 * @param {() => void} [props.onClick] - 프로필 이미지 클릭 핸들러 * @param {ReactNode} [props.children] - 액션 버튼 (예: 프로필 수정, 내 프로젝트) * * @example * handleProfileEdit()} * > * * * */ declare const UserInfo: ({ imgUrl, username, email, children, onClick, }: UserInfoProps) => import("react/jsx-runtime").JSX.Element; /** * 메인 메뉴 리스트 컴포넌트 * * @description * 주요 메뉴 아이템들을 담는 컨테이너입니다. * - 텍스트 색상 gray-900 (주요 메뉴) * * @param {Object} props * @param {ReactNode} props.children - 메뉴 아이템들 (Item 컴포넌트) * * @example * * 프로젝트 * 의뢰하기 * 고객센터 * */ declare const List: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element; /** * 서브 메뉴 리스트 컴포넌트 * * @description * 부가적인 메뉴 아이템들을 담는 컨테이너입니다. * - 텍스트 색상 gray-600 (보조 메뉴) * * @param {Object} props * @param {ReactNode} props.children - 서브 메뉴 아이템들 (Item 컴포넌트) * * @example * * 설정 * 로그아웃 * */ declare const SubList: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element; /** * 메뉴 아이템 컴포넌트 * * @description * 개별 메뉴 아이템을 렌더링합니다. * - 기본은 `` 태그이며, `as` prop으로 Next.js Link 등 임의의 컴포넌트 주입 가능 * - 키보드 포커스 및 hover 스타일 지원 * * @param {Object} props * @param {string} props.href - 이동할 페이지 경로 (필수) * @param {ElementType} [props.as='a'] - anchor로 렌더할 컴포넌트 (예: next/link) * @param {ReactNode} props.children - 메뉴 텍스트 * @param {boolean} [props.hasNew=false] - New 뱃지 표시 여부 * @param {string} [props.className] - Link에 적용할 추가 CSS 클래스 * @param {string} [props.textClassName] - 텍스트에 적용할 CSS 클래스 * * @example * // 기본 사용 * * 계정 설정 * * * @example * // New 뱃지 포함 * * 새로운 기능 * * * @example * // 커스텀 스타일 * * 특별 메뉴 * */ declare const Item: ({ hasNew, children, className, textClassName, href, as, ...rest }: GNBListItemProps) => import("react/jsx-runtime").JSX.Element; export { Root, UserInfo, List, SubList, Item };