Skip to content

Commit 595b9e5

Browse files
feat: expose key prop
1 parent 14de0ba commit 595b9e5

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

apps/www/src/content/docs/components/breadcrumb/props.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export interface BreadcrumbItem {
2222
* When `dropdownItems` is provided, the `as` and `href` props are ignored.
2323
*/
2424
dropdownItems?: {
25+
/** Optional stable key for list reconciliation. Falls back to index if omitted. */
26+
key?: string;
2527
/** Text to display for the dropdown item */
2628
label: string;
2729
/** Callback function when a dropdown item is clicked */

packages/raystack/components/breadcrumb/breadcrumb-item.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { Menu } from '../menu';
1313
import styles from './breadcrumb.module.css';
1414

1515
export interface BreadcrumbDropdownItem {
16+
/** Optional stable key for list reconciliation (use when items can reorder). Falls back to index if omitted. */
17+
key?: string;
1618
label: string;
1719
onClick?: React.MouseEventHandler<HTMLElement>;
1820
}
@@ -62,7 +64,7 @@ export const BreadcrumbItem = forwardRef<
6264
<Menu.Content className={styles['breadcrumb-dropdown-content']}>
6365
{dropdownItems.map((dropdownItem, dropdownIndex) => (
6466
<Menu.Item
65-
key={dropdownIndex}
67+
key={dropdownItem.key ?? dropdownIndex}
6668
className={styles['breadcrumb-dropdown-item']}
6769
onClick={dropdownItem?.onClick}
6870
>

0 commit comments

Comments
 (0)