@reopt-ai/opt-ui 1.5.0 → 1.7.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 (99) hide show
  1. package/COMPONENT_CATALOG.md +178 -50
  2. package/README.md +28 -7
  3. package/dist/app.css +170 -0
  4. package/dist/core/index.cjs +164 -324
  5. package/dist/core/index.d.cts +3 -6
  6. package/dist/core/index.d.ts +3 -6
  7. package/dist/core/index.js +3 -323
  8. package/dist/docs/01-getting-started.md +25 -5
  9. package/dist/docs/02-components/01-core.md +36 -28
  10. package/dist/docs/02-components/02-visuals.md +1 -1
  11. package/dist/docs/02-components/03-shells.md +144 -23
  12. package/dist/docs/02-components/04-surfaces.md +1 -1
  13. package/dist/docs/02-components/index.md +4 -4
  14. package/dist/docs/03-recipes/03-layouts.md +16 -12
  15. package/dist/docs/05-migration/01-breaking-changes.md +46 -1
  16. package/dist/field-sidebar-BTZCBviA.d.cts +1031 -0
  17. package/dist/field-sidebar-BTZCBviA.d.cts.map +1 -0
  18. package/dist/field-sidebar-CB8vjvUM.d.ts +1031 -0
  19. package/dist/field-sidebar-CB8vjvUM.d.ts.map +1 -0
  20. package/dist/field-sidebar-Cs-J-5VE.js +4233 -0
  21. package/dist/field-sidebar-Cs-J-5VE.js.map +1 -0
  22. package/dist/field-sidebar-CzIQX70-.cjs +4561 -0
  23. package/dist/id-registry.cjs +1939 -1872
  24. package/dist/id-registry.d.cts +14 -11
  25. package/dist/id-registry.d.cts.map +1 -0
  26. package/dist/id-registry.d.ts +14 -11
  27. package/dist/id-registry.d.ts.map +1 -0
  28. package/dist/id-registry.js +1937 -1871
  29. package/dist/id-registry.js.map +1 -0
  30. package/dist/id-registry.json +113 -28
  31. package/dist/index.cjs +8380 -9790
  32. package/dist/index.d.cts +1555 -1442
  33. package/dist/index.d.cts.map +1 -0
  34. package/dist/index.d.ts +1555 -1442
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +7996 -9778
  37. package/dist/index.js.map +1 -0
  38. package/dist/meta.cjs +7753 -6875
  39. package/dist/meta.d.cts.map +1 -0
  40. package/dist/meta.d.ts.map +1 -0
  41. package/dist/meta.js +7752 -6846
  42. package/dist/meta.js.map +1 -0
  43. package/dist/pagination-DWbvACuN.js +3850 -0
  44. package/dist/pagination-DWbvACuN.js.map +1 -0
  45. package/dist/pagination-DjfxBcjX.cjs +4739 -0
  46. package/dist/query.cjs +386 -0
  47. package/dist/query.d.cts +141 -0
  48. package/dist/query.d.cts.map +1 -0
  49. package/dist/query.d.ts +141 -0
  50. package/dist/query.d.ts.map +1 -0
  51. package/dist/query.js +371 -0
  52. package/dist/query.js.map +1 -0
  53. package/dist/shader-surface-BUPZ0P-n.js +3654 -0
  54. package/dist/shader-surface-BUPZ0P-n.js.map +1 -0
  55. package/dist/shader-surface-BfTP9c1Q.d.ts +1788 -0
  56. package/dist/shader-surface-BfTP9c1Q.d.ts.map +1 -0
  57. package/dist/shader-surface-DRrcLrWf.d.cts +1788 -0
  58. package/dist/shader-surface-DRrcLrWf.d.cts.map +1 -0
  59. package/dist/shader-surface-Fav5K9UC.cjs +4041 -0
  60. package/dist/shells/index.cjs +58 -65
  61. package/dist/shells/index.d.cts +4 -5
  62. package/dist/shells/index.d.ts +4 -5
  63. package/dist/shells/index.js +4 -64
  64. package/dist/tailwind.css +49 -0
  65. package/dist/theme/presets/default.css +2 -2
  66. package/dist/theme/presets/minimal.css +2 -2
  67. package/dist/theme/presets/mono-dark.css +2 -2
  68. package/dist/theme/presets/natural.css +1 -1
  69. package/dist/theme/presets/pro.css +2 -2
  70. package/dist/theme/server.cjs +257 -228
  71. package/dist/theme/server.d.cts +48 -60
  72. package/dist/theme/server.d.cts.map +1 -0
  73. package/dist/theme/server.d.ts +48 -60
  74. package/dist/theme/server.d.ts.map +1 -0
  75. package/dist/theme/server.js +234 -189
  76. package/dist/theme/server.js.map +1 -0
  77. package/dist/types-D0FlcYnM.d.cts +301 -0
  78. package/dist/types-D0FlcYnM.d.cts.map +1 -0
  79. package/dist/types-D0FlcYnM.d.ts +301 -0
  80. package/dist/types-D0FlcYnM.d.ts.map +1 -0
  81. package/dist/visuals/index.cjs +10 -4
  82. package/dist/visuals/index.d.cts +2 -1
  83. package/dist/visuals/index.d.ts +2 -1
  84. package/dist/visuals/index.js +1 -2
  85. package/package.json +27 -11
  86. package/dist/chunk-3GWWZKX7.js +0 -38
  87. package/dist/chunk-3QFYBBL6.cjs +0 -4759
  88. package/dist/chunk-3XD4HIFL.js +0 -3241
  89. package/dist/chunk-AFF2HPE5.cjs +0 -5008
  90. package/dist/chunk-NXZJIHEZ.cjs +0 -3241
  91. package/dist/chunk-ONE3C5RV.cjs +0 -38
  92. package/dist/chunk-RBM2RNC2.js +0 -5008
  93. package/dist/chunk-VBGPEW45.js +0 -4759
  94. package/dist/index-BZ_lBlO1.d.ts +0 -474
  95. package/dist/index-BuvxoWHf.d.cts +0 -474
  96. package/dist/index-DWyqDIkH.d.cts +0 -1689
  97. package/dist/index-Uyijm14M.d.ts +0 -1689
  98. package/dist/types-D4-0lwaE.d.cts +0 -298
  99. package/dist/types-D4-0lwaE.d.ts +0 -298
