@wipco/sdui 0.28.0 → 0.30.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,9 +1,9 @@
1
- export { ApprovalOverridesEditor } from '../chunk-ZDRERW4G.js';
1
+ export { ApprovalOverridesEditor } from '../chunk-OR27SRKL.js';
2
2
  import '../chunk-QDEZXA34.js';
3
- import '../chunk-SAPJVLZM.js';
3
+ import '../chunk-S4LOH2TU.js';
4
4
  import '../chunk-BD75U73S.js';
5
- import '../chunk-DVOPZFQS.js';
6
5
  import '../chunk-EFMKWPZ3.js';
7
6
  import '../chunk-XQPTSEJC.js';
7
+ import '../chunk-DKPNFEVU.js';
8
8
  import '../chunk-WIDDHR7L.js';
9
9
  import '../chunk-SAN4IX6N.js';
@@ -1,7 +1,7 @@
1
- export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-6S5CFNFM.js';
1
+ export { AutocompleteField, endpointSearchFn, toAutocompleteOptions } from '../chunk-CVCP52OD.js';
2
2
  import '../chunk-BD75U73S.js';
3
- import '../chunk-DVOPZFQS.js';
4
3
  import '../chunk-EFMKWPZ3.js';
5
4
  import '../chunk-XQPTSEJC.js';
5
+ import '../chunk-DKPNFEVU.js';
6
6
  import '../chunk-WIDDHR7L.js';
7
7
  import '../chunk-SAN4IX6N.js';
