From e76ff11c5050513e2d9fd392a4588a4b94f52631 Mon Sep 17 00:00:00 2001 From: Will Seabrook Date: Thu, 3 Sep 2026 01:03:02 +0100 Subject: [PATCH] docs(tile-select): deprecate tile-select and provide migration info --- docs/deprecation-migration.mdx | 15 ++++++++++++++- .../carbon-react/components/tile-select-group.md | 4 ++++ skills/carbon-react/components/tile-select.md | 5 +++++ skills/carbon-react/index.md | 4 ++-- .../references/docs/deprecation-migration.md | 15 ++++++++++++++- .../tile-select-group.component.tsx | 10 ++++++++++ .../tile-select-interaction.stories.tsx | 2 +- .../tile-select/tile-select.component.tsx | 12 ++++++++++++ src/components/tile-select/tile-select.mdx | 7 +++++++ .../tile-select/tile-select.stories.tsx | 2 +- 10 files changed, 70 insertions(+), 6 deletions(-) diff --git a/docs/deprecation-migration.mdx b/docs/deprecation-migration.mdx index 498c518773..0bfc5a7413 100644 --- a/docs/deprecation-migration.mdx +++ b/docs/deprecation-migration.mdx @@ -24,6 +24,7 @@ The following section provides migration guidance for deprecated components that - For `Hr`, [`Divider`](?path=/docs/divider--docs) is recommended as the preferred alternative. - For `VerticalDivider`, [`Divider`](?path=/docs/divider--docs) is recommended as the preferred alternative. - For `LoaderBar`, `LoaderStar` and `LoaderSpinner`: the new [`Loader`](?path=/docs/loader--docs) is recommended as the preferred alternative. +- For `TileSelect`, no like-for-like replacement has been validated. Do not reproduce its card-like selection treatment in new work; use the approved, product-specific Fusion pattern instead. Where the need is a conventional form choice, [`RadioButton`](?path=/docs/radio-button--docs) or [`Checkbox`](?path=/docs/checkbox--docs) may be appropriate, according to the selection semantics. ## Alternative Patterns @@ -40,6 +41,18 @@ The following sections provide migration guidance for deprecated components that - [Setting sRow](#settings-row) - [Hr](#hr) - [VerticalDivider](#vertical-divider) +- [Tile Select](#tile-select) + +## Tile Select + +`TileSelect` and `TileSelectGroup` are deprecated. The components have low adoption, their two known product implementations do not use the pattern as intended, and the pattern has not shown a good UX fit. Their overlap with existing Fusion patterns also creates unnecessary duplication and confusion. Carbon Tile Select is primarily a radio-style control, while the potentially overlapping Fusion pattern is more checkbox-like; they are not interchangeable. + +### Migration + +- There is no prescribed like-for-like replacement. Assess the user need and use the approved product-specific Fusion pattern rather than carrying the Carbon pattern forward. +- If the need is a conventional form choice, use `RadioButtonGroup` and `RadioButton` for mutually exclusive choices, or `CheckboxGroup` and `Checkbox` for independent choices. This is semantic guidance, not a replacement for Tile Select's card-like treatment. +- Keep the existing Report implementation unchanged until its approved replacement is available. Do not introduce Tile Select into new Report work. +- Migrate Client Management as part of its planned redesign; the redesign should use the approved Fusion pattern rather than a like-for-like Tile Select replacement. ## Alert @@ -187,4 +200,4 @@ The `Hr` component can be replaced by a `Divider` with type `horizontal`. The `D The `VerticalDivider` component can be replaced by a `Divider`. The `Divider` component will provide consistent styling while maintaining the same functionality. - \ No newline at end of file + diff --git a/skills/carbon-react/components/tile-select-group.md b/skills/carbon-react/components/tile-select-group.md index 1b5403473d..fd4a7c5bab 100644 --- a/skills/carbon-react/components/tile-select-group.md +++ b/skills/carbon-react/components/tile-select-group.md @@ -11,6 +11,10 @@ description: Carbon TileSelectGroup component props and usage examples. ## Source - Export: `./components/tile-select` - Props interface: `TileSelectGroupProps` +- Deprecated: Yes +- Deprecation reason: `TileSelectGroup` is deprecated with `TileSelect`. No +like-for-like replacement has been validated; use a product-specific Fusion +pattern. See the Carbon deprecation migration documentation for consumer-specific guidance. ## Props | Name | Type | Required | Literals | Description | Default | diff --git a/skills/carbon-react/components/tile-select.md b/skills/carbon-react/components/tile-select.md index 42b11a2f69..1d51c23d13 100644 --- a/skills/carbon-react/components/tile-select.md +++ b/skills/carbon-react/components/tile-select.md @@ -11,6 +11,11 @@ description: Carbon TileSelect component props and usage examples. ## Source - Export: `./components/tile-select` - Props interface: `TileSelectProps` +- Deprecated: Yes +- Deprecation reason: `TileSelect` has low adoption and is a poor fit for its intended +selection UX. No like-for-like replacement has been validated; use a +product-specific Fusion pattern. See the Carbon deprecation migration +documentation for consumer-specific guidance. ## Props | Name | Type | Required | Literals | Description | Default | diff --git a/skills/carbon-react/index.md b/skills/carbon-react/index.md index 448839f255..90451470f3 100644 --- a/skills/carbon-react/index.md +++ b/skills/carbon-react/index.md @@ -152,8 +152,8 @@ - [TileContent](components/tile-content.md) - [TileFooter](components/tile-footer.md) - [TileHeader](components/tile-header.md) -- [TileSelect](components/tile-select.md) -- [TileSelectGroup](components/tile-select-group.md) +- [TileSelect](components/tile-select.md) (deprecated) +- [TileSelectGroup](components/tile-select-group.md) (deprecated) - [Time](components/time.md) - [Toast](components/toast.md) (deprecated) - [Tooltip](components/tooltip.md) (deprecated) diff --git a/skills/carbon-react/references/docs/deprecation-migration.md b/skills/carbon-react/references/docs/deprecation-migration.md index 498c518773..0bfc5a7413 100644 --- a/skills/carbon-react/references/docs/deprecation-migration.md +++ b/skills/carbon-react/references/docs/deprecation-migration.md @@ -24,6 +24,7 @@ The following section provides migration guidance for deprecated components that - For `Hr`, [`Divider`](?path=/docs/divider--docs) is recommended as the preferred alternative. - For `VerticalDivider`, [`Divider`](?path=/docs/divider--docs) is recommended as the preferred alternative. - For `LoaderBar`, `LoaderStar` and `LoaderSpinner`: the new [`Loader`](?path=/docs/loader--docs) is recommended as the preferred alternative. +- For `TileSelect`, no like-for-like replacement has been validated. Do not reproduce its card-like selection treatment in new work; use the approved, product-specific Fusion pattern instead. Where the need is a conventional form choice, [`RadioButton`](?path=/docs/radio-button--docs) or [`Checkbox`](?path=/docs/checkbox--docs) may be appropriate, according to the selection semantics. ## Alternative Patterns @@ -40,6 +41,18 @@ The following sections provide migration guidance for deprecated components that - [Setting sRow](#settings-row) - [Hr](#hr) - [VerticalDivider](#vertical-divider) +- [Tile Select](#tile-select) + +## Tile Select + +`TileSelect` and `TileSelectGroup` are deprecated. The components have low adoption, their two known product implementations do not use the pattern as intended, and the pattern has not shown a good UX fit. Their overlap with existing Fusion patterns also creates unnecessary duplication and confusion. Carbon Tile Select is primarily a radio-style control, while the potentially overlapping Fusion pattern is more checkbox-like; they are not interchangeable. + +### Migration + +- There is no prescribed like-for-like replacement. Assess the user need and use the approved product-specific Fusion pattern rather than carrying the Carbon pattern forward. +- If the need is a conventional form choice, use `RadioButtonGroup` and `RadioButton` for mutually exclusive choices, or `CheckboxGroup` and `Checkbox` for independent choices. This is semantic guidance, not a replacement for Tile Select's card-like treatment. +- Keep the existing Report implementation unchanged until its approved replacement is available. Do not introduce Tile Select into new Report work. +- Migrate Client Management as part of its planned redesign; the redesign should use the approved Fusion pattern rather than a like-for-like Tile Select replacement. ## Alert @@ -187,4 +200,4 @@ The `Hr` component can be replaced by a `Divider` with type `horizontal`. The `D The `VerticalDivider` component can be replaced by a `Divider`. The `Divider` component will provide consistent styling while maintaining the same functionality. - \ No newline at end of file + diff --git a/src/components/tile-select/tile-select-group/tile-select-group.component.tsx b/src/components/tile-select/tile-select-group/tile-select-group.component.tsx index 7cd50ad563..f68bc54d76 100644 --- a/src/components/tile-select/tile-select-group/tile-select-group.component.tsx +++ b/src/components/tile-select/tile-select-group/tile-select-group.component.tsx @@ -12,6 +12,11 @@ import { import { filterStyledSystemMarginProps } from "../../../style/utils"; import { TileSelectDeselectEvent } from "../tile-select.component"; +/** + * @deprecated `TileSelectGroup` is deprecated with `TileSelect`. No + * like-for-like replacement has been validated; use a product-specific Fusion + * pattern. See the Carbon deprecation migration documentation for consumer-specific guidance. + */ export interface TileSelectGroupProps extends MarginProps, TagProps { /** The TileSelect components to be rendered in the group */ children: React.ReactNode; @@ -35,6 +40,11 @@ export interface TileSelectGroupProps extends MarginProps, TagProps { multiSelect?: boolean; } +/** + * @deprecated `TileSelectGroup` is deprecated with `TileSelect`. No + * like-for-like replacement has been validated; use a product-specific Fusion + * pattern. See the Carbon deprecation migration documentation for consumer-specific guidance. + */ export const TileSelectGroup = ({ children, name, diff --git a/src/components/tile-select/tile-select-interaction.stories.tsx b/src/components/tile-select/tile-select-interaction.stories.tsx index 12c327e899..47710a495c 100644 --- a/src/components/tile-select/tile-select-interaction.stories.tsx +++ b/src/components/tile-select/tile-select-interaction.stories.tsx @@ -17,7 +17,7 @@ import DefaultDecorator from "../../../.storybook/utils/default-decorator"; type Story = StoryObj; export default { - title: "Tile Select/Interactions", + title: "Deprecated/Tile Select/Interactions", parameters: { themeProvider: { chromatic: { theme: "sage" } }, }, diff --git a/src/components/tile-select/tile-select.component.tsx b/src/components/tile-select/tile-select.component.tsx index 980af997e1..a572760c35 100644 --- a/src/components/tile-select/tile-select.component.tsx +++ b/src/components/tile-select/tile-select.component.tsx @@ -38,6 +38,12 @@ export interface TileSelectDeselectEvent { }; } +/** + * @deprecated `TileSelect` has low adoption and is a poor fit for its intended + * selection UX. No like-for-like replacement has been validated; use a + * product-specific Fusion pattern. See the Carbon deprecation migration + * documentation for consumer-specific guidance. + */ export interface TileSelectProps extends MarginProps, TagProps { /** title of the TileSelect */ title?: React.ReactNode; @@ -85,6 +91,12 @@ export interface TileSelectProps extends MarginProps, TagProps { accordionExpanded?: boolean; } +/** + * @deprecated `TileSelect` has low adoption and is a poor fit for its intended + * selection UX. No like-for-like replacement has been validated; use a + * product-specific Fusion pattern. See the Carbon deprecation migration + * documentation for consumer-specific guidance. + */ const TileSelect = React.forwardRef( ( { diff --git a/src/components/tile-select/tile-select.mdx b/src/components/tile-select/tile-select.mdx index 8d02f517f6..2a2e38e80b 100644 --- a/src/components/tile-select/tile-select.mdx +++ b/src/components/tile-select/tile-select.mdx @@ -3,11 +3,16 @@ import TranslationKeysTable from "../../../.storybook/utils/translation-keys-tab import * as TileSelectGroupStories from "./tile-select-group/tile-select-group.stories"; import * as TileSelectStories from "./tile-select.stories"; +import DeprecationWarning from "../../../.storybook/utils/deprecation-warning.component"; # TileSelect + +Tile Select is deprecated. It has low adoption and has proved to be a poor fit for selection UX. No like-for-like replacement has been validated: use an approved product-specific Fusion pattern for new work. See the migration guidance for existing consumers. + + = { - title: "Tile Select", + title: "Deprecated/Tile Select", component: TileSelect, argTypes: { ...styledSystemProps,