Skip to content

Commit 2a62f7a

Browse files
JonasBaandrewshie-sentry
authored andcommitted
tooltip: cleanup component body (#89835)
Move tooltip under components/core and make it chonky. There is a small detail here under the arrow that is missing, but this seems to be using some sort of hand generated SVG, and it doesn't seem trivial to update. ![CleanShot 2025-04-16 at 21 53 08@2x](https://github.com/user-attachments/assets/bbc320f1-ebc2-4dab-ad20-c63cdc2ad356) ![CleanShot 2025-04-16 at 21 53 16@2x](https://github.com/user-attachments/assets/9b860a6f-2f20-4fd6-b3c8-aaf540f554ac)
1 parent 1930b38 commit 2a62f7a

File tree

358 files changed

+525
-445
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

358 files changed

+525
-445
lines changed

static/app/components/acl/demoModeDisabled.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Tooltip} from 'sentry/components/tooltip';
1+
import {Tooltip} from 'sentry/components/core/tooltip';
22
import {t} from 'sentry/locale';
33
import {isDemoModeActive} from 'sentry/utils/demoMode';
44

static/app/components/actions/resolve.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import {openModal} from 'sentry/actionCreators/modal';
66
import {openConfirmModal} from 'sentry/components/confirm';
77
import {Button, LinkButton} from 'sentry/components/core/button';
88
import {ButtonBar} from 'sentry/components/core/button/buttonBar';
9+
import {Tooltip} from 'sentry/components/core/tooltip';
910
import CustomCommitsResolutionModal from 'sentry/components/customCommitsResolutionModal';
1011
import CustomResolutionModal from 'sentry/components/customResolutionModal';
1112
import type {MenuItemProps} from 'sentry/components/dropdownMenu';
1213
import {DropdownMenu} from 'sentry/components/dropdownMenu';
13-
import {Tooltip} from 'sentry/components/tooltip';
1414
import {IconChevron, IconReleases} from 'sentry/icons';
1515
import {t} from 'sentry/locale';
1616
import {space} from 'sentry/styles/space';

static/app/components/alerts/onDemandMetricAlert.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import styled from '@emotion/styled';
33

44
import {Alert} from 'sentry/components/core/alert';
55
import {Button} from 'sentry/components/core/button';
6-
import {Tooltip} from 'sentry/components/tooltip';
6+
import {Tooltip} from 'sentry/components/core/tooltip';
77
import {IconClose, IconWarning} from 'sentry/icons';
88
import {t} from 'sentry/locale';
99
import type {Color} from 'sentry/utils/theme';

static/app/components/assigneeBadge.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import styled from '@emotion/styled';
44

55
import {ActorAvatar} from 'sentry/components/core/avatar/actorAvatar';
66
import {Tag} from 'sentry/components/core/badge/tag';
7+
import {Tooltip} from 'sentry/components/core/tooltip';
78
import ExternalLink from 'sentry/components/links/externalLink';
89
import LoadingIndicator from 'sentry/components/loadingIndicator';
910
import Placeholder from 'sentry/components/placeholder';
10-
import {Tooltip} from 'sentry/components/tooltip';
1111
import {IconChevron} from 'sentry/icons';
1212
import {t, tct} from 'sentry/locale';
1313
import {space} from 'sentry/styles/space';

static/app/components/assigneeSelectorDropdown.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import {
1010
type SelectOption,
1111
type SelectOptionOrSection,
1212
} from 'sentry/components/core/compactSelect';
13+
import {Tooltip} from 'sentry/components/core/tooltip';
1314
import DropdownButton from 'sentry/components/dropdownButton';
1415
import {TeamBadge} from 'sentry/components/idBadge/teamBadge';
1516
import UserBadge from 'sentry/components/idBadge/userBadge';
1617
import ExternalLink from 'sentry/components/links/externalLink';
1718
import LoadingIndicator from 'sentry/components/loadingIndicator';
1819
import SuggestedAvatarStack from 'sentry/components/suggestedAvatarStack';
19-
import {Tooltip} from 'sentry/components/tooltip';
2020
import {IconAdd, IconUser} from 'sentry/icons';
2121
import {t, tct, tn} from 'sentry/locale';
2222
import MemberListStore from 'sentry/stores/memberListStore';