@@ -0,0 +1,65 @@
1
+ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
2
+ import React__default from 'react';
3
+
4
+ type FileDropzoneItem = {
5
+ id: string;
6
+ url: string;
7
+ name?: string;
8
+ };
9
+ interface FileDropzoneProps {
10
+ /** 백엔드 업로드 경로 (예: "/attachments"). 없으면 로컬 미리보기 모드 */
11
+ endpoint?: string;
12
+ /** 첨부 목록 — 주면 controlled */
13
+ value?: FileDropzoneItem[];
14
+ onChange?: (files: FileDropzoneItem[]) => void;
15
+ /** 업로드 큐 시작/종료 알림 */
16
+ onBusyChange?: (busy: boolean) => void;
17
+ /** 최대 첨부 수 */
18
+ maxCount?: number;
19
+ /** 허용 형식 (input accept 문법) */
20
+ accept?: string;
21
+ disabled?: boolean;
22
+ /** 드롭 영역 아래 보조 문구 */
23
+ hint?: string;
24
+ /**
25
+ * 첨부 삭제 경로의 **기준**(예: "/attachments"). 주면 썸네일의 삭제가 목록에서
26
+ * 빼는 데 그치지 않고 `DELETE {deleteEndpoint}/{id}` 까지 보낸다.
27
+ *
28
+ * 이게 없으면 이미 올라간 사진을 이 칸에 채워 둘 수 없다 — 지운 것처럼 보이는데
29
+ * 서버에는 그대로 남는 함정이 되기 때문이다(그래서 예전에는 "추가 전용"이었다).
30
+ * 아직 업로드 중이거나 로컬 미리보기(id가 `local-`)인 항목은 보낼 곳이 없어 건너뛴다.
31
+ */
32
+ /**
33
+ * 업로드를 직접 맡는다. 주면 `endpoint` 대신 이 함수가 불린다 — 위젯은 응답을
34
+ * 해석하지 않고 항목을 그대로 받는다(서버 봉투가 특수한 앱의 탈출구).
35
+ */
36
+ upload?: (file: File) => Promise<FileDropzoneItem>;
37
+ /** multipart 필드 이름. 기본 'file'. */
38
+ fileField?: string;
39
+ /**
40
+ * 503을 "백엔드 미연동"으로 읽어 로컬 미리보기로 강등한다. 기본 false —
41
+ * 일반 서버의 과부하 503에서 "올린 것처럼 보이는데 새로고침하면 없는" 항목을
42
+ * 만들면 안 되기 때문이다. 데모 모드를 503으로 합성하는 앱만 켠다.
43
+ */
44
+ localFallbackOn503?: boolean;
45
+ deleteEndpoint?: string;
46
+ /** 서버에서 실제로 지운 뒤 한 번 — 보통 목록·상세를 다시 읽는 invalidate를 건다 */
47
+ onRemove?: () => void;
48
+ }
49
+ /**
50
+ * 업로드 응답에서 `{id, url}` 을 꺼낸다 — **도메인 명사를 알지 않는다.**
51
+ *
52
+ * 단일 자원을 한 겹 감싸 주는 것은 REST 관례다(`{attachment:{…}}`·`{data:{…}}`).
53
+ * 그래서 이름 목록을 두는 대신 **모양**으로 판정한다: 최상위에 id·url 이 없고
54
+ * 객체 값을 가진 키가 **정확히 하나**면 그 안으로 한 겹 내려간다.
55
+ * 그 조건을 벗어나면(키가 둘 이상, 값이 객체가 아님) 벗기지 않는다 — 잘못 벗겨
56
+ * 엉뚱한 값을 집는 것보다 "응답 형식 오류"로 드러나는 편이 낫다.
57
+ */
58
+ declare function unwrapUploaded(payload: unknown): {
59
+ id?: unknown;
60
+ url?: unknown;
61
+ } | null;
62
+ /** 바깥에서 온 `style`·`className`을 뿌리에 얹어 내보낸다 — 자기 축(폭·여백)이 닿게 하는 통로. */
63
+ declare const FileDropzone: React__default.FC<FileDropzoneProps & SduiBoxProps>;
64
+
65
+ export { FileDropzone, type FileDropzoneItem, type FileDropzoneProps, unwrapUploaded };
@@ -0,0 +1,6 @@
1
+ export { FileDropzone, unwrapUploaded } from '../chunk-DQVDS2VP.js';
2
+ import '../chunk-XPBZMECW.js';
3
+ import '../chunk-THEP3VWY.js';
4
+ import '../chunk-DKPNFEVU.js';
5
+ import '../chunk-WIDDHR7L.js';
6
+ import '../chunk-SAN4IX6N.js';
@@ -1,6 +1,6 @@
1
- export { OrgChartBoard } from '../chunk-KBLFOC37.js';
1
+ export { OrgChartBoard } from '../chunk-NGZI4V3O.js';
2
2
  import '../chunk-XPBZMECW.js';
3
3
  import '../chunk-THEP3VWY.js';
4
- import '../chunk-DVOPZFQS.js';
4
+ import '../chunk-DKPNFEVU.js';
5
5
  import '../chunk-WIDDHR7L.js';
6
6
  import '../chunk-SAN4IX6N.js';
