From a258f93a47eff603ec8a8ef7e83f58587469753d Mon Sep 17 00:00:00 2001 From: Pavithra Kodmad Date: Tue, 9 Sep 2025 22:50:37 +1000 Subject: [PATCH 01/28] Remove sx prop in UnderlinePanels --- .../UnderlinePanels/UnderlinePanels.tsx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx index 0a9ca088c3b..16ecc78a7f9 100644 --- a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx +++ b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx @@ -17,15 +17,12 @@ import { UnderlineItem, type UnderlineItemProps, } from '../../internal/components/UnderlineTabbedInterface' -import {type BoxProps} from '../../Box' import {useId} from '../../hooks' import {invariant} from '../../utils/invariant' -import {type SxProp} from '../../sx' import {useResizeObserver, type ResizeObserverEntry} from '../../hooks/useResizeObserver' import useIsomorphicLayoutEffect from '../../utils/useIsomorphicLayoutEffect' import classes from './UnderlinePanels.module.css' import {clsx} from 'clsx' -import {BoxWithFallback} from '../../internal/components/BoxWithFallback' export type UnderlinePanelsProps = { /** @@ -52,7 +49,7 @@ export type UnderlinePanelsProps = { * Class name for custom styling */ className?: string -} & SxProp +} export type TabProps = PropsWithChildren<{ /** @@ -71,10 +68,9 @@ export type TabProps = PropsWithChildren<{ * Icon rendered before the tab text label */ icon?: FC -}> & - SxProp +}> -export type PanelProps = Omit +export type PanelProps = React.HTMLAttributes const TabContainerComponent = createComponent(TabContainerElement, 'tab-container') @@ -109,7 +105,9 @@ const UnderlinePanels: FC = ({ } if (isValidElement(child) && child.type === Panel) { - return cloneElement(child, {'aria-labelledby': `${parentId}-tab-${panelIndex++}`}) + return cloneElement(child as React.ReactElement, { + 'aria-labelledby': `${parentId}-tab-${panelIndex++}`, + }) } return child }) @@ -221,8 +219,8 @@ const Tab: FC = ({'aria-selected': ariaSelected, onSelect, ...props}) Tab.displayName = 'UnderlinePanels.Tab' -const Panel: FC = props => { - return +const Panel: FC = () => { + return
} Panel.displayName = 'UnderlinePanels.Panel' From 96e6bd7390c036a9f0a9354008ef61bf12dc1c94 Mon Sep 17 00:00:00 2001 From: Pavithra Kodmad Date: Tue, 9 Sep 2025 23:14:37 +1000 Subject: [PATCH 02/28] Change '@primer/react' version and remove sx prop --- .changeset/cool-tips-argue.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cool-tips-argue.md diff --git a/.changeset/cool-tips-argue.md b/.changeset/cool-tips-argue.md new file mode 100644 index 00000000000..08fbe1d8282 --- /dev/null +++ b/.changeset/cool-tips-argue.md @@ -0,0 +1,5 @@ +--- +"@primer/react": major +--- + +Remove sx prop in UnderlinePanels From 976f44c96d5c21081afe17a37b709660d5e7d675 Mon Sep 17 00:00:00 2001 From: Pavithra Kodmad Date: Wed, 10 Sep 2025 16:18:01 +1000 Subject: [PATCH 03/28] Fix up panels --- .../UnderlinePanels/UnderlinePanels.tsx | 8 +++-- .../components/UnderlineTabbedInterface.tsx | 36 ++++++------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx index 16ecc78a7f9..7ee01c61251 100644 --- a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx +++ b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx @@ -219,8 +219,12 @@ const Tab: FC = ({'aria-selected': ariaSelected, onSelect, ...props}) Tab.displayName = 'UnderlinePanels.Tab' -const Panel: FC = () => { - return
+const Panel: FC = ({children, ...rest}) => { + return ( +
+ {children} +
+ ) } Panel.displayName = 'UnderlinePanels.Panel' diff --git a/packages/react/src/internal/components/UnderlineTabbedInterface.tsx b/packages/react/src/internal/components/UnderlineTabbedInterface.tsx index a2887dd13ad..e3ce59a15bd 100644 --- a/packages/react/src/internal/components/UnderlineTabbedInterface.tsx +++ b/packages/react/src/internal/components/UnderlineTabbedInterface.tsx @@ -5,12 +5,10 @@ import {forwardRef, type FC, type PropsWithChildren} from 'react' import {isElement} from 'react-is' import type {IconProps} from '@primer/octicons-react' import CounterLabel from '../../CounterLabel' -import {type SxProp} from '../../sx' import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../../utils/polymorphic' import classes from './UnderlineTabbedInterface.module.css' import {clsx} from 'clsx' -import {BoxWithFallback} from './BoxWithFallback' // The gap between the list items. It is a constant because the gap is used to calculate the possible number of items that can fit in the container. export const GAP = 8 @@ -19,15 +17,15 @@ type UnderlineWrapperProps = { slot?: string as?: React.ElementType className?: string - ref?: React.Ref -} & SxProp + ref?: React.Ref +} -export const UnderlineWrapper = forwardRef( - ({children, className, ...rest}: PropsWithChildren, forwardedRef) => { +export const UnderlineWrapper = forwardRef>( + ({children, className, ...rest}, forwardedRef) => { return ( - +
{children} - +
) }, ) @@ -53,24 +51,12 @@ export type UnderlineItemProps = { icon?: FC | React.ReactElement id?: string ref?: React.Ref -} & SxProp +} -export const UnderlineItem = forwardRef( - ( - { - as = 'a', - children, - counter, - icon: Icon, - iconsVisible, - loadingCounters, - className, - ...rest - }: PropsWithChildren, - forwardedRef, - ) => { +export const UnderlineItem = forwardRef>( + ({as = 'a', children, counter, icon: Icon, iconsVisible, loadingCounters, className, ...rest}, forwardedRef) => { return ( - +
{iconsVisible && Icon && {isElement(Icon) ? Icon : }} {children && ( @@ -88,7 +74,7 @@ export const UnderlineItem = forwardRef( ) ) : null} - +
) }, ) as PolymorphicForwardRefComponent<'a', UnderlineItemProps> From cd524efc0427faad95f33fc54fc5e094191f43b8 Mon Sep 17 00:00:00 2001 From: "primer[bot]" <119360173+primer[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 13:59:54 -0700 Subject: [PATCH 04/28] Release tracking (rc) (#6707) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 21 ++++++++++++++ examples/codesandbox/package.json | 2 +- examples/nextjs/package.json | 2 +- examples/theming/package.json | 2 +- packages/react/CHANGELOG.md | 46 ++++++++++++++++++++++++++++++ packages/react/package.json | 2 +- packages/styled-react/CHANGELOG.md | 13 +++++++++ packages/styled-react/package.json | 6 ++-- 8 files changed, 87 insertions(+), 7 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 583662f2cc4..36cf79cf968 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -15,18 +15,39 @@ "big-oranges-marry", "bright-dolls-dance", "bright-parents-flow", + "chubby-colts-nail", "cold-teams-buy", + "cruel-papers-film", + "deprecate-textinputwithtokens", + "dirty-chairs-invent", + "few-mails-sing", "five-squids-sin", "gentle-rockets-go", + "great-hats-serve", + "hot-melons-jump", "icy-pianos-say", + "lemon-jokes-camp", "little-peas-mix", "lovely-vans-burn", + "metal-badgers-joke", + "metal-cups-peel", "metal-lamps-appear", + "new-dragons-melt", + "new-shrimps-appear", + "nine-cobras-talk", + "orange-taxis-rhyme", + "pretty-women-sing", "proud-chairs-study", + "rich-walls-fold", "salty-geese-own", + "seven-coats-hang", + "seven-forks-join", "soft-islands-warn", "stale-wasps-smell", + "strange-knives-study", + "strange-peas-kiss", "strong-falcons-design", + "thin-oranges-lick", "three-hounds-refuse", "tricky-eggs-cross", "wet-crews-drum", diff --git a/examples/codesandbox/package.json b/examples/codesandbox/package.json index 5bef21f9189..3c9b40e48d6 100644 --- a/examples/codesandbox/package.json +++ b/examples/codesandbox/package.json @@ -17,7 +17,7 @@ "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.3", - "@primer/react": "38.0.0-rc.1", + "@primer/react": "38.0.0-rc.2", "styled-components": "5.x", "typescript": "^5.9.2", "vite": "^7.1.3" diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index daa43de3cfb..bd3e4623f06 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -10,7 +10,7 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@primer/react": "38.0.0-rc.1", + "@primer/react": "38.0.0-rc.2", "next": "^15.2.3", "react": "18.3.1", "react-dom": "18.3.1", diff --git a/examples/theming/package.json b/examples/theming/package.json index 802f4942b05..a5de9b27c03 100644 --- a/examples/theming/package.json +++ b/examples/theming/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@primer/octicons-react": "^19.14.0", - "@primer/react": "38.0.0-rc.1", + "@primer/react": "38.0.0-rc.2", "clsx": "^2.1.1", "next": "^15.2.3", "react": "18.3.1", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 0754c00ae90..84c70215fad 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,51 @@ # @primer/react +## 38.0.0-rc.2 + +### Major Changes + +- [#6634](https://github.com/primer/react/pull/6634) [`d883432`](https://github.com/primer/react/commit/d883432010274cf87691a9affb0e012764b2cdae) Thanks [@TylerJDev](https://github.com/TylerJDev)! - CircleOcticon: Remove component `CircleOcticon` + +- [#6713](https://github.com/primer/react/pull/6713) [`7d7b797`](https://github.com/primer/react/commit/7d7b797b7696af8dd9533e501f62f3666982307d) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Deprecate TextInputWithTokens component. The component has been moved to the deprecated entrypoint due to low usage and accessibility implications. Import from `@primer/react/deprecated` instead of `@primer/react`. + +- [#6272](https://github.com/primer/react/pull/6272) [`d74d73e`](https://github.com/primer/react/commit/d74d73e413a9941cdc74c6f5a2cf6b1be9e7e8db) Thanks [@llastflowers](https://github.com/llastflowers)! - remove unused `contrast` from Select component + +- [#6652](https://github.com/primer/react/pull/6652) [`c6d923f`](https://github.com/primer/react/commit/c6d923f93c0cb40453f1a9dab9209a9caeb87bce) Thanks [@llastflowers](https://github.com/llastflowers)! - Update AvatarStack component to no longer support sx + +- [#6716](https://github.com/primer/react/pull/6716) [`e177d55`](https://github.com/primer/react/commit/e177d551730a30a0f3cddf97fb55ee1ca54c784a) Thanks [@liuliu-dev](https://github.com/liuliu-dev)! - Remove sx prop support from the SelectPanel component. + +- [#6737](https://github.com/primer/react/pull/6737) [`2d01fc4`](https://github.com/primer/react/commit/2d01fc4116ea5bf77dcaae4674aa80930ebe4917) Thanks [@liuliu-dev](https://github.com/liuliu-dev)! - Remove sx prop support from the Select component. + +- [#6706](https://github.com/primer/react/pull/6706) [`e3f26cc`](https://github.com/primer/react/commit/e3f26ccbcf40b38cea75f32970ddb23865d7b827) Thanks [@TylerJDev](https://github.com/TylerJDev)! - Deprecate CircleBadge component + +- [#6676](https://github.com/primer/react/pull/6676) [`ab5ffb0`](https://github.com/primer/react/commit/ab5ffb00d6e54224542ee60bcc23915b0bb65b15) Thanks [@mperrotti](https://github.com/mperrotti)! - Removes styled-system and related utilities from Caret.tsx, IssueLabelToken.tsx, StateLabel.tsx, ToggleSwitch.tsx, and deprecated/ActionList/List.tsx + + Removes WidthProps from ProgressBar.tsx + +- [#6735](https://github.com/primer/react/pull/6735) [`45a52c1`](https://github.com/primer/react/commit/45a52c17cc72af52d123d7104b2d395cd2ca61c8) Thanks [@liuliu-dev](https://github.com/liuliu-dev)! - Update SideNav component to no longer support sx. + +- [#6682](https://github.com/primer/react/pull/6682) [`5bbaae7`](https://github.com/primer/react/commit/5bbaae78f732df2470c1ea7933863ef8a3f9681c) Thanks [@llastflowers](https://github.com/llastflowers)! - Update LabelGroup component to no longer support sx + +- [#6680](https://github.com/primer/react/pull/6680) [`5c30443`](https://github.com/primer/react/commit/5c3044342cd2214bbd9d1d50a704d8789ca019d4) Thanks [@llastflowers](https://github.com/llastflowers)! - Update Details component to no longer support sx + +- [#6625](https://github.com/primer/react/pull/6625) [`65ae375`](https://github.com/primer/react/commit/65ae3757c1828bb5db5b5dd24d4ce743c679cf28) Thanks [@llastflowers](https://github.com/llastflowers)! - Update BranchName component to no longer support sx + +### Minor Changes + +- [#6726](https://github.com/primer/react/pull/6726) [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e) Thanks [@joshblack](https://github.com/joshblack)! - Add ProgressBarItemProps and ProgressBarItemProps type exports to @primer/react + +- [#6726](https://github.com/primer/react/pull/6726) [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e) Thanks [@joshblack](https://github.com/joshblack)! - Add ToggleSwitchProps type to package exports + +### Patch Changes + +- [#6701](https://github.com/primer/react/pull/6701) [`1aa7404`](https://github.com/primer/react/commit/1aa7404f4070244083b9b05394921cda4dfe31c6) Thanks [@pksjce](https://github.com/pksjce)! - Banner: Should prefer aria-labelled-by over aria-label + +- [#6715](https://github.com/primer/react/pull/6715) [`6def61e`](https://github.com/primer/react/commit/6def61e2286df882b5f15e329c801acd5bd29595) Thanks [@liuliu-dev](https://github.com/liuliu-dev)! - Remove sx from the SkeletonBox component. + +- [#6750](https://github.com/primer/react/pull/6750) [`0077b96`](https://github.com/primer/react/commit/0077b968f45fad50cb7abe52bd0cb442504279c2) Thanks [@pksjce](https://github.com/pksjce)! - v38: Make sure Banner is exported from main and experimental + +- [#6751](https://github.com/primer/react/pull/6751) [`c8f3879`](https://github.com/primer/react/commit/c8f3879b0ce184c785573bfccd84aef0b8ef54ef) Thanks [@pksjce](https://github.com/pksjce)! - v38: Move pointerbox to deprecated still maintaining the main export + ## 38.0.0-rc.1 ### Major Changes diff --git a/packages/react/package.json b/packages/react/package.json index caddc4afc2e..726e36710c9 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@primer/react", - "version": "38.0.0-rc.1", + "version": "38.0.0-rc.2", "description": "An implementation of GitHub's Primer Design System using React", "main": "lib/index.js", "module": "lib-esm/index.js", diff --git a/packages/styled-react/CHANGELOG.md b/packages/styled-react/CHANGELOG.md index 4d37b6ba08c..f129f58cb18 100644 --- a/packages/styled-react/CHANGELOG.md +++ b/packages/styled-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @primer/styled-react +## 1.0.0-rc.2 + +### Patch Changes + +- [#6726](https://github.com/primer/react/pull/6726) [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e) Thanks [@joshblack](https://github.com/joshblack)! - Refactor ToggleSwitch export type to match original type from @primer/react + +- [#6726](https://github.com/primer/react/pull/6726) [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e) Thanks [@joshblack](https://github.com/joshblack)! - Remove several components that have no sx usage + +- [#6703](https://github.com/primer/react/pull/6703) [`f87899b`](https://github.com/primer/react/commit/f87899b766648ba6837af8efb8b6fdb44b79159a) Thanks [@siddharthkp](https://github.com/siddharthkp)! - Export theming utilities from styled-react + +- Updated dependencies [[`d883432`](https://github.com/primer/react/commit/d883432010274cf87691a9affb0e012764b2cdae), [`7d7b797`](https://github.com/primer/react/commit/7d7b797b7696af8dd9533e501f62f3666982307d), [`d74d73e`](https://github.com/primer/react/commit/d74d73e413a9941cdc74c6f5a2cf6b1be9e7e8db), [`c6d923f`](https://github.com/primer/react/commit/c6d923f93c0cb40453f1a9dab9209a9caeb87bce), [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e), [`1aa7404`](https://github.com/primer/react/commit/1aa7404f4070244083b9b05394921cda4dfe31c6), [`e177d55`](https://github.com/primer/react/commit/e177d551730a30a0f3cddf97fb55ee1ca54c784a), [`6def61e`](https://github.com/primer/react/commit/6def61e2286df882b5f15e329c801acd5bd29595), [`0077b96`](https://github.com/primer/react/commit/0077b968f45fad50cb7abe52bd0cb442504279c2), [`2d01fc4`](https://github.com/primer/react/commit/2d01fc4116ea5bf77dcaae4674aa80930ebe4917), [`50c230f`](https://github.com/primer/react/commit/50c230f01b7e4b7c4664a676381737f995bf644e), [`e3f26cc`](https://github.com/primer/react/commit/e3f26ccbcf40b38cea75f32970ddb23865d7b827), [`ab5ffb0`](https://github.com/primer/react/commit/ab5ffb00d6e54224542ee60bcc23915b0bb65b15), [`45a52c1`](https://github.com/primer/react/commit/45a52c17cc72af52d123d7104b2d395cd2ca61c8), [`5bbaae7`](https://github.com/primer/react/commit/5bbaae78f732df2470c1ea7933863ef8a3f9681c), [`5c30443`](https://github.com/primer/react/commit/5c3044342cd2214bbd9d1d50a704d8789ca019d4), [`65ae375`](https://github.com/primer/react/commit/65ae3757c1828bb5db5b5dd24d4ce743c679cf28), [`c8f3879`](https://github.com/primer/react/commit/c8f3879b0ce184c785573bfccd84aef0b8ef54ef)]: + - @primer/react@38.0.0-rc.2 + ## 1.0.0-rc.1 ### Minor Changes diff --git a/packages/styled-react/package.json b/packages/styled-react/package.json index d989038632a..32e6ced69f7 100644 --- a/packages/styled-react/package.json +++ b/packages/styled-react/package.json @@ -1,6 +1,6 @@ { "name": "@primer/styled-react", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "type": "module", "exports": { ".": { @@ -29,7 +29,7 @@ "devDependencies": { "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", - "@primer/react": "^38.0.0-rc.1", + "@primer/react": "^38.0.0-rc.2", "@rollup/plugin-babel": "^6.0.4", "@types/react": "18.3.11", "@types/react-dom": "18.3.1", @@ -44,7 +44,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@primer/react": "38.0.0-rc.1", + "@primer/react": "38.0.0-rc.2", "@types/react": "18.x || 19.x", "@types/react-dom": "18.x || 19.x", "@types/react-is": "18.x || 19.x", From 7318c1bd2d50b12447af43570dd126eb53650fcf Mon Sep 17 00:00:00 2001 From: LiuLiu Date: Thu, 11 Sep 2025 14:26:04 -0700 Subject: [PATCH 05/28] Remove `sx` from the `SegmentedControl` component (#6741) --- .changeset/witty-chicken-leave.md | 5 +++ e2e/components/SegmentedControl.test.ts | 8 ---- .../SegmentedControl.dev.stories.tsx | 44 ------------------- .../SegmentedControl.docs.json | 21 ++------- .../src/SegmentedControl/SegmentedControl.tsx | 28 +++--------- .../SegmentedControlButton.tsx | 20 +++------ .../SegmentedControlIconButton.tsx | 36 +++++---------- packages/react/src/SegmentedControl/index.ts | 4 ++ .../__snapshots__/exports.test.ts.snap | 3 ++ packages/react/src/index.ts | 5 +++ .../__tests__/primer-react.browser.test.tsx | 20 ++++++++- packages/styled-react/src/index.tsx | 30 +++++++++++-- 12 files changed, 89 insertions(+), 135 deletions(-) create mode 100644 .changeset/witty-chicken-leave.md diff --git a/.changeset/witty-chicken-leave.md b/.changeset/witty-chicken-leave.md new file mode 100644 index 00000000000..e50471e3714 --- /dev/null +++ b/.changeset/witty-chicken-leave.md @@ -0,0 +1,5 @@ +--- +'@primer/react': major +--- + +Remove sx prop support from the SegmentedControl component. diff --git a/e2e/components/SegmentedControl.test.ts b/e2e/components/SegmentedControl.test.ts index 5247403ed1d..8ab6ba8b427 100644 --- a/e2e/components/SegmentedControl.test.ts +++ b/e2e/components/SegmentedControl.test.ts @@ -60,14 +60,6 @@ const stories = [ title: 'Dev: With Css', id: 'components-segmentedcontrol-dev--with-css', }, - { - title: 'Dev: With Sx', - id: 'components-segmentedcontrol-dev--with-sx', - }, - { - title: 'Dev: With Sx And Css', - id: 'components-segmentedcontrol-dev--with-sx-and-css', - }, ] as const test.describe('SegmentedControl', () => { diff --git a/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx b/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx index 3f44f7db7db..38519ec7f5a 100644 --- a/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControl.dev.stories.tsx @@ -31,47 +31,3 @@ export const WithCss = () => ( ) - -export const WithSx = () => ( - - - Preview - - - Raw - - - Blame - - -) - -export const WithSxAndCss = () => ( - - - Preview - - - Raw - - - Blame - - -) diff --git a/packages/react/src/SegmentedControl/SegmentedControl.docs.json b/packages/react/src/SegmentedControl/SegmentedControl.docs.json index a4883889937..7c80557edee 100644 --- a/packages/react/src/SegmentedControl/SegmentedControl.docs.json +++ b/packages/react/src/SegmentedControl/SegmentedControl.docs.json @@ -78,12 +78,7 @@ "type": "'small' | 'medium'", "description": "The size of the buttons", "defaultValue": "" - }, - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true - }, + }, { "name": "ref", "type": "React.RefObject" @@ -110,12 +105,7 @@ "type": "boolean", "defaultValue": "", "description": "Whether the segment is selected. This is used for uncontrolled SegmentedControls to pick one SegmentedControlButton that is selected on the initial render." - }, - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true - }, + }, { "name": "ref", "type": "React.RefObject" @@ -156,12 +146,7 @@ "type": "boolean", "defaultValue": "", "description": "Whether the segment is selected. This is used for uncontrolled SegmentedControls to pick one SegmentedControlButton that is selected on the initial render." - }, - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true - }, + }, { "name": "ref", "type": "React.RefObject" diff --git a/packages/react/src/SegmentedControl/SegmentedControl.tsx b/packages/react/src/SegmentedControl/SegmentedControl.tsx index 84946c4f518..f0e3ce38fd0 100644 --- a/packages/react/src/SegmentedControl/SegmentedControl.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControl.tsx @@ -6,18 +6,14 @@ import SegmentedControlIconButton from './SegmentedControlIconButton' import {ActionList} from '../ActionList' import {ActionMenu} from '../ActionMenu' import {useTheme} from '../ThemeProvider' -import type {SxProp} from '../sx' import type {ResponsiveValue} from '../hooks/useResponsiveValue' import {useResponsiveValue} from '../hooks/useResponsiveValue' import type {WidthOnlyViewportRangeKeys} from '../utils/types/ViewportRangeKeys' import {isElement} from 'react-is' - import classes from './SegmentedControl.module.css' - import {clsx} from 'clsx' -import {BoxWithFallback} from '../internal/components/BoxWithFallback' -type SegmentedControlProps = { +export type SegmentedControlProps = { 'aria-label'?: string 'aria-labelledby'?: string 'aria-describedby'?: string @@ -30,7 +26,7 @@ type SegmentedControlProps = { /** Configure alternative ways to render the control when it gets rendered in tight spaces */ variant?: 'default' | Partial> className?: string -} & SxProp +} const Root: React.FC> = ({ 'aria-label': ariaLabel, @@ -39,7 +35,6 @@ const Root: React.FC> = ({ fullWidth, onChange, size, - sx: sxProp, variant = 'default', className, ...rest @@ -153,9 +148,7 @@ const Root: React.FC> = ({ ) : ( // Render a segmented control - > = ({ index === selectedIndex || index === selectedIndex - 1 ? 'transparent' : theme?.colors.border.default, ...child.props.style, }, - sx: child.props.sx, } // Render the 'hideLabels' variant of the SegmentedControlButton @@ -201,7 +193,6 @@ const Root: React.FC> = ({ children: childPropsChildren, ...restChildProps } = child.props - const {sx: sharedSxProp, ...restSharedChildProps} = sharedChildProps if (!leadingIcon) { // eslint-disable-next-line no-console console.warn('A `leadingIcon` prop is required when hiding visible labels') @@ -210,14 +201,9 @@ const Root: React.FC> = ({ ) @@ -227,7 +213,7 @@ const Root: React.FC> = ({ // Render the children as-is and add the shared child props return React.cloneElement(child, sharedChildProps) })} - + ) } diff --git a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx index cafd127ca20..3aa74f23312 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlButton.tsx @@ -1,12 +1,10 @@ import type {ButtonHTMLAttributes} from 'react' import type React from 'react' import type {IconProps} from '@primer/octicons-react' -import type {SxProp} from '../sx' import {isElement} from 'react-is' import classes from './SegmentedControl.module.css' import {clsx} from 'clsx' -import {BoxWithFallback} from '../internal/components/BoxWithFallback' export type SegmentedControlButtonProps = { /** The visible label rendered in the button */ @@ -17,28 +15,20 @@ export type SegmentedControlButtonProps = { defaultSelected?: boolean /** The leading icon comes before item label */ leadingIcon?: React.FunctionComponent> | React.ReactElement -} & SxProp & - ButtonHTMLAttributes +} & ButtonHTMLAttributes const SegmentedControlButton: React.FC> = ({ children, leadingIcon: LeadingIcon, selected, - sx: sxProp, className, // Note: this value is read in the `SegmentedControl` component to determine which button is selected but we do not need to apply it to an underlying element defaultSelected: _defaultSelected, ...rest }) => { return ( - - +
  • + +
  • ) } diff --git a/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx b/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx index 399f67be575..446ebc4d4ee 100644 --- a/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx +++ b/packages/react/src/SegmentedControl/SegmentedControlIconButton.tsx @@ -1,14 +1,12 @@ import type {ButtonHTMLAttributes} from 'react' import type React from 'react' import type {IconProps} from '@primer/octicons-react' -import type {SxProp} from '../sx' import {isElement} from 'react-is' import {useFeatureFlag} from '../FeatureFlags' import type {TooltipDirection} from '../TooltipV2' import classes from './SegmentedControl.module.css' import {clsx} from 'clsx' import {Tooltip} from '../TooltipV2' -import {BoxWithFallback} from '../internal/components/BoxWithFallback' export type SegmentedControlIconButtonProps = { 'aria-label': string @@ -22,14 +20,12 @@ export type SegmentedControlIconButtonProps = { description?: string /** The direction for the tooltip.*/ tooltipDirection?: TooltipDirection -} & SxProp & - ButtonHTMLAttributes +} & ButtonHTMLAttributes export const SegmentedControlIconButton: React.FC> = ({ 'aria-label': ariaLabel, icon: Icon, selected, - sx: sxProp, className, description, tooltipDirection, @@ -38,19 +34,14 @@ export const SegmentedControlIconButton: React.FC +
  • - {isElement(Icon) ? Icon : } - + - +
  • ) } else { // This can be removed when primer_react_segmented_control_tooltip feature flag is GA-ed. return ( - - + + ) } } diff --git a/packages/react/src/SegmentedControl/index.ts b/packages/react/src/SegmentedControl/index.ts index 44bd6215d6b..abb2932cb5e 100644 --- a/packages/react/src/SegmentedControl/index.ts +++ b/packages/react/src/SegmentedControl/index.ts @@ -1 +1,5 @@ export * from './SegmentedControl' + +export type {SegmentedControlProps} from './SegmentedControl' +export type {SegmentedControlButtonProps} from './SegmentedControlButton' +export type {SegmentedControlIconButtonProps} from './SegmentedControlIconButton' diff --git a/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap index 0c462053e33..7570eb50cdd 100644 --- a/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap @@ -130,6 +130,9 @@ exports[`@primer/react > should not update exports without a semver change 1`] = "type RelativeTimeProps", "ResponsiveValue", "SegmentedControl", + "type SegmentedControlButtonProps", + "type SegmentedControlIconButtonProps", + "type SegmentedControlProps", "Select", "SelectPanel", "type SelectPanelGroupedListProps", diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 2d2c5365d04..ad864dc1983 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -134,6 +134,11 @@ export {default as RadioGroup} from './RadioGroup' export type {RelativeTimeProps} from './RelativeTime' export {default as RelativeTime} from './RelativeTime' export {SegmentedControl} from './SegmentedControl' +export type { + SegmentedControlProps, + SegmentedControlButtonProps, + SegmentedControlIconButtonProps, +} from './SegmentedControl' // Curently there is a duplicate Select component at the root of the dir, so need to be explicit about exporting from the src/Select dir export {default as Select} from './Select' export type {SelectProps} from './Select' diff --git a/packages/styled-react/src/__tests__/primer-react.browser.test.tsx b/packages/styled-react/src/__tests__/primer-react.browser.test.tsx index 7909455e5ae..f0340084e04 100644 --- a/packages/styled-react/src/__tests__/primer-react.browser.test.tsx +++ b/packages/styled-react/src/__tests__/primer-react.browser.test.tsx @@ -328,12 +328,30 @@ describe('@primer/react', () => { expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)') }) + test('SegmentedControl supports `sx` prop', () => { + render() + expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)') + }) + test('SegmentedControl.Button supports `sx` prop', () => { - const {container} = render( + render( test , ) + const buttonElement = screen.getByTestId('component') + expect(window.getComputedStyle(buttonElement).backgroundColor).toBe('rgb(255, 0, 0)') + }) + + test('SegmentedControl.IconButton supports `sx` prop', () => { + const {container} = render( + } + />, + ) expect(window.getComputedStyle(container.firstElementChild!).backgroundColor).toBe('rgb(255, 0, 0)') }) diff --git a/packages/styled-react/src/index.tsx b/packages/styled-react/src/index.tsx index bb1405345f0..953d20b1d75 100644 --- a/packages/styled-react/src/index.tsx +++ b/packages/styled-react/src/index.tsx @@ -10,8 +10,12 @@ import { type SubNavLinkProps as PrimerSubNavLinkProps, ToggleSwitch as PrimerToggleSwitch, type ToggleSwitchProps as PrimerToggleSwitchProps, + type SegmentedControlProps as PrimerSegmentedControlProps, + SegmentedControl as PrimerSegmentedControl, + type SegmentedControlButtonProps as PrimerSegmentedControlButtonProps, + type SegmentedControlIconButtonProps as PrimerSegmentedControlIconButtonProps, } from '@primer/react' -import {forwardRef} from 'react' +import React, {forwardRef, type PropsWithChildren} from 'react' import type { BackgroundProps, BorderProps, @@ -37,6 +41,27 @@ type StyledProps = SxProp & PositionProps & ShadowProps +type SegmentedControlProps = PropsWithChildren & SxProp +type SegmentedControlButtonProps = PropsWithChildren & SxProp +type SegmentedControlIconButtonProps = PropsWithChildren & SxProp + +const SegmentedControlButton = (props: SegmentedControlButtonProps) => { + return +} + +const SegmentedControlIconButton = (props: SegmentedControlIconButtonProps) => { + return +} + +const SegmentedControlImpl = (props: SegmentedControlProps) => { + return +} + +const SegmentedControl = Object.assign(SegmentedControlImpl, { + Button: SegmentedControlButton, + IconButton: SegmentedControlIconButton, +}) + type StateLabelProps = PrimerStateLabelProps & SxProp const StateLabel = forwardRef(function StateLabel(props, ref) { @@ -65,7 +90,7 @@ const ToggleSwitch = forwardRef(function T return }) -export {StateLabel, SubNav, ToggleSwitch} +export {SegmentedControl, StateLabel, SubNav, ToggleSwitch} export { ActionList, @@ -96,7 +121,6 @@ export { ProgressBar, RadioGroup, RelativeTime, - SegmentedControl, Select, Spinner, Text, From 192cda225628a24f93f404bb028c13c0b865c82b Mon Sep 17 00:00:00 2001 From: Marie Lucca <40550942+francinelucca@users.noreply.github.com> Date: Thu, 11 Sep 2025 17:27:23 -0400 Subject: [PATCH 06/28] chore: use Banner instead of custom implementation for SelectPanel notice (#6669) --- .changeset/cuddly-cows-trade.md | 5 +++ ...-Keybinding-Hint-dark-tritanopia-linux.png | Bin 6050 -> 5923 bytes ...-on-Description-light-colorblind-linux.png | Bin 8432 -> 8167 bytes ...anel-features--with-notice-light-linux.png | Bin 35654 -> 35145 bytes packages/react/src/Banner/Banner.docs.json | 7 ++++- packages/react/src/Banner/Banner.module.css | 4 +++ packages/react/src/Banner/Banner.tsx | 6 ++++ .../src/SelectPanel/SelectPanel.module.css | 12 +------- .../src/SelectPanel/SelectPanel.test.tsx | 2 +- .../react/src/SelectPanel/SelectPanel.tsx | 29 +++++++----------- 10 files changed, 34 insertions(+), 31 deletions(-) create mode 100644 .changeset/cuddly-cows-trade.md diff --git a/.changeset/cuddly-cows-trade.md b/.changeset/cuddly-cows-trade.md new file mode 100644 index 00000000000..35cdaa4d810 --- /dev/null +++ b/.changeset/cuddly-cows-trade.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +chore: use Banner instead of custom implementation for SelectPanel notice diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Keybinding-Hint-dark-tritanopia-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Keybinding-Hint-dark-tritanopia-linux.png index a7825d1ae363cc7f3d5a290bb1fcd57fdc173307..7cb1bb48032298d7b0635c7787a0b4f2c0c3913f 100644 GIT binary patch literal 5923 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 YmeS}hVlVgsx~Kucf#G`?yAx0U2KHwPEC2ui diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Keybinding-Hint-on-Description-light-colorblind-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Keybinding-Hint-on-Description-light-colorblind-linux.png index d31c707d77174a2a54cbe3a3249c1697edfd8153..dbef8292edd50f863f368a13ccb83c64dbecd2a4 100644 GIT binary patch literal 8167 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ℜ~}_7DlX z8Z40_@wBgC%D$nf*ToV9IxG0j^7}#({cb3RZWw@x58hpUnde*_tamxnVhr3Bc5Y|C zCmji&JzzqoJ{>M3vxFCV-36q%>>+1^N*5|&CZOU6gEPBYp^;6Se~sS z7U7FfU+oKc^r7--c+Uk7*taFJ24NMMjQ5bYgsHRC4wRfJnT)wAjYo%Ldi-qg4Ge~H z($6+Dse>#TDS)lM4o?@mrcA$0mf->7`76$WaJR{^nSI4KYV5s-8F-x=?|iplp~ZoG zz|PJ#TYF;{S}LTY+BPvdgwF!K7l0D`Kqs$pJO$730lIG3aIQZakISp1iF^{rTfto_ zOjlx^h0!c1mFXJjr;6Br-IF&2WPT5KXXQ+C!^5kdzYC|#a%CC=xO>r5LDP4UUf z9muzIwMxpGDNh#>Ou2=5^OpS&T@l8tS5QO)X6U!$Zs~E^#69N9cU3sxSM@i6>^D>p zbpI!myK0yoRFC8!O!_?MZb7wwSpjT(e(q}2bYg6Wq}ZVzuVMITFU0g5x%}ZKe#hCG z0mFgU*hIcl$ERPXOzv@_{^*?Uh7|dbUomedGF0IZ{bZ7rb&^u@ebV`vMw;kAQP*?3 z(iKkc>dt}C)VcR7wx$f6s8Mp``j#|B{qc9?a6TZy5sY`&>es&)?m0!VU`x7c4QEce z9b}qbm~#=fIS=cYnX`?1yqw@yo^P=?sN4Sp^*I-_B*p{XfgZ(b=Hg_R1dbhxoX{B9 zFNZm&yeC^zrbFvbDPg$Dr+rX_dlp5A?UHCF!Ev4EUl6OzJENf@q^getbHjX-YbgI& zqVB14TZMOK^8UVNS(uV*CBcnzDKM6D}&eV={lX)H+Ed zdro?kJfcD*O5!nH9W$OnRB%TqI5IDu)wPqvd(uVR#d=vnlQAoL<*^x5t7~5vj(z)W zFZ1J0>|wVWh&fkIFHR4XXlG~c-4tP28)X#w+-vKi zm1$|!h)RSXPzq-ll5TnPTR4Y#xAtsJ@tEu;aVAMyKtbhAfZfH=tJ!pXd`XL-lB^^$ zy=Y-r#rx>@Pfi5F;g!3CI%>O;PA3`o+ozt%>6v{3aN@khvDmR+!Hj+TF{gwCF}{w- zfW|&`PPhI}{X*U1n|X<3upBY>^=`)!l|p1#rMFp4Me0ipKZ*KoYURSTIcYQ?Q-jq` zW6O)fp9!uKF)GcwqfqBmo#bojXjI{W&BGw;U7~+r7d!gMe)M*WRM%5XEC5KH)g_Z# z=5ES3A)~}IJ5*gdQCjXzWlN9y8jS`%7U*_GWGu*22pZ-3PPi$SiO}+NK)Zc;P9%B&YUEjc&Yyx=y7tELAC3 zsh}s(XY~jH!DL3#-R@^^vad*$f=kXEIPXnby0{`mWZNHREW~txq5!`ZQ$dRSZV!gXJ=uf&+4b6!*5GH zQeNj@cJ|K#O#|o&;RUX^k%kl7D;gjWEzfSvC?Bg5r!e2TkW3Ee=8tRtwY;PQ}ed4eFWtMaRKbaa)hHT16Xp`)eU>d-iFIXAuki99}?JY(x z^Ma`{L8s3qjvvg_Ip)$+=fXBX-evgT(QVA#2(@%i(9V7rg(kT?z3%)tr6xe8(T6Z| z@ab0HKL+npTWYiB*qDD7r>t4FKRnG=FtYWC!0dk+o%P^)LDm@pI{x)WSZ{>&Mp$oz z^%40$&q3E!aa|SHRdHPv*H!WVmnwcVnL!{X(>r!YB=~pz#x-wl2HBAC#V3zvRk2_M Oa^iTvG4hcM*Z%_?Jop~~ literal 8432 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 Ib@}&y1DC0hV*mgE diff --git a/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-features--with-notice-light-linux.png b/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-features--with-notice-light-linux.png index dfb8b8b54e014df2bb99785dc6f9977dbce7b10f..edef41f5a10541913566b17c5208c9f3828e8976 100644 GIT binary patch literal 35145 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 F{|BG1ccTCR literal 35654 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 & { * Specify the type of the Banner */ variant?: BannerVariant + + /** + * Specify the layout of the Banner. Compact layout will reduce the padding. + */ + layout?: 'default' | 'compact' } const iconForVariant: Record = { @@ -140,6 +145,7 @@ export const Banner = React.forwardRef(function Banner data-variant={variant} tabIndex={-1} ref={ref} + data-layout={rest.layout || 'default'} >
    {icon && supportsCustomIcon ? icon : iconForVariant[variant]}
    diff --git a/packages/react/src/SelectPanel/SelectPanel.module.css b/packages/react/src/SelectPanel/SelectPanel.module.css index 4a46aae1204..3a999ad1a60 100644 --- a/packages/react/src/SelectPanel/SelectPanel.module.css +++ b/packages/react/src/SelectPanel/SelectPanel.module.css @@ -53,19 +53,9 @@ } .Notice { - display: flex; - padding-top: var(--base-size-12); - padding-right: var(--base-size-16); - padding-bottom: var(--base-size-12); - padding-left: var(--base-size-16); margin-top: var(--base-size-4); margin-right: var(--base-size-8); margin-left: var(--base-size-8); - font-size: var(--text-body-size-small); - flex-direction: row; - border: var(--borderWidth-thin) solid; - gap: var(--base-size-8); - border-radius: var(--borderRadius-medium); } .Notice a { @@ -85,7 +75,7 @@ border-color: var(--borderColor-attention-muted); } -.Notice:where([data-variant='error']) { +.Notice:where([data-variant='critical']) { color: var(--fgColor-danger); background-color: var(--bgColor-danger-muted); border-color: var(--borderColor-danger-muted); diff --git a/packages/react/src/SelectPanel/SelectPanel.test.tsx b/packages/react/src/SelectPanel/SelectPanel.test.tsx index 9d2c70285cd..b42041c08c6 100644 --- a/packages/react/src/SelectPanel/SelectPanel.test.tsx +++ b/packages/react/src/SelectPanel/SelectPanel.test.tsx @@ -695,7 +695,7 @@ for (const usingRemoveActiveDescendant of [false, true]) { expect(screen.getByRole('combobox').hasAttribute('aria-describedby')).toBeTruthy() }) - it.skip('should announce initially focused item', async () => { + it('should announce initially focused item', async () => { const user = userEvent.setup() renderWithFlag(, usingRemoveActiveDescendant) diff --git a/packages/react/src/SelectPanel/SelectPanel.tsx b/packages/react/src/SelectPanel/SelectPanel.tsx index 455f67c6a5b..4c7dae093d9 100644 --- a/packages/react/src/SelectPanel/SelectPanel.tsx +++ b/packages/react/src/SelectPanel/SelectPanel.tsx @@ -1,12 +1,4 @@ -import { - AlertIcon, - InfoIcon, - SearchIcon, - StopIcon, - TriangleDownIcon, - XIcon, - type IconProps, -} from '@primer/octicons-react' +import {SearchIcon, TriangleDownIcon, XIcon, type IconProps} from '@primer/octicons-react' import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react' import type {AnchoredOverlayProps} from '../AnchoredOverlay' import {AnchoredOverlay} from '../AnchoredOverlay' @@ -34,6 +26,7 @@ import {clsx} from 'clsx' import {debounce} from '@github/mini-throttle' import {useResponsiveValue} from '../hooks/useResponsiveValue' import type {ButtonProps, LinkButtonProps} from '../Button/types' +import {Banner} from '../Banner' // we add a delay so that it does not interrupt default screen reader announcement and queues after it const SHORT_DELAY_MS = 500 @@ -675,12 +668,6 @@ function Panel({ } } - const iconForNoticeVariant = { - info: , - warning: , - error: , - } - function getMessage() { if (items.length === 0 && !message) { return DefaultEmptyMessage @@ -826,9 +813,15 @@ function Panel({ ) : null}
    {notice && ( -
    - {iconForNoticeVariant[notice.variant]} -
    {notice.text}
    +
    +
    )} Date: Thu, 11 Sep 2025 21:32:57 +0000 Subject: [PATCH 07/28] chore(deps-dev): bump @modelcontextprotocol/inspector from 0.14.1 to 0.16.6 (#6808) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: primer[bot] <119360173+primer[bot]@users.noreply.github.com> --- package-lock.json | 401 +++++++++++++++++++++++++++++++------- packages/mcp/package.json | 2 +- 2 files changed, 327 insertions(+), 76 deletions(-) diff --git a/package-lock.json b/package-lock.json index e436ebc6a50..cb18c7a123e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4130,6 +4130,8 @@ }, "node_modules/@floating-ui/core": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", "dev": true, "license": "MIT", "dependencies": { @@ -4137,7 +4139,9 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.7.3", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", "dev": true, "license": "MIT", "dependencies": { @@ -4146,11 +4150,13 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.3" + "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", @@ -4159,6 +4165,8 @@ }, "node_modules/@floating-ui/utils": { "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "dev": true, "license": "MIT" }, @@ -5038,7 +5046,9 @@ "license": "BSD-2-Clause" }, "node_modules/@modelcontextprotocol/inspector": { - "version": "0.14.1", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/inspector/-/inspector-0.16.6.tgz", + "integrity": "sha512-6x6dzTf8MV6z/XIdzr/4EMK4elMn1XUzTJHxczsBePLg1G5VNAM/4g5abNFIB9bzuxJ/1VH8016Vv6S7sj/24Q==", "dev": true, "license": "MIT", "workspaces": [ @@ -5047,27 +5057,32 @@ "cli" ], "dependencies": { - "@modelcontextprotocol/inspector-cli": "^0.14.1", - "@modelcontextprotocol/inspector-client": "^0.14.1", - "@modelcontextprotocol/inspector-server": "^0.14.1", - "@modelcontextprotocol/sdk": "^1.12.1", - "concurrently": "^9.0.1", - "open": "^10.1.0", - "shell-quote": "^1.8.2", + "@modelcontextprotocol/inspector-cli": "^0.16.6", + "@modelcontextprotocol/inspector-client": "^0.16.6", + "@modelcontextprotocol/inspector-server": "^0.16.6", + "@modelcontextprotocol/sdk": "^1.17.5", + "concurrently": "^9.2.0", + "open": "^10.2.0", + "shell-quote": "^1.8.3", "spawn-rx": "^5.1.2", "ts-node": "^10.9.2", - "zod": "^3.23.8" + "zod": "^3.25.76" }, "bin": { "mcp-inspector": "cli/build/cli.js" + }, + "engines": { + "node": ">=22.7.5" } }, "node_modules/@modelcontextprotocol/inspector-cli": { - "version": "0.14.3", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/inspector-cli/-/inspector-cli-0.16.6.tgz", + "integrity": "sha512-28RAaGoN9XgKYvl8kOo9wTHBrLp5Th+biTt5mNGUzowMdcoG/FpI8mHROIhcgDyp+kj0SYR5fmwcb6GIxBnjUw==", "dev": true, "license": "MIT", "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", + "@modelcontextprotocol/sdk": "^1.17.5", "commander": "^13.1.0", "spawn-rx": "^5.1.2" }, @@ -5077,6 +5092,8 @@ }, "node_modules/@modelcontextprotocol/inspector-cli/node_modules/commander": { "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "license": "MIT", "engines": { @@ -5084,11 +5101,13 @@ } }, "node_modules/@modelcontextprotocol/inspector-client": { - "version": "0.14.3", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/inspector-client/-/inspector-client-0.16.6.tgz", + "integrity": "sha512-2dwB0OXI02PTTsECCTIsB9DkERImIrsTAuZW6LlfUojtQMLI5NpuUID4Y4LaYPcdGnxkkkR1eddrPTsuzgabvg==", "dev": true, "license": "MIT", "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", + "@modelcontextprotocol/sdk": "^1.17.5", "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.3", "@radix-ui/react-icons": "^1.3.0", @@ -5103,7 +5122,7 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "^1.0.4", - "lucide-react": "^0.447.0", + "lucide-react": "^0.523.0", "pkce-challenge": "^4.1.0", "prismjs": "^1.30.0", "react": "^18.3.1", @@ -5111,8 +5130,7 @@ "react-simple-code-editor": "^0.14.1", "serve-handler": "^6.1.6", "tailwind-merge": "^2.5.3", - "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" + "zod": "^3.25.76" }, "bin": { "mcp-inspector-client": "bin/start.js" @@ -5120,6 +5138,8 @@ }, "node_modules/@modelcontextprotocol/inspector-client/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -5135,24 +5155,103 @@ }, "node_modules/@modelcontextprotocol/inspector-client/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, + "node_modules/@modelcontextprotocol/inspector-client/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@modelcontextprotocol/inspector-server": { - "version": "0.14.3", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/inspector-server/-/inspector-server-0.16.6.tgz", + "integrity": "sha512-BkE/4K2Y8ZcXK/cGBucG+rLTcTIUAaSyQabxqh0p+ErhkJDmepDvI+63OqQnauWUJydXPZYtBQyHppL4JN7RGw==", "dev": true, "license": "MIT", "dependencies": { - "@modelcontextprotocol/sdk": "^1.12.1", + "@modelcontextprotocol/sdk": "^1.17.5", "cors": "^2.8.5", "express": "^5.1.0", "ws": "^8.18.0", - "zod": "^3.23.8" + "zod": "^3.25.76" }, "bin": { "mcp-inspector-server": "build/index.js" } }, + "node_modules/@modelcontextprotocol/inspector-server/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@modelcontextprotocol/inspector/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@modelcontextprotocol/inspector/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@modelcontextprotocol/inspector/node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, "node_modules/@modelcontextprotocol/inspector/node_modules/define-lazy-prop": { "version": "3.0.0", "dev": true, @@ -5164,6 +5263,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@modelcontextprotocol/inspector/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@modelcontextprotocol/inspector/node_modules/open": { "version": "10.2.0", "dev": true, @@ -5181,8 +5290,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@modelcontextprotocol/inspector/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@modelcontextprotocol/inspector/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.1", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.5.tgz", + "integrity": "sha512-QakrKIGniGuRVfWBdMsDea/dx1PNE739QJ7gCM41s9q+qaCYTHCdsIBXQVVXry3mfWAiaM9kT22Hyz53Uw8mfg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -5867,16 +6004,22 @@ }, "node_modules/@radix-ui/number": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", "dev": true, "license": "MIT" }, "node_modules/@radix-ui/primitive": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", "dev": true, "license": "MIT" }, "node_modules/@radix-ui/react-arrow": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "dev": true, "license": "MIT", "dependencies": { @@ -5898,14 +6041,16 @@ } }, "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", @@ -5928,6 +6073,8 @@ }, "node_modules/@radix-ui/react-collection": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "dev": true, "license": "MIT", "dependencies": { @@ -5953,6 +6100,8 @@ }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -5967,6 +6116,8 @@ }, "node_modules/@radix-ui/react-context": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -5980,19 +6131,21 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.14", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.10", - "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", @@ -6016,6 +6169,8 @@ }, "node_modules/@radix-ui/react-direction": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6029,11 +6184,13 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.10", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", @@ -6055,7 +6212,9 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6070,6 +6229,8 @@ }, "node_modules/@radix-ui/react-focus-scope": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", "dev": true, "license": "MIT", "dependencies": { @@ -6094,6 +6255,8 @@ }, "node_modules/@radix-ui/react-icons": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6102,6 +6265,8 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", "dev": true, "license": "MIT", "dependencies": { @@ -6119,6 +6284,8 @@ }, "node_modules/@radix-ui/react-label": { "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6140,20 +6307,22 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "1.1.14", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.10", - "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", @@ -6176,7 +6345,9 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.2.7", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", "dev": true, "license": "MIT", "dependencies": { @@ -6208,6 +6379,8 @@ }, "node_modules/@radix-ui/react-portal": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6230,7 +6403,9 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.1.4", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6254,6 +6429,8 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6275,11 +6452,13 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.10", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", @@ -6305,21 +6484,23 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.2.5", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", "dev": true, "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.10", - "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", @@ -6348,6 +6529,8 @@ }, "node_modules/@radix-ui/react-slot": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", "dev": true, "license": "MIT", "dependencies": { @@ -6364,17 +6547,19 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.1.12", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { @@ -6393,17 +6578,19 @@ } }, "node_modules/@radix-ui/react-toast": { - "version": "1.2.14", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", @@ -6426,18 +6613,20 @@ } }, "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.7", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", "dev": true, "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.2", + "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", @@ -6460,6 +6649,8 @@ }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6474,6 +6665,8 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", "dev": true, "license": "MIT", "dependencies": { @@ -6492,6 +6685,8 @@ }, "node_modules/@radix-ui/react-use-effect-event": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", "dev": true, "license": "MIT", "dependencies": { @@ -6509,6 +6704,8 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", "dev": true, "license": "MIT", "dependencies": { @@ -6526,6 +6723,8 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6540,6 +6739,8 @@ }, "node_modules/@radix-ui/react-use-previous": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6554,6 +6755,8 @@ }, "node_modules/@radix-ui/react-use-rect": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", "dev": true, "license": "MIT", "dependencies": { @@ -6571,6 +6774,8 @@ }, "node_modules/@radix-ui/react-use-size": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6588,6 +6793,8 @@ }, "node_modules/@radix-ui/react-visually-hidden": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", "dev": true, "license": "MIT", "dependencies": { @@ -6610,6 +6817,8 @@ }, "node_modules/@radix-ui/rect": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "dev": true, "license": "MIT" }, @@ -9051,6 +9260,8 @@ }, "node_modules/aria-hidden": { "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "dev": true, "license": "MIT", "dependencies": { @@ -10280,6 +10491,8 @@ }, "node_modules/class-variance-authority": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10371,6 +10584,8 @@ }, "node_modules/cmdk": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", "dev": true, "license": "MIT", "dependencies": { @@ -11379,6 +11594,8 @@ }, "node_modules/detect-node-es": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "dev": true, "license": "MIT" }, @@ -13989,6 +14206,8 @@ }, "node_modules/get-nonce": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "dev": true, "license": "MIT", "engines": { @@ -15792,11 +16011,13 @@ } }, "node_modules/lucide-react": { - "version": "0.447.0", + "version": "0.523.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.523.0.tgz", + "integrity": "sha512-rUjQoy7egZT9XYVXBK1je9ckBnNp7qzRZOhLQx5RcEp2dCGlXo+mv6vf7Am4LimEcFBJIIZzSGfgTqc9QCrPSw==", "dev": true, "license": "ISC", "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/lz-string": { @@ -18029,6 +18250,8 @@ }, "node_modules/path-is-inside": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true, "license": "(WTFPL OR MIT)" }, @@ -18129,6 +18352,8 @@ }, "node_modules/pkce-challenge": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-4.1.0.tgz", + "integrity": "sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==", "dev": true, "license": "MIT", "engines": { @@ -19723,6 +19948,8 @@ }, "node_modules/prismjs": { "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "dev": true, "license": "MIT", "engines": { @@ -20114,6 +20341,8 @@ }, "node_modules/react-remove-scroll": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", "dev": true, "license": "MIT", "dependencies": { @@ -20138,6 +20367,8 @@ }, "node_modules/react-remove-scroll-bar": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", "dev": true, "license": "MIT", "dependencies": { @@ -20171,6 +20402,8 @@ }, "node_modules/react-simple-code-editor": { "version": "0.14.1", + "resolved": "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.14.1.tgz", + "integrity": "sha512-BR5DtNRy+AswWJECyA17qhUDvrrCZ6zXOCfkQY5zSmb96BVUbpVAv03WpcjcwtCwiLbIANx3gebHOcXYn1EHow==", "dev": true, "license": "MIT", "peerDependencies": { @@ -20180,6 +20413,8 @@ }, "node_modules/react-style-singleton": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21447,7 +21682,9 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -21656,6 +21893,8 @@ }, "node_modules/serve-handler": { "version": "6.1.6", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", + "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21670,6 +21909,8 @@ }, "node_modules/serve-handler/node_modules/bytes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "license": "MIT", "engines": { @@ -21678,6 +21919,8 @@ }, "node_modules/serve-handler/node_modules/content-disposition": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", "dev": true, "license": "MIT", "engines": { @@ -21686,6 +21929,8 @@ }, "node_modules/serve-handler/node_modules/mime-db": { "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true, "license": "MIT", "engines": { @@ -21694,6 +21939,8 @@ }, "node_modules/serve-handler/node_modules/mime-types": { "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21705,11 +21952,15 @@ }, "node_modules/serve-handler/node_modules/path-to-regexp": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", "dev": true, "license": "MIT" }, "node_modules/serve-handler/node_modules/range-parser": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", "dev": true, "license": "MIT", "engines": { @@ -22118,6 +22369,8 @@ }, "node_modules/spawn-rx": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-5.1.2.tgz", + "integrity": "sha512-/y7tJKALVZ1lPzeZZB9jYnmtrL7d0N2zkorii5a7r7dhHkWIuLTzZpZzMJLK1dmYRgX/NCc4iarTO3F7BS2c/A==", "dev": true, "license": "MIT", "dependencies": { @@ -23168,6 +23421,8 @@ }, "node_modules/tailwind-merge": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", "dev": true, "license": "MIT", "funding": { @@ -23175,14 +23430,6 @@ "url": "https://github.com/sponsors/dcastil" } }, - "node_modules/tailwindcss-animate": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" - } - }, "node_modules/tapable": { "version": "2.2.1", "dev": true, @@ -24607,6 +24854,8 @@ }, "node_modules/use-callback-ref": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "dev": true, "license": "MIT", "dependencies": { @@ -24627,6 +24876,8 @@ }, "node_modules/use-sidecar": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -25513,7 +25764,7 @@ "@babel/plugin-transform-runtime": "^7.28.3", "@babel/preset-env": "^7.28.3", "@babel/preset-typescript": "^7.27.1", - "@modelcontextprotocol/inspector": "^0.14.1", + "@modelcontextprotocol/inspector": "^0.16.6", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-json": "^6.1.0", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index fda7d99d5cd..799f070d249 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -44,7 +44,7 @@ "@babel/plugin-transform-runtime": "^7.28.3", "@babel/preset-env": "^7.28.3", "@babel/preset-typescript": "^7.27.1", - "@modelcontextprotocol/inspector": "^0.14.1", + "@modelcontextprotocol/inspector": "^0.16.6", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-json": "^6.1.0", From 73af8f1f4b83c2f4e5786d8590f09c0cb156e9c8 Mon Sep 17 00:00:00 2001 From: Pavithra Kodmad Date: Fri, 12 Sep 2025 08:03:06 +1000 Subject: [PATCH 08/28] Breadcrumbs : Add overflow menu for responsive behavior (#6664) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Josh Black Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Katie Langerman <18661030+langermank@users.noreply.github.com> --- .changeset/eighty-queens-tap.md | 5 + .changeset/hot-bears-cry.md | 5 + ...bs-Default-dark-colorblind-focus-linux.png | Bin 7873 -> 6360 bytes ...crumbs-Default-dark-dimmed-focus-linux.png | Bin 7888 -> 6349 bytes .../Breadcrumbs-Default-dark-focus-linux.png | Bin 7873 -> 6360 bytes ...Default-dark-high-contrast-focus-linux.png | Bin 7881 -> 6381 bytes ...bs-Default-dark-tritanopia-focus-linux.png | Bin 7873 -> 6360 bytes ...s-Default-light-colorblind-focus-linux.png | Bin 7693 -> 6338 bytes .../Breadcrumbs-Default-light-focus-linux.png | Bin 7691 -> 6338 bytes ...efault-light-high-contrast-focus-linux.png | Bin 7687 -> 6339 bytes ...s-Default-light-tritanopia-focus-linux.png | Bin 7693 -> 6338 bytes .../Breadcrumbs/Breadcrumbs.dev.stories.tsx | 162 +++++ .../src/Breadcrumbs/Breadcrumbs.docs.json | 28 +- .../Breadcrumbs.features.stories.tsx | 112 ++++ .../src/Breadcrumbs/Breadcrumbs.module.css | 123 +++- .../src/Breadcrumbs/Breadcrumbs.stories.tsx | 1 + .../react/src/Breadcrumbs/Breadcrumbs.tsx | 358 +++++++++++- .../__tests__/Breadcrumbs.test.tsx | 553 +++++++++++++++++- .../BreadcrumbsItem.test.tsx.snap | 2 +- .../src/FeatureFlags/DefaultFeatureFlags.ts | 1 + .../react/src/__tests__/storybook.test.tsx | 1 - 21 files changed, 1317 insertions(+), 34 deletions(-) create mode 100644 .changeset/eighty-queens-tap.md create mode 100644 .changeset/hot-bears-cry.md create mode 100644 packages/react/src/Breadcrumbs/Breadcrumbs.dev.stories.tsx create mode 100644 packages/react/src/Breadcrumbs/Breadcrumbs.features.stories.tsx diff --git a/.changeset/eighty-queens-tap.md b/.changeset/eighty-queens-tap.md new file mode 100644 index 00000000000..6d5648d6aae --- /dev/null +++ b/.changeset/eighty-queens-tap.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Breadcrumbs : Add overflow menu for responsive behavior diff --git a/.changeset/hot-bears-cry.md b/.changeset/hot-bears-cry.md new file mode 100644 index 00000000000..b675e41c057 --- /dev/null +++ b/.changeset/hot-bears-cry.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Breadcrumb overflow styling diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-colorblind-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-colorblind-focus-linux.png index 80bf84cd927076b6b5d798dee47bbe2c767052fe..abac0d357a0009ffbd3d14cb136305d64dbe1f64 100644 GIT binary patch literal 6360 zcmeHMc~Fyg8va^TypVP+T1$!R>?$gS6cHkKTSaPFlu7{sIXn=MBSIh{gb)!c%IVt1 zC}+V!0tLd65J(`ALSW?zAS59qVY$MY1Og!;A<4$snVp^P&TRL8{`mfR=bP_%=6Rpz zdEeg?ugmU6dq3F=0D#e@uP^6Yp7HfVsoi&VnT{M zNtCehI{+YM6^jFa`@5$=0Pxjg6aef#CV3C|OcM}!jv z0q+C%y#fy^UYR>ld((95Lw_wseG1w5b*!8<_%hs+P*uenX$&(d>MC?avoOep7Ls^0 z`&@McXK?t?fOsH;@1tV}n!3@}BULQ3sdAs;oT# z5N$f{BC()u98Kv93sOl1{E_CH!Yr6XE#zVM@%()AHnk*shCOr+&F~kts14V`+0IEr zgVU+s`Hoe_UD8A`98lt(@0n4kJm<=DKa~Z>Oh1DhrmyrON(xCs6mBBtSY!Br>Y@EQ zPpxEnOKX;`2^<&mEq^`)q5vW8P8iSy^r|}x*%_iOMW=|I!(6damk6W!E}1yWBd=dq zNNgyUh4JAF9s53F?l|Oxa<3Oe&N29!KEo1Pbl!(};ZXU+{Dc&97-$Xp3VyX}<%a5uB*~iZ))4Tlqq-P_C`#HLG{BZz) zhmI?Y)uOABGp8sx9@djKNi1QgJj6Xc2?DFd^jTs_FLpDTp1#2jMC9^k$i*SAY^zhhubQATa*emY$nX+{KnUQxvvlam^7V_YqV;M+ii!%+s9%V^i113y6e**x^ubX5|g*#cA_*Igc2d5nn zV&*j3QZ8ZH?w&kzr`t73F66V~@!IO@TO8h_EUOT@cA`d!3hmFg?Zttin{D~|?3zGM>G=%3 zayr)4WUC(?htd_QgE2IdAQdT=v@{skkzP>Xi?i#XR@lO%y7nzRR6W!2$oS|guli*{ za?>2)R?jb08L8rK=Bt=G4_%w@0ID?X#8IIcDYdG9iSZ4-x^;S&%~v|o&(wHM{fnGa{FQX#VJ&SBX4=6qJ zHuSn36c#+*oDht6!3;G8j-kD18z!b8yXelxV~uu5Zxj(tuTKz3@e^7_Odb|`Wr@sE zIl?j}U}ANoKvMVC>KDI0-3ofCDp|sVKgt!bL&8tif`253Fb)Yzsfb9M6dB*{J3j~| zP$4ncwLd~oQ(1Y$Dd}FlwVqbt#mEZsvSZ@n2vO%7d-*hs ze#U%7k$LRt+S4Rwkt@tSjt8H`mK%c)ET@F_W<>PT))#FgGv#js=?!;=Mo^gs4s6nn z1o_`J4hl2!N((Jh{HR%aK}s5`o9u8zNJbbKu`MT9JunVUln%A&9l9hU5My#@jr!8n zHD+Z9Cq;cLSX79>1@e1>^usYC4;)?f1v;@L&0YJGOq$BBTdqN9lcswh_>|=rH#*!$ z`imMXZPr1k_>MA;--xq(sGSKG*sMHWLuI=(A;ndr7Q&#$n_BL^JGR8AfHRu3Da%ZQ z%pav(@&v)==*cB7c{`0bu(b&ZbTPVqx^43{!`MM2bJlJ?xv8ORF~nt;sXleSENB`pU1JPY!0a2SQuqD;;?+tfMv> z!g>ds=L&f|-af0=m2|9BpGHF8@_Z0WjrQG%`ZTc$do%NGIg9T;kxcoPMv3CY@_ND8 zCfD&bJ^*k(j9%?Q*Z(<0wZ9FncqqzSrk@ed4sYB=6`Sh2=z(Rf8V~;TnkqVRV(FQ_ zuT~ zRoqs^e=gboha)_8eGdS1x*^_Mcm4Uqu6JR?02tl6m~6!44(cnwCAZ5LYQGA7@DKK4 B&LIE* literal 7873 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 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-dimmed-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-dimmed-focus-linux.png index aa6bbbcfb2fa82e828c5dcd07627a4847cd0fbf5..7b9d82a85131f5d5b0811d51e9215e77e88f76ed 100644 GIT binary patch literal 6349 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 literal 7888 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 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-focus-linux.png index 80bf84cd927076b6b5d798dee47bbe2c767052fe..abac0d357a0009ffbd3d14cb136305d64dbe1f64 100644 GIT binary patch literal 6360 zcmeHMc~Fyg8va^TypVP+T1$!R>?$gS6cHkKTSaPFlu7{sIXn=MBSIh{gb)!c%IVt1 zC}+V!0tLd65J(`ALSW?zAS59qVY$MY1Og!;A<4$snVp^P&TRL8{`mfR=bP_%=6Rpz zdEeg?ugmU6dq3F=0D#e@uP^6Yp7HfVsoi&VnT{M zNtCehI{+YM6^jFa`@5$=0Pxjg6aef#CV3C|OcM}!jv z0q+C%y#fy^UYR>ld((95Lw_wseG1w5b*!8<_%hs+P*uenX$&(d>MC?avoOep7Ls^0 z`&@McXK?t?fOsH;@1tV}n!3@}BULQ3sdAs;oT# z5N$f{BC()u98Kv93sOl1{E_CH!Yr6XE#zVM@%()AHnk*shCOr+&F~kts14V`+0IEr zgVU+s`Hoe_UD8A`98lt(@0n4kJm<=DKa~Z>Oh1DhrmyrON(xCs6mBBtSY!Br>Y@EQ zPpxEnOKX;`2^<&mEq^`)q5vW8P8iSy^r|}x*%_iOMW=|I!(6damk6W!E}1yWBd=dq zNNgyUh4JAF9s53F?l|Oxa<3Oe&N29!KEo1Pbl!(};ZXU+{Dc&97-$Xp3VyX}<%a5uB*~iZ))4Tlqq-P_C`#HLG{BZz) zhmI?Y)uOABGp8sx9@djKNi1QgJj6Xc2?DFd^jTs_FLpDTp1#2jMC9^k$i*SAY^zhhubQATa*emY$nX+{KnUQxvvlam^7V_YqV;M+ii!%+s9%V^i113y6e**x^ubX5|g*#cA_*Igc2d5nn zV&*j3QZ8ZH?w&kzr`t73F66V~@!IO@TO8h_EUOT@cA`d!3hmFg?Zttin{D~|?3zGM>G=%3 zayr)4WUC(?htd_QgE2IdAQdT=v@{skkzP>Xi?i#XR@lO%y7nzRR6W!2$oS|guli*{ za?>2)R?jb08L8rK=Bt=G4_%w@0ID?X#8IIcDYdG9iSZ4-x^;S&%~v|o&(wHM{fnGa{FQX#VJ&SBX4=6qJ zHuSn36c#+*oDht6!3;G8j-kD18z!b8yXelxV~uu5Zxj(tuTKz3@e^7_Odb|`Wr@sE zIl?j}U}ANoKvMVC>KDI0-3ofCDp|sVKgt!bL&8tif`253Fb)Yzsfb9M6dB*{J3j~| zP$4ncwLd~oQ(1Y$Dd}FlwVqbt#mEZsvSZ@n2vO%7d-*hs ze#U%7k$LRt+S4Rwkt@tSjt8H`mK%c)ET@F_W<>PT))#FgGv#js=?!;=Mo^gs4s6nn z1o_`J4hl2!N((Jh{HR%aK}s5`o9u8zNJbbKu`MT9JunVUln%A&9l9hU5My#@jr!8n zHD+Z9Cq;cLSX79>1@e1>^usYC4;)?f1v;@L&0YJGOq$BBTdqN9lcswh_>|=rH#*!$ z`imMXZPr1k_>MA;--xq(sGSKG*sMHWLuI=(A;ndr7Q&#$n_BL^JGR8AfHRu3Da%ZQ z%pav(@&v)==*cB7c{`0bu(b&ZbTPVqx^43{!`MM2bJlJ?xv8ORF~nt;sXleSENB`pU1JPY!0a2SQuqD;;?+tfMv> z!g>ds=L&f|-af0=m2|9BpGHF8@_Z0WjrQG%`ZTc$do%NGIg9T;kxcoPMv3CY@_ND8 zCfD&bJ^*k(j9%?Q*Z(<0wZ9FncqqzSrk@ed4sYB=6`Sh2=z(Rf8V~;TnkqVRV(FQ_ zuT~ zRoqs^e=gboha)_8eGdS1x*^_Mcm4Uqu6JR?02tl6m~6!44(cnwCAZ5LYQGA7@DKK4 B&LIE* literal 7873 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 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-high-contrast-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-high-contrast-focus-linux.png index e8c5b1e5c32fbe4e48bc1c195c727279ea04aa1f..92992ec726af5d2369a3e692c1790017b3268ba9 100644 GIT binary patch literal 6381 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 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-tritanopia-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-dark-tritanopia-focus-linux.png index 80bf84cd927076b6b5d798dee47bbe2c767052fe..abac0d357a0009ffbd3d14cb136305d64dbe1f64 100644 GIT binary patch literal 6360 zcmeHMc~Fyg8va^TypVP+T1$!R>?$gS6cHkKTSaPFlu7{sIXn=MBSIh{gb)!c%IVt1 zC}+V!0tLd65J(`ALSW?zAS59qVY$MY1Og!;A<4$snVp^P&TRL8{`mfR=bP_%=6Rpz zdEeg?ugmU6dq3F=0D#e@uP^6Yp7HfVsoi&VnT{M zNtCehI{+YM6^jFa`@5$=0Pxjg6aef#CV3C|OcM}!jv z0q+C%y#fy^UYR>ld((95Lw_wseG1w5b*!8<_%hs+P*uenX$&(d>MC?avoOep7Ls^0 z`&@McXK?t?fOsH;@1tV}n!3@}BULQ3sdAs;oT# z5N$f{BC()u98Kv93sOl1{E_CH!Yr6XE#zVM@%()AHnk*shCOr+&F~kts14V`+0IEr zgVU+s`Hoe_UD8A`98lt(@0n4kJm<=DKa~Z>Oh1DhrmyrON(xCs6mBBtSY!Br>Y@EQ zPpxEnOKX;`2^<&mEq^`)q5vW8P8iSy^r|}x*%_iOMW=|I!(6damk6W!E}1yWBd=dq zNNgyUh4JAF9s53F?l|Oxa<3Oe&N29!KEo1Pbl!(};ZXU+{Dc&97-$Xp3VyX}<%a5uB*~iZ))4Tlqq-P_C`#HLG{BZz) zhmI?Y)uOABGp8sx9@djKNi1QgJj6Xc2?DFd^jTs_FLpDTp1#2jMC9^k$i*SAY^zhhubQATa*emY$nX+{KnUQxvvlam^7V_YqV;M+ii!%+s9%V^i113y6e**x^ubX5|g*#cA_*Igc2d5nn zV&*j3QZ8ZH?w&kzr`t73F66V~@!IO@TO8h_EUOT@cA`d!3hmFg?Zttin{D~|?3zGM>G=%3 zayr)4WUC(?htd_QgE2IdAQdT=v@{skkzP>Xi?i#XR@lO%y7nzRR6W!2$oS|guli*{ za?>2)R?jb08L8rK=Bt=G4_%w@0ID?X#8IIcDYdG9iSZ4-x^;S&%~v|o&(wHM{fnGa{FQX#VJ&SBX4=6qJ zHuSn36c#+*oDht6!3;G8j-kD18z!b8yXelxV~uu5Zxj(tuTKz3@e^7_Odb|`Wr@sE zIl?j}U}ANoKvMVC>KDI0-3ofCDp|sVKgt!bL&8tif`253Fb)Yzsfb9M6dB*{J3j~| zP$4ncwLd~oQ(1Y$Dd}FlwVqbt#mEZsvSZ@n2vO%7d-*hs ze#U%7k$LRt+S4Rwkt@tSjt8H`mK%c)ET@F_W<>PT))#FgGv#js=?!;=Mo^gs4s6nn z1o_`J4hl2!N((Jh{HR%aK}s5`o9u8zNJbbKu`MT9JunVUln%A&9l9hU5My#@jr!8n zHD+Z9Cq;cLSX79>1@e1>^usYC4;)?f1v;@L&0YJGOq$BBTdqN9lcswh_>|=rH#*!$ z`imMXZPr1k_>MA;--xq(sGSKG*sMHWLuI=(A;ndr7Q&#$n_BL^JGR8AfHRu3Da%ZQ z%pav(@&v)==*cB7c{`0bu(b&ZbTPVqx^43{!`MM2bJlJ?xv8ORF~nt;sXleSENB`pU1JPY!0a2SQuqD;;?+tfMv> z!g>ds=L&f|-af0=m2|9BpGHF8@_Z0WjrQG%`ZTc$do%NGIg9T;kxcoPMv3CY@_ND8 zCfD&bJ^*k(j9%?Q*Z(<0wZ9FncqqzSrk@ed4sYB=6`Sh2=z(Rf8V~;TnkqVRV(FQ_ zuT~ zRoqs^e=gboha)_8eGdS1x*^_Mcm4Uqu6JR?02tl6m~6!44(cnwCAZ5LYQGA7@DKK4 B&LIE* literal 7873 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 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-light-colorblind-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-light-colorblind-focus-linux.png index a95ed49f6ea677426f249162c0bf6326530a1682..28540b3c2d32df420523b4f9d4daa9fcccd4c417 100644 GIT binary patch literal 6338 zcmeI1TT~P07RSeOlvd@^(*g)9404J`Y0N}&j;!VJ3`F}DvT&khY1?)!?lEv(Y{{ny? ztIFR$t06O0_vBzTMrdaQ0MoGUK`#KvH&yCC`~=qk`0B${69Cv9Rz}^a(=u+^SOnN_ z0>1jiu}GsORU(Iu$e1>nNiSynd-hcvKVW2JgpGua-4a%oTGwC5Jc)(+EuebK3JTr? zE8pD_N{@hjac(WLf~eN;>THqs|!zXjChY>9;?ZC?}qb zH)p1g+^lmWM04H*r^}#qU1+(5Is+QYu4+SrS+9@ydlOj*{x}G;K26R}>xcNwqBY{s z4}ctEjHq907^JZ9JSI|{8Da-kSih-L(5u@|DvkNuuq3XOb34VG!ijV`c&7>Bqr->u z5V6cAi6%+fSl&sacEG<;TDzB7U{E6t+e!>-UJ^yT$CrPNu`aZkxR?k1B4aIolV*kU zVwV_|{+79gQhk(0Vug5!hX%ie)0>wn5(xwXXqRg}4_~|Zn(*N14!TygS%2kxU#|K% z&wfO6cCN`-^nF-*?#%Ot?$t0vf2;<-lafcOcA1^Z&fVXOiwTYu$=He^8 zTe?uB^`e}ew%H+}KS+B|np|Y#y-=^>u_l<=Qdb9i2eqU{5(LU_>Gv;n(!6%E&0Z*~ z?dy>FOQJfvvR8hZz2Q}}qhq}fXYLpgc&;gJ=Fu5n>>=8_8H|l?J%6fmX(spTHoB@5 zpTYkuPMiJ|baVjs0vJ7o=rZgB{fJA{=Pi^q{%f-eiRtl2z=c`|l? zlITH!q;`Yctr@j`KWjwv^hmT8HEXvbqK!@sIx++$fp%SdH4b3+oJB7&t70U%y z{tN9Q3;W`8TWf9EQfUje%o3}zz`M2foH3+0?ejz^UGk8W>IrkJ{DO#{wX15|M~^K_fo`av&`8s0tV(#=1CN>P&OG5sl=?N{9N+2^eMr zQTgd(2nngYH*8%_Q1fWP=CnvQ(FPj&1LMiCaKy~aaZm_y$(AUzp_CCiNT#hNFgku5 zqqvLi9KJY6qRCk#2<}b6Z^ZrDIa_mHW>`xNZ+BsOhmLZ!_w>~o9-}1l;MJ|_6l@#|it5HQfWeS6&ZhYfMlYykDepIr^cwh27Ryt%(WJkRz*t z-{K7=jCR&95#W9Cn8}D>y12>#=lXUS&ryd_liOx*@S-uQtLc4`_4!Vv_mZqyyZQ>P zgW73(riT&`*_Hh+AN<0{&7s^P-A_&Oh)VK@Aw zjyUz~^wqu+wvv8V=k+2UG`hCq1l4xH2LV=0w-nTttPy7&z0L8?p+7sqG2r4vE!JT&a4hPb`(fB&Kx5H9{V}@tBd)&Q_ z#*Q`y)qbiMSj+LTV=Xg*JvTA*>DDWypxLa&pNvgPLp(bPUra^ctC!y#!_;{-9Q#)j9r82V)_RIRQO<5NS3p4R_{>45{>`UtT@#Bdao2?-Np9E5?$O zLB^~$#lxwE(KNza!R>Zq)TNclo>~UOIRc)Awd)TghbVYCG12o`D)OA?apXXpg*<7U z>mm@_@=_HPrfurG(eZKTJQM3Q9tC8USBpmu-VV@GC6fm28H-2`(bc+M_srLc7E7as zs|vJwM{od~GE&?{LLb6bFC)bmXsG48D9 z6PV;DF<4^ko^*b`N!aA+s@KnEoVBugZAM#(``rKlaP{TnHbVe7?)V2^^Fq+8wacp8 z1pxO|Pv2XRYl8J_W_qr6Ci4HD1Ny^@{;Yx8xcx7C&yCb=r0y@YEF0KtVDrzw#xG#c zioRI}zn=yC-9~(a>J6&@8B}kO{MW~68!FyV@rH{3{#bfLNB>VpYqt6y5IP-Tb%LTl d+4A0Y7y!0Dp$M%wt6Coc&iMGBBAqy&`(MfBA+`Vj literal 7693 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 literal 7691 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 HjlcX)j5qH3 diff --git a/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-light-high-contrast-focus-linux.png b/.playwright/snapshots/components/Breadcrumbs.test.ts-snapshots/Breadcrumbs-Default-light-high-contrast-focus-linux.png index 29efc80181af1247a0a310d85c5efbbbe3fa5b1e..5e6d66f8b8fde7d4eb4ee6db6be5970e2158ebb1 100644 GIT binary patch literal 6339 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 U%N>Bu7y$zOf=*YTy7=8c0d+*Of&c&j literal 7687 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 literal 7693 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 { + const [items, setItems] = useState([ + {id: 1, href: '#', name: 'Home'}, + {id: 2, href: '#', name: 'Docs'}, + {id: 3, href: '#', name: 'Components'}, + ]) + + const addItem = () => { + const newId = Math.max(...items.map(item => item.id)) + 1 + const names = ['Advanced', 'Examples', 'Guides', 'API', 'Tutorials', 'Reference'] + const randomName = names[Math.floor(Math.random() * names.length)] + setItems([...items, {id: newId, href: '#', name: `${randomName}-${newId}`}]) + } + + const removeItem = () => { + if (items.length > 1) { + setItems(items.slice(0, -1)) + } + } + + const addMultipleItems = () => { + const newItems = [ + {id: Date.now() + 1, href: '#', name: 'Category'}, + {id: Date.now() + 2, href: '#', name: 'Subcategory'}, + {id: Date.now() + 3, href: '#', name: 'Item'}, + {id: Date.now() + 4, href: '#', name: 'Details'}, + {id: Date.now() + 5, href: '#', name: 'Specifications'}, + ] + setItems([...items, ...newItems]) + } + + const reset = () => { + setItems([ + {id: 1, href: '#', name: 'Home'}, + {id: 2, href: '#', name: 'Docs'}, + {id: 3, href: '#', name: 'Components'}, + ]) + } + + return ( +
    +
    + + + + +
    + +
    +

    + Dynamic breadcrumbs +

    + + {items.map((item, index) => ( + + {item.name} + + ))} + +
    + +
    + Current items: {items.length} | Try adding/removing items to see how overflow behavior changes +
    +
    + ) +} + +export const OverflowMenuNarrowContainer = () => ( +
    + + Home + Products + Category + Subcategory + + Current Page + + +
    +) + +// Wrapper components to test that BreadcrumbsItem works when wrapped +const StyledWrapper = ({children}: {children: React.ReactNode}) => ( + {children} +) + +const ConditionalWrapper = ({children, condition}: {children: React.ReactNode; condition: boolean}) => { + return condition ? {children} : <>{children} +} + +const DataAttributeWrapper = ({children}: {children: React.ReactNode}) => ( + + {children} + +) + +export const WrappedBreadcrumbItemsWithOverflow = () => ( + + + Wrapped Home + + + Products + + + Category + + + Subcategory + + + Item + + + Details + + + Current Page + + +) + +export const WithEditableNameInput = () => ( + + Home + Documents + Project Alpha + + + + +) diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.docs.json b/packages/react/src/Breadcrumbs/Breadcrumbs.docs.json index ce0747151d6..41321620375 100644 --- a/packages/react/src/Breadcrumbs/Breadcrumbs.docs.json +++ b/packages/react/src/Breadcrumbs/Breadcrumbs.docs.json @@ -14,19 +14,27 @@ "name": "className", "type": "string", "required": false, - "description": "", + "description": "Additional CSS class names to apply to the breadcrumbs container", "defaultValue": "" }, { "name": "children", "type": "Breadcrumbs.Item[]", "defaultValue": "", - "description": "" + "description": "Breadcrumb items to render. Each item should be a Breadcrumbs.Item component." + }, + { + "name": "overflow", + "type": "'wrap' | 'menu' | 'menu-with-root'", + "required": false, + "description": "How to handle overflow when breadcrumbs don't fit in the container. 'wrap' allows items to wrap to new lines. 'menu' collapses items into an overflow menu. 'menu-with-root' also collapses items into an overflow menu but includes the root (first) breadcrumb in the menu so only the last items remain visible.", + "defaultValue": "'wrap'" }, { "name": "sx", "type": "SystemStyleObject", - "deprecated": true + "deprecated": true, + "description": "System styles (deprecated, use CSS classes instead)" } ], "subcomponents": [ @@ -37,7 +45,7 @@ "name": "selected", "type": "boolean", "defaultValue": "false", - "description": "Whether this item represents the current page" + "description": "Whether this item represents the current page. Sets aria-current='page' for accessibility." }, { "name": "to", @@ -46,6 +54,18 @@ "description": "Used when the item is rendered using a component like React Router's `Link`. The path to navigate to.", "defaultValue": "" }, + { + "name": "href", + "type": "string", + "required": false, + "description": "The URL that the breadcrumb item links to. Used with regular anchor elements." + }, + { + "name": "children", + "type": "React.ReactNode", + "required": true, + "description": "The content to display inside the breadcrumb item, typically text." + }, { "name": "ref", "type": "React.RefObject" diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.features.stories.tsx b/packages/react/src/Breadcrumbs/Breadcrumbs.features.stories.tsx new file mode 100644 index 00000000000..1e8d695d3a4 --- /dev/null +++ b/packages/react/src/Breadcrumbs/Breadcrumbs.features.stories.tsx @@ -0,0 +1,112 @@ +import type {Meta} from '@storybook/react-vite' +import type React from 'react' +import type {ComponentProps} from '../utils/types' +import Breadcrumbs from './Breadcrumbs' +import {FeatureFlags} from '../FeatureFlags' + +export default { + title: 'Components/Breadcrumbs/Features', + component: Breadcrumbs, +} as Meta> + +export const OverflowWrap = () => ( + + Home + Products + Category + Subcategory + Item + Details + + Current Page + + +) + +export const OverflowMenuFeatureFlagEnabled = () => ( + + + Home + Products + Category + Subcategory + Item + Details + + Current Page + + + +) + +export const OverflowMenuFeatureFlagDisabled = () => ( + + Home + Products + Category + Subcategory + Item + Details + + Current Page + + +) + +export const OverflowMenuShowRootFeatureFlagDisabled = () => ( + + github + Teams + Engineering + core-productivity + collaboration-workflows-flex + + global-navigation-reviewers + + +) + +export const OverflowMenuShowRootFeatureFlagEnabled = () => ( + + + github + Teams + Engineering + core-productivity + collaboration-workflows-flex + + global-navigation-reviewers + + + +) + +export const SpaciousVariantWithOverflowMenu = () => ( + + + Home + Products + Category + Subcategory + Item + Details + + Current Page + + + +) + +export const SpaciousVariantWithOverflowWrap = () => ( + + Home + Products + Category + Subcategory + Item + Details + + Current Page + + +) diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.module.css b/packages/react/src/Breadcrumbs/Breadcrumbs.module.css index 96c61e7072c..b4d53bfef01 100644 --- a/packages/react/src/Breadcrumbs/Breadcrumbs.module.css +++ b/packages/react/src/Breadcrumbs/Breadcrumbs.module.css @@ -1,6 +1,7 @@ .BreadcrumbsBase { display: flex; justify-content: space-between; + width: 100%; } .BreadcrumbsList { @@ -9,10 +10,27 @@ margin-bottom: 0; } +[data-overflow='menu'], +[data-overflow='menu-with-root'] { + & .BreadcrumbsList { + white-space: nowrap; + display: flex; + flex-direction: row; + } +} + +.ItemSeparator { + color: var(--fgColor-muted); + display: flex; + align-self: center; + justify-content: center; + white-space: nowrap; + user-select: none; +} + .ItemWrapper { display: inline-block; font-size: var(--text-body-size-medium); - white-space: nowrap; list-style: none; &::after { @@ -41,20 +59,105 @@ .Item { display: inline-block; font-size: var(--text-body-size-medium); - color: var(--fgColor-link); - text-decoration: none; - &:hover, - &:focus { - text-decoration: underline; + &:focus-visible { + @mixin focusOutline 1px; } } -.ItemSelected { - color: var(--fgColor-default); - pointer-events: none; +[data-variant='normal'] { + & .Item { + color: var(--fgColor-link); + text-decoration: none; + + &:not([aria-current]) { + &:hover { + text-decoration: underline; + } + } - &:focus { + &:focus-visible { + text-decoration: none; + } + + &[aria-current] { + color: var(--fgColor-default); + } + } +} + +[data-variant='spacious'] { + & .Item { + color: var(--fgColor-default); text-decoration: none; + padding-inline: var(--base-size-6); + padding-block: var(--base-size-4); + border-radius: var(--borderRadius-medium); + + &:hover { + background: var(--control-transparent-bgColor-hover); + text-decoration: none; + } + + &[aria-current] { + font-weight: var(--base-text-weight-semibold); + } + } +} + +.BreadcrumbsItem { + display: inline-grid; + grid-auto-flow: column; + align-items: center; + flex: 0 99999 auto; + min-width: auto; + white-space: nowrap; + list-style: none; + + /* allow menu items to wrap line */ + &:has(.MenuOverlay) { + white-space: normal; + } + + &:first-child { + margin-left: 0; + } + + &:last-child { + .ItemSeparator { + display: none; + } + } + + .MenuDetails { + position: relative; + display: inline-block; + + & summary { + list-style: none; + cursor: pointer; + + &::-webkit-details-marker { + display: none; + } + } + } + + .MenuOverlay { + position: absolute; + z-index: 1; + box-shadow: var(--shadow-floating-small); + border-radius: var(--borderRadius-large); + background-color: var(--overlay-bgColor); + min-width: var(--overlay-width-xsmall); + max-height: 100vh; + max-width: var(--overlay-width-small); + overflow: hidden; + /* stylelint-disable-next-line primer/spacing */ + top: calc(var(--overlay-offset) + var(--control-small-size)); + + @media (prefers-reduced-motion: no-preference) { + animation: overlay-appear 200ms cubic-bezier(0.33, 1, 0.68, 1); + } } } diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.stories.tsx b/packages/react/src/Breadcrumbs/Breadcrumbs.stories.tsx index 16be2bd7bff..44e6b6ce1f7 100644 --- a/packages/react/src/Breadcrumbs/Breadcrumbs.stories.tsx +++ b/packages/react/src/Breadcrumbs/Breadcrumbs.stories.tsx @@ -1,4 +1,5 @@ import type {Meta} from '@storybook/react-vite' +import React from 'react' import type {ComponentProps} from '../utils/types' import Breadcrumbs from './Breadcrumbs' diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.tsx b/packages/react/src/Breadcrumbs/Breadcrumbs.tsx index fe47e2307ec..72cf11d6301 100644 --- a/packages/react/src/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/react/src/Breadcrumbs/Breadcrumbs.tsx @@ -1,17 +1,41 @@ import {clsx} from 'clsx' import type {To} from 'history' -import React from 'react' +import React, {useState, useRef, useCallback, useEffect, useMemo} from 'react' import type {SxProp} from '../sx' import type {ComponentProps} from '../utils/types' import classes from './Breadcrumbs.module.css' import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic' import {BoxWithFallback} from '../internal/components/BoxWithFallback' - -const SELECTED_CLASS = 'selected' +import Details from '../Details' +import {ActionList} from '../ActionList' +import {IconButton} from '../Button/IconButton' +import {Tooltip} from '../TooltipV2' +import {KebabHorizontalIcon} from '@primer/octicons-react' +import {useResizeObserver} from '../hooks/useResizeObserver' +import type {ResizeObserverEntry} from '../hooks/useResizeObserver' +import {useOnEscapePress} from '../hooks/useOnEscapePress' +import {useOnOutsideClick} from '../hooks/useOnOutsideClick' +import {useFeatureFlag} from '../FeatureFlags' export type BreadcrumbsProps = React.PropsWithChildren< { + /** + * Optional class name for the breadcrumbs container. + */ className?: string + /** + * Controls the overflow behavior of the breadcrumbs. + * By default all overflowing crumbs will "wrap" in the given space taking up extra height. + * In the "menu" option we'll see the overflowing crumbs as part of a menu like dropdown instead of the root breadcrumb. + * In "menu-with-root" we see that instead of the root, the menu button will take the place of the next breadcrumb. + */ + overflow?: 'wrap' | 'menu' | 'menu-with-root' + /** + * Controls the visual variant of the breadcrumbs. + * By default, the breadcrumbs will have a normal appearance. + * In the "spacious" option, the breadcrumbs will have increased padding and a more relaxed layout. + */ + variant?: 'normal' | 'spacious' } & SxProp > @@ -19,15 +43,332 @@ const BreadcrumbsList = ({children}: React.PropsWithChildren) => { return
      {children}
    } -function Breadcrumbs({className, children, sx: sxProp}: BreadcrumbsProps) { +type BreadcrumbsMenuItemProps = { + items: React.ReactElement[] + 'aria-label'?: string +} + +const BreadcrumbsMenuItem = React.forwardRef( + ({items, 'aria-label': ariaLabel, ...rest}, menuRefCallback) => { + const [isOpen, setIsOpen] = useState(false) + const detailsRef = useRef(null) + const menuButtonRef = useRef(null) + const menuContainerRef = useRef(null) + const detailsRefCallback = useCallback( + (element: HTMLDetailsElement | null) => { + detailsRef.current = element + if (typeof menuRefCallback === 'function') { + menuRefCallback(element) + } + }, + [menuRefCallback], + ) + const handleSummaryClick = useCallback((event: React.MouseEvent) => { + // Prevent the button click from bubbling up and interfering with details toggle + event.preventDefault() + // Manually toggle the details element + if (detailsRef.current) { + const newOpenState = !detailsRef.current.open + detailsRef.current.open = newOpenState + setIsOpen(newOpenState) + } + }, []) + + const closeOverlay = useCallback(() => { + if (detailsRef.current) { + detailsRef.current.open = false + setIsOpen(false) + } + }, []) + + const focusOnMenuButton = useCallback(() => { + menuButtonRef.current?.focus() + }, []) + + useOnEscapePress( + (event: KeyboardEvent) => { + if (isOpen) { + event.preventDefault() + closeOverlay() + focusOnMenuButton() + } + }, + [isOpen], + ) + + useOnOutsideClick({ + onClickOutside: closeOverlay, + containerRef: menuContainerRef, + ignoreClickRefs: [menuButtonRef], + }) + + return ( +
    + + + +
    + + {items.map((item, index) => { + const href = item.props.href + const children = item.props.children + const selected = item.props.selected + return ( + + {children} + + ) + })} + +
    +
    + ) + }, +) + +BreadcrumbsMenuItem.displayName = 'Breadcrumbs.MenuItem' + +const getValidChildren = (children: React.ReactNode) => { + return React.Children.toArray(children).filter(child => React.isValidElement(child)) as React.ReactElement[] +} + +function Breadcrumbs({className, children, sx: sxProp, overflow = 'wrap', variant = 'normal'}: BreadcrumbsProps) { + const overflowMenuEnabled = useFeatureFlag('primer_react_breadcrumbs_overflow_menu') const wrappedChildren = React.Children.map(children, child =>
  • {child}
  • ) - return ( - + const containerRef = useRef(null) + + const measureMenuButton = useCallback((element: HTMLDetailsElement | null) => { + if (element) { + const iconButtonElement = element.querySelector('button[data-component="IconButton"]') + if (iconButtonElement) { + const measuredWidth = (iconButtonElement as HTMLElement).offsetWidth + setMenuButtonWidth(measuredWidth) + } + } + }, []) + + const hideRoot = !(overflow === 'menu-with-root') + const [effectiveHideRoot, setEffectiveHideRoot] = useState(hideRoot) + const childArray = useMemo(() => getValidChildren(children), [children]) + + const rootItem = childArray[0] + + const [visibleItems, setVisibleItems] = useState(() => childArray) + const [childArrayWidths, setChildArrayWidths] = useState(() => []) + + const [menuItems, setMenuItems] = useState([]) + const [rootItemWidth, setRootItemWidth] = useState(0) + + const MENU_BUTTON_FALLBACK_WIDTH = 32 // Design system small IconButton + const [menuButtonWidth, setMenuButtonWidth] = useState(MENU_BUTTON_FALLBACK_WIDTH) + + // if (typeof window !== 'undefined') { + // effectiveOverflow = overflow + // } + + useEffect(() => { + const listElement = containerRef.current?.querySelector('ol') + if ( + overflowMenuEnabled && + listElement && + listElement.children.length > 0 && + listElement.children.length === childArray.length + ) { + const listElementArray = Array.from(listElement.children) as HTMLElement[] + const widths = listElementArray.map(child => child.offsetWidth) + setChildArrayWidths(widths) + setRootItemWidth(listElementArray[0].offsetWidth) + } + }, [childArray, overflowMenuEnabled]) + + const calculateOverflow = useCallback( + (availableWidth: number) => { + let eHideRoot = effectiveHideRoot + const MENU_BUTTON_WIDTH = menuButtonWidth + const MIN_VISIBLE_ITEMS = !eHideRoot ? 3 : 4 + + const calculateVisibleItemsWidth = (w: number[]) => { + const widths = w.reduce((sum, width) => sum + width + 16, 0) + return !eHideRoot ? rootItemWidth + widths : widths + } + + let currentVisibleItems = [...childArray] + let currentVisibleItemWidths = [...childArrayWidths] + let currentMenuItems: React.ReactElement[] = [] + let currentMenuItemsWidths: number[] = [] + + if (availableWidth > 0 && currentVisibleItemWidths.length > 0) { + let visibleItemsWidthTotal = calculateVisibleItemsWidth(currentVisibleItemWidths) + + if (currentMenuItems.length > 0) { + visibleItemsWidthTotal += MENU_BUTTON_WIDTH + } + while ( + (overflow === 'menu' || overflow === 'menu-with-root') && + (visibleItemsWidthTotal > availableWidth || currentVisibleItems.length > MIN_VISIBLE_ITEMS) + ) { + const itemToHide = currentVisibleItems[0] + const itemToHideWidth = currentVisibleItemWidths[0] + currentMenuItems = [...currentMenuItems, itemToHide] + currentMenuItemsWidths = [...currentMenuItemsWidths, itemToHideWidth] + currentVisibleItems = currentVisibleItems.slice(1) + currentVisibleItemWidths = currentVisibleItemWidths.slice(1) + + visibleItemsWidthTotal = calculateVisibleItemsWidth(currentVisibleItemWidths) + + if (currentMenuItems.length > 0) { + visibleItemsWidthTotal += MENU_BUTTON_WIDTH + } + + if (currentVisibleItems.length === 1 && visibleItemsWidthTotal > availableWidth) { + eHideRoot = true + break + } else { + eHideRoot = hideRoot + } + } + } + return { + visibleItems: currentVisibleItems, + menuItems: currentMenuItems, + effectiveHideRoot: eHideRoot, + } + }, + [childArray, childArrayWidths, effectiveHideRoot, hideRoot, overflow, rootItemWidth, menuButtonWidth], + ) + + const handleResize = useCallback( + (entries: ResizeObserverEntry[]) => { + if (overflowMenuEnabled && entries[0]) { + const containerWidth = entries[0].contentRect.width + const result = calculateOverflow(containerWidth) + if ( + (visibleItems.length !== result.visibleItems.length && menuItems.length !== result.menuItems.length) || + result.effectiveHideRoot !== effectiveHideRoot + ) { + setVisibleItems(result.visibleItems) + setMenuItems(result.menuItems) + setEffectiveHideRoot(result.effectiveHideRoot) + } + } + }, + [calculateOverflow, effectiveHideRoot, menuItems.length, overflowMenuEnabled, visibleItems.length], + ) + + useResizeObserver(handleResize, containerRef) + + useEffect(() => { + if ( + overflowMenuEnabled && + (overflow === 'menu' || overflow === 'menu-with-root') && + childArray.length > 5 && + menuItems.length === 0 + ) { + const containerWidth = containerRef.current?.offsetWidth || 800 + const result = calculateOverflow(containerWidth) + setVisibleItems(result.visibleItems) + setMenuItems(result.menuItems) + setEffectiveHideRoot(result.effectiveHideRoot) + } + }, [overflow, childArray, calculateOverflow, menuItems.length, overflowMenuEnabled]) + + const finalChildren = React.useMemo(() => { + if (overflowMenuEnabled) { + if (overflow === 'wrap' || menuItems.length === 0) { + return React.Children.map(children, child =>
  • {child}
  • ) + } + + let effectiveMenuItems = [...menuItems] + // In 'menu-with-root' mode, include the root item inside the menu even if it's visible in the breadcrumbs + if (!effectiveHideRoot) { + effectiveMenuItems = [...menuItems.slice(1)] + } + const menuElement = ( +
  • + + +
  • + ) + + const visibleElements = visibleItems.map((child, index) => ( +
  • + {child} + +
  • + )) + + const rootElement = ( +
  • + {rootItem} + +
  • + ) + + if (effectiveHideRoot) { + // Show: [overflow menu, leaf breadcrumb] + return [menuElement, ...visibleElements] + } else { + // Show: [root breadcrumb, overflow menu, leaf breadcrumb] + return [rootElement, menuElement, ...visibleElements] + } + } + }, [overflowMenuEnabled, overflow, menuItems, effectiveHideRoot, measureMenuButton, visibleItems, rootItem, children]) + + return overflowMenuEnabled ? ( + + {finalChildren} + + ) : ( + {wrappedChildren} ) } +const ItemSeparator = () => { + return ( + + + + ) +} + type StyledBreadcrumbsItemProps = { to?: To selected?: boolean @@ -40,10 +381,7 @@ const BreadcrumbsItem = React.forwardRef(({selected, className, ...rest}, ref) = return ( { - it('should support `className` on the outermost element', () => { - expect(HTMLRender().container.firstChild).toHaveClass( - 'test-class-name', - ) - }) +// Helper function to render with theme and feature flags +const renderWithTheme = (component: React.ReactElement, flags?: Record) => { + const wrappedComponent = flags ? ( + + {component} + + ) : ( + {component} + ) + return HTMLRender(wrappedComponent) +} + +// Mock ResizeObserver for tests +const mockObserve = vi.fn() +const mockUnobserve = vi.fn() +const mockDisconnect = vi.fn() +globalThis.ResizeObserver = vi.fn().mockImplementation(() => ({ + observe: mockObserve, + unobserve: mockUnobserve, + disconnect: mockDisconnect, +})) + +describe('Breadcrumbs', () => { it('renders a