From a6e651c3d93719923f512f1a6822e4b240e5e5cd Mon Sep 17 00:00:00 2001 From: tbradsha <32492176+tbradsha@users.noreply.github.com> Date: Tue, 4 Jun 2024 07:23:49 -0600 Subject: [PATCH 01/13] Add rule to disallow `classnames` --- .eslintrc.js | 1 + tools/js-tools/eslintrc/base.js | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index de7fc1a07ebc..7b15a5f9a750 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,6 +3,7 @@ const loadIgnorePatterns = require( './tools/js-tools/load-eslint-ignore.js' ); /** * @type {import("eslint").Linter.Config} */ + module.exports = { root: true, extends: [ './tools/js-tools/eslintrc/base.js' ], diff --git a/tools/js-tools/eslintrc/base.js b/tools/js-tools/eslintrc/base.js index 7ccdb8b78df1..94551ea4d86d 100644 --- a/tools/js-tools/eslintrc/base.js +++ b/tools/js-tools/eslintrc/base.js @@ -17,6 +17,16 @@ /** * @type {import("eslint").Linter.Config} */ +const restrictedPaths = [ + 'lib/sites-list', + 'lib/mixins/data-observe', + { + name: 'classnames', + message: + "Please use `clsx` instead. It's a lighter and faster drop-in replacement for `classnames`.", + }, +]; + module.exports = { parser: '@typescript-eslint/parser', extends: [ @@ -106,8 +116,18 @@ module.exports = { 'no-extra-semi': 2, 'no-multiple-empty-lines': [ 2, { max: 1 } ], 'no-multi-spaces': 2, - 'no-restricted-imports': [ 2, 'lib/sites-list', 'lib/mixins/data-observe' ], - 'no-restricted-modules': [ 2, 'lib/sites-list', 'lib/mixins/data-observe' ], + 'no-restricted-imports': [ + 2, + { + paths: restrictedPaths, + }, + ], + 'no-restricted-modules': [ + 2, + { + paths: restrictedPaths, + }, + ], 'no-shadow': 2, 'no-spaced-func': 2, 'no-trailing-spaces': 2, From 93b9b21df8142b7d0ad0aa3ca8f350777ad77992 Mon Sep 17 00:00:00 2001 From: tbradsha <32492176+tbradsha@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:07:35 -0600 Subject: [PATCH 02/13] Initial pass --- pnpm-lock.yaml | 102 +++++++++--------- projects/js-packages/ai-client/package.json | 2 +- .../src/components/ai-control/ai-control.tsx | 6 +- .../components/ai-status-indicator/index.tsx | 4 +- .../src/components/message/index.tsx | 4 +- .../components/action-button/index.jsx | 6 +- .../components/admin-page/index.tsx | 4 +- .../components/components/alert/index.tsx | 4 +- .../automattic-byline-logo/index.tsx | 4 +- .../components/boost-score-bar/index.tsx | 6 +- .../components/components/button/index.tsx | 6 +- .../contextual-upgrade-trigger/index.tsx | 4 +- .../components/components/dialog/index.tsx | 4 +- .../components/components/gridicon/index.tsx | 4 +- .../components/icon-tooltip/index.tsx | 6 +- .../components/components/icons/index.tsx | 6 +- .../indeterminate-progress-bar/index.tsx | 4 +- .../components/jetpack-footer/index.tsx | 6 +- .../components/jetpack-logo/index.tsx | 4 +- .../components/jetpack-search-logo/index.tsx | 4 +- .../jetpack-vaultpress-backup-logo/index.tsx | 4 +- .../jetpack-videopress-logo/index.tsx | 4 +- .../components/layout/col/index.tsx | 4 +- .../components/layout/container/index.tsx | 4 +- .../components/loading-placeholder/index.tsx | 4 +- .../components/components/notice/index.tsx | 4 +- .../components/number-slider/index.tsx | 4 +- .../components/pricing-table/index.tsx | 14 +-- .../components/product-offer/index.tsx | 4 +- .../components/product-price/index.tsx | 10 +- .../components/product-price/price.tsx | 4 +- .../components/progress-bar/index.tsx | 8 +- .../components/radio-control/index.tsx | 4 +- .../components/record-meter-bar/index.tsx | 4 +- .../components/components/stat-card/index.tsx | 12 +-- .../components/components/status/index.tsx | 4 +- .../components/terms-of-service/index.tsx | 4 +- .../components/testimonials/testimonial.tsx | 4 +- .../components/components/text/index.tsx | 4 +- .../components/toggle-control/index.tsx | 4 +- projects/js-packages/components/package.json | 2 +- .../connect-screen/layout/index.tsx | 4 +- .../connect-screen/required-plan/visual.jsx | 4 +- .../manage-connection-dialog/index.jsx | 7 +- projects/js-packages/connection/package.json | 2 +- .../components/golden-token-modal/index.jsx | 4 +- projects/js-packages/licensing/package.json | 2 +- .../index.jsx | 4 +- .../js-packages/partner-coupon/package.json | 2 +- .../publicize-components/package.json | 2 +- .../src/components/connection-icon/index.jsx | 4 +- .../connection-management/index.tsx | 4 +- .../components/connection-toggle/index.jsx | 4 +- .../generated-image-preview/index.js | 4 +- .../manage-connections-modal/index.tsx | 4 +- .../src/components/media-picker/index.js | 4 +- .../src/components/notice/index.js | 4 +- .../src/components/services/connect-form.tsx | 4 +- .../services/service-item-details.tsx | 4 +- .../share-buttons/share-buttons.tsx | 4 +- .../src/components/share-limits-bar/index.tsx | 4 +- .../template-picker/picker/index.js | 4 +- projects/packages/forms/package.json | 2 +- .../components/help-message/index.js | 4 +- .../components/jetpack-field-datepicker.js | 4 +- .../components/jetpack-field-dropdown.js | 4 +- .../components/jetpack-field-label.js | 6 +- .../components/jetpack-field-multiple.js | 4 +- .../components/jetpack-field-option.js | 4 +- .../components/jetpack-field-textarea.js | 4 +- .../contact-form/components/jetpack-field.js | 4 +- .../forms/src/blocks/contact-form/edit.js | 4 +- .../src/dashboard/components/layout/index.js | 4 +- .../components/page-navigation/page-number.js | 4 +- .../components/search-form/search-input.js | 16 ++- .../src/dashboard/components/table/index.js | 8 +- .../src/dashboard/components/table/item.js | 6 +- .../src/dashboard/inbox/export-modal/csv.js | 4 +- .../inbox/export-modal/google-drive.js | 4 +- .../forms/src/dashboard/inbox/index.js | 4 +- .../forms/src/dashboard/inbox/response.js | 4 +- .../my-jetpack/_inc/components/card/index.jsx | 4 +- .../_inc/components/close-link/index.js | 8 +- .../connection-status-card/index.jsx | 8 +- .../components/golden-token/tooltip/index.jsx | 4 +- .../components/my-jetpack-screen/index.jsx | 6 +- .../components/product-card/action-button.jsx | 6 +- .../_inc/components/product-card/index.jsx | 6 +- .../_inc/components/product-card/status.jsx | 4 +- .../backup-card/index.jsx | 6 +- .../contextual-card-info.jsx | 4 +- .../components/product-detail-card/index.jsx | 8 +- .../components/product-interstitial/index.jsx | 4 +- .../jetpack-ai/more-requests.jsx | 6 +- .../jetpack-ai/product-page.jsx | 8 +- .../stats-section/count-comparison-card.jsx | 4 +- projects/packages/my-jetpack/package.json | 2 +- projects/packages/search/package.json | 2 +- .../components/sidebar/sidebar-options.jsx | 4 +- .../customberg/components/sidebar/tabs.jsx | 4 +- .../components/sidebar/theme-control.jsx | 6 +- .../src/dashboard/components/button/index.jsx | 6 +- .../src/dashboard/components/card/compact.jsx | 4 +- .../src/dashboard/components/card/index.jsx | 6 +- .../components/form-toggle/compact.jsx | 4 +- .../components/form-toggle/index.jsx | 14 ++- .../components/module-control/index.jsx | 6 +- .../src/dashboard/components/notice/index.jsx | 4 +- .../components/search-filter.jsx | 4 +- .../components/search-results.jsx | 4 +- projects/packages/videopress/package.json | 2 +- .../admin/components/admin-page/index.tsx | 4 +- .../admin/components/admin-page/libraries.tsx | 4 +- .../admin/components/checkbox/index.tsx | 4 +- .../components/edit-video-details/index.tsx | 18 ++-- .../admin/components/global-notice/index.tsx | 4 +- .../client/admin/components/input/index.tsx | 12 +-- .../admin/components/pagination/index.tsx | 16 +-- .../admin/components/video-card/index.tsx | 8 +- .../admin/components/video-filter/index.tsx | 6 +- .../admin/components/video-list/index.tsx | 4 +- .../components/video-quick-actions/index.tsx | 4 +- .../admin/components/video-row/index.tsx | 16 +-- .../admin/components/video-row/stats.tsx | 4 +- .../components/video-stats-group/index.tsx | 8 +- .../components/video-storage-meter/index.tsx | 8 +- .../video-thumbnail-selector-modal/index.tsx | 4 +- .../components/video-thumbnail/index.tsx | 8 +- .../components/video-upload-area/index.tsx | 10 +- .../video/components/poster-panel/index.tsx | 8 +- .../videopress-uploader/uploader-editor.js | 6 +- .../blocks/video/deprecated/index.tsx | 4 +- .../client/block-editor/blocks/video/edit.tsx | 4 +- .../blocks/video/transforms/index.tsx | 4 +- .../components/timestamp-control/index.tsx | 4 +- .../components/video-frame-selector/index.jsx | 4 +- projects/packages/wordads/package.json | 2 +- .../src/dashboard/components/button/index.jsx | 6 +- .../src/dashboard/components/card/compact.jsx | 4 +- .../src/dashboard/components/card/index.jsx | 6 +- .../components/form-toggle/compact.jsx | 4 +- .../components/form-toggle/index.jsx | 14 ++- .../components/module-control/index.jsx | 4 +- .../src/dashboard/components/notice/index.jsx | 4 +- .../package.json | 2 +- .../js/components/connected-card/index.jsx | 9 +- .../js/components/connection-card/index.jsx | 4 +- .../js/components/disconnected-card/index.jsx | 4 +- .../error-description/error-description.tsx | 10 +- .../folding-element/folding-element.tsx | 4 +- .../features/critical-css/status/status.tsx | 4 +- .../js/features/error-notice/error-notice.tsx | 4 +- .../image-cdn-liar/image-cdn-liar.tsx | 4 +- .../quality-control/quality-control.tsx | 4 +- .../image-size-analysis/button/button.tsx | 4 +- .../image-size-analysis/hero/hero.tsx | 4 +- .../multi-progress/multi-progress.tsx | 6 +- .../recommendations-meta.tsx | 6 +- .../recommendations/pagination/pagination.tsx | 6 +- .../image-size-row/image-size-row.tsx | 16 +-- .../row-types/table-row/table-row.tsx | 4 +- .../recommendations/table/table.tsx | 6 +- .../recommendations/tabs/tabs.tsx | 8 +- .../assets/src/js/features/notice/manager.tsx | 4 +- .../src/js/features/page-cache/meta/meta.tsx | 6 +- .../js/features/speed-score/speed-score.tsx | 4 +- .../src/js/layout/card-page/card-page.tsx | 4 +- .../assets/src/js/layout/header/header.tsx | 14 +-- .../js/layout/settings-page/settings-page.tsx | 4 +- .../pages/cache-debug-log/cache-debug-log.tsx | 4 +- .../critical-css-advanced.tsx | 4 +- .../image-size-analysis.tsx | 4 +- projects/plugins/boost/package.json | 2 +- projects/plugins/crm/package.json | 2 +- .../components/step-label/index.tsx | 4 +- .../workflow-table-header/index.tsx | 4 +- .../_inc/client/at-a-glance/activity.jsx | 4 +- .../_inc/client/at-a-glance/boost/index.jsx | 4 +- .../at-a-glance/stats/dash-stats-bottom.jsx | 4 +- .../client/components/apps-badge/index.jsx | 4 +- .../client/components/apps-card/index.jsx | 4 +- .../_inc/client/components/banner/index.jsx | 4 +- .../client/components/button-group/index.jsx | 4 +- .../_inc/client/components/button/index.jsx | 6 +- .../_inc/client/components/card/compact.jsx | 4 +- .../_inc/client/components/card/index.jsx | 6 +- .../_inc/client/components/chart/bar.jsx | 6 +- .../clipboard-button-input/index.jsx | 4 +- .../client/components/dash-item/index.jsx | 4 +- .../components/dash-section-header/index.jsx | 4 +- .../_inc/client/components/dev-card/index.jsx | 4 +- .../client/components/foldable-card/index.jsx | 8 +- .../_inc/client/components/footer/index.jsx | 6 +- .../form-input-validation/index.jsx | 4 +- .../form/clipboard-button/index.jsx | 4 +- .../components/form/form-toggle/compact.jsx | 4 +- .../components/form/form-toggle/index.jsx | 4 +- .../_inc/client/components/forms/index.jsx | 24 ++--- .../_inc/client/components/gridicon/index.jsx | 4 +- .../client/components/info-popover/index.jsx | 6 +- .../jetpack-dialogue-modern/index.jsx | 4 +- .../components/jetpack-product-card/index.jsx | 6 +- .../components/loading-placeholder/index.jsx | 4 +- .../_inc/client/components/modal/index.jsx | 4 +- .../module-overridden-banner/index.jsx | 4 +- .../client/components/navigation/index.jsx | 4 +- .../_inc/client/components/notice/index.jsx | 4 +- .../_inc/client/components/popover/index.jsx | 4 +- .../client/components/popover/menu-item.jsx | 4 +- .../_inc/client/components/search/index.jsx | 8 +- .../components/section-header/index.tsx | 4 +- .../client/components/section-nav/index.jsx | 6 +- .../client/components/section-nav/item.jsx | 4 +- .../components/section-nav/segmented.jsx | 4 +- .../client/components/section-nav/tabs.jsx | 4 +- .../components/select-dropdown/index.jsx | 4 +- .../components/select-dropdown/item.jsx | 4 +- .../components/settings-group/index.jsx | 6 +- .../client/components/support-card/index.jsx | 4 +- .../client/components/text-input/index.jsx | 4 +- .../_inc/client/components/textarea/index.jsx | 4 +- .../_inc/client/components/tooltip/index.jsx | 4 +- .../client/components/tree-dropdown/index.jsx | 8 +- .../client/my-plan/my-plan-card/index.jsx | 6 +- .../client/my-plan/my-plan-header/index.js | 4 +- .../newsletter/newsletter-categories.jsx | 6 +- .../product-description/index.jsx | 4 +- .../recommendations/discount-badge/index.jsx | 4 +- .../recommendations/feature-summary/index.jsx | 4 +- .../feature-summary/primary.tsx | 4 +- .../product-card-upsell/index.jsx | 4 +- .../prompts/checkbox-answer/index.jsx | 7 +- .../prompts/prompt-layout/index.jsx | 9 +- .../sidebar/mobile-app/index.tsx | 4 +- .../sidebar/recommended-header/index.jsx | 4 +- .../sidebar/sidebar-card/index.tsx | 6 +- .../client/recommendations/summary/index.jsx | 8 +- .../jetpack/_inc/client/traffic/seo.jsx | 4 +- .../_inc/client/traffic/site-stats.jsx | 4 +- .../jetpack/_inc/client/traffic/sitemaps.jsx | 4 +- .../extensions/blocks/ai-assistant/edit.js | 4 +- .../components/ai-assistant-bar/index.tsx | 4 +- .../components/ai-assistant-input/index.tsx | 6 +- .../extensions/blocks/blogging-prompt/edit.js | 4 +- .../extensions/blocks/blogging-prompt/save.js | 4 +- .../extensions/blocks/blogroll/edit.js | 4 +- .../extensions/blocks/blogroll/save.js | 4 +- .../business-hours/components/day-edit.js | 16 ++- .../jetpack/extensions/blocks/button/edit.js | 6 +- .../jetpack/extensions/blocks/button/save.js | 6 +- .../extensions/blocks/calendly/edit.js | 4 +- .../blocks/contact-info/address/edit.js | 4 +- .../extensions/blocks/contact-info/edit.js | 4 +- .../extensions/blocks/donations/amount.js | 4 +- .../extensions/blocks/donations/tabs.js | 4 +- .../blocks/eventbrite/deprecated/v1/index.js | 4 +- .../jetpack/extensions/blocks/gif/edit.js | 4 +- .../google-docs-embed/embed-placeholder.js | 4 +- .../blocks/instagram-gallery/edit.js | 8 +- .../instagram-gallery/image-transition.js | 6 +- .../extensions/blocks/mailchimp/body.js | 4 +- .../extensions/blocks/map/lookup/index.js | 4 +- .../jetpack/extensions/blocks/map/save.js | 4 +- .../extensions/blocks/markdown/controls.js | 4 +- .../extensions/blocks/opentable/edit.js | 4 +- .../extensions/blocks/payment-buttons/edit.js | 4 +- .../extensions/blocks/payment-buttons/save.js | 4 +- .../podcast-player/components/header.js | 4 +- .../components/podcast-player.js | 4 +- .../blocks/podcast-player/components/track.js | 4 +- .../extensions/blocks/podcast-player/save.js | 4 +- .../extensions/blocks/podcast-player/utils.js | 8 +- .../login-button/color-props.js | 4 +- .../login-button/deprecated/v1/index.js | 4 +- .../premium-content/login-button/edit.js | 4 +- .../premium-content/login-button/save.js | 6 +- .../extensions/blocks/premium-content/save.js | 4 +- .../blocks/repeat-visitor/components/edit.js | 4 +- .../whatsapp-button/deprecated/v1/index.js | 4 +- .../send-a-message/whatsapp-button/edit.js | 4 +- .../send-a-message/whatsapp-button/save.js | 4 +- .../extensions/blocks/sharing-button/edit.js | 4 +- .../extensions/blocks/sharing-buttons/edit.js | 4 +- .../extensions/blocks/sharing-buttons/save.js | 4 +- .../simple-payments/deprecated/v2/edit.js | 8 +- .../extensions/blocks/simple-payments/edit.js | 8 +- .../extensions/blocks/simple-payments/save.js | 4 +- .../slideshow/deprecated/v1/slideshow.js | 4 +- .../slideshow/deprecated/v2/slideshow.js | 4 +- .../extensions/blocks/slideshow/slideshow.js | 4 +- .../jetpack/extensions/blocks/story/edit.js | 4 +- .../blocks/story/player/components/bullet.js | 4 +- .../blocks/story/player/components/button.js | 6 +- .../blocks/story/player/components/media.js | 6 +- .../blocks/story/player/expandable-sandbox.js | 6 +- .../blocks/story/player/player-ui.js | 4 +- .../extensions/blocks/story/player/slide.js | 4 +- .../jetpack/extensions/blocks/story/save.js | 4 +- .../v3/get-subscriptions-shortcode.js | 10 +- .../subscriptions/deprecated/v5/save.js | 10 +- .../subscriptions/deprecated/v6/save.js | 10 +- .../subscriptions/deprecated/v7/save.js | 10 +- .../subscriptions/deprecated/v8/save.js | 4 +- .../extensions/blocks/subscriptions/edit.js | 8 +- .../tiled-gallery/deprecated/v1/layout/row.js | 4 +- .../deprecated/v2/gallery-image/save.js | 4 +- .../deprecated/v2/layout/index.js | 4 +- .../tiled-gallery/deprecated/v2/layout/row.js | 4 +- .../deprecated/v3/gallery-image/save.js | 4 +- .../deprecated/v3/layout/index.js | 4 +- .../tiled-gallery/deprecated/v3/layout/row.js | 4 +- .../deprecated/v4/gallery-image/save.js | 4 +- .../deprecated/v4/layout/index.js | 4 +- .../tiled-gallery/deprecated/v4/layout/row.js | 4 +- .../tiled-gallery/gallery-image/edit.js | 4 +- .../tiled-gallery/gallery-image/save.js | 4 +- .../blocks/tiled-gallery/layout/index.js | 4 +- .../blocks/tiled-gallery/layout/row.js | 4 +- .../extensions/blocks/tiled-gallery/save.js | 4 +- .../extensions/blocks/top-posts/edit.js | 4 +- .../blocks/videopress/deprecated/v3/save.js | 4 +- .../blocks/videopress/deprecated/v4/save.js | 4 +- .../extensions/blocks/videopress/edit.js | 6 +- .../extensions/blocks/videopress/save.js | 4 +- .../videopress/uploading-editor/index.js | 4 +- .../extensions/blocks/videopress/utils.js | 14 +-- .../components/featured-image/carrousel.tsx | 10 +- .../components/usage-bar/index.tsx | 4 +- .../publicize/components/upsell/index.js | 4 +- .../plugins/seo/components/upsell.js | 4 +- .../shared/components/block-nudge/index.jsx | 4 +- .../components/block-styles-selector/index.js | 4 +- .../components/media-player-control/index.js | 4 +- .../shared/components/upgrade-nudge/index.jsx | 10 +- .../external-media/media-browser/index.js | 6 +- .../media-browser/media-item.js | 4 +- .../external-media/sources/with-media.js | 4 +- .../jetpack/extensions/shared/help-message.js | 4 +- .../jetpack/extensions/shared/icons.js | 4 +- .../jetpack/extensions/shared/width-panel.js | 4 +- projects/plugins/jetpack/package.json | 2 +- projects/plugins/protect/package.json | 2 +- .../js/components/free-accordion/index.jsx | 4 +- .../src/js/components/navigation/item.jsx | 4 +- .../src/js/components/navigation/label.jsx | 4 +- .../js/components/paid-accordion/index.jsx | 4 +- .../src/js/components/progress-bar/index.jsx | 4 +- projects/plugins/social/package.json | 2 +- .../src/js/components/icon-text/index.js | 4 +- .../src/js/components/info-section/index.js | 8 +- .../js/components/support-section/index.js | 4 +- 351 files changed, 918 insertions(+), 964 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index baa8ac192250..292acf23e2f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,9 +137,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 debug: specifier: 4.3.4 version: 4.3.4 @@ -306,9 +306,9 @@ importers: '@wordpress/notices': specifier: 5.0.0 version: 5.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 prop-types: specifier: ^15.7.2 version: 15.8.1 @@ -457,9 +457,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 debug: specifier: 4.3.4 version: 4.3.4 @@ -757,9 +757,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 prop-types: specifier: 15.7.2 version: 15.7.2 @@ -821,9 +821,9 @@ importers: '@wordpress/i18n': specifier: 5.0.0 version: 5.0.0 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 prop-types: specifier: 15.7.2 version: 15.7.2 @@ -939,9 +939,9 @@ importers: '@wordpress/notices': specifier: 5.0.0 version: 5.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 prop-types: specifier: 15.8.1 version: 15.8.1 @@ -1913,9 +1913,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 version: 11.0.0(webpack@5.76.0) @@ -2284,9 +2284,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 debug: specifier: 4.3.4 version: 4.3.4 @@ -2450,9 +2450,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 fast-json-stable-stringify: specifier: 2.1.0 version: 2.1.0 @@ -2662,9 +2662,9 @@ importers: '@wordpress/url': specifier: 4.0.0 version: 4.0.0 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 debug: specifier: 4.3.4 version: 4.3.4 @@ -2813,9 +2813,9 @@ importers: chart.js: specifier: 3.7.1 version: 3.7.1 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 fast-json-stable-stringify: specifier: 2.1.0 version: 2.1.0 @@ -3024,9 +3024,9 @@ importers: '@wordpress/i18n': specifier: 5.0.0 version: 5.0.0 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 react: specifier: 18.3.1 version: 18.3.1 @@ -3124,9 +3124,9 @@ importers: '@wordpress/element': specifier: 6.0.0 version: 6.0.0 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 version: 11.0.0(webpack@5.76.0) @@ -3369,9 +3369,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 prop-types: specifier: 15.8.1 version: 15.8.1 @@ -3617,12 +3617,12 @@ importers: bounding-client-rect: specifier: 1.0.5 version: 1.0.5 - classnames: - specifier: 2.3.2 - version: 2.3.2 clipboard: specifier: 2.0.6 version: 2.0.6 + clsx: + specifier: 2.1.1 + version: 2.1.1 component-uid: specifier: 0.0.2 version: 0.0.2 @@ -4006,9 +4006,9 @@ importers: camelize: specifier: 1.0.1 version: 1.0.1 - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 diff: specifier: ^4.0.2 version: 4.0.2 @@ -4114,9 +4114,9 @@ importers: '@wordpress/icons': specifier: 10.0.0 version: 10.0.0(react@18.3.1) - classnames: - specifier: 2.3.2 - version: 2.3.2 + clsx: + specifier: 2.1.1 + version: 2.1.1 react: specifier: 18.3.1 version: 18.3.1 diff --git a/projects/js-packages/ai-client/package.json b/projects/js-packages/ai-client/package.json index 04238f8cea60..defbbded2e08 100644 --- a/projects/js-packages/ai-client/package.json +++ b/projects/js-packages/ai-client/package.json @@ -56,7 +56,7 @@ "@wordpress/element": "6.0.0", "@wordpress/i18n": "5.0.0", "@wordpress/icons": "10.0.0", - "classnames": "2.3.2", + "clsx": "2.1.1", "debug": "4.3.4", "markdown-it": "14.0.0", "react": "18.3.1", diff --git a/projects/js-packages/ai-client/src/components/ai-control/ai-control.tsx b/projects/js-packages/ai-client/src/components/ai-control/ai-control.tsx index c1fe931fc7cc..60f4155245ef 100644 --- a/projects/js-packages/ai-client/src/components/ai-control/ai-control.tsx +++ b/projects/js-packages/ai-client/src/components/ai-control/ai-control.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { PlainText } from '@wordpress/block-editor'; -import classNames from 'classnames'; +import clsx from 'clsx'; import React from 'react'; /** * Internal dependencies @@ -54,14 +54,14 @@ export default function AIControl( { }: AIControlProps ): ReactElement { return (
{ error }
{ banner }
diff --git a/projects/js-packages/ai-client/src/components/ai-status-indicator/index.tsx b/projects/js-packages/ai-client/src/components/ai-status-indicator/index.tsx index 2cac9d3898a8..613f3e7a3f53 100644 --- a/projects/js-packages/ai-client/src/components/ai-status-indicator/index.tsx +++ b/projects/js-packages/ai-client/src/components/ai-status-indicator/index.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { Spinner } from '@wordpress/components'; -import classNames from 'classnames'; +import clsx from 'clsx'; /* * Types */ @@ -26,7 +26,7 @@ export type AiStatusIndicatorProps = { export default function AiStatusIndicator( { state }: AiStatusIndicatorProps ): React.ReactElement { return (
diff --git a/projects/js-packages/ai-client/src/components/message/index.tsx b/projects/js-packages/ai-client/src/components/message/index.tsx index 6f25078cb8d4..aa57982800c3 100644 --- a/projects/js-packages/ai-client/src/components/message/index.tsx +++ b/projects/js-packages/ai-client/src/components/message/index.tsx @@ -4,7 +4,7 @@ import { ExternalLink, Button } from '@wordpress/components'; import { __, sprintf } from '@wordpress/i18n'; import { Icon, check, arrowRight } from '@wordpress/icons'; -import classNames from 'classnames'; +import clsx from 'clsx'; /** * Internal dependencies */ @@ -78,7 +78,7 @@ export default function Message( { }: MessageProps ): React.ReactElement { return (
{ <> { ) }
{ ( isForcedToShow || isVisible ) && ( diff --git a/projects/js-packages/components/components/icons/index.tsx b/projects/js-packages/components/components/icons/index.tsx index bed624ca12b1..1e77dd87e880 100644 --- a/projects/js-packages/components/components/icons/index.tsx +++ b/projects/js-packages/components/components/icons/index.tsx @@ -1,5 +1,5 @@ import { Path, SVG, G, Polygon } from '@wordpress/components'; -import classNames from 'classnames'; +import clsx from 'clsx'; import SocialLogo from 'social-logos'; import styles from './style.module.scss'; import { BaseIconProps } from './types'; @@ -20,7 +20,7 @@ const IconWrapper: React.FC< BaseIconProps > = ( { children, } ) => { const iconProps = { - className: classNames( styles.iconWrapper, className ), + className: clsx( styles.iconWrapper, className ), width: size, height: size, viewBox, @@ -282,7 +282,7 @@ export const SocialServiceIcon: React.FC< { } > = ( { serviceName, className, iconSize } ) => { return ( diff --git a/projects/js-packages/components/components/indeterminate-progress-bar/index.tsx b/projects/js-packages/components/components/indeterminate-progress-bar/index.tsx index d94d85f7125e..ea3a182cee50 100644 --- a/projects/js-packages/components/components/indeterminate-progress-bar/index.tsx +++ b/projects/js-packages/components/components/indeterminate-progress-bar/index.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import classnames from 'classnames'; +import clsx from 'clsx'; /** * Internal dependencies */ @@ -19,7 +19,7 @@ import type React from 'react'; const IndeterminateProgressBar: React.FC< IndeterminateProgressBarProps > = ( { className } ) => { return (
); diff --git a/projects/js-packages/components/components/jetpack-footer/index.tsx b/projects/js-packages/components/components/jetpack-footer/index.tsx index dcb32b896caf..3a4c2572fefc 100644 --- a/projects/js-packages/components/components/jetpack-footer/index.tsx +++ b/projects/js-packages/components/components/jetpack-footer/index.tsx @@ -1,7 +1,7 @@ import { useSelect } from '@wordpress/data'; import { __, _x } from '@wordpress/i18n'; import { Icon, external } from '@wordpress/icons'; -import classnames from 'classnames'; +import clsx from 'clsx'; import React from 'react'; import { getRedirectUrl } from '../..'; import { STORE_ID as CONNECTION_STORE_ID } from '../../../../js-packages/connection/state/store'; @@ -111,7 +111,7 @@ const JetpackFooter: React.FC< JetpackFooterProps > = ( { return (