@@ -0,0 +1,37 @@
1
+ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
2
+ import React__default from 'react';
3
+
4
+ /** 서버 PUT 계약의 원소 — 키 이름 변경 금지. */
5
+ interface PermissionGrant {
6
+ code: string;
7
+ scope?: string;
8
+ }
9
+ /** GET /permissions 행 — 실측 키 category·code·description·name. */
10
+ interface PermissionCatalogEntry {
11
+ code: string;
12
+ name: string;
13
+ category?: string | null;
14
+ description?: string | null;
15
+ }
16
+ interface PermissionMatrixEditorProps {
17
+ /** 권한 카탈로그 전체(216종). 대개 page.data 가 채운 상태를 바인딩한다. */
18
+ permissions: PermissionCatalogEntry[];
19
+ /** 현재 부여 목록 — PUT `permissions` 배열과 같은 모양. */
20
+ value: PermissionGrant[];
21
+ onChange: (value: PermissionGrant[]) => void;
22
+ /**
23
+ * 역할의 현재 부여를 스스로 읽어 와 onChange 로 **한 번** 흘리는 시딩 경로
24
+ * (예: `/roles/{id}/permissions`). 응답의 `permissions` 배열을 쓴다.
25
+ *
26
+ * 왜 필요한가: 상태에는 감시자가 없어 "다이얼로그가 열리면 GET 결과를 폼 상태에
27
+ * 복사"를 스펙이 표현할 수 없다(rowClick 복사는 fetch 와 경주한다). 경로가 바뀔
28
+ * 때마다 다시 시딩하므로, 여는 쪽이 경로에 여는 횟수를 붙이면(`…&_=3`) 같은 역할을
29
+ * 다시 열어도 서버 값으로 초기화된다. 캔버스 샌드박스에서는 조용히 실패한다.
30
+ */
31
+ sourceEndpoint?: string;
32
+ disabled?: boolean;
33
+ }
34
+ /** 바깥 style·className 을 뿌리에 얹는다 — 자기 축(폭·여백) 통로. */
35
+ declare const PermissionMatrixEditor: React__default.FC<PermissionMatrixEditorProps & SduiBoxProps>;
36
+
37
+ export { type PermissionCatalogEntry, type PermissionGrant, PermissionMatrixEditor, type PermissionMatrixEditorProps };
@@ -0,0 +1,4 @@
1
+ export { PermissionMatrixEditor } from '../chunk-N24VF6KI.js';
2
+ import '../chunk-DKPNFEVU.js';
3
+ import '../chunk-WIDDHR7L.js';
4
+ import '../chunk-SAN4IX6N.js';
@@ -1,6 +1,6 @@
1
- export { RankBoard } from '../chunk-DIVN4TBW.js';
1
+ export { RankBoard } from '../chunk-U6H7YN4I.js';
2
2
  import '../chunk-QU7YVMFA.js';
3
- import '../chunk-DVOPZFQS.js';
4
3
  import '../chunk-XQPTSEJC.js';
4
+ import '../chunk-DKPNFEVU.js';
5
5
  import '../chunk-WIDDHR7L.js';
6
6
  import '../chunk-SAN4IX6N.js';
@@ -0,0 +1,37 @@
1
+ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
2
+ import React__default from 'react';
3
+
4
+ /** GET /roles/{id}/employees 행(평면)과 GET /employees 행(department 객체)을 모두 수용. */
5
+ interface RoleMemberEntry {
6
+ id: string;
7
+ name?: string | null;
8
+ employee_number?: string | null;
9
+ work_email?: string | null;
10
+ job_title?: string | null;
11
+ grade?: string | null;
12
+ department_name?: string | null;
13
+ department?: {
14
+ name?: string | null;
15
+ } | null;
16
+ }
17
+ interface RoleMemberPickerProps {
18
+ /** 직원 카탈로그 — 대개 page.data 의 /employees?limit=500 data 를 바인딩한다. 비면 자체 수집. */
19
+ employees?: RoleMemberEntry[];
20
+ /**
21
+ * 멤버십 경로(예: `/roles/{id}/employees?_=3`). 경로가 바뀔 때마다 GET 으로 현재
22
+ * 멤버를 다시 읽는다 — 여는 쪽이 여는 횟수를 붙이면(`?_=seq`) 같은 역할을 다시
23
+ * 열어도 서버 값으로 초기화된다(PermissionMatrixEditor.sourceEndpoint 와 같은 계약).
24
+ * 추가(POST)·해제(DELETE)는 **쿼리를 뗀 같은 경로**로 보낸다.
25
+ */
26
+ /**
27
+ * 후보 목록 경로. 응답은 `{data:[{id,name,…}], total}` 이고 500건씩 수집한다.
28
+ * 기본 '/employees'.
29
+ */
30
+ catalogEndpoint?: string;
31
+ sourceEndpoint?: string;
32
+ disabled?: boolean;
33
+ }
34
+ /** 바깥 style·className 을 뿌리에 얹는다 — 자기 축(폭·여백) 통로. */
35
+ declare const RoleMemberPicker: React__default.FC<RoleMemberPickerProps & SduiBoxProps>;
36
+
37
+ export { type RoleMemberEntry, RoleMemberPicker, type RoleMemberPickerProps };
@@ -0,0 +1,4 @@
1
+ export { RoleMemberPicker } from '../chunk-WXZDYDXG.js';
2
+ import '../chunk-DKPNFEVU.js';
3
+ import '../chunk-WIDDHR7L.js';
4
+ import '../chunk-SAN4IX6N.js';
@@ -16,6 +16,8 @@ import { SecureScreenProps } from './SecureScreen.js';
16
16
  export { SecureScreen } from './SecureScreen.js';
