@skygraph/styles 0.0.0-placeholder.0 → 0.1.0

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