static/app/components/badge/groupPriority.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import {usePrompt} from 'sentry/actionCreators/prompts';
88
import {IconCellSignal} from 'sentry/components/badge/iconCellSignal';
99
import {Tag} from 'sentry/components/core/badge/tag';
1010
import {Button, LinkButton} from 'sentry/components/core/button';
11+
import {Tooltip} from 'sentry/components/core/tooltip';
1112
import type {MenuItemProps} from 'sentry/components/dropdownMenu';
1213
import {DropdownMenu} from 'sentry/components/dropdownMenu';
1314
import {DropdownMenuFooter} from 'sentry/components/dropdownMenu/footer';
1415
import HookOrDefault from 'sentry/components/hookOrDefault';
1516
import Placeholder from 'sentry/components/placeholder';
16-
import {Tooltip} from 'sentry/components/tooltip';
1717
import {IconChevron, IconClose} from 'sentry/icons';
1818
import {t, tct} from 'sentry/locale';
1919
import {space} from 'sentry/styles/space';

static/app/components/charts/baseChart.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,11 @@ import {isChonkTheme} from 'sentry/utils/theme/withChonk';
5151

5252
import Grid from './components/grid';
5353
import Legend from './components/legend';
54-
import type {TooltipSubLabel} from './components/tooltip';
55-
import {CHART_TOOLTIP_VIEWPORT_OFFSET, computeChartTooltip} from './components/tooltip';
54+
import {
55+
CHART_TOOLTIP_VIEWPORT_OFFSET,
56+
computeChartTooltip,
57+
type TooltipSubLabel,
58+
} from './components/tooltip';
5659
import XAxis from './components/xAxis';
5760
import YAxis from './components/yAxis';
5861
import LineSeries from './series/lineSeries';

static/app/components/charts/breakdownBars.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Fragment} from 'react';
22
import styled from '@emotion/styled';
33

4-
import {Tooltip} from 'sentry/components/tooltip';
4+
import {Tooltip} from 'sentry/components/core/tooltip';
55
import {space} from 'sentry/styles/space';
66
import {formatPercentage} from 'sentry/utils/number/formatPercentage';
77

static/app/components/charts/simpleTableChart.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import {css, useTheme} from '@emotion/react';
33
import styled from '@emotion/styled';
44
import type {Location} from 'history';
55

6+
import {Tooltip} from 'sentry/components/core/tooltip';
67
import type {PanelTableProps} from 'sentry/components/panels/panelTable';
78
import {PanelTable, PanelTableHeader} from 'sentry/components/panels/panelTable';
8-
import {Tooltip} from 'sentry/components/tooltip';
99
import Truncate from 'sentry/components/truncate';
1010
import {space} from 'sentry/styles/space';
1111
import type {Organization} from 'sentry/types/organization';

static/app/components/checkInTimeline/checkInTimeline.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {css} from '@emotion/react';
22
import styled from '@emotion/styled';
33

4+
import {Tooltip} from 'sentry/components/core/tooltip';
45
import {DateTime} from 'sentry/components/dateTime';
5-
import {Tooltip} from 'sentry/components/tooltip';
66
import {tn} from 'sentry/locale';
77

88
import {getAggregateStatus} from './utils/getAggregateStatus';

static/app/components/checkInTimeline/checkInTooltip.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import {Fragment} from 'react';
22
import styled from '@emotion/styled';
33

4+
import type {TooltipProps} from 'sentry/components/core/tooltip';
5+
import {Tooltip} from 'sentry/components/core/tooltip';
46
import {DateTime} from 'sentry/components/dateTime';
57
import Text from 'sentry/components/text';
6-
import type {TooltipProps} from 'sentry/components/tooltip';
7-
import {Tooltip} from 'sentry/components/tooltip';
88
import {t} from 'sentry/locale';
99
import {space} from 'sentry/styles/space';
1010
import type {ColorOrAlias} from 'sentry/utils/theme';

