@yeongseoksong/framework 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -2
- package/dist/ui/index.cjs +509 -268
- package/dist/ui/index.d.mts +56 -14
- package/dist/ui/index.d.ts +56 -14
- package/dist/ui/index.mjs +457 -218
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -170,11 +170,12 @@ import { SdTextBody } from '@yeongseoksong/framework/ui'
|
|
|
170
170
|
| `SdSolutionCard` | `SdSolutionCardItem` `SdSolutionCardGrid` |
|
|
171
171
|
| `SdClients` | `SdClientsGrid` `SdClientsMarquee` |
|
|
172
172
|
| `SdMap` | `SdMapSingle` `SdMapTabs` |
|
|
173
|
+
| `SdBreadcrumb` | `SdBreadcrumb` (변형 없는 단일 컴포넌트 — 이름 자체가 flat export) |
|
|
173
174
|
| `SdErrorView` | `SdErrorViewPage` `SdErrorViewNotFound` |
|
|
174
175
|
| `SdLoginView` | `SdLoginViewCard` `SdLoginViewSplit` |
|
|
175
176
|
| `SdResult` | `SdResultSuccess` `SdResultError` |
|
|
176
177
|
| `SdToast` | `SdToastSuccess` `SdToastError` `SdToastWarning` `SdToastInfo` `SdToastLoading` `SdToastUpdate` `SdToastHide` `SdToastClean` |
|
|
177
|
-
| `SdHeader` | `SdHeaderMega` `SdHeaderSimple` (`SdHeader` 자체는 `Mega`와 동일)
|
|
178
|
+
| `SdHeader` | `SdHeaderMega` `SdHeaderSimple` `SdHeaderPanel` (`SdHeader` 자체는 `Mega`와 동일) |
|
|
178
179
|
|
|
179
180
|
**클라이언트 컴포넌트에서는 네임스페이스 형태(`SdText.Body`)를 그대로 써도 됩니다.** `SdModal`은 `opened`/`onClose` 상태가 필요해 애초에 클라이언트 전용이므로 flat export가 없습니다.
|
|
180
181
|
|
|
@@ -435,6 +436,38 @@ const clients: ClientItem[] = [
|
|
|
435
436
|
<SdClients.Marquee items={clients} speed={40} />
|
|
436
437
|
```
|
|
437
438
|
|
|
439
|
+
### SdBreadcrumb
|
|
440
|
+
|
|
441
|
+
`SdHeader`와 **같은 `navItems`**를 넘기면, `parentId` 트리에서 현재 경로가 놓인 위치를 찾아
|
|
442
|
+
`홈 아이콘 > 조상 > … > 현재 페이지` 순의 브레드크럼을 그립니다. 마지막 크럼(현재 페이지)은
|
|
443
|
+
링크가 아닌 강조 텍스트로 렌더됩니다.
|
|
444
|
+
|
|
445
|
+
```tsx
|
|
446
|
+
import { SdBreadcrumb } from '@yeongseoksong/framework/ui'
|
|
447
|
+
|
|
448
|
+
// currentHref를 생략하면 usePathname()으로 현재 경로를 자동 추론합니다.
|
|
449
|
+
// 예: /about/company/history → 홈 > 소개 > 회사소개 > 연혁
|
|
450
|
+
<SdBreadcrumb navItems={navItems} />
|
|
451
|
+
|
|
452
|
+
// 명시적으로 경로를 줄 수도 있습니다(상세 페이지 등 정적으로 알고 있을 때).
|
|
453
|
+
<SdBreadcrumb navItems={navItems} currentHref="/about/company/history" />
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
- **자동 추론** — `currentHref`가 없으면 `next/navigation`의 `usePathname()`을 씁니다. Next.js 앱
|
|
457
|
+
라우터 컨텍스트 안에서 렌더해야 합니다.
|
|
458
|
+
- **접두 매칭** — 정확히 일치하는 `href`가 없으면, 현재 경로의 상위 경로인 `href` 중 가장 구체적인
|
|
459
|
+
것을 현재로 삼습니다. 목록(`/blog`) 아래 상세(`/blog/123`) 페이지에서 목록까지의 트레일이 잡힙니다.
|
|
460
|
+
- **홈 크럼** — 기본 `/`로 링크됩니다. `homeHref`/`homeLabel`로 바꿀 수 있습니다.
|
|
461
|
+
|
|
462
|
+
> **`PageLayout`에 기본 내장** — `PageLayout`(Image/Minimal/Brand/Plain)에 `navItems`를 넘기면
|
|
463
|
+
> 본문 최상단에 이 브레드크럼이 **자동으로** 붙습니다. `breadcrumb={false}`로 끄고, `currentHref`로
|
|
464
|
+
> 경로를 강제할 수 있습니다.
|
|
465
|
+
>
|
|
466
|
+
> ```tsx
|
|
467
|
+
> <PageLayout.Minimal navItems={navItems} title="제조">…</PageLayout.Minimal> // 브레드크럼 자동
|
|
468
|
+
> <PageLayout.Minimal navItems={navItems} breadcrumb={false} title="제조">…</PageLayout.Minimal> // 끄기
|
|
469
|
+
> ```
|
|
470
|
+
|
|
438
471
|
### SdHeader / SdFooter
|
|
439
472
|
|
|
440
473
|
```tsx
|
|
@@ -491,6 +524,15 @@ const policyLinks: NavItem[] = [
|
|
|
491
524
|
<SdHeader.Simple navItems={navItems} loginFlag />
|
|
492
525
|
```
|
|
493
526
|
|
|
527
|
+
바 높이는 `Simple`처럼 60px로 고정하되 드롭다운 내부는 `Mega`와 같은 그룹 컬럼으로 펼치고 싶다면
|
|
528
|
+
`SdHeader.Panel`(서버 컴포넌트에서는 `SdHeaderPanel`)을 씁니다. 상위 항목마다 붙는 개별 `Menu`는 그대로지만,
|
|
529
|
+
드롭다운 안을 `Menu.Item`/`Menu.Sub` 플라이아웃 대신 자식 링크 + 손자를 자식 아래 하위 링크로 얹은
|
|
530
|
+
세로 패널로 채웁니다. 모바일 드로어는 다른 변형과 동일합니다.
|
|
531
|
+
|
|
532
|
+
```tsx
|
|
533
|
+
<SdHeader.Panel navItems={navItems} loginFlag />
|
|
534
|
+
```
|
|
535
|
+
|
|
494
536
|
`navItems`는 같은 `parentId` 구조로 푸터 링크 컬럼도 만들고, 구분선 아래 하단 바에 카피라이트 · `policyLinks` · `company.socials` 아이콘이 놓입니다.
|
|
495
537
|
`socials.platform`은 `x | youtube | instagram | facebook | linkedin | github | blog`를 지원합니다.
|
|
496
538
|
|
|
@@ -734,7 +776,7 @@ export default function Page() {
|
|
|
734
776
|
}
|
|
735
777
|
```
|
|
736
778
|
|
|
737
|
-
`headerVariant`로 어떤 헤더를 쓸지 고릅니다 — `mega`(기본, hover 시 확장되는 메가 메뉴)
|
|
779
|
+
`headerVariant`로 어떤 헤더를 쓸지 고릅니다 — `mega`(기본, hover 시 확장되는 메가 메뉴), `simple`(바 높이 고정 + 항목별 드롭다운), `panel`(바 높이 고정 + 드롭다운 내부를 Mega식 그룹 컬럼으로).
|
|
738
780
|
|
|
739
781
|
```tsx
|
|
740
782
|
<MainLayout navItems={navItems} companyInfo={company} headerVariant="simple" loginFlag>
|