17
17
  import { SearchableMultiPickerProps } from './SearchableMultiPicker.js';
18
18
  export { MultiPickerOption, SearchableMultiPicker } from './SearchableMultiPicker.js';
19
+ import { RoleMemberPickerProps } from './RoleMemberPicker.js';
20
+ export { RoleMemberPicker } from './RoleMemberPicker.js';
19
21
  import { RecordSheetProps } from './RecordSheet.js';
20
22
  export { RecordSheet, RecordSheetCell, RecordSheetCellKind, RecordSheetRow } from './RecordSheet.js';
21
23
  import { RankBoardProps } from './RankBoard.js';
@@ -24,6 +26,8 @@ import { PrintSheetProps } from './PrintSheet.js';
24
26
  export { PrintSheet } from './PrintSheet.js';
25
27
  import { PeriodFilterProps } from './PeriodFilter.js';
26
28
  export { Period, PeriodFilter, PeriodMode, PeriodModeItem } from './PeriodFilter.js';
29
+ import { PermissionMatrixEditorProps } from './PermissionMatrixEditor.js';
30
+ export { PermissionMatrixEditor } from './PermissionMatrixEditor.js';
27
31
  import { OrgChartBoardProps } from './OrgChartBoard.js';
28
32
  export { OrgChartBoard } from './OrgChartBoard.js';
29
33
  import { OrgChartProps } from './OrgChart.js';
@@ -53,6 +57,7 @@ import { S as SduiBoxProps } from '../layout-B1QrIBm6.js';
53
57
  import { ApprovalLineEditorProps } from './ApprovalLineEditor.js';
54
58
  export { ApprovalLineEditor, ApprovalLineStep, CustomApprover } from './ApprovalLineEditor.js';
55
59
  export { AutocompleteField, AutocompleteFieldProps, AutocompleteOption, AutocompleteSearchFn, AutocompleteSearchResult, toAutocompleteOptions } from './AutocompleteField.js';
60
+ export { FileDropzone, FileDropzoneItem, FileDropzoneProps, unwrapUploaded } from './FileDropzone.js';
56
61
 
57
62
  /**
58
63
  * `createRegistry(widgetComponents)`로 어휘에 얹는 묶음.
@@ -75,10 +80,12 @@ declare const widgetComponents: {
75
80
  LiveClock: React.FC<LiveClockProps & SduiBoxProps>;
76
81
  OrgChart: React.FC<OrgChartProps & SduiBoxProps>;
77
82
  OrgChartBoard: React.FC<OrgChartBoardProps & SduiBoxProps>;
83
+ PermissionMatrixEditor: React.FC<PermissionMatrixEditorProps & SduiBoxProps>;
78
84
  PeriodFilter: React.FC<PeriodFilterProps & SduiBoxProps>;
79
85
  PrintSheet: React.FC<PrintSheetProps & SduiBoxProps>;
80
86
  RankBoard: React.FC<RankBoardProps & SduiBoxProps>;
81
87
  RecordSheet: React.FC<RecordSheetProps & SduiBoxProps>;
88
+ RoleMemberPicker: React.FC<RoleMemberPickerProps & SduiBoxProps>;
82
89
  SearchableMultiPicker: React.FC<SearchableMultiPickerProps & SduiBoxProps>;
83
90
  SecureScreen: React.FC<SecureScreenProps & SduiBoxProps>;
84
91
  StackedMeter: React.FC<StackedMeterProps & SduiBoxProps>;
@@ -92,4 +99,4 @@ declare const widgetComponents: {
92
99
  /** 위젯 어휘의 컴포넌트 이름 union — 메타데이터 대조에 쓴다(`@wipco/sdui/meta`). */
