@yeongseoksong/framework 1.4.0 → 1.6.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.
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as _mantine_core from '@mantine/core';
3
- import { MantineSize, TabsProps, TabsListProps, TabsPanelProps, TitleProps, TextProps, ButtonProps, BoxProps, TableProps, ModalProps, ThemeIconProps, ContainerProps, BadgeProps, TextInputProps, PasswordInputProps, TextareaProps, JsonInputProps, NumberInputProps, SliderProps, InputWrapperProps, RatingProps, PinInputProps, SelectProps, NativeSelectProps, MultiSelectProps, AutocompleteProps, TagsInputProps, RadioGroupProps, SegmentedControlProps, CheckboxProps, SwitchProps, FileInputProps, ColorInputProps, SkeletonProps, AnchorProps, StackProps, StyleProp, MantineColor, SimpleGridProps, CardProps as CardProps$1, MantineColorsTuple } from '@mantine/core';
3
+ import { MantineSize, TabsProps, TabsListProps, TabsPanelProps, TitleProps, TextProps, ButtonProps, BoxProps, TableProps, ModalProps, ThemeIconProps, ContainerProps, BadgeProps, TextInputProps, PasswordInputProps, TextareaProps, JsonInputProps, NumberInputProps, SliderProps, InputWrapperProps, RatingProps, PinInputProps, SelectProps, NativeSelectProps, MultiSelectProps, AutocompleteProps, TagsInputProps, RadioGroupProps, SegmentedControlProps, CheckboxProps, SwitchProps, FileInputProps, ColorInputProps, SkeletonProps, AnchorProps, StackProps, StyleProp, MantineColor, SimpleGridProps, CardProps as CardProps$1, MantineThemeOverride, MantineColorScheme, MantineColorsTuple } from '@mantine/core';
4
4
  import React$1, { ReactNode, ComponentPropsWithoutRef, AnchorHTMLAttributes } from 'react';
5
5
  import * as _mantine_core_lib_components_Modal_ModalCloseButton from '@mantine/core/lib/components/Modal/ModalCloseButton';
6
6
  import * as _mantine_core_lib_components_Modal_ModalBody from '@mantine/core/lib/components/Modal/ModalBody';
@@ -14,10 +14,13 @@ interface LogoProps {
14
14
  }
15
15
  declare function Logo(_props: LogoProps): react_jsx_runtime.JSX.Element;
16
16
 
17
+ type SdTabsRootProps = TabsProps & {
18
+ syncHash?: boolean;
19
+ };
17
20
  declare function SdPanel({ children, ...props }: TabsPanelProps): react_jsx_runtime.JSX.Element;