@@ -1,324 +1,4 @@
1
1
  "use client";
2
- import {
3
- AccordionContent,
4
- AccordionItem,
5
- AccordionRoot,
6
- AccordionTrigger,
7
- Avatar,
8
- AvatarGroup,
9
- BlockLayout,
10
- Breadcrumb,
11
- Card,
12
- CardContent,
13
- CardDescription,
14
- CardFooter,
15
- CardHeader,
16
- CardTitle,
17
- CircularProgress,
18
- ConditionBuilder,
19
- Container,
20
- DrawerClose,
21
- DrawerPanel,
22
- DrawerRoot,
23
- DropdownContent,
24
- DropdownItem,
25
- DropdownMenu,
26
- DropdownSeparator,
27
- DropdownTrigger,
28
- Heading,
29
- Input,
30
- Logo,
31
- Meter,
32
- OtpField,
33
- PageHeader,
34
- Progress,
35
- Radio,
36
- RadioGroup,
37
- ResizableHandle,
38
- ResizablePanel,
39
- ResizablePanelGroup,
40
- SHADER_OVERLAY_PARAM_KEYS,
41
- SHADER_PARAM_FALLBACK,
42
- SHADER_PARAM_KEYS,
43
- SHADER_PRESETS,
44
- SHADER_PRESET_IDS,
45
- ScrollArea,
46
- Section,
47
- Separator,
48
- ShaderSurface,
49
- Skeleton,
50
- SkeletonAvatar,
51
- SkeletonCard,
52
- SkeletonTable,
53
- SkeletonText,
54
- StepBuilder,
55
- Switch,
56
- Text,
57
- Textarea,
58
- Toggle,
59
- ToggleGroup,
60
- VirtualList,
61
- createBlock,
62
- getShaderFragment,
63
- getShaderPreset
64
- } from "../chunk-VBGPEW45.js";
65
- import {
66
- Alert,
67
- AlertDialogPanel,
68
- Badge,
69
- Button,
70
- Checkbox,
71
- CheckboxGroup,
72
- ColorPicker,
73
- ComboboxEmpty,
74
- ComboboxGroup,
75
- ComboboxGroupLabel,
76
- ComboboxInput,
77
- ComboboxItem,
78
- ComboboxPopover,
79
- ComboboxRoot,
80
- Composite,
81
- CompositeItem,
82
- CompositeProvider,
83
- CompositeRow,
84
- CompositeZone,
85
- DEFAULT_PRESETS,
86
- DateRangePicker,
87
- DialogBody,
88
- DialogDescription,
89
- DialogDisclosure,
90
- DialogDismiss,
91
- DialogFooter,
92
- DialogHeader,
93
- DialogHeading,
94
- DialogPanel,
95
- DialogRoot,
96
- DisclosureContent,
97
- DisclosureRoot,
98
- DisclosureTrigger,
99
- EmptyState,
100
- FormCheckbox,
101
- FormControl,
102
- FormDescription,
103
- FormError,
104
- FormField,
105
- FormGroup,
106
- FormGroupLabel,
107
- FormInput,
108
- FormLabel,
109
- FormProvider,
110
- FormPush,
111
- FormRadio,
112
- FormRadioGroup,
113
- FormRemove,
114
- FormReset,
115
- FormRoot,
116
- FormSelect,
117
- FormSelectItem,
118
- FormSelectPopover,
119
- FormSubmit,
120
- FormSwitch,
121
- FormTextarea,
122
- IconPicker,
123
- Kbd,
124
- MenuButtonArrow,
125
- MenuItem,
126
- MenuItemCheckbox,
127
- MenuItemRadio,
128
- MenuPopover,
129
- MenuRoot,
130
- MenuSeparator,
131
- MenuTrigger,
132
- MenubarContainer,
133
- MenubarRoot,
134
- NumberInput,
135
- Pagination,
136
- PopoverClose,
137
- PopoverContent,
138
- PopoverRoot,
139
- PopoverTrigger,
140
- SelectItem,
141
- SelectLabel,
142
- SelectPopover,
143
- SelectRoot,
144
- SelectTrigger,
145
- Slider,
146
- Spinner,
147
- StatCard,
148
- Tab,
149
- TabList,
150
- TabPanel,
151
- TabsRoot,
152
- TagInput,
153
- ToolbarButton,
154
- ToolbarContainer,
155
- ToolbarRoot,
156
- ToolbarSeparator,
157
- Tooltip,
158
- TooltipAnchor,
159
- TooltipProvider,
160
- useFormContext,
161
- useFormStore
162
- } from "../chunk-RBM2RNC2.js";
163
- import "../chunk-3GWWZKX7.js";
164
- export {
165
- AccordionContent,
166
- AccordionItem,
167
- AccordionRoot,
168
- AccordionTrigger,
169
- Alert,
170
- AlertDialogPanel,
171
- Avatar,
172
- AvatarGroup,
173
- Badge,
174
- BlockLayout,
175
- Breadcrumb,
176
- Button,
177
- Card,
178
- CardContent,
179
- CardDescription,
180
- CardFooter,
181
- CardHeader,
182
- CardTitle,
183
- Checkbox,
184
- CheckboxGroup,
185
- CircularProgress,
186
- ColorPicker,
187
- ComboboxEmpty,
188
- ComboboxGroup,
189
- ComboboxGroupLabel,
190
- ComboboxInput,
191
- ComboboxItem,
192
- ComboboxPopover,
193
- ComboboxRoot,
194
- Composite,
195
- CompositeItem,
196
- CompositeProvider,
197
- CompositeRow,
198
- CompositeZone,
199
- ConditionBuilder,
200
- Container,
201
- DEFAULT_PRESETS,
202
- DateRangePicker,
203
- DialogBody,
204
- DialogDescription,
205
- DialogDisclosure,
206
- DialogDismiss,
207
- DialogFooter,
208
- DialogHeader,
209
- DialogHeading,
210
- DialogPanel,
211
- DialogRoot,
212
- DisclosureContent,
213
- DisclosureRoot,
214
- DisclosureTrigger,
215
- DrawerClose,
216
- DrawerPanel,
217
- DrawerRoot,
218
- DropdownContent,
219
- DropdownItem,
220
- DropdownMenu,
221
- DropdownSeparator,
222
- DropdownTrigger,
223
- EmptyState,
224
- FormCheckbox,
225
- FormControl,
226
- FormDescription,
227
- FormError,
228
- FormField,
229
- FormGroup,
230
- FormGroupLabel,
231
- FormInput,
232
- FormLabel,
233
- FormProvider,
234
- FormPush,
235
- FormRadio,
236
- FormRadioGroup,
237
- FormRemove,
238
- FormReset,
239
- FormRoot,
240
- FormSelect,
241
- FormSelectItem,
242
- FormSelectPopover,
243
- FormSubmit,
244
- FormSwitch,
245
- FormTextarea,
246
- Heading,
247
- IconPicker,
248
- Input,
249
- Kbd,
250
- Logo,
251
- MenuButtonArrow,
252
- MenuItem,
253
- MenuItemCheckbox,
254
- MenuItemRadio,
255
- MenuPopover,
256
- MenuRoot,
257
- MenuSeparator,
258
- MenuTrigger,
259
- MenubarContainer,
260
- MenubarRoot,
261
- Meter,
262
- NumberInput,
263
- OtpField,
264
- PageHeader,
265
- Pagination,
266
- PopoverClose,
267
- PopoverContent,
268
- PopoverRoot,
269
- PopoverTrigger,
270
- Progress,
271
- Radio,
272
- RadioGroup,
273
- ResizableHandle,
274
- ResizablePanel,
275
- ResizablePanelGroup,
276
- SHADER_OVERLAY_PARAM_KEYS,
277
- SHADER_PARAM_FALLBACK,
278
- SHADER_PARAM_KEYS,
279
- SHADER_PRESETS,
280
- SHADER_PRESET_IDS,
281
- ScrollArea,
282
- Section,
283
- SelectItem,
284
- SelectLabel,
285
- SelectPopover,
286
- SelectRoot,
287
- SelectTrigger,
288
- Separator,
289
- ShaderSurface,
290
- Skeleton,
291
- SkeletonAvatar,
292
- SkeletonCard,
293
- SkeletonTable,
294
- SkeletonText,
295
- Slider,
296
- Spinner,
297
- StatCard,
298
- StepBuilder,
299
- BlockLayout as SurfaceLayout,
300
- Switch,
301
- Tab,
302
- TabList,
303
- TabPanel,
304
- TabsRoot,
305
- TagInput,
306
- Text,
307
- Textarea,
308
- Toggle,
309
- ToggleGroup,
310
- ToolbarButton,
311
- ToolbarContainer,
312
- ToolbarRoot,
313
- ToolbarSeparator,
314
- Tooltip,
315
- TooltipAnchor,
316
- TooltipProvider,
317
- VirtualList,
318
- createBlock,
319
- createBlock as createSurface,
320
- getShaderFragment,
321
- getShaderPreset,
322
- useFormContext,
323
- useFormStore
324
- };
2
+ import { $ as TooltipAnchor, A as FormSwitch, At as SelectPopover, Bt as Composite, C as FormRoot, Ct as DialogFooter, Dt as DialogRoot, E as FormSelectPopover, Et as DialogPanel, F as useFormStore, Ft as TabPanel, G as PopoverTrigger, H as PopoverClose, Hn as Kbd, Ht as CompositeProvider, I as DEFAULT_PRESETS, It as TabsRoot, J as ToolbarButton, Jt as Alert, K as Slider, Kt as Input, L as DateRangePicker, Lt as DisclosureContent, M as FormTextarea, Mt as SelectTrigger, Nt as Tab, Ot as SelectItem, P as useFormContext, Pt as TabList, Q as Tooltip, Qt as Button, R as TagInput, Rt as DisclosureRoot, S as FormReset, St as DialogDismiss, T as FormSelectItem, Tt as DialogHeading, U as PopoverContent, Ut as CompositeRow, V as ColorPicker, Vt as CompositeItem, W as PopoverRoot, Wt as CompositeZone, X as ToolbarRoot, Xt as Badge, Y as ToolbarContainer, Yt as Spinner, Z as ToolbarSeparator, Zt as EmptyState, _ as FormProvider, _t as ComboboxRoot, at as MenuPopover, b as FormRadioGroup, bt as DialogDescription, c as FormDescription, ct as MenuTrigger, d as FormGroup, dt as ComboboxEmpty, et as TooltipProvider, f as FormGroupLabel, ft as ComboboxGroup, gt as ComboboxPopover, h as FormLabel, ht as ComboboxItem, i as FormCheckbox, it as MenuItemRadio, jt as SelectRoot, k as FormSubmit, kt as SelectLabel, l as FormError, lt as MenubarContainer, m as FormInput, mt as ComboboxInput, n as Checkbox, nn as StatCard, nt as MenuItem, o as FormControl, ot as MenuRoot, pt as ComboboxGroupLabel, q as NumberInput, r as CheckboxGroup, rt as MenuItemCheckbox, st as MenuSeparator, t as Pagination, tt as MenuButtonArrow, u as FormField, ut as MenubarRoot, v as FormPush, vt as AlertDialogPanel, w as FormSelect, wt as DialogHeader, x as FormRemove, xt as DialogDisclosure, y as FormRadio, yt as DialogBody, z as IconPicker, zt as DisclosureTrigger } from "../pagination-DWbvACuN.js";
3
+ import { $ as CardHeader, A as DropdownTrigger, B as Avatar, D as DropdownItem, E as DropdownContent, G as SkeletonCard, H as Textarea, I as StepBuilder, J as Switch, K as SkeletonTable, L as Meter, O as DropdownMenu, Q as CardFooter, R as CircularProgress, S as BlockLayout, T as RadioGroup, U as Skeleton, V as AvatarGroup, W as SkeletonAvatar, X as CardContent, Y as Card, Z as CardDescription, _ as Section, a as SHADER_PRESETS, at as AccordionTrigger, b as PageHeader, c as getShaderPreset, ct as OtpField, d as DrawerPanel, dt as Text, et as CardTitle, f as DrawerRoot, g as ResizablePanelGroup, h as ResizablePanel, i as SHADER_PARAM_KEYS, it as AccordionRoot, j as ConditionBuilder, k as DropdownSeparator, l as VirtualList, lt as Separator, m as ResizableHandle, n as SHADER_OVERLAY_PARAM_KEYS, nt as AccordionContent, o as SHADER_PRESET_IDS, ot as Toggle, p as Logo, q as SkeletonText, r as SHADER_PARAM_FALLBACK, rt as AccordionItem, s as getShaderFragment, st as ToggleGroup, t as ShaderSurface, tt as Breadcrumb, u as DrawerClose, ut as Heading, v as Container, w as Radio, x as createBlock, y as ScrollArea, z as Progress } from "../shader-surface-BUPZ0P-n.js";
4
+ export { AccordionContent, AccordionItem, AccordionRoot, AccordionTrigger, Alert, AlertDialogPanel, Avatar, AvatarGroup, Badge, BlockLayout, BlockLayout as SurfaceLayout, Breadcrumb, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxGroup, CircularProgress, ColorPicker, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxPopover, ComboboxRoot, Composite, CompositeItem, CompositeProvider, CompositeRow, CompositeZone, ConditionBuilder, Container, DEFAULT_PRESETS, DateRangePicker, DialogBody, DialogDescription, DialogDisclosure, DialogDismiss, DialogFooter, DialogHeader, DialogHeading, DialogPanel, DialogRoot, DisclosureContent, DisclosureRoot, DisclosureTrigger, DrawerClose, DrawerPanel, DrawerRoot, DropdownContent, DropdownItem, DropdownMenu, DropdownSeparator, DropdownTrigger, EmptyState, FormCheckbox, FormControl, FormDescription, FormError, FormField, FormGroup, FormGroupLabel, FormInput, FormLabel, FormProvider, FormPush, FormRadio, FormRadioGroup, FormRemove, FormReset, FormRoot, FormSelect, FormSelectItem, FormSelectPopover, FormSubmit, FormSwitch, FormTextarea, Heading, IconPicker, Input, Kbd, Logo, MenuButtonArrow, MenuItem, MenuItemCheckbox, MenuItemRadio, MenuPopover, MenuRoot, MenuSeparator, MenuTrigger, MenubarContainer, MenubarRoot, Meter, NumberInput, OtpField, PageHeader, Pagination, PopoverClose, PopoverContent, PopoverRoot, PopoverTrigger, Progress, Radio, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, SHADER_OVERLAY_PARAM_KEYS, SHADER_PARAM_FALLBACK, SHADER_PARAM_KEYS, SHADER_PRESETS, SHADER_PRESET_IDS, ScrollArea, Section, SelectItem, SelectLabel, SelectPopover, SelectRoot, SelectTrigger, Separator, ShaderSurface, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonTable, SkeletonText, Slider, Spinner, StatCard, StepBuilder, Switch, Tab, TabList, TabPanel, TabsRoot, TagInput, Text, Textarea, Toggle, ToggleGroup, ToolbarButton, ToolbarContainer, ToolbarRoot, ToolbarSeparator, Tooltip, TooltipAnchor, TooltipProvider, VirtualList, createBlock, createBlock as createSurface, getShaderFragment, getShaderPreset, useFormContext, useFormStore };
@@ -17,14 +17,34 @@ related:
17
17
  - React 19+
