@robot-admin/layout 3.2.0 → 3.2.2

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,421 +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(
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
- }
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
+ }