diff --git a/apps/code/snapshots.yml b/apps/code/snapshots.yml index e2fc980da7..751e81b16b 100644 --- a/apps/code/snapshots.yml +++ b/apps/code/snapshots.yml @@ -567,7 +567,7 @@ snapshots: loops-loopslistview--long-mixed-list--dark: hash: v1.k4693efd2.654250bc74fff46c496747eb13031e0e7a7ef264be5bb7be41451d82a497a515.vvrxXbbABkVY3hcHS3oThQ339JFgwIzB8E4n1usVWf0 loops-loopslistview--long-mixed-list--light: - hash: v1.k4693efd2.a8e53087efdaf58e351809775aaf410f53a781a97e10e973ee53fd0db2f94e73.7GcprWAYAgATLtNckNBd-44EyctqKNcb4FXiHA08QJs + hash: v1.k4693efd2.8dee426bab2a63843aefe9cf0765799ae9e3c5ece4adc522dc63faf3b362716b.K90qmg7hD8qD522iR-Y5lbr6ETEzRuYgQdYl0Z520do loops-loopslistview--with-builder-sessions--dark: hash: v1.k4693efd2.84cfc28bedc22a6728ba4ecf69274ab03537faeed5333775991716bf0b5f439e.fHsD0XKPnud-oDM4PLJ7edCbMnVcW6uVMdMHBYp3K08 loops-loopslistview--with-builder-sessions--light: diff --git a/packages/ui/src/features/canvas/components/ChannelsList.tsx b/packages/ui/src/features/canvas/components/ChannelsList.tsx index 9279e0e8e2..235760b9f8 100644 --- a/packages/ui/src/features/canvas/components/ChannelsList.tsx +++ b/packages/ui/src/features/canvas/components/ChannelsList.tsx @@ -63,6 +63,10 @@ import { import { useIsChannelUnread } from "@posthog/ui/features/canvas/hooks/useUnreadChannels"; import { copyChannelLink } from "@posthog/ui/features/canvas/utils/copyChannelLink"; import { useSidebarStore } from "@posthog/ui/features/sidebar/sidebarStore"; +import { + OverflowTickerText, + useOverflowTickerReveal, +} from "@posthog/ui/primitives/OverflowTickerText"; import { toast } from "@posthog/ui/primitives/toast"; import { track } from "@posthog/ui/shell/analytics"; import { Box, Flex } from "@radix-ui/themes"; @@ -310,6 +314,7 @@ function ChannelSection({ // The "+" dropdown (New task / New canvas). Keeps the hover actions pinned // while open. const [newMenuOpen, setNewMenuOpen] = useState(false); + const { reveal, hoverProps, focusProps } = useOverflowTickerReveal(); const createAndOpenCanvas = useCreateAndOpenDashboard(channel.id); // Shared by the "..." dropdown and the right-click context menu so both offer // the same star / edit / rename / delete actions. @@ -324,7 +329,7 @@ function ChannelSection({ } = useChannelActions(channel); return ( - + {/* A single, non-expandable row: the "# name" navigates straight to the channel home. Right-clicking opens the same actions as the "..." menu. */} @@ -346,6 +351,7 @@ function ChannelSection({ params: { channelId: channel.id }, }); }} + {...focusProps} className="w-full min-w-0 justify-start gap-2 data-selected:bg-fill-selected data-selected:text-gray-12" > - {channel.name} - + } /> diff --git a/packages/ui/src/features/canvas/components/WebsiteChannelLoops.tsx b/packages/ui/src/features/canvas/components/WebsiteChannelLoops.tsx index 1fab5d69d1..deebc84e73 100644 --- a/packages/ui/src/features/canvas/components/WebsiteChannelLoops.tsx +++ b/packages/ui/src/features/canvas/components/WebsiteChannelLoops.tsx @@ -157,7 +157,7 @@ export function WebsiteChannelLoops({ channelId }: { channelId: string }) { {builderSessions.map((session) => ( { - if (!el) return; - const update = () => { - el.style.pointerEvents = el.scrollWidth > el.clientWidth ? "" : "none"; - }; - update(); - const observer = new ResizeObserver(update); - observer.observe(el); - return () => observer.disconnect(); - }, []); - - const span = ( - - {label} - - ); - - if (!canTooltip) return span; - - return ( - - - - - {label} - - - - ); -} - export function SidebarItem({ depth, icon, @@ -92,6 +48,8 @@ export function SidebarItem({ endContent, disabled, }: SidebarItemProps) { + const { reveal, hoverProps, focusProps } = useOverflowTickerReveal(); + return (