feat: implement full breadcrumb path navigation in Files tab

- Add breadcrumbPath array to app state for tracking folder hierarchy
- Rewrite updateBreadcrumb() to render full path: Home > folder > subfolder
- Each breadcrumb segment is clickable to navigate back to that level
- Current folder shown in bold (non-clickable), parent folders as links
- Reset breadcrumb path on tab switch, home navigation, and initial load
- Update navigateFolder/selectFolder to push to breadcrumb path
- Enhanced breadcrumb CSS with hover effects and dark mode support
This commit is contained in:
Diocrafts
2026-02-21 00:19:04 +01:00
parent a1a3bd1b2b
commit 269a5fe940
52 changed files with 6809 additions and 6683 deletions
+153
View File
@@ -0,0 +1,153 @@
/* Multi-Select – checkboxes & batch action bar */
.list-header-checkbox,
.list-item-checkbox {
display: flex;
align-items: center;
justify-content: center;
}
.list-header-checkbox input[type="checkbox"],
.list-item-checkbox input[type="checkbox"] {
width: 17px;
height: 17px;
cursor: pointer;
accent-color: #ff5e3a;
border-radius: 4px;
}
.list-header.selection-mode {
grid-template-columns: 36px 1fr;
background-color: #1e293b;
color: #fff;
border-bottom-color: #334155;
}
.list-header.selection-mode .list-header-checkbox input[type="checkbox"] {
accent-color: #ff5e3a;
}
.batch-selection-info {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
min-width: 0;
}
.batch-action-bar {
display: flex;
align-items: center;
justify-content: space-between;
background: #1e293b;
color: #fff;
padding: 10px 20px;
border-radius: 12px;
margin: 0 0 12px;
opacity: 0;
max-height: 0;
overflow: hidden;
transform: translateY(-8px);
transition: opacity 0.2s, max-height 0.25s, transform 0.2s, margin 0.2s, padding 0.2s;
pointer-events: none;
}
.batch-action-bar.visible {
opacity: 1;
max-height: 60px;
transform: translateY(0);
pointer-events: auto;
padding: 10px 20px;
margin: 0 0 12px;
}
.batch-bar-left {
display: flex;
align-items: center;
gap: 12px;
}
.batch-bar-close {
background: none;
border: none;
color: rgba(255,255,255,0.7);
cursor: pointer;
font-size: 14px;
padding: 4px 6px;
border-radius: 6px;
transition: background 0.15s, color 0.15s;
}
.batch-bar-close:hover {
background: rgba(255,255,255,0.1);
color: #fff;
}
.batch-bar-count {
font-size: 14px;
font-weight: 600;
white-space: nowrap;
}
.batch-bar-actions {
display: flex;
align-items: center;
gap: 6px;
}
.batch-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 7px 14px;
border: none;
border-radius: 8px;
background: rgba(255,255,255,0.1);
color: #fff;
font-size: 13px;
font-weight: 500;
cursor: pointer;
transition: background 0.15s;
white-space: nowrap;
}
.batch-btn:hover {
background: rgba(255,255,255,0.2);
}
.batch-btn-danger {
background: rgba(239,68,68,0.25);
color: #fca5a5;
}
.batch-btn-danger:hover {
background: rgba(239,68,68,0.4);
color: #fff;
}
@media (max-width: 640px) {
.batch-btn span {
display: none;
}
.batch-btn {
padding: 7px 10px;
}
}
[data-theme="dark"] .list-header-checkbox input,
[data-theme="dark"] .list-item-checkbox input,
[data-theme="dark"] .file-card-checkbox input {
accent-color: #ff5e3a;
}
[data-theme="dark"] .batch-action-bar {
background-color: #1e293b;
border-color: #334155;
color: #e2e8f0;
}
[data-theme="dark"] .list-header.selection-mode {
background-color: #0f172a;
border-bottom-color: #334155;
color: #e2e8f0;
}