diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-11-13 14:25:56 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-13 14:25:56 +0000 |
commit | 017b7647b18cc67201c5b4e9c5da36a53257daa9 (patch) | |
tree | 6045c8e7a6747f872b3a228c7c2b5dbf65d524f1 /src/view/com/post-thread/PostThreadItem.tsx | |
parent | aa55798e5582518f80e8d71dad12688ebd8e6a2b (diff) | |
download | voidsky-017b7647b18cc67201c5b4e9c5da36a53257daa9.tar.zst |
Add subtle web hover to treeview replies (#6142)
* add subtle web hover to treeview replies * don't highlight indentation * adjust position * clean up some styles
Diffstat (limited to 'src/view/com/post-thread/PostThreadItem.tsx')
-rw-r--r-- | src/view/com/post-thread/PostThreadItem.tsx | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index 9edca4335..e8fdc47f7 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -38,6 +38,7 @@ import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useTheme} from '#/alf' import {colors} from '#/components/Admonition' import {Button} from '#/components/Button' +import {useInteractionState} from '#/components/hooks/useInteractionState' import {CalendarClock_Stroke2_Corner0_Rounded as CalendarClockIcon} from '#/components/icons/CalendarClock' import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRightIcon} from '#/components/icons/Chevron' import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Trash' @@ -656,26 +657,24 @@ function PostOuterWrapper({ hideTopBorder?: boolean }>) { const t = useTheme() - const [hover, setHover] = React.useState(false) + const { + state: hover, + onIn: onHoverIn, + onOut: onHoverOut, + } = useInteractionState() if (treeView && depth > 0) { return ( <View style={[ a.flex_row, a.px_sm, + a.flex_row, t.atoms.border_contrast_low, styles.cursor, - { - flexDirection: 'row', - borderTopWidth: depth === 1 ? a.border_t.borderTopWidth : 0, - }, + depth === 1 && a.border_t, ]} - onPointerEnter={() => { - setHover(true) - }} - onPointerLeave={() => { - setHover(false) - }}> + onPointerEnter={onHoverIn} + onPointerLeave={onHoverOut}> {Array.from(Array(depth - 1)).map((_, n: number) => ( <View key={`${post.uri}-padding-${n}`} @@ -689,18 +688,23 @@ function PostOuterWrapper({ ]} /> ))} - <View style={{flex: 1}}>{children}</View> + <View style={a.flex_1}> + <SubtleWebHover + hover={hover} + style={{ + left: (depth === 1 ? 0 : 2) - a.pl_sm.paddingLeft, + right: -a.pr_sm.paddingRight, + }} + /> + {children} + </View> </View> ) } return ( <View - onPointerEnter={() => { - setHover(true) - }} - onPointerLeave={() => { - setHover(false) - }} + onPointerEnter={onHoverIn} + onPointerLeave={onHoverOut} style={[ a.border_t, a.px_sm, |