@taiga-ui/styles 5.23.0 → 5.24.0-canary.3f61c9e

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.
@@ -0,0 +1,102 @@
1
+ :where([tuiCardLarge]:not([tuiHeader])&) {
2
+ font: var(--tui-typography-body-m);
3
+ }
4
+
5
+ [tuiCardLarge][data-space]:where(*&) {
6
+ --t-space: 0.75rem;
7
+ --t-radius: var(--tui-radius-l);
8
+ --t-comp: -0.25rem;
9
+ --t-dim: calc(var(--t-padding) + var(--t-comp));
10
+ --t-padding: 0.75rem;
11
+ --tui-padding-inline: 0.75rem;
12
+
13
+ padding: var(--t-padding) var(--tui-padding-inline);
14
+ border-radius: var(--t-radius);
15
+ box-sizing: border-box;
16
+ text-align: start;
17
+
18
+ &[data-space='normal'] {
19
+ --t-radius: 1.5rem;
20
+ --t-space: 1.5rem;
21
+ --t-padding: 1.5rem;
22
+ --tui-padding-inline: 1.5rem;
23
+ }
24
+
25
+ &[data-space='compact'] {
26
+ --t-radius: 1rem;
27
+ --t-space: 1.25rem;
28
+ --t-padding: 1.25rem;
29
+ --tui-padding-inline: 1.25rem;
30
+ }
31
+
32
+ &:not([tuiCell], [tuiHeader], [tuiForm]) {
33
+ flex-direction: column;
34
+ gap: var(--t-space);
35
+ align-items: stretch;
36
+
37
+ > :last-child:not([tuiCell]) {
38
+ margin-block-start: auto;
39
+ }
40
+ }
41
+
42
+ &[tuiHeader] {
43
+ padding: var(--t-dim) var(--tui-padding-inline);
44
+
45
+ [tuiButton]:last-child,
46
+ [tuiAvatar]:last-child,
47
+ [tuiSwitch]:last-child,
48
+ tui-segmented:last-child {
49
+ margin-inline-end: var(--t-comp);
50
+ }
51
+ }
52
+
53
+ > [tuiHeader] {
54
+ margin: var(--t-comp) 0 calc(2 * var(--t-comp));
55
+
56
+ [tuiButton]:last-child,
57
+ [tuiAvatar]:last-child,
58
+ [tuiSwitch]:last-child,
59
+ tui-segmented:last-child {
60
+ margin-inline-end: var(--t-comp);
61
+ }
62
+ }
63
+
64
+ [tuiCell]:not(:where(tui-textfield *, [tuiStep])) {
65
+ inline-size: 100%;
66
+ margin: -0.5rem calc(-1 * var(--tui-padding-inline)) -0.75rem;
67
+ border-radius: var(--tui-radius-l);
68
+
69
+ --t-pad: 0.5rem var(--tui-padding-inline);
70
+
71
+ &:last-of-type {
72
+ margin-block-end: -0.5rem;
73
+ }
74
+
75
+ [data-platform]:not([data-platform='ios'], [data-platform='android']) & {
76
+ --tui-padding-inline: 0.5rem;
77
+ }
78
+ }
79
+
80
+ [tuiHeader] + [tuiDescription] {
81
+ margin-block: -0.5rem -0.25rem;
82
+ }
83
+
84
+ [tuiHeader] + [tuiCell] {
85
+ margin-block-start: var(--t-comp);
86
+ }
87
+
88
+ [tuiAccessories] > [tuiButtonX] {
89
+ align-self: flex-start;
90
+
91
+ --t-size: 1.5rem;
92
+ }
93
+
94
+ > footer {
95
+ margin-block-end: var(--t-comp);
96
+
97
+ > [tuiButton],
98
+ > [tuiBlock] {
99
+ margin-block-end: calc(-1 * var(--t-comp));
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,28 @@
1
+ [tuiCardMedium]:where(*&) {
2
+ --tui-padding-inline: 0.75rem;
3
+
4
+ inline-size: calc(8.75rem * var(--tui-font-scale));
5
+ block-size: calc(8.75rem * var(--tui-font-scale));
6
+ flex-direction: column;
7
+ justify-content: space-between;
8
+ padding: 0.75rem var(--tui-padding-inline);
9
+ border-radius: var(--tui-radius-l);
10
+ box-sizing: border-box;
11
+
12
+ &[tuiTitle] {
13
+ padding: 0.625rem var(--tui-padding-inline);
14
+ }
15
+
16
+ [tuiTitle] {
17
+ margin: -0.125rem 0;
18
+ }
19
+
20
+ [tuiSubtitle] {
21
+ color: var(--tui-text-primary);
22
+ }
23
+
24
+ &[tuiTitle],
25
+ [tuiTitle]:not([tuiCell] *):not([tuiLabel] *) {
26
+ font-weight: bold;
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ [tuiCardRow]:where(*&) {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 3rem;
5
+
6
+ tui-icon {
7
+ font-size: 1rem;
8
+ }
9
+
10
+ [tuiTitle] {
11
+ font: var(--tui-typography-body-s);
12
+
13
+ > :not([tuiSubtitle]) {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 0.25rem;
17
+ }
18
+ }
19
+
20
+ [tuiSubtitle] {
21
+ color: var(--tui-text-secondary);
22
+ font: var(--tui-typography-body-xs);
23
+ }
24
+
25
+ & > [tuiButton],
26
+ & > [tuiIconButton] {
27
+ margin-inline-start: auto;
28
+ }
29
+ }
@@ -0,0 +1,23 @@
1
+ @import '@taiga-ui/styles/utils';
2
+
3
+ [tuiCardMedium],
4
+ [tuiCardLarge] {
5
+ position: relative;
6
+ display: flex;
7
+ align-items: flex-start;
8
+ flex-shrink: 0;
9
+ text-decoration: none;
10
+ overflow: hidden;
11
+ padding: 0;
12
+ border: 0;
13
+ background: var(--tui-background-elevation-2);
14
+
15
+ [tuiTitle],
16
+ [tuiSubtitle] {
17
+ max-inline-size: 100%;
18
+ }
19
+
20
+ > * {
21
+ .scrollbar-hidden();
22
+ }
23
+ }
@@ -0,0 +1,303 @@
1
+ @import '@taiga-ui/styles/utils';
2
+
3
+ [tuiCell]:where(*&) {
4
+ --t-pad: 0.125rem 1rem;
5
+ --t-radius: var(--tui-radius-s);
6
+
7
+ .transition(~'background');
8
+ .button-clear();
9
+
10
+ position: relative;
11
+ display: flex;
12
+ align-items: center;
13
+ text-align: start;
14
+ box-sizing: content-box;
15
+ isolation: isolate;
16
+ color: var(--tui-text-primary);
17
+ padding: var(--t-pad);
18
+ min-block-size: var(--t-block-size);
19
+ border-radius: var(--t-radius);
20
+
21
+ &:is(button, label):not(:disabled):active {
22
+ background: var(--tui-background-neutral-1);
23
+ }
24
+
25
+ &:disabled,
26
+ &[data-state='disabled'] {
27
+ opacity: initial;
28
+ pointer-events: none;
29
+
30
+ & > *:not([tuiTooltip]) {
31
+ opacity: var(--tui-disabled-opacity);
32
+ }
33
+ }
34
+
35
+ &:is(label):has(input:disabled) {
36
+ opacity: initial;
37
+ pointer-events: none;
38
+
39
+ & > *:not([tuiTooltip]) {
40
+ opacity: var(--tui-disabled-opacity);
41
+ }
42
+ }
43
+
44
+ [tuiAccessories] {
45
+ position: relative;
46
+ display: flex;
47
+ max-block-size: var(--t-block-size);
48
+ align-items: center;
49
+ align-self: stretch;
50
+ margin-inline-start: auto;
51
+ }
52
+
53
+ // Specificity artificially increased for disabled state
54
+ [tuiCellActions][tuiCellActions] {
55
+ position: absolute;
56
+ z-index: 1;
57
+ inset-inline-end: 0;
58
+ padding-inline-end: inherit;
59
+
60
+ --t-group-mask: none;
61
+ --t-group-mask-end: none;
62
+ --t-group-mask-start: none;
63
+
64
+ & ~ * {
65
+ .transition(opacity);
66
+ }
67
+
68
+ & button,
69
+ & a {
70
+ .transition(opacity);
71
+
72
+ opacity: 0;
73
+
74
+ &:focus-visible {
75
+ opacity: 1;
76
+ }
77
+ }
78
+ }
79
+
80
+ [tuiSubtitle] {
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 0.25rem;
84
+ color: var(--tui-text-secondary);
85
+ }
86
+
87
+ [tuiTitle] {
88
+ flex: 3 7 30%;
89
+ align-items: normal;
90
+ text-align: start;
91
+ gap: 0.25rem 0.5rem;
92
+
93
+ [tuiTitle] {
94
+ flex-direction: row;
95
+ justify-content: space-between;
96
+
97
+ ~ [tuiSubtitle] > [tuiFade]:first-child,
98
+ > [tuiFade]:first-child,
99
+ ~ [tuiSubtitle] > [tuiFade]:last-child,
100
+ > [tuiFade]:last-child {
101
+ flex: 3 7 30%;
102
+ max-inline-size: max-content;
103
+ white-space: nowrap;
104
+ }
105
+
106
+ ~ [tuiSubtitle] > [tuiFade]:last-child,
107
+ > [tuiFade]:last-child {
108
+ flex: 7 3 70%;
109
+ }
110
+
111
+ ~ [tuiSubtitle] {
112
+ justify-content: space-between;
113
+ }
114
+ }
115
+
116
+ ~ [tuiTitle] {
117
+ flex: 7 3 70%;
118
+ max-inline-size: max-content;
119
+ margin-inline-start: auto;
120
+ text-align: end;
121
+ align-items: flex-end;
122
+
123
+ &[tuiFade] {
124
+ align-items: flex-start;
125
+ }
126
+ }
127
+ }
128
+
129
+ tui-badge-notification[data-size='xs'] {
130
+ .center-top();
131
+
132
+ inset-inline-start: 0.375rem;
133
+ }
134
+
135
+ &[data-size='s'] {
136
+ --t-block-size: calc(var(--tui-height-s) - 0.125rem);
137
+ --t-pad: 0.1875rem 1rem;
138
+
139
+ gap: 0.5rem;
140
+
141
+ &[data-height='spacious'] {
142
+ --t-pad: 0.4375rem 1rem;
143
+ }
144
+
145
+ &[data-height='compact'] {
146
+ --t-block-size: calc(var(--tui-height-s) - 0.25rem);
147
+ --t-pad: 0 1rem;
148
+ }
149
+
150
+ [tuiTitle] {
151
+ max-block-size: 100%;
152
+ font: var(--tui-typography-ui-s);
153
+ gap: 0;
154
+ }
155
+
156
+ [tuiSubtitle] {
157
+ font: var(--tui-typography-ui-2xs);
158
+ }
159
+
160
+ [tuiAvatar] {
161
+ --t-size: 1.5rem;
162
+ --t-radius: var(--tui-radius-m);
163
+
164
+ font: var(--tui-typography-body-m);
165
+ font-size: 0.5625rem;
166
+ margin: 0.1875rem 0;
167
+ }
168
+ }
169
+
170
+ &[data-size='m'] {
171
+ --t-block-size: calc(var(--tui-height-m) - 0.75rem);
172
+ --t-pad: 0.375rem 1rem;
173
+
174
+ gap: 0.5rem 0.75rem;
175
+
176
+ &[data-height='spacious'] {
177
+ --t-pad: 1rem;
178
+ }
179
+
180
+ &[data-height='compact'] {
181
+ --t-block-size: calc(var(--tui-height-m) - 0.5rem);
182
+ --t-pad: 0 1rem;
183
+ }
184
+
185
+ [tuiTitle] {
186
+ font: var(--tui-typography-ui-s);
187
+ gap: 0.0625rem;
188
+ }
189
+
190
+ [tuiSubtitle] {
191
+ font: var(--tui-typography-ui-xs);
192
+ }
193
+
194
+ [tuiAvatar] {
195
+ --t-size: 2rem;
196
+ --t-radius: var(--tui-radius-m);
197
+
198
+ align-self: flex-start;
199
+ }
200
+ }
201
+
202
+ &[data-size='l'] {
203
+ --t-block-size: calc(var(--tui-height-l) - 1rem);
204
+ --t-pad: 0.5rem 1rem;
205
+ --t-radius: var(--tui-radius-l);
206
+
207
+ gap: 0.5rem 1rem;
208
+
209
+ &[data-height='spacious'] {
210
+ --t-pad: 1.25rem 1rem;
211
+ }
212
+
213
+ &[data-height='compact'] {
214
+ --t-block-size: calc(var(--tui-height-l) - 1rem);
215
+ --t-pad: 0 1rem;
216
+ }
217
+
218
+ [tuiAvatar] {
219
+ --t-size: 2.5rem;
220
+
221
+ font: var(--tui-typography-body-m);
222
+ font-weight: bold;
223
+ align-self: flex-start;
224
+ }
225
+ }
226
+
227
+ &:hover [tuiCellActions] ~ * {
228
+ opacity: 0;
229
+ }
230
+
231
+ &:hover [tuiCellActions] button,
232
+ &:hover [tuiCellActions] a,
233
+ &:hover [tuiCellActions] label {
234
+ opacity: 1;
235
+ }
236
+
237
+ &:focus-visible {
238
+ outline: 0.125rem solid var(--tui-border-focus);
239
+ outline-offset: -0.125rem;
240
+ }
241
+
242
+ &[tuiCellStretch] {
243
+ // stylelint-disable-next-line -- fix linter
244
+ width: -moz-available;
245
+ // stylelint-disable-next-line -- fix linter
246
+ width: stretch;
247
+ margin-inline-start: calc(-1 * var(--tui-padding-inline, 0px));
248
+ margin-inline-end: calc(-1 * var(--tui-padding-inline, 0px));
249
+ padding-inline-start: var(--tui-padding-inline, 0);
250
+ padding-inline-end: var(--tui-padding-inline, 0);
251
+ }
252
+
253
+ &[tuiCellResponsive] {
254
+ display: grid;
255
+ grid-auto-flow: column;
256
+ grid-auto-columns: fit-content(100%);
257
+ grid-template-columns: auto 1fr;
258
+
259
+ &:has(> [tuiTitle]:first-child) {
260
+ grid-template-columns: 1fr;
261
+ }
262
+
263
+ > * {
264
+ grid-row: 1;
265
+ }
266
+
267
+ &._rearranged {
268
+ [tuiAccessories] {
269
+ grid-row: 2;
270
+ }
271
+
272
+ [tuiTitle] {
273
+ [tuiTitle],
274
+ [tuiSubtitle] {
275
+ display: grid;
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+
282
+ @media @tui-mouse {
283
+ a[tuiCell]:where(*&):hover,
284
+ button[tuiCell]:where(*&):hover,
285
+ label[tuiCell]:where(*&):hover {
286
+ &:not(:disabled, [data-state='disabled']) {
287
+ background: var(--tui-background-neutral-1);
288
+ cursor: pointer;
289
+ }
290
+ }
291
+
292
+ label[tuiCell]:where(*&):hover {
293
+ &:not(:has(input:disabled)) {
294
+ background: var(--tui-background-neutral-1);
295
+ cursor: pointer;
296
+ }
297
+ }
298
+ }
299
+
300
+ [data-platform='ios'] [tuiCellStretch]:where(*&),
301
+ [data-platform='android'] [tuiCellStretch]:where(*&) {
302
+ border-radius: 0 !important;
303
+ }
@@ -44,13 +44,10 @@
44
44
  }
45
45
 
46
46
  .appearance-invalid(@content) {
47
- &:is([data-mode~='invalid'], .tui-invalid, :invalid):not(
48
- [data-mode~='readonly'],
49
- [data-mode~='valid'],
50
- [data-state='disabled'],
51
- :disabled,
52
- ._disabled
53
- ) {
54
- @content();
47
+ &:is([data-mode~='invalid'], .tui-invalid),
48
+ &:invalid:not(._untouched) {
49
+ &:not([data-mode~='readonly'], [data-mode~='valid'], [data-state='disabled'], :disabled, ._disabled) {
50
+ @content();
51
+ }
55
52
  }
56
53
  }
@@ -45,13 +45,10 @@
45
45
  }
46
46
 
47
47
  @mixin appearance-invalid {
48
- &:is([data-mode~='invalid'], .tui-invalid, :invalid):not(
49
- [data-mode~='readonly'],
50
- [data-mode~='valid'],
51
- [data-state='disabled'],
52
- :disabled,
53
- ._disabled
54
- ) {
55
- @content;
48
+ &:is([data-mode~='invalid'], .tui-invalid),
49
+ &:invalid:not(._untouched) {
50
+ &:not([data-mode~='readonly'], [data-mode~='valid'], [data-state='disabled'], :disabled, ._disabled) {
51
+ @content;
52
+ }
56
53
  }
57
54
  }
@@ -16,6 +16,12 @@
16
16
  }
17
17
  }
18
18
 
19
+ .liquid-glass-only(@ruleset) {
20
+ @supports (-webkit-touch-callout: none) and (position-anchor: --value) {
21
+ @ruleset();
22
+ }
23
+ }
24
+
19
25
  .chrome-only(@ruleset) {
20
26
  @supports (not (-moz-appearance: none)) and (not (-webkit-hyphens: none)) {
21
27
  @ruleset();
@@ -16,6 +16,12 @@
16
16
  }
17
17
  }
18
18
 
19
+ @mixin liquid-glass-only {
20
+ @supports (-webkit-touch-callout: none) and (position-anchor: --value) {
21
+ @content;
22
+ }
23
+ }
24
+
19
25
  @mixin chrome-only {
20
26
  @supports (not (-moz-appearance: none)) and (not (-webkit-hyphens: none)) {
21
27
  @content;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/styles",
3
- "version": "5.23.0",
3
+ "version": "5.24.0-canary.3f61c9e",
4
4
  "description": "Framework-agnostic package with styles for Taiga UI",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,6 +25,6 @@
25
25
  "./*": "./*"
26
26
  },
27
27
  "peerDependencies": {
28
- "@taiga-ui/design-tokens": "~0.316.0"
28
+ "@taiga-ui/design-tokens": "~0.320.0"
29
29
  }
30
30
  }