@uniai-fe/uds-templates 0.3.15 → 0.4.1
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 +59 -0
- package/package.json +5 -5
- package/src/auth/common/find/markup/InfoStep.tsx +2 -1
- package/src/auth/login/markup/FormField.tsx +4 -1
- package/src/cctv/components/index.tsx +3 -0
- package/src/cctv/index.tsx +3 -0
- package/src/modal/index.tsx +3 -0
- package/src/page-frame/desktop/components/index.tsx +3 -0
- package/src/page-frame/desktop/index.tsx +3 -0
- package/src/page-frame/index.tsx +3 -0
- package/src/page-frame/mobile/components/index.tsx +3 -0
- package/src/page-frame/mobile/index.tsx +3 -0
- package/src/weather/components/index.tsx +3 -0
- package/src/weather/index.tsx +3 -0
package/README.md
CHANGED
|
@@ -29,6 +29,59 @@ Next.js 서비스에서 primitives와 동일한 방식으로 **Raw TypeScript**
|
|
|
29
29
|
- **templates**는 레이아웃/플로우/상태 표현까지 담당하고,
|
|
30
30
|
- API 호출, 인증 토큰 관리, 라우팅, i18n 등 비즈니스 로직은 서비스 앱에서 구현합니다.
|
|
31
31
|
|
|
32
|
+
## 확인 완료 도구 목록
|
|
33
|
+
|
|
34
|
+
- `/modal`
|
|
35
|
+
- `Modal.Provider`
|
|
36
|
+
- `Modal.StackProvider`
|
|
37
|
+
- `Modal.RouteReset`
|
|
38
|
+
- `Modal.useModal`
|
|
39
|
+
- `Modal.Alert`
|
|
40
|
+
- `Modal.Dialog`
|
|
41
|
+
- `createAlertModal`
|
|
42
|
+
- `createDialogModal`
|
|
43
|
+
- `modalStackAtom`
|
|
44
|
+
- `ModalState`
|
|
45
|
+
- `ModalStatePatch`
|
|
46
|
+
- `ModalProps`
|
|
47
|
+
- `ModalFooterButton`
|
|
48
|
+
- `AlertTemplateOptions`
|
|
49
|
+
- `DialogTemplateOptions`
|
|
50
|
+
- `UseModalReturn`
|
|
51
|
+
- `/weather`
|
|
52
|
+
- `WeatherComponents.PageHeader`
|
|
53
|
+
- `WeatherPageHeaderContainer`
|
|
54
|
+
- `WeatherMockProvider`
|
|
55
|
+
- `weatherCoordinate`
|
|
56
|
+
- `useWeatherKorea`
|
|
57
|
+
- `useOpenWeatherMap`
|
|
58
|
+
- `/cctv`
|
|
59
|
+
- `CCTV.Provider`
|
|
60
|
+
- `CCTV.CamList.Container`
|
|
61
|
+
- `CCTV.Video.Container`
|
|
62
|
+
- `CCTV.Video.Contents`
|
|
63
|
+
- `CCTV.Video.Overlay.Container`
|
|
64
|
+
- `CCTV.Pagination.Container`
|
|
65
|
+
- `CCTV.Pagination.List.Container`
|
|
66
|
+
- `CCTV.Pagination.Button.Prev`
|
|
67
|
+
- `CCTV.Pagination.Button.Next`
|
|
68
|
+
- `CCTV.Viewer.Desktop.Container`
|
|
69
|
+
- `useCctvCompanyData`
|
|
70
|
+
- `useCctvContext`
|
|
71
|
+
- `useCctvRtcStream`
|
|
72
|
+
- `getServerCompanyList`
|
|
73
|
+
- `getServerCctvToken`
|
|
74
|
+
- `postCctvRtcToken`
|
|
75
|
+
- `/page-frame`
|
|
76
|
+
- `Frame`
|
|
77
|
+
- `Frame.Mobile`
|
|
78
|
+
- `MobileFrame`
|
|
79
|
+
- `Frame.Desktop`
|
|
80
|
+
- `DesktopFrame`
|
|
81
|
+
- `MobileFrameProps`
|
|
82
|
+
- `PageFrameDesktopNavProps`
|
|
83
|
+
- `SitemapDataType`
|
|
84
|
+
|
|
32
85
|
## 현재 제공 템플릿/모듈
|
|
33
86
|
|
|
34
87
|
- `/auth/**`
|
|
@@ -42,6 +95,12 @@ Next.js 서비스에서 primitives와 동일한 방식으로 **Raw TypeScript**
|
|
|
42
95
|
- `/modal/**`
|
|
43
96
|
- ui-legacy 스택 기반 모달 Provider/Root/Container + 템플릿(`Modal.Alert`, `Modal.Dialog`)
|
|
44
97
|
- Storybook(`apps/design-storybook/src/stories/templates/modal`)에서 Alert/Confirm 케이스를 검증한다.
|
|
98
|
+
- `/weather/**`
|
|
99
|
+
- page-frame header utility에 결합되는 weather header 템플릿과 weather data hook/mock 도구를 제공한다.
|
|
100
|
+
- `/cctv/**`
|
|
101
|
+
- finder/viewer/video/pagination 조합과 rtc/company-list API helper를 제공한다.
|
|
102
|
+
- `/page-frame/**`
|
|
103
|
+
- mobile/desktop private route frame, nav/header/popup 조합을 제공한다.
|
|
45
104
|
|
|
46
105
|
각 템플릿의 상세한 범위와 의사결정은 `CONTEXT-*.md` 문서에서 관리합니다.
|
|
47
106
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniai-fe/uds-templates",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "UNIAI Design System; UI Templates Package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"publishConfig": {
|
|
13
13
|
"access": "public"
|
|
14
14
|
},
|
|
15
|
-
"packageManager": "pnpm@10.32.
|
|
15
|
+
"packageManager": "pnpm@10.32.1",
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">=24",
|
|
18
18
|
"pnpm": ">=10"
|
|
@@ -66,11 +66,11 @@
|
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"clsx": "^2.1.1",
|
|
69
|
-
"dayjs": "^1.11.
|
|
69
|
+
"dayjs": "^1.11.20"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@svgr/webpack": "^8.1.0",
|
|
73
|
-
"@tanstack/react-query": "^5.
|
|
73
|
+
"@tanstack/react-query": "^5.91.2",
|
|
74
74
|
"@types/node": "^24.10.2",
|
|
75
75
|
"@types/react": "^19.2.14",
|
|
76
76
|
"@types/react-dom": "^19.2.3",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"next": "^15.5.11",
|
|
91
91
|
"prettier": "^3.8.1",
|
|
92
92
|
"react-hook-form": "^7.71.2",
|
|
93
|
-
"sass": "^1.
|
|
93
|
+
"sass": "^1.98.0",
|
|
94
94
|
"typescript": "~5.9.3"
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -91,7 +91,8 @@ export function AuthFindAccountInfoStep({
|
|
|
91
91
|
<div className="auth-find-account-fields">
|
|
92
92
|
<AuthFindAccountFieldBase
|
|
93
93
|
className={clsx("auth-find-field-name", nameField.className)}
|
|
94
|
-
|
|
94
|
+
// 첫 번째 필드 라벨도 서비스 앱이 주입한 값을 우선 따르도록 preset 하드코딩을 제거한다.
|
|
95
|
+
label={nameField.label ?? "이름"}
|
|
95
96
|
templateProps={nameField.templateProps}
|
|
96
97
|
inputProps={{
|
|
97
98
|
name: nameFieldName,
|
|
@@ -81,7 +81,10 @@ export default function AuthLoginFormField({
|
|
|
81
81
|
register={register.id}
|
|
82
82
|
helper={idHelper}
|
|
83
83
|
label={idField?.label ?? "아이디"}
|
|
84
|
-
placeholder={
|
|
84
|
+
placeholder={
|
|
85
|
+
idField?.placeholder ??
|
|
86
|
+
`${idField?.label ?? "아이디"}를 입력해 주세요`
|
|
87
|
+
}
|
|
85
88
|
inputProps={idField?.inputProps}
|
|
86
89
|
templateProps={idField?.templateProps}
|
|
87
90
|
/>
|
package/src/cctv/index.tsx
CHANGED
package/src/modal/index.tsx
CHANGED
package/src/page-frame/index.tsx
CHANGED