diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf7fdc85..eb6a27c62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ ### Fixed +## [25.0.2] + +### Added + +- `Tag`: Allow passing `color`, `backgroundColor` to Tag. ([@eniskrasniqi1](https://github.com/eniskraasniqi1)) in [#2833](https://github.com/teamleadercrm/ui/pull/2833) + ## [25.0.1] ### Fixed diff --git a/package.json b/package.json index 3819d5de4..0ddbb25a9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@teamleader/ui", "description": "Teamleader UI library", - "version": "25.0.1", + "version": "25.0.2", "author": "Teamleader ", "bugs": { "url": "https://github.com/teamleadercrm/ui/issues" diff --git a/src/components/emailSelector/__tests__/__snapshots__/EmailSelector.spec.tsx.snap b/src/components/emailSelector/__tests__/__snapshots__/EmailSelector.spec.tsx.snap index 6c556b1db..f0251c12c 100644 --- a/src/components/emailSelector/__tests__/__snapshots__/EmailSelector.spec.tsx.snap +++ b/src/components/emailSelector/__tests__/__snapshots__/EmailSelector.spec.tsx.snap @@ -7,7 +7,7 @@ exports[`Component - EmailSelector renders 1`] = ` data-teamleader-ui="email-selector" >

{ const { children, - removeProps: { onClick, onMouseDown, onMouseUp, ...rest }, + removeProps: { onClick, onMouseDown, onMouseUp, color, ...rest }, } = props; const size = ( props.selectProps as Props & { @@ -142,6 +142,7 @@ const MultiValue = {children} diff --git a/src/components/tag/Tag.tsx b/src/components/tag/Tag.tsx index 450e48e96..8f585596c 100644 --- a/src/components/tag/Tag.tsx +++ b/src/components/tag/Tag.tsx @@ -2,7 +2,7 @@ import { IconCloseSmallOutline } from '@teamleader/ui-icons'; import cx from 'classnames'; import React, { ReactNode, forwardRef } from 'react'; import { GenericComponent } from '../../@types/types'; -import { SIZES } from '../../constants'; +import { COLORS, SIZES } from '../../constants'; import Box from '../box'; import { BoxProps } from '../box/Box'; import IconButton from '../iconButton'; @@ -19,6 +19,9 @@ export interface TagProps extends Omit { onRemoveMouseUp?: React.MouseEventHandler; removeElement?: React.ElementType; size?: TagSize; + color?: (typeof COLORS)[number]; + backgroundColor?: (typeof COLORS)[number]; + borderWidth?: number; } const Tag: GenericComponent = forwardRef( @@ -31,18 +34,35 @@ const Tag: GenericComponent = forwardRef( onRemoveMouseUp, removeElement, size = 'medium', + color, + backgroundColor, + borderWidth, ...others }, ref, ) => { - const classNames = cx(theme[`is-${size}`], theme['wrapper'], className); + const classNames = cx( + theme[`is-${size}`], + { [theme['has-default-background-color']]: !backgroundColor }, + { [theme['has-border']]: !!borderWidth }, + theme['wrapper'], + className, + ); const TextElement = size === 'small' ? UITextSmall : size === 'large' ? UITextDisplay : UITextBody; return ( - + = forwardRef( onClick={onRemoveClick} onMouseDown={onRemoveMouseDown} onMouseUp={onRemoveMouseUp} + color={color || 'neutral'} /> )} diff --git a/src/components/tag/__tests__/__snapshots__/Tag.spec.tsx.snap b/src/components/tag/__tests__/__snapshots__/Tag.spec.tsx.snap index adf2f38ad..ce5c25520 100644 --- a/src/components/tag/__tests__/__snapshots__/Tag.spec.tsx.snap +++ b/src/components/tag/__tests__/__snapshots__/Tag.spec.tsx.snap @@ -3,7 +3,7 @@ exports[`Component - Tag renders 1`] = `

= (args) => ; +export const WithColor: ComponentStory = (args) => ; + Basic.args = { children: 'I am a tag', onRemoveClick: () => console.log('Tag removed'), }; + +WithColor.args = { + children: 'Error state tag', + backgroundColor: 'ruby', + borderWidth: 1, + borderColor: 'ruby', + backgroundTint: 'lightest', + color: 'ruby', + onRemoveClick: () => console.log('Tag removed'), +}; diff --git a/src/components/tag/theme.css b/src/components/tag/theme.css index 5fe96d7dd..b663049c5 100644 --- a/src/components/tag/theme.css +++ b/src/components/tag/theme.css @@ -1,9 +1,16 @@ .wrapper { - background-color: hsl(var(--color-neutral-darkest-hsl) / 12%); box-shadow: inset 0 0 0 1px hsl(var(--color-neutral-darkest-hsl) / 12%); max-width: 100%; height: var(--size); border-radius: calc(var(--size) / 2); + + &.has-default-background-color { + background-color: hsl(var(--color-neutral-darkest-hsl) / 12%); + } + + &.has-border { + box-sizing: content-box; + } } .remove-button {