Skip to content

Commit b7f2014

Browse files
authored
refactor(uikit/biz): replace HoverCard with Tooltip in CodeBlock (#615)
* refactor(uikit/biz): replace HoverCard with Tooltip in CodeBlock component for improved accessibility and UI consistency * chore: create changeset
1 parent 7fab959 commit b7f2014

File tree

2 files changed

+47
-51
lines changed

2 files changed

+47
-51
lines changed

.changeset/honest-mangos-obey.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@tidbcloud/uikit": patch
3+
---
4+
5+
refactor(uikit/biz): replace HoverCard with Tooltip in CodeBlock

packages/uikit/src/biz/CodeBlock/index.tsx

Lines changed: 42 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import React, { useMemo, useState } from 'react'
22

33
import { useLocalStorage } from '../../hooks/index.js'
4-
import { IconCheck, IconChevronVerticalExpand, IconChevronVerticalShrink, IconCopy01 } from '../../icons/index.js'
5-
import { ActionIcon, Box, BoxProps, Code, CodeProps, CopyButton, Group, HoverCard } from '../../primitive/index.js'
4+
import { IconCheck, IconChevronVerticalExpand, IconChevronVerticalShrink, IconCopy03 } from '../../icons/index.js'
5+
import { ActionIcon, Box, BoxProps, Code, CodeProps, CopyButton, Group, Tooltip } from '../../primitive/index.js'
66
import { Prism, PrismProps } from '../../primitive/Prism/index.js'
77
import { mergeStylesList, mergeSxList } from '../../utils/index.js'
88

@@ -114,43 +114,37 @@ export const CodeBlock = ({
114114

115115
<Group gap={4} sx={(theme) => ({ position: 'absolute', top: 16, right: 16, color: theme.colors.carbon[8] })}>
116116
{foldIconVisible && (
117-
<HoverCard withArrow position="top" shadow="xs">
118-
<HoverCard.Target>
119-
<ActionIcon
120-
size="sm"
121-
variant="subtle"
122-
onClick={() => {
123-
const v = !folded
124-
setFolded(v)
125-
onFoldIconClick?.(v)
126-
}}
127-
>
128-
{folded ? <IconChevronVerticalExpand size={14} /> : <IconChevronVerticalShrink size={14} />}
129-
</ActionIcon>
130-
</HoverCard.Target>
131-
<HoverCard.Dropdown p="xs">{folded ? 'Expand' : 'Collapse'}</HoverCard.Dropdown>
132-
</HoverCard>
117+
<Tooltip withArrow label={folded ? 'Expand' : 'Collapse'}>
118+
<ActionIcon
119+
size="sm"
120+
variant="subtle"
121+
onClick={() => {
122+
const v = !folded
123+
setFolded(v)
124+
onFoldIconClick?.(v)
125+
}}
126+
>
127+
{folded ? <IconChevronVerticalExpand size={14} /> : <IconChevronVerticalShrink size={14} />}
128+
</ActionIcon>
129+
</Tooltip>
133130
)}
134131

135132
{withCopyButton && (
136133
<CopyButton value={copyContent ?? children} timeout={2000}>
137134
{({ copied, copy }) => (
138-
<HoverCard withArrow position="top" shadow="xs">
139-
<HoverCard.Target>
140-
<ActionIcon
141-
aria-label="Copy"
142-
size="sm"
143-
variant="subtle"
144-
onClick={() => {
145-
copy()
146-
onCopyClick?.()
147-
}}
148-
>
149-
{copied ? <IconCheck size={14} /> : <IconCopy01 size={14} />}
150-
</ActionIcon>
151-
</HoverCard.Target>
152-
<HoverCard.Dropdown p="xs">{copied ? 'Copied' : 'Copy'}</HoverCard.Dropdown>
153-
</HoverCard>
135+
<Tooltip withArrow label={copied ? 'Copied' : 'Copy'}>
136+
<ActionIcon
137+
aria-label="Copy"
138+
size="sm"
139+
variant="subtle"
140+
onClick={() => {
141+
copy()
142+
onCopyClick?.()
143+
}}
144+
>
145+
{copied ? <IconCheck size={14} /> : <IconCopy03 size={14} />}
146+
</ActionIcon>
147+
</Tooltip>
154148
)}
155149
</CopyButton>
156150
)}
@@ -185,23 +179,20 @@ export const CopyText = ({ children, value, ...rest }: React.PropsWithChildren<C
185179
{children}
186180
<CopyButton value={value} timeout={2000}>
187181
{({ copied, copy }) => (
188-
<HoverCard withArrow position="top" shadow="xs">
189-
<HoverCard.Target>
190-
<ActionIcon
191-
aria-label="Copy"
192-
variant="subtle"
193-
size="sm"
194-
ml={8}
195-
display="inline-block"
196-
onClick={() => {
197-
copy()
198-
}}
199-
>
200-
{copied ? <IconCheck size={14} /> : <IconCopy01 size={14} />}
201-
</ActionIcon>
202-
</HoverCard.Target>
203-
<HoverCard.Dropdown p="xs">{copied ? 'Copied' : 'Copy'}</HoverCard.Dropdown>
204-
</HoverCard>
182+
<Tooltip withArrow label={copied ? 'Copied' : 'Copy'}>
183+
<ActionIcon
184+
aria-label="Copy"
185+
variant="subtle"
186+
size="sm"
187+
ml={8}
188+
display="inline-block"
189+
onClick={() => {
190+
copy()
191+
}}
192+
>
193+
{copied ? <IconCheck size={14} /> : <IconCopy03 size={14} />}
194+
</ActionIcon>
195+
</Tooltip>
205196
)}
206197
</CopyButton>
207198
</Code>

0 commit comments

Comments
 (0)