18
18
  - Tailwind CSS v4
19
19
 
20
- ## 1. Install
20
+ ## 1. Agent skill setup (recommended)
21
+
22
+ Run from the consumer project root:
23
+
24
+ ```bash
25
+ npx skills add reopt-ai/reopt-skills/opt-ui-install
26
+ ```
27
+
28
+ Then ask your agent:
29
+
30
+ ```text
31
+ Use the opt-ui-install skill to set up @reopt-ai/opt-ui in this project and verify the result.
32
+ ```
33
+
34
+ The skill auto-detects install versus upgrade, idempotently updates the reopt
35
+ marker block in `AGENTS.md` (or `CLAUDE.md`), follows the docs shipped in this
36
+ `dist/docs/` directory, wires Tailwind v4 and `OptThemeProvider`, and runs
37
+ `opt doctor`. Source:
38
+ [`reopt-ai/reopt-skills`](https://github.com/reopt-ai/reopt-skills/tree/main/skills/opt-ui-install).
39
+
40
+ ## 2. Manual install
21
41
 
22
42
  ```bash
23
43
  bun add @reopt-ai/opt-ui @reopt-ai/opt-ui-primitives
24
44
  bun add -d tailwindcss @tailwindcss/postcss postcss
25
45
  ```
26
46
 
27
- ## 2. Global CSS
47
+ ## 3. Global CSS
28
48
 
29
49
  ### `app/globals.css` (Next.js App Router)
30
50
 
@@ -47,7 +67,7 @@ bun add -d tailwindcss @tailwindcss/postcss postcss
47
67
  > `@source` 경로는 CSS 파일 위치 기준 상대 경로입니다.
48
68
  > `@reopt-ai/opt-ui/tailwind.css`에 테마 프리셋, dark variant, 토큰 매핑, 기본값이 포함되어 있습니다.
49
69
 
50
- ## 3. PostCSS
70
+ ## 4. PostCSS
51
71
 
52
72
  `postcss.config.mjs`:
53
73
 
@@ -59,7 +79,7 @@ export default {
59
79
  };
60
80
  ```
61
81
 
62
- ## 4. Root Layout (Next.js App Router)
82
+ ## 5. Root Layout (Next.js App Router)
63
83
 
64
84
  ```tsx
65
85
  import { OptThemeProvider } from "@reopt-ai/opt-ui";
@@ -80,7 +100,7 @@ export default function RootLayout({
80
100
  }
81
101
  ```
82
102
 
83
- ## 5. Optional: next.config.ts
103
+ ## 6. Optional: next.config.ts
84
104
 
85
105
  Next.js에서 ESM 또는 패키지 트랜스파일 이슈가 발생하면 추가합니다:
86
106
 
@@ -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.1"
4
+ version: "1.6.0"
5
5
  generated: true
6
6
  ---
7
7
 
@@ -745,9 +745,11 @@ const store = useFormStore({
745
745
 
746
746
  **Import:** `import { Kbd } from "@reopt-ai/opt-ui"`
747
747
 
748
- | Prop | Type | Required | Default | Description |
749
- | ---------- | ----------- | -------- | ------- | -------------------- |
750
- | `children` | `ReactNode` | Yes | | 표시할 단축키 텍스트 |
748
+ | Prop | Type | Required | Default | Description |
749
+ | ----------- | ----------- | -------- | ------- | ------------------------------------------------------------------------------- |
750
+ | `children` | `ReactNode` | Yes | | 표시할 단축키 텍스트 |
751
+ | `hint` | `boolean` | | | 인라인 힌트 배지로 표시. `data-shortcut-hints="hidden"`일 때 숨겨진다 (app.css) |
752
+ | `className` | `string` | | | 기본 스타일 오버라이드 |
751
753
 
752
754
  ### Button
753
755
 
@@ -1198,26 +1200,31 @@ import {
1198
1200
 
1199
1201
  **TabsRoot:**
1200
1202
 
1201
- | Prop | Type | Required | Default | Description |
1202
- | ------------------- | ------------------------------ | -------- | ------- | ------------------------- |
1203
- | `defaultSelectedId` | `string` | | | 초기 선택된ID |
1204
- | `selectedId` | `string \| null` | | | 제어 모드: 선택된 탭 ID |
1205
- | `setSelectedId` | `(id: string \| null) => void` | | | 제어 모드: 탭 변경 핸들러 |
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` | | | 제어 모드: 탭 변경 핸들러 |
1206
1209
 
1207
1210
  **TabList:**
1208
1211
 
1209
- | Prop | Type | Required | Default | Description |
1210
- | ----------- | ----------- | -------- | ------- | ---------------------- |
1211
- | `children` | `ReactNode` | Yes | | Tab 요소들 |
1212
- | `className` | `string` | | | 기본 스타일 오버라이드 |
1212
+ | Prop | Type | Required | Default | Description |
1213
+ | ----------- | ----------- | -------- | ------- | -------------------------------------------------------------------------------------- |
1214
+ | `children` | `ReactNode` | Yes | | Tab 요소들 |
1215
+ | `actions` | `ReactNode` | | | 오른쪽 액션 영역 (새 탭, 닫기 등). tablist 바깥에 렌더돼 탭 순회에 끼어들지 않음 |
1216
+ | `className` | `string` | | | 기본 스타일 오버라이드 |
1213
1217
 
1214
1218
  **Tab:**
1215
1219
 
1216
- | Prop | Type | Required | Default | Description |
1217
- | ----------- | ----------- | -------- | ------- | ------------------------------------ |
1218
- | `id` | `string` | Yes | | 탭 고유 ID (TabPanel의 tabId와 매칭) |
1219
- | `children` | `ReactNode` | Yes | | 탭 레이블 |
1220
- | `className` | `string` | | | 기본 스타일 오버라이드 |
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` | | | 기본 스타일 오버라이드 |
1221
1228
 
1222
1229
  **TabPanel:**
1223
1230
 
@@ -1664,7 +1671,7 @@ import {
1664
1671
  | Toggle | 눌림(pressed) 두 상태 버튼. 단독 사용하거나 ToggleGroup으로 묶어 단일/다중 선택을 만든다. | `Toggle`, `ToggleGroup` |
1665
1672
  | Accordion | 수직으로 쌓인 펼침/접힘 패널. single(한 개)/multiple(여러 개) 모드와 collapsible 지원. | `AccordionRoot`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` |
1666
1673
  | Meter | 범위 내 스칼라 측정값 게이지 (디스크 사용량·점수·용량 등). role=meter로 작업 진행률(Progress)과 구분된다. | `Meter` |
1667
- | BlockLayout | Block 루트 레이아웃. flex + 기본 section spacing 적용, loading prop으로 LoadingOverlay 자동 래핑. | `BlockLayout` |
1674
+ | BlockLayout | Block 루트 레이아웃. 자식 section spacing 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay 자동 래핑합니다. | `BlockLayout` |
1668
1675
  | createBlock | Block 팩토리 함수. BlockLayout 래핑을 구조적으로 강제하여 loading/className 처리를 자동화합니다. | `createBlock` |
1669
1676
  | StarRating | 1~N점 별점을 선택하는 인터랙티브 레이팅 입력. 읽기 전용 표시도 지원. | `StarRating` |
1670
1677
  | ErrorBoundary | React 에러 바운더리. 자식 컴포넌트 렌더 에러를 잡아 fallback UI를 표시합니다. | `ErrorBoundary` |
@@ -1818,17 +1825,18 @@ import {
1818
1825
 
1819
1826
  ### BlockLayout
1820
1827
 
1821
- > Block 루트 레이아웃. flex + 기본 section spacing 적용, loading prop으로 LoadingOverlay 자동 래핑.
1828
+ > Block 루트 레이아웃. 자식 section spacing 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay 자동 래핑합니다.
1822
1829
 
1823
1830
  **Import:** `import { BlockLayout } from "@reopt-ai/opt-ui"`
1824
1831
 
1825
- | Prop | Type | Required | Default | Description |
1826
- | -------------- | --------------------------------------------- | -------- | --------- | ------------------------------------------------------------------------------------ |
1827
- | `children` | `ReactNode` | Yes | | Block 콘텐츠 |
1828
- | `loading` | `boolean` | | | 로딩 상태. 설정 시 LoadingOverlay로 자동 래핑 |
1829
- | `loadingLabel` | `string` | | | LoadingOverlay 접근성 레이블 |
1830
- | `spacing` | `"section" \| "group" \| "element" \| "none"` | | "section" | Block 최상위 자식 사이 간격. 데이터 밀도가 높은 Block는 group/element로 낮출 수 있음 |
1831
- | `className` | `string` | | | 기본 스타일 오버라이드 |
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` | | | 기본 스타일 오버라이드 |
1832
1840
 
1833
1841
  **Examples:**
1834
1842
 
@@ -1837,7 +1845,7 @@ _Block 루트:_
1837
1845
  ```tsx
1838
1846
  import { BlockLayout, PageHeader } from "@reopt-ai/opt-ui";
1839
1847
 
1840
- <BlockLayout loading={isLoading} spacing="section">
1848
+ <BlockLayout loading={isLoading} spacing="section" inset="section">
1841
1849
  <PageHeader title="대시보드" description="프로젝트 현황" />
1842
1850
  <section>콘텐츠 영역</section>
1843
1851
  </BlockLayout>;
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: "Visual Components"
3
3
  description: "0 Visual layer components — props, examples, keyboard shortcuts."
4
- version: "1.4.1"
4
+ version: "1.6.0"
5
5
  generated: true
6
6
  ---
7
7