@simplysm/angular 14.1.21 → 14.2.2

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 (194) 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 +1 -1
  58. package/dist/data/crud/sd-base-container.d.ts.map +1 -1
  59. package/dist/data/crud/sd-base-container.js +50 -52
  60. package/dist/data/crud/sd-crud-detail.d.ts +1 -1
  61. package/dist/data/crud/sd-crud-detail.d.ts.map +1 -1
  62. package/dist/data/crud/sd-crud-list.d.ts +3 -3
  63. package/dist/data/crud/sd-crud-list.d.ts.map +1 -1
  64. package/dist/data/kanban/sd-kanban-board.js +2 -2
  65. package/dist/data/kanban/sd-kanban-lane.d.ts.map +1 -1
  66. package/dist/data/kanban/sd-kanban-lane.js +4 -4
  67. package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
  68. package/dist/data/kanban/sd-kanban.js +4 -4
  69. package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
  70. package/dist/data/permission-table/sd-permission-table.js +5 -17
  71. package/dist/data/shared-data/sd-shared-data-select-list.d.ts.map +1 -1
  72. package/dist/data/shared-data/sd-shared-data-select-list.js +5 -19
  73. package/dist/data/shared-data/sd-shared-data-select.d.ts +2 -2
  74. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  75. package/dist/data/shared-data/sd-shared-data-select.js +8 -15
  76. package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  77. package/dist/data/sheet/sd-sheet-config.modal.js +7 -9
  78. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  79. package/dist/data/sheet/sd-sheet.js +10 -12
  80. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  81. package/dist/data/sheet/useSheetCellStyling.js +1 -1
  82. package/dist/data/state-preset/sd-state-preset.d.ts +2 -2
  83. package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
  84. package/dist/data/state-preset/sd-state-preset.js +5 -5
  85. package/dist/features/editor/sd-markdown-editor.d.ts.map +1 -1
  86. package/dist/features/editor/sd-markdown-editor.js +85 -34
  87. package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
  88. package/dist/features/editor/sd-tiptap-editor.js +192 -61
  89. package/dist/features/theme/sd-theme-provider.d.ts +18 -1
  90. package/dist/features/theme/sd-theme-provider.d.ts.map +1 -1
  91. package/dist/features/theme/sd-theme-provider.js +21 -4
  92. package/dist/features/theme/sd-theme-selector.d.ts +1 -1
  93. package/dist/features/theme/sd-theme-selector.d.ts.map +1 -1
  94. package/dist/features/theme/sd-theme-selector.js +50 -9
  95. package/dist/features/theme/wcag-contrast.d.ts +9 -0
  96. package/dist/features/theme/wcag-contrast.d.ts.map +1 -0
  97. package/dist/features/theme/wcag-contrast.js +83 -0
  98. package/dist/features/visual/sd-calendar.js +2 -2
  99. package/dist/features/visual/sd-label.d.ts.map +1 -1
  100. package/dist/features/visual/sd-label.js +5 -5
  101. package/dist/features/visual/sd-note.d.ts.map +1 -1
  102. package/dist/features/visual/sd-note.js +3 -3
  103. package/dist/features/visual/sd-progress.d.ts.map +1 -1
  104. package/dist/features/visual/sd-progress.js +3 -3
  105. package/dist/index.d.ts +12 -11
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +10 -9
  108. package/dist/layout/sidebar/sd-sidebar-container.d.ts.map +1 -1
  109. package/dist/layout/sidebar/sd-sidebar-container.js +11 -5
  110. package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
  111. package/dist/layout/sidebar/sd-sidebar-menu.js +5 -17
  112. package/dist/layout/sidebar/sd-sidebar-user.js +32 -32
  113. package/dist/layout/sidebar/sd-sidebar.d.ts.map +1 -1
  114. package/dist/layout/sidebar/sd-sidebar.js +3 -3
  115. package/dist/layout/topbar/sd-topbar-menu.js +5 -5
  116. package/dist/layout/topbar/sd-topbar.d.ts.map +1 -1
  117. package/dist/layout/topbar/sd-topbar.js +5 -5
  118. package/package.json +26 -26
  119. package/scss/commons/_colors.scss +296 -242
  120. package/scss/commons/_density.scss +23 -0
  121. package/scss/commons/_mixins.scss +142 -129
  122. package/scss/commons/_styles.scss +78 -103
  123. package/scss/commons/_theme-variables.scss +16 -2
  124. package/scss/commons/_variables.scss +277 -149
  125. package/scss/controls/_card.scss +12 -8
  126. package/scss/controls/_form-box.scss +7 -7
  127. package/scss/controls/_form-table.scss +7 -7
  128. package/scss/controls/_table.scss +5 -5
  129. package/scss/sd-tokens.md +132 -0
  130. package/scss/styles.scss +3 -4
  131. package/scss/themes/_variables-blueprint.scss +127 -81
  132. package/scss/themes/_variables-ide-dark.scss +215 -0
  133. package/src/controls/button/sd-additional-button.ts +12 -12
  134. package/src/controls/button/sd-anchor.ts +7 -8
  135. package/src/controls/button/sd-button.ts +42 -44
  136. package/src/controls/button/sd-modal-select-button.ts +15 -19
  137. package/src/controls/checkbox/sd-checkbox.ts +55 -43
  138. package/src/controls/checkbox/sd-switch.ts +18 -19
  139. package/src/controls/collapse/sd-collapse-icon.ts +2 -2
  140. package/src/controls/collapse/sd-collapse.ts +2 -2
  141. package/src/controls/dropdown/sd-dropdown-popup.ts +10 -12
  142. package/src/controls/dropdown/sd-dropdown.ts +1 -1
  143. package/src/controls/gap/sd-gap.ts +11 -9
  144. package/src/controls/input/sd-date-range-picker.ts +1 -1
  145. package/src/controls/input/sd-numpad.ts +3 -11
  146. package/src/controls/input/sd-range.ts +1 -1
  147. package/src/controls/input/sd-textarea.ts +18 -18
  148. package/src/controls/input/sd-textfield.ts +39 -37
  149. package/src/controls/list/sd-list-item.ts +195 -195
  150. package/src/controls/list/sd-list.ts +8 -8
  151. package/src/controls/pagination/sd-pagination.ts +4 -2
  152. package/src/controls/select/sd-select-button.ts +6 -10
  153. package/src/controls/select/sd-select-item.ts +14 -15
  154. package/src/controls/select/sd-select.ts +34 -35
  155. package/src/controls/tab/sd-tab-item.ts +4 -4
  156. package/src/controls/tab/sd-tab.ts +2 -2
  157. package/src/core/busy/sd-busy-container.ts +17 -16
  158. package/src/core/modal/sd-modal.ts +38 -32
  159. package/src/core/provideSdAngular.ts +34 -10
  160. package/src/core/ripple/setupRipple.ts +2 -2
  161. package/src/core/setupBgTheme.ts +5 -14
  162. package/src/core/show-effect/setupRevealOnShow.ts +1 -1
  163. package/src/core/toast/sd-toast-container.ts +5 -5
  164. package/src/core/toast/sd-toast.ts +16 -17
  165. package/src/core/validation/setupInvalid.ts +5 -5
  166. package/src/data/crud/sd-base-container.ts +120 -122
  167. package/src/data/kanban/sd-kanban-board.ts +1 -1
  168. package/src/data/kanban/sd-kanban-lane.ts +9 -14
  169. package/src/data/kanban/sd-kanban.ts +9 -19
  170. package/src/data/permission-table/sd-permission-table.ts +12 -20
  171. package/src/data/shared-data/sd-shared-data-select-list.ts +5 -19
  172. package/src/data/shared-data/sd-shared-data-select.ts +11 -28
  173. package/src/data/sheet/sd-sheet-config.modal.ts +5 -7
  174. package/src/data/sheet/sd-sheet.ts +29 -28
  175. package/src/data/sheet/useSheetCellStyling.ts +12 -3
  176. package/src/data/state-preset/sd-state-preset.ts +16 -16
  177. package/src/features/editor/sd-markdown-editor.ts +110 -56
  178. package/src/features/editor/sd-tiptap-editor.ts +214 -81
  179. package/src/features/theme/sd-theme-provider.ts +28 -3
  180. package/src/features/theme/sd-theme-selector.ts +21 -2
  181. package/src/features/theme/wcag-contrast.ts +103 -0
  182. package/src/features/visual/sd-calendar.ts +8 -8
  183. package/src/features/visual/sd-label.ts +11 -12
  184. package/src/features/visual/sd-note.ts +10 -11
  185. package/src/features/visual/sd-progress.ts +9 -11
  186. package/src/index.ts +15 -40
  187. package/src/layout/sidebar/sd-sidebar-container.ts +21 -8
  188. package/src/layout/sidebar/sd-sidebar-menu.ts +15 -17
  189. package/src/layout/sidebar/sd-sidebar-user.ts +100 -100
  190. package/src/layout/sidebar/sd-sidebar.ts +7 -9
  191. package/src/layout/topbar/sd-topbar-menu.ts +3 -3
  192. package/src/layout/topbar/sd-topbar.ts +12 -14
  193. package/styles.css +1641 -2462
  194. package/scss/themes/_blueprint-surfaces.scss +0 -87
