@wipco/sdui 0.2.0 → 0.4.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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +27 -0
  3. package/dist/chunk-4SU2KYPU.js +59 -0
  4. package/dist/chunk-56KKWLNI.js +186 -0
  5. package/dist/chunk-7Y4J7EOK.js +115 -0
  6. package/dist/chunk-APCXOCAO.js +110 -0
  7. package/dist/chunk-AROOQ5W6.js +119 -0
  8. package/dist/chunk-DGPRX4MU.js +251 -0
  9. package/dist/chunk-FGRR3ROJ.js +497 -0
  10. package/dist/chunk-IL2KS4WS.js +25 -0
  11. package/dist/chunk-KADFN76X.js +541 -0
  12. package/dist/chunk-KBHI3IUR.js +40 -0
  13. package/dist/chunk-LZJTKVMO.js +767 -0
  14. package/dist/chunk-MOIU7MUA.js +282 -0
  15. package/dist/chunk-MSAV4J4I.js +77 -0
  16. package/dist/chunk-OOHHW4K4.js +159 -0
  17. package/dist/chunk-Q6SBH63R.js +190 -0
  18. package/dist/chunk-QZQDHSMD.js +78 -0
  19. package/dist/chunk-RH7ESUE6.js +309 -0
  20. package/dist/chunk-SEBPBUZR.js +260 -0
  21. package/dist/chunk-USKRM22W.js +39 -0
  22. package/dist/chunk-WNYWTFGW.js +61 -0
  23. package/dist/chunk-WVRCIVAD.js +72 -0
  24. package/dist/chunk-ZNITJ4KK.js +433 -0
  25. package/dist/chunk-ZQR3ULVH.js +193 -0
  26. package/dist/{chunk-QJHD6HVQ.js → chunk-ZUCI34QY.js} +106 -390
  27. package/dist/index.d.ts +419 -56
  28. package/dist/index.js +412 -803
  29. package/dist/meta.d.ts +188 -2
  30. package/dist/meta.js +1754 -9
  31. package/dist/rich.js +19 -4
  32. package/dist/styles.css +246 -0
  33. package/dist/widgets/AutocompleteField.d.ts +96 -0
  34. package/dist/widgets/AutocompleteField.js +3 -0
  35. package/dist/widgets/ColumnBoard.d.ts +47 -0
  36. package/dist/widgets/ColumnBoard.js +2 -0
  37. package/dist/widgets/DiffView.d.ts +30 -0
  38. package/dist/widgets/DiffView.js +2 -0
  39. package/dist/widgets/Disclosure.d.ts +20 -0
  40. package/dist/widgets/Disclosure.js +2 -0
  41. package/dist/widgets/EventCalendar.d.ts +59 -0
  42. package/dist/widgets/EventCalendar.js +2 -0
  43. package/dist/widgets/ImageLightbox.d.ts +25 -0
  44. package/dist/widgets/ImageLightbox.js +2 -0
  45. package/dist/widgets/InlineEdit.d.ts +23 -0
  46. package/dist/widgets/InlineEdit.js +2 -0
  47. package/dist/widgets/JsonField.d.ts +24 -0
  48. package/dist/widgets/JsonField.js +2 -0
  49. package/dist/widgets/LiveClock.d.ts +21 -0
  50. package/dist/widgets/LiveClock.js +1 -0
  51. package/dist/widgets/OrgChart.d.ts +32 -0
  52. package/dist/widgets/OrgChart.js +2 -0
  53. package/dist/widgets/PeriodFilter.d.ts +48 -0
  54. package/dist/widgets/PeriodFilter.js +2 -0
  55. package/dist/widgets/PrintSheet.d.ts +23 -0
  56. package/dist/widgets/PrintSheet.js +2 -0
  57. package/dist/widgets/SearchableMultiPicker.d.ts +29 -0
  58. package/dist/widgets/SearchableMultiPicker.js +3 -0
  59. package/dist/widgets/SecureScreen.d.ts +25 -0
  60. package/dist/widgets/SecureScreen.js +2 -0
  61. package/dist/widgets/StackedMeter.d.ts +26 -0
  62. package/dist/widgets/StackedMeter.js +1 -0
  63. package/dist/widgets/Strip.d.ts +20 -0
  64. package/dist/widgets/Strip.js +1 -0
  65. package/dist/widgets/SummaryTable.d.ts +31 -0
  66. package/dist/widgets/SummaryTable.js +1 -0
  67. package/dist/widgets/TagMultiSelect.d.ts +25 -0
  68. package/dist/widgets/TagMultiSelect.js +2 -0
  69. package/dist/widgets/Timeline.d.ts +30 -0
  70. package/dist/widgets/Timeline.js +3 -0
  71. package/dist/widgets/TreePicker.d.ts +21 -0
  72. package/dist/widgets/TreePicker.js +3 -0
  73. package/dist/widgets/TreeView.d.ts +26 -0
  74. package/dist/widgets/TreeView.js +2 -0
  75. package/dist/widgets/index.d.ts +76 -0
  76. package/dist/widgets/index.js +69 -0
  77. package/package.json +93 -3