93
100
  type SduiWidgetComponentName = keyof typeof widgetComponents;
94
101
 
95
- export { ApprovalLineEditorProps, ApprovalOverridesEditorProps, ApprovalStepperProps, ColumnBoardProps, DiffViewProps, DisclosureProps, EventCalendarProps, ImageLightboxProps, InlineEditProps, JsonFieldProps, LiveClockProps, OrgChartBoardProps, OrgChartProps, PeriodFilterProps, PrintSheetProps, RankBoardProps, RecordSheetProps, type SduiWidgetComponentName, SearchableMultiPickerProps, SecureScreenProps, StackedMeterProps, StripProps, SummaryTableProps, TagMultiSelectProps, TimelineProps, TreePickerProps, TreeViewProps, widgetComponents };
102
+ export { ApprovalLineEditorProps, ApprovalOverridesEditorProps, ApprovalStepperProps, ColumnBoardProps, DiffViewProps, DisclosureProps, EventCalendarProps, ImageLightboxProps, InlineEditProps, JsonFieldProps, LiveClockProps, OrgChartBoardProps, OrgChartProps, PeriodFilterProps, PermissionMatrixEditorProps, PrintSheetProps, RankBoardProps, RecordSheetProps, RoleMemberPickerProps, type SduiWidgetComponentName, SearchableMultiPickerProps, SecureScreenProps, StackedMeterProps, StripProps, SummaryTableProps, TagMultiSelectProps, TimelineProps, TreePickerProps, TreeViewProps, widgetComponents };
@@ -1,3 +1,13 @@
1
+ import { TreePicker } from '../chunk-U3HYQCFA.js';
2
+ export { TreePicker } from '../chunk-U3HYQCFA.js';
3
+ import { TreeView } from '../chunk-X5R2HHEN.js';
4
+ export { TreeView, buildTreeNodes } from '../chunk-X5R2HHEN.js';
5
+ import { RoleMemberPicker } from '../chunk-WXZDYDXG.js';
6
+ export { RoleMemberPicker } from '../chunk-WXZDYDXG.js';
7
+ import { SearchableMultiPicker } from '../chunk-C53NGSA3.js';
8
+ export { SearchableMultiPicker } from '../chunk-C53NGSA3.js';
9
+ import { SecureScreen } from '../chunk-IIRENCDS.js';
10
+ export { SecureScreen } from '../chunk-IIRENCDS.js';
1
11
  import { StackedMeter } from '../chunk-BMZKZGJF.js';
2
12
  export { StackedMeter } from '../chunk-BMZKZGJF.js';
3
13
  import { Strip } from '../chunk-ZH5MLOZS.js';
@@ -6,26 +16,22 @@ import { SummaryTable } from '../chunk-O4U7Y3XL.js';
6
16
  export { SummaryTable } from '../chunk-O4U7Y3XL.js';
7
17
  import { Timeline } from '../chunk-EFYEOT47.js';
8
18
  export { Timeline } from '../chunk-EFYEOT47.js';
9
- import { TreePicker } from '../chunk-U3HYQCFA.js';
10
- export { TreePicker } from '../chunk-U3HYQCFA.js';
11
- import { TreeView } from '../chunk-X5R2HHEN.js';
12
- export { TreeView, buildTreeNodes } from '../chunk-X5R2HHEN.js';
19
+ import { LiveClock } from '../chunk-Z3WGIFJP.js';
20
+ export { LiveClock } from '../chunk-Z3WGIFJP.js';
13
21
  import { OrgChart } from '../chunk-QWJ3OBBL.js';