static/app/components/commitRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import {openInviteMembersModal} from 'sentry/actionCreators/modal';
66
import CommitLink from 'sentry/components/commitLink';
77
import {UserAvatar} from 'sentry/components/core/avatar/userAvatar';
88
import {LinkButton} from 'sentry/components/core/button';
9+
import {Tooltip} from 'sentry/components/core/tooltip';
910
import {Hovercard} from 'sentry/components/hovercard';
1011
import ExternalLink from 'sentry/components/links/externalLink';
1112
import Link from 'sentry/components/links/link';
1213
import PanelItem from 'sentry/components/panels/panelItem';
1314
import TextOverflow from 'sentry/components/textOverflow';
1415
import TimeSince from 'sentry/components/timeSince';
15-
import {Tooltip} from 'sentry/components/tooltip';
1616
import Version from 'sentry/components/version';
1717
import VersionHoverCard from 'sentry/components/versionHoverCard';
1818
import {IconQuestion, IconWarning} from 'sentry/icons';

static/app/components/core/avatar/avatarList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import styled from '@emotion/styled';
33

44
import {TeamAvatar} from 'sentry/components/core/avatar/teamAvatar';
55
import {UserAvatar, type UserAvatarProps} from 'sentry/components/core/avatar/userAvatar';
6-
import {Tooltip} from 'sentry/components/tooltip';
6+
import {Tooltip} from 'sentry/components/core/tooltip';
77
import {space} from 'sentry/styles/space';
88
import type {Actor} from 'sentry/types/core';
99
import type {Team} from 'sentry/types/organization';

static/app/components/core/avatar/baseAvatar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import * as qs from 'query-string';
66

77
import {Gravatar} from 'sentry/components/core/avatar/gravatar';
88
import {LetterAvatar} from 'sentry/components/core/avatar/letterAvatar';
9-
import {Tooltip, type TooltipProps} from 'sentry/components/tooltip';
9+
import {Tooltip, type TooltipProps} from 'sentry/components/core/tooltip';
1010
import type {Avatar as AvatarType} from 'sentry/types/core';
1111

