fone-design-system_v2 1.0.97 → 1.0.99

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,33 +1,44 @@
1
- import { default as React } from 'react';
2
- import { SxProps, Theme } from '@mui/material';
1
+ import { SxProps, Theme } from '@mui/material/styles';
3
2
  import { TabsProps as MuiTabsProps } from '@mui/material/Tabs';
4
- export interface TabsProps extends MuiTabsProps {
5
- /** 현재 선택된 탭의 인덱스 */
3
+ import * as React from "react";
4
+ export type TabsItem = {
5
+ key: string;
6
+ label: React.ReactNode;
7
+ content: React.ReactNode;
8
+ disabled?: boolean;
9
+ icon?: React.ReactNode;
10
+ iconPosition?: "start" | "end" | "top" | "bottom";
11
+ ariaLabel?: string;
12
+ };
13
+ export interface TabsProps extends Omit<MuiTabsProps, "children" | "value" | "onChange"> {
14
+ /** 현재 선택된 탭 인덱스 */
6
15
  value: number;
7
- /** 탭 변경 이벤트 핸들러 */
16
+ /** 탭 변경 이벤트 */
8
17
  onChange: (event: React.SyntheticEvent, newValue: number) => void;
9
18
  /** 탭 방향 */
10
19
  orientation?: "horizontal" | "vertical";
11
20
  /** 탭 변형 */
12
21
  variant?: "standard" | "scrollable" | "fullWidth";
13
- /** 탭 항목 목록 */
14
- items: {
15
- label: string;
16
- content: React.ReactNode;
17
- key: string;
18
- disabled?: boolean;
19
- icon?: React.ReactNode;
20
- iconPosition?: "start" | "end" | "top" | "bottom";
21
- }[];
22
- /** 탭 텍스트 색상 */
23
- textColor?: "inherit" | "primary" | "secondary";
24
- /** 탭 인디케이터 색상 */
25
- indicatorColor?: "primary" | "secondary";
26
- /** 탭 선택 포커스 여부 */
22
+ /** 탭 목록 */
23
+ items: TabsItem[];
24
+ /** 탭 포커스 시 자동 선택 여부 */
27
25
  selectionFollowsFocus?: boolean;
28
- /** MUI에서 제공하는 스타일 속성 */
26
+ /** 숨겨진 패널도 DOM 유지 여부 */
27
+ keepMounted?: boolean;
28
+ /** 루트 wrapper 스타일 */
29
29
  sx?: SxProps<Theme>;
30
+ /** MuiTabs 스타일 */
31
+ tabsSx?: SxProps<Theme>;
32
+ /** 개별 Tab 공통 스타일 */
33
+ tabSx?: SxProps<Theme>;
34
+ /** 개별 TabPanel 공통 스타일 */
35
+ panelSx?: SxProps<Theme>;
30
36
  }
31
- /** 콘텐츠를 구분하여 표시하는 탭 컴포넌트 (ref는 내부 MuiTabs의 루트 div로 전달) */
37
+ /**
38
+ * 접근성을 고려한 Tabs 컴포넌트
39
+ * - tablist / tab / tabpanel 연결
40
+ * - 중복되지 않는 id 생성
41
+ * - ripple 제거 시 focus-visible 스타일 유지
42
+ */
32
43
  declare const Tabs: React.ForwardRefExoticComponent<Omit<TabsProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
33
44
  export default Tabs;
@@ -6,6 +6,8 @@ export interface TreeView2Props extends RichTreeViewProps<TreeViewBaseItem, bool
6
6
  className?: string;
7
7
  /** 렌더링할 최상위 트리 데이터 */
8
8
  items: TreeViewBaseItem[];
9
+ /** 외부에서 items 상태를 직접 제어하고 싶을 때 전달 (setState 함수) */
10
+ setItems?: (next: TreeViewBaseItem[] | ((prev: TreeViewBaseItem[]) => TreeViewBaseItem[])) => void;
9
11
  /** 행 hover 시 배경 하이라이트 표시 여부 @default true */
10
12
  hoverHighlight?: boolean;
11
13
  /** 노드 open 토글을 외부에서 제어하고 싶을 때 호출됩니다. 제공되면 내부에서는 open 상태를 변경하지 않습니다. */
@@ -62,5 +64,5 @@ export interface TreeView2Props extends RichTreeViewProps<TreeViewBaseItem, bool
62
64
  /** 재정렬 결과가 확정될 때 호출되는 콜백 (최상위 items 전체를 반환) */
63
65
  onReorder?: (nextItems: TreeViewBaseItem[]) => void;
64
66
  }
65
- declare const TreeView2: ({ className, items, hoverHighlight, onToggleOpen, isItemDisabled, checkboxSelection, multiSelect, reorderMode, draggableFromLevel, onItemSelectionToggle, onItemClick, onItemDoubleClick, defaultExpanded, isLoading, scrollTo, editItems, previewText, onReorder, }: TreeView2Props) => import("react/jsx-runtime").JSX.Element;
67
+ declare const TreeView2: ({ className, items, setItems, hoverHighlight, onToggleOpen, isItemDisabled, checkboxSelection, multiSelect, reorderMode, draggableFromLevel, onItemSelectionToggle, onItemClick, onItemDoubleClick, defaultExpanded, isLoading, scrollTo, editItems, previewText, onReorder, }: TreeView2Props) => import("react/jsx-runtime").JSX.Element;
66
68
  export default TreeView2;