-
Notifications
You must be signed in to change notification settings - Fork 202
[BpkLink] Migrate component to TypeScript #4063
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BpkLink] Migrate component to TypeScript #4063
Conversation
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
|
Copilot can you address the build failures? They seem to be about ts-ignore which is no longer needed. |
Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
Fixed in d3f2554. Removed all unused |
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
Browser supportIf this is a visual change, make sure you've tested it in multiple browsers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR migrates the BpkLink component from JavaScript (Flow) to TypeScript, including both BpkLink and BpkButtonLink components, along with comprehensive updates to tests, Storybook examples, and downstream components that consume these components.
Key changes:
- Converted BpkLink and BpkButtonLink from Flow-typed JavaScript to TypeScript with proper type definitions
- Updated all test files to use TypeScript with typed refs
- Removed
@ts-expect-errorsuppressions from downstream components that import from bpk-component-link
Reviewed changes
Copilot reviewed 23 out of 26 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/bpk-component-link/src/BpkLink.tsx | New TypeScript implementation of BpkLink with Props type export |
| packages/bpk-component-link/src/BpkButtonLink.tsx | Migrated BpkButtonLink to TypeScript with exported Props type |
| packages/bpk-component-link/index.ts | Updated exports to include BpkLinkProps and BpkButtonLinkProps types |
| packages/bpk-component-navigation-bar/src/BpkNavigationBarButtonLink.tsx | Fixed Props type to use typeof BpkButtonLink for component props |
| packages/bpk-component-rtl-toggle/src/BpkRtlToggle.tsx | Updated MouseEvent import and type definition with HTMLButtonElement generic |
| packages/bpk-component-link/src/BpkLink.figma.tsx | Added required href prop to Figma example |
| examples/bpk-component-link/stories.tsx | Updated VisualTestWithZoom to use object syntax instead of bind |
| examples/bpk-component-link/examples.tsx | Added ts-ignore for untyped storybook utils import |
| Multiple downstream components | Removed ts-expect-error directives for now-typed BpkLink imports |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
* main: Bump @skyscanner/stylelint-config-skyscanner from 13.1.0 to 14.2.0 (#4060) # Conflicts: # package-lock.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
…sure accessibility Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
| rel?: string | null; | ||
| alternate?: boolean; | ||
| implicit?: boolean; | ||
| [rest: string]: any; // Inexact rest. See decisions/inexact-rest.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we extend AnchorHTMLAttributes instead of using [rest: string]: any because the combination of forwardRef and an index signature causes Storybook's
documentation generator (react-docgen) to fail to extract props correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like this :
export interface Props extends AnchorHTMLAttributes<HTMLAnchorElement> {
hildren: ReactNode;
href: string;
className?: string | null;
onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
blank?: boolean;
rel?: string;
alternate?: boolean;
implicit?: boolean;
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot can you handle this for me please
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 56962c6. Changed Props to extend AnchorHTMLAttributes<HTMLAnchorElement> instead of using the index signature. This allows Storybook's react-docgen to properly extract prop documentation. Also updated className and rel types to match AnchorHTMLAttributes (removing null from the union types), and fixed downstream components that were passing invalid href values.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see the explanation for removing null in BpkLink to match AnchorHTMLAttributes. That makes sense. While this is technically a breaking change for consumers who explicitly pass this prop null, should we consider it a major change?
…er Storybook docgen support Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
| className?: string | null; | ||
| alternate?: boolean; | ||
| implicit?: boolean; | ||
| [rest: string]: any; // Inexact rest. See decisions/inexact-rest.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi as you've changed the props according to this conversation #4063 (comment), would you do the same to this BpkButtonLink?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot can you address the comment please? Keep in mind that BpkButtonLink should be a not an
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 90cb40c. Updated BpkButtonLink to extend ButtonHTMLAttributes<HTMLButtonElement> instead of using the index signature, matching the pattern applied to BpkLink. This ensures consistent type definitions and improves Storybook's documentation generator (react-docgen) compatibility for both components.
…n and improve Storybook docgen Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com>
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
| onClick: (event: SyntheticEvent<>) => mixed, | ||
| alternate: boolean, | ||
| export interface Props extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'onClick'> { | ||
| /** The content of the link. */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After adding JSDoc comments, react-docgen-typescript will recognize children as props with custom documentation, and they should appear in the API documentation
| const getClassName = cssModules(STYLES); | ||
|
|
||
| export interface Props | ||
| extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'rel'> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use Omit to exclude the properties in the parent interface so that redefine them and make href also support null without TS error
|
Visit https://backpack.github.io/storybook-prs/4063 to see this build running in a browser. |
kerrie-wu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
IrinaWei
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* Initial plan * Initial exploration Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Migrate BpkLink component to TypeScript Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Add missing semicolon in examples.tsx Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove unused @ts-expect-error directives for bpk-component-link imports Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove duplicate JS files Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update examples/bpk-component-link/examples.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix TypeScript errors: convert null to undefined for href and rel attributes Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Make href prop required in BpkLink to match original Flow type and ensure accessibility Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend AnchorHTMLAttributes instead of using index signature for better Storybook docgen support Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend ButtonHTMLAttributes for BpkButtonLink to match BpkLink pattern and improve Storybook docgen Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * omit props * address rel --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> Co-authored-by: Gert-Jan Vercauteren <gert-jan.vercauteren@skyscanner.net> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ezreal Yang <supremeyh@126.com>
* Initial plan * Initial exploration Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Migrate BpkLink component to TypeScript Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Add missing semicolon in examples.tsx Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove unused @ts-expect-error directives for bpk-component-link imports Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove duplicate JS files Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update examples/bpk-component-link/examples.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix TypeScript errors: convert null to undefined for href and rel attributes Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Make href prop required in BpkLink to match original Flow type and ensure accessibility Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend AnchorHTMLAttributes instead of using index signature for better Storybook docgen support Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend ButtonHTMLAttributes for BpkButtonLink to match BpkLink pattern and improve Storybook docgen Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * omit props * address rel --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> Co-authored-by: Gert-Jan Vercauteren <gert-jan.vercauteren@skyscanner.net> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ezreal Yang <supremeyh@126.com>
* fix issue with carousel alignment * Fix issue with carousel alignment on mobile * optimize mobile left space and the code itself * Revert "optimize mobile left space and the code itself" This reverts commit eaf2cbe. * Revert "Fix issue with carousel alignment on mobile" This reverts commit 83a293f. * [CLOV-951][BpkButton] Mark BpkButton v1 as deprecated (#4039) * [CLOV-964][BpkButton] Export legacy props and types (#4044) * [CLOV-964] Export legacy props and types * lint * [CLOV-30][BpkCheckbox] TS migration for BpkCheckbox (#4040) * BpkCheckbox is migrated to Typescirpt now and export type BpkCheckboxProps * [CLOV-950] [BpkButton] Migrate BpkButton to BpkButtonV2 (#4048) * [CLOV-950] [BpkButton] Migrate BpkButton to BpkButtonV2 * update type order * update props and other path * Bump glob (#4046) Bumps [glob](https://github.com/isaacs/node-glob) to 10.5.0 and updates ancestor dependency . These dependencies need to be updated together. Updates `glob` from 10.4.5 to 10.5.0 - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](isaacs/node-glob@v10.4.5...v10.5.0) Updates `glob` from 11.0.3 to 11.1.0 - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](isaacs/node-glob@v10.4.5...v10.5.0) --- updated-dependencies: - dependency-name: glob dependency-version: 10.5.0 dependency-type: indirect - dependency-name: glob dependency-version: 11.1.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump core-js from 3.45.1 to 3.46.0 (#4028) Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.45.1 to 3.46.0. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/commits/v3.46.0/packages/core-js) --- updated-dependencies: - dependency-name: core-js dependency-version: 3.46.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * [CLOV-19][BpkFieldset] BpkFieldset TS Migration (#4045) * covert BpkFielset to TS * add check and label type check * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * change any type * fix typecheck error --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * [GOOSE-559][BpkSwapButton] Override padding alignment set by Safari User Agent (#4052) * Override padding alignment set by Safari User Agent * simplify * fix: allow word wrap anywhere when the autosuggest value is joined by _ or long words in general (#4054) * [CLOV-349][BpkAutosuggest]Fix keyboard up and down blur issue (#4043) * fix up and down blur issue * fix up down issue * fix fistHightLight * suppress the runtime error * modify comment * prevent autosuggest flickering on input change * optimise highlight Index function * fix typecheck error * fix test onSuggestionSelected * Bump js-yaml from 3.14.1 to 3.14.2 (#4047) Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2. - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](nodeca/js-yaml@3.14.1...3.14.2) --- updated-dependencies: - dependency-name: js-yaml dependency-version: 3.14.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump the babel group across 1 directory with 2 updates (#4027) Bumps the babel group with 2 updates in the / directory: [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) and [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript). Updates `@babel/preset-react` from 7.27.1 to 7.28.5 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-preset-react) Updates `@babel/preset-typescript` from 7.27.0 to 7.28.5 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-preset-typescript) --- updated-dependencies: - dependency-name: "@babel/preset-react" dependency-version: 7.28.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel - dependency-name: "@babel/preset-typescript" dependency-version: 7.28.5 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump @skyscanner/eslint-config-skyscanner from 22.5.1 to 22.6.0 (#4026) Bumps [@skyscanner/eslint-config-skyscanner](https://github.com/Skyscanner/eslint-config-skyscanner) from 22.5.1 to 22.6.0. - [Release notes](https://github.com/Skyscanner/eslint-config-skyscanner/releases) - [Changelog](https://github.com/Skyscanner/eslint-config-skyscanner/blob/main/CHANGELOG.md) - [Commits](Skyscanner/eslint-config-skyscanner@22.5.1...22.6.0) --- updated-dependencies: - dependency-name: "@skyscanner/eslint-config-skyscanner" dependency-version: 22.6.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump actions/checkout from 5 to 6 (#4051) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump the artifacts-actions group with 2 updates (#4025) Bumps the artifacts-actions group with 2 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/upload-artifact` from 4.6.2 to 5.0.0 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4.6.2...v5.0.0) Updates `actions/download-artifact` from 5.0.0 to 6.0.0 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@v5.0.0...v6.0.0) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: artifacts-actions - dependency-name: actions/download-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: artifacts-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump actions/setup-node from 5 to 6 (#4016) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@v5...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump webpack from 5.101.2 to 5.103.0 (#4059) Bumps [webpack](https://github.com/webpack/webpack) from 5.101.2 to 5.103.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](webpack/webpack@v5.101.2...v5.103.0) --- updated-dependencies: - dependency-name: webpack dependency-version: 5.103.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> * Bump @skyscanner/stylelint-config-skyscanner from 13.1.0 to 14.2.0 (#4060) * Bump @skyscanner/stylelint-config-skyscanner from 13.1.0 to 14.2.0 Bumps [@skyscanner/stylelint-config-skyscanner](https://github.com/Skyscanner/stylelint-config-skyscanner) from 13.1.0 to 14.2.0. - [Release notes](https://github.com/Skyscanner/stylelint-config-skyscanner/releases) - [Changelog](https://github.com/Skyscanner/stylelint-config-skyscanner/blob/main/CHANGELOG.md) - [Commits](Skyscanner/stylelint-config-skyscanner@13.1.0...14.2.0) --- updated-dependencies: - dependency-name: "@skyscanner/stylelint-config-skyscanner" dependency-version: 14.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * fix check error --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kerrie Wu <kerrie.wu@skyscanner.net> * Bump the storybook group across 1 directory with 5 updates (#4058) * Bump the storybook group across 1 directory with 5 updates Bumps the storybook group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `9.1.13` | `10.1.2` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `9.1.13` | `10.1.2` | | [@storybook/addon-webpack5-compiler-babel](https://github.com/storybookjs/addon-webpack5-compiler-babel) | `3.0.6` | `4.0.0` | | [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `9.1.13` | `10.1.2` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `9.1.13` | `10.1.2` | Updates `@storybook/addon-a11y` from 9.1.13 to 10.1.2 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.1.2/code/addons/a11y) Updates `@storybook/addon-docs` from 9.1.13 to 10.1.2 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.1.2/code/addons/docs) Updates `@storybook/addon-webpack5-compiler-babel` from 3.0.6 to 4.0.0 - [Release notes](https://github.com/storybookjs/addon-webpack5-compiler-babel/releases) - [Changelog](https://github.com/storybookjs/addon-webpack5-compiler-babel/blob/main/CHANGELOG.md) - [Commits](storybookjs/addon-webpack5-compiler-babel@v3.0.6...v4.0.0) Updates `@storybook/react-webpack5` from 9.1.13 to 10.1.2 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.1.2/code/frameworks/react-webpack5) Updates `storybook` from 9.1.13 to 10.1.2 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.1.2/code/core) --- updated-dependencies: - dependency-name: "@storybook/addon-a11y" dependency-version: 10.1.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook - dependency-name: "@storybook/addon-docs" dependency-version: 10.1.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook - dependency-name: "@storybook/addon-webpack5-compiler-babel" dependency-version: 4.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook - dependency-name: "@storybook/react-webpack5" dependency-version: 10.1.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook - dependency-name: storybook dependency-version: 10.1.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: storybook ... Signed-off-by: dependabot[bot] <support@github.com> * fix storybook update issue * fix conflict and issue --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> Co-authored-by: Kerrie Wu <kerrie.wu@skyscanner.net> * Bump jws from 3.2.2 to 3.2.3 (#4066) * Bump jws from 3.2.2 to 3.2.3 Bumps [jws](https://github.com/brianloveswords/node-jws) from 3.2.2 to 3.2.3. - [Release notes](https://github.com/brianloveswords/node-jws/releases) - [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md) - [Commits](auth0/node-jws@v3.2.2...v3.2.3) --- updated-dependencies: - dependency-name: jws dependency-version: 3.2.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * update package-lock.json --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gc.zhu <gc.zhu@skyscanner.net> * [CLOV-907][BpkButton] Update BpkButton link and linkOnDark type style (#4076) * [CLOV-907][BpkButton] Update BpkButton link and linkOnDark type style * add implicit to BpkPaginationNudger and BpkFloatingNotification and ExpandAccessoryContent * adjust linkOnDark hover color * add Links example * update link on dark hover style * remove full props in README * update BpkPaginationNudger to iconOnly * remove bpk-buttob-link-disabled * button link aligned * support inline display svg * add button-link-type README * rename bpk-button--link-icon-only-aligned * rename bpk-button--link-icon-only * [CLOV-958][BpkButton] Remove BpkButton (v1) code and alias BpkButton to BpkButtonV2 (#4078) * remove BpkButton code and alias BpkButton to BpkButtonV2 * refine themeAttributes file structure * update readme * correct file format * udpate readme * update readme --------- Co-authored-by: Ezreal Yang <supremeyh@126.com> * [CLOV-907][BpkButton] Fix BpkButton linkOnDark alignment (#4086) * Bump lint-staged from 16.1.5 to 16.2.7 (#4071) Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.1.5 to 16.2.7. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](lint-staged/lint-staged@v16.1.5...v16.2.7) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 16.2.7 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: IrinaWei <irina.wei@skyscanner.net> * Bump glob from 11.1.0 to 13.0.0 (#4072) Bumps [glob](https://github.com/isaacs/node-glob) from 11.1.0 to 13.0.0. - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](isaacs/node-glob@v11.1.0...v13.0.0) --- updated-dependencies: - dependency-name: glob dependency-version: 13.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: IrinaWei <irina.wei@skyscanner.net> * [BpkLink] Migrate component to TypeScript (#4063) * Initial plan * Initial exploration Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Migrate BpkLink component to TypeScript Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Add missing semicolon in examples.tsx Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove unused @ts-expect-error directives for bpk-component-link imports Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Remove duplicate JS files Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update examples/bpk-component-link/examples.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/bpk-component-link/src/BpkLink.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix TypeScript errors: convert null to undefined for href and rel attributes Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Make href prop required in BpkLink to match original Flow type and ensure accessibility Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend AnchorHTMLAttributes instead of using index signature for better Storybook docgen support Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * Extend ButtonHTMLAttributes for BpkButtonLink to match BpkLink pattern and improve Storybook docgen Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> * omit props * address rel --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> Co-authored-by: Gert-Jan Vercauteren <gert-jan.vercauteren@skyscanner.net> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ezreal Yang <supremeyh@126.com> * bump bpk-foundations-web to 24.0.0 (#4092) Co-authored-by: Flora Cheng <flora.cheng@skyscanner.net> * feat[BpkPrice]: added variant size medium (#4089) * feat: added variant size medium to bpkPrice * fix: fixed spacing issues picked up in PR * chore: run tests --------- Co-authored-by: Gert-Jan Vercauteren <gert-jan.vercauteren@skyscanner.net> * [CLOV-657][BpkLink] Refactor BpkLink with add as prop (#4094) * [CLOV-657] Add as prop to support BpkLink * update ref type * use BpkPanel in storybook examples * remove BpkButtonLink in README and storybook * simplify with react type * introduce const LINK_AS * update LINK_AS cases * update as Element * update snapshots * ArgTypes specify API * add href null * common-types * update import and export path * remove LINK_AS * remove BpkLinkPolymorphicProps * update processAnchorProps and getClassNames * remove LinksAs type * [CLOV-909][BpkLink] Mark BpkButtonLink deprecated (#4096) * [CLOV-909][BpkButtonLink] Mark BpkButtonLink deprecated * type label and pass rest * [CLOV-957][BpkButton] Replace BpkButtonV2 with BpkButton across codebase (#4097) * [CLOV-957][BpkButton] Replace BpkButtonV2 with BpkButton across codebase * update figma path * [Clov-353][BpkAutosuggest]Export Autosuggest default theme (#4098) * export default them * Update packages/bpk-component-autosuggest/index.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Bump storybook from 10.1.2 to 10.1.11 (#4100) * Bump storybook from 10.1.2 to 10.1.11 Bumps [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) from 10.1.2 to 10.1.11. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.1.11/code/core) --- updated-dependencies: - dependency-name: storybook dependency-version: 10.1.11 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * Update package-lock.json --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Flora Cheng <flora.cheng@skyscanner.net> * [BpkCode] Migrate component to TypeScript (#4106) * Initial plan * Migrate BpkCode component to TypeScript Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> * Refactor BpkCode to use consistent className handling approach Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Replace snapshot tests with Jest expect assertions Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> * Remove unused @ts-expect-error directive for BpkCode import Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> * Update README to tsx and add rest props type support Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> Co-authored-by: Faye <faye.xiao@skyscanner.net> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix issue with carousel alignment on mobile * optimize mobile left space and the code itself * Revert "optimize mobile left space and the code itself" This reverts commit eaf2cbe. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Vincent Liu <xiaogliu@outlook.com> Co-authored-by: Irina-Wei <irina.wei@skyscanner.net> Co-authored-by: Ezreal Yang <supremeyh@126.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kerrie-wu <52308828+kerrie-wu@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Noel Rajan <14931745+FireRedNinja@users.noreply.github.com> Co-authored-by: Gert-Jan Vercauteren <gert-jan.vercauteren@skyscanner.net> Co-authored-by: Kerrie Wu <kerrie.wu@skyscanner.net> Co-authored-by: gc.zhu <gc.zhu@skyscanner.net> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: gert-janvercauteren <728889+gert-janvercauteren@users.noreply.github.com> Co-authored-by: Flora Cheng <122813126+floracheng292@users.noreply.github.com> Co-authored-by: Flora Cheng <flora.cheng@skyscanner.net> Co-authored-by: Nic da Costa <1333205+nicdaCosta@users.noreply.github.com> Co-authored-by: Faye-Xiao <20058385+Faye-Xiao@users.noreply.github.com> Co-authored-by: Faye <faye.xiao@skyscanner.net>
Migrates BpkLink and BpkButtonLink components from JavaScript (Flow) to TypeScript.
Changes
BpkLink.tsx,BpkButtonLink.tsx,themeAttributes.ts.tsxwith typed refsindex.tswith exportedBpkLinkPropsandBpkButtonLinkPropstypesexamples.tsxandstories.tsxhrefprop to example@ts-expect-errordirectives from components that import frombpk-component-link(bottom-sheet, breadcrumb, drawer, info-banner, modal, navigation-bar, popover, rtl-toggle, card-list examples)BpkNavigationBarButtonLinkto usetypeof BpkButtonLinkfor component propsBpkRtlToggleto use proper ReactMouseEventtypeBpkLinkProps to extendAnchorHTMLAttributes<HTMLAnchorElement>instead of using index signature[rest: string]: anyfor better Storybook documentation generator (react-docgen) compatibilityBpkButtonLinkProps to extendButtonHTMLAttributes<HTMLButtonElement>instead of using index signature for consistency and better Storybook docgenclassNameandreltypes to match HTML attributes (removingnullfrom union types)hrefprop remains required onBpkLinkto match original Flow type and prevent accessibility regression (anchor without href is an accessibility issue)BpkBreadcrumbItemandBpkInfoBannerInnerto provide valid href values when using BpkLinkUsage
BpkLink
BpkButtonLink
https://www.skyscanner.design/latest/components/link/web-tBkgNmHW
Remember to include the following changes:
[Clover-123][BpkButton] Updating the colourREADME.md(If you have created a new component)README.mdOriginal prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.