@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.
Files changed (185) hide show
  1. package/dist/controls/button/sd-additional-button.js +2 -2
  2. package/dist/controls/button/sd-anchor.d.ts.map +1 -1
  3. package/dist/controls/button/sd-anchor.js +3 -3
  4. package/dist/controls/button/sd-button.d.ts.map +1 -1
  5. package/dist/controls/button/sd-button.js +3 -3
  6. package/dist/controls/button/sd-modal-select-button.d.ts.map +1 -1
  7. package/dist/controls/button/sd-modal-select-button.js +2 -2
  8. package/dist/controls/checkbox/sd-checkbox.d.ts.map +1 -1
  9. package/dist/controls/checkbox/sd-checkbox.js +3 -3
  10. package/dist/controls/checkbox/sd-switch.d.ts.map +1 -1
  11. package/dist/controls/checkbox/sd-switch.js +3 -3
  12. package/dist/controls/collapse/sd-collapse-icon.d.ts +1 -1
  13. package/dist/controls/collapse/sd-collapse-icon.d.ts.map +1 -1
  14. package/dist/controls/collapse/sd-collapse-icon.js +2 -2
  15. package/dist/controls/collapse/sd-collapse.d.ts +1 -1
  16. package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
  17. package/dist/controls/collapse/sd-collapse.js +2 -2
  18. package/dist/controls/dropdown/sd-dropdown-popup.d.ts.map +1 -1
  19. package/dist/controls/dropdown/sd-dropdown-popup.js +2 -2
  20. package/dist/controls/dropdown/sd-dropdown.js +1 -1
  21. package/dist/controls/gap/sd-gap.d.ts.map +1 -1
  22. package/dist/controls/gap/sd-gap.js +5 -7
  23. package/dist/controls/input/sd-date-range-picker.js +2 -2
  24. package/dist/controls/input/sd-numpad.d.ts.map +1 -1
  25. package/dist/controls/input/sd-numpad.js +7 -15
  26. package/dist/controls/input/sd-range.js +2 -2
  27. package/dist/controls/input/sd-textarea.js +4 -4
  28. package/dist/controls/input/sd-textfield.d.ts.map +1 -1
  29. package/dist/controls/input/sd-textfield.js +10 -10
  30. package/dist/controls/list/sd-list-item.js +43 -43
  31. package/dist/controls/list/sd-list.js +2 -2
  32. package/dist/controls/pagination/sd-pagination.d.ts.map +1 -1
  33. package/dist/controls/pagination/sd-pagination.js +7 -5
  34. package/dist/controls/select/sd-select-button.d.ts.map +1 -1
  35. package/dist/controls/select/sd-select-button.js +4 -4
  36. package/dist/controls/select/sd-select-item.d.ts.map +1 -1
  37. package/dist/controls/select/sd-select-item.js +3 -3
  38. package/dist/controls/select/sd-select.d.ts.map +1 -1
  39. package/dist/controls/select/sd-select.js +10 -19
  40. package/dist/controls/tab/sd-tab-item.js +2 -2
  41. package/dist/controls/tab/sd-tab.js +2 -2
  42. package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
  43. package/dist/core/busy/sd-busy-container.js +3 -3
  44. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  45. package/dist/core/modal/sd-modal.js +3 -3
  46. package/dist/core/provideSdAngular.d.ts.map +1 -1
  47. package/dist/core/provideSdAngular.js +31 -10
  48. package/dist/core/ripple/setupRipple.js +2 -2
  49. package/dist/core/setupBgTheme.d.ts +0 -1
  50. package/dist/core/setupBgTheme.d.ts.map +1 -1
  51. package/dist/core/setupBgTheme.js +3 -4
  52. package/dist/core/show-effect/setupRevealOnShow.js +1 -1
  53. package/dist/core/toast/sd-toast-container.js +2 -2
  54. package/dist/core/toast/sd-toast.d.ts.map +1 -1
  55. package/dist/core/toast/sd-toast.js +3 -3
  56. package/dist/core/validation/setupInvalid.js +5 -5
  57. package/dist/data/crud/sd-base-container.d.ts.map +1 -1
  58. package/dist/data/crud/sd-base-container.js +50 -52
  59. package/dist/data/kanban/sd-kanban-board.js +2 -2
  60. package/dist/data/kanban/sd-kanban-lane.d.ts.map +1 -1
  61. package/dist/data/kanban/sd-kanban-lane.js +4 -4
  62. package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
  63. package/dist/data/kanban/sd-kanban.js +4 -4
  64. package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
  65. package/dist/data/permission-table/sd-permission-table.js +5 -17
  66. package/dist/data/shared-data/sd-shared-data-select-list.d.ts.map +1 -1
  67. package/dist/data/shared-data/sd-shared-data-select-list.js +5 -19
  68. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  69. package/dist/data/shared-data/sd-shared-data-select.js +8 -15
  70. package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  71. package/dist/data/sheet/sd-sheet-config.modal.js +7 -9
  72. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  73. package/dist/data/sheet/sd-sheet.js +10 -12
  74. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  75. package/dist/data/sheet/useSheetCellStyling.js +1 -1
  76. package/dist/data/state-preset/sd-state-preset.js +5 -5
  77. package/dist/features/editor/sd-markdown-editor.d.ts.map +1 -1
  78. package/dist/features/editor/sd-markdown-editor.js +85 -34
  79. package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
  80. package/dist/features/editor/sd-tiptap-editor.js +192 -61
  81. package/dist/features/theme/sd-theme-provider.d.ts +18 -1
  82. package/dist/features/theme/sd-theme-provider.d.ts.map +1 -1
  83. package/dist/features/theme/sd-theme-provider.js +21 -4
  84. package/dist/features/theme/sd-theme-selector.d.ts.map +1 -1
  85. package/dist/features/theme/sd-theme-selector.js +50 -9
  86. package/dist/features/theme/wcag-contrast.d.ts +9 -0
  87. package/dist/features/theme/wcag-contrast.d.ts.map +1 -0
  88. package/dist/features/theme/wcag-contrast.js +83 -0
  89. package/dist/features/visual/sd-calendar.js +2 -2
  90. package/dist/features/visual/sd-label.d.ts.map +1 -1
  91. package/dist/features/visual/sd-label.js +5 -5
  92. package/dist/features/visual/sd-note.d.ts.map +1 -1
  93. package/dist/features/visual/sd-note.js +3 -3
  94. package/dist/features/visual/sd-progress.d.ts.map +1 -1
  95. package/dist/features/visual/sd-progress.js +3 -3
  96. package/dist/index.d.ts +12 -11
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +10 -9
  99. package/dist/layout/sidebar/sd-sidebar-container.d.ts.map +1 -1
  100. package/dist/layout/sidebar/sd-sidebar-container.js +11 -5
  101. package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
  102. package/dist/layout/sidebar/sd-sidebar-menu.js +5 -17
  103. package/dist/layout/sidebar/sd-sidebar-user.js +32 -32
  104. package/dist/layout/sidebar/sd-sidebar.d.ts.map +1 -1
  105. package/dist/layout/sidebar/sd-sidebar.js +3 -3
  106. package/dist/layout/topbar/sd-topbar-menu.js +5 -5
  107. package/dist/layout/topbar/sd-topbar.d.ts.map +1 -1
  108. package/dist/layout/topbar/sd-topbar.js +5 -5
  109. package/package.json +5 -5
  110. package/scss/commons/_colors.scss +296 -242
  111. package/scss/commons/_density.scss +23 -0
  112. package/scss/commons/_mixins.scss +142 -129
  113. package/scss/commons/_styles.scss +78 -103
  114. package/scss/commons/_theme-variables.scss +16 -2
  115. package/scss/commons/_variables.scss +277 -149
  116. package/scss/controls/_card.scss +12 -8
  117. package/scss/controls/_form-box.scss +7 -7
  118. package/scss/controls/_form-table.scss +7 -7
  119. package/scss/controls/_table.scss +5 -5
  120. package/scss/sd-tokens.md +132 -0
  121. package/scss/styles.scss +3 -4
  122. package/scss/themes/_variables-blueprint.scss +127 -81
  123. package/scss/themes/_variables-ide-dark.scss +215 -0
  124. package/src/controls/button/sd-additional-button.ts +12 -12
  125. package/src/controls/button/sd-anchor.ts +7 -8
  126. package/src/controls/button/sd-button.ts +42 -44
  127. package/src/controls/button/sd-modal-select-button.ts +15 -19
  128. package/src/controls/checkbox/sd-checkbox.ts +55 -43
  129. package/src/controls/checkbox/sd-switch.ts +18 -19
  130. package/src/controls/collapse/sd-collapse-icon.ts +2 -2
  131. package/src/controls/collapse/sd-collapse.ts +2 -2
  132. package/src/controls/dropdown/sd-dropdown-popup.ts +10 -12
  133. package/src/controls/dropdown/sd-dropdown.ts +1 -1
  134. package/src/controls/gap/sd-gap.ts +11 -9
  135. package/src/controls/input/sd-date-range-picker.ts +1 -1
  136. package/src/controls/input/sd-numpad.ts +3 -11
  137. package/src/controls/input/sd-range.ts +1 -1
  138. package/src/controls/input/sd-textarea.ts +18 -18
  139. package/src/controls/input/sd-textfield.ts +39 -37
  140. package/src/controls/list/sd-list-item.ts +195 -195
  141. package/src/controls/list/sd-list.ts +8 -8
  142. package/src/controls/pagination/sd-pagination.ts +4 -2
  143. package/src/controls/select/sd-select-button.ts +6 -10
  144. package/src/controls/select/sd-select-item.ts +14 -15
  145. package/src/controls/select/sd-select.ts +34 -35
  146. package/src/controls/tab/sd-tab-item.ts +4 -4
  147. package/src/controls/tab/sd-tab.ts +2 -2
  148. package/src/core/busy/sd-busy-container.ts +17 -16
  149. package/src/core/modal/sd-modal.ts +38 -32
  150. package/src/core/provideSdAngular.ts +34 -10
  151. package/src/core/ripple/setupRipple.ts +2 -2
  152. package/src/core/setupBgTheme.ts +5 -14
  153. package/src/core/show-effect/setupRevealOnShow.ts +1 -1
  154. package/src/core/toast/sd-toast-container.ts +5 -5
  155. package/src/core/toast/sd-toast.ts +16 -17
  156. package/src/core/validation/setupInvalid.ts +5 -5
  157. package/src/data/crud/sd-base-container.ts +120 -122
  158. package/src/data/kanban/sd-kanban-board.ts +1 -1
  159. package/src/data/kanban/sd-kanban-lane.ts +9 -14
  160. package/src/data/kanban/sd-kanban.ts +9 -19
  161. package/src/data/permission-table/sd-permission-table.ts +12 -20
  162. package/src/data/shared-data/sd-shared-data-select-list.ts +5 -19
  163. package/src/data/shared-data/sd-shared-data-select.ts +11 -28
  164. package/src/data/sheet/sd-sheet-config.modal.ts +5 -7
  165. package/src/data/sheet/sd-sheet.ts +29 -28
  166. package/src/data/sheet/useSheetCellStyling.ts +12 -3
  167. package/src/data/state-preset/sd-state-preset.ts +16 -16
  168. package/src/features/editor/sd-markdown-editor.ts +110 -56
  169. package/src/features/editor/sd-tiptap-editor.ts +214 -81
  170. package/src/features/theme/sd-theme-provider.ts +28 -3
  171. package/src/features/theme/sd-theme-selector.ts +21 -2
  172. package/src/features/theme/wcag-contrast.ts +103 -0
  173. package/src/features/visual/sd-calendar.ts +8 -8
  174. package/src/features/visual/sd-label.ts +11 -12
  175. package/src/features/visual/sd-note.ts +10 -11
  176. package/src/features/visual/sd-progress.ts +9 -11
  177. package/src/index.ts +15 -40
  178. package/src/layout/sidebar/sd-sidebar-container.ts +21 -8
  179. package/src/layout/sidebar/sd-sidebar-menu.ts +15 -17
  180. package/src/layout/sidebar/sd-sidebar-user.ts +100 -100
  181. package/src/layout/sidebar/sd-sidebar.ts +7 -9
  182. package/src/layout/topbar/sd-topbar-menu.ts +3 -3
  183. package/src/layout/topbar/sd-topbar.ts +12 -14
  184. package/styles.css +1641 -2462
  185. package/scss/themes/_blueprint-surfaces.scss +0 -87
