@cloud-ru/ds-toggles 1.1.13 → 1.1.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-ru/ds-toggles",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "description": "Пакет компонентов выбора и переключения — Checkbox, Radio, Switch, Favourite и контейнер ToggleGroup с общими токенами размеров и состояний.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,10 +35,10 @@
35
35
  "dependencies": {
36
36
  "classnames": "^2.5.1",
37
37
  "merge-refs": "^2.0.0",
38
- "@cloud-ru/ds-utils": "^1.3.0",
39
- "@cloud-ru/ds-materials": "^2.0.2",
40
38
  "@cloud-ru/ds-icons": "^1.7.1",
41
- "@cloud-ru/ds-loader": "^1.0.4"
39
+ "@cloud-ru/ds-loader": "^1.0.4",
40
+ "@cloud-ru/ds-utils": "^1.3.0",
41
+ "@cloud-ru/ds-materials": "^2.0.2"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public"
@@ -95,10 +95,11 @@ export function Checkbox({
95
95
  data-size={size}
96
96
  {...stateDataAttributes}
97
97
  data-indeterminate={indeterminate || undefined}
98
+ data-focusvisible={focusVisible || undefined}
98
99
  data-test-id={dataTestId || undefined}
99
100
  >
100
101
  <div className={styles.container}>
101
- <div className={styles.framing} {...stateDataAttributes} data-focusvisible={focusVisible || undefined}>
102
+ <div className={styles.framing} {...stateDataAttributes}>
102
103
  <div
103
104
  className={styles.backgroundStateLayer}
104
105
  data-state={indeterminate || checked ? 'emptyDarkOnAccent' : 'emptyNeutralOnBackground'}
@@ -43,6 +43,7 @@ $sizes: 'xs', 's';
43
43
 
44
44
  &[data-disabled="true"] {
45
45
  opacity: base.$sn-theme-effect-opacity-disabled;
46
+ background-color: base.$sn-theme-color-neutral-decor;
46
47
 
47
48
  // Акцентная заливка отмеченного состояния лежит на внешнем слое framing,
48
49
  // а не на внутреннем flag/surface.
@@ -60,13 +61,6 @@ $sizes: 'xs', 's';
60
61
  border-color: base.$sn-theme-color-primary-accent;
61
62
  background-color: base.$sn-theme-color-primary-accent;
62
63
  }
63
-
64
- &[data-focusvisible="true"] {
65
- $outlineWidth: base.$sn-primitive-strokeWeight-strokeSemiBold;
66
-
67
- outline: $outlineWidth solid base.$sn-theme-color-available-complementary;
68
- outline-offset: var(--focus-offset);
69
- }
70
64
  }
71
65
  }
72
66
  }
@@ -89,6 +83,11 @@ $sizes: 'xs', 's';
89
83
  color: base.$sn-theme-color-primary-onAccent;
90
84
  }
91
85
 
86
+ // Галочка disabled лежит на `neutral/accent`, поэтому берёт парный `neutral/onAccent`.
87
+ .root[data-disabled="true"] .icon {
88
+ color: base.$sn-theme-color-neutral-onAccent;
89
+ }
90
+
92
91
  .container {
93
92
  position: relative;
94
93
  display: flex;
@@ -114,14 +113,13 @@ $sizes: 'xs', 's';
114
113
  @include base.composite-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'container');
115
114
  }
116
115
 
117
- .framing {
118
-
119
- // Кольцо фокуса по границе контейнера (Figma `focusedFrame/regular/outside`).
120
- $containerWidth: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'container', 'min-width');
121
- $framingWidth: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-width');
122
-
123
- --focus-offset: calc((#{$containerWidth} - #{$framingWidth}) / 2);
116
+ // Кольцо фокуса снаружи контейнера с радиусом рамки (Figma `focusedFrame/regular/outside`).
117
+ &[data-focusvisible="true"] .container {
118
+ border-radius: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'border-radius');
119
+ outline: base.$sn-brand-anatomy-focusLine-control-strokeWeight solid base.$sn-theme-color-available-complementary;
120
+ }
124
121
 
122
+ .framing {
125
123
  width: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-width');
126
124
  height: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-height');
127
125
 
@@ -95,14 +95,13 @@ $sizes: 'xs', 's';
95
95
  @include base.composite-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'container');
96
96
  }
97
97
 
98
- .framing {
99
-
100
- // Кольцо фокуса по границе контейнера (Figma `focusedFrame/regular/outside`).
101
- $containerWidth: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'container', 'min-width');
102
- $framingWidth: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-width');
103
-
104
- --focus-offset: calc((#{$containerWidth} - #{$framingWidth}) / 2);
98
+ // Кольцо фокуса снаружи контейнера с радиусом рамки (Figma `focusedFrame/regular/outside`).
99
+ &[data-focusvisible='true'] .container {
100
+ border-radius: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'border-radius');
101
+ outline: base.$sn-brand-anatomy-focusLine-control-strokeWeight solid base.$sn-theme-color-available-complementary;
102
+ }
105
103
 
104
+ .framing {
106
105
  width: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-width');
107
106
  height: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'checkbox', 'framing', 'min-height');
108
107
 
@@ -142,11 +141,4 @@ $sizes: 'xs', 's';
142
141
  opacity: base.$sn-theme-effect-opacity-disabled;
143
142
  }
144
143
  }
145
-
146
- &[data-focusvisible='true'] {
147
- .framing {
148
- outline: base.$sn-primitive-strokeWeight-strokeSemiBold solid base.$sn-theme-color-available-complementary;
149
- outline-offset: var(--focus-offset);
150
- }
151
- }
152
144
  }
@@ -42,6 +42,7 @@ $sizes: 'xs', 's';
42
42
 
43
43
  &[data-disabled="true"] {
44
44
  opacity: base.$sn-theme-effect-opacity-disabled;
45
+ background-color: base.$sn-theme-color-neutral-decor;
45
46
  }
46
47
 
47
48
  &[data-disabled="false"] {
@@ -54,7 +55,7 @@ $sizes: 'xs', 's';
54
55
  }
55
56
 
56
57
  &[data-focusvisible="true"] {
57
- $outlineWidth: base.$sn-primitive-strokeWeight-strokeSemiBold;
58
+ $outlineWidth: base.$sn-brand-anatomy-focusLine-control-strokeWeight;
58
59
 
59
60
  outline: $outlineWidth solid base.$sn-theme-color-available-complementary;
60
61
  outline-offset: var(--focus-offset);
@@ -214,7 +214,7 @@ $iconRevealEasing: cubic-bezier(0.33, 1, 0.68, 1);
214
214
  &[data-focusvisible="true"] {
215
215
  .container {
216
216
  // Кольцо фокуса по границе контейнера (Figma `focusedFrame/regular/outside`).
217
- $offsetWidth: base.$sn-primitive-strokeWeight-strokeSemiBold;
217
+ $offsetWidth: base.$sn-brand-anatomy-focusLine-control-strokeWeight;
218
218
 
219
219
  border-radius: base.simple-var(toggles.$toggles, 'anatomy', 'size', $size, 'switch', 'framing', 'border-radius');
220
220
  outline: $offsetWidth solid base.$sn-theme-color-available-complementary;