Skip to content

Commit 0ee8eef

Browse files
authored
feat(app): tabs help button (anomalyco#31454)
1 parent 422e113 commit 0ee8eef

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { Icon } from "@opencode-ai/ui/v2/icon"
2+
import { Popover } from "@opencode-ai/ui/popover"
3+
import { createSignal, Show } from "solid-js"
4+
import { createStore } from "solid-js/store"
5+
6+
export function HelpButton() {
7+
if (import.meta.env.VITE_OPENCODE_CHANNEL !== "dev") return null
8+
9+
const [state, setState] = /* persisted(Persist.global("help-button"), */ createStore({ dismissed: false }) /* ) */
10+
const [shown, setShown] = createSignal(false)
11+
12+
return (
13+
<Show when={!state.dismissed}>
14+
<div class="fixed bottom-4 right-4 z-50">
15+
<Popover
16+
open={shown()}
17+
onOpenChange={setShown}
18+
triggerAs="button"
19+
triggerProps={{
20+
type: "button",
21+
"aria-label": "Help",
22+
class:
23+
"size-7 rounded-full bg-background-base shadow-[var(--shadow-lg-border-base)] flex items-center justify-center text-text-base hover:text-text-strong transition-colors",
24+
}}
25+
trigger={<span aria-hidden="true">?</span>}
26+
class="[&_[data-slot=popover-body]]:p-0 w-[320px] max-w-[calc(100vw-40px)] bg-transparent border-0 shadow-none rounded-xl"
27+
gutter={8}
28+
placement="top-end"
29+
>
30+
<Show when={shown()}>
31+
<div class="relative flex flex-col gap-1 w-[320px] p-4 rounded-xl bg-background-strong shadow-[var(--shadow-lg-border-base)]">
32+
<button
33+
type="button"
34+
aria-label="Close"
35+
class="absolute top-3.5 right-3.5 size-6 rounded-md flex items-center justify-center text-text-base hover:text-text-strong hover:bg-surface-raised-base-hover transition-colors"
36+
onClick={() => {
37+
setShown(false)
38+
setState("dismissed", true)
39+
}}
40+
>
41+
<Icon name="xmark-small" />
42+
</button>
43+
<span class="text-14-regular text-text-strong">Lorem ipsum dolor sit amet</span>
44+
<p class="text-12-regular text-text-weak">
45+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
46+
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
47+
</p>
48+
</div>
49+
</Show>
50+
</Popover>
51+
</div>
52+
</Show>
53+
)
54+
}

packages/app/src/pages/layout.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme/context"
6363
import { useCommand, type CommandOption } from "@/context/command"
6464
import { ConstrainDragXAxis, getDraggableId } from "@/utils/solid-dnd"
6565
import { DebugBar } from "@/components/debug-bar"
66+
import { HelpButton } from "@/components/help-button"
6667
import { Titlebar, type TitlebarUpdate } from "@/components/titlebar"
6768
import { useDirectoryPicker } from "@/components/directory-picker"
6869
import { ServerConnection, useServer } from "@/context/server"
@@ -2364,6 +2365,7 @@ export default function Layout(props: ParentProps) {
23642365
</Show>
23652366
</main>
23662367
{import.meta.env.DEV && <DebugBar />}
2368+
<HelpButton />
23672369
<ToastRegion v2={newDesign()} />
23682370
</div>
23692371
}
@@ -2517,6 +2519,7 @@ export default function Layout(props: ParentProps) {
25172519
</div>
25182520
{import.meta.env.DEV && <DebugBar />}
25192521
</div>
2522+
<HelpButton />
25202523
<ToastRegion v2={newDesign()} />
25212524
</div>
25222525
</Show>

0 commit comments

Comments
 (0)