feat: Notiz-Baum in der Datei-Leiste
Setzt Issue #7 um und schliesst damit die Workspace-Map ab. Die files-bar zeigt nicht mehr zwei Platzhalter-Routen, sondern den rekursiv eingelesenen Inhalt des offenen Workspace. TreeNode ist ein verschachteltes Enum mit einer einzigen File-Variante fuer alle Dateitypen - wer wissen will, ob es eine Notiz ist, fragt path.extension(). Aufgebaut wird ueber std::fs::read_dir mit eigener Rekursion; walkdir liegt zwar im Graph, iteriert aber flach, woraus einen Baum zu bauen mehr Code waere. Eingesammelt wird alles ausser Namen mit fuehrendem Punkt - Dateien wie Ordner, womit .dionotes und .git ohne Ausnahmeliste wegfallen - und ausser Symlinks, deren Verfolgung einen Zyklusschutz erfordern wuerde. Leere Ordner werden angezeigt, sortiert wird Ordner-vor-Dateien und alphabetisch ohne Ruecksicht auf Gross-/Kleinschreibung. Der Aufklapp-Zustand liegt als HashSet<PathBuf> neben dem Baum, nicht darin: Es gibt keinen Filewatcher, der Nutzer liest bei Bedarf neu ein - steckte expanded im Knoten, klappte jeder Refresh saemtliche Ordner zu. Persistiert wird er nicht. Mit dem Baum entfaellt die Tab-Leiste im Editor und damit EDITOR_TABS, der letzte Rest des in #5 dokumentierten Pflegepunkts. strum wird dadurch nirgends mehr gebraucht und faellt samt strum_macros aus dem Graph. Ausserdem entfernt: der Dioxus-Vorlagentext Hero samt header.svg, der nach dem Oeffnen eines Workspace die rechte Haelfte mit ungestylten Werbelinks fuellte. Home ist jetzt ein Empty-State.
This commit is contained in:
@@ -9,8 +9,18 @@
|
||||
|
||||
.file-selector {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: var(--dn-space-1) var(--dn-space-2) var(--dn-space-1) var(--dn-space-3);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--dn-space-1);
|
||||
/* Einrückung pro Baumebene — --depth setzt die Komponente je Knoten. */
|
||||
padding: var(--dn-space-1) var(--dn-space-2) var(--dn-space-1)
|
||||
calc(var(--dn-space-3) + var(--depth, 0) * var(--dn-space-4));
|
||||
/* Als <button> im Baum: Browser-Vorgaben zurücknehmen. */
|
||||
width: 100%;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
border-radius: var(--dn-radius-sm);
|
||||
color: var(--dn-fg-muted);
|
||||
font-family: var(--dn-font-code);
|
||||
@@ -23,6 +33,19 @@
|
||||
background-color var(--dn-dur-fast) var(--dn-ease);
|
||||
}
|
||||
|
||||
/* Das Dreieck hält seinen Platz auch bei Dateien, damit Ordner- und
|
||||
Dateinamen derselben Ebene bündig stehen. */
|
||||
.tree-caret {
|
||||
flex: none;
|
||||
width: 0.9em;
|
||||
color: var(--dn-fg-faint);
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.file-selector.is-folder {
|
||||
color: var(--dn-fg);
|
||||
}
|
||||
|
||||
.file-selector::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
@@ -88,6 +111,12 @@
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
/* Quadratischer Knopf für ein einzelnes Zeichen — Refresh, Schließen. */
|
||||
.btn-icon {
|
||||
padding: var(--dn-space-1) var(--dn-space-2);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.btn-ghost:hover:not(:disabled) {
|
||||
background: var(--dn-bg-raised);
|
||||
border-color: transparent;
|
||||
|
||||
@@ -80,6 +80,22 @@
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
/* Kopfzeile der Datei-Leiste: Beschriftung und Neu-einlesen. Bleibt stehen,
|
||||
während der Baum darunter scrollt. */
|
||||
.files-bar-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: var(--dn-space-2);
|
||||
padding: var(--dn-space-1) var(--dn-space-1) var(--dn-space-1) var(--dn-space-2);
|
||||
}
|
||||
|
||||
.files-bar-empty {
|
||||
padding: var(--dn-space-3) var(--dn-space-2);
|
||||
color: var(--dn-fg-faint);
|
||||
font-size: var(--dn-text-xs);
|
||||
}
|
||||
|
||||
.editor-container {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 23 KiB |
Reference in New Issue
Block a user