@reopt-ai/opt-ui 1.5.0 → 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 +83 -38
- 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 -6
- package/dist/core/index.d.ts +3 -6
- package/dist/core/index.js +3 -323
- package/dist/docs/01-getting-started.md +25 -5
- package/dist/docs/02-components/01-core.md +36 -28
- package/dist/docs/02-components/02-visuals.md +1 -1
- package/dist/docs/02-components/03-shells.md +40 -12
- 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 +16 -12
- 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 +28 -28
- package/dist/index.cjs +8294 -9790
- package/dist/index.d.cts +1486 -1442
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1486 -1442
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7933 -9777
- package/dist/index.js.map +1 -0
- package/dist/meta.cjs +7461 -6875
- package/dist/meta.d.cts.map +1 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +7460 -6846
- 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 +49 -0
- package/dist/theme/server.cjs +257 -228
- package/dist/theme/server.d.cts +48 -60
- package/dist/theme/server.d.cts.map +1 -0
- package/dist/theme/server.d.ts +48 -60
- package/dist/theme/server.d.ts.map +1 -0
- package/dist/theme/server.js +234 -189
- 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 +11 -6
- package/dist/chunk-3GWWZKX7.js +0 -38
- package/dist/chunk-3QFYBBL6.cjs +0 -4759
- package/dist/chunk-3XD4HIFL.js +0 -3241
- package/dist/chunk-AFF2HPE5.cjs +0 -5008
- package/dist/chunk-NXZJIHEZ.cjs +0 -3241
- package/dist/chunk-ONE3C5RV.cjs +0 -38
- package/dist/chunk-RBM2RNC2.js +0 -5008
- package/dist/chunk-VBGPEW45.js +0 -4759
- package/dist/index-BZ_lBlO1.d.ts +0 -474
- package/dist/index-BuvxoWHf.d.cts +0 -474
- package/dist/index-DWyqDIkH.d.cts +0 -1689
- package/dist/index-Uyijm14M.d.ts +0 -1689
- package/dist/types-D4-0lwaE.d.cts +0 -298
- package/dist/types-D4-0lwaE.d.ts +0 -298
|
@@ -7,7 +7,7 @@ related:
|
|
|
7
7
|
- ../02-components/03-shells.md
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
<!-- AI agent hint:
|
|
10
|
+
<!-- AI agent hint: Block/페이지 루트에 직접 space-y-* 사용 금지. 반드시 BlockLayout 또는 createBlock 사용. 페이지 경계를 직접 맡으면 inset="section"을 지정. -->
|
|
11
11
|
|
|
12
12
|
# Layout Recipes
|
|
13
13
|
|
|
@@ -111,14 +111,14 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
|
|
|
111
111
|
|
|
112
112
|
## 2. Data Explorer Page
|
|
113
113
|
|
|
114
|
-
FilterBar + DataTable + Pagination in a
|
|
114
|
+
FilterBar + DataTable + Pagination in a BlockLayout.
|
|
115
115
|
|
|
116
116
|
```tsx
|
|
117
117
|
"use client";
|
|
118
118
|
|
|
119
119
|
import { useState, useMemo } from "react";
|
|
120
120
|
import {
|
|
121
|
-
|
|
121
|
+
BlockLayout,
|
|
122
122
|
PageHeader,
|
|
123
123
|
FilterBar,
|
|
124
124
|
DataTable,
|
|
@@ -221,7 +221,7 @@ export function UserExplorerPage() {
|
|
|
221
221
|
};
|
|
222
222
|
|
|
223
223
|
return (
|
|
224
|
-
<
|
|
224
|
+
<BlockLayout inset="section">
|
|
225
225
|
<PageHeader
|
|
226
226
|
title="사용자 관리"
|
|
227
227
|
description={`총 ${filtered.length}명`}
|
|
@@ -253,20 +253,20 @@ export function UserExplorerPage() {
|
|
|
253
253
|
currentPage={page}
|
|
254
254
|
onPageChange={setPage}
|
|
255
255
|
/>
|
|
256
|
-
</
|
|
256
|
+
</BlockLayout>
|
|
257
257
|
);
|
|
258
258
|
}
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
## 3. Settings Page with Vertical Tabs
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
BlockLayout with VerticalTabs for section navigation and SettingsForm for each tab.
|
|
264
264
|
|
|
265
265
|
```tsx
|
|
266
266
|
"use client";
|
|
267
267
|
|
|
268
268
|
import {
|
|
269
|
-
|
|
269
|
+
BlockLayout,
|
|
270
270
|
PageHeader,
|
|
271
271
|
VerticalTabs,
|
|
272
272
|
SettingsForm,
|
|
@@ -391,7 +391,7 @@ const tabs: TabDef[] = [
|
|
|
391
391
|
|
|
392
392
|
export function SettingsPage() {
|
|
393
393
|
return (
|
|
394
|
-
<
|
|
394
|
+
<BlockLayout inset="section">
|
|
395
395
|
<PageHeader title="설정" description="프로젝트 설정을 관리합니다" />
|
|
396
396
|
|
|
397
397
|
<VerticalTabs
|
|
@@ -399,7 +399,7 @@ export function SettingsPage() {
|
|
|
399
399
|
defaultTabId="general"
|
|
400
400
|
labels={{ ariaLabel: "설정 카테고리" }}
|
|
401
401
|
/>
|
|
402
|
-
</
|
|
402
|
+
</BlockLayout>
|
|
403
403
|
);
|
|
404
404
|
}
|
|
405
405
|
```
|
|
@@ -408,14 +408,14 @@ export function SettingsPage() {
|
|
|
408
408
|
|
|
409
409
|
| Element | Approach |
|
|
410
410
|
| -------------- | ------------------------------------------------------------------------- |
|
|
411
|
-
| Page root | `
|
|
411
|
+
| Page root | `BlockLayout inset="section"` (page inset + `gap-section`) |
|
|
412
412
|
| App chrome | `AppShell` + `AppShell.Header/Sidebar/Content/Footer` |
|
|
413
413
|
| Sidebar nav | `Sidebar` with `Sidebar.Header/Content/Footer` sub-components |
|
|
414
|
-
| Page title | `PageHeader` with optional
|
|
414
|
+
| Page title | `PageHeader` with optional slots; outer inset belongs to the page root |
|
|
415
415
|
| Section grids | `gap-group` between columns, `gap-element` for tight spacing |
|
|
416
416
|
| Tab navigation | `VerticalTabs` for left-side tabs, `ContentTabs` for horizontal |
|
|
417
417
|
| Pagination | `Pagination` below `DataTable` with `totalItems`/`pageSize`/`currentPage` |
|
|
418
|
-
| Loading state | `
|
|
418
|
+
| Loading state | `BlockLayout loading={true}` wraps content with `LoadingOverlay` |
|
|
419
419
|
|
|
420
420
|
### Semantic Spacing Quick Reference
|
|
421
421
|
|
|
@@ -423,6 +423,10 @@ export function SettingsPage() {
|
|
|
423
423
|
gap-section -> 24px (between major sections)
|
|
424
424
|
gap-group -> 16px (between related items)
|
|
425
425
|
gap-element -> 8px (between tightly coupled elements)
|
|
426
|
+
p-section -> 24px (inside a page-owned content boundary)
|
|
426
427
|
```
|
|
427
428
|
|
|
428
429
|
CSS variables: `--opt-space-section`, `--opt-space-group`, `--opt-space-element`.
|
|
430
|
+
|
|
431
|
+
`BlockLayout`의 inset 기본값은 없음입니다. 재사용 Block이 카드나 Shell 안에 들어갈 때 이중
|
|
432
|
+
여백이 생기지 않게 하고, 페이지 콘텐츠 경계를 맡는 호출부만 `inset="section"`을 명시합니다.
|
|
@@ -25,6 +25,34 @@ description: "opt-ui 버전별 Breaking/Deprecated 변경사항 레지스트리"
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
+
## Version 1.5.0
|
|
29
|
+
|
|
30
|
+
### Breaking
|
|
31
|
+
|
|
32
|
+
- version: "1.5.0"
|
|
33
|
+
level: B
|
|
34
|
+
component: "Surface runtime exports"
|
|
35
|
+
change: "런타임 Surface export 제거 — opt-cli 블록 registry로 이관"
|
|
36
|
+
detail: "ChatAssistant, DataExplorer, DeploymentCenter 등 런타임 Surface와 createSurface가 @reopt-ai/opt-ui에서 더 이상 export되지 않습니다. 페이지 템플릿은 opt-cli 블록 registry(copy-paste)로 소비합니다."
|
|
37
|
+
scan: "ChatAssistant\\|DataExplorer\\|DeploymentCenter\\|createSurface"
|
|
38
|
+
fix:
|
|
39
|
+
type: manual
|
|
40
|
+
from: 'import { ChatAssistant } from "@reopt-ai/opt-ui"'
|
|
41
|
+
to: "npx @reopt-ai/opt-cli surface add <slug>"
|
|
42
|
+
|
|
43
|
+
### Deprecated
|
|
44
|
+
|
|
45
|
+
- version: "1.5.0"
|
|
46
|
+
level: D
|
|
47
|
+
component: "SurfaceLayout"
|
|
48
|
+
change: "SurfaceLayout deprecated → BlockLayout / createBlock"
|
|
49
|
+
detail: "SurfaceLayout이 deprecated 되었습니다. 페이지 간격·레이아웃은 BlockLayout 또는 createBlock을 사용하세요."
|
|
50
|
+
scan: "SurfaceLayout"
|
|
51
|
+
fix:
|
|
52
|
+
type: rename
|
|
53
|
+
from: "<SurfaceLayout>"
|
|
54
|
+
to: "<BlockLayout>"
|
|
55
|
+
|
|
28
56
|
## Version 1.2.0
|
|
29
57
|
|
|
30
58
|
### Breaking
|