@huyooo/file-explorer-frontend-vue 0.4.12 → 0.4.15
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.
- package/dist/components/CompressDialog.vue.d.ts.map +1 -1
- package/dist/components/FileGrid.vue.d.ts.map +1 -1
- package/dist/components/FileInfoDialog.vue.d.ts.map +1 -1
- package/dist/components/FileList.vue.d.ts.map +1 -1
- package/dist/components/Toolbar.vue.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Breadcrumb.vue +7 -7
- package/src/components/CompressDialog.vue +46 -43
- package/src/components/ContextMenu.vue +18 -18
- package/src/components/FileGrid.vue +18 -51
- package/src/components/FileIcon.vue +11 -11
- package/src/components/FileInfoDialog.vue +32 -70
- package/src/components/FileList.vue +19 -76
- package/src/components/FileListView.vue +3 -3
- package/src/components/FileSidebar.vue +12 -12
- package/src/components/ProgressDialog.vue +36 -36
- package/src/components/SortIndicator.vue +1 -1
- package/src/components/StatusBar.vue +3 -3
- package/src/components/Toolbar.vue +57 -24
- package/src/components/Window.vue +18 -18
- package/src/index.ts +3 -0
- package/src/styles.css +149 -0
|
@@ -157,7 +157,7 @@ const handleClose = () => {
|
|
|
157
157
|
.progress-dialog-overlay {
|
|
158
158
|
position: fixed;
|
|
159
159
|
inset: 0;
|
|
160
|
-
background:
|
|
160
|
+
background: var(--huyooo-overlay);
|
|
161
161
|
display: flex;
|
|
162
162
|
align-items: center;
|
|
163
163
|
justify-content: center;
|
|
@@ -165,9 +165,9 @@ const handleClose = () => {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
.progress-dialog {
|
|
168
|
-
background:
|
|
168
|
+
background: var(--huyooo-panel-bg);
|
|
169
169
|
border-radius: 12px;
|
|
170
|
-
box-shadow:
|
|
170
|
+
box-shadow: var(--huyooo-shadow-lg);
|
|
171
171
|
width: 380px;
|
|
172
172
|
max-width: 90vw;
|
|
173
173
|
overflow: hidden;
|
|
@@ -180,7 +180,7 @@ const handleClose = () => {
|
|
|
180
180
|
align-items: center;
|
|
181
181
|
justify-content: space-between;
|
|
182
182
|
padding: 16px 20px;
|
|
183
|
-
border-bottom: 1px solid
|
|
183
|
+
border-bottom: 1px solid var(--huyooo-border);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
.progress-dialog-title {
|
|
@@ -189,7 +189,7 @@ const handleClose = () => {
|
|
|
189
189
|
gap: 10px;
|
|
190
190
|
font-weight: 600;
|
|
191
191
|
font-size: 16px;
|
|
192
|
-
color:
|
|
192
|
+
color: var(--huyooo-text);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
.progress-dialog-close {
|
|
@@ -197,7 +197,7 @@ const handleClose = () => {
|
|
|
197
197
|
border: none;
|
|
198
198
|
padding: 4px;
|
|
199
199
|
cursor: pointer;
|
|
200
|
-
color:
|
|
200
|
+
color: var(--huyooo-text-muted);
|
|
201
201
|
border-radius: 4px;
|
|
202
202
|
display: flex;
|
|
203
203
|
align-items: center;
|
|
@@ -205,8 +205,8 @@ const handleClose = () => {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
.progress-dialog-close:hover {
|
|
208
|
-
background:
|
|
209
|
-
color:
|
|
208
|
+
background: var(--huyooo-muted);
|
|
209
|
+
color: var(--huyooo-text);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
.progress-dialog-content {
|
|
@@ -218,7 +218,7 @@ const handleClose = () => {
|
|
|
218
218
|
|
|
219
219
|
.progress-dialog-status {
|
|
220
220
|
font-size: 14px;
|
|
221
|
-
color:
|
|
221
|
+
color: var(--huyooo-text);
|
|
222
222
|
text-align: center;
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -231,14 +231,14 @@ const handleClose = () => {
|
|
|
231
231
|
.progress-dialog-bar {
|
|
232
232
|
flex: 1;
|
|
233
233
|
height: 8px;
|
|
234
|
-
background:
|
|
234
|
+
background: var(--huyooo-border);
|
|
235
235
|
border-radius: 4px;
|
|
236
236
|
overflow: hidden;
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
.progress-dialog-bar-fill {
|
|
240
240
|
height: 100%;
|
|
241
|
-
background:
|
|
241
|
+
background: var(--huyooo-primary);
|
|
242
242
|
border-radius: 4px;
|
|
243
243
|
transition: width 0.3s ease;
|
|
244
244
|
}
|
|
@@ -246,14 +246,14 @@ const handleClose = () => {
|
|
|
246
246
|
.progress-dialog-percent {
|
|
247
247
|
font-size: 13px;
|
|
248
248
|
font-weight: 500;
|
|
249
|
-
color:
|
|
249
|
+
color: var(--huyooo-text);
|
|
250
250
|
min-width: 40px;
|
|
251
251
|
text-align: right;
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
.progress-dialog-current-file {
|
|
255
255
|
font-size: 12px;
|
|
256
|
-
color:
|
|
256
|
+
color: var(--huyooo-text-muted);
|
|
257
257
|
text-align: center;
|
|
258
258
|
white-space: nowrap;
|
|
259
259
|
overflow: hidden;
|
|
@@ -262,23 +262,23 @@ const handleClose = () => {
|
|
|
262
262
|
|
|
263
263
|
.progress-dialog-count {
|
|
264
264
|
font-size: 12px;
|
|
265
|
-
color:
|
|
265
|
+
color: var(--huyooo-text-muted);
|
|
266
266
|
text-align: center;
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
.progress-dialog-error {
|
|
270
270
|
padding: 12px;
|
|
271
|
-
background:
|
|
272
|
-
border: 1px solid
|
|
271
|
+
background: var(--huyooo-danger-bg);
|
|
272
|
+
border: 1px solid var(--huyooo-danger-border);
|
|
273
273
|
border-radius: 6px;
|
|
274
|
-
color:
|
|
274
|
+
color: var(--huyooo-danger);
|
|
275
275
|
font-size: 13px;
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
.progress-dialog-output {
|
|
279
279
|
padding: 12px;
|
|
280
|
-
background:
|
|
281
|
-
border: 1px solid
|
|
280
|
+
background: var(--huyooo-success-bg);
|
|
281
|
+
border: 1px solid var(--huyooo-success-border);
|
|
282
282
|
border-radius: 6px;
|
|
283
283
|
font-size: 12px;
|
|
284
284
|
display: flex;
|
|
@@ -287,12 +287,12 @@ const handleClose = () => {
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
.progress-dialog-output-label {
|
|
290
|
-
color:
|
|
290
|
+
color: var(--huyooo-success);
|
|
291
291
|
font-weight: 500;
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
.progress-dialog-output-path {
|
|
295
|
-
color:
|
|
295
|
+
color: var(--huyooo-success);
|
|
296
296
|
word-break: break-all;
|
|
297
297
|
}
|
|
298
298
|
|
|
@@ -301,7 +301,7 @@ const handleClose = () => {
|
|
|
301
301
|
justify-content: flex-end;
|
|
302
302
|
gap: 12px;
|
|
303
303
|
padding: 16px 20px;
|
|
304
|
-
border-top: 1px solid
|
|
304
|
+
border-top: 1px solid var(--huyooo-border);
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
.progress-dialog-btn {
|
|
@@ -317,39 +317,39 @@ const handleClose = () => {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
.progress-dialog-btn-cancel {
|
|
320
|
-
background:
|
|
321
|
-
border: 1px solid
|
|
322
|
-
color:
|
|
320
|
+
background: var(--huyooo-surface-2);
|
|
321
|
+
border: 1px solid var(--huyooo-border);
|
|
322
|
+
color: var(--huyooo-text);
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
.progress-dialog-btn-cancel:hover {
|
|
326
|
-
background:
|
|
326
|
+
background: var(--huyooo-surface);
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
.progress-dialog-btn-folder {
|
|
330
|
-
background:
|
|
331
|
-
border: 1px solid
|
|
332
|
-
color:
|
|
330
|
+
background: var(--huyooo-success-bg);
|
|
331
|
+
border: 1px solid var(--huyooo-success-border);
|
|
332
|
+
color: var(--huyooo-success);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
.progress-dialog-btn-folder:hover {
|
|
336
|
-
background:
|
|
336
|
+
background: color-mix(in srgb, var(--huyooo-success-bg) 75%, var(--huyooo-success) 25%);
|
|
337
337
|
}
|
|
338
338
|
|
|
339
339
|
.progress-dialog-btn-close {
|
|
340
|
-
background:
|
|
341
|
-
border: 1px solid
|
|
340
|
+
background: var(--huyooo-primary);
|
|
341
|
+
border: 1px solid var(--huyooo-primary);
|
|
342
342
|
color: white;
|
|
343
343
|
}
|
|
344
344
|
|
|
345
345
|
.progress-dialog-btn-close:hover {
|
|
346
|
-
background:
|
|
346
|
+
background: var(--huyooo-primary-hover, var(--huyooo-primary));
|
|
347
347
|
}
|
|
348
348
|
|
|
349
349
|
/* 旋转动画 */
|
|
350
350
|
.progress-dialog-icon-spin {
|
|
351
351
|
animation: spin 1s linear infinite;
|
|
352
|
-
color:
|
|
352
|
+
color: var(--huyooo-primary);
|
|
353
353
|
}
|
|
354
354
|
|
|
355
355
|
@keyframes spin {
|
|
@@ -358,11 +358,11 @@ const handleClose = () => {
|
|
|
358
358
|
}
|
|
359
359
|
|
|
360
360
|
.progress-dialog-icon-success {
|
|
361
|
-
color:
|
|
361
|
+
color: var(--huyooo-success);
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
.progress-dialog-icon-error {
|
|
365
|
-
color:
|
|
365
|
+
color: var(--huyooo-danger);
|
|
366
366
|
}
|
|
367
367
|
</style>
|
|
368
368
|
|
|
@@ -23,14 +23,14 @@ withDefaults(defineProps<{
|
|
|
23
23
|
<style scoped>
|
|
24
24
|
.file-status-bar {
|
|
25
25
|
height: 1.5rem;
|
|
26
|
-
background-color:
|
|
27
|
-
border-top: 1px solid
|
|
26
|
+
background-color: var(--huyooo-surface-2);
|
|
27
|
+
border-top: 1px solid var(--huyooo-border);
|
|
28
28
|
display: flex;
|
|
29
29
|
align-items: center;
|
|
30
30
|
justify-content: center;
|
|
31
31
|
padding: 0 8px;
|
|
32
32
|
font-size: 10px;
|
|
33
|
-
color:
|
|
33
|
+
color: var(--huyooo-text-muted);
|
|
34
34
|
user-select: none;
|
|
35
35
|
flex-shrink: 0;
|
|
36
36
|
z-index: 20;
|
|
@@ -121,9 +121,9 @@ const emit = defineEmits<{
|
|
|
121
121
|
<style scoped>
|
|
122
122
|
.file-toolbar {
|
|
123
123
|
height: 3rem;
|
|
124
|
-
background:
|
|
124
|
+
background: var(--huyooo-surface);
|
|
125
125
|
backdrop-filter: blur(12px);
|
|
126
|
-
border-bottom: 1px solid
|
|
126
|
+
border-bottom: 1px solid var(--huyooo-border);
|
|
127
127
|
display: flex;
|
|
128
128
|
align-items: center;
|
|
129
129
|
padding: 0 1rem;
|
|
@@ -140,8 +140,8 @@ const emit = defineEmits<{
|
|
|
140
140
|
.file-toolbar-nav {
|
|
141
141
|
display: flex;
|
|
142
142
|
align-items: center;
|
|
143
|
-
color:
|
|
144
|
-
background:
|
|
143
|
+
color: var(--huyooo-text-muted);
|
|
144
|
+
background: var(--huyooo-muted);
|
|
145
145
|
border-radius: 0.5rem;
|
|
146
146
|
padding: 0.125rem;
|
|
147
147
|
flex-shrink: 0;
|
|
@@ -158,22 +158,22 @@ const emit = defineEmits<{
|
|
|
158
158
|
display: flex;
|
|
159
159
|
align-items: center;
|
|
160
160
|
justify-content: center;
|
|
161
|
-
color:
|
|
161
|
+
color: var(--huyooo-text);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
.file-toolbar-button:hover:not(:disabled) {
|
|
165
|
-
background:
|
|
165
|
+
background: var(--huyooo-muted-hover);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
.file-toolbar-button:disabled {
|
|
169
|
-
color:
|
|
169
|
+
color: var(--huyooo-text-disabled);
|
|
170
170
|
cursor: default;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
.file-toolbar-button--active {
|
|
174
|
-
background:
|
|
175
|
-
box-shadow:
|
|
176
|
-
color:
|
|
174
|
+
background: var(--huyooo-surface-2);
|
|
175
|
+
box-shadow: var(--huyooo-shadow-sm);
|
|
176
|
+
color: var(--huyooo-text);
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
.file-toolbar-breadcrumb {
|
|
@@ -200,6 +200,39 @@ const emit = defineEmits<{
|
|
|
200
200
|
-webkit-app-region: no-drag;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
/**
|
|
204
|
+
* 重要:Toolbar 的样式是 scoped,slot 传入的内容不会自动命中 `.file-toolbar-button`。
|
|
205
|
+
* 为了让宿主(example / 业务方)在 #actions 插槽里复用同名 class 时样式一致,
|
|
206
|
+
* 这里用 :deep() 补齐一份(对齐 React 版的表现)。
|
|
207
|
+
*/
|
|
208
|
+
.file-toolbar-actions :deep(.file-toolbar-button) {
|
|
209
|
+
padding: 0.25rem;
|
|
210
|
+
border-radius: 0.375rem;
|
|
211
|
+
transition: all 200ms;
|
|
212
|
+
border: none;
|
|
213
|
+
background: transparent;
|
|
214
|
+
cursor: pointer;
|
|
215
|
+
display: flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
justify-content: center;
|
|
218
|
+
color: var(--huyooo-text);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.file-toolbar-actions :deep(.file-toolbar-button:hover:not(:disabled)) {
|
|
222
|
+
background: var(--huyooo-muted-hover);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.file-toolbar-actions :deep(.file-toolbar-button:disabled) {
|
|
226
|
+
color: var(--huyooo-text-disabled);
|
|
227
|
+
cursor: default;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.file-toolbar-actions :deep(.file-toolbar-button--active) {
|
|
231
|
+
background: var(--huyooo-surface-2);
|
|
232
|
+
box-shadow: var(--huyooo-shadow-sm);
|
|
233
|
+
color: var(--huyooo-text);
|
|
234
|
+
}
|
|
235
|
+
|
|
203
236
|
.file-toolbar-search {
|
|
204
237
|
position: relative;
|
|
205
238
|
display: none;
|
|
@@ -216,16 +249,16 @@ const emit = defineEmits<{
|
|
|
216
249
|
left: 0.625rem;
|
|
217
250
|
top: 50%;
|
|
218
251
|
transform: translateY(-50%);
|
|
219
|
-
color:
|
|
252
|
+
color: var(--huyooo-text-disabled);
|
|
220
253
|
transition: color 200ms;
|
|
221
254
|
}
|
|
222
255
|
|
|
223
256
|
.file-toolbar-search:focus-within .file-toolbar-search-icon {
|
|
224
|
-
color:
|
|
257
|
+
color: var(--huyooo-primary);
|
|
225
258
|
}
|
|
226
259
|
|
|
227
260
|
.file-toolbar-search-input {
|
|
228
|
-
background:
|
|
261
|
+
background: var(--huyooo-muted);
|
|
229
262
|
border: 1px solid transparent;
|
|
230
263
|
border-radius: 0.375rem;
|
|
231
264
|
padding-left: 2rem;
|
|
@@ -236,36 +269,36 @@ const emit = defineEmits<{
|
|
|
236
269
|
outline: none;
|
|
237
270
|
transition: all 200ms;
|
|
238
271
|
width: 8rem;
|
|
239
|
-
color:
|
|
272
|
+
color: var(--huyooo-text);
|
|
240
273
|
}
|
|
241
274
|
|
|
242
275
|
.file-toolbar-search-input::placeholder {
|
|
243
|
-
color:
|
|
276
|
+
color: var(--huyooo-text-disabled);
|
|
244
277
|
}
|
|
245
278
|
|
|
246
279
|
.file-toolbar-search-input:focus {
|
|
247
|
-
background:
|
|
248
|
-
border-color:
|
|
249
|
-
box-shadow: 0 0 0 2px
|
|
280
|
+
background: var(--huyooo-surface-2);
|
|
281
|
+
border-color: var(--huyooo-primary);
|
|
282
|
+
box-shadow: 0 0 0 2px var(--huyooo-focus-ring);
|
|
250
283
|
width: 12rem;
|
|
251
284
|
}
|
|
252
285
|
|
|
253
286
|
.file-toolbar-view-toggle {
|
|
254
287
|
display: flex;
|
|
255
288
|
align-items: center;
|
|
256
|
-
background:
|
|
289
|
+
background: var(--huyooo-muted);
|
|
257
290
|
border-radius: 0.5rem;
|
|
258
291
|
padding: 0.125rem;
|
|
259
|
-
color:
|
|
292
|
+
color: var(--huyooo-text-muted);
|
|
260
293
|
}
|
|
261
294
|
|
|
262
295
|
.file-toolbar-view-toggle .file-toolbar-button--active {
|
|
263
|
-
background:
|
|
264
|
-
box-shadow:
|
|
265
|
-
color:
|
|
296
|
+
background: var(--huyooo-surface-2);
|
|
297
|
+
box-shadow: var(--huyooo-shadow-sm);
|
|
298
|
+
color: var(--huyooo-text);
|
|
266
299
|
}
|
|
267
300
|
|
|
268
301
|
.file-toolbar-view-toggle .file-toolbar-button:not(.file-toolbar-button--active):hover {
|
|
269
|
-
background:
|
|
302
|
+
background: var(--huyooo-muted-hover);
|
|
270
303
|
}
|
|
271
304
|
</style>
|
|
@@ -317,7 +317,7 @@ onMounted(() => {
|
|
|
317
317
|
position: fixed;
|
|
318
318
|
inset: 0;
|
|
319
319
|
z-index: 100;
|
|
320
|
-
background:
|
|
320
|
+
background: var(--huyooo-overlay);
|
|
321
321
|
animation: fade-in 200ms ease-out;
|
|
322
322
|
display: flex;
|
|
323
323
|
align-items: center;
|
|
@@ -328,10 +328,10 @@ onMounted(() => {
|
|
|
328
328
|
position: absolute;
|
|
329
329
|
display: flex;
|
|
330
330
|
flex-direction: column;
|
|
331
|
-
background:
|
|
331
|
+
background: var(--huyooo-panel-bg);
|
|
332
332
|
backdrop-filter: blur(24px);
|
|
333
|
-
border: 1px solid
|
|
334
|
-
box-shadow:
|
|
333
|
+
border: 1px solid var(--huyooo-border);
|
|
334
|
+
box-shadow: var(--huyooo-shadow-lg);
|
|
335
335
|
border-radius: 0.5rem;
|
|
336
336
|
overflow: hidden;
|
|
337
337
|
animation: window-fade-in 200ms ease-out;
|
|
@@ -343,10 +343,10 @@ onMounted(() => {
|
|
|
343
343
|
align-items: center;
|
|
344
344
|
justify-content: space-between;
|
|
345
345
|
padding: 0 0.75rem;
|
|
346
|
-
border-bottom: 1px solid
|
|
346
|
+
border-bottom: 1px solid var(--huyooo-border);
|
|
347
347
|
flex-shrink: 0;
|
|
348
348
|
user-select: none;
|
|
349
|
-
background:
|
|
349
|
+
background: var(--huyooo-surface);
|
|
350
350
|
z-index: 20;
|
|
351
351
|
cursor: grab;
|
|
352
352
|
}
|
|
@@ -369,7 +369,7 @@ onMounted(() => {
|
|
|
369
369
|
align-items: center;
|
|
370
370
|
justify-content: center;
|
|
371
371
|
border: 1px solid;
|
|
372
|
-
box-shadow:
|
|
372
|
+
box-shadow: var(--huyooo-shadow-sm);
|
|
373
373
|
outline: none;
|
|
374
374
|
cursor: pointer;
|
|
375
375
|
padding: 0;
|
|
@@ -393,22 +393,22 @@ onMounted(() => {
|
|
|
393
393
|
}
|
|
394
394
|
|
|
395
395
|
.window-control-button--close {
|
|
396
|
-
background-color:
|
|
397
|
-
border-color:
|
|
396
|
+
background-color: var(--huyooo-window-close-bg);
|
|
397
|
+
border-color: var(--huyooo-window-close-border);
|
|
398
398
|
}
|
|
399
399
|
|
|
400
400
|
.window-control-button--minimize {
|
|
401
|
-
background-color:
|
|
402
|
-
border-color:
|
|
401
|
+
background-color: var(--huyooo-window-minimize-bg);
|
|
402
|
+
border-color: var(--huyooo-window-minimize-border);
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
.window-control-button--maximize {
|
|
406
|
-
background-color:
|
|
407
|
-
border-color:
|
|
406
|
+
background-color: var(--huyooo-window-maximize-bg);
|
|
407
|
+
border-color: var(--huyooo-window-maximize-border);
|
|
408
408
|
}
|
|
409
409
|
|
|
410
410
|
.window-control-icon {
|
|
411
|
-
color:
|
|
411
|
+
color: var(--huyooo-window-control-icon);
|
|
412
412
|
opacity: 0;
|
|
413
413
|
transition: opacity 200ms;
|
|
414
414
|
width: 7px;
|
|
@@ -421,15 +421,15 @@ onMounted(() => {
|
|
|
421
421
|
}
|
|
422
422
|
|
|
423
423
|
.window-control-button--close:hover {
|
|
424
|
-
background-color:
|
|
424
|
+
background-color: color-mix(in srgb, var(--huyooo-window-close-bg) 80%, transparent);
|
|
425
425
|
}
|
|
426
426
|
|
|
427
427
|
.window-control-button--minimize:hover {
|
|
428
|
-
background-color:
|
|
428
|
+
background-color: color-mix(in srgb, var(--huyooo-window-minimize-bg) 80%, transparent);
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
.window-control-button--maximize:hover {
|
|
432
|
-
background-color:
|
|
432
|
+
background-color: color-mix(in srgb, var(--huyooo-window-maximize-bg) 80%, transparent);
|
|
433
433
|
}
|
|
434
434
|
|
|
435
435
|
.window-title-info {
|
|
@@ -446,7 +446,7 @@ onMounted(() => {
|
|
|
446
446
|
.window-title-text {
|
|
447
447
|
font-weight: 500;
|
|
448
448
|
font-size: 0.75rem;
|
|
449
|
-
color:
|
|
449
|
+
color: var(--huyooo-text-muted);
|
|
450
450
|
overflow: hidden;
|
|
451
451
|
text-overflow: ellipsis;
|
|
452
452
|
white-space: nowrap;
|
package/src/index.ts
CHANGED
package/src/styles.css
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Explorer Frontend - 全局主题 token
|
|
3
|
+
*
|
|
4
|
+
* 主题协议(跨项目统一):
|
|
5
|
+
* - 使用 document.documentElement 的 data-theme = light | dark
|
|
6
|
+
* - 默认跟随系统 prefers-color-scheme
|
|
7
|
+
*
|
|
8
|
+
* 说明:
|
|
9
|
+
* - 组件样式尽量使用 var(--huyooo-*),避免硬编码颜色
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
color-scheme: light;
|
|
14
|
+
|
|
15
|
+
--huyooo-bg: #ffffff;
|
|
16
|
+
--huyooo-surface: rgba(249, 250, 251, 0.9);
|
|
17
|
+
--huyooo-surface-2: #ffffff;
|
|
18
|
+
--huyooo-muted: rgba(229, 231, 233, 0.5);
|
|
19
|
+
--huyooo-muted-hover: rgba(209, 213, 219, 0.8);
|
|
20
|
+
--huyooo-border: rgb(229, 231, 233);
|
|
21
|
+
--huyooo-text: rgb(31, 41, 55);
|
|
22
|
+
--huyooo-text-muted: rgb(75, 85, 99);
|
|
23
|
+
--huyooo-text-disabled: rgb(156, 163, 175);
|
|
24
|
+
--huyooo-primary: rgb(59, 130, 246);
|
|
25
|
+
--huyooo-focus-ring: rgba(59, 130, 246, 0.12);
|
|
26
|
+
--huyooo-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
27
|
+
--huyooo-scrollbar: rgba(0, 0, 0, 0.2);
|
|
28
|
+
--huyooo-scrollbar-hover: rgba(0, 0, 0, 0.3);
|
|
29
|
+
--huyooo-danger: rgb(220, 38, 38);
|
|
30
|
+
--huyooo-success: rgb(22, 163, 74);
|
|
31
|
+
--huyooo-warning: rgb(245, 158, 11);
|
|
32
|
+
--huyooo-danger-bg: rgba(254, 242, 242, 0.9);
|
|
33
|
+
--huyooo-danger-border: rgba(254, 202, 202, 0.9);
|
|
34
|
+
--huyooo-success-bg: rgba(240, 253, 244, 0.9);
|
|
35
|
+
--huyooo-success-border: rgba(187, 247, 208, 0.9);
|
|
36
|
+
--huyooo-warning-bg: rgba(255, 251, 235, 0.92);
|
|
37
|
+
--huyooo-warning-border: rgba(253, 230, 138, 0.9);
|
|
38
|
+
--huyooo-overlay: rgba(0, 0, 0, 0.5);
|
|
39
|
+
--huyooo-panel-bg: rgba(255, 255, 255, 0.95);
|
|
40
|
+
--huyooo-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
41
|
+
--huyooo-code-bg: #111827;
|
|
42
|
+
--huyooo-code-text: #e5e7eb;
|
|
43
|
+
--huyooo-menu-bg: rgba(255, 255, 255, 0.95);
|
|
44
|
+
--huyooo-menu-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15), 0 4px 6px -2px rgba(0, 0, 0, 0.1);
|
|
45
|
+
|
|
46
|
+
/* on-primary text colors (selected state etc.) */
|
|
47
|
+
--huyooo-on-primary: #ffffff;
|
|
48
|
+
--huyooo-on-primary-muted: rgba(255, 255, 255, 0.8);
|
|
49
|
+
|
|
50
|
+
/* filetype colors (FileInfoDialog / FileIcon) */
|
|
51
|
+
--huyooo-filetype-folder: #dcb67a;
|
|
52
|
+
--huyooo-filetype-image: #7ec699;
|
|
53
|
+
--huyooo-filetype-video: #c678dd;
|
|
54
|
+
--huyooo-filetype-music: #e06c75;
|
|
55
|
+
--huyooo-filetype-document: #61afef;
|
|
56
|
+
--huyooo-filetype-code: #98c379;
|
|
57
|
+
--huyooo-filetype-archive: #d19a66;
|
|
58
|
+
--huyooo-filetype-file: #abb2bf;
|
|
59
|
+
|
|
60
|
+
/* macOS window control colors (for Window component) */
|
|
61
|
+
--huyooo-window-close-bg: rgb(255, 95, 87);
|
|
62
|
+
--huyooo-window-close-border: rgb(224, 68, 62);
|
|
63
|
+
--huyooo-window-minimize-bg: rgb(254, 188, 46);
|
|
64
|
+
--huyooo-window-minimize-border: rgb(216, 158, 36);
|
|
65
|
+
--huyooo-window-maximize-bg: rgb(40, 200, 64);
|
|
66
|
+
--huyooo-window-maximize-border: rgb(26, 171, 41);
|
|
67
|
+
--huyooo-window-control-icon: rgba(0, 0, 0, 0.5);
|
|
68
|
+
|
|
69
|
+
/* media overlay helpers */
|
|
70
|
+
--huyooo-overlay-strong: rgba(0, 0, 0, 0.85);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (prefers-color-scheme: dark) {
|
|
74
|
+
:root {
|
|
75
|
+
color-scheme: dark;
|
|
76
|
+
|
|
77
|
+
/* 暗色:统一采用 ai-chat 的经典暗色配色(更耐看) */
|
|
78
|
+
--huyooo-bg: #27292c;
|
|
79
|
+
--huyooo-surface: #27292c;
|
|
80
|
+
--huyooo-surface-2: #252526;
|
|
81
|
+
--huyooo-muted: #2d2d2d;
|
|
82
|
+
--huyooo-muted-hover: #3c3c3c;
|
|
83
|
+
--huyooo-border: #333;
|
|
84
|
+
--huyooo-text: #ccc;
|
|
85
|
+
--huyooo-text-muted: #888;
|
|
86
|
+
--huyooo-text-disabled: #666;
|
|
87
|
+
--huyooo-primary: #2563eb;
|
|
88
|
+
--huyooo-focus-ring: rgba(37, 99, 235, 0.18);
|
|
89
|
+
--huyooo-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.35);
|
|
90
|
+
--huyooo-scrollbar: rgba(255, 255, 255, 0.2);
|
|
91
|
+
--huyooo-scrollbar-hover: rgba(255, 255, 255, 0.3);
|
|
92
|
+
--huyooo-danger: #ef4444;
|
|
93
|
+
--huyooo-success: #22c55e;
|
|
94
|
+
--huyooo-warning: #f59e0b;
|
|
95
|
+
--huyooo-danger-bg: rgba(239, 68, 68, 0.12);
|
|
96
|
+
--huyooo-danger-border: rgba(239, 68, 68, 0.25);
|
|
97
|
+
--huyooo-success-bg: rgba(34, 197, 94, 0.12);
|
|
98
|
+
--huyooo-success-border: rgba(34, 197, 94, 0.25);
|
|
99
|
+
--huyooo-warning-bg: rgba(245, 158, 11, 0.12);
|
|
100
|
+
--huyooo-warning-border: rgba(245, 158, 11, 0.25);
|
|
101
|
+
--huyooo-overlay: rgba(0, 0, 0, 0.6);
|
|
102
|
+
--huyooo-panel-bg: #252526;
|
|
103
|
+
--huyooo-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
104
|
+
--huyooo-code-bg: #1f2937;
|
|
105
|
+
--huyooo-code-text: #e5e7eb;
|
|
106
|
+
--huyooo-menu-bg: #252526;
|
|
107
|
+
--huyooo-menu-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.45), 0 4px 6px -2px rgba(0, 0, 0, 0.35);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
:root[data-theme="light"] {
|
|
112
|
+
color-scheme: light;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:root[data-theme="dark"] {
|
|
116
|
+
color-scheme: dark;
|
|
117
|
+
|
|
118
|
+
/* 暗色:统一采用 ai-chat 的经典暗色配色(更耐看) */
|
|
119
|
+
--huyooo-bg: #27292c;
|
|
120
|
+
--huyooo-surface: #27292c;
|
|
121
|
+
--huyooo-surface-2: #252526;
|
|
122
|
+
--huyooo-muted: #2d2d2d;
|
|
123
|
+
--huyooo-muted-hover: #3c3c3c;
|
|
124
|
+
--huyooo-border: #333;
|
|
125
|
+
--huyooo-text: #ccc;
|
|
126
|
+
--huyooo-text-muted: #888;
|
|
127
|
+
--huyooo-text-disabled: #666;
|
|
128
|
+
--huyooo-primary: #2563eb;
|
|
129
|
+
--huyooo-focus-ring: rgba(37, 99, 235, 0.18);
|
|
130
|
+
--huyooo-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.35);
|
|
131
|
+
--huyooo-scrollbar: rgba(255, 255, 255, 0.2);
|
|
132
|
+
--huyooo-scrollbar-hover: rgba(255, 255, 255, 0.3);
|
|
133
|
+
--huyooo-danger: #ef4444;
|
|
134
|
+
--huyooo-success: #22c55e;
|
|
135
|
+
--huyooo-warning: #f59e0b;
|
|
136
|
+
--huyooo-danger-bg: rgba(239, 68, 68, 0.12);
|
|
137
|
+
--huyooo-danger-border: rgba(239, 68, 68, 0.25);
|
|
138
|
+
--huyooo-success-bg: rgba(34, 197, 94, 0.12);
|
|
139
|
+
--huyooo-success-border: rgba(34, 197, 94, 0.25);
|
|
140
|
+
--huyooo-warning-bg: rgba(245, 158, 11, 0.12);
|
|
141
|
+
--huyooo-warning-border: rgba(245, 158, 11, 0.25);
|
|
142
|
+
--huyooo-overlay: rgba(0, 0, 0, 0.6);
|
|
143
|
+
--huyooo-panel-bg: #252526;
|
|
144
|
+
--huyooo-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
145
|
+
--huyooo-code-bg: #1f2937;
|
|
146
|
+
--huyooo-code-text: #e5e7eb;
|
|
147
|
+
--huyooo-menu-bg: #252526;
|
|
148
|
+
--huyooo-menu-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.45), 0 4px 6px -2px rgba(0, 0, 0, 0.35);
|
|
149
|
+
}
|