@yanolja-next/design-core 0.0.1 → 0.1.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/AGENTS.md +37 -0
- package/README.md +145 -1
- package/RULES.md +470 -0
- package/catalog.json +1345 -0
- package/dist/catalog.d.ts +11 -0
- package/dist/components/button/ActionRow.d.ts +2 -0
- package/dist/components/button/Button.d.ts +20 -0
- package/dist/components/button/ButtonLink.d.ts +9 -0
- package/dist/components/button/CopyBox.d.ts +7 -0
- package/dist/components/button/CopyButton.d.ts +6 -0
- package/dist/components/button/CopyText.d.ts +10 -0
- package/dist/components/button/ExpandToggle.d.ts +8 -0
- package/dist/components/button/GoLink.d.ts +11 -0
- package/dist/components/button/TextButton.d.ts +3 -0
- package/dist/components/button/ToolButton.d.ts +7 -0
- package/dist/components/button/index.d.ts +19 -0
- package/dist/components/data/card/Card.d.ts +31 -0
- package/dist/components/data/card/index.d.ts +2 -0
- package/dist/components/data/change-group/ChangeGroup.d.ts +10 -0
- package/dist/components/data/change-group/MarkList.d.ts +12 -0
- package/dist/components/data/change-group/index.d.ts +4 -0
- package/dist/components/data/clip-text/ClipText.d.ts +6 -0
- package/dist/components/data/clip-text/index.d.ts +2 -0
- package/dist/components/data/collection-filter/CollectionFilter.d.ts +19 -0
- package/dist/components/data/collection-filter/ToolbarDivider.d.ts +2 -0
- package/dist/components/data/collection-filter/index.d.ts +3 -0
- package/dist/components/data/container/Container.d.ts +26 -0
- package/dist/components/data/container/SectionStack.d.ts +2 -0
- package/dist/components/data/container/index.d.ts +3 -0
- package/dist/components/data/disclosure/Disclosure.d.ts +10 -0
- package/dist/components/data/disclosure/index.d.ts +2 -0
- package/dist/components/data/divided/Divided.d.ts +2 -0
- package/dist/components/data/divided/index.d.ts +1 -0
- package/dist/components/data/empty-state/EmptyState.d.ts +16 -0
- package/dist/components/data/empty-state/index.d.ts +2 -0
- package/dist/components/data/facts/Facts.d.ts +11 -0
- package/dist/components/data/facts/index.d.ts +2 -0
- package/dist/components/data/fail-state/FailLine.d.ts +5 -0
- package/dist/components/data/fail-state/FailState.d.ts +11 -0
- package/dist/components/data/fail-state/index.d.ts +4 -0
- package/dist/components/data/figures/Figures.d.ts +30 -0
- package/dist/components/data/figures/index.d.ts +2 -0
- package/dist/components/data/index.d.ts +38 -0
- package/dist/components/data/info-panel/InfoPanel.d.ts +22 -0
- package/dist/components/data/info-panel/index.d.ts +2 -0
- package/dist/components/data/inline-list/InlineList.d.ts +5 -0
- package/dist/components/data/inline-list/index.d.ts +2 -0
- package/dist/components/data/key-value/KeyValue.d.ts +7 -0
- package/dist/components/data/key-value/KeyValueColumns.d.ts +10 -0
- package/dist/components/data/key-value/index.d.ts +4 -0
- package/dist/components/data/lines/Lines.d.ts +6 -0
- package/dist/components/data/lines/index.d.ts +2 -0
- package/dist/components/data/link-card/LinkCard.d.ts +22 -0
- package/dist/components/data/link-card/index.d.ts +2 -0
- package/dist/components/data/machine-text/MachineText.d.ts +6 -0
- package/dist/components/data/machine-text/index.d.ts +2 -0
- package/dist/components/data/meta/Meta.d.ts +7 -0
- package/dist/components/data/meta/index.d.ts +2 -0
- package/dist/components/data/metric-strip/MetricStrip.d.ts +17 -0
- package/dist/components/data/metric-strip/index.d.ts +2 -0
- package/dist/components/data/more-text/MoreText.d.ts +8 -0
- package/dist/components/data/more-text/index.d.ts +2 -0
- package/dist/components/data/name-text/NameText.d.ts +4 -0
- package/dist/components/data/name-text/index.d.ts +2 -0
- package/dist/components/data/note/Note.d.ts +7 -0
- package/dist/components/data/note/index.d.ts +2 -0
- package/dist/components/data/page-foot/PageFoot.d.ts +3 -0
- package/dist/components/data/page-foot/index.d.ts +1 -0
- package/dist/components/data/pagination/Pagination.d.ts +10 -0
- package/dist/components/data/pagination/index.d.ts +2 -0
- package/dist/components/data/pick-list/PickList.d.ts +24 -0
- package/dist/components/data/pick-list/index.d.ts +2 -0
- package/dist/components/data/prose/PlainText.d.ts +3 -0
- package/dist/components/data/prose/Prose.d.ts +3 -0
- package/dist/components/data/prose/index.d.ts +4 -0
- package/dist/components/data/rail/Rail.d.ts +30 -0
- package/dist/components/data/rail/index.d.ts +1 -0
- package/dist/components/data/skeleton/Skeleton.d.ts +48 -0
- package/dist/components/data/skeleton/index.d.ts +2 -0
- package/dist/components/data/skeleton/placeholder.d.ts +13 -0
- package/dist/components/data/split-panes/SplitPanes.d.ts +3 -0
- package/dist/components/data/split-panes/index.d.ts +2 -0
- package/dist/components/data/steps/Steps.d.ts +10 -0
- package/dist/components/data/steps/index.d.ts +2 -0
- package/dist/components/data/sub-head/SubHead.d.ts +6 -0
- package/dist/components/data/sub-head/index.d.ts +2 -0
- package/dist/components/data/table/Table.d.ts +95 -0
- package/dist/components/data/table/TableClip.d.ts +6 -0
- package/dist/components/data/table/TableMore.d.ts +2 -0
- package/dist/components/data/table/TableSkeleton.d.ts +20 -0
- package/dist/components/data/table/TableSubLine.d.ts +8 -0
- package/dist/components/data/table/index.d.ts +9 -0
- package/dist/components/data/tabs/Tabs.d.ts +14 -0
- package/dist/components/data/tabs/index.d.ts +2 -0
- package/dist/components/data/term-list/TermList.d.ts +10 -0
- package/dist/components/data/term-list/index.d.ts +2 -0
- package/dist/components/data/url-text/UrlText.d.ts +11 -0
- package/dist/components/data/url-text/index.d.ts +2 -0
- package/dist/components/data/usage-bar/UsageBar.d.ts +19 -0
- package/dist/components/data/usage-bar/index.d.ts +2 -0
- package/dist/components/data/veiled/Veiled.d.ts +6 -0
- package/dist/components/data/veiled/index.d.ts +2 -0
- package/dist/components/data/warn-line/WarnLine.d.ts +6 -0
- package/dist/components/data/warn-line/index.d.ts +2 -0
- package/dist/components/forms/badge/Badge.d.ts +10 -0
- package/dist/components/forms/badge/index.d.ts +2 -0
- package/dist/components/forms/checkbox/Checkbox.d.ts +18 -0
- package/dist/components/forms/checkbox/index.d.ts +2 -0
- package/dist/components/forms/chip/Chip.d.ts +14 -0
- package/dist/components/forms/chip/ChipList.d.ts +2 -0
- package/dist/components/forms/chip/index.d.ts +3 -0
- package/dist/components/forms/code-input/CodeInput.d.ts +8 -0
- package/dist/components/forms/code-input/index.d.ts +2 -0
- package/dist/components/forms/combobox/Combobox.d.ts +28 -0
- package/dist/components/forms/combobox/index.d.ts +2 -0
- package/dist/components/forms/control.d.ts +6 -0
- package/dist/components/forms/field/Field.d.ts +32 -0
- package/dist/components/forms/field/index.d.ts +2 -0
- package/dist/components/forms/field-group/FieldGroup.d.ts +6 -0
- package/dist/components/forms/field-group/index.d.ts +2 -0
- package/dist/components/forms/form/Form.d.ts +2 -0
- package/dist/components/forms/form/index.d.ts +1 -0
- package/dist/components/forms/form-actions/FormActions.d.ts +5 -0
- package/dist/components/forms/form-actions/index.d.ts +2 -0
- package/dist/components/forms/index.d.ts +16 -0
- package/dist/components/forms/input/Input.d.ts +12 -0
- package/dist/components/forms/input/index.d.ts +2 -0
- package/dist/components/forms/radio/Radio.d.ts +10 -0
- package/dist/components/forms/radio/index.d.ts +2 -0
- package/dist/components/forms/segmented/Segmented.d.ts +20 -0
- package/dist/components/forms/segmented/index.d.ts +2 -0
- package/dist/components/forms/select/Select.d.ts +30 -0
- package/dist/components/forms/select/SelectText.d.ts +2 -0
- package/dist/components/forms/select/index.d.ts +3 -0
- package/dist/components/forms/status-indicator/StatusIndicator.d.ts +12 -0
- package/dist/components/forms/status-indicator/index.d.ts +2 -0
- package/dist/components/forms/switch/Switch.d.ts +7 -0
- package/dist/components/forms/switch/index.d.ts +2 -0
- package/dist/components/forms/textarea/Textarea.d.ts +5 -0
- package/dist/components/forms/textarea/index.d.ts +2 -0
- package/dist/components/icon/Icon.d.ts +10 -0
- package/dist/components/icon/SwapIcon.d.ts +2 -0
- package/dist/components/icon/icons.d.ts +286 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/link/Link.d.ts +12 -0
- package/dist/components/link/TextLink.d.ts +8 -0
- package/dist/components/link/index.d.ts +4 -0
- package/dist/components/overlay/index.d.ts +6 -0
- package/dist/components/overlay/menu/Menu.d.ts +36 -0
- package/dist/components/overlay/menu/index.d.ts +2 -0
- package/dist/components/overlay/modal/ConfirmModal.d.ts +15 -0
- package/dist/components/overlay/modal/Modal.d.ts +34 -0
- package/dist/components/overlay/modal/PanelHeader.d.ts +32 -0
- package/dist/components/overlay/modal/index.d.ts +5 -0
- package/dist/components/overlay/popover/Popover.d.ts +23 -0
- package/dist/components/overlay/popover/index.d.ts +2 -0
- package/dist/components/overlay/sheet/Sheet.d.ts +31 -0
- package/dist/components/overlay/sheet/index.d.ts +2 -0
- package/dist/components/overlay/toast/Toast.d.ts +20 -0
- package/dist/components/overlay/toast/index.d.ts +2 -0
- package/dist/components/overlay/tooltip/InfoTip.d.ts +8 -0
- package/dist/components/overlay/tooltip/TipText.d.ts +6 -0
- package/dist/components/overlay/tooltip/Tooltip.d.ts +14 -0
- package/dist/components/overlay/tooltip/index.d.ts +6 -0
- package/dist/components/reason/LockedPreview.d.ts +2 -0
- package/dist/components/reason/WithReason.d.ts +10 -0
- package/dist/components/reason/index.d.ts +3 -0
- package/dist/components/shell/app-shell/AppShell.d.ts +7 -0
- package/dist/components/shell/app-shell/index.d.ts +4 -0
- package/dist/components/shell/app-shell/sideNav.d.ts +12 -0
- package/dist/components/shell/drawer/Drawer.d.ts +36 -0
- package/dist/components/shell/drawer/index.d.ts +2 -0
- package/dist/components/shell/help-panel/HelpPanel.d.ts +33 -0
- package/dist/components/shell/help-panel/index.d.ts +2 -0
- package/dist/components/shell/index.d.ts +12 -0
- package/dist/components/shell/match/Keycap.d.ts +2 -0
- package/dist/components/shell/match/MatchText.d.ts +4 -0
- package/dist/components/shell/page-head/HeadMore.d.ts +15 -0
- package/dist/components/shell/page-head/PageHead.d.ts +39 -0
- package/dist/components/shell/page-head/index.d.ts +6 -0
- package/dist/components/shell/page-head/pagePath.d.ts +10 -0
- package/dist/components/shell/rank.d.ts +1 -0
- package/dist/components/shell/sidebar/Sidebar.d.ts +40 -0
- package/dist/components/shell/sidebar/index.d.ts +2 -0
- package/dist/components/shell/sign-in-card/SignInCard.d.ts +29 -0
- package/dist/components/shell/sign-in-card/index.d.ts +2 -0
- package/dist/components/shell/slash.d.ts +3 -0
- package/dist/components/shell/standalone-panel/StandalonePanel.d.ts +6 -0
- package/dist/components/shell/standalone-panel/index.d.ts +2 -0
- package/dist/components/shell/topbar/Topbar.d.ts +76 -0
- package/dist/components/shell/topbar/index.d.ts +2 -0
- package/dist/components/viz/chart/BarChart.d.ts +6 -0
- package/dist/components/viz/chart/ChartFrame.d.ts +34 -0
- package/dist/components/viz/chart/ChartHead.d.ts +9 -0
- package/dist/components/viz/chart/ChartLegend.d.ts +17 -0
- package/dist/components/viz/chart/ChartSkeleton.d.ts +6 -0
- package/dist/components/viz/chart/LineChart.d.ts +6 -0
- package/dist/components/viz/chart/Sparkline.d.ts +14 -0
- package/dist/components/viz/chart/TimeSeriesChart.d.ts +7 -0
- package/dist/components/viz/chart/bubble.d.ts +1 -0
- package/dist/components/viz/chart/index.d.ts +16 -0
- package/dist/components/viz/chart/layout.d.ts +212 -0
- package/dist/components/viz/chart/timeSeries.d.ts +44 -0
- package/dist/components/viz/code-block/CodeBlock.d.ts +18 -0
- package/dist/components/viz/code-block/index.d.ts +2 -0
- package/dist/components/viz/index.d.ts +2 -0
- package/dist/i18n/en.d.ts +88 -0
- package/dist/i18n/index.d.ts +15 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +10142 -0
- package/dist/lib/afterPress.d.ts +1 -0
- package/dist/lib/arrival.d.ts +3 -0
- package/dist/lib/cn.d.ts +2 -0
- package/dist/lib/copied.d.ts +5 -0
- package/dist/lib/floating.d.ts +5 -0
- package/dist/lib/focusAfter.d.ts +2 -0
- package/dist/lib/hit.d.ts +1 -0
- package/dist/lib/level.d.ts +1 -0
- package/dist/lib/media.d.ts +3 -0
- package/dist/lib/motion.d.ts +20 -0
- package/dist/lib/pageScroll.d.ts +6 -0
- package/dist/lib/scrollbar.d.ts +1 -0
- package/dist/styles.css +2 -0
- package/llms.txt +201 -0
- package/package.json +69 -5
- package/skill/SKILL.md +38 -0
package/catalog.json
ADDED
|
@@ -0,0 +1,1345 @@
|
|
|
1
|
+
{
|
|
2
|
+
"package": "@yanolja-next/design-core",
|
|
3
|
+
"rules": "RULES.md",
|
|
4
|
+
"entries": [
|
|
5
|
+
{
|
|
6
|
+
"name": "AppShell",
|
|
7
|
+
"layer": "core",
|
|
8
|
+
"intent": "로그인 뒤 업무 화면 전체 틀(위쪽 바, 사이드바, 본문 시트)",
|
|
9
|
+
"use": "업무 앱의 모든 화면. 범위 고르기(picker 자리에 제품이 주는 부품)와 메뉴가 있는 화면. #앵커로 간 자리는 markArrival 이 잠깐 회색 선으로 두드러지게 한다(화면이 따로 강조하지 않는다)",
|
|
10
|
+
"avoid": "로그인 화면, 로그인 없이 보는 소개 화면, 다른 앱 안에 담긴 화면(iframe)",
|
|
11
|
+
"parts": {
|
|
12
|
+
"SideNavProvider": "사이드바 접기 상태를 위쪽 바 메뉴 단추와 사이드바가 같이 본다. AppShell 이 sidebar 가 있으면 감싼다",
|
|
13
|
+
"Topbar": "위쪽 바: 홈 링크, 범위 칩, 경로, 찾기, 도움말, 알림, 계정 메뉴(로그아웃은 signOutHref)",
|
|
14
|
+
"Sidebar": "지금 범위 안의 메뉴. 900 이하에서는 숨고 서랍이 맡는다",
|
|
15
|
+
"Drawer": "햄버거로 여는 왼쪽 서랍. 모든 제품과 위 범위로 가는 길",
|
|
16
|
+
"DrawerRow": "서랍 안 한 줄 링크. 누르면 서랍이 닫힌다",
|
|
17
|
+
"DrawerLabel": "서랍 안 묶음 이름 한 줄",
|
|
18
|
+
"DrawerHere": "서랍 맨 위 지금 자리(범위 종류와 이름). 누르는 자리가 아니다",
|
|
19
|
+
"DrawerTop": "서랍 맨 위 줄 묶음(홈, 최근 방문). 아래 선으로 목록과 가른다",
|
|
20
|
+
"DrawerFoot": "서랍 끝, 선 아래의 위 범위로 가는 줄",
|
|
21
|
+
"Keycap": "키 하나를 키캡으로 보인다(⌘K, ↵, Tab)",
|
|
22
|
+
"MatchText": "찾은 글자를 이름 안에서 두드러지게 한다",
|
|
23
|
+
"Slash": "위쪽 바 경로 칸 사이의 \"/\" 표식",
|
|
24
|
+
"HelpProvider": "도움말 패널의 열림 상태를 위쪽 바, 머리의 \"정보\", 패널이 같이 본다. AppShell 이 감싼다",
|
|
25
|
+
"HelpToggle": "위쪽 바에서 도움말 패널을 여닫는 (i) 단추",
|
|
26
|
+
"HelpPanel": "본문 오른쪽 위에 덮어 여는 도움말 패널. AppShell 이 둔다"
|
|
27
|
+
},
|
|
28
|
+
"import": "@yanolja-next/design-core"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "PageHead",
|
|
32
|
+
"layer": "core",
|
|
33
|
+
"intent": "화면 제목, 개수, 화면 단위 동작",
|
|
34
|
+
"use": "화면 맨 위 한 번. 목록은 제목 옆 (개수), 오른쪽에 주 단추 하나까지. 메타 줄의 라벨과 값 한 칸(내 권한, 담당자)은 HeadFact, 길이를 모르는 값은 ownLine(폰에서 제 줄). 복사하러 오는 식별자(리소스 ID)는 id 와 idLabel 로 설명 아래 제 줄. 폰 한 줄에 안 드는 보조 동작은 actions 안 HeadMore(넓으면 단추, 폰은 ⋯ 메뉴)",
|
|
35
|
+
"avoid": "판(섹션) 안의 제목",
|
|
36
|
+
"parts": {
|
|
37
|
+
"InfoLink": "제목 뒤 \"정보\" 단추. 그 화면이나 판의 도움말을 연다",
|
|
38
|
+
"PagePathContext": "PageHead crumbs 를 셸로 넘기는 통로. 앱이 경로 상태의 setter 를 주고 그 경로를 Topbar path 에 준다",
|
|
39
|
+
"HeadFact": "머리 메타 줄의 라벨과 값 한 칸(내 권한, 담당자)",
|
|
40
|
+
"HeadMore": "머리 보조 동작. 넓으면 단추, 폰은 ⋯ 메뉴 하나"
|
|
41
|
+
},
|
|
42
|
+
"rule": "P2",
|
|
43
|
+
"instead": [
|
|
44
|
+
"Container",
|
|
45
|
+
"Card"
|
|
46
|
+
],
|
|
47
|
+
"import": "@yanolja-next/design-core"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "SignInCard",
|
|
51
|
+
"layer": "core",
|
|
52
|
+
"intent": "로그인 전 화면 하나: 바탕 가운데 로그인 칸(머리, 방법, 바닥 줄)",
|
|
53
|
+
"use": "제품 로그인, 다른 앱의 로그인(OIDC), 권한 없음처럼 셸(AppShell) 밖에서 계정 하나로 할 일을 묻는 화면. 넓으면 400 폭 떠 있는 유리 칸, 520 아래는 칸이 곧 화면. 머리는 SignInHead(제목과 한 줄, 제품 로그인은 wordmark 글자 로고, 다른 앱은 mark 에 SignInMark 첫 글자, 잘못된 요청은 SignInMark warn). 단계(코드 확인, 실패)는 머리만 바꾼다. 방법 무리 사이는 SignInOr. 안의 칸과 단추는 큰 크기(Input, Button size lg). 다른 앱으로 로그인할 때 보호 줄과 돌아갈 주소는 foot 의 SignInFootItem 둘",
|
|
54
|
+
"avoid": "로그인 뒤 업무 화면, 입력 몇 개로 만들거나 고치는 창",
|
|
55
|
+
"parts": {
|
|
56
|
+
"SignInHead": "로그인 칸 머리: 제목과 한 줄, 위에 글자 로고나 표식",
|
|
57
|
+
"SignInMark": "머리 위 표식(다른 앱의 첫 글자, 잘못된 요청의 경고)",
|
|
58
|
+
"SignInFootItem": "바닥 줄 한 조각: 아이콘과 글(보호 줄, 돌아갈 주소)",
|
|
59
|
+
"SignInOr": "로그인 방법 무리 사이 가름 줄(가운데 짧은 글과 양옆 선)"
|
|
60
|
+
},
|
|
61
|
+
"instead": [
|
|
62
|
+
"AppShell",
|
|
63
|
+
"Modal"
|
|
64
|
+
],
|
|
65
|
+
"import": "@yanolja-next/design-core"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "StandalonePanel",
|
|
69
|
+
"layer": "core",
|
|
70
|
+
"intent": "셸 밖 화면 하나: 위쪽 바 아래 가운데 불투명 판(제목과 할 일 하나)",
|
|
71
|
+
"use": "로그인한 뒤 범위가 없는 화면(처음 들어온 사람의 조직 고르기, 속한 조직 없음, 없는 주소). 위쪽 바(Topbar)는 화면이 둔다. 고르기는 PickList(묶음 여럿이면 level group), 받는 동안은 SkeletonRows, 실패는 FailState 를 판 안에",
|
|
72
|
+
"avoid": "로그인 전 화면, 셸 안 업무 화면의 판",
|
|
73
|
+
"instead": [
|
|
74
|
+
"SignInCard",
|
|
75
|
+
"Container"
|
|
76
|
+
],
|
|
77
|
+
"import": "@yanolja-next/design-core"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "Container",
|
|
81
|
+
"layer": "core",
|
|
82
|
+
"intent": "화면의 한 섹션(제목 + 본문), 또는 화면의 주인공 판",
|
|
83
|
+
"use": "시트 위에 상자 없이 놓이는 섹션. hero 는 화면이 답하는 한 가지를 담는 유리 판으로 화면에 하나. 제목 줄의 판정 한 마디(상태 한 줄)는 status. 짧은 제목과 작은 동작 하나는 actionsBeside 로 폰에서도 제목 옆",
|
|
84
|
+
"avoid": "나란히 놓이는 상자 카드 여럿, 표만 있는 섹션의 테두리(표가 제 카드를 그린다)",
|
|
85
|
+
"rule": "P3",
|
|
86
|
+
"instead": [
|
|
87
|
+
"Card",
|
|
88
|
+
"Table"
|
|
89
|
+
],
|
|
90
|
+
"import": "@yanolja-next/design-core"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "SubHead",
|
|
94
|
+
"layer": "core",
|
|
95
|
+
"intent": "판 안 덩어리의 이름 한 줄(소제목)",
|
|
96
|
+
"use": "판 하나를 덩어리로 가를 때(설정 판의 묶음, 펼친 줄의 요청과 응답, 도움말 패널의 항목, 상세 화면 정보 칸의 묶음). 판 머리를 못 쓰는 절의 제목. 판 제목과 같은 13/500, 간격은 화면이 준다. 이름 옆 개수는 count(판 머리와 같은 회색 (n))",
|
|
97
|
+
"avoid": "판 머리, 화면 제목, 고르기 묶음 이름, 컨트롤 라벨, 라벨과 값 쌍의 라벨",
|
|
98
|
+
"rule": "P1",
|
|
99
|
+
"instead": [
|
|
100
|
+
"Container",
|
|
101
|
+
"PageHead",
|
|
102
|
+
"FieldGroup",
|
|
103
|
+
"Field",
|
|
104
|
+
"KeyValue"
|
|
105
|
+
],
|
|
106
|
+
"import": "@yanolja-next/design-core"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "Divided",
|
|
110
|
+
"layer": "core",
|
|
111
|
+
"intent": "창이나 판 안에서 앞 덩어리와 옅은 선 하나로 나뉘는 덩어리(위 선과 위 14)",
|
|
112
|
+
"use": "키 만든 창의 다음 할 일 줄(Playground 서비스 고르기), 창 안 고르기 묶음 사이(OAuth 클라이언트 유형, 허용 스코프), 시작하기 판에서 진행률에 세지 않는 선택 단계 묶음, 예산 주인공 판의 판정 제목 아래 수치 띠. 옆 여백과 안의 배치는 화면이 준다",
|
|
113
|
+
"avoid": "판 여럿 사이(간격으로 나눈다), 창 발(창이 긋는다), 단계 사이나 표 줄 사이(그 부품이 긋는다)",
|
|
114
|
+
"instead": [
|
|
115
|
+
"SectionStack",
|
|
116
|
+
"Modal",
|
|
117
|
+
"Steps",
|
|
118
|
+
"Table"
|
|
119
|
+
],
|
|
120
|
+
"import": "@yanolja-next/design-core"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "SectionStack",
|
|
124
|
+
"layer": "core",
|
|
125
|
+
"intent": "화면 본문의 판 여럿을 한 열로 36 띄워 쌓는다",
|
|
126
|
+
"use": "설정, 개요, 상세처럼 상자 없는 판(Container)이 위아래로 이어지는 화면 본문",
|
|
127
|
+
"avoid": "나란히 놓이는 카드 격자, 판 하나 안의 덩어리 간격",
|
|
128
|
+
"rule": "P1",
|
|
129
|
+
"instead": [
|
|
130
|
+
"Card",
|
|
131
|
+
"Container"
|
|
132
|
+
],
|
|
133
|
+
"import": "@yanolja-next/design-core"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "Card",
|
|
137
|
+
"layer": "core",
|
|
138
|
+
"intent": "같은 줄에 나란히 놓이는 상자 판",
|
|
139
|
+
"use": "대시보드 보드처럼 상자끼리 견주는 자리. 머리는 14 한 줄 판 제목. 카드 전체가 눌리는 새 모양을 만들 때만 link 와 CardLink(갈 곳), CardButton(창 열기)",
|
|
140
|
+
"avoid": "화면의 섹션 하나(상자 없이 놓는다), 고르기 전에 읽는 카드 격자의 칸(이름, 설명, 사실 한 줄), 큰 제품 이름과 그림이 있는 소개 카드",
|
|
141
|
+
"parts": {
|
|
142
|
+
"CardHead": "카드 머리 한 줄(이름과 작은 동작)",
|
|
143
|
+
"CardBody": "카드 몸통. pad 로 여백을 준다",
|
|
144
|
+
"CardLink": "카드 이름 링크. 카드 어디를 눌러도 이 링크로 간다",
|
|
145
|
+
"CardButton": "카드 어디를 눌러도 창을 여는 단추. 갈 곳 대신 창을 열 때"
|
|
146
|
+
},
|
|
147
|
+
"instead": [
|
|
148
|
+
"Container",
|
|
149
|
+
"LinkCard"
|
|
150
|
+
],
|
|
151
|
+
"import": "@yanolja-next/design-core"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "LinkCard",
|
|
155
|
+
"layer": "core",
|
|
156
|
+
"intent": "카드 격자의 칸 하나: 고르기 전에 읽는 대상, 카드 전체가 그 상세로 가거나 창을 연다",
|
|
157
|
+
"use": "고르기 전에 읽는 대상의 카드(이름, 배지, ID, 설명 두 줄, 사실 한 줄), 바로 시작 칸(size sm, 아이콘 이름과 덧말 한 줄). href 가 없으면 단추라 Modal trigger 로 쓴다. 아래 줄은 흐린 note 뒤에 값 fact 하나, 끝에 회색 꺾쇠가 올리면 2px 앞으로. 받는 동안은 LinkCardSkeleton. 격자(칸 수, 사이)는 화면이 준다",
|
|
158
|
+
"avoid": "관리하는 대상의 목록(키, 사용자), 머리와 몸통이 있는 판, 설명을 펴서 읽는 자리",
|
|
159
|
+
"parts": {
|
|
160
|
+
"LinkCardSkeleton": "받는 동안의 LinkCard 자리"
|
|
161
|
+
},
|
|
162
|
+
"rule": "P7",
|
|
163
|
+
"instead": [
|
|
164
|
+
"Table",
|
|
165
|
+
"Card",
|
|
166
|
+
"MoreText"
|
|
167
|
+
],
|
|
168
|
+
"import": "@yanolja-next/design-core"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"name": "ListWithRail",
|
|
172
|
+
"layer": "core",
|
|
173
|
+
"intent": "열이 적은 목록 + 오른쪽 요약 레일",
|
|
174
|
+
"use": "사용자, 권한, 키처럼 열이 적어 표가 화면을 가로질러 늘어지면 안 되는 목록",
|
|
175
|
+
"avoid": "열이 많은 표, 레일에 둘 사실이 없는 화면",
|
|
176
|
+
"parts": {
|
|
177
|
+
"RailGroup": "레일 묶음: 이름 한 줄과 그 아래 줄들",
|
|
178
|
+
"RailRow": "레일 한 줄: 왼쪽 라벨, 오른쪽 값(또는 목록 항목)",
|
|
179
|
+
"RailList": "레일 안 줄 목록(최근 활동, 리소스)",
|
|
180
|
+
"RailNote": "레일 안 보조 한 줄(빈 묶음, 규칙 한 줄)"
|
|
181
|
+
},
|
|
182
|
+
"rule": "P5",
|
|
183
|
+
"instead": [
|
|
184
|
+
"Table"
|
|
185
|
+
],
|
|
186
|
+
"import": "@yanolja-next/design-core"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"name": "SplitPanes",
|
|
190
|
+
"layer": "core",
|
|
191
|
+
"intent": "한 판 안에서 나란히 견주는 두 칸(요청 | 응답)을 옅은 선으로 나눈다",
|
|
192
|
+
"use": "Playground 의 요청 칸과 응답 칸처럼 같은 일의 앞뒤를 한눈에 견주는 자리. 1180 이하는 위아래로 쌓는다",
|
|
193
|
+
"avoid": "본문과 요약 레일, 서로 다른 일의 판 둘, 판 안의 판",
|
|
194
|
+
"instead": [
|
|
195
|
+
"ListWithRail",
|
|
196
|
+
"SectionStack"
|
|
197
|
+
],
|
|
198
|
+
"import": "@yanolja-next/design-core"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"name": "InfoPanel",
|
|
202
|
+
"layer": "core",
|
|
203
|
+
"intent": "상세 화면 오른쪽 정보 칸: 대상의 사실을 모두 담는 주인공 판 하나",
|
|
204
|
+
"use": "서비스 상세처럼 왼쪽 탭, 오른쪽 300 칸인 상세 화면. 첫 묶음은 KeyValueColumns 한 열, 그 아래 묶음(이번 달, 담당자)은 InfoSection(위 옅은 선, SubHead 이름, 끝 이동 링크 하나 GoLink flush). 사람과 역할 목록은 PersonList(받는 동안, 없음, 좁은 화면 한 줄 요약). 칸의 자리와 폭은 화면이 준다",
|
|
205
|
+
"avoid": "목록 옆 요약 레일(라벨 왼쪽, 값 오른쪽 한 줄), 화면 본문의 판, 설정 화면의 속성",
|
|
206
|
+
"parts": {
|
|
207
|
+
"InfoSection": "정보 칸 안 묶음 하나(소제목과 내용)",
|
|
208
|
+
"PersonList": "사람 이름과 역할을 한 줄씩"
|
|
209
|
+
},
|
|
210
|
+
"rule": "P8",
|
|
211
|
+
"instead": [
|
|
212
|
+
"ListWithRail",
|
|
213
|
+
"Container",
|
|
214
|
+
"KeyValueColumns"
|
|
215
|
+
],
|
|
216
|
+
"import": "@yanolja-next/design-core"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"name": "PickList",
|
|
220
|
+
"layer": "core",
|
|
221
|
+
"intent": "짧은 목록에서 하나를 골라 그곳으로 간다(묻는 한 줄 + 줄 링크 + 전체 보기)",
|
|
222
|
+
"use": "범위나 대상을 하나 고르는 화면처럼 고르기 한 번이 목적인 자리. 줄은 이름 링크, 옆에 code(ID 앞자리), 오른쪽 끝 meta(내 권한). 받는 동안은 loading 줄 수만큼 뼈대. 화면 제목 아래 묶음 여럿(내가 속한 조직, 멤버가 아닌 조직)은 level group(묻는 줄 12)",
|
|
223
|
+
"avoid": "열을 견주거나 줄에 동작이 있는 리소스 목록, 레일의 요약 줄, 떠 있는 고르기 창",
|
|
224
|
+
"parts": {
|
|
225
|
+
"PickListItem": "고르는 목록의 한 줄. 줄 어디를 눌러도 간다"
|
|
226
|
+
},
|
|
227
|
+
"instead": [
|
|
228
|
+
"Table",
|
|
229
|
+
"ListWithRail",
|
|
230
|
+
"Menu"
|
|
231
|
+
],
|
|
232
|
+
"import": "@yanolja-next/design-core"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "Note",
|
|
236
|
+
"layer": "core",
|
|
237
|
+
"intent": "판 머리 바로 아래 이 판이 무엇인지 한두 줄, 또는 맨 아래 단서 한 줄(Fine)",
|
|
238
|
+
"use": "판 제목만으로 무엇인지 모를 때",
|
|
239
|
+
"avoid": "경고, 상태, 오류 문장",
|
|
240
|
+
"parts": {
|
|
241
|
+
"Fine": "카드 맨 아래 정책이나 단서 한 줄"
|
|
242
|
+
},
|
|
243
|
+
"instead": [
|
|
244
|
+
"StatusIndicator",
|
|
245
|
+
"FailState"
|
|
246
|
+
],
|
|
247
|
+
"import": "@yanolja-next/design-core"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"name": "PageFoot",
|
|
251
|
+
"layer": "core",
|
|
252
|
+
"intent": "화면 내용 맨 아래 조용한 글 묶음(사업자 정보, 약관 링크)",
|
|
253
|
+
"use": "결제 화면의 통신판매업자 정보, 내 계정 바닥의 약관 링크. 내용과 36 띄운 12 Ink 3. 한 줄에 항목 여럿이면 PageFootLine(항목 사이 14, 좁으면 항목 사이에서 넘김)",
|
|
254
|
+
"avoid": "판 맨 아래 단서 한 줄, 판 머리 아래 설명",
|
|
255
|
+
"parts": {
|
|
256
|
+
"PageFootLine": "화면 바닥 줄 하나. 좁으면 항목 사이에서 꺾인다"
|
|
257
|
+
},
|
|
258
|
+
"rule": "P1",
|
|
259
|
+
"instead": [
|
|
260
|
+
"Note"
|
|
261
|
+
],
|
|
262
|
+
"import": "@yanolja-next/design-core"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"name": "Disclosure",
|
|
266
|
+
"layer": "core",
|
|
267
|
+
"intent": "판 안의 덩어리 하나를 접어 두고 접힌 줄에 이름과 옅은 덧말",
|
|
268
|
+
"use": "설정 파일, 도구 목록, 계산 근거처럼 대부분은 안 보고 넘어가는 덧붙임. 덧말에 무엇이 들었는지(경로, 개수와 앞 두 이름). 펼친 안이 글 줄이면 lines",
|
|
269
|
+
"avoid": "표 줄 아래 하위 줄을 여는 자리, 화면의 주된 내용(접어 두면 안 읽힌다)",
|
|
270
|
+
"instead": [
|
|
271
|
+
"ExpandToggle",
|
|
272
|
+
"Container"
|
|
273
|
+
],
|
|
274
|
+
"import": "@yanolja-next/design-core"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"name": "Table",
|
|
278
|
+
"layer": "core",
|
|
279
|
+
"intent": "같은 종류의 것 여럿을 줄로 보여 준다",
|
|
280
|
+
"use": "리소스 목록(프로젝트, 멤버, 키, 서비스). 표는 스스로 흰 표 카드에 담긴다(bare 로 끈다). 칸이 몇 개 안 되는 넓은 표는 layout=\"packed\" 로 칸을 모으고 남는 폭은 stretch 한 칸에. 늘 보이는 줄 동작은 TableRowEnd reveal=\"always\". 시간 순으로 쌓이는 기록(활동)은 phone=\"stack\" 으로 폰에서 카드 줄, 값이 있을 때만 셋째 줄인 칸은 TableCell detail. 위험 기준을 넘은 값(5xx 오류율 1% 이상)은 TableCell tone=\"danger\", 그 칸이 폰에서 숨는 표는 이름 옆 점 TableName flag=\"danger\". 칸 안 긴 값(주소, 스코프, Owner 여럿)은 TableClip 으로 한 줄에 자르고 전체는 툴팁, 값 앞에 늘 보일 꼬리표(민감 스코프 수)는 TableClip lead. 이름 아래 줄에 ID, 꼬리표(같은 이름 수), 덧말을 같이 두려면 sub 에 TableSubLine(뒤쪽 글부터 줄이고 ID 는 고를 수 있다). 꺾이면 안 되는 짧은 값 칸(시각, 유형)은 TableCell nowrap, 짧은 이름(예산 알림 기준)은 TableName nowrap. 값 뒤 꼬리표(활동 누가 칸의 CLI)는 TableCell tag. 글보다 높은 컨트롤(단추, 외부 로그인 단추)이 든 칸은 TableCell control(위아래 여백 없이 가운데, 줄 44). 폰에서 밀지 않고 칸을 접는 표는 TableHeaderCell, TableCell phone=\"fold\"(받는 동안 줄과 받침 줄은 fold 차례, 고르기 칸이 앞인 표는 select. 남는 폭은 고르기 칸 다음 이름 칸이 받는다), 접힌 값은 이름 아래 TableName phoneSub. 접을 칸 없이 폰 폭에 드는 표는 Table phone=\"fit\"(이름 칸이 남는 폭을 받아 줄인다). 폰에서 빼기만 하는 보조 칸(최근 오류의 사유, 소요 시간)은 phone=\"hide\"(표는 그대로 민다). 숫자가 든 값이지만 줄끼리 견주지 않는 칸(활동의 바뀐 값)은 TableCell numeric=\"start\"(표 숫자, 왼쪽). 보는 사람 본인 줄은 TableName me(\"나\" 꼬리표). 이름 뒤 꼬리표(증액 승인 대기, 열람 권한 없음)는 TableName tag(이름만 줄이고 꼬리표는 남긴다). 줄을 누르면 다른 쪽으로 가는 표는 TableName href, 그 자리에서 무엇을 하는 표(이 값만 보기)는 TableRowButton. 아래 줄을 펼치는 줄은 TableRow expanded 와 이름 앞 ExpandToggle, 그 아래 줄은 TableRow nested. 차트가 보이는 지표 칸은 TableHeaderCell, TableCell selected(잉크 500), 차트에서 끈 계열이나 값 없는 날의 줄은 TableRow off(45% 흐림). 추이 칸의 Sparkline 은 칸이 가운데에 둔다. 표에 넣지 않은 나머지(이번 달 쓰지 않은 서비스 n개)는 표 아래 TableMore 한 줄에 수와 다른 화면 링크",
|
|
281
|
+
"avoid": "한 리소스의 속성(이름: 값), 그림이나 소개를 표 모양으로 그리기",
|
|
282
|
+
"parts": {
|
|
283
|
+
"TableHead": "표 머리 줄 묶음(thead)",
|
|
284
|
+
"TableBody": "표 본문 줄 묶음(tbody)",
|
|
285
|
+
"TableFoot": "표 합계 줄",
|
|
286
|
+
"TableRow": "표 한 줄. 고름, 펼침, 안긴 줄, 흐림 상태를 받는다",
|
|
287
|
+
"TableHeaderCell": "표 머리 칸",
|
|
288
|
+
"TableCell": "표 칸 하나. 숫자, 위험 값, 꺾지 않기, 폰에서 접기를 받는다",
|
|
289
|
+
"TableName": "표 이름 칸. 링크(href), 아래 줄(sub), 꼬리표를 받는다",
|
|
290
|
+
"TableClip": "칸 안 긴 값을 한 줄로 자르고 전체는 툴팁",
|
|
291
|
+
"TableSubLine": "이름 아래 한 줄에 ID, 꼬리표, 덧말을 같이 둔다",
|
|
292
|
+
"TableRowButton": "줄을 누르면 그 자리에서 무엇을 하는 단추(다른 화면으로 가지 않는다)",
|
|
293
|
+
"TableRowEnd": "줄 끝 꺾쇠나 도구. 기본은 올렸을 때만 보인다",
|
|
294
|
+
"TableEmpty": "빈 표: 머리는 남기고 \"대상 없음\", 설명, 행동",
|
|
295
|
+
"TableMore": "표 아래 한 줄: 표에 없는 나머지 수와 그것을 보는 화면 링크",
|
|
296
|
+
"TableSelectHeaderCell": "고르기 칸 머리(모두 고르기)",
|
|
297
|
+
"TableSelectCell": "줄 고르기 칸(체크 상자나 라디오)",
|
|
298
|
+
"TableColumnSizer": "빈 표에서도 받는 동안과 같은 칸 폭을 지킨다",
|
|
299
|
+
"TableSkeletonRows": "받는 동안의 표 본문 줄"
|
|
300
|
+
},
|
|
301
|
+
"rule": "P4",
|
|
302
|
+
"instead": [
|
|
303
|
+
"KeyValueColumns",
|
|
304
|
+
"KeyValue"
|
|
305
|
+
],
|
|
306
|
+
"import": "@yanolja-next/design-core"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "CollectionFilter",
|
|
310
|
+
"layer": "core",
|
|
311
|
+
"intent": "목록 위 찾기, 속성 거르기, 쪽 넘김 한 줄",
|
|
312
|
+
"use": "표 바로 위. 개수는 PageHead 제목 옆이 맡는다. 표 옆에 레일이 있는 성긴 목록은 sparse(찾기 240 부터, 고르기와 쪽 넘김이 같은 줄). 찾기 칸 없이 고르기 동작만 있는 표는 고른 동안 판 머리 오른쪽(Container actions)에 place=\"head\" 로 선택 줄을 둔다",
|
|
313
|
+
"avoid": "사용량 기간, 서비스 고르기처럼 값을 고르는 조회 줄",
|
|
314
|
+
"parts": {
|
|
315
|
+
"Pagination": "쪽 넘김(‹ 1 2 … ›). 한 쪽이면 그리지 않는다"
|
|
316
|
+
},
|
|
317
|
+
"instead": [
|
|
318
|
+
"Segmented",
|
|
319
|
+
"Select"
|
|
320
|
+
],
|
|
321
|
+
"import": "@yanolja-next/design-core"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"name": "ToolbarDivider",
|
|
325
|
+
"layer": "core",
|
|
326
|
+
"intent": "한 줄에 놓인 컨트롤 무리를 세로 선으로 가른다",
|
|
327
|
+
"use": "조회 줄(기간 | 단위, 묶기, 차트 | 비교, 필터), 목록 필터 줄의 쪽 넘김 | 표 설정. 양옆 여백은 줄의 간격",
|
|
328
|
+
"avoid": "메뉴 항목 사이 가로 선, 판과 판 사이",
|
|
329
|
+
"instead": [
|
|
330
|
+
"Menu",
|
|
331
|
+
"SectionStack"
|
|
332
|
+
],
|
|
333
|
+
"import": "@yanolja-next/design-core"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"name": "KeyValueColumns",
|
|
337
|
+
"layer": "core",
|
|
338
|
+
"intent": "한 리소스의 속성을 라벨 위, 값 아래로 넷까지 나란히",
|
|
339
|
+
"use": "설정, 상세 화면 본문의 정보(P9). 상세 화면 정보 칸(P8)은 한 열로 쌓거나 짧은 수치 둘을 두 열로. 설정 화면처럼 한 화면의 여러 섹션이 위아래로 열을 맞춰야 하면 aligned(고정 폭 열 넷, 폰은 한 열)",
|
|
340
|
+
"avoid": "같은 종류 여럿의 목록, 라벨이 길고 값이 한 줄인 좁은 칸",
|
|
341
|
+
"rule": "P9",
|
|
342
|
+
"instead": [
|
|
343
|
+
"Table",
|
|
344
|
+
"KeyValue"
|
|
345
|
+
],
|
|
346
|
+
"import": "@yanolja-next/design-core"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "KeyValue",
|
|
350
|
+
"layer": "core",
|
|
351
|
+
"intent": "좁은 칸에서 라벨 왼쪽, 값 오른쪽 한 줄씩",
|
|
352
|
+
"use": "시트, 모달, 레일처럼 폭이 좁은 곳의 속성",
|
|
353
|
+
"avoid": "넓은 본문의 속성 묶음",
|
|
354
|
+
"parts": {
|
|
355
|
+
"KeyValueItem": "라벨과 값 한 쌍"
|
|
356
|
+
},
|
|
357
|
+
"instead": [
|
|
358
|
+
"KeyValueColumns"
|
|
359
|
+
],
|
|
360
|
+
"import": "@yanolja-next/design-core"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"name": "Facts",
|
|
364
|
+
"layer": "core",
|
|
365
|
+
"intent": "문장 대신 짧은 사실 몇 개(라벨 값)를 선 없이 한 줄로 잇거나, 값끼리 맞춰 한 줄에 하나씩",
|
|
366
|
+
"use": "판정 아래 사실 줄, 대기 중인 요청의 요약 줄, 모달 안에서 정할 때 같이 볼 값 두세 개",
|
|
367
|
+
"avoid": "한 리소스의 속성 목록, 레일 줄, 라벨이 위에 오는 본문 정보",
|
|
368
|
+
"instead": [
|
|
369
|
+
"KeyValue",
|
|
370
|
+
"ListWithRail",
|
|
371
|
+
"KeyValueColumns"
|
|
372
|
+
],
|
|
373
|
+
"import": "@yanolja-next/design-core"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"name": "TermList",
|
|
377
|
+
"layer": "core",
|
|
378
|
+
"intent": "낱말(또는 할 일)과 그 뜻을 짝지어 여럿 적는다(낱말 잉크 500, 뜻 보조 잉크)",
|
|
379
|
+
"use": "도움말 패널의 역할 설명과 역할별 권한(낱말 아래 뜻, stack), 시작 판 레일의 용어처럼 낱말 바로 뒤에 뜻을 이어 쓰는 짧은 짝(run)",
|
|
380
|
+
"avoid": "한 리소스의 속성(라벨과 값), 문장 대신 짧은 사실 몇 개, 순서가 있는 안내, 잃거나 얻는 권한 묶음",
|
|
381
|
+
"instead": [
|
|
382
|
+
"KeyValue",
|
|
383
|
+
"Facts",
|
|
384
|
+
"Steps",
|
|
385
|
+
"ChangeGroup"
|
|
386
|
+
],
|
|
387
|
+
"import": "@yanolja-next/design-core"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "MetricStrip",
|
|
391
|
+
"layer": "core",
|
|
392
|
+
"intent": "같은 무게의 수치 여럿을 한 줄 띠로",
|
|
393
|
+
"use": "요청 수, 오류율, 지연처럼 나란히 견주는 수치(P10 수치 띠). 숫자를 눌러 아래 차트의 지표를 고르면 selected/onSelect. 위험 기준을 넘은 값은 item tone danger(표 칸과 같은 진홍)",
|
|
394
|
+
"avoid": "화면에 하나뿐인 큰 숫자, 카드 맨 위 요약 숫자",
|
|
395
|
+
"rule": "P10",
|
|
396
|
+
"instead": [
|
|
397
|
+
"Figures"
|
|
398
|
+
],
|
|
399
|
+
"import": "@yanolja-next/design-core"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"name": "Figures",
|
|
403
|
+
"layer": "core",
|
|
404
|
+
"intent": "판 맨 위 주인공 수 하나와 보조 수",
|
|
405
|
+
"use": "판이 답하는 숫자. Hero 는 묶음 밖에 홀로 서는 큰 수, 화면 하나의 주인공 수는 Hero size=\"xl\"(40/400), 뒤의 옅은 기준(/ 한도)은 suffix. 받는 동안은 Hero loading(그 크기의 줄 상자와 막대, 폰 크기도 따른다). 주인공 수 옆에 견주는 수 하나(지난 기간)는 Figure inline(라벨과 값 한 줄, 13)",
|
|
406
|
+
"avoid": "같은 무게 수치 여럿",
|
|
407
|
+
"parts": {
|
|
408
|
+
"Figure": "라벨 붙은 수 하나",
|
|
409
|
+
"Hero": "묶음 밖에 홀로 선 주인공 수"
|
|
410
|
+
},
|
|
411
|
+
"instead": [
|
|
412
|
+
"MetricStrip"
|
|
413
|
+
],
|
|
414
|
+
"import": "@yanolja-next/design-core"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"name": "UsageBar",
|
|
418
|
+
"layer": "core",
|
|
419
|
+
"intent": "한도 대비 사용량, 또는 전체 중 비중을 막대와 글로",
|
|
420
|
+
"use": "한도 사용률(kind meter, 주색 몫은 tone spent), 항목별 비중(kind share, 그 줄의 순위 색 s1~s4, rest). 표 칸 안, 같은 칸은 같은 width. 판 폭 전체 사용률은 full(글 없음). 막대 아래 경고 한 줄은 statusLine: 줄이 올 수 있는 칸이면 받는 동안 waiting, 경고가 없으면 empty 를 주고, 표 행 높이는 Table 이 56 으로 맞춘다",
|
|
421
|
+
"avoid": "시간에 따른 변화, 한 막대에 여러 몫을 쌓기",
|
|
422
|
+
"instead": [
|
|
423
|
+
"BarChart",
|
|
424
|
+
"TimeSeriesChart"
|
|
425
|
+
],
|
|
426
|
+
"import": "@yanolja-next/design-core"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"name": "WarnLine",
|
|
430
|
+
"layer": "core",
|
|
431
|
+
"intent": "값 곁의 막힘 경고 한 줄: 경고 아이콘과 진홍 12/500",
|
|
432
|
+
"use": "막대 칸이 없는 자리의 같은 경고: 폰 표 이름 아래 줄(TableName phoneSub), 검토 창의 값 아래 문장 전체. 짧은 꼴은 short, 문장 전체는 툴팁과 보조기기 글. 줄 높이와 한 줄 자르기는 놓인 자리가 정한다",
|
|
433
|
+
"avoid": "사용률 막대 아래 줄, 판 하나의 판정, 꺾이지도 줄지도 않는 상태 꼬리(정상, 오류, 대기), 동작 실패",
|
|
434
|
+
"rule": "P16",
|
|
435
|
+
"instead": [
|
|
436
|
+
"UsageBar",
|
|
437
|
+
"StatusIndicator",
|
|
438
|
+
"FailLine"
|
|
439
|
+
],
|
|
440
|
+
"import": "@yanolja-next/design-core"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"name": "Change",
|
|
444
|
+
"layer": "core",
|
|
445
|
+
"intent": "바뀔 값 한 줄(지금 값 → 바뀔 값)",
|
|
446
|
+
"use": "권한 변경, 한도 변경처럼 확인 창에서 무엇이 무엇으로 바뀌는지",
|
|
447
|
+
"avoid": "시간에 따른 증감 수치",
|
|
448
|
+
"instead": [
|
|
449
|
+
"MetricStrip"
|
|
450
|
+
],
|
|
451
|
+
"import": "@yanolja-next/design-core"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "ChangeGroup",
|
|
455
|
+
"layer": "core",
|
|
456
|
+
"intent": "확인 창에서 잃거나 얻는 것 한 묶음(머리 + 줄마다 -, + 또는 아이콘)",
|
|
457
|
+
"use": "확인 창의 잃는 권한, 얻는 권한, 같이 지워지는 것(줄마다 이름, 수, 결과: items 의 label, value, note). 끝에 바뀌지 않는 것 한 줄(ChangeNote)",
|
|
458
|
+
"avoid": "값 하나가 무엇에서 무엇으로 바뀌는지, 권한 전체 표",
|
|
459
|
+
"parts": {
|
|
460
|
+
"ChangeNote": "바뀜 묶음 끝 옅은 한 줄(바뀌지 않는 것)"
|
|
461
|
+
},
|
|
462
|
+
"instead": [
|
|
463
|
+
"Change",
|
|
464
|
+
"Table"
|
|
465
|
+
],
|
|
466
|
+
"import": "@yanolja-next/design-core"
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
"name": "MarkList",
|
|
470
|
+
"layer": "core",
|
|
471
|
+
"intent": "줄마다 앞 표식 하나(-, + 또는 아이콘, 옅게)와 짧은 글의 목록",
|
|
472
|
+
"use": "머리가 따로 있는 판 안에서 쓸 수 없는 것, 생기는 것 몇 줄(꺼진 기능의 사용 불가 목록). 확인 창의 잃거나 얻는 묶음은 머리까지 갖춘 ChangeGroup",
|
|
473
|
+
"avoid": "차례가 있는 안내, 낱말과 뜻의 짝, 리소스 목록",
|
|
474
|
+
"instead": [
|
|
475
|
+
"Steps",
|
|
476
|
+
"TermList",
|
|
477
|
+
"Table"
|
|
478
|
+
],
|
|
479
|
+
"import": "@yanolja-next/design-core"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"name": "Steps",
|
|
483
|
+
"layer": "core",
|
|
484
|
+
"intent": "차례대로 할 일을 번호 붙은 단계로",
|
|
485
|
+
"use": "설치, 연결처럼 순서가 있는 안내(단계마다 내용), 시작하기처럼 끝난 단계를 체크하는 할 일 목록(done)",
|
|
486
|
+
"avoid": "순서 없는 항목 나열, 만들기 창 안의 단계 전환(창이 단계를 바꾼다)",
|
|
487
|
+
"parts": {
|
|
488
|
+
"Step": "단계 하나: 번호, 제목, 끝 동작, 내용"
|
|
489
|
+
},
|
|
490
|
+
"instead": [
|
|
491
|
+
"Modal"
|
|
492
|
+
],
|
|
493
|
+
"import": "@yanolja-next/design-core"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "Tabs",
|
|
497
|
+
"layer": "core",
|
|
498
|
+
"intent": "같은 대상의 다른 보기로 옮겨 간다",
|
|
499
|
+
"use": "페이지 탭(주소가 바뀐다), 판 안 탭(sm). 탭 줄 끝의 동작(요청 탭 옆 초기화)은 end 로 같은 줄, 같은 아래 선 위에(탭 목록 밖)",
|
|
500
|
+
"avoid": "값 하나 고르기(기간, 언어)",
|
|
501
|
+
"parts": {
|
|
502
|
+
"Tab": "탭 하나. href 면 링크, 없으면 그 자리에서 바꾸는 단추"
|
|
503
|
+
},
|
|
504
|
+
"rule": "P18",
|
|
505
|
+
"instead": [
|
|
506
|
+
"Segmented"
|
|
507
|
+
],
|
|
508
|
+
"import": "@yanolja-next/design-core"
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"name": "StatusIndicator",
|
|
512
|
+
"layer": "core",
|
|
513
|
+
"intent": "정상, 경고, 오류, 대기, 중지 상태를 아이콘과 글로",
|
|
514
|
+
"use": "리소스 상태, 판정 줄, 표 칸의 상태. 차단 경고는 진홍",
|
|
515
|
+
"avoid": "역할, 종류, 개수 같은 꼬리표, HTTP 응답 코드",
|
|
516
|
+
"rule": "P16",
|
|
517
|
+
"instead": [
|
|
518
|
+
"Badge"
|
|
519
|
+
],
|
|
520
|
+
"import": "@yanolja-next/design-core"
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"name": "Badge",
|
|
524
|
+
"layer": "core",
|
|
525
|
+
"intent": "역할, 종류, 개수 꼬리표. tone ok 로 정상 하나를 눈에 띄게",
|
|
526
|
+
"use": "OWNER 같은 역할, Beta 같은 단계, 출시와 사용 중(tone ok), HTTP 메서드(variant method). 메서드와 경로 한 줄은 HttpRoute",
|
|
527
|
+
"avoid": "오류, 차단, 경고 상태(색 tone 은 ok 하나뿐이다)",
|
|
528
|
+
"instead": [
|
|
529
|
+
"StatusIndicator"
|
|
530
|
+
],
|
|
531
|
+
"import": "@yanolja-next/design-core"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"name": "Chip",
|
|
535
|
+
"layer": "core",
|
|
536
|
+
"intent": "고른 값 하나를 알약으로 보이고, 필요하면 x 로 뺀다",
|
|
537
|
+
"use": "걸어 둔 필터(종류: 값), 창에서 고른 사람, 명단. 칩 여럿은 ChipList 한 목록(넘치면 다음 줄, 긴 칩은 말줄임). 표 칸의 Badge 여럿도 ChipList 로 묶는다",
|
|
538
|
+
"avoid": "역할이나 단계 꼬리표, 상태",
|
|
539
|
+
"parts": {
|
|
540
|
+
"ChipList": "칩 여럿을 한 목록으로. 넘치면 다음 줄"
|
|
541
|
+
},
|
|
542
|
+
"instead": [
|
|
543
|
+
"Badge",
|
|
544
|
+
"StatusIndicator"
|
|
545
|
+
],
|
|
546
|
+
"import": "@yanolja-next/design-core"
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"name": "EmptyState",
|
|
550
|
+
"layer": "core",
|
|
551
|
+
"intent": "보여 줄 것이 없다",
|
|
552
|
+
"use": "판 하나가 비었을 때. 머리는 남기고 글 시작에 \"{대상} 없음\" + 설명 + 행동. line: 표나 판 대신 없음만 말하는 조용한 한 줄(실행 기록 없음, 승인 대기 없음)",
|
|
553
|
+
"avoid": "빈 표(표 안에서 머리를 남긴다), 불러오기 실패, 판 머리 아래 이 판이 무엇인지 설명 줄",
|
|
554
|
+
"rule": "P19",
|
|
555
|
+
"instead": [
|
|
556
|
+
"Table",
|
|
557
|
+
"FailState",
|
|
558
|
+
"Note"
|
|
559
|
+
],
|
|
560
|
+
"import": "@yanolja-next/design-core"
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"name": "FailLine",
|
|
564
|
+
"layer": "core",
|
|
565
|
+
"intent": "창을 연 채 동작이 실패했다",
|
|
566
|
+
"use": "창이나 폼의 단추 옆 자리: 진홍 한 줄(무엇이 안 됐나) + 까닭 한 줄. 창을 닫지 않고 고치게 한다",
|
|
567
|
+
"avoid": "판 하나 자리의 불러오기 실패, 실행한 요청의 응답 오류",
|
|
568
|
+
"rule": "P15",
|
|
569
|
+
"instead": [
|
|
570
|
+
"FailState"
|
|
571
|
+
],
|
|
572
|
+
"import": "@yanolja-next/design-core"
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"name": "FailState",
|
|
576
|
+
"layer": "core",
|
|
577
|
+
"intent": "불러오기에 실패했다",
|
|
578
|
+
"use": "판 하나 자리에 \"{대상} 불러오기 실패\" + 까닭 + 다시 불러오기. line: 값이나 목록 한 줄 자리에 대상과 글 줄 안의 다시 시도만(정보 칸의 담당자, 이번 달 비용)",
|
|
579
|
+
"avoid": "저장 실패(그 동작 자리에 말한다), 권한 없음(그리지 않거나 이유와 함께 막는다)",
|
|
580
|
+
"rule": "P20",
|
|
581
|
+
"instead": [
|
|
582
|
+
"WithReason"
|
|
583
|
+
],
|
|
584
|
+
"import": "@yanolja-next/design-core"
|
|
585
|
+
},
|
|
586
|
+
{
|
|
587
|
+
"name": "Veiled",
|
|
588
|
+
"layer": "core",
|
|
589
|
+
"intent": "아직 놓을 수 없는 본문을 자리만 두고 숨기고 그 위에 뼈대를 겹친다",
|
|
590
|
+
"use": "본문이 나올지 무엇이 먼저 끼어들지 정해지기 전(첫 화면: 시작 안내가 나올지 아직 모름). 자리가 그대로라 정해진 뒤 밀림이 없다. cover 는 받는 동안의 화면과 같은 모양",
|
|
591
|
+
"avoid": "모양이 정해진 판을 받는 동안(그 판 자리에 뼈대), 앞 값을 둔 채 다시 받기",
|
|
592
|
+
"rule": "L1",
|
|
593
|
+
"instead": [
|
|
594
|
+
"SkeletonRows"
|
|
595
|
+
],
|
|
596
|
+
"import": "@yanolja-next/design-core"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"name": "SkeletonRows",
|
|
600
|
+
"layer": "core",
|
|
601
|
+
"intent": "받는 동안 받은 뒤와 같은 모양의 뼈대",
|
|
602
|
+
"use": "목록, 판, 카드를 받는 동안. 200ms 뒤에 나타난다. 글 줄 안의 값 자리는 SkeletonBar inline. 좁은 칸에서 여러 줄로 접힐 덧말 자리는 SkeletonText holds(올 글을 숨겨 깔아 줄 수를 잡는다). 줄 수를 아는 꺾이는 값(레일 주소 두 줄)은 SkeletonText lines(줄마다 막대). 앞 값을 둔 채 다시 받으면 뼈대 대신 그 판에 data-stale(안의 것이 200ms 뒤 .55). 화면 조각(코드)을 받는 동안 화면 자리 전체는 SkeletonPage(머리 제목 줄과 판 하나)",
|
|
603
|
+
"avoid": "표(Table 이 TableSkeletonRows 를 쓴다), 차트, 코드 칸(CodeBlock loading)",
|
|
604
|
+
"parts": {
|
|
605
|
+
"SkeletonText": "글 한 줄 자리. 받은 글과 같은 높이",
|
|
606
|
+
"SkeletonBar": "막대 하나. 화면이 제 모양대로 스켈레톤을 짤 때",
|
|
607
|
+
"SkeletonArea": "화면이 짠 스켈레톤 자리. 불러오는 중이라고 알린다",
|
|
608
|
+
"SkeletonCard": "받는 동안의 카드 자리",
|
|
609
|
+
"SkeletonPage": "화면을 받는 동안의 화면 자리(제목 줄과 판 하나)"
|
|
610
|
+
},
|
|
611
|
+
"rule": "L1",
|
|
612
|
+
"instead": [
|
|
613
|
+
"Table",
|
|
614
|
+
"ChartSkeleton",
|
|
615
|
+
"CodeBlock"
|
|
616
|
+
],
|
|
617
|
+
"import": "@yanolja-next/design-core"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"name": "Button",
|
|
621
|
+
"layer": "core",
|
|
622
|
+
"intent": "이 화면에서 무언가를 한다",
|
|
623
|
+
"use": "만들기, 저장, 승인. 주 단추(primary)는 화면에 하나. 값을 담아 고르기 창을 여는 단추(기간 알약 옆 직접 고른 기간)는 selected 로 그 값이 지금 쓰이는지 보인다(false 면 글자가 물러선다). 접힌 것을 펴는 더 보기/접기 단추는 icon chev 와 aria-expanded(열린 동안 꺾쇠가 위로). 높이 단계: 표 안 sm 24, 섹션과 폼 28, 화면 머리 동작 size head(폰 36). PageHead 동작과 폰 시트 발 단추는 묶음이 머리 높이로 올리고, 그 밖 머리 단계 줄(Playground 주소 줄)은 head 를 직접 준다",
|
|
624
|
+
"avoid": "다른 곳으로 가기(단추 모양이어도 링크다), 행 끝이나 판 머리의 작은 도구",
|
|
625
|
+
"instead": [
|
|
626
|
+
"ButtonLink",
|
|
627
|
+
"GoLink",
|
|
628
|
+
"ToolButton"
|
|
629
|
+
],
|
|
630
|
+
"import": "@yanolja-next/design-core"
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"name": "ActionRow",
|
|
634
|
+
"layer": "core",
|
|
635
|
+
"intent": "단추와 이동 링크 여럿을 한 줄로 두고 좁으면 다음 줄로",
|
|
636
|
+
"use": "단계 설명 아래 할 일 줄(시작하기의 프로젝트 찾기 + 만들기), 판 본문 안 동작 둘 이상, 목록 아래 더 보기 단추와 그 옆 실패 한 줄(활동)",
|
|
637
|
+
"avoid": "폼 아래 저장 줄, 창 발의 단추, 화면 머리 동작, 표 줄 끝 동작",
|
|
638
|
+
"instead": [
|
|
639
|
+
"FormActions",
|
|
640
|
+
"Modal",
|
|
641
|
+
"PageHead",
|
|
642
|
+
"Table"
|
|
643
|
+
],
|
|
644
|
+
"import": "@yanolja-next/design-core"
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "ButtonLink",
|
|
648
|
+
"layer": "core",
|
|
649
|
+
"intent": "다른 곳으로 가는 길을 단추 모양으로",
|
|
650
|
+
"use": "상담 신청, Playground 열기처럼 이동이 그 자리의 다음 할 일일 때. 업무 화면과 소개 화면 둘 다",
|
|
651
|
+
"avoid": "이 화면에서 무언가를 하는 동작, 판 머리의 작은 이동 링크. buttonVariants 를 링크에 직접 붙이지 않는다",
|
|
652
|
+
"instead": [
|
|
653
|
+
"Button",
|
|
654
|
+
"GoLink"
|
|
655
|
+
],
|
|
656
|
+
"import": "@yanolja-next/design-core"
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
"name": "GoLink",
|
|
660
|
+
"layer": "core",
|
|
661
|
+
"intent": "판 머리에서 관련 화면으로 간다",
|
|
662
|
+
"use": "판 머리 오른쪽 이동 링크 하나(\"자세히 →\"). 길은 보이되 아직 갈 수 없으면 disabledReason(흐리게, 누르면 이유). 글 아래 홀로 선 줄은 flush 로 글자가 위 글의 시작선에",
|
|
663
|
+
"avoid": "글 안의 링크, 동작",
|
|
664
|
+
"instead": [
|
|
665
|
+
"TextLink",
|
|
666
|
+
"Button"
|
|
667
|
+
],
|
|
668
|
+
"import": "@yanolja-next/design-core"
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"name": "Link",
|
|
672
|
+
"layer": "core",
|
|
673
|
+
"intent": "앱 라우터로 가는 링크",
|
|
674
|
+
"use": "부품을 만들 때 <a href> 대신. 앱이 LinkProvider 로 라우터를 꽂는다. 모양이 없다",
|
|
675
|
+
"avoid": "동작, 화면 글 안의 링크(색과 밑줄을 손으로 붙이지 않는다)",
|
|
676
|
+
"parts": {
|
|
677
|
+
"LinkProvider": "부품이 그리는 링크를 앱 라우터 링크로 바꾼다. 라우터 앱은 앱 뿌리에 하나. 없으면 <a> 라 누를 때마다 다시 읽는다"
|
|
678
|
+
},
|
|
679
|
+
"instead": [
|
|
680
|
+
"TextLink",
|
|
681
|
+
"Button"
|
|
682
|
+
],
|
|
683
|
+
"import": "@yanolja-next/design-core"
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"name": "TextLink",
|
|
687
|
+
"layer": "core",
|
|
688
|
+
"intent": "글 안에서 다른 화면이나 문서로 간다",
|
|
689
|
+
"use": "quiet(기본): 사실 값, 안내 줄, 표 이름처럼 링크 색과 올렸을 때 밑줄로 충분할 때. prose: 문장 한가운데라 글과 같은 색에 밑줄을 늘 그릴 때(새 탭 ↗ 도 글자처럼 붙는다)",
|
|
690
|
+
"avoid": "판 머리의 이동 링크, 단추 모양의 이동, 동작",
|
|
691
|
+
"instead": [
|
|
692
|
+
"GoLink",
|
|
693
|
+
"ButtonLink",
|
|
694
|
+
"TextButton",
|
|
695
|
+
"Button"
|
|
696
|
+
],
|
|
697
|
+
"import": "@yanolja-next/design-core"
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"name": "TextButton",
|
|
701
|
+
"layer": "core",
|
|
702
|
+
"intent": "글 줄 안에서 이 자리의 동작을 한다",
|
|
703
|
+
"use": "설명 줄의 \"다시 시도\"처럼 글 사이에 놓이는 작은 동작. 글자 크기는 놓인 줄을 따르고 밑줄이 늘 있다",
|
|
704
|
+
"avoid": "다른 곳으로 가기(링크다), 화면의 주된 동작, 표 줄 이름(줄 전체가 눌린다), 아이콘만 있는 도구, 접힌 긴 글의 \"더 보기\"(글과 단추를 같이 다는 부품이 있다)",
|
|
705
|
+
"instead": [
|
|
706
|
+
"TextLink",
|
|
707
|
+
"Button",
|
|
708
|
+
"ToolButton",
|
|
709
|
+
"MoreText"
|
|
710
|
+
],
|
|
711
|
+
"import": "@yanolja-next/design-core"
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
"name": "ToolButton",
|
|
715
|
+
"layer": "core",
|
|
716
|
+
"intent": "판 머리, 행 끝의 24 아이콘 도구",
|
|
717
|
+
"use": "더보기, 펼침, 편집처럼 글 없이 아이콘으로 아는 도구. 이름(aria-label)은 꼭",
|
|
718
|
+
"avoid": "화면의 주된 동작",
|
|
719
|
+
"instead": [
|
|
720
|
+
"Button"
|
|
721
|
+
],
|
|
722
|
+
"import": "@yanolja-next/design-core"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"name": "ExpandToggle",
|
|
726
|
+
"layer": "core",
|
|
727
|
+
"intent": "표 줄 이름 앞에서 그 아래 줄들(팀 멤버, 오퍼레이션)을 펼치고 접는다",
|
|
728
|
+
"use": "접근 권한 표의 팀 줄, 서비스별 표의 서비스 줄처럼 줄 아래에 하위 줄이 열리는 자리. 이름(aria-label)은 펼칠 때와 접을 때 다르게. 펼칠 것이 없는 줄은 ExpandToggleSpace 로 시작선을 맞춘다",
|
|
729
|
+
"avoid": "글 덩어리 하나를 접어 두는 자리(설정 파일, 계산 근거), 판 머리의 도구",
|
|
730
|
+
"parts": {
|
|
731
|
+
"ExpandToggleSpace": "펼칠 것이 없는 줄의 같은 폭 빈 자리"
|
|
732
|
+
},
|
|
733
|
+
"instead": [
|
|
734
|
+
"Disclosure",
|
|
735
|
+
"ToolButton"
|
|
736
|
+
],
|
|
737
|
+
"import": "@yanolja-next/design-core"
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "CopyText",
|
|
741
|
+
"layer": "core",
|
|
742
|
+
"intent": "복사할 값(ID, 주소, 명령)을 고정폭 글자와 복사 아이콘으로",
|
|
743
|
+
"use": "조직 ID, 서비스 엔드포인트처럼 읽고 복사하는 값. ID 는 size id(12). 아이콘은 값 끝 글자와 붙어 혼자 꺾이지 않는다. 단추가 줄 높이를 키우지 않아 키-값 줄에서 옆 값과 높이가 같다",
|
|
744
|
+
"avoid": "여러 줄 코드 예시, 값 없이 단추만 필요한 자리",
|
|
745
|
+
"instead": [
|
|
746
|
+
"CodeBlock",
|
|
747
|
+
"CopyButton"
|
|
748
|
+
],
|
|
749
|
+
"import": "@yanolja-next/design-core"
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
"name": "MachineText",
|
|
753
|
+
"layer": "core",
|
|
754
|
+
"intent": "기계가 만든 글자(키 앞자리, 오퍼레이션 ID, 스코프 이름)를 고정폭 12 로",
|
|
755
|
+
"use": "표 칸, 체크 상자 줄, 글 안에 놓이는 복사하지 않는 기계 값. 색은 둘레 글을 따른다. 띄어쓰기 없는 긴 이름(MCP 도구 이름, 경로)이 칸을 밀면 wrap 으로 아무 데서나 꺾는다",
|
|
756
|
+
"avoid": "복사할 ID 와 주소, 여러 줄 코드, 프로젝트 이름과 서비스 이름 같은 사람이 지은 이름",
|
|
757
|
+
"instead": [
|
|
758
|
+
"CopyText",
|
|
759
|
+
"CodeBlock"
|
|
760
|
+
],
|
|
761
|
+
"import": "@yanolja-next/design-core"
|
|
762
|
+
},
|
|
763
|
+
{
|
|
764
|
+
"name": "NameText",
|
|
765
|
+
"layer": "core",
|
|
766
|
+
"intent": "사람이 지은 이름(프로젝트, 팀)을 짧은 하이픈 낱말 중간에서 꺾지 않는다",
|
|
767
|
+
"use": "표 이름 칸처럼 이름이 두 줄로 꺾일 수 있는 자리. \"test (Y-NEXT)\" 가 \"(Y-\" / \"NEXT)\" 로 읽히지 않게 16 글자까지의 하이픈 낱말은 통째로 다음 줄로",
|
|
768
|
+
"avoid": "기계가 만든 값, 주소, 한 줄로 자르는 칸",
|
|
769
|
+
"instead": [
|
|
770
|
+
"MachineText",
|
|
771
|
+
"UrlText",
|
|
772
|
+
"Table"
|
|
773
|
+
],
|
|
774
|
+
"import": "@yanolja-next/design-core"
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"name": "UrlText",
|
|
778
|
+
"layer": "core",
|
|
779
|
+
"intent": "좁은 칸의 긴 주소를 마디(/) 앞에서만 꺾는다",
|
|
780
|
+
"use": "정보 칸 엔드포인트, 레일의 MCP 주소처럼 다 보여야 하는 주소. 스킴과 호스트는 한 덩어리, 끝 복사 단추는 tail 로 마지막 마디와 묶는다. 주소가 아닌 글 끝 아이콘(새 탭 ↗, 경로 뒤 복사)이 혼자 다음 줄로 넘어가지 않게 하려면 TailText",
|
|
781
|
+
"avoid": "한 줄로 잘라 툴팁으로 보이는 표 칸 값(Table 의 TableClip), 여러 줄 코드, 기계 값 조각",
|
|
782
|
+
"parts": {
|
|
783
|
+
"TailText": "글 끝 아이콘이 혼자 다음 줄로 넘어가지 않게 묶는다"
|
|
784
|
+
},
|
|
785
|
+
"instead": [
|
|
786
|
+
"Table",
|
|
787
|
+
"CodeBlock",
|
|
788
|
+
"MachineText"
|
|
789
|
+
],
|
|
790
|
+
"import": "@yanolja-next/design-core"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"name": "Meta",
|
|
794
|
+
"layer": "core",
|
|
795
|
+
"intent": "글 옆이나 아래 옅은 덧말 한 조각(12 Ink 3)",
|
|
796
|
+
"use": "이름 뒤 이메일, 표 칸 둘째 줄(단가, 증액 요청 대기), 실행을 못 하는 까닭, 필수 표시, 표 칸의 빈 값 \"-\", 덧말 문장(승인자 안내), 라벨 + 명령 한 줄(안의 code 는 잉크). tight 는 표 칸 둘째 줄처럼 줄 높이 14. 좁은 자리의 한 줄 요약(폰 조건 요약)은 clip 으로 한 줄에 자르고 전체는 title",
|
|
797
|
+
"avoid": "판 머리 아래 판 설명, 카드 맨 아래 단서, 판이 비었다는 한 줄, 컨트롤 라벨, 표 이름 칸의 둘째 줄, 상태 문장, 한 줄에서 대상 이름만 줄이고 종류와 동작은 남겨야 하는 줄(clip 은 줄 전체를 자른다)",
|
|
798
|
+
"instead": [
|
|
799
|
+
"Note",
|
|
800
|
+
"EmptyState",
|
|
801
|
+
"Field",
|
|
802
|
+
"Table",
|
|
803
|
+
"StatusIndicator",
|
|
804
|
+
"ClipText"
|
|
805
|
+
],
|
|
806
|
+
"import": "@yanolja-next/design-core"
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
"name": "Lines",
|
|
810
|
+
"layer": "core",
|
|
811
|
+
"intent": "한 값을 이루는 짧은 줄 여럿을 한 줄에 하나씩 쌓는다",
|
|
812
|
+
"use": "키-값 값의 Owner 이름들, 표 칸의 값과 그 아래 덧말(tight 는 줄 사이 없이 이름 칸 높이, 숫자 칸 안에서는 줄마다 오른쪽 끝), Note 와 확인 창 안의 영향 줄. 줄마다 따로 읽히는 목록은 as=\"ul\"",
|
|
813
|
+
"avoid": "판 여럿을 쌓는 화면 본문, 판 안 덩어리 간격, 표 이름 칸의 둘째 줄, 낱말과 뜻의 짝, 이름을 쉼표로 잇는 한 줄",
|
|
814
|
+
"instead": [
|
|
815
|
+
"SectionStack",
|
|
816
|
+
"Container",
|
|
817
|
+
"Table",
|
|
818
|
+
"TermList",
|
|
819
|
+
"InlineList"
|
|
820
|
+
],
|
|
821
|
+
"import": "@yanolja-next/design-core"
|
|
822
|
+
},
|
|
823
|
+
{
|
|
824
|
+
"name": "InlineList",
|
|
825
|
+
"layer": "core",
|
|
826
|
+
"intent": "짧은 조각 여럿을 글 한 줄로 잇고 줄은 조각 사이에서만 바꾼다",
|
|
827
|
+
"use": "머리 메타의 Owner 이름(쉼표), 폰 이름 칸의 팀 / 가입 경로 / 프로젝트 수(separator \" / \"). 보조기기에는 항목 수가 있는 목록",
|
|
828
|
+
"avoid": "한 줄에 하나씩 쌓는 줄, 알약 여럿, 낱말과 뜻의 짝",
|
|
829
|
+
"instead": [
|
|
830
|
+
"Lines",
|
|
831
|
+
"Badge",
|
|
832
|
+
"TermList"
|
|
833
|
+
],
|
|
834
|
+
"import": "@yanolja-next/design-core"
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"name": "Prose",
|
|
838
|
+
"layer": "core",
|
|
839
|
+
"intent": "마크다운으로 쓴 문서를 읽는 글로",
|
|
840
|
+
"use": "서비스 문서, 안내 문서처럼 제목, 목록, 코드가 섞인 긴 글(그린 요소를 감싼다)",
|
|
841
|
+
"avoid": "판 머리 아래 한두 줄 설명, 여러 줄 코드만 있는 칸",
|
|
842
|
+
"instead": [
|
|
843
|
+
"Note",
|
|
844
|
+
"CodeBlock"
|
|
845
|
+
],
|
|
846
|
+
"import": "@yanolja-next/design-core"
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
"name": "PlainText",
|
|
850
|
+
"layer": "core",
|
|
851
|
+
"intent": "사람이 쓴 원문 글을 원문 줄바꿈 그대로",
|
|
852
|
+
"use": "서비스 정의의 설명(매개변수, 스키마 필드)처럼 줄바꿈으로 목록을 적은 짧은 원문. 긴 주소는 칸 안에서 꺾는다. 글자 크기와 색은 놓인 자리를 따른다",
|
|
853
|
+
"avoid": "마크다운으로 쓴 문서, 기계가 만든 값, 대개 짧지만 가끔 긴 글",
|
|
854
|
+
"instead": [
|
|
855
|
+
"Prose",
|
|
856
|
+
"MachineText",
|
|
857
|
+
"MoreText"
|
|
858
|
+
],
|
|
859
|
+
"import": "@yanolja-next/design-core"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"name": "ClipText",
|
|
863
|
+
"layer": "core",
|
|
864
|
+
"intent": "한 줄 글에서 한 조각(대상 이름)만 말줄임하고 앞뒤 글은 남긴다",
|
|
865
|
+
"use": "레일 최근 활동 줄(\"API 키 {이름} 생성\")처럼 좁은 자리에서 종류와 동작은 늘 보여야 하는 한 줄. 전체는 툴팁(누가 했는지 덧붙일 때 title)",
|
|
866
|
+
"avoid": "표 칸 안 긴 값, 다 보여야 하는 주소, 줄 수를 정해 펴는 긴 글, 덧말 한 줄 전체를 자르면 되는 요약",
|
|
867
|
+
"instead": [
|
|
868
|
+
"Table",
|
|
869
|
+
"UrlText",
|
|
870
|
+
"MoreText",
|
|
871
|
+
"Meta"
|
|
872
|
+
],
|
|
873
|
+
"import": "@yanolja-next/design-core"
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
"name": "MoreText",
|
|
877
|
+
"layer": "core",
|
|
878
|
+
"intent": "긴 글을 정한 줄 수(기본 2)까지 보이고 \"더 보기\"로 그 자리에서 편다",
|
|
879
|
+
"use": "필드 설명처럼 대개 짧지만 가끔 길어 줄마다 높이가 달라지는 글. 넘칠 때만 마지막 줄 끝이 흐려지고 단추가 선다. 글자 크기, 줄 높이, 색은 놓인 자리를 따른다",
|
|
880
|
+
"avoid": "줄 전체가 눌리는 카드나 표 줄의 요약(펴면 줄 높이가 흔들린다, 말줄임과 title), 대부분은 안 보고 넘어가는 덧붙임 덩어리, 마크다운 문서",
|
|
881
|
+
"instead": [
|
|
882
|
+
"LinkCard",
|
|
883
|
+
"Disclosure",
|
|
884
|
+
"Prose"
|
|
885
|
+
],
|
|
886
|
+
"import": "@yanolja-next/design-core"
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
"name": "CopyBox",
|
|
890
|
+
"layer": "core",
|
|
891
|
+
"intent": "값 하나를 회색 칸에 다 보이고 오른쪽 위에서 복사한다",
|
|
892
|
+
"use": "만든 뒤 한 번 보이는 키와 시크릿(P13), 연결 주소(MCP 주소, SCIM Base URL), DNS 레코드 값처럼 옮겨 적거나 붙여 넣는 긴 값. 받는 동안은 value 없이 자리만",
|
|
893
|
+
"avoid": "글 줄 안의 ID, 엔드포인트(값 끝에 아이콘), 여러 줄 코드 예시",
|
|
894
|
+
"rule": "P13",
|
|
895
|
+
"instead": [
|
|
896
|
+
"CopyText",
|
|
897
|
+
"CodeBlock"
|
|
898
|
+
],
|
|
899
|
+
"import": "@yanolja-next/design-core"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"name": "CopyButton",
|
|
903
|
+
"layer": "core",
|
|
904
|
+
"intent": "값 옆에서 복사하는 단추 하나",
|
|
905
|
+
"use": "값을 직접 그려야 해서 CopyText 로 못 담는 자리. 1.5초 \"복사됨\"",
|
|
906
|
+
"avoid": "보통의 ID, 주소 값(CopyText 가 글자와 단추를 같이 맞춘다), 코드 예시 블록",
|
|
907
|
+
"instead": [
|
|
908
|
+
"CopyText",
|
|
909
|
+
"CodeBlock"
|
|
910
|
+
],
|
|
911
|
+
"import": "@yanolja-next/design-core"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"name": "WithReason",
|
|
915
|
+
"layer": "core",
|
|
916
|
+
"intent": "못 하는 동작을 막고 이유를 보인다",
|
|
917
|
+
"use": "권한이 없거나 상태 때문에 못 하는 단추, 탭, 고르기. 숨기지 않는다",
|
|
918
|
+
"avoid": "볼 권한이 없는 데이터(그리지 않는다), 꺼진 기능을 켜면 생길 화면 덩어리",
|
|
919
|
+
"instead": [
|
|
920
|
+
"LockedPreview"
|
|
921
|
+
],
|
|
922
|
+
"import": "@yanolja-next/design-core"
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
"name": "LockedPreview",
|
|
926
|
+
"layer": "core",
|
|
927
|
+
"intent": "꺼진 기능을 켜면 생길 화면을 실제 라벨로 흐리게 잠가 미리 보인다",
|
|
928
|
+
"use": "꺼진 기능 화면 아래 개요 지표와 표 머리. 누르거나 고르거나 초점을 줄 수 없고 보조기기는 건너뛴다. 왜 잠겼는지와 켜는 길은 바로 위에 글로 둔다. 안의 표는 TableEmpty 한 줄로 언제 채워지는지 말하고, 칸 폭은 고르게 나뉜다",
|
|
929
|
+
"avoid": "못 하는 단추 하나(이유를 보인다), 받는 동안의 자리(뼈대), 볼 권한이 없는 데이터(그리지 않는다)",
|
|
930
|
+
"instead": [
|
|
931
|
+
"WithReason",
|
|
932
|
+
"SkeletonRows"
|
|
933
|
+
],
|
|
934
|
+
"import": "@yanolja-next/design-core"
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
"name": "Form",
|
|
938
|
+
"layer": "core",
|
|
939
|
+
"intent": "설정 판 안 입력 칸과 저장 줄을 한 폼으로 쌓는다(입력 폭 560 까지)",
|
|
940
|
+
"use": "조직 설정 일반, 조직 한도처럼 오래 두고 고치는 설정 판의 폼. 칸은 Field, 저장 줄은 FormActions",
|
|
941
|
+
"avoid": "창 안 입력(창 폭을 다 쓴다), 표 위 거르기 줄, 판 여럿을 쌓는 화면 본문",
|
|
942
|
+
"rule": "P12",
|
|
943
|
+
"instead": [
|
|
944
|
+
"Modal",
|
|
945
|
+
"CollectionFilter",
|
|
946
|
+
"SectionStack"
|
|
947
|
+
],
|
|
948
|
+
"import": "@yanolja-next/design-core"
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"name": "FormActions",
|
|
952
|
+
"layer": "core",
|
|
953
|
+
"intent": "폼 아래 저장 단추와 저장한 결과 한 줄",
|
|
954
|
+
"use": "설정 화면의 저장 줄(단추는 폼 왼쪽 끝 하나), 판 안 입력 칸 아래 저장. 결과는 status, 실패는 children",
|
|
955
|
+
"avoid": "창 발의 단추(창이 정한다), 표 줄 동작",
|
|
956
|
+
"rule": "P12",
|
|
957
|
+
"instead": [
|
|
958
|
+
"Modal",
|
|
959
|
+
"Table"
|
|
960
|
+
],
|
|
961
|
+
"import": "@yanolja-next/design-core"
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
"name": "FieldGroup",
|
|
965
|
+
"layer": "core",
|
|
966
|
+
"intent": "고르기 여럿을 한 이름으로 묶는다",
|
|
967
|
+
"use": "체크 상자나 라디오 묶음(허용 스코프, 유형), 같은 입력 줄을 늘려 가는 묶음(구독 창 무료 제공량), 폰 조건 시트처럼 이름 아래 고르기 컨트롤(Segmented, Select, 필터 칩 줄)을 두는 자리. 고르기는 제 폭, 글 칸이 든 줄은 묶음 폭을 채운다. 제목 오른쪽에 옅은 덧말(선택 수)",
|
|
968
|
+
"avoid": "컨트롤 하나의 라벨, 판 제목",
|
|
969
|
+
"instead": [
|
|
970
|
+
"Field",
|
|
971
|
+
"Card"
|
|
972
|
+
],
|
|
973
|
+
"import": "@yanolja-next/design-core"
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
"name": "Field",
|
|
977
|
+
"layer": "core",
|
|
978
|
+
"intent": "입력 칸의 라벨, 도움말, 오류",
|
|
979
|
+
"use": "Input, Textarea, Select, Combobox 를 감싼다. 도움말 줄 오른쪽 끝에 관련 동작 하나(helpAction, 값을 만드는 곳으로 가는 링크). 칸 바로 옆 동작 하나(action, 제안 값 넣기). 칸 여럿인 한 줄의 오류는 그 줄 아래 FieldError",
|
|
980
|
+
"avoid": "체크 상자와 라디오 한 줄(제 라벨을 가진다)",
|
|
981
|
+
"parts": {
|
|
982
|
+
"FieldError": "입력 오류 한 줄"
|
|
983
|
+
},
|
|
984
|
+
"instead": [
|
|
985
|
+
"Checkbox",
|
|
986
|
+
"RadioGroup"
|
|
987
|
+
],
|
|
988
|
+
"import": "@yanolja-next/design-core"
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"name": "Input",
|
|
992
|
+
"layer": "core",
|
|
993
|
+
"intent": "한 줄 글 입력",
|
|
994
|
+
"use": "이름, 주소, 금액",
|
|
995
|
+
"avoid": "여러 줄 글, 정해진 값 중 고르기",
|
|
996
|
+
"instead": [
|
|
997
|
+
"Textarea",
|
|
998
|
+
"Select",
|
|
999
|
+
"Combobox"
|
|
1000
|
+
],
|
|
1001
|
+
"import": "@yanolja-next/design-core"
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
"name": "CodeInput",
|
|
1005
|
+
"layer": "core",
|
|
1006
|
+
"intent": "메일이나 문자로 받은 한 번 쓰는 숫자 코드를 자리마다 상자에 친다",
|
|
1007
|
+
"use": "로그인 코드 확인, 2단계 인증 코드. 입력은 한 칸이라 붙여넣기와 자동 채움(one-time-code)을 그대로 받는다. 서버가 거절한 코드는 invalid(상자마다 진홍). 도움말과 오류 한 줄은 칸 아래에 Meta, FailLine 으로",
|
|
1008
|
+
"avoid": "글자가 섞인 키나 긴 토큰, 자리 수가 정해지지 않은 값",
|
|
1009
|
+
"instead": [
|
|
1010
|
+
"Input"
|
|
1011
|
+
],
|
|
1012
|
+
"import": "@yanolja-next/design-core"
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
"name": "Textarea",
|
|
1016
|
+
"layer": "core",
|
|
1017
|
+
"intent": "여러 줄 글 입력",
|
|
1018
|
+
"use": "설명, 요청 사유. 고쳐 보내는 JSON 본문은 wrap=\"off\" 로 꺾지 않고 민다(끝 흐림과 늘 보이는 스크롤바는 코드 블록과 같다)",
|
|
1019
|
+
"avoid": "한 줄 값, 읽고 복사만 하는 코드",
|
|
1020
|
+
"instead": [
|
|
1021
|
+
"Input",
|
|
1022
|
+
"CodeBlock"
|
|
1023
|
+
],
|
|
1024
|
+
"import": "@yanolja-next/design-core"
|
|
1025
|
+
},
|
|
1026
|
+
{
|
|
1027
|
+
"name": "Select",
|
|
1028
|
+
"layer": "core",
|
|
1029
|
+
"intent": "정해진 값 몇 개 중 하나를 고른다",
|
|
1030
|
+
"use": "역할, 서비스, 기간처럼 목록이 짧고 찾을 필요가 없을 때. 닫힌 칸이 목록 항목과 다른 글을 보이면 valueLabel(Playground 오퍼레이션 고르기: 칸은 전체 주소, 목록은 경로와 이름). 화면 머리 단계 줄(Playground 주소 줄)은 Button 과 같이 size head(폰 36)",
|
|
1031
|
+
"avoid": "사람이나 그룹처럼 길어서 찾아야 하는 목록, 둘셋 중 늘 보이게 고르기",
|
|
1032
|
+
"instead": [
|
|
1033
|
+
"Combobox",
|
|
1034
|
+
"Segmented"
|
|
1035
|
+
],
|
|
1036
|
+
"import": "@yanolja-next/design-core"
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
"name": "SelectText",
|
|
1040
|
+
"layer": "core",
|
|
1041
|
+
"intent": "고르기(Select sm)가 올 자리에 바꿀 수 없는 값을 글로",
|
|
1042
|
+
"use": "표 줄의 역할 칸에서 본인 줄, 바꿀 권한이 없는 줄. 알약 글과 시작선, 크기, 굵기가 같다",
|
|
1043
|
+
"avoid": "바꿀 수 있는 값, 고르기가 없는 칸의 보통 글",
|
|
1044
|
+
"instead": [
|
|
1045
|
+
"Select",
|
|
1046
|
+
"Table"
|
|
1047
|
+
],
|
|
1048
|
+
"import": "@yanolja-next/design-core"
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
"name": "Combobox",
|
|
1052
|
+
"layer": "core",
|
|
1053
|
+
"intent": "긴 목록에서 쳐서 찾아 고른다",
|
|
1054
|
+
"use": "멤버 추가의 사람, 디렉터리 그룹. 칠 때마다 창이 오르내리면 안 되는 자리(멤버 추가 창)는 steady 로 펼친 목록 높이를 고정. 수백 개인 목록은 rank 로 맞는 것을 위로(이름이 친 글로 시작하면 먼저), limit 로 보이는 줄 수를 줄이고 나머지 수를 한 줄로",
|
|
1055
|
+
"avoid": "짧은 목록",
|
|
1056
|
+
"instead": [
|
|
1057
|
+
"Select"
|
|
1058
|
+
],
|
|
1059
|
+
"import": "@yanolja-next/design-core"
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
"name": "Segmented",
|
|
1063
|
+
"layer": "core",
|
|
1064
|
+
"intent": "둘에서 다섯 값 중 하나를 늘 보이게 고른다",
|
|
1065
|
+
"use": "기간(이번 달, 지난달), 코드 예시 언어. 창 맨 위 대상 고르기(멤버, 팀)와 폰 기간 줄은 fill 로 폭을 채우고 칸을 고르게 나눈다",
|
|
1066
|
+
"avoid": "다른 보기로 옮겨 가기, 값이 많을 때",
|
|
1067
|
+
"rule": "P18",
|
|
1068
|
+
"instead": [
|
|
1069
|
+
"Tabs",
|
|
1070
|
+
"Select"
|
|
1071
|
+
],
|
|
1072
|
+
"import": "@yanolja-next/design-core"
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
"name": "Checkbox",
|
|
1076
|
+
"layer": "core",
|
|
1077
|
+
"intent": "켜고 끄는 선택 하나, 또는 여러 개 고르기",
|
|
1078
|
+
"use": "폼 안의 동의, 여러 항목 고르기. 저장을 눌러야 반영된다",
|
|
1079
|
+
"avoid": "누르는 즉시 반영되는 설정",
|
|
1080
|
+
"instead": [
|
|
1081
|
+
"Switch"
|
|
1082
|
+
],
|
|
1083
|
+
"import": "@yanolja-next/design-core"
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
"name": "RadioGroup",
|
|
1087
|
+
"layer": "core",
|
|
1088
|
+
"intent": "설명이 붙은 몇 개 중 하나를 고른다",
|
|
1089
|
+
"use": "선택지마다 한 줄 설명이 필요한 폼",
|
|
1090
|
+
"avoid": "설명 없는 짧은 값",
|
|
1091
|
+
"parts": {
|
|
1092
|
+
"Radio": "라디오 하나"
|
|
1093
|
+
},
|
|
1094
|
+
"instead": [
|
|
1095
|
+
"Segmented",
|
|
1096
|
+
"Select"
|
|
1097
|
+
],
|
|
1098
|
+
"import": "@yanolja-next/design-core"
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
"name": "Switch",
|
|
1102
|
+
"layer": "core",
|
|
1103
|
+
"intent": "누르는 즉시 켜지고 꺼지는 설정",
|
|
1104
|
+
"use": "알림 받기처럼 저장 단추 없이 바로 반영되는 것",
|
|
1105
|
+
"avoid": "폼 안에서 저장과 함께 반영되는 선택",
|
|
1106
|
+
"instead": [
|
|
1107
|
+
"Checkbox"
|
|
1108
|
+
],
|
|
1109
|
+
"import": "@yanolja-next/design-core"
|
|
1110
|
+
},
|
|
1111
|
+
{
|
|
1112
|
+
"name": "Modal",
|
|
1113
|
+
"layer": "core",
|
|
1114
|
+
"intent": "입력 몇 개로 만들거나 고친다",
|
|
1115
|
+
"use": "만들기, 편집(입력 1~4 묶음, P12), 만든 뒤 한 번 보여 주는 비밀 값(P13). 고를 것이 없는 창(팀 연결의 팀 없음)은 ModalBody 안에 EmptyState 를 그대로 두고, 위아래 여백은 몸통이 뺀다. 창 발 왼쪽 끝 창 밖으로 가는 링크 하나(전체 안내)는 ModalFooter start",
|
|
1116
|
+
"avoid": "삭제와 연결 해제 확인, 읽기만 하는 긴 상세",
|
|
1117
|
+
"parts": {
|
|
1118
|
+
"ModalBody": "창 몸통. 길면 몸통만 넘긴다",
|
|
1119
|
+
"ModalFooter": "창 발: 단추, 막힌 까닭",
|
|
1120
|
+
"ModalClose": "창을 닫는 단추(취소)"
|
|
1121
|
+
},
|
|
1122
|
+
"rule": "P12",
|
|
1123
|
+
"instead": [
|
|
1124
|
+
"ConfirmModal",
|
|
1125
|
+
"Sheet"
|
|
1126
|
+
],
|
|
1127
|
+
"import": "@yanolja-next/design-core"
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
"name": "ConfirmModal",
|
|
1131
|
+
"layer": "core",
|
|
1132
|
+
"intent": "되돌리기 어려운 동작을 확인한다",
|
|
1133
|
+
"use": "삭제, 연결 해제. 세기는 일반 확인과 이름 입력 확인 둘",
|
|
1134
|
+
"avoid": "되돌릴 수 있는 동작(바로 하고 토스트)",
|
|
1135
|
+
"parts": {
|
|
1136
|
+
"ConfirmField": "대상 이름을 그대로 쳐야 결정 단추가 켜지는 칸"
|
|
1137
|
+
},
|
|
1138
|
+
"rule": "P14",
|
|
1139
|
+
"instead": [
|
|
1140
|
+
"ToastProvider"
|
|
1141
|
+
],
|
|
1142
|
+
"import": "@yanolja-next/design-core"
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
"name": "Sheet",
|
|
1146
|
+
"layer": "core",
|
|
1147
|
+
"intent": "화면을 떠나지 않고 한 항목의 상세를 오른쪽에서 본다",
|
|
1148
|
+
"use": "청구서 줄, 긴 상세(SheetSection 덩이). 폰에서 조건 고르기 여럿을 담는 바닥 시트(사용량 탐색 조건)는 SheetBody stack 으로 몸통이 여백과 사이 간격을 준다",
|
|
1149
|
+
"avoid": "입력 몇 개짜리 만들기와 편집",
|
|
1150
|
+
"parts": {
|
|
1151
|
+
"SheetBody": "시트 몸통. 남는 높이에서 스크롤",
|
|
1152
|
+
"SheetSection": "시트 안 근거 한 덩이(제목과 메타)",
|
|
1153
|
+
"SheetFooter": "시트 발: 결정 단추와 누가 하는지",
|
|
1154
|
+
"SheetClose": "시트를 닫는 단추"
|
|
1155
|
+
},
|
|
1156
|
+
"instead": [
|
|
1157
|
+
"Modal"
|
|
1158
|
+
],
|
|
1159
|
+
"import": "@yanolja-next/design-core"
|
|
1160
|
+
},
|
|
1161
|
+
{
|
|
1162
|
+
"name": "Popover",
|
|
1163
|
+
"layer": "core",
|
|
1164
|
+
"intent": "누른 자리 아래 짧은 설명",
|
|
1165
|
+
"use": "용어나 계산 방법 설명 창(340 폭)",
|
|
1166
|
+
"avoid": "입력 폼, 메뉴",
|
|
1167
|
+
"parts": {
|
|
1168
|
+
"PopoverTitle": "팝오버 안 옅은 제목 라벨",
|
|
1169
|
+
"PopoverSection": "팝오버 안 선으로 나눈 덩이",
|
|
1170
|
+
"PopoverActions": "팝오버 아래 행동 줄",
|
|
1171
|
+
"PopoverClose": "팝오버를 닫는 단추"
|
|
1172
|
+
},
|
|
1173
|
+
"instead": [
|
|
1174
|
+
"Modal",
|
|
1175
|
+
"Menu"
|
|
1176
|
+
],
|
|
1177
|
+
"import": "@yanolja-next/design-core"
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
"name": "Menu",
|
|
1181
|
+
"layer": "core",
|
|
1182
|
+
"intent": "동작 몇 개 중 하나를 고르는 메뉴",
|
|
1183
|
+
"use": "행 끝 더보기, 계정 메뉴. 표 줄 끝 동작은 RowMenu 하나(TableRowEnd reveal=\"always\" 안)",
|
|
1184
|
+
"avoid": "값 고르기, 설명",
|
|
1185
|
+
"parts": {
|
|
1186
|
+
"MenuItem": "메뉴 항목 하나. 못 쓰면 이유를 둘째 줄에",
|
|
1187
|
+
"MenuSeparator": "메뉴 안 구분선",
|
|
1188
|
+
"RowMenu": "표 줄 끝 더보기(⋯). 줄 이름으로 도구(\"{name} 동작\")와 메뉴(\"{name} 메뉴\")의 이름을 짓는다"
|
|
1189
|
+
},
|
|
1190
|
+
"instead": [
|
|
1191
|
+
"Select",
|
|
1192
|
+
"Popover"
|
|
1193
|
+
],
|
|
1194
|
+
"import": "@yanolja-next/design-core"
|
|
1195
|
+
},
|
|
1196
|
+
{
|
|
1197
|
+
"name": "Tooltip",
|
|
1198
|
+
"layer": "core",
|
|
1199
|
+
"intent": "아이콘이나 줄인 글의 이름을 올려 보인다",
|
|
1200
|
+
"use": "아이콘 단추의 이름, 말줄임된 값",
|
|
1201
|
+
"avoid": "꼭 읽어야 하는 정보, 못 하는 이유(WithReason 이 보인다)",
|
|
1202
|
+
"parts": {
|
|
1203
|
+
"TooltipGroup": "이웃한 툴팁 무리. 옮길 때 기다림 없이 바뀐다"
|
|
1204
|
+
},
|
|
1205
|
+
"instead": [
|
|
1206
|
+
"Note",
|
|
1207
|
+
"WithReason"
|
|
1208
|
+
],
|
|
1209
|
+
"import": "@yanolja-next/design-core"
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
"name": "TipText",
|
|
1213
|
+
"layer": "core",
|
|
1214
|
+
"intent": "짧은 글에 덧말 한 줄을 숨긴다(점선 밑줄, 올리거나 초점이면 툴팁)",
|
|
1215
|
+
"use": "집계 시각처럼 무엇으로 센 값인지 덧붙일 글. 키보드로 열리고 보조기기는 덧말까지 읽는다",
|
|
1216
|
+
"avoid": "아이콘 단추의 이름, 꼭 읽어야 하는 정보, 열 머리나 제목 뒤 (i) 설명",
|
|
1217
|
+
"instead": [
|
|
1218
|
+
"Tooltip",
|
|
1219
|
+
"Note",
|
|
1220
|
+
"InfoTip"
|
|
1221
|
+
],
|
|
1222
|
+
"import": "@yanolja-next/design-core"
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
"name": "InfoTip",
|
|
1226
|
+
"layer": "core",
|
|
1227
|
+
"intent": "글(열 머리, 제목, 수) 뒤 (i) 단추로 그 글의 설명 한 줄을 연다",
|
|
1228
|
+
"use": "팀 역할 열 머리의 역할 뜻, \"Owner 2명\"처럼 수만 보이는 글의 이름들. 올리거나 초점이면 열리고, 보조기기는 설명까지 읽는다",
|
|
1229
|
+
"avoid": "짧은 글에 덧말을 점선 밑줄로 숨길 때, 아이콘 단추의 이름, 꼭 읽어야 하는 정보, 용어나 계산 방법의 긴 설명",
|
|
1230
|
+
"instead": [
|
|
1231
|
+
"TipText",
|
|
1232
|
+
"Tooltip",
|
|
1233
|
+
"Note",
|
|
1234
|
+
"Popover"
|
|
1235
|
+
],
|
|
1236
|
+
"import": "@yanolja-next/design-core"
|
|
1237
|
+
},
|
|
1238
|
+
{
|
|
1239
|
+
"name": "ToastProvider",
|
|
1240
|
+
"layer": "core",
|
|
1241
|
+
"intent": "방금 한 동작의 결과를 알린다",
|
|
1242
|
+
"use": "만들기, 삭제, 역할 변경 뒤 한 줄(P15). 앱 뿌리에 한 번 두고 훅(useToast)으로 띄운다. 그리기 밖(데이터 훅의 요청 끝)에서는 showToast",
|
|
1243
|
+
"avoid": "저장 실패처럼 그 자리에서 고쳐야 하는 오류",
|
|
1244
|
+
"rule": "P15",
|
|
1245
|
+
"instead": [
|
|
1246
|
+
"FailState"
|
|
1247
|
+
],
|
|
1248
|
+
"import": "@yanolja-next/design-core"
|
|
1249
|
+
},
|
|
1250
|
+
{
|
|
1251
|
+
"name": "TimeSeriesChart",
|
|
1252
|
+
"layer": "core",
|
|
1253
|
+
"intent": "여러 계열의 시간에 따른 변화",
|
|
1254
|
+
"use": "사용량 탐색(서비스별, 오퍼레이션별)",
|
|
1255
|
+
"avoid": "하루 막대 한 계열, 숫자 곁 작은 추이",
|
|
1256
|
+
"parts": {
|
|
1257
|
+
"ChartLegend": "차트 계열 범례. 주면 계열을 끄고 켜는 단추"
|
|
1258
|
+
},
|
|
1259
|
+
"rule": "P10",
|
|
1260
|
+
"instead": [
|
|
1261
|
+
"BarChart",
|
|
1262
|
+
"Sparkline"
|
|
1263
|
+
],
|
|
1264
|
+
"import": "@yanolja-next/design-core"
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"name": "ChartHead",
|
|
1268
|
+
"layer": "core",
|
|
1269
|
+
"intent": "판 안 차트 위 한 줄: 차트 이름(13 Ink 3)과 오른쪽 범례",
|
|
1270
|
+
"use": "판 안에 차트가 덩어리로 놓일 때(주인공 판의 일별 차트, 탐색 화면의 추이 차트). 받는 동안은 제목 자리에 뼈대(as div). 범례가 길면 다음 줄로 내려간다. 판이 이미 차트를 말하는 자리는 title 없이 범례만 오른쪽 끝에",
|
|
1271
|
+
"avoid": "판 머리(판 제목), 판 안 글 덩어리의 이름, 막대 하나의 비중 라벨",
|
|
1272
|
+
"instead": [
|
|
1273
|
+
"Container",
|
|
1274
|
+
"SubHead"
|
|
1275
|
+
],
|
|
1276
|
+
"import": "@yanolja-next/design-core"
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
"name": "BarChart",
|
|
1280
|
+
"layer": "core",
|
|
1281
|
+
"intent": "하루 단위 막대(쌓기, 진행 중인 오늘, 예상)",
|
|
1282
|
+
"use": "일별 값(쌓은 항목별 몫). 계열이 둘 이상이면 ChartLegend 를 같이 둔다",
|
|
1283
|
+
"avoid": "누적 값과 기준선",
|
|
1284
|
+
"instead": [
|
|
1285
|
+
"LineChart"
|
|
1286
|
+
],
|
|
1287
|
+
"import": "@yanolja-next/design-core"
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
"name": "LineChart",
|
|
1291
|
+
"layer": "core",
|
|
1292
|
+
"intent": "누적 선과 기준선(한도)",
|
|
1293
|
+
"use": "기간 안 누적 값, 한도 도달 예상",
|
|
1294
|
+
"avoid": "하루 단위 값",
|
|
1295
|
+
"instead": [
|
|
1296
|
+
"BarChart"
|
|
1297
|
+
],
|
|
1298
|
+
"import": "@yanolja-next/design-core"
|
|
1299
|
+
},
|
|
1300
|
+
{
|
|
1301
|
+
"name": "Sparkline",
|
|
1302
|
+
"layer": "core",
|
|
1303
|
+
"intent": "숫자 곁 작은 추이",
|
|
1304
|
+
"use": "대시보드 숫자 옆, 표의 추이 칸. 축 없음",
|
|
1305
|
+
"avoid": "값을 읽어야 하는 차트",
|
|
1306
|
+
"instead": [
|
|
1307
|
+
"TimeSeriesChart"
|
|
1308
|
+
],
|
|
1309
|
+
"import": "@yanolja-next/design-core"
|
|
1310
|
+
},
|
|
1311
|
+
{
|
|
1312
|
+
"name": "ChartSkeleton",
|
|
1313
|
+
"layer": "core",
|
|
1314
|
+
"intent": "차트를 받는 동안의 뼈대",
|
|
1315
|
+
"use": "모든 차트 자리",
|
|
1316
|
+
"avoid": "표, 판",
|
|
1317
|
+
"instead": [
|
|
1318
|
+
"SkeletonRows"
|
|
1319
|
+
],
|
|
1320
|
+
"import": "@yanolja-next/design-core"
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"name": "CodeBlock",
|
|
1324
|
+
"layer": "core",
|
|
1325
|
+
"intent": "복사해 쓰는 코드 예시",
|
|
1326
|
+
"use": "호출 예시, 설정 조각. 비밀 값은 앞만 보이고 복사는 온전하게. 받는 동안은 loading 에 받은 뒤와 같은 줄 수의 자리 코드(높이를 잡고 글자는 가린다). 좁은 칸(요약 레일)은 wrap=\"always\" 로 칸 안에서 감싼다",
|
|
1327
|
+
"avoid": "값 하나(ID, 키)",
|
|
1328
|
+
"instead": [
|
|
1329
|
+
"CopyText"
|
|
1330
|
+
],
|
|
1331
|
+
"import": "@yanolja-next/design-core"
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
"name": "Icon",
|
|
1335
|
+
"layer": "core",
|
|
1336
|
+
"intent": "선 1.5 아이콘",
|
|
1337
|
+
"use": "단추, 상태, 메뉴 안. 글과 함께",
|
|
1338
|
+
"avoid": "로고 마크(글자 NEXT Hub 만 쓴다), 꾸밈 그림",
|
|
1339
|
+
"parts": {
|
|
1340
|
+
"SwapIcon": "상태에 따라 바뀌는 아이콘(복사 → 체크)"
|
|
1341
|
+
},
|
|
1342
|
+
"import": "@yanolja-next/design-core"
|
|
1343
|
+
}
|
|
1344
|
+
]
|
|
1345
|
+
}
|