Skip to content

Commit 1881953

Browse files
authored
feat(design-system): add DsTag and DsTagFilter components [AR-41960] (#88)
https://drivenets.atlassian.net/browse/AR-39465 [screen-capture (1).webm](https://github.com/user-attachments/assets/9cc4cc39-cb80-45f0-9716-c87341837ba7)
1 parent 6843550 commit 1881953

31 files changed

+2678
-90
lines changed

.changeset/cyan-kids-taste.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@drivenets/design-system': minor
3+
---
4+
5+
- Added `DsTag` component
6+
- Added `DsTagFilter` component
7+
- Deprecated `DsChip` component
8+
- Deprecated `DsChipGroup` component

.changeset/odd-hats-shine.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@drivenets/eslint-plugin-design-system': patch
3+
---
4+
5+
- Add deprecation rule for `DsChip`
6+
- Add deprecation rule for `DsChipGroup`

packages/design-system/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@
6767
},
6868
"peerDependencies": {
6969
"@internationalized/date": "^3.0.0",
70-
"react": "^19"
70+
"react": "^19",
71+
"react-dom": "^19"
7172
},
7273
"devDependencies": {
7374
"@arethetypeswrong/cli": "^0.18.2",
@@ -85,6 +86,7 @@
8586
"@tanstack/react-router": "^1.141.2",
8687
"@types/eslint-plugin-jsx-a11y": "^6.10.1",
8788
"@types/react": "^19.2.7",
89+
"@types/react-dom": "^19.2.3",
8890
"@vitest/browser": "^4.0.16",
8991
"@vitest/browser-playwright": "^4.0.15",
9092
"babel-plugin-react-compiler": "^1.0.0",
@@ -93,11 +95,13 @@
9395
"eslint-plugin-react": "^7.37.5",
9496
"eslint-plugin-react-hooks": "^7.0.1",
9597
"eslint-plugin-storybook": "^10.1.9",
98+
"jsdom": "^25.0.1",
9699
"playwright": "^1.57.0",
97100
"postcss": "^8.5.6",
98101
"postcss-modules": "^6.0.1",
99102
"publint": "^0.3.16",
100103
"react": "^19.2.3",
104+
"react-dom": "^19.2.3",
101105
"react-hook-form": "^7.55.0",
102106
"rollup-plugin-sass": "^1.15.3",
103107
"sass-embedded": "^1.97.0",

packages/design-system/src/components/ds-chip-group/ds-chip-group.stories.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,23 @@ import DsChipGroup from './ds-chip-group';
44
import type { ChipItem } from './ds-chip-group.types';
55
import styles from './ds-chip-group.stories.module.scss';
66

7+
/**
8+
* @deprecated This component is deprecated. Use `DsTagFilter` instead.
9+
* @see {@link ../ds-tag-filter/ds-tag-filter.stories} for examples of the replacement component.
10+
*/
711
const meta: Meta<typeof DsChipGroup> = {
8-
title: 'Design System/Chip Group',
12+
title: 'Design System/Chip Group (Deprecated)',
913
component: DsChipGroup,
1014
parameters: {
1115
layout: 'padded',
16+
docs: {
17+
description: {
18+
component:
19+
'**Deprecated**: This component is deprecated. Please use `DsTagFilter` instead. See the TagGroup stories for the replacement component.',
20+
},
21+
},
1222
},
13-
tags: ['autodocs'],
23+
tags: ['autodocs', 'deprecated'],
1424
argTypes: {
1525
items: {
1626
control: 'object',

packages/design-system/src/components/ds-chip-group/ds-chip-group.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import { DsButton } from '../ds-button';
1313
import { DsIcon } from '../ds-icon';
1414

1515
/**
16-
* Design system chip group component displays a collection of chips with overflow handling
17-
* Used for displaying filters, selected items, tags, etc.
16+
* @deprecated This component is deprecated. Use `DsTagFilter` instead.
17+
* @see {@link ../ds-tag-filter} for the replacement component.
1818
*/
1919
const DsChipGroup: React.FC<DsChipGroupProps> = ({
2020
items,

packages/design-system/src/components/ds-chip-group/ds-chip-group.types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import type { CSSProperties } from 'react';
22

3+
/**
4+
* @deprecated This interface is deprecated. Use `DsTagFilter` types instead.
5+
* @see {@link ../ds-tag-filter} for the replacement types.
6+
*/
37
export interface ChipItem {
48
/**
59
* Unique identifier for the chip
@@ -19,6 +23,10 @@ export interface ChipItem {
1923
selected?: boolean;
2024
}
2125

26+
/**
27+
* @deprecated This interface is deprecated. Use `DsTagFilterProps` from `ds-tag-filter` instead.
28+
* @see {@link ../ds-tag-filter/ds-tag-filter.types} for the replacement interface.
29+
*/
2230
export interface DsChipGroupProps {
2331
/**
2432
* Array of chip items to display
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export { default as DsChipGroup } from './ds-chip-group';
2+
23
export type { DsChipGroupProps, ChipItem } from './ds-chip-group.types';

packages/design-system/src/components/ds-chip/ds-chip.stories.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,23 @@ import type { Meta, StoryObj } from '@storybook/react-vite';
22
import DsChip from './ds-chip';
33
import { chipSizes } from './ds-chip.types';
44

5+
/**
6+
* @deprecated This component is deprecated. Use `DsTag` instead.
7+
* @see {@link ../ds-tag/ds-tag.stories} for examples of the replacement component.
8+
*/
59
const meta: Meta<typeof DsChip> = {
6-
title: 'Design System/Chip',
10+
title: 'Design System/Chip (Deprecated)',
711
component: DsChip,
812
parameters: {
913
layout: 'centered',
14+
docs: {
15+
description: {
16+
component:
17+
'**Deprecated**: This component is deprecated. Please use `DsTag` instead. See the Tag stories for the replacement component.',
18+
},
19+
},
1020
},
11-
tags: ['autodocs'],
21+
tags: ['autodocs', 'deprecated'],
1222
argTypes: {
1323
label: {
1424
control: 'text',

packages/design-system/src/components/ds-chip/ds-chip.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { DsIcon } from '../ds-icon';
66
import { DsTypography } from '../ds-typography';
77

88
/**
9-
* Design system Chip component
9+
* @deprecated This component is deprecated. Use `DsTag` instead.
10+
* @see {@link ../ds-tag} for the replacement component.
1011
*/
1112
const DsChip: React.FC<DsChipProps> = ({
1213
ref,

packages/design-system/src/components/ds-chip/ds-chip.types.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
11
import type { CSSProperties, KeyboardEvent, MouseEvent, Ref } from 'react';
22
import type { IconType } from '../ds-icon';
33

4+
/**
5+
* @deprecated This type is deprecated. Use `DsTag` instead.
6+
* @see {@link ../ds-tag} for the replacement component.
7+
*/
48
export const chipSizes = ['medium', 'small'] as const;
9+
10+
/**
11+
* @deprecated This type is deprecated. Use `DsTag` instead.
12+
* @see {@link ../ds-tag} for the replacement component.
13+
*/
514
export type ChipSize = (typeof chipSizes)[number];
615

16+
/**
17+
* @deprecated This interface is deprecated. Use `DsTagProps` from `ds-tag` instead.
18+
* @see {@link ../ds-tag/ds-tag.types} for the replacement interface.
19+
*/
720
export interface DsChipProps {
821
/**
922
* Ref to the chip element

0 commit comments

Comments
 (0)