Skip to content

Commit 6031f51

Browse files
committed
chore: Upgrade ariakit to v0.4.7
1 parent 371c154 commit 6031f51

File tree

11 files changed

+2814
-1306
lines changed

11 files changed

+2814
-1306
lines changed

package-lock.json

+2,750-1,237
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/ui/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
},
7575
"dependencies": {
7676
"@bundle-stats/utils": "^4.13.3",
77-
"ariakit": "2.0.0-next.44",
77+
"@ariakit/react": "0.4.7",
7878
"d3": "^7.8.5",
7979
"modern-css-reset": "1.4.0",
8080
"react-use": "^17.5.0",

packages/ui/src/components/entry-info/entry-info.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import cx from 'classnames';
3-
import { Portal } from 'ariakit/portal';
3+
import { Portal } from '@ariakit/react';
44
import { METRIC_TYPE_CONFIGS, MetricRunInfo, getMetricRunInfo } from '@bundle-stats/utils';
55

66
import { Box } from '../../layout/box';

packages/ui/src/components/metric-run-info/metric-run-info.module.css

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
}
55

66
.readMoreLink {
7+
display: inline-block;
78
cursor: pointer;
89
color: var(--color-primary);
910
text-decoration: underline;

packages/ui/src/components/metric-run-info/metric-run-info.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { type MouseEvent, useCallback, useMemo, ElementType } from 'react';
22
import { getGlobalMetricType, getMetricRunInfo } from '@bundle-stats/utils';
3-
import { Focusable } from 'ariakit/focusable';
3+
import { Focusable } from '@ariakit/react';
44

55
import { Stack } from '../../layout/stack';
66
import { FlexStack } from '../../layout/flex-stack';
@@ -37,7 +37,7 @@ const MetricHoverCard = ({ title, description, url }: MetricInfoProps) => {
3737
<p className={css.metricHoverCardDescription}>{description}</p>
3838
{url && (
3939
<div>
40-
<Focusable as="span" onClick={onClick} className={css.readMoreLink}>
40+
<Focusable onClick={onClick} className={css.readMoreLink}>
4141
<FlexStack alignItems="center" space="xxxsmall">
4242
<span>Learn more</span>
4343
<Icon glyph={Icon.ICONS.EXTERNAL_LINK} size="small" />

packages/ui/src/components/metrics-treemap/metrics-treemap.tsx

+9-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import React, {
1212
import { useHoverDirty, useMeasure } from 'react-use';
1313
import cx from 'classnames';
1414
import { HierarchyRectangularNode, hierarchy, treemap, treemapSquarify } from 'd3';
15-
import { Tooltip, TooltipArrow, TooltipAnchor } from 'ariakit/tooltip';
15+
import { Tooltip, TooltipArrow, TooltipAnchor } from '@ariakit/react';
1616
import {
1717
type ReportMetricRow,
1818
type MetricRunInfo,
@@ -128,15 +128,15 @@ const TileContent = forwardRef((props: TileContentProps, ref: Ref<HTMLDivElement
128128
const TileContentWithTooltip = (props: TileContentProps & { parentRef: RefObject<Element> }) => {
129129
const { label, sizeDisplay, item, runInfo, parentRef } = props;
130130

131-
const tooltipState = useTooltipStateWithMouseFollow({ parentRef });
131+
const { tooltip, getAnchorRect } = useTooltipStateWithMouseFollow({ parentRef });
132132

133133
return (
134134
<>
135-
<TooltipAnchor state={tooltipState} className={css.tileContentTooltipAnchor}>
135+
<TooltipAnchor store={tooltip} className={css.tileContentTooltipAnchor}>
136136
<TileContent label={label} sizeDisplay={sizeDisplay} item={item} runInfo={runInfo} />
137137
</TooltipAnchor>
138-
<Tooltip state={tooltipState} className={css.tooltip}>
139-
<TooltipArrow state={tooltipState} size={16} className={css.tileTooltipArrow} />
138+
<Tooltip store={tooltip} gutter={16} getAnchorRect={getAnchorRect} className={css.tooltip}>
139+
<TooltipArrow store={tooltip} size={16} className={css.tileTooltipArrow} />
140140
<TileTooltipContent item={item} />
141141
</Tooltip>
142142
</>
@@ -258,15 +258,15 @@ type TileGroupTitleContentWithTooltipProps = {
258258
const TileGroupTitleContentWithTooltip = (props: TileGroupTitleContentWithTooltipProps) => {
259259
const { parentRef, tooltipContent, ...restProps } = props;
260260

261-
const tooltipState = useTooltipStateWithMouseFollow({ parentRef });
261+
const { tooltip, getAnchorRect } = useTooltipStateWithMouseFollow({ parentRef });
262262

263263
return (
264264
<>
265-
<TooltipAnchor state={tooltipState} className={css.tileContentTooltipAnchor}>
265+
<TooltipAnchor store={tooltip} className={css.tileContentTooltipAnchor}>
266266
<TileGroupTitleContent {...restProps} />
267267
</TooltipAnchor>
268-
<Tooltip state={tooltipState} className={css.tooltip}>
269-
<TooltipArrow state={tooltipState} size={16} className={css.tileTooltipArrow} />
268+
<Tooltip store={tooltip} gutter={16} getAnchorRect={getAnchorRect} className={css.tooltip}>
269+
<TooltipArrow store={tooltip} size={16} className={css.tileTooltipArrow} />
270270
<TileGroupTitleTooltipContent {...tooltipContent} />
271271
</Tooltip>
272272
</>

packages/ui/src/components/metrics-treemap/metrics-treemap.utils.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type RefObject, useCallback } from 'react';
22
import { useDebounce, useMouseHovered } from 'react-use';
3-
import { useTooltipState } from 'ariakit/tooltip';
3+
import { useTooltipStore } from '@ariakit/react';
44
import {
55
DeltaType,
66
type MetricRunInfoBaseline,
@@ -231,10 +231,6 @@ interface UseTooltipStateWithMouseFollowOptions {
231231
* React ref to parent div
232232
*/
233233
parentRef: RefObject<Element>;
234-
/**
235-
* Tooltip gutter
236-
*/
237-
gutter?: number;
238234
/**
239235
* Tooltip timeout
240236
*/
@@ -245,7 +241,7 @@ interface UseTooltipStateWithMouseFollowOptions {
245241
* Ariakit tooltip state hook with mouse follow functionality
246242
*/
247243
export function useTooltipStateWithMouseFollow(options: UseTooltipStateWithMouseFollowOptions) {
248-
const { parentRef, gutter = 16, timeout = 240 } = options;
244+
const { parentRef, timeout = 240 } = options;
249245

250246
const pointer = useMouseHovered(parentRef, { whenHovered: true });
251247

@@ -266,10 +262,10 @@ export function useTooltipStateWithMouseFollow(options: UseTooltipStateWithMouse
266262
return newRect;
267263
}, [pointer.docX, pointer.docY]);
268264

269-
const tooltipState = useTooltipState({ gutter, getAnchorRect, timeout });
265+
const tooltip = useTooltipStore({ placement: 'top', timeout });
270266

271267
// Update tooltip position when pointer values change
272-
useDebounce(tooltipState.render, 10, [pointer.docX, pointer.docY]);
268+
useDebounce(tooltip.render, 10, [pointer.docX, pointer.docY]);
273269

274-
return tooltipState;
270+
return { tooltip, getAnchorRect };
275271
}

packages/ui/src/ui/button/button.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22

33
import cx from 'classnames';
4-
import { Button as ButtonBaseComponent } from 'ariakit/button';
4+
import { Button as ButtonBaseComponent } from '@ariakit/react/button';
55

66
import { Icon as BaseIcon } from '../icon';
77
import css from './button.module.css';

packages/ui/src/ui/dropdown/dropdown.tsx

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import cx from 'classnames';
3-
import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu';
3+
import { Menu, MenuButton, MenuItem, useMenuStore } from '@ariakit/react';
44

55
import { Button, BUTTON_SIZE } from '../button';
66
import css from './dropdown.module.css';
@@ -37,25 +37,28 @@ export const Dropdown = (props: DropdownProps & React.ComponentProps<'div'>) =>
3737
} = props;
3838

3939
const dropdownAriaLabel = ariaLabel || (typeof label === 'string' ? label : '');
40-
const menuState = useMenuState();
40+
const menu = useMenuStore();
4141

4242
return (
4343
<>
4444
<MenuButton
45-
as={Button}
46-
outline
47-
size={BUTTON_SIZE.SMALL}
48-
glyph={glyph}
49-
disabled={disabled}
50-
state={menuState}
51-
tabIndex={null}
45+
store={menu}
5246
className={cx(css.button, className)}
47+
render={(menuButtonProps) => (
48+
<Button
49+
outline
50+
size={BUTTON_SIZE.SMALL}
51+
glyph={glyph}
52+
disabled={disabled}
53+
{...menuButtonProps}
54+
/>
55+
)}
5356
>
5457
{label}
5558
</MenuButton>
5659
<Menu
5760
portal
58-
state={menuState}
61+
store={menu}
5962
aria-label={dropdownAriaLabel}
6063
className={cx(css.dropdown, dropdownClassName)}
6164
>

packages/ui/src/ui/hover-card/hover-card.tsx

+16-22
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import React, { useMemo } from 'react';
22
import cx from 'classnames';
33
import {
4-
Hovercard,
5-
HovercardAnchor,
6-
HovercardArrow,
7-
useHovercard,
8-
useHovercardState,
9-
} from 'ariakit/hovercard';
4+
Hovercard as BaseHoverCard,
5+
HovercardAnchor as BaseHoverCardAnchor,
6+
HovercardArrow as BaseHoverCardArrow,
7+
useHovercardStore,
8+
} from '@ariakit/react';
109

1110
import css from './hover-card.module.css';
1211

@@ -31,8 +30,8 @@ export const HoverCard = (props: HoverCardProps) => {
3130
children,
3231
} = props;
3332

34-
const state = useHovercardState({ gutter: 8, timeout: 300, placement: 'top' });
35-
const hovercardProps = useHovercard({ state, portal: true });
33+
const hovercard = useHovercardStore({ timeout: 800, placement: 'top' });
34+
const state = hovercard.getState();
3635

3736
// Fallback to span if no href
3837
const Component = useMemo(() => {
@@ -49,23 +48,18 @@ export const HoverCard = (props: HoverCardProps) => {
4948

5049
return (
5150
<div className={cx(css.root, className)}>
52-
<HovercardAnchor
53-
state={state}
51+
<BaseHoverCardAnchor
52+
store={hovercard}
5453
href={href}
5554
className={cx(css.anchor, anchorClassName)}
56-
as={Component}
57-
aria-controls={state.open ? hovercardProps.id : ''}
55+
aria-controls={state.open ? 'hovercard' : ''}
5856
>
59-
{label}
60-
</HovercardAnchor>
61-
<Hovercard
62-
{...hovercardProps}
63-
state={state}
64-
className={cx(css.hoverCard, hoverCardClassName)}
65-
>
66-
<HovercardArrow size={24} />
67-
{typeof children === 'function' ? children({ close: state.hide }) : children}
68-
</Hovercard>
57+
<Component>{label}</Component>
58+
</BaseHoverCardAnchor>
59+
<BaseHoverCard store={hovercard} portal className={cx(css.hoverCard, hoverCardClassName)}>
60+
<BaseHoverCardArrow size={24} />
61+
{typeof children === 'function' ? children({ close: hovercard.hide }) : children}
62+
</BaseHoverCard>
6963
</div>
7064
);
7165
};

packages/ui/src/ui/tooltip/tooltip.tsx

+15-14
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import React from 'react';
22
import cx from 'classnames';
33
import {
4-
Tooltip as UITooltip,
5-
TooltipAnchor as UITooltipAnchor,
6-
TooltipArrow as UITooltipArrow,
7-
useTooltipState,
8-
} from 'ariakit/tooltip';
4+
Tooltip as BaseTooltip,
5+
TooltipAnchor as BaseTooltipAnchor,
6+
TooltipArrow as BaseTooltipArrow,
7+
useTooltipStore,
8+
} from '@ariakit/react';
99

1010
import css from './tooltip.module.css';
1111

@@ -14,7 +14,7 @@ interface TooltipProps<T extends React.ElementType> {
1414
tooltipClassName?: string;
1515
title?: React.ReactNode;
1616
as?: T;
17-
containerRef?: React.RefObject<HTMLElement>;
17+
containerRef?: React.RefObject<HTMLDivElement>;
1818
darkMode?: boolean;
1919
}
2020

@@ -31,26 +31,27 @@ export const Tooltip = <T extends React.ElementType = 'span'>(
3131
...restProps
3232
} = props;
3333

34-
const tooltip = useTooltipState({ placement: 'top', timeout: 300 });
34+
const tooltip = useTooltipStore({ placement: 'top', timeout: 300 });
35+
const state = tooltip.getState();
3536

3637
return (
3738
<>
38-
<UITooltipAnchor
39+
<BaseTooltipAnchor
3940
as={Component as React.ElementType}
4041
className={cx(css.root, className)}
41-
state={tooltip}
42-
aria-controls={tooltip.open ? tooltip.contentElement?.id : ''}
42+
store={tooltip}
43+
aria-controls={state.open ? 'tooltip' : ''}
4344
{...(ref ? { ref } : {})}
4445
{...restProps}
4546
/>
4647
{title && (
47-
<UITooltip
48-
state={tooltip}
48+
<BaseTooltip
49+
store={tooltip}
4950
className={cx(css.tooltip, tooltipClassName, darkMode && css.tooltipDarkMode)}
5051
>
51-
<UITooltipArrow state={tooltip} className={css.arrow} size={12} />
52+
<BaseTooltipArrow store={tooltip} className={css.arrow} size={12} />
5253
{title}
53-
</UITooltip>
54+
</BaseTooltip>
5455
)}
5556
</>
5657
);

0 commit comments

Comments
 (0)