import { DirectiveResult } from 'lit/directive.js'; import { StyledElement, StyleMap } from '../internals/StyledElement.js'; import { SidebarPermissionGuard } from '../layouts/SidebarPermission.js'; type ElementParts = 'host' | 'base' | 'icon' | 'label'; /** 링크 항목 디폴트 타입 */ export interface SidebarLinkConfig extends SidebarPermissionGuard { type: 'link'; icon?: string; lib?: string; label: string | DirectiveResult; href: string; pattern?: string | URLPattern; styles?: StyleMap; /** * 라우터가 가로채지 않고 브라우저의 문서 이동에 맡긴다 — 같은 오리진의 비-SPA 경로용. * * 실무 앱의 메뉴에는 SPA 화면만 서지 않는다: 도움말/문서 사이트, 리포트 출력 엔드포인트, * 관리 콘솔, 레거시 페이지가 같은 목록에 선다. 종전에는 그것을 **표현할 수 없어서** * 메뉴에 걸면 라우터가 클릭을 가로채 not-found 로 떨어졌다. * * ```ts * { type: 'link', label: '도움말', href: '/help/', navigate: 'document' } * ``` */ navigate?: 'router' | 'document'; /** * 앵커 `target`. 새 탭으로 열 때 쓴다. * * ⚠**`navigate` 를 대신하지 못한다** — `_blank` 는 **새 탭을 강제**하므로 「같은 탭에서 * 다른 문서로」를 표현할 수 없다. 그것이 종전에 유일한 탈출구였고, 그래서 부족했다. */ target?: '_self' | '_blank'; } /** * SidebarLink 컴포넌트는 계층형 네비게이션 아이템을 표시합니다. * 아이콘, 레이블, 하위 아이템을 지원합니다. */ export declare class SidebarLink extends StyledElement { static styles: import('lit').CSSResultGroup[]; /** selected 상태. `true`면 내부 ``에 `aria-current="page"`도 함께 세팅한다. */ selected: boolean; /** 콤팩트 모드 여부 */ compact: boolean; /** 네비게이션 아이템 데이터 */ icon?: string; /** `icon`을 해석할 등록 라이브러리 이름 */ lib?: string; /** 네비게이션 아이템 데이터 */ label?: string | DirectiveResult; /** 네비게이션 링크 */ href?: string; /** 네비게이션 패턴 매칭 */ pattern?: string | URLPattern; /** 라우터가 가로채지 않고 브라우저 문서 이동에 맡긴다 (같은 오리진의 비-SPA 경로) */ navigate?: 'router' | 'document'; /** 앵커 target — 새 탭으로 열 때 */ target?: '_self' | '_blank'; render(): import('lit-html').TemplateResult<1>; } export {};