14
22
  export { OrgChart } from '../chunk-QWJ3OBBL.js';
15
- import { OrgChartBoard } from '../chunk-KBLFOC37.js';
16
- export { OrgChartBoard } from '../chunk-KBLFOC37.js';
23
+ import { OrgChartBoard } from '../chunk-NGZI4V3O.js';
24
+ export { OrgChartBoard } from '../chunk-NGZI4V3O.js';
25
+ import { PermissionMatrixEditor } from '../chunk-N24VF6KI.js';
26
+ export { PermissionMatrixEditor } from '../chunk-N24VF6KI.js';
17
27
  import { PeriodFilter } from '../chunk-INWASR2G.js';
18
28
  export { PeriodFilter } from '../chunk-INWASR2G.js';
19
29
  import { PrintSheet } from '../chunk-MYJ2KEIP.js';
20
30
  export { PrintSheet } from '../chunk-MYJ2KEIP.js';
21
- import { RankBoard } from '../chunk-DIVN4TBW.js';
22
- export { RankBoard } from '../chunk-DIVN4TBW.js';
31
+ import { RankBoard } from '../chunk-U6H7YN4I.js';
32
+ export { RankBoard } from '../chunk-U6H7YN4I.js';
23
33
  import { RecordSheet } from '../chunk-K3JBSWFI.js';
24
34
  export { RecordSheet } from '../chunk-K3JBSWFI.js';
25
- import { SearchableMultiPicker } from '../chunk-C53NGSA3.js';
26
- export { SearchableMultiPicker } from '../chunk-C53NGSA3.js';
27
- import { SecureScreen } from '../chunk-IIRENCDS.js';
28
- export { SecureScreen } from '../chunk-IIRENCDS.js';
29
35
  import { ColumnBoard } from '../chunk-C4JRSZGS.js';
30
36
  export { ColumnBoard } from '../chunk-C4JRSZGS.js';
31
37
  import { DiffView } from '../chunk-LDJ2CFFH.js';
@@ -34,29 +40,28 @@ import { Disclosure } from '../chunk-HIZ2OVJA.js';
34
40
  export { Disclosure } from '../chunk-HIZ2OVJA.js';
35
41
  import { EventCalendar } from '../chunk-C3JY6GA3.js';
36
42
  export { EventCalendar } from '../chunk-C3JY6GA3.js';
43
+ export { FileDropzone, unwrapUploaded } from '../chunk-DQVDS2VP.js';
37
44
  import { ImageLightbox } from '../chunk-XPBZMECW.js';
38
45
  export { ImageLightbox } from '../chunk-XPBZMECW.js';
39
46
  import { InlineEdit } from '../chunk-KT3ZVBLN.js';
40
47
  export { InlineEdit } from '../chunk-KT3ZVBLN.js';
41
48
  import { JsonField } from '../chunk-JVBZRDC2.js';
42
49
  export { JsonField } from '../chunk-JVBZRDC2.js';
43
- import { LiveClock } from '../chunk-Z3WGIFJP.js';
44
- export { LiveClock } from '../chunk-Z3WGIFJP.js';
45
50
  import '../chunk-QU7YVMFA.js';
46
51
  import '../chunk-THEP3VWY.js';
47
- import { ApprovalOverridesEditor } from '../chunk-ZDRERW4G.js';
48
- export { ApprovalOverridesEditor } from '../chunk-ZDRERW4G.js';
52
+ import { ApprovalOverridesEditor } from '../chunk-OR27SRKL.js';
53
+ export { ApprovalOverridesEditor } from '../chunk-OR27SRKL.js';
49
54
  import { TagMultiSelect } from '../chunk-QDEZXA34.js';
