diff --git a/packages/ui/src/components/Box/definition.ts b/packages/ui/src/components/Box/definition.ts index 4f07732743..f202291175 100644 --- a/packages/ui/src/components/Box/definition.ts +++ b/packages/ui/src/components/Box/definition.ts @@ -22,7 +22,7 @@ import styles from './Box.module.css'; * Component definition for Box * @public */ -export const BoxDefinition = defineComponent()({ +export const BoxDefinition = defineComponent()({ styles, classNames: { root: 'bui-Box', diff --git a/packages/ui/src/components/Button/definition.ts b/packages/ui/src/components/Button/definition.ts index 529d9c2c6f..eed7d9d935 100644 --- a/packages/ui/src/components/Button/definition.ts +++ b/packages/ui/src/components/Button/definition.ts @@ -22,10 +22,7 @@ import styles from './Button.module.css'; * Component definition for Button * @public */ -export const ButtonDefinition = defineComponent< - ButtonOwnProps, - typeof styles ->()({ +export const ButtonDefinition = defineComponent()({ styles, classNames: { root: 'bui-Button', diff --git a/packages/ui/src/hooks/useDefinition/defineComponent.ts b/packages/ui/src/hooks/useDefinition/defineComponent.ts index 263e26eb76..2183638ee0 100644 --- a/packages/ui/src/hooks/useDefinition/defineComponent.ts +++ b/packages/ui/src/hooks/useDefinition/defineComponent.ts @@ -16,9 +16,11 @@ import type { ComponentConfig } from './types'; -export function defineComponent< - P extends Record, - S extends Record, ->() { - return >(config: C): C => config; +export function defineComponent

>() { + return < + const S extends Record, + const C extends ComponentConfig, + >( + config: C, + ): C => config; } diff --git a/packages/ui/src/hooks/useDefinition/helpers.ts b/packages/ui/src/hooks/useDefinition/helpers.ts index 6f97953af1..3baf07b5af 100644 --- a/packages/ui/src/hooks/useDefinition/helpers.ts +++ b/packages/ui/src/hooks/useDefinition/helpers.ts @@ -16,7 +16,7 @@ import { breakpoints } from '../useBreakpoint'; import { utilityClassMap } from '../../utils/utilityClassMap'; -import type { UtilityStyle } from './types'; +import type { UnwrapResponsive, UtilityStyle } from './types'; const namedBreakpoints = breakpoints.filter(b => b.id !== 'initial'); @@ -28,9 +28,12 @@ function isResponsiveObject(value: unknown): value is Record { ); } -export function resolveResponsiveValue(value: T, breakpoint: string): T { +export function resolveResponsiveValue( + value: T, + breakpoint: string, +): UnwrapResponsive { if (!isResponsiveObject(value)) { - return value; + return value as UnwrapResponsive; } const index = breakpoints.findIndex(b => b.id === breakpoint); @@ -39,7 +42,7 @@ export function resolveResponsiveValue(value: T, breakpoint: string): T { for (let i = index; i >= 0; i--) { const key = breakpoints[i].id; if (key in value && value[key] !== undefined) { - return value[key] as T; + return value[key] as UnwrapResponsive; } } @@ -47,11 +50,11 @@ export function resolveResponsiveValue(value: T, breakpoint: string): T { for (let i = 0; i < breakpoints.length; i++) { const key = breakpoints[i].id; if (key in value && value[key] !== undefined) { - return value[key] as T; + return value[key] as UnwrapResponsive; } } - return value; + return value as UnwrapResponsive; } export function processUtilityProps( diff --git a/packages/ui/src/hooks/useDefinition/types.ts b/packages/ui/src/hooks/useDefinition/types.ts index 81c44aa086..7318ef8fa2 100644 --- a/packages/ui/src/hooks/useDefinition/types.ts +++ b/packages/ui/src/hooks/useDefinition/types.ts @@ -18,7 +18,7 @@ import type { ReactNode } from 'react'; import type { Responsive } from '../../types'; import type { utilityClassMap } from '../../utils/utilityClassMap'; -type UnwrapResponsive = T extends Responsive ? U : T; +export type UnwrapResponsive = T extends Responsive ? U : T; export interface PropDefConfig { dataAttribute?: boolean; @@ -76,7 +76,9 @@ type DataAttributeKeys = { }[keyof PropDefs]; type DataAttributes = { - [K in DataAttributeKeys as `data-${string & K}`]?: string; + [K in DataAttributeKeys as `data-${Lowercase< + string & K + >}`]?: string; } & { 'data-on-surface'?: string }; export type UtilityKeys> = diff --git a/packages/ui/src/hooks/useDefinition/useDefinition.tsx b/packages/ui/src/hooks/useDefinition/useDefinition.tsx index fa3cf9867f..7060ef4a1a 100644 --- a/packages/ui/src/hooks/useDefinition/useDefinition.tsx +++ b/packages/ui/src/hooks/useDefinition/useDefinition.tsx @@ -71,7 +71,8 @@ export function useDefinition< ownPropsResolved[key] = finalValue; if ((config as any).dataAttribute) { - dataAttributes[`data-${key}`] = String(finalValue); + // eslint-disable-next-line no-restricted-syntax + dataAttributes[`data-${key.toLowerCase()}`] = String(finalValue); } } }