mbkbucket 3.8.3 → 4.0.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.
- package/.env.example +4 -3
- package/README.md +375 -167
- package/index.js +3 -1
- package/lib/cli.js +239 -239
- package/lib/public/bucketadmin.css +855 -521
- package/lib/public/bucketadmin.js +367 -31
- package/lib/public/mbkbucket-helper-demo.html +4 -24
- package/lib/public/mbkbucket-helper.css +28 -34
- package/lib/public/mbkbucket-helper.js +4 -3
- package/lib/src/config/validation.js +18 -5
- package/lib/src/controllers/api.controller.js +66 -17
- package/lib/src/controllers/dashboard.controller.js +30 -10
- package/lib/src/controllers/info.controller.js +34 -3
- package/lib/src/controllers/view.controller.js +16 -14
- package/lib/src/core/storage/errors.js +62 -0
- package/lib/src/core/storage/gdrive-auth.js +193 -0
- package/lib/src/core/storage/gdrive-provider.js +656 -0
- package/lib/src/core/storage/index.js +14 -0
- package/lib/src/core/storage/models.js +80 -0
- package/lib/src/core/storage/path-strategy.js +65 -0
- package/lib/src/core/storage/s3-provider.js +491 -0
- package/lib/src/core/storage/storage-manager.js +203 -0
- package/lib/src/core/storage/storage-provider.js +217 -0
- package/lib/src/middleware/bucket-resolver.js +6 -6
- package/lib/src/routes/api.routes.js +5 -1
- package/lib/src/routes/index.js +2 -2
- package/lib/src/routes/view.routes.js +5 -2
- package/lib/src/services/s3.service.js +16 -568
- package/lib/src/services/storage.service.js +213 -0
- package/lib/src/utils/errors.js +15 -5
- package/package.json +2 -3
- package/views/bucket.hbs +47 -71
- package/views/bucketadmin_move_modal.hbs +35 -0
- package/views/bucketadmin_preview_modal.hbs +81 -13
- package/views/bucketadmincontent.hbs +56 -7
- package/views/mbkbucket_info.hbs +109 -207
|
@@ -1,98 +1,137 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
|
-
MBKBucket File Manager -
|
|
2
|
+
MBKBucket File Manager - Clean, Modern Storage Dashboard
|
|
3
|
+
Design System: Refined Slate & Deep Teal Palette
|
|
3
4
|
========================================================================== */
|
|
4
5
|
|
|
5
6
|
:root {
|
|
7
|
+
/* Brand / Primary Palette */
|
|
6
8
|
--primary-color-ml: #0f766e;
|
|
7
|
-
--primary-light-color-ml: #
|
|
8
|
-
--primary-dark-color-ml: #
|
|
9
|
-
--secondary-color-ml: #
|
|
10
|
-
--dark-color-ml: #
|
|
11
|
-
--light-color-ml: #
|
|
12
|
-
--gray-color-ml: #
|
|
13
|
-
--gray-light-color-ml: #
|
|
14
|
-
--danger-color-ml: #
|
|
15
|
-
--warning-color-ml: #
|
|
16
|
-
--success-color-ml: #
|
|
17
|
-
--info-color-ml: #
|
|
18
|
-
|
|
9
|
+
--primary-light-color-ml: #f0fdfa;
|
|
10
|
+
--primary-dark-color-ml: #115e59;
|
|
11
|
+
--secondary-color-ml: #14b8a6;
|
|
12
|
+
--dark-color-ml: #0f172a;
|
|
13
|
+
--light-color-ml: #f8fafc;
|
|
14
|
+
--gray-color-ml: #64748b;
|
|
15
|
+
--gray-light-color-ml: #e2e8f0;
|
|
16
|
+
--danger-color-ml: #ef4444;
|
|
17
|
+
--warning-color-ml: #f59e0b;
|
|
18
|
+
--success-color-ml: #10b981;
|
|
19
|
+
--info-color-ml: #0284c7;
|
|
20
|
+
|
|
21
|
+
/* Aliases */
|
|
19
22
|
--primary: var(--primary-color-ml);
|
|
20
23
|
--primary-lt: var(--primary-light-color-ml);
|
|
21
24
|
--primary-dk: var(--primary-dark-color-ml);
|
|
22
|
-
--primary-hover: #
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
--bg
|
|
27
|
-
--bg-surface
|
|
28
|
-
|
|
29
|
-
--
|
|
30
|
-
--
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
--
|
|
34
|
-
--
|
|
35
|
-
--
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
--
|
|
39
|
-
--
|
|
25
|
+
--primary-hover: #134e4a;
|
|
26
|
+
--primary-active: #084c47;
|
|
27
|
+
|
|
28
|
+
/* Surfaces & Backgrounds */
|
|
29
|
+
--body-bg: #f8fafc;
|
|
30
|
+
--bg-surface: #ffffff;
|
|
31
|
+
--bg-surface-secondary: #f8fafc;
|
|
32
|
+
--bg-surface-tertiary: #f1f5f9;
|
|
33
|
+
--bg-surface-hover: #f1f5f9;
|
|
34
|
+
|
|
35
|
+
/* Borders */
|
|
36
|
+
--border-color: #e2e8f0;
|
|
37
|
+
--border-color-light: #f1f5f9;
|
|
38
|
+
--border-color-focus: #0f766e;
|
|
39
|
+
|
|
40
|
+
/* Text */
|
|
41
|
+
--text: #0f172a;
|
|
42
|
+
--text-secondary: #475569;
|
|
43
|
+
--text-muted: #64748b;
|
|
44
|
+
--text-disabled: #94a3b8;
|
|
45
|
+
|
|
46
|
+
/* Accent Colors */
|
|
47
|
+
--blue: #2563eb;
|
|
48
|
+
--azure: #0891b2;
|
|
49
|
+
--green: #10b981;
|
|
40
50
|
--yellow: #d97706;
|
|
41
51
|
--orange: #ea580c;
|
|
42
|
-
--red: #
|
|
52
|
+
--red: #ef4444;
|
|
43
53
|
--purple: #7c3aed;
|
|
44
54
|
--cyan: #0f766e;
|
|
45
55
|
|
|
46
|
-
|
|
47
|
-
--
|
|
48
|
-
--
|
|
49
|
-
--
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
--
|
|
56
|
+
/* Light Accent Tints */
|
|
57
|
+
--green-lt: #ecfdf5;
|
|
58
|
+
--red-lt: #fef2f2;
|
|
59
|
+
--yellow-lt: #fffbeb;
|
|
60
|
+
--blue-lt: #eff6ff;
|
|
61
|
+
--azure-lt: #ecfeff;
|
|
62
|
+
--purple-lt: #f5f3ff;
|
|
63
|
+
--cyan-lt: #f0fdfa;
|
|
53
64
|
|
|
65
|
+
/* Geometry */
|
|
54
66
|
--radius-sm: 6px;
|
|
55
67
|
--radius: 8px;
|
|
56
|
-
--radius-lg:
|
|
57
|
-
--radius-xl:
|
|
68
|
+
--radius-lg: 12px;
|
|
69
|
+
--radius-xl: 16px;
|
|
58
70
|
|
|
59
|
-
|
|
60
|
-
--shadow: 0
|
|
61
|
-
--shadow-
|
|
62
|
-
--shadow
|
|
63
|
-
--shadow-
|
|
71
|
+
/* Modern Subtle Shadows */
|
|
72
|
+
--shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
73
|
+
--shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
74
|
+
--shadow: 0 4px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px -2px rgba(15, 23, 42, 0.04);
|
|
75
|
+
--shadow-md: 0 10px 15px -3px rgba(15, 23, 42, 0.07), 0 4px 6px -4px rgba(15, 23, 42, 0.03);
|
|
76
|
+
--shadow-lg: 0 20px 25px -5px rgba(15, 23, 42, 0.08), 0 8px 10px -6px rgba(15, 23, 42, 0.04);
|
|
77
|
+
--shadow-dropdown: 0 10px 25px -5px rgba(15, 23, 42, 0.12), 0 8px 10px -6px rgba(15, 23, 42, 0.04);
|
|
64
78
|
|
|
65
|
-
|
|
66
|
-
--font
|
|
67
|
-
--font-
|
|
79
|
+
/* Fonts */
|
|
80
|
+
--font: "Segoe UI", -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
|
|
81
|
+
--font-headings: "Segoe UI", -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
|
|
82
|
+
--font-mono: "Segoe UI Mono", "Cascadia Code", Consolas, "Courier New", monospace;
|
|
68
83
|
}
|
|
69
84
|
|
|
70
|
-
/*
|
|
85
|
+
/* ==========================================================================
|
|
86
|
+
Base Layout & Reset
|
|
87
|
+
========================================================================== */
|
|
71
88
|
.page-wrapper,
|
|
72
89
|
.page-wrapper *,
|
|
73
90
|
.page-wrapper *::before,
|
|
74
|
-
.page-wrapper *::after
|
|
91
|
+
.page-wrapper *::after,
|
|
92
|
+
.modal,
|
|
93
|
+
.modal * {
|
|
75
94
|
box-sizing: border-box;
|
|
76
95
|
}
|
|
77
96
|
|
|
97
|
+
body,
|
|
98
|
+
button,
|
|
99
|
+
input,
|
|
100
|
+
optgroup,
|
|
101
|
+
select,
|
|
102
|
+
textarea,
|
|
103
|
+
.page-wrapper,
|
|
104
|
+
.modal,
|
|
105
|
+
.modal-content,
|
|
106
|
+
.info-card,
|
|
107
|
+
.info-value,
|
|
108
|
+
.info-label,
|
|
109
|
+
.file-info-pane,
|
|
110
|
+
.fm-context-menu,
|
|
111
|
+
.toast-notification,
|
|
112
|
+
.batch-bar-inner {
|
|
113
|
+
font-family: var(--font);
|
|
114
|
+
}
|
|
115
|
+
|
|
78
116
|
.page-wrapper {
|
|
79
117
|
max-width: 1600px;
|
|
80
118
|
margin: 0 auto;
|
|
81
119
|
width: 100%;
|
|
82
|
-
max-width: 100%;
|
|
83
120
|
}
|
|
84
121
|
|
|
122
|
+
/* ==========================================================================
|
|
123
|
+
Page Header
|
|
124
|
+
========================================================================== */
|
|
85
125
|
.page-header {
|
|
86
126
|
display: flex;
|
|
87
127
|
align-items: center;
|
|
88
128
|
justify-content: space-between;
|
|
89
|
-
margin-bottom:
|
|
90
|
-
padding: 0.
|
|
91
|
-
border: 1px solid
|
|
92
|
-
border-radius:
|
|
93
|
-
background:
|
|
94
|
-
|
|
95
|
-
box-shadow: 0 12px 34px rgba(15, 23, 42, 0.05);
|
|
129
|
+
margin-bottom: 1rem;
|
|
130
|
+
padding: 0.85rem 1.25rem;
|
|
131
|
+
border: 1px solid var(--border-color);
|
|
132
|
+
border-radius: var(--radius-lg);
|
|
133
|
+
background: #ffffff;
|
|
134
|
+
box-shadow: var(--shadow-xs);
|
|
96
135
|
}
|
|
97
136
|
|
|
98
137
|
.page-header-row {
|
|
@@ -107,27 +146,33 @@
|
|
|
107
146
|
font-size: 11px;
|
|
108
147
|
font-weight: 700;
|
|
109
148
|
text-transform: uppercase;
|
|
110
|
-
letter-spacing: 0.
|
|
111
|
-
color: var(--primary
|
|
112
|
-
margin-bottom:
|
|
149
|
+
letter-spacing: 0.06em;
|
|
150
|
+
color: var(--primary);
|
|
151
|
+
margin-bottom: 3px;
|
|
113
152
|
}
|
|
114
153
|
|
|
115
154
|
.page-title {
|
|
116
155
|
font-family: var(--font-headings);
|
|
117
|
-
font-size: 1.
|
|
156
|
+
font-size: 1.35rem;
|
|
118
157
|
font-weight: 700;
|
|
119
|
-
color: var(--
|
|
158
|
+
color: var(--text);
|
|
120
159
|
margin: 0;
|
|
121
|
-
line-height: 1.
|
|
160
|
+
line-height: 1.25;
|
|
161
|
+
letter-spacing: -0.015em;
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: center;
|
|
164
|
+
gap: 0.5rem;
|
|
122
165
|
}
|
|
123
166
|
|
|
124
167
|
.page-actions {
|
|
125
168
|
display: flex;
|
|
126
169
|
align-items: center;
|
|
127
|
-
gap: 0.
|
|
170
|
+
gap: 0.5rem;
|
|
128
171
|
}
|
|
129
172
|
|
|
130
|
-
/*
|
|
173
|
+
/* ==========================================================================
|
|
174
|
+
Button System
|
|
175
|
+
========================================================================== */
|
|
131
176
|
.btn {
|
|
132
177
|
display: inline-flex;
|
|
133
178
|
align-items: center;
|
|
@@ -137,60 +182,80 @@
|
|
|
137
182
|
font-size: 13px;
|
|
138
183
|
font-weight: 600;
|
|
139
184
|
line-height: 1.4;
|
|
140
|
-
padding: 7px
|
|
141
|
-
border-radius: var(--radius);
|
|
185
|
+
padding: 7px 14px;
|
|
186
|
+
border-radius: var(--radius-sm);
|
|
142
187
|
border: 1px solid transparent;
|
|
143
188
|
cursor: pointer;
|
|
144
|
-
transition:
|
|
189
|
+
transition: background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease, color 0.12s ease;
|
|
145
190
|
text-decoration: none;
|
|
146
191
|
white-space: nowrap;
|
|
192
|
+
user-select: none;
|
|
147
193
|
}
|
|
148
194
|
|
|
149
195
|
.btn svg {
|
|
150
196
|
flex-shrink: 0;
|
|
151
197
|
}
|
|
152
198
|
|
|
199
|
+
.btn:focus-visible {
|
|
200
|
+
outline: none;
|
|
201
|
+
box-shadow: 0 0 0 2px var(--primary-light-color-ml), 0 0 0 4px var(--primary);
|
|
202
|
+
}
|
|
203
|
+
|
|
153
204
|
.btn-primary {
|
|
154
|
-
background: var(--primary
|
|
205
|
+
background: var(--primary);
|
|
155
206
|
color: #ffffff;
|
|
156
|
-
border-color: var(--primary-color-ml);
|
|
157
|
-
box-shadow:
|
|
207
|
+
border-color: var(--primary-dark-color-ml);
|
|
208
|
+
box-shadow: var(--shadow-xs);
|
|
158
209
|
}
|
|
159
210
|
|
|
160
211
|
.btn-primary:hover {
|
|
161
|
-
background: var(--primary-
|
|
162
|
-
border-color: var(--primary-
|
|
212
|
+
background: var(--primary-hover);
|
|
213
|
+
border-color: var(--primary-hover);
|
|
163
214
|
color: #ffffff;
|
|
164
|
-
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.btn-primary:active {
|
|
218
|
+
background: var(--primary-active);
|
|
165
219
|
}
|
|
166
220
|
|
|
167
221
|
.btn-outline {
|
|
168
|
-
background:
|
|
169
|
-
color: var(--
|
|
222
|
+
background: #ffffff;
|
|
223
|
+
color: var(--text);
|
|
170
224
|
border-color: var(--border-color);
|
|
225
|
+
box-shadow: var(--shadow-xs);
|
|
171
226
|
}
|
|
172
227
|
|
|
173
228
|
.btn-outline:hover {
|
|
174
|
-
background:
|
|
175
|
-
color: var(--
|
|
176
|
-
border-color:
|
|
229
|
+
background: #f8fafc;
|
|
230
|
+
color: var(--text);
|
|
231
|
+
border-color: #cbd5e1;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.btn-outline:active {
|
|
235
|
+
background: #f1f5f9;
|
|
177
236
|
}
|
|
178
237
|
|
|
179
238
|
.btn-danger {
|
|
180
239
|
background: var(--danger-color-ml);
|
|
181
240
|
color: #ffffff;
|
|
182
241
|
border-color: var(--danger-color-ml);
|
|
242
|
+
box-shadow: var(--shadow-xs);
|
|
183
243
|
}
|
|
184
244
|
|
|
185
245
|
.btn-danger:hover {
|
|
186
|
-
background: #
|
|
187
|
-
border-color: #
|
|
246
|
+
background: #dc2626;
|
|
247
|
+
border-color: #dc2626;
|
|
188
248
|
color: #ffffff;
|
|
189
249
|
}
|
|
190
250
|
|
|
251
|
+
.btn-danger:active {
|
|
252
|
+
background: #b91c1c;
|
|
253
|
+
}
|
|
254
|
+
|
|
191
255
|
.btn-sm {
|
|
192
|
-
padding: 5px
|
|
256
|
+
padding: 5px 10px;
|
|
193
257
|
font-size: 12px;
|
|
258
|
+
border-radius: var(--radius-sm);
|
|
194
259
|
}
|
|
195
260
|
|
|
196
261
|
.btn-icon {
|
|
@@ -202,28 +267,31 @@
|
|
|
202
267
|
justify-content: center;
|
|
203
268
|
}
|
|
204
269
|
|
|
205
|
-
/*
|
|
270
|
+
/* ==========================================================================
|
|
271
|
+
Main File Manager Card & Layout
|
|
272
|
+
========================================================================== */
|
|
206
273
|
.card.file-manager {
|
|
207
|
-
background:
|
|
208
|
-
|
|
209
|
-
border: 1px solid rgba(255, 255, 255, 0.9);
|
|
274
|
+
background: #ffffff;
|
|
275
|
+
border: 1px solid var(--border-color);
|
|
210
276
|
border-radius: var(--radius-lg);
|
|
211
|
-
box-shadow:
|
|
277
|
+
box-shadow: var(--shadow-sm);
|
|
212
278
|
overflow: hidden;
|
|
213
279
|
}
|
|
214
280
|
|
|
215
281
|
.fm-layout {
|
|
216
282
|
display: grid;
|
|
217
283
|
grid-template-columns: 260px minmax(0, 1fr);
|
|
218
|
-
height: calc(100vh -
|
|
284
|
+
height: calc(100vh - 170px);
|
|
219
285
|
min-height: 580px;
|
|
220
286
|
max-height: 900px;
|
|
221
287
|
}
|
|
222
288
|
|
|
223
|
-
/*
|
|
289
|
+
/* ==========================================================================
|
|
290
|
+
Left Sidebar Tree (Explorer)
|
|
291
|
+
========================================================================== */
|
|
224
292
|
.fm-tree-wrap {
|
|
225
293
|
border-right: 1px solid var(--border-color);
|
|
226
|
-
background:
|
|
294
|
+
background: #f8fafc;
|
|
227
295
|
display: flex;
|
|
228
296
|
flex-direction: column;
|
|
229
297
|
padding: 12px 10px;
|
|
@@ -231,7 +299,7 @@
|
|
|
231
299
|
}
|
|
232
300
|
|
|
233
301
|
.fm-tree-header {
|
|
234
|
-
padding: 4px
|
|
302
|
+
padding: 4px 8px 8px;
|
|
235
303
|
display: flex;
|
|
236
304
|
align-items: center;
|
|
237
305
|
justify-content: space-between;
|
|
@@ -242,8 +310,8 @@
|
|
|
242
310
|
font-size: 11px;
|
|
243
311
|
font-weight: 700;
|
|
244
312
|
text-transform: uppercase;
|
|
245
|
-
letter-spacing: 0.
|
|
246
|
-
color: var(--
|
|
313
|
+
letter-spacing: 0.06em;
|
|
314
|
+
color: var(--text-muted);
|
|
247
315
|
}
|
|
248
316
|
|
|
249
317
|
.fm-tree {
|
|
@@ -253,15 +321,16 @@
|
|
|
253
321
|
}
|
|
254
322
|
|
|
255
323
|
.fm-tree::-webkit-scrollbar {
|
|
256
|
-
width:
|
|
324
|
+
width: 4px;
|
|
257
325
|
}
|
|
326
|
+
|
|
258
327
|
.fm-tree::-webkit-scrollbar-thumb {
|
|
259
|
-
background:
|
|
260
|
-
border-radius:
|
|
328
|
+
background: #cbd5e1;
|
|
329
|
+
border-radius: 2px;
|
|
261
330
|
}
|
|
262
331
|
|
|
263
332
|
.tree-group {
|
|
264
|
-
margin-bottom:
|
|
333
|
+
margin-bottom: 2px;
|
|
265
334
|
}
|
|
266
335
|
|
|
267
336
|
.tree-link {
|
|
@@ -269,7 +338,7 @@
|
|
|
269
338
|
align-items: center;
|
|
270
339
|
gap: 8px;
|
|
271
340
|
width: 100%;
|
|
272
|
-
padding:
|
|
341
|
+
padding: 6px 10px;
|
|
273
342
|
background: transparent;
|
|
274
343
|
border: none;
|
|
275
344
|
border-radius: var(--radius-sm);
|
|
@@ -278,14 +347,14 @@
|
|
|
278
347
|
color: var(--text-secondary);
|
|
279
348
|
text-align: left;
|
|
280
349
|
cursor: pointer;
|
|
281
|
-
transition:
|
|
350
|
+
transition: background-color 0.12s ease, color 0.12s ease;
|
|
282
351
|
user-select: none;
|
|
283
352
|
font-weight: 500;
|
|
284
353
|
}
|
|
285
354
|
|
|
286
355
|
.tree-link:hover {
|
|
287
|
-
background:
|
|
288
|
-
color: var(--
|
|
356
|
+
background: #f1f5f9;
|
|
357
|
+
color: var(--text);
|
|
289
358
|
}
|
|
290
359
|
|
|
291
360
|
.tree-link.active {
|
|
@@ -295,12 +364,12 @@
|
|
|
295
364
|
}
|
|
296
365
|
|
|
297
366
|
.tree-link svg {
|
|
298
|
-
color: var(--
|
|
367
|
+
color: var(--text-muted);
|
|
299
368
|
flex-shrink: 0;
|
|
300
369
|
}
|
|
301
370
|
|
|
302
371
|
.tree-link.active svg {
|
|
303
|
-
color: var(--primary
|
|
372
|
+
color: var(--primary);
|
|
304
373
|
}
|
|
305
374
|
|
|
306
375
|
.tree-link span {
|
|
@@ -309,7 +378,6 @@
|
|
|
309
378
|
overflow: hidden;
|
|
310
379
|
text-overflow: ellipsis;
|
|
311
380
|
white-space: nowrap;
|
|
312
|
-
color: inherit;
|
|
313
381
|
font-size: 13px;
|
|
314
382
|
}
|
|
315
383
|
|
|
@@ -322,34 +390,42 @@
|
|
|
322
390
|
}
|
|
323
391
|
|
|
324
392
|
.tree-sub {
|
|
325
|
-
padding-left:
|
|
393
|
+
padding-left: 10px;
|
|
326
394
|
}
|
|
327
395
|
|
|
328
396
|
.tree-badge {
|
|
329
397
|
font-size: 10.5px;
|
|
330
|
-
padding: 1px
|
|
398
|
+
padding: 1px 6px;
|
|
331
399
|
border-radius: 99px;
|
|
332
|
-
background:
|
|
333
|
-
color: var(--
|
|
400
|
+
background: #e2e8f0;
|
|
401
|
+
color: var(--text-secondary);
|
|
334
402
|
font-weight: 600;
|
|
335
403
|
}
|
|
336
404
|
|
|
337
|
-
|
|
405
|
+
.tree-link.active .tree-badge {
|
|
406
|
+
background: #ccfbf1;
|
|
407
|
+
color: var(--primary-dark-color-ml);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/* ==========================================================================
|
|
411
|
+
Sidebar Storage & Bucket Switcher
|
|
412
|
+
========================================================================== */
|
|
338
413
|
.fm-storage {
|
|
339
414
|
margin-top: auto;
|
|
340
415
|
padding: 12px;
|
|
341
416
|
border-top: 1px solid var(--border-color);
|
|
342
|
-
background:
|
|
343
|
-
border-radius: var(--radius);
|
|
344
|
-
|
|
417
|
+
background: #ffffff;
|
|
418
|
+
border-radius: var(--radius-sm);
|
|
419
|
+
border: 1px solid var(--border-color);
|
|
420
|
+
box-shadow: var(--shadow-xs);
|
|
345
421
|
}
|
|
346
422
|
|
|
347
423
|
.fm-storage-label {
|
|
348
|
-
font-size:
|
|
424
|
+
font-size: 11px;
|
|
349
425
|
font-weight: 700;
|
|
350
426
|
text-transform: uppercase;
|
|
351
|
-
letter-spacing: 0.
|
|
352
|
-
color: var(--
|
|
427
|
+
letter-spacing: 0.05em;
|
|
428
|
+
color: var(--text-muted);
|
|
353
429
|
margin-bottom: 6px;
|
|
354
430
|
}
|
|
355
431
|
|
|
@@ -365,70 +441,76 @@
|
|
|
365
441
|
|
|
366
442
|
.bucket-switcher-icon {
|
|
367
443
|
position: absolute;
|
|
368
|
-
left:
|
|
369
|
-
color: var(--primary
|
|
444
|
+
left: 9px;
|
|
445
|
+
color: var(--primary);
|
|
370
446
|
pointer-events: none;
|
|
371
447
|
}
|
|
372
448
|
|
|
373
449
|
.bucket-switcher-select {
|
|
374
450
|
width: 100%;
|
|
375
|
-
padding: 6px 10px 6px
|
|
451
|
+
padding: 6px 10px 6px 28px;
|
|
376
452
|
font-family: var(--font);
|
|
377
453
|
font-size: 12.5px;
|
|
378
454
|
font-weight: 600;
|
|
379
|
-
color: var(--
|
|
380
|
-
background:
|
|
455
|
+
color: var(--text);
|
|
456
|
+
background: #ffffff;
|
|
381
457
|
border: 1px solid var(--border-color);
|
|
382
458
|
border-radius: var(--radius-sm);
|
|
383
459
|
outline: none;
|
|
384
460
|
cursor: pointer;
|
|
385
461
|
appearance: auto;
|
|
386
|
-
transition: border-color 0.
|
|
462
|
+
transition: border-color 0.12s ease, box-shadow 0.12s ease;
|
|
387
463
|
}
|
|
388
464
|
|
|
389
465
|
.bucket-switcher-select:focus {
|
|
390
|
-
border-color: var(--primary
|
|
466
|
+
border-color: var(--primary);
|
|
467
|
+
box-shadow: 0 0 0 2px rgba(15, 118, 110, 0.15);
|
|
391
468
|
}
|
|
392
469
|
|
|
393
470
|
.bucket-switcher-status {
|
|
394
471
|
font-size: 11px;
|
|
395
|
-
color: var(--primary
|
|
472
|
+
color: var(--primary);
|
|
396
473
|
margin-top: 4px;
|
|
397
474
|
display: block;
|
|
398
475
|
}
|
|
399
476
|
|
|
477
|
+
.bucket-switcher-status.is-hidden {
|
|
478
|
+
display: none;
|
|
479
|
+
}
|
|
480
|
+
|
|
400
481
|
.storage-bar {
|
|
401
|
-
height:
|
|
402
|
-
background:
|
|
403
|
-
border-radius:
|
|
482
|
+
height: 4px;
|
|
483
|
+
background: #f1f5f9;
|
|
484
|
+
border-radius: 2px;
|
|
404
485
|
overflow: hidden;
|
|
405
486
|
margin: 8px 0 6px;
|
|
406
487
|
}
|
|
407
488
|
|
|
408
489
|
.fm-storage-meta {
|
|
409
490
|
font-size: 11.5px;
|
|
410
|
-
color: var(--
|
|
411
|
-
font-weight:
|
|
491
|
+
color: var(--text-muted);
|
|
492
|
+
font-weight: 500;
|
|
412
493
|
}
|
|
413
494
|
|
|
414
495
|
.fm-storage-subinfo {
|
|
415
|
-
font-size:
|
|
416
|
-
color: var(--
|
|
496
|
+
font-size: 11px;
|
|
497
|
+
color: var(--text-muted);
|
|
417
498
|
margin-top: 2px;
|
|
418
499
|
white-space: nowrap;
|
|
419
500
|
overflow: hidden;
|
|
420
501
|
text-overflow: ellipsis;
|
|
421
502
|
}
|
|
422
503
|
|
|
423
|
-
/*
|
|
504
|
+
/* ==========================================================================
|
|
505
|
+
Main Content Area & Toolbar
|
|
506
|
+
========================================================================== */
|
|
424
507
|
.fm-main {
|
|
425
508
|
display: flex;
|
|
426
509
|
flex-direction: column;
|
|
427
510
|
min-height: 0;
|
|
428
|
-
background:
|
|
511
|
+
background: #ffffff;
|
|
429
512
|
}
|
|
430
513
|
|
|
431
|
-
/* Toolbar */
|
|
432
514
|
.fm-toolbar {
|
|
433
515
|
display: flex;
|
|
434
516
|
align-items: center;
|
|
@@ -437,14 +519,14 @@
|
|
|
437
519
|
padding: 10px 16px;
|
|
438
520
|
border-bottom: 1px solid var(--border-color);
|
|
439
521
|
flex-shrink: 0;
|
|
440
|
-
background:
|
|
522
|
+
background: #ffffff;
|
|
441
523
|
flex-wrap: wrap;
|
|
442
524
|
}
|
|
443
525
|
|
|
444
526
|
.fm-breadcrumb {
|
|
445
527
|
display: flex;
|
|
446
528
|
align-items: center;
|
|
447
|
-
gap:
|
|
529
|
+
gap: 4px;
|
|
448
530
|
flex-wrap: wrap;
|
|
449
531
|
min-height: 32px;
|
|
450
532
|
}
|
|
@@ -454,11 +536,11 @@
|
|
|
454
536
|
border: none;
|
|
455
537
|
font-family: var(--font);
|
|
456
538
|
font-size: 13px;
|
|
457
|
-
color: var(--
|
|
539
|
+
color: var(--text-muted);
|
|
458
540
|
cursor: pointer;
|
|
459
|
-
padding: 3px
|
|
541
|
+
padding: 3px 6px;
|
|
460
542
|
border-radius: var(--radius-sm);
|
|
461
|
-
transition:
|
|
543
|
+
transition: background-color 0.12s ease, color 0.12s ease;
|
|
462
544
|
display: inline-flex;
|
|
463
545
|
align-items: center;
|
|
464
546
|
gap: 4px;
|
|
@@ -466,13 +548,13 @@
|
|
|
466
548
|
}
|
|
467
549
|
|
|
468
550
|
.bc-link:hover {
|
|
469
|
-
background:
|
|
470
|
-
color: var(--
|
|
551
|
+
background: #f1f5f9;
|
|
552
|
+
color: var(--text);
|
|
471
553
|
}
|
|
472
554
|
|
|
473
555
|
.bc-link.current {
|
|
474
|
-
color: var(--
|
|
475
|
-
font-weight:
|
|
556
|
+
color: var(--text);
|
|
557
|
+
font-weight: 600;
|
|
476
558
|
cursor: default;
|
|
477
559
|
}
|
|
478
560
|
|
|
@@ -481,25 +563,26 @@
|
|
|
481
563
|
}
|
|
482
564
|
|
|
483
565
|
.fm-breadcrumb .sep {
|
|
484
|
-
color:
|
|
485
|
-
font-size:
|
|
566
|
+
color: #cbd5e1;
|
|
567
|
+
font-size: 12px;
|
|
486
568
|
user-select: none;
|
|
487
569
|
}
|
|
488
570
|
|
|
489
571
|
.fm-toolbar-actions {
|
|
490
572
|
display: flex;
|
|
491
573
|
align-items: center;
|
|
492
|
-
gap:
|
|
574
|
+
gap: 8px;
|
|
493
575
|
margin-left: auto;
|
|
494
576
|
}
|
|
495
577
|
|
|
496
|
-
/* Quick Filters */
|
|
578
|
+
/* Quick Filters - Segmented Control */
|
|
497
579
|
.quick-filter-group {
|
|
498
580
|
display: inline-flex;
|
|
499
|
-
background:
|
|
581
|
+
background: #f1f5f9;
|
|
500
582
|
border: 1px solid var(--border-color);
|
|
501
|
-
border-radius: var(--radius);
|
|
583
|
+
border-radius: var(--radius-sm);
|
|
502
584
|
padding: 2px;
|
|
585
|
+
gap: 2px;
|
|
503
586
|
}
|
|
504
587
|
|
|
505
588
|
.quick-filter-btn {
|
|
@@ -507,28 +590,29 @@
|
|
|
507
590
|
border: none;
|
|
508
591
|
font-family: var(--font);
|
|
509
592
|
font-size: 12px;
|
|
510
|
-
font-weight:
|
|
593
|
+
font-weight: 500;
|
|
511
594
|
color: var(--text-secondary);
|
|
512
|
-
padding:
|
|
513
|
-
border-radius:
|
|
595
|
+
padding: 3px 9px;
|
|
596
|
+
border-radius: 4px;
|
|
514
597
|
cursor: pointer;
|
|
515
|
-
transition:
|
|
598
|
+
transition: background-color 0.12s ease, color 0.12s ease;
|
|
516
599
|
}
|
|
517
600
|
|
|
518
601
|
.quick-filter-btn:hover {
|
|
519
|
-
color: var(--
|
|
602
|
+
color: var(--text);
|
|
520
603
|
}
|
|
521
604
|
|
|
522
605
|
.quick-filter-btn.active {
|
|
523
606
|
background: #ffffff;
|
|
524
|
-
color: var(--primary-color-ml);
|
|
525
|
-
|
|
607
|
+
color: var(--primary-dark-color-ml);
|
|
608
|
+
font-weight: 600;
|
|
609
|
+
box-shadow: var(--shadow-xs);
|
|
526
610
|
}
|
|
527
611
|
|
|
528
612
|
/* Search Box */
|
|
529
613
|
.search-box {
|
|
530
614
|
position: relative;
|
|
531
|
-
width:
|
|
615
|
+
width: 200px;
|
|
532
616
|
display: flex;
|
|
533
617
|
align-items: center;
|
|
534
618
|
}
|
|
@@ -538,27 +622,26 @@
|
|
|
538
622
|
left: 9px;
|
|
539
623
|
width: 14px;
|
|
540
624
|
height: 14px;
|
|
541
|
-
color: var(--
|
|
625
|
+
color: var(--text-muted);
|
|
542
626
|
pointer-events: none;
|
|
543
627
|
}
|
|
544
628
|
|
|
545
629
|
.search-box input {
|
|
546
630
|
width: 100%;
|
|
547
|
-
padding:
|
|
631
|
+
padding: 5px 24px 5px 28px;
|
|
548
632
|
font-family: var(--font);
|
|
549
633
|
font-size: 12.5px;
|
|
550
634
|
border: 1px solid var(--border-color);
|
|
551
|
-
border-radius: var(--radius);
|
|
552
|
-
background:
|
|
553
|
-
color: var(--
|
|
635
|
+
border-radius: var(--radius-sm);
|
|
636
|
+
background: #ffffff;
|
|
637
|
+
color: var(--text);
|
|
554
638
|
outline: none;
|
|
555
|
-
transition:
|
|
639
|
+
transition: border-color 0.12s ease, box-shadow 0.12s ease;
|
|
556
640
|
}
|
|
557
641
|
|
|
558
642
|
.search-box input:focus {
|
|
559
|
-
border-color: var(--primary
|
|
560
|
-
|
|
561
|
-
box-shadow: 0 0 0 3px var(--primary-light-color-ml);
|
|
643
|
+
border-color: var(--primary);
|
|
644
|
+
box-shadow: 0 0 0 2px rgba(15, 118, 110, 0.15);
|
|
562
645
|
}
|
|
563
646
|
|
|
564
647
|
.search-clear-btn {
|
|
@@ -566,38 +649,42 @@
|
|
|
566
649
|
right: 6px;
|
|
567
650
|
background: transparent;
|
|
568
651
|
border: none;
|
|
569
|
-
color: var(--
|
|
652
|
+
color: var(--text-muted);
|
|
570
653
|
cursor: pointer;
|
|
571
|
-
font-size:
|
|
654
|
+
font-size: 15px;
|
|
572
655
|
line-height: 1;
|
|
573
|
-
padding: 2px
|
|
656
|
+
padding: 2px;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.search-clear-btn:hover {
|
|
660
|
+
color: var(--text);
|
|
574
661
|
}
|
|
575
662
|
|
|
576
663
|
/* View Switcher */
|
|
577
664
|
.fm-view-toggle {
|
|
578
665
|
display: inline-flex;
|
|
579
666
|
border: 1px solid var(--border-color);
|
|
580
|
-
border-radius: var(--radius);
|
|
667
|
+
border-radius: var(--radius-sm);
|
|
581
668
|
overflow: hidden;
|
|
582
669
|
background: #ffffff;
|
|
583
670
|
}
|
|
584
671
|
|
|
585
672
|
.view-btn {
|
|
586
|
-
width:
|
|
587
|
-
height:
|
|
673
|
+
width: 30px;
|
|
674
|
+
height: 28px;
|
|
588
675
|
border: none;
|
|
589
676
|
background: transparent;
|
|
590
677
|
cursor: pointer;
|
|
591
|
-
color: var(--
|
|
678
|
+
color: var(--text-muted);
|
|
592
679
|
display: flex;
|
|
593
680
|
align-items: center;
|
|
594
681
|
justify-content: center;
|
|
595
|
-
transition:
|
|
682
|
+
transition: background-color 0.12s ease, color 0.12s ease;
|
|
596
683
|
}
|
|
597
684
|
|
|
598
685
|
.view-btn:hover {
|
|
599
|
-
background:
|
|
600
|
-
color: var(--
|
|
686
|
+
background: #f1f5f9;
|
|
687
|
+
color: var(--text);
|
|
601
688
|
}
|
|
602
689
|
|
|
603
690
|
.view-btn.active {
|
|
@@ -605,19 +692,27 @@
|
|
|
605
692
|
color: var(--primary-dark-color-ml);
|
|
606
693
|
}
|
|
607
694
|
|
|
608
|
-
|
|
695
|
+
.view-btn#view-thumbs {
|
|
696
|
+
border-left: 1px solid var(--border-color);
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/* ==========================================================================
|
|
700
|
+
File Grid Container & Grid Items
|
|
701
|
+
========================================================================== */
|
|
609
702
|
.fm-grid-wrap {
|
|
610
703
|
flex: 1 1 auto;
|
|
611
704
|
overflow-y: auto;
|
|
612
705
|
padding: 16px;
|
|
613
706
|
position: relative;
|
|
707
|
+
background: #ffffff;
|
|
614
708
|
}
|
|
615
709
|
|
|
616
710
|
.fm-grid-wrap::-webkit-scrollbar {
|
|
617
711
|
width: 6px;
|
|
618
712
|
}
|
|
713
|
+
|
|
619
714
|
.fm-grid-wrap::-webkit-scrollbar-thumb {
|
|
620
|
-
background:
|
|
715
|
+
background: #cbd5e1;
|
|
621
716
|
border-radius: 3px;
|
|
622
717
|
}
|
|
623
718
|
|
|
@@ -627,35 +722,34 @@
|
|
|
627
722
|
grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
|
|
628
723
|
grid-auto-rows: max-content;
|
|
629
724
|
align-content: start;
|
|
630
|
-
gap:
|
|
725
|
+
gap: 12px;
|
|
631
726
|
}
|
|
632
727
|
|
|
633
728
|
.fm-item {
|
|
634
729
|
position: relative;
|
|
635
|
-
background:
|
|
636
|
-
border: 1px solid
|
|
637
|
-
border-radius: var(--radius
|
|
730
|
+
background: #ffffff;
|
|
731
|
+
border: 1px solid var(--border-color);
|
|
732
|
+
border-radius: var(--radius);
|
|
638
733
|
cursor: pointer;
|
|
639
734
|
font-family: var(--font);
|
|
640
735
|
text-align: left;
|
|
641
|
-
transition: border-color 0.
|
|
736
|
+
transition: border-color 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
|
|
642
737
|
user-select: none;
|
|
643
738
|
}
|
|
644
739
|
|
|
645
740
|
.fm-item:hover {
|
|
646
|
-
border-color:
|
|
647
|
-
|
|
648
|
-
box-shadow: 0 8px 20px rgba(15, 118, 110, 0.1);
|
|
741
|
+
border-color: #cbd5e1;
|
|
742
|
+
box-shadow: var(--shadow-sm);
|
|
649
743
|
}
|
|
650
744
|
|
|
651
745
|
.fm-item.is-selected {
|
|
652
|
-
border-color: var(--primary
|
|
746
|
+
border-color: var(--primary);
|
|
653
747
|
background: var(--primary-light-color-ml);
|
|
654
748
|
}
|
|
655
749
|
|
|
656
|
-
/* Item
|
|
750
|
+
/* Item in Grid View */
|
|
657
751
|
.fm-grid.view-grid .fm-item {
|
|
658
|
-
padding:
|
|
752
|
+
padding: 10px;
|
|
659
753
|
display: flex;
|
|
660
754
|
flex-direction: column;
|
|
661
755
|
align-items: flex-start;
|
|
@@ -665,25 +759,22 @@
|
|
|
665
759
|
.fm-grid.view-grid .fm-item-icon {
|
|
666
760
|
width: 100%;
|
|
667
761
|
aspect-ratio: 16 / 10;
|
|
668
|
-
border-radius: var(--radius);
|
|
762
|
+
border-radius: var(--radius-sm);
|
|
669
763
|
display: flex;
|
|
670
764
|
align-items: center;
|
|
671
765
|
justify-content: center;
|
|
672
766
|
flex-shrink: 0;
|
|
673
|
-
background:
|
|
767
|
+
background: #f8fafc;
|
|
768
|
+
border: 1px solid var(--border-color-light);
|
|
674
769
|
overflow: hidden;
|
|
675
770
|
position: relative;
|
|
676
771
|
}
|
|
677
772
|
|
|
678
|
-
.view-btn#view-thumbs {
|
|
679
|
-
border-left: 1px solid var(--border-color);
|
|
680
|
-
}
|
|
681
|
-
|
|
682
773
|
.fm-item-thumb {
|
|
683
774
|
width: 100%;
|
|
684
775
|
height: 100%;
|
|
685
776
|
object-fit: cover;
|
|
686
|
-
transition: opacity 0.
|
|
777
|
+
transition: opacity 0.2s ease;
|
|
687
778
|
}
|
|
688
779
|
|
|
689
780
|
.fm-item-thumb.fm-lazy-thumb {
|
|
@@ -695,15 +786,17 @@
|
|
|
695
786
|
}
|
|
696
787
|
|
|
697
788
|
.fm-item-icon .ext {
|
|
698
|
-
font-size:
|
|
789
|
+
font-size: 11px;
|
|
699
790
|
font-weight: 700;
|
|
700
|
-
letter-spacing: 0.
|
|
791
|
+
letter-spacing: 0.04em;
|
|
701
792
|
text-transform: uppercase;
|
|
793
|
+
padding: 2px 7px;
|
|
794
|
+
border-radius: 4px;
|
|
702
795
|
}
|
|
703
796
|
|
|
704
797
|
.fm-item-icon .folder-svg {
|
|
705
|
-
width:
|
|
706
|
-
height:
|
|
798
|
+
width: 40px;
|
|
799
|
+
height: 40px;
|
|
707
800
|
}
|
|
708
801
|
|
|
709
802
|
.fm-grid.view-grid .fm-item-details {
|
|
@@ -712,31 +805,32 @@
|
|
|
712
805
|
}
|
|
713
806
|
|
|
714
807
|
.fm-item-name {
|
|
715
|
-
font-size:
|
|
808
|
+
font-size: 12.5px;
|
|
716
809
|
font-weight: 600;
|
|
717
|
-
color: var(--
|
|
810
|
+
color: var(--text);
|
|
718
811
|
overflow: hidden;
|
|
719
812
|
text-overflow: ellipsis;
|
|
720
813
|
white-space: nowrap;
|
|
721
814
|
min-width: 0;
|
|
815
|
+
line-height: 1.35;
|
|
722
816
|
}
|
|
723
817
|
|
|
724
818
|
.fm-item-meta {
|
|
725
|
-
font-size:
|
|
726
|
-
color: var(--
|
|
819
|
+
font-size: 11px;
|
|
820
|
+
color: var(--text-muted);
|
|
727
821
|
margin-top: 2px;
|
|
728
822
|
white-space: nowrap;
|
|
729
823
|
overflow: hidden;
|
|
730
824
|
text-overflow: ellipsis;
|
|
731
825
|
}
|
|
732
826
|
|
|
733
|
-
/* Star &
|
|
827
|
+
/* Star & Menu Action Triggers */
|
|
734
828
|
.fm-star {
|
|
735
829
|
position: absolute;
|
|
736
|
-
top:
|
|
737
|
-
left:
|
|
738
|
-
width:
|
|
739
|
-
height:
|
|
830
|
+
top: 6px;
|
|
831
|
+
left: 6px;
|
|
832
|
+
width: 22px;
|
|
833
|
+
height: 22px;
|
|
740
834
|
display: flex;
|
|
741
835
|
align-items: center;
|
|
742
836
|
justify-content: center;
|
|
@@ -744,11 +838,11 @@
|
|
|
744
838
|
border-radius: 50%;
|
|
745
839
|
color: var(--text-disabled);
|
|
746
840
|
opacity: 0;
|
|
747
|
-
background:
|
|
748
|
-
|
|
841
|
+
background: #ffffff;
|
|
842
|
+
border: 1px solid var(--border-color);
|
|
843
|
+
box-shadow: var(--shadow-xs);
|
|
749
844
|
transition: opacity 0.12s ease, color 0.12s ease;
|
|
750
845
|
z-index: 2;
|
|
751
|
-
border: none;
|
|
752
846
|
}
|
|
753
847
|
|
|
754
848
|
.fm-item:hover .fm-star,
|
|
@@ -757,32 +851,31 @@
|
|
|
757
851
|
}
|
|
758
852
|
|
|
759
853
|
.fm-star.on {
|
|
760
|
-
color:
|
|
854
|
+
color: #eab308;
|
|
761
855
|
opacity: 1;
|
|
762
856
|
}
|
|
763
857
|
|
|
764
858
|
.fm-star:hover {
|
|
765
|
-
color:
|
|
766
|
-
transform: scale(1.1);
|
|
859
|
+
color: #eab308;
|
|
767
860
|
}
|
|
768
861
|
|
|
769
862
|
.fm-item-menu {
|
|
770
863
|
position: absolute;
|
|
771
|
-
top:
|
|
772
|
-
right:
|
|
773
|
-
width:
|
|
774
|
-
height:
|
|
775
|
-
border:
|
|
776
|
-
background:
|
|
777
|
-
backdrop-filter: blur(4px);
|
|
864
|
+
top: 6px;
|
|
865
|
+
right: 6px;
|
|
866
|
+
width: 22px;
|
|
867
|
+
height: 22px;
|
|
868
|
+
border: 1px solid var(--border-color);
|
|
869
|
+
background: #ffffff;
|
|
778
870
|
border-radius: 50%;
|
|
779
871
|
display: flex;
|
|
780
872
|
align-items: center;
|
|
781
873
|
justify-content: center;
|
|
782
874
|
cursor: pointer;
|
|
783
|
-
color: var(--
|
|
875
|
+
color: var(--text-muted);
|
|
784
876
|
opacity: 0;
|
|
785
|
-
|
|
877
|
+
box-shadow: var(--shadow-xs);
|
|
878
|
+
transition: opacity 0.12s ease, color 0.12s ease, background-color 0.12s ease;
|
|
786
879
|
z-index: 2;
|
|
787
880
|
}
|
|
788
881
|
|
|
@@ -791,45 +884,59 @@
|
|
|
791
884
|
}
|
|
792
885
|
|
|
793
886
|
.fm-item-menu:hover {
|
|
794
|
-
background: #
|
|
795
|
-
color: var(--
|
|
796
|
-
box-shadow: var(--shadow-sm);
|
|
887
|
+
background: #f8fafc;
|
|
888
|
+
color: var(--text);
|
|
797
889
|
}
|
|
798
890
|
|
|
799
|
-
/*
|
|
891
|
+
/* ==========================================================================
|
|
892
|
+
List View
|
|
893
|
+
========================================================================== */
|
|
800
894
|
.fm-grid.view-list {
|
|
801
895
|
display: flex;
|
|
802
896
|
flex-direction: column;
|
|
803
|
-
gap:
|
|
897
|
+
gap: 2px;
|
|
804
898
|
}
|
|
805
899
|
|
|
806
900
|
.fm-grid.view-list .fm-item {
|
|
807
|
-
padding:
|
|
901
|
+
padding: 6px 12px;
|
|
808
902
|
display: grid;
|
|
809
|
-
grid-template-columns: 20px
|
|
810
|
-
gap:
|
|
903
|
+
grid-template-columns: 20px 30px 1fr 110px 140px 28px 28px;
|
|
904
|
+
gap: 10px;
|
|
811
905
|
align-items: center;
|
|
812
|
-
border-radius: var(--radius);
|
|
906
|
+
border-radius: var(--radius-sm);
|
|
907
|
+
border: 1px solid transparent;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.fm-grid.view-list .fm-item:hover {
|
|
911
|
+
background: #f8fafc;
|
|
912
|
+
border-color: var(--border-color);
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
.fm-grid.view-list .fm-item.is-selected {
|
|
916
|
+
background: var(--primary-light-color-ml);
|
|
917
|
+
border-color: #ccfbf1;
|
|
813
918
|
}
|
|
814
919
|
|
|
815
920
|
.fm-grid.view-list .fm-item-icon {
|
|
816
|
-
width:
|
|
817
|
-
height:
|
|
818
|
-
border-radius:
|
|
921
|
+
width: 28px;
|
|
922
|
+
height: 28px;
|
|
923
|
+
border-radius: 4px;
|
|
819
924
|
display: flex;
|
|
820
925
|
align-items: center;
|
|
821
926
|
justify-content: center;
|
|
822
|
-
background:
|
|
927
|
+
background: #f8fafc;
|
|
928
|
+
border: 1px solid var(--border-color-light);
|
|
823
929
|
}
|
|
824
930
|
|
|
825
931
|
.fm-grid.view-list .fm-item-icon .ext {
|
|
826
|
-
font-size:
|
|
932
|
+
font-size: 10px;
|
|
827
933
|
font-weight: 700;
|
|
934
|
+
padding: 1px 4px;
|
|
828
935
|
}
|
|
829
936
|
|
|
830
937
|
.fm-grid.view-list .fm-item-icon .folder-svg {
|
|
831
|
-
width:
|
|
832
|
-
height:
|
|
938
|
+
width: 20px;
|
|
939
|
+
height: 20px;
|
|
833
940
|
}
|
|
834
941
|
|
|
835
942
|
.fm-grid.view-list .fm-star,
|
|
@@ -837,6 +944,8 @@
|
|
|
837
944
|
position: static;
|
|
838
945
|
opacity: 1;
|
|
839
946
|
background: transparent;
|
|
947
|
+
border: none;
|
|
948
|
+
box-shadow: none;
|
|
840
949
|
}
|
|
841
950
|
|
|
842
951
|
.fm-grid.view-list .fm-item-meta {
|
|
@@ -844,27 +953,28 @@
|
|
|
844
953
|
margin-top: 0;
|
|
845
954
|
}
|
|
846
955
|
|
|
847
|
-
/* Header row for list view */
|
|
848
956
|
.fm-list-header {
|
|
849
957
|
display: grid;
|
|
850
|
-
grid-template-columns: 20px
|
|
851
|
-
gap:
|
|
958
|
+
grid-template-columns: 20px 30px 1fr 110px 140px 28px 28px;
|
|
959
|
+
gap: 10px;
|
|
852
960
|
align-items: center;
|
|
853
|
-
padding: 6px
|
|
961
|
+
padding: 6px 12px;
|
|
854
962
|
font-size: 11px;
|
|
855
963
|
font-weight: 700;
|
|
856
964
|
text-transform: uppercase;
|
|
857
|
-
letter-spacing: 0.
|
|
858
|
-
color: var(--
|
|
965
|
+
letter-spacing: 0.05em;
|
|
966
|
+
color: var(--text-muted);
|
|
859
967
|
border-bottom: 1px solid var(--border-color);
|
|
860
|
-
margin-bottom:
|
|
968
|
+
margin-bottom: 2px;
|
|
861
969
|
}
|
|
862
970
|
|
|
863
|
-
/*
|
|
971
|
+
/* ==========================================================================
|
|
972
|
+
Empty State & Skeletons
|
|
973
|
+
========================================================================== */
|
|
864
974
|
.fm-empty {
|
|
865
|
-
padding:
|
|
975
|
+
padding: 64px 20px;
|
|
866
976
|
text-align: center;
|
|
867
|
-
color: var(--
|
|
977
|
+
color: var(--text-muted);
|
|
868
978
|
display: flex;
|
|
869
979
|
flex-direction: column;
|
|
870
980
|
align-items: center;
|
|
@@ -877,7 +987,7 @@
|
|
|
877
987
|
}
|
|
878
988
|
|
|
879
989
|
.fm-empty svg {
|
|
880
|
-
color:
|
|
990
|
+
color: #cbd5e1;
|
|
881
991
|
margin-bottom: 12px;
|
|
882
992
|
}
|
|
883
993
|
|
|
@@ -885,28 +995,28 @@
|
|
|
885
995
|
font-family: var(--font-headings);
|
|
886
996
|
font-size: 15px;
|
|
887
997
|
font-weight: 700;
|
|
888
|
-
color: var(--
|
|
998
|
+
color: var(--text);
|
|
889
999
|
margin-bottom: 4px;
|
|
890
1000
|
}
|
|
891
1001
|
|
|
892
1002
|
.fm-empty .empty-desc {
|
|
893
1003
|
font-size: 13px;
|
|
894
1004
|
max-width: 360px;
|
|
1005
|
+
color: var(--text-secondary);
|
|
895
1006
|
}
|
|
896
1007
|
|
|
897
|
-
/* Skeletons */
|
|
898
1008
|
.fm-skeleton-grid {
|
|
899
1009
|
display: grid;
|
|
900
1010
|
grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
|
|
901
|
-
gap:
|
|
1011
|
+
gap: 12px;
|
|
902
1012
|
width: 100%;
|
|
903
1013
|
}
|
|
904
1014
|
|
|
905
1015
|
.fm-skeleton-card {
|
|
906
|
-
background:
|
|
907
|
-
border: 1px solid var(--border-color
|
|
908
|
-
border-radius: var(--radius
|
|
909
|
-
padding:
|
|
1016
|
+
background: #ffffff;
|
|
1017
|
+
border: 1px solid var(--border-color);
|
|
1018
|
+
border-radius: var(--radius);
|
|
1019
|
+
padding: 10px;
|
|
910
1020
|
display: flex;
|
|
911
1021
|
flex-direction: column;
|
|
912
1022
|
gap: 8px;
|
|
@@ -915,16 +1025,16 @@
|
|
|
915
1025
|
.fm-skeleton-icon {
|
|
916
1026
|
width: 100%;
|
|
917
1027
|
aspect-ratio: 16 / 10;
|
|
918
|
-
border-radius: var(--radius);
|
|
919
|
-
background: linear-gradient(90deg, #
|
|
1028
|
+
border-radius: var(--radius-sm);
|
|
1029
|
+
background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);
|
|
920
1030
|
background-size: 200% 100%;
|
|
921
1031
|
animation: fm-shimmer 1.5s infinite;
|
|
922
1032
|
}
|
|
923
1033
|
|
|
924
1034
|
.fm-skeleton-line {
|
|
925
|
-
height:
|
|
1035
|
+
height: 10px;
|
|
926
1036
|
border-radius: 4px;
|
|
927
|
-
background: linear-gradient(90deg, #
|
|
1037
|
+
background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);
|
|
928
1038
|
background-size: 200% 100%;
|
|
929
1039
|
animation: fm-shimmer 1.5s infinite;
|
|
930
1040
|
}
|
|
@@ -937,22 +1047,23 @@
|
|
|
937
1047
|
100% { background-position: -200% 0; }
|
|
938
1048
|
}
|
|
939
1049
|
|
|
940
|
-
/*
|
|
1050
|
+
/* ==========================================================================
|
|
1051
|
+
Context Menu
|
|
1052
|
+
========================================================================== */
|
|
941
1053
|
.fm-context-menu {
|
|
942
1054
|
position: fixed;
|
|
943
1055
|
z-index: 1000;
|
|
944
|
-
background:
|
|
945
|
-
backdrop-filter: blur(12px);
|
|
1056
|
+
background: #ffffff;
|
|
946
1057
|
border: 1px solid var(--border-color);
|
|
947
|
-
border-radius: var(--radius-
|
|
1058
|
+
border-radius: var(--radius-sm);
|
|
948
1059
|
box-shadow: var(--shadow-dropdown);
|
|
949
|
-
padding:
|
|
950
|
-
min-width:
|
|
951
|
-
animation: fm-menu-pop 0.
|
|
1060
|
+
padding: 4px;
|
|
1061
|
+
min-width: 165px;
|
|
1062
|
+
animation: fm-menu-pop 0.1s cubic-bezier(0.16, 1, 0.3, 1);
|
|
952
1063
|
}
|
|
953
1064
|
|
|
954
1065
|
@keyframes fm-menu-pop {
|
|
955
|
-
from { opacity: 0; transform: scale(0.
|
|
1066
|
+
from { opacity: 0; transform: scale(0.96); }
|
|
956
1067
|
to { opacity: 1; transform: scale(1); }
|
|
957
1068
|
}
|
|
958
1069
|
|
|
@@ -961,21 +1072,21 @@
|
|
|
961
1072
|
align-items: center;
|
|
962
1073
|
gap: 8px;
|
|
963
1074
|
width: 100%;
|
|
964
|
-
padding:
|
|
1075
|
+
padding: 6px 10px;
|
|
965
1076
|
border: none;
|
|
966
1077
|
background: transparent;
|
|
967
1078
|
font-family: var(--font);
|
|
968
1079
|
font-size: 12.5px;
|
|
969
1080
|
font-weight: 500;
|
|
970
|
-
color: var(--
|
|
971
|
-
border-radius:
|
|
1081
|
+
color: var(--text);
|
|
1082
|
+
border-radius: 4px;
|
|
972
1083
|
cursor: pointer;
|
|
973
1084
|
text-align: left;
|
|
974
|
-
transition: background 0.1s ease, color 0.1s ease;
|
|
1085
|
+
transition: background-color 0.1s ease, color 0.1s ease;
|
|
975
1086
|
}
|
|
976
1087
|
|
|
977
1088
|
.fm-context-item:hover {
|
|
978
|
-
background:
|
|
1089
|
+
background: #f1f5f9;
|
|
979
1090
|
color: var(--primary-dark-color-ml);
|
|
980
1091
|
}
|
|
981
1092
|
|
|
@@ -986,11 +1097,13 @@
|
|
|
986
1097
|
|
|
987
1098
|
.fm-context-divider {
|
|
988
1099
|
height: 1px;
|
|
989
|
-
background: var(--border-color
|
|
990
|
-
margin:
|
|
1100
|
+
background: var(--border-color);
|
|
1101
|
+
margin: 3px 0;
|
|
991
1102
|
}
|
|
992
1103
|
|
|
993
|
-
/*
|
|
1104
|
+
/* ==========================================================================
|
|
1105
|
+
Modals & Dialogs
|
|
1106
|
+
========================================================================== */
|
|
994
1107
|
.modal {
|
|
995
1108
|
display: none;
|
|
996
1109
|
position: fixed;
|
|
@@ -998,8 +1111,8 @@
|
|
|
998
1111
|
z-index: 1050;
|
|
999
1112
|
overflow-x: hidden;
|
|
1000
1113
|
overflow-y: auto;
|
|
1001
|
-
background: rgba(15,
|
|
1002
|
-
backdrop-filter: blur(
|
|
1114
|
+
background: rgba(15, 23, 42, 0.5);
|
|
1115
|
+
backdrop-filter: blur(4px);
|
|
1003
1116
|
align-items: center;
|
|
1004
1117
|
justify-content: center;
|
|
1005
1118
|
padding: 1rem;
|
|
@@ -1014,7 +1127,7 @@
|
|
|
1014
1127
|
width: 100%;
|
|
1015
1128
|
max-width: 480px;
|
|
1016
1129
|
margin: auto;
|
|
1017
|
-
animation: modal-enter 0.
|
|
1130
|
+
animation: modal-enter 0.18s cubic-bezier(0.16, 1, 0.3, 1);
|
|
1018
1131
|
}
|
|
1019
1132
|
|
|
1020
1133
|
.modal-dialog.modal-lg {
|
|
@@ -1039,7 +1152,7 @@
|
|
|
1039
1152
|
}
|
|
1040
1153
|
|
|
1041
1154
|
@keyframes modal-enter {
|
|
1042
|
-
from { opacity: 0; transform: translateY(-
|
|
1155
|
+
from { opacity: 0; transform: translateY(-8px) scale(0.98); }
|
|
1043
1156
|
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
1044
1157
|
}
|
|
1045
1158
|
|
|
@@ -1051,16 +1164,18 @@
|
|
|
1051
1164
|
background: #ffffff;
|
|
1052
1165
|
border: 1px solid var(--border-color);
|
|
1053
1166
|
border-radius: var(--radius-xl);
|
|
1054
|
-
box-shadow:
|
|
1167
|
+
box-shadow: var(--shadow-dropdown);
|
|
1055
1168
|
outline: 0;
|
|
1169
|
+
overflow: hidden;
|
|
1056
1170
|
}
|
|
1057
1171
|
|
|
1058
1172
|
.modal-header {
|
|
1059
1173
|
display: flex;
|
|
1060
1174
|
align-items: center;
|
|
1061
1175
|
justify-content: space-between;
|
|
1062
|
-
padding:
|
|
1176
|
+
padding: 12px 18px;
|
|
1063
1177
|
border-bottom: 1px solid var(--border-color);
|
|
1178
|
+
background: #ffffff;
|
|
1064
1179
|
}
|
|
1065
1180
|
|
|
1066
1181
|
.modal-title {
|
|
@@ -1070,12 +1185,12 @@
|
|
|
1070
1185
|
gap: 8px;
|
|
1071
1186
|
font-size: 15px;
|
|
1072
1187
|
font-weight: 700;
|
|
1073
|
-
color: var(--
|
|
1188
|
+
color: var(--text);
|
|
1074
1189
|
margin: 0;
|
|
1075
1190
|
}
|
|
1076
1191
|
|
|
1077
1192
|
.modal-title-icon {
|
|
1078
|
-
color: var(--primary
|
|
1193
|
+
color: var(--primary);
|
|
1079
1194
|
}
|
|
1080
1195
|
|
|
1081
1196
|
.btn-close {
|
|
@@ -1083,16 +1198,16 @@
|
|
|
1083
1198
|
border: none;
|
|
1084
1199
|
font-size: 20px;
|
|
1085
1200
|
line-height: 1;
|
|
1086
|
-
color: var(--
|
|
1201
|
+
color: var(--text-muted);
|
|
1087
1202
|
cursor: pointer;
|
|
1088
1203
|
padding: 4px;
|
|
1089
1204
|
border-radius: var(--radius-sm);
|
|
1090
|
-
transition:
|
|
1205
|
+
transition: color 0.12s ease, background-color 0.12s ease;
|
|
1091
1206
|
}
|
|
1092
1207
|
|
|
1093
1208
|
.btn-close:hover {
|
|
1094
|
-
color: var(--
|
|
1095
|
-
background:
|
|
1209
|
+
color: var(--text);
|
|
1210
|
+
background: #f1f5f9;
|
|
1096
1211
|
}
|
|
1097
1212
|
|
|
1098
1213
|
.modal-body {
|
|
@@ -1108,48 +1223,48 @@
|
|
|
1108
1223
|
gap: 8px;
|
|
1109
1224
|
padding: 12px 18px;
|
|
1110
1225
|
border-top: 1px solid var(--border-color);
|
|
1111
|
-
background:
|
|
1112
|
-
border-bottom-left-radius: var(--radius-xl);
|
|
1113
|
-
border-bottom-right-radius: var(--radius-xl);
|
|
1226
|
+
background: #f8fafc;
|
|
1114
1227
|
}
|
|
1115
1228
|
|
|
1116
|
-
/*
|
|
1229
|
+
/* ==========================================================================
|
|
1230
|
+
Upload Dropzone & Queue
|
|
1231
|
+
========================================================================== */
|
|
1117
1232
|
.upload-drop-zone {
|
|
1118
|
-
border:
|
|
1119
|
-
border-radius: var(--radius
|
|
1120
|
-
padding:
|
|
1233
|
+
border: 1.5px dashed #cbd5e1;
|
|
1234
|
+
border-radius: var(--radius);
|
|
1235
|
+
padding: 28px 16px;
|
|
1121
1236
|
text-align: center;
|
|
1122
|
-
background:
|
|
1237
|
+
background: #f8fafc;
|
|
1123
1238
|
cursor: pointer;
|
|
1124
|
-
transition:
|
|
1239
|
+
transition: border-color 0.12s ease, background-color 0.12s ease;
|
|
1125
1240
|
}
|
|
1126
1241
|
|
|
1127
1242
|
.upload-drop-zone:hover,
|
|
1128
1243
|
.upload-drop-zone.dragover {
|
|
1129
|
-
border-color: var(--primary
|
|
1130
|
-
background:
|
|
1244
|
+
border-color: var(--primary);
|
|
1245
|
+
background: var(--primary-light-color-ml);
|
|
1131
1246
|
}
|
|
1132
1247
|
|
|
1133
1248
|
.drop-icon {
|
|
1134
|
-
color: var(--primary
|
|
1135
|
-
margin-bottom:
|
|
1249
|
+
color: var(--primary);
|
|
1250
|
+
margin-bottom: 8px;
|
|
1136
1251
|
}
|
|
1137
1252
|
|
|
1138
1253
|
.drop-text {
|
|
1139
|
-
font-size:
|
|
1254
|
+
font-size: 13.5px;
|
|
1140
1255
|
font-weight: 600;
|
|
1141
|
-
color: var(--
|
|
1256
|
+
color: var(--text);
|
|
1142
1257
|
}
|
|
1143
1258
|
|
|
1144
1259
|
.drop-browse-link {
|
|
1145
|
-
color: var(--primary
|
|
1260
|
+
color: var(--primary);
|
|
1146
1261
|
text-decoration: underline;
|
|
1147
1262
|
cursor: pointer;
|
|
1148
1263
|
}
|
|
1149
1264
|
|
|
1150
1265
|
.drop-hint {
|
|
1151
|
-
font-size:
|
|
1152
|
-
color: var(--
|
|
1266
|
+
font-size: 11.5px;
|
|
1267
|
+
color: var(--text-muted);
|
|
1153
1268
|
margin-top: 4px;
|
|
1154
1269
|
}
|
|
1155
1270
|
|
|
@@ -1159,6 +1274,7 @@
|
|
|
1159
1274
|
display: flex;
|
|
1160
1275
|
flex-direction: column;
|
|
1161
1276
|
gap: 6px;
|
|
1277
|
+
margin-top: 12px;
|
|
1162
1278
|
}
|
|
1163
1279
|
|
|
1164
1280
|
.upload-queue-item {
|
|
@@ -1166,81 +1282,127 @@
|
|
|
1166
1282
|
align-items: center;
|
|
1167
1283
|
justify-content: space-between;
|
|
1168
1284
|
padding: 8px 12px;
|
|
1169
|
-
background:
|
|
1285
|
+
background: #f8fafc;
|
|
1170
1286
|
border: 1px solid var(--border-color);
|
|
1171
|
-
border-radius: var(--radius);
|
|
1287
|
+
border-radius: var(--radius-sm);
|
|
1172
1288
|
font-size: 12.5px;
|
|
1173
1289
|
}
|
|
1174
1290
|
|
|
1175
1291
|
.upload-queue-meta {
|
|
1176
|
-
color: var(--
|
|
1292
|
+
color: var(--text-muted);
|
|
1177
1293
|
font-size: 11.5px;
|
|
1178
1294
|
}
|
|
1179
1295
|
|
|
1180
1296
|
.progress-bar-wrap {
|
|
1181
|
-
height:
|
|
1182
|
-
background:
|
|
1183
|
-
border-radius:
|
|
1297
|
+
height: 4px;
|
|
1298
|
+
background: #e2e8f0;
|
|
1299
|
+
border-radius: 2px;
|
|
1184
1300
|
overflow: hidden;
|
|
1185
1301
|
}
|
|
1186
1302
|
|
|
1187
1303
|
.progress-bar-inner {
|
|
1188
1304
|
height: 100%;
|
|
1189
|
-
background: var(--primary
|
|
1190
|
-
transition: width 0.
|
|
1305
|
+
background: var(--primary);
|
|
1306
|
+
transition: width 0.18s ease;
|
|
1191
1307
|
}
|
|
1192
1308
|
|
|
1193
1309
|
.upload-percent {
|
|
1194
1310
|
font-size: 12px;
|
|
1195
1311
|
font-weight: 700;
|
|
1196
|
-
color: var(--primary
|
|
1312
|
+
color: var(--primary);
|
|
1197
1313
|
}
|
|
1198
1314
|
|
|
1199
|
-
/*
|
|
1315
|
+
/* Form Controls in Modals */
|
|
1200
1316
|
.form-label {
|
|
1201
1317
|
font-size: 12.5px;
|
|
1202
1318
|
font-weight: 600;
|
|
1203
|
-
color: var(--
|
|
1204
|
-
margin-bottom:
|
|
1319
|
+
color: var(--text);
|
|
1320
|
+
margin-bottom: 5px;
|
|
1205
1321
|
display: block;
|
|
1206
1322
|
}
|
|
1207
1323
|
|
|
1208
1324
|
.form-control {
|
|
1209
1325
|
width: 100%;
|
|
1210
|
-
padding:
|
|
1326
|
+
padding: 7px 11px;
|
|
1211
1327
|
font-family: var(--font);
|
|
1212
1328
|
font-size: 13px;
|
|
1213
|
-
color: var(--
|
|
1329
|
+
color: var(--text);
|
|
1214
1330
|
background: #ffffff;
|
|
1215
1331
|
border: 1px solid var(--border-color);
|
|
1216
|
-
border-radius: var(--radius);
|
|
1332
|
+
border-radius: var(--radius-sm);
|
|
1217
1333
|
outline: none;
|
|
1218
|
-
transition: border-color 0.
|
|
1334
|
+
transition: border-color 0.12s ease, box-shadow 0.12s ease;
|
|
1219
1335
|
}
|
|
1220
1336
|
|
|
1221
1337
|
.form-control:focus {
|
|
1222
|
-
border-color: var(--primary
|
|
1223
|
-
box-shadow: 0 0 0
|
|
1338
|
+
border-color: var(--primary);
|
|
1339
|
+
box-shadow: 0 0 0 2px rgba(15, 118, 110, 0.15);
|
|
1224
1340
|
}
|
|
1225
1341
|
|
|
1226
1342
|
.form-text {
|
|
1227
1343
|
font-size: 11.5px;
|
|
1228
|
-
color: var(--
|
|
1344
|
+
color: var(--text-muted);
|
|
1229
1345
|
margin-top: 4px;
|
|
1230
1346
|
}
|
|
1231
1347
|
|
|
1232
|
-
/*
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1348
|
+
/* ==========================================================================
|
|
1349
|
+
Preview Modal Content
|
|
1350
|
+
========================================================================== */
|
|
1351
|
+
.preview-modal-header {
|
|
1236
1352
|
display: flex;
|
|
1237
1353
|
align-items: center;
|
|
1238
|
-
justify-content:
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1354
|
+
justify-content: space-between;
|
|
1355
|
+
padding: 10px 16px;
|
|
1356
|
+
background: #ffffff;
|
|
1357
|
+
color: var(--text);
|
|
1358
|
+
border-bottom: 1px solid var(--border-color);
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
.preview-header-left {
|
|
1362
|
+
display: flex;
|
|
1363
|
+
align-items: center;
|
|
1364
|
+
gap: 12px;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
.preview-tabs {
|
|
1368
|
+
display: inline-flex;
|
|
1369
|
+
background: #f1f5f9;
|
|
1370
|
+
padding: 2px;
|
|
1371
|
+
border-radius: var(--radius-sm);
|
|
1372
|
+
gap: 2px;
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
.preview-tab {
|
|
1376
|
+
background: transparent;
|
|
1377
|
+
border: none;
|
|
1378
|
+
color: var(--text-secondary);
|
|
1379
|
+
font-size: 12px;
|
|
1380
|
+
font-weight: 500;
|
|
1381
|
+
padding: 3px 9px;
|
|
1382
|
+
border-radius: 4px;
|
|
1383
|
+
cursor: pointer;
|
|
1384
|
+
transition: background-color 0.12s ease, color 0.12s ease;
|
|
1385
|
+
font-family: var(--font);
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
.preview-tab.active {
|
|
1389
|
+
background: #ffffff;
|
|
1390
|
+
color: var(--primary-dark-color-ml);
|
|
1391
|
+
font-weight: 600;
|
|
1392
|
+
box-shadow: var(--shadow-xs);
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
.preview-content {
|
|
1396
|
+
max-height: 70vh;
|
|
1397
|
+
overflow: auto;
|
|
1398
|
+
display: flex;
|
|
1399
|
+
align-items: center;
|
|
1400
|
+
justify-content: center;
|
|
1401
|
+
background: #09090b;
|
|
1402
|
+
min-height: 280px;
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
.preview-content img {
|
|
1244
1406
|
max-width: 100%;
|
|
1245
1407
|
max-height: 70vh;
|
|
1246
1408
|
object-fit: contain;
|
|
@@ -1258,12 +1420,20 @@
|
|
|
1258
1420
|
max-height: 70vh;
|
|
1259
1421
|
margin: 0;
|
|
1260
1422
|
padding: 16px;
|
|
1261
|
-
background: #
|
|
1262
|
-
color: #
|
|
1423
|
+
background: #18181b;
|
|
1424
|
+
color: #f4f4f5;
|
|
1263
1425
|
font-family: var(--font-mono);
|
|
1264
1426
|
font-size: 12.5px;
|
|
1265
1427
|
overflow: auto;
|
|
1266
|
-
line-height: 1.
|
|
1428
|
+
line-height: 1.55;
|
|
1429
|
+
tab-size: 2;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
.preview-code-block code {
|
|
1433
|
+
color: inherit;
|
|
1434
|
+
background: transparent;
|
|
1435
|
+
font-family: inherit;
|
|
1436
|
+
font-size: inherit;
|
|
1267
1437
|
}
|
|
1268
1438
|
|
|
1269
1439
|
.preview-iframe {
|
|
@@ -1272,13 +1442,184 @@
|
|
|
1272
1442
|
border: none;
|
|
1273
1443
|
}
|
|
1274
1444
|
|
|
1275
|
-
.
|
|
1445
|
+
.rendered-markdown {
|
|
1446
|
+
padding: 1.5rem;
|
|
1447
|
+
color: var(--text);
|
|
1448
|
+
background: #ffffff;
|
|
1449
|
+
line-height: 1.65;
|
|
1450
|
+
max-height: 70vh;
|
|
1451
|
+
overflow-y: auto;
|
|
1452
|
+
font-family: var(--font);
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
.rendered-markdown h1,
|
|
1456
|
+
.rendered-markdown h2,
|
|
1457
|
+
.rendered-markdown h3 {
|
|
1458
|
+
color: var(--text);
|
|
1459
|
+
font-family: var(--font-headings);
|
|
1460
|
+
font-weight: 700;
|
|
1461
|
+
margin-top: 1.25rem;
|
|
1462
|
+
margin-bottom: 0.5rem;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
.rendered-markdown code {
|
|
1466
|
+
background: #f1f5f9;
|
|
1467
|
+
color: var(--primary-dark-color-ml);
|
|
1468
|
+
padding: 2px 5px;
|
|
1469
|
+
border-radius: 4px;
|
|
1470
|
+
font-family: var(--font-mono);
|
|
1471
|
+
font-size: 12px;
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
.rendered-markdown pre {
|
|
1475
|
+
background: #18181b;
|
|
1476
|
+
color: #f4f4f5;
|
|
1477
|
+
padding: 1rem;
|
|
1478
|
+
border-radius: var(--radius);
|
|
1479
|
+
overflow-x: auto;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
.rendered-markdown table {
|
|
1483
|
+
width: 100%;
|
|
1484
|
+
border-collapse: collapse;
|
|
1485
|
+
margin: 1rem 0;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
.rendered-markdown th,
|
|
1489
|
+
.rendered-markdown td {
|
|
1490
|
+
border: 1px solid var(--border-color);
|
|
1491
|
+
padding: 8px 12px;
|
|
1492
|
+
text-align: left;
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
.rendered-markdown th {
|
|
1496
|
+
background: #f8fafc;
|
|
1497
|
+
font-weight: 600;
|
|
1498
|
+
color: var(--text);
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
/* Metadata Info Cards */
|
|
1502
|
+
.file-info-pane {
|
|
1503
|
+
background: #f8fafc;
|
|
1504
|
+
padding: 1.25rem;
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
.info-card {
|
|
1508
|
+
background: #ffffff;
|
|
1509
|
+
border: 1px solid var(--border-color);
|
|
1510
|
+
border-radius: var(--radius-sm);
|
|
1511
|
+
padding: 10px 12px;
|
|
1512
|
+
font-family: var(--font);
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
.info-label {
|
|
1516
|
+
font-size: 11px;
|
|
1517
|
+
font-weight: 700;
|
|
1518
|
+
text-transform: uppercase;
|
|
1519
|
+
letter-spacing: 0.04em;
|
|
1520
|
+
color: var(--text-muted);
|
|
1521
|
+
margin-bottom: 3px;
|
|
1522
|
+
font-family: var(--font-headings);
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
.info-value {
|
|
1526
|
+
font-size: 13px;
|
|
1527
|
+
color: var(--text);
|
|
1528
|
+
word-break: break-all;
|
|
1529
|
+
font-family: var(--font);
|
|
1530
|
+
line-height: 1.45;
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
.info-value.font-mono,
|
|
1534
|
+
.font-mono {
|
|
1535
|
+
font-family: var(--font-mono) !important;
|
|
1536
|
+
font-size: 12px;
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
.font-semibold {
|
|
1540
|
+
font-weight: 600 !important;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
.text-break {
|
|
1544
|
+
word-break: break-all !important;
|
|
1545
|
+
overflow-wrap: break-word !important;
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
.text-truncate {
|
|
1549
|
+
overflow: hidden !important;
|
|
1550
|
+
text-overflow: ellipsis !important;
|
|
1551
|
+
white-space: nowrap !important;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
.small {
|
|
1555
|
+
font-size: 12px !important;
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
/* ==========================================================================
|
|
1559
|
+
Floating Batch Action Bar
|
|
1560
|
+
========================================================================== */
|
|
1561
|
+
.batch-action-bar {
|
|
1562
|
+
position: fixed;
|
|
1563
|
+
bottom: 24px;
|
|
1564
|
+
left: 50%;
|
|
1565
|
+
transform: translateX(-50%);
|
|
1566
|
+
z-index: 1000;
|
|
1567
|
+
animation: batch-slide 0.18s cubic-bezier(0.16, 1, 0.3, 1);
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
@keyframes batch-slide {
|
|
1571
|
+
from { opacity: 0; transform: translate(-50%, 12px); }
|
|
1572
|
+
to { opacity: 1; transform: translate(-50%, 0); }
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
.batch-bar-inner {
|
|
1576
|
+
display: flex;
|
|
1577
|
+
align-items: center;
|
|
1578
|
+
gap: 12px;
|
|
1579
|
+
padding: 8px 14px;
|
|
1580
|
+
background: #0f172a;
|
|
1581
|
+
color: #ffffff;
|
|
1582
|
+
border-radius: var(--radius-lg);
|
|
1583
|
+
box-shadow: var(--shadow-lg);
|
|
1584
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
.batch-selection-info {
|
|
1276
1588
|
display: flex;
|
|
1277
1589
|
align-items: center;
|
|
1278
1590
|
gap: 8px;
|
|
1591
|
+
font-size: 12.5px;
|
|
1592
|
+
font-weight: 500;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.batch-count-badge {
|
|
1596
|
+
background: var(--primary);
|
|
1597
|
+
color: #ffffff;
|
|
1598
|
+
font-weight: 700;
|
|
1599
|
+
font-size: 11px;
|
|
1600
|
+
padding: 1px 7px;
|
|
1601
|
+
border-radius: 999px;
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
.batch-actions {
|
|
1605
|
+
display: flex;
|
|
1606
|
+
align-items: center;
|
|
1607
|
+
gap: 6px;
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
.batch-actions .btn-outline-light {
|
|
1611
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1612
|
+
color: #ffffff;
|
|
1613
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
.batch-actions .btn-outline-light:hover {
|
|
1617
|
+
background: rgba(255, 255, 255, 0.2);
|
|
1279
1618
|
}
|
|
1280
1619
|
|
|
1281
|
-
/*
|
|
1620
|
+
/* ==========================================================================
|
|
1621
|
+
Toasts & Alerts
|
|
1622
|
+
========================================================================== */
|
|
1282
1623
|
.toast-container {
|
|
1283
1624
|
position: fixed;
|
|
1284
1625
|
bottom: 20px;
|
|
@@ -1295,9 +1636,9 @@
|
|
|
1295
1636
|
display: flex;
|
|
1296
1637
|
align-items: center;
|
|
1297
1638
|
gap: 10px;
|
|
1298
|
-
padding:
|
|
1299
|
-
border-radius: var(--radius);
|
|
1300
|
-
background:
|
|
1639
|
+
padding: 9px 14px;
|
|
1640
|
+
border-radius: var(--radius-sm);
|
|
1641
|
+
background: #0f172a;
|
|
1301
1642
|
color: #ffffff;
|
|
1302
1643
|
font-family: var(--font);
|
|
1303
1644
|
font-size: 13px;
|
|
@@ -1305,38 +1646,73 @@
|
|
|
1305
1646
|
box-shadow: var(--shadow-lg);
|
|
1306
1647
|
min-width: 260px;
|
|
1307
1648
|
max-width: 400px;
|
|
1308
|
-
transition: transform 0.
|
|
1649
|
+
transition: transform 0.2s ease, opacity 0.2s ease;
|
|
1650
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1309
1651
|
}
|
|
1310
1652
|
|
|
1311
1653
|
.toast-notification.success {
|
|
1312
|
-
background:
|
|
1654
|
+
background: #065f46;
|
|
1655
|
+
border-color: #047857;
|
|
1313
1656
|
}
|
|
1314
1657
|
|
|
1315
1658
|
.toast-notification.error {
|
|
1316
|
-
background:
|
|
1659
|
+
background: #991b1b;
|
|
1660
|
+
border-color: #b91c1c;
|
|
1317
1661
|
}
|
|
1318
1662
|
|
|
1319
1663
|
.toast-notification.warning {
|
|
1320
|
-
background:
|
|
1664
|
+
background: #92400e;
|
|
1665
|
+
border-color: #b45309;
|
|
1321
1666
|
}
|
|
1322
1667
|
|
|
1323
1668
|
.toast-close-btn {
|
|
1324
1669
|
margin-left: auto;
|
|
1325
1670
|
background: transparent;
|
|
1326
1671
|
border: none;
|
|
1327
|
-
color: rgba(255, 255, 255, 0.
|
|
1672
|
+
color: rgba(255, 255, 255, 0.8);
|
|
1328
1673
|
cursor: pointer;
|
|
1329
1674
|
font-size: 16px;
|
|
1330
1675
|
line-height: 1;
|
|
1331
1676
|
}
|
|
1332
1677
|
|
|
1333
|
-
|
|
1678
|
+
.toast-close-btn:hover {
|
|
1679
|
+
color: #ffffff;
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
/* Flash alerts */
|
|
1683
|
+
.alert {
|
|
1684
|
+
padding: 10px 14px;
|
|
1685
|
+
border-radius: var(--radius-sm);
|
|
1686
|
+
margin-bottom: 1rem;
|
|
1687
|
+
display: flex;
|
|
1688
|
+
align-items: center;
|
|
1689
|
+
gap: 8px;
|
|
1690
|
+
font-size: 13px;
|
|
1691
|
+
border: 1px solid transparent;
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
.alert-success {
|
|
1695
|
+
background: #ecfdf5;
|
|
1696
|
+
color: #065f46;
|
|
1697
|
+
border-color: #a7f3d0;
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
.alert-danger {
|
|
1701
|
+
background: #fef2f2;
|
|
1702
|
+
color: #991b1b;
|
|
1703
|
+
border-color: #fecaca;
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
/* ==========================================================================
|
|
1707
|
+
Pagination
|
|
1708
|
+
========================================================================== */
|
|
1334
1709
|
.pagination-container {
|
|
1335
|
-
padding:
|
|
1710
|
+
padding: 10px 16px;
|
|
1336
1711
|
border-top: 1px solid var(--border-color);
|
|
1337
1712
|
display: flex;
|
|
1338
1713
|
align-items: center;
|
|
1339
1714
|
justify-content: flex-end;
|
|
1715
|
+
background: #ffffff;
|
|
1340
1716
|
}
|
|
1341
1717
|
|
|
1342
1718
|
.pagination {
|
|
@@ -1363,17 +1739,17 @@
|
|
|
1363
1739
|
font-weight: 600;
|
|
1364
1740
|
text-decoration: none;
|
|
1365
1741
|
cursor: pointer;
|
|
1366
|
-
transition:
|
|
1742
|
+
transition: background-color 0.12s ease, color 0.12s ease, border-color 0.12s ease;
|
|
1367
1743
|
}
|
|
1368
1744
|
|
|
1369
1745
|
.page-item .page-link:hover {
|
|
1370
|
-
background:
|
|
1371
|
-
color: var(--
|
|
1746
|
+
background: #f1f5f9;
|
|
1747
|
+
color: var(--text);
|
|
1372
1748
|
}
|
|
1373
1749
|
|
|
1374
1750
|
.page-item.active .page-link {
|
|
1375
|
-
background: var(--primary
|
|
1376
|
-
border-color: var(--primary
|
|
1751
|
+
background: var(--primary);
|
|
1752
|
+
border-color: var(--primary);
|
|
1377
1753
|
color: #ffffff;
|
|
1378
1754
|
}
|
|
1379
1755
|
|
|
@@ -1382,7 +1758,116 @@
|
|
|
1382
1758
|
cursor: not-allowed;
|
|
1383
1759
|
}
|
|
1384
1760
|
|
|
1385
|
-
/*
|
|
1761
|
+
/* ==========================================================================
|
|
1762
|
+
Provider Badges & Connection Status
|
|
1763
|
+
========================================================================== */
|
|
1764
|
+
.provider-badge {
|
|
1765
|
+
display: inline-flex;
|
|
1766
|
+
align-items: center;
|
|
1767
|
+
gap: 4px;
|
|
1768
|
+
font-size: 11px;
|
|
1769
|
+
font-weight: 700;
|
|
1770
|
+
text-transform: uppercase;
|
|
1771
|
+
letter-spacing: 0.04em;
|
|
1772
|
+
padding: 2px 7px;
|
|
1773
|
+
border-radius: 4px;
|
|
1774
|
+
background: #f1f5f9;
|
|
1775
|
+
color: var(--text-secondary);
|
|
1776
|
+
border: 1px solid var(--border-color);
|
|
1777
|
+
vertical-align: middle;
|
|
1778
|
+
font-family: var(--font-headings);
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
.provider-badge.provider-gdrive,
|
|
1782
|
+
.provider-badge.provider-googledrive,
|
|
1783
|
+
.provider-badge.provider-google-drive {
|
|
1784
|
+
background: #eff6ff;
|
|
1785
|
+
color: #1d4ed8;
|
|
1786
|
+
border-color: #bfdbfe;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
.provider-badge.provider-s3 {
|
|
1790
|
+
background: #fff7ed;
|
|
1791
|
+
color: #c2410c;
|
|
1792
|
+
border-color: #fed7aa;
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
.provider-badge.provider-r2 {
|
|
1796
|
+
background: #fff7ed;
|
|
1797
|
+
color: #c2410c;
|
|
1798
|
+
border-color: #fed7aa;
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
.provider-badge.provider-minio {
|
|
1802
|
+
background: #fef2f2;
|
|
1803
|
+
color: #b91c1c;
|
|
1804
|
+
border-color: #fecaca;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
.health-status-badge {
|
|
1808
|
+
display: inline-flex;
|
|
1809
|
+
align-items: center;
|
|
1810
|
+
gap: 5px;
|
|
1811
|
+
font-size: 11px;
|
|
1812
|
+
font-weight: 600;
|
|
1813
|
+
padding: 2px 7px;
|
|
1814
|
+
border-radius: 4px;
|
|
1815
|
+
background: #ecfdf5;
|
|
1816
|
+
color: #047857;
|
|
1817
|
+
border: 1px solid #a7f3d0;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
.health-status-badge.unhealthy {
|
|
1821
|
+
background: #fef2f2;
|
|
1822
|
+
color: #b91c1c;
|
|
1823
|
+
border-color: #fecaca;
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
.health-status-badge.checking {
|
|
1827
|
+
background: #fffbeb;
|
|
1828
|
+
color: #b45309;
|
|
1829
|
+
border-color: #fde68a;
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
.health-dot {
|
|
1833
|
+
width: 6px;
|
|
1834
|
+
height: 6px;
|
|
1835
|
+
border-radius: 50%;
|
|
1836
|
+
background: #10b981;
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1839
|
+
.health-status-badge.unhealthy .health-dot {
|
|
1840
|
+
background: #ef4444;
|
|
1841
|
+
}
|
|
1842
|
+
|
|
1843
|
+
.health-status-badge.checking .health-dot {
|
|
1844
|
+
background: #f59e0b;
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
.health-check-btn {
|
|
1848
|
+
background: transparent;
|
|
1849
|
+
border: none;
|
|
1850
|
+
cursor: pointer;
|
|
1851
|
+
color: var(--text-muted);
|
|
1852
|
+
padding: 2px 4px;
|
|
1853
|
+
border-radius: var(--radius-sm);
|
|
1854
|
+
transition: color 0.12s ease, background-color 0.12s ease;
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
.health-check-btn:hover {
|
|
1858
|
+
color: var(--primary);
|
|
1859
|
+
background: var(--primary-light-color-ml);
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
.storage-latency-tag {
|
|
1863
|
+
font-size: 11px;
|
|
1864
|
+
font-family: var(--font-mono);
|
|
1865
|
+
color: var(--text-muted);
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
/* ==========================================================================
|
|
1869
|
+
Mobile & Responsive Adaptations
|
|
1870
|
+
========================================================================== */
|
|
1386
1871
|
@media (max-width: 900px) {
|
|
1387
1872
|
.page-wrapper {
|
|
1388
1873
|
padding: 0;
|
|
@@ -1391,10 +1876,8 @@
|
|
|
1391
1876
|
}
|
|
1392
1877
|
|
|
1393
1878
|
.card.file-manager {
|
|
1394
|
-
border-radius: var(--radius
|
|
1879
|
+
border-radius: var(--radius);
|
|
1395
1880
|
width: 100%;
|
|
1396
|
-
max-width: 100%;
|
|
1397
|
-
overflow: hidden;
|
|
1398
1881
|
}
|
|
1399
1882
|
|
|
1400
1883
|
.fm-layout {
|
|
@@ -1402,20 +1885,13 @@
|
|
|
1402
1885
|
height: auto;
|
|
1403
1886
|
min-height: 0;
|
|
1404
1887
|
max-height: none;
|
|
1405
|
-
width: 100%;
|
|
1406
|
-
max-width: 100%;
|
|
1407
|
-
overflow: hidden;
|
|
1408
1888
|
}
|
|
1409
1889
|
|
|
1410
1890
|
.fm-tree-wrap {
|
|
1411
|
-
display: flex;
|
|
1412
1891
|
border-right: none;
|
|
1413
1892
|
border-bottom: 1px solid var(--border-color);
|
|
1414
1893
|
padding: 10px 14px;
|
|
1415
|
-
background:
|
|
1416
|
-
width: 100%;
|
|
1417
|
-
max-width: 100%;
|
|
1418
|
-
box-sizing: border-box;
|
|
1894
|
+
background: #f8fafc;
|
|
1419
1895
|
}
|
|
1420
1896
|
|
|
1421
1897
|
.fm-tree-header,
|
|
@@ -1426,71 +1902,27 @@
|
|
|
1426
1902
|
.fm-storage {
|
|
1427
1903
|
margin-top: 0;
|
|
1428
1904
|
padding: 8px 12px;
|
|
1429
|
-
background:
|
|
1905
|
+
background: #ffffff;
|
|
1430
1906
|
border: 1px solid var(--border-color);
|
|
1431
|
-
border-radius: var(--radius-sm);
|
|
1432
|
-
box-shadow: 0 1px 4px rgba(15, 118, 110, 0.05);
|
|
1433
|
-
width: 100%;
|
|
1434
|
-
max-width: 100%;
|
|
1435
|
-
box-sizing: border-box;
|
|
1436
1907
|
}
|
|
1437
1908
|
|
|
1438
1909
|
.fm-main {
|
|
1439
1910
|
width: 100%;
|
|
1440
|
-
max-width: 100%;
|
|
1441
1911
|
min-width: 0;
|
|
1442
|
-
overflow: hidden;
|
|
1443
1912
|
}
|
|
1444
1913
|
|
|
1445
1914
|
.fm-grid-wrap {
|
|
1446
|
-
min-height:
|
|
1915
|
+
min-height: 380px;
|
|
1447
1916
|
padding: 12px;
|
|
1448
|
-
width: 100%;
|
|
1449
|
-
max-width: 100%;
|
|
1450
|
-
box-sizing: border-box;
|
|
1451
|
-
overflow-x: hidden;
|
|
1452
1917
|
}
|
|
1453
1918
|
|
|
1454
1919
|
.fm-grid.view-grid {
|
|
1455
|
-
grid-template-columns: repeat(auto-fill, minmax(
|
|
1456
|
-
gap:
|
|
1457
|
-
width: 100%;
|
|
1458
|
-
max-width: 100%;
|
|
1459
|
-
}
|
|
1460
|
-
|
|
1461
|
-
.fm-item {
|
|
1462
|
-
-webkit-tap-highlight-color: transparent;
|
|
1463
|
-
width: 100%;
|
|
1464
|
-
max-width: 100%;
|
|
1465
|
-
min-width: 0;
|
|
1466
|
-
box-sizing: border-box;
|
|
1467
|
-
}
|
|
1468
|
-
|
|
1469
|
-
.fm-item-details {
|
|
1470
|
-
width: 100%;
|
|
1471
|
-
max-width: 100%;
|
|
1472
|
-
min-width: 0;
|
|
1473
|
-
overflow: hidden;
|
|
1474
|
-
}
|
|
1475
|
-
|
|
1476
|
-
.fm-item-name {
|
|
1477
|
-
width: 100%;
|
|
1478
|
-
max-width: 100%;
|
|
1479
|
-
min-width: 0;
|
|
1480
|
-
overflow: hidden;
|
|
1481
|
-
text-overflow: ellipsis;
|
|
1482
|
-
white-space: nowrap;
|
|
1483
|
-
}
|
|
1484
|
-
|
|
1485
|
-
.fm-item:active {
|
|
1486
|
-
transform: scale(0.98);
|
|
1487
|
-
background: var(--primary-light-color-ml);
|
|
1920
|
+
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
|
|
1921
|
+
gap: 8px;
|
|
1488
1922
|
}
|
|
1489
1923
|
|
|
1490
1924
|
.fm-item-menu {
|
|
1491
1925
|
opacity: 1;
|
|
1492
|
-
background: rgba(255, 255, 255, 0.92);
|
|
1493
|
-
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
|
|
1494
1926
|
}
|
|
1495
1927
|
|
|
1496
1928
|
.fm-star.on {
|
|
@@ -1503,29 +1935,26 @@
|
|
|
1503
1935
|
padding: 0.75rem 1rem;
|
|
1504
1936
|
margin-bottom: 0.75rem;
|
|
1505
1937
|
border-radius: var(--radius);
|
|
1506
|
-
width: 100%;
|
|
1507
|
-
max-width: 100%;
|
|
1508
1938
|
}
|
|
1509
1939
|
|
|
1510
1940
|
.page-header-row {
|
|
1511
1941
|
flex-direction: column;
|
|
1512
1942
|
align-items: stretch;
|
|
1513
1943
|
gap: 10px;
|
|
1514
|
-
width: 100%;
|
|
1515
1944
|
}
|
|
1516
1945
|
|
|
1517
1946
|
.page-actions {
|
|
1518
1947
|
width: 100%;
|
|
1519
1948
|
display: flex;
|
|
1520
1949
|
justify-content: stretch;
|
|
1521
|
-
gap:
|
|
1950
|
+
gap: 6px;
|
|
1522
1951
|
}
|
|
1523
1952
|
|
|
1524
1953
|
.page-actions .btn {
|
|
1525
1954
|
flex: 1 1 0;
|
|
1526
1955
|
min-width: 0;
|
|
1527
1956
|
justify-content: center;
|
|
1528
|
-
padding:
|
|
1957
|
+
padding: 6px 8px;
|
|
1529
1958
|
font-size: 12px;
|
|
1530
1959
|
}
|
|
1531
1960
|
|
|
@@ -1534,9 +1963,6 @@
|
|
|
1534
1963
|
align-items: stretch;
|
|
1535
1964
|
gap: 8px;
|
|
1536
1965
|
padding: 8px 10px;
|
|
1537
|
-
width: 100%;
|
|
1538
|
-
max-width: 100%;
|
|
1539
|
-
overflow: hidden;
|
|
1540
1966
|
}
|
|
1541
1967
|
|
|
1542
1968
|
.fm-breadcrumb {
|
|
@@ -1557,89 +1983,44 @@
|
|
|
1557
1983
|
flex-direction: column;
|
|
1558
1984
|
align-items: stretch;
|
|
1559
1985
|
gap: 8px;
|
|
1560
|
-
max-width: 100%;
|
|
1561
1986
|
}
|
|
1562
1987
|
|
|
1563
1988
|
.quick-filter-group {
|
|
1564
1989
|
width: 100%;
|
|
1565
1990
|
display: flex;
|
|
1566
|
-
overflow-x: auto;
|
|
1567
|
-
scrollbar-width: none;
|
|
1568
|
-
max-width: 100%;
|
|
1569
|
-
}
|
|
1570
|
-
|
|
1571
|
-
.quick-filter-group::-webkit-scrollbar {
|
|
1572
|
-
display: none;
|
|
1573
1991
|
}
|
|
1574
1992
|
|
|
1575
1993
|
.quick-filter-btn {
|
|
1576
1994
|
flex: 1 1 0;
|
|
1577
1995
|
text-align: center;
|
|
1578
|
-
padding:
|
|
1996
|
+
padding: 4px 6px;
|
|
1579
1997
|
font-size: 11.5px;
|
|
1580
|
-
white-space: nowrap;
|
|
1581
1998
|
}
|
|
1582
1999
|
|
|
1583
2000
|
.search-box {
|
|
1584
2001
|
width: 100%;
|
|
1585
|
-
max-width: 100%;
|
|
1586
|
-
}
|
|
1587
|
-
|
|
1588
|
-
.search-box input {
|
|
1589
|
-
width: 100%;
|
|
1590
|
-
box-sizing: border-box;
|
|
1591
2002
|
}
|
|
1592
2003
|
|
|
1593
|
-
/* Grid Mode on Small Phones */
|
|
1594
2004
|
.fm-grid.view-grid {
|
|
1595
2005
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1596
2006
|
gap: 8px;
|
|
1597
|
-
width: 100%;
|
|
1598
|
-
max-width: 100%;
|
|
1599
2007
|
}
|
|
1600
2008
|
|
|
1601
2009
|
.fm-grid.view-grid .fm-item {
|
|
1602
2010
|
padding: 8px;
|
|
1603
|
-
border-radius: var(--radius-md);
|
|
1604
2011
|
gap: 6px;
|
|
1605
|
-
width: 100%;
|
|
1606
|
-
max-width: 100%;
|
|
1607
|
-
min-width: 0;
|
|
1608
|
-
}
|
|
1609
|
-
|
|
1610
|
-
.fm-grid.view-grid .fm-item-icon {
|
|
1611
|
-
aspect-ratio: 16 / 11;
|
|
1612
|
-
width: 100%;
|
|
1613
2012
|
}
|
|
1614
2013
|
|
|
1615
2014
|
.fm-item-name {
|
|
1616
2015
|
font-size: 12px;
|
|
1617
|
-
line-height: 1.35;
|
|
1618
2016
|
}
|
|
1619
2017
|
|
|
1620
2018
|
.fm-item-meta {
|
|
1621
|
-
font-size:
|
|
2019
|
+
font-size: 10.5px;
|
|
1622
2020
|
}
|
|
1623
2021
|
|
|
1624
|
-
.fm-item-menu {
|
|
1625
|
-
top: 5px;
|
|
1626
|
-
right: 5px;
|
|
1627
|
-
width: 26px;
|
|
1628
|
-
height: 26px;
|
|
1629
|
-
}
|
|
1630
|
-
|
|
1631
|
-
.fm-star {
|
|
1632
|
-
top: 5px;
|
|
1633
|
-
left: 5px;
|
|
1634
|
-
width: 22px;
|
|
1635
|
-
height: 22px;
|
|
1636
|
-
}
|
|
1637
|
-
|
|
1638
|
-
/* List Mode on Mobile */
|
|
1639
2022
|
.fm-grid.view-list {
|
|
1640
|
-
gap:
|
|
1641
|
-
width: 100%;
|
|
1642
|
-
max-width: 100%;
|
|
2023
|
+
gap: 4px;
|
|
1643
2024
|
}
|
|
1644
2025
|
|
|
1645
2026
|
.fm-grid.view-list .fm-item {
|
|
@@ -1647,35 +2028,6 @@
|
|
|
1647
2028
|
align-items: center;
|
|
1648
2029
|
gap: 8px;
|
|
1649
2030
|
padding: 8px 10px;
|
|
1650
|
-
border-radius: var(--radius-md);
|
|
1651
|
-
width: 100%;
|
|
1652
|
-
max-width: 100%;
|
|
1653
|
-
min-width: 0;
|
|
1654
|
-
}
|
|
1655
|
-
|
|
1656
|
-
.fm-grid.view-list .fm-item-checkbox {
|
|
1657
|
-
display: flex;
|
|
1658
|
-
align-items: center;
|
|
1659
|
-
justify-content: center;
|
|
1660
|
-
flex-shrink: 0;
|
|
1661
|
-
}
|
|
1662
|
-
|
|
1663
|
-
.fm-grid.view-list .fm-item-icon {
|
|
1664
|
-
width: 32px;
|
|
1665
|
-
height: 32px;
|
|
1666
|
-
flex-shrink: 0;
|
|
1667
|
-
border-radius: var(--radius-sm);
|
|
1668
|
-
}
|
|
1669
|
-
|
|
1670
|
-
.fm-grid.view-list .fm-item-name {
|
|
1671
|
-
flex: 1 1 auto;
|
|
1672
|
-
min-width: 0;
|
|
1673
|
-
font-size: 12.5px;
|
|
1674
|
-
font-weight: 600;
|
|
1675
|
-
color: var(--dark-color-ml);
|
|
1676
|
-
overflow: hidden;
|
|
1677
|
-
text-overflow: ellipsis;
|
|
1678
|
-
white-space: nowrap;
|
|
1679
2031
|
}
|
|
1680
2032
|
|
|
1681
2033
|
.fm-grid.view-list .fm-item-size,
|
|
@@ -1684,24 +2036,6 @@
|
|
|
1684
2036
|
display: none;
|
|
1685
2037
|
}
|
|
1686
2038
|
|
|
1687
|
-
.fm-grid.view-list .fm-item-menu {
|
|
1688
|
-
flex-shrink: 0;
|
|
1689
|
-
width: 28px;
|
|
1690
|
-
height: 28px;
|
|
1691
|
-
display: flex;
|
|
1692
|
-
align-items: center;
|
|
1693
|
-
justify-content: center;
|
|
1694
|
-
opacity: 1;
|
|
1695
|
-
color: var(--gray-color-ml);
|
|
1696
|
-
border-radius: 6px;
|
|
1697
|
-
background: transparent;
|
|
1698
|
-
box-shadow: none;
|
|
1699
|
-
}
|
|
1700
|
-
|
|
1701
|
-
.fm-grid.view-list .fm-item-menu:active {
|
|
1702
|
-
background: var(--light-color-ml);
|
|
1703
|
-
}
|
|
1704
|
-
|
|
1705
2039
|
.fm-list-header {
|
|
1706
2040
|
display: none;
|
|
1707
2041
|
}
|