@robot-admin/layout 3.1.0 → 3.2.1

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.
@@ -1,391 +1,421 @@
1
- /**
2
- * SettingsDrawer 组件样式
3
- */
4
-
5
- // Tab 样式
6
- .settings-tabs {
7
- .n-tabs-nav {
8
- padding: 0 4px;
9
- }
10
- }
11
-
12
- // 章节样式
13
- .settings-section {
14
- margin-bottom: 24px;
15
- padding-bottom: 20px;
16
- border-bottom: 1px solid var(--n-border-color);
17
-
18
- &:last-child {
19
- border-bottom: none;
20
- }
21
- }
22
-
23
- .section-title {
24
- display: flex;
25
- justify-content: space-between;
26
- align-items: center;
27
- font-size: 14px;
28
- font-weight: 600;
29
- margin-bottom: 8px;
30
- color: var(--n-text-color);
31
- }
32
-
33
- // 预设方案网格
34
- .preset-grid {
35
- display: grid;
36
- grid-template-columns: repeat(3, 1fr);
37
- gap: 16px;
38
- margin-top: 12px;
39
- }
40
-
41
- .preset-card {
42
- position: relative;
43
- padding: 18px 14px;
44
- border-radius: 12px;
45
- border: 2px solid var(--n-border-color);
46
- background: var(--n-color);
47
- cursor: pointer;
48
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
49
- text-align: center;
50
- overflow: hidden;
51
-
52
- &::before {
53
- content: '';
54
- position: absolute;
55
- top: 0;
56
- left: 0;
57
- right: 0;
58
- height: 3px;
59
- background: linear-gradient(90deg, var(--n-color-target), var(--n-color-target));
60
- opacity: 0;
61
- transition: opacity 0.3s ease;
62
- border-radius: 3px 3px 0 0;
63
- }
64
-
65
- &:hover {
66
- border-color: var(--n-color-target);
67
- transform: translateY(-4px);
68
- box-shadow: 0 8px 16px var(--primary-color-shadow, rgba(32, 128, 240, 0.12));
69
-
70
- &::before {
71
- opacity: 1;
72
- }
73
-
74
- .preset-icon {
75
- transform: scale(1.1);
76
- }
77
-
78
- .preset-name {
79
- color: var(--n-color-target);
80
- }
81
- }
82
-
83
- &.active {
84
- border-color: var(--n-color-target);
85
- background: var(--n-color-target-light);
86
- box-shadow: 0 8px 20px var(--primary-color-shadow, rgba(32, 128, 240, 0.2));
87
-
88
- &::before {
89
- opacity: 1;
90
- }
91
-
92
- .preset-name {
93
- color: var(--n-color-target);
94
- font-weight: 600;
95
- }
96
- }
97
- }
98
-
99
- .preset-card:focus-visible,
100
- .layout-item:focus-visible {
101
- outline: 2px solid var(--n-color-target);
102
- outline-offset: 2px;
103
- }
104
-
105
- .preset-icon {
106
- font-size: 36px;
107
- margin-bottom: 10px;
108
- transition: all 0.3s ease;
109
- }
110
-
111
- .preset-name {
112
- font-size: 14px;
113
- font-weight: 500;
114
- margin-bottom: 8px;
115
- color: var(--n-text-color);
116
- transition: all 0.3s ease;
117
- }
118
-
119
- .preset-color {
120
- display: flex;
121
- justify-content: center;
122
- }
123
-
124
- .color-dot {
125
- width: 24px;
126
- height: 24px;
127
- border-radius: 50%;
128
- border: 2px solid #fff;
129
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
130
- transition: all 0.3s ease;
131
-
132
- &:hover {
133
- transform: scale(1.1);
134
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
135
- }
136
- }
137
-
138
- // 主题模式
139
- .mode-group {
140
- width: 100%;
141
-
142
- .n-radio-button {
143
- flex: 1;
144
- }
145
- }
146
-
147
- // 颜色选择器
148
- .color-picker-wrapper {
149
- display: flex;
150
- align-items: center;
151
- gap: 12px;
152
- }
153
-
154
- .color-value {
155
- width: 80px;
156
- font-size: 13px;
157
- font-family: 'Courier New', monospace;
158
- color: var(--n-text-color-2);
159
- }
160
-
161
- // 圆角/动画选择
162
- .radius-group,
163
- .transition-group,
164
- .menu-expand-group {
165
- width: 100%;
166
-
167
- .n-radio-button {
168
- flex: 1;
169
- }
170
- }
171
-
172
- // 布局模式网格
173
- .layout-grid {
174
- display: grid;
175
- grid-template-columns: repeat(3, 1fr);
176
- gap: 16px;
177
- }
178
-
179
- .layout-item {
180
- position: relative;
181
- display: flex;
182
- flex-direction: column;
183
- align-items: center;
184
- gap: 10px;
185
- padding: 16px 12px;
186
- border-radius: 12px;
187
- border: 2px solid var(--n-border-color);
188
- background: var(--n-color);
189
- cursor: pointer;
190
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
191
- overflow: hidden;
192
-
193
- &::before {
194
- content: '';
195
- position: absolute;
196
- top: 0;
197
- left: 0;
198
- right: 0;
199
- height: 3px;
200
- background: linear-gradient(90deg, var(--n-color-target), var(--n-color-target));
201
- opacity: 0;
202
- transition: opacity 0.3s ease;
203
- border-radius: 3px 3px 0 0;
204
- }
205
-
206
- &:hover:not(.disabled) {
207
- border-color: var(--n-color-target);
208
- box-shadow: 0 8px 16px var(--primary-color-shadow, rgba(32, 128, 240, 0.12));
209
- transform: translateY(-4px);
210
-
211
- &::before {
212
- opacity: 1;
213
- }
214
-
215
- .layout-svg {
216
- transform: scale(1.05);
217
- color: var(--n-color-target);
218
- }
219
-
220
- .layout-label {
221
- color: var(--n-color-target);
222
- }
223
- }
224
-
225
- &.active {
226
- border-color: var(--n-color-target);
227
- background: var(--n-color-target-light);
228
- box-shadow: 0 8px 20px var(--primary-color-shadow, rgba(32, 128, 240, 0.2));
229
-
230
- &::before {
231
- opacity: 1;
232
- }
233
-
234
- // 选中状态:图标和文字都变主题色
235
- .layout-svg {
236
- color: var(--primary-color, #409eff) !important;
237
- }
238
-
239
- .layout-label {
240
- color: var(--primary-color, #409eff) !important;
241
- font-weight: 600;
242
- }
243
- }
244
-
245
- &.disabled {
246
- cursor: not-allowed;
247
- opacity: 0.5;
248
- filter: grayscale(0.8);
249
-
250
- &:hover {
251
- transform: none;
252
- box-shadow: none;
253
- border-color: var(--n-border-color);
254
-
255
- &::before {
256
- opacity: 0;
257
- }
258
- }
259
- }
260
- }
261
-
262
- .layout-screenshot {
263
- width: 100%;
264
- height: 56px;
265
- display: flex;
266
- align-items: center;
267
- justify-content: center;
268
- background: var(--n-color-modal);
269
- border-radius: 8px;
270
- padding: 8px;
271
- transition: all 0.3s ease;
272
- }
273
-
274
- .layout-svg {
275
- width: 64px;
276
- height: 48px;
277
- color: #999; // 默认:灰色
278
- transition: all 0.3s ease;
279
- }
280
-
281
- .layout-svg rect {
282
- fill: currentColor !important;
283
- }
284
- .layout-label {
285
- font-size: 13px;
286
- color: var(--n-text-color);
287
- font-weight: 500;
288
- text-align: center;
289
- transition: all 0.3s ease;
290
- display: flex;
291
- flex-direction: column;
292
- align-items: center;
293
- gap: 6px;
294
- line-height: 1.4;
295
- }
296
-
297
- .badge-soon {
298
- font-size: 10px;
299
- padding: 1px 5px;
300
- border-radius: 3px;
301
- background: linear-gradient(135deg, #faad14 0%, #fa8c16 100%);
302
- color: #fff;
303
- font-weight: 600;
304
- white-space: nowrap;
305
- box-shadow: 0 1px 3px rgba(250, 173, 20, 0.3);
306
- }
307
-
308
- // 设置项
309
- .setting-item {
310
- display: flex;
311
- justify-content: space-between;
312
- align-items: center;
313
- padding: 10px 0;
314
- font-size: 13px;
315
- color: var(--n-text-color);
316
- }
317
-
318
- // 滑块
319
- .slider-item {
320
- margin-bottom: 20px;
321
- }
322
-
323
- .slider-label {
324
- display: flex;
325
- justify-content: space-between;
326
- margin-bottom: 8px;
327
- font-size: 13px;
328
- color: var(--n-text-color);
329
- }
330
-
331
- .slider-value {
332
- font-weight: 600;
333
- color: var(--n-color-target);
334
- }
335
-
336
- // 操作按钮网格布局
337
- .action-buttons-grid {
338
- display: grid;
339
- grid-template-columns: repeat(2, 1fr);
340
- gap: 10px;
341
- }
342
-
343
- // 设置项标签
344
- .setting-label {
345
- display: flex;
346
- flex-direction: column;
347
- gap: 4px;
348
-
349
- .setting-desc {
350
- font-size: 12px;
351
- color: var(--n-text-color-2);
352
- opacity: 0.8;
353
- }
354
- }
355
-
356
- // 系统信息
357
- .system-info {
358
- display: flex;
359
- flex-direction: column;
360
- gap: 12px;
361
- margin-top: 12px;
362
- }
363
-
364
- .info-item {
365
- display: flex;
366
- justify-content: space-between;
367
- align-items: center;
368
- padding: 10px 12px;
369
- background: var(--n-color);
370
- border-radius: 8px;
371
- border: 1px solid var(--n-border-color);
372
- transition: all 0.2s ease;
373
-
374
- &:hover {
375
- border-color: var(--n-color-target);
376
- background: var(--n-color-target-light);
377
- }
378
- }
379
-
380
- .info-label {
381
- font-size: 13px;
382
- color: var(--n-text-color-2);
383
- font-weight: 500;
384
- }
385
-
386
- .info-value {
387
- font-size: 13px;
388
- color: var(--n-text-color);
389
- font-weight: 600;
390
- font-family: 'Consolas', 'Monaco', monospace;
391
- }
1
+ /**
2
+ * SettingsDrawer 组件样式
3
+ */
4
+
5
+ // Tab 样式
6
+ .settings-tabs {
7
+ .n-tabs-nav {
8
+ padding: 0 4px;
9
+ }
10
+ }
11
+
12
+ // 章节样式
13
+ .settings-section {
14
+ margin-bottom: 24px;
15
+ padding-bottom: 20px;
16
+ border-bottom: 1px solid var(--n-border-color);
17
+
18
+ &:last-child {
19
+ border-bottom: none;
20
+ }
21
+ }
22
+
23
+ .section-title {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ align-items: center;
27
+ font-size: 14px;
28
+ font-weight: 600;
29
+ margin-bottom: 8px;
30
+ color: var(--n-text-color);
31
+ }
32
+
33
+ // 预设方案网格
34
+ .preset-grid {
35
+ display: grid;
36
+ grid-template-columns: repeat(3, 1fr);
37
+ gap: 16px;
38
+ margin-top: 12px;
39
+ }
40
+
41
+ .preset-card {
42
+ position: relative;
43
+ padding: 18px 14px;
44
+ border-radius: 12px;
45
+ border: 2px solid var(--n-border-color);
46
+ background: var(--n-color);
47
+ cursor: pointer;
48
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
49
+ text-align: center;
50
+ overflow: hidden;
51
+
52
+ &::before {
53
+ content: "";
54
+ position: absolute;
55
+ top: 0;
56
+ left: 0;
57
+ right: 0;
58
+ height: 3px;
59
+ background: linear-gradient(
60
+ 90deg,
61
+ var(--n-color-target),
62
+ var(--n-color-target)
63
+ );
64
+ opacity: 0;
65
+ transition: opacity 0.3s ease;
66
+ border-radius: 3px 3px 0 0;
67
+ }
68
+
69
+ &:hover {
70
+ border-color: var(--n-color-target);
71
+ transform: translateY(-4px);
72
+ box-shadow: 0 8px 16px
73
+ var(
74
+ --ra-layout-primary-color-shadow,
75
+ var(--primary-color-shadow, rgba(32, 128, 240, 0.12))
76
+ );
77
+
78
+ &::before {
79
+ opacity: 1;
80
+ }
81
+
82
+ .preset-icon {
83
+ transform: scale(1.1);
84
+ }
85
+
86
+ .preset-name {
87
+ color: var(--n-color-target);
88
+ }
89
+ }
90
+
91
+ &.active {
92
+ border-color: var(--n-color-target);
93
+ background: var(--n-color-target-light);
94
+ box-shadow: 0 8px 20px
95
+ var(
96
+ --ra-layout-primary-color-shadow,
97
+ var(--primary-color-shadow, rgba(32, 128, 240, 0.2))
98
+ );
99
+
100
+ &::before {
101
+ opacity: 1;
102
+ }
103
+
104
+ .preset-name {
105
+ color: var(--n-color-target);
106
+ font-weight: 600;
107
+ }
108
+ }
109
+ }
110
+
111
+ .preset-card:focus-visible,
112
+ .layout-item:focus-visible {
113
+ outline: 2px solid var(--n-color-target);
114
+ outline-offset: 2px;
115
+ }
116
+
117
+ .preset-icon {
118
+ font-size: 36px;
119
+ margin-bottom: 10px;
120
+ transition: all 0.3s ease;
121
+ }
122
+
123
+ .preset-name {
124
+ font-size: 14px;
125
+ font-weight: 500;
126
+ margin-bottom: 8px;
127
+ color: var(--n-text-color);
128
+ transition: all 0.3s ease;
129
+ }
130
+
131
+ .preset-color {
132
+ display: flex;
133
+ justify-content: center;
134
+ }
135
+
136
+ .color-dot {
137
+ width: 24px;
138
+ height: 24px;
139
+ border-radius: 50%;
140
+ border: 2px solid #fff;
141
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
142
+ transition: all 0.3s ease;
143
+
144
+ &:hover {
145
+ transform: scale(1.1);
146
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
147
+ }
148
+ }
149
+
150
+ // 主题模式
151
+ .mode-group {
152
+ width: 100%;
153
+
154
+ .n-radio-button {
155
+ flex: 1;
156
+ }
157
+ }
158
+
159
+ // 颜色选择器
160
+ .color-picker-wrapper {
161
+ display: flex;
162
+ align-items: center;
163
+ gap: 12px;
164
+ }
165
+
166
+ .color-value {
167
+ width: 80px;
168
+ font-size: 13px;
169
+ font-family: "Courier New", monospace;
170
+ color: var(--n-text-color-2);
171
+ }
172
+
173
+ // 圆角/动画选择
174
+ .radius-group,
175
+ .transition-group,
176
+ .menu-expand-group {
177
+ width: 100%;
178
+
179
+ .n-radio-button {
180
+ flex: 1;
181
+ }
182
+ }
183
+
184
+ // 布局模式网格
185
+ .layout-grid {
186
+ display: grid;
187
+ grid-template-columns: repeat(3, 1fr);
188
+ gap: 16px;
189
+ }
190
+
191
+ .layout-item {
192
+ position: relative;
193
+ display: flex;
194
+ flex-direction: column;
195
+ align-items: center;
196
+ gap: 10px;
197
+ padding: 16px 12px;
198
+ border-radius: 12px;
199
+ border: 2px solid var(--n-border-color);
200
+ background: var(--n-color);
201
+ cursor: pointer;
202
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
203
+ overflow: hidden;
204
+
205
+ &::before {
206
+ content: "";
207
+ position: absolute;
208
+ top: 0;
209
+ left: 0;
210
+ right: 0;
211
+ height: 3px;
212
+ background: linear-gradient(
213
+ 90deg,
214
+ var(--n-color-target),
215
+ var(--n-color-target)
216
+ );
217
+ opacity: 0;
218
+ transition: opacity 0.3s ease;
219
+ border-radius: 3px 3px 0 0;
220
+ }
221
+
222
+ &:hover:not(.disabled) {
223
+ border-color: var(--n-color-target);
224
+ box-shadow: 0 8px 16px
225
+ var(
226
+ --ra-layout-primary-color-shadow,
227
+ var(--primary-color-shadow, rgba(32, 128, 240, 0.12))
228
+ );
229
+ transform: translateY(-4px);
230
+
231
+ &::before {
232
+ opacity: 1;
233
+ }
234
+
235
+ .layout-svg {
236
+ transform: scale(1.05);
237
+ color: var(--n-color-target);
238
+ }
239
+
240
+ .layout-label {
241
+ color: var(--n-color-target);
242
+ }
243
+ }
244
+
245
+ &.active {
246
+ border-color: var(--n-color-target);
247
+ background: var(--n-color-target-light);
248
+ box-shadow: 0 8px 20px
249
+ var(
250
+ --ra-layout-primary-color-shadow,
251
+ var(--primary-color-shadow, rgba(32, 128, 240, 0.2))
252
+ );
253
+
254
+ &::before {
255
+ opacity: 1;
256
+ }
257
+
258
+ // 选中状态:图标和文字都变主题色
259
+ .layout-svg {
260
+ color: var(
261
+ --ra-layout-primary-color,
262
+ var(--primary-color, #409eff)
263
+ ) !important;
264
+ }
265
+
266
+ .layout-label {
267
+ color: var(
268
+ --ra-layout-primary-color,
269
+ var(--primary-color, #409eff)
270
+ ) !important;
271
+ font-weight: 600;
272
+ }
273
+ }
274
+
275
+ &.disabled {
276
+ cursor: not-allowed;
277
+ opacity: 0.5;
278
+ filter: grayscale(0.8);
279
+
280
+ &:hover {
281
+ transform: none;
282
+ box-shadow: none;
283
+ border-color: var(--n-border-color);
284
+
285
+ &::before {
286
+ opacity: 0;
287
+ }
288
+ }
289
+ }
290
+ }
291
+
292
+ .layout-screenshot {
293
+ width: 100%;
294
+ height: 56px;
295
+ display: flex;
296
+ align-items: center;
297
+ justify-content: center;
298
+ background: var(--n-color-modal);
299
+ border-radius: 8px;
300
+ padding: 8px;
301
+ transition: all 0.3s ease;
302
+ }
303
+
304
+ .layout-svg {
305
+ width: 64px;
306
+ height: 48px;
307
+ color: #999; // 默认:灰色
308
+ transition: all 0.3s ease;
309
+ }
310
+
311
+ .layout-svg rect {
312
+ fill: currentColor !important;
313
+ }
314
+ .layout-label {
315
+ font-size: 13px;
316
+ color: var(--n-text-color);
317
+ font-weight: 500;
318
+ text-align: center;
319
+ transition: all 0.3s ease;
320
+ display: flex;
321
+ flex-direction: column;
322
+ align-items: center;
323
+ gap: 6px;
324
+ line-height: 1.4;
325
+ }
326
+
327
+ .badge-soon {
328
+ font-size: 10px;
329
+ padding: 1px 5px;
330
+ border-radius: 3px;
331
+ background: linear-gradient(135deg, #faad14 0%, #fa8c16 100%);
332
+ color: #fff;
333
+ font-weight: 600;
334
+ white-space: nowrap;
335
+ box-shadow: 0 1px 3px rgba(250, 173, 20, 0.3);
336
+ }
337
+
338
+ // 设置项
339
+ .setting-item {
340
+ display: flex;
341
+ justify-content: space-between;
342
+ align-items: center;
343
+ padding: 10px 0;
344
+ font-size: 13px;
345
+ color: var(--n-text-color);
346
+ }
347
+
348
+ // 滑块
349
+ .slider-item {
350
+ margin-bottom: 20px;
351
+ }
352
+
353
+ .slider-label {
354
+ display: flex;
355
+ justify-content: space-between;
356
+ margin-bottom: 8px;
357
+ font-size: 13px;
358
+ color: var(--n-text-color);
359
+ }
360
+
361
+ .slider-value {
362
+ font-weight: 600;
363
+ color: var(--n-color-target);
364
+ }
365
+
366
+ // 操作按钮网格布局
367
+ .action-buttons-grid {
368
+ display: grid;
369
+ grid-template-columns: repeat(2, 1fr);
370
+ gap: 10px;
371
+ }
372
+
373
+ // 设置项标签
374
+ .setting-label {
375
+ display: flex;
376
+ flex-direction: column;
377
+ gap: 4px;
378
+
379
+ .setting-desc {
380
+ font-size: 12px;
381
+ color: var(--n-text-color-2);
382
+ opacity: 0.8;
383
+ }
384
+ }
385
+
386
+ // 系统信息
387
+ .system-info {
388
+ display: flex;
389
+ flex-direction: column;
390
+ gap: 12px;
391
+ margin-top: 12px;
392
+ }
393
+
394
+ .info-item {
395
+ display: flex;
396
+ justify-content: space-between;
397
+ align-items: center;
398
+ padding: 10px 12px;
399
+ background: var(--n-color);
400
+ border-radius: 8px;
401
+ border: 1px solid var(--n-border-color);
402
+ transition: all 0.2s ease;
403
+
404
+ &:hover {
405
+ border-color: var(--n-color-target);
406
+ background: var(--n-color-target-light);
407
+ }
408
+ }
409
+
410
+ .info-label {
411
+ font-size: 13px;
412
+ color: var(--n-text-color-2);
413
+ font-weight: 500;
414
+ }
415
+
416
+ .info-value {
417
+ font-size: 13px;
418
+ color: var(--n-text-color);
419
+ font-weight: 600;
420
+ font-family: "Consolas", "Monaco", monospace;
421
+ }