1212
import {

static/app/components/core/avatar/projectAvatar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type {BaseAvatarProps} from 'sentry/components/core/avatar/baseAvatar';
2+
import {Tooltip} from 'sentry/components/core/tooltip';
23
import {PlatformList} from 'sentry/components/platformList';
3-
import {Tooltip} from 'sentry/components/tooltip';
44
import type {AvatarProject} from 'sentry/types/project';
55

66
export interface ProjectAvatarProps extends BaseAvatarProps {

static/app/components/core/badge/deployBadge.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import styled from '@emotion/styled';
22

33
import {Tag} from 'sentry/components/core/badge/tag';
4+
import {Tooltip} from 'sentry/components/core/tooltip';
45
import Link from 'sentry/components/links/link';
5-
import {Tooltip} from 'sentry/components/tooltip';
66
import {t} from 'sentry/locale';
77
import type {Deploy} from 'sentry/types/release';
88
import {MutableSearch} from 'sentry/utils/tokenizeSearch';

static/app/components/core/badge/featureBadge.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import styled from '@emotion/styled';
33

44
import CircleIndicator from 'sentry/components/circleIndicator';
55
import {Badge, type BadgeProps} from 'sentry/components/core/badge';
6-
import type {TooltipProps} from 'sentry/components/tooltip';
7-
import {Tooltip} from 'sentry/components/tooltip';
6+
import {Tooltip, type TooltipProps} from 'sentry/components/core/tooltip';
87
import {t} from 'sentry/locale';
98
import {space} from 'sentry/styles/space';
109
import {chonkStyled} from 'sentry/utils/theme/theme.chonk';

static/app/components/core/button/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import styled from '@emotion/styled';
66
import {mergeRefs} from '@react-aria/utils';
77
import type {LocationDescriptor} from 'history';
88

9+
import {Tooltip, type TooltipProps} from 'sentry/components/core/tooltip';
910
import InteractionStateLayer from 'sentry/components/interactionStateLayer';
1011
import Link from 'sentry/components/links/link';
11-
import {Tooltip, type TooltipProps} from 'sentry/components/tooltip';
1212
import type {SVGIconProps} from 'sentry/icons/svgIcon';
1313
import {IconDefaultsProvider} from 'sentry/icons/useIconDefaults';
1414
import HookStore from 'sentry/stores/hookStore';

static/app/components/core/input/numberDragInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {useCallback, useRef} from 'react';
22
import styled from '@emotion/styled';
33

44
import {InputGroup, type InputProps} from 'sentry/components/core/input/inputGroup';
5-
import {Tooltip} from 'sentry/components/tooltip';
5+
import {Tooltip} from 'sentry/components/core/tooltip';
66
import {IconArrow} from 'sentry/icons';
77
import {tct} from 'sentry/locale';
88
import {space} from 'sentry/styles/space';

static/app/components/core/menuListItem/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import {
1515
ChonkLeadingItems,
1616
type Priority,
1717
} from 'sentry/components/core/menuListItem/index.chonk';
18+
import type {TooltipProps} from 'sentry/components/core/tooltip';
19+
import {Tooltip} from 'sentry/components/core/tooltip';
1820
import InteractionStateLayer from 'sentry/components/interactionStateLayer';
1921
import {Overlay, PositionWrapper} from 'sentry/components/overlay';
20-
import type {TooltipProps} from 'sentry/components/tooltip';
21-
import {Tooltip} from 'sentry/components/tooltip';
2222
import {space} from 'sentry/styles/space';
2323
import type {FormSize} from 'sentry/utils/theme';
2424
import {withChonk} from 'sentry/utils/theme/withChonk';

static/app/components/core/segmentedControl/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import type {Node} from '@react-types/shared';
1111
import type {CollectionChildren} from '@react-types/shared/src/collections';
1212
import {LayoutGroup, motion} from 'framer-motion';
1313

14+
import type {TooltipProps} from 'sentry/components/core/tooltip';
15+
import {Tooltip} from 'sentry/components/core/tooltip';
1416
import InteractionStateLayer from 'sentry/components/interactionStateLayer';
15-
import type {TooltipProps} from 'sentry/components/tooltip';
16-
import {Tooltip} from 'sentry/components/tooltip';
1717
import {space} from 'sentry/styles/space';
1818
import {defined} from 'sentry/utils';
1919
import type {FormSize} from 'sentry/utils/theme';

static/app/components/tooltip.spec.tsx renamed to static/app/components/core/tooltip/index.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
22

3-
import {Tooltip} from 'sentry/components/tooltip';
3+
import {Tooltip} from 'sentry/components/core/tooltip';
44

55
describe('Tooltip', function () {
66
function mockOverflow(width: number, containerWidth: number) {
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import {Fragment} from 'react';
2+
3+
import {Button} from 'sentry/components/core/button';
4+
import {Tooltip} from 'sentry/components/core/tooltip';
5+
import JSXProperty from 'sentry/components/stories/jsxProperty';
6+
import SideBySide from 'sentry/components/stories/sideBySide';
7+
import storyBook from 'sentry/stories/storyBook';
8+
9+
// eslint-disable-next-line import/no-webpack-loader-syntax
10+
import types from '!!type-loader!sentry/components/core/tooltip';
11+
12+
export default storyBook('Tooltip', (story, APIReference) => {
13+
APIReference(types.Tooltip);
14+
15+
story('Default', () => {
16+
return (
17+
<Fragment>
18+
<p>
19+
Tooltip is a component that displays a tooltip when hovering over an element
20+
(duh).
21+
</p>
22+
<p>
23+
By default, a tooltip renders a wrapper around the children element and renders
24+
the tooltip content in a portal. The wrapper can be skipped by passing the{' '}
25+
<JSXProperty name="skipWrapper" value="true" /> prop.
26+
</p>
27+
<SideBySide>
28+
<Tooltip title="Tooltip">
29+
<Button>Hover me</Button>
30+
</Tooltip>
31+
</SideBySide>
32+
</Fragment>
33+
);
34+
});
35+
36+
story('Hoverable Tooltip', () => {
37+
return (
38+
<Fragment>
39+
<p>
40+
A tooltip is not hoverable by default and will hide before the pointer enters
41+
it's container - to make it hoverable, pass the{' '}
42+
<JSXProperty name="isHoverable" value="true" /> prop.
43+
</p>
44+
<SideBySide>
45+
<Tooltip title="This can be copied" isHoverable skipWrapper>
46+
<Button>Hoverable Tooltip</Button>
47+
</Tooltip>
48+
<Tooltip title="This cannot be copied" skipWrapper>
49+
<Button>Non Hoverable Tooltip</Button>
50+
</Tooltip>
51+
</SideBySide>
52+
</Fragment>
53+
);
54+
});
55+
});

0 commit comments

Comments
 (0)