From 351dd1e6ab3d287957e2c54a405a23bab9159ed6 Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Tue, 24 Feb 2026 17:44:42 +0100 Subject: [PATCH] Migrate Tooltip component from useStyles to useDefinition Signed-off-by: Johan Persson --- packages/ui/report.api.md | 20 ++++++++++--- .../ui/src/components/Tooltip/Tooltip.tsx | 29 +++++-------------- .../ui/src/components/Tooltip/definition.ts | 13 +++++++-- packages/ui/src/components/Tooltip/index.ts | 2 +- packages/ui/src/components/Tooltip/types.ts | 12 ++++++-- 5 files changed, 43 insertions(+), 33 deletions(-) diff --git a/packages/ui/report.api.md b/packages/ui/report.api.md index fb1cb53daf..2b19c0423e 100644 --- a/packages/ui/report.api.md +++ b/packages/ui/report.api.md @@ -56,7 +56,7 @@ import type { TagProps as TagProps_2 } from 'react-aria-components'; import type { TextFieldProps as TextFieldProps_2 } from 'react-aria-components'; import type { ToggleButtonGroupProps as ToggleButtonGroupProps_2 } from 'react-aria-components'; import type { ToggleButtonProps as ToggleButtonProps_2 } from 'react-aria-components'; -import { TooltipProps as TooltipProps_2 } from 'react-aria-components'; +import type { TooltipProps as TooltipProps_2 } from 'react-aria-components'; import { TooltipTriggerComponentProps } from 'react-aria-components'; // @public (undocumented) @@ -2311,18 +2311,30 @@ export const Tooltip: ForwardRefExoticComponent< // @public export const TooltipDefinition: { + readonly styles: { + readonly [key: string]: string; + }; readonly classNames: { readonly tooltip: 'bui-Tooltip'; readonly content: 'bui-TooltipContent'; readonly arrow: 'bui-TooltipArrow'; }; + readonly propDefs: { + readonly children: {}; + readonly className: {}; + }; }; // @public (undocumented) -export interface TooltipProps extends Omit { - // (undocumented) +export type TooltipOwnProps = { children: React.ReactNode; -} + className?: string; +}; + +// @public (undocumented) +export interface TooltipProps + extends Omit, + TooltipOwnProps {} // @public (undocumented) export const TooltipTrigger: ( diff --git a/packages/ui/src/components/Tooltip/Tooltip.tsx b/packages/ui/src/components/Tooltip/Tooltip.tsx index d7fb97005b..6793a698f3 100644 --- a/packages/ui/src/components/Tooltip/Tooltip.tsx +++ b/packages/ui/src/components/Tooltip/Tooltip.tsx @@ -22,11 +22,9 @@ import { TooltipTrigger as AriaTooltipTrigger, TooltipTriggerComponentProps, } from 'react-aria-components'; -import clsx from 'clsx'; -import { TooltipProps } from './types'; -import { useStyles } from '../../hooks/useStyles'; +import type { TooltipProps } from './types'; +import { useDefinition } from '../../hooks/useDefinition'; import { TooltipDefinition } from './definition'; -import styles from './Tooltip.module.css'; import { Box } from '../Box'; import { BgReset } from '../../hooks/useBg'; @@ -40,23 +38,13 @@ export const TooltipTrigger = (props: TooltipTriggerComponentProps) => { /** @public */ export const Tooltip = forwardRef( (props, ref) => { - const { classNames, cleanedProps } = useStyles(TooltipDefinition, props); - const { className, children, ...rest } = cleanedProps; + const { ownProps, restProps } = useDefinition(TooltipDefinition, props); + const { classes, children } = ownProps; const svgPathId = useId(); return ( - - + + ( - + {children} diff --git a/packages/ui/src/components/Tooltip/definition.ts b/packages/ui/src/components/Tooltip/definition.ts index 922b59b85c..226e4cef9d 100644 --- a/packages/ui/src/components/Tooltip/definition.ts +++ b/packages/ui/src/components/Tooltip/definition.ts @@ -14,16 +14,23 @@ * limitations under the License. */ -import type { ComponentDefinition } from '../../types'; +import { defineComponent } from '../../hooks/useDefinition'; +import type { TooltipOwnProps } from './types'; +import styles from './Tooltip.module.css'; /** * Component definition for Tooltip * @public */ -export const TooltipDefinition = { +export const TooltipDefinition = defineComponent()({ + styles, classNames: { tooltip: 'bui-Tooltip', content: 'bui-TooltipContent', arrow: 'bui-TooltipArrow', }, -} as const satisfies ComponentDefinition; + propDefs: { + children: {}, + className: {}, + }, +}); diff --git a/packages/ui/src/components/Tooltip/index.ts b/packages/ui/src/components/Tooltip/index.ts index 43bd385c65..b70bce61b8 100644 --- a/packages/ui/src/components/Tooltip/index.ts +++ b/packages/ui/src/components/Tooltip/index.ts @@ -15,5 +15,5 @@ */ export { TooltipTrigger, Tooltip } from './Tooltip'; -export type { TooltipProps } from './types'; +export type { TooltipOwnProps, TooltipProps } from './types'; export { TooltipDefinition } from './definition'; diff --git a/packages/ui/src/components/Tooltip/types.ts b/packages/ui/src/components/Tooltip/types.ts index 2ef44fbbf4..d395ce9004 100644 --- a/packages/ui/src/components/Tooltip/types.ts +++ b/packages/ui/src/components/Tooltip/types.ts @@ -14,9 +14,15 @@ * limitations under the License. */ -import { TooltipProps as AriaTooltipProps } from 'react-aria-components'; +import type { TooltipProps as AriaTooltipProps } from 'react-aria-components'; /** @public */ -export interface TooltipProps extends Omit { +export type TooltipOwnProps = { children: React.ReactNode; -} + className?: string; +}; + +/** @public */ +export interface TooltipProps + extends Omit, + TooltipOwnProps {}