@reopt-ai/opt-ui 1.4.1 → 1.6.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/COMPONENT_CATALOG.md +374 -84
- package/README.md +28 -7
- package/dist/app.css +146 -0
- package/dist/core/index.cjs +164 -324
- package/dist/core/index.d.cts +3 -5
- package/dist/core/index.d.ts +3 -5
- package/dist/core/index.js +3 -323
- package/dist/docs/01-getting-started.md +25 -5
- package/dist/docs/02-components/01-core.md +192 -46
- package/dist/docs/02-components/02-visuals.md +1 -1
- package/dist/docs/02-components/03-shells.md +177 -42
- package/dist/docs/02-components/04-surfaces.md +1 -1
- package/dist/docs/02-components/index.md +1 -1
- package/dist/docs/03-recipes/03-layouts.md +20 -12
- package/dist/docs/04-theming.md +3 -1
- package/dist/docs/05-migration/01-breaking-changes.md +28 -0
- package/dist/id-registry.cjs +1899 -1872
- package/dist/id-registry.d.cts +13 -10
- package/dist/id-registry.d.cts.map +1 -0
- package/dist/id-registry.d.ts +13 -10
- package/dist/id-registry.d.ts.map +1 -0
- package/dist/id-registry.js +1897 -1871
- package/dist/id-registry.js.map +1 -0
- package/dist/id-registry.json +44 -44
- package/dist/index.cjs +8294 -9613
- package/dist/index.d.cts +1486 -1438
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1486 -1438
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7933 -9600
- package/dist/index.js.map +1 -0
- package/dist/meta.cjs +7461 -6765
- package/dist/meta.d.cts.map +1 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +7460 -6736
- package/dist/meta.js.map +1 -0
- package/dist/pagination-By7Ozv3U.js +3788 -0
- package/dist/pagination-By7Ozv3U.js.map +1 -0
- package/dist/pagination-Uv3CnGJz.cjs +4677 -0
- package/dist/shader-surface-BK1GMt5_.d.cts +1788 -0
- package/dist/shader-surface-BK1GMt5_.d.cts.map +1 -0
- package/dist/shader-surface-BWhO2xkk.js +3715 -0
- package/dist/shader-surface-BWhO2xkk.js.map +1 -0
- package/dist/shader-surface-DIVWtpFl.d.ts +1788 -0
- package/dist/shader-surface-DIVWtpFl.d.ts.map +1 -0
- package/dist/shader-surface-DxLLfrE6.cjs +4108 -0
- package/dist/shells/index.cjs +51 -65
- package/dist/shells/index.d.cts +4 -5
- package/dist/shells/index.d.ts +4 -5
- package/dist/shells/index.js +3 -64
- package/dist/tailwind.css +54 -5
- package/dist/theme/presets/default.css +12 -12
- package/dist/theme/server.cjs +310 -0
- package/dist/theme/server.d.cts +117 -0
- package/dist/theme/server.d.cts.map +1 -0
- package/dist/theme/server.d.ts +117 -0
- package/dist/theme/server.d.ts.map +1 -0
- package/dist/theme/server.js +287 -0
- package/dist/theme/server.js.map +1 -0
- package/dist/types-D0FlcYnM.d.cts +301 -0
- package/dist/types-D0FlcYnM.d.cts.map +1 -0
- package/dist/types-D0FlcYnM.d.ts +301 -0
- package/dist/types-D0FlcYnM.d.ts.map +1 -0
- package/dist/visuals/index.cjs +10 -4
- package/dist/visuals/index.d.cts +2 -1
- package/dist/visuals/index.d.ts +2 -1
- package/dist/visuals/index.js +1 -2
- package/dist/workflow-canvas-3Jeevkgy.cjs +2599 -0
- package/dist/workflow-canvas-BGBAcjf-.js +2403 -0
- package/dist/workflow-canvas-BGBAcjf-.js.map +1 -0
- package/dist/workflow-canvas-Bar_O2SQ.d.ts +494 -0
- package/dist/workflow-canvas-Bar_O2SQ.d.ts.map +1 -0
- package/dist/workflow-canvas-DghDRtHn.d.cts +494 -0
- package/dist/workflow-canvas-DghDRtHn.d.cts.map +1 -0
- package/package.json +24 -8
- package/dist/chunk-3GWWZKX7.js +0 -38
- package/dist/chunk-AFF2HPE5.cjs +0 -5008
- package/dist/chunk-ELWICXYY.js +0 -4745
- package/dist/chunk-N4NDU5ET.cjs +0 -4745
- package/dist/chunk-ONE3C5RV.cjs +0 -38
- package/dist/chunk-QWBHD54V.js +0 -3218
- package/dist/chunk-RBM2RNC2.js +0 -5008
- package/dist/chunk-X5WCXJAF.cjs +0 -3218
- package/dist/index-BZ_lBlO1.d.ts +0 -474
- package/dist/index-BuvxoWHf.d.cts +0 -474
- package/dist/index-DlAcuvQp.d.cts +0 -1686
- package/dist/index-Slu5hOj1.d.ts +0 -1686
- package/dist/types-D4-0lwaE.d.cts +0 -298
- package/dist/types-D4-0lwaE.d.ts +0 -298
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Core Components"
|
|
3
3
|
description: "59 Core layer components — props, examples, keyboard shortcuts."
|
|
4
|
-
version: "1.
|
|
4
|
+
version: "1.6.0"
|
|
5
5
|
generated: true
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -117,6 +117,13 @@ const store = useFormStore({ defaultValues: { name: "" } });
|
|
|
117
117
|
| `disabledReason` | `string` | | | aria-disabled 상태에서 노출할 비활성 사유 |
|
|
118
118
|
| `labels` | `NumberInputLabels` | | | 입력/증감/clear/invalid 접근성 문구 |
|
|
119
119
|
|
|
120
|
+
**Keyboard Shortcuts:**
|
|
121
|
+
|
|
122
|
+
| Keys | Action |
|
|
123
|
+
| ---- | ------------------- |
|
|
124
|
+
| `↑` | 값 증가 (step 단위) |
|
|
125
|
+
| `↓` | 값 감소 (step 단위) |
|
|
126
|
+
|
|
120
127
|
### Checkbox
|
|
121
128
|
|
|
122
129
|
> 독립적인 체크박스 컴포넌트. 레이블, 설명, 그룹과 DOM property까지 동기화되는 indeterminate 상태를 지원합니다.
|
|
@@ -172,6 +179,14 @@ const store = useFormStore({ defaultValues: { name: "" } });
|
|
|
172
179
|
| `description` | `string` | | | 레이블 아래 설명 텍스트 |
|
|
173
180
|
| `size` | `"sm" \| "md" \| "lg"` | | "md" | 라디오 크기 |
|
|
174
181
|
|
|
182
|
+
**Keyboard Shortcuts:**
|
|
183
|
+
|
|
184
|
+
| Keys | Action |
|
|
185
|
+
| ------- | ------------------- |
|
|
186
|
+
| `↑ ↓` | 라디오 옵션 간 탐색 |
|
|
187
|
+
| `← →` | 라디오 옵션 간 탐색 |
|
|
188
|
+
| `Space` | 현재 옵션 선택 |
|
|
189
|
+
|
|
175
190
|
### Switch
|
|
176
191
|
|
|
177
192
|
> 토글 스위치 컴포넌트. 3가지 크기와 레이블/설명의 명시적 접근성 연결을 지원합니다.
|
|
@@ -234,6 +249,15 @@ const store = useFormStore({ defaultValues: { name: "" } });
|
|
|
234
249
|
| `children` | `ReactNode` | Yes | | 옵션 레이블 |
|
|
235
250
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
236
251
|
|
|
252
|
+
**Keyboard Shortcuts:**
|
|
253
|
+
|
|
254
|
+
| Keys | Action |
|
|
255
|
+
| --------------- | -------------- |
|
|
256
|
+
| `↑ ↓` | 옵션 탐색 |
|
|
257
|
+
| `Enter / Space` | 옵션 선택 |
|
|
258
|
+
| `Esc` | 팝오버 닫기 |
|
|
259
|
+
| `문자 입력` | Typeahead 탐색 |
|
|
260
|
+
|
|
237
261
|
**Examples:**
|
|
238
262
|
|
|
239
263
|
_기본 선택:_
|
|
@@ -316,6 +340,14 @@ import {
|
|
|
316
340
|
| `children` | `ReactNode` | | "결과가 없습니다." | 빈 상태 메시지 |
|
|
317
341
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
318
342
|
|
|
343
|
+
**Keyboard Shortcuts:**
|
|
344
|
+
|
|
345
|
+
| Keys | Action |
|
|
346
|
+
| ------- | ----------- |
|
|
347
|
+
| `↑ ↓` | 항목 탐색 |
|
|
348
|
+
| `Enter` | 항목 선택 |
|
|
349
|
+
| `Esc` | 팝오버 닫기 |
|
|
350
|
+
|
|
319
351
|
### DateRangePicker
|
|
320
352
|
|
|
321
353
|
> 날짜 범위 선택 컴포넌트. 프리셋, 달력 UI, 포커스 관리와 RTL 방향 탐색 아이콘을 지원합니다.
|
|
@@ -356,6 +388,17 @@ import {
|
|
|
356
388
|
| `delimiters` | `(string \| RegExp)[]` | | [",", ";", "\n"] | 붙여넣기 시 태그를 분할할 구분자 목록 |
|
|
357
389
|
| `allowDuplicates` | `boolean` | | false | 중복 태그 허용 여부 |
|
|
358
390
|
|
|
391
|
+
**Keyboard Shortcuts:**
|
|
392
|
+
|
|
393
|
+
| Keys | Action |
|
|
394
|
+
| -------------- | ---------------------------------------- |
|
|
395
|
+
| `Enter` | 태그 추가 |
|
|
396
|
+
| `Backspace` | 마지막 태그 삭제 (입력 비어있을 때) |
|
|
397
|
+
| `←/→` | 태그 간 이동 (Composite roving tabindex) |
|
|
398
|
+
| `Delete` | 포커스된 태그 삭제 |
|
|
399
|
+
| `Ctrl+Z` | 실행취소 |
|
|
400
|
+
| `Ctrl+Shift+Z` | 다시실행 |
|
|
401
|
+
|
|
359
402
|
### ColorPicker
|
|
360
403
|
|
|
361
404
|
> 색상 선택 컴포넌트. 프리셋 팔레트와 hex 입력을 지원합니다.
|
|
@@ -702,9 +745,11 @@ const store = useFormStore({
|
|
|
702
745
|
|
|
703
746
|
**Import:** `import { Kbd } from "@reopt-ai/opt-ui"`
|
|
704
747
|
|
|
705
|
-
| Prop
|
|
706
|
-
|
|
|
707
|
-
| `children`
|
|
748
|
+
| Prop | Type | Required | Default | Description |
|
|
749
|
+
| ----------- | ----------- | -------- | ------- | ------------------------------------------------------------------------------- |
|
|
750
|
+
| `children` | `ReactNode` | Yes | | 표시할 단축키 텍스트 |
|
|
751
|
+
| `hint` | `boolean` | | | 인라인 힌트 배지로 표시. `data-shortcut-hints="hidden"`일 때 숨겨진다 (app.css) |
|
|
752
|
+
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
708
753
|
|
|
709
754
|
### Button
|
|
710
755
|
|
|
@@ -1092,6 +1137,15 @@ import {
|
|
|
1092
1137
|
| ----------- | -------- | -------- | ------- | ---------------------- |
|
|
1093
1138
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1094
1139
|
|
|
1140
|
+
**Keyboard Shortcuts:**
|
|
1141
|
+
|
|
1142
|
+
| Keys | Action |
|
|
1143
|
+
| --------------- | -------------- |
|
|
1144
|
+
| `← →` | 메뉴 간 탐색 |
|
|
1145
|
+
| `↑ ↓` | 메뉴 항목 탐색 |
|
|
1146
|
+
| `Enter / Space` | 항목 선택/토글 |
|
|
1147
|
+
| `Esc` | 메뉴 닫기 |
|
|
1148
|
+
|
|
1095
1149
|
### DropdownMenu
|
|
1096
1150
|
|
|
1097
1151
|
> Menu Core 위의 간편 래퍼. 단일 트리거 드롭다운 메뉴에 특화되었습니다.
|
|
@@ -1112,6 +1166,14 @@ import {
|
|
|
1112
1166
|
| `onClick` | `() => void` | | | 항목 클릭 핸들러 |
|
|
1113
1167
|
| `disabled` | `boolean` | | | 비활성 상태 |
|
|
1114
1168
|
|
|
1169
|
+
**Keyboard Shortcuts:**
|
|
1170
|
+
|
|
1171
|
+
| Keys | Action |
|
|
1172
|
+
| --------------- | -------------- |
|
|
1173
|
+
| `↑ ↓` | 메뉴 항목 탐색 |
|
|
1174
|
+
| `Enter / Space` | 항목 선택 |
|
|
1175
|
+
| `Esc` | 메뉴 닫기 |
|
|
1176
|
+
|
|
1115
1177
|
### Popover
|
|
1116
1178
|
|
|
1117
1179
|
> Popover 프리미티브 래퍼. 트리거 요소에 연결된 플로팅 콘텐츠를 표시합니다.
|
|
@@ -1123,6 +1185,13 @@ import {
|
|
|
1123
1185
|
| `gutter` | `number` | | 8 | 트리거와의 간격 (px) |
|
|
1124
1186
|
| `className` | `string` | | | 커스텀 CSS 클래스 |
|
|
1125
1187
|
|
|
1188
|
+
**Keyboard Shortcuts:**
|
|
1189
|
+
|
|
1190
|
+
| Keys | Action |
|
|
1191
|
+
| --------------- | ------------- |
|
|
1192
|
+
| `Esc` | 팝오버 닫기 |
|
|
1193
|
+
| `Enter / Space` | 트리거 활성화 |
|
|
1194
|
+
|
|
1126
1195
|
### Tabs
|
|
1127
1196
|
|
|
1128
1197
|
> 탭 패널 시스템. 4-part anatomy: Root, TabList, Tab, TabPanel.
|
|
@@ -1131,26 +1200,31 @@ import {
|
|
|
1131
1200
|
|
|
1132
1201
|
**TabsRoot:**
|
|
1133
1202
|
|
|
1134
|
-
| Prop | Type | Required | Default | Description
|
|
1135
|
-
| ------------------- | ------------------------------ | -------- | ------- |
|
|
1136
|
-
| `
|
|
1137
|
-
| `
|
|
1138
|
-
| `
|
|
1203
|
+
| Prop | Type | Required | Default | Description |
|
|
1204
|
+
| ------------------- | ------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------- |
|
|
1205
|
+
| `variant` | `"underline" \| "workspace"` | | | 탭 프레임 형태. workspace는 편집기 탭(문서/쿼리처럼 열고 닫히며 상태를 갖는 작업 단위) |
|
|
1206
|
+
| `defaultSelectedId` | `string` | | | 초기 선택된 탭 ID |
|
|
1207
|
+
| `selectedId` | `string \| null` | | | 제어 모드: 선택된 탭 ID |
|
|
1208
|
+
| `setSelectedId` | `(id: string \| null) => void` | | | 제어 모드: 탭 변경 핸들러 |
|
|
1139
1209
|
|
|
1140
1210
|
**TabList:**
|
|
1141
1211
|
|
|
1142
|
-
| Prop | Type | Required | Default | Description
|
|
1143
|
-
| ----------- | ----------- | -------- | ------- |
|
|
1144
|
-
| `children` | `ReactNode` | Yes | | Tab 요소들
|
|
1145
|
-
| `
|
|
1212
|
+
| Prop | Type | Required | Default | Description |
|
|
1213
|
+
| ----------- | ----------- | -------- | ------- | -------------------------------------------------------------------------------------- |
|
|
1214
|
+
| `children` | `ReactNode` | Yes | | Tab 요소들 |
|
|
1215
|
+
| `actions` | `ReactNode` | | | 탭 줄 오른쪽 액션 영역 (새 탭, 닫기 등). tablist 바깥에 렌더돼 탭 순회에 끼어들지 않음 |
|
|
1216
|
+
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1146
1217
|
|
|
1147
1218
|
**Tab:**
|
|
1148
1219
|
|
|
1149
|
-
| Prop
|
|
1150
|
-
|
|
|
1151
|
-
| `id`
|
|
1152
|
-
| `children`
|
|
1153
|
-
| `
|
|
1220
|
+
| Prop | Type | Required | Default | Description |
|
|
1221
|
+
| ------------- | ---------------------- | -------- | ------- | ------------------------------------------------- |
|
|
1222
|
+
| `id` | `string` | Yes | | 탭 고유 ID (TabPanel의 tabId와 매칭) |
|
|
1223
|
+
| `children` | `ReactNode` | Yes | | 탭 레이블 |
|
|
1224
|
+
| `icon` | `ReactNode` | | | 탭 이름 앞 아이콘. 활성 탭에서 accent 색으로 전환 |
|
|
1225
|
+
| `status` | `"dirty" \| "running"` | | | 저장되지 않은 변경 / 실행 중 인디케이터 |
|
|
1226
|
+
| `statusLabel` | `string` | | | status 인디케이터의 접근성 레이블 |
|
|
1227
|
+
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1154
1228
|
|
|
1155
1229
|
**TabPanel:**
|
|
1156
1230
|
|
|
@@ -1160,6 +1234,14 @@ import {
|
|
|
1160
1234
|
| `children` | `ReactNode` | Yes | | 패널 콘텐츠 |
|
|
1161
1235
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1162
1236
|
|
|
1237
|
+
**Keyboard Shortcuts:**
|
|
1238
|
+
|
|
1239
|
+
| Keys | Action |
|
|
1240
|
+
| ------ | ------------------- |
|
|
1241
|
+
| `← →` | 탭 탐색 |
|
|
1242
|
+
| `Home` | 첫 번째 탭으로 이동 |
|
|
1243
|
+
| `End` | 마지막 탭으로 이동 |
|
|
1244
|
+
|
|
1163
1245
|
### Disclosure
|
|
1164
1246
|
|
|
1165
1247
|
> 접기/펼치기 콘텐츠 영역. 3-part anatomy: Root, Trigger, Content.
|
|
@@ -1188,6 +1270,12 @@ import {
|
|
|
1188
1270
|
| `children` | `ReactNode` | Yes | | 접히는 콘텐츠 |
|
|
1189
1271
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1190
1272
|
|
|
1273
|
+
**Keyboard Shortcuts:**
|
|
1274
|
+
|
|
1275
|
+
| Keys | Action |
|
|
1276
|
+
| --------------- | -------------- |
|
|
1277
|
+
| `Enter / Space` | 열기/닫기 토글 |
|
|
1278
|
+
|
|
1191
1279
|
### Dialog
|
|
1192
1280
|
|
|
1193
1281
|
> 모달 다이얼로그. 9-part anatomy: Root, Disclosure, Panel, Heading, Description, Dismiss, Header, Body, Footer.
|
|
@@ -1253,6 +1341,13 @@ import {
|
|
|
1253
1341
|
| ---------- | ----------- | -------- | ------- | -------------- |
|
|
1254
1342
|
| `children` | `ReactNode` | Yes | | 액션 버튼 영역 |
|
|
1255
1343
|
|
|
1344
|
+
**Keyboard Shortcuts:**
|
|
1345
|
+
|
|
1346
|
+
| Keys | Action |
|
|
1347
|
+
| ----- | -------------------------------- |
|
|
1348
|
+
| `Esc` | 다이얼로그 닫기 |
|
|
1349
|
+
| `Tab` | 다이얼로그 내 포커스 이동 (트랩) |
|
|
1350
|
+
|
|
1256
1351
|
**Examples:**
|
|
1257
1352
|
|
|
1258
1353
|
_모달 대화상자:_
|
|
@@ -1298,6 +1393,13 @@ import {
|
|
|
1298
1393
|
| `swipeToDismiss` | `boolean` | | true | 가장자리 방향으로 드래그해 닫기 활성화 |
|
|
1299
1394
|
| `swipeDismissThreshold` | `number` | | 80 | 닫힘 커밋에 필요한 드래그 거리(px) |
|
|
1300
1395
|
|
|
1396
|
+
**Keyboard Shortcuts:**
|
|
1397
|
+
|
|
1398
|
+
| Keys | Action |
|
|
1399
|
+
| ----- | ----------------------- |
|
|
1400
|
+
| `Esc` | 드로어 닫기 |
|
|
1401
|
+
| `Tab` | 드로어 내부 포커스 이동 |
|
|
1402
|
+
|
|
1301
1403
|
### Toolbar
|
|
1302
1404
|
|
|
1303
1405
|
> 툴바 컨테이너 + 툴팁. 7 exports: ToolbarRoot, ToolbarContainer, ToolbarButton, ToolbarSeparator, TooltipProvider, TooltipAnchor, Tooltip.
|
|
@@ -1350,6 +1452,15 @@ import {
|
|
|
1350
1452
|
| `children` | `ReactNode` | Yes | | 툴팁 내용 |
|
|
1351
1453
|
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1352
1454
|
|
|
1455
|
+
**Keyboard Shortcuts:**
|
|
1456
|
+
|
|
1457
|
+
| Keys | Action |
|
|
1458
|
+
| --------------- | --------------------- |
|
|
1459
|
+
| `← →` | 버튼 간 탐색 |
|
|
1460
|
+
| `Enter / Space` | 버튼 활성화 |
|
|
1461
|
+
| `Home` | 첫 번째 버튼으로 이동 |
|
|
1462
|
+
| `End` | 마지막 버튼으로 이동 |
|
|
1463
|
+
|
|
1353
1464
|
### Pagination
|
|
1354
1465
|
|
|
1355
1466
|
> 페이지 넘김 네비게이션. ellipsis 포함 페이지 번호, compact/count variant, totalPages/cursor pagination, Prev/Next 버튼을 제공합니다.
|
|
@@ -1397,6 +1508,15 @@ import {
|
|
|
1397
1508
|
| `focusWrap` | `boolean` | | true | 행 끝에서 다음 행으로 이동 |
|
|
1398
1509
|
| `className` | `string` | | | 컨테이너 CSS 클래스 |
|
|
1399
1510
|
|
|
1511
|
+
**Keyboard Shortcuts:**
|
|
1512
|
+
|
|
1513
|
+
| Keys | Action |
|
|
1514
|
+
| --------- | -------------------- |
|
|
1515
|
+
| `↑ ↓ ← →` | 2D 방향 탐색 |
|
|
1516
|
+
| `Home` | 첫 항목으로 이동 |
|
|
1517
|
+
| `End` | 마지막 항목으로 이동 |
|
|
1518
|
+
| `Tab` | 영역 밖으로 이동 |
|
|
1519
|
+
|
|
1400
1520
|
### PageHeader
|
|
1401
1521
|
|
|
1402
1522
|
> 페이지 제목, 설명, 액션 슬롯을 제공하는 레이아웃 헤더 컴포넌트.
|
|
@@ -1456,30 +1576,37 @@ import {
|
|
|
1456
1576
|
|
|
1457
1577
|
**ResizablePanelGroup:**
|
|
1458
1578
|
|
|
1459
|
-
| Prop
|
|
1460
|
-
|
|
|
1461
|
-
| `direction`
|
|
1462
|
-
| `children`
|
|
1463
|
-
| `
|
|
1464
|
-
| `
|
|
1579
|
+
| Prop | Type | Required | Default | Description |
|
|
1580
|
+
| ----------------- | ------------------------------------------ | -------- | ------- | --------------------------------------------------- |
|
|
1581
|
+
| `direction` | `"horizontal" \| "vertical"` | Yes | | 패널 분할 방향 |
|
|
1582
|
+
| `children` | `ReactNode` | Yes | | ResizablePanel + ResizableHandle 조합 |
|
|
1583
|
+
| `id` | `string` | | | 그룹과 defaultLayout의 패널 크기를 식별하는 고유 ID |
|
|
1584
|
+
| `defaultLayout` | `Record<string, number>` | | | 패널 ID별 초기 비율(0-100) |
|
|
1585
|
+
| `onLayoutChanged` | `(layout: Record<string, number>) => void` | | | 드래그가 끝난 뒤 확정된 레이아웃 콜백 |
|
|
1586
|
+
| `groupRef` | `Ref<ResizablePanelGroupHandle>` | | | 레이아웃 조회·설정을 위한 명령형 그룹 ref |
|
|
1587
|
+
| `autoSaveId` | `string` | | | id의 deprecated 별칭 |
|
|
1588
|
+
| `className` | `string` | | | 커스텀 CSS 클래스 |
|
|
1465
1589
|
|
|
1466
1590
|
**ResizablePanel:**
|
|
1467
1591
|
|
|
1468
|
-
| Prop | Type
|
|
1469
|
-
| ------------- |
|
|
1470
|
-
| `defaultSize` | `number`
|
|
1471
|
-
| `minSize` | `number`
|
|
1472
|
-
| `maxSize` | `number`
|
|
1473
|
-
| `collapsible` | `boolean`
|
|
1474
|
-
| `
|
|
1475
|
-
| `
|
|
1592
|
+
| Prop | Type | Required | Default | Description |
|
|
1593
|
+
| ------------- | ------------------------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------- |
|
|
1594
|
+
| `defaultSize` | `number \| string` | | | 초기 크기. 숫자는 퍼센트, 문자열은 명시한 CSS 단위 |
|
|
1595
|
+
| `minSize` | `number \| string` | | | 최소 크기. 숫자는 퍼센트 |
|
|
1596
|
+
| `maxSize` | `number \| string` | | | 최대 크기. 숫자는 퍼센트 |
|
|
1597
|
+
| `collapsible` | `boolean` | | false | 최소 크기 이하 시 접히기 허용 |
|
|
1598
|
+
| `onResize` | `(size: ResizablePanelSize, id?: string \| number, previous?: ResizablePanelSize) => void` | | | 패널 크기 변경 콜백 |
|
|
1599
|
+
| `panelRef` | `Ref<ResizablePanelHandle>` | | | 접기·펼치기·크기 제어를 위한 명령형 패널 ref |
|
|
1600
|
+
| `children` | `ReactNode` | Yes | | 패널 콘텐츠 |
|
|
1601
|
+
| `className` | `string` | | | 커스텀 CSS 클래스 |
|
|
1476
1602
|
|
|
1477
1603
|
**ResizableHandle:**
|
|
1478
1604
|
|
|
1479
|
-
| Prop | Type | Required | Default | Description
|
|
1480
|
-
| ------------ | --------- | -------- | ------- |
|
|
1481
|
-
| `withHandle` | `boolean` | | false | 시각적 드래그 핸들 표시
|
|
1482
|
-
| `
|
|
1605
|
+
| Prop | Type | Required | Default | Description |
|
|
1606
|
+
| ------------ | --------- | -------- | ------- | ---------------------------------- |
|
|
1607
|
+
| `withHandle` | `boolean` | | false | 시각적 드래그 핸들 표시 |
|
|
1608
|
+
| `disabled` | `boolean` | | | 드래그 및 키보드 리사이즈 비활성화 |
|
|
1609
|
+
| `className` | `string` | | | 커스텀 CSS 클래스 |
|
|
1483
1610
|
|
|
1484
1611
|
### VirtualList
|
|
1485
1612
|
|
|
@@ -1544,7 +1671,7 @@ import {
|
|
|
1544
1671
|
| Toggle | 눌림(pressed) 두 상태 버튼. 단독 사용하거나 ToggleGroup으로 묶어 단일/다중 선택을 만든다. | `Toggle`, `ToggleGroup` |
|
|
1545
1672
|
| Accordion | 수직으로 쌓인 펼침/접힘 패널. single(한 개)/multiple(여러 개) 모드와 collapsible 지원. | `AccordionRoot`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` |
|
|
1546
1673
|
| Meter | 범위 내 스칼라 측정값 게이지 (디스크 사용량·점수·용량 등). role=meter로 작업 진행률(Progress)과 구분된다. | `Meter` |
|
|
1547
|
-
| BlockLayout | Block 루트 레이아웃.
|
|
1674
|
+
| BlockLayout | Block 루트 레이아웃. 자식 간 section spacing과 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay를 자동 래핑합니다. | `BlockLayout` |
|
|
1548
1675
|
| createBlock | Block 팩토리 함수. BlockLayout 래핑을 구조적으로 강제하여 loading/className 처리를 자동화합니다. | `createBlock` |
|
|
1549
1676
|
| StarRating | 1~N점 별점을 선택하는 인터랙티브 레이팅 입력. 읽기 전용 표시도 지원. | `StarRating` |
|
|
1550
1677
|
| ErrorBoundary | React 에러 바운더리. 자식 컴포넌트 렌더 에러를 잡아 fallback UI를 표시합니다. | `ErrorBoundary` |
|
|
@@ -1698,17 +1825,18 @@ import {
|
|
|
1698
1825
|
|
|
1699
1826
|
### BlockLayout
|
|
1700
1827
|
|
|
1701
|
-
> Block 루트 레이아웃.
|
|
1828
|
+
> Block 루트 레이아웃. 자식 간 section spacing과 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay를 자동 래핑합니다.
|
|
1702
1829
|
|
|
1703
1830
|
**Import:** `import { BlockLayout } from "@reopt-ai/opt-ui"`
|
|
1704
1831
|
|
|
1705
|
-
| Prop | Type | Required | Default | Description
|
|
1706
|
-
| -------------- | --------------------------------------------- | -------- | --------- |
|
|
1707
|
-
| `children` | `ReactNode` | Yes | | Block 콘텐츠
|
|
1708
|
-
| `loading` | `boolean` | | | 로딩 상태. 설정 시 LoadingOverlay로 자동 래핑
|
|
1709
|
-
| `loadingLabel` | `string` | | | LoadingOverlay 접근성 레이블
|
|
1710
|
-
| `spacing` | `"section" \| "group" \| "element" \| "none"` | | "section" | Block 최상위 자식 사이 간격. 데이터 밀도가 높은 Block는 group/element로 낮출 수 있음
|
|
1711
|
-
| `
|
|
1832
|
+
| Prop | Type | Required | Default | Description |
|
|
1833
|
+
| -------------- | --------------------------------------------- | -------- | --------- | ---------------------------------------------------------------------------------------------------- |
|
|
1834
|
+
| `children` | `ReactNode` | Yes | | Block 콘텐츠 |
|
|
1835
|
+
| `loading` | `boolean` | | | 로딩 상태. 설정 시 LoadingOverlay로 자동 래핑 |
|
|
1836
|
+
| `loadingLabel` | `string` | | | LoadingOverlay 접근성 레이블 |
|
|
1837
|
+
| `spacing` | `"section" \| "group" \| "element" \| "none"` | | "section" | Block 최상위 자식 사이 간격. 데이터 밀도가 높은 Block는 group/element로 낮출 수 있음 |
|
|
1838
|
+
| `inset` | `"section" \| "group" \| "element" \| "none"` | | | Block 안쪽 여백. 페이지 콘텐츠 경계에는 section을 사용하고, 이미 여백을 제공하는 Shell 안에서는 생략 |
|
|
1839
|
+
| `className` | `string` | | | 기본 스타일 오버라이드 |
|
|
1712
1840
|
|
|
1713
1841
|
**Examples:**
|
|
1714
1842
|
|
|
@@ -1717,7 +1845,7 @@ _Block 루트:_
|
|
|
1717
1845
|
```tsx
|
|
1718
1846
|
import { BlockLayout, PageHeader } from "@reopt-ai/opt-ui";
|
|
1719
1847
|
|
|
1720
|
-
<BlockLayout loading={isLoading} spacing="section">
|
|
1848
|
+
<BlockLayout loading={isLoading} spacing="section" inset="section">
|
|
1721
1849
|
<PageHeader title="대시보드" description="프로젝트 현황" />
|
|
1722
1850
|
<section>콘텐츠 영역</section>
|
|
1723
1851
|
</BlockLayout>;
|
|
@@ -1775,6 +1903,15 @@ const MyDashboard = createBlock<MyDashboardProps>(
|
|
|
1775
1903
|
| `readOnly` | `boolean` | | false | 읽기 전용 모드 |
|
|
1776
1904
|
| `size` | `"sm" \| "md" \| "lg"` | | "md" | 별 아이콘 크기 |
|
|
1777
1905
|
|
|
1906
|
+
**Keyboard Shortcuts:**
|
|
1907
|
+
|
|
1908
|
+
| Keys | Action |
|
|
1909
|
+
| ----------------------- | ---------------- |
|
|
1910
|
+
| `ArrowRight / ArrowUp` | 별점 1 증가 |
|
|
1911
|
+
| `ArrowLeft / ArrowDown` | 별점 1 감소 |
|
|
1912
|
+
| `Home` | 별점 1로 설정 |
|
|
1913
|
+
| `End` | 별점 최대로 설정 |
|
|
1914
|
+
|
|
1778
1915
|
### ErrorBoundary
|
|
1779
1916
|
|
|
1780
1917
|
> React 에러 바운더리. 자식 컴포넌트 렌더 에러를 잡아 fallback UI를 표시합니다.
|
|
@@ -1821,6 +1958,15 @@ const MyDashboard = createBlock<MyDashboardProps>(
|
|
|
1821
1958
|
| `keywords` | `string[]` | | | value에 더해 검색어와 비교할 추가 키워드 |
|
|
1822
1959
|
| `onSelect` | `(value: string) => void` | | | Enter/클릭 시 호출 |
|
|
1823
1960
|
|
|
1961
|
+
**Keyboard Shortcuts:**
|
|
1962
|
+
|
|
1963
|
+
| Keys | Action |
|
|
1964
|
+
| ------------ | ---------------- |
|
|
1965
|
+
| `↑ ↓` | 활성 항목 이동 |
|
|
1966
|
+
| `Home / End` | 처음/마지막 항목 |
|
|
1967
|
+
| `Enter` | 활성 항목 선택 |
|
|
1968
|
+
| `Esc` | dialog 닫기 |
|
|
1969
|
+
|
|
1824
1970
|
### ShaderSurface
|
|
1825
1971
|
|
|
1826
1972
|
> ogl 기반 애니메이션 WebGL 셰이더 배경. 럭셔리 프리셋(메탈릭/실크/유리 등) + 색·파라미터로 배경·카드 배경을 만든다. 정지 프레임·PNG 캡처·WebGL 폴백 지원.
|