@@ -0,0 +1,2 @@
1
+ export { JsonField } from '../chunk-AROOQ5W6.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * LiveClock — 1초 간격 실시간 시계 / 경과 시간 표시.
5
+ *
6
+ * - startedAt(ISO)이 주어지면 현재 시각 대신 경과 시간을 HH:MM:SS로 표시한다
7
+ * (24시간을 넘으면 시 자리수가 늘어난다: 워크오더 가동시간 등).
8
+ * - showDate: 시계 모드에서는 오늘 날짜(요일 포함), 경과 모드에서는 시작 시각을 함께 표시.
9
+ * - 하이드레이션 안전: useSyncExternalStore의 서버 스냅숏은 null이라 서버/첫 클라이언트
10
+ * 렌더에서는 --:--:-- 플레이스홀더를 보여주고, 마운트 후에만 실제 시각을 그린다.
11
+ * 인터벌은 구독 해제(언마운트) 시 정리된다.
12
+ */
13
+ interface LiveClockProps {
14
+ /** ISO 시각 문자열 — 주어지면 현재 시각 대신 경과 시간(HH:MM:SS)을 표시 */
15
+ startedAt?: string;
16
+ /** 날짜(시계 모드) 또는 시작 시각(경과 모드) 함께 표시 */
17
+ showDate?: boolean;
18
+ }
19
+ declare function LiveClock({ startedAt, showDate }: LiveClockProps): React.JSX.Element;
20
+
21
+ export { LiveClock, type LiveClockProps };
@@ -0,0 +1 @@
1
+ export { LiveClock } from '../chunk-QZQDHSMD.js';
@@ -0,0 +1,32 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /**
4
+ * OrgChart — 줌/팬 가능한 조직도 캔버스.
5
+ *
6
+ * 재귀 블록 레이아웃: 각 노드의 서브트리 폭을 먼저 계산하고 부모를
7
+ * 자식 영역의 가운데 위에 배치한다. 노드 카드는 절대 위치로 그리고,
8
+ * 부모→자식 연결선은 SVG 직교(ㄱ자) 경로로 그린다.
9
+ *
10
+ * 상호작용: 휠 줌(커서 기준 0.35~1.8x), 포인터 드래그 패닝,
11
+ * 확대/축소/초기화 버튼 + 배율 표시, 전체화면 토글, 노드 클릭 선택.
12
+ */
13
+
14
+ interface OrgNode {
15
+ id: string;
16
+ label: string;
17
+ /** 직책/직급 등 보조 텍스트. */
18
+ sub?: string;
19
+ badge?: string;
20
+ children?: OrgNode[];
21
+ }
22
+ interface OrgChartProps {
23
+ root: OrgNode;
24
+ onNodeClick?: (node: OrgNode) => void;
25
+ /** 지정하면 controlled — 없으면 내부 선택 상태를 사용한다. */
26
+ selectedId?: string;
27
+ /** 캔버스 높이(px). 기본 520. */
28
+ height?: number;
29
+ }
30
+ declare function OrgChart({ root, onNodeClick, selectedId, height, }: OrgChartProps): ReactNode;
31
+
32
+ export { OrgChart, type OrgChartProps, type OrgNode };
@@ -0,0 +1,2 @@
1
+ export { OrgChart } from '../chunk-ZNITJ4KK.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * PeriodFilter — 복합 기간 선택기.
5
+ *
6
+ * - SegmentedControl로 모드(연간/반기/분기/월간/직접)를 고르고,
7
+ * 모드에 맞는 Select(연도/반기/분기/월) 또는 날짜 Input(from~to)이 조건부로 나타난다.
8
+ * - 모드 전환 시 기존 선택을 최대한 보존하며 변환한다
9
+ * (예: 11월 → 분기 전환 시 4분기, 직접 전환 시 해당 월의 날짜 범위로 프리필).
10
+ * - 항상 정규화된 Period(해당 모드에 필요한 필드만, 범위 클램프 완료)를 emit한다.
11
+ * - controlled-with-fallback: value가 없으면 내부 상태(현재 연·월)로 동작한다.
12
+ */
13
+ type PeriodMode = 'year' | 'half' | 'quarter' | 'month' | 'custom';
14
+ interface Period {
15
+ mode: PeriodMode;
16
+ year?: number;
17
+ half?: 1 | 2;
18
+ quarter?: 1 | 2 | 3 | 4;
19
+ month?: number;
20
+ /** YYYY-MM-DD (custom 모드) */
21
+ from?: string;
22
+ /** YYYY-MM-DD (custom 모드) */
23
+ to?: string;
24
+ }
25
+ /** 모드 전환 버튼 한 칸. `label`을 생략하면 기본 라벨(연간/반기/분기/월간/직접)을 쓴다. */
26
+ interface PeriodModeItem {
27
+ value: PeriodMode;
28
+ label?: string;
29
+ /** 라벨 앞에 붙일 아이콘 이름 */
30
+ icon?: string;
31
+ }
32
+ interface PeriodFilterProps {
33
+ value?: Period;
34
+ onChange?: (v: Period) => void;
35
+ /** 연도 Select에 노출할 연도 목록. 기본: 올해부터 5년 전까지 */
36
+ years?: number[];
37
+ /**
38
+ * 노출할 모드와 그 라벨·아이콘·순서. 생략하면 다섯 모드가 그대로 나온다.
39
+ *
40
+ * 월간만 쓰는 화면에도 반기·분기·직접 버튼이 보이던 것을 스펙이 정할 수 있게 한
41
+ * 것이다. 문자열 축약형(`["month","custom"]`)도 받는다. 모르는 값·중복은 버리고,
42
+ * 전부 걸러지면 기본 다섯으로 되돌린다.
43
+ */
44
+ modes?: Array<PeriodModeItem | PeriodMode>;
45
+ }
46
+ declare function PeriodFilter({ value, onChange, years, modes }: PeriodFilterProps): React.JSX.Element;
47
+
48
+ export { type Period, PeriodFilter, type PeriodFilterProps, type PeriodMode, type PeriodModeItem };
@@ -0,0 +1,2 @@
1
+ export { PeriodFilter } from '../chunk-DGPRX4MU.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * PrintSheet — 인쇄 레이아웃 래퍼.
5
+ *
6
+ * - 화면에서는 A4 폭(210mm)의 흰 종이 카드 + 상단 툴바(인쇄하기/닫기)를 보여주고,
7
+ * 인쇄 시에는 @page A4·1cm 여백, 12pt 기준 서체로 종이에 맞게 펼친다.
8
+ * - 표 테두리는 화면에서 var(--wp-border-default), 인쇄에서는 토큰을 검정 계열로
9
+ * 재정의해 흐린 회색 선이 프린터에서 사라지지 않게 한다.
10
+ * - .erp-print-hidden 은 @media print 에서 숨겨진다(툴바 등 화면 전용 요소).
11
+ * - autoPrint: 새 창(window.opener 존재)으로 열린 경우에만 마운트 500ms 후 자동 인쇄.
12
+ */
13
+
14
+ interface PrintSheetProps {
15
+ /** 시트 상단 제목(예: 거래명세서) */
16
+ title?: string;
17
+ children: React__default.ReactNode;
18
+ /** window.opener 감지 시(새 창으로 열림) 500ms 후 자동으로 window.print() 호출 */
19
+ autoPrint?: boolean;
20
+ }
21
+ declare function PrintSheet({ title, children, autoPrint }: PrintSheetProps): React__default.JSX.Element;
22
+
23
+ export { PrintSheet, type PrintSheetProps };
@@ -0,0 +1,2 @@
1
+ export { PrintSheet } from '../chunk-KBHI3IUR.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,29 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * SearchableMultiPicker — 모달(다이얼로그) 다중 선택기.
5
+ *
6
+ * - 트리거 버튼 → DS Dialog. SduiDialog와 같은 방식으로 뷰포트 고정 래퍼를 두어
7
+ * 스크림이 사이드바·탑바까지 전체 화면을 덮는다(배경 클릭·Escape로 닫힘 = 취소).
8
+ * - 검색 Input(느슨한 포함 검색) + 선택된 항목이 먼저 오는 Checkbox 목록(스크롤)
9
+ * + 선택 개수/칩 행 + 하단 [전체 해제 / 완료].
10
+ * - 다이얼로그 안에서는 초안(draft)만 바뀌고, '완료'를 눌러야 onChange로 확정된다.
11
+ */
12
+
13
+ interface MultiPickerOption {
14
+ value: string;
15
+ label: string;
16
+ sub?: string;
17
+ }
18
+ interface SearchableMultiPickerProps {
19
+ title?: string;
20
+ options: MultiPickerOption[];
21
+ values: string[];
22
+ onChange: (values: string[]) => void;
23
+ /** 다이얼로그를 여는 트리거. 기본값은 secondary Button '선택'. */
24
+ trigger?: React__default.ReactNode;
25
+ disabled?: boolean;
26
+ }
27
+ declare function SearchableMultiPicker({ title, options, values, onChange, trigger, disabled, }: SearchableMultiPickerProps): React__default.JSX.Element;
28
+
29
+ export { type MultiPickerOption, SearchableMultiPicker, type SearchableMultiPickerProps };
@@ -0,0 +1,3 @@
1
+ export { SearchableMultiPicker } from '../chunk-56KKWLNI.js';
2
+ import '../chunk-KADFN76X.js';
3
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,25 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * SecureScreen — 개인정보 보호 래퍼.
5
+ *
6
+ * enabled(기본 true)일 때:
7
+ * - 래퍼 내부의 contextmenu / copy / cut / dragstart / selectstart 차단 + user-select:none
8
+ * - document keydown에서 Ctrl/Cmd+(A|C|P|S|U|X) 차단, PrintScreen 감지 시
9
+ * 클립보드를 경고 문구로 덮어쓴다(캡처 이미지 대신 경고가 붙게).
10
+ * - 탭 전환(visibilitychange)·창 blur 시 전체 가림막(스크림 + 블러) 표시, 재포커스까지 유지
11
+ * - beforeprint 시 인쇄 경고 오버레이 표시(@media print에서는 콘텐츠 자체를 숨기고
12
+ * 경고만 인쇄되게 한다), afterprint에 해제
13
+ * - 모든 리스너는 언마운트/비활성화 시 정리된다.
14
+ */
15
+
16
+ interface SecureScreenProps {
17
+ /** 보호 동작 활성화 여부. 기본 true. */
18
+ enabled?: boolean;
19
+ /** 가림막에 표시할 안내 문구 */
20
+ notice?: string;
21
+ children: React__default.ReactNode;
22
+ }
23
+ declare function SecureScreen({ enabled, notice, children }: SecureScreenProps): React__default.JSX.Element;
24
+
25
+ export { SecureScreen, type SecureScreenProps };
@@ -0,0 +1,2 @@
1
+ export { SecureScreen } from '../chunk-APCXOCAO.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,26 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /**
4
+ * StackedMeter — CSS로 그리는 누적 비율 막대.
5
+ *
6
+ * 전체 대비 각 항목의 비중을 한 줄 트랙으로 보여준다. 트랙은
7
+ * var(--wp-surface-sunken), 세그먼트는 --wp-series 토큰을 고정
8
+ * 순서로 순환하며, 범례 행에 색 점 + 라벨 + 값 + 백분율을 함께 적는다.
9
+ */
10
+
11
+ interface StackedMeterSegment {
12
+ label: string;
13
+ value: number;
14
+ /** CSS 색상 또는 "1"~"8" (→ var(--wp-series-N)). 없으면 순서대로 자동 배정. */
15
+ color?: string;
16
+ }
17
+ interface StackedMeterProps {
18
+ segments: StackedMeterSegment[];
19
+ /** 범례 표시 여부. 기본 true. */
20
+ showLegend?: boolean;
21
+ /** 트랙 높이(px). 기본 10. */
22
+ height?: number;
23
+ }
24
+ declare function StackedMeter({ segments, showLegend, height, }: StackedMeterProps): ReactNode;
25
+
26
+ export { StackedMeter, type StackedMeterProps, type StackedMeterSegment };
@@ -0,0 +1 @@
1
+ export { StackedMeter } from '../chunk-7Y4J7EOK.js';
@@ -0,0 +1,20 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * Strip — 가로 스크롤 스트립.
5
+ *
6
+ * - 자식들을 flex-shrink:0 래퍼로 감싸 한 줄로 늘어놓고 overflow-x로 스크롤한다.
7
+ * - 스크롤바는 얇게(scrollbar-width:thin + webkit 폴백).
8
+ * - snap이면 scroll-snap-type:x mandatory, 각 항목 scroll-snap-align:start.
9
+ */
10
+
11
+ interface StripProps {
12
+ children: React__default.ReactNode;
13
+ /** 항목 간격(CSS 길이). 기본 var(--wp-space-3) */
14
+ gap?: string;
15
+ /** 항목 시작점에 스크롤 스냅 */
16
+ snap?: boolean;
17
+ }
18
+ declare function Strip({ children, gap, snap }: StripProps): React__default.JSX.Element;
19
+
20
+ export { Strip, type StripProps };
@@ -0,0 +1 @@
1
+ export { Strip } from '../chunk-IL2KS4WS.js';
@@ -0,0 +1,31 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * SummaryTable — 합계 푸터 행이 있는 테이블.
5
+ *
6
+ * DS Table은 tfoot을 지원하지 않아, 컬럼 정렬이 어긋나지 않도록
7
+ * .wp-table 구조(src/styles/css/data.css)를 그대로 미러링한 단일
8
+ * <table>로 직접 렌더링한다. 푸터 행: var(--wp-surface-sunken) 배경 + strong 텍스트.
9
+ */
10
+
11
+ interface SummaryTableColumn {
12
+ key: string;
13
+ header: React__default.ReactNode;
14
+ /** right → 우측 정렬 + tabular numerals(.wp-table__num) */
15
+ align?: 'left' | 'right';
16
+ /** JetBrains Mono 셀(.wp-table__mono) */
17
+ mono?: boolean;
18
+ /** 강조 셀(.wp-table__strong) */
19
+ strong?: boolean;
20
+ }
21
+ interface SummaryTableProps {
22
+ columns: SummaryTableColumn[];
23
+ rows: Array<Record<string, React__default.ReactNode>>;
24
+ /** 컬럼 key → 합계 셀. 주어지면 푸터 행을 렌더링한다. */
25
+ footer?: Record<string, React__default.ReactNode>;
26
+ /** 32px 행(.wp-table--dense) */
27
+ dense?: boolean;
28
+ }
29
+ declare function SummaryTable({ columns, rows, footer, dense }: SummaryTableProps): React__default.JSX.Element;
30
+
31
+ export { SummaryTable, type SummaryTableColumn, type SummaryTableProps };
@@ -0,0 +1 @@
1
+ export { SummaryTable } from '../chunk-USKRM22W.js';
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * TagMultiSelect — 인라인 토글 배지 다중 선택.
5
+ *
6
+ * 옵션마다 토글 버튼(aria-pressed) 하나:
7
+ * - 선택됨 → brand 톤 Badge(채워진 모습)
8
+ * - 미선택 → Tag(아웃라인 모습)
9
+ * onChange로 내보내는 값 배열은 항상 options 순서를 보존한다.
10
+ */
11
+ interface TagMultiSelectOption {
12
+ value: string;
13
+ label: string;
14
+ }
15
+ interface TagMultiSelectProps {
16
+ options: TagMultiSelectOption[];
17
+ values: string[];
18
+ onChange: (values: string[]) => void;
19
+ disabled?: boolean;
20
+ /** 옵션이 하나도 없을 때 보여줄 안내 문구. */
21
+ emptyText?: string;
22
+ }
23
+ declare function TagMultiSelect({ options, values, onChange, disabled, emptyText, }: TagMultiSelectProps): React.JSX.Element;
24
+
25
+ export { TagMultiSelect, type TagMultiSelectOption, type TagMultiSelectProps };
@@ -0,0 +1,2 @@
1
+ export { TagMultiSelect } from '../chunk-4SU2KYPU.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,30 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * Timeline — 변경 이력/활동 피드.
5
+ *
6
+ * - 좌측 아이콘 컬럼: 유형별 틴트 원(생성=success/plus, 수정=info/pencil,
7
+ * 삭제=danger/trash-2, 정보=neutral/info) + 항목 사이 연결선(var(--wp-border-subtle)).
8
+ * - payload가 있으면 Disclosure 접기 버튼 아래 wp-mono-xs <pre> JSON 블록으로 보여준다.
9
+ * - actions는 본문 하단 우측 정렬.
10
+ */
11
+
12
+ interface TimelineItem {
13
+ id: string;
14
+ /** create=success · update=info · delete=danger · info(기본)=neutral */
15
+ type?: 'create' | 'update' | 'delete' | 'info';
16
+ title: React__default.ReactNode;
17
+ time?: string;
18
+ description?: React__default.ReactNode;
19
+ /** 객체면 접을 수 있는 정렬 JSON 블록으로 표시 */
20
+ payload?: unknown;
21
+ actions?: React__default.ReactNode;
22
+ }
23
+ interface TimelineProps {
24
+ items: TimelineItem[];
25
+ /** 지정 시 이 높이를 넘으면 세로 스크롤 */
26
+ maxHeight?: string;
27
+ }
28
+ declare function Timeline({ items, maxHeight }: TimelineProps): React__default.JSX.Element;
29
+
30
+ export { Timeline, type TimelineItem, type TimelineProps };
@@ -0,0 +1,3 @@
1
+ export { Timeline } from '../chunk-MSAV4J4I.js';
2
+ import '../chunk-WNYWTFGW.js';
3
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { TreeNode } from './TreeView.js';
3
+
4
+ interface TreePickerProps {
5
+ nodes: TreeNode[];
6
+ /** 지정하면 controlled — 내부 커밋 상태를 쓰지 않는다. null = 선택 없음. */
7
+ value?: string | null;
8
+ /** 트리에서 노드를 찾지 못할 때 표시할 라벨(controlled 보조). */
9
+ valueLabel?: string;
10
+ onChange?: (id: string | null, node?: TreeNode) => void;
11
+ /** 필드 라벨 겸 다이얼로그 제목. */
12
+ label?: string;
13
+ placeholder?: string;
14
+ excludeIds?: string[];
15
+ /** '(없음)' 선택 허용. 기본 true. */
16
+ allowEmpty?: boolean;
17
+ disabled?: boolean;
18
+ }
19
+ declare function TreePicker({ nodes, value, valueLabel, onChange, label, placeholder, excludeIds, allowEmpty, disabled, }: TreePickerProps): React.JSX.Element;
20
+
21
+ export { TreePicker, type TreePickerProps };
@@ -0,0 +1,3 @@
1
+ export { TreePicker } from '../chunk-ZQR3ULVH.js';
2
+ import '../chunk-SEBPBUZR.js';
3
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+
3
+ /** 트리 노드. children이 있으면 폴더, 없으면 리프로 그린다. */
4
+ interface TreeNode {
5
+ id: string;
6
+ label: string;
7
+ meta?: string;
8
+ children?: TreeNode[];
9
+ }
10
+ interface TreeViewProps {
11
+ nodes: TreeNode[];
12
+ /** 지정하면 controlled — 내부 선택 상태를 쓰지 않는다. */
13
+ selectedId?: string | null;
14
+ onSelect?: (id: string, node: TreeNode) => void;
15
+ /** 검색 입력을 노출한다. 일치 노드의 조상은 펼친 채 유지된다. */
16
+ searchable?: boolean;
17
+ /** 초기에 펼칠 깊이. 1 = 최상위만 펼침. 기본 1. */
18
+ defaultExpandedDepth?: number;
19
+ /** 서브트리째 숨길 노드 id 목록. */
20
+ excludeIds?: string[];
21
+ /** 스크롤 컨테이너 최대 높이 (예: "320px"). */
22
+ maxHeight?: string;
23
+ }
24
+ declare function TreeView({ nodes, selectedId, onSelect, searchable, defaultExpandedDepth, excludeIds, maxHeight, }: TreeViewProps): React__default.JSX.Element;
25
+
26
+ export { type TreeNode, TreeView, type TreeViewProps };
@@ -0,0 +1,2 @@
1
+ export { TreeView } from '../chunk-SEBPBUZR.js';
2
+ import '../chunk-ZUCI34QY.js';
@@ -0,0 +1,76 @@
1
+ import * as React from 'react';
2
+ import { EventCalendarProps } from './EventCalendar.js';
3
+ export { EventCalendar, EventCalendarEvent, EventCalendarTypeOption, EventCalendarView, EventCalendarViewItem } from './EventCalendar.js';
4
+ import { ColumnBoard } from './ColumnBoard.js';
5
+ export { ColumnBoardColumn, ColumnBoardItem, ColumnBoardProps, ColumnBoardTone } from './ColumnBoard.js';
6
+ import { DiffView } from './DiffView.js';
7
+ export { DiffField, DiffList, DiffViewProps } from './DiffView.js';
8
+ import { Disclosure } from './Disclosure.js';
9
+ export { DisclosureProps } from './Disclosure.js';
10
+ import { ImageLightbox } from './ImageLightbox.js';
11
+ export { ImageLightboxProps } from './ImageLightbox.js';
12
+ import { InlineEdit } from './InlineEdit.js';
13
+ export { InlineEditProps } from './InlineEdit.js';
14
+ import { JsonField } from './JsonField.js';
15
+ export { JsonFieldProps } from './JsonField.js';
16
+ import { LiveClock } from './LiveClock.js';
17
+ export { LiveClockProps } from './LiveClock.js';
18
+ import { OrgChart } from './OrgChart.js';
19
+ export { OrgChartProps, OrgNode } from './OrgChart.js';
20
+ import { PeriodFilter } from './PeriodFilter.js';
21
+ export { Period, PeriodFilterProps, PeriodMode, PeriodModeItem } from './PeriodFilter.js';
22
+ import { PrintSheet } from './PrintSheet.js';
23
+ export { PrintSheetProps } from './PrintSheet.js';
24
+ import { SearchableMultiPicker } from './SearchableMultiPicker.js';
25
+ export { MultiPickerOption, SearchableMultiPickerProps } from './SearchableMultiPicker.js';
26
+ import { SecureScreen } from './SecureScreen.js';
27
+ export { SecureScreenProps } from './SecureScreen.js';
28
+ import { StackedMeter } from './StackedMeter.js';
29
+ export { StackedMeterProps, StackedMeterSegment } from './StackedMeter.js';
30
+ import { Strip } from './Strip.js';
31
+ export { StripProps } from './Strip.js';
32
+ import { SummaryTable } from './SummaryTable.js';
33
+ export { SummaryTableColumn, SummaryTableProps } from './SummaryTable.js';
34
+ import { TagMultiSelect } from './TagMultiSelect.js';
35
+ export { TagMultiSelectOption, TagMultiSelectProps } from './TagMultiSelect.js';
36
+ import { Timeline } from './Timeline.js';
37
+ export { TimelineItem, TimelineProps } from './Timeline.js';
38
+ import { TreePicker } from './TreePicker.js';
39
+ export { TreePickerProps } from './TreePicker.js';
40
+ import { TreeView } from './TreeView.js';
41
+ export { TreeNode, TreeViewProps } from './TreeView.js';
42
+ export { AutocompleteField, AutocompleteFieldProps, AutocompleteOption, AutocompleteSearchFn, AutocompleteSearchResult, toAutocompleteOptions } from './AutocompleteField.js';
43
+
44
+ /**
45
+ * `createRegistry(widgetComponents)`로 어휘에 얹는 묶음.
46
+ * 키는 ERP 레지스트리가 쓰던 이름과 **글자 단위로 같다** — 84개 스펙이 그대로 렌더된다.
47
+ *
48
+ * 타입 표기 대신 satisfies인 이유는 registry.tsx·rich.ts와 같다: 키 리터럴을 남겨
49
+ * `SduiWidgetComponentName`이 어휘 목록이 되게 한다.
50
+ */
51
+ declare const widgetComponents: {
52
+ ColumnBoard: typeof ColumnBoard;
53
+ DiffView: typeof DiffView;
54
+ Disclosure: typeof Disclosure;
55
+ EventCalendar: ({ events, view, onViewChange, views, date, onDateChange, types, onEventClick, selectedId, }: EventCalendarProps) => React.JSX.Element;
56
+ ImageLightbox: typeof ImageLightbox;
57
+ InlineEdit: typeof InlineEdit;
58
+ JsonField: typeof JsonField;
59
+ LiveClock: typeof LiveClock;
60
+ OrgChart: typeof OrgChart;
61
+ PeriodFilter: typeof PeriodFilter;
62
+ PrintSheet: typeof PrintSheet;
63
+ SearchableMultiPicker: typeof SearchableMultiPicker;
64
+ SecureScreen: typeof SecureScreen;
65
+ StackedMeter: typeof StackedMeter;
66
+ Strip: typeof Strip;
67
+ SummaryTable: typeof SummaryTable;
68
+ TagMultiSelect: typeof TagMultiSelect;
69
+ Timeline: typeof Timeline;
70
+ TreePicker: typeof TreePicker;
71
+ TreeView: typeof TreeView;
72
+ };
73
+ /** 위젯 어휘의 컴포넌트 이름 union — 메타데이터 대조에 쓴다(`@wipco/sdui/meta`). */
74
+ type SduiWidgetComponentName = keyof typeof widgetComponents;
75
+
76
+ export { ColumnBoard, DiffView, Disclosure, EventCalendarProps, ImageLightbox, InlineEdit, JsonField, LiveClock, OrgChart, PeriodFilter, PrintSheet, type SduiWidgetComponentName, SearchableMultiPicker, SecureScreen, StackedMeter, Strip, SummaryTable, TagMultiSelect, Timeline, TreePicker, TreeView, widgetComponents };
@@ -0,0 +1,69 @@
1
+ import { SearchableMultiPicker } from '../chunk-56KKWLNI.js';
2
+ export { SearchableMultiPicker } from '../chunk-56KKWLNI.js';
3
+ import { SecureScreen } from '../chunk-APCXOCAO.js';
4
+ export { SecureScreen } from '../chunk-APCXOCAO.js';
5
+ import { StackedMeter } from '../chunk-7Y4J7EOK.js';
6
+ export { StackedMeter } from '../chunk-7Y4J7EOK.js';
7
+ import { Strip } from '../chunk-IL2KS4WS.js';
8
+ export { Strip } from '../chunk-IL2KS4WS.js';
9
+ import { SummaryTable } from '../chunk-USKRM22W.js';
10
+ export { SummaryTable } from '../chunk-USKRM22W.js';
11
+ import { TagMultiSelect } from '../chunk-4SU2KYPU.js';
12
+ export { TagMultiSelect } from '../chunk-4SU2KYPU.js';
13
+ import { Timeline } from '../chunk-MSAV4J4I.js';
14
+ export { Timeline } from '../chunk-MSAV4J4I.js';
15
+ import { TreePicker } from '../chunk-ZQR3ULVH.js';
16
+ export { TreePicker } from '../chunk-ZQR3ULVH.js';
17
+ import { TreeView } from '../chunk-SEBPBUZR.js';
18
+ export { TreeView } from '../chunk-SEBPBUZR.js';
19
+ import { EventCalendar } from '../chunk-LZJTKVMO.js';
20
+ export { EventCalendar } from '../chunk-LZJTKVMO.js';
21
+ import { ImageLightbox } from '../chunk-RH7ESUE6.js';
22
+ export { ImageLightbox } from '../chunk-RH7ESUE6.js';
23
+ import { InlineEdit } from '../chunk-OOHHW4K4.js';
24
+ export { InlineEdit } from '../chunk-OOHHW4K4.js';
25
+ import { JsonField } from '../chunk-AROOQ5W6.js';
26
+ export { JsonField } from '../chunk-AROOQ5W6.js';
27
+ import { LiveClock } from '../chunk-QZQDHSMD.js';
28
+ export { LiveClock } from '../chunk-QZQDHSMD.js';
29
+ import { OrgChart } from '../chunk-ZNITJ4KK.js';
30
+ export { OrgChart } from '../chunk-ZNITJ4KK.js';
31
+ import { PeriodFilter } from '../chunk-DGPRX4MU.js';
32
+ export { PeriodFilter } from '../chunk-DGPRX4MU.js';
33
+ import { PrintSheet } from '../chunk-KBHI3IUR.js';
34
+ export { PrintSheet } from '../chunk-KBHI3IUR.js';
35
+ export { AutocompleteField, toAutocompleteOptions } from '../chunk-MOIU7MUA.js';
36
+ import '../chunk-KADFN76X.js';
37
+ import { ColumnBoard } from '../chunk-Q6SBH63R.js';
38
+ export { ColumnBoard } from '../chunk-Q6SBH63R.js';
39
+ import { DiffView } from '../chunk-WVRCIVAD.js';
40
+ export { DiffView } from '../chunk-WVRCIVAD.js';
41
+ import { Disclosure } from '../chunk-WNYWTFGW.js';
42
+ export { Disclosure } from '../chunk-WNYWTFGW.js';
43
+ import '../chunk-ZUCI34QY.js';
44
+
45
+ // src/widgets/index.ts
46
+ var widgetComponents = {
47
+ ColumnBoard,
48
+ DiffView,
49
+ Disclosure,
50
+ EventCalendar,
51
+ ImageLightbox,
52
+ InlineEdit,
53
+ JsonField,
54
+ LiveClock,
55
+ OrgChart,
56
+ PeriodFilter,
57
+ PrintSheet,
58
+ SearchableMultiPicker,
59
+ SecureScreen,
60
+ StackedMeter,
61
+ Strip,
62
+ SummaryTable,
63
+ TagMultiSelect,
64
+ Timeline,
65
+ TreePicker,
66
+ TreeView
67
+ };
68
+
69
+ export { widgetComponents };