mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-25 09:14:25 +00:00
## Summary Small updates to the UI to make it more visually distinct from the graph nodes and improving the login button ## Changes - **What**: - Improve theme support with dynamic colors - Standardize surface colors/borders - Add shadows to all floating UI elements - Change side toolbar to be docked by default - Decrease side toolbar width - Change login button to icon only - Update C button to be more distinctive ## Review Focus - Theme tokens, I am not sure what the overall plan for how these tokens will be supported for custom user palettes. I've implemented a method where default variables are chosen that look nice over all existing themes, but they can be overridden. ## Screenshots Dark theme updated color <img width="958" height="615" alt="image" src="https://github.com/user-attachments/assets/a2c540cf-6c05-4ad3-996b-8b7b80df8d2d" /> Themed & updated menu button (active vs hover vs default) <img width="58" height="338" alt="github" src="https://github.com/user-attachments/assets/90244ee2-d5ee-4b26-9d99-f4b8439aa372" /><img width="58" height="338" alt="nord" src="https://github.com/user-attachments/assets/053e8e7b-d639-4b72-92d2-ec7e2167aab8" /><img width="58" height="338" alt="arc" src="https://github.com/user-attachments/assets/3caeb07b-d41b-4d88-83b4-ef8d45d4e5a6" /><img width="58" height="338" alt="solarized" src="https://github.com/user-attachments/assets/6ebf6afb-ec3a-436b-90eb-bda40be1c79f" /><img width="58" height="338" alt="light" src="https://github.com/user-attachments/assets/fbb7f96a-b722-40c5-86fa-a0732e166972" /><img width="58" height="338" alt="dark" src="https://github.com/user-attachments/assets/5459208b-9256-4c55-9373-169e9cd9f09a" /> With labels <img width="58" height="394" alt="labels" src="https://github.com/user-attachments/assets/f97ee354-35cd-42b8-896f-57ac39644c1d" /> Logged out (only visible on desktop) <img width="323" height="48" alt="logged out" src="https://github.com/user-attachments/assets/75b71420-0c1b-446f-8cdd-43c68674d346" /> Logged in <img width="355" height="48" alt="logged in" src="https://github.com/user-attachments/assets/324fd133-a793-49dd-844a-f93dd5d1effb" /> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6381-UI-color-updates-tweaks-29b6d73d3650816384d2ef5617a776a0) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action <action@github.com> Co-authored-by: github-actions <github-actions@github.com>
86 lines
2.1 KiB
Vue
86 lines
2.1 KiB
Vue
<template>
|
|
<Button
|
|
v-if="!isLoggedIn"
|
|
outlined
|
|
rounded
|
|
severity="secondary"
|
|
class="size-8 border-black/50 bg-transparent text-black hover:bg-[var(--interface-panel-hover-surface)] dark-theme:border-white/50 dark-theme:text-white"
|
|
@click="handleSignIn()"
|
|
@mouseenter="showPopover"
|
|
@mouseleave="hidePopover"
|
|
>
|
|
<template #icon>
|
|
<i class="icon-[lucide--user] size-4" />
|
|
</template>
|
|
</Button>
|
|
<Popover
|
|
ref="popoverRef"
|
|
class="p-2"
|
|
@mouseout="hidePopover"
|
|
@mouseover="cancelHidePopover"
|
|
>
|
|
<div>
|
|
<div class="mb-1">{{ t('auth.loginButton.tooltipHelp') }}</div>
|
|
<a
|
|
href="https://docs.comfy.org/tutorials/api-nodes/overview#api-nodes"
|
|
target="_blank"
|
|
class="text-neutral-500 hover:text-primary"
|
|
>{{ t('auth.loginButton.tooltipLearnMore') }}</a
|
|
>
|
|
</div>
|
|
</Popover>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Button from 'primevue/button'
|
|
import Popover from 'primevue/popover'
|
|
import { ref } from 'vue'
|
|
|
|
import { useCurrentUser } from '@/composables/auth/useCurrentUser'
|
|
import { t } from '@/i18n'
|
|
|
|
const { isLoggedIn, handleSignIn } = useCurrentUser()
|
|
const popoverRef = ref<InstanceType<typeof Popover> | null>(null)
|
|
let hideTimeout: ReturnType<typeof setTimeout> | null = null
|
|
let showTimeout: ReturnType<typeof setTimeout> | null = null
|
|
|
|
const showPopover = (event: Event) => {
|
|
// Clear any existing timeouts
|
|
if (hideTimeout) {
|
|
clearTimeout(hideTimeout)
|
|
hideTimeout = null
|
|
}
|
|
if (showTimeout) {
|
|
clearTimeout(showTimeout)
|
|
showTimeout = null
|
|
}
|
|
|
|
showTimeout = setTimeout(() => {
|
|
if (popoverRef.value) {
|
|
popoverRef.value.show(event, event.target as HTMLElement)
|
|
}
|
|
}, 200)
|
|
}
|
|
|
|
const cancelHidePopover = () => {
|
|
if (hideTimeout) {
|
|
clearTimeout(hideTimeout)
|
|
hideTimeout = null
|
|
}
|
|
}
|
|
|
|
const hidePopover = () => {
|
|
// Clear show timeout if mouse leaves before popover appears
|
|
if (showTimeout) {
|
|
clearTimeout(showTimeout)
|
|
showTimeout = null
|
|
}
|
|
|
|
hideTimeout = setTimeout(() => {
|
|
if (popoverRef.value) {
|
|
popoverRef.value.hide()
|
|
}
|
|
}, 150) // Minimal delay to allow moving to popover
|
|
}
|
|
</script>
|