fix(app): new session button

This commit is contained in:
Adam
2026-01-22 11:17:55 -06:00
parent c4971e48c4
commit 9c45746bd2

View File

@@ -1710,6 +1710,43 @@ export default function Layout(props: ParentProps) {
)
}
const NewSessionItem = (props: { slug: string; mobile?: boolean; dense?: boolean }): JSX.Element => {
const label = language.t("command.session.new")
const tooltip = () => props.mobile || !layout.sidebar.opened()
const item = (
<A
href={`${props.slug}/session`}
end
class={`flex items-center justify-between gap-3 min-w-0 text-left w-full focus:outline-none ${props.dense ? "py-0.5" : "py-1"}`}
onClick={() => setHoverSession(undefined)}
>
<div class="flex items-center gap-1 w-full">
<div class="shrink-0 size-6 flex items-center justify-center">
<Icon name="plus-small" size="small" class="text-icon-weak" />
</div>
<span class="text-14-regular text-text-strong grow-1 min-w-0 overflow-hidden text-ellipsis truncate">
{label}
</span>
</div>
</A>
)
return (
<div class="group/session relative w-full rounded-md cursor-default transition-colors pl-2 pr-3 hover:bg-surface-raised-base-hover focus-within:bg-surface-raised-base-hover has-[.active]:bg-surface-base-active">
<Show
when={!tooltip()}
fallback={
<Tooltip placement={props.mobile ? "bottom" : "right"} value={label} gutter={10}>
{item}
</Tooltip>
}
>
{item}
</Show>
</div>
)
}
const SessionSkeleton = (props: { count?: number }): JSX.Element => {
const items = Array.from({ length: props.count ?? 4 }, (_, index) => index)
return (
@@ -1943,16 +1980,7 @@ export default function Layout(props: ParentProps) {
<Collapsible.Content>
<nav class="flex flex-col gap-1 px-2">
<Button
as={A}
href={`${slug()}/session`}
variant="ghost"
size="large"
icon="edit"
class="hidden _flex w-full text-left justify-start text-text-base rounded-md px-3"
>
{language.t("command.session.new")}
</Button>
<NewSessionItem slug={slug()} mobile={props.mobile} />
<Show when={loading()}>
<SessionSkeleton />
</Show>
@@ -2159,6 +2187,7 @@ export default function Layout(props: ParentProps) {
style={{ "overflow-anchor": "none" }}
>
<nav class="flex flex-col gap-1 px-2">
<NewSessionItem slug={slug()} mobile={props.mobile} />
<Show when={loading()}>
<SessionSkeleton />
</Show>