@solapi/ui-kit 1.0.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 (89) hide show
  1. package/README.md +153 -0
  2. package/dist/GlobalMfa-F9T2HvGA.cjs +1 -0
  3. package/dist/GlobalMfa-a9UddAbl.js +2176 -0
  4. package/dist/components/AuthFlow/AuthFlowGoogleOtpForm.d.ts +11 -0
  5. package/dist/components/AuthFlow/AuthFlowPasswordForm.d.ts +15 -0
  6. package/dist/components/AuthFlow/AuthFlowQueueItem.d.ts +6 -0
  7. package/dist/components/AuthFlow/AuthFlowSelfCert.d.ts +16 -0
  8. package/dist/components/AuthFlow/AuthFlowSimpleCert.d.ts +15 -0
  9. package/dist/components/AuthFlow/AuthFlowSmsForm.d.ts +33 -0
  10. package/dist/components/AuthFlow/AuthFlowTimer.d.ts +16 -0
  11. package/dist/components/AuthFlow/index.d.ts +6 -0
  12. package/dist/components/Confirm/Confirm.d.ts +3 -0
  13. package/dist/components/DatePicker/DatePicker.d.ts +21 -0
  14. package/dist/components/DatePicker/DateTimeField.d.ts +16 -0
  15. package/dist/components/DatePicker/MonthCalendar.d.ts +19 -0
  16. package/dist/components/DatePicker/TimeSelector.d.ts +13 -0
  17. package/dist/components/DatePicker/index.d.ts +4 -0
  18. package/dist/components/GlobalMfa/GlobalMfa.d.ts +3 -0
  19. package/dist/components/ListFilter/FilterChip.d.ts +21 -0
  20. package/dist/components/ListFilter/FilterPanelContent.d.ts +9 -0
  21. package/dist/components/ListFilter/ListFilter.d.ts +37 -0
  22. package/dist/components/ListFilter/NumberConditionSelect.d.ts +6 -0
  23. package/dist/components/ListFilter/SelectOptionButtons.d.ts +9 -0
  24. package/dist/components/ListFilter/index.d.ts +2 -0
  25. package/dist/components/Menu/Menu.d.ts +43 -0
  26. package/dist/components/Menu/index.d.ts +2 -0
  27. package/dist/components/Mfa/MfaEmail.d.ts +17 -0
  28. package/dist/components/Mfa/MfaMultiCert.d.ts +23 -0
  29. package/dist/components/Mfa/MfaPasswordNumPad.d.ts +11 -0
  30. package/dist/components/Mfa/MfaQueueItem.d.ts +7 -0
  31. package/dist/components/Mfa/MfaSelfCert.d.ts +20 -0
  32. package/dist/components/Mfa/MfaSms.d.ts +28 -0
  33. package/dist/components/Mfa/index.d.ts +4 -0
  34. package/dist/components/MiniTabs/MiniTabs.d.ts +28 -0
  35. package/dist/components/MiniTabs/index.d.ts +2 -0
  36. package/dist/components/Modal/Modal.d.ts +9 -0
  37. package/dist/components/Snackbar/Snackbar.d.ts +9 -0
  38. package/dist/components/Tabs/Tabs.d.ts +22 -0
  39. package/dist/components/Tabs/index.d.ts +1 -0
  40. package/dist/components/TextInput/TextInput.d.ts +30 -0
  41. package/dist/components/TextInput/index.d.ts +2 -0
  42. package/dist/components/common/Box.d.ts +27 -0
  43. package/dist/components/common/Button.d.ts +22 -0
  44. package/dist/components/common/Collapse.d.ts +19 -0
  45. package/dist/components/common/Divider.d.ts +15 -0
  46. package/dist/components/common/Grid.d.ts +51 -0
  47. package/dist/components/common/IconButton.d.ts +20 -0
  48. package/dist/components/common/Info.d.ts +10 -0
  49. package/dist/components/common/Paper.d.ts +19 -0
  50. package/dist/components/common/Popover.d.ts +20 -0
  51. package/dist/components/common/Stack.d.ts +17 -0
  52. package/dist/components/common/Typography.d.ts +20 -0
  53. package/dist/components/common/index.d.ts +15 -0
  54. package/dist/export/GlobalUIProvider.d.ts +20 -0
  55. package/dist/export/UIHost.d.ts +1 -0
  56. package/dist/export/UIProvider.d.ts +42 -0
  57. package/dist/export/index.d.ts +13 -0
  58. package/dist/federation/componentLoader.d.ts +8 -0
  59. package/dist/federation/hookLoader.d.ts +8 -0
  60. package/dist/federation/index.d.ts +4 -0
  61. package/dist/federation/providerLoader.d.ts +11 -0
  62. package/dist/federation/safeImport.d.ts +14 -0
  63. package/dist/federation.cjs +1 -0
  64. package/dist/federation.js +132 -0
  65. package/dist/hooks/useConfirm.d.ts +7 -0
  66. package/dist/hooks/useEnhancedMutation.d.ts +8 -0
  67. package/dist/hooks/useLingeringValue.d.ts +7 -0
  68. package/dist/hooks/useModal.d.ts +7 -0
  69. package/dist/hooks/useSnackbar.d.ts +12 -0
  70. package/dist/index-BpqgYc0Q.cjs +5 -0
  71. package/dist/index-DV20NPKR.js +18341 -0
  72. package/dist/index.cjs +1 -0
  73. package/dist/index.js +43 -0
  74. package/dist/lib/createMutationConfig.d.ts +62 -0
  75. package/dist/lib/phoneUtils.d.ts +1 -0
  76. package/dist/lib/typeDetector.d.ts +59 -0
  77. package/dist/stores/createConfirmStore.d.ts +24 -0
  78. package/dist/stores/createModalStore.d.ts +37 -0
  79. package/dist/stores/createSnackbarStore.d.ts +20 -0
  80. package/dist/stores/requestQueueStore.d.ts +41 -0
  81. package/dist/theme/ThemeProvider.d.ts +29 -0
  82. package/dist/theme/index.d.ts +8 -0
  83. package/dist/theme/tokens.d.ts +17 -0
  84. package/dist/theme/types.d.ts +126 -0
  85. package/dist/theme/utils.d.ts +52 -0
  86. package/dist/ui-kit.css +1 -0
  87. package/dist/utils/scrollLock.d.ts +6 -0
  88. package/dist/utils/supportAdapter.d.ts +22 -0
  89. package/package.json +66 -0
