diff --git a/frontend/css/main.css b/frontend/css/main.css index 86429ce..1131c0e 100644 --- a/frontend/css/main.css +++ b/frontend/css/main.css @@ -90,6 +90,14 @@ body { .workspace-switcher-item .ws-org { font-size: 11px; color: var(--text-muted); margin-top: 2px; } +.workspace-switcher-pencil { + flex-shrink: 0; visibility: hidden; + background: none; border: none; padding: 4px; + color: var(--text-muted); cursor: pointer; + border-radius: 4px; transition: all var(--transition); +} +.workspace-switcher-item:hover .workspace-switcher-pencil { visibility: visible; } +.workspace-switcher-pencil:hover { color: var(--accent); background: var(--bg-input); } .nav-links { flex: 1; diff --git a/frontend/js/api.js b/frontend/js/api.js index 778f491..543537f 100644 --- a/frontend/js/api.js +++ b/frontend/js/api.js @@ -157,6 +157,7 @@ export const api = { getMe: () => request('/auth/me'), updateMe: (data) => request('/auth/me', { method: 'PUT', body: JSON.stringify(data) }), switchWorkspace: (workspaceId) => request('/auth/switch-workspace', { method: 'POST', body: JSON.stringify({ workspace_id: workspaceId }) }), + renameWorkspace: (id, data) => request(`/workspaces/${id}`, { method: 'PATCH', body: JSON.stringify(data) }), // Admin - Users getUsers: () => request('/auth/users'), diff --git a/frontend/js/components/workspace-rename-modal.js b/frontend/js/components/workspace-rename-modal.js new file mode 100644 index 0000000..19296b5 --- /dev/null +++ b/frontend/js/components/workspace-rename-modal.js @@ -0,0 +1,82 @@ +import { api } from '../api.js'; + +// Open a rename modal for the given workspace. Uses the existing .modal-overlay +// / .modal / .modal-header / .modal-body / .modal-footer CSS classes. On +// successful save, reloads the page (matches the workspace-switch flow). +export function openWorkspaceRenameModal(workspace) { + const overlay = document.createElement('div'); + overlay.className = 'modal-overlay'; + overlay.innerHTML = ` +