@skygraph/styles 0.2.4 → 0.6.6

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 (68) hide show
  1. package/README.md +98 -98
  2. package/components/autocomplete.css +35 -35
  3. package/components/autofield.css +67 -67
  4. package/components/avatar.css +37 -37
  5. package/components/badge.css +102 -102
  6. package/components/breadcrumb.css +29 -29
  7. package/components/button.css +181 -181
  8. package/components/calendar.css +408 -408
  9. package/components/carousel.css +102 -102
  10. package/components/cascader.css +380 -380
  11. package/components/charts.css +408 -408
  12. package/components/checkbox.css +114 -114
  13. package/components/collapse.css +166 -166
  14. package/components/colorpicker.css +252 -252
  15. package/components/context-menu.css +95 -95
  16. package/components/descriptions.css +82 -82
  17. package/components/diagram.css +435 -435
  18. package/components/drawer.css +124 -124
  19. package/components/dropdown.css +110 -110
  20. package/components/empty.css +25 -25
  21. package/components/event-timeline.css +134 -134
  22. package/components/field.css +35 -35
  23. package/components/form.css +115 -115
  24. package/components/gantt.css +166 -166
  25. package/components/input-number.css +76 -76
  26. package/components/input-password.css +104 -104
  27. package/components/input.css +211 -211
  28. package/components/list.css +366 -366
  29. package/components/mentions.css +54 -54
  30. package/components/menu.css +326 -326
  31. package/components/modal.css +1 -0
  32. package/components/notification.css +128 -128
  33. package/components/pagination.css +162 -162
  34. package/components/popconfirm.css +95 -95
  35. package/components/progress.css +116 -116
  36. package/components/radio.css +95 -95
  37. package/components/rate.css +48 -48
  38. package/components/resource-calendar.css +224 -224
  39. package/components/result.css +45 -45
  40. package/components/schema-form-editor.css +433 -433
  41. package/components/search-input.css +112 -112
  42. package/components/segmented.css +76 -76
  43. package/components/select.css +181 -181
  44. package/components/skeleton.css +72 -72
  45. package/components/slider.css +51 -51
  46. package/components/spin.css +102 -102
  47. package/components/steps.css +194 -194
  48. package/components/switch.css +75 -75
  49. package/components/table.css +9 -1
  50. package/components/tabs.css +137 -137
  51. package/components/tag.css +61 -61
  52. package/components/textarea.css +22 -22
  53. package/components/timeline.css +169 -169
  54. package/components/timepicker.css +224 -224
  55. package/components/tooltip.css +91 -91
  56. package/components/transfer.css +140 -140
  57. package/components/tree.css +601 -601
  58. package/components/treeselect.css +221 -221
  59. package/components/upload.css +124 -124
  60. package/index.css +70 -70
  61. package/index.d.ts +9 -9
  62. package/package.json +1 -1
  63. package/print.css +88 -88
  64. package/reset.css +17 -17
  65. package/themes/dark.css +17 -17
  66. package/themes/default.css +14 -14
  67. package/tokens.css +310 -310
  68. package/transitions.css +158 -158