18
21
  declare const SdTabs: {
19
22
  Pills: {
20
- (props: TabsProps): react_jsx_runtime.JSX.Element;
23
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
21
24
  List: _mantine_core.MantineComponent<{
22
25
  props: TabsListProps;
23
26
  ref: HTMLDivElement;
@@ -33,7 +36,7 @@ declare const SdTabs: {
33
36
  Panel: typeof SdPanel;
34
37
  };
35
38
  Underline: {
36
- (props: TabsProps): react_jsx_runtime.JSX.Element;
39
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
37
40
  List: _mantine_core.MantineComponent<{
38
41
  props: TabsListProps;
39
42
  ref: HTMLDivElement;
@@ -49,7 +52,7 @@ declare const SdTabs: {
49
52
  Panel: typeof SdPanel;
50
53
  };
51
54
  Outline: {
52
- (props: TabsProps): react_jsx_runtime.JSX.Element;
55
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
53
56
  List: _mantine_core.MantineComponent<{
54
57
  props: TabsListProps;
55
58
  ref: HTMLDivElement;
@@ -66,7 +69,7 @@ declare const SdTabs: {
66
69
  };
67
70
  };
68
71
  declare const SdTabsPills: {
69
- (props: TabsProps): react_jsx_runtime.JSX.Element;
72
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
70
73
  List: _mantine_core.MantineComponent<{
71
74
  props: TabsListProps;
72
75
  ref: HTMLDivElement;
@@ -82,7 +85,7 @@ declare const SdTabsPills: {
82
85
  Panel: typeof SdPanel;
83
86
  };
84
87
  declare const SdTabsUnderline: {
85
- (props: TabsProps): react_jsx_runtime.JSX.Element;
88
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
86
89
  List: _mantine_core.MantineComponent<{
87
90
  props: TabsListProps;
88
91
  ref: HTMLDivElement;
@@ -98,7 +101,7 @@ declare const SdTabsUnderline: {
98
101
  Panel: typeof SdPanel;
99
102
  };
100
103
  declare const SdTabsOutline: {
101
- (props: TabsProps): react_jsx_runtime.JSX.Element;
104
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
102
105
  List: _mantine_core.MantineComponent<{
103
106
  props: TabsListProps;
104
107
  ref: HTMLDivElement;
@@ -900,6 +903,24 @@ declare const SdMap: {
900
903
  declare const SdMapSingle: typeof Single;
901
904
  declare const SdMapTabs: typeof Tabs;
902
905
 
906
+ interface SdBreadcrumbProps extends BoxProps {
907
+ navItems?: NavItem[];
908
+ /** 현재 경로. 생략하면 `usePathname()`으로 자동 추론한다. */
909
+ currentHref?: string;
910
+ /** 홈(첫 크럼) 링크 대상. 기본 `/`. */
911
+ homeHref?: string;
912
+ /** 홈 아이콘의 접근성 라벨. 기본 `홈`. */
913
+ homeLabel?: string;
914
+ }
915
+ /**
916
+ * 네비게이션 계층 기반 브레드크럼 — `홈 아이콘 > a > b > c`.
917
+ *
918
+ * navItems의 `parentId` 트리에서 현재 경로가 놓인 위치를 찾아 루트까지의 경로를 그린다.
919
+ * 조상 크럼은 클릭 가능한 링크(`SdLink.Sub`), 마지막(현재 페이지) 크럼은 href 없는
920
+ * `SdLink.Body`라 링크가 아닌 강조 텍스트(`SdText.Body`)로 폴백해 현재 위치를 나타낸다.
921
+ */
922
+ declare function SdBreadcrumb({ navItems: navItemsProp, currentHref, homeHref, homeLabel, ...boxProps }: SdBreadcrumbProps): react_jsx_runtime.JSX.Element;
923
+
903
924
  interface HeroCarouselProps {
904
925
  slides: HeroSlide[];
905
926
  children?: React$1.ReactNode;
@@ -921,12 +942,21 @@ declare function MegaHeader({ navItems, loginFlag }: HeaderProps): react_jsx_run
921
942
  * 바가 자라지 않으므로 AppShell.Header 높이를 그대로 쓰는 레이아웃에 적합하다.
922
943
  */
923
944
  declare function SimpleHeader({ navItems, loginFlag }: HeaderProps): react_jsx_runtime.JSX.Element;
945
+ /**
946
+ * Panel 변형 — Simple처럼 바 높이는 60px로 고정하고 상위 항목마다 Mantine `Menu`가 붙지만,
947
+ * 드롭다운 내부는 Mega와 동일한 그룹 레이아웃으로 편다: 손자가 없는 자식은 단일 링크,
948
+ * 손자가 있는 자식은 그룹 제목(`SdLink.Body`) 아래로 손자를 `SdLink.Sub`로 얹는다.
949
+ * Simple의 개별 드롭다운 안정성 + Mega의 풍부한 그룹 구성이 함께 필요할 때 쓴다.
950
+ */
951
+ declare function PanelHeader({ navItems, loginFlag }: HeaderProps): react_jsx_runtime.JSX.Element;
924
952
  declare const SdHeader: typeof MegaHeader & {
925
953
  Mega: typeof MegaHeader;
926
954
  Simple: typeof SimpleHeader;
955
+ Panel: typeof PanelHeader;
927
956
  };
928
957
  declare const SdHeaderMega: typeof MegaHeader;
929
958
  declare const SdHeaderSimple: typeof SimpleHeader;
959
+ declare const SdHeaderPanel: typeof PanelHeader;
930
960
 
931
961
  interface SdFooterProps {
932
962
  company: CompanyInfo;
@@ -1065,17 +1095,29 @@ declare const SdResultSuccess: ({ title, description, primaryAction, secondaryAc
1065
1095
  declare const SdResultError: ({ title, description, primaryAction, secondaryAction, children, mih, }: SdResultProps) => react_jsx_runtime.JSX.Element;
1066
1096
 
1067
1097
  /** 헤더 변형 선택자 — SdHeader의 네임스페이스 키와 1:1로 대응한다. */
1068
- type HeaderVariant = 'mega' | 'simple';
1098
+ type HeaderVariant = 'mega' | 'simple' | 'panel';
1069
1099
  declare function MainLayout({ children, navItems, companyInfo, loginFlag, headerVariant, }: {
1070
1100
  children: React.ReactNode;
1071
1101
  navItems: NavItem[];
1072
1102
  companyInfo: CompanyInfo;
1073
1103
  loginFlag?: boolean;
1074
- /** 기본 `mega` — hover 시 헤더가 확장되는 메가 메뉴. `simple`은 바 높이 고정 + 개별 드롭다운. */
1104
+ /** 기본 `mega` — hover 시 헤더가 확장되는 메가 메뉴. `simple`은 바 높이 고정 + 개별 드롭다운. `panel`은 바 높이 고정 + 드롭다운 내부를 Mega식 그룹 컬럼으로. */
1075
1105
  headerVariant?: HeaderVariant;
1076
1106
  }): react_jsx_runtime.JSX.Element;
1077
1107
 
1078
- interface PageHeroBaseProps {
1108
+ /**
1109
+ * 모든 변형이 공유하는 브레드크럼 설정.
1110
+ * `navItems`가 있고 `breadcrumb`이 false가 아니면 본문 최상단에 브레드크럼을 그린다.
1111
+ */
1112
+ interface BreadcrumbProps {
1113
+ /** 브레드크럼용 네비 트리. 없으면 브레드크럼을 렌더하지 않는다. */
1114
+ navItems?: NavItem[];
1115
+ /** 브레드크럼 표시 여부. 기본 `true` — `navItems`가 있을 때만 실제로 그려진다. `false`로 끈다. */
1116
+ breadcrumb?: boolean;
1117
+ /** 현재 경로 강제 지정. 생략 시 `SdBreadcrumb`가 `usePathname()`으로 추론한다. */
1118
+ currentHref?: string;
1119
+ }
1120
+ interface PageHeroBaseProps extends BreadcrumbProps {
1079
1121
  label?: ReactNode;
1080
1122
  title: ReactNode;
1081
1123
  description?: ReactNode;
@@ -1084,12 +1126,12 @@ interface PageHeroBaseProps {
1084
1126
  interface WithImageProps extends PageHeroBaseProps {
1085
1127
  image?: string;
1086
1128
  }
1087
- declare function Minimal({ label, title, description, children }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1088
- declare function Plain({ children }: {
1129
+ declare function Minimal({ label, title, description, children, navItems, breadcrumb, currentHref, }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1130
+ declare function Plain({ children, navItems, breadcrumb, currentHref, }: BreadcrumbProps & {
1089
1131
  children: ReactNode;
1090
1132
  }): react_jsx_runtime.JSX.Element;
1091
- declare function Image({ image, label, title, description, children }: WithImageProps): react_jsx_runtime.JSX.Element;
1092
- declare function Brand({ label, title, description, children }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1133
+ declare function Image({ image, label, title, description, children, navItems, breadcrumb, currentHref, }: WithImageProps): react_jsx_runtime.JSX.Element;
1134
+ declare function Brand({ label, title, description, children, navItems, breadcrumb, currentHref, }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1093
1135
  declare const PageLayout: {
1094
1136
  /** 사진 배경 + 하단 스크림 + 좌측 정렬 텍스트 */
1095
1137
  Image: typeof Image;
@@ -1105,6 +1147,46 @@ declare const PageLayoutMinimal: typeof Minimal;
1105
1147
  declare const PageLayoutBrand: typeof Brand;
1106
1148
  declare const PageLayoutPlain: typeof Plain;
1107
1149
 
1150
+ /**
1151
+ * 소비자 앱의 **프로바이더/컨텍스트 조립**을 한 컴포넌트로 묶는다 —
1152
+ * `MantineProvider`(테마) + `SdToastProvider`(토스트 렌더 지점) + `NavProvider`(navItems Context).
1153
+ * 소비자는 이 셋을 매번 손으로 쌓는 대신 `<SdProvider>` 하나만 렌더한다.
1154
+ *
1155
+ * 헤더/푸터 크롬(`MainLayout`)이나 페이지 템플릿(`PageLayout`)은 여기 넣지 않는다 —
1156
+ * 그건 페이지마다 다를 수 있는 **레이아웃**이라 소비자가 `SdProvider` 안쪽에 직접 배치한다.
1157
+ * `SdProvider`가 `NavProvider`로 감싸므로 그 아래 `MainLayout`/`SdBreadcrumb`는 navItems를
1158
+ * Context에서 읽는다(브레드크럼은 prop 없이 동작).
1159
+ *
1160
+ * 담지 않는 것:
1161
+ * - 회사명/로고는 여기 없다 — `NEXT_PUBLIC_*` env var로 남는다. `t()`가 서버
1162
+ * 컴포넌트인 `SdText`/`SdTitle` 안에서 돌기 때문에 Context로 옮기면 `ui/`
1163
+ * 트리 전체가 client가 되어 flat export/서버 렌더 이점을 잃는다. (CLAUDE.md
1164
+ * §Consumer Config Injection 참고.)
1165
+ * - `ColorSchemeScript`와 Mantine CSS import는 `<head>`/서버 layout 몫이라
1166
+ * 여기서 빼둔다.
1167
+ *
1168
+ * 색상 오버라이드는 소비자의 `"use client"` 모듈에서 `mergeThemeOverrides(theme, …)`
1169
+ * 로 합친 결과를 `theme` prop에 넘긴다. 생략하면 프레임워크 기본 테마를 쓴다.
1170
+ */
1171
+ declare function SdProvider({ children, theme, navItems, defaultColorScheme, }: {
1172
+ children: React.ReactNode;
1173
+ /** 생략 시 프레임워크 기본 테마. 색 오버라이드는 `mergeThemeOverrides`로 합쳐 넘긴다. */
1174
+ theme?: MantineThemeOverride;
1175
+ navItems: NavItem[];
1176
+ defaultColorScheme?: MantineColorScheme;
1177
+ }): react_jsx_runtime.JSX.Element;
1178
+
1179
+ /**
1180
+ * navItems를 하위 트리에 제공한다. `SdProvider`가 자동으로 감싸므로, 그 아래의
1181
+ * `SdBreadcrumb`는 `navItems` prop 없이도 동작한다.
1182
+ */
1183
+ declare function NavProvider({ children, navItems, }: {
1184
+ children: React.ReactNode;
1185
+ navItems: NavItem[];
1186
+ }): react_jsx_runtime.JSX.Element;
1187
+ /** 가장 가까운 `NavProvider`가 제공하는 navItems. Provider가 없으면 빈 배열. */
1188
+ declare function useNav(): NavItem[];
1189
+
1108
1190
  declare const theme: {
1109
1191
  focusRing?: "auto" | "always" | "never" | undefined;
1110
1192
  scale?: number | undefined;
@@ -1253,4 +1335,4 @@ declare const theme: {
1253
1335
  } | undefined;
1254
1336
  };
1255
1337
 
1256
- export { type HeaderVariant, HeroCarousel, Logo, MainLayout, type NavItem, PageLayout, PageLayoutBrand, PageLayoutImage, PageLayoutMinimal, PageLayoutPlain, SdBadge, SdBadgeDefault, SdBadgePrimary, SdBadgeSuccess, SdBadgeWarning, SdButton, SdButtonCancel, SdButtonDelete, SdButtonDownload, SdButtonExcel, SdButtonGhost, SdButtonOutline, SdButtonPrimary, SdButtonSecondary, SdButtonSubmit, SdButtonWhite, SdClients, SdClientsGrid, SdClientsMarquee, SdContainer, SdCta, SdCtaBanner, SdCtaInline, SdCtaSubtle, SdErrorView, SdErrorViewNotFound, SdErrorViewPage, SdFaq, SdFaqDefault, SdFaqFilled, SdFaqWithHeader, SdFeatureSection, SdFeatures, SdFooter, SdHeader, SdHeaderMega, SdHeaderSimple, SdInput, SdInputAutocomplete, SdInputCheckbox, SdInputColor, SdInputDate, SdInputDateRange, SdInputEmail, SdInputFile, SdInputJson, SdInputMultiSelect, SdInputNativeSelect, SdInputNumber, SdInputPassword, SdInputPinCode, SdInputRadioGroup, SdInputRating, SdInputSegmented, SdInputSelect, SdInputSlider, SdInputSwitch, SdInputTags, SdInputText, SdInputTextarea, SdInputTime, SdLink, SdLinkBody, SdLinkHint, SdLinkStrong, SdLinkSub, SdLoginView, SdLoginViewCard, SdLoginViewSplit, SdMap, SdMapSingle, SdMapTabs, SdModal, SdNumberIcon, SdPricingCard, SdPricingCardDefault, SdPricingCardFeatured, SdPricingCardGrid, SdQuote, SdQuoteCard, SdQuotePlain, SdResult, SdResultError, SdResultSuccess, SdSkeleton, SdSkeletonAvatar, SdSkeletonCard, SdSkeletonImage, SdSkeletonText, SdSkeletonTitle, SdSolution, SdSolutionCard, SdSolutionCardGrid, SdSolutionCardItem, SdSolutionFiltered, SdSolutionList, SdSteps, SdStepsBubble, SdStepsCard, SdStepsSection, SdStepsStrip, SdTable, SdTableSpec, SdTabs, SdTabsOutline, SdTabsPills, SdTabsUnderline, SdTestimonial, SdTestimonialCard, SdTestimonialGrid, SdTestimonialStrip, SdText, SdTextBody, SdTextBox, SdTextBoxCard, SdTextBoxHero, SdTextBoxSection, SdTextBoxSub, SdTextError, SdTextEyebrow, SdTextHint, SdTextNumeric, SdTextStrong, SdTextSub, SdTimeline, SdTimelineSection, SdTitle, SdTitleCard, SdTitleDisplay, SdTitleSection, SdTitleSub, SdToast, SdToastClean, SdToastError, SdToastHide, SdToastInfo, SdToastLoading, SdToastProvider, SdToastSuccess, SdToastUpdate, SdToastWarning, theme };
1338
+ export { type HeaderVariant, HeroCarousel, Logo, MainLayout, type NavItem, NavProvider, PageLayout, PageLayoutBrand, PageLayoutImage, PageLayoutMinimal, PageLayoutPlain, SdBadge, SdBadgeDefault, SdBadgePrimary, SdBadgeSuccess, SdBadgeWarning, SdBreadcrumb, SdButton, SdButtonCancel, SdButtonDelete, SdButtonDownload, SdButtonExcel, SdButtonGhost, SdButtonOutline, SdButtonPrimary, SdButtonSecondary, SdButtonSubmit, SdButtonWhite, SdClients, SdClientsGrid, SdClientsMarquee, SdContainer, SdCta, SdCtaBanner, SdCtaInline, SdCtaSubtle, SdErrorView, SdErrorViewNotFound, SdErrorViewPage, SdFaq, SdFaqDefault, SdFaqFilled, SdFaqWithHeader, SdFeatureSection, SdFeatures, SdFooter, SdHeader, SdHeaderMega, SdHeaderPanel, SdHeaderSimple, SdInput, SdInputAutocomplete, SdInputCheckbox, SdInputColor, SdInputDate, SdInputDateRange, SdInputEmail, SdInputFile, SdInputJson, SdInputMultiSelect, SdInputNativeSelect, SdInputNumber, SdInputPassword, SdInputPinCode, SdInputRadioGroup, SdInputRating, SdInputSegmented, SdInputSelect, SdInputSlider, SdInputSwitch, SdInputTags, SdInputText, SdInputTextarea, SdInputTime, SdLink, SdLinkBody, SdLinkHint, SdLinkStrong, SdLinkSub, SdLoginView, SdLoginViewCard, SdLoginViewSplit, SdMap, SdMapSingle, SdMapTabs, SdModal, SdNumberIcon, SdPricingCard, SdPricingCardDefault, SdPricingCardFeatured, SdPricingCardGrid, SdProvider, SdQuote, SdQuoteCard, SdQuotePlain, SdResult, SdResultError, SdResultSuccess, SdSkeleton, SdSkeletonAvatar, SdSkeletonCard, SdSkeletonImage, SdSkeletonText, SdSkeletonTitle, SdSolution, SdSolutionCard, SdSolutionCardGrid, SdSolutionCardItem, SdSolutionFiltered, SdSolutionList, SdSteps, SdStepsBubble, SdStepsCard, SdStepsSection, SdStepsStrip, SdTable, SdTableSpec, SdTabs, SdTabsOutline, SdTabsPills, SdTabsUnderline, SdTestimonial, SdTestimonialCard, SdTestimonialGrid, SdTestimonialStrip, SdText, SdTextBody, SdTextBox, SdTextBoxCard, SdTextBoxHero, SdTextBoxSection, SdTextBoxSub, SdTextError, SdTextEyebrow, SdTextHint, SdTextNumeric, SdTextStrong, SdTextSub, SdTimeline, SdTimelineSection, SdTitle, SdTitleCard, SdTitleDisplay, SdTitleSection, SdTitleSub, SdToast, SdToastClean, SdToastError, SdToastHide, SdToastInfo, SdToastLoading, SdToastProvider, SdToastSuccess, SdToastUpdate, SdToastWarning, theme, useNav };
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as _mantine_core from '@mantine/core';
3
- import { MantineSize, TabsProps, TabsListProps, TabsPanelProps, TitleProps, TextProps, ButtonProps, BoxProps, TableProps, ModalProps, ThemeIconProps, ContainerProps, BadgeProps, TextInputProps, PasswordInputProps, TextareaProps, JsonInputProps, NumberInputProps, SliderProps, InputWrapperProps, RatingProps, PinInputProps, SelectProps, NativeSelectProps, MultiSelectProps, AutocompleteProps, TagsInputProps, RadioGroupProps, SegmentedControlProps, CheckboxProps, SwitchProps, FileInputProps, ColorInputProps, SkeletonProps, AnchorProps, StackProps, StyleProp, MantineColor, SimpleGridProps, CardProps as CardProps$1, MantineColorsTuple } from '@mantine/core';
3
+ import { MantineSize, TabsProps, TabsListProps, TabsPanelProps, TitleProps, TextProps, ButtonProps, BoxProps, TableProps, ModalProps, ThemeIconProps, ContainerProps, BadgeProps, TextInputProps, PasswordInputProps, TextareaProps, JsonInputProps, NumberInputProps, SliderProps, InputWrapperProps, RatingProps, PinInputProps, SelectProps, NativeSelectProps, MultiSelectProps, AutocompleteProps, TagsInputProps, RadioGroupProps, SegmentedControlProps, CheckboxProps, SwitchProps, FileInputProps, ColorInputProps, SkeletonProps, AnchorProps, StackProps, StyleProp, MantineColor, SimpleGridProps, CardProps as CardProps$1, MantineThemeOverride, MantineColorScheme, MantineColorsTuple } from '@mantine/core';
4
4
  import React$1, { ReactNode, ComponentPropsWithoutRef, AnchorHTMLAttributes } from 'react';
5
5
  import * as _mantine_core_lib_components_Modal_ModalCloseButton from '@mantine/core/lib/components/Modal/ModalCloseButton';
6
6
  import * as _mantine_core_lib_components_Modal_ModalBody from '@mantine/core/lib/components/Modal/ModalBody';
@@ -14,10 +14,13 @@ interface LogoProps {
14
14
  }
15
15
  declare function Logo(_props: LogoProps): react_jsx_runtime.JSX.Element;
16
16
 
17
+ type SdTabsRootProps = TabsProps & {
18
+ syncHash?: boolean;
19
+ };
17
20
  declare function SdPanel({ children, ...props }: TabsPanelProps): react_jsx_runtime.JSX.Element;
18
21
  declare const SdTabs: {
19
22
  Pills: {
20
- (props: TabsProps): react_jsx_runtime.JSX.Element;
23
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
21
24
  List: _mantine_core.MantineComponent<{
22
25
  props: TabsListProps;
23
26
  ref: HTMLDivElement;
@@ -33,7 +36,7 @@ declare const SdTabs: {
33
36
  Panel: typeof SdPanel;
34
37
  };
35
38
  Underline: {
36
- (props: TabsProps): react_jsx_runtime.JSX.Element;
39
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
37
40
  List: _mantine_core.MantineComponent<{
38
41
  props: TabsListProps;
39
42
  ref: HTMLDivElement;
@@ -49,7 +52,7 @@ declare const SdTabs: {
49
52
  Panel: typeof SdPanel;
50
53
  };
51
54
  Outline: {
52
- (props: TabsProps): react_jsx_runtime.JSX.Element;
55
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
53
56
  List: _mantine_core.MantineComponent<{
54
57
  props: TabsListProps;
55
58
  ref: HTMLDivElement;
@@ -66,7 +69,7 @@ declare const SdTabs: {
66
69
  };
67
70
  };
68
71
  declare const SdTabsPills: {
69
- (props: TabsProps): react_jsx_runtime.JSX.Element;
72
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
70
73
  List: _mantine_core.MantineComponent<{
71
74
  props: TabsListProps;
72
75
  ref: HTMLDivElement;
@@ -82,7 +85,7 @@ declare const SdTabsPills: {
82
85
  Panel: typeof SdPanel;
83
86
  };
84
87
  declare const SdTabsUnderline: {
85
- (props: TabsProps): react_jsx_runtime.JSX.Element;
88
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
86
89
  List: _mantine_core.MantineComponent<{
87
90
  props: TabsListProps;
88
91
  ref: HTMLDivElement;
@@ -98,7 +101,7 @@ declare const SdTabsUnderline: {
98
101
  Panel: typeof SdPanel;
99
102
  };
100
103
  declare const SdTabsOutline: {
101
- (props: TabsProps): react_jsx_runtime.JSX.Element;
104
+ ({ syncHash, value, onChange, ...props }: SdTabsRootProps): react_jsx_runtime.JSX.Element;
102
105
  List: _mantine_core.MantineComponent<{
103
106
  props: TabsListProps;
104
107
  ref: HTMLDivElement;
@@ -900,6 +903,24 @@ declare const SdMap: {
900
903
  declare const SdMapSingle: typeof Single;
901
904
  declare const SdMapTabs: typeof Tabs;
902
905
 
906
+ interface SdBreadcrumbProps extends BoxProps {
907
+ navItems?: NavItem[];
908
+ /** 현재 경로. 생략하면 `usePathname()`으로 자동 추론한다. */
909
+ currentHref?: string;
910
+ /** 홈(첫 크럼) 링크 대상. 기본 `/`. */
911
+ homeHref?: string;
912
+ /** 홈 아이콘의 접근성 라벨. 기본 `홈`. */
913
+ homeLabel?: string;
914
+ }
915
+ /**
916
+ * 네비게이션 계층 기반 브레드크럼 — `홈 아이콘 > a > b > c`.
917
+ *
918
+ * navItems의 `parentId` 트리에서 현재 경로가 놓인 위치를 찾아 루트까지의 경로를 그린다.
919
+ * 조상 크럼은 클릭 가능한 링크(`SdLink.Sub`), 마지막(현재 페이지) 크럼은 href 없는
920
+ * `SdLink.Body`라 링크가 아닌 강조 텍스트(`SdText.Body`)로 폴백해 현재 위치를 나타낸다.
921
+ */
922
+ declare function SdBreadcrumb({ navItems: navItemsProp, currentHref, homeHref, homeLabel, ...boxProps }: SdBreadcrumbProps): react_jsx_runtime.JSX.Element;
923
+
903
924
  interface HeroCarouselProps {
904
925
  slides: HeroSlide[];
905
926
  children?: React$1.ReactNode;
@@ -921,12 +942,21 @@ declare function MegaHeader({ navItems, loginFlag }: HeaderProps): react_jsx_run
921
942
  * 바가 자라지 않으므로 AppShell.Header 높이를 그대로 쓰는 레이아웃에 적합하다.
922
943
  */
923
944
  declare function SimpleHeader({ navItems, loginFlag }: HeaderProps): react_jsx_runtime.JSX.Element;
945
+ /**
946
+ * Panel 변형 — Simple처럼 바 높이는 60px로 고정하고 상위 항목마다 Mantine `Menu`가 붙지만,
947
+ * 드롭다운 내부는 Mega와 동일한 그룹 레이아웃으로 편다: 손자가 없는 자식은 단일 링크,
948
+ * 손자가 있는 자식은 그룹 제목(`SdLink.Body`) 아래로 손자를 `SdLink.Sub`로 얹는다.
949
+ * Simple의 개별 드롭다운 안정성 + Mega의 풍부한 그룹 구성이 함께 필요할 때 쓴다.
950
+ */
951
+ declare function PanelHeader({ navItems, loginFlag }: HeaderProps): react_jsx_runtime.JSX.Element;
924
952
  declare const SdHeader: typeof MegaHeader & {
925
953
  Mega: typeof MegaHeader;
926
954
  Simple: typeof SimpleHeader;
955
+ Panel: typeof PanelHeader;
927
956
  };
928
957
  declare const SdHeaderMega: typeof MegaHeader;
929
958
  declare const SdHeaderSimple: typeof SimpleHeader;
959
+ declare const SdHeaderPanel: typeof PanelHeader;
930
960
 
931
961
  interface SdFooterProps {
932
962
  company: CompanyInfo;
@@ -1065,17 +1095,29 @@ declare const SdResultSuccess: ({ title, description, primaryAction, secondaryAc
1065
1095
  declare const SdResultError: ({ title, description, primaryAction, secondaryAction, children, mih, }: SdResultProps) => react_jsx_runtime.JSX.Element;
1066
1096
 
1067
1097
  /** 헤더 변형 선택자 — SdHeader의 네임스페이스 키와 1:1로 대응한다. */
1068
- type HeaderVariant = 'mega' | 'simple';
1098
+ type HeaderVariant = 'mega' | 'simple' | 'panel';
1069
1099
  declare function MainLayout({ children, navItems, companyInfo, loginFlag, headerVariant, }: {
1070
1100
  children: React.ReactNode;
1071
1101
  navItems: NavItem[];
1072
1102
  companyInfo: CompanyInfo;
1073
1103
  loginFlag?: boolean;
1074
- /** 기본 `mega` — hover 시 헤더가 확장되는 메가 메뉴. `simple`은 바 높이 고정 + 개별 드롭다운. */
1104
+ /** 기본 `mega` — hover 시 헤더가 확장되는 메가 메뉴. `simple`은 바 높이 고정 + 개별 드롭다운. `panel`은 바 높이 고정 + 드롭다운 내부를 Mega식 그룹 컬럼으로. */
1075
1105
  headerVariant?: HeaderVariant;
1076
1106
  }): react_jsx_runtime.JSX.Element;
1077
1107
 
1078
- interface PageHeroBaseProps {
1108
+ /**
1109
+ * 모든 변형이 공유하는 브레드크럼 설정.
1110
+ * `navItems`가 있고 `breadcrumb`이 false가 아니면 본문 최상단에 브레드크럼을 그린다.
1111
+ */
1112
+ interface BreadcrumbProps {
1113
+ /** 브레드크럼용 네비 트리. 없으면 브레드크럼을 렌더하지 않는다. */
1114
+ navItems?: NavItem[];
1115
+ /** 브레드크럼 표시 여부. 기본 `true` — `navItems`가 있을 때만 실제로 그려진다. `false`로 끈다. */
1116
+ breadcrumb?: boolean;
1117
+ /** 현재 경로 강제 지정. 생략 시 `SdBreadcrumb`가 `usePathname()`으로 추론한다. */
1118
+ currentHref?: string;
1119
+ }
1120
+ interface PageHeroBaseProps extends BreadcrumbProps {
1079
1121
  label?: ReactNode;
1080
1122
  title: ReactNode;
1081
1123
  description?: ReactNode;
@@ -1084,12 +1126,12 @@ interface PageHeroBaseProps {
1084
1126
  interface WithImageProps extends PageHeroBaseProps {
1085
1127
  image?: string;
1086
1128
  }
1087
- declare function Minimal({ label, title, description, children }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1088
- declare function Plain({ children }: {
1129
+ declare function Minimal({ label, title, description, children, navItems, breadcrumb, currentHref, }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1130
+ declare function Plain({ children, navItems, breadcrumb, currentHref, }: BreadcrumbProps & {
1089
1131
  children: ReactNode;
1090
1132
  }): react_jsx_runtime.JSX.Element;
1091
- declare function Image({ image, label, title, description, children }: WithImageProps): react_jsx_runtime.JSX.Element;
1092
- declare function Brand({ label, title, description, children }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1133
+ declare function Image({ image, label, title, description, children, navItems, breadcrumb, currentHref, }: WithImageProps): react_jsx_runtime.JSX.Element;
1134
+ declare function Brand({ label, title, description, children, navItems, breadcrumb, currentHref, }: PageHeroBaseProps): react_jsx_runtime.JSX.Element;
1093
1135
  declare const PageLayout: {
1094
1136
  /** 사진 배경 + 하단 스크림 + 좌측 정렬 텍스트 */
1095
1137
  Image: typeof Image;
@@ -1105,6 +1147,46 @@ declare const PageLayoutMinimal: typeof Minimal;
1105
1147
  declare const PageLayoutBrand: typeof Brand;
1106
1148
  declare const PageLayoutPlain: typeof Plain;
1107
1149
 
1150
+ /**
1151
+ * 소비자 앱의 **프로바이더/컨텍스트 조립**을 한 컴포넌트로 묶는다 —
1152
+ * `MantineProvider`(테마) + `SdToastProvider`(토스트 렌더 지점) + `NavProvider`(navItems Context).
1153
+ * 소비자는 이 셋을 매번 손으로 쌓는 대신 `<SdProvider>` 하나만 렌더한다.
1154
+ *
1155
+ * 헤더/푸터 크롬(`MainLayout`)이나 페이지 템플릿(`PageLayout`)은 여기 넣지 않는다 —
1156
+ * 그건 페이지마다 다를 수 있는 **레이아웃**이라 소비자가 `SdProvider` 안쪽에 직접 배치한다.
1157
+ * `SdProvider`가 `NavProvider`로 감싸므로 그 아래 `MainLayout`/`SdBreadcrumb`는 navItems를
1158
+ * Context에서 읽는다(브레드크럼은 prop 없이 동작).
1159
+ *
1160
+ * 담지 않는 것:
1161
+ * - 회사명/로고는 여기 없다 — `NEXT_PUBLIC_*` env var로 남는다. `t()`가 서버
1162
+ * 컴포넌트인 `SdText`/`SdTitle` 안에서 돌기 때문에 Context로 옮기면 `ui/`
1163
+ * 트리 전체가 client가 되어 flat export/서버 렌더 이점을 잃는다. (CLAUDE.md
1164
+ * §Consumer Config Injection 참고.)
1165
+ * - `ColorSchemeScript`와 Mantine CSS import는 `<head>`/서버 layout 몫이라
1166
+ * 여기서 빼둔다.
1167
+ *
1168
+ * 색상 오버라이드는 소비자의 `"use client"` 모듈에서 `mergeThemeOverrides(theme, …)`
1169
+ * 로 합친 결과를 `theme` prop에 넘긴다. 생략하면 프레임워크 기본 테마를 쓴다.
1170
+ */
1171
+ declare function SdProvider({ children, theme, navItems, defaultColorScheme, }: {
1172
+ children: React.ReactNode;
1173
+ /** 생략 시 프레임워크 기본 테마. 색 오버라이드는 `mergeThemeOverrides`로 합쳐 넘긴다. */
1174
+ theme?: MantineThemeOverride;
1175
+ navItems: NavItem[];
1176
+ defaultColorScheme?: MantineColorScheme;
1177
+ }): react_jsx_runtime.JSX.Element;
1178
+
1179
+ /**
1180
+ * navItems를 하위 트리에 제공한다. `SdProvider`가 자동으로 감싸므로, 그 아래의
1181
+ * `SdBreadcrumb`는 `navItems` prop 없이도 동작한다.
1182
+ */
1183
+ declare function NavProvider({ children, navItems, }: {
1184
+ children: React.ReactNode;
1185
+ navItems: NavItem[];
1186
+ }): react_jsx_runtime.JSX.Element;
1187
+ /** 가장 가까운 `NavProvider`가 제공하는 navItems. Provider가 없으면 빈 배열. */
1188
+ declare function useNav(): NavItem[];
1189
+
1108
1190
  declare const theme: {
1109
1191
  focusRing?: "auto" | "always" | "never" | undefined;
1110
1192
  scale?: number | undefined;
@@ -1253,4 +1335,4 @@ declare const theme: {
1253
1335
  } | undefined;
1254
1336
  };
1255
1337
 
1256
- export { type HeaderVariant, HeroCarousel, Logo, MainLayout, type NavItem, PageLayout, PageLayoutBrand, PageLayoutImage, PageLayoutMinimal, PageLayoutPlain, SdBadge, SdBadgeDefault, SdBadgePrimary, SdBadgeSuccess, SdBadgeWarning, SdButton, SdButtonCancel, SdButtonDelete, SdButtonDownload, SdButtonExcel, SdButtonGhost, SdButtonOutline, SdButtonPrimary, SdButtonSecondary, SdButtonSubmit, SdButtonWhite, SdClients, SdClientsGrid, SdClientsMarquee, SdContainer, SdCta, SdCtaBanner, SdCtaInline, SdCtaSubtle, SdErrorView, SdErrorViewNotFound, SdErrorViewPage, SdFaq, SdFaqDefault, SdFaqFilled, SdFaqWithHeader, SdFeatureSection, SdFeatures, SdFooter, SdHeader, SdHeaderMega, SdHeaderSimple, SdInput, SdInputAutocomplete, SdInputCheckbox, SdInputColor, SdInputDate, SdInputDateRange, SdInputEmail, SdInputFile, SdInputJson, SdInputMultiSelect, SdInputNativeSelect, SdInputNumber, SdInputPassword, SdInputPinCode, SdInputRadioGroup, SdInputRating, SdInputSegmented, SdInputSelect, SdInputSlider, SdInputSwitch, SdInputTags, SdInputText, SdInputTextarea, SdInputTime, SdLink, SdLinkBody, SdLinkHint, SdLinkStrong, SdLinkSub, SdLoginView, SdLoginViewCard, SdLoginViewSplit, SdMap, SdMapSingle, SdMapTabs, SdModal, SdNumberIcon, SdPricingCard, SdPricingCardDefault, SdPricingCardFeatured, SdPricingCardGrid, SdQuote, SdQuoteCard, SdQuotePlain, SdResult, SdResultError, SdResultSuccess, SdSkeleton, SdSkeletonAvatar, SdSkeletonCard, SdSkeletonImage, SdSkeletonText, SdSkeletonTitle, SdSolution, SdSolutionCard, SdSolutionCardGrid, SdSolutionCardItem, SdSolutionFiltered, SdSolutionList, SdSteps, SdStepsBubble, SdStepsCard, SdStepsSection, SdStepsStrip, SdTable, SdTableSpec, SdTabs, SdTabsOutline, SdTabsPills, SdTabsUnderline, SdTestimonial, SdTestimonialCard, SdTestimonialGrid, SdTestimonialStrip, SdText, SdTextBody, SdTextBox, SdTextBoxCard, SdTextBoxHero, SdTextBoxSection, SdTextBoxSub, SdTextError, SdTextEyebrow, SdTextHint, SdTextNumeric, SdTextStrong, SdTextSub, SdTimeline, SdTimelineSection, SdTitle, SdTitleCard, SdTitleDisplay, SdTitleSection, SdTitleSub, SdToast, SdToastClean, SdToastError, SdToastHide, SdToastInfo, SdToastLoading, SdToastProvider, SdToastSuccess, SdToastUpdate, SdToastWarning, theme };
1338
+ export { type HeaderVariant, HeroCarousel, Logo, MainLayout, type NavItem, NavProvider, PageLayout, PageLayoutBrand, PageLayoutImage, PageLayoutMinimal, PageLayoutPlain, SdBadge, SdBadgeDefault, SdBadgePrimary, SdBadgeSuccess, SdBadgeWarning, SdBreadcrumb, SdButton, SdButtonCancel, SdButtonDelete, SdButtonDownload, SdButtonExcel, SdButtonGhost, SdButtonOutline, SdButtonPrimary, SdButtonSecondary, SdButtonSubmit, SdButtonWhite, SdClients, SdClientsGrid, SdClientsMarquee, SdContainer, SdCta, SdCtaBanner, SdCtaInline, SdCtaSubtle, SdErrorView, SdErrorViewNotFound, SdErrorViewPage, SdFaq, SdFaqDefault, SdFaqFilled, SdFaqWithHeader, SdFeatureSection, SdFeatures, SdFooter, SdHeader, SdHeaderMega, SdHeaderPanel, SdHeaderSimple, SdInput, SdInputAutocomplete, SdInputCheckbox, SdInputColor, SdInputDate, SdInputDateRange, SdInputEmail, SdInputFile, SdInputJson, SdInputMultiSelect, SdInputNativeSelect, SdInputNumber, SdInputPassword, SdInputPinCode, SdInputRadioGroup, SdInputRating, SdInputSegmented, SdInputSelect, SdInputSlider, SdInputSwitch, SdInputTags, SdInputText, SdInputTextarea, SdInputTime, SdLink, SdLinkBody, SdLinkHint, SdLinkStrong, SdLinkSub, SdLoginView, SdLoginViewCard, SdLoginViewSplit, SdMap, SdMapSingle, SdMapTabs, SdModal, SdNumberIcon, SdPricingCard, SdPricingCardDefault, SdPricingCardFeatured, SdPricingCardGrid, SdProvider, SdQuote, SdQuoteCard, SdQuotePlain, SdResult, SdResultError, SdResultSuccess, SdSkeleton, SdSkeletonAvatar, SdSkeletonCard, SdSkeletonImage, SdSkeletonText, SdSkeletonTitle, SdSolution, SdSolutionCard, SdSolutionCardGrid, SdSolutionCardItem, SdSolutionFiltered, SdSolutionList, SdSteps, SdStepsBubble, SdStepsCard, SdStepsSection, SdStepsStrip, SdTable, SdTableSpec, SdTabs, SdTabsOutline, SdTabsPills, SdTabsUnderline, SdTestimonial, SdTestimonialCard, SdTestimonialGrid, SdTestimonialStrip, SdText, SdTextBody, SdTextBox, SdTextBoxCard, SdTextBoxHero, SdTextBoxSection, SdTextBoxSub, SdTextError, SdTextEyebrow, SdTextHint, SdTextNumeric, SdTextStrong, SdTextSub, SdTimeline, SdTimelineSection, SdTitle, SdTitleCard, SdTitleDisplay, SdTitleSection, SdTitleSub, SdToast, SdToastClean, SdToastError, SdToastHide, SdToastInfo, SdToastLoading, SdToastProvider, SdToastSuccess, SdToastUpdate, SdToastWarning, theme, useNav };