teachable-design-system 0.3.0 → 0.3.3

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.
Files changed (37) hide show
  1. package/dist/index.cjs.js +875 -64
  2. package/dist/index.cjs.js.map +1 -1
  3. package/dist/index.d.ts +72 -2
  4. package/dist/index.esm.js +877 -67
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/types/components/Dropdown/Dropdown.d.ts +1 -1
  7. package/dist/types/components/Dropdown/Dropdown.d.ts.map +1 -1
  8. package/dist/types/components/Dropdown/style.d.ts +1 -0
  9. package/dist/types/components/Dropdown/style.d.ts.map +1 -1
  10. package/dist/types/components/Table/Table.d.ts +3 -0
  11. package/dist/types/components/Table/Table.d.ts.map +1 -0
  12. package/dist/types/components/Table/index.d.ts +3 -0
  13. package/dist/types/components/Table/index.d.ts.map +1 -0
  14. package/dist/types/components/Table/style.d.ts +98 -0
  15. package/dist/types/components/Table/style.d.ts.map +1 -0
  16. package/dist/types/components/Table/table-body.d.ts +3 -0
  17. package/dist/types/components/Table/table-body.d.ts.map +1 -0
  18. package/dist/types/components/Table/table-cell.d.ts +3 -0
  19. package/dist/types/components/Table/table-cell.d.ts.map +1 -0
  20. package/dist/types/components/Table/table-header.d.ts +4 -0
  21. package/dist/types/components/Table/table-header.d.ts.map +1 -0
  22. package/dist/types/components/index.d.ts +1 -0
  23. package/dist/types/components/index.d.ts.map +1 -1
  24. package/dist/types/types/Dropdown.types.d.ts +1 -0
  25. package/dist/types/types/Dropdown.types.d.ts.map +1 -1
  26. package/dist/types/types/index.d.ts +6 -0
  27. package/dist/types/types/index.d.ts.map +1 -1
  28. package/dist/types/types/table.d.ts +141 -0
  29. package/dist/types/types/table.d.ts.map +1 -0
  30. package/package.json +1 -1
  31. package/src/components/Dropdown/Dropdown.stories.tsx +4 -0
  32. package/src/components/Dropdown/Dropdown.tsx +2 -1
  33. package/src/components/Dropdown/style.ts +2 -1
  34. package/src/components/Sidebar/style.ts +4 -4
  35. package/src/types/Dropdown.types.ts +1 -0
  36. package/src/types/index.ts +6 -0
  37. /package/src/types/{table.d.ts → table.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
2
3
 
3
4
  interface ButtonProps {
4
5
  width?: string;
@@ -27,9 +28,10 @@ interface DropdownProps {
27
28
  options: string[];
28
29
  label?: string;
29
30
  placeholder?: string;
31
+ width?: string;
30
32
  }
31
33
 
32
- declare function Dropdown({ size, options, onSelect, label, placeholder }: DropdownProps): react_jsx_runtime.JSX.Element;
34
+ declare function Dropdown({ size, options, onSelect, label, placeholder, width }: DropdownProps): react_jsx_runtime.JSX.Element;
33
35
 
34
36
  interface InputProps {
35
37
  id?: string;
@@ -67,6 +69,74 @@ interface TabBarProps {
67
69
  }
68
70
  declare const TabBar: ({ title, items, defaultSelectedId, onChange }: TabBarProps) => react_jsx_runtime.JSX.Element;
69
71
 
72
+ /** 셀 데이터 타입 */
73
+ type DataType = 'text' | 'number' | 'date' | 'boolean' | 'custom';
74
+ /** 정렬 방향 */
75
+ type SortDirection = 'asc' | 'desc' | null;
76
+ /**
77
+ * 테이블 컬럼 정의
78
+ * @template T - 행 데이터 타입
79
+ */
80
+ interface TableColumn<T = Record<string, unknown>> {
81
+ /** 컬럼 고유 키 */
82
+ key: keyof T extends string ? keyof T : string;
83
+ /** 헤더 텍스트 */
84
+ header: string;
85
+ /** 컬럼 너비 (예: '100px', '20%') */
86
+ width?: string;
87
+ /** 편집 가능 여부 @default true */
88
+ editable?: boolean;
89
+ /** 셀 높이 */
90
+ height?: string;
91
+ /** 데이터 타입 @default 'text' */
92
+ dataType?: DataType;
93
+ /** 정렬 가능 여부 @default false */
94
+ sortable?: boolean;
95
+ /** 헤더 스타일 적용 (좌측 열 강조) */
96
+ isHeaderColumn?: boolean;
97
+ /** 행 병합 수 */
98
+ rowSpan?: number;
99
+ /** 열 병합 수 */
100
+ colSpan?: number;
101
+ /** 커스텀 렌더링 */
102
+ render?: (value: unknown, row: T, rowIndex: number) => ReactNode;
103
+ /** 커스텀 정렬 함수 */
104
+ sortFn?: (a: unknown, b: unknown) => number;
105
+ }
106
+ /** 테이블 행 데이터 타입 */
107
+ type TableRow<T = Record<string, unknown>> = T;
108
+ /** 테이블 컴포넌트 Props */
109
+ interface TableProps<T = Record<string, unknown>> {
110
+ columns: TableColumn<T>[];
111
+ data: TableRow<T>[];
112
+ onCellEdit?: (rowIndex: number, columnKey: string, value: unknown) => void;
113
+ onSort?: (columnKey: string, direction: SortDirection) => void;
114
+ onSelectionChange?: (cells: CellPosition[]) => void;
115
+ onPaste?: (startRow: number, startCol: number, values: string[][]) => void;
116
+ /** 최대 높이 (스크롤 활성화) */
117
+ maxHeight?: string;
118
+ /** 행 높이 (기본값: 30px) */
119
+ rowHeight?: string;
120
+ /** 줄무늬 스타일 */
121
+ striped?: boolean;
122
+ className?: string;
123
+ /** 행 선택 활성화 */
124
+ enableRowSelection?: boolean;
125
+ /** 선택된 행 인덱스 */
126
+ selectedRowIndex?: number;
127
+ /** 행 클릭 콜백 */
128
+ onRowClick?: (rowIndex: number, row: T) => void;
129
+ /** 키보드 네비게이션 활성화 (↑↓ 화살표) */
130
+ enableKeyboardNavigation?: boolean;
131
+ }
132
+ /** 셀 위치 */
133
+ interface CellPosition {
134
+ row: number;
135
+ col: number;
136
+ }
137
+
138
+ declare function Table<T extends Record<string, unknown> = Record<string, unknown>>({ columns, data, onCellEdit, onSort, onSelectionChange, onPaste, maxHeight, rowHeight, className, enableRowSelection, selectedRowIndex, onRowClick, enableKeyboardNavigation, }: TableProps<T>): react_jsx_runtime.JSX.Element;
139
+
70
140
  declare const colors: {
71
141
  background: {
72
142
  white: string;
@@ -722,4 +792,4 @@ declare const typography: {
722
792
  };
723
793
  };
724
794
 
725
- export { Button, CheckBox, Dropdown, Input, Sidebar, TabBar, TabBarProps, TabItem, colors, typography };
795
+ export { Button, CheckBox, Dropdown, Input, Sidebar, TabBar, TabBarProps, TabItem, Table, colors, typography };