diff options
| author | Frank <[email protected]> | 2025-10-10 19:39:01 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-10-10 19:39:01 -0400 |
| commit | f14cd4a3db12161eab93ce6538528ed882439a50 (patch) | |
| tree | 57a37735611124334190509448e1058de8b74845 /packages/console/app/src/routes | |
| parent | 48008f91ac9d11fef82f2149e5b937381780f577 (diff) | |
| download | opencode-f14cd4a3db12161eab93ce6538528ed882439a50.tar.gz opencode-f14cd4a3db12161eab93ce6538528ed882439a50.zip | |
wip: zen
Diffstat (limited to 'packages/console/app/src/routes')
| -rw-r--r-- | packages/console/app/src/routes/workspace-picker.css | 35 | ||||
| -rw-r--r-- | packages/console/app/src/routes/workspace-picker.tsx | 28 |
2 files changed, 35 insertions, 28 deletions
diff --git a/packages/console/app/src/routes/workspace-picker.css b/packages/console/app/src/routes/workspace-picker.css index c174cabe5..dec482286 100644 --- a/packages/console/app/src/routes/workspace-picker.css +++ b/packages/console/app/src/routes/workspace-picker.css @@ -1,15 +1,15 @@ [data-component="workspace-picker"] { position: relative; - /* Override blue accent colors with neutral colors */ - --color-accent: var(--color-border); - --color-accent-hover: var(--color-border); - --color-accent-active: var(--color-border); - --color-primary: var(--color-border); - --color-primary-hover: var(--color-border); - --color-primary-active: var(--color-border); - --color-primary-alpha-20: transparent; [data-slot="trigger"] { + /* Override blue accent colors with neutral colors for dropdown trigger */ + --color-accent: var(--color-border); + --color-accent-hover: var(--color-border); + --color-accent-active: var(--color-border); + --color-primary: var(--color-border); + --color-primary-hover: var(--color-border); + --color-primary-active: var(--color-border); + --color-primary-alpha-20: transparent; display: flex; align-items: center; justify-content: space-between; @@ -73,22 +73,19 @@ } [data-slot="create-form"] { - margin-top: var(--space-4); - padding: var(--space-4); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - background-color: var(--color-surface); + width: 100%; } [data-slot="create-input-group"] { display: flex; - gap: var(--space-2); - align-items: center; + flex-direction: column; + gap: var(--space-3); + } - @media (max-width: 30rem) { - flex-direction: column; - align-items: stretch; - } + [data-slot="button-group"] { + display: flex; + gap: var(--space-2); + justify-content: flex-end; } [data-slot="create-input"] { diff --git a/packages/console/app/src/routes/workspace-picker.tsx b/packages/console/app/src/routes/workspace-picker.tsx index fb77d8f45..51de4cef1 100644 --- a/packages/console/app/src/routes/workspace-picker.tsx +++ b/packages/console/app/src/routes/workspace-picker.tsx @@ -8,6 +8,7 @@ import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.j import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { IconChevron } from "~/component/icon" +import { Modal } from "~/component/modal" import "./workspace-picker.css" const getWorkspaces = query(async () => { @@ -46,6 +47,7 @@ export function WorkspacePicker() { showDropdown: false, }) let dropdownRef: HTMLDivElement | undefined + let inputRef: HTMLInputElement | undefined const currentWorkspace = () => { const ws = workspaces()?.find((w) => w.id === params.id) @@ -56,6 +58,12 @@ export function WorkspacePicker() { setStore({ showForm: true, showDropdown: false }) } + createEffect(() => { + if (store.showForm && inputRef) { + setTimeout(() => inputRef?.focus(), 0) + } + }) + const handleSelectWorkspace = (workspaceID: string) => { if (workspaceID === params.id) { setStore("showDropdown", false) @@ -112,26 +120,28 @@ export function WorkspacePicker() { </Show> </div> - <Show when={store.showForm}> + <Modal open={store.showForm} onClose={() => setStore("showForm", false)} title="Create New Workspace"> <form data-slot="create-form" action={createWorkspace} method="post"> <div data-slot="create-input-group"> <input + ref={inputRef} data-slot="create-input" type="text" name="workspaceName" placeholder="Enter workspace name" required - autofocus /> - <button type="submit" data-color="primary"> - Create - </button> - <button type="button" onClick={() => setStore("showForm", false)}> - Cancel - </button> + <div data-slot="button-group"> + <button type="button" data-color="ghost" onClick={() => setStore("showForm", false)}> + Cancel + </button> + <button type="submit" data-color="primary"> + Create + </button> + </div> </div> </form> - </Show> + </Modal> </div> ) } |