package/README.md ADDED
@@ -0,0 +1,153 @@
1
+ # @solapi/ui-kit
2
+
3
+ Solapi 공용 UI 컴포넌트 라이브러리.
4
+ **Module Federation**(CDN) 우선 로드, CDN 장애 시 **npm 패키지**로 자동 fallback하는 구조입니다.
5
+
6
+ ## 설치
7
+
8
+ ```bash
9
+ npm install @solapi/ui-kit
10
+ ```
11
+
12
+ ## Quick Start (Federation + npm Fallback)
13
+
14
+ ### 1. Remote 등록
15
+
16
+ ```js
17
+ // vite.remotes.config.js
18
+ const remoteApps = {
19
+ '@solapi-frontend/ui-kit': '/ui-kit/stable/assets/remote.entry.js'
20
+ }
21
+ ```
22
+
23
+ ### 2. GlobalUIProvider 감싸기
24
+
25
+ ```tsx
26
+ // src/RemoteEntry.tsx
27
+ import { createSafeProviderLoader } from '@solapi/ui-kit/federation'
28
+
29
+ const UI_KIT_PROVIDER = async () => {
30
+ try {
31
+ return await import('@solapi-frontend/ui-kit/provider')
32
+ } catch {
33
+ return await import('@solapi/ui-kit')
34
+ }
35
+ }
36
+
37
+ const GlobalUIProvider = createSafeProviderLoader<{
38
+ children?: React.ReactNode
39
+ portalContainer?: () => HTMLElement | null
40
+ }>(
41
+ UI_KIT_PROVIDER,
42
+ 'GlobalUIProvider',
43
+ { warningMessage: 'UI Kit CDN을 로드할 수 없습니다. npm 패키지로 대체되었습니다.' }
44
+ )
45
+
46
+ export default function RemoteEntry() {
47
+ return (
48
+ <GlobalUIProvider portalContainer={() => document.getElementById('root')}>
49
+ {/* 앱 컨텐츠 */}
50
+ </GlobalUIProvider>
51
+ )
52
+ }
53
+ ```
54
+
55
+ ### 3. 컴포넌트 로더 정의
56
+
57
+ ```tsx
58
+ // src/uiKit/safeCompLoader.tsx
59
+ import { createSafeComponentLoader } from '@solapi/ui-kit/federation'
60
+
61
+ const UI_KIT_COMP = async () => {
62
+ try {
63
+ return await import('@solapi-frontend/ui-kit/components')
64
+ } catch {
65
+ return await import('@solapi/ui-kit')
66
+ }
67
+ }
68
+
69
+ export const Tabs = createSafeComponentLoader(UI_KIT_COMP, 'Tabs')
70
+ export const TextInput = createSafeComponentLoader(UI_KIT_COMP, 'TextInput')
71
+ export const Button = createSafeComponentLoader(UI_KIT_COMP, 'Button')
72
+ export const Box = createSafeComponentLoader(UI_KIT_COMP, 'Box')
73
+ // ... 필요한 컴포넌트 추가
74
+ ```
75
+
76
+ ### 4. Hook 로더 정의
77
+
78
+ ```ts
79
+ // src/uiKit/safeHookLoader.ts
80
+ import { createSafeHookLoader } from '@solapi/ui-kit/federation'
81
+
82
+ const UI_KIT_HOOKS = async () => {
83
+ try {
84
+ return await import('@solapi-frontend/ui-kit/hooks')
85
+ } catch {
86
+ return await import('@solapi/ui-kit')
87
+ }
88
+ }
89
+
90
+ export const useSnackbar = createSafeHookLoader(UI_KIT_HOOKS, 'useSnackbar', {
91
+ success: msg => console.log(`[snackbar] ${msg}`),
92
+ error: msg => console.error(`[snackbar] ${msg}`),
93
+ warning: msg => console.warn(`[snackbar] ${msg}`),
94
+ info: msg => console.info(`[snackbar] ${msg}`)
95
+ })
96
+
97
+ export const useModal = createSafeHookLoader(UI_KIT_HOOKS, 'useModal', {
98
+ modals: [],
99
+ openModal: async () => false,
100
+ closeModal: () => {},
101
+ closeAllModals: () => {}
102
+ })
103
+
104
+ export const useConfirm = createSafeHookLoader(UI_KIT_HOOKS, 'useConfirm', {
105
+ confirms: [],
106
+ confirm: ({ message }) => Promise.resolve(window.confirm(message)),
107
+ alert: ({ message }) => { window.alert(message); return Promise.resolve(true) },
108
+ close: () => {}
109
+ })
110
+ ```
111
+
112
+ ### 5. 사용
113
+
114
+ ```tsx
115
+ import { Tabs, TextInput, Button, Box } from 'uiKit/safeCompLoader'
116
+ import { useSnackbar, useConfirm } from 'uiKit/safeHookLoader'
117
+
118
+ function MyPage() {
119
+ const snackbar = useSnackbar()
120
+ const { confirm } = useConfirm()
121
+
122
+ const handleSave = async () => {
123
+ const ok = await confirm({ title: '저장', message: '저장하시겠습니까?' })
124
+ if (ok) snackbar.success('저장되었습니다!')
125
+ }
126
+
127
+ return (
128
+ <Box padding={16}>
129
+ <Tabs
130
+ items={[{ label: 'Tab 1', value: '1' }, { label: 'Tab 2', value: '2' }]}
131
+ value={tabValue}
132
+ onChange={setTabValue}
133
+ />
134
+ <TextInput label="이름" placeholder="이름을 입력하세요" />
135
+ <Button onClick={handleSave}>저장</Button>
136
+ </Box>
137
+ )
138
+ }
139
+ ```
140
+
141
+ > Federation이 정상이면 CDN에서 로드 (번들 크기 0), 장애 시 npm 패키지에서 자동 로드됩니다.
142
+
143
+ ## 문서
144
+
145
+ | 문서 | 설명 |
146
+ |------|------|
147
+ | [시작하기](docs/getting-started.md) | 설치, 개발, 빌드 |
148
+ | [아키텍처](docs/architecture.md) | 패키지/모듈/프로젝트 구조, Provider 계층 |
149
+ | [사용 가이드](docs/usage-guide.md) | Federation + npm Fallback 상세 가이드, 마이그레이션 |
150
+ | [Federation API](docs/federation-api.md) | createSafeProviderLoader, createSafeComponentLoader, createSafeHookLoader |
151
+ | [GlobalUIProvider](docs/global-ui-provider.md) | Props, Portal, MFA, 로컬 개발 설정 |
152
+ | [컴포넌트 추가](docs/contributing.md) | 새 UI 컴포넌트/Hook 추가 가이드 |
153
+ | [안티패턴](docs/anti-patterns.md) | 흔한 실수와 올바른 대안 |