@@ -46,7 +46,7 @@ export class SdCollapseIcon {
46
46
 
47
47
  transitionStyle = computed(() => {
48
48
  return this.open()
49
- ? "transform var(--animation-duration) ease-out"
50
- : "transform var(--animation-duration) ease-in";
49
+ ? "transform var(--sd-animation-duration) ease-out"
50
+ : "transform var(--sd-animation-duration) ease-in";
51
51
  });
52
52
  }
@@ -55,8 +55,8 @@ export class SdCollapse {
55
55
  contentTransition = computed(() => {
56
56
  if (!this._initialized()) return "";
57
57
  return this.open()
58
- ? "margin-top var(--animation-duration) ease-out"
59
- : "margin-top var(--animation-duration) ease-in";
58
+ ? "margin-top var(--sd-animation-duration) ease-out"
59
+ : "margin-top var(--sd-animation-duration) ease-in";
60
60
  });
61
61
 
62
62
  constructor() {
@@ -30,18 +30,18 @@ import { SdResizeDirective } from "../../core/events/sd-resize";
30
30
 
31
31
  sd-dropdown-popup {
32
32
  position: fixed;
33
- z-index: var(--z-index-dropdown);
33
+ z-index: var(--sd-z-dropdown);
34
34
  opacity: 0;
35
35
  transform: translateY(-0.625rem);
36
- transition: var(--animation-duration) linear;
36
+ transition: var(--sd-animation-duration) linear;
37
37
  transition-property: transform, opacity;
38
38
  pointer-events: none;
39
- background: var(--control-color);
39
+ background-color: var(--sd-bg-overlay);
40
40
  min-width: 7.5rem;
41
41
  @include mixins.elevation(4);
42
42
  overflow: hidden;
43
- border-radius: var(--border-radius-default);
44
- border: 1px solid var(--border-color-light);
43
+ border-radius: var(--sd-radius-default);
44
+ border: 1px solid var(--sd-dropdown-bd);
45
45
 
46
46
  > div {
47
47
  width: 100%;
@@ -51,12 +51,12 @@ import { SdResizeDirective } from "../../core/events/sd-resize";
51
51
  }
52
52
 
53
53
  &:focus {
54
- outline: 1px solid var(--theme-primary-default);
54
+ outline: 1px solid var(--sd-focus-ring-color);
55
55
  }
56
56
 
57
57
  @media all and (max-width: variables.$breakpoint-mobile) {
58
58
  @include mixins.elevation(0);
59
- border: 1px solid var(--border-color-default);
59
+ border: 1px solid var(--sd-bd-strong);
60
60
  }
61
61
 
62
62
  &[data-sd-mobile] {
@@ -66,11 +66,11 @@ import { SdResizeDirective } from "../../core/events/sd-resize";
66
66
  bottom: 0;
67
67
  top: auto;
68
68
  max-height: 80vh;
69
- border-radius: var(--border-radius-default) var(--border-radius-default) 0 0;
69
+ border-radius: var(--sd-radius-default) var(--sd-radius-default) 0 0;
70
70
  opacity: 1;
71
71
  pointer-events: auto;
72
72
  transform: none;
73
- animation: sd-dropdown-slide-up var(--animation-duration) ease-out;
73
+ animation: sd-dropdown-slide-up var(--sd-animation-duration) ease-out;
74
74
  @include mixins.elevation(8);
75
75
  }
76
76
  }
@@ -87,9 +87,7 @@ import { SdResizeDirective } from "../../core/events/sd-resize";
87
87
  ],
88
88
  })