@@ -1,366 +1,366 @@
1
- /* ---- List ---- */
2
- .sg-list {
3
- font-size: var(--sg-font-size);
4
- color: var(--sg-color-text);
5
- line-height: var(--sg-line-height);
6
- }
7
-
8
- .sg-list-bordered {
9
- border: 1px solid var(--sg-color-border);
10
- border-radius: var(--sg-border-radius);
11
- /* Clip header / footer / first-last item backgrounds (which have square
12
- * corners) to the rounded border. Without this the tinted header and the
13
- * hover/selected row backgrounds bleed past the radius, so the corners
14
- * appear to be a different colour than the rest of the outline. */
15
- overflow: hidden;
16
- }
17
-
18
- .sg-list-loading {
19
- position: relative;
20
- }
21
-
22
- /* ---- Header / Footer ---- */
23
- .sg-list-header,
24
- .sg-list-footer {
25
- padding: var(--sg-padding-md) var(--sg-padding-lg);
26
- background: var(--sg-color-bg-secondary);
27
- }
28
-
29
- .sg-list-bordered .sg-list-header {
30
- border-bottom: 1px solid var(--sg-color-border);
31
- }
32
-
33
- .sg-list-bordered .sg-list-footer {
34
- border-top: 1px solid var(--sg-color-border);
35
- }
36
-
37
- /* ---- Items container ---- */
38
- .sg-list-items {
39
- min-height: 0;
40
- }
41
-
42
- .sg-list-grid .sg-list-items {
43
- --sg-list-grid-base-columns: 1fr;
44
- display: grid;
45
- /*
46
- * Колонки определяются двумя переменными:
47
- * --sg-list-grid-columns — наследуется от корня `.sg-list` при срабатывании media;
48
- * --sg-list-grid-base-columns — ставится инлайн на этом элементе (grid.column);
49
- * media побеждает за счёт наследования, инлайн не блокирует его.
50
- */
51
- grid-template-columns: var(--sg-list-grid-columns, var(--sg-list-grid-base-columns));
52
- }
53
-
54
- /* ---- Empty ---- */
55
- .sg-list-empty {
56
- padding: var(--sg-padding-xl);
57
- text-align: center;
58
- }
59
-
60
- /* ---- Single item ---- */
61
- .sg-list-item {
62
- display: flex;
63
- /* Center main / actions / extra blocks on a single baseline so rows with a
64
- * multi-line Meta block (avatar + title + description) stay visually even.
65
- * The Meta block keeps its own `align-items: flex-start` internally so the
66
- * avatar still tops out with the title. */
67
- align-items: center;
68
- padding: var(--sg-padding-md) var(--sg-padding-lg);
69
- transition: background var(--sg-transition-duration);
70
- }
71
-
72
- .sg-list-split .sg-list-item + .sg-list-item {
73
- border-top: 1px solid var(--sg-color-border-secondary);
74
- }
75
-
76
- .sg-list-bordered .sg-list-item:first-child {
77
- border-top: none;
78
- }
79
-
80
- .sg-list-item:hover {
81
- background: var(--sg-color-bg-hover);
82
- }
83
-
84
- /*
85
- * Когда пользователь использует `<List.Item>` (или `<sg-list-item>`),
86
- * у него уже есть класс `.sg-list-item`. Снаружи обёртка из `renderItemWrapper`
87
- * тоже получает `.sg-list-item` (нужен для голых `<div>`-renderItem'ов в Basic/
88
- * Sizes/Slots demo). Чтобы при двойной обёртке не удваивались padding/border/
89
- * hover, сбрасываем стили внутреннего `.sg-list-item` и растягиваем его на
90
- * ширину flex-родителя.
91
- */
92
- .sg-list-item .sg-list-item {
93
- padding: 0;
94
- border: none;
95
- background: transparent;
96
- flex: 1;
97
- min-width: 0;
98
- }
99
-
100
- .sg-list-item .sg-list-item:hover {
101
- background: transparent;
102
- }
103
-
104
- /* ---- Item modifiers ---- */
105
- .sg-list-item-hoverable {
106
- cursor: pointer;
107
- }
108
-
109
- .sg-list-item-selectable {
110
- cursor: pointer;
111
- user-select: none;
112
- }
113
-
114
- .sg-list-item-selected,
115
- .sg-list-item-selected:hover {
116
- background: var(--sg-color-primary-bg, rgba(22, 119, 255, 0.08));
117
- }
118
-
119
- .sg-list-item-dragging {
120
- opacity: 0.5;
121
- }
122
-
123
- .sg-list-item-drop-target {
124
- box-shadow: inset 0 2px 0 0 var(--sg-color-primary);
125
- }
126
-
127
- /* ---- Virtual scroll ----
128
- *
129
- * Внутренний контент virtual-режима полностью `position: absolute` (каждая
130
- * строка — на своём `top = index * itemHeight`). В flex-контексте (например,
131
- * `.demo-box-preview { display: flex }`) и `.sg-list`, и
132
- * `.sg-list-virtual-container` без контента в потоке схлопываются до 0 ширины.
133
- * Явный `width: 100%` на корне (через модификатор `.sg-list-virtual`) и на
134
- * самом scroll-контейнере гарантирует, что они растянутся на всю доступную
135
- * ширину родителя.
136
- */
137
- .sg-list-virtual {
138
- width: 100%;
139
- }
140
-
141
- .sg-list-virtual-container {
142
- width: 100%;
143
- }
144
-
145
- /* ---- Drag handle ---- */
146
- .sg-list-drag-handle {
147
- display: inline-flex;
148
- align-items: center;
149
- margin-right: var(--sg-padding-sm);
150
- color: var(--sg-color-text-secondary);
151
- cursor: grab;
152
- user-select: none;
153
- }
154
-
155
- .sg-list-drag-handle:active {
156
- cursor: grabbing;
157
- }
158
-
159
- .sg-list-item-main {
160
- flex: 1;
161
- min-width: 0;
162
- display: flex;
163
- align-items: center;
164
- }
165
-
166
- .sg-list-item-content {
167
- flex: 1;
168
- min-width: 0;
169
- }
170
-
171
- /* ---- Actions ---- */
172
- .sg-list-item-actions {
173
- display: flex;
174
- align-items: center;
175
- gap: var(--sg-padding-sm);
176
- list-style: none;
177
- margin: 0;
178
- padding: 0;
179
- margin-left: var(--sg-padding-lg);
180
- flex-shrink: 0;
181
- }
182
-
183
- .sg-list-item-action {
184
- color: var(--sg-color-text-secondary);
185
- cursor: pointer;
186
- transition: color var(--sg-transition-duration);
187
- }
188
-
189
- .sg-list-item-action:hover {
190
- color: var(--sg-color-primary);
191
- }
192
-
193
- .sg-list-item-actions li + li::before {
194
- content: '';
195
- display: inline-block;
196
- width: 1px;
197
- height: 14px;
198
- background: var(--sg-color-border);
199
- margin-right: var(--sg-padding-sm);
200
- vertical-align: middle;
201
- }
202
-
203
- /* ---- Extra ---- */
204
- .sg-list-item-extra {
205
- margin-left: var(--sg-padding-xl);
206
- flex-shrink: 0;
207
- }
208
-
209
- /* ---- Meta ---- */
210
- .sg-list-item-meta {
211
- display: flex;
212
- align-items: flex-start;
213
- gap: var(--sg-padding-md);
214
- flex: 1;
215
- min-width: 0;
216
- }
217
-
218
- .sg-list-item-meta-avatar {
219
- flex-shrink: 0;
220
- }
221
-
222
- .sg-list-item-meta-content {
223
- flex: 1;
224
- min-width: 0;
225
- }
226
-
227
- .sg-list-item-meta-title {
228
- margin: 0 0 var(--sg-margin-xs) 0;
229
- font-size: var(--sg-font-size);
230
- font-weight: 600;
231
- color: var(--sg-color-text);
232
- line-height: var(--sg-line-height);
233
- }
234
-
235
- .sg-list-item-meta-description {
236
- font-size: var(--sg-font-size-sm);
237
- color: var(--sg-color-text-secondary);
238
- line-height: var(--sg-line-height);
239
- }
240
-
241
- /* ---- Sizes ---- */
242
- .sg-list-small .sg-list-item {
243
- padding: var(--sg-padding-sm) var(--sg-padding-md);
244
- }
245
-
246
- .sg-list-small .sg-list-header,
247
- .sg-list-small .sg-list-footer {
248
- padding: var(--sg-padding-sm) var(--sg-padding-md);
249
- }
250
-
251
- .sg-list-small .sg-list-item-meta-title {
252
- font-size: var(--sg-font-size-sm);
253
- }
254
-
255
- .sg-list-large .sg-list-item {
256
- padding: var(--sg-padding-lg) var(--sg-padding-xl);
257
- }
258
-
259
- .sg-list-large .sg-list-header,
260
- .sg-list-large .sg-list-footer {
261
- padding: var(--sg-padding-lg) var(--sg-padding-xl);
262
- }
263
-
264
- .sg-list-large .sg-list-item-meta-title {
265
- font-size: var(--sg-font-size-lg);
266
- }
267
-
268
- /* ---- Grid mode ---- */
269
- .sg-list-grid .sg-list-item {
270
- border: none;
271
- }
272
-
273
- .sg-list-grid.sg-list-bordered .sg-list-items {
274
- padding: var(--sg-padding-md);
275
- }
276
-
277
- .sg-list-grid .sg-list-item {
278
- border-radius: var(--sg-border-radius);
279
- }
280
-
281
- /*
282
- * Responsive grid breakpoints.
283
- *
284
- * Переопределяем `--sg-list-grid-columns` на КОРНЕ `.sg-list` (не на .sg-list-items),
285
- * чтобы инлайновый `style` на `.sg-list-items` (который задаёт base columns) не перебивал
286
- * media-override. Так мы обходимся без `!important`.
287
- */
288
- @media (max-width: 575px) {
289
- .sg-list-grid-xs-1 {
290
- --sg-list-grid-columns: repeat(1, 1fr);
291
- }
292
- .sg-list-grid-xs-2 {
293
- --sg-list-grid-columns: repeat(2, 1fr);
294
- }
295
- .sg-list-grid-xs-3 {
296
- --sg-list-grid-columns: repeat(3, 1fr);
297
- }
298
- }
299
-
300
- @media (min-width: 576px) and (max-width: 767px) {
301
- .sg-list-grid-sm-1 {
302
- --sg-list-grid-columns: repeat(1, 1fr);
303
- }
304
- .sg-list-grid-sm-2 {
305
- --sg-list-grid-columns: repeat(2, 1fr);
306
- }
307
- .sg-list-grid-sm-3 {
308
- --sg-list-grid-columns: repeat(3, 1fr);
309
- }
310
- .sg-list-grid-sm-4 {
311
- --sg-list-grid-columns: repeat(4, 1fr);
312
- }
313
- }
314
-
315
- @media (min-width: 768px) and (max-width: 991px) {
316
- .sg-list-grid-md-1 {
317
- --sg-list-grid-columns: repeat(1, 1fr);
318
- }
319
- .sg-list-grid-md-2 {
320
- --sg-list-grid-columns: repeat(2, 1fr);
321
- }
322
- .sg-list-grid-md-3 {
323
- --sg-list-grid-columns: repeat(3, 1fr);
324
- }
325
- .sg-list-grid-md-4 {
326
- --sg-list-grid-columns: repeat(4, 1fr);
327
- }
328
- .sg-list-grid-md-6 {
329
- --sg-list-grid-columns: repeat(6, 1fr);
330
- }
331
- }
332
-
333
- @media (min-width: 992px) {
334
- .sg-list-grid-lg-1 {
335
- --sg-list-grid-columns: repeat(1, 1fr);
336
- }
337
- .sg-list-grid-lg-2 {
338
- --sg-list-grid-columns: repeat(2, 1fr);
339
- }
340
- .sg-list-grid-lg-3 {
341
- --sg-list-grid-columns: repeat(3, 1fr);
342
- }
343
- .sg-list-grid-lg-4 {
344
- --sg-list-grid-columns: repeat(4, 1fr);
345
- }
346
- .sg-list-grid-lg-6 {
347
- --sg-list-grid-columns: repeat(6, 1fr);
348
- }
349
- }
350
-
351
- /* ---- Load more ---- */
352
- .sg-list-load-more {
353
- text-align: center;
354
- padding: var(--sg-padding-md) 0;
355
- }
356
-
357
- /* ---- Pagination ---- */
358
- .sg-list-pagination {
359
- display: flex;
360
- justify-content: flex-end;
361
- padding: var(--sg-padding-md) var(--sg-padding-lg);
362
- }
363
-
364
- .sg-list-bordered .sg-list-pagination {
365
- border-top: 1px solid var(--sg-color-border-secondary);
366
- }
1
+ /* ---- List ---- */
2
+ .sg-list {
3
+ font-size: var(--sg-font-size);
4
+ color: var(--sg-color-text);
5
+ line-height: var(--sg-line-height);
6
+ }
7
+
8
+ .sg-list-bordered {
9
+ border: 1px solid var(--sg-color-border);
10
+ border-radius: var(--sg-border-radius);
11
+ /* Clip header / footer / first-last item backgrounds (which have square
12
+ * corners) to the rounded border. Without this the tinted header and the
13
+ * hover/selected row backgrounds bleed past the radius, so the corners
14
+ * appear to be a different colour than the rest of the outline. */
15
+ overflow: hidden;
16
+ }
17
+
18
+ .sg-list-loading {
19
+ position: relative;
20
+ }
21
+
22
+ /* ---- Header / Footer ---- */
23
+ .sg-list-header,
24
+ .sg-list-footer {
25
+ padding: var(--sg-padding-md) var(--sg-padding-lg);
26
+ background: var(--sg-color-bg-secondary);
27
+ }
28
+
29
+ .sg-list-bordered .sg-list-header {
30
+ border-bottom: 1px solid var(--sg-color-border);
31
+ }
32
+
33
+ .sg-list-bordered .sg-list-footer {
34
+ border-top: 1px solid var(--sg-color-border);
35
+ }
36
+
37
+ /* ---- Items container ---- */
38
+ .sg-list-items {
39
+ min-height: 0;
40
+ }
41
+
42
+ .sg-list-grid .sg-list-items {
43
+ --sg-list-grid-base-columns: 1fr;
44
+ display: grid;
45
+ /*
46
+ * Колонки определяются двумя переменными:
47
+ * --sg-list-grid-columns — наследуется от корня `.sg-list` при срабатывании media;
48
+ * --sg-list-grid-base-columns — ставится инлайн на этом элементе (grid.column);
49
+ * media побеждает за счёт наследования, инлайн не блокирует его.
50
+ */
51
+ grid-template-columns: var(--sg-list-grid-columns, var(--sg-list-grid-base-columns));
52
+ }
53
+
54
+ /* ---- Empty ---- */
55
+ .sg-list-empty {
56
+ padding: var(--sg-padding-xl);
57
+ text-align: center;
58
+ }
59
+
60
+ /* ---- Single item ---- */
61
+ .sg-list-item {
62
+ display: flex;
63
+ /* Center main / actions / extra blocks on a single baseline so rows with a
64
+ * multi-line Meta block (avatar + title + description) stay visually even.
65
+ * The Meta block keeps its own `align-items: flex-start` internally so the
66
+ * avatar still tops out with the title. */
67
+ align-items: center;
68
+ padding: var(--sg-padding-md) var(--sg-padding-lg);
69
+ transition: background var(--sg-transition-duration);
70
+ }
71
+
72
+ .sg-list-split .sg-list-item + .sg-list-item {
73
+ border-top: 1px solid var(--sg-color-border-secondary);
74
+ }
75
+
76
+ .sg-list-bordered .sg-list-item:first-child {
77
+ border-top: none;
78
+ }
79
+
80
+ .sg-list-item:hover {
81
+ background: var(--sg-color-bg-hover);
82
+ }
83
+
84
+ /*
85
+ * Когда пользователь использует `<List.Item>` (или `<sg-list-item>`),
86
+ * у него уже есть класс `.sg-list-item`. Снаружи обёртка из `renderItemWrapper`
87
+ * тоже получает `.sg-list-item` (нужен для голых `<div>`-renderItem'ов в Basic/
88
+ * Sizes/Slots demo). Чтобы при двойной обёртке не удваивались padding/border/
89
+ * hover, сбрасываем стили внутреннего `.sg-list-item` и растягиваем его на
90
+ * ширину flex-родителя.
91
+ */
92
+ .sg-list-item .sg-list-item {
93
+ padding: 0;
94
+ border: none;
95
+ background: transparent;
96
+ flex: 1;
97
+ min-width: 0;
98
+ }
99
+
100
+ .sg-list-item .sg-list-item:hover {
101
+ background: transparent;
102
+ }
103
+
104
+ /* ---- Item modifiers ---- */
105
+ .sg-list-item-hoverable {
106
+ cursor: pointer;
107
+ }
108
+
109
+ .sg-list-item-selectable {
110
+ cursor: pointer;
111
+ user-select: none;
112
+ }
113
+
114
+ .sg-list-item-selected,
115
+ .sg-list-item-selected:hover {
116
+ background: var(--sg-color-primary-bg, rgba(22, 119, 255, 0.08));
117
+ }
118
+
119
+ .sg-list-item-dragging {
120
+ opacity: 0.5;
121
+ }
122
+
123
+ .sg-list-item-drop-target {
124
+ box-shadow: inset 0 2px 0 0 var(--sg-color-primary);
125
+ }
126
+
127
+ /* ---- Virtual scroll ----
128
+ *
129
+ * Внутренний контент virtual-режима полностью `position: absolute` (каждая
130
+ * строка — на своём `top = index * itemHeight`). В flex-контексте (например,
131
+ * `.demo-box-preview { display: flex }`) и `.sg-list`, и
132
+ * `.sg-list-virtual-container` без контента в потоке схлопываются до 0 ширины.
133
+ * Явный `width: 100%` на корне (через модификатор `.sg-list-virtual`) и на
134
+ * самом scroll-контейнере гарантирует, что они растянутся на всю доступную
135
+ * ширину родителя.
136
+ */
137
+ .sg-list-virtual {
138
+ width: 100%;
139
+ }
140
+
141
+ .sg-list-virtual-container {
142
+ width: 100%;
143
+ }
144
+
145
+ /* ---- Drag handle ---- */
146
+ .sg-list-drag-handle {
147
+ display: inline-flex;
148
+ align-items: center;
149
+ margin-right: var(--sg-padding-sm);
150
+ color: var(--sg-color-text-secondary);
151
+ cursor: grab;
152
+ user-select: none;
153
+ }
154
+
155
+ .sg-list-drag-handle:active {
156
+ cursor: grabbing;
157
+ }
158
+
159
+ .sg-list-item-main {
160
+ flex: 1;
161
+ min-width: 0;
162
+ display: flex;
163
+ align-items: center;
164
+ }
165
+
166
+ .sg-list-item-content {
167
+ flex: 1;
168
+ min-width: 0;
169
+ }
170
+
171
+ /* ---- Actions ---- */
172
+ .sg-list-item-actions {
173
+ display: flex;
174
+ align-items: center;
175
+ gap: var(--sg-padding-sm);
176
+ list-style: none;
177
+ margin: 0;
178
+ padding: 0;
179
+ margin-left: var(--sg-padding-lg);
180
+ flex-shrink: 0;
181
+ }
182
+
183
+ .sg-list-item-action {
184
+ color: var(--sg-color-text-secondary);
185
+ cursor: pointer;
186
+ transition: color var(--sg-transition-duration);
187
+ }
188
+
189
+ .sg-list-item-action:hover {
190
+ color: var(--sg-color-primary);
191
+ }
192
+
193
+ .sg-list-item-actions li + li::before {
194
+ content: '';
195
+ display: inline-block;
196
+ width: 1px;
197
+ height: 14px;
198
+ background: var(--sg-color-border);
199
+ margin-right: var(--sg-padding-sm);
200
+ vertical-align: middle;
201
+ }
202
+
203
+ /* ---- Extra ---- */
204
+ .sg-list-item-extra {
205
+ margin-left: var(--sg-padding-xl);
206
+ flex-shrink: 0;
207
+ }
208
+
209
+ /* ---- Meta ---- */
210
+ .sg-list-item-meta {
211
+ display: flex;
212
+ align-items: flex-start;
213
+ gap: var(--sg-padding-md);
214
+ flex: 1;
215
+ min-width: 0;
216
+ }
217
+
218
+ .sg-list-item-meta-avatar {
219
+ flex-shrink: 0;
220
+ }
221
+
222
+ .sg-list-item-meta-content {
223
+ flex: 1;
224
+ min-width: 0;
225
+ }
226
+
227
+ .sg-list-item-meta-title {
228
+ margin: 0 0 var(--sg-margin-xs) 0;
229
+ font-size: var(--sg-font-size);
230
+ font-weight: 600;
231
+ color: var(--sg-color-text);
232
+ line-height: var(--sg-line-height);
233
+ }
234
+
235
+ .sg-list-item-meta-description {
236
+ font-size: var(--sg-font-size-sm);
237
+ color: var(--sg-color-text-secondary);
238
+ line-height: var(--sg-line-height);
239
+ }
240
+
241
+ /* ---- Sizes ---- */
242
+ .sg-list-small .sg-list-item {
243
+ padding: var(--sg-padding-sm) var(--sg-padding-md);
244
+ }
245
+
246
+ .sg-list-small .sg-list-header,
247
+ .sg-list-small .sg-list-footer {
248
+ padding: var(--sg-padding-sm) var(--sg-padding-md);
249
+ }
250
+
251
+ .sg-list-small .sg-list-item-meta-title {
252
+ font-size: var(--sg-font-size-sm);
253
+ }
254
+
255
+ .sg-list-large .sg-list-item {
256
+ padding: var(--sg-padding-lg) var(--sg-padding-xl);
257
+ }
258
+
259
+ .sg-list-large .sg-list-header,
260
+ .sg-list-large .sg-list-footer {
261
+ padding: var(--sg-padding-lg) var(--sg-padding-xl);
262
+ }
263
+
264
+ .sg-list-large .sg-list-item-meta-title {
265
+ font-size: var(--sg-font-size-lg);
266
+ }
267
+
268
+ /* ---- Grid mode ---- */
269
+ .sg-list-grid .sg-list-item {
270
+ border: none;
271
+ }
272
+
273
+ .sg-list-grid.sg-list-bordered .sg-list-items {
274
+ padding: var(--sg-padding-md);
275
+ }
276
+
277
+ .sg-list-grid .sg-list-item {
278
+ border-radius: var(--sg-border-radius);
279
+ }
280
+
281
+ /*
282
+ * Responsive grid breakpoints.
283
+ *
284
+ * Переопределяем `--sg-list-grid-columns` на КОРНЕ `.sg-list` (не на .sg-list-items),
285
+ * чтобы инлайновый `style` на `.sg-list-items` (который задаёт base columns) не перебивал
286
+ * media-override. Так мы обходимся без `!important`.
287
+ */
288
+ @media (max-width: 575px) {
289
+ .sg-list-grid-xs-1 {
290
+ --sg-list-grid-columns: repeat(1, 1fr);
291
+ }
292
+ .sg-list-grid-xs-2 {
293
+ --sg-list-grid-columns: repeat(2, 1fr);
294
+ }
295
+ .sg-list-grid-xs-3 {
296
+ --sg-list-grid-columns: repeat(3, 1fr);
297
+ }
298
+ }
299
+
300
+ @media (min-width: 576px) and (max-width: 767px) {
301
+ .sg-list-grid-sm-1 {
302
+ --sg-list-grid-columns: repeat(1, 1fr);
303
+ }
304
+ .sg-list-grid-sm-2 {
305
+ --sg-list-grid-columns: repeat(2, 1fr);
306
+ }
307
+ .sg-list-grid-sm-3 {
308
+ --sg-list-grid-columns: repeat(3, 1fr);
309
+ }
310
+ .sg-list-grid-sm-4 {
311
+ --sg-list-grid-columns: repeat(4, 1fr);
312
+ }
313
+ }
314
+
315
+ @media (min-width: 768px) and (max-width: 991px) {
316
+ .sg-list-grid-md-1 {
317
+ --sg-list-grid-columns: repeat(1, 1fr);
318
+ }
319
+ .sg-list-grid-md-2 {
320
+ --sg-list-grid-columns: repeat(2, 1fr);
321
+ }
322
+ .sg-list-grid-md-3 {
323
+ --sg-list-grid-columns: repeat(3, 1fr);
324
+ }
325
+ .sg-list-grid-md-4 {
326
+ --sg-list-grid-columns: repeat(4, 1fr);
327
+ }
328
+ .sg-list-grid-md-6 {
329
+ --sg-list-grid-columns: repeat(6, 1fr);
330
+ }
331
+ }
332
+
333
+ @media (min-width: 992px) {
334
+ .sg-list-grid-lg-1 {
335
+ --sg-list-grid-columns: repeat(1, 1fr);
336
+ }
337
+ .sg-list-grid-lg-2 {
338
+ --sg-list-grid-columns: repeat(2, 1fr);
339
+ }
340
+ .sg-list-grid-lg-3 {
341
+ --sg-list-grid-columns: repeat(3, 1fr);
342
+ }
343
+ .sg-list-grid-lg-4 {
344
+ --sg-list-grid-columns: repeat(4, 1fr);
345
+ }
346
+ .sg-list-grid-lg-6 {
347
+ --sg-list-grid-columns: repeat(6, 1fr);
348
+ }
349
+ }
350
+
351
+ /* ---- Load more ---- */
352
+ .sg-list-load-more {
353
+ text-align: center;
354
+ padding: var(--sg-padding-md) 0;
355
+ }
356
+
357
+ /* ---- Pagination ---- */
358
+ .sg-list-pagination {
359
+ display: flex;
360
+ justify-content: flex-end;
361
+ padding: var(--sg-padding-md) var(--sg-padding-lg);
362
+ }
363
+
364
+ .sg-list-bordered .sg-list-pagination {
365
+ border-top: 1px solid var(--sg-color-border-secondary);
366
+ }