import {createComponent} from '@workday/canvas-kit-react/common';
import {BoxProps, mergeStyles} from '@workday/canvas-kit-react/layout';
import {createStencil} from '@workday/canvas-kit-styling';
import {system} from '@workday/canvas-tokens-web';
import {textStencil} from './Text';
/**
* @deprecated ⚠️ `TypeLabelProps` has been deprecated and will be removed in a future major version.
*/
export interface TypeLabelProps extends BoxProps {
typeLevel?: `${keyof typeof system.type}.${'large' | 'medium' | 'small'}`;
/**
* Disabled state as a boolean
*
* ```tsx
* Error text
* ```
*/
disabled?: boolean;
/**
* Type variant token names: `error`, `hint` or `inverse`.
*
* ```tsx
* Error text
* ```
*/
variant?: 'error' | 'hint' | 'inverse';
}
const labelTextStencil = createStencil({
extends: textStencil,
base: {
// ...system.legacy.type.subtext.lg,
// components do not support spreading for legacy type token
fontFamily: system.fontFamily.default,
fontWeight: system.fontWeight.normal,
fontSize: system.legacy.fontSize.subtext.lg,
lineHeight: system.legacy.lineHeight.subtext.lg,
letterSpacing: system.legacy.letterSpacing.subtext.lg,
color: system.color.fg.default,
},
modifiers: {
disabled: {
true: {
cursor: 'default',
color: system.color.fg.disabled,
},
},
variant: {
inverse: {color: system.color.fg.inverse},
error: {color: system.legacy.color.brand.fg.critical.default},
hint: {color: system.color.fg.muted.default},
},
},
compound: [
{
modifiers: {variant: 'inverse', disabled: true},
styles: {
opacity: system.opacity.disabled,
color: system.color.fg.inverse,
},
},
],
});
/**
* This component is intended to be used for labeling input fields.
* By default, it renders a semantic `label` element.
*
* It also uses the `subtext.large` typeLevel by default:
* - font-size: 14px (0.875rem)
* - font-weight: regular (400)
*
* ```tsx
* import { LabelText } from '@workday/canvas-kit-react/text';
*
* const CustomLabelText = () => (
* Input Label Text
* );
* ```
*
* @deprecated ⚠️ `LabelText` has been deprecated and will be removed in a future major version. Please use [FormField.Label](https://workday.github.io/canvas-kit/?path=/docs/components-inputs-form-field--docs) from Main instead.
*/
export const LabelText = createComponent('label')({
displayName: 'Label',
Component: ({disabled, typeLevel, variant, ...elemProps}: TypeLabelProps, ref, Element) => {
return (
);
},
});