From e80020f344fd8ec06819854e9465860bc2dabfe4 Mon Sep 17 00:00:00 2001 From: Ryan Clark Date: Thu, 2 Jan 2025 15:37:50 +0100 Subject: [PATCH] Move import sorting over to prettier (#50685) --- .prettierrc | 9 - .prettierrc.js | 39 ++++ pnpm-lock.yaml | 187 ++++++++++++++---- tsconfig.json | 4 +- web/.storybook/preview.tsx | 13 +- web/.storybook/vite.config.mts | 3 +- web/@types/styled-components.d.ts | 1 + web/README.md | 2 +- web/packages/build/.eslintrc.js | 19 -- .../jest/jest-environment-patched-jsdom.js | 2 +- web/packages/build/package.json | 2 +- web/packages/build/vite/config.ts | 6 +- web/packages/build/vite/html.ts | 3 +- web/packages/design/src/Alert/Alert.story.tsx | 1 - web/packages/design/src/Alert/Alert.tsx | 15 +- .../design/src/Button/Button.test.tsx | 4 +- web/packages/design/src/Button/Button.tsx | 15 +- .../design/src/Button/buttons.story.tsx | 21 +- .../design/src/ButtonIcon/ButtonIcon.jsx | 2 +- web/packages/design/src/ButtonIcon/index.js | 1 + web/packages/design/src/ButtonLink/index.ts | 1 + .../ButtonWithMenu/ButtonWithMenu.test.tsx | 2 +- .../src/ButtonWithMenu/ButtonWithMenu.tsx | 2 +- web/packages/design/src/Card/Card.story.tsx | 3 +- web/packages/design/src/Card/index.js | 1 + web/packages/design/src/CardError/index.js | 6 +- web/packages/design/src/CardIcon/CardIcon.jsx | 2 +- .../design/src/CardIcon/CardIcon.story.jsx | 1 - web/packages/design/src/CardIcon/index.js | 1 + web/packages/design/src/CardSuccess/index.js | 1 + .../design/src/Checkbox/Checkbox.story.tsx | 1 - web/packages/design/src/Checkbox/Checkbox.tsx | 3 +- web/packages/design/src/DataTable/Cells.tsx | 8 +- .../design/src/DataTable/DataTable.story.tsx | 4 +- .../src/DataTable/InputSearch/InputSearch.tsx | 6 +- .../Pager/ClientSidePager/ClientSidePager.tsx | 3 +- .../design/src/DataTable/Table.test.tsx | 4 +- web/packages/design/src/DataTable/Table.tsx | 12 +- web/packages/design/src/DataTable/index.ts | 6 +- web/packages/design/src/DataTable/useTable.ts | 6 +- .../design/src/Dialog/Dialog.story.jsx | 3 +- .../design/src/Dialog/DialogContent.jsx | 1 - web/packages/design/src/Dialog/index.js | 4 +- .../DialogConfirmation.story.tsx | 3 +- .../DialogConfirmation.test.tsx | 2 +- .../design/src/DialogConfirmation/index.ts | 4 +- .../design/src/FieldRadio/FieldRadio.test.tsx | 2 +- .../design/src/FieldRadio/FieldRadio.tsx | 6 +- web/packages/design/src/Flex/Flex.story.jsx | 1 - web/packages/design/src/Flex/Flex.tsx | 8 +- web/packages/design/src/Flex/index.ts | 1 + web/packages/design/src/Icon/Icon.tsx | 2 +- web/packages/design/src/Icon/IconCircle.tsx | 1 - web/packages/design/src/Icon/Icons.story.tsx | 5 +- web/packages/design/src/Image/Image.story.jsx | 3 +- web/packages/design/src/Image/index.js | 1 + web/packages/design/src/Indicator/index.ts | 1 + web/packages/design/src/Input/Input.story.tsx | 4 +- web/packages/design/src/Input/Input.tsx | 23 ++- web/packages/design/src/Input/index.ts | 1 + web/packages/design/src/Label/Label.test.jsx | 2 +- web/packages/design/src/Label/Label.tsx | 2 +- .../src/LabelInput/LabelInput.story.tsx | 2 +- web/packages/design/src/LabelInput/index.ts | 1 + .../design/src/LabelState/LabelState.test.jsx | 2 +- .../design/src/LabelState/LabelState.tsx | 10 +- web/packages/design/src/LabelState/index.js | 3 +- web/packages/design/src/Link/Link.jsx | 2 +- web/packages/design/src/Link/index.js | 1 + web/packages/design/src/Menu/Menu.jsx | 3 +- web/packages/design/src/Menu/Menu.story.tsx | 9 +- web/packages/design/src/Menu/MenuItem.tsx | 8 +- web/packages/design/src/Menu/index.js | 1 + web/packages/design/src/Modal/Modal.test.tsx | 4 +- web/packages/design/src/Modal/Modal.tsx | 4 +- web/packages/design/src/Modal/index.ts | 1 + .../design/src/MultiRowBox/MultiRowBox.tsx | 1 - web/packages/design/src/Pill/Pill.test.tsx | 2 +- .../design/src/Popover/Popover.story.test.tsx | 2 +- .../design/src/Popover/Popover.story.tsx | 5 +- web/packages/design/src/Popover/Popover.tsx | 5 +- web/packages/design/src/Popover/index.ts | 1 + .../src/RadioButton/RadioButton.story.tsx | 1 - .../design/src/RadioButton/RadioButton.tsx | 3 +- .../design/src/RadioGroup/RadioGroup.tsx | 5 +- .../src/ResourceIcon/ResourceIcon.story.tsx | 2 +- web/packages/design/src/ResourceIcon/icons.ts | 12 +- .../design/src/ResourceIcon/index.tsx | 2 +- web/packages/design/src/SVGIcon/SVGIcon.tsx | 1 - .../design/src/SVGIcon/SvgIcon.story.tsx | 4 +- .../design/src/SVGIcon/TeleportGearIcon.tsx | 3 +- .../design/src/SlideTabs/SlideTabs.story.tsx | 2 +- .../design/src/SlideTabs/SlideTabs.test.tsx | 5 +- .../design/src/SlideTabs/SlideTabs.tsx | 2 +- .../design/src/StatusIcon/StatusIcon.tsx | 1 - .../src/StepSlider/StepSlider.story.tsx | 2 +- .../design/src/StepSlider/StepSlider.test.tsx | 4 +- .../design/src/StepSlider/StepSlider.tsx | 2 +- web/packages/design/src/Text/Text.tsx | 16 +- web/packages/design/src/Text/index.ts | 1 + .../design/src/TextArea/TextArea.story.tsx | 4 +- web/packages/design/src/TextArea/TextArea.tsx | 8 +- .../design/src/ThemeProvider/globals.js | 1 + .../design/src/ThemeProvider/index.tsx | 9 +- .../design/src/Toggle/Toggle.story.tsx | 3 +- .../design/src/Tooltip/HoverTooltip.tsx | 5 +- .../design/src/Tooltip/IconTooltip.story.tsx | 8 +- web/packages/design/src/TopNav/TopNavItem.jsx | 2 +- web/packages/design/src/TopNav/index.js | 1 + .../design/src/datetime/format.test.ts | 2 +- web/packages/design/src/datetime/format.ts | 2 +- web/packages/design/src/index.ts | 20 +- web/packages/design/src/labels.story.jsx | 2 +- web/packages/design/src/system/index.ts | 59 +++--- web/packages/design/src/system/typography.ts | 2 +- web/packages/design/src/theme/index.ts | 3 +- .../design/src/theme/palette.story.jsx | 3 +- .../design/src/theme/themeColors.story.tsx | 6 +- .../design/src/theme/themes/bblpTheme.ts | 1 - .../design/src/theme/themes/darkTheme.ts | 1 - .../design/src/theme/themes/lightTheme.ts | 3 +- .../design/src/theme/themes/sharedStyles.ts | 7 +- .../design/src/theme/typography.story.jsx | 3 +- .../design/src/utils/match/matchers.test.ts | 2 +- web/packages/design/src/utils/renderHook.tsx | 2 +- web/packages/design/src/utils/testing.tsx | 13 +- web/packages/shared/@types/react-select.d.ts | 1 + .../AccessDuration/AccessDurationRequest.tsx | 2 - .../AccessDuration/AccessDurationReview.tsx | 2 - .../AccessDuration/durationOptions.test.ts | 4 +- .../AccessDuration/durationOptions.ts | 5 +- .../getDurationOptionsFromStartTime.test.ts | 1 - .../AssumeStartTime/AssumeStartTime.story.tsx | 5 +- .../AssumeStartTime/AssumeStartTime.test.tsx | 6 +- .../AssumeStartTime/AssumeStartTime.tsx | 16 +- .../AssumeStartTime/timeOptions.tsx | 1 - .../NewRequest/CheckableOption.tsx | 2 +- .../RequestCheckout/AdditionalOptions.tsx | 6 +- .../NewRequest/RequestCheckout/CrossIcon.tsx | 1 - .../RequestCheckout/KubeNamespaceSelector.tsx | 9 +- .../RequestCheckout/RequestCheckout.story.tsx | 4 +- .../RequestCheckout/RequestCheckout.test.tsx | 4 +- .../RequestCheckout/RequestCheckout.tsx | 39 ++-- .../RequestCheckout/SelectReviewers.tsx | 5 +- .../NewRequest/RequestCheckout/utils.ts | 2 +- .../NewRequest/Roles/Roles.test.tsx | 3 +- .../AccessRequests/NewRequest/Roles/Roles.tsx | 2 +- .../NewRequest/useSpecifiableFields.ts | 2 +- .../RequestList/RequestList.tsx | 3 +- .../RequestDelete/RequestDelete.story.tsx | 2 +- .../RequestDelete/RequestDelete.tsx | 15 +- .../RequestReview/RequestReview.story.tsx | 5 +- .../RequestReview/RequestReview.tsx | 17 +- .../RequestView/RequestView.story.tsx | 11 +- .../RequestView/RequestView.test.tsx | 2 - .../RequestView/RequestView.tsx | 38 ++-- .../ReviewRequests/RequestView/types.ts | 4 +- .../AccessRequests/Shared/Shared.tsx | 7 +- .../AdvancedSearchToggle.tsx | 4 +- .../AnimatedTerminal/AnimatedTerminal.tsx | 1 - .../AuthorizeDeviceWeb.story.tsx | 4 +- .../AuthorizeDeviceWeb/AuthorizeDeviceWeb.tsx | 16 +- .../AwsLaunchButton/AwsLaunchButton.tsx | 8 +- .../ButtonFileUpload.story.tsx | 3 +- .../ButtonFileUpload.test.tsx | 2 +- .../ButtonFileUpload/ButtonFileUpload.tsx | 6 +- .../shared/components/ButtonSso/ButtonSso.tsx | 4 +- .../shared/components/ButtonSso/index.ts | 1 + .../ButtonTextWithAddIcon.story.tsx | 1 + .../ButtonTextWithAddIcon.test.tsx | 2 +- .../ButtonTextWithAddIcon.tsx | 1 - .../ClusterDropdown/ClusterDropdown.story.tsx | 7 +- .../ClusterDropdown/ClusterDropdown.tsx | 9 +- .../Controls/MultiselectMenu.story.tsx | 4 +- .../components/Controls/MultiselectMenu.tsx | 4 +- .../components/Controls/SortMenu.story.tsx | 4 +- .../shared/components/Controls/SortMenu.tsx | 2 +- .../Controls/ViewModeSwitch.story.tsx | 5 +- .../components/Controls/ViewModeSwitch.tsx | 3 +- .../DownloadConnect/DownloadConnect.tsx | 1 - .../shared/components/Editor/Editor.tsx | 13 +- .../components/EmptyState/EmptyState.tsx | 3 +- .../FieldCheckbox/FieldCheckbox.test.tsx | 3 +- .../FieldCheckbox/FieldCheckbox.tsx | 9 +- .../FieldInput/FieldInput.story.tsx | 3 - .../components/FieldInput/FieldInput.test.tsx | 4 +- .../components/FieldInput/FieldInput.tsx | 6 +- .../shared/components/FieldInput/index.ts | 1 + .../FieldMultiInput/FieldMultiInput.story.tsx | 3 - .../FieldMultiInput/FieldMultiInput.test.tsx | 2 - .../FieldMultiInput/FieldMultiInput.tsx | 8 +- .../FieldSelect/FieldSelect.story.tsx | 6 +- .../FieldSelect/FieldSelect.test.tsx | 7 +- .../components/FieldSelect/FieldSelect.tsx | 5 +- .../FieldSelectCreatable.story.tsx | 6 +- .../FieldSelect/FieldSelectCreatable.test.tsx | 4 +- .../FieldSelect/FieldSelectCreatable.tsx | 12 +- .../shared/components/FieldSelect/index.ts | 1 + .../shared/components/FieldSelect/shared.tsx | 9 +- .../FieldTextArea/FieldTextArea.story.tsx | 2 - .../FieldTextArea/FieldTextArea.tsx | 7 +- .../FileTransfer/FileTransfer.test.tsx | 2 +- .../components/FileTransfer/FileTransfer.tsx | 2 +- .../FileTransfer/FileTransferActionBar.tsx | 2 +- .../FileTransferContextProvider.tsx | 6 +- .../FileTransferRequests.story.tsx | 2 +- .../FileTransfer/FileTransferRequests.tsx | 6 +- .../FileTransferStateless/CommonElements.tsx | 2 +- .../DownloadForm/DownloadForm.tsx | 1 + .../FileList/FileList.test.tsx | 1 - .../FileList/FileList.tsx | 1 - .../FileList/FileListItem.tsx | 1 + .../FileTransferStateless.story.tsx | 1 - .../FileTransferStateless.tsx | 5 +- .../UploadForm/UploadForm.tsx | 3 +- .../components/Highlight/Highlight.story.tsx | 1 + .../LatencyDiagnostic.test.tsx | 2 +- .../LatencyDiagnostic/LatencyDiagnostic.tsx | 7 +- .../MenuAction/MenuAction.story.tsx | 2 +- .../components/MenuAction/MenuAction.test.tsx | 2 +- .../MenuAction/MenuActionButton.tsx | 5 +- .../components/MenuAction/MenuActionIcon.tsx | 5 +- .../shared/components/MenuAction/index.ts | 2 +- .../components/MenuLogin/MenuLogin.story.tsx | 3 +- .../components/MenuLogin/MenuLogin.test.tsx | 2 +- .../shared/components/MenuLogin/MenuLogin.tsx | 13 +- .../MissingPermissionsTooltip.tsx | 2 +- .../Notification/Notification.story.tsx | 3 +- .../Notification/Notification.test.tsx | 3 +- .../components/Notification/Notification.tsx | 8 +- .../shared/components/Notification/types.ts | 3 +- .../components/Search/SearchPagination.tsx | 2 +- .../shared/components/Search/SearchPanel.tsx | 5 +- .../shared/components/Select/Select.story.tsx | 1 + .../shared/components/Select/Select.tsx | 12 +- .../Select/SelectCreatable.story.tsx | 5 +- .../shared/components/Select/types.ts | 8 +- .../TerminalSearch/TerminalSearch.test.tsx | 3 +- .../TerminalSearch/TerminalSearch.tsx | 7 +- .../TextEditor/StyledTextEditor.jsx | 1 + .../components/TextEditor/TextEditor.jsx | 4 +- .../components/TextEditor/TextEditor.test.tsx | 3 +- .../shared/components/TextEditor/index.js | 1 + .../TextSelectCopy/TextSelectCopy.tsx | 3 +- .../TextSelectCopy/TextSelectCopyMulti.tsx | 5 +- .../UnifiedResources/CardsView/CardsView.tsx | 8 +- .../CardsView/LoadingCard.tsx | 3 +- .../CardsView/ResourceCard.story.tsx | 11 +- .../CardsView/ResourceCard.tsx | 10 +- .../UnifiedResources/FilterPanel.tsx | 16 +- .../UnifiedResources/ListView/ListView.tsx | 6 +- .../ListView/ResourceListItem.story.tsx | 8 +- .../ListView/ResourceListItem.tsx | 7 +- .../UnifiedResources/ResourceTab.tsx | 2 +- .../UnifiedResources.story.tsx | 23 +-- .../UnifiedResources/UnifiedResources.tsx | 47 +++-- .../UnifiedResources/shared/CopyButton.tsx | 5 +- .../shared/LoadingSkeleton.tsx | 2 +- .../UnifiedResources/shared/PinButton.tsx | 4 +- .../UnifiedResources/shared/guessAppIcon.ts | 2 +- .../shared/viewItemsFactory.ts | 14 +- .../components/UnifiedResources/types.ts | 11 +- .../components/Validation/Validation.test.tsx | 4 +- .../components/Validation/Validation.tsx | 3 +- .../shared/components/Validation/index.ts | 2 +- .../components/Validation/rules.test.ts | 10 +- .../shared/components/Validation/useRule.js | 3 +- .../components/Validation/useRule.test.js | 2 +- .../shared/components/Window/Window.tsx | 2 +- web/packages/shared/hooks/index.ts | 4 +- web/packages/shared/hooks/useAsync.test.ts | 6 +- web/packages/shared/hooks/useAsync.ts | 2 +- web/packages/shared/hooks/useAttempt.ts | 3 +- web/packages/shared/hooks/useAttemptNext.ts | 3 +- .../useInfiniteScroll.test.tsx | 5 +- .../useInfiniteScroll/useInfiniteScroll.ts | 2 +- .../useKeyBasedPagination.test.ts | 7 +- .../useKeyBasedPagination.ts | 12 +- .../useRefClickOutside.test.tsx | 2 +- .../useRefClickOutside/useRefClickOutside.ts | 2 +- web/packages/shared/libs/mergeRefs.test.tsx | 2 +- .../shared/libs/stores/useStore.test.tsx | 2 +- web/packages/shared/libs/stores/useStore.ts | 2 +- web/packages/shared/utils/base64/index.ts | 1 + web/packages/shared/utils/text.test.ts | 2 +- web/packages/shared/utils/wait.ts | 2 +- .../AccessRequests/AccessRequests.story.tsx | 2 +- .../LockedAccessRequests.tsx | 4 +- .../teleport/src/AccessRequests/service.ts | 4 +- .../teleport/src/AccessRequests/types.ts | 1 - .../teleport/src/Account/Account.story.tsx | 3 +- .../teleport/src/Account/Account.test.tsx | 7 +- web/packages/teleport/src/Account/Account.tsx | 17 +- .../teleport/src/Account/AccountNew.ts | 1 + .../ChangePasswordWizard.story.tsx | 4 +- .../ChangePasswordWizard.test.tsx | 8 +- .../ChangePasswordWizard.tsx | 11 +- web/packages/teleport/src/Account/Header.tsx | 5 +- .../AuthDeviceList/AuthDeviceList.story.tsx | 1 - .../AuthDeviceList/AuthDeviceList.test.tsx | 3 +- .../AuthDeviceList/AuthDeviceList.tsx | 10 +- .../Account/ManageDevices/useManageDevices.ts | 1 + .../wizards/AddAuthDeviceWizard.story.tsx | 10 +- .../wizards/AddAuthDeviceWizard.test.tsx | 7 +- .../wizards/AddAuthDeviceWizard.tsx | 20 +- .../wizards/DeleteAuthDeviceWizard.story.tsx | 5 +- .../wizards/DeleteAuthDeviceWizard.test.tsx | 14 +- .../wizards/DeleteAuthDeviceWizard.tsx | 16 +- .../wizards/ReauthenticateStep.tsx | 6 +- .../teleport/src/Account/PasswordBox.tsx | 10 +- .../src/AppLauncher/AppLauncher.test.tsx | 5 +- .../teleport/src/AppLauncher/AppLauncher.tsx | 3 - .../teleport/src/Apps/AddApp/AddApp.tsx | 7 +- .../src/Apps/AddApp/Automatically.test.tsx | 4 +- .../src/Apps/AddApp/Automatically.tsx | 15 +- .../teleport/src/Apps/AddApp/Manually.tsx | 8 +- .../teleport/src/Apps/AddApp/useAddApp.ts | 4 +- .../teleport/src/Audit/Audit.story.tsx | 4 +- web/packages/teleport/src/Audit/Audit.tsx | 8 +- .../src/Audit/EventDialog/EventDialog.tsx | 8 +- .../teleport/src/Audit/EventDialog/index.ts | 1 + .../src/Audit/EventList/EventList.tsx | 5 +- .../src/Audit/EventList/EventListCells.tsx | 2 +- .../src/Audit/EventList/EventTypeCell.tsx | 3 +- .../EventList/ViewInPolicyButton.test.tsx | 3 +- .../Audit/EventList/ViewInPolicyButton.tsx | 3 +- .../teleport/src/Audit/EventList/index.ts | 1 + .../teleport/src/Audit/useAuditEvents.ts | 7 +- .../src/AuthConnectors/AuthConnectorTile.tsx | 3 +- .../src/AuthConnectors/AuthConnectors.tsx | 14 +- .../ConnectorList/CTAConnectors.tsx | 4 +- .../ConnectorList/ConnectorList.tsx | 2 +- .../src/AuthConnectors/ConnectorList/index.ts | 1 + .../DeleteConnectorDialog.tsx | 4 +- .../DeleteConnectorDialog/index.ts | 1 + .../src/AuthConnectors/EmptyList/index.ts | 1 + .../AuthConnectors/ssoIcons/getSsoIcon.tsx | 3 +- .../styles/AuthConnectors.styles.ts | 1 + .../src/AuthConnectors/useAuthConnectors.tsx | 1 + .../teleport/src/Bots/Add/AddBots.tsx | 8 +- .../src/Bots/Add/AddBotsPicker.story.tsx | 1 - .../teleport/src/Bots/Add/AddBotsPicker.tsx | 14 +- .../GitHubActions/AddBotToWorkflow.story.tsx | 2 - .../GitHubActions/AddBotToWorkflow.test.tsx | 7 +- .../Add/GitHubActions/AddBotToWorkflow.tsx | 8 +- .../Add/GitHubActions/ConfigureBot.story.tsx | 2 - .../Add/GitHubActions/ConfigureBot.test.tsx | 8 +- .../Bots/Add/GitHubActions/ConfigureBot.tsx | 20 +- .../Add/GitHubActions/ConnectGitHub.story.tsx | 4 +- .../Add/GitHubActions/ConnectGitHub.test.tsx | 4 +- .../Bots/Add/GitHubActions/ConnectGitHub.tsx | 26 +-- .../Bots/Add/GitHubActions/Finish.test.tsx | 5 +- .../src/Bots/Add/GitHubActions/Finish.tsx | 5 +- .../Add/GitHubActions/GitHubActions.test.tsx | 6 +- .../Bots/Add/GitHubActions/GitHubActions.tsx | 6 +- .../Bots/Add/GitHubActions/useGitHubFlow.tsx | 7 +- .../src/Bots/Add/Shared/FlowButtons.test.tsx | 5 +- .../src/Bots/Add/Shared/GuidedFlow.tsx | 2 +- .../teleport/src/Bots/EditBot.test.tsx | 4 +- web/packages/teleport/src/Bots/EditBot.tsx | 5 +- .../teleport/src/Bots/List/BotList.test.tsx | 2 +- .../teleport/src/Bots/List/BotList.tsx | 7 +- .../teleport/src/Bots/List/Bots.test.tsx | 5 +- web/packages/teleport/src/Bots/List/Bots.tsx | 10 +- .../src/Bots/List/EmptyState/EmptyState.tsx | 19 +- .../teleport/src/Bots/ViewBot.story.tsx | 5 +- web/packages/teleport/src/Bots/ViewBot.tsx | 2 - web/packages/teleport/src/Bots/types.ts | 1 + .../src/Clusters/ClusterList/ClusterList.tsx | 6 +- .../src/Clusters/ClusterList/index.ts | 1 + .../teleport/src/Clusters/Clusters.story.tsx | 6 +- .../teleport/src/Clusters/Clusters.tsx | 9 +- .../ManageCluster/ManageCluster.story.tsx | 5 +- .../ManageCluster/ManageCluster.test.tsx | 11 +- .../Clusters/ManageCluster/ManageCluster.tsx | 18 +- web/packages/teleport/src/Clusters/utils.ts | 1 - .../src/Console/ActionBar/ActionBar.tsx | 3 +- .../teleport/src/Console/ActionBar/index.ts | 1 + .../teleport/src/Console/Console.story.tsx | 7 +- web/packages/teleport/src/Console/Console.tsx | 18 +- .../src/Console/Document/Document.tsx | 1 + .../teleport/src/Console/Document/index.ts | 1 + .../DocumentBlank/DocumentBlank.story.tsx | 2 +- .../Console/DocumentBlank/DocumentBlank.tsx | 2 +- .../src/Console/DocumentBlank/index.ts | 1 + .../src/Console/DocumentDb/ConnectDialog.tsx | 13 +- .../Console/DocumentDb/DocumentDb.story.tsx | 8 +- .../Console/DocumentDb/DocumentDb.test.tsx | 10 +- .../src/Console/DocumentDb/DocumentDb.tsx | 13 +- .../src/Console/DocumentDb/useDbSession.tsx | 8 +- .../DocumentKubeExec.story.tsx | 10 +- .../DocumentKubeExec.test.tsx | 10 +- .../DocumentKubeExec/DocumentKubeExec.tsx | 13 +- .../DocumentKubeExec/KubeExecDataDialog.tsx | 18 +- .../src/Console/DocumentKubeExec/index.ts | 1 + .../DocumentKubeExec/useKubeExecSession.tsx | 8 +- .../DocumentNodes/DocumentNodes.story.tsx | 4 +- .../Console/DocumentNodes/DocumentNodes.tsx | 7 +- .../src/Console/DocumentNodes/consoleTheme.ts | 8 +- .../src/Console/DocumentNodes/index.ts | 1 + .../src/Console/DocumentNodes/useNodes.ts | 7 +- .../Console/DocumentSsh/DocumentSsh.story.tsx | 11 +- .../Console/DocumentSsh/DocumentSsh.test.tsx | 7 +- .../src/Console/DocumentSsh/DocumentSsh.tsx | 18 +- .../DocumentSsh/ShareSession/ShareSession.tsx | 6 +- .../Console/DocumentSsh/Terminal/Terminal.tsx | 8 +- .../DocumentSsh/httpFileTransferHandlers.ts | 2 +- .../teleport/src/Console/DocumentSsh/index.ts | 1 + .../Console/DocumentSsh/useFileTransfer.ts | 8 +- .../src/Console/DocumentSsh/useGetScpUrl.ts | 1 + .../src/Console/DocumentSsh/useSshSession.ts | 8 +- .../src/Console/StyledXterm/StyledXterm.tsx | 1 + .../teleport/src/Console/StyledXterm/index.ts | 1 + .../Console/Tabs/JoinedUsers/JoinedUsers.jsx | 5 +- .../src/Console/Tabs/JoinedUsers/index.js | 1 + .../teleport/src/Console/Tabs/TabItem.tsx | 3 +- .../teleport/src/Console/Tabs/Tabs.story.tsx | 2 +- .../teleport/src/Console/Tabs/Tabs.tsx | 10 +- .../teleport/src/Console/consoleContext.tsx | 26 +-- .../src/Console/consoleContextProvider.tsx | 1 + .../teleport/src/Console/stores/index.ts | 1 + .../src/Console/useTabRouting.test.tsx | 3 +- .../teleport/src/Console/useTabRouting.ts | 2 +- .../Databases/ConnectDialog/ConnectDialog.tsx | 13 +- .../src/Databases/ConnectDialog/index.ts | 1 + .../src/DesktopSession/ActionMenu.tsx | 4 +- .../src/DesktopSession/AlertDropdown.tsx | 12 +- .../DesktopSession/DesktopSession.story.tsx | 3 +- .../src/DesktopSession/DesktopSession.tsx | 19 +- .../src/DesktopSession/KeyboardHandler.tsx | 4 +- .../teleport/src/DesktopSession/TopBar.tsx | 7 +- .../src/DesktopSession/useDesktopSession.tsx | 7 +- .../src/DesktopSession/useTdpClientCanvas.tsx | 22 +-- .../src/DeviceTrust/DeviceTrustLocked.tsx | 19 +- .../CreateAppAccess/AppCreatedDialog.tsx | 4 +- .../CreateAppAccess/CreateAppAccess.story.tsx | 9 +- .../CreateAppAccess/CreateAppAccess.test.tsx | 20 +- .../CreateAppAccess/CreateAppAccess.tsx | 13 +- .../SetupAccess/SetupAccess.story.tsx | 10 +- .../SetupAccess/SetupAccess.tsx | 17 +- .../TestConnection/TestConnection.story.tsx | 5 +- .../TestConnection/TestConnection.tsx | 18 +- .../Discover/AwsMangementConsole/index.tsx | 3 +- .../SetupConnect/SetupConnect.story.tsx | 4 +- .../SetupConnect/SetupConnect.test.ts | 5 +- .../SetupConnect/SetupConnect.tsx | 21 +- .../TestConnection/TestConnection.story.tsx | 8 +- .../TestConnection/TestConnection.tsx | 41 ++-- .../src/Discover/ConnectMyComputer/index.ts | 1 - .../CreateDatabase/CreateDatabase.story.tsx | 2 - .../CreateDatabase/CreateDatabase.tsx | 26 ++- .../CreateDatabaseDialog.story.tsx | 2 +- .../CreateDatabase/CreateDatabaseDialog.tsx | 13 +- .../CreateDatabase/useCreateDatabase.test.tsx | 22 +-- .../CreateDatabase/useCreateDatabase.ts | 25 ++- .../src/Discover/Database/DatabaseWrapper.tsx | 3 +- .../AutoDeploy/AutoDeploy.story.tsx | 5 +- .../AutoDeploy/AutoDeploy.test.tsx | 34 ++-- .../DeployService/AutoDeploy/AutoDeploy.tsx | 37 ++-- .../AutoDeploy/SelectSecurityGroups.tsx | 12 +- .../AutoDeploy/SelectSubnetIds.tsx | 16 +- .../Database/DeployService/DeployService.tsx | 3 +- .../ManualDeploy/ManualDeploy.story.tsx | 16 +- .../ManualDeploy/ManualDeploy.tsx | 30 ++- .../DeployService/ManualDeploy/index.ts | 1 + .../EnrollRdsDatabase/AutoDiscoverToggle.tsx | 1 - .../EnrollRdsDatabase/AutoEnrollment.tsx | 22 +-- .../EnrollRdsDatabase.story.tsx | 17 +- .../EnrollRdsDatabase.test.tsx | 12 +- .../EnrollRdsDatabase/EnrollRdsDatabase.tsx | 14 +- .../EnrollRdsDatabase/RdsDatabaseList.tsx | 6 +- .../EnrollRdsDatabase/SingleEnrollment.tsx | 13 +- .../EnrollRdsDatabase/VpcSelector.tsx | 5 +- .../Database/IamPolicy/IamPolicy.story.tsx | 1 - .../Discover/Database/IamPolicy/IamPolicy.tsx | 13 +- .../Database/IamPolicy/useIamPolicy.ts | 4 +- .../Database/MutualTls/MutualTls.story.tsx | 2 - .../Discover/Database/MutualTls/MutualTls.tsx | 17 +- .../Database/MutualTls/useMutualTls.ts | 9 +- .../SetupAccess/SetupAccess.story.tsx | 7 +- .../Database/SetupAccess/SetupAccess.tsx | 18 +- .../Discover/Database/SetupAccess/index.ts | 1 + .../TestConnection/TestConnection.story.tsx | 5 +- .../TestConnection/TestConnection.test.tsx | 4 +- .../TestConnection/TestConnection.tsx | 22 +-- .../teleport/src/Discover/Database/common.tsx | 5 +- .../teleport/src/Discover/Database/index.tsx | 21 +- .../teleport/src/Discover/Discover.test.tsx | 32 ++- .../teleport/src/Discover/Discover.tsx | 16 +- .../src/Discover/Fixtures/databases.tsx | 5 +- .../src/Discover/Fixtures/fixtures.tsx | 14 +- .../src/Discover/Fixtures/kubernetes.tsx | 4 +- .../EnrollEKSCluster/AgentWaitingDialog.tsx | 12 +- .../EnrollEKSCluster/Dialogs.story.tsx | 20 +- .../EnrollEKSCluster/EksClustersList.tsx | 9 +- .../EnrollEKSCluster.test.tsx | 18 +- .../EnrollEksCluster.story.tsx | 22 +-- .../EnrollEKSCluster/EnrollEksCluster.tsx | 56 +++--- .../EnrollEKSCluster/EnrollmentDialog.tsx | 7 +- .../EnrollEKSCluster/ManualHelmDialog.tsx | 20 +- .../Kubernetes/HelmChart/HelmChart.story.tsx | 17 +- .../Kubernetes/HelmChart/HelmChart.tsx | 33 ++-- .../src/Discover/Kubernetes/KubeWrapper.tsx | 1 - .../SetupAccess/SetupAccess.story.tsx | 7 +- .../Kubernetes/SetupAccess/SetupAccess.tsx | 10 +- .../Discover/Kubernetes/SetupAccess/index.ts | 1 + .../TestConnection/TestConnection.story.tsx | 1 - .../TestConnection/TestConnection.tsx | 18 +- .../Kubernetes/TestConnection/index.ts | 1 + .../TestConnection/useTestConnection.ts | 7 +- .../src/Discover/Kubernetes/index.tsx | 8 +- .../PermissionsErrorMessage.tsx | 3 +- .../SelectResource/SelectResource.story.tsx | 10 +- .../SelectResource/SelectResource.test.tsx | 5 +- .../SelectResource/SelectResource.tsx | 47 ++--- .../src/Discover/SelectResource/databases.tsx | 6 +- .../src/Discover/SelectResource/resources.tsx | 2 - .../Discover/SelectResource/resourcesE.tsx | 3 +- .../src/Discover/SelectResource/types.ts | 9 +- .../CreateEc2Ice/CreateEc2Ice.story.tsx | 7 +- .../Server/CreateEc2Ice/CreateEc2Ice.tsx | 26 +-- .../CreateEc2Ice/CreateEc2IceDialog.tsx | 24 ++- .../DiscoveryConfigCreatedDialog.tsx | 4 +- .../DiscoveryConfigSsm.story.tsx | 13 +- .../DiscoveryConfigSsm/DiscoveryConfigSsm.tsx | 33 ++-- .../DownloadScript/DownloadScript.story.tsx | 24 ++- .../Server/DownloadScript/DownloadScript.tsx | 28 ++- .../EnrollEc2Instance/Ec2InstanceList.tsx | 4 +- .../EnrollEc2Instance.story.tsx | 6 +- .../EnrollEc2Instance.test.tsx | 26 +-- .../EnrollEc2Instance/EnrollEc2Instance.tsx | 43 ++-- .../NoEc2IceRequiredDialog.tsx | 4 +- .../src/Discover/Server/ServerWrapper.tsx | 1 - .../Server/SetupAccess/SetupAccess.story.tsx | 7 +- .../Server/SetupAccess/SetupAccess.tsx | 10 +- .../src/Discover/Server/SetupAccess/index.ts | 1 + .../teleport/src/Discover/Server/Shared.tsx | 3 +- .../TestConnection/TestConnection.story.tsx | 6 +- .../Server/TestConnection/TestConnection.tsx | 24 ++- .../teleport/src/Discover/Server/index.tsx | 10 +- .../src/Discover/Shared/ActionButtons.tsx | 1 + .../Discover/Shared/Aws/ConfigureIamPerms.tsx | 12 +- .../Discover/Shared/Aws/DisableableCell.tsx | 1 + .../src/Discover/Shared/Aws/StatusCell.tsx | 2 +- .../Shared/AwsAccount/AwsAccount.story.tsx | 7 +- .../Shared/AwsAccount/AwsAccount.test.tsx | 25 ++- .../Discover/Shared/AwsAccount/AwsAccount.tsx | 34 ++-- .../AwsRegionSelector/AwsRegionSelector.tsx | 5 +- .../ConfigureDiscoveryService.story.tsx | 9 +- .../ConfigureDiscoveryService.tsx | 13 +- .../ConfigureDiscoveryServiceDirections.tsx | 7 +- .../CreatedDiscoveryConfigDialog.tsx | 7 +- .../ConnectionDiagnosticResult.story.tsx | 8 +- .../ConnectionDiagnosticResult.tsx | 14 +- .../useConnectionDiagnostic.ts | 22 ++- .../Shared/CustomInputFieldForAsterisks.tsx | 2 +- .../Shared/Finished/Finished.story.tsx | 3 +- .../src/Discover/Shared/Finished/Finished.tsx | 6 +- .../teleport/src/Discover/Shared/Header.tsx | 2 +- .../teleport/src/Discover/Shared/HintBox.tsx | 1 - .../LabelsCreater/LabelsCreater.story.tsx | 2 +- .../Shared/LabelsCreater/LabelsCreater.tsx | 8 +- .../Discover/Shared/PingTeleportContext.tsx | 2 +- .../ResourceLabelTooltip.tsx | 3 +- .../SecurityGroupPicker.tsx | 9 +- .../SelectCreatable/SelectCreatable.tsx | 3 +- .../Shared/SetupAccess/AccessInfo.tsx | 13 +- .../SetupAccess/SetupAccessWrapper.story.tsx | 4 +- .../Shared/SetupAccess/SetupAccessWrapper.tsx | 12 +- .../Shared/SetupAccess/useUserTraits.test.tsx | 31 ++- .../Shared/SetupAccess/useUserTraits.ts | 22 +-- .../src/Discover/Shared/StatusLight.tsx | 3 +- .../teleport/src/Discover/Shared/StepBox.tsx | 1 + .../teleport/src/Discover/Shared/StyledBox.ts | 1 + .../Shared/SubnetIdPicker/SubnetIdPicker.tsx | 5 +- .../teleport/src/Discover/Shared/Text.tsx | 4 +- .../Discover/Shared/useJoinTokenSuspender.ts | 6 +- web/packages/teleport/src/Discover/flow.tsx | 2 +- .../src/Discover/resourceViewConfigs.ts | 4 +- web/packages/teleport/src/Discover/types.ts | 2 +- .../src/Discover/useDiscover.test.tsx | 12 +- .../teleport/src/Discover/useDiscover.tsx | 48 +++-- .../src/Discover/yamlTemplates/index.ts | 16 +- .../HeadlessRequest/HeadlessRequest.test.tsx | 7 +- .../src/HeadlessRequest/HeadlessRequest.tsx | 6 +- .../EditAwsOidcIntegrationDialog.test.tsx | 7 +- .../EditAwsOidcIntegrationDialog.tsx | 26 +-- .../Enroll/AwsOidc/AwsOidc.test.tsx | 8 +- .../Integrations/Enroll/AwsOidc/AwsOidc.tsx | 13 +- .../AwsOidc/ConfigureAwsOidcSummary.tsx | 5 +- .../Enroll/AwsOidc/FinishDialog.tsx | 11 +- .../Enroll/AwsOidc/S3BucketConfiguration.tsx | 4 +- .../Enroll/AwsOidc/useAwsOidcIntegration.tsx | 19 +- .../Enroll/IntegrationEnroll.story.tsx | 4 +- .../Integrations/Enroll/IntegrationEnroll.tsx | 6 +- .../Integrations/Enroll/IntegrationRoute.tsx | 2 +- .../Enroll/IntegrationTiles.test.tsx | 1 + .../Integrations/Enroll/IntegrationTiles.tsx | 7 +- .../Enroll/MachineIDIntegrationSection.tsx | 1 - .../src/Integrations/Enroll/common.tsx | 3 +- .../src/Integrations/IntegrationList.test.tsx | 5 +- .../src/Integrations/IntegrationList.tsx | 14 +- .../src/Integrations/IntegrationStatus.tsx | 2 +- .../src/Integrations/Integrations.story.tsx | 4 +- .../src/Integrations/Integrations.tsx | 16 +- .../IntegrationsAddButton.test.tsx | 1 + .../Integrations/IntegrationsAddButton.tsx | 1 + .../Operations/IntegrationOperations.tsx | 5 +- .../Operations/useIntegrationOperation.ts | 4 +- .../Integrations/RemoveIntegrationDialog.tsx | 6 +- .../teleport/src/Integrations/fixtures.ts | 9 +- .../teleport/src/Integrations/helpers.test.ts | 4 +- .../teleport/src/Integrations/helpers.ts | 2 +- .../shared/RoleArnInput.story.tsx | 1 + .../status/AwsOidc/AwsOidcDashboard.story.tsx | 5 +- .../status/AwsOidc/AwsOidcDashboard.test.tsx | 6 +- .../status/AwsOidc/AwsOidcDashboard.tsx | 5 +- .../status/AwsOidc/AwsOidcRoutes.tsx | 1 - .../Integrations/status/AwsOidc/StatCard.tsx | 6 +- .../testHelpers/mockAwsOidcStatusProvider.tsx | 3 +- .../status/AwsOidc/useAwsOidcStatus.tsx | 2 +- .../src/JoinTokens/JoinTokenForms.tsx | 4 +- .../src/JoinTokens/JoinTokens.story.tsx | 4 +- .../src/JoinTokens/JoinTokens.test.tsx | 6 +- .../teleport/src/JoinTokens/JoinTokens.tsx | 28 +-- .../src/JoinTokens/UpsertJoinTokenDialog.tsx | 16 +- .../src/Kubes/ConnectDialog/ConnectDialog.tsx | 8 +- .../teleport/src/Kubes/ConnectDialog/index.ts | 1 + .../src/LocksV2/Locks/DeleteLockDialogue.tsx | 6 +- .../teleport/src/LocksV2/Locks/Locks.test.tsx | 3 +- .../teleport/src/LocksV2/Locks/Locks.tsx | 14 +- .../NewLock/LockCheckout/LockCheckout.tsx | 25 ++- .../teleport/src/LocksV2/NewLock/NewLock.tsx | 33 ++-- .../ResourceList/HybridList/HybridList.tsx | 5 +- .../LocksV2/NewLock/ResourceList/Logins.tsx | 5 +- .../ServerSideSupportedList/Desktops.tsx | 2 +- .../ServerSideSupportedList/Nodes.tsx | 2 +- .../ServerSideSupportedList.tsx | 35 ++-- .../ResourceList/SimpleList/MfaDevices.tsx | 2 +- .../ResourceList/SimpleList/SimpleList.tsx | 11 +- .../LocksV2/NewLock/ResourceList/common.tsx | 3 +- web/packages/teleport/src/LocksV2/common.tsx | 1 + .../teleport/src/Login/Login.story.tsx | 6 +- .../teleport/src/Login/Login.test.tsx | 5 +- web/packages/teleport/src/Login/Login.tsx | 5 +- .../teleport/src/Login/LoginClose.tsx | 1 + .../teleport/src/Login/LoginFailed.tsx | 2 +- web/packages/teleport/src/Login/Motd/Motd.tsx | 2 +- web/packages/teleport/src/Login/useLogin.ts | 9 +- .../teleport/src/Login/uselogin.test.tsx | 2 +- .../teleport/src/Main/LayoutContext.tsx | 2 +- web/packages/teleport/src/Main/Main.test.tsx | 15 +- web/packages/teleport/src/Main/Main.tsx | 36 ++-- .../Main/OnboardDiscover/OnboardDiscover.tsx | 6 +- .../teleport/src/Navigation/Navigation.tsx | 10 +- .../NavigationCategoryContainer.tsx | 4 +- .../src/Navigation/NavigationDropdown.tsx | 15 +- .../src/Navigation/NavigationItem.test.tsx | 22 +-- .../src/Navigation/NavigationItem.tsx | 24 ++- .../src/Navigation/NavigationSection.tsx | 3 +- .../teleport/src/Navigation/RecentHistory.tsx | 11 +- .../Navigation/SideNavigation/Navigation.tsx | 23 +-- .../SideNavigation/ResourcesSection.tsx | 15 +- .../src/Navigation/SideNavigation/Search.tsx | 9 +- .../src/Navigation/SideNavigation/Section.tsx | 4 +- .../teleport/src/Navigation/utils.tsx | 1 - .../src/Notifications/Notification.story.tsx | 11 +- .../src/Notifications/Notification.tsx | 19 +- .../src/Notifications/Notifications.test.tsx | 12 +- .../src/Notifications/Notifications.tsx | 21 +- .../teleport/src/Notifications/fixtures.ts | 8 +- .../notificationContentFactory.tsx | 5 +- .../src/Player/ActionBar/ActionBar.tsx | 5 +- .../teleport/src/Player/ActionBar/index.ts | 1 + .../teleport/src/Player/DesktopPlayer.tsx | 14 +- .../teleport/src/Player/Player.story.tsx | 6 +- web/packages/teleport/src/Player/Player.tsx | 10 +- .../src/Player/PlayerTabs/PlayerTabs.tsx | 3 +- .../teleport/src/Player/PlayerTabs/index.ts | 1 + .../src/Player/ProgressBar/Slider/Slider.jsx | 4 +- .../src/Player/ProgressBar/Slider/index.js | 1 + .../teleport/src/Player/SshPlayer.tsx | 7 +- .../teleport/src/Player/Xterm/Xterm.tsx | 8 +- .../src/Recordings/Recordings.story.tsx | 3 +- .../teleport/src/Recordings/Recordings.tsx | 6 +- .../src/Recordings/RecordingsList.tsx | 3 +- .../teleport/src/Recordings/useRecordings.ts | 9 +- .../src/Roles/DeleteRole/DeleteRole.tsx | 6 +- .../teleport/src/Roles/DeleteRole/index.ts | 1 + .../src/Roles/RoleEditor/EditorHeader.tsx | 2 +- .../src/Roles/RoleEditor/EditorTabs.tsx | 2 +- .../src/Roles/RoleEditor/RoleEditor.story.tsx | 15 +- .../src/Roles/RoleEditor/RoleEditor.test.tsx | 9 +- .../src/Roles/RoleEditor/RoleEditor.tsx | 18 +- .../Roles/RoleEditor/RoleEditorAdapter.tsx | 22 +-- .../src/Roles/RoleEditor/RoleEditorDialog.tsx | 3 +- .../teleport/src/Roles/RoleEditor/Shared.tsx | 3 +- .../StandardEditor/AccessRules.test.tsx | 9 +- .../RoleEditor/StandardEditor/AccessRules.tsx | 12 +- .../StandardEditor/MetadataSection.tsx | 4 +- .../RoleEditor/StandardEditor/Options.tsx | 10 +- .../RequiresResetToStandard.tsx | 2 +- .../StandardEditor/Resources.test.tsx | 27 +-- .../RoleEditor/StandardEditor/Resources.tsx | 27 +-- .../StandardEditor/StandardEditor.test.tsx | 9 +- .../StandardEditor/StandardEditor.tsx | 30 +-- .../RoleEditor/StandardEditor/sections.tsx | 7 +- .../StandardEditor/standardmodel.test.ts | 6 +- .../StandardEditor/standardmodel.ts | 4 +- .../RoleEditor/StandardEditor/validation.ts | 8 +- .../teleport/src/Roles/RoleList/RoleList.tsx | 1 - .../teleport/src/Roles/Roles.test.tsx | 3 +- web/packages/teleport/src/Roles/Roles.tsx | 23 ++- web/packages/teleport/src/Roles/useRoles.ts | 5 +- .../SamlApplications/useSamlAppActions.tsx | 4 +- .../SessionList/SessionJoinBtn.test.tsx | 1 - .../Sessions/SessionList/SessionJoinBtn.tsx | 2 +- .../src/Sessions/SessionList/SessionList.tsx | 3 +- .../src/Sessions/SessionList/index.ts | 1 + .../teleport/src/Sessions/Sessions.story.tsx | 3 +- .../teleport/src/Sessions/Sessions.tsx | 7 +- .../teleport/src/Sessions/useSessions.ts | 7 +- .../SingleLogoutFailed.story.tsx | 2 +- .../SingleLogoutFailed/SingleLogoutFailed.tsx | 1 + .../teleport/src/Support/Support.story.tsx | 3 +- web/packages/teleport/src/Support/Support.tsx | 10 +- web/packages/teleport/src/Teleport.tsx | 36 ++-- web/packages/teleport/src/ThemeProvider.tsx | 7 +- .../ClusterSelector/ClusterSelector.tsx | 1 + .../src/TopBar/ClusterSelector/index.ts | 1 + .../teleport/src/TopBar/DeviceTrustIcon.tsx | 1 + .../teleport/src/TopBar/DeviceTrustStatus.tsx | 1 + .../teleport/src/TopBar/TopBar.story.tsx | 10 +- .../teleport/src/TopBar/TopBar.test.tsx | 25 ++- web/packages/teleport/src/TopBar/TopBar.tsx | 25 ++- .../teleport/src/TopBar/TopBarSideNav.tsx | 14 +- .../DeleteTrust/DeleteTrust.tsx | 6 +- .../src/TrustedClusters/DeleteTrust/index.ts | 1 + .../src/TrustedClusters/TrustedClusters.tsx | 6 +- .../TrustedList/TrustedListItem.tsx | 2 +- .../src/TrustedClusters/TrustedList/index.ts | 1 + .../teleport/src/TrustedClusters/assets.js | 1 + .../teleport/src/TrustedClusters/index.ts | 1 + .../src/TrustedClusters/useTrustedClusters.ts | 1 + .../UnifiedResources/ResourceActionButton.tsx | 26 +-- .../src/UnifiedResources/UnifiedResources.tsx | 36 ++-- .../teleport/src/User/UserContext.test.tsx | 9 +- .../teleport/src/User/UserContext.tsx | 14 +- .../Users/UserAddEdit/TraitsEditor.test.tsx | 6 +- .../src/Users/UserAddEdit/TraitsEditor.tsx | 5 +- .../Users/UserAddEdit/UserAddEdit.story.tsx | 3 +- .../src/Users/UserAddEdit/UserAddEdit.tsx | 11 +- .../src/Users/UserAddEdit/useDialog.tsx | 5 +- .../src/Users/UserDelete/UserDelete.tsx | 6 +- .../teleport/src/Users/UserDelete/index.ts | 1 + .../teleport/src/Users/UserList/UserList.tsx | 2 +- .../src/Users/UserReset/UserReset.story.tsx | 2 +- .../src/Users/UserReset/UserReset.tsx | 7 +- .../src/Users/UserTokenLink/UserTokenLink.tsx | 6 +- .../teleport/src/Users/Users.test.tsx | 3 +- web/packages/teleport/src/Users/Users.tsx | 5 +- web/packages/teleport/src/Users/useUsers.ts | 7 +- .../src/Welcome/NewCredentials/Expired.tsx | 1 + .../NewCredentials/NewCredentials.story.tsx | 1 - .../NewCredentials/NewCredentials.test.tsx | 9 +- .../Welcome/NewCredentials/NewCredentials.tsx | 7 +- .../Welcome/NewCredentials/NewPassword.tsx | 1 + .../NewCredentials/NewPasswordlessDevice.tsx | 2 +- .../src/Welcome/NewCredentials/Success.tsx | 3 +- .../src/Welcome/NewCredentials/constants.ts | 2 +- .../src/Welcome/NewCredentials/types.ts | 10 +- .../teleport/src/Welcome/Welcome.story.tsx | 3 +- .../teleport/src/Welcome/Welcome.test.tsx | 12 +- web/packages/teleport/src/Welcome/Welcome.tsx | 7 +- web/packages/teleport/src/Welcome/useToken.ts | 5 +- web/packages/teleport/src/boot.tsx | 2 +- .../src/components/AjaxPoller/index.js | 1 + .../Authenticated/Authenticated.test.tsx | 4 +- .../Authenticated/Authenticated.tsx | 15 +- .../Authenticated/ErrorDialogue.tsx | 6 +- .../src/components/Authenticated/index.ts | 1 + .../AuthnDialog/AuthnDialog.test.tsx | 3 +- .../components/AuthnDialog/AuthnDialog.tsx | 8 +- .../src/components/AuthnDialog/index.ts | 1 + .../components/BannerList/BannerList.test.tsx | 5 +- .../src/components/BannerList/BannerList.tsx | 7 +- .../components/BannerList/StandardBanner.tsx | 3 +- .../src/components/BannerList/index.tsx | 2 +- .../components/BannerList/useAlerts.test.tsx | 1 - .../src/components/BannerList/useAlerts.tsx | 14 +- .../ButtonLockedFeature.test.tsx | 5 +- .../ButtonLockedFeature.tsx | 4 +- .../src/components/CardEmpty/index.js | 1 + .../src/components/CatchError/CatchError.tsx | 1 + ...tSearcheableTableWithQueryParamSupport.tsx | 2 +- .../src/components/DayPicker/Shared.tsx | 1 + .../src/components/DownloadLinks/index.ts | 1 + .../src/components/Empty/Empty.test.tsx | 3 +- .../teleport/src/components/Empty/Empty.tsx | 6 +- .../EventRangePicker/Custom/Custom.tsx | 7 +- .../EventRangePicker.story.tsx | 3 +- .../EventRangePicker/EventRangePicker.tsx | 13 +- .../src/components/EventRangePicker/utils.ts | 2 +- .../ExternalAuditStorageCta.test.tsx | 9 +- .../ExternalAuditStorageCta.tsx | 12 +- .../components/FormLogin/FormLogin.test.tsx | 2 +- .../src/components/FormLogin/FormLogin.tsx | 39 ++-- .../src/components/FormLogin/SsoButtons.tsx | 1 + .../src/components/FormLogin/index.ts | 1 + .../HeadlessRequestDialog.tsx | 4 +- .../components/InputSearch/InputSearch.jsx | 5 +- .../src/components/InputSearch/index.js | 1 + .../LabelSelector/LabelSelector.test.tsx | 2 +- .../LabelSelector/LabelSelector.tsx | 3 +- .../LabelsInput/LabelsInput.story.tsx | 5 +- .../LabelsInput/LabelsInput.test.tsx | 9 +- .../components/LabelsInput/LabelsInput.tsx | 9 +- .../teleport/src/components/Layout/Layout.tsx | 1 + .../src/components/LogoHero/LogoHero.tsx | 9 +- .../MfaDeviceList/MfaDeviceList.tsx | 3 +- .../RemoveDialog/RemoveDialog.tsx | 3 +- .../MfaDeviceList/RemoveDialog/index.ts | 1 + .../NewMfaDeviceForm/NewMfaDeviceForm.tsx | 9 +- .../src/components/NodeList/NodeList.tsx | 8 +- .../Onboard/WelcomeWrapper.story.tsx | 2 +- .../src/components/Passkeys/PasskeyIcons.tsx | 1 + .../ReAuthenticate/ReAuthenticate.tsx | 3 +- .../ReAuthenticate/useReAuthenticate.ts | 2 +- .../RecoveryCodes/RecoveryCodes.tsx | 1 + .../ResourceEditor/ResourceEditor.jsx | 7 +- .../teleport/src/components/Router/Router.jsx | 7 +- .../teleport/src/components/Router/index.js | 12 +- .../src/components/SelectFilters/Pager.tsx | 3 +- .../SelectFilters/SelectFilters.tsx | 13 +- .../src/components/SelectFilters/index.ts | 1 + .../src/components/SelectFilters/usePages.ts | 2 +- .../ServersideSearchPanel/SearchInput.tsx | 4 +- .../ServersideSearchPanel.tsx | 3 +- ...ServersideSearchPanelWithPageIndicator.tsx | 2 +- .../useServerSideSearchPanel.ts | 3 +- .../src/components/TabIcon/TabIcon.tsx | 1 + .../teleport/src/components/TabIcon/index.ts | 1 + .../src/components/Tabs/Tabs.story.tsx | 1 - .../teleport/src/components/Tabs/Tabs.tsx | 1 + .../teleport/src/components/Tabs/index.ts | 1 + .../TdpClientCanvas/TdpClientCanvas.tsx | 9 +- .../src/components/TextSelectCopy/index.ts | 1 + .../ToolTipBadge/ToolTipBadge.story.tsx | 1 + .../components/ToolTipBadge/ToolTipBadge.tsx | 3 +- .../ToolTipNoPermBadge.story.tsx | 3 +- .../ToolTipNoPermBadge.test.tsx | 1 + .../UserMenuNav/UserMenuNav.story.tsx | 9 +- .../UserMenuNav/UserMenuNav.test.tsx | 16 +- .../components/UserMenuNav/UserMenuNav.tsx | 24 +-- .../components/Wizard/Navigation/Bullet.tsx | 3 +- .../Wizard/Navigation/Navigation.story.tsx | 1 - .../Wizard/Navigation/Navigation.tsx | 3 +- .../components/Wizard/Navigation/StepItem.tsx | 3 +- .../components/Wizard/Navigation/StepList.tsx | 1 - .../src/components/Wizard/flow.test.tsx | 2 +- .../hooks/useServersidePagination.ts | 5 +- .../useUrlFiltering/useUrlFiltering.test.tsx | 5 +- .../hooks/useUrlFiltering/useUrlFiltering.ts | 6 +- .../teleport/src/components/useResources.ts | 2 +- web/packages/teleport/src/config.test.ts | 4 +- web/packages/teleport/src/config.ts | 16 +- web/packages/teleport/src/features.tsx | 41 ++-- web/packages/teleport/src/lib/tdp/client.ts | 50 +++-- .../teleport/src/lib/tdp/codec.test.ts | 2 +- web/packages/teleport/src/lib/tdp/index.ts | 2 +- .../teleport/src/lib/tdp/playerClient.ts | 2 +- .../teleport/src/lib/term/terminal.ts | 14 +- web/packages/teleport/src/lib/term/tty.ts | 11 +- .../teleport/src/lib/term/ttyPlayer.js | 4 +- .../teleport/src/lib/term/ttyPlayer.test.js | 2 +- web/packages/teleport/src/lib/useMfa.ts | 6 +- web/packages/teleport/src/lib/util.test.ts | 2 +- web/packages/teleport/src/mocks/contexts.ts | 3 +- .../src/services/agents/agents.test.ts | 3 +- .../teleport/src/services/agents/agents.ts | 3 +- .../teleport/src/services/agents/types.ts | 9 +- .../teleport/src/services/alerts/alerts.tsx | 2 +- .../teleport/src/services/api/api.test.ts | 3 +- web/packages/teleport/src/services/api/api.ts | 4 +- .../teleport/src/services/api/index.ts | 5 +- .../teleport/src/services/apps/apps.ts | 3 +- .../teleport/src/services/apps/types.ts | 1 - .../teleport/src/services/audit/audit.ts | 2 +- .../teleport/src/services/audit/makeEvent.ts | 3 +- .../teleport/src/services/auth/auth.test.ts | 2 +- .../teleport/src/services/auth/auth.ts | 16 +- .../teleport/src/services/auth/types.ts | 1 - web/packages/teleport/src/services/bot/bot.ts | 9 +- .../src/services/clusters/clusters.ts | 5 +- .../src/services/databases/databases.ts | 5 +- .../src/services/desktops/desktops.ts | 3 +- .../src/services/discovery/discovery.ts | 2 +- .../teleport/src/services/history/history.ts | 5 +- .../teleport/src/services/history/index.ts | 1 + .../integrations/integrations.test.ts | 4 +- .../src/services/integrations/integrations.ts | 59 +++--- .../src/services/joinToken/joinToken.test.ts | 3 +- .../src/services/joinToken/joinToken.ts | 5 +- .../src/services/joinToken/makeJoinToken.ts | 2 +- .../teleport/src/services/kube/kube.ts | 4 +- .../teleport/src/services/kube/types.ts | 1 + .../teleport/src/services/locks/locks.ts | 2 +- web/packages/teleport/src/services/mfa/mfa.ts | 6 +- .../src/services/mfa/mfaOptions.test.ts | 3 +- .../teleport/src/services/nodes/makeNode.ts | 2 +- .../teleport/src/services/nodes/nodes.ts | 4 +- .../src/services/recordings/makeRecording.ts | 3 +- .../src/services/recordings/recordings.ts | 2 +- .../src/services/resources/makeResource.ts | 2 +- .../src/services/resources/resource.ts | 8 +- .../src/services/session/makeSession.ts | 2 +- .../teleport/src/services/session/session.ts | 2 +- .../services/storageService/storageService.ts | 13 +- .../teleport/src/services/user/index.ts | 2 +- .../src/services/user/makeUserContext.ts | 3 +- .../teleport/src/services/user/user.test.ts | 4 +- .../teleport/src/services/user/user.ts | 9 +- .../src/services/userEvent/userEvent.ts | 12 +- .../src/services/userGroups/usergroups.ts | 3 +- .../userPreferences/userPreferences.test.ts | 11 +- .../userPreferences/userPreferences.ts | 18 +- .../src/services/websession/websession.ts | 2 +- .../teleport/src/services/yaml/yaml.ts | 2 +- web/packages/teleport/src/stores/index.ts | 2 +- .../teleport/src/stores/storeUserContext.ts | 1 - web/packages/teleport/src/telemetry-boot.ts | 26 +-- web/packages/teleport/src/teleportContext.tsx | 30 +-- .../teleport/src/useStickyClusterId.ts | 4 +- .../teleterm/electron.vite.config.mts | 3 +- .../agentCleanupDaemon.test.ts | 4 +- web/packages/teleterm/src/deepLinks.ts | 7 +- web/packages/teleterm/src/helpers.ts | 15 +- web/packages/teleterm/src/logger.ts | 2 +- web/packages/teleterm/src/main.ts | 16 +- .../agentDownloader/agentDownloader.test.ts | 4 +- .../agentDownloader/agentDownloader.ts | 7 +- .../agentDownloader/fileDownloader.test.ts | 4 +- .../agentRunner/agentRunner.test.ts | 3 +- .../mainProcess/agentRunner/agentRunner.ts | 8 +- .../contextMenus/tabContextMenu.ts | 6 +- .../mainProcess/createAgentConfigFile.test.ts | 2 +- .../src/mainProcess/createAgentConfigFile.ts | 4 +- .../src/mainProcess/fixtures/mocks.ts | 6 +- .../teleterm/src/mainProcess/index.ts | 1 + .../loadInstallationId.test.ts | 2 +- .../loadInstallationId/loadInstallationId.ts | 2 +- .../teleterm/src/mainProcess/mainProcess.ts | 54 +++-- .../src/mainProcess/mainProcessClient.ts | 10 +- .../src/mainProcess/protocolHandler.ts | 4 +- .../rootClusterProxyHostAllowList.ts | 8 +- .../src/mainProcess/runtimeSettings.ts | 2 +- .../teleterm/src/mainProcess/types.ts | 8 +- .../src/mainProcess/windowsManager.ts | 8 +- web/packages/teleterm/src/preload.ts | 18 +- .../src/services/config/configService.test.ts | 2 +- .../src/services/config/configService.ts | 6 +- .../config/keyboardShortcutSchema.test.ts | 4 +- .../teleterm/src/services/config/migration.ts | 2 +- .../src/services/fileStorage/fileStorage.ts | 2 +- .../services/fileStorage/fileStorageClient.ts | 1 - .../src/services/grpcCredentials/files.ts | 4 +- .../grpcCredentials/makeCert/makeCert.ts | 2 +- .../src/services/logger/loggerService.ts | 12 +- .../teleterm/src/services/logger/types.ts | 4 +- .../src/services/pty/fixtures/mocks.ts | 2 +- .../pty/ptyHost/buildPtyOptions.test.ts | 10 +- .../services/pty/ptyHost/buildPtyOptions.ts | 13 +- .../pty/ptyHost/ptyEventsStreamHandler.ts | 11 +- .../src/services/pty/ptyHost/ptyHostClient.ts | 4 +- .../teleterm/src/services/pty/ptyService.ts | 2 +- .../teleterm/src/services/pty/types.ts | 2 +- .../src/services/tshd/cloneableClient.test.ts | 10 +- .../src/services/tshd/cloneableClient.ts | 10 +- .../src/services/tshd/createClient.ts | 1 + .../src/services/tshd/fixtures/mocks.ts | 4 +- .../teleterm/src/services/tshd/gateway.ts | 2 +- .../src/services/tshd/interceptors.test.ts | 2 +- .../teleterm/src/services/tshd/testHelpers.ts | 4 +- .../teleterm/src/services/tshdEvents/index.ts | 5 +- .../ptyHost/ptyEventsStreamHandler.ts | 4 +- .../sharedProcess/ptyHost/ptyHostService.ts | 8 +- .../src/sharedProcess/ptyHost/ptyProcess.ts | 6 +- .../src/sharedProcess/sharedProcess.ts | 8 +- web/packages/teleterm/src/types.ts | 10 +- .../AccessRequestCheckout.tsx | 11 +- .../AccessRequestCheckout/AssumedRolesBar.tsx | 1 + .../useAccessRequestCheckout.test.tsx | 7 +- .../useAccessRequestCheckout.ts | 29 ++- .../useAssumedRolesBar.test.tsx | 6 +- .../useAssumedRolesBar.ts | 13 +- web/packages/teleterm/src/ui/App.tsx | 10 +- .../src/ui/AppInitializer/AppInitializer.tsx | 5 +- .../showStartupModalsAndNotifications.test.ts | 2 +- .../showStartupModalsAndNotifications.ts | 6 +- .../ClusterAdd/ClusterAdd.story.tsx | 6 +- .../ClusterConnect/ClusterAdd/ClusterAdd.tsx | 5 +- .../ClusterLogin/ClusterLogin.story.tsx | 2 +- .../ClusterLogin/ClusterLogin.tsx | 20 +- .../ClusterLogin/ClusterLoginReason.story.tsx | 2 +- .../FormLogin/FormLocal/FormLocal.tsx | 4 +- .../ClusterLogin/FormLogin/FormLogin.tsx | 18 +- .../FormPasswordless/FormPasswordless.tsx | 5 +- .../FormLogin/FormSso/FormSso.tsx | 3 +- .../PromptPasswordless/PromptPasswordless.tsx | 9 +- .../PromptSsoStatus/PromptSsoStatus.tsx | 2 +- .../FormLogin/PromptSsoStatus/index.ts | 1 + .../ClusterLogin/FormLogin/index.ts | 1 + .../ClusterLogin/storyHelpers.tsx | 2 +- .../ClusterLogin/useClusterLogin.ts | 10 +- .../src/ui/ClusterLogout/ClusterLogout.tsx | 6 +- .../CompatibilityPromise.test.tsx | 5 +- .../CompatibilityPromise.tsx | 4 +- .../DocumentConnectMyComputer.tsx | 5 +- .../DocumentConnectMyComputer/ProgressBar.tsx | 3 +- .../DocumentConnectMyComputer/Setup.story.tsx | 11 +- .../DocumentConnectMyComputer/Setup.test.tsx | 11 +- .../DocumentConnectMyComputer/Setup.tsx | 20 +- .../Status.story.tsx | 14 +- .../DocumentConnectMyComputer/Status.tsx | 29 ++- .../NavigationMenu.story.tsx | 12 +- .../ui/ConnectMyComputer/NavigationMenu.tsx | 4 +- .../UpgradeAgentSuggestion.test.tsx | 5 +- .../UpgradeAgentSuggestion.tsx | 1 - .../connectMyComputerContext.test.tsx | 14 +- .../connectMyComputerContext.tsx | 21 +- .../ConnectMyComputer/useAgentProperties.ts | 2 +- .../teleterm/src/ui/Document/Document.tsx | 1 + .../teleterm/src/ui/Document/index.ts | 1 + .../DocumentAccessRequests.story.tsx | 10 +- .../DocumentAccessRequests.tsx | 10 +- .../NewRequest/NewRequest.tsx | 8 +- .../RequestList/RequestList.test.tsx | 4 +- .../RequestList/RequestList.tsx | 13 +- .../ReviewAccessRequest.tsx | 6 +- .../useReviewAccessRequest.ts | 11 +- .../useAccessRequests.test.tsx | 3 +- .../useAccessRequests.tsx | 20 +- .../DocumentAccessRequests/useAssumeAccess.ts | 4 +- .../DocumentAuthorizeWebSession.story.tsx | 7 +- .../DocumentAuthorizeWebSession.test.tsx | 11 +- .../DocumentAuthorizeWebSession.tsx | 16 +- .../DocumentCluster/ActionButtons.story.tsx | 14 +- .../src/ui/DocumentCluster/ActionButtons.tsx | 47 ++--- .../DocumentCluster/DocumentCluster.story.tsx | 37 ++-- .../DocumentCluster/DocumentCluster.test.tsx | 18 +- .../ui/DocumentCluster/DocumentCluster.tsx | 14 +- .../DocumentCluster/UnifiedResources.test.tsx | 32 +-- .../ui/DocumentCluster/UnifiedResources.tsx | 64 +++--- .../teleterm/src/ui/DocumentCluster/index.ts | 1 + .../useUserPreferences.test.tsx | 11 +- .../ui/DocumentCluster/useUserPreferences.ts | 21 +- .../src/ui/DocumentGateway/CliCommand.tsx | 3 +- .../DocumentGateway/DocumentGateway.story.tsx | 4 +- .../ui/DocumentGateway/DocumentGateway.tsx | 5 +- .../DocumentGateway/OnlineDocumentGateway.tsx | 10 +- .../ui/DocumentGateway/useGateway.test.tsx | 5 +- .../src/ui/DocumentGateway/useGateway.ts | 8 +- .../src/ui/DocumentGatewayApp/AppGateway.tsx | 17 +- .../DocumentGatewayApp.story.tsx | 11 +- .../DocumentGatewayApp/DocumentGatewayApp.tsx | 6 +- .../DocumentGatewayCliClient.tsx | 11 +- .../DocumentGatewayKube.story.tsx | 3 +- .../DocumentGatewayKube.tsx | 6 +- .../ui/DocumentTerminal/DocumentTerminal.tsx | 10 +- .../src/ui/DocumentTerminal/Reconnect.tsx | 5 +- .../Terminal/Terminal.test.tsx | 6 +- .../ui/DocumentTerminal/Terminal/Terminal.tsx | 9 +- .../src/ui/DocumentTerminal/Terminal/ctrl.ts | 8 +- .../useDocumentTerminal.test.tsx | 31 ++- .../DocumentTerminal/useDocumentTerminal.ts | 34 ++-- .../useTshFileTransferHandlers.ts | 8 +- .../src/ui/Documents/DocumentsRenderer.tsx | 34 ++-- .../ui/Documents/KeyboardShortcutsPanel.tsx | 8 +- .../src/ui/Documents/workspaceContext.tsx | 4 +- .../ui/DocumentsReopen/DocumentsReopen.tsx | 7 +- .../HeadlessAuthn/HeadlessAuthentication.tsx | 8 +- .../HeadlessPrompt/HeadlessPrompt.tsx | 19 +- .../teleterm/src/ui/LayoutManager.tsx | 5 +- .../src/ui/ModalsHost/ModalsHost.story.tsx | 4 +- .../src/ui/ModalsHost/ModalsHost.test.tsx | 7 +- .../teleterm/src/ui/ModalsHost/ModalsHost.tsx | 10 +- .../teleterm/src/ui/ModalsHost/index.ts | 1 + .../ModalsHost/modals/HardwareKeys/AskPin.tsx | 5 +- .../modals/HardwareKeys/ChangePin.tsx | 9 +- .../modals/HardwareKeys/CommonHeader.tsx | 4 +- .../modals/HardwareKeys/OverwriteSlot.tsx | 2 +- .../ModalsHost/modals/HardwareKeys/Touch.tsx | 3 +- .../modals/HardwareKeys/index.story.tsx | 6 +- .../ReAuthenticate/ReAuthenticate.story.tsx | 2 +- .../modals/ReAuthenticate/ReAuthenticate.tsx | 28 ++- .../ModalsHost/modals/UsageData/UsageData.tsx | 2 +- .../modals/UserJobRole/UserJobRole.tsx | 1 + .../ui/Search/ResourceSearchErrors.story.tsx | 2 +- .../src/ui/Search/ResourceSearchErrors.tsx | 3 +- .../teleterm/src/ui/Search/SearchBar.test.tsx | 21 +- .../teleterm/src/ui/Search/SearchBar.tsx | 5 +- .../src/ui/Search/SearchContext.test.tsx | 15 +- .../teleterm/src/ui/Search/SearchContext.tsx | 13 +- .../teleterm/src/ui/Search/actions.tsx | 10 +- .../ui/Search/pickers/ActionPicker.test.ts | 2 +- .../src/ui/Search/pickers/ActionPicker.tsx | 26 +-- .../src/ui/Search/pickers/ParameterPicker.tsx | 14 +- .../src/ui/Search/pickers/ResultList.tsx | 5 +- .../src/ui/Search/pickers/pickers.tsx | 1 - .../src/ui/Search/pickers/results.story.tsx | 21 +- .../ui/Search/pickers/useActionAttempts.ts | 11 +- .../Search/pickers/useDisplayResults.test.tsx | 2 +- .../ui/Search/pickers/useDisplayResults.ts | 4 +- .../teleterm/src/ui/Search/searchResult.ts | 3 +- .../teleterm/src/ui/Search/useSearch.test.tsx | 11 +- .../teleterm/src/ui/Search/useSearch.ts | 13 +- .../ShareFeedback/ShareFeedback.test.tsx | 8 +- .../StatusBar/ShareFeedback/ShareFeedback.tsx | 5 +- .../ShareFeedback/ShareFeedbackForm.tsx | 7 +- .../ShareFeedback/ShareFeedbackFormFields.tsx | 4 +- .../ShareFeedback/useShareFeedback.ts | 1 - .../teleterm/src/ui/StatusBar/StatusBar.tsx | 4 +- .../ClusterConnectPanel.tsx | 3 +- .../ClusterConnectPanel/RecentClusters.tsx | 6 +- .../teleterm/src/ui/TabHost/TabHost.test.tsx | 16 +- .../teleterm/src/ui/TabHost/TabHost.tsx | 12 +- .../src/ui/TabHost/useTabShortcuts.test.tsx | 9 +- web/packages/teleterm/src/ui/Tabs/TabItem.tsx | 3 +- web/packages/teleterm/src/ui/Tabs/Tabs.tsx | 6 +- .../src/ui/ThemeProvider/ThemeProvider.tsx | 1 - .../teleterm/src/ui/ThemeProvider/globals.ts | 1 + .../teleterm/src/ui/ThemeProvider/theme.ts | 2 +- .../src/ui/TopBar/AdditionalActions.tsx | 16 +- .../ClusterSelector/ClusterSelector.tsx | 3 +- .../src/ui/TopBar/Clusters/Clusters.tsx | 7 +- .../ClustersFilterableList/ClusterItem.tsx | 10 +- .../ClustersFilterableList.tsx | 2 +- .../TopBar/Connections/Connections.story.tsx | 5 +- .../TopBar/Connections/Connections.test.tsx | 5 +- .../src/ui/TopBar/Connections/Connections.tsx | 9 +- .../ConnectionItem.tsx | 9 +- .../ConnectionStatusIndicator.story.tsx | 3 +- .../ConnectionStatusIndicator.tsx | 3 +- .../ConnectionsFilterableList.tsx | 6 +- .../ConnectionsIcon/ConnectionsIcon.tsx | 3 +- .../ConnectionsIconStatusIndicator.tsx | 1 + .../Connections/ConnectionsSliderStep.tsx | 3 +- .../TopBar/Connections/connectionsContext.tsx | 2 +- .../src/ui/TopBar/Identity/Identity.story.tsx | 3 +- .../src/ui/TopBar/Identity/Identity.test.tsx | 9 +- .../src/ui/TopBar/Identity/Identity.tsx | 12 +- .../IdentityList/AddNewClusterItem.tsx | 4 +- .../Identity/IdentityList/IdentityList.tsx | 8 +- .../IdentityList/IdentityListItem.tsx | 5 +- .../IdentitySelector/IdentitySelector.tsx | 10 +- .../Identity/IdentitySelector/PamIcon.tsx | 1 + .../src/ui/TopBar/Identity/useIdentity.ts | 4 +- .../teleterm/src/ui/TopBar/TopBar.tsx | 6 +- .../src/ui/Vnet/VnetConnectionItem.test.tsx | 4 +- .../src/ui/Vnet/VnetConnectionItem.tsx | 9 +- .../src/ui/Vnet/VnetSliderStep.story.tsx | 4 +- .../teleterm/src/ui/Vnet/VnetSliderStep.tsx | 7 +- .../teleterm/src/ui/Vnet/vnetContext.test.tsx | 8 +- .../teleterm/src/ui/Vnet/vnetContext.tsx | 13 +- web/packages/teleterm/src/ui/appContext.ts | 28 +-- web/packages/teleterm/src/ui/boot.tsx | 5 +- .../teleterm/src/ui/components/App.test.tsx | 3 +- .../teleterm/src/ui/components/App.tsx | 1 + .../ui/components/CatchError/CatchError.jsx | 2 +- .../components/CatchError/CatchError.test.tsx | 3 +- .../src/ui/components/FieldInputs.tsx | 3 +- .../FilterableList/FilterableList.test.tsx | 1 + .../FilterableList/FilterableList.tsx | 3 +- .../KeyboardArrowsNavigation.test.tsx | 1 + .../Notifcations/Notifications.story.tsx | 10 +- .../components/Notifcations/Notifications.tsx | 6 +- .../src/ui/components/OfflineGateway.tsx | 2 +- .../src/ui/components/ProfileStatusError.tsx | 2 +- .../ui/fixtures/MockAppContextProvider.tsx | 4 +- .../fixtures/MockWorkspaceContextProvider.tsx | 2 +- .../teleterm/src/ui/fixtures/mocks.ts | 4 +- .../teleterm/src/ui/hooks/useLoggedInUser.ts | 2 +- .../src/ui/hooks/usePersistedState.test.tsx | 2 +- .../teleterm/src/ui/hooks/useStoreSelector.ts | 4 +- .../services/clusters/clustersService.test.ts | 13 +- .../ui/services/clusters/clustersService.ts | 22 +-- .../connectMyComputerService.ts | 3 +- .../connectionTrackerService.test.ts | 6 +- .../connectionTrackerService.ts | 7 +- .../trackedConnectionOperationsFactory.ts | 4 +- .../ui/services/connectionTracker/types.ts | 2 +- .../deepLinks/deepLinksService.test.ts | 2 +- .../ui/services/deepLinks/deepLinksService.ts | 6 +- .../fileTransferClient/fileTransferService.ts | 7 +- .../headlessAuthn/headlessAuthnService.ts | 7 +- .../services/immutableStore/immutableStore.ts | 3 +- .../keyboardShortcutsService.ts | 2 +- .../useKeyboardShortcutFormatters.ts | 2 +- .../useKeyboardShortcuts.test.tsx | 6 +- .../src/ui/services/modals/modalsService.ts | 7 +- .../notifications/notificationsService.ts | 9 +- .../src/ui/services/relogin/reloginService.ts | 14 +- .../resources/resourcesService.test.ts | 9 +- .../ui/services/resources/resourcesService.ts | 20 +- .../tshdNotificationService.ts | 10 +- .../usage/askAboutUserJobRoleIfNeeded.ts | 4 +- .../ui/services/usage/setUpUsageReporting.ts | 4 +- .../src/ui/services/usage/usageService.ts | 8 +- .../accessRequestsService.test.ts | 8 +- .../accessRequestsService.ts | 12 +- .../documentsService/connectToApp.test.ts | 4 +- .../documentsService/connectToApp.ts | 9 +- .../documentsService/connectToDatabase.ts | 2 +- .../documentsService/connectToKube.ts | 2 +- .../documentsService/connectToServer.ts | 2 +- .../documentsService/documentsService.ts | 21 +- .../documentsService/types.test.ts | 6 +- .../documentsService/types.ts | 3 +- .../workspacesService.test.ts | 16 +- .../workspacesService/workspacesService.ts | 24 ++- web/packages/teleterm/src/ui/tshdEvents.ts | 2 +- web/packages/teleterm/src/ui/types.ts | 24 +-- web/packages/teleterm/src/ui/uri.ts | 4 +- .../src/ui/utils/retryWithRelogin.test.ts | 4 +- .../teleterm/src/ui/utils/retryWithRelogin.ts | 4 +- 1225 files changed, 4411 insertions(+), 4758 deletions(-) delete mode 100644 .prettierrc create mode 100644 .prettierrc.js diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 6589f7c77bbdb..0000000000000 --- a/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "arrowParens": "avoid", - "printWidth": 80, - "bracketSpacing": true, - "semi": true, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5" -} diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000000000..02b8b0ba9a1a4 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,39 @@ +const tsConfigBase = require('./tsconfig.json'); + +const ourPackages = new Set( + Object.keys(tsConfigBase.compilerOptions.paths).map( + // Remove extra '/*' if present in the package name. + packageName => packageName.split('/')[0] + ) +); +const appPackages = ['teleport', 'e-teleport', 'teleterm'].flatMap(pkg => [ + pkg, + `@gravitational/${pkg}`, +]); +const libraryPackages = [...ourPackages] + .filter(pkg => !appPackages.includes(pkg)) + .flatMap(pkg => [pkg, `@gravitational/${pkg}`]); + +module.exports = { + arrowParens: 'avoid', + printWidth: 80, + bracketSpacing: true, + plugins: [require('@ianvs/prettier-plugin-sort-imports')], + importOrder: [ + '', + '', + '', + '', + `^(${libraryPackages.join('|')})`, + '', + `^(${appPackages.join('|')})`, + '', + '^[./]', + ], + importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'], + importOrderTypeScriptVersion: '5.0.0', + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'es5', +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9a3561b44de4..6f79816aa81bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -202,6 +202,9 @@ importers: '@babel/preset-typescript': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.4.0 + version: 4.4.0(prettier@3.3.3) '@swc/core': specifier: ^1.7.26 version: 1.7.26 @@ -226,9 +229,6 @@ importers: eslint-plugin-babel: specifier: ^5.3.1 version: 5.3.1(eslint@8.57.0) - eslint-plugin-import: - specifier: 2.30.0 - version: 2.30.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) eslint-plugin-jest: specifier: ^28.8.3 version: 28.8.3(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(jest@29.7.0(@types/node@22.7.4)(babel-plugin-macros@3.1.0))(typescript@5.7.2) @@ -517,6 +517,10 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.4': resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} @@ -533,6 +537,10 @@ packages: resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -608,10 +616,18 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -638,6 +654,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} engines: {node: '>=6.9.0'} @@ -1149,6 +1170,10 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.4': resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} engines: {node: '>=6.9.0'} @@ -1157,6 +1182,10 @@ packages: resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.4': resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} engines: {node: '>=6.9.0'} @@ -1165,6 +1194,10 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -1646,6 +1679,15 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} deprecated: Use @eslint/object-schema instead + '@ianvs/prettier-plugin-sort-imports@4.4.0': + resolution: {integrity: sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + '@inquirer/confirm@3.2.0': resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} engines: {node: '>=18'} @@ -5087,6 +5129,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -6975,6 +7022,12 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.0 + '@babel/compat-data@7.25.4': {} '@babel/core@7.25.2': @@ -6999,7 +7052,7 @@ snapshots: '@babel/generator@7.25.5': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -7011,9 +7064,17 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.26.3': + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: @@ -7070,8 +7131,8 @@ snapshots: '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -7081,7 +7142,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7096,7 +7157,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7105,14 +7166,14 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -7125,14 +7186,18 @@ snapshots: '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -7140,7 +7205,7 @@ snapshots: '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/highlight@7.24.7': dependencies: @@ -7151,17 +7216,21 @@ snapshots: '@babel/parser@7.25.4': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/parser@7.25.6': dependencies: '@babel/types': 7.25.6 + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7188,7 +7257,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7313,7 +7382,7 @@ snapshots: '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7360,7 +7429,7 @@ snapshots: '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7426,7 +7495,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7475,7 +7544,7 @@ snapshots: '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -7588,7 +7657,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -7763,7 +7832,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 esutils: 2.0.3 '@babel/preset-react@7.24.7(@babel/core@7.25.2)': @@ -7802,16 +7871,22 @@ snapshots: '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@babel/traverse@7.25.4': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.5 - '@babel/parser': 7.25.4 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: @@ -7829,6 +7904,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.26.4': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.4': dependencies: '@babel/helper-string-parser': 7.24.8 @@ -7841,6 +7928,11 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@base2/pretty-print-object@1.0.1': {} '@bcoe/v8-coverage@0.2.3': {} @@ -8302,6 +8394,17 @@ snapshots: '@humanwhocodes/object-schema@2.0.2': {} + '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.3.3)': + dependencies: + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + prettier: 3.3.3 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + '@inquirer/confirm@3.2.0': dependencies: '@inquirer/core': 9.2.1 @@ -8992,7 +9095,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.23.0': optional: true - '@rtsao/scc@1.1.0': {} + '@rtsao/scc@1.1.0': + optional: true '@sideway/address@4.1.5': dependencies: @@ -9357,20 +9461,20 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.3': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@types/babel__template@7.4.1': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.20.6': dependencies: @@ -9494,7 +9598,8 @@ snapshots: '@types/json-schema@7.0.13': {} - '@types/json5@0.0.29': {} + '@types/json5@0.0.29': + optional: true '@types/keyv@4.2.0': dependencies: @@ -10063,6 +10168,7 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + optional: true array.prototype.flat@1.3.2: dependencies: @@ -10070,6 +10176,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + optional: true array.prototype.flatmap@1.3.2: dependencies: @@ -11231,6 +11338,7 @@ snapshots: resolve: 1.22.8 transitivePeerDependencies: - supports-color + optional: true eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.30.0)(eslint@8.57.0): dependencies: @@ -11261,6 +11369,7 @@ snapshots: eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.30.0)(eslint@8.57.0) transitivePeerDependencies: - supports-color + optional: true eslint-module-utils@2.8.2(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0): dependencies: @@ -11304,6 +11413,7 @@ snapshots: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + optional: true eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0): dependencies: @@ -12634,7 +12744,7 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.5 + '@babel/generator': 7.25.6 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) '@babel/types': 7.25.6 @@ -12831,6 +12941,8 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -12845,6 +12957,7 @@ snapshots: json5@1.0.2: dependencies: minimist: 1.2.8 + optional: true json5@2.2.3: {} @@ -13266,6 +13379,7 @@ snapshots: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 + optional: true object.values@1.2.0: dependencies: @@ -14406,6 +14520,7 @@ snapshots: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + optional: true tsconfig-paths@4.2.0: dependencies: diff --git a/tsconfig.json b/tsconfig.json index 233b31f68ee13..0bee31f133753 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,8 @@ "noEmit": true, "types": ["node", "@types/wicg-file-system-access"], "paths": { + "build/*": ["web/packages/build/src/*"], + "build": ["web/packages/build/src/"], "shared/*": ["web/packages/shared/*"], "design/*": ["web/packages/design/src/*"], "design": ["web/packages/design/src/"], @@ -28,7 +30,7 @@ "teleport": ["web/packages/teleport/src/"], "teleterm/*": ["web/packages/teleterm/src/*"], "e-teleport/*": ["e/web/teleport/src/*"], - "gen-proto-ts/*": ["gen/proto/ts/*"], + "gen-proto-ts/*": ["gen/proto/ts/*"] } }, "exclude": [ diff --git a/web/.storybook/preview.tsx b/web/.storybook/preview.tsx index dcf775d5c3d49..405295e381006 100644 --- a/web/.storybook/preview.tsx +++ b/web/.storybook/preview.tsx @@ -16,20 +16,21 @@ * along with this program. If not, see . */ +import { Preview } from '@storybook/react'; +import { initialize, mswLoader } from 'msw-storybook-addon'; import { ComponentType, PropsWithChildren } from 'react'; + +import Box from '../packages/design/src/Box'; import { bblpTheme, darkTheme, lightTheme } from '../packages/design/src/theme'; +import { Theme } from '../packages/design/src/theme/themes/types'; import { ConfiguredThemeProvider } from '../packages/design/src/ThemeProvider'; -import Box from '../packages/design/src/Box'; +import history from '../packages/teleport/src/services/history/history'; +import { UserContextProvider } from '../packages/teleport/src/User'; import { StaticThemeProvider as TeletermThemeProvider } from '../packages/teleterm/src/ui/ThemeProvider'; import { darkTheme as teletermDarkTheme, lightTheme as teletermLightTheme, } from '../packages/teleterm/src/ui/ThemeProvider/theme'; -import history from '../packages/teleport/src/services/history/history'; -import { UserContextProvider } from '../packages/teleport/src/User'; -import { Preview } from '@storybook/react'; -import { Theme } from '../packages/design/src/theme/themes/types'; -import { initialize, mswLoader } from 'msw-storybook-addon'; initialize(); diff --git a/web/.storybook/vite.config.mts b/web/.storybook/vite.config.mts index 7c20b2fb85432..3bd030caba261 100644 --- a/web/.storybook/vite.config.mts +++ b/web/.storybook/vite.config.mts @@ -1,6 +1,7 @@ import { defineConfig } from 'vite'; -import { tsconfigPathsPlugin } from '@gravitational/build/vite/tsconfigPaths.mjs'; + import { reactPlugin } from '@gravitational/build/vite/react.mjs'; +import { tsconfigPathsPlugin } from '@gravitational/build/vite/tsconfigPaths.mjs'; export default defineConfig(({ mode }) => ({ plugins: [tsconfigPathsPlugin(), reactPlugin(mode)], diff --git a/web/@types/styled-components.d.ts b/web/@types/styled-components.d.ts index 7d98d7fc8d0d3..62714bfd3dceb 100644 --- a/web/@types/styled-components.d.ts +++ b/web/@types/styled-components.d.ts @@ -17,6 +17,7 @@ */ import { CSSProp } from 'styled-components'; + import 'react'; import { Theme } from 'design/theme/themes/types'; diff --git a/web/README.md b/web/README.md index 2c8d892a2898c..7799ee04730bf 100644 --- a/web/README.md +++ b/web/README.md @@ -190,7 +190,7 @@ pnpm dlx browserslist 'last 2 chrome version, last 2 edge version, last 2 firefo // Set the default "editor.formatOnSave": false, // absolute config path - "prettier.configPath": ".prettierrc", + "prettier.configPath": ".prettierrc.js", // enable per-language "[html]": { "editor.formatOnSave": true, diff --git a/web/packages/build/.eslintrc.js b/web/packages/build/.eslintrc.js index 8a74e1cd0e80b..2d330b9ab1c98 100644 --- a/web/packages/build/.eslintrc.js +++ b/web/packages/build/.eslintrc.js @@ -67,25 +67,6 @@ module.exports = { }, ], rules: { - 'import/order': [ - 'error', - { - groups: [ - 'builtin', - 'external', - 'internal', - 'parent', - 'sibling', - 'index', - 'object', - 'type', - ], - 'newlines-between': 'always-and-inside-groups', - }, - ], - // typescript-eslint recommends to turn import/no-unresolved off. - // https://typescript-eslint.io/troubleshooting/typed-linting/performance/#eslint-plugin-import - 'import/no-unresolved': 0, 'no-unused-vars': 'off', // disabled to allow the typescript one to take over and avoid errors in reporting '@typescript-eslint/no-unused-vars': ['error'], diff --git a/web/packages/build/jest/jest-environment-patched-jsdom.js b/web/packages/build/jest/jest-environment-patched-jsdom.js index 642a360b9e395..cbc704768bfb8 100644 --- a/web/packages/build/jest/jest-environment-patched-jsdom.js +++ b/web/packages/build/jest/jest-environment-patched-jsdom.js @@ -1,4 +1,4 @@ -import { TextEncoder, TextDecoder } from 'node:util'; +import { TextDecoder, TextEncoder } from 'node:util'; import { TestEnvironment as JSDOMEnvironment } from 'jest-environment-jsdom'; diff --git a/web/packages/build/package.json b/web/packages/build/package.json index f02964680e2b0..4c9acc71e8fee 100644 --- a/web/packages/build/package.json +++ b/web/packages/build/package.json @@ -14,6 +14,7 @@ "@babel/preset-env": "^7.25.4", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", + "@ianvs/prettier-plugin-sort-imports": "^4.4.0", "@swc/core": "^1.7.26", "@swc/plugin-styled-components": "^3.0.2", "@types/jsdom": "^21.1.7", @@ -22,7 +23,6 @@ "eslint": "^8.56.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-import": "2.30.0", "eslint-plugin-jest": "^28.8.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-react": "^7.37.0", diff --git a/web/packages/build/vite/config.ts b/web/packages/build/vite/config.ts index 58b23d10453e4..0d15db5fe3dbc 100644 --- a/web/packages/build/vite/config.ts +++ b/web/packages/build/vite/config.ts @@ -19,17 +19,15 @@ import { existsSync, readFileSync } from 'fs'; import { resolve } from 'path'; -import { defineConfig } from 'vite'; import { visualizer } from 'rollup-plugin-visualizer'; +import { defineConfig, type UserConfig } from 'vite'; import wasm from 'vite-plugin-wasm'; -import { htmlPlugin, transformPlugin } from './html'; import { generateAppHashFile } from './apphash'; +import { htmlPlugin, transformPlugin } from './html'; import { reactPlugin } from './react.mjs'; import { tsconfigPathsPlugin } from './tsconfigPaths.mjs'; -import type { UserConfig } from 'vite'; - const DEFAULT_PROXY_TARGET = '127.0.0.1:3080'; const ENTRY_FILE_NAME = 'app/app.js'; diff --git a/web/packages/build/vite/html.ts b/web/packages/build/vite/html.ts index eaf802aa34f56..34bfdfe124d68 100644 --- a/web/packages/build/vite/html.ts +++ b/web/packages/build/vite/html.ts @@ -17,13 +17,12 @@ */ import { readFileSync } from 'fs'; +import type { IncomingHttpHeaders } from 'http'; import { get } from 'https'; import { resolve } from 'path'; import { JSDOM } from 'jsdom'; - import type { Plugin } from 'vite'; -import type { IncomingHttpHeaders } from 'http'; function getHTML(target: string, headers: IncomingHttpHeaders) { return new Promise<{ data: string; headers: IncomingHttpHeaders }>( diff --git a/web/packages/design/src/Alert/Alert.story.tsx b/web/packages/design/src/Alert/Alert.story.tsx index 422cbec301dee..888fbafb7e9eb 100644 --- a/web/packages/design/src/Alert/Alert.story.tsx +++ b/web/packages/design/src/Alert/Alert.story.tsx @@ -19,7 +19,6 @@ import { Restore } from 'design/Icon'; import { Box } from '..'; - import { Alert, AlertProps, Banner } from './Alert'; export default { diff --git a/web/packages/design/src/Alert/Alert.tsx b/web/packages/design/src/Alert/Alert.tsx index f8ce4b7269310..bfc58e4610850 100644 --- a/web/packages/design/src/Alert/Alert.tsx +++ b/web/packages/design/src/Alert/Alert.tsx @@ -18,20 +18,19 @@ import React, { useState } from 'react'; import styled, { useTheme } from 'styled-components'; -import { style, color, ColorProps } from 'styled-system'; +import { color, ColorProps, style } from 'styled-system'; import { IconProps } from 'design/Icon/Icon'; - import { StatusIcon, StatusKind } from 'design/StatusIcon'; -import { space, SpaceProps, width, WidthProps } from '../system'; -import { Theme } from '../theme'; -import * as Icon from '../Icon'; -import Flex from '../Flex'; -import Text from '../Text'; import Box from '../Box'; -import { ButtonFill, ButtonIntent, Button } from '../Button'; +import { Button, ButtonFill, ButtonIntent } from '../Button'; import ButtonIcon from '../ButtonIcon'; +import Flex from '../Flex'; +import * as Icon from '../Icon'; +import { space, SpaceProps, width, WidthProps } from '../system'; +import Text from '../Text'; +import { Theme } from '../theme'; const linkColor = style({ prop: 'linkColor', diff --git a/web/packages/design/src/Button/Button.test.tsx b/web/packages/design/src/Button/Button.test.tsx index 8f4528e102baf..034b1f1929b07 100644 --- a/web/packages/design/src/Button/Button.test.tsx +++ b/web/packages/design/src/Button/Button.test.tsx @@ -22,14 +22,14 @@ import React, { PropsWithChildren, } from 'react'; -import { render, theme, screen } from 'design/utils/testing'; +import { render, screen, theme } from 'design/utils/testing'; import { Button, ButtonPrimary, ButtonSecondary, - ButtonWarning, ButtonSize, + ButtonWarning, } from './index'; describe('design/Button', () => { diff --git a/web/packages/design/src/Button/Button.tsx b/web/packages/design/src/Button/Button.tsx index 7aba6caa5e2aa..45d3d11b6cd3a 100644 --- a/web/packages/design/src/Button/Button.tsx +++ b/web/packages/design/src/Button/Button.tsx @@ -19,21 +19,20 @@ import React from 'react'; import styled, { CSSObject } from 'styled-components'; -import { shouldForwardProp as defaultValidatorFn } from 'design/ThemeProvider'; - import { - space, - width, - height, alignSelf, + AlignSelfProps, gap, + GapProps, + height, + HeightProps, + space, SpaceProps, + width, WidthProps, - HeightProps, - AlignSelfProps, - GapProps, } from 'design/system'; import { Theme } from 'design/theme/themes/types'; +import { shouldForwardProp as defaultValidatorFn } from 'design/ThemeProvider'; export type ButtonProps = React.ComponentPropsWithoutRef & diff --git a/web/packages/design/src/Button/buttons.story.tsx b/web/packages/design/src/Button/buttons.story.tsx index 1ad26d1a361ad..6a88df3397d51 100644 --- a/web/packages/design/src/Button/buttons.story.tsx +++ b/web/packages/design/src/Button/buttons.story.tsx @@ -17,28 +17,25 @@ */ import { Fragment } from 'react'; - import styled from 'styled-components'; import { Input, MenuItem } from 'design'; -import ButtonLink from '../ButtonLink'; -import ButtonIcon from '../ButtonIcon'; -import * as icons from '../Icon'; -import Flex from '../Flex'; - -import { ButtonWithMenu } from '../ButtonWithMenu'; - import { Button, + ButtonBorder, + ButtonFill, ButtonPrimary, + ButtonProps, ButtonSecondary, - ButtonWarning, - ButtonBorder, ButtonText, - ButtonProps, - ButtonFill, + ButtonWarning, } from '.'; +import ButtonIcon from '../ButtonIcon'; +import ButtonLink from '../ButtonLink'; +import { ButtonWithMenu } from '../ButtonWithMenu'; +import Flex from '../Flex'; +import * as icons from '../Icon'; export default { title: 'Design/Button', diff --git a/web/packages/design/src/ButtonIcon/ButtonIcon.jsx b/web/packages/design/src/ButtonIcon/ButtonIcon.jsx index 7a73900fe8e6d..1659b991719e0 100644 --- a/web/packages/design/src/ButtonIcon/ButtonIcon.jsx +++ b/web/packages/design/src/ButtonIcon/ButtonIcon.jsx @@ -18,7 +18,7 @@ import styled from 'styled-components'; -import { space, color, alignSelf } from 'design/system'; +import { alignSelf, color, space } from 'design/system'; const sizeMap = { 0: { diff --git a/web/packages/design/src/ButtonIcon/index.js b/web/packages/design/src/ButtonIcon/index.js index 45a5cceadbd6b..d15f77cbf5be3 100644 --- a/web/packages/design/src/ButtonIcon/index.js +++ b/web/packages/design/src/ButtonIcon/index.js @@ -17,4 +17,5 @@ */ import ButtonIcon from './ButtonIcon'; + export default ButtonIcon; diff --git a/web/packages/design/src/ButtonLink/index.ts b/web/packages/design/src/ButtonLink/index.ts index f439d750b20d5..df0ab3c0ab209 100644 --- a/web/packages/design/src/ButtonLink/index.ts +++ b/web/packages/design/src/ButtonLink/index.ts @@ -17,4 +17,5 @@ */ import ButtonLink from './ButtonLink'; + export default ButtonLink; diff --git a/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.test.tsx b/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.test.tsx index 899a69ca1f9f9..76f50094345a3 100644 --- a/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.test.tsx +++ b/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.test.tsx @@ -16,8 +16,8 @@ * along with this program. If not, see . */ -import { render, screen, userEvent } from 'design/utils/testing'; import { MenuItem } from 'design'; +import { render, screen, userEvent } from 'design/utils/testing'; import { ButtonWithMenu } from './ButtonWithMenu'; diff --git a/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.tsx b/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.tsx index c23de5a1961bc..6d53ae18947f7 100644 --- a/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.tsx +++ b/web/packages/design/src/ButtonWithMenu/ButtonWithMenu.tsx @@ -26,9 +26,9 @@ import { } from 'react'; import { ButtonBorder, Flex, Menu, MenuItem } from 'design'; +import { ButtonSize } from 'design/Button'; import * as icons from 'design/Icon'; import { IconProps } from 'design/Icon/Icon'; -import { ButtonSize } from 'design/Button'; /** * Displays a button with a menu to the right of it. Unlike with a regular