50
55
  export { TagMultiSelect } from '../chunk-QDEZXA34.js';
51
- import { ApprovalLineEditor } from '../chunk-SAPJVLZM.js';
52
- export { ApprovalLineEditor } from '../chunk-SAPJVLZM.js';
56
+ import { ApprovalLineEditor } from '../chunk-S4LOH2TU.js';
57
+ export { ApprovalLineEditor } from '../chunk-S4LOH2TU.js';
53
58
  import { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
54
59
  export { ApprovalStepper } from '../chunk-ZTQEP3TR.js';
55
- export { AutocompleteField, toAutocompleteOptions } from '../chunk-6S5CFNFM.js';
60
+ export { AutocompleteField, toAutocompleteOptions } from '../chunk-CVCP52OD.js';
56
61
  import '../chunk-BD75U73S.js';
57
- import '../chunk-DVOPZFQS.js';
58
62
  import '../chunk-EFMKWPZ3.js';
59
63
  import '../chunk-XQPTSEJC.js';
64
+ import '../chunk-DKPNFEVU.js';
60
65
  import '../chunk-WIDDHR7L.js';
61
66
  import '../chunk-SAN4IX6N.js';
62
67
 
@@ -75,10 +80,12 @@ var widgetComponents = {
75
80
  LiveClock,
76
81
  OrgChart,
77
82
  OrgChartBoard,
83
+ PermissionMatrixEditor,
78
84
  PeriodFilter,
79
85
  PrintSheet,
80
86
  RankBoard,
81
87
  RecordSheet,
88
+ RoleMemberPicker,
82
89
  SearchableMultiPicker,
83
90
  SecureScreen,
84
91
  StackedMeter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipco/sdui",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "description": "WIPCO 서버 주도 UI(SDUI) 렌더러 — JSON 페이지 스펙을 React 컴포넌트로 렌더링",
5
5
  "keywords": [
6
6
  "sdui",
@@ -68,6 +68,10 @@
68
68
  "types": "./dist/widgets/EventCalendar.d.ts",
69
69
  "default": "./dist/widgets/EventCalendar.js"
70
70
  },
71
+ "./widgets/FileDropzone": {
72
+ "types": "./dist/widgets/FileDropzone.d.ts",
73
+ "default": "./dist/widgets/FileDropzone.js"
74
+ },
71
75
  "./widgets/ImageLightbox": {
72
76
  "types": "./dist/widgets/ImageLightbox.d.ts",
73
77
  "default": "./dist/widgets/ImageLightbox.js"
@@ -92,6 +96,10 @@
92
96
  "types": "./dist/widgets/OrgChartBoard.d.ts",
93
97
  "default": "./dist/widgets/OrgChartBoard.js"
94
98
  },
99
+ "./widgets/PermissionMatrixEditor": {
100
+ "types": "./dist/widgets/PermissionMatrixEditor.d.ts",
101
+ "default": "./dist/widgets/PermissionMatrixEditor.js"
102
+ },
95
103
  "./widgets/PeriodFilter": {
96
104
  "types": "./dist/widgets/PeriodFilter.d.ts",
97
105
  "default": "./dist/widgets/PeriodFilter.js"
@@ -108,6 +116,10 @@
108
116
  "types": "./dist/widgets/RecordSheet.d.ts",
109
117
  "default": "./dist/widgets/RecordSheet.js"
110
118
  },
119
+ "./widgets/RoleMemberPicker": {
120
+ "types": "./dist/widgets/RoleMemberPicker.d.ts",
121
+ "default": "./dist/widgets/RoleMemberPicker.js"
122
+ },
111
123
  "./widgets/SearchableMultiPicker": {
112
124
  "types": "./dist/widgets/SearchableMultiPicker.d.ts",
113
125
  "default": "./dist/widgets/SearchableMultiPicker.js"