89
89
  export class SdDropdownPopup {
90
- private readonly _parentControl = inject<SdDropdown>(
91
- forwardRef(() => SdDropdown),
92
- );
90
+ private readonly _parentControl = inject<SdDropdown>(forwardRef(() => SdDropdown));
93
91
  private readonly _elRef = inject(ElementRef<HTMLElement>);
94
92
  private _capped = false;
95
93
 
@@ -74,7 +74,7 @@ export class SdDropdown {
74
74
  const backdrop = document.createElement("div");
75
75
  backdrop.setAttribute("data-sd-dropdown-backdrop", "");
76
76
  backdrop.style.cssText =
77
- "position:fixed;inset:0;background:var(--busy-overlay-bg);z-index:var(--z-index-dropdown)";
77
+ "position:fixed;inset:0;background-color:var(--sd-bg-busy-overlay);z-index:var(--sd-z-dropdown)";
78
78
  backdrop.addEventListener("click", () => {
79
79
  this._closePopup();
80
80
  });
@@ -1,4 +1,10 @@
1
- import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from "@angular/core";
1
+ import {
2
+ ChangeDetectionStrategy,
3
+ Component,
4
+ computed,
5
+ input,
6
+ ViewEncapsulation,
7
+ } from "@angular/core";
2
8
 
3
9
  @Component({
4
10
  selector: "sd-gap",
@@ -12,13 +18,13 @@ import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation
12
18
  @use "../../../scss/commons/variables";
13
19
 
14
20
  sd-gap {
15
- @each $key, $val in map.get(variables.$vars, gap) {
21
+ @each $key, $val in map.get(variables.$sd, gap) {
16
22
  &[data-sd-height="#{$key}"] {
17
- height: var(--gap-#{$key});
23
+ height: var(--sd-gap-#{$key});
18
24
  }
19
25
 
20
26
  &[data-sd-width="#{$key}"] {
21
- width: var(--gap-#{$key});
27
+ width: var(--sd-gap-#{$key});
22
28
  }
23
29
  }
24
30
  }
@@ -44,11 +50,7 @@ export class SdGap {
44
50
  _displayStyle = computed(() => {
45
51
  if (this.widthPx() === 0 || this.heightPx() === 0 || this.widthEm() === 0) {
46
52
  return "none";
47
- } else if (
48
- this.width() != null ||
49
- this.widthPx() != null ||
50
- this.widthEm() != null
51
- ) {
53
+ } else if (this.width() != null || this.widthPx() != null || this.widthEm() != null) {
52
54
  return "inline-block";
53
55
  } else if (this.height() != null || this.heightPx() != null) {
54
56
  return "block";
@@ -26,7 +26,7 @@ import { DateOnly } from "@simplysm/core-common";
26
26
  display: flex;
27
27
  align-items: center;
28
28
 
29
- @include mixins.flex-direction(row, var(--gap-sm));
29
+ @include mixins.flex-direction(row, var(--sd-gap-sm));
30
30
  }
31
31
  `,
32
32
  ],
@@ -59,20 +59,12 @@ import { tablerArrowLeft, tablerEraser } from "@ng-icons/tabler-icons";
59
59
  </td>
60
60
  }
61
61
  <td [attr.colspan]="useMinusButton() ? 1 : 2">
62
- <sd-button
63
- [size]="'lg'"
64
- [buttonClass]="'tx-theme-danger-default'"
65
- (click)="onButtonClick('C')"
66
- >
62
+ <sd-button [size]="'lg'" [buttonClass]="'tx-danger'" (click)="onButtonClick('C')">
67
63
  <ng-icon [svg]="tablerEraser" />
68
64
  </sd-button>
69
65
  </td>
70
66
  <td>
71
- <sd-button
72
- [size]="'lg'"
73
- [buttonClass]="'tx-theme-warning-default'"
74
- (click)="onButtonClick('BS')"
75
- >
67
+ <sd-button [size]="'lg'" [buttonClass]="'tx-warning'" (click)="onButtonClick('BS')">
76
68
  <ng-icon [svg]="tablerArrowLeft" />
77
69
  </sd-button>
78
70
  </td>
@@ -108,7 +100,7 @@ import { tablerArrowLeft, tablerEraser } from "@ng-icons/tabler-icons";
108
100
 
109
101
  > * > tr > * {
110
102
  border: none;
111
- padding: var(--gap-xxs);
103
+ padding: var(--sd-gap-xxs);
112
104
 
113
105
  > sd-button {
114
106
  border: none;
@@ -41,7 +41,7 @@ import type { SdTextfieldTypes } from "./sd-textfield-type-handlers";
41
41
  display: flex;
42
42
  align-items: center;
43
43
 
44
- @include mixins.flex-direction(row, var(--gap-sm));
44
+ @include mixins.flex-direction(row, var(--sd-gap-sm));
45
45
  }
46
46
  `,
47
47
  ],
@@ -25,7 +25,7 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
25
25
  @if (value()) {
26
26
  <pre>{{ value() }} </pre>
27
27
  } @else if (placeholder()) {
28
- <span class="tx-trans-lighter">{{ placeholder() }}</span>
28
+ <span class="tx-faint">{{ placeholder() }}</span>
29
29
  } @else {
30
30
  <span>&nbsp;</span>
31
31
  }
@@ -44,8 +44,6 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
44
44
  `,
45
45
  styles: [
46
46
  /* language=SCSS */ `
47
- @use "sass:map";
48
-
49
47
  @use "../../../scss/commons/variables";
50
48
  @use "../../../scss/commons/mixins";
51
49
 
@@ -56,19 +54,19 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
56
54
  > textarea,
57
55
  > ._contents {
58
56
  @include mixins.form-control-base();
59
- font-family: var(--font-family-field);
57
+ font-family: var(--sd-font-family-field);
60
58
  resize: none;
61
59
 
62
60
  overflow: auto;
63
61
  width: 100%;
64
62
 
65
- border: 1px solid var(--trans-lighter);
66
- border-radius: var(--border-radius-default);
67
- background: var(--theme-secondary-lightest);
63
+ border: 1px solid var(--sd-bd-field);
64
+ border-radius: var(--sd-radius-default);
65
+ background-color: var(--sd-bg-field);
68
66
 
69
67
  &:focus {
70
68
  outline: none;
71
- border-color: var(--theme-primary-default);
69
+ border-color: var(--sd-focus-ring-color);
72
70
  }
73
71
 
74
72
  &::-webkit-scrollbar {
@@ -76,7 +74,7 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
76
74
  }
77
75
 
78
76
  &::-webkit-input-placeholder {
79
- color: var(--text-trans-lighter);
77
+ color: var(--sd-tx-faint);
80
78
  }
81
79
  }
82
80
 
@@ -93,11 +91,11 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
93
91
  margin-bottom: 0;
94
92
  }
95
93
 
96
- @each $key, $val in map.get(variables.$vars, theme) {
94
+ @each $key in variables.$theme-keys {
97
95
  &[data-sd-theme="#{$key}"] {
98
96
  > textarea,
99
97
  > ._contents {
100
- background: var(--theme-#{$key}-lightest);
98
+ background-color: var(--sd-bg-#{$key}-subtle);
101
99
  }
102
100
  }
103
101
  }
@@ -105,14 +103,14 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
105
103
  &[data-sd-size="sm"] {
106
104
  > textarea,
107
105
  > ._contents {
108
- padding: var(--gap-xs) var(--gap-sm);
106
+ padding: var(--sd-gap-xs) var(--sd-gap-sm);
109
107
  }
110
108
  }
111
109
 
112
110
  &[data-sd-size="lg"] {
113
111
  > textarea,
114
112
  > ._contents {
115
- padding: var(--gap-default) var(--gap-lg);
113
+ padding: var(--sd-gap-default) var(--sd-gap-lg);
116
114
  }
117
115
  }
118
116
 
@@ -146,22 +144,24 @@ import { setupInvalid } from "../../core/validation/setupInvalid";
146
144
  }
147
145
 
148
146
  > textarea:focus {
149
- outline: 1px solid var(--theme-primary-default);
147
+ outline: 1px solid var(--sd-focus-ring-color);
150
148
  outline-offset: -1px;
151
149
  }
152
150
  }
153
151
 
152
+ // disabled 는 색 치환 단일 규약 (DEC-009)
154
153
  &[data-sd-disabled="true"] {
155
154
  > ._contents {
156
155
  display: block;
157
- background: var(--theme-gray-lightest);
158
- color: var(--text-trans-light);
156
+ background-color: var(--sd-bg-disabled);
157
+ color: var(--sd-tx-disabled);
159
158
  }
160
159
 
160
+ // inset(시트 셀 등)의 disabled 는 일반 콘텐츠처럼 표시(현행 유지)
161
161
  &[data-sd-inset="true"] {
162
162
  > ._contents {
163
- background: var(--control-color);
164
- color: var(--text-trans-default);
163
+ background-color: var(--sd-bg-control);
164
+ color: var(--sd-tx-default);
165
165
  }
166
166
  }
167
167
  }
@@ -15,10 +15,7 @@ import {
15
15
  ViewEncapsulation,
16
16
  } from "@angular/core";
17
17
  import { setupInvalid } from "../../core/validation/setupInvalid";
18
- import {
19
- textfieldTypeHandlers,
20
- type SdTextfieldTypes,
21
- } from "./sd-textfield-type-handlers";
18
+ import { textfieldTypeHandlers, type SdTextfieldTypes } from "./sd-textfield-type-handlers";
22
19
 
23
20
  @Component({
24
21
  selector: "sd-textfield",
@@ -34,12 +31,12 @@ import {
34
31
  [style.visibility]="!readonly() && !disabled() ? 'hidden' : undefined"
35
32
  >
36
33
  @if (controlType() === "password") {
37
- <span class="tx-trans-light">****</span>
34
+ <span class="tx-muted">****</span>
38
35
  } @else {
39
36
  @if (controlValue()) {
40
37
  <pre>{{ controlValueText() ? controlValueText() : " " }}</pre>
41
38
  } @else if (placeholder()) {
42
- <span class="tx-trans-lighter">{{ placeholder() }}</span>
39
+ <span class="tx-faint">{{ placeholder() }}</span>
43
40
  } @else {
44
41
  <span>&nbsp;</span>
45
42
  }
@@ -67,8 +64,6 @@ import {
67
64
  `,
68
65
  styles: [
69
66
  /* language=SCSS */ `
70
- @use "sass:map";
71
-
72
67
  @use "../../../scss/commons/variables";
73
68
  @use "../../../scss/commons/mixins";
74
69
 
@@ -79,25 +74,25 @@ import {
79
74
  > input,
80
75
  > ._contents {
81
76
  @include mixins.form-control-base();
82
- font-family: var(--font-family-field);
77
+ font-family: var(--sd-font-family-field);
83
78
 
84
79
  overflow: auto;
85
80
  width: 100%;
86
81
 
87
- border: 1px solid var(--border-color-light);
88
- border-radius: var(--border-radius-default);
89
- background: var(--theme-secondary-lightest);
82
+ border: 1px solid var(--sd-bd-field);
83
+ border-radius: var(--sd-radius-default);
84
+ background-color: var(--sd-bg-field);
90
85
 
91
86
  &:focus {
92
87
  outline: none;
93
- border-color: var(--theme-primary-default);
88
+ border-color: var(--sd-focus-ring-color);
94
89
  }
95
90
 
96
91
  &[type="date"],
97
92
  &[type="month"],
98
93
  &[type="datetime-local"] {
99
- padding-top: calc(var(--gap-sm) - 1px);
100
- padding-bottom: calc(var(--gap-sm) - 1px);
94
+ padding-top: calc(var(--sd-gap-sm) - 1px);
95
+ padding-bottom: calc(var(--sd-gap-sm) - 1px);
101
96
  }
102
97
 
103
98
  &::-webkit-scrollbar {
@@ -105,7 +100,7 @@ import {
105
100
  }
106
101
 
107
102
  &::-webkit-input-placeholder {
108
- color: var(--text-trans-lighter);
103
+ color: var(--sd-tx-faint);
109
104
  }
110
105
 
111
106
  &::-webkit-outer-spin-button,
@@ -135,11 +130,11 @@ import {
135
130
  }
136
131
  }
137
132
 
138
- @each $key, $val in map.get(variables.$vars, theme) {
133
+ @each $key in variables.$theme-keys {
139
134
  &[data-sd-theme="#{$key}"] {
140
135
  > input,
141
136
  > ._contents {
142
- background: var(--theme-#{$key}-lightest);
137
+ background-color: var(--sd-bg-#{$key}-subtle);
143
138
  }
144
139
  }
145
140
  }
@@ -147,14 +142,14 @@ import {
147
142
  &[data-sd-size="sm"] {
148
143
  > input,
149
144
  > ._contents {
150
- padding: var(--gap-xs) var(--gap-sm);
145
+ padding: var(--sd-gap-xs) var(--sd-gap-sm);
151
146
 
152
147
  &[type="date"],
153
148
  &[type="month"],
154
149
  &[type="datetime-local"],
155
150
  &[type="color"] {
156
- padding-top: calc(var(--gap-xs) - 1px);
157
- padding-bottom: calc(var(--gap-xs) - 1px);
151
+ padding-top: calc(var(--sd-gap-xs) - 1px);
152
+ padding-bottom: calc(var(--sd-gap-xs) - 1px);
158
153
  }
159
154
  }
160
155
  }
@@ -162,14 +157,14 @@ import {
162
157
  &[data-sd-size="lg"] {
163
158
  > input,
164
159
  > ._contents {
165
- padding: var(--gap-default) var(--gap-lg);
160
+ padding: var(--sd-gap-default) var(--sd-gap-lg);
166
161
 
167
162
  &[type="date"],
168
163
  &[type="month"],
169
164
  &[type="datetime-local"],
170
165
  &[type="color"] {
171
- padding-top: calc(var(--gap-default) - 1px);
172
- padding-bottom: calc(var(--gap-default) - 1px);
166
+ padding-top: calc(var(--sd-gap-default) - 1px);
167
+ padding-bottom: calc(var(--sd-gap-default) - 1px);
173
168
  }
174
169
  }
175
170
  }
@@ -204,7 +199,7 @@ import {
204
199
  }
205
200
 
206
201
  > input:focus {
207
- outline: 1px solid var(--theme-primary-default);
202
+ outline: 1px solid var(--sd-focus-ring-color);
208
203
  outline-offset: -1px;
209
204
  }
210
205
 
@@ -240,7 +235,8 @@ import {
240
235
  > input,
241
236
  > ._contents {
242
237
  height: calc(
243
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2
238
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) + var(--sd-gap-sm) *
239
+ 2
244
240
  );
245
241
  }
246
242
 
@@ -248,7 +244,8 @@ import {
248
244
  > input,
249
245
  > ._contents {
250
246
  height: calc(
251
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2
247
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) +
248
+ var(--sd-gap-xs) * 2
252
249
  );
253
250
  }
254
251
  }
@@ -257,24 +254,27 @@ import {
257
254
  > input,
258
255
  > ._contents {
259
256
  height: calc(
260
- var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2
257
+ var(--sd-font-size-default) * var(--sd-line-height-strip-unit) +
258
+ var(--sd-gap-default) * 2
261
259
  );
262
260
  }
263
261
  }
264
262
  }
265
263
  }
266
264
 
265
+ // disabled 는 색 치환 단일 규약 (DEC-009)
267
266
  &[data-sd-disabled="true"] {
268
267
  > ._contents {
269
268
  display: block;
270
- background: var(--trans-lightest);
271
- color: var(--text-trans-light);
269
+ background-color: var(--sd-bg-disabled);
270
+ color: var(--sd-tx-disabled);
272
271
  }
273
272
 
273
+ // inset(시트 셀 등)의 disabled 는 일반 콘텐츠처럼 표시(현행 유지)
274
274
  &[data-sd-inset="true"] {
275
275
  > ._contents {
276
- background: var(--control-color);
277
- color: var(--text-trans-default);
276
+ background-color: var(--sd-bg-control);
277
+ color: var(--sd-tx-default);
278
278
  }
279
279
  }
280
280
  }
@@ -356,9 +356,11 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
356
356
  controlValueText = computed(() => {
357
357
  const value = this.value();
358
358
  if (value == null) return undefined;
359
- return this._handler().toDisplayText(value, {
360
- minDigits: this.minDigits(),
361
- }) ?? this.controlValue();
359
+ return (
360
+ this._handler().toDisplayText(value, {
361
+ minDigits: this.minDigits(),
362
+ }) ?? this.controlValue()
363
+ );
362
364
  });
363
365
 
364
366
  constructor() {
@@ -379,8 +381,8 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
379
381
  const domParsed = this._handler().parse(inputEl.value, { format: this.format() });
380
382
  // DOM raw 가 현재 모델의 유효한 표현이면(사용자 입력 유래) 되쓰지 않아 캐럿·IME 보호
381
383
  const domReflectsModel =
382
- domParsed != null
383
- && this._handler().toControlValue(domParsed, {
384
+ domParsed != null &&
385
+ this._handler().toControlValue(domParsed, {
384
386
  useNumberComma: this.useNumberComma(),
385
387
  format: this.format(),
386
388
  }) === controlValue;