- automations: minimal back-only header on mobile for the workflow builder and detail tabs (extracted AutomationMobileBackHeader); open live automations on the metrics tab (drafts still open on workflow); full-width status filter + refresh on the invocations toolbar; use IconMenu2 for the mobile sidebar trigger - dialogs: stack DialogFooter primary-on-top / cancel-at-bottom on mobile - workspaces: bring the workspace picker cards into the neo-brutalist design - posts: left-align the label filter content; wrap the post-view date/status header so a long status badge no longer squeezes the date; add hamburger clearance to the editor's mobile tab bar
29 lines
835 B
Vue
29 lines
835 B
Vue
<script setup lang="ts">
|
|
import type { HTMLAttributes } from "vue"
|
|
import { IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftExpand, IconMenu2 } from "@tabler/icons-vue"
|
|
import { cn } from "@/lib/utils"
|
|
import { Button } from '@/components/ui/button'
|
|
import { useSidebar } from "./utils"
|
|
|
|
const props = defineProps<{
|
|
class?: HTMLAttributes["class"]
|
|
}>()
|
|
|
|
const { isMobile, state, toggleSidebar } = useSidebar()
|
|
</script>
|
|
|
|
<template>
|
|
<Button
|
|
data-sidebar="trigger"
|
|
data-slot="sidebar-trigger"
|
|
variant="ghost"
|
|
size="icon"
|
|
:class="cn('h-9 w-9', props.class)"
|
|
@click="toggleSidebar"
|
|
>
|
|
<IconMenu2 v-if="isMobile" />
|
|
<IconLayoutSidebarLeftExpand v-else-if="state === 'collapsed'" />
|
|
<IconLayoutSidebarLeftCollapse v-else />
|
|
<span class="sr-only">Toggle Sidebar</span>
|
|
</Button>
|
|
</template>
|