From e1dbf294dd8b429d1deb1060d0b1e383c4c582bc Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Wed, 25 Feb 2026 13:36:28 +0100 Subject: [PATCH] Migrate Text component from useStyles to useDefinition Signed-off-by: Johan Persson --- packages/ui/src/components/Text/Text.tsx | 20 ++++--------- packages/ui/src/components/Text/definition.ts | 28 +++++++++---------- packages/ui/src/components/Text/types.ts | 1 + 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/packages/ui/src/components/Text/Text.tsx b/packages/ui/src/components/Text/Text.tsx index 857ae3ef0e..294e129abf 100644 --- a/packages/ui/src/components/Text/Text.tsx +++ b/packages/ui/src/components/Text/Text.tsx @@ -15,35 +15,27 @@ */ import { forwardRef } from 'react'; -import clsx from 'clsx'; import type { ElementType } from 'react'; import type { TextProps } from './types'; -import { useStyles } from '../../hooks/useStyles'; -import styles from './Text.module.css'; +import { useDefinition } from '../../hooks/useDefinition'; import { TextDefinition } from './definition'; function TextComponent( props: TextProps, ref: React.Ref, ) { - const Component = props.as || 'span'; - - const { classNames, dataAttributes, cleanedProps } = useStyles( + const { ownProps, restProps, dataAttributes } = useDefinition( TextDefinition, - { - variant: 'body-medium', - weight: 'regular', - color: 'primary', - ...props, - }, + props, ); + const { classes, as } = ownProps; - const { className, truncate, ...restProps } = cleanedProps; + const Component = as; return ( diff --git a/packages/ui/src/components/Text/definition.ts b/packages/ui/src/components/Text/definition.ts index ad676405c7..266a4b0d86 100644 --- a/packages/ui/src/components/Text/definition.ts +++ b/packages/ui/src/components/Text/definition.ts @@ -14,27 +14,25 @@ * limitations under the License. */ -import type { ComponentDefinition } from '../../types'; +import { defineComponent } from '../../hooks/useDefinition'; +import type { TextOwnProps } from './types'; +import styles from './Text.module.css'; /** * Component definition for Text * @public */ -export const TextDefinition = { +export const TextDefinition = defineComponent()({ + styles, classNames: { root: 'bui-Text', }, - dataAttributes: { - variant: ['subtitle', 'body', 'caption', 'label'] as const, - weight: ['regular', 'bold'] as const, - color: [ - 'primary', - 'secondary', - 'danger', - 'warning', - 'success', - 'info', - ] as const, - truncate: [true, false] as const, + propDefs: { + as: { default: 'span' }, + variant: { dataAttribute: true, default: 'body-medium' }, + weight: { dataAttribute: true, default: 'regular' }, + color: { dataAttribute: true, default: 'primary' }, + truncate: { dataAttribute: true }, + className: {}, }, -} as const satisfies ComponentDefinition; +}); diff --git a/packages/ui/src/components/Text/types.ts b/packages/ui/src/components/Text/types.ts index e0b0e4aa32..4d3af57fde 100644 --- a/packages/ui/src/components/Text/types.ts +++ b/packages/ui/src/components/Text/types.ts @@ -47,6 +47,7 @@ export type TextOwnProps = { | TextColorStatus | Partial>; truncate?: boolean; + className?: string; }; /** @public */