diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-06 16:05:39 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-06 16:05:39 +0200 |
| commit | e76e27868b30a2b00b1ba42dd8e7ee6071e0c0d7 (patch) | |
| tree | 3c23483207d77adf3b67f290b67a57ce185fb1a1 /packages/meshbay-hub/src/meshbay_hub/static/style.css | |
| parent | 0ed078c92cabab1dab0f70f321562032ea549ce6 (diff) | |
| download | meshbay-e76e27868b30a2b00b1ba42dd8e7ee6071e0c0d7.tar.gz | |
feat: groups refactor Phase 1 — root RO/RW model + shared directories UI
Replace the upload boolean with per-root writable/removable/ejected flags.
Backend: new ops (update_root, eject_root, plug_root), MNP 1.1 protocol
messages, live RootSet updates so API always reflects current state, CLI
root subcommand (add/remove/set/list/eject/plug).
Frontend: SharedDirectoriesTable with optimistic toggle switches, eject/plug
in Files and Settings, upload gated on root.writable, ejected-root filtering
in all media apps, updated Create Group wizard, 10-locale i18n.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/style.css')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/style.css | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/style.css b/packages/meshbay-hub/src/meshbay_hub/static/style.css index c183d7e..51f9d70 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/style.css +++ b/packages/meshbay-hub/src/meshbay_hub/static/style.css @@ -1267,6 +1267,7 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } /* A modern on/off switch — replaces a checkbox or a "Turn on/off" button wherever the setting is a straight binary. */ .toggle-switch { + position: relative; display: inline-flex; align-items: center; gap: 10px; @@ -2542,6 +2543,41 @@ h2 .gn-owner, h3 .gn-owner { font-size: 0.55em; } .node-roots-header { margin-bottom: 8px; } +/* Shared directories table */ +.shared-dirs-tbl { width: 100%; border-collapse: collapse; border: none; } +.shared-dirs-tbl th { + text-align: left; font-size: 0.78em; font-weight: 500; + color: var(--text-dim); padding: 0 12px 6px 0; + text-transform: uppercase; letter-spacing: 0.04em; + border: none; +} +.shared-dirs-tbl td { padding: 7px 12px 7px 0; border: none; vertical-align: middle; } +.shared-dirs-tbl tbody tr + tr td { border-top: 1px solid var(--border); } +.sdt-col-dir { min-width: 140px; } +.sdt-col-toggle { width: 90px; text-align: center; } +.sdt-col-toggle th { text-align: center; } +.sdt-col-toggle .toggle-switch { justify-content: center; } +.sdt-col-actions { white-space: nowrap; text-align: right; } +.sdt-action-btn { + background: none; border: 1px solid var(--border); border-radius: 4px; + padding: 4px 7px; cursor: pointer; font-size: 0.85em; color: var(--text-dim); + line-height: 1; vertical-align: middle; +} +.sdt-action-btn + .sdt-action-btn { margin-left: 6px; } +.sdt-action-btn:hover:not(:disabled) { background: var(--bg-hover); color: var(--text); } +.sdt-action-btn:disabled { opacity: 0.3; cursor: default; } +.sdt-action-danger:hover:not(:disabled) { color: var(--danger, #ef4444); border-color: var(--danger, #ef4444); } +.sdt-dir-name { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; } +.sdt-dir-name .icon { width: 16px; height: 16px; flex-shrink: 0; } +.sdt-row-ejected { opacity: 0.5; } +.sdt-row-unavail { opacity: 0.6; } +.root-eject-btn { + background: none; border: 1px solid var(--border); border-radius: 4px; + padding: 2px 6px; cursor: pointer; font-size: 0.85em; color: var(--text-dim); + line-height: 1; +} +.root-eject-btn:hover { background: var(--bg-hover); } + .node-root { display: flex; align-items: center; |