@wipco/sdui 0.1.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.
package/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # @wipco/sdui
2
+
3
+ WIPCO **서버 주도 UI(SDUI)** 렌더러 — JSON 페이지 스펙을 React 컴포넌트로 그린다.
4
+
5
+ 프레임워크 의존성이 없다. peer는 react·react-dom뿐이고, 차트(recharts)·지도(ol)는
6
+ 별도 진입점의 **선택적** peer라 안 깔아도 렌더가 죽지 않는다.
7
+
8
+ ```tsx
9
+ import { SduiRenderer } from '@wipco/sdui';
10
+ import '@wipco/sdui/styles.css';
11
+
12
+ export function Page({ spec }: { spec: unknown }) {
13
+ return <SduiRenderer page={spec} />;
14
+ }
15
+ ```
16
+
17
+ ## 진입점
18
+
19
+ | 진입점 | 내용 | 추가 peer |
20
+ | --- | --- | --- |
21
+ | `@wipco/sdui` | 렌더러 · 기본 어휘 39종 · 검증 · 권한 게이트 | 없음 |
22
+ | `@wipco/sdui/rich` | `Chart` · `MapPreview` — `createRegistry(richComponents)`로 얹는다 | `recharts` · `ol` (선택) |
23
+ | `@wipco/sdui/meta` | 컴포넌트 메타데이터 — 빌더 UI의 팔레트·속성 패널용 | 없음 |
24
+ | `@wipco/sdui/styles.css` | 공용 시트 (`.wp-*`) | — |
25
+
26
+ `rich`를 core에서 직접 import하면 안 된다 — 그 순간 core 번들이 recharts·ol을 끌고 온다.
27
+ `meta`는 런타임과 완전히 분리돼 있어(컴포넌트를 값으로 import하지 않는다) 빌더가 아닌
28
+ 앱에는 한 바이트도 들어가지 않는다.
29
+
30
+ ## 스타일
31
+
32
+ `styles.css`는 side-effectful이라 `sideEffects` 목록에 들어 있다. 번들러가 지우지
33
+ 않으므로 앱 진입점에서 한 번만 import하면 된다.
34
+
35
+ 자세한 것은 [저장소 README](https://github.com/wipco-dev/wipco-sdui#readme) 참고.
@@ -0,0 +1,48 @@
1
+ import React__default from 'react';
2
+
3
+ /**
4
+ * 날짜 선택 위젯 — 의존성 없는 자체 달력 구현.
5
+ *
6
+ * - DatePicker: 단일 날짜 (YYYY-MM-DD)
7
+ * - DateRangePicker: 기간 ({ from, to })
8
+ *
9
+ * ERP는 react-day-picker(v10) 위에 erp-dp-* 클래스를 입혀 쓰지만, 이 라이브러리는
10
+ * core가 외부 의존성을 갖지 않는다는 원칙이 있어 달력 격자를 직접 그린다.
11
+ * 필요한 기능(월 이동·범위 제한·기간 선택·키보드 이동)이 크지 않아 day-picker를
12
+ * 끌어올 만한 무게가 아니었다 — 그래서 rich 진입점이 아니라 core에 둔다.
13
+ * 격자 치수·색·상태 클래스는 ERP와 같은 값을 써서 시각적으로 동일하게 맞췄다.
14
+ *
15
+ * 프롭 계약은 ERP의 DatePicker와 동일하다(스펙 호환):
16
+ * value / onChange / min / max / placeholder / invalid / disabled / size
17
+ */
18
+
19
+ interface DatePickerProps {
20
+ /** 선택된 날짜 (YYYY-MM-DD). 주어지면 controlled로 동작. */
21
+ value?: string;
22
+ onChange?: (value: string) => void;
23
+ /** 선택 가능 최소 날짜 (YYYY-MM-DD, 포함). */
24
+ min?: string;
25
+ /** 선택 가능 최대 날짜 (YYYY-MM-DD, 포함). */
26
+ max?: string;
27
+ placeholder?: string;
28
+ invalid?: boolean;
29
+ disabled?: boolean;
30
+ size?: 'sm' | 'md' | 'lg';
31
+ }
32
+ declare function DatePicker({ value, onChange, min, max, placeholder, invalid, disabled, size, }: DatePickerProps): React__default.JSX.Element;
33
+ interface DateRangeValue {
34
+ from?: string;
35
+ to?: string;
36
+ }
37
+ interface DateRangePickerProps {
38
+ /** 선택된 기간 (YYYY-MM-DD). 주어지면 controlled로 동작. */
39
+ value?: DateRangeValue;
40
+ onChange?: (value: DateRangeValue) => void;
41
+ min?: string;
42
+ max?: string;
43
+ invalid?: boolean;
44
+ disabled?: boolean;
45
+ }
46
+ declare function DateRangePicker({ value, onChange, min, max, invalid, disabled, }: DateRangePickerProps): React__default.JSX.Element;
47
+
48
+ export { DatePicker as D, DateRangePicker as a, type DatePickerProps as b, type DateRangePickerProps as c, type DateRangeValue as d };