@simplysm/angular 14.1.20 → 14.2.1
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/dist/controls/button/sd-additional-button.js +2 -2
- package/dist/controls/button/sd-anchor.d.ts.map +1 -1
- package/dist/controls/button/sd-anchor.js +3 -3
- package/dist/controls/button/sd-button.d.ts.map +1 -1
- package/dist/controls/button/sd-button.js +3 -3
- package/dist/controls/button/sd-modal-select-button.d.ts.map +1 -1
- package/dist/controls/button/sd-modal-select-button.js +2 -2
- package/dist/controls/checkbox/sd-checkbox.d.ts.map +1 -1
- package/dist/controls/checkbox/sd-checkbox.js +3 -3
- package/dist/controls/checkbox/sd-switch.d.ts.map +1 -1
- package/dist/controls/checkbox/sd-switch.js +3 -3
- package/dist/controls/collapse/sd-collapse-icon.d.ts +1 -1
- package/dist/controls/collapse/sd-collapse-icon.d.ts.map +1 -1
- package/dist/controls/collapse/sd-collapse-icon.js +2 -2
- package/dist/controls/collapse/sd-collapse.d.ts +1 -1
- package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
- package/dist/controls/collapse/sd-collapse.js +2 -2
- package/dist/controls/dropdown/sd-dropdown-popup.d.ts.map +1 -1
- package/dist/controls/dropdown/sd-dropdown-popup.js +2 -2
- package/dist/controls/dropdown/sd-dropdown.js +1 -1
- package/dist/controls/gap/sd-gap.d.ts.map +1 -1
- package/dist/controls/gap/sd-gap.js +5 -7
- package/dist/controls/input/sd-date-range-picker.js +2 -2
- package/dist/controls/input/sd-numpad.d.ts.map +1 -1
- package/dist/controls/input/sd-numpad.js +7 -15
- package/dist/controls/input/sd-range.js +2 -2
- package/dist/controls/input/sd-textarea.js +4 -4
- package/dist/controls/input/sd-textfield.d.ts.map +1 -1
- package/dist/controls/input/sd-textfield.js +10 -10
- package/dist/controls/list/sd-list-item.js +43 -43
- package/dist/controls/list/sd-list.js +2 -2
- package/dist/controls/pagination/sd-pagination.d.ts.map +1 -1
- package/dist/controls/pagination/sd-pagination.js +7 -5
- package/dist/controls/select/sd-select-button.d.ts.map +1 -1
- package/dist/controls/select/sd-select-button.js +4 -4
- package/dist/controls/select/sd-select-item.d.ts.map +1 -1
- package/dist/controls/select/sd-select-item.js +3 -3
- package/dist/controls/select/sd-select.d.ts.map +1 -1
- package/dist/controls/select/sd-select.js +10 -19
- package/dist/controls/tab/sd-tab-item.js +2 -2
- package/dist/controls/tab/sd-tab.js +2 -2
- package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
- package/dist/core/busy/sd-busy-container.js +3 -3
- package/dist/core/modal/sd-modal.d.ts.map +1 -1
- package/dist/core/modal/sd-modal.js +3 -3
- package/dist/core/provideSdAngular.d.ts.map +1 -1
- package/dist/core/provideSdAngular.js +31 -10
- package/dist/core/ripple/setupRipple.js +2 -2
- package/dist/core/setupBgTheme.d.ts +0 -1
- package/dist/core/setupBgTheme.d.ts.map +1 -1
- package/dist/core/setupBgTheme.js +3 -4
- package/dist/core/show-effect/setupRevealOnShow.js +1 -1
- package/dist/core/toast/sd-toast-container.js +2 -2
- package/dist/core/toast/sd-toast.d.ts.map +1 -1
- package/dist/core/toast/sd-toast.js +3 -3
- package/dist/core/validation/setupInvalid.js +5 -5
- package/dist/data/crud/sd-base-container.d.ts.map +1 -1
- package/dist/data/crud/sd-base-container.js +50 -52
- package/dist/data/kanban/sd-kanban-board.js +2 -2
- package/dist/data/kanban/sd-kanban-lane.d.ts.map +1 -1
- package/dist/data/kanban/sd-kanban-lane.js +4 -4
- package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
- package/dist/data/kanban/sd-kanban.js +4 -4
- package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
- package/dist/data/permission-table/sd-permission-table.js +5 -17
- package/dist/data/shared-data/sd-shared-data-select-list.d.ts.map +1 -1
- package/dist/data/shared-data/sd-shared-data-select-list.js +5 -19
- package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
- package/dist/data/shared-data/sd-shared-data-select.js +8 -15
- package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
- package/dist/data/sheet/sd-sheet-config.modal.js +7 -9
- package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
- package/dist/data/sheet/sd-sheet.js +10 -12
- package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
- package/dist/data/sheet/useSheetCellStyling.js +1 -1
- package/dist/data/state-preset/sd-state-preset.js +5 -5
- package/dist/features/editor/sd-markdown-editor.d.ts.map +1 -1
- package/dist/features/editor/sd-markdown-editor.js +85 -34
- package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
- package/dist/features/editor/sd-tiptap-editor.js +192 -61
- package/dist/features/theme/sd-theme-provider.d.ts +18 -1
- package/dist/features/theme/sd-theme-provider.d.ts.map +1 -1
- package/dist/features/theme/sd-theme-provider.js +21 -4
- package/dist/features/theme/sd-theme-selector.d.ts.map +1 -1
- package/dist/features/theme/sd-theme-selector.js +50 -9
- package/dist/features/theme/wcag-contrast.d.ts +9 -0
- package/dist/features/theme/wcag-contrast.d.ts.map +1 -0
- package/dist/features/theme/wcag-contrast.js +83 -0
- package/dist/features/visual/sd-calendar.js +2 -2
- package/dist/features/visual/sd-label.d.ts.map +1 -1
- package/dist/features/visual/sd-label.js +5 -5
- package/dist/features/visual/sd-note.d.ts.map +1 -1
- package/dist/features/visual/sd-note.js +3 -3
- package/dist/features/visual/sd-progress.d.ts.map +1 -1
- package/dist/features/visual/sd-progress.js +3 -3
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/layout/sidebar/sd-sidebar-container.d.ts.map +1 -1
- package/dist/layout/sidebar/sd-sidebar-container.js +11 -5
- package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
- package/dist/layout/sidebar/sd-sidebar-menu.js +5 -17
- package/dist/layout/sidebar/sd-sidebar-user.js +32 -32
- package/dist/layout/sidebar/sd-sidebar.d.ts.map +1 -1
- package/dist/layout/sidebar/sd-sidebar.js +3 -3
- package/dist/layout/topbar/sd-topbar-menu.js +5 -5
- package/dist/layout/topbar/sd-topbar.d.ts.map +1 -1
- package/dist/layout/topbar/sd-topbar.js +5 -5
- package/package.json +5 -5
- package/scss/commons/_colors.scss +296 -242
- package/scss/commons/_density.scss +23 -0
- package/scss/commons/_mixins.scss +142 -129
- package/scss/commons/_styles.scss +78 -103
- package/scss/commons/_theme-variables.scss +16 -2
- package/scss/commons/_variables.scss +277 -149
- package/scss/controls/_card.scss +12 -8
- package/scss/controls/_form-box.scss +7 -7
- package/scss/controls/_form-table.scss +7 -7
- package/scss/controls/_table.scss +5 -5
- package/scss/sd-tokens.md +132 -0
- package/scss/styles.scss +3 -4
- package/scss/themes/_variables-blueprint.scss +127 -81
- package/scss/themes/_variables-ide-dark.scss +215 -0
- package/src/controls/button/sd-additional-button.ts +12 -12
- package/src/controls/button/sd-anchor.ts +7 -8
- package/src/controls/button/sd-button.ts +42 -44
- package/src/controls/button/sd-modal-select-button.ts +15 -19
- package/src/controls/checkbox/sd-checkbox.ts +55 -43
- package/src/controls/checkbox/sd-switch.ts +18 -19
- package/src/controls/collapse/sd-collapse-icon.ts +2 -2
- package/src/controls/collapse/sd-collapse.ts +2 -2
- package/src/controls/dropdown/sd-dropdown-popup.ts +10 -12
- package/src/controls/dropdown/sd-dropdown.ts +1 -1
- package/src/controls/gap/sd-gap.ts +11 -9
- package/src/controls/input/sd-date-range-picker.ts +1 -1
- package/src/controls/input/sd-numpad.ts +3 -11
- package/src/controls/input/sd-range.ts +1 -1
- package/src/controls/input/sd-textarea.ts +18 -18
- package/src/controls/input/sd-textfield.ts +39 -37
- package/src/controls/list/sd-list-item.ts +195 -195
- package/src/controls/list/sd-list.ts +8 -8
- package/src/controls/pagination/sd-pagination.ts +4 -2
- package/src/controls/select/sd-select-button.ts +6 -10
- package/src/controls/select/sd-select-item.ts +14 -15
- package/src/controls/select/sd-select.ts +34 -35
- package/src/controls/tab/sd-tab-item.ts +4 -4
- package/src/controls/tab/sd-tab.ts +2 -2
- package/src/core/busy/sd-busy-container.ts +17 -16
- package/src/core/modal/sd-modal.ts +38 -32
- package/src/core/provideSdAngular.ts +34 -10
- package/src/core/ripple/setupRipple.ts +2 -2
- package/src/core/setupBgTheme.ts +5 -14
- package/src/core/show-effect/setupRevealOnShow.ts +1 -1
- package/src/core/toast/sd-toast-container.ts +5 -5
- package/src/core/toast/sd-toast.ts +16 -17
- package/src/core/validation/setupInvalid.ts +5 -5
- package/src/data/crud/sd-base-container.ts +120 -122
- package/src/data/kanban/sd-kanban-board.ts +1 -1
- package/src/data/kanban/sd-kanban-lane.ts +9 -14
- package/src/data/kanban/sd-kanban.ts +9 -19
- package/src/data/permission-table/sd-permission-table.ts +12 -20
- package/src/data/shared-data/sd-shared-data-select-list.ts +5 -19
- package/src/data/shared-data/sd-shared-data-select.ts +11 -28
- package/src/data/sheet/sd-sheet-config.modal.ts +5 -7
- package/src/data/sheet/sd-sheet.ts +29 -28
- package/src/data/sheet/useSheetCellStyling.ts +12 -3
- package/src/data/state-preset/sd-state-preset.ts +16 -16
- package/src/features/editor/sd-markdown-editor.ts +110 -56
- package/src/features/editor/sd-tiptap-editor.ts +214 -81
- package/src/features/theme/sd-theme-provider.ts +28 -3
- package/src/features/theme/sd-theme-selector.ts +21 -2
- package/src/features/theme/wcag-contrast.ts +103 -0
- package/src/features/visual/sd-calendar.ts +8 -8
- package/src/features/visual/sd-label.ts +11 -12
- package/src/features/visual/sd-note.ts +10 -11
- package/src/features/visual/sd-progress.ts +9 -11
- package/src/index.ts +15 -40
- package/src/layout/sidebar/sd-sidebar-container.ts +21 -8
- package/src/layout/sidebar/sd-sidebar-menu.ts +15 -17
- package/src/layout/sidebar/sd-sidebar-user.ts +100 -100
- package/src/layout/sidebar/sd-sidebar.ts +7 -9
- package/src/layout/topbar/sd-topbar-menu.ts +3 -3
- package/src/layout/topbar/sd-topbar.ts +12 -14
- package/styles.css +1641 -2462
- package/scss/themes/_blueprint-surfaces.scss +0 -87
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# `--sd-*` 역할 토큰 카탈로그
|
|
2
|
+
|
|
3
|
+
테마는 이 카탈로그의 **값 맵만으로** 완성함 — 컴포넌트 셀렉터 오버라이드 금지.
|
|
4
|
+
정의·발행: `commons/_variables.scss` 의 `$sd` 맵 → `writeVars($sd, "sd")` 로 `:root`(base 레이어) 발행. 테마는 theme-variant 레이어에서 같은 이름을 재정의함.
|
|
5
|
+
|
|
6
|
+
## 규칙
|
|
7
|
+
|
|
8
|
+
- **어휘(DEC-013)**: 색 어휘는 `--sd-{bg|tx|bd}-…` 속성 우선. 유틸 클래스명 = 토큰명에서 `--sd-` 만 뗀 것(`--sd-bg-primary-solid` ↔ `.bg-primary-solid`). hover 변형은 `-hover` 접미. 비색상·컴포넌트 전용 그룹(팔레트·focus-ring·scrollbar·shadow·타이포·치수·z)은 그룹 구조 유지.
|
|
9
|
+
- **체이닝 금지**: `:root` 발행 토큰의 `var()` 참조는 팔레트(`--sd-color-*`, 테마 불변)만 허용함. 테마·밀도가 덮는 토큰끼리 체인을 두면 재정의 스코프에서 하위가 안 따라옴(확정값 상속). 파생 calc 는 소비 지점에서 계산함.
|
|
10
|
+
- **색 원천**: 팔레트 + 흰/검 알파(rgba white/black)만. 커스텀 rgb 리터럴 금지.
|
|
11
|
+
- **그룹 소유권**: 테마 맵 = 색·폰트·형태(radius·그림자·표면 패턴) / 밀도 그룹 = 간격·행높이·시트 패딩·topbar 높이(`sd-density-compact` 가 밀도 그룹만 덮음).
|
|
12
|
+
- **소비 규약**: 컴포넌트는 `background` 단축 금지(`background-color:` 사용 — `--sd-bg-canvas-image` 패턴 보존). 컴포넌트 config 의 인라인 var 지정 금지.
|
|
13
|
+
- 구 스케일 어휘(`--theme-*-{lightest..darkest}`·`--trans-*`·`--text-trans-*`·rev 계열)는 카탈로그에 없고 발행도 종료됨(14.2 브레이킹). 구 어휘를 소비하던 앱은 이 카탈로그 어휘로 전환해야 함.
|
|
14
|
+
|
|
15
|
+
## 토큰 표 (라이트 기본값 = 구 어휘 시각 등가)
|
|
16
|
+
|
|
17
|
+
### 팔레트
|
|
18
|
+
|
|
19
|
+
| 토큰 | 기본값 |
|
|
20
|
+
| ---------------------------- | ----------------------------------------- |
|
|
21
|
+
| `--sd-color-{hue}-{50..950}` | Tailwind v4 rgb 고정값 (22 hue × 11 step) |
|
|
22
|
+
|
|
23
|
+
### 배경(bg)
|
|
24
|
+
|
|
25
|
+
| 토큰 | 역할 | 기본값 |
|
|
26
|
+
| --------------------------------------- | ------------------------------------ | ---------------------- |
|
|
27
|
+
| `--sd-bg-canvas` | 앱 배경 | zinc-50 |
|
|
28
|
+
| `--sd-bg-canvas-image` | 배경 패턴(블루프린트 모눈 등) | none |
|
|
29
|
+
| `--sd-bg-control` | 컨트롤 면(인풋·카드 내부 등 백색 면) | white |
|
|
30
|
+
| `--sd-bg-elevated` | 카드·모달 승격 면 | white |
|
|
31
|
+
| `--sd-bg-overlay` | 드롭다운·팝업 면 | white |
|
|
32
|
+
| `--sd-bg-sheet` | 시트 컨테이너 면 | zinc-50 |
|
|
33
|
+
| `--sd-bg-sheet-image` | 시트 컨테이너 배경 패턴 | none |
|
|
34
|
+
| `--sd-bg-inverse` | 반전 면 | black |
|
|
35
|
+
| `--sd-bg-field` | 인풋류 필드 면 | blue-50 |
|
|
36
|
+
| `--sd-bg-track` | 트랙 면(스위치 off 트랙 등) | zinc-100 |
|
|
37
|
+
| `--sd-bg-state-{hover,active,selected}` | 상태 오버레이(알파) — 전 컨트롤 공통 | rgba(0,0,0,.05/.1/.07) |
|
|
38
|
+
| `--sd-bg-disabled` | 비활성 면(색 치환 규약) | zinc-100 |
|
|
39
|
+
| `--sd-bg-busy-overlay` | busy 오버레이 면 | rgba(255,255,255,.6) |
|
|
40
|
+
| `--sd-bg-busy-indicator` | busy 인디케이터 그래픽 면(큐브 등) | rgba(0,0,0,.1) |
|
|
41
|
+
| `--sd-bg-backdrop` | 모달 뒤 스크림(배경 어둡히기) | rgba(0,0,0,.2) |
|
|
42
|
+
|
|
43
|
+
### 텍스트(tx)
|
|
44
|
+
|
|
45
|
+
| 토큰 | 역할 | 기본값 |
|
|
46
|
+
| -------------------------------------- | ----------------------------- | ---------------------------------- |
|
|
47
|
+
| `--sd-tx-{strong,default,muted,faint}` | 무채 텍스트(표면색과 독립 축) | black / rgba(0,0,0,.87) / .6 / .38 |
|
|
48
|
+
| `--sd-tx-on-inverse` | 반전 면 위 텍스트 | white |
|
|
49
|
+
| `--sd-tx-on-inverse-muted` | 반전 면 위 보조 텍스트(hover) | rgba(255,255,255,.7) |
|
|
50
|
+
| `--sd-tx-on-inverse-disabled` | 반전 면 위 비활성 텍스트 | rgba(255,255,255,.5) |
|
|
51
|
+
| `--sd-tx-disabled` | 비활성 텍스트(색 치환 규약) | rgba(0,0,0,.38) |
|
|
52
|
+
|
|
53
|
+
### 보더(bd)
|
|
54
|
+
|
|
55
|
+
| 토큰 | 역할 | 기본값 |
|
|
56
|
+
| ------------------------------------------------- | ------------------------- | ------------------------ |
|
|
57
|
+
| `--sd-bd-{hairline,soft,default,strong,emphasis}` | 무채 보더 강도 스케일 | zinc-100/200/300/400/500 |
|
|
58
|
+
| `--sd-bd-field` | 인풋류 필드 보더 | zinc-300 |
|
|
59
|
+
| `--sd-bd-disabled` | 비활성 보더(색 치환 규약) | zinc-200 |
|
|
60
|
+
|
|
61
|
+
### 시맨틱 슬롯 (키: gray·blue-gray·primary·secondary·info·success·warning·danger)
|
|
62
|
+
|
|
63
|
+
| 토큰 | 역할 | 기본값(일반 키 / gray·blue-gray) |
|
|
64
|
+
| ---------------------------------- | ----------------------- | -------------------------------- |
|
|
65
|
+
| `--sd-bg-{key}-solid` (+`-hover`) | solid 면 | 500→600 / 400→500 |
|
|
66
|
+
| `--sd-bg-{key}-subtle` (+`-hover`) | 옅은 면 | 50→100 |
|
|
67
|
+
| `--sd-tx-{key}` (+`-hover`) | 텍스트·아이콘·링크 단독 | 500→600 / 400→500 |
|
|
68
|
+
| `--sd-tx-{key}-solid` | solid 면 위 텍스트 | white |
|
|
69
|
+
| `--sd-tx-{key}-subtle` | subtle 면 위 텍스트 | 700 / 600 |
|
|
70
|
+
| `--sd-bd-{key}-solid` (+`-hover`) | solid 보더 | bg 동일 |
|
|
71
|
+
| `--sd-bd-{key}-subtle` | 옅은 보더 | 200 / 300 |
|
|
72
|
+
|
|
73
|
+
### 포커스·스크롤바
|
|
74
|
+
|
|
75
|
+
| 토큰 | 기본값 |
|
|
76
|
+
| -------------------------------------------------------------- | -------------------------------- |
|
|
77
|
+
| `--sd-focus-ring-{color,width,offset}` (`:focus-visible` 규약) | blue-500 / 0.1667rem / 0.0833rem |
|
|
78
|
+
| `--sd-scrollbar-{thumb,thumb-hover,track}` | rgba(0,0,0,.05/.1/.03) |
|
|
79
|
+
|
|
80
|
+
### 컴포넌트 장식 (방침 1, 2026-07-16 확정 — FIND-003 ③ 해소)
|
|
81
|
+
|
|
82
|
+
테마 오버라이드가 값 맵으로 못 잡던 컴포넌트 장식의 소비 지점. 기본값은 현행 시각 등가.
|
|
83
|
+
|
|
84
|
+
| 토큰 | 역할 | 기본값 |
|
|
85
|
+
| ---------------------------------- | ---------------------------------------- | ---------------------------- |
|
|
86
|
+
| `--sd-card-bd` | 카드 보더 색 | transparent |
|
|
87
|
+
| `--sd-card-bd-active` | 카드 focus-within 상단 보더 색 | transparent |
|
|
88
|
+
| `--sd-card-shadow` (+`-hover`) | 카드 box-shadow(전체 값) | elevation(2)/(4) 등가 리터럴 |
|
|
89
|
+
| `--sd-modal-bd` | 모달 다이얼로그 보더 색 | transparent |
|
|
90
|
+
| `--sd-modal-header-bg` | 모달 헤더 배경 | zinc-50 |
|
|
91
|
+
| `--sd-modal-header-tx` (+`-muted`) | 모달 헤더 글자·닫기(muted=기본/tx=hover) | rgba(0,0,0,.87) / zinc-400 |
|
|
92
|
+
| `--sd-dropdown-bd` | 드롭다운 보더 색 | zinc-300 |
|
|
93
|
+
| `--sd-sheet-shadow` | 시트 테이블 box-shadow | none |
|
|
94
|
+
| `--sd-permission-group-{bg,tx}` | 권한표 그룹 첫 행 배경·글자 | cyan-500 / white |
|
|
95
|
+
|
|
96
|
+
- `--sd-card-bd` 를 덮는 테마는 `--sd-card-bd-active` 도 함께 정의함(미정의 시 focus 에서 상단 보더만 transparent 로 뚫림).
|
|
97
|
+
|
|
98
|
+
### 그림자·기타
|
|
99
|
+
|
|
100
|
+
| 토큰 | 기본값 |
|
|
101
|
+
| -------------------------------------------- | ------------------------------- |
|
|
102
|
+
| `--sd-shadow-{color,size,blur-mult}` | rgba(0,0,0,.05) / 0.0833rem / 1 |
|
|
103
|
+
| `--sd-z-{toast,busy,dropdown,modal,sidebar}` | 9999/9998/5000/4000/3000 |
|
|
104
|
+
| `--sd-animation-duration` | 0.2s |
|
|
105
|
+
|
|
106
|
+
### 타이포·형태(테마 소유)
|
|
107
|
+
|
|
108
|
+
| 토큰 | 기본값 |
|
|
109
|
+
| ----------------------------------------------------------- | ---------------------------------------------------------------- |
|
|
110
|
+
| `--sd-font-size-{sm,default,lg,h1..h6}` | 0.9167 / 1 / 1.1667 / 2 / 1.5 / 1.3333 / 1.1667 / 1 / 0.9167 rem |
|
|
111
|
+
| `--sd-font-family{,-field,-monospace}` / `--sd-font-weight` | sans-serif / ui-sans-serif… / ui-monospace… / 400 |
|
|
112
|
+
| `--sd-radius-{xs,sm,default,lg,xl,xxl}` | 0.0833 / 0.1667 / 0.3333 / 0.5 / 0.6667 / 1 rem |
|
|
113
|
+
|
|
114
|
+
### 밀도 그룹(치수 — compact 가 덮음)
|
|
115
|
+
|
|
116
|
+
| 토큰 | 기본값 |
|
|
117
|
+
| -------------------------------------------------- | ---------------------------------------------------------------- |
|
|
118
|
+
| `--sd-gap-{xxs,xs,sm,default,lg,xl,xxl,0,auto}` | 0.0833 / 0.1667 / 0.3333 / 0.5 / 0.6667 / 1 / 1.5 rem / 0 / auto |
|
|
119
|
+
| `--sd-line-height` / `--sd-line-height-strip-unit` | 1.5em / 1.5 |
|
|
120
|
+
| `--sd-sheet-{pv,ph}` | 0.1667 / 0.3333 rem |
|
|
121
|
+
| `--sd-topbar-height` / `--sd-sidebar-width` | 2.5rem / 14rem |
|
|
122
|
+
|
|
123
|
+
## 테마·밀도 값 맵
|
|
124
|
+
|
|
125
|
+
- 테마 = `--sd-*` 값 맵만(`scss/themes/_variables-*.scss` → theme-variant 레이어 발행). 셀렉터 오버라이드 금지 — surfaces 파일 없음.
|
|
126
|
+
- 밀도 = `sd-density-compact` 클래스가 밀도 그룹(치수)만 덮음(`scss/commons/_density.scss`).
|
|
127
|
+
- 값 맵은 라이트 기본값과의 차이만 기술함(같은 항목 생략).
|
|
128
|
+
|
|
129
|
+
## 검증
|
|
130
|
+
|
|
131
|
+
- 발행 전수·체이닝 금지 spec: `packages/angular/tests/features/theme/sd-tokens.spec.ts` — 카탈로그 키 추가 시 이 spec 의 목록도 함께 갱신함.
|
|
132
|
+
- 테마 핵심 쌍 WCAG 대비 게이트(DEC-012): `theme-contrast.spec.ts` — 본문 4.5:1·보조/UI 3:1, 의도적 저대비는 예외 목록 명시. 검사 유틸 `getWcagContrastRatio` 는 패키지 export(커스텀 테마 검증용).
|
package/scss/styles.scss
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
@use "commons/theme-variables";
|
|
2
2
|
@use "commons/styles";
|
|
3
3
|
|
|
4
|
-
// 블루프린트 모눈 그리드 면 (언레이어드 — 파일 내 주석 참조)
|
|
5
|
-
@use "themes/blueprint-surfaces";
|
|
6
|
-
|
|
7
4
|
@use "controls/flex";
|
|
8
5
|
@use "controls/grid";
|
|
9
6
|
@use "controls/card";
|
|
@@ -12,7 +9,9 @@
|
|
|
12
9
|
@use "controls/table";
|
|
13
10
|
|
|
14
11
|
ng-icon {
|
|
15
|
-
|
|
12
|
+
// 아이콘 박스 + 아래 시프트(0.2em)가 라인박스를 절대 못 넘게 line-height 에서 유도.
|
|
13
|
+
// 고정 배율(1.33em)이던 시절 1.33+0.2 > line-height 로 행 높이가 부풀었음.
|
|
14
|
+
--ng-icon__size: calc(var(--sd-line-height) - 0.2em);
|
|
16
15
|
vertical-align: -0.2em !important;
|
|
17
16
|
|
|
18
17
|
svg {
|
|
@@ -1,99 +1,145 @@
|
|
|
1
|
+
// 블루프린트 테마 — 트레이싱지(라이트 면)를 --sd-* 역할 토큰 값 맵으로만 구성(셀렉터 오버라이드 0).
|
|
2
|
+
// 라이트 기본값과 같은 항목은 생략(값 맵은 차이만 덮음).
|
|
3
|
+
// 색 규칙(CONSTRAINT-007): --sd-color-* 팔레트 + 흰/검 알파만.
|
|
4
|
+
// 모눈·그림자 청색 틴트는 rgb(28, 57, 142) ≈ --sd-color-blue-900 근사 리터럴(2026-07-16 확정 —
|
|
5
|
+
// var() 를 알파와 조합할 수 없어 팔레트 성분을 리터럴로 풂).
|
|
6
|
+
|
|
7
|
+
// 모눈: 24px 헤어라인 + 120px 메이저 — background-size 없이 성립하는 repeating-linear-gradient 형
|
|
8
|
+
$grid-strong: rgba(28, 57, 142, 0.055);
|
|
9
|
+
$grid-weak: rgba(28, 57, 142, 0.022);
|
|
10
|
+
$grid-image: (
|
|
11
|
+
repeating-linear-gradient(to bottom, #{$grid-strong} 0 1px, transparent 1px 120px),
|
|
12
|
+
repeating-linear-gradient(to right, #{$grid-strong} 0 1px, transparent 1px 120px),
|
|
13
|
+
repeating-linear-gradient(to bottom, #{$grid-weak} 0 1px, transparent 1px 24px),
|
|
14
|
+
repeating-linear-gradient(to right, #{$grid-weak} 0 1px, transparent 1px 24px)
|
|
15
|
+
);
|
|
16
|
+
|
|
1
17
|
$paper: (
|
|
2
|
-
|
|
18
|
+
bg: (
|
|
19
|
+
// 모눈은 body(캔버스)와 시트 컨테이너에만 — 콘텐츠 내부는 무지(가독 우선)
|
|
20
|
+
canvas-image: $grid-image,
|
|
21
|
+
sheet-image: $grid-image,
|
|
3
22
|
"gray": (
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
light: var(--color-zinc-300),
|
|
7
|
-
default: var(--color-zinc-500),
|
|
8
|
-
dark: var(--color-zinc-600),
|
|
9
|
-
darker: var(--color-zinc-700),
|
|
10
|
-
darkest: var(--color-zinc-800),
|
|
23
|
+
solid: var(--sd-color-zinc-500),
|
|
24
|
+
solid-hover: var(--sd-color-zinc-600),
|
|
11
25
|
),
|
|
12
26
|
blue-gray: (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
light: var(--color-slate-300),
|
|
16
|
-
default: var(--color-slate-500),
|
|
17
|
-
dark: var(--color-slate-600),
|
|
18
|
-
darker: var(--color-slate-700),
|
|
19
|
-
darkest: var(--color-slate-800),
|
|
27
|
+
solid: var(--sd-color-slate-500),
|
|
28
|
+
solid-hover: var(--sd-color-slate-600),
|
|
20
29
|
),
|
|
30
|
+
// 블루프린트 잉크 — primary 는 깊은 남색(900)
|
|
21
31
|
primary: (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
32
|
+
solid: var(--sd-color-blue-900),
|
|
33
|
+
solid-hover: var(--sd-color-blue-950),
|
|
34
|
+
subtle: var(--sd-color-blue-100),
|
|
35
|
+
subtle-hover: var(--sd-color-blue-300),
|
|
36
|
+
),
|
|
37
|
+
success: (
|
|
38
|
+
solid: var(--sd-color-green-500),
|
|
39
|
+
solid-hover: var(--sd-color-green-600),
|
|
40
|
+
subtle: var(--sd-color-green-50),
|
|
41
|
+
subtle-hover: var(--sd-color-green-100),
|
|
42
|
+
),
|
|
43
|
+
warning: (
|
|
44
|
+
solid: var(--sd-color-orange-400),
|
|
45
|
+
solid-hover: var(--sd-color-orange-600),
|
|
46
|
+
subtle: var(--sd-color-orange-100),
|
|
47
|
+
subtle-hover: var(--sd-color-orange-200),
|
|
48
|
+
),
|
|
49
|
+
danger: (
|
|
50
|
+
solid: var(--sd-color-red-400),
|
|
51
|
+
solid-hover: var(--sd-color-red-600),
|
|
52
|
+
),
|
|
53
|
+
),
|
|
54
|
+
tx: (
|
|
55
|
+
"gray": var(--sd-color-zinc-500),
|
|
56
|
+
gray-hover: var(--sd-color-zinc-600),
|
|
57
|
+
gray-subtle: var(--sd-color-zinc-700),
|
|
58
|
+
blue-gray: var(--sd-color-slate-500),
|
|
59
|
+
blue-gray-hover: var(--sd-color-slate-600),
|
|
60
|
+
blue-gray-subtle: var(--sd-color-slate-700),
|
|
61
|
+
primary: var(--sd-color-blue-900),
|
|
62
|
+
primary-hover: var(--sd-color-blue-950),
|
|
63
|
+
primary-subtle: var(--sd-color-blue-950),
|
|
64
|
+
success: var(--sd-color-green-500),
|
|
65
|
+
success-hover: var(--sd-color-green-600),
|
|
66
|
+
success-subtle: var(--sd-color-green-700),
|
|
67
|
+
warning: var(--sd-color-orange-400),
|
|
68
|
+
warning-hover: var(--sd-color-orange-600),
|
|
69
|
+
danger: var(--sd-color-red-400),
|
|
70
|
+
danger-hover: var(--sd-color-red-600),
|
|
71
|
+
),
|
|
72
|
+
bd: (
|
|
73
|
+
strong: var(--sd-color-zinc-500),
|
|
74
|
+
emphasis: var(--sd-color-zinc-600),
|
|
75
|
+
"gray": (
|
|
76
|
+
solid: var(--sd-color-zinc-500),
|
|
77
|
+
solid-hover: var(--sd-color-zinc-600),
|
|
78
|
+
),
|
|
79
|
+
blue-gray: (
|
|
80
|
+
solid: var(--sd-color-slate-500),
|
|
81
|
+
solid-hover: var(--sd-color-slate-600),
|
|
82
|
+
),
|
|
83
|
+
primary: (
|
|
84
|
+
solid: var(--sd-color-blue-900),
|
|
85
|
+
solid-hover: var(--sd-color-blue-950),
|
|
86
|
+
subtle: var(--sd-color-blue-300),
|
|
47
87
|
),
|
|
48
88
|
success: (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
default: var(--color-green-500),
|
|
53
|
-
dark: var(--color-green-600),
|
|
54
|
-
darker: var(--color-green-700),
|
|
55
|
-
darkest: var(--color-green-800),
|
|
89
|
+
solid: var(--sd-color-green-500),
|
|
90
|
+
solid-hover: var(--sd-color-green-600),
|
|
91
|
+
subtle: var(--sd-color-green-300),
|
|
56
92
|
),
|
|
57
93
|
warning: (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
default: var(--color-orange-400),
|
|
62
|
-
dark: var(--color-orange-600),
|
|
63
|
-
darker: var(--color-orange-700),
|
|
64
|
-
darkest: var(--color-orange-800),
|
|
94
|
+
solid: var(--sd-color-orange-400),
|
|
95
|
+
solid-hover: var(--sd-color-orange-600),
|
|
96
|
+
subtle: var(--sd-color-orange-300),
|
|
65
97
|
),
|
|
66
98
|
danger: (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
light: var(--color-red-200),
|
|
70
|
-
default: var(--color-red-400),
|
|
71
|
-
dark: var(--color-red-600),
|
|
72
|
-
darker: var(--color-red-700),
|
|
73
|
-
darkest: var(--color-red-800),
|
|
99
|
+
solid: var(--sd-color-red-400),
|
|
100
|
+
solid-hover: var(--sd-color-red-600),
|
|
74
101
|
),
|
|
75
102
|
),
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
border-radius: (
|
|
79
|
-
xs: 0,
|
|
80
|
-
sm: 0,
|
|
81
|
-
default: 0,
|
|
82
|
-
lg: 0,
|
|
83
|
-
xl: 0,
|
|
84
|
-
xxl: 0,
|
|
103
|
+
focus-ring: (
|
|
104
|
+
color: var(--sd-color-blue-900),
|
|
85
105
|
),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
106
|
+
// 하드 섀도(blur 0) — 도면 인쇄 느낌
|
|
107
|
+
shadow: (
|
|
108
|
+
blur-mult: 0,
|
|
109
|
+
),
|
|
110
|
+
card: (
|
|
111
|
+
bd: var(--sd-color-zinc-500),
|
|
112
|
+
bd-active: var(--sd-color-zinc-500),
|
|
113
|
+
shadow: (
|
|
114
|
+
3px 3px 0 rgba(28, 57, 142, 0.1),
|
|
115
|
+
),
|
|
116
|
+
shadow-hover: (
|
|
117
|
+
5px 5px 0 rgba(28, 57, 142, 0.14),
|
|
118
|
+
),
|
|
89
119
|
),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
120
|
+
// 모달 헤더 잉크 액센트
|
|
121
|
+
modal: (
|
|
122
|
+
header-bg: var(--sd-color-blue-900),
|
|
123
|
+
header-tx: white,
|
|
124
|
+
header-tx-muted: rgba(255, 255, 255, 0.7),
|
|
125
|
+
),
|
|
126
|
+
sheet: (
|
|
127
|
+
shadow: (
|
|
128
|
+
1px 1px 0 rgba(28, 57, 142, 0.1),
|
|
129
|
+
),
|
|
98
130
|
),
|
|
131
|
+
// 권한표 그룹 행 — 원색 solid 를 무채 옅은 행으로
|
|
132
|
+
permission-group: (
|
|
133
|
+
bg: var(--sd-color-zinc-100),
|
|
134
|
+
tx: rgba(0, 0, 0, 0.87),
|
|
135
|
+
),
|
|
136
|
+
// 도면 직각 — 라운드 0
|
|
137
|
+
radius: (
|
|
138
|
+
xs: 0,
|
|
139
|
+
sm: 0,
|
|
140
|
+
default: 0,
|
|
141
|
+
lg: 0,
|
|
142
|
+
xl: 0,
|
|
143
|
+
xxl: 0,
|
|
144
|
+
),
|
|
99
145
|
);
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// IDE 다크 테마 — VSCode "Dark 2026" 을 --sd-* 역할 토큰 값 맵으로만 구성(셀렉터 오버라이드 0).
|
|
2
|
+
// 레퍼런스: microsoft/vscode extensions/theme-defaults/themes/2026-dark.json (v1.113 기본 테마)
|
|
3
|
+
// 색 규칙(CONSTRAINT-007): --sd-color-* 팔레트 + 흰/검 알파(rgba white/black)만.
|
|
4
|
+
// 값 이전 기준(FIND-015): 구 스케일 맵·ide-dark-surfaces 확정 상태를 라이트 기본값 등가 슬롯으로 역매핑.
|
|
5
|
+
// 치수(gap·line-height·sheet pv/ph·topbar height)는 밀도 그룹 소유(DEC-007) — 이 맵엔 없음.
|
|
6
|
+
$dark: (
|
|
7
|
+
bg: (
|
|
8
|
+
// 계층: canvas zinc-950 → control zinc-900 → elevated/overlay zinc-800
|
|
9
|
+
canvas: var(--sd-color-zinc-950),
|
|
10
|
+
control: var(--sd-color-zinc-900),
|
|
11
|
+
elevated: var(--sd-color-zinc-800),
|
|
12
|
+
overlay: var(--sd-color-zinc-800),
|
|
13
|
+
sheet: var(--sd-color-zinc-950),
|
|
14
|
+
inverse: white,
|
|
15
|
+
// 필드 배경 — input.background 근사
|
|
16
|
+
field: var(--sd-color-zinc-900),
|
|
17
|
+
track: var(--sd-color-zinc-700),
|
|
18
|
+
// 시맨틱 solid = 깊은 스텝(600) + hover 한 단계 밝게(500) — VSCode 방식(다크에서 500 배경은 과함)
|
|
19
|
+
"gray": (
|
|
20
|
+
solid: var(--sd-color-zinc-400),
|
|
21
|
+
solid-hover: var(--sd-color-zinc-300),
|
|
22
|
+
subtle: var(--sd-color-zinc-800),
|
|
23
|
+
subtle-hover: var(--sd-color-zinc-700),
|
|
24
|
+
),
|
|
25
|
+
blue-gray: (
|
|
26
|
+
solid: var(--sd-color-slate-400),
|
|
27
|
+
solid-hover: var(--sd-color-slate-300),
|
|
28
|
+
subtle: var(--sd-color-slate-800),
|
|
29
|
+
subtle-hover: var(--sd-color-slate-700),
|
|
30
|
+
),
|
|
31
|
+
primary: (
|
|
32
|
+
solid: var(--sd-color-sky-600),
|
|
33
|
+
solid-hover: var(--sd-color-sky-500),
|
|
34
|
+
subtle: var(--sd-color-sky-950),
|
|
35
|
+
subtle-hover: var(--sd-color-sky-900),
|
|
36
|
+
),
|
|
37
|
+
secondary: (
|
|
38
|
+
solid: var(--sd-color-sky-600),
|
|
39
|
+
solid-hover: var(--sd-color-sky-500),
|
|
40
|
+
subtle: var(--sd-color-zinc-900),
|
|
41
|
+
subtle-hover: var(--sd-color-sky-900),
|
|
42
|
+
),
|
|
43
|
+
info: (
|
|
44
|
+
solid: var(--sd-color-cyan-600),
|
|
45
|
+
solid-hover: var(--sd-color-cyan-500),
|
|
46
|
+
subtle: var(--sd-color-cyan-950),
|
|
47
|
+
subtle-hover: var(--sd-color-cyan-900),
|
|
48
|
+
),
|
|
49
|
+
success: (
|
|
50
|
+
solid: var(--sd-color-green-600),
|
|
51
|
+
solid-hover: var(--sd-color-green-500),
|
|
52
|
+
subtle: var(--sd-color-green-950),
|
|
53
|
+
subtle-hover: var(--sd-color-green-900),
|
|
54
|
+
),
|
|
55
|
+
warning: (
|
|
56
|
+
solid: var(--sd-color-amber-600),
|
|
57
|
+
solid-hover: var(--sd-color-amber-500),
|
|
58
|
+
subtle: var(--sd-color-amber-950),
|
|
59
|
+
subtle-hover: var(--sd-color-amber-900),
|
|
60
|
+
),
|
|
61
|
+
// errorForeground #f48771 근사 = red-400 (solid 는 400 기준·hover 500)
|
|
62
|
+
danger: (
|
|
63
|
+
solid: var(--sd-color-red-400),
|
|
64
|
+
solid-hover: var(--sd-color-red-500),
|
|
65
|
+
subtle: var(--sd-color-red-950),
|
|
66
|
+
subtle-hover: var(--sd-color-red-900),
|
|
67
|
+
),
|
|
68
|
+
// 오버레이·hover: list.hoverBackground #FFFFFF14 근사 — 흰 알파
|
|
69
|
+
state: (
|
|
70
|
+
hover: rgba(255, 255, 255, 0.05),
|
|
71
|
+
active: rgba(255, 255, 255, 0.08),
|
|
72
|
+
selected: rgba(255, 255, 255, 0.07),
|
|
73
|
+
),
|
|
74
|
+
disabled: var(--sd-color-zinc-800),
|
|
75
|
+
busy-overlay: rgba(0, 0, 0, 0.6),
|
|
76
|
+
busy-indicator: rgba(255, 255, 255, 0.13),
|
|
77
|
+
),
|
|
78
|
+
// 텍스트: 흰색 알파 스케일 (Dark 2026 근사 — #ededed/#bfbfbf/#8c8c8c/#555)
|
|
79
|
+
tx: (
|
|
80
|
+
strong: rgba(255, 255, 255, 0.93),
|
|
81
|
+
default: rgba(255, 255, 255, 0.75),
|
|
82
|
+
muted: rgba(255, 255, 255, 0.55),
|
|
83
|
+
faint: rgba(255, 255, 255, 0.33),
|
|
84
|
+
on-inverse: white,
|
|
85
|
+
on-inverse-muted: rgba(255, 255, 255, 0.75),
|
|
86
|
+
on-inverse-disabled: rgba(255, 255, 255, 0.55),
|
|
87
|
+
disabled: rgba(255, 255, 255, 0.33),
|
|
88
|
+
// 링크·단독 텍스트 = 깊은 톤(600), hover 시 500 (쨍함 억제)
|
|
89
|
+
"gray": var(--sd-color-zinc-400),
|
|
90
|
+
gray-hover: var(--sd-color-zinc-300),
|
|
91
|
+
gray-subtle: var(--sd-color-zinc-200),
|
|
92
|
+
blue-gray: var(--sd-color-slate-400),
|
|
93
|
+
blue-gray-hover: var(--sd-color-slate-300),
|
|
94
|
+
blue-gray-subtle: var(--sd-color-slate-200),
|
|
95
|
+
primary: var(--sd-color-sky-600),
|
|
96
|
+
primary-hover: var(--sd-color-sky-500),
|
|
97
|
+
primary-subtle: var(--sd-color-sky-400),
|
|
98
|
+
secondary: var(--sd-color-sky-600),
|
|
99
|
+
secondary-hover: var(--sd-color-sky-500),
|
|
100
|
+
secondary-subtle: var(--sd-color-sky-400),
|
|
101
|
+
info: var(--sd-color-cyan-600),
|
|
102
|
+
info-hover: var(--sd-color-cyan-500),
|
|
103
|
+
info-subtle: var(--sd-color-cyan-300),
|
|
104
|
+
success: var(--sd-color-green-600),
|
|
105
|
+
success-hover: var(--sd-color-green-500),
|
|
106
|
+
success-subtle: var(--sd-color-green-300),
|
|
107
|
+
warning: var(--sd-color-amber-600),
|
|
108
|
+
warning-hover: var(--sd-color-amber-500),
|
|
109
|
+
warning-subtle: var(--sd-color-amber-300),
|
|
110
|
+
danger: var(--sd-color-red-400),
|
|
111
|
+
danger-hover: var(--sd-color-red-500),
|
|
112
|
+
danger-subtle: var(--sd-color-red-300),
|
|
113
|
+
),
|
|
114
|
+
// 보더: 흰색 알파 헤어라인 (widget #2A2B2C·input #333536 근사)
|
|
115
|
+
bd: (
|
|
116
|
+
hairline: rgba(255, 255, 255, 0.05),
|
|
117
|
+
soft: rgba(255, 255, 255, 0.08),
|
|
118
|
+
default: rgba(255, 255, 255, 0.1),
|
|
119
|
+
strong: rgba(255, 255, 255, 0.12),
|
|
120
|
+
emphasis: rgba(255, 255, 255, 0.16),
|
|
121
|
+
field: rgba(255, 255, 255, 0.1),
|
|
122
|
+
disabled: rgba(255, 255, 255, 0.08),
|
|
123
|
+
"gray": (
|
|
124
|
+
solid: var(--sd-color-zinc-400),
|
|
125
|
+
solid-hover: var(--sd-color-zinc-300),
|
|
126
|
+
subtle: var(--sd-color-zinc-600),
|
|
127
|
+
),
|
|
128
|
+
blue-gray: (
|
|
129
|
+
solid: var(--sd-color-slate-400),
|
|
130
|
+
solid-hover: var(--sd-color-slate-300),
|
|
131
|
+
subtle: var(--sd-color-slate-600),
|
|
132
|
+
),
|
|
133
|
+
primary: (
|
|
134
|
+
solid: var(--sd-color-sky-600),
|
|
135
|
+
solid-hover: var(--sd-color-sky-500),
|
|
136
|
+
subtle: var(--sd-color-sky-500),
|
|
137
|
+
),
|
|
138
|
+
secondary: (
|
|
139
|
+
solid: var(--sd-color-sky-600),
|
|
140
|
+
solid-hover: var(--sd-color-sky-500),
|
|
141
|
+
subtle: var(--sd-color-sky-500),
|
|
142
|
+
),
|
|
143
|
+
info: (
|
|
144
|
+
solid: var(--sd-color-cyan-600),
|
|
145
|
+
solid-hover: var(--sd-color-cyan-500),
|
|
146
|
+
subtle: var(--sd-color-cyan-600),
|
|
147
|
+
),
|
|
148
|
+
success: (
|
|
149
|
+
solid: var(--sd-color-green-600),
|
|
150
|
+
solid-hover: var(--sd-color-green-500),
|
|
151
|
+
subtle: var(--sd-color-green-600),
|
|
152
|
+
),
|
|
153
|
+
warning: (
|
|
154
|
+
solid: var(--sd-color-amber-600),
|
|
155
|
+
solid-hover: var(--sd-color-amber-500),
|
|
156
|
+
subtle: var(--sd-color-amber-600),
|
|
157
|
+
),
|
|
158
|
+
danger: (
|
|
159
|
+
solid: var(--sd-color-red-400),
|
|
160
|
+
solid-hover: var(--sd-color-red-500),
|
|
161
|
+
subtle: var(--sd-color-red-400),
|
|
162
|
+
),
|
|
163
|
+
),
|
|
164
|
+
focus-ring: (
|
|
165
|
+
color: var(--sd-color-sky-600),
|
|
166
|
+
),
|
|
167
|
+
// Dark 2026 scrollbarSlider.* 근사 (DEC-011)
|
|
168
|
+
scrollbar: (
|
|
169
|
+
thumb: rgba(255, 255, 255, 0.1),
|
|
170
|
+
thumb-hover: rgba(255, 255, 255, 0.16),
|
|
171
|
+
track: rgba(255, 255, 255, 0.03),
|
|
172
|
+
),
|
|
173
|
+
// 그림자 전면 제거 — VSCode 는 경계를 보더로 세움
|
|
174
|
+
shadow: (
|
|
175
|
+
size: 0,
|
|
176
|
+
blur-mult: 0,
|
|
177
|
+
),
|
|
178
|
+
// 다크는 그림자가 약해 카드 경계를 헤어라인으로, 포커스 시 상단 액센트 라인
|
|
179
|
+
// (tab.activeBorderTop #3994BC 근사 = sky-500)
|
|
180
|
+
card: (
|
|
181
|
+
bd: rgba(255, 255, 255, 0.08),
|
|
182
|
+
bd-active: var(--sd-color-sky-500),
|
|
183
|
+
shadow: none,
|
|
184
|
+
shadow-hover: none,
|
|
185
|
+
),
|
|
186
|
+
// 오버레이 elevated 경계 — editorWidget/menu 배경 + widget.border #2A2B2C 근사
|
|
187
|
+
modal: (
|
|
188
|
+
bd: rgba(255, 255, 255, 0.22),
|
|
189
|
+
header-bg: var(--sd-color-zinc-800),
|
|
190
|
+
header-tx: rgba(255, 255, 255, 0.75),
|
|
191
|
+
header-tx-muted: var(--sd-color-zinc-400),
|
|
192
|
+
),
|
|
193
|
+
dropdown: (
|
|
194
|
+
bd: rgba(255, 255, 255, 0.22),
|
|
195
|
+
),
|
|
196
|
+
// 권한표 그룹 행 — theme 원색 solid 를 무채 어두운 행으로
|
|
197
|
+
permission-group: (
|
|
198
|
+
bg: var(--sd-color-zinc-800),
|
|
199
|
+
tx: rgba(255, 255, 255, 0.75),
|
|
200
|
+
),
|
|
201
|
+
// VSCode 수준 소형 라운드 — 버튼·인풋 2px, 위젯·메뉴 4px 급 (12px 기준)
|
|
202
|
+
radius: (
|
|
203
|
+
xs: 0.0833rem,
|
|
204
|
+
sm: 0.0833rem,
|
|
205
|
+
default: 0.1667rem,
|
|
206
|
+
lg: 0.25rem,
|
|
207
|
+
xl: 0.3333rem,
|
|
208
|
+
xxl: 0.5rem,
|
|
209
|
+
),
|
|
210
|
+
// 폰트는 이 테마 컨셉이라 여기서만 Sarasa Fixed K 로 덮는다(라이트·블루프린트 불변)
|
|
211
|
+
font-family: '"Sarasa Fixed K", ui-monospace, monospace',
|
|
212
|
+
font-family-field: '"Sarasa Fixed K", ui-monospace, monospace',
|
|
213
|
+
font-family-monospace: '"Sarasa Fixed K", ui-monospace, monospace',
|
|
214
|
+
font-weight: 300,
|
|
215
|
+
);
|
|
@@ -25,12 +25,12 @@ import {
|
|
|
25
25
|
@use "../../../scss/commons/mixins";
|
|
26
26
|
|
|
27
27
|
sd-additional-button {
|
|
28
|
-
border: 1px solid var(--
|
|
29
|
-
border-radius: var(--
|
|
28
|
+
border: 1px solid var(--sd-bd-soft);
|
|
29
|
+
border-radius: var(--sd-radius-default);
|
|
30
30
|
overflow: hidden;
|
|
31
31
|
|
|
32
32
|
> ._content {
|
|
33
|
-
padding: var(--gap-sm) var(--gap-default);
|
|
33
|
+
padding: var(--sd-gap-sm) var(--sd-gap-default);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
> ._button {
|
|
@@ -39,12 +39,12 @@ import {
|
|
|
39
39
|
@include mixins.flex-direction(row);
|
|
40
40
|
|
|
41
41
|
> sd-anchor {
|
|
42
|
-
padding: var(--gap-sm) !important;
|
|
42
|
+
padding: var(--sd-gap-sm) !important;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
> sd-button > button {
|
|
46
|
-
border-left: 1px solid var(--
|
|
47
|
-
padding: var(--gap-sm) !important;
|
|
46
|
+
border-left: 1px solid var(--sd-bd-hairline) !important;
|
|
47
|
+
padding: var(--sd-gap-sm) !important;
|
|
48
48
|
height: 100%;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -56,32 +56,32 @@ import {
|
|
|
56
56
|
|
|
57
57
|
&[data-sd-size="sm"] {
|
|
58
58
|
> ._content {
|
|
59
|
-
padding: var(--gap-xs) var(--gap-default);
|
|
59
|
+
padding: var(--sd-gap-xs) var(--sd-gap-default);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
> ._button {
|
|
63
63
|
> sd-anchor {
|
|
64
|
-
padding: var(--gap-xs) var(--gap-sm) !important;
|
|
64
|
+
padding: var(--sd-gap-xs) var(--sd-gap-sm) !important;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
> sd-button > button {
|
|
68
|
-
padding: var(--gap-xs) var(--gap-sm) !important;
|
|
68
|
+
padding: var(--sd-gap-xs) var(--sd-gap-sm) !important;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
&[data-sd-size="lg"] {
|
|
74
74
|
> ._content {
|
|
75
|
-
padding: var(--gap-default) var(--gap-xl);
|
|
75
|
+
padding: var(--sd-gap-default) var(--sd-gap-xl);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
> ._button {
|
|
79
79
|
> sd-anchor {
|
|
80
|
-
padding: var(--gap-default) !important;
|
|
80
|
+
padding: var(--sd-gap-default) !important;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
> sd-button > button {
|
|
84
|
-
padding: var(--gap-default) !important;
|
|
84
|
+
padding: var(--sd-gap-default) !important;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
}
|