@@ -16,38 +16,37 @@ import {
16
16
  `,
17
17
  styles: [
18
18
  /* language=SCSS */ `
19
- @use "sass:map";
20
-
21
19
  @use "../../../scss/commons/variables";
22
20
 
23
21
  sd-anchor {
24
22
  display: inline-block;
25
23
  cursor: pointer;
26
24
 
27
- @each $key, $val in map.get(variables.$vars, theme) {
25
+ @each $key in variables.$theme-keys {
28
26
  &[data-sd-theme="#{$key}"] {
29
- color: var(--theme-#{$key}-default);
27
+ color: var(--sd-tx-#{$key});
30
28
 
31
29
  &:hover {
32
- color: var(--theme-#{$key}-darker);
30
+ color: var(--sd-tx-#{$key}-hover);
33
31
  text-decoration: underline;
34
32
  }
35
33
 
36
34
  &:active {
37
- color: var(--theme-#{$key}-default);
35
+ color: var(--sd-tx-#{$key});
38
36
  }
39
37
 
40
38
  @media all and (pointer: coarse) {
41
39
  &:hover {
42
- color: var(--theme-#{$key}-default);
40
+ color: var(--sd-tx-#{$key});
43
41
  text-decoration: none;
44
42
  }
45
43
  }
46
44
  }
47
45
  }
48
46
 
47
+ // disabled 는 색 치환 단일 규약 (DEC-009 — opacity 방식 폐기)
49
48
  &[data-sd-disabled="true"] {
50
- opacity: 0.3;
49
+ color: var(--sd-tx-disabled) !important;
51
50
  pointer-events: none;
52
51
  }
53
52
  }
@@ -27,8 +27,6 @@ import { SdRipple } from "../../core/ripple/sd-ripple";
27
27
  `,
28
28
  styles: [
29
29
  /* language=SCSS */ `
30
- @use "sass:map";
31
-
32
30
  @use "../../../scss/commons/variables";
33
31
  @use "../../../scss/commons/mixins";
34
32
 
@@ -36,28 +34,28 @@ import { SdRipple } from "../../core/ripple/sd-ripple";
36
34
  > button {
37
35
  @include mixins.form-control-base();
38
36
  user-select: none;
39
- padding: var(--gap-sm) var(--gap-lg);
37
+ padding: var(--sd-gap-sm) var(--sd-gap-lg);
40
38
  width: 100%;
41
39
 
42
- background: var(--control-color);
43
- border-color: var(--theme-primary-default);
44
- border-radius: var(--border-radius-default);
40
+ background-color: var(--sd-bg-control);
41
+ border-color: var(--sd-bd-primary-solid);
42
+ border-radius: var(--sd-radius-default);
45
43
 
46
44
  font-weight: bold;
47
45
  text-align: center;
48
46
  cursor: pointer;
49
47
 
50
- transition: var(--animation-duration) linear;
48
+ transition: var(--sd-animation-duration) linear;
51
49
  transition-property: border, background;
52
50
 
53
51
  &:hover {
54
- background: var(--theme-gray-lightest);
52
+ background-color: var(--sd-bg-state-hover);
55
53
  }
56
54
 
57
55
  &:disabled {
58
- background: var(--control-color);
59
- border-color: var(--theme-gray-lighter);
60
- color: var(--text-trans-lighter);
56
+ background-color: var(--sd-bg-disabled);
57
+ border-color: var(--sd-bd-disabled);
58
+ color: var(--sd-tx-disabled);
61
59
  cursor: default;
62
60
  }
63
61
  }
@@ -65,36 +63,36 @@ import { SdRipple } from "../../core/ripple/sd-ripple";
65
63
  &[data-sd-inset="true"] > button {
66
64
  border-radius: 0;
67
65
  border: none;
68
- color: var(--theme-primary-default);
66
+ color: var(--sd-tx-primary);
69
67
 
70
68
  &:hover {
71
- color: var(--theme-primary-dark);
69
+ color: var(--sd-tx-primary-hover);
72
70
  }
73
71
 
74
72
  &:disabled {
75
- background: var(--control-color);
76
- border-color: var(--theme-gray-lighter);
77
- color: var(--text-trans-default);
73
+ background-color: var(--sd-bg-disabled);
74
+ border-color: var(--sd-bd-disabled);
75
+ color: var(--sd-tx-disabled);
78
76
  cursor: default;
79
77
  }
80
78
  }
81
79
 
82
- @each $key, $val in map.get(variables.$vars, theme) {
80
+ @each $key in variables.$theme-keys {
83
81
  &[data-sd-theme="#{$key}"] > button {
84
- background: var(--theme-#{$key}-default);
85
- border-color: var(--theme-#{$key}-default);
86
- color: var(--text-trans-rev-default);
82
+ background-color: var(--sd-bg-#{$key}-solid);
83
+ border-color: var(--sd-bd-#{$key}-solid);
84
+ color: var(--sd-tx-#{$key}-solid);
87
85
 
88
86
  &:hover {
89
- background: var(--theme-#{$key}-dark);
90
- border-color: var(--theme-#{$key}-dark);
91
- color: var(--text-trans-rev-default);
87
+ background-color: var(--sd-bg-#{$key}-solid-hover);
88
+ border-color: var(--sd-bd-#{$key}-solid-hover);
89
+ color: var(--sd-tx-#{$key}-solid);
92
90
  }
93
91
 
94
92
  &:disabled {
95
- background: var(--theme-gray-lighter);
96
- border-color: var(--theme-gray-lighter);
97
- color: var(--text-trans-lighter);
93
+ background-color: var(--sd-bg-disabled);
94
+ border-color: var(--sd-bd-disabled);
95
+ color: var(--sd-tx-disabled);
98
96
  cursor: default;
99
97
  }
100
98
  }
@@ -102,49 +100,49 @@ import { SdRipple } from "../../core/ripple/sd-ripple";
102
100
 
103
101
  &[data-sd-theme="link"] > button {
104
102
  border-color: transparent;
105
- background: transparent;
106
- color: var(--theme-primary-default);
103
+ background-color: transparent;
104
+ color: var(--sd-tx-primary);
107
105
 
108
106
  &:hover {
109
- color: var(--theme-primary-dark);
107
+ color: var(--sd-tx-primary-hover);
110
108
  }
111
109
 
112
110
  &:disabled {
113
111
  border-color: transparent;
114
- color: var(--text-trans-lighter);
112
+ color: var(--sd-tx-disabled);
115
113
  }
116
114
  }
117
115
 
118
- @each $key, $val in map.get(variables.$vars, theme) {
116
+ @each $key in variables.$theme-keys {
119
117
  &[data-sd-theme="link-#{$key}"] > button {
120
118
  border-color: transparent;
121
- background: transparent;
122
- color: var(--theme-#{$key}-default);
119
+ background-color: transparent;
120
+ color: var(--sd-tx-#{$key});
123
121
 
124
122
  &:hover {
125
- background: var(--trans-lighter);
126
- color: var(--theme-#{$key}-dark);
123
+ background-color: var(--sd-bg-state-hover);
124
+ color: var(--sd-tx-#{$key}-hover);
127
125
  }
128
126
 
129
127
  &:disabled {
130
128
  border-color: transparent;
131
- color: var(--text-trans-lighter);
129
+ color: var(--sd-tx-disabled);
132
130
  }
133
131
  }
134
132
  }
135
133
 
136
134
  &[data-sd-theme="link-rev"] > button {
137
135
  border-color: transparent;
138
- background: transparent;
139
- color: var(--text-trans-rev-default);
136
+ background-color: transparent;
137
+ color: var(--sd-tx-on-inverse);
140
138
 
141
139
  &:hover {
142
- color: var(--text-trans-rev-dark);
140
+ color: var(--sd-tx-on-inverse-muted);
143
141
  }
144
142
 
145
143
  &:disabled {
146
144
  border-color: transparent;
147
- color: var(--text-trans-rev-darker);
145
+ color: var(--sd-tx-on-inverse-disabled);
148
146
  }
149
147
  }
150
148
 
@@ -155,15 +153,15 @@ import { SdRipple } from "../../core/ripple/sd-ripple";
155
153
  }
156
154
 
157
155
  &[data-sd-size="xs"] > button {
158
- padding: var(--gap-xxs) var(--gap-xs);
156
+ padding: var(--sd-gap-xxs) var(--sd-gap-xs);
159
157
  }
160
-
158
+
161
159
  &[data-sd-size="sm"] > button {
162
- padding: var(--gap-xs) var(--gap-default);
160
+ padding: var(--sd-gap-xs) var(--sd-gap-default);
163
161
  }
164
162
 
165
163
  &[data-sd-size="lg"] > button {
166
- padding: var(--gap-default) var(--gap-xl);
164
+ padding: var(--sd-gap-default) var(--sd-gap-xl);
167
165
  }
168
166
 
169
167
  &[data-sd-disabled="true"] {
@@ -70,18 +70,18 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
70
70
  sd-modal-select-button {
71
71
  display: flex;
72
72
  flex-direction: row;
73
- gap: var(--gap-sm);
73
+ gap: var(--sd-gap-sm);
74
74
  position: relative;
75
75
  width: 100%;
76
76
  min-width: 3em;
77
77
 
78
- border: 1px solid var(--trans-light);
79
- border-radius: var(--border-radius-default);
78
+ border: 1px solid var(--sd-bd-soft);
79
+ border-radius: var(--sd-radius-default);
80
80
  overflow: hidden;
81
81
 
82
82
  > ._content {
83
83
  flex: 1;
84
- padding: var(--gap-sm) var(--gap-default);
84
+ padding: var(--sd-gap-sm) var(--sd-gap-default);
85
85
  }
86
86
 
87
87
  > ._button {
@@ -90,12 +90,12 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
90
90
  @include mixins.flex-direction(row);
91
91
 
92
92
  > sd-anchor {
93
- padding: var(--gap-sm) !important;
93
+ padding: var(--sd-gap-sm) !important;
94
94
  }
95
95
 
96
96
  > sd-button > button {
97
- border-left: 1px solid var(--trans-lighter) !important;
98
- padding: var(--gap-sm) !important;
97
+ border-left: 1px solid var(--sd-bd-hairline) !important;
98
+ padding: var(--sd-gap-sm) !important;
99
99
  height: 100%;
100
100
  }
101
101
  }
@@ -107,32 +107,32 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
107
107
 
108
108
  &[data-sd-size="sm"] {
109
109
  > ._content {
110
- padding: var(--gap-xs) var(--gap-default);
110
+ padding: var(--sd-gap-xs) var(--sd-gap-default);
111
111
  }
112
112
 
113
113
  > ._button {
114
114
  > sd-anchor {
115
- padding: var(--gap-xs) var(--gap-sm) !important;
115
+ padding: var(--sd-gap-xs) var(--sd-gap-sm) !important;
116
116
  }
117
117
 
118
118
  > sd-button > button {
119
- padding: var(--gap-xs) var(--gap-sm) !important;
119
+ padding: var(--sd-gap-xs) var(--sd-gap-sm) !important;
120
120
  }
121
121
  }
122
122
  }
123
123
 
124
124
  &[data-sd-size="lg"] {
125
125
  > ._content {
126
- padding: var(--gap-default) var(--gap-xl);
126
+ padding: var(--sd-gap-default) var(--sd-gap-xl);
127
127
  }
128
128
 
129
129
  > ._button {
130
130
  > sd-anchor {
131
- padding: var(--gap-default) !important;
131
+ padding: var(--sd-gap-default) !important;
132
132
  }
133
133
 
134
134
  > sd-button > button {
135
- padding: var(--gap-default) !important;
135
+ padding: var(--sd-gap-default) !important;
136
136
  }
137
137
  }
138
138
  }
@@ -145,10 +145,7 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
145
145
  "[attr.data-sd-disabled]": "disabled()",
146
146
  },
147
147
  })
148
- export class SdModalSelectButton<
149
- K,
150
- M extends keyof SelectModeValue<K> = keyof SelectModeValue<K>,
151
- > {
148
+ export class SdModalSelectButton<K, M extends keyof SelectModeValue<K> = keyof SelectModeValue<K>> {
152
149
  private readonly _sdModal = inject(SdModalProvider);
153
150
 
154
151
  modal = input.required<SdSelectModalInfo<SdSelectModal<K>>>();
@@ -205,8 +202,7 @@ export class SdModalSelectButton<
205
202
  });
206
203
 
207
204
  if (result) {
208
- const newValue =
209
- this.selectMode() === "multi" ? result.selectedKeys : result.selectedKeys[0];
205
+ const newValue = this.selectMode() === "multi" ? result.selectedKeys : result.selectedKeys[0];
210
206
  this.value.set(newValue as SelectModeValue<K>[M]);
211
207
  }
212
208
  }
@@ -33,8 +33,6 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
33
33
  `,
34
34
  styles: [
35
35
  /* language=SCSS */ `
36
- @use "sass:map";
37
-
38
36
  @use "../../../scss/commons/variables";
39
37
  @use "../../../scss/commons/mixins";
40
38
 
@@ -44,14 +42,15 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
44
42
  cursor: pointer;
45
43
 
46
44
  height: calc(
47
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2 + 2px
45
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-sm) * 2 +
46
+ 2px
48
47
  );
49
- gap: var(--gap-sm);
48
+ gap: var(--sd-gap-sm);
50
49
 
51
50
  @supports not (appearance: auto) {
52
51
  gap: 0;
53
52
  > * + * {
54
- margin-left: var(--gap-sm);
53
+ margin-left: var(--sd-gap-sm);
55
54
  }
56
55
  }
57
56
 
@@ -60,16 +59,16 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
60
59
  vertical-align: -0.125em;
61
60
  user-select: none;
62
61
 
63
- width: calc(var(--font-size-default) + 2px);
64
- height: calc(var(--font-size-default) + 2px);
65
- border: 1px solid var(--border-color-light);
66
- background: var(--theme-secondary-lightest);
62
+ width: calc(var(--sd-font-size-default) + 2px);
63
+ height: calc(var(--sd-font-size-default) + 2px);
64
+ border: 1px solid var(--sd-bd-field);
65
+ background-color: var(--sd-bg-field);
67
66
 
68
67
  > ._indicator {
69
68
  margin: -1px -2px;
70
69
  text-align: center;
71
70
  opacity: 0;
72
- color: var(--text-trans-rev-default);
71
+ color: var(--sd-tx-primary-solid);
73
72
 
74
73
  > ng-icon {
75
74
  > svg {
@@ -83,7 +82,7 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
83
82
  ._contents {
84
83
  display: inline-block;
85
84
  vertical-align: top;
86
- padding-left: var(--gap-sm);
85
+ padding-left: var(--sd-gap-sm);
87
86
  }
88
87
 
89
88
  > ._indicator_rect + ._contents:empty {
@@ -91,13 +90,13 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
91
90
  }
92
91
 
93
92
  &:focus > ._indicator_rect {
94
- border-color: var(--theme-primary-dark);
93
+ border-color: var(--sd-focus-ring-color);
95
94
  }
96
95
 
97
96
  &[data-sd-checked="true"] {
98
97
  > ._indicator_rect {
99
- border-color: var(--theme-primary-default);
100
- background: var(--theme-primary-default);
98
+ border-color: var(--sd-bd-primary-solid);
99
+ background-color: var(--sd-bg-primary-solid);
101
100
 
102
101
  > ._indicator {
103
102
  opacity: 1;
@@ -105,30 +104,30 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
105
104
  }
106
105
  }
107
106
 
108
- @each $key, $val in map.get(variables.$vars, theme) {
107
+ @each $key in variables.$theme-keys {
109
108
  &[data-sd-theme="#{$key}"] {
110
109
  > ._indicator_rect {
111
- background: var(--theme-#{$key}-lightest);
110
+ background-color: var(--sd-bg-#{$key}-subtle);
112
111
 
113
112
  > ._indicator {
114
- color: var(--theme-#{$key}-default);
113
+ color: var(--sd-tx-#{$key});
115
114
  }
116
115
  }
117
116
 
118
117
  &[data-sd-checked="true"] {
119
118
  > ._indicator_rect {
120
- border-color: var(--theme-#{$key}-default);
121
- background: var(--theme-#{$key}-default);
119
+ border-color: var(--sd-bd-#{$key}-solid);
120
+ background-color: var(--sd-bg-#{$key}-solid);
122
121
 
123
122
  > ._indicator {
124
- color: var(--text-trans-rev-default);
123
+ color: var(--sd-tx-#{$key}-solid);
125
124
  }
126
125
  }
127
126
  }
128
127
 
129
128
  &:focus {
130
129
  > ._indicator_rect {
131
- border-color: var(--theme-#{$key}-dark);
130
+ border-color: var(--sd-focus-ring-color);
132
131
  }
133
132
  }
134
133
  }
@@ -136,20 +135,20 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
136
135
 
137
136
  &[data-sd-theme="white"] {
138
137
  > ._indicator_rect {
139
- background: var(--control-color);
140
- border-color: var(--text-trans-lightest);
138
+ background-color: var(--sd-bg-control);
139
+ border-color: var(--sd-bd-field);
141
140
  }
142
141
 
143
142
  &[data-sd-checked="true"] {
144
143
  > ._indicator_rect {
145
- border-color: var(--theme-primary-default);
146
- background: var(--theme-primary-default);
144
+ border-color: var(--sd-bd-primary-solid);
145
+ background-color: var(--sd-bg-primary-solid);
147
146
  }
148
147
  }
149
148
 
150
149
  &:focus {
151
150
  > ._indicator_rect {
152
- border-color: var(--theme-primary-dark);
151
+ border-color: var(--sd-focus-ring-color);
153
152
  }
154
153
  }
155
154
  }
@@ -157,57 +156,59 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
157
156
  &[data-sd-radio="true"] {
158
157
  > ._indicator_rect {
159
158
  border-radius: 100%;
160
- padding: var(--gap-xs);
159
+ padding: var(--sd-gap-xs);
161
160
 
162
161
  > ._indicator {
163
162
  border-radius: 100%;
164
163
  width: 100%;
165
164
  height: 100%;
166
- background: var(--theme-primary-default);
165
+ background-color: var(--sd-bg-primary-solid);
167
166
  }
168
167
  }
169
168
 
170
169
  &[data-sd-checked="true"] {
171
170
  > ._indicator_rect {
172
- background: var(--theme-secondary-lightest);
173
- border-color: var(--theme-primary-dark);
171
+ background-color: var(--sd-bg-field);
172
+ border-color: var(--sd-bd-primary-solid);
174
173
  }
175
174
  }
176
175
  }
177
176
 
178
177
  &[data-sd-size="sm"] {
179
178
  height: calc(
180
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2 + 2px
179
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-xs) * 2 +
180
+ 2px
181
181
  );
182
- padding: var(--gap-xs) var(--gap-sm);
183
- gap: var(--gap-xs);
182
+ padding: var(--sd-gap-xs) var(--sd-gap-sm);
183
+ gap: var(--sd-gap-xs);
184
184
 
185
185
  @supports not (appearance: auto) {
186
186
  gap: 0;
187
187
  > * + * {
188
- margin-left: var(--gap-xs);
188
+ margin-left: var(--sd-gap-xs);
189
189
  }
190
190
  }
191
191
  }
192
192
 
193
193
  &[data-sd-size="lg"] {
194
194
  height: calc(
195
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2 + 2px
195
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-default) *
196
+ 2 + 2px
196
197
  );
197
- padding: var(--gap-default) var(--gap-lg);
198
- gap: var(--gap-default);
198
+ padding: var(--sd-gap-default) var(--sd-gap-lg);
199
+ gap: var(--sd-gap-default);
199
200
 
200
201
  @supports not (appearance: auto) {
201
202
  gap: 0;
202
203
  > * + * {
203
- margin-left: var(--gap-default);
204
+ margin-left: var(--sd-gap-default);
204
205
  }
205
206
  }
206
207
  }
207
208
 
208
209
  &[data-sd-inset="true"] {
209
210
  height: calc(
210
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2
211
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-sm) * 2
211
212
  );
212
213
  border: none;
213
214
  justify-content: center;
@@ -215,13 +216,14 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
215
216
 
216
217
  &[data-sd-size="sm"] {
217
218
  height: calc(
218
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2
219
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-xs) * 2
219
220
  );
220
221
  }
221
222
 
222
223
  &[data-sd-size="lg"] {
223
224
  height: calc(
224
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2
225
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) +
226
+ var(--sd-gap-default) * 2
225
227
  );
226
228
  }
227
229
  }
@@ -231,13 +233,23 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
231
233
  vertical-align: top;
232
234
  padding: 0;
233
235
  border: none;
234
- height: calc(var(--font-size-default) * var(--line-height-strip-unit));
236
+ height: calc(var(--sd-font-size-default) * var(--sd-line-height-strip-unit));
235
237
  width: auto;
236
238
  }
237
239
 
240
+ // disabled 는 색 치환 단일 규약 (DEC-009 — opacity 방식 폐기)
238
241
  &[data-sd-disabled="true"] {
239
- opacity: 0.3;
242
+ color: var(--sd-tx-disabled) !important;
240
243
  pointer-events: none;
244
+
245
+ > ._indicator_rect {
246
+ background-color: var(--sd-bg-disabled) !important;
247
+ border-color: var(--sd-bd-disabled) !important;
248
+
249
+ > ._indicator {
250
+ color: var(--sd-tx-disabled) !important;
251
+ }
252
+ }
241
253
  }
242
254
  }
243
255
  `,
@@ -32,41 +32,39 @@ import { setupModelHook } from "../../core/setupModelHook";
32
32
  `,
33
33
  styles: [
34
34
  /* language=SCSS */ `
35
- @use "sass:map";
36
-
37
35
  @use "../../../scss/commons/variables";
38
36
 
39
37
  sd-switch {
40
38
  display: block;
41
- padding: var(--gap-sm) 0;
39
+ padding: var(--sd-gap-sm) 0;
42
40
  border: 1px solid transparent;
43
41
  vertical-align: top;
44
42
  cursor: pointer;
45
43
 
46
44
  > div {
47
- height: var(--line-height);
48
- width: calc(var(--line-height) * 2 - var(--gap-xs));
49
- padding: calc(var(--gap-xs) / 2);
50
- border-radius: calc(var(--line-height) / 2);
45
+ height: var(--sd-line-height);
46
+ width: calc(var(--sd-line-height) * 2 - var(--sd-gap-xs));
47
+ padding: calc(var(--sd-gap-xs) / 2);
48
+ border-radius: calc(var(--sd-line-height) / 2);
51
49
  text-align: left;
52
50
 
53
- background: var(--theme-gray-lighter);
51
+ background-color: var(--sd-bg-track);
54
52
 
55
53
  > div {
56
54
  display: inline-block;
57
- width: calc(var(--line-height) - var(--gap-xs));
58
- height: calc(var(--line-height) - var(--gap-xs));
55
+ width: calc(var(--sd-line-height) - var(--sd-gap-xs));
56
+ height: calc(var(--sd-line-height) - var(--sd-gap-xs));
59
57
  border-radius: 100%;
60
58
 
61
- background: var(--control-color);
59
+ background-color: var(--sd-bg-control);
62
60
 
63
- transition: transform var(--animation-duration);
61
+ transition: transform var(--sd-animation-duration);
64
62
  }
65
63
  }
66
64
 
67
65
  &[data-sd-on="true"] {
68
66
  > div {
69
- background: var(--theme-success-default);
67
+ background-color: var(--sd-bg-success-solid);
70
68
 
71
69
  > div {
72
70
  transform: translateX(100%);
@@ -85,29 +83,30 @@ import { setupModelHook } from "../../core/setupModelHook";
85
83
  }
86
84
 
87
85
  &[data-sd-size="sm"] {
88
- padding: var(--gap-sm) 0;
86
+ padding: var(--sd-gap-sm) 0;
89
87
  }
90
88
 
91
89
  &[data-sd-size="lg"] {
92
- padding: var(--gap-default) 0;
90
+ padding: var(--sd-gap-default) 0;
93
91
  }
94
92
 
95
- @each $key, $val in map.get(variables.$vars, theme) {
93
+ @each $key in variables.$theme-keys {
96
94
  &[data-sd-theme="#{$key}"] {
97
95
  &[data-sd-on="true"] {
98
96
  > div {
99
- background: var(--theme-#{$key}-default);
97
+ background-color: var(--sd-bg-#{$key}-solid);
100
98
  }
101
99
  }
102
100
  }
103
101
  }
104
102
 
103
+ // disabled 는 색 치환 단일 규약 (DEC-009 — opacity 방식 폐기)
105
104
  &[data-sd-disabled="true"] {
106
105
  > div {
107
- opacity: 0.5;
106
+ background-color: var(--sd-bg-disabled) !important;
108
107
 
109
108
  > div {
110
- background: var(--theme-gray-default);
109
+ background-color: var(--sd-bg-gray-solid);
111
110
  }
112
111
  }
113
112
  }