@reopt-ai/opt-ui 1.10.0 → 1.11.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 +177 -66
- package/README.md +21 -5
- package/dist/core/index.cjs +10 -8
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +3 -3
- package/dist/docs/02-components/01-core.md +92 -41
- package/dist/docs/02-components/02-visuals.md +1 -1
- package/dist/docs/02-components/03-shells.md +96 -26
- package/dist/docs/02-components/04-surfaces.md +1 -1
- package/dist/docs/02-components/index.md +5 -5
- package/dist/{field-sidebar-DWfJAJlx.d.ts → field-sidebar-B5SQC35J.d.cts} +214 -3
- package/dist/field-sidebar-B5SQC35J.d.cts.map +1 -0
- package/dist/{field-sidebar-BXjvV7Cz.js → field-sidebar-BXl5RJ3q.js} +589 -40
- package/dist/field-sidebar-BXl5RJ3q.js.map +1 -0
- package/dist/{field-sidebar-nwcE9LC4.d.cts → field-sidebar-CBeWE8xX.d.ts} +214 -3
- package/dist/field-sidebar-CBeWE8xX.d.ts.map +1 -0
- package/dist/{field-sidebar-B6Ndr8HE.cjs → field-sidebar-DAuN4jPV.cjs} +605 -38
- package/dist/id-registry.cjs +46 -6
- package/dist/id-registry.d.cts.map +1 -1
- package/dist/id-registry.d.ts.map +1 -1
- package/dist/id-registry.js +46 -6
- package/dist/id-registry.js.map +1 -1
- package/dist/id-registry.json +97 -12
- package/dist/index.cjs +39 -33
- package/dist/index.d.cts +10 -6
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -19
- package/dist/index.js.map +1 -1
- package/dist/{key-pad-menu-DfZbeXhG.d.cts → key-pad-menu-BxTy_u0Q.d.cts} +152 -7
- package/dist/key-pad-menu-BxTy_u0Q.d.cts.map +1 -0
- package/dist/{key-pad-menu-D5mQcS5v.cjs → key-pad-menu-Cg6rZBie.cjs} +490 -609
- package/dist/{key-pad-menu-BsgJMjD4.d.ts → key-pad-menu-u5GTJl9B.d.ts} +152 -7
- package/dist/key-pad-menu-u5GTJl9B.d.ts.map +1 -0
- package/dist/{key-pad-menu-BQunU20e.js → key-pad-menu-wXkWn1I1.js} +387 -458
- package/dist/key-pad-menu-wXkWn1I1.js.map +1 -0
- package/dist/meta.cjs +486 -9
- package/dist/meta.d.cts.map +1 -1
- package/dist/meta.d.ts.map +1 -1
- package/dist/meta.js +486 -9
- package/dist/meta.js.map +1 -1
- package/dist/shells/index.cjs +4 -1
- package/dist/shells/index.d.cts +2 -2
- package/dist/shells/index.d.ts +2 -2
- package/dist/shells/index.js +2 -2
- package/dist/{text-truncate-CxdzAnhS.cjs → text-truncate-BZdL1k5Z.cjs} +474 -83
- package/dist/{text-truncate-j6X3z7Pv.js → text-truncate-C17HHCR-.js} +405 -86
- package/dist/text-truncate-C17HHCR-.js.map +1 -0
- package/dist/{text-truncate-BGr7bB_8.d.ts → text-truncate-DW78lg4S.d.cts} +18 -3
- package/dist/text-truncate-DW78lg4S.d.cts.map +1 -0
- package/dist/{text-truncate-BGr7bB_8.d.cts → text-truncate-DW78lg4S.d.ts} +18 -3
- package/dist/text-truncate-DW78lg4S.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/field-sidebar-BXjvV7Cz.js.map +0 -1
- package/dist/field-sidebar-DWfJAJlx.d.ts.map +0 -1
- package/dist/field-sidebar-nwcE9LC4.d.cts.map +0 -1
- package/dist/key-pad-menu-BQunU20e.js.map +0 -1
- package/dist/key-pad-menu-BsgJMjD4.d.ts.map +0 -1
- package/dist/key-pad-menu-DfZbeXhG.d.cts.map +0 -1
- package/dist/text-truncate-BGr7bB_8.d.cts.map +0 -1
- package/dist/text-truncate-BGr7bB_8.d.ts.map +0 -1
- package/dist/text-truncate-j6X3z7Pv.js.map +0 -1
package/dist/core/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { $ as
|
|
3
|
-
import { $ as
|
|
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, ColorPaletteDisplay, ColorPalettePicker, 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, Expression, ExpressionGroup, FIELD_TYPE_TOKENS, Facet, FacetGroup, FieldToken, FormCheckbox, FormControl, FormDescription, FormError, FormField, FormGroup, FormGroupLabel, FormInput, FormLabel, FormProvider, FormPush, FormRadio, FormRadioGroup, FormRemove, FormReset, FormRoot, FormSelect, FormSelectItem, FormSelectPopover, FormSubmit, FormSwitch, FormTextarea, Heading, Highlight, IconPicker, InlineEdit, Input, Kbd, KeyPadMenu, LiveRegion, 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, THEME_PALETTES, Tab, TabList, TabPanel, TabsRoot, TagInput, Text, TextTruncate, Textarea, Toggle, ToggleGroup, ToolbarButton, ToolbarContainer, ToolbarRoot, ToolbarSeparator, Tooltip, TooltipAnchor, TooltipProvider, VirtualList, createBlock, createBlock as createSurface, getShaderFragment, getShaderPreset, resolveFieldType, useFormContext, useFormStore };
|
|
2
|
+
import { $ as PopoverContent, $t as CompositeRow, A as FormRadioGroup, At as DialogDescription, B as FormSwitch, Bt as SelectPopover, Ct as ComboboxGroupLabel, D as FormProvider, Dt as ComboboxRoot, Et as ComboboxPopover, F as FormSelectItem, Ft as DialogHeading, G as useFormStore, Gt as TabPanel, H as FormTextarea, Ht as SelectTrigger, I as FormSelectPopover, It as DialogPanel, J as TagInput, Jt as DisclosureRoot, K as DEFAULT_PRESETS, Kt as TabsRoot, Lt as DialogRoot, M as FormReset, Mt as DialogDismiss, N as FormRoot, Nt as DialogFooter, O as FormPush, Ot as AlertDialogPanel, P as FormSelect, Pt as DialogHeader, Q as PopoverClose, Qt as CompositeProvider, Rt as SelectItem, S as FormGroupLabel, St as ComboboxGroup, T as FormLabel, Tt as ComboboxItem, Ut as Tab, Vt as SelectRoot, W as useFormContext, Wt as TabList, Xt as Composite, Y as IconPicker, Yt as DisclosureTrigger, Z as ColorPicker, Zt as CompositeItem, _n as SkeletonTable, _t as MenuSeparator, a as resolveFieldType, an as Alert, ar as Kbd, at as ToolbarContainer, b as FormField, bt as MenubarRoot, c as CheckboxGroup, cn as EmptyState, ct as Tooltip, dt as MenuButtonArrow, en as CompositeZone, et as PopoverRoot, ft as MenuItem, g as FormControl, gn as SkeletonCard, gt as MenuRoot, hn as SkeletonAvatar, ht as MenuPopover, i as FieldToken, it as ToolbarButton, j as FormRemove, jt as DialogDisclosure, k as FormRadio, kt as DialogBody, ln as Button, lt as TooltipAnchor, m as FormCheckbox, mn as Skeleton, mt as MenuItemRadio, n as Highlight, nt as Slider, o as Pagination, on as Spinner, ot as ToolbarRoot, pn as StatCard, pt as MenuItemCheckbox, q as DateRangePicker, qt as DisclosureContent, r as FIELD_TYPE_TOKENS, rn as Input, rt as NumberInput, s as Checkbox, sn as Badge, st as ToolbarSeparator, t as TextTruncate, tn as Meter, tt as PopoverTrigger, ut as TooltipProvider, v as FormDescription, vn as SkeletonText, vt as MenuTrigger, w as FormInput, wt as ComboboxInput, x as FormGroup, xt as ComboboxEmpty, y as FormError, yt as MenubarContainer, z as FormSubmit, zt as SelectLabel } from "../text-truncate-C17HHCR-.js";
|
|
3
|
+
import { $ as Identity, A as PageHeader, B as DropdownTrigger, C as Logo, D as Section, E as ResizablePanelGroup, F as RadioGroup, G as Textarea, H as StepBuilder, I as DropdownContent, J as CardContent, K as Switch, L as DropdownItem, M as BlockLayout, O as Container, P as Radio, Q as CardTitle, R as DropdownMenu, S as DrawerRoot, T as ResizablePanel, U as CircularProgress, V as ConditionBuilder, W as Progress, X as CardFooter, Y as CardDescription, Z as CardHeader, _ as getShaderFragment, a as THEME_PALETTES, at as AccordionItem, b as DrawerClose, c as ExpressionGroup, ct as Toggle, d as ShaderSurface, dt as Separator, et as Avatar, f as SHADER_OVERLAY_PARAM_KEYS, ft as Heading, g as SHADER_PRESET_IDS, h as SHADER_PRESETS, i as ColorPalettePicker, it as AccordionContent, j as createBlock, k as ScrollArea, l as Facet, lt as ToggleGroup, m as SHADER_PARAM_KEYS, n as InlineEdit, nt as DescriptionList, o as LiveRegion, ot as AccordionRoot, p as SHADER_PARAM_FALLBACK, pt as Text, q as Card, r as ColorPaletteDisplay, rt as Breadcrumb, s as Expression, st as AccordionTrigger, t as KeyPadMenu, tt as AvatarGroup, u as FacetGroup, ut as OtpField, v as getShaderPreset, w as ResizableHandle, x as DrawerPanel, y as VirtualList, z as DropdownSeparator } from "../key-pad-menu-wXkWn1I1.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, ColorPaletteDisplay, ColorPalettePicker, ColorPicker, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxPopover, ComboboxRoot, Composite, CompositeItem, CompositeProvider, CompositeRow, CompositeZone, ConditionBuilder, Container, DEFAULT_PRESETS, DateRangePicker, DescriptionList, DialogBody, DialogDescription, DialogDisclosure, DialogDismiss, DialogFooter, DialogHeader, DialogHeading, DialogPanel, DialogRoot, DisclosureContent, DisclosureRoot, DisclosureTrigger, DrawerClose, DrawerPanel, DrawerRoot, DropdownContent, DropdownItem, DropdownMenu, DropdownSeparator, DropdownTrigger, EmptyState, Expression, ExpressionGroup, FIELD_TYPE_TOKENS, Facet, FacetGroup, FieldToken, FormCheckbox, FormControl, FormDescription, FormError, FormField, FormGroup, FormGroupLabel, FormInput, FormLabel, FormProvider, FormPush, FormRadio, FormRadioGroup, FormRemove, FormReset, FormRoot, FormSelect, FormSelectItem, FormSelectPopover, FormSubmit, FormSwitch, FormTextarea, Heading, Highlight, IconPicker, Identity, InlineEdit, Input, Kbd, KeyPadMenu, LiveRegion, 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, THEME_PALETTES, Tab, TabList, TabPanel, TabsRoot, TagInput, Text, TextTruncate, Textarea, Toggle, ToggleGroup, ToolbarButton, ToolbarContainer, ToolbarRoot, ToolbarSeparator, Tooltip, TooltipAnchor, TooltipProvider, VirtualList, createBlock, createBlock as createSurface, getShaderFragment, getShaderPreset, resolveFieldType, useFormContext, useFormStore };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Core Components"
|
|
3
|
-
description: "
|
|
4
|
-
version: "1.
|
|
3
|
+
description: "70 Core layer components — props, examples, keyboard shortcuts."
|
|
4
|
+
version: "1.10.0"
|
|
5
5
|
generated: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Core Components (
|
|
8
|
+
# Core Components (70)
|
|
9
9
|
|
|
10
10
|
## Input
|
|
11
11
|
|
|
@@ -736,7 +736,7 @@ const store = useFormStore({
|
|
|
736
736
|
| Card | 범용 카드 컨테이너. Header, Title, Description, Content, Footer 하위 컴포넌트 포함. | `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter` |
|
|
737
737
|
| Breadcrumb | 현재 위치를 표시하고 계층 탐색을 제공하는 컴포넌트. | `Breadcrumb` |
|
|
738
738
|
| EmptyState | 데이터가 없을 때 표시하는 빈 상태 컴포넌트. 아이콘, 제목, 설명, 액션 버튼 지원. | `EmptyState` |
|
|
739
|
-
| StatCard |
|
|
739
|
+
| StatCard | 단일 지표를 값·변화량·보조 설명으로 표시하는 통계 카드. 비교 기준이 없으면 변화량 줄을 렌더하지 않는다. | `StatCard` |
|
|
740
740
|
| Logo | 아이콘+텍스트 조합, 이미지, 링크 래핑을 지원하는 로고 컴포넌트. Sidebar 등에서 활용. | `Logo` |
|
|
741
741
|
|
|
742
742
|
### Kbd
|
|
@@ -1006,25 +1006,42 @@ import {
|
|
|
1006
1006
|
|
|
1007
1007
|
**Import:** `import { EmptyState } from "@reopt-ai/opt-ui"`
|
|
1008
1008
|
|
|
1009
|
-
| Prop
|
|
1010
|
-
|
|
|
1011
|
-
| `title`
|
|
1012
|
-
| `description`
|
|
1013
|
-
| `icon`
|
|
1014
|
-
| `actions`
|
|
1009
|
+
| Prop | Type | Required | Default | Description |
|
|
1010
|
+
| -------------- | ----------------------------------- | -------- | ---------- | ------------------------------------------------------------------------------ |
|
|
1011
|
+
| `title` | `string` | Yes | | 빈 상태 제목 |
|
|
1012
|
+
| `description` | `string` | | | 빈 상태 설명 |
|
|
1013
|
+
| `icon` | `ReactNode` | | | 표시할 아이콘 |
|
|
1014
|
+
| `actions` | `EmptyStateAction[] \| ReactNode` | | | 액션 버튼 배열 { label, onClick, variant? } 또는 직접 렌더할 노드 |
|
|
1015
|
+
| `body` | `ReactNode` | | | description 대신 넣는 리치 본문 (문단·목록·코드 스니펫) |
|
|
1016
|
+
| `footer` | `ReactNode` | | | 구분선 아래 보조 콘텐츠. 문서 링크·단축키 안내 등 |
|
|
1017
|
+
| `layout` | `"vertical" \| "horizontal"` | | "vertical" | horizontal은 아이콘을 텍스트 옆으로 옮긴다 (전체 페이지용) |
|
|
1018
|
+
| `titleSize` | `"sm" \| "md" \| "lg"` | | "md" | 제목 시각 크기. headingLevel과 독립 |
|
|
1019
|
+
| `hasBorder` | `boolean` | | false | 테두리 있는 패널로 렌더 |
|
|
1020
|
+
| `tone` | `"default" \| "subdued" \| "error"` | | "default" | error는 실패를 알리고 role=alert로 렌더. subdued는 아직 데이터가 없음을 뜻한다 |
|
|
1021
|
+
| `iconSize` | `"sm" \| "md" \| "lg"` | | "md" | 아이콘 크기 프리셋 |
|
|
1022
|
+
| `headingLevel` | `"h2" \| "h3" \| "h4"` | | "h3" | 문서 구조상 제목 레벨 |
|
|
1015
1023
|
|
|
1016
1024
|
### StatCard
|
|
1017
1025
|
|
|
1018
|
-
>
|
|
1026
|
+
> 단일 지표를 값·변화량·보조 설명으로 표시하는 통계 카드. 비교 기준이 없으면 변화량 줄을 렌더하지 않는다.
|
|
1019
1027
|
|
|
1020
1028
|
**Import:** `import { StatCard } from "@reopt-ai/opt-ui"`
|
|
1021
1029
|
|
|
1022
|
-
| Prop
|
|
1023
|
-
|
|
|
1024
|
-
| `title`
|
|
1025
|
-
| `value`
|
|
1026
|
-
| `change`
|
|
1027
|
-
| `trend`
|
|
1030
|
+
| Prop | Type | Required | Default | Description |
|
|
1031
|
+
| --------------- | ----------------------------- | -------- | ---------- | --------------------------------------------------------------------------------------- |
|
|
1032
|
+
| `title` | `string` | Yes | | 통계 제목 |
|
|
1033
|
+
| `value` | `string` | Yes | | 통계 값 |
|
|
1034
|
+
| `change` | `string` | | | 변화량 텍스트 (예: '+12.5%'). 비교 기준이 없으면 생략 — trend와 함께 있을 때만 렌더된다 |
|
|
1035
|
+
| `trend` | `"up" \| "down" \| "neutral"` | | | 변화 방향. change와 함께 있을 때만 의미를 갖는다 |
|
|
1036
|
+
| `polarity` | `"positive" \| "negative"` | | "positive" | 상승이 좋은 지표인지. 이탈률·에러 수처럼 반대인 지표는 negative로 색을 뒤집는다 |
|
|
1037
|
+
| `description` | `string` | | | 값 아래 한 줄 보조 설명 (집계 대상·기간 등) |
|
|
1038
|
+
| `hint` | `string` | | | 산출 근거 등 긴 설명. 툴팁과 aria-describedby로 노출 |
|
|
1039
|
+
| `size` | `"sm" \| "md"` | | "md" | 밀도 프리셋. 요약 행에는 sm |
|
|
1040
|
+
| `loading` | `boolean` | | false | 값 로딩 중 스켈레톤 표시 |
|
|
1041
|
+
| `href` | `string` | | | 드릴다운 링크. 지정 시 카드가 앵커로 렌더된다 |
|
|
1042
|
+
| `onSelect` | `() => void` | | | 드릴다운 핸들러. 지정 시 카드가 버튼으로 렌더된다 |
|
|
1043
|
+
| `selected` | `boolean` | | false | 선택 가능한 카드 행에서 현재 선택 상태 |
|
|
1044
|
+
| `sparklineData` | `number[]` | | | 값 옆에 그릴 미니 추세선 데이터 |
|
|
1028
1045
|
|
|
1029
1046
|
### Logo
|
|
1030
1047
|
|
|
@@ -1662,30 +1679,32 @@ import {
|
|
|
1662
1679
|
|
|
1663
1680
|
## Other
|
|
1664
1681
|
|
|
1665
|
-
| Component
|
|
1666
|
-
|
|
|
1667
|
-
| FieldToken
|
|
1668
|
-
| Facet
|
|
1669
|
-
| Expression
|
|
1670
|
-
| TextTruncate
|
|
1671
|
-
| Highlight
|
|
1672
|
-
| LiveRegion
|
|
1673
|
-
| ColorPalette
|
|
1674
|
-
| InlineEdit
|
|
1675
|
-
| KeyPadMenu
|
|
1676
|
-
| Text
|
|
1677
|
-
| Heading
|
|
1678
|
-
| Separator
|
|
1679
|
-
| OtpField
|
|
1680
|
-
| Toggle
|
|
1681
|
-
| Accordion
|
|
1682
|
-
| Meter
|
|
1683
|
-
|
|
|
1684
|
-
|
|
|
1685
|
-
|
|
|
1686
|
-
|
|
|
1687
|
-
|
|
|
1688
|
-
|
|
|
1682
|
+
| Component | Description | Key Exports |
|
|
1683
|
+
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1684
|
+
| FieldToken | 필드 타입을 글리프 하나로 표현하는 토큰. 문자열·숫자·날짜·IP·지오 등 분석 스키마 타입마다 고정된 아이콘과 팔레트 슬롯을 부여해 필드 목록·컬럼 헤더·속성 테이블 전역에서 같은 어휘를 쓴다. | `FieldToken`, `FIELD_TYPE_TOKENS`, `resolveFieldType` |
|
|
1685
|
+
| Facet | 필드 값 분포를 카운트와 점유율 막대로 보여주고 그 행 자체가 필터가 되는 패싯. 긴 꼬리는 접어 두고 상위 값부터 읽힌다. | `Facet`, `FacetGroup` |
|
|
1686
|
+
| Expression | 조건을 폼이 아니라 문장으로 쓰고 그 자리에서 편집하는 표현식 절. 알림 규칙·세그먼트 필터처럼 읽어서 검증해야 하는 조건에 쓴다. | `Expression`, `ExpressionGroup` |
|
|
1687
|
+
| TextTruncate | 실제 폰트로 실제 가용 폭을 측정해 문자열의 식별력이 가장 낮은 부분을 잘라내는 생략. CSS가 못 하는 앞·중간·양끝 생략을 지원하고 전체 문자열은 접근성 트리에 남는다. | `TextTruncate` |
|
|
1688
|
+
| Highlight | 검색어에 해당하는 구간을 <mark>로 표시. 긴 항목 우선 매칭이라 겹치는 검색어도 조각나지 않는다. | `Highlight` |
|
|
1689
|
+
| LiveRegion | 라이브 뷰의 변화를 스크린 리더에 읽어 주는 영역. 스로틀로 폭주를 요약하고 두 노드를 번갈아 써서 같은 문구도 다시 읽힌다. | `LiveRegion` |
|
|
1690
|
+
| ColorPalette | 시각화 색 팔레트를 그 팔레트의 모습 그대로 보여 주고 고르게 하는 컴포넌트. 범주형은 블록, 순차·발산형은 그라디언트로 그려 데이터 종류를 그림이 말한다. | `ColorPaletteDisplay`, `ColorPalettePicker`, `THEME_PALETTES` |
|
|
1691
|
+
| InlineEdit | 대시보드 제목·지표 이름처럼 읽히는 횟수가 훨씬 많은 값을 그 자리에서 고치는 편집. Enter 확정, Escape 되돌리기, 거절된 저장은 입력을 유지한다. | `InlineEdit` |
|
|
1692
|
+
| KeyPadMenu | 이름보다 그림으로 알아보기 쉬운 선택지를 타일로 고르는 메뉴. 내부는 실제 radio·checkbox라 키보드와 스크린 리더가 그대로 동작한다. | `KeyPadMenu` |
|
|
1693
|
+
| Text | 본문, 레이블, 보조 설명, 코드에 일관된 의미 기반 타이포그래피를 적용합니다. | `Text` |
|
|
1694
|
+
| Heading | 문서의 의미 계층과 시각적 타이포그래피 계층을 독립적으로 제어합니다. | `Heading` |
|
|
1695
|
+
| Separator | 콘텐츠를 구분하는 가로/세로 디바이더. 라벨을 넣으면 가운데 정렬 구분선이 된다. | `Separator` |
|
|
1696
|
+
| OtpField | 일회용 코드(OTP)/PIN 입력. 셀 단위 입력, 붙여넣기 분배, 자동 포커스 이동, 백스페이스 네비게이션과 폼 이름/오류 연결을 지원합니다. | `OtpField` |
|
|
1697
|
+
| Toggle | 눌림(pressed) 두 상태 버튼. 단독 사용하거나 ToggleGroup으로 묶어 단일/다중 선택을 만든다. | `Toggle`, `ToggleGroup` |
|
|
1698
|
+
| Accordion | 수직으로 쌓인 펼침/접힘 패널. single(한 개)/multiple(여러 개) 모드와 collapsible 지원. | `AccordionRoot`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` |
|
|
1699
|
+
| Meter | 범위 내 스칼라 측정값 게이지 (디스크 사용량·점수·용량 등). role=meter로 작업 진행률(Progress)과 구분된다. | `Meter` |
|
|
1700
|
+
| DescriptionList | 한 대상의 라벨 있는 사실들을 시맨틱 <dl>로 표시한다. 상세 패널의 필드 나열을 표준화하고 식별자 복사를 제공한다. | `DescriptionList` |
|
|
1701
|
+
| Identity | 사람(또는 익명 디바이스)을 목록 셀 한 칸으로 표현한다. 이름→이메일→ID 폴백과 익명 표식을 한 곳에서 처리한다. | `Identity` |
|
|
1702
|
+
| BlockLayout | Block 루트 레이아웃. 자식 간 section spacing과 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay를 자동 래핑합니다. | `BlockLayout` |
|
|
1703
|
+
| createBlock | Block 팩토리 함수. BlockLayout 래핑을 구조적으로 강제하여 loading/className 처리를 자동화합니다. | `createBlock` |
|
|
1704
|
+
| StarRating | 1~N점 별점을 선택하는 인터랙티브 레이팅 입력. 읽기 전용 표시도 지원. | `StarRating` |
|
|
1705
|
+
| ErrorBoundary | React 에러 바운더리. 자식 컴포넌트 렌더 에러를 잡아 fallback UI를 표시합니다. | `ErrorBoundary` |
|
|
1706
|
+
| Command | cmdk 스타일 명령 anatomy. 자동 필터링 + 키보드 내비게이션. 인라인 또는 CommandDialog로 사용. | `Command`, `CommandDialog`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`, `CommandShortcut` |
|
|
1707
|
+
| ShaderSurface | ogl 기반 애니메이션 WebGL 셰이더 배경. 럭셔리 프리셋(메탈릭/실크/유리 등) + 색·파라미터로 배경·카드 배경을 만든다. 정지 프레임·PNG 캡처·WebGL 폴백 지원. | `ShaderSurface` |
|
|
1689
1708
|
|
|
1690
1709
|
### FieldToken
|
|
1691
1710
|
|
|
@@ -2028,6 +2047,38 @@ import {
|
|
|
2028
2047
|
| `showValue` | `boolean` | | false | 퍼센트 표시 |
|
|
2029
2048
|
| `label` | `string` | | | 레이블 텍스트 |
|
|
2030
2049
|
|
|
2050
|
+
### DescriptionList
|
|
2051
|
+
|
|
2052
|
+
> 한 대상의 라벨 있는 사실들을 시맨틱 <dl>로 표시한다. 상세 패널의 필드 나열을 표준화하고 식별자 복사를 제공한다.
|
|
2053
|
+
|
|
2054
|
+
**Import:** `import { DescriptionList } from "@reopt-ai/opt-ui"`
|
|
2055
|
+
|
|
2056
|
+
| Prop | Type | Required | Default | Description |
|
|
2057
|
+
| ------------ | ------------------------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
2058
|
+
| `items` | `DescriptionListItem[]` | Yes | | term/description 쌍 배열. { id, term, description, copyValue?, hint?, wrap? } |
|
|
2059
|
+
| `layout` | `"grid" \| "stack" \| "inline"` | | "grid" | grid는 각 쌍을 박스로 감싼다(필드가 많은 상세 패널). stack은 평범한 정의 목록, inline은 헤더 스트립용 한 줄 배치 |
|
|
2060
|
+
| `columns` | `1 \| 2 \| 3 \| 4` | | 2 | grid/stack 레이아웃의 컬럼 수 |
|
|
2061
|
+
| `compressed` | `boolean` | | false | 밀도 축소 |
|
|
2062
|
+
| `labels` | `DescriptionListLabels` | | | 복사/복사됨/빈 값 문구 |
|
|
2063
|
+
|
|
2064
|
+
### Identity
|
|
2065
|
+
|
|
2066
|
+
> 사람(또는 익명 디바이스)을 목록 셀 한 칸으로 표현한다. 이름→이메일→ID 폴백과 익명 표식을 한 곳에서 처리한다.
|
|
2067
|
+
|
|
2068
|
+
**Import:** `import { Identity } from "@reopt-ai/opt-ui"`
|
|
2069
|
+
|
|
2070
|
+
| Prop | Type | Required | Default | Description |
|
|
2071
|
+
| ------------ | --------------------------------------------- | -------- | ------- | ------------------------------------------------------------ |
|
|
2072
|
+
| `name` | `string \| null` | | | 표시 이름. 없으면 secondary, 그다음 id로 폴백한다 |
|
|
2073
|
+
| `secondary` | `string \| null` | | | 보통 이메일. 이름이 없으면 주 라벨로 승격된다 |
|
|
2074
|
+
| `id` | `string` | | | 최후 폴백 라벨이자 hover 시 title |
|
|
2075
|
+
| `avatarSrc` | `string \| null` | | | 아바타 이미지 URL |
|
|
2076
|
+
| `state` | `"identified" \| "anonymous"` | | | 익명 여부. 디바이스를 사람으로 오독하지 않게 배지로 표시한다 |
|
|
2077
|
+
| `badge` | `ReactNode` | | | state 배지 대신 표시할 내용 (라이프사이클 단계 등) |
|
|
2078
|
+
| `size` | `"sm" \| "md"` | | "md" | 밀도 프리셋 |
|
|
2079
|
+
| `hideAvatar` | `boolean` | | false | 이미 밀도가 높은 행에서 아바타 제거 |
|
|
2080
|
+
| `labels` | `{ identified?: string; anonymous?: string }` | | | 식별/익명 배지 문구 |
|
|
2081
|
+
|
|
2031
2082
|
### BlockLayout
|
|
2032
2083
|
|
|
2033
2084
|
> Block 루트 레이아웃. 자식 간 section spacing과 선택적 시맨틱 inset을 제공하고 loading prop으로 LoadingOverlay를 자동 래핑합니다.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Shell Components"
|
|
3
|
-
description: "
|
|
4
|
-
version: "1.
|
|
3
|
+
description: "83 Shell layer components — props, examples, keyboard shortcuts."
|
|
4
|
+
version: "1.10.0"
|
|
5
5
|
generated: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Shell Components (
|
|
8
|
+
# Shell Components (83)
|
|
9
9
|
|
|
10
10
|
## Navigation & Layout
|
|
11
11
|
|
|
@@ -434,15 +434,17 @@ import { DataTable } from "@reopt-ai/opt-ui";
|
|
|
434
434
|
**Import:** `import { SummaryRow } from "@reopt-ai/opt-ui"`
|
|
435
435
|
**Dependencies:** stat-card (core), skeleton (core)
|
|
436
436
|
|
|
437
|
-
| Prop | Type | Required | Default | Description
|
|
438
|
-
| -------------------------- | -------------------------------- | -------- | ------- |
|
|
439
|
-
| `stats` | `StatCardType[]` | Yes | | 통계 카드 배열
|
|
440
|
-
| `columns` | `2 \| 3 \| 4`
|
|
441
|
-
| `onStatClick` | `(stat: StatCardType) => void` | | | 카드 클릭
|
|
442
|
-
| `
|
|
443
|
-
| `
|
|
444
|
-
| `
|
|
445
|
-
| `
|
|
437
|
+
| Prop | Type | Required | Default | Description |
|
|
438
|
+
| -------------------------- | -------------------------------- | -------- | ------- | ------------------------------------------------------- |
|
|
439
|
+
| `stats` | `StatCardType[]` | Yes | | 통계 카드 배열 |
|
|
440
|
+
| `columns` | `2 \| 3 \| 4 \| 5 \| 6` | | 4 | 컬럼 수 |
|
|
441
|
+
| `onStatClick` | `(stat: StatCardType) => void` | | | 카드 클릭 핸들러. 지정 시 카드 자체가 버튼으로 렌더된다 |
|
|
442
|
+
| `selectedStatId` | `string` | | | 선택 가능한 행에서 현재 뷰를 이끄는 카드 id |
|
|
443
|
+
| `size` | `"sm" \| "md"` | | "md" | 카드 밀도. 표 위 헤더 스트립에는 sm |
|
|
444
|
+
| `formatValue` | `(stat: StatCardType) => string` | | | 값 표시 커스텀 포맷 함수 |
|
|
445
|
+
| `durationFractionDigits` | `number` | | 1 | duration 포맷 시 소수점 자리수 |
|
|
446
|
+
| `percentageFractionDigits` | `number` | | 1 | percentage 포맷 시 소수점 자리수 |
|
|
447
|
+
| `loading` | `boolean` | | false | 로딩 시 스켈레톤 표시 |
|
|
446
448
|
|
|
447
449
|
### CodeSnippetViewer
|
|
448
450
|
|
|
@@ -1323,20 +1325,23 @@ const fields = [
|
|
|
1323
1325
|
|
|
1324
1326
|
## Other
|
|
1325
1327
|
|
|
1326
|
-
| Component | Description
|
|
1327
|
-
| ---------------- |
|
|
1328
|
-
| PageAside | Sticky 페이지 사이드 aside chrome. 고정 너비 + header/body/footer 3-slot.
|
|
1329
|
-
| FailureList | 실패 목록 패널. severity별 색상 강조, 그룹핑, 액션 슬롯을 지원합니다.
|
|
1330
|
-
| KeyValueEditor | 키-값 쌍 편집기. 동적 행 추가/삭제, 비밀값 토글, 유효성 검사를 지원합니다.
|
|
1331
|
-
|
|
|
1332
|
-
|
|
|
1333
|
-
|
|
|
1334
|
-
|
|
|
1335
|
-
|
|
|
1336
|
-
|
|
|
1337
|
-
|
|
|
1338
|
-
|
|
|
1339
|
-
|
|
|
1328
|
+
| Component | Description | Key Exports |
|
|
1329
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------ |
|
|
1330
|
+
| PageAside | Sticky 페이지 사이드 aside chrome. 고정 너비 + header/body/footer 3-slot. | `PageAside` |
|
|
1331
|
+
| FailureList | 실패 목록 패널. severity별 색상 강조, 그룹핑, 액션 슬롯을 지원합니다. | `FailureList` |
|
|
1332
|
+
| KeyValueEditor | 키-값 쌍 편집기. 동적 행 추가/삭제, 비밀값 토글, 유효성 검사를 지원합니다. | `KeyValueEditor` |
|
|
1333
|
+
| EventTimeline | 이벤트를 순서로 읽히게 하는 타임라인. 인접 이벤트 사이의 경과 시간을 라벨링하고, 속성 페이로드를 제자리에서 펼치며, 세션 단위 그룹핑을 지원한다. | `EventTimeline` |
|
|
1334
|
+
| ScoreBreakdown | 합성 점수를 축별로 분해해 보여준다. 총점과 함께 각 축의 값·가중치·의미를 노출해 '43'을 판정이 아니라 발견으로 만든다. | `ScoreBreakdown` |
|
|
1335
|
+
| Flyout | 목록을 화면에 둔 채 레코드를 옆에서 보여주는 상세 패널. 모달이 아니다 — 포커스 트랩·aria-modal·inert 없이 Escape로 닫고 포커스를 되돌린다. | `Flyout` |
|
|
1336
|
+
| AuditTimeline | 변경 이력 타임라인. 액션별 색상 코딩 + 확장 가능한 diff 뷰. | `AuditTimeline` |
|
|
1337
|
+
| ChatSidebar | AI 채팅 사이드바. 대화 목록, 검색, 새 대화 버튼. | `ChatSidebar` |
|
|
1338
|
+
| ChatInput | 채팅 입력 컴포넌트. 자동 리사이즈 textarea, 파일 첨부, 모델/스타일 Select. | `ChatInput` |
|
|
1339
|
+
| ChatMessageList | 채팅 메시지 목록. 역할별 말풍선, 타이핑 인디케이터, 자동 스크롤. | `ChatMessageList` |
|
|
1340
|
+
| TimeRangeControl | date math(now-7d, now/d) 기반 시간 범위 컨트롤. quick select, 프리셋/최근 사용, 명시적 Update, 자동 갱신, 창 이동·확대/축소 버튼을 제공합니다. | `TimeRangeControl`, `DEFAULT_TIME_PRESETS` |
|
|
1341
|
+
| TimeSeriesPanel | 시간 범위 컨트롤과 시계열 차트를 한 단위로 묶은 패널. 드래그 줌과 줌 히스토리(되돌리기), 범례 토글을 포함합니다. | `TimeSeriesPanel` |
|
|
1342
|
+
| LogTable | 계속 도착하는 로그용 윈도잉 테이블. 컬럼 정의 기반, 상단 삽입 시 스크롤 위치 보존, follow 상태 보고, 셀 값 즉시 필터, 밀도·정렬을 지원합니다. | `LogTable` |
|
|
1343
|
+
| QueryBar | 검색과 필터를 한 입력으로 합친 쿼리 바. field:value, -부정, (a or b), 비교 연산, 필드·값 자동완성, 절(clause) 칩을 지원합니다. | `QueryBar` |
|
|
1344
|
+
| FieldSidebar | 데이터에 어떤 필드가 있고 각 필드가 무슨 값을 갖는지 보여주는 사이드바. 값 분포 막대, 컬럼으로 승격, 값 기준 포함/제외 필터를 제공합니다. | `FieldSidebar` |
|
|
1340
1345
|
|
|
1341
1346
|
### PageAside
|
|
1342
1347
|
|
|
@@ -1400,6 +1405,71 @@ const fields = [
|
|
|
1400
1405
|
| ----- | ------------------ |
|
|
1401
1406
|
| `Tab` | 키/값 필드 간 이동 |
|
|
1402
1407
|
|
|
1408
|
+
### EventTimeline
|
|
1409
|
+
|
|
1410
|
+
> 이벤트를 순서로 읽히게 하는 타임라인. 인접 이벤트 사이의 경과 시간을 라벨링하고, 속성 페이로드를 제자리에서 펼치며, 세션 단위 그룹핑을 지원한다.
|
|
1411
|
+
|
|
1412
|
+
**Import:** `import { EventTimeline } from "@reopt-ai/opt-ui"`
|
|
1413
|
+
|
|
1414
|
+
| Prop | Type | Required | Default | Description |
|
|
1415
|
+
| -------------- | ----------------------------------- | -------- | ------- | ----------------------------------------------------------------------------- |
|
|
1416
|
+
| `items` | `EventTimelineItem[]` | | | 평면 목록. groups가 있으면 무시된다 |
|
|
1417
|
+
| `groups` | `EventTimelineGroup[]` | | | 그룹(주로 세션) 단위 목록. 접기/펼치기와 그룹 요약을 제공 |
|
|
1418
|
+
| `showGaps` | `boolean` | | true | 인접 이벤트 사이 경과 시간 표시. 체크아웃 직전 4분 정지 같은 것이 발견이 된다 |
|
|
1419
|
+
| `order` | `"desc" \| "asc"` | | "desc" | 전달된 items의 정렬 방향. 경과 시간 계산 기준 |
|
|
1420
|
+
| `minGapMs` | `number` | | 1000 | 이 값 미만의 간격은 라벨을 생략 |
|
|
1421
|
+
| `loading` | `boolean` | | false | 스켈레톤 표시 |
|
|
1422
|
+
| `hasMore` | `boolean` | | false | 더 불러올 항목 존재 |
|
|
1423
|
+
| `onLoadMore` | `() => void` | | | 더 보기 핸들러 |
|
|
1424
|
+
| `onItemSelect` | `(item: EventTimelineItem) => void` | | | 이벤트 헤드라인 클릭 핸들러 |
|
|
1425
|
+
| `locale` | `string` | | | 경과 시간 포맷 로케일 |
|
|
1426
|
+
| `labels` | `EventTimelineLabels` | | | 문구 오버라이드 |
|
|
1427
|
+
|
|
1428
|
+
### ScoreBreakdown
|
|
1429
|
+
|
|
1430
|
+
> 합성 점수를 축별로 분해해 보여준다. 총점과 함께 각 축의 값·가중치·의미를 노출해 '43'을 판정이 아니라 발견으로 만든다.
|
|
1431
|
+
|
|
1432
|
+
**Import:** `import { ScoreBreakdown } from "@reopt-ai/opt-ui"`
|
|
1433
|
+
|
|
1434
|
+
| Prop | Type | Required | Default | Description |
|
|
1435
|
+
| --------- | ---------------------- | -------- | ------- | -------------------------------------------------- |
|
|
1436
|
+
| `score` | `number` | Yes | | 총점 |
|
|
1437
|
+
| `max` | `number` | | 100 | 총점 상한 |
|
|
1438
|
+
| `axes` | `ScoreAxis[]` | Yes | | 기여 축 배열. { id, label, value, hint?, weight? } |
|
|
1439
|
+
| `bands` | `ScoreBand[]` | | | 점수 구간 이름과 색. { min, label, tone? } |
|
|
1440
|
+
| `formula` | `ReactNode` | | | 총점 산출식 설명 한 줄 |
|
|
1441
|
+
| `loading` | `boolean` | | false | 스켈레톤 표시 |
|
|
1442
|
+
| `labels` | `ScoreBreakdownLabels` | | | 문구 오버라이드 |
|
|
1443
|
+
|
|
1444
|
+
### Flyout
|
|
1445
|
+
|
|
1446
|
+
> 목록을 화면에 둔 채 레코드를 옆에서 보여주는 상세 패널. 모달이 아니다 — 포커스 트랩·aria-modal·inert 없이 Escape로 닫고 포커스를 되돌린다.
|
|
1447
|
+
|
|
1448
|
+
**Import:** `import { Flyout } from "@reopt-ai/opt-ui"`
|
|
1449
|
+
|
|
1450
|
+
| Prop | Type | Required | Default | Description |
|
|
1451
|
+
| --------------------- | ----------------------- | -------- | --------- | ----------------------------------------------------------------------------------- |
|
|
1452
|
+
| `open` | `boolean` | Yes | | 열림 상태 |
|
|
1453
|
+
| `onClose` | `() => void` | Yes | | 닫기 핸들러 |
|
|
1454
|
+
| `title` | `ReactNode` | | | 패널 제목 |
|
|
1455
|
+
| `description` | `ReactNode` | | | 제목 아래 한 줄 설명 |
|
|
1456
|
+
| `type` | `"overlay" \| "inline"` | | "overlay" | overlay는 페이지 위에 띄우고, inline은 aside로 렌더해 배치를 부모 레이아웃에 맡긴다 |
|
|
1457
|
+
| `side` | `"right" \| "left"` | | "right" | overlay일 때 붙는 방향 |
|
|
1458
|
+
| `size` | `"sm" \| "md" \| "lg"` | | "md" | 패널 너비 |
|
|
1459
|
+
| `actions` | `ReactNode` | | | 닫기 버튼 앞 컨트롤 |
|
|
1460
|
+
| `footer` | `ReactNode` | | | 하단 고정 영역 |
|
|
1461
|
+
| `scrim` | `boolean` | | false | 뒤 페이지를 어둡게. 기본 off — 목록이 계속 읽혀야 한다 |
|
|
1462
|
+
| `closeOnOutsideClick` | `boolean` | | true | 바깥 클릭 시 닫기 (overlay 전용) |
|
|
1463
|
+
| `hideCloseButton` | `boolean` | | false | 닫기 버튼 숨김 |
|
|
1464
|
+
| `labels` | `FlyoutLabels` | | | 문구 오버라이드 |
|
|
1465
|
+
| `children` | `ReactNode` | Yes | | 패널 본문 |
|
|
1466
|
+
|
|
1467
|
+
**Keyboard Shortcuts:**
|
|
1468
|
+
|
|
1469
|
+
| Keys | Action |
|
|
1470
|
+
| -------- | ----------------------------------- |
|
|
1471
|
+
| `Escape` | 패널 닫고 여는 컨트롤로 포커스 복귀 |
|
|
1472
|
+
|
|
1403
1473
|
### AuditTimeline
|
|
1404
1474
|
|
|
1405
1475
|
> 변경 이력 타임라인. 액션별 색상 코딩 + 확장 가능한 diff 뷰.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Component Reference"
|
|
3
|
-
description: "Complete reference for
|
|
4
|
-
version: "1.
|
|
3
|
+
description: "Complete reference for 153 @reopt-ai/opt-ui components across 4 layers."
|
|
4
|
+
version: "1.10.0"
|
|
5
5
|
generated: true
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -11,11 +11,11 @@ generated: true
|
|
|
11
11
|
|
|
12
12
|
| Layer | Count |
|
|
13
13
|
| --------- | ------- |
|
|
14
|
-
| Core |
|
|
14
|
+
| Core | 70 |
|
|
15
15
|
| Visuals | 0 |
|
|
16
|
-
| Shells |
|
|
16
|
+
| Shells | 83 |
|
|
17
17
|
| Surfaces | 0 |
|
|
18
|
-
| **Total** | **
|
|
18
|
+
| **Total** | **153** |
|
|
19
19
|
|
|
20
20
|
## Component Selection Guide
|
|
21
21
|
|