From 5fcccb040b8c8c36ebc1f4a2a8a01380b610b12b Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Thu, 14 Aug 2025 18:54:03 +0000 Subject: [PATCH 1/3] chore: upgrade biome to v2 --- site/.storybook/preview.jsx | 2 +- site/biome.jsonc | 28 ++++--- site/e2e/api.ts | 3 +- site/e2e/expectUrl.ts | 2 +- site/e2e/helpers.ts | 4 +- site/e2e/playwright.config.ts | 2 +- site/e2e/tests/auditLogs.spec.ts | 2 +- .../tests/deployment/workspaceProxies.spec.ts | 5 +- .../tests/organizations/idpGroupSync.spec.ts | 3 +- .../tests/organizations/idpRoleSync.spec.ts | 3 +- site/e2e/tests/roles.spec.ts | 2 +- .../users/createUserWithPassword.spec.ts | 3 +- site/e2e/tests/webTerminal.spec.ts | 2 +- .../workspaces/autoCreateWorkspace.spec.ts | 2 +- .../tests/workspaces/createWorkspace.spec.ts | 2 +- .../tests/workspaces/restartWorkspace.spec.ts | 2 +- .../tests/workspaces/startWorkspace.spec.ts | 2 +- .../tests/workspaces/updateWorkspace.spec.ts | 2 +- site/jest.setup.ts | 2 +- site/package.json | 12 ++- site/pnpm-lock.yaml | 82 +++++++++---------- site/src/@types/mui.d.ts | 2 +- site/src/App.tsx | 2 +- site/src/api/api.test.ts | 2 +- site/src/api/api.ts | 4 +- site/src/api/queries/templates.ts | 2 +- site/src/api/queries/users.ts | 2 +- site/src/components/Alert/Alert.tsx | 2 +- .../components/Alert/ErrorAlert.stories.tsx | 2 +- site/src/components/Avatar/Avatar.tsx | 2 +- site/src/components/Badge/Badge.tsx | 2 +- site/src/components/Badges/Badges.tsx | 2 +- .../Breadcrumb/Breadcrumb.stories.tsx | 2 +- site/src/components/Breadcrumb/Breadcrumb.tsx | 2 +- site/src/components/Button/Button.tsx | 2 +- .../CollapsibleSummary/CollapsibleSummary.tsx | 2 +- site/src/components/Combobox/Combobox.tsx | 3 +- site/src/components/Dialog/Dialog.tsx | 4 +- .../ConfirmDialog/ConfirmDialog.test.tsx | 2 +- .../DeleteDialog/DeleteDialog.test.tsx | 2 +- .../DropdownArrow/DropdownArrow.stories.tsx | 2 +- .../components/DropdownMenu/DropdownMenu.tsx | 2 +- .../DurationField/DurationField.tsx | 2 +- .../ExternalImage/ExternalImage.tsx | 2 +- .../components/FileUpload/FileUpload.test.tsx | 2 +- site/src/components/FileUpload/FileUpload.tsx | 2 +- site/src/components/Filter/Filter.tsx | 3 +- .../Filter/SelectFilter.stories.tsx | 2 +- site/src/components/Form/Form.tsx | 4 +- site/src/components/FullPageLayout/Topbar.tsx | 4 +- .../GlobalSnackbar/GlobalSnackbar.tsx | 6 +- .../components/GlobalSnackbar/utils.test.ts | 6 +- site/src/components/GlobalSnackbar/utils.ts | 5 +- .../components/HelpTooltip/HelpTooltip.tsx | 9 +- site/src/components/IconField/IconField.tsx | 8 +- .../components/InfoTooltip/InfoTooltip.tsx | 2 +- site/src/components/Label/Label.tsx | 2 +- site/src/components/Link/Link.tsx | 2 +- site/src/components/Logs/LogLine.stories.tsx | 2 +- site/src/components/Logs/Logs.stories.tsx | 2 +- site/src/components/Markdown/Markdown.tsx | 4 +- .../MultiSelectCombobox.stories.tsx | 2 +- .../MultiSelectCombobox.tsx | 2 +- .../OrganizationAutocomplete.stories.tsx | 6 +- .../PaginationWidgetBase.test.tsx | 2 +- site/src/components/Pill/Pill.tsx | 2 +- .../RichParameterInput.stories.tsx | 2 +- .../RichParameterInput/RichParameterInput.tsx | 3 +- site/src/components/Search/Search.tsx | 2 +- .../SelectMenu/SelectMenu.stories.tsx | 2 +- site/src/components/SelectMenu/SelectMenu.tsx | 12 +-- .../SettingsHeader/SettingsHeader.tsx | 2 +- site/src/components/Spinner/Spinner.tsx | 2 +- .../StatusIndicator/StatusIndicator.tsx | 4 +- site/src/components/Table/Table.tsx | 2 +- .../components/TableLoader/TableLoader.tsx | 2 +- site/src/components/Tabs/Tabs.tsx | 2 +- .../MemberAutocomplete.stories.tsx | 2 +- .../UserAutocomplete.stories.tsx | 2 +- .../components/deprecated/Popover/Popover.tsx | 6 +- site/src/contexts/ProxyContext.test.tsx | 10 +-- site/src/contexts/ProxyContext.tsx | 2 +- site/src/contexts/ThemeProvider.tsx | 8 +- site/src/contexts/auth/AuthProvider.test.tsx | 2 +- site/src/contexts/auth/AuthProvider.tsx | 2 +- site/src/contexts/auth/RequireAuth.test.tsx | 10 +-- site/src/contexts/useProxyLatency.ts | 2 +- site/src/hooks/useEmbeddedMetadata.test.ts | 6 +- site/src/hooks/usePaginatedQuery.test.ts | 2 +- site/src/hooks/usePaginatedQuery.ts | 2 +- site/src/hooks/useSearchParamsKey.test.ts | 2 +- site/src/modules/apps/apps.test.ts | 2 +- .../BuildAvatar/BuildAvatar.stories.tsx | 2 +- .../AnnouncementBannerView.tsx | 2 +- .../dashboard/DashboardLayout.test.tsx | 4 +- .../modules/dashboard/DashboardProvider.tsx | 2 +- .../DeploymentBannerView.stories.tsx | 2 +- .../DeploymentBanner/DeploymentBannerView.tsx | 19 +++-- .../LicenseBannerView.stories.tsx | 2 +- .../LicenseBanner/LicenseBannerView.tsx | 2 +- .../dashboard/Navbar/DeploymentDropdown.tsx | 2 +- .../dashboard/Navbar/MobileMenu.stories.tsx | 8 +- .../modules/dashboard/Navbar/Navbar.test.tsx | 6 +- .../dashboard/Navbar/NavbarView.stories.tsx | 4 +- .../dashboard/Navbar/NavbarView.test.tsx | 4 +- .../dashboard/Navbar/ProxyMenu.stories.tsx | 12 +-- .../UserDropdown/UserDropdown.stories.tsx | 4 +- .../UserDropdown/UserDropdownContent.test.tsx | 4 +- .../UserDropdown/UserDropdownContent.tsx | 19 +++-- .../modules/dashboard/useUpdateCheck.test.tsx | 6 +- .../modules/hooks/useSyncFormParameters.ts | 3 +- .../management/DeploymentConfigProvider.tsx | 2 +- .../DeploymentSidebarView.stories.tsx | 2 +- .../management/OrganizationSettingsLayout.tsx | 4 +- .../OrganizationSidebarView.stories.tsx | 6 +- .../NotificationsInbox/InboxAvatar.tsx | 2 +- .../NotificationsInbox/InboxItem.stories.tsx | 2 +- .../InboxPopover.stories.tsx | 2 +- .../NotificationsInbox.stories.tsx | 4 +- site/src/modules/notifications/utils.tsx | 3 +- site/src/modules/provisioners/Provisioner.tsx | 3 +- .../provisioners/ProvisionerAlert.stories.tsx | 2 +- .../modules/provisioners/ProvisionerAlert.tsx | 3 +- .../ProvisionerStatusAlert.stories.tsx | 2 +- .../modules/resources/AgentApps/AgentApps.tsx | 9 +- .../AgentDevcontainerCard.stories.tsx | 4 +- site/src/modules/resources/AgentLatency.tsx | 2 +- site/src/modules/resources/AgentMetadata.tsx | 2 +- .../resources/AgentOutdatedTooltip.tsx | 2 +- .../modules/resources/AgentRow.stories.tsx | 8 +- site/src/modules/resources/AgentRow.tsx | 2 +- .../resources/AgentRowPreview.stories.tsx | 2 +- .../resources/AgentRowPreview.test.tsx | 4 +- site/src/modules/resources/AgentStatus.tsx | 2 +- .../resources/AppLink/AppLink.stories.tsx | 4 +- .../DownloadAgentLogsButton.stories.tsx | 2 +- .../resources/PortForwardButton.stories.tsx | 4 +- .../modules/resources/PortForwardButton.tsx | 10 +-- .../PortForwardPopoverView.stories.tsx | 4 +- .../resources/PortForwardPopoverView.test.tsx | 4 +- .../resources/ResourceAvatar.stories.tsx | 2 +- .../resources/ResourceCard.stories.tsx | 2 +- .../modules/resources/ResourceCard.test.tsx | 4 +- .../modules/resources/Resources.stories.tsx | 2 +- .../resources/SSHButton/SSHButton.stories.tsx | 6 +- .../modules/resources/SSHButton/SSHButton.tsx | 10 +-- site/src/modules/resources/SensitiveValue.tsx | 2 +- .../TerminalLink/TerminalLink.stories.tsx | 2 +- .../VSCodeDesktopButton.stories.tsx | 2 +- .../VSCodeDevContainerButton.stories.tsx | 2 +- .../resources/useAgentContainers.test.tsx | 14 ++-- .../modules/resources/useAgentLogs.test.ts | 2 +- site/src/modules/tableFiltering/options.tsx | 8 +- .../TemplateExampleCard.stories.tsx | 2 +- .../TemplateFileTree.stories.tsx | 2 +- .../TemplateFiles/TemplateFiles.stories.tsx | 2 +- .../TemplateResourcesTable.stories.tsx | 2 +- .../DynamicParameter.stories.tsx | 2 +- .../DynamicParameter.test.tsx | 2 +- .../WorkspaceAppStatus.stories.tsx | 2 +- .../WorkspaceBuildData.stories.tsx | 2 +- .../WorkspaceBuildLogs.stories.tsx | 2 +- .../WorkspaceDormantBadge.stories.tsx | 2 +- .../ChangeWorkspaceVersionDialog.stories.tsx | 4 +- .../DownloadLogsDialog.stories.tsx | 4 +- .../WorkspaceDeleteDialog.stories.tsx | 2 +- .../WorkspaceMoreActions.tsx | 5 +- .../useWorkspaceDuplication.test.tsx | 4 +- .../WorkspaceOutdatedTooltip.stories.tsx | 4 +- .../WorkspaceOutdatedTooltip.tsx | 7 +- .../WorkspaceStatusIndicator.stories.tsx | 2 +- .../WorkspaceStatusIndicator.tsx | 2 +- .../workspaces/WorkspaceTiming/Chart/Bar.tsx | 2 +- .../WorkspaceTiming/ResourcesChart.tsx | 16 ++-- .../WorkspaceTiming/ScriptsChart.tsx | 16 ++-- .../WorkspaceTiming/StagesChart.tsx | 19 ++--- .../WorkspaceTimings.stories.tsx | 4 +- .../WorkspaceTiming/WorkspaceTimings.tsx | 8 +- .../workspaces/generateWorkspaceName.ts | 2 +- site/src/pages/AuditPage/AuditFilter.tsx | 8 +- .../AuditLogDescription.stories.tsx | 2 +- .../AuditLogRow/AuditLogRow.stories.tsx | 14 ++-- .../AuditPage/AuditLogRow/AuditLogRow.tsx | 3 +- site/src/pages/AuditPage/AuditPage.test.tsx | 12 +-- .../pages/AuditPage/AuditPageView.stories.tsx | 16 ++-- .../ConnectionLogPage/ConnectionLogFilter.tsx | 8 +- .../ConnectionLogPage.test.tsx | 10 +-- .../ConnectionLogPageView.stories.tsx | 14 ++-- .../ConnectionLogDescription.stories.tsx | 2 +- .../ConnectionLogRow.stories.tsx | 6 +- .../ConnectionLogRow/ConnectionLogRow.tsx | 3 +- .../CreateTemplateGalleryPage.test.tsx | 8 +- .../CreateTemplateGalleryPageView.stories.tsx | 2 +- .../BuildLogsDrawer.stories.tsx | 4 +- .../CreateTemplateForm.stories.tsx | 14 ++-- .../CreateTemplatePage/CreateTemplateForm.tsx | 2 +- .../CreateTemplatePage.test.tsx | 6 +- .../CreateTemplatePage/CreateTemplatePage.tsx | 2 +- .../pages/CreateTokenPage/CreateTokenForm.tsx | 2 +- .../CreateTokenPage/CreateTokenPage.test.tsx | 6 +- site/src/pages/CreateTokenPage/utils.test.tsx | 4 +- .../CreateUserPage/CreateUserForm.stories.tsx | 10 +-- .../CreateUserPage/CreateUserPage.test.tsx | 4 +- .../CreateWorkspacePage.test.tsx | 6 +- .../CreateWorkspacePageExperimental.test.tsx | 8 +- .../CreateWorkspacePageView.stories.tsx | 10 +-- ...eWorkspacePageViewExperimental.stories.tsx | 4 +- .../SelectedTemplate.stories.tsx | 2 +- .../AppearanceSettingsPageView.tsx | 10 +-- .../ExportPolicyButton.stories.tsx | 2 +- .../IdpOrgSyncPage/IdpOrgSyncPage.tsx | 3 +- .../IdpOrgSyncPageView.stories.tsx | 4 +- .../IdpOrgSyncPage/OrganizationPills.tsx | 2 +- .../LicensesSettingsPage/LicenseCard.test.tsx | 2 +- .../NotificationEvents.stories.tsx | 2 +- .../NotificationsPage/NotificationEvents.tsx | 2 +- .../NotificationsPage.stories.tsx | 8 +- .../Troubleshooting.stories.tsx | 2 +- .../NotificationsPage/storybookUtils.ts | 12 +-- .../CreateOAuth2AppPageView.stories.tsx | 2 +- .../EditOAuth2AppPageView.stories.tsx | 2 +- .../EditOAuth2AppPageView.tsx | 3 +- .../OAuth2AppsSettingsPageView.stories.tsx | 2 +- .../ObservabilitySettingsPageView.tsx | 10 +-- .../pages/DeploymentSettingsPage/Option.tsx | 2 +- .../OverviewPage/OverviewPageView.stories.tsx | 2 +- .../ExternalAuthPage/ExternalAuthPageView.tsx | 3 +- .../CreateGroupPageView.stories.tsx | 2 +- .../pages/GroupsPage/GroupPage.stories.tsx | 12 +-- site/src/pages/GroupsPage/GroupPage.tsx | 9 +- .../GroupSettingsPageView.stories.tsx | 2 +- .../pages/GroupsPage/GroupsPageProvider.tsx | 2 +- .../GroupsPage/GroupsPageView.stories.tsx | 2 +- .../HealthPage/AccessURLPage.stories.tsx | 2 +- site/src/pages/HealthPage/Content.tsx | 11 ++- site/src/pages/HealthPage/DERPPage.tsx | 2 +- .../HealthPage/DERPRegionPage.stories.tsx | 2 +- site/src/pages/HealthPage/DERPRegionPage.tsx | 2 +- .../HealthPage/WebsocketPage.stories.tsx | 4 +- .../HealthPage/WorkspaceProxyPage.stories.tsx | 4 +- site/src/pages/HealthPage/storybook.tsx | 14 ++-- .../src/pages/IconsPage/IconsPage.stories.tsx | 2 +- .../LoginOAuthDevicePage.tsx | 2 +- site/src/pages/LoginPage/LoginPage.test.tsx | 8 +- .../pages/LoginPage/LoginPageView.stories.tsx | 2 +- .../pages/LoginPage/SignInForm.stories.tsx | 2 +- .../CreateOrganizationPageView.stories.tsx | 2 +- .../CreateOrganizationPageView.tsx | 11 ++- .../CreateEditRolePageView.stories.tsx | 6 +- .../CustomRolesPageView.stories.tsx | 2 +- .../PermissionPillsList.stories.tsx | 2 +- .../CustomRolesPage/PermissionPillsList.tsx | 2 +- .../ExportPolicyButton.stories.tsx | 4 +- .../IdpSyncPage/IdpPillList.tsx | 2 +- .../IdpSyncPage/IdpSyncPage.tsx | 3 +- .../IdpSyncPage/IdpSyncPageView.stories.tsx | 4 +- .../OrganizationMembersPage.test.tsx | 8 +- .../OrganizationMembersPageView.stories.tsx | 6 +- .../OrganizationMembersPageView.tsx | 3 +- .../CancelJobButton.stories.tsx | 2 +- .../CancelJobConfirmationDialog.stories.tsx | 4 +- .../JobRow.stories.tsx | 2 +- ...izationProvisionerJobsPageView.stories.tsx | 2 +- ...izationProvisionerKeysPageView.stories.tsx | 10 +-- ...ganizationProvisionersPageView.stories.tsx | 2 +- .../ProvisionerRow.stories.tsx | 2 +- .../ProvisionerVersion.stories.tsx | 2 +- .../OrganizationRedirect.test.tsx | 4 +- .../OrganizationSettingsPage.tsx | 3 +- .../OrganizationSettingsPageView.stories.tsx | 2 +- .../UserTable/EditRolesButton.stories.tsx | 4 +- .../UserTable/EditRolesButton.tsx | 10 +-- .../UserTable/UserRoleCell.tsx | 4 +- .../ChangePasswordPage.stories.tsx | 4 +- .../RequestOTPPage.stories.tsx | 4 +- site/src/pages/SetupPage/SetupPage.test.tsx | 10 +-- .../pages/SetupPage/SetupPageView.stories.tsx | 2 +- .../StarterTemplatePageView.stories.tsx | 2 +- site/src/pages/TaskPage/TaskApps.stories.tsx | 4 +- site/src/pages/TaskPage/TaskPage.stories.tsx | 16 ++-- site/src/pages/TaskPage/TaskPage.tsx | 3 +- .../src/pages/TasksPage/TasksPage.stories.tsx | 10 +-- site/src/pages/TasksPage/TasksPage.tsx | 9 +- .../TemplateEmbedPage.test.tsx | 8 +- .../TemplateEmbedPageView.stories.tsx | 2 +- .../TemplateFilesPage.test.tsx | 8 +- .../TemplateInsightsPage/DateRange.tsx | 2 +- .../TemplateInsightsPage/IntervalMenu.tsx | 3 +- .../TemplateInsightsPage.stories.tsx | 2 +- .../TemplateInsightsPage.tsx | 2 +- .../TemplateInsightsPage/WeekPicker.tsx | 3 +- .../src/pages/TemplatePage/TemplateLayout.tsx | 2 +- .../TemplatePageHeader.stories.tsx | 2 +- .../pages/TemplatePage/TemplatePageHeader.tsx | 3 +- .../TemplateRedirectController.test.tsx | 4 +- .../TemplateResourcesPageView.stories.tsx | 2 +- .../TemplatePage/TemplateStats.stories.tsx | 2 +- .../VersionsTable.stories.tsx | 4 +- .../useDeletionDialogState.test.ts | 2 +- .../pages/TemplateSettingsPage/Sidebar.tsx | 10 ++- .../TemplateSettingsPage.test.tsx | 10 +-- .../TemplateSettingsPageView.stories.tsx | 2 +- .../TemplatePermissionsPageView.stories.tsx | 2 +- .../TemplatePermissionsPageView.tsx | 3 +- .../TemplateScheduleAutostart.tsx | 2 +- .../TemplateScheduleForm.tsx | 12 +-- .../TemplateSchedulePage.test.tsx | 10 +-- .../TemplateSchedulePageView.stories.tsx | 2 +- .../TemplateSettingsLayout.tsx | 2 +- .../TemplateVariablesPage.test.tsx | 6 +- .../TemplateVariablesPageView.stories.tsx | 4 +- .../ProvisionerTagsPopover.stories.tsx | 4 +- .../ProvisionerTagsPopover.tsx | 4 +- .../TemplateVersionEditor.stories.tsx | 4 +- .../TemplateVersionEditor.tsx | 21 +++-- .../TemplateVersionEditorPage.test.tsx | 20 ++--- .../TemplateVersionEditorPage.tsx | 2 +- .../TemplateVersionStatusBadge.tsx | 3 +- .../TemplateVersionPage.test.tsx | 2 +- .../TemplateVersionPageView.stories.tsx | 2 +- .../pages/TemplatesPage/TemplatesFilter.tsx | 2 +- .../TemplatesPageView.stories.tsx | 4 +- .../TerminalPage/TerminalPage.stories.tsx | 22 ++--- .../pages/TerminalPage/TerminalPage.test.tsx | 10 +-- .../AccountPage/AccountForm.stories.tsx | 2 +- .../AccountPage/AccountForm.test.tsx | 4 +- .../AccountPage/AccountPage.test.tsx | 4 +- .../AccountPage/AccountUserGroups.stories.tsx | 2 +- .../AppearancePage/AppearancePage.test.tsx | 4 +- .../AppearancePage/AppearancePage.tsx | 6 +- .../ExternalAuthPageView.stories.tsx | 2 +- .../NotificationsPage.stories.tsx | 18 ++-- .../NotificationsPage/NotificationsPage.tsx | 3 +- .../OAuth2ProviderPageView.stories.tsx | 2 +- .../SSHKeysPage/SSHKeysPage.test.tsx | 4 +- .../SSHKeysPage/SSHKeysPageView.stories.tsx | 2 +- .../SchedulePage/ScheduleForm.stories.tsx | 2 +- .../SchedulePage/SchedulePage.test.tsx | 8 +- .../SecurityPage/SecurityForm.stories.tsx | 2 +- .../SecurityPage/SecurityPage.test.tsx | 8 +- .../SecurityPage/SecurityPageView.stories.tsx | 8 +- .../ConfirmDeleteDialog.stories.tsx | 2 +- .../TokensPage/TokensPage.tsx | 4 +- .../TokensPage/TokensPageView.stories.tsx | 2 +- .../WorkspaceProxyView.stories.tsx | 2 +- .../UsersPage/ResetPasswordDialog.stories.tsx | 2 +- site/src/pages/UsersPage/UsersFilter.tsx | 8 +- .../src/pages/UsersPage/UsersPage.stories.tsx | 12 +-- .../pages/UsersPage/UsersPageView.stories.tsx | 16 ++-- .../UsersPage/UsersTable/UserGroupsCell.tsx | 4 +- .../UsersTable/UsersTable.stories.tsx | 2 +- .../UsersPage/UsersTable/UsersTableBody.tsx | 3 +- .../WorkspaceBuildPage.test.tsx | 6 +- .../WorkspaceBuildPageView.stories.tsx | 2 +- .../WorkspacePage/AppStatuses.stories.tsx | 8 +- site/src/pages/WorkspacePage/AppStatuses.tsx | 5 +- .../ResourceMetadata.stories.tsx | 2 +- .../pages/WorkspacePage/Workspace.stories.tsx | 6 +- site/src/pages/WorkspacePage/Workspace.tsx | 2 +- .../BuildParametersPopover.tsx | 12 +-- .../WorkspaceActions/DebugButton.stories.tsx | 2 +- .../WorkspaceActions/RetryButton.stories.tsx | 2 +- .../WorkspaceActions.stories.tsx | 8 +- .../WorkspaceActions/WorkspaceActions.tsx | 2 +- .../WorkspaceBuildProgress.stories.tsx | 4 +- .../WorkspaceNotifications/Notifications.tsx | 2 +- .../WorkspaceNotifications.stories.tsx | 8 +- .../WorkspaceNotifications.tsx | 4 +- .../WorkspacePage/WorkspacePage.test.tsx | 24 +++--- .../WorkspacePage/WorkspaceReadyPage.tsx | 7 +- .../WorkspaceScheduleControls.test.tsx | 8 +- .../WorkspaceScheduleControls.tsx | 2 +- .../WorkspacePage/WorkspaceTopbar.stories.tsx | 10 +-- .../pages/WorkspacePage/WorkspaceTopbar.tsx | 6 +- .../WorkspacePage/useResourcesNav.test.tsx | 4 +- .../WorkspaceParametersPage.stories.tsx | 4 +- .../WorkspaceParametersPage.test.tsx | 6 +- .../WorkspaceScheduleForm.stories.tsx | 2 +- .../WorkspaceScheduleForm.test.tsx | 8 +- .../WorkspaceSchedulePage.stories.tsx | 14 ++-- .../WorkspaceSchedulePage.test.tsx | 16 ++-- .../WorkspaceSchedulePage.tsx | 2 +- .../WorkspaceSchedulePage/schedule.ts | 2 +- .../WorkspaceSettingsLayout.tsx | 2 +- .../WorkspaceSettingsPage.test.tsx | 6 +- .../WorkspaceSettingsPageView.stories.tsx | 2 +- .../BatchDeleteConfirmation.stories.tsx | 4 +- .../BatchUpdateConfirmation.stories.tsx | 8 +- .../BatchUpdateConfirmation.tsx | 8 +- .../pages/WorkspacesPage/WorkspacesButton.tsx | 13 ++- .../WorkspacesPage/WorkspacesPage.test.tsx | 10 +-- .../pages/WorkspacesPage/WorkspacesPage.tsx | 4 +- .../WorkspacesPageView.stories.tsx | 30 +++---- .../WorkspacesPage/WorkspacesPageView.tsx | 13 ++- .../pages/WorkspacesPage/WorkspacesTable.tsx | 10 ++- .../src/pages/WorkspacesPage/filter/menus.tsx | 8 +- site/src/router.tsx | 6 +- site/src/testHelpers/handlers.ts | 2 +- site/src/testHelpers/hooks.tsx | 10 +-- site/src/testHelpers/renderHelpers.tsx | 6 +- site/src/testHelpers/storybook.tsx | 4 +- site/src/theme/dark/mui.ts | 2 +- site/src/theme/index.ts | 2 +- site/src/theme/light/mui.ts | 2 +- site/src/theme/mui.ts | 4 +- site/src/utils/OneWayWebSocket.test.ts | 2 +- site/src/utils/dormant.test.ts | 2 +- site/src/utils/filetree.test.ts | 2 +- site/src/utils/formUtils.test.ts | 2 +- site/src/utils/schedule.test.ts | 2 +- site/src/utils/workspace.test.ts | 2 +- site/src/utils/workspace.tsx | 8 +- site/vite.config.mts | 2 +- 413 files changed, 1022 insertions(+), 1005 deletions(-) diff --git a/site/.storybook/preview.jsx b/site/.storybook/preview.jsx index c491428178f37..8a33560a2f18b 100644 --- a/site/.storybook/preview.jsx +++ b/site/.storybook/preview.jsx @@ -22,7 +22,7 @@ import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider as MuiThemeProvider, StyledEngineProvider, - // biome-ignore lint/nursery/noRestrictedImports: we extend the MUI theme + // biome-ignore lint/style/noRestrictedImports: we extend the MUI theme } from "@mui/material/styles"; import { DecoratorHelpers } from "@storybook/addon-themes"; import isChromatic from "chromatic/isChromatic"; diff --git a/site/biome.jsonc b/site/biome.jsonc index bc6fa8de6e946..c08a6dc84aedc 100644 --- a/site/biome.jsonc +++ b/site/biome.jsonc @@ -6,7 +6,7 @@ "root": ".." }, "files": { - "ignore": ["e2e/**/*Generated.ts", "pnpm-lock.yaml"], + "includes": ["**", "!**/e2e/**/*Generated.ts", "!**/pnpm-lock.yaml"], "ignoreUnknown": true }, "linter": { @@ -23,14 +23,14 @@ "noNonNullAssertion": { "level": "off" }, "noParameterAssign": { "level": "off" }, "useDefaultParameterLast": { "level": "off" }, - "useSelfClosingElements": { "level": "off" } - }, - "suspicious": { - "noArrayIndexKey": { "level": "off" }, - "noConsoleLog": { "level": "error" }, - "noThenProperty": { "level": "off" } - }, - "nursery": { + "useSelfClosingElements": { "level": "off" }, + "useAsConstAssertion": "error", + "useEnumInitializers": "error", + "useSingleVarDeclarator": "error", + "noUnusedTemplateLiteral": "error", + "useNumberNamespace": "error", + "noInferrableTypes": "error", + "noUselessElse": "error", "noRestrictedImports": { "level": "error", "options": { @@ -47,8 +47,14 @@ } } } - } + }, + "suspicious": { + "noArrayIndexKey": { "level": "off" }, + "noThenProperty": { "level": "off" }, + "noConsole": { "level": "error", "options": { "allow": ["log"] } } + }, + "nursery": {} } }, - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json" + "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json" } diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 4d884a73cc1ac..5d456c78222c2 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -8,9 +8,10 @@ import relativeTime from "dayjs/plugin/relativeTime"; dayjs.extend(duration); dayjs.extend(relativeTime); + import { humanDuration } from "utils/time"; import { coderPort, defaultPassword } from "./constants"; -import { type LoginOptions, findSessionToken, randomName } from "./helpers"; +import { findSessionToken, type LoginOptions, randomName } from "./helpers"; let currentOrgId: string; diff --git a/site/e2e/expectUrl.ts b/site/e2e/expectUrl.ts index 6ea1cb50b3083..f6bc3b9ef51dd 100644 --- a/site/e2e/expectUrl.ts +++ b/site/e2e/expectUrl.ts @@ -1,4 +1,4 @@ -import { type Page, expect } from "@playwright/test"; +import { expect, type Page } from "@playwright/test"; type PollingOptions = { timeout?: number; intervals?: number[] }; diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index e771adeab3813..bd4aed8add812 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto"; import net from "node:net"; import path from "node:path"; import { Duplex } from "node:stream"; -import { type BrowserContext, type Page, expect, test } from "@playwright/test"; +import { type BrowserContext, expect, type Page, test } from "@playwright/test"; import { API } from "api/api"; import type { UpdateTemplateMeta, @@ -29,8 +29,8 @@ import { expectUrl } from "./expectUrl"; import { Agent, type App, - AppSharingLevel, type ApplyComplete, + AppSharingLevel, type ExternalAuthProviderResource, type ParseComplete, type PlanComplete, diff --git a/site/e2e/playwright.config.ts b/site/e2e/playwright.config.ts index 4b3e5c5c86fc6..fffc80b160191 100644 --- a/site/e2e/playwright.config.ts +++ b/site/e2e/playwright.config.ts @@ -1,8 +1,8 @@ import * as path from "node:path"; import { defineConfig } from "@playwright/test"; import { - coderPort, coderdPProfPort, + coderPort, e2eFakeExperiment1, e2eFakeExperiment2, gitAuth, diff --git a/site/e2e/tests/auditLogs.spec.ts b/site/e2e/tests/auditLogs.spec.ts index c25a828eedb64..56a27f94ad3c2 100644 --- a/site/e2e/tests/auditLogs.spec.ts +++ b/site/e2e/tests/auditLogs.spec.ts @@ -1,4 +1,4 @@ -import { type Page, expect, test } from "@playwright/test"; +import { expect, type Page, test } from "@playwright/test"; import { defaultPassword, users } from "../constants"; import { createTemplate, diff --git a/site/e2e/tests/deployment/workspaceProxies.spec.ts b/site/e2e/tests/deployment/workspaceProxies.spec.ts index 51fb036c4639b..94604de293d73 100644 --- a/site/e2e/tests/deployment/workspaceProxies.spec.ts +++ b/site/e2e/tests/deployment/workspaceProxies.spec.ts @@ -1,9 +1,8 @@ -import { type Page, expect, test } from "@playwright/test"; +import { expect, type Page, test } from "@playwright/test"; import { API } from "api/api"; import { setupApiCalls } from "../../api"; import { coderPort, workspaceProxyPort } from "../../constants"; -import { randomName, requiresLicense } from "../../helpers"; -import { login } from "../../helpers"; +import { login, randomName, requiresLicense } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; import { startWorkspaceProxy, stopWorkspaceProxy } from "../../proxy"; diff --git a/site/e2e/tests/organizations/idpGroupSync.spec.ts b/site/e2e/tests/organizations/idpGroupSync.spec.ts index a6128253346b7..c8fbf7fffa26e 100644 --- a/site/e2e/tests/organizations/idpGroupSync.spec.ts +++ b/site/e2e/tests/organizations/idpGroupSync.spec.ts @@ -5,8 +5,7 @@ import { deleteOrganization, setupApiCalls, } from "../../api"; -import { randomName, requiresLicense } from "../../helpers"; -import { login } from "../../helpers"; +import { login, randomName, requiresLicense } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; test.beforeEach(async ({ page }) => { diff --git a/site/e2e/tests/organizations/idpRoleSync.spec.ts b/site/e2e/tests/organizations/idpRoleSync.spec.ts index a889591026dd9..a7e7429e234ae 100644 --- a/site/e2e/tests/organizations/idpRoleSync.spec.ts +++ b/site/e2e/tests/organizations/idpRoleSync.spec.ts @@ -5,8 +5,7 @@ import { deleteOrganization, setupApiCalls, } from "../../api"; -import { randomName, requiresLicense } from "../../helpers"; -import { login } from "../../helpers"; +import { login, randomName, requiresLicense } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; test.beforeEach(async ({ page }) => { diff --git a/site/e2e/tests/roles.spec.ts b/site/e2e/tests/roles.spec.ts index e6b92bd944ba0..0bf80391c0035 100644 --- a/site/e2e/tests/roles.spec.ts +++ b/site/e2e/tests/roles.spec.ts @@ -1,4 +1,4 @@ -import { type Page, expect, test } from "@playwright/test"; +import { expect, type Page, test } from "@playwright/test"; import { createOrganization, createOrganizationMember, diff --git a/site/e2e/tests/users/createUserWithPassword.spec.ts b/site/e2e/tests/users/createUserWithPassword.spec.ts index ec6006a81dac5..b33aa67c896e0 100644 --- a/site/e2e/tests/users/createUserWithPassword.spec.ts +++ b/site/e2e/tests/users/createUserWithPassword.spec.ts @@ -1,6 +1,5 @@ import { test } from "@playwright/test"; -import { createUser } from "../../helpers"; -import { login } from "../../helpers"; +import { createUser, login } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; test.beforeEach(async ({ page }) => { diff --git a/site/e2e/tests/webTerminal.spec.ts b/site/e2e/tests/webTerminal.spec.ts index 9d502c0284b78..d03f78a8702b8 100644 --- a/site/e2e/tests/webTerminal.spec.ts +++ b/site/e2e/tests/webTerminal.spec.ts @@ -3,11 +3,11 @@ import { test } from "@playwright/test"; import { createTemplate, createWorkspace, + login, openTerminalWindow, startAgent, stopAgent, } from "../helpers"; -import { login } from "../helpers"; import { beforeCoderTest } from "../hooks"; test.beforeEach(async ({ page }) => { diff --git a/site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts b/site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts index a6ec00958ad78..74b3c07ca78df 100644 --- a/site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts +++ b/site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts @@ -4,8 +4,8 @@ import { createTemplate, createWorkspace, echoResponsesWithParameters, + login, } from "../../helpers"; -import { login } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; import { emptyParameter } from "../../parameters"; import type { RichParameter } from "../../provisionerGenerated"; diff --git a/site/e2e/tests/workspaces/createWorkspace.spec.ts b/site/e2e/tests/workspaces/createWorkspace.spec.ts index e9d2d5efcca6f..9fcbcaf31c9dd 100644 --- a/site/e2e/tests/workspaces/createWorkspace.spec.ts +++ b/site/e2e/tests/workspaces/createWorkspace.spec.ts @@ -1,7 +1,6 @@ import { expect, test } from "@playwright/test"; import { users } from "../../constants"; import { - StarterTemplates, createTemplate, createWorkspace, disableDynamicParameters, @@ -9,6 +8,7 @@ import { login, openTerminalWindow, requireTerraformProvisioner, + StarterTemplates, verifyParameters, } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; diff --git a/site/e2e/tests/workspaces/restartWorkspace.spec.ts b/site/e2e/tests/workspaces/restartWorkspace.spec.ts index 2ec24c6d251bf..987f3c279cc26 100644 --- a/site/e2e/tests/workspaces/restartWorkspace.spec.ts +++ b/site/e2e/tests/workspaces/restartWorkspace.spec.ts @@ -6,9 +6,9 @@ import { createWorkspace, disableDynamicParameters, echoResponsesWithParameters, + login, verifyParameters, } from "../../helpers"; -import { login } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; import { firstBuildOption, secondBuildOption } from "../../parameters"; import type { RichParameter } from "../../provisionerGenerated"; diff --git a/site/e2e/tests/workspaces/startWorkspace.spec.ts b/site/e2e/tests/workspaces/startWorkspace.spec.ts index ea8a5c21c88bd..30a83a01d6dca 100644 --- a/site/e2e/tests/workspaces/startWorkspace.spec.ts +++ b/site/e2e/tests/workspaces/startWorkspace.spec.ts @@ -6,10 +6,10 @@ import { createWorkspace, disableDynamicParameters, echoResponsesWithParameters, + login, stopWorkspace, verifyParameters, } from "../../helpers"; -import { login } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; import { firstBuildOption, secondBuildOption } from "../../parameters"; import type { RichParameter } from "../../provisionerGenerated"; diff --git a/site/e2e/tests/workspaces/updateWorkspace.spec.ts b/site/e2e/tests/workspaces/updateWorkspace.spec.ts index 8a242a2dc7238..b731b76abbf1a 100644 --- a/site/e2e/tests/workspaces/updateWorkspace.spec.ts +++ b/site/e2e/tests/workspaces/updateWorkspace.spec.ts @@ -5,12 +5,12 @@ import { createWorkspace, disableDynamicParameters, echoResponsesWithParameters, + login, updateTemplate, updateWorkspace, updateWorkspaceParameters, verifyParameters, } from "../../helpers"; -import { login } from "../../helpers"; import { beforeCoderTest } from "../../hooks"; import { fifthParameter, diff --git a/site/jest.setup.ts b/site/jest.setup.ts index f90f5353b1c63..f0f252afd455e 100644 --- a/site/jest.setup.ts +++ b/site/jest.setup.ts @@ -1,11 +1,11 @@ import "@testing-library/jest-dom"; import "jest-location-mock"; +import { server } from "testHelpers/server"; import crypto from "node:crypto"; import { cleanup } from "@testing-library/react"; import type { Region } from "api/typesGenerated"; import type { ProxyLatencyReport } from "contexts/useProxyLatency"; import { useMemo } from "react"; -import { server } from "testHelpers/server"; // useProxyLatency does some http requests to determine latency. // This would fail unit testing, or at least make it very slow with diff --git a/site/package.json b/site/package.json index 37ea2306feac0..5acbbfcdc7349 100644 --- a/site/package.json +++ b/site/package.json @@ -125,7 +125,7 @@ "yup": "1.6.1" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "2.0.6", "@chromatic-com/storybook": "4.0.1", "@octokit/types": "12.3.0", "@playwright/test": "1.47.0", @@ -185,7 +185,11 @@ "vite": "6.3.5", "vite-plugin-checker": "0.9.3" }, - "browserslist": ["chrome 110", "firefox 111", "safari 16.0"], + "browserslist": [ + "chrome 110", + "firefox 111", + "safari 16.0" + ], "resolutions": { "optionator": "0.9.3", "semver": "7.6.2" @@ -202,6 +206,8 @@ "form-data": "4.0.4", "prismjs": "1.30.0" }, - "ignoredBuiltDependencies": ["storybook-addon-remix-react-router"] + "ignoredBuiltDependencies": [ + "storybook-addon-remix-react-router" + ] } } diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index 1341de609fe1c..5413b1e4a4955 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -283,8 +283,8 @@ importers: version: 1.6.1 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.0.6 + version: 2.0.6 '@chromatic-com/storybook': specifier: 4.0.1 version: 4.0.1(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.4.1)) @@ -458,7 +458,7 @@ importers: version: 6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0) vite-plugin-checker: specifier: 0.9.3 - version: 0.9.3(@biomejs/biome@1.9.4)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)) + version: 0.9.3(@biomejs/biome@2.0.6)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)) packages: @@ -738,55 +738,55 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, tarball: https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==, tarball: https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz} + '@biomejs/biome@2.0.6': + resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==, tarball: https://registry.npmjs.org/@biomejs/biome/-/biome-2.0.6.tgz} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz} + '@biomejs/cli-darwin-arm64@2.0.6': + resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz} + '@biomejs/cli-darwin-x64@2.0.6': + resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz} + '@biomejs/cli-linux-arm64-musl@2.0.6': + resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz} + '@biomejs/cli-linux-arm64@2.0.6': + resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz} + '@biomejs/cli-linux-x64-musl@2.0.6': + resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz} + '@biomejs/cli-linux-x64@2.0.6': + resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz} + '@biomejs/cli-win32-arm64@2.0.6': + resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz} + '@biomejs/cli-win32-x64@2.0.6': + resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.0.6.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -6621,39 +6621,39 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.0.6': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64': 2.0.6 + '@biomejs/cli-darwin-x64': 2.0.6 + '@biomejs/cli-linux-arm64': 2.0.6 + '@biomejs/cli-linux-arm64-musl': 2.0.6 + '@biomejs/cli-linux-x64': 2.0.6 + '@biomejs/cli-linux-x64-musl': 2.0.6 + '@biomejs/cli-win32-arm64': 2.0.6 + '@biomejs/cli-win32-x64': 2.0.6 + + '@biomejs/cli-darwin-arm64@2.0.6': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.0.6': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.0.6': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.0.6': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.0.6': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.0.6': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.0.6': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.0.6': optional: true '@bundled-es-modules/cookie@2.0.1': @@ -12742,7 +12742,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-plugin-checker@0.9.3(@biomejs/biome@1.9.4)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)): + vite-plugin-checker@0.9.3(@biomejs/biome@2.0.6)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -12755,7 +12755,7 @@ snapshots: vite: 6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0) vscode-uri: 3.1.0 optionalDependencies: - '@biomejs/biome': 1.9.4 + '@biomejs/biome': 2.0.6 eslint: 8.52.0 optionator: 0.9.3 typescript: 5.6.3 diff --git a/site/src/@types/mui.d.ts b/site/src/@types/mui.d.ts index a1b4b61b07eb2..49804d33f8971 100644 --- a/site/src/@types/mui.d.ts +++ b/site/src/@types/mui.d.ts @@ -1,4 +1,4 @@ -// biome-ignore lint/nursery/noRestrictedImports: base theme types +// biome-ignore lint/style/noRestrictedImports: base theme types import type { PaletteColor, PaletteColorOptions } from "@mui/material/styles"; declare module "@mui/material/styles" { diff --git a/site/src/App.tsx b/site/src/App.tsx index 4c0d15d436a0f..2db41214a0423 100644 --- a/site/src/App.tsx +++ b/site/src/App.tsx @@ -11,8 +11,8 @@ import { HelmetProvider } from "react-helmet-async"; import { QueryClient, QueryClientProvider } from "react-query"; import { RouterProvider } from "react-router"; import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar"; -import { ThemeProvider } from "./contexts/ThemeProvider"; import { AuthProvider } from "./contexts/auth/AuthProvider"; +import { ThemeProvider } from "./contexts/ThemeProvider"; import { router } from "./router"; const defaultQueryClient = new QueryClient({ diff --git a/site/src/api/api.test.ts b/site/src/api/api.test.ts index 04536675f8943..8c4c8556d4423 100644 --- a/site/src/api/api.test.ts +++ b/site/src/api/api.test.ts @@ -8,7 +8,7 @@ import { MockWorkspaceBuild, MockWorkspaceBuildParameter1, } from "testHelpers/entities"; -import { API, MissingBuildParameters, getURLWithSearchParams } from "./api"; +import { API, getURLWithSearchParams, MissingBuildParameters } from "./api"; import type * as TypesGen from "./typesGenerated"; const axiosInstance = API.getAxiosInstance(); diff --git a/site/src/api/api.ts b/site/src/api/api.ts index b9d5f06924519..ea97a5b46a2ef 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -22,8 +22,8 @@ import globalAxios, { type AxiosInstance, isAxiosError } from "axios"; import type dayjs from "dayjs"; import userAgentParser from "ua-parser-js"; -import { OneWayWebSocket } from "../utils/OneWayWebSocket"; import { delay } from "../utils/delay"; +import { OneWayWebSocket } from "../utils/OneWayWebSocket"; import { type FieldError, isApiError } from "./errors"; import type { DynamicParametersRequest, @@ -1222,7 +1222,7 @@ class ApiMethods { waitForBuild = (build: TypesGen.WorkspaceBuild) => { return new Promise((res, reject) => { void (async () => { - let latestJobInfo: TypesGen.ProvisionerJob | undefined = undefined; + let latestJobInfo: TypesGen.ProvisionerJob | undefined; while ( !["succeeded", "canceled"].some((status) => diff --git a/site/src/api/queries/templates.ts b/site/src/api/queries/templates.ts index 9057179a8740c..8c3b294f7fad8 100644 --- a/site/src/api/queries/templates.ts +++ b/site/src/api/queries/templates.ts @@ -310,7 +310,7 @@ const waitBuildToBeFinished = async ( onRequest?: (data: TemplateVersion) => void, ) => { let data: TemplateVersion; - let jobStatus: ProvisionerJobStatus | undefined = undefined; + let jobStatus: ProvisionerJobStatus | undefined; do { // When pending we want to poll more frequently await delay(jobStatus === "pending" ? 250 : 1000); diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 4d87232ee698c..c7913f81565f0 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -12,8 +12,8 @@ import type { UsersRequest, } from "api/typesGenerated"; import { - type MetadataState, defaultMetadataManager, + type MetadataState, } from "hooks/useEmbeddedMetadata"; import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import type { diff --git a/site/src/components/Alert/Alert.tsx b/site/src/components/Alert/Alert.tsx index e97b690f82833..1cbf36b2df1d2 100644 --- a/site/src/components/Alert/Alert.tsx +++ b/site/src/components/Alert/Alert.tsx @@ -1,7 +1,7 @@ import MuiAlert, { type AlertColor as MuiAlertColor, type AlertProps as MuiAlertProps, - // biome-ignore lint/nursery/noRestrictedImports: Used as base component + // biome-ignore lint/style/noRestrictedImports: Used as base component } from "@mui/material/Alert"; import Collapse from "@mui/material/Collapse"; import { Button } from "components/Button/Button"; diff --git a/site/src/components/Alert/ErrorAlert.stories.tsx b/site/src/components/Alert/ErrorAlert.stories.tsx index c4f3767097326..28120dd1054d1 100644 --- a/site/src/components/Alert/ErrorAlert.stories.tsx +++ b/site/src/components/Alert/ErrorAlert.stories.tsx @@ -1,6 +1,6 @@ +import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Button } from "components/Button/Button"; -import { mockApiError } from "testHelpers/entities"; import { ErrorAlert } from "./ErrorAlert"; const mockError = mockApiError({ diff --git a/site/src/components/Avatar/Avatar.tsx b/site/src/components/Avatar/Avatar.tsx index 8661dceda0f6a..3b9de3657d623 100644 --- a/site/src/components/Avatar/Avatar.tsx +++ b/site/src/components/Avatar/Avatar.tsx @@ -12,7 +12,7 @@ import { useTheme } from "@emotion/react"; import * as AvatarPrimitive from "@radix-ui/react-avatar"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import * as React from "react"; import { getExternalImageStylesFromUrl } from "theme/externalImages"; import { cn } from "utils/cn"; diff --git a/site/src/components/Badge/Badge.tsx b/site/src/components/Badge/Badge.tsx index 0d11c96d30433..a042b5cf7203c 100644 --- a/site/src/components/Badge/Badge.tsx +++ b/site/src/components/Badge/Badge.tsx @@ -3,7 +3,7 @@ * @see {@link https://ui.shadcn.com/docs/components/badge} */ import { Slot } from "@radix-ui/react-slot"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { forwardRef } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index 278eb890cd2ee..f0db2fb0e9fbc 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -3,9 +3,9 @@ import Tooltip from "@mui/material/Tooltip"; import { Stack } from "components/Stack/Stack"; import { type FC, + forwardRef, type HTMLAttributes, type PropsWithChildren, - forwardRef, } from "react"; const styles = { diff --git a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx index d9f8b3f97d8b5..bc14950462d9a 100644 --- a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx +++ b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx @@ -1,3 +1,4 @@ +import { MockOrganization } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Breadcrumb, @@ -8,7 +9,6 @@ import { BreadcrumbPage, BreadcrumbSeparator, } from "components/Breadcrumb/Breadcrumb"; -import { MockOrganization } from "testHelpers/entities"; const meta: Meta = { title: "components/Breadcrumb", diff --git a/site/src/components/Breadcrumb/Breadcrumb.tsx b/site/src/components/Breadcrumb/Breadcrumb.tsx index 35f90d30a5d7b..61d06c3755542 100644 --- a/site/src/components/Breadcrumb/Breadcrumb.tsx +++ b/site/src/components/Breadcrumb/Breadcrumb.tsx @@ -8,8 +8,8 @@ import { type ComponentProps, type ComponentPropsWithoutRef, type FC, - type ReactNode, forwardRef, + type ReactNode, } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Button/Button.tsx b/site/src/components/Button/Button.tsx index 1f2c6b3b3416b..ff5200edb5883 100644 --- a/site/src/components/Button/Button.tsx +++ b/site/src/components/Button/Button.tsx @@ -3,7 +3,7 @@ * @see {@link https://ui.shadcn.com/docs/components/button} */ import { Slot } from "@radix-ui/react-slot"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { forwardRef } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/CollapsibleSummary/CollapsibleSummary.tsx b/site/src/components/CollapsibleSummary/CollapsibleSummary.tsx index ef68d1816dbcf..9cf45dc9d445b 100644 --- a/site/src/components/CollapsibleSummary/CollapsibleSummary.tsx +++ b/site/src/components/CollapsibleSummary/CollapsibleSummary.tsx @@ -1,4 +1,4 @@ -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { ChevronRightIcon } from "lucide-react"; import { type FC, type ReactNode, useState } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Combobox/Combobox.tsx b/site/src/components/Combobox/Combobox.tsx index 35a4846fcffb4..2d522d6e6397c 100644 --- a/site/src/components/Combobox/Combobox.tsx +++ b/site/src/components/Combobox/Combobox.tsx @@ -18,8 +18,7 @@ import { TooltipProvider, TooltipTrigger, } from "components/Tooltip/Tooltip"; -import { Check, ChevronDown, CornerDownLeft } from "lucide-react"; -import { Info } from "lucide-react"; +import { Check, ChevronDown, CornerDownLeft, Info } from "lucide-react"; import { type FC, type KeyboardEventHandler, useState } from "react"; import { cn } from "utils/cn"; import { ExternalImage } from "../ExternalImage/ExternalImage"; diff --git a/site/src/components/Dialog/Dialog.tsx b/site/src/components/Dialog/Dialog.tsx index 2ec5fa4dae212..9e2af7c88b0a2 100644 --- a/site/src/components/Dialog/Dialog.tsx +++ b/site/src/components/Dialog/Dialog.tsx @@ -3,13 +3,13 @@ * @see {@link https://ui.shadcn.com/docs/components/dialog} */ import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { type ComponentPropsWithoutRef, type ElementRef, type FC, - type HTMLAttributes, forwardRef, + type HTMLAttributes, } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx index b8a790dc8c167..72ce09290dfd1 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx @@ -1,5 +1,5 @@ -import { fireEvent, screen } from "@testing-library/react"; import { renderComponent } from "testHelpers/renderHelpers"; +import { fireEvent, screen } from "@testing-library/react"; import { ConfirmDialog } from "./ConfirmDialog"; describe("ConfirmDialog", () => { diff --git a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx index 7dc27f977b109..ec2635ee191ce 100644 --- a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx +++ b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx @@ -1,7 +1,7 @@ +import { renderComponent } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { act } from "react-dom/test-utils"; -import { renderComponent } from "testHelpers/renderHelpers"; import { DeleteDialog } from "./DeleteDialog"; const inputTestId = "delete-dialog-name-confirmation"; diff --git a/site/src/components/DropdownArrow/DropdownArrow.stories.tsx b/site/src/components/DropdownArrow/DropdownArrow.stories.tsx index 1221e5f091e6a..7413bbc70fe39 100644 --- a/site/src/components/DropdownArrow/DropdownArrow.stories.tsx +++ b/site/src/components/DropdownArrow/DropdownArrow.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { DropdownArrow } from "./DropdownArrow"; const meta: Meta = { diff --git a/site/src/components/DropdownMenu/DropdownMenu.tsx b/site/src/components/DropdownMenu/DropdownMenu.tsx index 01547c30b17a6..7886db1a0f68a 100644 --- a/site/src/components/DropdownMenu/DropdownMenu.tsx +++ b/site/src/components/DropdownMenu/DropdownMenu.tsx @@ -11,8 +11,8 @@ import { Check, ChevronRight, Circle } from "lucide-react"; import { type ComponentPropsWithoutRef, type ElementRef, - type HTMLAttributes, forwardRef, + type HTMLAttributes, } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/DurationField/DurationField.tsx b/site/src/components/DurationField/DurationField.tsx index 7ee5153964164..9f6a0fb5436a7 100644 --- a/site/src/components/DurationField/DurationField.tsx +++ b/site/src/components/DurationField/DurationField.tsx @@ -5,10 +5,10 @@ import TextField, { type TextFieldProps } from "@mui/material/TextField"; import { ChevronDownIcon } from "lucide-react"; import { type FC, useEffect, useReducer } from "react"; import { - type TimeUnit, durationInDays, durationInHours, suggestedTimeUnit, + type TimeUnit, } from "utils/time"; type DurationFieldProps = Omit & { diff --git a/site/src/components/ExternalImage/ExternalImage.tsx b/site/src/components/ExternalImage/ExternalImage.tsx index d85b227b999b4..537ad11cfb8a4 100644 --- a/site/src/components/ExternalImage/ExternalImage.tsx +++ b/site/src/components/ExternalImage/ExternalImage.tsx @@ -1,5 +1,5 @@ import { useTheme } from "@emotion/react"; -import { type ImgHTMLAttributes, forwardRef } from "react"; +import { forwardRef, type ImgHTMLAttributes } from "react"; import { getExternalImageStylesFromUrl } from "theme/externalImages"; export const ExternalImage = forwardRef< diff --git a/site/src/components/FileUpload/FileUpload.test.tsx b/site/src/components/FileUpload/FileUpload.test.tsx index 6292bc200a517..e3ebce085ce50 100644 --- a/site/src/components/FileUpload/FileUpload.test.tsx +++ b/site/src/components/FileUpload/FileUpload.test.tsx @@ -1,5 +1,5 @@ -import { fireEvent, screen } from "@testing-library/react"; import { renderComponent } from "testHelpers/renderHelpers"; +import { fireEvent, screen } from "@testing-library/react"; import { FileUpload } from "./FileUpload"; test("accepts files with the correct extension", async () => { diff --git a/site/src/components/FileUpload/FileUpload.tsx b/site/src/components/FileUpload/FileUpload.tsx index 67ec27054ade4..95c7baa816032 100644 --- a/site/src/components/FileUpload/FileUpload.tsx +++ b/site/src/components/FileUpload/FileUpload.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css } from "@emotion/react"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import CircularProgress from "@mui/material/CircularProgress"; import IconButton from "@mui/material/IconButton"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/components/Filter/Filter.tsx b/site/src/components/Filter/Filter.tsx index ea5e60ff0a7f9..1ee162acccf99 100644 --- a/site/src/components/Filter/Filter.tsx +++ b/site/src/components/Filter/Filter.tsx @@ -13,8 +13,7 @@ import { Button } from "components/Button/Button"; import { InputGroup } from "components/InputGroup/InputGroup"; import { SearchField } from "components/SearchField/SearchField"; import { useDebouncedFunction } from "hooks/debounce"; -import { ExternalLinkIcon } from "lucide-react"; -import { ChevronDownIcon } from "lucide-react"; +import { ChevronDownIcon, ExternalLinkIcon } from "lucide-react"; import { type FC, type ReactNode, useEffect, useRef, useState } from "react"; type PresetFilter = { diff --git a/site/src/components/Filter/SelectFilter.stories.tsx b/site/src/components/Filter/SelectFilter.stories.tsx index 4947ed20dc4f7..136332ccfa883 100644 --- a/site/src/components/Filter/SelectFilter.stories.tsx +++ b/site/src/components/Filter/SelectFilter.stories.tsx @@ -1,9 +1,9 @@ +import { withDesktopViewport } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Avatar } from "components/Avatar/Avatar"; import { useState } from "react"; import { action } from "storybook/actions"; import { expect, userEvent, within } from "storybook/test"; -import { withDesktopViewport } from "testHelpers/storybook"; import { SelectFilter, type SelectFilterOption, diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index 715f5ec008c5d..d535a63642324 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -3,11 +3,11 @@ import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; import { type ComponentProps, + createContext, type FC, + forwardRef, type HTMLProps, type ReactNode, - createContext, - forwardRef, useContext, } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/FullPageLayout/Topbar.tsx b/site/src/components/FullPageLayout/Topbar.tsx index 766a83295d124..ac972b7af04f1 100644 --- a/site/src/components/FullPageLayout/Topbar.tsx +++ b/site/src/components/FullPageLayout/Topbar.tsx @@ -4,12 +4,12 @@ import IconButton, { type IconButtonProps } from "@mui/material/IconButton"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; import { Button, type ButtonProps } from "components/Button/Button"; import { + cloneElement, type FC, type ForwardedRef, + forwardRef, type HTMLAttributes, type ReactElement, - cloneElement, - forwardRef, } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx index 657bb5fc920ce..081bdf7f3a826 100644 --- a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx @@ -5,12 +5,12 @@ import { ErrorIcon } from "../Icons/ErrorIcon"; import { EnterpriseSnackbar } from "./EnterpriseSnackbar"; import { type AdditionalMessage, - MsgType, - type NotificationMsg, - SnackbarEventType, isNotificationList, isNotificationText, isNotificationTextPrefixed, + MsgType, + type NotificationMsg, + SnackbarEventType, } from "./utils"; const variantFromMsgType = (type: MsgType) => { diff --git a/site/src/components/GlobalSnackbar/utils.test.ts b/site/src/components/GlobalSnackbar/utils.test.ts index ffb08c6844023..cc2c33b3d3025 100644 --- a/site/src/components/GlobalSnackbar/utils.test.ts +++ b/site/src/components/GlobalSnackbar/utils.test.ts @@ -1,11 +1,11 @@ import { + displayError, + displaySuccess, + isNotificationTextPrefixed, MsgType, type NotificationMsg, type NotificationTextPrefixed, SnackbarEventType, - displayError, - displaySuccess, - isNotificationTextPrefixed, } from "./utils"; describe("Snackbar", () => { diff --git a/site/src/components/GlobalSnackbar/utils.ts b/site/src/components/GlobalSnackbar/utils.ts index 5dbc747aeff7b..cc6d37504a7ab 100644 --- a/site/src/components/GlobalSnackbar/utils.ts +++ b/site/src/components/GlobalSnackbar/utils.ts @@ -28,10 +28,7 @@ export const isNotificationTextPrefixed = ( msg: AdditionalMessage | null, ): msg is NotificationTextPrefixed => { if (msg) { - return ( - typeof msg !== "string" && - Object.prototype.hasOwnProperty.call(msg, "prefix") - ); + return typeof msg !== "string" && Object.hasOwn(msg, "prefix"); } return false; }; diff --git a/site/src/components/HelpTooltip/HelpTooltip.tsx b/site/src/components/HelpTooltip/HelpTooltip.tsx index 6ab244c854d5b..2bcaef1eb6847 100644 --- a/site/src/components/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.tsx @@ -1,12 +1,11 @@ import { type CSSObject, + css, type Interpolation, type Theme, - css, useTheme, } from "@emotion/react"; import Link from "@mui/material/Link"; -import { Stack } from "components/Stack/Stack"; import { Popover, PopoverContent, @@ -15,14 +14,14 @@ import { PopoverTrigger, usePopover, } from "components/deprecated/Popover/Popover"; -import { ExternalLinkIcon } from "lucide-react"; -import { CircleHelpIcon } from "lucide-react"; +import { Stack } from "components/Stack/Stack"; +import { CircleHelpIcon, ExternalLinkIcon } from "lucide-react"; import { type FC, + forwardRef, type HTMLAttributes, type PropsWithChildren, type ReactNode, - forwardRef, } from "react"; type Icon = typeof CircleHelpIcon; diff --git a/site/src/components/IconField/IconField.tsx b/site/src/components/IconField/IconField.tsx index 5a272d44bfd80..65632ee04e10f 100644 --- a/site/src/components/IconField/IconField.tsx +++ b/site/src/components/IconField/IconField.tsx @@ -1,17 +1,17 @@ -import { Global, css, useTheme } from "@emotion/react"; +import { css, Global, useTheme } from "@emotion/react"; import InputAdornment from "@mui/material/InputAdornment"; import TextField, { type TextFieldProps } from "@mui/material/TextField"; import { visuallyHidden } from "@mui/utils"; import { Button } from "components/Button/Button"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { Loader } from "components/Loader/Loader"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { Loader } from "components/Loader/Loader"; import { ChevronDownIcon } from "lucide-react"; -import { type FC, Suspense, lazy, useState } from "react"; +import { type FC, lazy, Suspense, useState } from "react"; // See: https://github.com/missive/emoji-mart/issues/51#issuecomment-287353222 const urlFromUnifiedCode = (unified: string) => diff --git a/site/src/components/InfoTooltip/InfoTooltip.tsx b/site/src/components/InfoTooltip/InfoTooltip.tsx index dc8fb7c97b96d..63a9187245859 100644 --- a/site/src/components/InfoTooltip/InfoTooltip.tsx +++ b/site/src/components/InfoTooltip/InfoTooltip.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css, useTheme } from "@emotion/react"; +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { HelpTooltip, HelpTooltipContent, diff --git a/site/src/components/Label/Label.tsx b/site/src/components/Label/Label.tsx index 2b052d0935658..47d42e11b6d7c 100644 --- a/site/src/components/Label/Label.tsx +++ b/site/src/components/Label/Label.tsx @@ -3,7 +3,7 @@ * @see {@link https://ui.shadcn.com/docs/components/label} */ import * as LabelPrimitive from "@radix-ui/react-label"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { forwardRef } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Link/Link.tsx b/site/src/components/Link/Link.tsx index f861ae2e197f7..c68ac1d70d8f7 100644 --- a/site/src/components/Link/Link.tsx +++ b/site/src/components/Link/Link.tsx @@ -1,5 +1,5 @@ import { Slot, Slottable } from "@radix-ui/react-slot"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { SquareArrowOutUpRightIcon } from "lucide-react"; import { forwardRef } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/Logs/LogLine.stories.tsx b/site/src/components/Logs/LogLine.stories.tsx index dcbca361526d0..e294f60ba11dc 100644 --- a/site/src/components/Logs/LogLine.stories.tsx +++ b/site/src/components/Logs/LogLine.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { LogLine, LogLinePrefix } from "./LogLine"; const meta: Meta = { diff --git a/site/src/components/Logs/Logs.stories.tsx b/site/src/components/Logs/Logs.stories.tsx index 01b9b6fa8c297..a9f8fff0f7300 100644 --- a/site/src/components/Logs/Logs.stories.tsx +++ b/site/src/components/Logs/Logs.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockWorkspaceBuildLogs } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import type { Line } from "./LogLine"; import { Logs } from "./Logs"; diff --git a/site/src/components/Markdown/Markdown.tsx b/site/src/components/Markdown/Markdown.tsx index 6fdf9e17a6177..ba7bcbf29a903 100644 --- a/site/src/components/Markdown/Markdown.tsx +++ b/site/src/components/Markdown/Markdown.tsx @@ -11,10 +11,10 @@ import isEqual from "lodash/isEqual"; import { type FC, type HTMLProps, - type ReactElement, - type ReactNode, isValidElement, memo, + type ReactElement, + type ReactNode, } from "react"; import ReactMarkdown, { type Options } from "react-markdown"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx index 1c557eda5601b..ff25209e20d7f 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx @@ -1,6 +1,6 @@ +import { MockOrganization, MockOrganization2 } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, waitFor, within } from "storybook/test"; -import { MockOrganization, MockOrganization2 } from "testHelpers/entities"; import { MultiSelectCombobox } from "./MultiSelectCombobox"; const organizations = [MockOrganization, MockOrganization2]; diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 6d82f043968b1..8ff83f2a4583a 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -22,9 +22,9 @@ import { ChevronDown, Info, X } from "lucide-react"; import { type ComponentProps, type ComponentPropsWithoutRef, + forwardRef, type KeyboardEvent, type ReactNode, - forwardRef, useCallback, useEffect, useImperativeHandle, diff --git a/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx b/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx index 0ce78c7cd5cbc..66f3dde252fff 100644 --- a/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx +++ b/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; -import { userEvent, within } from "storybook/test"; import { MockOrganization, MockOrganization2, MockUserOwner, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; +import { userEvent, within } from "storybook/test"; import { OrganizationAutocomplete } from "./OrganizationAutocomplete"; const meta: Meta = { diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx index a3682978597ad..eb9978386ff2f 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx @@ -1,6 +1,6 @@ +import { renderWithAuth } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { renderWithAuth } from "testHelpers/renderHelpers"; import { PaginationWidgetBase, type PaginationWidgetBaseProps, diff --git a/site/src/components/Pill/Pill.tsx b/site/src/components/Pill/Pill.tsx index 4915bac308058..867b75bc09bdf 100644 --- a/site/src/components/Pill/Pill.tsx +++ b/site/src/components/Pill/Pill.tsx @@ -4,9 +4,9 @@ import CircularProgress, { } from "@mui/material/CircularProgress"; import { type FC, + forwardRef, type HTMLAttributes, type ReactNode, - forwardRef, useMemo, } from "react"; import type { ThemeRole } from "theme/roles"; diff --git a/site/src/components/RichParameterInput/RichParameterInput.stories.tsx b/site/src/components/RichParameterInput/RichParameterInput.stories.tsx index e2d23ba13311a..cf44c8fec8bca 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.stories.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.stories.tsx @@ -1,6 +1,6 @@ +import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { TemplateVersionParameter } from "api/typesGenerated"; -import { chromatic } from "testHelpers/chromatic"; import { RichParameterInput } from "./RichParameterInput"; const meta: Meta = { diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index c60951df71090..1852d50af9f4e 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -12,8 +12,7 @@ import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { MemoizedMarkdown } from "components/Markdown/Markdown"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; -import { SettingsIcon } from "lucide-react"; -import { CircleAlertIcon } from "lucide-react"; +import { CircleAlertIcon, SettingsIcon } from "lucide-react"; import { type FC, type ReactNode, useState } from "react"; import type { AutofillBuildParameter, diff --git a/site/src/components/Search/Search.tsx b/site/src/components/Search/Search.tsx index 41b2655638c39..7fecd57df2bf9 100644 --- a/site/src/components/Search/Search.tsx +++ b/site/src/components/Search/Search.tsx @@ -1,5 +1,5 @@ import type { Interpolation, Theme } from "@emotion/react"; -// biome-ignore lint/nursery/noRestrictedImports: use it to have the component prop +// biome-ignore lint/style/noRestrictedImports: use it to have the component prop import Box, { type BoxProps } from "@mui/material/Box"; import visuallyHidden from "@mui/utils/visuallyHidden"; import { SearchIcon } from "lucide-react"; diff --git a/site/src/components/SelectMenu/SelectMenu.stories.tsx b/site/src/components/SelectMenu/SelectMenu.stories.tsx index c55c16e2103b5..adbe369138c39 100644 --- a/site/src/components/SelectMenu/SelectMenu.stories.tsx +++ b/site/src/components/SelectMenu/SelectMenu.stories.tsx @@ -1,8 +1,8 @@ +import { withDesktopViewport } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Avatar } from "components/Avatar/Avatar"; import { action } from "storybook/actions"; import { userEvent, within } from "storybook/test"; -import { withDesktopViewport } from "testHelpers/storybook"; import { SelectMenu, SelectMenuButton, diff --git a/site/src/components/SelectMenu/SelectMenu.tsx b/site/src/components/SelectMenu/SelectMenu.tsx index 846b7bf7afa29..d81f8c665c482 100644 --- a/site/src/components/SelectMenu/SelectMenu.tsx +++ b/site/src/components/SelectMenu/SelectMenu.tsx @@ -1,23 +1,23 @@ import MenuItem, { type MenuItemProps } from "@mui/material/MenuItem"; import MenuList, { type MenuListProps } from "@mui/material/MenuList"; import { Button, type ButtonProps } from "components/Button/Button"; -import { - SearchField, - type SearchFieldProps, -} from "components/SearchField/SearchField"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { + SearchField, + type SearchFieldProps, +} from "components/SearchField/SearchField"; import { CheckIcon, ChevronDownIcon } from "lucide-react"; import { Children, type FC, - type HTMLProps, - type ReactElement, forwardRef, + type HTMLProps, isValidElement, + type ReactElement, useMemo, } from "react"; diff --git a/site/src/components/SettingsHeader/SettingsHeader.tsx b/site/src/components/SettingsHeader/SettingsHeader.tsx index b5128bcc28224..2f0f6a551c0a7 100644 --- a/site/src/components/SettingsHeader/SettingsHeader.tsx +++ b/site/src/components/SettingsHeader/SettingsHeader.tsx @@ -1,4 +1,4 @@ -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { Button } from "components/Button/Button"; import { SquareArrowOutUpRightIcon } from "lucide-react"; import type { FC, PropsWithChildren, ReactNode } from "react"; diff --git a/site/src/components/Spinner/Spinner.tsx b/site/src/components/Spinner/Spinner.tsx index 8e331a1a6dd20..024b5ded4efed 100644 --- a/site/src/components/Spinner/Spinner.tsx +++ b/site/src/components/Spinner/Spinner.tsx @@ -5,7 +5,7 @@ */ import isChromatic from "chromatic/isChromatic"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import type { ReactNode } from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/StatusIndicator/StatusIndicator.tsx b/site/src/components/StatusIndicator/StatusIndicator.tsx index 2568690f6db23..28155d54fb240 100644 --- a/site/src/components/StatusIndicator/StatusIndicator.tsx +++ b/site/src/components/StatusIndicator/StatusIndicator.tsx @@ -1,5 +1,5 @@ -import { type VariantProps, cva } from "class-variance-authority"; -import { type FC, createContext, forwardRef, useContext } from "react"; +import { cva, type VariantProps } from "class-variance-authority"; +import { createContext, type FC, forwardRef, useContext } from "react"; import { cn } from "utils/cn"; const statusIndicatorVariants = cva( diff --git a/site/src/components/Table/Table.tsx b/site/src/components/Table/Table.tsx index b642655f5539b..a418c630868c9 100644 --- a/site/src/components/Table/Table.tsx +++ b/site/src/components/Table/Table.tsx @@ -3,7 +3,7 @@ * @see {@link https://ui.shadcn.com/docs/components/table} */ -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import * as React from "react"; import { cn } from "utils/cn"; diff --git a/site/src/components/TableLoader/TableLoader.tsx b/site/src/components/TableLoader/TableLoader.tsx index e9f6c814f767f..3efaa8bb19ca0 100644 --- a/site/src/components/TableLoader/TableLoader.tsx +++ b/site/src/components/TableLoader/TableLoader.tsx @@ -1,6 +1,6 @@ import TableCell from "@mui/material/TableCell"; import TableRow, { type TableRowProps } from "@mui/material/TableRow"; -import { type FC, type ReactNode, cloneElement, isValidElement } from "react"; +import { cloneElement, type FC, isValidElement, type ReactNode } from "react"; import { Loader } from "../Loader/Loader"; export const TableLoader: FC = () => { diff --git a/site/src/components/Tabs/Tabs.tsx b/site/src/components/Tabs/Tabs.tsx index e18db55871b1d..d1642ca504579 100644 --- a/site/src/components/Tabs/Tabs.tsx +++ b/site/src/components/Tabs/Tabs.tsx @@ -1,4 +1,4 @@ -import { type FC, type HTMLAttributes, createContext, useContext } from "react"; +import { createContext, type FC, type HTMLAttributes, useContext } from "react"; import { Link, type LinkProps } from "react-router"; import { cn } from "utils/cn"; diff --git a/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx b/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx index 1b8b21b90ca61..b9226c86ab859 100644 --- a/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx +++ b/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockOrganizationMember } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MemberAutocomplete } from "./UserAutocomplete"; const meta: Meta = { diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx index 44fb632c8698e..25dd78ddff60d 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockUserOwner } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { UserAutocomplete } from "./UserAutocomplete"; const meta: Meta = { diff --git a/site/src/components/deprecated/Popover/Popover.tsx b/site/src/components/deprecated/Popover/Popover.tsx index a7f39810e43b2..044306f325c4f 100644 --- a/site/src/components/deprecated/Popover/Popover.tsx +++ b/site/src/components/deprecated/Popover/Popover.tsx @@ -1,8 +1,10 @@ import MuiPopover, { type PopoverProps as MuiPopoverProps, - // biome-ignore lint/nursery/noRestrictedImports: This is the base component that our custom popover is based on + // biome-ignore lint/style/noRestrictedImports: This is the base component that our custom popover is based on } from "@mui/material/Popover"; import { + cloneElement, + createContext, type FC, type HTMLAttributes, type PointerEvent, @@ -10,8 +12,6 @@ import { type ReactElement, type ReactNode, type RefObject, - cloneElement, - createContext, useContext, useEffect, useId, diff --git a/site/src/contexts/ProxyContext.test.tsx b/site/src/contexts/ProxyContext.test.tsx index 03f2662037733..36a7a85eb3068 100644 --- a/site/src/contexts/ProxyContext.test.tsx +++ b/site/src/contexts/ProxyContext.test.tsx @@ -1,8 +1,4 @@ import "testHelpers/localStorage"; -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import type { Region } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; import { MockHealthyWildWorkspaceProxy, MockPrimaryWorkspaceProxy, @@ -14,9 +10,13 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import type { Region } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; import { - ProxyProvider, getPreferredProxy, + ProxyProvider, saveUserSelectedProxy, useProxy, } from "./ProxyContext"; diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index c162c2c4952ff..409dbf36737c3 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -4,9 +4,9 @@ import type { Region, WorkspaceProxy } from "api/typesGenerated"; import { useAuthenticated } from "hooks"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { + createContext, type FC, type PropsWithChildren, - createContext, useCallback, useContext, useEffect, diff --git a/site/src/contexts/ThemeProvider.tsx b/site/src/contexts/ThemeProvider.tsx index 4521ab71d7a74..2a3fcb22157f2 100644 --- a/site/src/contexts/ThemeProvider.tsx +++ b/site/src/contexts/ThemeProvider.tsx @@ -1,11 +1,13 @@ import createCache from "@emotion/cache"; -import { ThemeProvider as EmotionThemeProvider } from "@emotion/react"; -import { CacheProvider } from "@emotion/react"; +import { + CacheProvider, + ThemeProvider as EmotionThemeProvider, +} from "@emotion/react"; import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider as MuiThemeProvider, StyledEngineProvider, - // biome-ignore lint/nursery/noRestrictedImports: we extend the MUI theme + // biome-ignore lint/style/noRestrictedImports: we extend the MUI theme } from "@mui/material/styles"; import { appearanceSettings } from "api/queries/users"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; diff --git a/site/src/contexts/auth/AuthProvider.test.tsx b/site/src/contexts/auth/AuthProvider.test.tsx index 147d89f724afe..bf3ea34a7992a 100644 --- a/site/src/contexts/auth/AuthProvider.test.tsx +++ b/site/src/contexts/auth/AuthProvider.test.tsx @@ -1,7 +1,7 @@ +import { createTestQueryClient } from "testHelpers/renderHelpers"; import { renderHook } from "@testing-library/react"; import type { FC, PropsWithChildren } from "react"; import { QueryClientProvider } from "react-query"; -import { createTestQueryClient } from "testHelpers/renderHelpers"; import { AuthProvider, useAuthContext } from "./AuthProvider"; const Wrapper: FC = ({ children }) => { diff --git a/site/src/contexts/auth/AuthProvider.tsx b/site/src/contexts/auth/AuthProvider.tsx index 231dcbd294082..ae06c67e5c3dd 100644 --- a/site/src/contexts/auth/AuthProvider.tsx +++ b/site/src/contexts/auth/AuthProvider.tsx @@ -12,9 +12,9 @@ import { displaySuccess } from "components/GlobalSnackbar/utils"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type Permissions, permissionChecks } from "modules/permissions"; import { + createContext, type FC, type PropsWithChildren, - createContext, useCallback, useContext, } from "react"; diff --git a/site/src/contexts/auth/RequireAuth.test.tsx b/site/src/contexts/auth/RequireAuth.test.tsx index b24bb06cb055c..518398b5e0239 100644 --- a/site/src/contexts/auth/RequireAuth.test.tsx +++ b/site/src/contexts/auth/RequireAuth.test.tsx @@ -1,14 +1,14 @@ -import { renderHook, screen } from "@testing-library/react"; -import { useAuthenticated } from "hooks"; -import { http, HttpResponse } from "msw"; -import type { FC, PropsWithChildren } from "react"; -import { QueryClientProvider } from "react-query"; import { MockPermissions, MockUserOwner } from "testHelpers/entities"; import { createTestQueryClient, renderWithAuth, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { renderHook, screen } from "@testing-library/react"; +import { useAuthenticated } from "hooks"; +import { HttpResponse, http } from "msw"; +import type { FC, PropsWithChildren } from "react"; +import { QueryClientProvider } from "react-query"; import { AuthContext, type AuthContextValue } from "./AuthProvider"; describe("RequireAuth", () => { diff --git a/site/src/contexts/useProxyLatency.ts b/site/src/contexts/useProxyLatency.ts index f5f3d2acb415c..5c55eb494f28a 100644 --- a/site/src/contexts/useProxyLatency.ts +++ b/site/src/contexts/useProxyLatency.ts @@ -163,7 +163,7 @@ export const useProxyLatency = ( // https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Resource_timing let latencyMS = 0; let accurate = false; - let nextHopProtocol: string | undefined = undefined; + let nextHopProtocol: string | undefined; if ( "requestStart" in entry && (entry as PerformanceResourceTiming).requestStart !== 0 diff --git a/site/src/hooks/useEmbeddedMetadata.test.ts b/site/src/hooks/useEmbeddedMetadata.test.ts index 316ab464a78de..60002381ac3ba 100644 --- a/site/src/hooks/useEmbeddedMetadata.test.ts +++ b/site/src/hooks/useEmbeddedMetadata.test.ts @@ -1,5 +1,3 @@ -import { act, renderHook } from "@testing-library/react"; -import type { Region, User } from "api/typesGenerated"; import { MockAppearanceConfig, MockBuildInfo, @@ -9,13 +7,15 @@ import { MockUserAppearanceSettings, MockUserOwner, } from "testHelpers/entities"; +import { act, renderHook } from "@testing-library/react"; +import type { Region, User } from "api/typesGenerated"; import { DEFAULT_METADATA_KEY, type MetadataKey, MetadataManager, type MetadataValue, - type RuntimeHtmlMetadata, makeUseEmbeddedMetadata, + type RuntimeHtmlMetadata, useEmbeddedMetadata, } from "./useEmbeddedMetadata"; diff --git a/site/src/hooks/usePaginatedQuery.test.ts b/site/src/hooks/usePaginatedQuery.test.ts index 6b15531d42135..bb62f2b4b2628 100644 --- a/site/src/hooks/usePaginatedQuery.test.ts +++ b/site/src/hooks/usePaginatedQuery.test.ts @@ -1,5 +1,5 @@ -import { waitFor } from "@testing-library/react"; import { renderHookWithAuth } from "testHelpers/hooks"; +import { waitFor } from "@testing-library/react"; import { type PaginatedData, type UsePaginatedQueryOptions, diff --git a/site/src/hooks/usePaginatedQuery.ts b/site/src/hooks/usePaginatedQuery.ts index e5a49a7245c75..200674d69c773 100644 --- a/site/src/hooks/usePaginatedQuery.ts +++ b/site/src/hooks/usePaginatedQuery.ts @@ -1,11 +1,11 @@ import clamp from "lodash/clamp"; import { useEffect } from "react"; import { + keepPreviousData, type QueryFunctionContext, type QueryKey, type UseQueryOptions, type UseQueryResult, - keepPreviousData, useQuery, useQueryClient, } from "react-query"; diff --git a/site/src/hooks/useSearchParamsKey.test.ts b/site/src/hooks/useSearchParamsKey.test.ts index 85c2ac25d74db..38117d402d4d0 100644 --- a/site/src/hooks/useSearchParamsKey.test.ts +++ b/site/src/hooks/useSearchParamsKey.test.ts @@ -1,5 +1,5 @@ -import { act, waitFor } from "@testing-library/react"; import { renderHookWithAuth } from "testHelpers/hooks"; +import { act, waitFor } from "@testing-library/react"; import { useSearchParamsKey } from "./useSearchParamsKey"; /** diff --git a/site/src/modules/apps/apps.test.ts b/site/src/modules/apps/apps.test.ts index e61b214a25385..96a1d1c686467 100644 --- a/site/src/modules/apps/apps.test.ts +++ b/site/src/modules/apps/apps.test.ts @@ -3,7 +3,7 @@ import { MockWorkspaceAgent, MockWorkspaceApp, } from "testHelpers/entities"; -import { SESSION_TOKEN_PLACEHOLDER, getAppHref } from "./apps"; +import { getAppHref, SESSION_TOKEN_PLACEHOLDER } from "./apps"; describe("getAppHref", () => { it("returns the URL without changes when external app has regular URL", () => { diff --git a/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx b/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx index faa46ab5142cd..2e7f77c336c7d 100644 --- a/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx +++ b/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceBuild } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { BuildAvatar } from "./BuildAvatar"; const meta: Meta = { diff --git a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx index 34d67aa83ec16..84df0b97960f3 100644 --- a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx +++ b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css } from "@emotion/react"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import { InlineMarkdown } from "components/Markdown/Markdown"; import type { FC } from "react"; import { readableForegroundColor } from "utils/colors"; diff --git a/site/src/modules/dashboard/DashboardLayout.test.tsx b/site/src/modules/dashboard/DashboardLayout.test.tsx index bc449a2156242..71e51825afc31 100644 --- a/site/src/modules/dashboard/DashboardLayout.test.tsx +++ b/site/src/modules/dashboard/DashboardLayout.test.tsx @@ -1,7 +1,7 @@ -import { screen } from "@testing-library/react"; -import { http, HttpResponse } from "msw"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen } from "@testing-library/react"; +import { HttpResponse, http } from "msw"; import { DashboardLayout } from "./DashboardLayout"; test("Show the new Coder version notification", async () => { diff --git a/site/src/modules/dashboard/DashboardProvider.tsx b/site/src/modules/dashboard/DashboardProvider.tsx index 87340489d7023..c6bc31a788232 100644 --- a/site/src/modules/dashboard/DashboardProvider.tsx +++ b/site/src/modules/dashboard/DashboardProvider.tsx @@ -15,7 +15,7 @@ import { Loader } from "components/Loader/Loader"; import { useAuthenticated } from "hooks"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { canViewAnyOrganization } from "modules/permissions"; -import { type FC, type PropsWithChildren, createContext } from "react"; +import { createContext, type FC, type PropsWithChildren } from "react"; import { useQuery } from "react-query"; import { selectFeatureVisibility } from "./entitlements"; diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx index 6d8e4c98552b3..949aa0390e573 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx @@ -1,8 +1,8 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { DeploymentHealthUnhealthy, MockDeploymentStats, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { DeploymentBannerView } from "./DeploymentBannerView"; const meta: Meta = { diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx index e6e4c8e32be84..6ae4bd90cbe1d 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx @@ -1,5 +1,5 @@ import type { CSSInterpolation } from "@emotion/css/dist/declarations/src/create-instance"; -import { type Interpolation, type Theme, css, useTheme } from "@emotion/react"; +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; @@ -16,13 +16,16 @@ import { VSCodeIcon } from "components/Icons/VSCodeIcon"; import { Stack } from "components/Stack/Stack"; import dayjs from "dayjs"; import { type ClassName, useClassName } from "hooks/useClassName"; -import { CloudDownloadIcon } from "lucide-react"; -import { CloudUploadIcon } from "lucide-react"; -import { GitCompareArrowsIcon } from "lucide-react"; -import { GaugeIcon } from "lucide-react"; -import { AppWindowIcon } from "lucide-react"; -import { RotateCwIcon, WrenchIcon } from "lucide-react"; -import { CircleAlertIcon } from "lucide-react"; +import { + AppWindowIcon, + CircleAlertIcon, + CloudDownloadIcon, + CloudUploadIcon, + GaugeIcon, + GitCompareArrowsIcon, + RotateCwIcon, + WrenchIcon, +} from "lucide-react"; import prettyBytes from "pretty-bytes"; import { type FC, diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx index 15046ebfd1cb2..faaf7c0e2275c 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { LicenseBannerView } from "./LicenseBannerView"; const meta: Meta = { diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx index f9d1f39b868ed..ee91ee81b2f76 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx @@ -1,8 +1,8 @@ import { type CSSObject, + css, type Interpolation, type Theme, - css, useTheme, } from "@emotion/react"; import Link from "@mui/material/Link"; diff --git a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx index fe71c20d67fa3..b78e3a6954a58 100644 --- a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css, useTheme } from "@emotion/react"; +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import MenuItem from "@mui/material/MenuItem"; import { Button } from "components/Button/Button"; import { diff --git a/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx b/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx index 0a86742f485a9..d99a221e8ae97 100644 --- a/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx +++ b/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx @@ -1,7 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { PointerEventsCheckLevel } from "@testing-library/user-event"; -import type { FC } from "react"; -import { fn, userEvent, within } from "storybook/test"; import { MockPrimaryWorkspaceProxy, MockProxyLatencies, @@ -10,6 +6,10 @@ import { MockUserOwner, MockWorkspaceProxies, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { PointerEventsCheckLevel } from "@testing-library/user-event"; +import type { FC } from "react"; +import { fn, userEvent, within } from "storybook/test"; import { MobileMenu } from "./MobileMenu"; const meta: Meta = { diff --git a/site/src/modules/dashboard/Navbar/Navbar.test.tsx b/site/src/modules/dashboard/Navbar/Navbar.test.tsx index aa9a2c0400e10..2390d315ce9b5 100644 --- a/site/src/modules/dashboard/Navbar/Navbar.test.tsx +++ b/site/src/modules/dashboard/Navbar/Navbar.test.tsx @@ -1,12 +1,12 @@ -import { render, screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; import { App } from "App"; -import { http, HttpResponse } from "msw"; import { MockEntitlementsWithAuditLog, MockMemberPermissions, } from "testHelpers/entities"; import { server } from "testHelpers/server"; +import { render, screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; /** * The LicenseBanner, mounted above the AppRouter, fetches entitlements. Thus, to test their diff --git a/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx b/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx index af6ba75ff38f4..786f595d32932 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx @@ -1,8 +1,8 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; import { chromaticWithTablet } from "testHelpers/chromatic"; import { MockUserMember, MockUserOwner } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { NavbarView } from "./NavbarView"; const meta: Meta = { diff --git a/site/src/modules/dashboard/Navbar/NavbarView.test.tsx b/site/src/modules/dashboard/Navbar/NavbarView.test.tsx index 4c43e6a0877f9..9d011089ba6c5 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.test.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.test.tsx @@ -1,8 +1,8 @@ +import { MockPrimaryWorkspaceProxy, MockUserOwner } from "testHelpers/entities"; +import { renderWithAuth } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import type { ProxyContextValue } from "contexts/ProxyContext"; -import { MockPrimaryWorkspaceProxy, MockUserOwner } from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; import { NavbarView } from "./NavbarView"; const proxyContextValue: ProxyContextValue = { diff --git a/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx b/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx index e7b29284f7f6e..0adaef25eb14d 100644 --- a/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx +++ b/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx @@ -1,9 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getAuthorizationKey } from "api/queries/authCheck"; -import { getPreferredProxy } from "contexts/ProxyContext"; -import { AuthProvider } from "contexts/auth/AuthProvider"; -import { permissionChecks } from "modules/permissions"; -import { fn, userEvent, within } from "storybook/test"; import { MockAuthMethodsAll, MockPermissions, @@ -12,6 +6,12 @@ import { MockWorkspaceProxies, } from "testHelpers/entities"; import { withDesktopViewport } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getAuthorizationKey } from "api/queries/authCheck"; +import { AuthProvider } from "contexts/auth/AuthProvider"; +import { getPreferredProxy } from "contexts/ProxyContext"; +import { permissionChecks } from "modules/permissions"; +import { fn, userEvent, within } from "storybook/test"; import { ProxyMenu } from "./ProxyMenu"; const defaultProxyContextValue = { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx index bb5c518e342f8..c5025a3f4d198 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, screen, userEvent, waitFor, within } from "storybook/test"; import { MockBuildInfo, MockUserOwner } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, screen, userEvent, waitFor, within } from "storybook/test"; import { UserDropdown } from "./UserDropdown"; const meta: Meta = { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx index 6a9018c4eeeca..daf1de5376f58 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx @@ -1,7 +1,7 @@ -import { screen } from "@testing-library/react"; -import { Popover } from "components/deprecated/Popover/Popover"; import { MockUserOwner } from "testHelpers/entities"; import { render, waitForLoaderToBeRemoved } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import { Popover } from "components/deprecated/Popover/Popover"; import { Language, UserDropdownContent } from "./UserDropdownContent"; describe("UserDropdownContent", () => { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index 99bd655b252f1..55b41bc3c65a5 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -1,8 +1,8 @@ import { type CSSObject, + css, type Interpolation, type Theme, - css, } from "@emotion/react"; import Divider from "@mui/material/Divider"; import MenuItem from "@mui/material/MenuItem"; @@ -10,15 +10,18 @@ import type { SvgIconProps } from "@mui/material/SvgIcon"; import Tooltip from "@mui/material/Tooltip"; import type * as TypesGen from "api/typesGenerated"; import { CopyButton } from "components/CopyButton/CopyButton"; +import { usePopover } from "components/deprecated/Popover/Popover"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { Stack } from "components/Stack/Stack"; -import { usePopover } from "components/deprecated/Popover/Popover"; -import { BookOpenTextIcon } from "lucide-react"; -import { BugIcon } from "lucide-react"; -import { CircleUserIcon } from "lucide-react"; -import { LogOutIcon } from "lucide-react"; -import { MessageSquareIcon } from "lucide-react"; -import { MonitorDownIcon, SquareArrowOutUpRightIcon } from "lucide-react"; +import { + BookOpenTextIcon, + BugIcon, + CircleUserIcon, + LogOutIcon, + MessageSquareIcon, + MonitorDownIcon, + SquareArrowOutUpRightIcon, +} from "lucide-react"; import type { FC } from "react"; import { Link } from "react-router"; diff --git a/site/src/modules/dashboard/useUpdateCheck.test.tsx b/site/src/modules/dashboard/useUpdateCheck.test.tsx index c6ffe37cd94ba..f3ab00d434e75 100644 --- a/site/src/modules/dashboard/useUpdateCheck.test.tsx +++ b/site/src/modules/dashboard/useUpdateCheck.test.tsx @@ -1,9 +1,9 @@ +import { MockUpdateCheck } from "testHelpers/entities"; +import { server } from "testHelpers/server"; import { act, renderHook, waitFor } from "@testing-library/react"; -import { http, HttpResponse } from "msw"; +import { HttpResponse, http } from "msw"; import type { FC, PropsWithChildren } from "react"; import { QueryClient, QueryClientProvider } from "react-query"; -import { MockUpdateCheck } from "testHelpers/entities"; -import { server } from "testHelpers/server"; import { useUpdateCheck } from "./useUpdateCheck"; const createWrapper = (): FC => { diff --git a/site/src/modules/hooks/useSyncFormParameters.ts b/site/src/modules/hooks/useSyncFormParameters.ts index 4f6952331eaaf..dee1f5aef8ae6 100644 --- a/site/src/modules/hooks/useSyncFormParameters.ts +++ b/site/src/modules/hooks/useSyncFormParameters.ts @@ -1,7 +1,6 @@ import type * as TypesGen from "api/typesGenerated"; -import { useEffect, useRef } from "react"; - import type { PreviewParameter } from "api/typesGenerated"; +import { useEffect, useRef } from "react"; type UseSyncFormParametersProps = { parameters: readonly PreviewParameter[]; diff --git a/site/src/modules/management/DeploymentConfigProvider.tsx b/site/src/modules/management/DeploymentConfigProvider.tsx index ab3bfc7ddd124..51bacf22cdb2a 100644 --- a/site/src/modules/management/DeploymentConfigProvider.tsx +++ b/site/src/modules/management/DeploymentConfigProvider.tsx @@ -2,7 +2,7 @@ import type { DeploymentConfig } from "api/api"; import { deploymentConfig } from "api/queries/deployment"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; -import { type FC, createContext, useContext } from "react"; +import { createContext, type FC, useContext } from "react"; import { useQuery } from "react-query"; import { Outlet } from "react-router"; diff --git a/site/src/modules/management/DeploymentSidebarView.stories.tsx b/site/src/modules/management/DeploymentSidebarView.stories.tsx index 65d2dca1349f7..a58268d9e7f58 100644 --- a/site/src/modules/management/DeploymentSidebarView.stories.tsx +++ b/site/src/modules/management/DeploymentSidebarView.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockBuildInfo, MockNoPermissions, MockPermissions, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { DeploymentSidebarView } from "./DeploymentSidebarView"; const meta: Meta = { diff --git a/site/src/modules/management/OrganizationSettingsLayout.tsx b/site/src/modules/management/OrganizationSettingsLayout.tsx index fb0d0c722db51..edbe759e0d5fb 100644 --- a/site/src/modules/management/OrganizationSettingsLayout.tsx +++ b/site/src/modules/management/OrganizationSettingsLayout.tsx @@ -12,11 +12,11 @@ import { import { Loader } from "components/Loader/Loader"; import { useDashboard } from "modules/dashboard/useDashboard"; import { - type OrganizationPermissions, canViewOrganization, + type OrganizationPermissions, } from "modules/permissions/organizations"; import NotFoundPage from "pages/404Page/404Page"; -import { type FC, Suspense, createContext, useContext } from "react"; +import { createContext, type FC, Suspense, useContext } from "react"; import { useQuery } from "react-query"; import { Outlet, useParams } from "react-router"; diff --git a/site/src/modules/management/OrganizationSidebarView.stories.tsx b/site/src/modules/management/OrganizationSidebarView.stories.tsx index 37d2c9ab17c37..ab4c2486d37c8 100644 --- a/site/src/modules/management/OrganizationSidebarView.stories.tsx +++ b/site/src/modules/management/OrganizationSidebarView.stories.tsx @@ -1,6 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { Organization } from "api/typesGenerated"; -import { expect, userEvent, waitFor, within } from "storybook/test"; import { MockNoOrganizationPermissions, MockNoPermissions, @@ -10,6 +7,9 @@ import { MockPermissions, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { Organization } from "api/typesGenerated"; +import { expect, userEvent, waitFor, within } from "storybook/test"; import { OrganizationSidebarView } from "./OrganizationSidebarView"; const meta: Meta = { diff --git a/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx b/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx index 9be8e2b9f74ad..4ca9085d8debc 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx @@ -11,8 +11,8 @@ import { LayoutTemplateIcon, UserIcon, } from "lucide-react"; -import type { FC } from "react"; import type React from "react"; +import type { FC } from "react"; const InboxNotificationFallbackIcons = [ InboxNotificationFallbackIconAccount, diff --git a/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx b/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx index 4b031fe6a158a..1aff447b264b9 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx @@ -1,6 +1,6 @@ +import { MockNotification } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, within } from "storybook/test"; -import { MockNotification } from "testHelpers/entities"; import { daysAgo } from "utils/time"; import { InboxItem } from "./InboxItem"; diff --git a/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx b/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx index 765f9b079a484..32432983335b1 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx @@ -1,6 +1,6 @@ +import { MockNotifications } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, within } from "storybook/test"; -import { MockNotifications } from "testHelpers/entities"; import { InboxPopover } from "./InboxPopover"; const meta: Meta = { diff --git a/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx b/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx index 78585beafa827..f042ece2662de 100644 --- a/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx +++ b/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { MockNotifications, mockApiError } from "testHelpers/entities"; import { withGlobalSnackbar } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { NotificationsInbox } from "./NotificationsInbox"; const meta: Meta = { diff --git a/site/src/modules/notifications/utils.tsx b/site/src/modules/notifications/utils.tsx index c876c5b05d94f..273a68e013e65 100644 --- a/site/src/modules/notifications/utils.tsx +++ b/site/src/modules/notifications/utils.tsx @@ -1,5 +1,4 @@ -import { MailIcon } from "lucide-react"; -import { WebhookIcon } from "lucide-react"; +import { MailIcon, WebhookIcon } from "lucide-react"; // TODO: This should be provided by the auto generated types from codersdk const notificationMethods = ["smtp", "webhook"] as const; diff --git a/site/src/modules/provisioners/Provisioner.tsx b/site/src/modules/provisioners/Provisioner.tsx index 3f9e5d4cad296..35f335b1884c3 100644 --- a/site/src/modules/provisioners/Provisioner.tsx +++ b/site/src/modules/provisioners/Provisioner.tsx @@ -2,8 +2,7 @@ import { useTheme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; import type { HealthMessage, ProvisionerDaemon } from "api/typesGenerated"; import { Pill } from "components/Pill/Pill"; -import { Building2Icon } from "lucide-react"; -import { UserIcon } from "lucide-react"; +import { Building2Icon, UserIcon } from "lucide-react"; import type { FC } from "react"; import { createDayString } from "utils/createDayString"; import { ProvisionerTag } from "./ProvisionerTag"; diff --git a/site/src/modules/provisioners/ProvisionerAlert.stories.tsx b/site/src/modules/provisioners/ProvisionerAlert.stories.tsx index 2f1ae820d6abe..d2fd8ca9b35a4 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.stories.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AlertVariant, ProvisionerAlert } from "./ProvisionerAlert"; const meta: Meta = { diff --git a/site/src/modules/provisioners/ProvisionerAlert.tsx b/site/src/modules/provisioners/ProvisionerAlert.tsx index 2d14237b414ed..a736e9a5b7104 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.tsx @@ -1,7 +1,6 @@ import type { Theme } from "@emotion/react"; import AlertTitle from "@mui/material/AlertTitle"; -import { Alert, type AlertColor } from "components/Alert/Alert"; -import { AlertDetail } from "components/Alert/Alert"; +import { Alert, type AlertColor, AlertDetail } from "components/Alert/Alert"; import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; import type { FC } from "react"; diff --git a/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx b/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx index 9d012e7c5c38a..1ff98d35b6eef 100644 --- a/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx +++ b/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplateVersion } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AlertVariant } from "./ProvisionerAlert"; import { ProvisionerStatusAlert } from "./ProvisionerStatusAlert"; diff --git a/site/src/modules/resources/AgentApps/AgentApps.tsx b/site/src/modules/resources/AgentApps/AgentApps.tsx index 75793ef7a82c7..9d4e947d19412 100644 --- a/site/src/modules/resources/AgentApps/AgentApps.tsx +++ b/site/src/modules/resources/AgentApps/AgentApps.tsx @@ -1,5 +1,8 @@ -import type { WorkspaceApp } from "api/typesGenerated"; -import type { Workspace, WorkspaceAgent } from "api/typesGenerated"; +import type { + Workspace, + WorkspaceAgent, + WorkspaceApp, +} from "api/typesGenerated"; import { DropdownMenu, DropdownMenuContent, @@ -68,7 +71,7 @@ type AgentAppSection = { export function organizeAgentApps( apps: readonly WorkspaceApp[], ): AgentAppSection[] { - let currentSection: AgentAppSection | undefined = undefined; + let currentSection: AgentAppSection | undefined; const appGroups: AgentAppSection[] = []; const groupsByName = new Map(); diff --git a/site/src/modules/resources/AgentDevcontainerCard.stories.tsx b/site/src/modules/resources/AgentDevcontainerCard.stories.tsx index c3e17d44eb0db..a06b4ba3ab8b4 100644 --- a/site/src/modules/resources/AgentDevcontainerCard.stories.tsx +++ b/site/src/modules/resources/AgentDevcontainerCard.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getPreferredProxy } from "contexts/ProxyContext"; import { chromatic } from "testHelpers/chromatic"; import { MockListeningPortsResponse, @@ -18,6 +16,8 @@ import { withDashboardProvider, withProxyProvider, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getPreferredProxy } from "contexts/ProxyContext"; import { AgentDevcontainerCard } from "./AgentDevcontainerCard"; const meta: Meta = { diff --git a/site/src/modules/resources/AgentLatency.tsx b/site/src/modules/resources/AgentLatency.tsx index 8b23c9a96c041..4be2a4cf52a07 100644 --- a/site/src/modules/resources/AgentLatency.tsx +++ b/site/src/modules/resources/AgentLatency.tsx @@ -1,5 +1,6 @@ import { type Theme, useTheme } from "@emotion/react"; import type { DERPRegion, WorkspaceAgent } from "api/typesGenerated"; +import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import { HelpTooltip, HelpTooltipContent, @@ -7,7 +8,6 @@ import { HelpTooltipTitle, } from "components/HelpTooltip/HelpTooltip"; import { Stack } from "components/Stack/Stack"; -import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import type { FC } from "react"; import { getLatencyColor } from "utils/latency"; diff --git a/site/src/modules/resources/AgentMetadata.tsx b/site/src/modules/resources/AgentMetadata.tsx index 5c6986a4dc618..f05355f33c50e 100644 --- a/site/src/modules/resources/AgentMetadata.tsx +++ b/site/src/modules/resources/AgentMetadata.tsx @@ -63,7 +63,7 @@ export const AgentMetadata: FC = ({ return; } - let timeoutId: number | undefined = undefined; + let timeoutId: number | undefined; let activeSocket: OneWayWebSocket | null = null; let retries = 0; diff --git a/site/src/modules/resources/AgentOutdatedTooltip.tsx b/site/src/modules/resources/AgentOutdatedTooltip.tsx index c961def910589..03cf7ed6a7a3f 100644 --- a/site/src/modules/resources/AgentOutdatedTooltip.tsx +++ b/site/src/modules/resources/AgentOutdatedTooltip.tsx @@ -1,5 +1,6 @@ import { useTheme } from "@emotion/react"; import type { WorkspaceAgent } from "api/typesGenerated"; +import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import { HelpTooltip, HelpTooltipAction, @@ -9,7 +10,6 @@ import { HelpTooltipTitle, } from "components/HelpTooltip/HelpTooltip"; import { Stack } from "components/Stack/Stack"; -import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import { RotateCcwIcon } from "lucide-react"; import type { FC } from "react"; import { agentVersionStatus } from "../../utils/workspace"; diff --git a/site/src/modules/resources/AgentRow.stories.tsx b/site/src/modules/resources/AgentRow.stories.tsx index 6717c0e6043ab..abf4db3e295ae 100644 --- a/site/src/modules/resources/AgentRow.stories.tsx +++ b/site/src/modules/resources/AgentRow.stories.tsx @@ -1,7 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import { getPreferredProxy } from "contexts/ProxyContext"; -import { spyOn, userEvent, within } from "storybook/test"; import { chromatic } from "testHelpers/chromatic"; import * as M from "testHelpers/entities"; import { @@ -9,6 +5,10 @@ import { withProxyProvider, withWebSocket, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import { getPreferredProxy } from "contexts/ProxyContext"; +import { spyOn, userEvent, within } from "storybook/test"; import { AgentRow } from "./AgentRow"; const defaultAgentMetadata = [ diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index 3cf757a15c2ab..fca262765bbdf 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -37,9 +37,9 @@ import { DownloadAgentLogsButton } from "./DownloadAgentLogsButton"; import { PortForwardButton } from "./PortForwardButton"; import { AgentSSHButton } from "./SSHButton/SSHButton"; import { TerminalLink } from "./TerminalLink/TerminalLink"; -import { VSCodeDesktopButton } from "./VSCodeDesktopButton/VSCodeDesktopButton"; import { useAgentContainers } from "./useAgentContainers"; import { useAgentLogs } from "./useAgentLogs"; +import { VSCodeDesktopButton } from "./VSCodeDesktopButton/VSCodeDesktopButton"; interface AgentRowProps { agent: WorkspaceAgent; diff --git a/site/src/modules/resources/AgentRowPreview.stories.tsx b/site/src/modules/resources/AgentRowPreview.stories.tsx index e27c4f7a55c6e..8cd4f6bd7b78d 100644 --- a/site/src/modules/resources/AgentRowPreview.stories.tsx +++ b/site/src/modules/resources/AgentRowPreview.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceAgent, MockWorkspaceApp } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AgentRowPreview } from "./AgentRowPreview"; const meta: Meta = { diff --git a/site/src/modules/resources/AgentRowPreview.test.tsx b/site/src/modules/resources/AgentRowPreview.test.tsx index c1b876b72ef3b..23b34dc8c7fc8 100644 --- a/site/src/modules/resources/AgentRowPreview.test.tsx +++ b/site/src/modules/resources/AgentRowPreview.test.tsx @@ -1,11 +1,11 @@ +import { MockWorkspaceAgent } from "testHelpers/entities"; +import { renderComponent } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import { type DisplayApp, DisplayApps, type WorkspaceAgent, } from "api/typesGenerated"; -import { MockWorkspaceAgent } from "testHelpers/entities"; -import { renderComponent } from "testHelpers/renderHelpers"; import { AgentRowPreview } from "./AgentRowPreview"; import { DisplayAppNameMap } from "./AppLink/AppLink"; diff --git a/site/src/modules/resources/AgentStatus.tsx b/site/src/modules/resources/AgentStatus.tsx index 7eb165d19f8c2..8f6b923e70d68 100644 --- a/site/src/modules/resources/AgentStatus.tsx +++ b/site/src/modules/resources/AgentStatus.tsx @@ -6,13 +6,13 @@ import type { WorkspaceAgentDevcontainer, } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; +import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import { HelpTooltip, HelpTooltipContent, HelpTooltipText, HelpTooltipTitle, } from "components/HelpTooltip/HelpTooltip"; -import { PopoverTrigger } from "components/deprecated/Popover/Popover"; import { TriangleAlertIcon } from "lucide-react"; import type { FC } from "react"; diff --git a/site/src/modules/resources/AppLink/AppLink.stories.tsx b/site/src/modules/resources/AppLink/AppLink.stories.tsx index 5ce9f6ff4ca1a..32e3ee47ebe40 100644 --- a/site/src/modules/resources/AppLink/AppLink.stories.tsx +++ b/site/src/modules/resources/AppLink/AppLink.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getPreferredProxy } from "contexts/ProxyContext"; import { MockPrimaryWorkspaceProxy, MockWorkspace, @@ -8,6 +6,8 @@ import { MockWorkspaceProxies, } from "testHelpers/entities"; import { withGlobalSnackbar, withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getPreferredProxy } from "contexts/ProxyContext"; import { AppLink } from "./AppLink"; const meta: Meta = { diff --git a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx index e5627bac8dda1..b0c51f32f94a8 100644 --- a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx +++ b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx @@ -1,8 +1,8 @@ +import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { agentLogsKey } from "api/queries/workspaces"; import type { WorkspaceAgentLog } from "api/typesGenerated"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import { DownloadAgentLogsButton } from "./DownloadAgentLogsButton"; const meta: Meta = { diff --git a/site/src/modules/resources/PortForwardButton.stories.tsx b/site/src/modules/resources/PortForwardButton.stories.tsx index fbe1398fb69e7..daa7e2c4d78b8 100644 --- a/site/src/modules/resources/PortForwardButton.stories.tsx +++ b/site/src/modules/resources/PortForwardButton.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; import { MockListeningPortsResponse, MockSharedPortsResponse, @@ -8,6 +6,8 @@ import { MockWorkspaceAgent, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { PortForwardButton } from "./PortForwardButton"; const meta: Meta = { diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index 52c46f151f522..665569904c870 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -26,6 +26,11 @@ import { WorkspaceAppSharingLevels, } from "api/typesGenerated"; import { Button } from "components/Button/Button"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "components/deprecated/Popover/Popover"; import { HelpTooltipLink, HelpTooltipText, @@ -38,11 +43,6 @@ import { TooltipProvider, TooltipTrigger, } from "components/Tooltip/Tooltip"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/deprecated/Popover/Popover"; import { useFormik } from "formik"; import { type ClassName, useClassName } from "hooks/useClassName"; import { diff --git a/site/src/modules/resources/PortForwardPopoverView.stories.tsx b/site/src/modules/resources/PortForwardPopoverView.stories.tsx index fb5efc6855f81..e1663f1db4590 100644 --- a/site/src/modules/resources/PortForwardPopoverView.stories.tsx +++ b/site/src/modules/resources/PortForwardPopoverView.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; import { MockListeningPortsResponse, MockSharedPortsResponse, @@ -7,6 +5,8 @@ import { MockWorkspace, MockWorkspaceAgent, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { PortForwardPopoverView } from "./PortForwardButton"; const meta: Meta = { diff --git a/site/src/modules/resources/PortForwardPopoverView.test.tsx b/site/src/modules/resources/PortForwardPopoverView.test.tsx index 94b0ca73d2296..80df2581b0fb2 100644 --- a/site/src/modules/resources/PortForwardPopoverView.test.tsx +++ b/site/src/modules/resources/PortForwardPopoverView.test.tsx @@ -1,5 +1,3 @@ -import { screen } from "@testing-library/react"; -import { QueryClientProvider } from "react-query"; import { MockListeningPortsResponse, MockTemplate, @@ -10,6 +8,8 @@ import { createTestQueryClient, renderComponent, } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import { QueryClientProvider } from "react-query"; import { PortForwardPopoverView } from "./PortForwardButton"; describe("Port Forward Popover View", () => { diff --git a/site/src/modules/resources/ResourceAvatar.stories.tsx b/site/src/modules/resources/ResourceAvatar.stories.tsx index a6f244a49d00f..8ca3000eac161 100644 --- a/site/src/modules/resources/ResourceAvatar.stories.tsx +++ b/site/src/modules/resources/ResourceAvatar.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceResource } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { ResourceAvatar } from "./ResourceAvatar"; const meta: Meta = { diff --git a/site/src/modules/resources/ResourceCard.stories.tsx b/site/src/modules/resources/ResourceCard.stories.tsx index 3eacd524aece9..c5885bebf79be 100644 --- a/site/src/modules/resources/ResourceCard.stories.tsx +++ b/site/src/modules/resources/ResourceCard.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceResource } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AgentRowPreview } from "./AgentRowPreview"; import { ResourceCard } from "./ResourceCard"; diff --git a/site/src/modules/resources/ResourceCard.test.tsx b/site/src/modules/resources/ResourceCard.test.tsx index cca3f4288fb16..460caf51fbb33 100644 --- a/site/src/modules/resources/ResourceCard.test.tsx +++ b/site/src/modules/resources/ResourceCard.test.tsx @@ -1,7 +1,7 @@ -import { screen } from "@testing-library/react"; -import type { WorkspaceResourceMetadata } from "api/typesGenerated"; import { MockWorkspaceResource } from "testHelpers/entities"; import { renderComponent } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import type { WorkspaceResourceMetadata } from "api/typesGenerated"; import { ResourceCard } from "./ResourceCard"; describe("Resource Card", () => { diff --git a/site/src/modules/resources/Resources.stories.tsx b/site/src/modules/resources/Resources.stories.tsx index 1e12c53a33855..0d8015f37e549 100644 --- a/site/src/modules/resources/Resources.stories.tsx +++ b/site/src/modules/resources/Resources.stories.tsx @@ -1,9 +1,9 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceResource, MockWorkspaceResourceMultipleAgents, } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AgentRowPreview } from "./AgentRowPreview"; import { Resources } from "./Resources"; diff --git a/site/src/modules/resources/SSHButton/SSHButton.stories.tsx b/site/src/modules/resources/SSHButton/SSHButton.stories.tsx index 2f53dd03a5af7..2f57bfe461a87 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.stories.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.stories.tsx @@ -1,12 +1,12 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import { spyOn, userEvent, within } from "storybook/test"; import { MockDeploymentSSH, MockWorkspace, MockWorkspaceAgent, } from "testHelpers/entities"; import { withDesktopViewport } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import { spyOn, userEvent, within } from "storybook/test"; import { AgentSSHButton } from "./SSHButton"; const meta: Meta = { diff --git a/site/src/modules/resources/SSHButton/SSHButton.tsx b/site/src/modules/resources/SSHButton/SSHButton.tsx index a1ac3c6819361..80ad1fa445600 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.tsx @@ -2,17 +2,17 @@ import type { Interpolation, Theme } from "@emotion/react"; import { deploymentSSHConfig } from "api/queries/deployment"; import { Button } from "components/Button/Button"; import { CodeExample } from "components/CodeExample/CodeExample"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "components/deprecated/Popover/Popover"; import { HelpTooltipLink, HelpTooltipLinksGroup, HelpTooltipText, } from "components/HelpTooltip/HelpTooltip"; import { Stack } from "components/Stack/Stack"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/deprecated/Popover/Popover"; import { type ClassName, useClassName } from "hooks/useClassName"; import { ChevronDownIcon } from "lucide-react"; import type { FC } from "react"; diff --git a/site/src/modules/resources/SensitiveValue.tsx b/site/src/modules/resources/SensitiveValue.tsx index 626c7a8623291..b1ec1b4410e3e 100644 --- a/site/src/modules/resources/SensitiveValue.tsx +++ b/site/src/modules/resources/SensitiveValue.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css } from "@emotion/react"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; import { CopyableValue } from "components/CopyableValue/CopyableValue"; diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx index d5522e1daedaf..baef99efcb07e 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspace } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TerminalLink } from "./TerminalLink"; const meta: Meta = { diff --git a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx index 3555ac0ce582b..477a40d106242 100644 --- a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx +++ b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { VSCodeDesktopButton } from "./VSCodeDesktopButton"; const meta: Meta = { diff --git a/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx b/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx index f8ae3a284e67a..f6cfd0850d7ed 100644 --- a/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx +++ b/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { VSCodeDevContainerButton } from "./VSCodeDevContainerButton"; const meta: Meta = { diff --git a/site/src/modules/resources/useAgentContainers.test.tsx b/site/src/modules/resources/useAgentContainers.test.tsx index 363f8d93223c8..f00f7b242b6e3 100644 --- a/site/src/modules/resources/useAgentContainers.test.tsx +++ b/site/src/modules/resources/useAgentContainers.test.tsx @@ -1,17 +1,17 @@ +import { + MockWorkspaceAgent, + MockWorkspaceAgentDevcontainer, +} from "testHelpers/entities"; +import { createTestQueryClient } from "testHelpers/renderHelpers"; +import { server } from "testHelpers/server"; import { renderHook, waitFor } from "@testing-library/react"; import * as API from "api/api"; import type { WorkspaceAgentListContainersResponse } from "api/typesGenerated"; import * as GlobalSnackbar from "components/GlobalSnackbar/utils"; -import { http, HttpResponse } from "msw"; +import { HttpResponse, http } from "msw"; import type { FC, PropsWithChildren } from "react"; import { act } from "react"; import { QueryClientProvider } from "react-query"; -import { - MockWorkspaceAgent, - MockWorkspaceAgentDevcontainer, -} from "testHelpers/entities"; -import { createTestQueryClient } from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import type { OneWayWebSocket } from "utils/OneWayWebSocket"; import { useAgentContainers } from "./useAgentContainers"; diff --git a/site/src/modules/resources/useAgentLogs.test.ts b/site/src/modules/resources/useAgentLogs.test.ts index 186087c871299..c4943c6f9d50f 100644 --- a/site/src/modules/resources/useAgentLogs.test.ts +++ b/site/src/modules/resources/useAgentLogs.test.ts @@ -1,7 +1,7 @@ +import { MockWorkspaceAgent } from "testHelpers/entities"; import { renderHook, waitFor } from "@testing-library/react"; import type { WorkspaceAgentLog } from "api/typesGenerated"; import WS from "jest-websocket-mock"; -import { MockWorkspaceAgent } from "testHelpers/entities"; import { useAgentLogs } from "./useAgentLogs"; /** diff --git a/site/src/modules/tableFiltering/options.tsx b/site/src/modules/tableFiltering/options.tsx index 9bc55744edb54..7b6964b5cd851 100644 --- a/site/src/modules/tableFiltering/options.tsx +++ b/site/src/modules/tableFiltering/options.tsx @@ -9,15 +9,15 @@ */ import { API } from "api/api"; import { Avatar } from "components/Avatar/Avatar"; +import { + type UseFilterMenuOptions, + useFilterMenu, +} from "components/Filter/menu"; import { SelectFilter, type SelectFilterOption, SelectFilterSearch, } from "components/Filter/SelectFilter"; -import { - type UseFilterMenuOptions, - useFilterMenu, -} from "components/Filter/menu"; import type { FC } from "react"; // Organization helpers //////////////////////////////////////////////////////// diff --git a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx index 8b235e2aa4641..775c82f806c37 100644 --- a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx +++ b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx @@ -1,9 +1,9 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplateExample, MockTemplateExample2, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateExampleCard } from "./TemplateExampleCard"; const meta: Meta = { diff --git a/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx index bea0d1746b543..45191a2320a3f 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx @@ -1,6 +1,6 @@ +import { chromatic } from "testHelpers/chromatic"; import { useTheme } from "@emotion/react"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import { chromatic } from "testHelpers/chromatic"; import type { FileTree } from "utils/filetree"; import { TemplateFileTree } from "./TemplateFileTree"; diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx index e9fb48ca3fc1f..3a7adcfacf52c 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateFiles } from "./TemplateFiles"; const exampleFiles = { diff --git a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx index d2b74e4a3c733..9a0d1556e97ea 100644 --- a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx +++ b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceAgent, MockWorkspaceAgentConnecting, @@ -6,6 +5,7 @@ import { MockWorkspaceResource, MockWorkspaceVolumeResource, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateResourcesTable } from "./TemplateResourcesTable"; const meta: Meta = { diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx index e961d3bbc1803..ac627c6130565 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockPreviewParameter } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { DynamicParameter } from "./DynamicParameter"; const meta: Meta = { diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.test.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.test.tsx index e3bfd8dc80635..716fd26df4474 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.test.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.test.tsx @@ -1,7 +1,7 @@ +import { render } from "testHelpers/renderHelpers"; import { act, fireEvent, screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import type { PreviewParameter } from "api/typesGenerated"; -import { render } from "testHelpers/renderHelpers"; import { DynamicParameter } from "./DynamicParameter"; const createMockParameter = ( diff --git a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx index c2f7da9aa21e5..3fbfc819b4f0a 100644 --- a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceAppStatus } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { WorkspaceAppStatus } from "./WorkspaceAppStatus"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx b/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx index 66a5a26f4066e..ec984417e9140 100644 --- a/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceBuild } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { WorkspaceBuildData } from "./WorkspaceBuildData"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx index ed8f9bdd35fab..55ccc6ff6e6d7 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockWorkspaceBuildLogs } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { WorkspaceBuildLogs } from "./WorkspaceBuildLogs"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx b/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx index 308b038f91d33..c7a159c0ce1f7 100644 --- a/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx @@ -1,6 +1,6 @@ +import { MockDormantWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/test"; -import { MockDormantWorkspace } from "testHelpers/entities"; import { WorkspaceDormantBadge } from "./WorkspaceDormantBadge"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.stories.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.stories.tsx index 7f2df8cd9c072..7ff35868d0e75 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { templateVersionsQueryKey } from "api/queries/templates"; import { MockTemplateVersion, MockTemplateVersionWithMarkdownMessage, MockWorkspace, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { templateVersionsQueryKey } from "api/queries/templates"; import { ChangeWorkspaceVersionDialog } from "./ChangeWorkspaceVersionDialog"; const noMessage = { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx index 9e27d1800d511..447a812399024 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx @@ -1,8 +1,8 @@ +import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; +import { withDesktopViewport } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { agentLogsKey, buildLogsKey } from "api/queries/workspaces"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; -import { withDesktopViewport } from "testHelpers/storybook"; import { DownloadLogsDialog } from "./DownloadLogsDialog"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx index dfee8134af496..b5fcd44b7c9c8 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockFailedWorkspace, MockWorkspace } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { daysAgo } from "utils/time"; import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx index 8e7b9e33b93d2..ca0e9803336e2 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions.tsx @@ -1,6 +1,5 @@ import { MissingBuildParameters, ParameterValidationError } from "api/api"; -import { isApiError } from "api/errors"; -import { type ApiError, getErrorMessage } from "api/errors"; +import { type ApiError, getErrorMessage, isApiError } from "api/errors"; import { changeVersion, deleteWorkspace, @@ -32,8 +31,8 @@ import { ChangeWorkspaceVersionDialog } from "./ChangeWorkspaceVersionDialog"; import { DownloadLogsDialog } from "./DownloadLogsDialog"; import { UpdateBuildParametersDialog } from "./UpdateBuildParametersDialog"; import { UpdateBuildParametersDialogExperimental } from "./UpdateBuildParametersDialogExperimental"; -import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; +import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; type WorkspaceMoreActionsProps = { workspace: Workspace; diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.test.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.test.tsx index 8e06e10136f92..d0e7af6d1aafd 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.test.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.test.tsx @@ -1,10 +1,10 @@ -import { act, waitFor } from "@testing-library/react"; -import type { Workspace } from "api/typesGenerated"; import * as M from "testHelpers/entities"; import { type GetLocationSnapshot, renderHookWithAuth, } from "testHelpers/hooks"; +import { act, waitFor } from "@testing-library/react"; +import type { Workspace } from "api/typesGenerated"; import CreateWorkspacePage from "../../../pages/CreateWorkspacePage/CreateWorkspacePage"; import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx index 92d1a8e30c899..fc0a28815752b 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent, waitFor, within } from "storybook/test"; import { MockTemplate, MockTemplateVersion, MockWorkspace, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, waitFor, within } from "storybook/test"; import { WorkspaceOutdatedTooltip } from "./WorkspaceOutdatedTooltip"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx index b79183acd7471..e1e83d502781a 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx @@ -4,6 +4,7 @@ import Skeleton from "@mui/material/Skeleton"; import { getErrorDetail, getErrorMessage } from "api/errors"; import { templateVersion } from "api/queries/templates"; import type { Workspace } from "api/typesGenerated"; +import { usePopover } from "components/deprecated/Popover/Popover"; import { displayError } from "components/GlobalSnackbar/utils"; import { HelpTooltip, @@ -14,15 +15,13 @@ import { HelpTooltipTitle, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; -import { usePopover } from "components/deprecated/Popover/Popover"; -import { InfoIcon } from "lucide-react"; -import { RotateCcwIcon } from "lucide-react"; +import { InfoIcon, RotateCcwIcon } from "lucide-react"; import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; import { useQuery } from "react-query"; import { - WorkspaceUpdateDialogs, useWorkspaceUpdate, + WorkspaceUpdateDialogs, } from "../WorkspaceUpdateDialogs"; interface TooltipProps { diff --git a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx index 0b4bf3d9d881e..61dd592886c9d 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx @@ -1,6 +1,6 @@ +import { MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { Workspace, WorkspaceStatus } from "api/typesGenerated"; -import { MockWorkspace } from "testHelpers/entities"; import { WorkspaceStatusIndicator } from "./WorkspaceStatusIndicator"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx index 972096314e1ee..c7e9e53ba8ff5 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx @@ -10,8 +10,8 @@ import { TooltipProvider, TooltipTrigger, } from "components/Tooltip/Tooltip"; -import type { FC } from "react"; import type React from "react"; +import type { FC } from "react"; import { type DisplayWorkspaceStatusType, getDisplayWorkspaceStatus, diff --git a/site/src/modules/workspaces/WorkspaceTiming/Chart/Bar.tsx b/site/src/modules/workspaces/WorkspaceTiming/Chart/Bar.tsx index 2c3a1bf28b152..b76aa11a9883a 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/Chart/Bar.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/Chart/Bar.tsx @@ -1,5 +1,5 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { type ButtonHTMLAttributes, type HTMLProps, forwardRef } from "react"; +import { type ButtonHTMLAttributes, forwardRef, type HTMLProps } from "react"; export type BarColors = { stroke: string; diff --git a/site/src/modules/workspaces/WorkspaceTiming/ResourcesChart.tsx b/site/src/modules/workspaces/WorkspaceTiming/ResourcesChart.tsx index 8384d8c60857b..f2757ee48e5c0 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/ResourcesChart.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/ResourcesChart.tsx @@ -11,6 +11,14 @@ import { ChartToolbar, } from "./Chart/Chart"; import { Tooltip, TooltipLink, TooltipTitle } from "./Chart/Tooltip"; +import { + calcDuration, + calcOffset, + formatTime, + makeTicks, + mergeTimeRanges, + type TimeRange, +} from "./Chart/utils"; import { XAxis, XAxisRow, XAxisSection } from "./Chart/XAxis"; import { YAxis, @@ -19,14 +27,6 @@ import { YAxisLabels, YAxisSection, } from "./Chart/YAxis"; -import { - type TimeRange, - calcDuration, - calcOffset, - formatTime, - makeTicks, - mergeTimeRanges, -} from "./Chart/utils"; import type { Stage } from "./StagesChart"; type ResourceTiming = { diff --git a/site/src/modules/workspaces/WorkspaceTiming/ScriptsChart.tsx b/site/src/modules/workspaces/WorkspaceTiming/ScriptsChart.tsx index 3756589a8056a..d0f6ac6045383 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/ScriptsChart.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/ScriptsChart.tsx @@ -11,6 +11,14 @@ import { ChartToolbar, } from "./Chart/Chart"; import { Tooltip, TooltipTitle } from "./Chart/Tooltip"; +import { + calcDuration, + calcOffset, + formatTime, + makeTicks, + mergeTimeRanges, + type TimeRange, +} from "./Chart/utils"; import { XAxis, XAxisRow, XAxisSection } from "./Chart/XAxis"; import { YAxis, @@ -19,14 +27,6 @@ import { YAxisLabels, YAxisSection, } from "./Chart/YAxis"; -import { - type TimeRange, - calcDuration, - calcOffset, - formatTime, - makeTicks, - mergeTimeRanges, -} from "./Chart/utils"; import type { Stage } from "./StagesChart"; type ScriptTiming = { diff --git a/site/src/modules/workspaces/WorkspaceTiming/StagesChart.tsx b/site/src/modules/workspaces/WorkspaceTiming/StagesChart.tsx index c9e9f8d3a71b2..103d4717f20c6 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/StagesChart.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/StagesChart.tsx @@ -1,7 +1,6 @@ import type { Interpolation, Theme } from "@emotion/react"; import type { TimingStage } from "api/typesGenerated"; -import { CircleAlertIcon } from "lucide-react"; -import { InfoIcon } from "lucide-react"; +import { CircleAlertIcon, InfoIcon } from "lucide-react"; import type { FC } from "react"; import { Bar, ClickableBar } from "./Chart/Bar"; import { Blocks } from "./Chart/Blocks"; @@ -12,6 +11,14 @@ import { TooltipShortDescription, TooltipTitle, } from "./Chart/Tooltip"; +import { + calcDuration, + calcOffset, + formatTime, + makeTicks, + mergeTimeRanges, + type TimeRange, +} from "./Chart/utils"; import { XAxis, XAxisRow, XAxisSection } from "./Chart/XAxis"; import { YAxis, @@ -20,14 +27,6 @@ import { YAxisLabels, YAxisSection, } from "./Chart/YAxis"; -import { - type TimeRange, - calcDuration, - calcOffset, - formatTime, - makeTicks, - mergeTimeRanges, -} from "./Chart/utils"; export type Stage = { /** diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx index 6b7de2d76bbf3..9c8ce12168631 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx @@ -1,8 +1,8 @@ +import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, waitFor, within } from "storybook/test"; -import { chromatic } from "testHelpers/chromatic"; -import { WorkspaceTimings } from "./WorkspaceTimings"; import { WorkspaceTimingsResponse } from "./storybookData"; +import { WorkspaceTimings } from "./WorkspaceTimings"; const meta: Meta = { title: "modules/workspaces/WorkspaceTimings", diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx index 8b3f42c7b93e3..35803cd660050 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx @@ -12,18 +12,18 @@ import uniqBy from "lodash/uniqBy"; import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"; import { type FC, useState } from "react"; import { - type TimeRange, calcDuration, formatTime, mergeTimeRanges, + type TimeRange, } from "./Chart/utils"; -import { ResourcesChart, isCoderResource } from "./ResourcesChart"; +import { isCoderResource, ResourcesChart } from "./ResourcesChart"; import { ScriptsChart } from "./ScriptsChart"; import { - type Stage, - StagesChart, agentStages, provisioningStages, + type Stage, + StagesChart, } from "./StagesChart"; type TimingView = diff --git a/site/src/modules/workspaces/generateWorkspaceName.ts b/site/src/modules/workspaces/generateWorkspaceName.ts index 00a6542180963..6f62bc3017fee 100644 --- a/site/src/modules/workspaces/generateWorkspaceName.ts +++ b/site/src/modules/workspaces/generateWorkspaceName.ts @@ -1,7 +1,7 @@ import { - NumberDictionary, animals, colors, + NumberDictionary, uniqueNamesGenerator, } from "unique-names-generator"; diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index c625a7d60797e..973d2d7a8e7ba 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,14 +1,14 @@ import { AuditActions, ResourceTypes } from "api/typesGenerated"; import { Filter, MenuSkeleton, type useFilter } from "components/Filter/Filter"; +import { + type UseFilterMenuOptions, + useFilterMenu, +} from "components/Filter/menu"; import { SelectFilter, type SelectFilterOption, } from "components/Filter/SelectFilter"; import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; -import { - type UseFilterMenuOptions, - useFilterMenu, -} from "components/Filter/menu"; import capitalize from "lodash/capitalize"; import { type OrganizationsFilterMenu, diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx index 8b5ecef7a09a1..8abf5442eb9cf 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockAuditLog, MockAuditLogRequestPasswordReset, @@ -7,6 +6,7 @@ import { MockAuditLogWithWorkspaceBuild, MockWorkspaceCreateAuditLogForDifferentOwner, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AuditLogDescription } from "./AuditLogDescription"; const meta: Meta = { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx index cb059c7a1cbaf..03ccfcf38dbae 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx @@ -1,10 +1,3 @@ -import Table from "@mui/material/Table"; -import TableBody from "@mui/material/TableBody"; -import TableCell from "@mui/material/TableCell"; -import TableContainer from "@mui/material/TableContainer"; -import TableHead from "@mui/material/TableHead"; -import TableRow from "@mui/material/TableRow"; -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockAuditLog, @@ -15,6 +8,13 @@ import { MockAuditLogWithWorkspaceBuild, MockUserOwner, } from "testHelpers/entities"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AuditLogRow } from "./AuditLogRow"; const meta: Meta = { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx index b88ec000719c5..9661fbab59e75 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx @@ -9,8 +9,7 @@ import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { Stack } from "components/Stack/Stack"; import { StatusPill } from "components/StatusPill/StatusPill"; import { TimelineEntry } from "components/Timeline/TimelineEntry"; -import { InfoIcon } from "lucide-react"; -import { NetworkIcon } from "lucide-react"; +import { InfoIcon, NetworkIcon } from "lucide-react"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; import userAgentParser from "ua-parser-js"; diff --git a/site/src/pages/AuditPage/AuditPage.test.tsx b/site/src/pages/AuditPage/AuditPage.test.tsx index 80f6e74ae1a26..ea7e5d9c44f06 100644 --- a/site/src/pages/AuditPage/AuditPage.test.tsx +++ b/site/src/pages/AuditPage/AuditPage.test.tsx @@ -1,9 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import type { AuditLogsRequest } from "api/typesGenerated"; -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; -import { http, HttpResponse } from "msw"; import { MockAuditLog, MockAuditLog2, @@ -14,6 +8,12 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import type { AuditLogsRequest } from "api/typesGenerated"; +import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import { HttpResponse, http } from "msw"; import * as CreateDayString from "utils/createDayString"; import AuditPage from "./AuditPage"; diff --git a/site/src/pages/AuditPage/AuditPageView.stories.tsx b/site/src/pages/AuditPage/AuditPageView.stories.tsx index 96ab7f7456a3c..29715db05280b 100644 --- a/site/src/pages/AuditPage/AuditPageView.stories.tsx +++ b/site/src/pages/AuditPage/AuditPageView.stories.tsx @@ -1,7 +1,14 @@ +import { chromaticWithTablet } from "testHelpers/chromatic"; +import { + MockAuditLog, + MockAuditLog2, + MockAuditLog3, + MockUserOwner, +} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { - MockMenu, getDefaultFilterProps, + MockMenu, } from "components/Filter/storyHelpers"; import { mockInitialRenderResult, @@ -9,13 +16,6 @@ import { } from "components/PaginationWidget/PaginationContainer.mocks"; import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import type { ComponentProps } from "react"; -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { - MockAuditLog, - MockAuditLog2, - MockAuditLog3, - MockUserOwner, -} from "testHelpers/entities"; import { AuditPageView } from "./AuditPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx index 9d049c4e6865b..fcf1efeb7dda0 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx @@ -1,14 +1,14 @@ import { ConnectionLogStatuses, ConnectionTypes } from "api/typesGenerated"; import { Filter, MenuSkeleton, type useFilter } from "components/Filter/Filter"; +import { + type UseFilterMenuOptions, + useFilterMenu, +} from "components/Filter/menu"; import { SelectFilter, type SelectFilterOption, } from "components/Filter/SelectFilter"; import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; -import { - type UseFilterMenuOptions, - useFilterMenu, -} from "components/Filter/menu"; import capitalize from "lodash/capitalize"; import { type OrganizationsFilterMenu, diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx index 7beea3f033e30..2ce25e5a33369 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx @@ -1,8 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; -import { http, HttpResponse } from "msw"; import { MockConnectedSSHConnectionLog, MockDisconnectedSSHConnectionLog, @@ -13,6 +8,11 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import { HttpResponse, http } from "msw"; import * as CreateDayString from "utils/createDayString"; import ConnectionLogPage from "./ConnectionLogPage"; diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx index 444c38ab14287..7376a75daec4a 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx @@ -1,7 +1,13 @@ +import { chromaticWithTablet } from "testHelpers/chromatic"; +import { + MockConnectedSSHConnectionLog, + MockDisconnectedSSHConnectionLog, + MockUserOwner, +} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { - MockMenu, getDefaultFilterProps, + MockMenu, } from "components/Filter/storyHelpers"; import { mockInitialRenderResult, @@ -9,12 +15,6 @@ import { } from "components/PaginationWidget/PaginationContainer.mocks"; import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import type { ComponentProps } from "react"; -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { - MockConnectedSSHConnectionLog, - MockDisconnectedSSHConnectionLog, - MockUserOwner, -} from "testHelpers/entities"; import { ConnectionLogPageView } from "./ConnectionLogPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogDescription/ConnectionLogDescription.stories.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogDescription/ConnectionLogDescription.stories.tsx index 004e466147c50..1354960c7894f 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogDescription/ConnectionLogDescription.stories.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogDescription/ConnectionLogDescription.stories.tsx @@ -1,8 +1,8 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockConnectedSSHConnectionLog, MockWebConnectionLog, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { ConnectionLogDescription } from "./ConnectionLogDescription"; const meta: Meta = { diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx index 73ed836f7d470..03833917e5bf4 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx @@ -1,11 +1,11 @@ -import TableContainer from "@mui/material/TableContainer"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Table, TableBody } from "components/Table/Table"; import { MockConnectedSSHConnectionLog, MockDisconnectedSSHConnectionLog, MockWebConnectionLog, } from "testHelpers/entities"; +import TableContainer from "@mui/material/TableContainer"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { Table, TableBody } from "components/Table/Table"; import { ConnectionLogRow } from "./ConnectionLogRow"; const meta: Meta = { diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.tsx index b3936a3a2850b..f66afde786e5f 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.tsx @@ -7,8 +7,7 @@ import { Avatar } from "components/Avatar/Avatar"; import { Stack } from "components/Stack/Stack"; import { StatusPill } from "components/StatusPill/StatusPill"; import { TimelineEntry } from "components/Timeline/TimelineEntry"; -import { InfoIcon } from "lucide-react"; -import { NetworkIcon } from "lucide-react"; +import { InfoIcon, NetworkIcon } from "lucide-react"; import type { FC } from "react"; import { Link as RouterLink } from "react-router"; import userAgentParser from "ua-parser-js"; diff --git a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPage.test.tsx b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPage.test.tsx index 0be2557856dbd..48f545ea1c3f2 100644 --- a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPage.test.tsx +++ b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPage.test.tsx @@ -1,13 +1,13 @@ -import { render, screen } from "@testing-library/react"; import { AppProviders } from "App"; -import { RequireAuth } from "contexts/auth/RequireAuth"; -import { http, HttpResponse } from "msw"; -import { RouterProvider, createMemoryRouter } from "react-router"; import { MockTemplateExample, MockTemplateExample2, } from "testHelpers/entities"; import { server } from "testHelpers/server"; +import { render, screen } from "@testing-library/react"; +import { RequireAuth } from "contexts/auth/RequireAuth"; +import { HttpResponse, http } from "msw"; +import { createMemoryRouter, RouterProvider } from "react-router"; import CreateTemplateGalleryPage from "./CreateTemplateGalleryPage"; test("displays the scratch template", async () => { diff --git a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx index 2496f2a335465..b406daeb932d4 100644 --- a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx +++ b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplateExample, MockTemplateExample2, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { getTemplatesByTag } from "utils/starterTemplates"; import { CreateTemplateGalleryPageView } from "./CreateTemplateGalleryPageView"; diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx index 890bc4af96fb0..3febfa23d9314 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { JobError } from "api/queries/templates"; import { MockProvisionerJob, MockTemplateVersion, MockWorkspaceBuildLogs, } from "testHelpers/entities"; import { withWebSocket } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { JobError } from "api/queries/templates"; import { BuildLogsDrawer } from "./BuildLogsDrawer"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx index a9dfd6de3b4c4..17167ef79fdb7 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx @@ -1,10 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { - getProvisionerDaemonsKey, - organizationsKey, -} from "api/queries/organizations"; -import { action } from "storybook/actions"; -import { screen, userEvent } from "storybook/test"; import { MockDefaultOrganization, MockOrganization2, @@ -16,6 +9,13 @@ import { MockTemplateVersionVariable4, MockTemplateVersionVariable5, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { + getProvisionerDaemonsKey, + organizationsKey, +} from "api/queries/organizations"; +import { action } from "storybook/actions"; +import { screen, userEvent } from "storybook/test"; import { CreateTemplateForm } from "./CreateTemplateForm"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index ba5a76f6b4e2f..ddd967554134b 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -38,9 +38,9 @@ import { onChangeTrimmed, } from "utils/formUtils"; import { + sortedDays, type TemplateAutostartRequirementDaysValue, type TemplateAutostopRequirementDaysValue, - sortedDays, } from "utils/schedule"; import * as Yup from "yup"; import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx b/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx index 2677f67d8df10..e403eab8bcb24 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx @@ -1,6 +1,3 @@ -import { fireEvent, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockTemplate, MockTemplateExample, @@ -11,6 +8,9 @@ import { mockApiError, } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import { fireEvent, screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import CreateTemplatePage from "./CreateTemplatePage"; const renderPage = async (searchParams: URLSearchParams) => { diff --git a/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx b/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx index f4b37209609fc..af71c1686e40d 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx @@ -10,8 +10,8 @@ import { pageTitle } from "utils/page"; import { BuildLogsDrawer } from "./BuildLogsDrawer"; import { DuplicateTemplateView } from "./DuplicateTemplateView"; import { ImportStarterTemplateView } from "./ImportStarterTemplateView"; -import { UploadTemplateView } from "./UploadTemplateView"; import type { CreateTemplatePageViewProps } from "./types"; +import { UploadTemplateView } from "./UploadTemplateView"; const CreateTemplatePage: FC = () => { const navigate = useNavigate(); diff --git a/site/src/pages/CreateTokenPage/CreateTokenForm.tsx b/site/src/pages/CreateTokenPage/CreateTokenForm.tsx index 117994ff8489a..be8fd4614f20f 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenForm.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenForm.tsx @@ -18,10 +18,10 @@ import { useNavigate } from "react-router"; import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; import { type CreateTokenData, - NANO_HOUR, customLifetimeDay, determineDefaultLtValue, filterByMaxTokenLifetime, + NANO_HOUR, } from "./utils"; dayjs.extend(utc); diff --git a/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx b/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx index 59bda3d458014..042b09bf24dff 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx @@ -1,10 +1,10 @@ -import { screen, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import CreateTokenPage from "./CreateTokenPage"; describe("TokenPage", () => { diff --git a/site/src/pages/CreateTokenPage/utils.test.tsx b/site/src/pages/CreateTokenPage/utils.test.tsx index a8cfbbd855e96..b09e72a812f7d 100644 --- a/site/src/pages/CreateTokenPage/utils.test.tsx +++ b/site/src/pages/CreateTokenPage/utils.test.tsx @@ -1,9 +1,9 @@ import { - type LifetimeDay, - NANO_HOUR, determineDefaultLtValue, filterByMaxTokenLifetime, + type LifetimeDay, lifetimeDayPresets, + NANO_HOUR, } from "./utils"; describe("unit/CreateTokenForm", () => { diff --git a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx index 2ceb599529a3e..d112fbae47966 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx @@ -1,13 +1,13 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { organizationsKey } from "api/queries/organizations"; -import type { Organization } from "api/typesGenerated"; -import { action } from "storybook/actions"; -import { userEvent, within } from "storybook/test"; import { MockOrganization, MockOrganization2, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { organizationsKey } from "api/queries/organizations"; +import type { Organization } from "api/typesGenerated"; +import { action } from "storybook/actions"; +import { userEvent, within } from "storybook/test"; import { CreateUserForm } from "./CreateUserForm"; const meta: Meta = { diff --git a/site/src/pages/CreateUserPage/CreateUserPage.test.tsx b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx index b1044630d798b..271376b3a28a8 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.test.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx @@ -1,9 +1,9 @@ -import { fireEvent, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { fireEvent, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import CreateUserPage from "./CreateUserPage"; import { Language as FormLanguage } from "./Language"; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.test.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.test.tsx index 868aa85c751bd..5199854cface6 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.test.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.test.tsx @@ -1,6 +1,3 @@ -import { fireEvent, screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockTemplate, MockTemplateVersionExternalAuthGithub, @@ -18,6 +15,9 @@ import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { fireEvent, screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import CreateWorkspacePage from "./CreateWorkspacePage"; import { Language } from "./CreateWorkspacePageView"; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageExperimental.test.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageExperimental.test.tsx index b20026472d701..b60c3ca3e7c7f 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageExperimental.test.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageExperimental.test.tsx @@ -1,7 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import type { DynamicParametersResponse } from "api/typesGenerated"; import { MockDropdownParameter, MockDynamicParametersResponse, @@ -20,6 +16,10 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { createMockWebSocket } from "testHelpers/websockets"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import type { DynamicParametersResponse } from "api/typesGenerated"; import CreateWorkspacePageExperimental from "./CreateWorkspacePageExperimental"; describe("CreateWorkspacePageExperimental", () => { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index 956ee72f2ee83..0440634ba282b 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -1,8 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { action } from "storybook/actions"; -import { expect, screen, waitFor } from "storybook/test"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplate, @@ -13,6 +8,11 @@ import { mockApiError, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { action } from "storybook/actions"; +import { expect, screen, waitFor } from "storybook/test"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; const meta: Meta = { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.stories.tsx index 214ac58d80697..5faf991b876f1 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { DetailedError } from "api/errors"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplate, MockUserOwner } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { DetailedError } from "api/errors"; import { CreateWorkspacePageViewExperimental } from "./CreateWorkspacePageViewExperimental"; const meta: Meta = { diff --git a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx index 4e24d2d478c60..b4125ac999b2c 100644 --- a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { SelectedTemplate } from "./SelectedTemplate"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx index 4988f95ea7cc2..010c7a999e98f 100644 --- a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx @@ -7,17 +7,17 @@ import { PremiumBadge, } from "components/Badges/Badges"; import { Button } from "components/Button/Button"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "components/deprecated/Popover/Popover"; import { PopoverPaywall } from "components/Paywall/PopoverPaywall"; import { SettingsHeader, SettingsHeaderDescription, SettingsHeaderTitle, } from "components/SettingsHeader/SettingsHeader"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/deprecated/Popover/Popover"; import { useFormik } from "formik"; import type { FC } from "react"; import { getFormHelpers } from "utils/formUtils"; diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx index fea284ca4e666..8257e658ae8e8 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx @@ -1,6 +1,6 @@ +import { MockOrganizationSyncSettings } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; -import { MockOrganizationSyncSettings } from "testHelpers/entities"; import { ExportPolicyButton } from "./ExportPolicyButton"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx index fcbbedc4f7265..38a76a5f3d43d 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx @@ -5,8 +5,7 @@ import { patchOrganizationSyncSettings, } from "api/queries/idpsync"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; -import { displayError } from "components/GlobalSnackbar/utils"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { Link } from "components/Link/Link"; import { Loader } from "components/Loader/Loader"; import { Paywall } from "components/Paywall/Paywall"; diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx index b28cd7ef3a3d4..148e061028284 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent, within } from "storybook/test"; import { MockOrganization, MockOrganization2, @@ -7,6 +5,8 @@ import { MockOrganizationSyncSettings2, MockOrganizationSyncSettingsEmpty, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, within } from "storybook/test"; import { IdpOrgSyncPageView } from "./IdpOrgSyncPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/OrganizationPills.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/OrganizationPills.tsx index 9e26368e9c2cb..030e3889cac41 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/OrganizationPills.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/OrganizationPills.tsx @@ -1,10 +1,10 @@ import { useTheme } from "@emotion/react"; -import { Pill } from "components/Pill/Pill"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { Pill } from "components/Pill/Pill"; import type { FC } from "react"; import { cn } from "utils/cn"; import { isUUID } from "utils/uuid"; diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx index 6a172b701e66d..59f1182ac7c00 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx @@ -1,6 +1,6 @@ -import { screen } from "@testing-library/react"; import { MockLicenseResponse } from "testHelpers/entities"; import { render } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; import { LicenseCard } from "./LicenseCard"; describe("LicenseCard", () => { diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx index 353a076463ad3..1b1a93605c676 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx @@ -1,9 +1,9 @@ +import { MockNotificationTemplates } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { selectTemplatesByGroup } from "api/queries/notifications"; import type { DeploymentValues } from "api/typesGenerated"; import { spyOn, userEvent, within } from "storybook/test"; -import { MockNotificationTemplates } from "testHelpers/entities"; import { NotificationEvents } from "./NotificationEvents"; import { baseMeta } from "./storybookUtils"; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx index 38c36fc52c044..32f4d56ed9909 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx @@ -18,10 +18,10 @@ import { Alert } from "components/Alert/Alert"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { Stack } from "components/Stack/Stack"; import { - type NotificationMethod, castNotificationMethod, methodIcons, methodLabels, + type NotificationMethod, } from "modules/notifications/utils"; import { type FC, Fragment } from "react"; import { useMutation, useQueryClient } from "react-query"; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx index 538e3e80d93a4..e35348e027e56 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx @@ -1,13 +1,13 @@ +import { + MockNotificationMethodsResponse, + MockNotificationTemplates, +} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { notificationDispatchMethodsKey, systemNotificationTemplatesKey, } from "api/queries/notifications"; import { userEvent, within } from "storybook/test"; -import { - MockNotificationMethodsResponse, - MockNotificationTemplates, -} from "testHelpers/entities"; import NotificationsPage from "./NotificationsPage"; import { baseMeta } from "./storybookUtils"; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/Troubleshooting.stories.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/Troubleshooting.stories.tsx index 4acd43e8064a7..a2afce8d7f900 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/Troubleshooting.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/Troubleshooting.stories.tsx @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { spyOn, userEvent, within } from "storybook/test"; -import { Troubleshooting } from "./Troubleshooting"; import { baseMeta } from "./storybookUtils"; +import { Troubleshooting } from "./Troubleshooting"; const meta: Meta = { title: "pages/DeploymentSettingsPage/NotificationsPage/Troubleshooting", diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts index bf4845a47e904..b1c61bc95eae1 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts @@ -1,9 +1,3 @@ -import type { Meta } from "@storybook/react-vite"; -import { - notificationDispatchMethodsKey, - systemNotificationTemplatesKey, -} from "api/queries/notifications"; -import type { DeploymentValues, SerpentOption } from "api/typesGenerated"; import { MockNotificationMethodsResponse, MockNotificationTemplates, @@ -15,6 +9,12 @@ import { withGlobalSnackbar, withOrganizationSettingsProvider, } from "testHelpers/storybook"; +import type { Meta } from "@storybook/react-vite"; +import { + notificationDispatchMethodsKey, + systemNotificationTemplatesKey, +} from "api/queries/notifications"; +import type { DeploymentValues, SerpentOption } from "api/typesGenerated"; import type NotificationsPage from "./NotificationsPage"; // Extracted from a real API response diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx index d39cf5c4c442c..f97754143b61b 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { CreateOAuth2AppPageView } from "./CreateOAuth2AppPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.stories.tsx index 923e482e06c70..e5ac1f394649e 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.stories.tsx @@ -1,9 +1,9 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockOAuth2ProviderAppSecrets, MockOAuth2ProviderApps, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { EditOAuth2AppPageView } from "./EditOAuth2AppPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx index 36aebfb57a5bd..8b18d462e794c 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx @@ -23,8 +23,7 @@ import { import { Spinner } from "components/Spinner/Spinner"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; -import { CopyIcon } from "lucide-react"; -import { ChevronLeftIcon } from "lucide-react"; +import { ChevronLeftIcon, CopyIcon } from "lucide-react"; import { type FC, useState } from "react"; import { Link as RouterLink, useSearchParams } from "react-router"; import { createDayString } from "utils/createDayString"; diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx index 2aa01386b5ee9..e399044ee8236 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockOAuth2ProviderApps } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import OAuth2AppsSettingsPageView from "./OAuth2AppsSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx index 54fbdc67c0b2b..9db293958dcf3 100644 --- a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx @@ -4,6 +4,11 @@ import { EnterpriseBadge, PremiumBadge, } from "components/Badges/Badges"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "components/deprecated/Popover/Popover"; import { PopoverPaywall } from "components/Paywall/PopoverPaywall"; import { SettingsHeader, @@ -12,11 +17,6 @@ import { SettingsHeaderTitle, } from "components/SettingsHeader/SettingsHeader"; import { Stack } from "components/Stack/Stack"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/deprecated/Popover/Popover"; import type { FC } from "react"; import { deploymentGroupHasParent } from "utils/deployOptions"; import { docs } from "utils/docs"; diff --git a/site/src/pages/DeploymentSettingsPage/Option.tsx b/site/src/pages/DeploymentSettingsPage/Option.tsx index a52db293610d7..3f2d848509a46 100644 --- a/site/src/pages/DeploymentSettingsPage/Option.tsx +++ b/site/src/pages/DeploymentSettingsPage/Option.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css, useTheme } from "@emotion/react"; +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import BuildCircleOutlinedIcon from "@mui/icons-material/BuildCircleOutlined"; import { DisabledBadge, EnabledBadge } from "components/Badges/Badges"; import type { FC, HTMLAttributes, PropsWithChildren } from "react"; diff --git a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx index 7c770aca02e9a..b77d69a485ef3 100644 --- a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockDeploymentDAUResponse } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { OverviewPageView } from "./OverviewPageView"; const meta: Meta = { diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx index 639fc4a4d0bdd..f99328ad72cf3 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx @@ -8,8 +8,7 @@ import { Avatar } from "components/Avatar/Avatar"; import { GitDeviceAuth } from "components/GitDeviceAuth/GitDeviceAuth"; import { SignInLayout } from "components/SignInLayout/SignInLayout"; import { Welcome } from "components/Welcome/Welcome"; -import { ExternalLinkIcon } from "lucide-react"; -import { RotateCwIcon } from "lucide-react"; +import { ExternalLinkIcon, RotateCwIcon } from "lucide-react"; import type { FC, ReactNode } from "react"; interface ExternalAuthPageViewProps { diff --git a/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx b/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx index 5d71884a57038..fe73334930652 100644 --- a/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx +++ b/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx @@ -1,6 +1,6 @@ +import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/test"; -import { mockApiError } from "testHelpers/entities"; import { CreateGroupPageView } from "./CreateGroupPageView"; const meta: Meta = { diff --git a/site/src/pages/GroupsPage/GroupPage.stories.tsx b/site/src/pages/GroupsPage/GroupPage.stories.tsx index d834caee90630..4367461fcdc99 100644 --- a/site/src/pages/GroupsPage/GroupPage.stories.tsx +++ b/site/src/pages/GroupsPage/GroupPage.stories.tsx @@ -1,15 +1,15 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import { getGroupQueryKey, groupPermissionsKey } from "api/queries/groups"; -import { organizationMembersKey } from "api/queries/organizations"; -import { reactRouterParameters } from "storybook-addon-remix-react-router"; -import { spyOn, userEvent, within } from "storybook/test"; import { MockDefaultOrganization, MockGroup, MockOrganizationMember, MockOrganizationMember2, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import { getGroupQueryKey, groupPermissionsKey } from "api/queries/groups"; +import { organizationMembersKey } from "api/queries/organizations"; +import { spyOn, userEvent, within } from "storybook/test"; +import { reactRouterParameters } from "storybook-addon-remix-react-router"; import GroupPage from "./GroupPage"; const meta: Meta = { diff --git a/site/src/pages/GroupsPage/GroupPage.tsx b/site/src/pages/GroupsPage/GroupPage.tsx index f2a8470b61e33..76d18f46033b8 100644 --- a/site/src/pages/GroupsPage/GroupPage.tsx +++ b/site/src/pages/GroupsPage/GroupPage.tsx @@ -48,9 +48,12 @@ import { TableToolbar, } from "components/TableToolbar/TableToolbar"; import { MemberAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; -import { UserPlusIcon } from "lucide-react"; -import { SettingsIcon } from "lucide-react"; -import { EllipsisVertical, TrashIcon } from "lucide-react"; +import { + EllipsisVertical, + SettingsIcon, + TrashIcon, + UserPlusIcon, +} from "lucide-react"; import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx b/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx index 4673e81a6e27e..fa8a0dc459381 100644 --- a/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx +++ b/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx @@ -1,6 +1,6 @@ +import { MockGroup } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; -import { MockGroup } from "testHelpers/entities"; import GroupSettingsPageView from "./GroupSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/GroupsPage/GroupsPageProvider.tsx b/site/src/pages/GroupsPage/GroupsPageProvider.tsx index 09b59e0a36719..83c11c4ae9c00 100644 --- a/site/src/pages/GroupsPage/GroupsPageProvider.tsx +++ b/site/src/pages/GroupsPage/GroupsPageProvider.tsx @@ -1,6 +1,6 @@ import type { Organization } from "api/typesGenerated"; import { useDashboard } from "modules/dashboard/useDashboard"; -import { type FC, createContext, useContext } from "react"; +import { createContext, type FC, useContext } from "react"; import { Navigate, Outlet, useParams } from "react-router"; const GroupsPageContext = createContext( diff --git a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx index 47c7833a285f7..2f2f659680380 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockGroup } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { GroupsPageView } from "./GroupsPageView"; const meta: Meta = { diff --git a/site/src/pages/HealthPage/AccessURLPage.stories.tsx b/site/src/pages/HealthPage/AccessURLPage.stories.tsx index bd0188beb4a5e..0a620cb9fcf67 100644 --- a/site/src/pages/HealthPage/AccessURLPage.stories.tsx +++ b/site/src/pages/HealthPage/AccessURLPage.stories.tsx @@ -1,7 +1,7 @@ +import { MockHealth } from "testHelpers/entities"; import type { StoryObj } from "@storybook/react-vite"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; import type { HealthcheckReport } from "api/typesGenerated"; -import { MockHealth } from "testHelpers/entities"; import AccessURLPage from "./AccessURLPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/Content.tsx b/site/src/pages/HealthPage/Content.tsx index 74cbc9a5b87c1..b3e39343c1e02 100644 --- a/site/src/pages/HealthPage/Content.tsx +++ b/site/src/pages/HealthPage/Content.tsx @@ -2,15 +2,18 @@ import { css } from "@emotion/css"; import { useTheme } from "@emotion/react"; import Link from "@mui/material/Link"; import type { HealthCode, HealthSeverity } from "api/typesGenerated"; -import { CircleAlertIcon } from "lucide-react"; -import { CircleCheckIcon, CircleMinusIcon } from "lucide-react"; +import { + CircleAlertIcon, + CircleCheckIcon, + CircleMinusIcon, +} from "lucide-react"; import { type ComponentProps, + cloneElement, type FC, + forwardRef, type HTMLAttributes, type ReactElement, - cloneElement, - forwardRef, } from "react"; import { docs } from "utils/docs"; import { healthyColor } from "./healthyColor"; diff --git a/site/src/pages/HealthPage/DERPPage.tsx b/site/src/pages/HealthPage/DERPPage.tsx index b2fdcd698fef1..08b2a121b445f 100644 --- a/site/src/pages/HealthPage/DERPPage.tsx +++ b/site/src/pages/HealthPage/DERPPage.tsx @@ -2,9 +2,9 @@ import { useTheme } from "@emotion/react"; import LocationOnOutlined from "@mui/icons-material/LocationOnOutlined"; import Button from "@mui/material/Button"; import type { + HealthcheckReport, HealthMessage, HealthSeverity, - HealthcheckReport, NetcheckReport, } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; diff --git a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx index cffe0d411e0ba..d7bbe71d28c1c 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockHealth } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import DERPRegionPage from "./DERPRegionPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index 7c84272319d26..1c81196412795 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -3,9 +3,9 @@ import Tooltip from "@mui/material/Tooltip"; import type { DERPNodeReport, DERPRegionReport, + HealthcheckReport, HealthMessage, HealthSeverity, - HealthcheckReport, } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { ChevronLeftIcon, CodeIcon, HashIcon } from "lucide-react"; diff --git a/site/src/pages/HealthPage/WebsocketPage.stories.tsx b/site/src/pages/HealthPage/WebsocketPage.stories.tsx index 0ac53cbce57f2..73b4d5ea241f8 100644 --- a/site/src/pages/HealthPage/WebsocketPage.stories.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.stories.tsx @@ -1,9 +1,9 @@ +import { MockHealth } from "testHelpers/entities"; import type { StoryObj } from "@storybook/react-vite"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; import type { HealthcheckReport } from "api/typesGenerated"; -import { MockHealth } from "testHelpers/entities"; -import WebsocketPage from "./WebsocketPage"; import { generateMeta } from "./storybook"; +import WebsocketPage from "./WebsocketPage"; const meta = { title: "pages/Health/Websocket", diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx index 2b60624dc7f1a..7de80154fa7aa 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx @@ -1,9 +1,9 @@ +import { MockHealth } from "testHelpers/entities"; import type { StoryObj } from "@storybook/react-vite"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; import type { HealthcheckReport } from "api/typesGenerated"; -import { MockHealth } from "testHelpers/entities"; -import WorkspaceProxyPage from "./WorkspaceProxyPage"; import { generateMeta } from "./storybook"; +import WorkspaceProxyPage from "./WorkspaceProxyPage"; const meta = { title: "pages/Health/WorkspaceProxy", diff --git a/site/src/pages/HealthPage/storybook.tsx b/site/src/pages/HealthPage/storybook.tsx index 037f33ffd69f6..aa327297e12de 100644 --- a/site/src/pages/HealthPage/storybook.tsx +++ b/site/src/pages/HealthPage/storybook.tsx @@ -1,10 +1,3 @@ -import type { Meta } from "@storybook/react-vite"; -import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; -import { - type RouteDefinition, - reactRouterOutlet, - reactRouterParameters, -} from "storybook-addon-remix-react-router"; import { chromatic } from "testHelpers/chromatic"; import { MockAppearanceConfig, @@ -15,6 +8,13 @@ import { MockHealthSettings, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta } from "@storybook/react-vite"; +import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; +import { + type RouteDefinition, + reactRouterOutlet, + reactRouterParameters, +} from "storybook-addon-remix-react-router"; import { HealthLayout } from "./HealthLayout"; type MetaOptions = { diff --git a/site/src/pages/IconsPage/IconsPage.stories.tsx b/site/src/pages/IconsPage/IconsPage.stories.tsx index e2827e0564e92..7fdb66d4a252b 100644 --- a/site/src/pages/IconsPage/IconsPage.stories.tsx +++ b/site/src/pages/IconsPage/IconsPage.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import IconsPage from "./IconsPage"; const meta: Meta = { diff --git a/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx b/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx index 6cd8f4f549ba7..7b06ef4b23a95 100644 --- a/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx +++ b/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx @@ -10,8 +10,8 @@ import { } from "components/GitDeviceAuth/GitDeviceAuth"; import { SignInLayout } from "components/SignInLayout/SignInLayout"; import { Welcome } from "components/Welcome/Welcome"; -import { useEffect, useMemo } from "react"; import type { FC } from "react"; +import { useEffect, useMemo } from "react"; import { useQuery } from "react-query"; import { useSearchParams } from "react-router"; import LoginOAuthDevicePageView from "./LoginOAuthDevicePageView"; diff --git a/site/src/pages/LoginPage/LoginPage.test.tsx b/site/src/pages/LoginPage/LoginPage.test.tsx index 4e763c447433e..f43578aecf5ca 100644 --- a/site/src/pages/LoginPage/LoginPage.test.tsx +++ b/site/src/pages/LoginPage/LoginPage.test.tsx @@ -1,13 +1,13 @@ -import { fireEvent, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { http, HttpResponse } from "msw"; -import { createMemoryRouter } from "react-router"; import { render, renderWithRouter, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { fireEvent, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; +import { createMemoryRouter } from "react-router"; import { Language } from "./Language"; import LoginPage from "./LoginPage"; diff --git a/site/src/pages/LoginPage/LoginPageView.stories.tsx b/site/src/pages/LoginPage/LoginPageView.stories.tsx index ba3c6fedba7c2..f4cb1eb0b070e 100644 --- a/site/src/pages/LoginPage/LoginPageView.stories.tsx +++ b/site/src/pages/LoginPage/LoginPageView.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockAuthMethodsAll, MockAuthMethodsExternal, @@ -7,6 +6,7 @@ import { MockBuildInfo, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { LoginPageView } from "./LoginPageView"; const meta: Meta = { diff --git a/site/src/pages/LoginPage/SignInForm.stories.tsx b/site/src/pages/LoginPage/SignInForm.stories.tsx index 67c18e240d22f..f839af4e2a094 100644 --- a/site/src/pages/LoginPage/SignInForm.stories.tsx +++ b/site/src/pages/LoginPage/SignInForm.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { SignInForm } from "./SignInForm"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx index 79533ec9a120d..a9657cd93de8d 100644 --- a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { CreateOrganizationPageView } from "./CreateOrganizationPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.tsx b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.tsx index ab2c15186b86a..2b1902646fb34 100644 --- a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.tsx +++ b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.tsx @@ -5,20 +5,19 @@ import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Badges, PremiumBadge } from "components/Badges/Badges"; import { Button } from "components/Button/Button"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; -import { IconField } from "components/IconField/IconField"; -import { Paywall } from "components/Paywall/Paywall"; -import { PopoverPaywall } from "components/Paywall/PopoverPaywall"; -import { Spinner } from "components/Spinner/Spinner"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { IconField } from "components/IconField/IconField"; +import { Paywall } from "components/Paywall/Paywall"; +import { PopoverPaywall } from "components/Paywall/PopoverPaywall"; +import { Spinner } from "components/Spinner/Spinner"; import { useFormik } from "formik"; import { ArrowLeft } from "lucide-react"; import type { FC } from "react"; -import { useNavigate } from "react-router"; -import { Link } from "react-router"; +import { Link, useNavigate } from "react-router"; import { docs } from "utils/docs"; import { displayNameValidator, diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx index a6ceb5cf56efc..01d9150a6a276 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent, within } from "storybook/test"; import { + assignableRole, MockRole2WithOrgPermissions, MockRoleWithOrgPermissions, - assignableRole, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, within } from "storybook/test"; import CreateEditRolePageView from "./CreateEditRolePageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx index f4706d822f115..7f02cb4f48fc1 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx @@ -1,8 +1,8 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockOrganizationAuditorRole, MockRoleWithOrgPermissions, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { CustomRolesPageView } from "./CustomRolesPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.stories.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.stories.tsx index 3da3b25c768b3..57a4aab1fc0e2 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.stories.tsx @@ -1,6 +1,6 @@ +import { MockRoleWithOrgPermissions } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/test"; -import { MockRoleWithOrgPermissions } from "testHelpers/entities"; import { PermissionPillsList } from "./PermissionPillsList"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.tsx index 8a456460481ba..11071e0dab164 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/PermissionPillsList.tsx @@ -1,12 +1,12 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Stack from "@mui/material/Stack"; import type { Permission } from "api/typesGenerated"; -import { Pill } from "components/Pill/Pill"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { Pill } from "components/Pill/Pill"; import type { FC } from "react"; function getUniqueResourceTypes(jsonObject: readonly Permission[]) { diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/ExportPolicyButton.stories.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/ExportPolicyButton.stories.tsx index 978776593f23b..a55588afc096f 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/ExportPolicyButton.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/ExportPolicyButton.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { MockGroupSyncSettings, MockOrganization, MockRoleSyncSettings, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { ExportPolicyButton } from "./ExportPolicyButton"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpPillList.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpPillList.tsx index 3a5c603fa3e64..877ba6c9a205a 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpPillList.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpPillList.tsx @@ -1,11 +1,11 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Stack from "@mui/material/Stack"; -import { Pill } from "components/Pill/Pill"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { Pill } from "components/Pill/Pill"; import type { FC } from "react"; import { isUUID } from "utils/uuid"; diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx index 815971c16fe73..c97793d7addf1 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx @@ -10,8 +10,7 @@ import { import { organizationRoles } from "api/queries/roles"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { EmptyState } from "components/EmptyState/EmptyState"; -import { displayError } from "components/GlobalSnackbar/utils"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { Link } from "components/Link/Link"; import { Paywall } from "components/Paywall/Paywall"; import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx index a38a56c790b71..b2eb64ab4eec5 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent } from "storybook/test"; import { MockGroup, MockGroup2, @@ -9,6 +7,8 @@ import { MockOrganization, MockRoleSyncSettings, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent } from "storybook/test"; import IdpSyncPageView from "./IdpSyncPageView"; const groupsMap = new Map(); diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx index 4c90a21659ee2..713bc7e98d9d7 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx @@ -1,7 +1,3 @@ -import { fireEvent, screen, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import type { SlimRole } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; import { MockEntitlementsWithMultiOrg, MockOrganization, @@ -14,6 +10,10 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { fireEvent, screen, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import type { SlimRole } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; import OrganizationMembersPage from "./OrganizationMembersPage"; jest.spyOn(console, "error").mockImplementation(() => {}); diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx index e8d50e3672f5a..9cf02a22f1b9e 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import { MockOrganizationMember, MockOrganizationMember2, MockUserOwner, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import { OrganizationMembersPageView } from "./OrganizationMembersPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx index 9270e27e3d9c6..7f8ed8e92ea17 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx @@ -34,8 +34,7 @@ import { } from "components/Table/Table"; import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; import type { PaginationResultInfo } from "hooks/usePaginatedQuery"; -import { UserPlusIcon } from "lucide-react"; -import { EllipsisVertical, TriangleAlert } from "lucide-react"; +import { EllipsisVertical, TriangleAlert, UserPlusIcon } from "lucide-react"; import { UserGroupsCell } from "pages/UsersPage/UsersTable/UserGroupsCell"; import { type FC, useState } from "react"; import { TableColumnHelpTooltip } from "./UserTable/TableColumnHelpTooltip"; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx index a9ad6448c3994..e42d653e1eaee 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx @@ -1,6 +1,6 @@ +import { MockProvisionerJob } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, waitFor, within } from "storybook/test"; -import { MockProvisionerJob } from "testHelpers/entities"; import { CancelJobButton } from "./CancelJobButton"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobConfirmationDialog.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobConfirmationDialog.stories.tsx index ec3563c131f09..82c49511a105d 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobConfirmationDialog.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobConfirmationDialog.stories.tsx @@ -1,8 +1,8 @@ +import { MockProvisionerJob } from "testHelpers/entities"; +import { withGlobalSnackbar } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { Response } from "api/typesGenerated"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; -import { MockProvisionerJob } from "testHelpers/entities"; -import { withGlobalSnackbar } from "testHelpers/storybook"; import { CancelJobConfirmationDialog } from "./CancelJobConfirmationDialog"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx index eea806e47c960..0a611982442b5 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx @@ -1,7 +1,7 @@ +import { MockProvisionerJob } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Table, TableBody } from "components/Table/Table"; import { expect, userEvent, within } from "storybook/test"; -import { MockProvisionerJob } from "testHelpers/entities"; import { daysAgo } from "utils/time"; import { JobRow } from "./JobRow"; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx index 4b39e379348e9..c47096be87317 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx @@ -1,8 +1,8 @@ +import { MockOrganization, MockProvisionerJob } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { ProvisionerJob } from "api/typesGenerated"; import { useState } from "react"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; -import { MockOrganization, MockProvisionerJob } from "testHelpers/entities"; import { daysAgo } from "utils/time"; import OrganizationProvisionerJobsPageView from "./OrganizationProvisionerJobsPageView"; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx index 0401e30dd920a..df5548511ba04 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx @@ -1,3 +1,8 @@ +import { + MockProvisioner, + MockProvisionerKey, + mockApiError, +} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { type ProvisionerKeyDaemons, @@ -5,11 +10,6 @@ import { ProvisionerKeyIDPSK, ProvisionerKeyIDUserAuth, } from "api/typesGenerated"; -import { - MockProvisioner, - MockProvisionerKey, - mockApiError, -} from "testHelpers/entities"; import { OrganizationProvisionerKeysPageView } from "./OrganizationProvisionerKeysPageView"; const mockProvisionerKeyDaemons: ProvisionerKeyDaemons[] = [ diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx index 2bab4f262cfe2..d1bcd7fbcb816 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockBuildInfo, MockProvisioner, @@ -6,6 +5,7 @@ import { MockUserProvisioner, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { OrganizationProvisionersPageView } from "./OrganizationProvisionersPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.stories.tsx index 2781839d1f94b..a0c777f4ba606 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.stories.tsx @@ -1,7 +1,7 @@ +import { MockBuildInfo, MockProvisioner } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Table, TableBody } from "components/Table/Table"; import { expect, userEvent, within } from "storybook/test"; -import { MockBuildInfo, MockProvisioner } from "testHelpers/entities"; import { ProvisionerRow } from "./ProvisionerRow"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx index 5cb681e8054cd..43c872aa55e48 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx @@ -1,6 +1,6 @@ +import { MockBuildInfo, MockProvisioner } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, within } from "storybook/test"; -import { MockBuildInfo, MockProvisioner } from "testHelpers/entities"; import { ProvisionerVersion } from "./ProvisionerVersion"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx index 70da9ad445b23..18c0eed0c2e0b 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx @@ -1,5 +1,3 @@ -import { screen } from "@testing-library/react"; -import { http, HttpResponse } from "msw"; import { MockDefaultOrganization, MockEntitlementsWithMultiOrg, @@ -10,6 +8,8 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen } from "@testing-library/react"; +import { HttpResponse, http } from "msw"; import OrganizationRedirect from "./OrganizationRedirect"; jest.spyOn(console, "error").mockImplementation(() => {}); diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx index d417ac6343ff6..60cf4789d08be 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx @@ -4,8 +4,7 @@ import { updateOrganization, } from "api/queries/organizations"; import { EmptyState } from "components/EmptyState/EmptyState"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; -import { displayError } from "components/GlobalSnackbar/utils"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx index b47a2a4246971..fc3cf3767dc2b 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx @@ -1,9 +1,9 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockDefaultOrganization, MockOrganization, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { OrganizationSettingsPageView } from "./OrganizationSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx index ad94f80434199..7b6b29c4cca3d 100644 --- a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; import { MockOwnerRole, MockSiteRoles, @@ -7,6 +5,8 @@ import { MockWorkspaceCreationBanRole, } from "testHelpers/entities"; import { withDesktopViewport } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { EditRolesButton } from "./EditRolesButton"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx index f409b09724d86..fd8c9e8eafb06 100644 --- a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx +++ b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx @@ -3,6 +3,11 @@ import Tooltip from "@mui/material/Tooltip"; import type { SlimRole } from "api/typesGenerated"; import { Button } from "components/Button/Button"; import { CollapsibleSummary } from "components/CollapsibleSummary/CollapsibleSummary"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "components/deprecated/Popover/Popover"; import { HelpTooltip, HelpTooltipContent, @@ -11,11 +16,6 @@ import { HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; import { EditSquare } from "components/Icons/EditSquare"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/deprecated/Popover/Popover"; import { UserIcon } from "lucide-react"; import { type FC, useEffect, useState } from "react"; diff --git a/site/src/pages/OrganizationSettingsPage/UserTable/UserRoleCell.tsx b/site/src/pages/OrganizationSettingsPage/UserTable/UserRoleCell.tsx index 4c350f6ffb5be..0261d81e3f578 100644 --- a/site/src/pages/OrganizationSettingsPage/UserTable/UserRoleCell.tsx +++ b/site/src/pages/OrganizationSettingsPage/UserTable/UserRoleCell.tsx @@ -16,13 +16,13 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; import type { LoginType, SlimRole } from "api/typesGenerated"; -import { Pill } from "components/Pill/Pill"; -import { TableCell } from "components/Table/Table"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { Pill } from "components/Pill/Pill"; +import { TableCell } from "components/Table/Table"; import type { FC } from "react"; import { EditRolesButton } from "./EditRolesButton"; diff --git a/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx b/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx index c2442638b03fd..359f7df66579c 100644 --- a/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx +++ b/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx @@ -1,8 +1,8 @@ +import { mockApiError } from "testHelpers/entities"; +import { withGlobalSnackbar } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { spyOn, userEvent, within } from "storybook/test"; -import { mockApiError } from "testHelpers/entities"; -import { withGlobalSnackbar } from "testHelpers/storybook"; import ChangePasswordPage from "./ChangePasswordPage"; const meta: Meta = { diff --git a/site/src/pages/ResetPasswordPage/RequestOTPPage.stories.tsx b/site/src/pages/ResetPasswordPage/RequestOTPPage.stories.tsx index 9c62be022152e..130d6013ceacc 100644 --- a/site/src/pages/ResetPasswordPage/RequestOTPPage.stories.tsx +++ b/site/src/pages/ResetPasswordPage/RequestOTPPage.stories.tsx @@ -1,8 +1,8 @@ +import { mockApiError } from "testHelpers/entities"; +import { withGlobalSnackbar } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { spyOn, userEvent, within } from "storybook/test"; -import { mockApiError } from "testHelpers/entities"; -import { withGlobalSnackbar } from "testHelpers/storybook"; import RequestOTPPage from "./RequestOTPPage"; const meta: Meta = { diff --git a/site/src/pages/SetupPage/SetupPage.test.tsx b/site/src/pages/SetupPage/SetupPage.test.tsx index 02d1c53334c81..386720ac5f93d 100644 --- a/site/src/pages/SetupPage/SetupPage.test.tsx +++ b/site/src/pages/SetupPage/SetupPage.test.tsx @@ -1,14 +1,14 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import type { Response, User } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; -import { createMemoryRouter } from "react-router"; import { MockBuildInfo, MockUserOwner } from "testHelpers/entities"; import { renderWithRouter, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import type { Response, User } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; +import { createMemoryRouter } from "react-router"; import { SetupPage } from "./SetupPage"; import { Language as PageViewLanguage } from "./SetupPageView"; diff --git a/site/src/pages/SetupPage/SetupPageView.stories.tsx b/site/src/pages/SetupPage/SetupPageView.stories.tsx index 371a3c035cef7..ce6b9ce8c3394 100644 --- a/site/src/pages/SetupPage/SetupPageView.stories.tsx +++ b/site/src/pages/SetupPage/SetupPageView.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { SetupPageView } from "./SetupPageView"; const meta: Meta = { diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx index b214e8796cf71..3c35efdc2686b 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplateExample, mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { StarterTemplatePageView } from "./StarterTemplatePageView"; const meta: Meta = { diff --git a/site/src/pages/TaskPage/TaskApps.stories.tsx b/site/src/pages/TaskPage/TaskApps.stories.tsx index d4c92f8ab1883..3447c1c68035c 100644 --- a/site/src/pages/TaskPage/TaskApps.stories.tsx +++ b/site/src/pages/TaskPage/TaskApps.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { WorkspaceApp } from "api/typesGenerated"; import { MockTasks, MockWorkspace, @@ -7,6 +5,8 @@ import { MockWorkspaceApp, } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { WorkspaceApp } from "api/typesGenerated"; import { TaskApps } from "./TaskApps"; const meta: Meta = { diff --git a/site/src/pages/TaskPage/TaskPage.stories.tsx b/site/src/pages/TaskPage/TaskPage.stories.tsx index 16c3641f76bdc..218fa527a23cf 100644 --- a/site/src/pages/TaskPage/TaskPage.stories.tsx +++ b/site/src/pages/TaskPage/TaskPage.stories.tsx @@ -1,11 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import type { - Workspace, - WorkspaceApp, - WorkspaceResource, -} from "api/typesGenerated"; -import { expect, spyOn, within } from "storybook/test"; import { MockFailedWorkspace, MockStartingWorkspace, @@ -19,6 +11,14 @@ import { mockApiError, } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import type { + Workspace, + WorkspaceApp, + WorkspaceResource, +} from "api/typesGenerated"; +import { expect, spyOn, within } from "storybook/test"; import TaskPage, { data, WorkspaceDoesNotHaveAITaskError } from "./TaskPage"; const meta: Meta = { diff --git a/site/src/pages/TaskPage/TaskPage.tsx b/site/src/pages/TaskPage/TaskPage.tsx index 38e645f910caf..b941f373e1965 100644 --- a/site/src/pages/TaskPage/TaskPage.tsx +++ b/site/src/pages/TaskPage/TaskPage.tsx @@ -12,8 +12,7 @@ import type { ReactNode } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { Panel, PanelGroup, PanelResizeHandle } from "react-resizable-panels"; -import { useParams } from "react-router"; -import { Link as RouterLink } from "react-router"; +import { Link as RouterLink, useParams } from "react-router"; import { ellipsizeText } from "utils/ellipsizeText"; import { pageTitle } from "utils/page"; import { diff --git a/site/src/pages/TasksPage/TasksPage.stories.tsx b/site/src/pages/TasksPage/TasksPage.stories.tsx index cfa47d3539fee..a42f1a7a3fede 100644 --- a/site/src/pages/TasksPage/TasksPage.stories.tsx +++ b/site/src/pages/TasksPage/TasksPage.stories.tsx @@ -1,8 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import { MockUsers } from "pages/UsersPage/storybookData/users"; -import { reactRouterParameters } from "storybook-addon-remix-react-router"; -import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { MockAIPromptPresets, MockNewTaskData, @@ -19,6 +14,11 @@ import { withGlobalSnackbar, withProxyProvider, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import { MockUsers } from "pages/UsersPage/storybookData/users"; +import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; +import { reactRouterParameters } from "storybook-addon-remix-react-router"; import TasksPage, { data } from "./TasksPage"; const meta: Meta = { diff --git a/site/src/pages/TasksPage/TasksPage.tsx b/site/src/pages/TasksPage/TasksPage.tsx index 2f6405e796134..0e149f7943a61 100644 --- a/site/src/pages/TasksPage/TasksPage.tsx +++ b/site/src/pages/TasksPage/TasksPage.tsx @@ -1,6 +1,7 @@ import Skeleton from "@mui/material/Skeleton"; import { API } from "api/api"; import { getErrorDetail, getErrorMessage } from "api/errors"; +import { templateVersionPresets } from "api/queries/templates"; import { disabledRefetchOptions } from "api/queries/util"; import type { Preset, @@ -12,6 +13,8 @@ import { Avatar } from "components/Avatar/Avatar"; import { AvatarData } from "components/Avatar/AvatarData"; import { AvatarDataSkeleton } from "components/Avatar/AvatarDataSkeleton"; import { Button } from "components/Button/Button"; +import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { FeatureStageBadge } from "components/FeatureStageBadge/FeatureStageBadge"; import { displayError } from "components/GlobalSnackbar/utils"; import { Link } from "components/Link/Link"; import { Margins } from "components/Margins/Margins"; @@ -40,10 +43,6 @@ import { TableLoaderSkeleton, TableRowSkeleton, } from "components/TableLoader/TableLoader"; - -import { templateVersionPresets } from "api/queries/templates"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { FeatureStageBadge } from "components/FeatureStageBadge/FeatureStageBadge"; import { Tooltip, TooltipContent, @@ -54,8 +53,8 @@ import { useAuthenticated } from "hooks"; import { useExternalAuth } from "hooks/useExternalAuth"; import { RedoIcon, RotateCcwIcon, SendIcon } from "lucide-react"; import { AI_PROMPT_PARAMETER_NAME, type Task } from "modules/tasks/tasks"; -import { WorkspaceAppStatus } from "modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus"; import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; +import { WorkspaceAppStatus } from "modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus"; import { type FC, type ReactNode, useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx index a98e669807f89..abe227a17f053 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx @@ -1,7 +1,3 @@ -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import { TemplateLayout } from "pages/TemplatePage/TemplateLayout"; import { MockTemplate, MockTemplateVersionParameter1 as parameter1, @@ -11,6 +7,10 @@ import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import { TemplateLayout } from "pages/TemplatePage/TemplateLayout"; import TemplateEmbedPage from "./TemplateEmbedPage"; test("Users can fill the parameters and copy the open in coder url", async () => { diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx index 501e044525424..5eac986498491 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockTemplateVersionParameter1, @@ -6,6 +5,7 @@ import { MockTemplateVersionParameter3, MockTemplateVersionParameter4, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateEmbedPageView } from "./TemplateEmbedPage"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx index a4e361f7b40cf..d042cb0e67ed0 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx @@ -1,10 +1,10 @@ -import { render, screen } from "@testing-library/react"; import { AppProviders } from "App"; -import { RequireAuth } from "contexts/auth/RequireAuth"; -import { http, HttpResponse } from "msw"; -import { RouterProvider, createMemoryRouter } from "react-router"; import { MockTemplate } from "testHelpers/entities"; import { server } from "testHelpers/server"; +import { render, screen } from "@testing-library/react"; +import { RequireAuth } from "contexts/auth/RequireAuth"; +import { HttpResponse, http } from "msw"; +import { createMemoryRouter, RouterProvider } from "react-router"; import { TemplateLayout } from "../TemplateLayout"; import TemplateFilesPage from "./TemplateFilesPage"; diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx index 1f27ec7f8412f..3d9fb8120efbf 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx @@ -10,7 +10,7 @@ import { import dayjs from "dayjs"; import { MoveRightIcon } from "lucide-react"; import { type ComponentProps, type FC, useRef, useState } from "react"; -import { DateRangePicker, createStaticRanges } from "react-date-range"; +import { createStaticRanges, DateRangePicker } from "react-date-range"; // The type definition from @types is wrong declare module "react-date-range" { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/IntervalMenu.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/IntervalMenu.tsx index 7f3b11a4069ad..5aa98a7665d19 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/IntervalMenu.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/IntervalMenu.tsx @@ -1,8 +1,7 @@ import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import { Button } from "components/Button/Button"; -import { ChevronDownIcon } from "lucide-react"; -import { CheckIcon } from "lucide-react"; +import { CheckIcon, ChevronDownIcon } from "lucide-react"; import { type FC, useRef, useState } from "react"; const insightsIntervals = { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx index 91b51a6f2826a..37b7b89a4c0b2 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateInsightsPageView } from "./TemplateInsightsPage"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx index 2a0785b4cddef..0c12d96625156 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -59,8 +59,8 @@ import { import { getTemplatePageTitle } from "../utils"; import { DateRange as DailyPicker, type DateRangeValue } from "./DateRange"; import { type InsightsInterval, IntervalMenu } from "./IntervalMenu"; -import { WeekPicker, numberOfWeeksOptions } from "./WeekPicker"; import { lastWeeks } from "./utils"; +import { numberOfWeeksOptions, WeekPicker } from "./WeekPicker"; const DEFAULT_NUMBER_OF_WEEKS = numberOfWeeksOptions[0]; diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx index f2f3e95bf4a68..77ce8475a6de6 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx @@ -2,8 +2,7 @@ import Button from "@mui/material/Button"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import dayjs from "dayjs"; -import { ChevronDownIcon } from "lucide-react"; -import { CheckIcon } from "lucide-react"; +import { CheckIcon, ChevronDownIcon } from "lucide-react"; import { type FC, useRef, useState } from "react"; import type { DateRangeValue } from "./DateRange"; import { lastWeeks } from "./utils"; diff --git a/site/src/pages/TemplatePage/TemplateLayout.tsx b/site/src/pages/TemplatePage/TemplateLayout.tsx index 2a6b60e04615c..c6b9f81945f30 100644 --- a/site/src/pages/TemplatePage/TemplateLayout.tsx +++ b/site/src/pages/TemplatePage/TemplateLayout.tsx @@ -11,10 +11,10 @@ import { workspacePermissionChecks, } from "modules/permissions/workspaces"; import { + createContext, type FC, type PropsWithChildren, Suspense, - createContext, useContext, } from "react"; import { useQuery } from "react-query"; diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx index 7d036cdaaabb2..10063c21a134f 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx @@ -1,6 +1,6 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplatePageHeader } from "./TemplatePageHeader"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index e6d1bb2ad6fae..544321c35e6d4 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -27,8 +27,9 @@ import { } from "components/PageHeader/PageHeader"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; -import { CopyIcon, DownloadIcon } from "lucide-react"; import { + CopyIcon, + DownloadIcon, EllipsisVertical, PlusIcon, SettingsIcon, diff --git a/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx b/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx index dd030e31cc038..4bdc4e5bb2441 100644 --- a/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx +++ b/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx @@ -1,7 +1,7 @@ -import { waitFor } from "@testing-library/react"; -import { API } from "api/api"; import * as M from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import { waitFor } from "@testing-library/react"; +import { API } from "api/api"; import { TemplateRedirectController } from "./TemplateRedirectController"; const renderTemplateRedirectController = (route: string) => { diff --git a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx index a751cfb49e87b..6a88d61bc3827 100644 --- a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx @@ -1,9 +1,9 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockWorkspaceResource, MockWorkspaceVolumeResource, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateResourcesPageView } from "./TemplateResourcesPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateStats.stories.tsx b/site/src/pages/TemplatePage/TemplateStats.stories.tsx index 1b4796e4934a8..d10c797f4c97f 100644 --- a/site/src/pages/TemplatePage/TemplateStats.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateStats.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateStats } from "./TemplateStats"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx index 6227abf52f2ad..3530e9b79606e 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; import { MockCanceledProvisionerJob, MockCancelingProvisionerJob, @@ -8,6 +6,8 @@ import { MockRunningProvisionerJob, MockTemplateVersion, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { VersionsTable } from "./VersionsTable"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/useDeletionDialogState.test.ts b/site/src/pages/TemplatePage/useDeletionDialogState.test.ts index db918b76955c1..5be7910092fc6 100644 --- a/site/src/pages/TemplatePage/useDeletionDialogState.test.ts +++ b/site/src/pages/TemplatePage/useDeletionDialogState.test.ts @@ -1,6 +1,6 @@ +import { MockTemplate } from "testHelpers/entities"; import { act, renderHook, waitFor } from "@testing-library/react"; import { API } from "api/api"; -import { MockTemplate } from "testHelpers/entities"; import { useDeletionDialogState } from "./useDeletionDialogState"; test("delete dialog starts closed", () => { diff --git a/site/src/pages/TemplateSettingsPage/Sidebar.tsx b/site/src/pages/TemplateSettingsPage/Sidebar.tsx index 1aaa426061968..906a40585ca7e 100644 --- a/site/src/pages/TemplateSettingsPage/Sidebar.tsx +++ b/site/src/pages/TemplateSettingsPage/Sidebar.tsx @@ -5,10 +5,12 @@ import { SidebarHeader, SidebarNavItem, } from "components/Sidebar/Sidebar"; -import { CodeIcon as VariablesIcon } from "lucide-react"; -import { TimerIcon as ScheduleIcon } from "lucide-react"; -import { SettingsIcon } from "lucide-react"; -import { LockIcon } from "lucide-react"; +import { + LockIcon, + TimerIcon as ScheduleIcon, + SettingsIcon, + CodeIcon as VariablesIcon, +} from "lucide-react"; import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx index e6c4832138571..2ed53059665bf 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx @@ -1,8 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API, withDefaultFeatures } from "api/api"; -import type { UpdateTemplateMeta } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; import { MockEntitlements, MockTemplate, @@ -13,6 +8,11 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API, withDefaultFeatures } from "api/api"; +import type { UpdateTemplateMeta } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; import { validationSchema } from "./TemplateSettingsForm"; import TemplateSettingsPage from "./TemplateSettingsPage"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx index 12290312bae17..5d65ffaf15c5a 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx @@ -1,6 +1,6 @@ +import { MockTemplate, mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; -import { MockTemplate, mockApiError } from "testHelpers/entities"; import { TemplateSettingsPageView } from "./TemplateSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx index bc7492ecea348..3cd295a948d2c 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplateACL, MockTemplateACLEmpty } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplatePermissionsPageView } from "./TemplatePermissionsPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index c2dc2b5c01bc3..7c250d566927d 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -30,8 +30,7 @@ import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { Spinner } from "components/Spinner/Spinner"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; -import { UserPlusIcon } from "lucide-react"; -import { EllipsisVertical } from "lucide-react"; +import { EllipsisVertical, UserPlusIcon } from "lucide-react"; import { type FC, useState } from "react"; import { getGroupSubtitle } from "utils/groups"; import { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleAutostart.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleAutostart.tsx index d595ab553e334..17d5df873778b 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleAutostart.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleAutostart.tsx @@ -3,8 +3,8 @@ import FormHelperText from "@mui/material/FormHelperText"; import { Stack } from "components/Stack/Stack"; import type { FC } from "react"; import { - type TemplateAutostartRequirementDaysValue, sortedDays, + type TemplateAutostartRequirementDaysValue, } from "utils/schedule"; interface TemplateScheduleAutostartProps { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index c7bdc6d647854..f37ade6e31a75 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -22,15 +22,20 @@ import { type FormikTouched, useFormik } from "formik"; import { type ChangeEvent, type FC, useEffect, useState } from "react"; import { getFormHelpers } from "utils/formUtils"; import { - type TemplateAutostartRequirementDaysValue, calculateAutostopRequirementDaysValue, + type TemplateAutostartRequirementDaysValue, } from "utils/schedule"; import { AutostopRequirementDaysHelperText, AutostopRequirementWeeksHelperText, convertAutostopRequirementDaysValue, } from "./AutostopRequirementHelperText"; +import { + getValidationSchema, + type TemplateScheduleFormValues, +} from "./formHelpers"; import { ScheduleDialog } from "./ScheduleDialog"; +import { TemplateScheduleAutostart } from "./TemplateScheduleAutostart"; import { ActivityBumpHelperText, DefaultTTLHelperText, @@ -38,11 +43,6 @@ import { DormancyTTLHelperText, FailureTTLHelperText, } from "./TTLHelperText"; -import { TemplateScheduleAutostart } from "./TemplateScheduleAutostart"; -import { - type TemplateScheduleFormValues, - getValidationSchema, -} from "./formHelpers"; import { useWorkspacesToBeDeleted, useWorkspacesToGoDormant, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx index 8e020743ed2b4..ee9114f878674 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx @@ -1,6 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockEntitlementsWithScheduling, MockTemplate, @@ -9,11 +6,14 @@ import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import TemplateSchedulePage from "./TemplateSchedulePage"; +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import { - type TemplateScheduleFormValues, getValidationSchema, + type TemplateScheduleFormValues, } from "./formHelpers"; +import TemplateSchedulePage from "./TemplateSchedulePage"; const validFormValues: TemplateScheduleFormValues = { default_ttl_ms: 1, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx index e54d961a7d49e..364fadbd7ee31 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx @@ -1,7 +1,7 @@ +import { MockTemplate } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { QueryClient, QueryClientProvider } from "react-query"; import { action } from "storybook/actions"; -import { MockTemplate } from "testHelpers/entities"; import { TemplateSchedulePageView } from "./TemplateSchedulePageView"; const queryClient = new QueryClient({ diff --git a/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx b/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx index 2236048778301..ad8dc4bdcd132 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx @@ -5,7 +5,7 @@ import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; -import { type FC, Suspense, createContext, useContext } from "react"; +import { createContext, type FC, Suspense, useContext } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { Outlet, useParams } from "react-router"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx index 4a4507d660a32..2f26b64a1f3ad 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx @@ -1,6 +1,3 @@ -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockTemplate, MockTemplateVersion, @@ -12,6 +9,9 @@ import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import { delay } from "utils/delay"; import TemplateVariablesPage from "./TemplateVariablesPage"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx index deb9541b83cc8..b8f6e230904d2 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; import { MockTemplateVersion, MockTemplateVersionVariable1, @@ -9,6 +7,8 @@ import { MockTemplateVersionVariable5, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { TemplateVariablesPageView } from "./TemplateVariablesPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx index 7aadbdebc242b..1d73abd8cb747 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx @@ -1,8 +1,8 @@ +import { chromatic } from "testHelpers/chromatic"; +import { MockTemplateVersion } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { useState } from "react"; import { expect, fn, userEvent, within } from "storybook/test"; -import { chromatic } from "testHelpers/chromatic"; -import { MockTemplateVersion } from "testHelpers/entities"; import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; const meta: Meta = { diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx index 3e8191b0f4817..b268894bbf331 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx @@ -1,13 +1,13 @@ import Link from "@mui/material/Link"; import useTheme from "@mui/system/useTheme"; import type { ProvisionerDaemon } from "api/typesGenerated"; -import { FormSection } from "components/Form/Form"; -import { TopbarButton } from "components/FullPageLayout/Topbar"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { FormSection } from "components/Form/Form"; +import { TopbarButton } from "components/FullPageLayout/Topbar"; import { ChevronDownIcon } from "lucide-react"; import { ProvisionerTagsField } from "modules/provisioners/ProvisionerTagsField"; import type { FC } from "react"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx index bce869ec33a0f..897446db61c6e 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; import { chromatic } from "testHelpers/chromatic"; import { MockFailedProvisionerJob, @@ -17,6 +15,8 @@ import { MockWorkspaceVolumeResource, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { TemplateVersionEditor } from "./TemplateVersionEditor"; const meta: Meta = { diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index 4a0e2b5c5fb60..740f5e42ab7de 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -23,15 +23,22 @@ import { } from "components/FullPageLayout/Topbar"; import { displayError } from "components/GlobalSnackbar/utils"; import { Loader } from "components/Loader/Loader"; -import { TriangleAlertIcon } from "lucide-react"; -import { ChevronLeftIcon } from "lucide-react"; -import { ExternalLinkIcon, PlayIcon, PlusIcon, XIcon } from "lucide-react"; +import { + ChevronLeftIcon, + ExternalLinkIcon, + PlayIcon, + PlusIcon, + TriangleAlertIcon, + XIcon, +} from "lucide-react"; import { linkToTemplate, useLinks } from "modules/navigation"; -import { ProvisionerAlert } from "modules/provisioners/ProvisionerAlert"; -import { AlertVariant } from "modules/provisioners/ProvisionerAlert"; +import { + AlertVariant, + ProvisionerAlert, +} from "modules/provisioners/ProvisionerAlert"; import { ProvisionerStatusAlert } from "modules/provisioners/ProvisionerStatusAlert"; -import { TemplateFileTree } from "modules/templates/TemplateFiles/TemplateFileTree"; import { isBinaryData } from "modules/templates/TemplateFiles/isBinaryData"; +import { TemplateFileTree } from "modules/templates/TemplateFiles/TemplateFileTree"; import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import type { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; @@ -42,9 +49,9 @@ import { } from "react-router"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { - type FileTree, createFile, existsFile, + type FileTree, getFileText, isFolder, moveFile, diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index bf57a3c26b0f4..066433f54138a 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -1,14 +1,4 @@ -import { render, screen, waitFor, within } from "@testing-library/react"; -import userEvent, { type UserEvent } from "@testing-library/user-event"; import { AppProviders } from "App"; -import * as apiModule from "api/api"; -import { templateVersionVariablesKey } from "api/queries/templates"; -import type { TemplateVersion } from "api/typesGenerated"; -import { RequireAuth } from "contexts/auth/RequireAuth"; -import WS from "jest-websocket-mock"; -import { http, HttpResponse } from "msw"; -import { QueryClient } from "react-query"; -import { RouterProvider, createMemoryRouter } from "react-router"; import { MockTemplate, MockTemplateVersion, @@ -22,6 +12,16 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { render, screen, waitFor, within } from "@testing-library/react"; +import userEvent, { type UserEvent } from "@testing-library/user-event"; +import * as apiModule from "api/api"; +import { templateVersionVariablesKey } from "api/queries/templates"; +import type { TemplateVersion } from "api/typesGenerated"; +import { RequireAuth } from "contexts/auth/RequireAuth"; +import WS from "jest-websocket-mock"; +import { HttpResponse, http } from "msw"; +import { QueryClient } from "react-query"; +import { createMemoryRouter, RouterProvider } from "react-router"; import type { FileTree } from "utils/filetree"; import type { MonacoEditorProps } from "./MonacoEditor"; import { Language } from "./PublishTemplateVersionDialog"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index c0a26196c6b85..33a53b5eb352f 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -25,7 +25,7 @@ import { useQueryClient, } from "react-query"; import { useNavigate, useParams, useSearchParams } from "react-router"; -import { type FileTree, existsFile, traverse } from "utils/filetree"; +import { existsFile, type FileTree, traverse } from "utils/filetree"; import { pageTitle } from "utils/page"; import { TarReader, TarWriter } from "utils/tar"; import { createTemplateVersionFileTree } from "utils/templateVersion"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx index bdafbd115a557..5a339fedfdd34 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx @@ -1,7 +1,6 @@ import type { TemplateVersion } from "api/typesGenerated"; import { Pill, PillSpinner } from "components/Pill/Pill"; -import { HourglassIcon } from "lucide-react"; -import { CheckIcon, CircleAlertIcon } from "lucide-react"; +import { CheckIcon, CircleAlertIcon, HourglassIcon } from "lucide-react"; import type { FC, ReactNode } from "react"; import type { ThemeRole } from "theme/roles"; import { getPendingStatusLabel } from "utils/provisionerJob"; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx index ee47b53ff09c0..a737d8c7851dc 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx @@ -1,8 +1,8 @@ -import { screen, within } from "@testing-library/react"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen, within } from "@testing-library/react"; import * as CreateDayString from "utils/createDayString"; import * as templateVersionUtils from "utils/templateVersion"; import TemplateVersionPage from "./TemplateVersionPage"; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index 312b556d5a422..94d6cd593e951 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockTemplateVersion, @@ -6,6 +5,7 @@ import { mockApiError, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TemplateVersionPageView, type TemplateVersionPageViewProps, diff --git a/site/src/pages/TemplatesPage/TemplatesFilter.tsx b/site/src/pages/TemplatesPage/TemplatesFilter.tsx index 59ab5729f787b..f9951dec2cca6 100644 --- a/site/src/pages/TemplatesPage/TemplatesFilter.tsx +++ b/site/src/pages/TemplatesPage/TemplatesFilter.tsx @@ -2,11 +2,11 @@ import { API } from "api/api"; import type { Organization } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Filter, MenuSkeleton, type useFilter } from "components/Filter/Filter"; +import { useFilterMenu } from "components/Filter/menu"; import { SelectFilter, type SelectFilterOption, } from "components/Filter/SelectFilter"; -import { useFilterMenu } from "components/Filter/menu"; import type { FC } from "react"; interface TemplatesFilterProps { diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx index deadabf5fe93f..9d8e55c171ea9 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getDefaultFilterProps } from "components/Filter/storyHelpers"; import { chromaticWithTablet } from "testHelpers/chromatic"; import { MockTemplate, @@ -8,6 +6,8 @@ import { mockApiError, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getDefaultFilterProps } from "components/Filter/storyHelpers"; import { TemplatesPageView } from "./TemplatesPageView"; const meta: Meta = { diff --git a/site/src/pages/TerminalPage/TerminalPage.stories.tsx b/site/src/pages/TerminalPage/TerminalPage.stories.tsx index 3b5e4b509b6b1..2953e7e03a77e 100644 --- a/site/src/pages/TerminalPage/TerminalPage.stories.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.stories.tsx @@ -1,14 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getAuthorizationKey } from "api/queries/authCheck"; -import { workspaceByOwnerAndNameKey } from "api/queries/workspaces"; -import type { Workspace, WorkspaceAgentLifecycle } from "api/typesGenerated"; -import { AuthProvider } from "contexts/auth/AuthProvider"; -import { RequireAuth } from "contexts/auth/RequireAuth"; -import { permissionChecks } from "modules/permissions"; -import { - reactRouterOutlet, - reactRouterParameters, -} from "storybook-addon-remix-react-router"; import { MockAppearanceConfig, MockAuthMethodsAll, @@ -23,6 +12,17 @@ import { MockWorkspaceAgent, } from "testHelpers/entities"; import { withWebSocket } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getAuthorizationKey } from "api/queries/authCheck"; +import { workspaceByOwnerAndNameKey } from "api/queries/workspaces"; +import type { Workspace, WorkspaceAgentLifecycle } from "api/typesGenerated"; +import { AuthProvider } from "contexts/auth/AuthProvider"; +import { RequireAuth } from "contexts/auth/RequireAuth"; +import { permissionChecks } from "modules/permissions"; +import { + reactRouterOutlet, + reactRouterParameters, +} from "storybook-addon-remix-react-router"; import TerminalPage from "./TerminalPage"; const createWorkspaceWithAgent = (lifecycle: WorkspaceAgentLifecycle) => { diff --git a/site/src/pages/TerminalPage/TerminalPage.test.tsx b/site/src/pages/TerminalPage/TerminalPage.test.tsx index 7530a45914a85..3db81a9298d1c 100644 --- a/site/src/pages/TerminalPage/TerminalPage.test.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.test.tsx @@ -1,9 +1,4 @@ import "jest-canvas-mock"; -import { waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import WS from "jest-websocket-mock"; -import { http, HttpResponse } from "msw"; import { MockUserOwner, MockWorkspace, @@ -11,6 +6,11 @@ import { } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import WS from "jest-websocket-mock"; +import { HttpResponse, http } from "msw"; import TerminalPage, { Language } from "./TerminalPage"; const renderTerminal = async ( diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx index a79f814d1abaf..572bfbbc712d7 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AccountForm } from "./AccountForm"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx index f32d83c69507e..1369cc1dc5ef3 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx @@ -1,7 +1,7 @@ -import { screen } from "@testing-library/react"; -import type { UpdateUserProfileRequest } from "api/typesGenerated"; import { MockUserMember } from "testHelpers/entities"; import { render } from "testHelpers/renderHelpers"; +import { screen } from "@testing-library/react"; +import type { UpdateUserProfileRequest } from "api/typesGenerated"; import { AccountForm } from "./AccountForm"; // NOTE: it does not matter what the role props of MockUser are set to, diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx index 23d1fdf5ddeaf..4215e62c44365 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx @@ -1,7 +1,7 @@ -import { fireEvent, screen, waitFor } from "@testing-library/react"; -import { API } from "api/api"; import { mockApiError } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import { fireEvent, screen, waitFor } from "@testing-library/react"; +import { API } from "api/api"; import * as AccountForm from "./AccountForm"; import AccountPage from "./AccountPage"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx index 9bda00adfe1f1..443df4bf0aba1 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockGroup as MockGroup1, MockUserOwner, mockApiError, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { AccountUserGroups } from "./AccountUserGroups"; const MockGroup2 = { diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx index e6c2462acfabc..c130764a8337f 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx @@ -1,8 +1,8 @@ +import { MockUserOwner } from "testHelpers/entities"; +import { renderWithAuth } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { API } from "api/api"; -import { MockUserOwner } from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; import AppearancePage from "./AppearancePage"; describe("appearance page", () => { diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx index 2b25f8e296d49..c91840f6ee9cc 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx @@ -1,5 +1,7 @@ -import { updateAppearanceSettings } from "api/queries/users"; -import { appearanceSettings } from "api/queries/users"; +import { + appearanceSettings, + updateAppearanceSettings, +} from "api/queries/users"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx index 4fc77efebe1c8..b94d51e8433e2 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -1,8 +1,8 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockGithubAuthLink, MockGithubExternalProvider, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { ExternalAuthPageView } from "./ExternalAuthPageView"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx index 2af87e66a7e46..cd93877f600e9 100644 --- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx +++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx @@ -1,12 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { API } from "api/api"; -import { - notificationDispatchMethodsKey, - systemNotificationTemplatesKey, - userNotificationPreferencesKey, -} from "api/queries/notifications"; -import { reactRouterParameters } from "storybook-addon-remix-react-router"; -import { expect, spyOn, userEvent, within } from "storybook/test"; import { MockNotificationMethodsResponse, MockNotificationPreferences, @@ -18,6 +9,15 @@ import { withDashboardProvider, withGlobalSnackbar, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { API } from "api/api"; +import { + notificationDispatchMethodsKey, + systemNotificationTemplatesKey, + userNotificationPreferencesKey, +} from "api/queries/notifications"; +import { expect, spyOn, userEvent, within } from "storybook/test"; +import { reactRouterParameters } from "storybook-addon-remix-react-router"; import NotificationsPage from "./NotificationsPage"; const meta = { diff --git a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx index 4f47064e45355..d9e8e99c076cb 100644 --- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx +++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx @@ -29,8 +29,7 @@ import { methodLabels, } from "modules/notifications/utils"; import type { Permissions } from "modules/permissions"; -import { type FC, Fragment } from "react"; -import { useEffect } from "react"; +import { type FC, Fragment, useEffect } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueries, useQueryClient } from "react-query"; import { useSearchParams } from "react-router"; diff --git a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx index 406bf58ab6239..257ca13851903 100644 --- a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockOAuth2ProviderApps } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import OAuth2ProviderPageView from "./OAuth2ProviderPageView"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx index 57021e8f14907..f4124026ecdfa 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx @@ -1,7 +1,7 @@ -import { fireEvent, screen, within } from "@testing-library/react"; -import { API } from "api/api"; import { MockGitSSHKey, mockApiError } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import { fireEvent, screen, within } from "@testing-library/react"; +import { API } from "api/api"; import SSHKeysPage, { Language as SSHKeysPageLanguage } from "./SSHKeysPage"; describe("SSH keys Page", () => { diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx index f496a6b02c4ad..a46732ee96992 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { SSHKeysPageView } from "./SSHKeysPageView"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx index d91a6e1cf9af9..ca53d69b592a3 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx @@ -1,6 +1,6 @@ +import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; -import { mockApiError } from "testHelpers/entities"; import { ScheduleForm } from "./ScheduleForm"; const defaultArgs = { diff --git a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx index 874dbf3c7fb32..6d63489397a78 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx @@ -1,10 +1,10 @@ -import { fireEvent, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import type { UpdateUserQuietHoursScheduleRequest } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; import { MockUserOwner } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { fireEvent, screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import type { UpdateUserQuietHoursScheduleRequest } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; import SchedulePage from "./SchedulePage"; const fillForm = async ({ diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx index ad075fa985d90..be8a0ccff014c 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { SecurityForm } from "./SecurityForm"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx index b3706fab19327..de8c14253dbe4 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx @@ -1,12 +1,12 @@ -import { fireEvent, screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import type { OAuthConversionResponse } from "api/typesGenerated"; import { MockAuthMethodsAll, mockApiError } from "testHelpers/entities"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { fireEvent, screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import type { OAuthConversionResponse } from "api/typesGenerated"; import { Language } from "./SecurityForm"; import SecurityPage from "./SecurityPage"; import * as SSO from "./SingleSignOnSection"; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx index 624cc4453612b..149c1015b35b7 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx @@ -1,11 +1,11 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import set from "lodash/fp/set"; -import type { ComponentProps } from "react"; -import { action } from "storybook/actions"; import { MockAuthMethodsAll, MockAuthMethodsPasswordOnly, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import set from "lodash/fp/set"; +import type { ComponentProps } from "react"; +import { action } from "storybook/actions"; import { SecurityPageView } from "./SecurityPage"; const defaultArgs: ComponentProps = { diff --git a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx index 161145e2e414a..56ba22c7be381 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx @@ -1,6 +1,6 @@ +import { MockToken } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { QueryClient, QueryClientProvider } from "react-query"; -import { MockToken } from "testHelpers/entities"; import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; const queryClient = new QueryClient({ diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx index 18bc0b4acfa63..9e2918832cd7c 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme, css } from "@emotion/react"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import type { APIKeyWithOwner } from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; @@ -7,8 +7,8 @@ import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; import { Section } from "../Section"; import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; -import { TokensPageView } from "./TokensPageView"; import { useTokensData } from "./hooks"; +import { TokensPageView } from "./TokensPageView"; const cliCreateCommand = "coder tokens create"; diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx index cd84b64976f39..51d4e30e24cb7 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTokens, mockApiError } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { TokensPageView } from "./TokensPageView"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx index da9715f27d4b4..e84f50b922f16 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockHealthyWildWorkspaceProxy, MockPrimaryWorkspaceProxy, @@ -6,6 +5,7 @@ import { MockWorkspaceProxies, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { WorkspaceProxyView } from "./WorkspaceProxyView"; const meta: Meta = { diff --git a/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx b/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx index 37300b6224157..2525cd2bfd5db 100644 --- a/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx +++ b/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockUserOwner } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { ResetPasswordDialog } from "./ResetPasswordDialog"; const meta: Meta = { diff --git a/site/src/pages/UsersPage/UsersFilter.tsx b/site/src/pages/UsersPage/UsersFilter.tsx index fb123c423a2c1..782ba3de504b8 100644 --- a/site/src/pages/UsersPage/UsersFilter.tsx +++ b/site/src/pages/UsersPage/UsersFilter.tsx @@ -1,12 +1,12 @@ import { Filter, MenuSkeleton, type useFilter } from "components/Filter/Filter"; -import { - SelectFilter, - type SelectFilterOption, -} from "components/Filter/SelectFilter"; import { type UseFilterMenuOptions, useFilterMenu, } from "components/Filter/menu"; +import { + SelectFilter, + type SelectFilterOption, +} from "components/Filter/SelectFilter"; import { StatusIndicatorDot } from "components/StatusIndicator/StatusIndicator"; import type { FC } from "react"; import { docs } from "utils/docs"; diff --git a/site/src/pages/UsersPage/UsersPage.stories.tsx b/site/src/pages/UsersPage/UsersPage.stories.tsx index 185ad19786aca..3802a1968ef42 100644 --- a/site/src/pages/UsersPage/UsersPage.stories.tsx +++ b/site/src/pages/UsersPage/UsersPage.stories.tsx @@ -1,3 +1,9 @@ +import { MockAuthMethodsAll, MockUserOwner } from "testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withGlobalSnackbar, +} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { deploymentConfigQueryKey } from "api/queries/deployment"; @@ -9,12 +15,6 @@ import { MockGroups } from "pages/UsersPage/storybookData/groups"; import { MockRoles } from "pages/UsersPage/storybookData/roles"; import { MockUsers } from "pages/UsersPage/storybookData/users"; import { screen, spyOn, userEvent, within } from "storybook/test"; -import { MockAuthMethodsAll, MockUserOwner } from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withGlobalSnackbar, -} from "testHelpers/storybook"; import UsersPage from "./UsersPage"; const parameters = { diff --git a/site/src/pages/UsersPage/UsersPageView.stories.tsx b/site/src/pages/UsersPage/UsersPageView.stories.tsx index a78b7801b877d..fee8aa6c879f1 100644 --- a/site/src/pages/UsersPage/UsersPageView.stories.tsx +++ b/site/src/pages/UsersPage/UsersPageView.stories.tsx @@ -1,11 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { - MockMenu, - getDefaultFilterProps, -} from "components/Filter/storyHelpers"; -import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; -import type { ComponentProps } from "react"; import { MockAssignableSiteRoles, MockAuthMethodsPasswordOnly, @@ -13,6 +5,14 @@ import { MockUserOwner, mockApiError, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { + getDefaultFilterProps, + MockMenu, +} from "components/Filter/storyHelpers"; +import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; +import type { ComponentProps } from "react"; import { UsersPageView } from "./UsersPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx index c7c4586c0ec51..1b4a44a4542c9 100644 --- a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx +++ b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx @@ -4,13 +4,13 @@ import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; import type { Group } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; -import { OverflowY } from "components/OverflowY/OverflowY"; -import { TableCell } from "components/Table/Table"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; +import { OverflowY } from "components/OverflowY/OverflowY"; +import { TableCell } from "components/Table/Table"; import type { FC } from "react"; type GroupsCellProps = { diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx index 0cbb457a45100..aceee691b2f42 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx @@ -1,4 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockAssignableSiteRoles, MockAuditorRole, @@ -10,6 +9,7 @@ import { MockUserMember, MockUserOwner, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { UsersTable } from "./UsersTable"; const mockGroupsByUserId = new Map([ diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx index 894a75daef78a..408ea411a84f9 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx @@ -28,8 +28,7 @@ import { } from "components/TableLoader/TableLoader"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { TrashIcon } from "lucide-react"; -import { EllipsisVertical } from "lucide-react"; +import { EllipsisVertical, TrashIcon } from "lucide-react"; import type { FC } from "react"; import { UserRoleCell } from "../../OrganizationSettingsPage/UserTable/UserRoleCell"; import { UserGroupsCell } from "./UserGroupsCell"; diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx index f1f1edb54a5f7..427405ae5a0a1 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx @@ -1,6 +1,3 @@ -import { screen, waitFor } from "@testing-library/react"; -import { API } from "api/api"; -import WS from "jest-websocket-mock"; import { MockWorkspace, MockWorkspaceAgent, @@ -8,6 +5,9 @@ import { MockWorkspaceBuild, } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import { screen, waitFor } from "@testing-library/react"; +import { API } from "api/api"; +import WS from "jest-websocket-mock"; import WorkspaceBuildPage from "./WorkspaceBuildPage"; import { LOGS_TAB_KEY } from "./WorkspaceBuildPageView"; diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx index 8b9fa443f8f61..a026f9a5b391f 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { chromatic } from "testHelpers/chromatic"; import { MockFailedWorkspaceBuild, MockWorkspaceBuild, MockWorkspaceBuildLogs, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"; const defaultBuilds = Array.from({ length: 15 }, (_, i) => ({ diff --git a/site/src/pages/WorkspacePage/AppStatuses.stories.tsx b/site/src/pages/WorkspacePage/AppStatuses.stories.tsx index 062d06e1c3f20..2e8324aef2e0b 100644 --- a/site/src/pages/WorkspacePage/AppStatuses.stories.tsx +++ b/site/src/pages/WorkspacePage/AppStatuses.stories.tsx @@ -1,15 +1,15 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { WorkspaceAppStatus } from "api/typesGenerated"; -import { userEvent, within } from "storybook/test"; import { + createTimestamp, MockWorkspace, MockWorkspaceAgent, MockWorkspaceApp, MockWorkspaceAppStatus, MockWorkspaceAppStatuses, - createTimestamp, } from "testHelpers/entities"; import { withProxyProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { WorkspaceAppStatus } from "api/typesGenerated"; +import { userEvent, within } from "storybook/test"; import { AppStatuses } from "./AppStatuses"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/AppStatuses.tsx b/site/src/pages/WorkspacePage/AppStatuses.tsx index 55066d9094e8f..26f239b627101 100644 --- a/site/src/pages/WorkspacePage/AppStatuses.tsx +++ b/site/src/pages/WorkspacePage/AppStatuses.tsx @@ -6,6 +6,7 @@ import type { } from "api/typesGenerated"; import { Button } from "components/Button/Button"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { Tooltip, TooltipContent, @@ -13,9 +14,6 @@ import { TooltipTrigger, } from "components/Tooltip/Tooltip"; import capitalize from "lodash/capitalize"; -import { timeFrom } from "utils/time"; - -import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { ChevronDownIcon, ChevronUpIcon, @@ -28,6 +26,7 @@ import { AppStatusStateIcon } from "modules/apps/AppStatusStateIcon"; import { useAppLink } from "modules/apps/useAppLink"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; +import { timeFrom } from "utils/time"; import { truncateURI } from "utils/uri"; interface AppStatusesProps { diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx index 20f173d5e225d..00bc197ed1559 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceResource } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; import { ResourceMetadata } from "./ResourceMetadata"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/Workspace.stories.tsx b/site/src/pages/WorkspacePage/Workspace.stories.tsx index 77ba7d67e94de..df07c59c1c660 100644 --- a/site/src/pages/WorkspacePage/Workspace.stories.tsx +++ b/site/src/pages/WorkspacePage/Workspace.stories.tsx @@ -1,12 +1,12 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { ProvisionerJobLog } from "api/typesGenerated"; -import { action } from "storybook/actions"; import * as Mocks from "testHelpers/entities"; import { withAuthProvider, withDashboardProvider, withProxyProvider, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { ProvisionerJobLog } from "api/typesGenerated"; +import { action } from "storybook/actions"; import type { WorkspacePermissions } from "../../modules/workspaces/permissions"; import { Workspace } from "./Workspace"; diff --git a/site/src/pages/WorkspacePage/Workspace.tsx b/site/src/pages/WorkspacePage/Workspace.tsx index b96ddcdf7b7fe..37f30ab2f2d8d 100644 --- a/site/src/pages/WorkspacePage/Workspace.tsx +++ b/site/src/pages/WorkspacePage/Workspace.tsx @@ -14,6 +14,7 @@ import type { WorkspacePermissions } from "../../modules/workspaces/permissions" import { HistorySidebar } from "./HistorySidebar"; import { ResourceMetadata } from "./ResourceMetadata"; import { ResourcesSidebar } from "./ResourcesSidebar"; +import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; import { WorkspaceBuildLogsSection } from "./WorkspaceBuildLogsSection"; import { ActiveTransition, @@ -21,7 +22,6 @@ import { } from "./WorkspaceBuildProgress"; import { WorkspaceDeletedBanner } from "./WorkspaceDeletedBanner"; import { WorkspaceTopbar } from "./WorkspaceTopbar"; -import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; interface WorkspaceProps { workspace: TypesGen.Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx index 56c481cc96fd5..7aef1dc7c7357 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx @@ -7,6 +7,12 @@ import type { WorkspaceBuildParameter, } from "api/typesGenerated"; import { Button } from "components/Button/Button"; +import { + Popover, + PopoverContent, + PopoverTrigger, + usePopover, +} from "components/deprecated/Popover/Popover"; import { FormFields } from "components/Form/Form"; import { TopbarButton } from "components/FullPageLayout/Topbar"; import { @@ -17,12 +23,6 @@ import { } from "components/HelpTooltip/HelpTooltip"; import { Loader } from "components/Loader/Loader"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; -import { - Popover, - PopoverContent, - PopoverTrigger, - usePopover, -} from "components/deprecated/Popover/Popover"; import { useFormik } from "formik"; import { ChevronDownIcon } from "lucide-react"; import type { FC } from "react"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx index a9e2d398e602e..e1e4fb4851eb0 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx @@ -1,6 +1,6 @@ +import { MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, waitFor, within } from "storybook/test"; -import { MockWorkspace } from "testHelpers/entities"; import { DebugButton } from "./DebugButton"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx index 678158c57a3d2..12ff75dc64616 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx @@ -1,6 +1,6 @@ +import { MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, waitFor, within } from "storybook/test"; -import { MockWorkspace } from "testHelpers/entities"; import { RetryButton } from "./RetryButton"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx index 005368e336aff..3d1d1dcff0c00 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx @@ -1,13 +1,13 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { deploymentConfigQueryKey } from "api/queries/deployment"; -import { agentLogsKey, buildLogsKey } from "api/queries/workspaces"; -import { expect, userEvent, within } from "storybook/test"; import * as Mocks from "testHelpers/entities"; import { withAuthProvider, withDashboardProvider, withDesktopViewport, } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { deploymentConfigQueryKey } from "api/queries/deployment"; +import { agentLogsKey, buildLogsKey } from "api/queries/workspaces"; +import { expect, userEvent, within } from "storybook/test"; import { WorkspaceActions } from "./WorkspaceActions"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx index 1c38caa14ec21..f46589a0a67fb 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx @@ -1,12 +1,12 @@ import { deploymentConfig } from "api/queries/deployment"; import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; import { useAuthenticated } from "hooks/useAuthenticated"; -import { WorkspaceMoreActions } from "modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions"; import { type ActionType, abilitiesByWorkspaceStatus, } from "modules/workspaces/actions"; import type { WorkspacePermissions } from "modules/workspaces/permissions"; +import { WorkspaceMoreActions } from "modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions"; import { type FC, Fragment, type ReactNode } from "react"; import { useQuery } from "react-query"; import { mustUpdateWorkspace } from "utils/workspace"; diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx index 5a91ef71c633a..d7a6526bfbdff 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx @@ -1,10 +1,10 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import dayjs from "dayjs"; import { MockProvisionerJob, MockStartingWorkspace, MockWorkspaceBuild, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import dayjs from "dayjs"; import { WorkspaceBuildProgress } from "./WorkspaceBuildProgress"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx index ad63ced0952cf..bc72396932e77 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx @@ -1,13 +1,13 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import type { AlertProps } from "components/Alert/Alert"; import { Button, type ButtonProps } from "components/Button/Button"; -import { Pill } from "components/Pill/Pill"; import { Popover, PopoverContent, PopoverTrigger, usePopover, } from "components/deprecated/Popover/Popover"; +import { Pill } from "components/Pill/Pill"; import type { FC, ReactNode } from "react"; import type { ThemeRole } from "theme/roles"; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx index f5707df9a5b81..073a5090f2e42 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx @@ -1,7 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getWorkspaceResolveAutostartQueryKey } from "api/queries/workspaceQuota"; -import type { WorkspacePermissions } from "modules/workspaces/permissions"; -import { expect, userEvent, waitFor, within } from "storybook/test"; import { MockOutdatedWorkspace, MockTemplate, @@ -10,6 +6,10 @@ import { MockWorkspace, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getWorkspaceResolveAutostartQueryKey } from "api/queries/workspaceQuota"; +import type { WorkspacePermissions } from "modules/workspaces/permissions"; +import { expect, userEvent, waitFor, within } from "storybook/test"; import { WorkspaceNotifications } from "./WorkspaceNotifications"; const defaultPermissions: WorkspacePermissions = { diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index c9bf60fbecaaa..92e6eeb708e48 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -9,13 +9,13 @@ import type { import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { TriangleAlertIcon } from "lucide-react"; -import { InfoIcon } from "lucide-react"; +import { InfoIcon, TriangleAlertIcon } from "lucide-react"; import { useDashboard } from "modules/dashboard/useDashboard"; import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import { type FC, useEffect, useState } from "react"; dayjs.extend(relativeTime); + import { useQuery } from "react-query"; import type { WorkspacePermissions } from "../../../modules/workspaces/permissions"; import { diff --git a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx index 18a9e1a6f7232..b089a420bcb33 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx @@ -1,15 +1,3 @@ -import { screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import * as apiModule from "api/api"; -import type { TemplateVersionParameter, Workspace } from "api/typesGenerated"; -import MockServerSocket from "jest-websocket-mock"; -import { - DashboardContext, - type DashboardProvider, -} from "modules/dashboard/DashboardProvider"; -import type { WorkspacePermissions } from "modules/workspaces/permissions"; -import { http, HttpResponse } from "msw"; -import type { FC } from "react"; import { MockAppearanceConfig, MockBuildInfo, @@ -34,6 +22,18 @@ import { renderWithAuth, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import * as apiModule from "api/api"; +import type { TemplateVersionParameter, Workspace } from "api/typesGenerated"; +import MockServerSocket from "jest-websocket-mock"; +import { + DashboardContext, + type DashboardProvider, +} from "modules/dashboard/DashboardProvider"; +import type { WorkspacePermissions } from "modules/workspaces/permissions"; +import { HttpResponse, http } from "msw"; +import type { FC } from "react"; import WorkspacePage from "./WorkspacePage"; const { API, MissingBuildParameters } = apiModule; diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index 4034cc144e127..bba5f83b5720f 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -1,6 +1,5 @@ import { API } from "api/api"; -import { type ApiError, getErrorMessage } from "api/errors"; -import { isApiError } from "api/errors"; +import { type ApiError, getErrorMessage, isApiError } from "api/errors"; import { templateVersion } from "api/queries/templates"; import { workspaceBuildTimings } from "api/queries/workspaceBuilds"; import { @@ -20,12 +19,12 @@ import { displayError } from "components/GlobalSnackbar/utils"; import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; import { EphemeralParametersDialog } from "modules/workspaces/EphemeralParametersDialog/EphemeralParametersDialog"; import { WorkspaceErrorDialog } from "modules/workspaces/ErrorDialog/WorkspaceErrorDialog"; +import type { WorkspacePermissions } from "modules/workspaces/permissions"; import { WorkspaceBuildCancelDialog } from "modules/workspaces/WorkspaceBuildCancelDialog/WorkspaceBuildCancelDialog"; import { - WorkspaceUpdateDialogs, useWorkspaceUpdate, + WorkspaceUpdateDialogs, } from "modules/workspaces/WorkspaceUpdateDialogs"; -import type { WorkspacePermissions } from "modules/workspaces/permissions"; import { type FC, useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx index 225db7c8a44c0..388f23625f043 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx @@ -1,14 +1,14 @@ +import { MockTemplate, MockWorkspace } from "testHelpers/entities"; +import { render } from "testHelpers/renderHelpers"; +import { server } from "testHelpers/server"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { API } from "api/api"; import { workspaceByOwnerAndName } from "api/queries/workspaces"; import dayjs from "dayjs"; -import { http, HttpResponse } from "msw"; +import { HttpResponse, http } from "msw"; import type { FC } from "react"; import { useQuery } from "react-query"; -import { MockTemplate, MockWorkspace } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls"; const Wrapper: FC = () => { diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx index c8da5c0cfba17..965c206932015 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -15,7 +15,7 @@ import dayjs, { type Dayjs } from "dayjs"; import { useTime } from "hooks/useTime"; import { ClockIcon, MinusIcon, PlusIcon } from "lucide-react"; import { getWorkspaceActivityStatus } from "modules/workspaces/activity"; -import { type FC, type ReactNode, forwardRef, useRef, useState } from "react"; +import { type FC, forwardRef, type ReactNode, useRef, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Link as RouterLink } from "react-router"; import { diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx index 9a8a1878d9369..aafd16d9c099d 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx @@ -1,8 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getWorkspaceQuotaQueryKey } from "api/queries/workspaceQuota"; -import type { Workspace, WorkspaceQuota } from "api/typesGenerated"; -import dayjs from "dayjs"; -import { expect, screen, userEvent, waitFor, within } from "storybook/test"; import { MockOrganization, MockTemplate, @@ -11,6 +6,11 @@ import { MockWorkspace, } from "testHelpers/entities"; import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getWorkspaceQuotaQueryKey } from "api/queries/workspaceQuota"; +import type { Workspace, WorkspaceQuota } from "api/typesGenerated"; +import dayjs from "dayjs"; +import { expect, screen, userEvent, waitFor, within } from "storybook/test"; import { WorkspaceTopbar } from "./WorkspaceTopbar"; // We want a workspace without a deadline to not pollute the screenshot. Also diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx index ff0a92761b731..b6b21b6f226b9 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -6,6 +6,7 @@ import type * as TypesGen from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { AvatarData } from "components/Avatar/AvatarData"; import { CopyButton } from "components/CopyButton/CopyButton"; +import { Popover, PopoverTrigger } from "components/deprecated/Popover/Popover"; import { Topbar, TopbarAvatar, @@ -15,10 +16,7 @@ import { TopbarIconButton, } from "components/FullPageLayout/Topbar"; import { HelpTooltipContent } from "components/HelpTooltip/HelpTooltip"; -import { Popover, PopoverTrigger } from "components/deprecated/Popover/Popover"; -import { ChevronLeftIcon } from "lucide-react"; -import { CircleDollarSign } from "lucide-react"; -import { TrashIcon } from "lucide-react"; +import { ChevronLeftIcon, CircleDollarSign, TrashIcon } from "lucide-react"; import { useDashboard } from "modules/dashboard/useDashboard"; import { linkToTemplate, useLinks } from "modules/navigation"; import { WorkspaceStatusIndicator } from "modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator"; diff --git a/site/src/pages/WorkspacePage/useResourcesNav.test.tsx b/site/src/pages/WorkspacePage/useResourcesNav.test.tsx index 693a0a90d3053..77ac0c3204315 100644 --- a/site/src/pages/WorkspacePage/useResourcesNav.test.tsx +++ b/site/src/pages/WorkspacePage/useResourcesNav.test.tsx @@ -1,7 +1,7 @@ +import { MockWorkspaceResource } from "testHelpers/entities"; import { renderHook } from "@testing-library/react"; import type { WorkspaceResource } from "api/typesGenerated"; -import { RouterProvider, createMemoryRouter } from "react-router"; -import { MockWorkspaceResource } from "testHelpers/entities"; +import { createMemoryRouter, RouterProvider } from "react-router"; import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; describe("useResourcesNav", () => { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx index 35f80410a51d6..16fa4819763af 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx @@ -1,5 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; import { MockOutdatedStoppedWorkspaceRequireActiveVersion, MockTemplateVersionParameter1, @@ -10,6 +8,8 @@ import { MockWorkspaceBuildParameter2, MockWorkspaceBuildParameter3, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { WorkspaceParametersPageView } from "./WorkspaceParametersPage"; const meta: Meta = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx index dc4c127b9506e..90337e871e6cd 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx @@ -1,6 +1,3 @@ -import { screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockTemplateVersionParameter1, MockTemplateVersionParameter2, @@ -15,6 +12,9 @@ import { renderWithWorkspaceSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import WorkspaceParametersPage from "./WorkspaceParametersPage"; test("Submit the workspace settings page successfully", async () => { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx index 961f5589df9b2..1de412679d16b 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx @@ -1,3 +1,4 @@ +import { MockTemplate, mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import advancedFormat from "dayjs/plugin/advancedFormat"; @@ -9,7 +10,6 @@ import { } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; import { emptyTTL } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/ttl"; import { action } from "storybook/actions"; -import { MockTemplate, mockApiError } from "testHelpers/entities"; import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; dayjs.extend(advancedFormat); diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index 59f2798d76568..68ffdac9e77d9 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -1,16 +1,16 @@ +import { MockTemplate } from "testHelpers/entities"; +import { render } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import { API } from "api/api"; import { defaultSchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; -import { MockTemplate } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; import { timeZones } from "utils/timeZones"; import { Language, + ttlShutdownAt, + validationSchema, WorkspaceScheduleForm, type WorkspaceScheduleFormProps, type WorkspaceScheduleFormValues, - ttlShutdownAt, - validationSchema, } from "./WorkspaceScheduleForm"; const valid: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx index 22be968323ee1..623b3b4d09fa8 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx @@ -1,3 +1,10 @@ +import { + MockPrebuiltWorkspace, + MockTemplate, + MockUserOwner, + MockWorkspace, +} from "testHelpers/entities"; +import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { getAuthorizationKey } from "api/queries/authCheck"; import { templateByNameKey } from "api/queries/templates"; @@ -7,13 +14,6 @@ import { reactRouterNestedAncestors, reactRouterParameters, } from "storybook-addon-remix-react-router"; -import { - MockPrebuiltWorkspace, - MockTemplate, - MockUserOwner, - MockWorkspace, -} from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import { WorkspaceSettingsLayout } from "../WorkspaceSettingsLayout"; import WorkspaceSchedulePage from "./WorkspaceSchedulePage"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx index 9ebede41abe60..f125071ebe9f3 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -1,20 +1,20 @@ -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { http, HttpResponse } from "msw"; import { MockUserOwner, MockWorkspace } from "testHelpers/entities"; import { renderWithWorkspaceSettingsLayout } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; -import { - Language as FormLanguage, - type WorkspaceScheduleFormValues, -} from "./WorkspaceScheduleForm"; -import WorkspaceSchedulePage from "./WorkspaceSchedulePage"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; import { formValuesToAutostartRequest, formValuesToTTLRequest, } from "./formToRequest"; import { scheduleToAutostart } from "./schedule"; import { ttlMsToAutostop } from "./ttl"; +import { + Language as FormLanguage, + type WorkspaceScheduleFormValues, +} from "./WorkspaceScheduleForm"; +import WorkspaceSchedulePage from "./WorkspaceSchedulePage"; const validValues: WorkspaceScheduleFormValues = { autostartEnabled: true, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index 161197fcb759f..23255316d2d25 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -23,11 +23,11 @@ import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router"; import { docs } from "utils/docs"; import { pageTitle } from "utils/page"; -import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; import { formValuesToAutostartRequest, formValuesToTTLRequest, } from "./formToRequest"; +import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; const permissionsToCheck = (workspace: TypesGen.Workspace) => ({ diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts index b188145cf8a92..edaf480aee617 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts @@ -5,8 +5,8 @@ import utc from "dayjs/plugin/utc"; import map from "lodash/map"; import some from "lodash/some"; import { extractTimezone, stripTimezone } from "utils/schedule"; -import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; import type { Autostop } from "./ttl"; +import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; // REMARK: timezone plugin depends on UTC // diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx index 3dd53f84ad0c0..af64c06bef66c 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx @@ -4,7 +4,7 @@ import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; -import { type FC, Suspense, createContext, useContext } from "react"; +import { createContext, type FC, Suspense, useContext } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { Outlet, useParams } from "react-router"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx index 209388e2346d7..2b4637200d123 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx @@ -1,11 +1,11 @@ -import { screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; import { MockWorkspace } from "testHelpers/entities"; import { renderWithWorkspaceSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; import WorkspaceSettingsPage from "./WorkspaceSettingsPage"; test("Submit the workspace settings page successfully", async () => { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx index 911b418fc010e..3a1eb37e75e99 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx @@ -1,6 +1,6 @@ +import { MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; -import { MockWorkspace } from "testHelpers/entities"; import { WorkspaceSettingsPageView } from "./WorkspaceSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx index 9de4850a8965b..6f5921023073b 100644 --- a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx +++ b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; import { chromatic } from "testHelpers/chromatic"; import { MockUserMember, MockWorkspace } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; const meta: Meta = { diff --git a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.stories.tsx b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.stories.tsx index 429d47e1c4eb3..14a7db55b19ec 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.stories.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.stories.tsx @@ -1,7 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { Workspace } from "api/typesGenerated"; -import { useQueryClient } from "react-query"; -import { action } from "storybook/actions"; import { chromatic } from "testHelpers/chromatic"; import { MockDormantOutdatedWorkspace, @@ -11,6 +7,10 @@ import { MockUserMember, MockWorkspace, } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { Workspace } from "api/typesGenerated"; +import { useQueryClient } from "react-query"; +import { action } from "storybook/actions"; import { BatchUpdateConfirmation, type Update, diff --git a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx index a6b0a27b374f4..977fe42a1611f 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx @@ -8,8 +8,12 @@ import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { Stack } from "components/Stack/Stack"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { MonitorDownIcon } from "lucide-react"; -import { ClockIcon, SettingsIcon, UserIcon } from "lucide-react"; +import { + ClockIcon, + MonitorDownIcon, + SettingsIcon, + UserIcon, +} from "lucide-react"; import { type FC, type ReactNode, useEffect, useMemo, useState } from "react"; import { useQueries } from "react-query"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index 78692b28bec69..eda60e4fdc8f9 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -2,17 +2,16 @@ import Link from "@mui/material/Link"; import type { Template } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Button } from "components/Button/Button"; -import { Loader } from "components/Loader/Loader"; -import { MenuSearch } from "components/Menu/MenuSearch"; -import { OverflowY } from "components/OverflowY/OverflowY"; -import { SearchEmpty, searchStyles } from "components/Search/Search"; import { Popover, PopoverContent, PopoverTrigger, } from "components/deprecated/Popover/Popover"; -import { ExternalLinkIcon } from "lucide-react"; -import { ChevronDownIcon } from "lucide-react"; +import { Loader } from "components/Loader/Loader"; +import { MenuSearch } from "components/Menu/MenuSearch"; +import { OverflowY } from "components/OverflowY/OverflowY"; +import { SearchEmpty, searchStyles } from "components/Search/Search"; +import { ChevronDownIcon, ExternalLinkIcon } from "lucide-react"; import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, type ReactNode, useState } from "react"; import type { UseQueryResult } from "react-query"; @@ -39,7 +38,7 @@ export const WorkspacesButton: FC = ({ const [searchTerm, setSearchTerm] = useState(""); const processed = sortTemplatesByUsersDesc(templates ?? [], searchTerm); - let emptyState: ReactNode = undefined; + let emptyState: ReactNode; if (templates?.length === 0) { emptyState = ( diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx index 678f0331331a6..988e9a5385098 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx @@ -1,8 +1,3 @@ -import { screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { API } from "api/api"; -import type { Workspace, WorkspacesResponse } from "api/typesGenerated"; -import { http, HttpResponse } from "msw"; import { MockDormantOutdatedWorkspace, MockDormantWorkspace, @@ -17,6 +12,11 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "api/api"; +import type { Workspace, WorkspacesResponse } from "api/typesGenerated"; +import { HttpResponse, http } from "msw"; import * as CreateDayString from "utils/createDayString"; import WorkspacesPage from "./WorkspacesPage"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx index 2fec0c3975403..62ed7bfed7fe4 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx @@ -1,6 +1,6 @@ import { getErrorDetail, getErrorMessage } from "api/errors"; import { workspacePermissionsByOrganization } from "api/queries/organizations"; -import { templateVersionRoot, templates } from "api/queries/templates"; +import { templates, templateVersionRoot } from "api/queries/templates"; import { workspaces } from "api/queries/workspaces"; import type { WorkspaceStatus } from "api/typesGenerated"; import { useFilter } from "components/Filter/Filter"; @@ -18,9 +18,9 @@ import { useSearchParams } from "react-router"; import { pageTitle } from "utils/page"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; import { BatchUpdateConfirmation } from "./BatchUpdateConfirmation"; -import { WorkspacesPageView } from "./WorkspacesPageView"; import { useBatchActions } from "./batchActions"; import { useStatusFilterMenu, useTemplateFilterMenu } from "./filter/menus"; +import { WorkspacesPageView } from "./WorkspacesPageView"; /** * The set of all workspace statuses that indicate that the state for a diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index 5696721a089d6..006a2fb62a8ff 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -1,17 +1,3 @@ -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { - type Workspace, - type WorkspaceStatus, - WorkspaceStatuses, -} from "api/typesGenerated"; -import { - MockMenu, - getDefaultFilterProps, -} from "components/Filter/storyHelpers"; -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; -import dayjs from "dayjs"; -import uniqueId from "lodash/uniqueId"; -import { expect, within } from "storybook/test"; import { MockBuildInfo, MockOrganization, @@ -29,8 +15,22 @@ import { withDashboardProvider, withProxyProvider, } from "testHelpers/storybook"; -import { WorkspacesPageView } from "./WorkspacesPageView"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { + type Workspace, + type WorkspaceStatus, + WorkspaceStatuses, +} from "api/typesGenerated"; +import { + getDefaultFilterProps, + MockMenu, +} from "components/Filter/storyHelpers"; +import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import dayjs from "dayjs"; +import uniqueId from "lodash/uniqueId"; +import { expect, within } from "storybook/test"; import type { WorkspaceFilterState } from "./filter/WorkspacesFilter"; +import { WorkspacesPageView } from "./WorkspacesPageView"; const createWorkspace = ( name: string, diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx index 4476211387871..d5b7b4a03ef31 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx @@ -17,18 +17,23 @@ import { PaginationWidgetBase } from "components/PaginationWidget/PaginationWidg import { Spinner } from "components/Spinner/Spinner"; import { Stack } from "components/Stack/Stack"; import { TableToolbar } from "components/TableToolbar/TableToolbar"; -import { CloudIcon } from "lucide-react"; -import { ChevronDownIcon, PlayIcon, SquareIcon, TrashIcon } from "lucide-react"; +import { + ChevronDownIcon, + CloudIcon, + PlayIcon, + SquareIcon, + TrashIcon, +} from "lucide-react"; import { WorkspacesTable } from "pages/WorkspacesPage/WorkspacesTable"; import type { FC } from "react"; import type { UseQueryResult } from "react-query"; import { mustUpdateWorkspace } from "utils/workspace"; -import { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip"; -import { WorkspacesButton } from "./WorkspacesButton"; import { type WorkspaceFilterState, WorkspacesFilter, } from "./filter/WorkspacesFilter"; +import { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip"; +import { WorkspacesButton } from "./WorkspacesButton"; const Language = { pageTitle: "Workspaces", diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index e45291222f5ce..8b5f60881d9fb 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -44,15 +44,17 @@ import { } from "components/Tooltip/Tooltip"; import { useAuthenticated } from "hooks"; import { useClickableTableRow } from "hooks/useClickableTableRow"; -import { ExternalLinkIcon, FileIcon, StarIcon } from "lucide-react"; -import { EllipsisVertical } from "lucide-react"; import { BanIcon, CloudIcon, + EllipsisVertical, + ExternalLinkIcon, + FileIcon, PlayIcon, RefreshCcwIcon, SquareIcon, SquareTerminalIcon, + StarIcon, } from "lucide-react"; import { getTerminalHref, @@ -61,6 +63,7 @@ import { } from "modules/apps/apps"; import { useAppLink } from "modules/apps/useAppLink"; import { useDashboard } from "modules/dashboard/useDashboard"; +import { abilitiesByWorkspaceStatus } from "modules/workspaces/actions"; import { WorkspaceAppStatus } from "modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus"; import { WorkspaceBuildCancelDialog } from "modules/workspaces/WorkspaceBuildCancelDialog/WorkspaceBuildCancelDialog"; import { WorkspaceDormantBadge } from "modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge"; @@ -68,10 +71,9 @@ import { WorkspaceMoreActions } from "modules/workspaces/WorkspaceMoreActions/Wo import { WorkspaceOutdatedTooltip } from "modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; import { WorkspaceStatusIndicator } from "modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator"; import { - WorkspaceUpdateDialogs, useWorkspaceUpdate, + WorkspaceUpdateDialogs, } from "modules/workspaces/WorkspaceUpdateDialogs"; -import { abilitiesByWorkspaceStatus } from "modules/workspaces/actions"; import type React from "react"; import { type FC, diff --git a/site/src/pages/WorkspacesPage/filter/menus.tsx b/site/src/pages/WorkspacesPage/filter/menus.tsx index cb07ab160ed11..c886f06a84494 100644 --- a/site/src/pages/WorkspacesPage/filter/menus.tsx +++ b/site/src/pages/WorkspacesPage/filter/menus.tsx @@ -1,15 +1,15 @@ import { API } from "api/api"; import type { Template, WorkspaceStatus } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; +import { + type UseFilterMenuOptions, + useFilterMenu, +} from "components/Filter/menu"; import { SelectFilter, type SelectFilterOption, SelectFilterSearch, } from "components/Filter/SelectFilter"; -import { - type UseFilterMenuOptions, - useFilterMenu, -} from "components/Filter/menu"; import { StatusIndicatorDot, type StatusIndicatorDotProps, diff --git a/site/src/router.tsx b/site/src/router.tsx index 76925ba7162aa..6aaefb77d8731 100644 --- a/site/src/router.tsx +++ b/site/src/router.tsx @@ -1,12 +1,12 @@ import { GlobalErrorBoundary } from "components/ErrorBoundary/GlobalErrorBoundary"; import { TemplateRedirectController } from "pages/TemplatePage/TemplateRedirectController"; -import { Suspense, lazy } from "react"; +import { lazy, Suspense } from "react"; import { + createBrowserRouter, + createRoutesFromChildren, Navigate, Outlet, Route, - createBrowserRouter, - createRoutesFromChildren, } from "react-router"; import { Loader } from "./components/Loader/Loader"; import { RequireAuth } from "./contexts/auth/RequireAuth"; diff --git a/site/src/testHelpers/handlers.ts b/site/src/testHelpers/handlers.ts index 3f163a4d3a0e8..1a166ed41eaba 100644 --- a/site/src/testHelpers/handlers.ts +++ b/site/src/testHelpers/handlers.ts @@ -2,7 +2,7 @@ import fs from "node:fs"; import path from "node:path"; import type { CreateWorkspaceBuildRequest } from "api/typesGenerated"; import { permissionChecks } from "modules/permissions"; -import { http, HttpResponse } from "msw"; +import { HttpResponse, http } from "msw"; import * as M from "./entities"; import { MockGroup, MockWorkspaceQuota } from "./entities"; diff --git a/site/src/testHelpers/hooks.tsx b/site/src/testHelpers/hooks.tsx index 4e8b22f5a1d1e..86d0c1fb8d26a 100644 --- a/site/src/testHelpers/hooks.tsx +++ b/site/src/testHelpers/hooks.tsx @@ -1,11 +1,11 @@ +import { AppProviders } from "App"; import { + act, type RenderHookOptions, type RenderHookResult, - act, renderHook, waitFor, } from "@testing-library/react"; -import { AppProviders } from "App"; import { RequireAuth } from "contexts/auth/RequireAuth"; import { type FC, @@ -15,14 +15,14 @@ import { } from "react"; import type { QueryClient } from "react-query"; import { + createMemoryRouter, type Location, RouterProvider, - createMemoryRouter, useLocation, } from "react-router"; import { - type RenderWithAuthOptions, createTestQueryClient, + type RenderWithAuthOptions, } from "./renderHelpers"; type RouterLocationSnapshot = Readonly<{ @@ -98,7 +98,7 @@ export async function renderHookWithAuth( }; let forceUpdateRenderHookChildren!: () => void; - let currentRenderHookChildren: ReactNode = undefined; + let currentRenderHookChildren: ReactNode; const InitialRoute: FC = () => { const [, forceRerender] = useReducer((b: boolean) => !b, false); diff --git a/site/src/testHelpers/renderHelpers.tsx b/site/src/testHelpers/renderHelpers.tsx index d40c01c0ddb05..c928e376992bd 100644 --- a/site/src/testHelpers/renderHelpers.tsx +++ b/site/src/testHelpers/renderHelpers.tsx @@ -1,12 +1,12 @@ +import { AppProviders } from "App"; import { screen, render as testingLibraryRender, waitFor, } from "@testing-library/react"; -import { AppProviders } from "App"; +import { RequireAuth } from "contexts/auth/RequireAuth"; import type { ProxyProvider } from "contexts/ProxyContext"; import { ThemeOverride } from "contexts/ThemeProvider"; -import { RequireAuth } from "contexts/auth/RequireAuth"; import { DashboardLayout } from "modules/dashboard/DashboardLayout"; import type { DashboardProvider } from "modules/dashboard/DashboardProvider"; import OrganizationSettingsLayout from "modules/management/OrganizationSettingsLayout"; @@ -15,9 +15,9 @@ import { WorkspaceSettingsLayout } from "pages/WorkspaceSettingsPage/WorkspaceSe import type { ReactNode } from "react"; import { QueryClient } from "react-query"; import { + createMemoryRouter, type RouteObject, RouterProvider, - createMemoryRouter, } from "react-router"; import themes, { DEFAULT_THEME } from "theme"; import { MockUserOwner } from "./entities"; diff --git a/site/src/testHelpers/storybook.tsx b/site/src/testHelpers/storybook.tsx index 4a1c045b9609a..2790ced99a8ae 100644 --- a/site/src/testHelpers/storybook.tsx +++ b/site/src/testHelpers/storybook.tsx @@ -4,12 +4,12 @@ import { getAuthorizationKey } from "api/queries/authCheck"; import { hasFirstUserKey, meKey } from "api/queries/users"; import type { Entitlements } from "api/typesGenerated"; import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; +import { AuthProvider } from "contexts/auth/AuthProvider"; import { + getPreferredProxy, ProxyContext, type ProxyContextValue, - getPreferredProxy, } from "contexts/ProxyContext"; -import { AuthProvider } from "contexts/auth/AuthProvider"; import { DashboardContext } from "modules/dashboard/DashboardProvider"; import { DeploymentConfigContext } from "modules/management/DeploymentConfigProvider"; import { OrganizationSettingsContext } from "modules/management/OrganizationSettingsLayout"; diff --git a/site/src/theme/dark/mui.ts b/site/src/theme/dark/mui.ts index e0902d857125f..0d3133db1cbb8 100644 --- a/site/src/theme/dark/mui.ts +++ b/site/src/theme/dark/mui.ts @@ -1,4 +1,4 @@ -// biome-ignore lint/nursery/noRestrictedImports: createTheme +// biome-ignore lint/style/noRestrictedImports: createTheme import { createTheme } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius } from "../constants"; import { components } from "../mui"; diff --git a/site/src/theme/index.ts b/site/src/theme/index.ts index a36bd9b223e8d..9ffc9b75668e9 100644 --- a/site/src/theme/index.ts +++ b/site/src/theme/index.ts @@ -1,4 +1,4 @@ -// biome-ignore lint/nursery/noRestrictedImports: We still use `Theme` as a basis for our actual theme, for now. +// biome-ignore lint/style/noRestrictedImports: We still use `Theme` as a basis for our actual theme, for now. import type { Theme as MuiTheme } from "@mui/material/styles"; import type * as monaco from "monaco-editor"; import type { Branding } from "./branding"; diff --git a/site/src/theme/light/mui.ts b/site/src/theme/light/mui.ts index 179297c132f0d..8092b5f8cbe80 100644 --- a/site/src/theme/light/mui.ts +++ b/site/src/theme/light/mui.ts @@ -1,4 +1,4 @@ -// biome-ignore lint/nursery/noRestrictedImports: createTheme +// biome-ignore lint/style/noRestrictedImports: createTheme import { createTheme } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius } from "../constants"; import { components } from "../mui"; diff --git a/site/src/theme/mui.ts b/site/src/theme/mui.ts index 346ca90bcd04c..743d6d90023b0 100644 --- a/site/src/theme/mui.ts +++ b/site/src/theme/mui.ts @@ -1,6 +1,6 @@ -// biome-ignore lint/nursery/noRestrictedImports: we use the classes for customization +// biome-ignore lint/style/noRestrictedImports: we use the classes for customization import { alertClasses } from "@mui/material/Alert"; -// biome-ignore lint/nursery/noRestrictedImports: we use the MUI theme as a base +// biome-ignore lint/style/noRestrictedImports: we use the MUI theme as a base import type { ThemeOptions } from "@mui/material/styles"; import { BODY_FONT_FAMILY, diff --git a/site/src/utils/OneWayWebSocket.test.ts b/site/src/utils/OneWayWebSocket.test.ts index a0492dab9b439..3a4b954145f99 100644 --- a/site/src/utils/OneWayWebSocket.test.ts +++ b/site/src/utils/OneWayWebSocket.test.ts @@ -8,8 +8,8 @@ */ import { - type MockWebSocketServer, createMockWebSocket, + type MockWebSocketServer, } from "testHelpers/websockets"; import { type OneWayMessageEvent, OneWayWebSocket } from "./OneWayWebSocket"; diff --git a/site/src/utils/dormant.test.ts b/site/src/utils/dormant.test.ts index 9f52ffafa3ade..ff4b935df5f3d 100644 --- a/site/src/utils/dormant.test.ts +++ b/site/src/utils/dormant.test.ts @@ -1,5 +1,5 @@ -import type * as TypesGen from "api/typesGenerated"; import * as Mocks from "testHelpers/entities"; +import type * as TypesGen from "api/typesGenerated"; import { displayDormantDeletion } from "./dormant"; describe("displayDormantDeletion", () => { diff --git a/site/src/utils/filetree.test.ts b/site/src/utils/filetree.test.ts index e4aadaabbe424..f7e3eb48f3ae7 100644 --- a/site/src/utils/filetree.test.ts +++ b/site/src/utils/filetree.test.ts @@ -1,7 +1,7 @@ import { - type FileTree, createFile, existsFile, + type FileTree, getFileContent, isFolder, moveFile, diff --git a/site/src/utils/formUtils.test.ts b/site/src/utils/formUtils.test.ts index c009b38dd929e..2b3d6b3df1b0f 100644 --- a/site/src/utils/formUtils.test.ts +++ b/site/src/utils/formUtils.test.ts @@ -1,5 +1,5 @@ -import type { FormikContextType } from "formik/dist/types"; import { mockApiError } from "testHelpers/entities"; +import type { FormikContextType } from "formik/dist/types"; import { getFormHelpers, nameValidator, onChangeTrimmed } from "./formUtils"; interface TestType { diff --git a/site/src/utils/schedule.test.ts b/site/src/utils/schedule.test.ts index cae8d3bda7a47..20289ddddeca6 100644 --- a/site/src/utils/schedule.test.ts +++ b/site/src/utils/schedule.test.ts @@ -1,7 +1,7 @@ +import * as Mocks from "testHelpers/entities"; import type { Workspace } from "api/typesGenerated"; import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; -import * as Mocks from "testHelpers/entities"; import { deadlineExtensionMax, deadlineExtensionMin, diff --git a/site/src/utils/workspace.test.ts b/site/src/utils/workspace.test.ts index 4e6f4b287fe0e..b534a4b367ab8 100644 --- a/site/src/utils/workspace.test.ts +++ b/site/src/utils/workspace.test.ts @@ -1,6 +1,6 @@ +import * as Mocks from "testHelpers/entities"; import type * as TypesGen from "api/typesGenerated"; import dayjs from "dayjs"; -import * as Mocks from "testHelpers/entities"; import { agentVersionStatus, defaultWorkspaceExtension, diff --git a/site/src/utils/workspace.tsx b/site/src/utils/workspace.tsx index 49e885581497d..3c89ddce6db3f 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -5,8 +5,12 @@ import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; import minMax from "dayjs/plugin/minMax"; import utc from "dayjs/plugin/utc"; -import { HourglassIcon } from "lucide-react"; -import { CircleAlertIcon, PlayIcon, SquareIcon } from "lucide-react"; +import { + CircleAlertIcon, + HourglassIcon, + PlayIcon, + SquareIcon, +} from "lucide-react"; import semver from "semver"; import { getPendingStatusLabel } from "./provisionerJob"; diff --git a/site/vite.config.mts b/site/vite.config.mts index e6a30aa71744e..f2f9650a6c6d9 100644 --- a/site/vite.config.mts +++ b/site/vite.config.mts @@ -1,7 +1,7 @@ import * as path from "node:path"; import react from "@vitejs/plugin-react"; import { visualizer } from "rollup-plugin-visualizer"; -import { type PluginOption, defineConfig } from "vite"; +import { defineConfig, type PluginOption } from "vite"; import checker from "vite-plugin-checker"; const plugins: PluginOption[] = [ From dd92ca2b9406d97f35e4ca9ab0f84175ae3c10f4 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Thu, 14 Aug 2025 21:06:16 +0000 Subject: [PATCH 2/3] chore: several improvements --- .github/workflows/typos.toml | 3 +- .vscode/settings.json | 6 +- site/biome.jsonc | 44 +++-- site/e2e/api.ts | 2 +- site/e2e/tests/app.spec.ts | 2 +- site/e2e/tests/externalAuth.spec.ts | 12 +- site/package.json | 2 +- site/pnpm-lock.yaml | 82 ++++----- .../ActiveUserChart/ActiveUserChart.tsx | 2 +- site/src/components/Chart/Chart.tsx | 2 +- site/src/components/Command/Command.tsx | 4 +- site/src/components/Dialog/Dialog.tsx | 2 +- .../components/DropdownMenu/DropdownMenu.tsx | 8 +- site/src/components/LastSeen/LastSeen.tsx | 2 +- site/src/components/Latency/Latency.tsx | 18 +- .../PageHeader/FullWidthPageHeader.tsx | 2 +- .../components/SearchField/SearchField.tsx | 9 +- site/src/components/Table/Table.tsx | 4 +- site/src/contexts/useProxyLatency.ts | 2 +- site/src/index.css | 8 +- .../DeploymentBanner/DeploymentBannerView.tsx | 2 +- .../management/OrganizationSidebarView.tsx | 104 ++++++------ site/src/modules/navigation.ts | 2 +- .../modules/resources/AgentApps/AgentApps.tsx | 8 +- .../resources/AgentDevcontainerCard.tsx | 42 +++-- site/src/modules/resources/AgentRow.tsx | 2 +- .../src/modules/resources/AgentRowPreview.tsx | 6 +- .../DownloadAgentLogsButton.stories.tsx | 3 +- .../resources/DownloadAgentLogsButton.tsx | 2 - .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 2 +- .../WorkspaceTiming/Chart/XAxis.tsx | 2 +- .../workspaces/WorkspaceTiming/Chart/utils.ts | 2 +- .../WorkspaceTiming/WorkspaceTimings.tsx | 2 +- .../pages/CreateUserPage/CreateUserPage.tsx | 2 +- .../CreateWorkspacePageView.stories.tsx | 5 - .../CreateWorkspacePageViewExperimental.tsx | 58 ++++--- .../LicenseSeatConsumptionChart.tsx | 19 ++- .../ManagedAgentsConsumption.tsx | 22 ++- .../OAuth2AppsSettingsPageView.tsx | 2 +- .../ObservabilitySettingsPageView.tsx | 112 ++++++------- .../OverviewPage/UserEngagementChart.tsx | 2 +- .../UserAuthSettingsPageView.tsx | 106 ++++++------ site/src/pages/GroupsPage/GroupsPageView.tsx | 114 +++++++------ .../LoginOAuthDevicePage.tsx | 4 + .../IdpSyncPage/IdpSyncPage.tsx | 14 +- .../UserTable/EditRolesButton.tsx | 41 ++--- site/src/pages/TaskPage/TaskApps.tsx | 48 +++--- site/src/pages/TaskPage/TaskPage.stories.tsx | 2 +- site/src/pages/TaskPage/TaskPage.tsx | 2 +- site/src/pages/TaskPage/TaskStatusLink.tsx | 2 +- site/src/pages/TasksPage/UsersCombobox.tsx | 2 +- .../TemplateEmbedPageExperimental.tsx | 158 +++++++++--------- .../TemplateSchedulePage/ScheduleDialog.tsx | 123 +++++++------- .../TemplateVariablesForm.tsx | 2 +- .../AppearancePage/AppearancePage.tsx | 20 +-- .../ExternalAuthPage/ExternalAuthPageView.tsx | 72 ++++---- .../SecurityPage/SecurityForm.tsx | 64 ++++--- .../WorkspaceProxyPage/WorkspaceProxyRow.tsx | 3 +- .../WorkspacePage/WorkspaceBuildProgress.tsx | 2 +- .../WorkspacePage/WorkspaceReadyPage.tsx | 2 +- .../BatchUpdateConfirmation.tsx | 14 +- site/src/serviceWorker.ts | 4 +- site/src/testHelpers/entities.ts | 24 +-- site/src/testHelpers/storybook.tsx | 2 +- site/src/theme/mui.ts | 12 -- site/src/theme/roles.ts | 4 - site/src/utils/portForward.ts | 4 +- site/vite.config.mts | 2 +- 68 files changed, 717 insertions(+), 747 deletions(-) diff --git a/.github/workflows/typos.toml b/.github/workflows/typos.toml index 6a9b07b475111..6f475668118c9 100644 --- a/.github/workflows/typos.toml +++ b/.github/workflows/typos.toml @@ -28,6 +28,7 @@ HELO = "HELO" LKE = "LKE" byt = "byt" typ = "typ" +Inferrable = "Inferrable" [files] extend-exclude = [ @@ -47,5 +48,5 @@ extend-exclude = [ "provisioner/terraform/testdata/**", # notifications' golden files confuse the detector because of quoted-printable encoding "coderd/notifications/testdata/**", - "agent/agentcontainers/testdata/devcontainercli/**" + "agent/agentcontainers/testdata/devcontainercli/**", ] diff --git a/.vscode/settings.json b/.vscode/settings.json index f2cf72b7d8ae0..eaea72e7501b5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -49,7 +49,7 @@ "[javascript][javascriptreact][json][jsonc][typescript][typescriptreact]": { "editor.defaultFormatter": "biomejs.biome", "editor.codeActionsOnSave": { - "quickfix.biome": "explicit" + "source.fixAll.biome": "explicit" // "source.organizeImports.biome": "explicit" } }, @@ -60,5 +60,7 @@ "typos.config": ".github/workflows/typos.toml", "[markdown]": { "editor.defaultFormatter": "DavidAnson.vscode-markdownlint" - } + }, + "biome.configurationPath": "./site/biome.jsonc", + "biome.lsp.bin": "./site/node_modules/.bin/biome" } diff --git a/site/biome.jsonc b/site/biome.jsonc index c08a6dc84aedc..9bb011fba8b2d 100644 --- a/site/biome.jsonc +++ b/site/biome.jsonc @@ -1,7 +1,6 @@ { "vcs": { "enabled": true, - "useIgnoreFile": true, "clientKind": "git", "root": ".." }, @@ -12,18 +11,27 @@ "linter": { "rules": { "a11y": { - "noSvgWithoutTitle": { "level": "off" }, - "useButtonType": { "level": "off" }, - "useSemanticElements": { "level": "off" } + "noSvgWithoutTitle": "off", + "useButtonType": "off", + "useSemanticElements": "off", + "noStaticElementInteractions": "off" }, "correctness": { - "noUnusedImports": "warn" + "noUnusedImports": "warn", + "useUniqueElementIds": "off", // TODO: This is new but we want to fix it + "noNestedComponentDefinitions": "off", // TODO: Investigate, since it is used by shadcn components + "noUnusedVariables": { + "level": "warn", + "options": { + "ignoreRestSiblings": true + } + } }, "style": { - "noNonNullAssertion": { "level": "off" }, - "noParameterAssign": { "level": "off" }, - "useDefaultParameterLast": { "level": "off" }, - "useSelfClosingElements": { "level": "off" }, + "noNonNullAssertion": "off", + "noParameterAssign": "off", + "useDefaultParameterLast": "off", + "useSelfClosingElements": "off", "useAsConstAssertion": "error", "useEnumInitializers": "error", "useSingleVarDeclarator": "error", @@ -49,12 +57,20 @@ } }, "suspicious": { - "noArrayIndexKey": { "level": "off" }, - "noThenProperty": { "level": "off" }, - "noConsole": { "level": "error", "options": { "allow": ["log"] } } + "noArrayIndexKey": "off", + "noThenProperty": "off", + "noTemplateCurlyInString": "off", + "useIterableCallbackReturn": "off", + "noUnknownAtRules": "off", // Allow Tailwind directives + "noConsole": { + "level": "error", + "options": { "allow": ["error", "info", "warn"] } + } }, - "nursery": {} + "complexity": { + "noImportantStyles": "off" // TODO: check and fix !important styles + } } }, - "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json" + "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json" } diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 5d456c78222c2..342b08cb28914 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -58,7 +58,7 @@ export const createOrganizationMember = async ({ password = defaultPassword, orgRoles, }: CreateOrganizationMemberOptions): Promise => { - const name = randomName(); + const _name = randomName(); const user = await API.createUser({ email, username, diff --git a/site/e2e/tests/app.spec.ts b/site/e2e/tests/app.spec.ts index 587775b4dc3f8..3cb58fcc66c34 100644 --- a/site/e2e/tests/app.spec.ts +++ b/site/e2e/tests/app.spec.ts @@ -21,7 +21,7 @@ test("app", async ({ context, page }) => { const appContent = "Hello World"; const token = randomUUID(); const srv = http - .createServer((req, res) => { + .createServer((_req, res) => { res.writeHead(200, { "Content-Type": "text/plain" }); res.end(appContent); }) diff --git a/site/e2e/tests/externalAuth.spec.ts b/site/e2e/tests/externalAuth.spec.ts index ced2a7d89c95b..712fc8f1ef9c9 100644 --- a/site/e2e/tests/externalAuth.spec.ts +++ b/site/e2e/tests/externalAuth.spec.ts @@ -17,11 +17,11 @@ test.describe.skip("externalAuth", () => { const srv = await createServer(gitAuth.webPort); // The GitHub validate endpoint returns the currently authenticated user! - srv.use(gitAuth.validatePath, (req, res) => { + srv.use(gitAuth.validatePath, (_req, res) => { res.write(JSON.stringify(ghUser)); res.end(); }); - srv.use(gitAuth.tokenPath, (req, res) => { + srv.use(gitAuth.tokenPath, (_req, res) => { const r = (Math.random() + 1).toString(36).substring(7); res.write(JSON.stringify({ access_token: r })); res.end(); @@ -51,15 +51,15 @@ test.describe.skip("externalAuth", () => { // Start a server to mock the GitHub API. const srv = await createServer(gitAuth.devicePort); - srv.use(gitAuth.validatePath, (req, res) => { + srv.use(gitAuth.validatePath, (_req, res) => { res.write(JSON.stringify(ghUser)); res.end(); }); - srv.use(gitAuth.codePath, (req, res) => { + srv.use(gitAuth.codePath, (_req, res) => { res.write(JSON.stringify(device)); res.end(); }); - srv.use(gitAuth.installationsPath, (req, res) => { + srv.use(gitAuth.installationsPath, (_req, res) => { res.write(JSON.stringify(ghInstall)); res.end(); }); @@ -72,7 +72,7 @@ test.describe.skip("externalAuth", () => { // First we send a result from the API that the token hasn't been // authorized yet to ensure the UI reacts properly. const sentPending = new Awaiter(); - srv.use(gitAuth.tokenPath, (req, res) => { + srv.use(gitAuth.tokenPath, (_req, res) => { res.write(JSON.stringify(token)); res.end(); sentPending.done(); diff --git a/site/package.json b/site/package.json index 5acbbfcdc7349..e6239d8627b08 100644 --- a/site/package.json +++ b/site/package.json @@ -125,7 +125,7 @@ "yup": "1.6.1" }, "devDependencies": { - "@biomejs/biome": "2.0.6", + "@biomejs/biome": "2.2.0", "@chromatic-com/storybook": "4.0.1", "@octokit/types": "12.3.0", "@playwright/test": "1.47.0", diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index 5413b1e4a4955..f1ed9cc8e8825 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -283,8 +283,8 @@ importers: version: 1.6.1 devDependencies: '@biomejs/biome': - specifier: 2.0.6 - version: 2.0.6 + specifier: 2.2.0 + version: 2.2.0 '@chromatic-com/storybook': specifier: 4.0.1 version: 4.0.1(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.4.1)) @@ -458,7 +458,7 @@ importers: version: 6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0) vite-plugin-checker: specifier: 0.9.3 - version: 0.9.3(@biomejs/biome@2.0.6)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)) + version: 0.9.3(@biomejs/biome@2.2.0)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)) packages: @@ -738,55 +738,55 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, tarball: https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz} - '@biomejs/biome@2.0.6': - resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==, tarball: https://registry.npmjs.org/@biomejs/biome/-/biome-2.0.6.tgz} + '@biomejs/biome@2.2.0': + resolution: {integrity: sha512-3On3RSYLsX+n9KnoSgfoYlckYBoU6VRM22cw1gB4Y0OuUVSYd/O/2saOJMrA4HFfA1Ff0eacOvMN1yAAvHtzIw==, tarball: https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.0.tgz} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.0.6': - resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.0.6.tgz} + '@biomejs/cli-darwin-arm64@2.2.0': + resolution: {integrity: sha512-zKbwUUh+9uFmWfS8IFxmVD6XwqFcENjZvEyfOxHs1epjdH3wyyMQG80FGDsmauPwS2r5kXdEM0v/+dTIA9FXAg==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.0.6': - resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.0.6.tgz} + '@biomejs/cli-darwin-x64@2.2.0': + resolution: {integrity: sha512-+OmT4dsX2eTfhD5crUOPw3RPhaR+SKVspvGVmSdZ9y9O/AgL8pla6T4hOn1q+VAFBHuHhsdxDRJgFCSC7RaMOw==, tarball: https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.0.6': - resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.6.tgz} + '@biomejs/cli-linux-arm64-musl@2.2.0': + resolution: {integrity: sha512-egKpOa+4FL9YO+SMUMLUvf543cprjevNc3CAgDNFLcjknuNMcZ0GLJYa3EGTCR2xIkIUJDVneBV3O9OcIlCEZQ==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.0.6': - resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.0.6.tgz} + '@biomejs/cli-linux-arm64@2.2.0': + resolution: {integrity: sha512-6eoRdF2yW5FnW9Lpeivh7Mayhq0KDdaDMYOJnH9aT02KuSIX5V1HmWJCQQPwIQbhDh68Zrcpl8inRlTEan0SXw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.0.6': - resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.6.tgz} + '@biomejs/cli-linux-x64-musl@2.2.0': + resolution: {integrity: sha512-I5J85yWwUWpgJyC1CcytNSGusu2p9HjDnOPAFG4Y515hwRD0jpR9sT9/T1cKHtuCvEQ/sBvx+6zhz9l9wEJGAg==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.0.6': - resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.0.6.tgz} + '@biomejs/cli-linux-x64@2.2.0': + resolution: {integrity: sha512-5UmQx/OZAfJfi25zAnAGHUMuOd+LOsliIt119x2soA2gLggQYrVPA+2kMUxR6Mw5M1deUF/AWWP2qpxgH7Nyfw==, tarball: https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@2.0.6': - resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.0.6.tgz} + '@biomejs/cli-win32-arm64@2.2.0': + resolution: {integrity: sha512-n9a1/f2CwIDmNMNkFs+JI0ZjFnMO0jdOyGNtihgUNFnlmd84yIYY2KMTBmMV58ZlVHjgmY5Y6E1hVTnSRieggA==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.0.6': - resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.0.6.tgz} + '@biomejs/cli-win32-x64@2.2.0': + resolution: {integrity: sha512-Nawu5nHjP/zPKTIryh2AavzTc/KEg4um/MxWdXW0A6P/RZOyIpa7+QSjeXwAwX/utJGaCoXRPWtF3m5U/bB3Ww==, tarball: https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.0.tgz} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -6621,39 +6621,39 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@2.0.6': + '@biomejs/biome@2.2.0': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.0.6 - '@biomejs/cli-darwin-x64': 2.0.6 - '@biomejs/cli-linux-arm64': 2.0.6 - '@biomejs/cli-linux-arm64-musl': 2.0.6 - '@biomejs/cli-linux-x64': 2.0.6 - '@biomejs/cli-linux-x64-musl': 2.0.6 - '@biomejs/cli-win32-arm64': 2.0.6 - '@biomejs/cli-win32-x64': 2.0.6 - - '@biomejs/cli-darwin-arm64@2.0.6': + '@biomejs/cli-darwin-arm64': 2.2.0 + '@biomejs/cli-darwin-x64': 2.2.0 + '@biomejs/cli-linux-arm64': 2.2.0 + '@biomejs/cli-linux-arm64-musl': 2.2.0 + '@biomejs/cli-linux-x64': 2.2.0 + '@biomejs/cli-linux-x64-musl': 2.2.0 + '@biomejs/cli-win32-arm64': 2.2.0 + '@biomejs/cli-win32-x64': 2.2.0 + + '@biomejs/cli-darwin-arm64@2.2.0': optional: true - '@biomejs/cli-darwin-x64@2.0.6': + '@biomejs/cli-darwin-x64@2.2.0': optional: true - '@biomejs/cli-linux-arm64-musl@2.0.6': + '@biomejs/cli-linux-arm64-musl@2.2.0': optional: true - '@biomejs/cli-linux-arm64@2.0.6': + '@biomejs/cli-linux-arm64@2.2.0': optional: true - '@biomejs/cli-linux-x64-musl@2.0.6': + '@biomejs/cli-linux-x64-musl@2.2.0': optional: true - '@biomejs/cli-linux-x64@2.0.6': + '@biomejs/cli-linux-x64@2.2.0': optional: true - '@biomejs/cli-win32-arm64@2.0.6': + '@biomejs/cli-win32-arm64@2.2.0': optional: true - '@biomejs/cli-win32-x64@2.0.6': + '@biomejs/cli-win32-x64@2.2.0': optional: true '@bundled-es-modules/cookie@2.0.1': @@ -12742,7 +12742,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-plugin-checker@0.9.3(@biomejs/biome@2.0.6)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)): + vite-plugin-checker@0.9.3(@biomejs/biome@2.2.0)(eslint@8.52.0)(optionator@0.9.3)(typescript@5.6.3)(vite@6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -12755,7 +12755,7 @@ snapshots: vite: 6.3.5(@types/node@20.17.16)(jiti@2.4.2)(yaml@2.7.0) vscode-uri: 3.1.0 optionalDependencies: - '@biomejs/biome': 2.0.6 + '@biomejs/biome': 2.2.0 eslint: 8.52.0 optionator: 0.9.3 typescript: 5.6.3 diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index c7fe0d893bd20..ef55e06d568a4 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -68,7 +68,7 @@ export const ActiveUserChart: FC = ({ data }) => { const item = p[0]; return `${item.value} active users`; }} - formatter={(v, n, item) => { + formatter={(_v, _n, item) => { const date = new Date(item.payload.date); return date.toLocaleString(undefined, { month: "long", diff --git a/site/src/components/Chart/Chart.tsx b/site/src/components/Chart/Chart.tsx index c68967afe6e91..dd418bfef76c3 100644 --- a/site/src/components/Chart/Chart.tsx +++ b/site/src/components/Chart/Chart.tsx @@ -271,7 +271,7 @@ export const ChartTooltipContent = React.forwardRef< ); ChartTooltipContent.displayName = "ChartTooltip"; -const ChartLegend = RechartsPrimitive.Legend; +const _ChartLegend = RechartsPrimitive.Legend; const ChartLegendContent = React.forwardRef< HTMLDivElement, diff --git a/site/src/components/Command/Command.tsx b/site/src/components/Command/Command.tsx index 88451d13b72ee..8973154f1d5c2 100644 --- a/site/src/components/Command/Command.tsx +++ b/site/src/components/Command/Command.tsx @@ -23,7 +23,7 @@ export const Command = forwardRef< /> )); -const CommandDialog: FC = ({ children, ...props }) => { +const _CommandDialog: FC = ({ children, ...props }) => { return ( @@ -132,7 +132,7 @@ export const CommandItem = forwardRef< /> )); -const CommandShortcut = ({ +const _CommandShortcut = ({ className, ...props }: React.HTMLAttributes) => { diff --git a/site/src/components/Dialog/Dialog.tsx b/site/src/components/Dialog/Dialog.tsx index 9e2af7c88b0a2..13484f1840f69 100644 --- a/site/src/components/Dialog/Dialog.tsx +++ b/site/src/components/Dialog/Dialog.tsx @@ -19,7 +19,7 @@ export const DialogTrigger = DialogPrimitive.Trigger; const DialogPortal = DialogPrimitive.Portal; -const DialogClose = DialogPrimitive.Close; +const _DialogClose = DialogPrimitive.Close; const DialogOverlay = forwardRef< ElementRef, diff --git a/site/src/components/DropdownMenu/DropdownMenu.tsx b/site/src/components/DropdownMenu/DropdownMenu.tsx index 7886db1a0f68a..8e0e1fb628dcc 100644 --- a/site/src/components/DropdownMenu/DropdownMenu.tsx +++ b/site/src/components/DropdownMenu/DropdownMenu.tsx @@ -20,13 +20,13 @@ export const DropdownMenu = DropdownMenuPrimitive.Root; export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; -const DropdownMenuGroup = DropdownMenuPrimitive.Group; +const _DropdownMenuGroup = DropdownMenuPrimitive.Group; -const DropdownMenuPortal = DropdownMenuPrimitive.Portal; +const _DropdownMenuPortal = DropdownMenuPrimitive.Portal; -const DropdownMenuSub = DropdownMenuPrimitive.Sub; +const _DropdownMenuSub = DropdownMenuPrimitive.Sub; -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; +const _DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; const DropdownMenuSubTrigger = forwardRef< ElementRef, diff --git a/site/src/components/LastSeen/LastSeen.tsx b/site/src/components/LastSeen/LastSeen.tsx index 23e9a2076984e..02c98a09bf1ce 100644 --- a/site/src/components/LastSeen/LastSeen.tsx +++ b/site/src/components/LastSeen/LastSeen.tsx @@ -12,7 +12,7 @@ interface LastSeenProps export const LastSeen: FC = ({ at, className, ...attrs }) => { const theme = useTheme(); - const t = dayjs(at); + const _t = dayjs(at); const now = new Date(); const oneHourAgo = subtractTime(now, 1, "hour"); const threeDaysAgo = subtractTime(now, 3, "day"); diff --git a/site/src/components/Latency/Latency.tsx b/site/src/components/Latency/Latency.tsx index b5509ba450847..1130dfc5c9703 100644 --- a/site/src/components/Latency/Latency.tsx +++ b/site/src/components/Latency/Latency.tsx @@ -38,17 +38,15 @@ export const Latency: FC = ({ const notAvailableText = "Latency not available"; return ( - <> - {notAvailableText} + {notAvailableText} - - + ); } diff --git a/site/src/components/PageHeader/FullWidthPageHeader.tsx b/site/src/components/PageHeader/FullWidthPageHeader.tsx index 33975c0747e41..f369c88fb619e 100644 --- a/site/src/components/PageHeader/FullWidthPageHeader.tsx +++ b/site/src/components/PageHeader/FullWidthPageHeader.tsx @@ -46,7 +46,7 @@ export const FullWidthPageHeader: FC = ({ ); }; -const PageHeaderActions: FC = ({ children }) => { +const _PageHeaderActions: FC = ({ children }) => { const theme = useTheme(); return (
= ({ const theme = useTheme(); const inputRef = useRef(null); - if (autoFocus) { - useEffect(() => { + useEffect(() => { + if (autoFocus) { inputRef.current?.focus(); - }); - } + } + }); + return ( )); -const TableFooter = React.forwardRef< +const _TableFooter = React.forwardRef< HTMLTableSectionElement, React.HTMLAttributes >(({ className, ...props }, ref) => ( @@ -129,7 +129,7 @@ export const TableCell = React.forwardRef< /> )); -const TableCaption = React.forwardRef< +const _TableCaption = React.forwardRef< HTMLTableCaptionElement, React.HTMLAttributes >(({ className, ...props }, ref) => ( diff --git a/site/src/contexts/useProxyLatency.ts b/site/src/contexts/useProxyLatency.ts index 5c55eb494f28a..a1fed6a6990d5 100644 --- a/site/src/contexts/useProxyLatency.ts +++ b/site/src/contexts/useProxyLatency.ts @@ -75,7 +75,7 @@ export const useProxyLatency = ( const [latestFetchRequest, setLatestFetchRequest] = useState( // The initial state is the current time minus the interval. Any proxies that have a latency after this // in the cache are still valid. - new Date(new Date().getTime() - proxyIntervalSeconds * 1000).toISOString(), + new Date(Date.now() - proxyIntervalSeconds * 1000).toISOString(), ); const [loaded, setLoaded] = useState(false); diff --git a/site/src/index.css b/site/src/index.css index 04b388a5cba99..854d0f4bf1cb1 100644 --- a/site/src/index.css +++ b/site/src/index.css @@ -34,7 +34,6 @@ --border-success: 142 76% 36%; --border-warning: 30.66, 97.16%, 72.35%; --border-destructive: 0 84% 60%; - --border-warning: 27 96% 61%; --border-hover: 240 5% 34%; --overlay-default: 240 5% 84% / 80%; --radius: 0.5rem; @@ -76,7 +75,6 @@ --border-success: 142 76% 36%; --border-warning: 30.66, 97.16%, 72.35%; --border-destructive: 0 91% 71%; - --border-warning: 31 97% 72%; --border-hover: 240, 5%, 34%; --overlay-default: 240 10% 4% / 80%; --highlight-purple: 252 95% 85%; @@ -104,8 +102,8 @@ https://github.com/radix-ui/primitives/issues/3251 */ html body[data-scroll-locked] { - --removed-body-scroll-bar-size: 0 !important; - margin-right: 0 !important; + --removed-body-scroll-bar-size: 0; + margin-right: 0; } /* Prevent layout shift when modals open by maintaining scrollbar width */ @@ -123,6 +121,6 @@ is likely to have set both overflow:hidden and padding-right. */ body[style*="overflow: hidden"][style*="padding-right"] { - padding-right: 0px !important; + padding-right: 0px; } } diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx index 6ae4bd90cbe1d..7552d29150a74 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx @@ -141,7 +141,7 @@ export const DeploymentBannerView: FC = ({ ) : ( - <>Status of your Coder deployment. Only visible for admins! + "Status of your Coder deployment. Only visible for admins!" ) } open={process.env.STORYBOOK === "true" ? true : undefined} diff --git a/site/src/modules/management/OrganizationSidebarView.tsx b/site/src/modules/management/OrganizationSidebarView.tsx index 3f1d489afb343..5f7fb6dd3b993 100644 --- a/site/src/modules/management/OrganizationSidebarView.tsx +++ b/site/src/modules/management/OrganizationSidebarView.tsx @@ -163,60 +163,58 @@ const OrganizationSettingsNavigation: FC< OrganizationSettingsNavigationProps > = ({ organization, orgPermissions }) => { return ( - <> -
- - Members +
+ + Members + + {orgPermissions.viewGroups && ( + + Groups - {orgPermissions.viewGroups && ( - - Groups - - )} - {orgPermissions.viewOrgRoles && ( - - Roles - - )} - {orgPermissions.viewProvisioners && - orgPermissions.viewProvisionerJobs && ( - <> - - Provisioners - - - Provisioner Keys - - - Provisioner Jobs - - - )} - {orgPermissions.viewIdpSyncSettings && ( - - IdP Sync - - )} - {orgPermissions.editSettings && ( - - Settings - + )} + {orgPermissions.viewOrgRoles && ( + + Roles + + )} + {orgPermissions.viewProvisioners && + orgPermissions.viewProvisionerJobs && ( + <> + + Provisioners + + + Provisioner Keys + + + Provisioner Jobs + + )} -
- + {orgPermissions.viewIdpSyncSettings && ( + + IdP Sync + + )} + {orgPermissions.editSettings && ( + + Settings + + )} +
); }; diff --git a/site/src/modules/navigation.ts b/site/src/modules/navigation.ts index e6ec5a3096c3f..289b54a7b0fb6 100644 --- a/site/src/modules/navigation.ts +++ b/site/src/modules/navigation.ts @@ -22,7 +22,7 @@ function withFilter(path: string, filter: string) { export const linkToAuditing = "/audit"; -const linkToUsers = withFilter("/deployment/users", "status:active"); +const _linkToUsers = withFilter("/deployment/users", "status:active"); export const linkToTemplate = (organizationName: string, templateName: string): LinkThunk => diff --git a/site/src/modules/resources/AgentApps/AgentApps.tsx b/site/src/modules/resources/AgentApps/AgentApps.tsx index 9d4e947d19412..7f91f60f4efe8 100644 --- a/site/src/modules/resources/AgentApps/AgentApps.tsx +++ b/site/src/modules/resources/AgentApps/AgentApps.tsx @@ -42,11 +42,9 @@ export const AgentApps: FC = ({ ) : ( - <> - {section.apps.map((app) => ( - - ))} - + section.apps.map((app) => ( + + )) ); }; diff --git a/site/src/modules/resources/AgentDevcontainerCard.tsx b/site/src/modules/resources/AgentDevcontainerCard.tsx index 4f1f75feff539..25579c3c7803a 100644 --- a/site/src/modules/resources/AgentDevcontainerCard.tsx +++ b/site/src/modules/resources/AgentDevcontainerCard.tsx @@ -296,28 +296,26 @@ export const AgentDevcontainerCard: FC = ({ {showSubAgentApps && (
- <> - {showVSCode && ( - - )} - {appSections.map((section, i) => ( - - ))} - + {showVSCode && ( + + )} + {appSections.map((section, i) => ( + + ))} {displayApps.includes("web_terminal") && ( = ({ Logs - +
)} diff --git a/site/src/modules/resources/AgentRowPreview.tsx b/site/src/modules/resources/AgentRowPreview.tsx index 70de1450322da..2df8b3a4d5460 100644 --- a/site/src/modules/resources/AgentRowPreview.tsx +++ b/site/src/modules/resources/AgentRowPreview.tsx @@ -93,10 +93,8 @@ export const AgentRowPreview: FC = ({ {/* We display all modules returned in agent.apps */} {agent.apps.map((app) => ( - <> - - {app.display_name} - + + {app.display_name} ))} {/* Additionally, we display any apps that are visible, e.g. diff --git a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx index b0c51f32f94a8..bd3d823b7bc0d 100644 --- a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx +++ b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx @@ -1,4 +1,4 @@ -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; +import { MockWorkspaceAgent } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { agentLogsKey } from "api/queries/workspaces"; import type { WorkspaceAgentLog } from "api/typesGenerated"; @@ -9,7 +9,6 @@ const meta: Meta = { title: "modules/resources/DownloadAgentLogsButton", component: DownloadAgentLogsButton, args: { - workspaceId: MockWorkspace.id, agent: MockWorkspaceAgent, }, parameters: { diff --git a/site/src/modules/resources/DownloadAgentLogsButton.tsx b/site/src/modules/resources/DownloadAgentLogsButton.tsx index fc7296b6c0ea0..7d27241f881df 100644 --- a/site/src/modules/resources/DownloadAgentLogsButton.tsx +++ b/site/src/modules/resources/DownloadAgentLogsButton.tsx @@ -8,13 +8,11 @@ import { type FC, useState } from "react"; import { useQueryClient } from "react-query"; type DownloadAgentLogsButtonProps = { - workspaceId: string; agent: Pick; download?: (file: Blob, filename: string) => void; }; export const DownloadAgentLogsButton: FC = ({ - workspaceId, agent, download = saveAs, }) => { diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx index 20c929406d32c..161efe260ed96 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx @@ -54,7 +54,7 @@ export const WorkspaceBuildLogs: FC = ({ }) => { const theme = useTheme(); - const processedLogs = useMemo(() => { + const _processedLogs = useMemo(() => { const allLogs = logs || []; // Add synthetic overflow message if needed diff --git a/site/src/modules/workspaces/WorkspaceTiming/Chart/XAxis.tsx b/site/src/modules/workspaces/WorkspaceTiming/Chart/XAxis.tsx index 82c385e533802..c7409f5238522 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/Chart/XAxis.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/Chart/XAxis.tsx @@ -93,7 +93,7 @@ export const XAxisRow: FC = ({ yAxisLabelId, ...htmlProps }) => { }; return ( -
{ for (const s of scales) { diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx index 35803cd660050..847b531949c00 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx @@ -218,7 +218,7 @@ const toTimeRange = (timing: { }; }; -const humanizeDuration = (durationMs: number): string => { +const _humanizeDuration = (durationMs: number): string => { const seconds = Math.floor(durationMs / 1000); const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); diff --git a/site/src/pages/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx index 6444b6d1213b6..9c47a7c1f0337 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx @@ -9,7 +9,7 @@ import { useNavigate } from "react-router"; import { pageTitle } from "utils/page"; import { CreateUserForm } from "./CreateUserForm"; -const Language = { +const _Language = { unknownError: "Oops, an unknown error occurred.", }; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index 0440634ba282b..fca022c912982 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -205,11 +205,6 @@ export const PresetNoneSelected: Story = { args: { ...PresetsButNoneSelected.args, onSubmit: (request, owner) => { - // Assert that template_version_preset_id is not present in the request - console.assert( - !("template_version_preset_id" in request), - 'template_version_preset_id should not be present when "None" is selected', - ); action("onSubmit")(request, owner); }, }, diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index 99876bfdb534d..cf1fd1746ce44 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -202,6 +202,36 @@ export const CreateWorkspacePageViewExperimental: FC< [], ); + // include any modified parameters and all touched parameters to the websocket request + const sendDynamicParamsRequest = useCallback( + ( + parameters: Array<{ parameter: PreviewParameter; value: string }>, + ownerId?: string, + ) => { + const formInputs: Record = {}; + const formParameters = form.values.rich_parameter_values ?? []; + + for (const { parameter, value } of parameters) { + formInputs[parameter.name] = value; + } + + for (const [fieldName, isTouched] of Object.entries(form.touched)) { + if ( + isTouched && + !parameters.some((p) => p.parameter.name === fieldName) + ) { + const param = formParameters.find((p) => p.name === fieldName); + if (param?.value) { + formInputs[fieldName] = param.value; + } + } + } + + sendMessage(formInputs, ownerId); + }, + [form.touched, form.values.rich_parameter_values, sendMessage], + ); + useEffect(() => { const selectedPresetOption = presetOptions[selectedPresetIndex]; let selectedPreset: TypesGen.Preset | undefined; @@ -274,35 +304,9 @@ export const CreateWorkspacePageViewExperimental: FC< form.setFieldTouched, parameters, form.values.rich_parameter_values, + sendDynamicParamsRequest, ]); - // include any modified parameters and all touched parameters to the websocket request - const sendDynamicParamsRequest = ( - parameters: Array<{ parameter: PreviewParameter; value: string }>, - ownerId?: string, - ) => { - const formInputs: Record = {}; - const formParameters = form.values.rich_parameter_values ?? []; - - for (const { parameter, value } of parameters) { - formInputs[parameter.name] = value; - } - - for (const [fieldName, isTouched] of Object.entries(form.touched)) { - if ( - isTouched && - !parameters.some((p) => p.parameter.name === fieldName) - ) { - const param = formParameters.find((p) => p.name === fieldName); - if (param?.value) { - formInputs[fieldName] = param.value; - } - } - } - - sendMessage(formInputs, ownerId); - }; - const handleOwnerChange = (user: TypesGen.User) => { setOwner(user); sendDynamicParamsRequest([], user.id); diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx index 5175aab8e38c2..3f91f58b8d678 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx @@ -81,17 +81,18 @@ export const LicenseSeatConsumptionChart: FC<

  • -
    +
    + + Legend for active users in the chart + +
    The user was active at least once during the last 90 days.
  • -
    +
    + + Legend for license seat limit in the chart +
    Current license seat limit, or the maximum number of allowed @@ -179,7 +180,7 @@ export const LicenseSeatConsumptionChart: FC< const item = p[0]; return `${item.value} seats`; }} - formatter={(v, n, item) => { + formatter={(_v, _n, item) => { const date = new Date(item.payload.date); return date.toLocaleString(undefined, { month: "long", diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/ManagedAgentsConsumption.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/ManagedAgentsConsumption.tsx index e96d86b5a4c92..08da49c96b710 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/ManagedAgentsConsumption.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/ManagedAgentsConsumption.tsx @@ -107,24 +107,22 @@ export const ManagedAgentsConsumption: FC = ({

    • -
      +
      + Legend for started workspaces +
      Amount of started workspaces with an AI agent.
    • -
      +
      + Legend for included allowance +
      Included allowance from your current license plan.
    • -
      +
      + + Legend for total limit in the chart +
      Total limit after which further AI workspace builds will be diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx index 71a914b3d1378..55ee649353158 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx @@ -93,7 +93,7 @@ type OAuth2AppRowProps = { }; const OAuth2AppRow: FC = ({ app }) => { - const theme = useTheme(); + const _theme = useTheme(); const navigate = useNavigate(); const clickableProps = useClickableTableRow({ onClick: () => navigate(`/deployment/oauth2-provider/apps/${app.id}`), diff --git a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx index 9db293958dcf3..cd152293e930b 100644 --- a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx @@ -32,68 +32,64 @@ export const ObservabilitySettingsPageView: FC< ObservabilitySettingsPageViewProps > = ({ options, featureAuditLogEnabled, isPremium }) => { return ( - <> - -
      - - Observability - + +
      + + Observability + - - } - > - - Audit Logging - - - Allow auditors to monitor user operations in your deployment. - - + + } + > + + Audit Logging + + + Allow auditors to monitor user operations in your deployment. + + - - - {featureAuditLogEnabled && !isPremium ? ( - - ) : ( - - - - - - )} + + + {featureAuditLogEnabled && !isPremium ? ( + + ) : ( + + + + + + )} - - - - - -
      + + + + + +
      -
      - - - Monitoring - - - Monitoring your Coder application with logs and metrics. - - +
      + + + Monitoring + + + Monitoring your Coder application with logs and metrics. + + - - deploymentGroupHasParent(o.group, "Introspection"), - )} - /> -
      - - + + deploymentGroupHasParent(o.group, "Introspection"), + )} + /> +
      +
      ); }; diff --git a/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx index ae2691c8bf26f..6605f5e60af80 100644 --- a/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx +++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx @@ -130,7 +130,7 @@ export const UserEngagementChart: FC = ({ data }) => { const item = p[0]; return `${item.value} users`; }} - formatter={(v, n, item) => { + formatter={(_v, _n, item) => { const date = new Date(item.payload.date); return date.toLocaleString(undefined, { month: "long", diff --git a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx index 043206bea3388..7b50eb486bf56 100644 --- a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx @@ -29,66 +29,62 @@ export const UserAuthSettingsPageView = ({ ); return ( - <> - -
      - - User Authentication - + +
      + + User Authentication + - - } - > - - Login with OpenID Connect - - - Set up authentication to login with OpenID Connect. - - + + } + > + + Login with OpenID Connect + + + Set up authentication to login with OpenID Connect. + + - {oidcEnabled ? : } + {oidcEnabled ? : } - {oidcEnabled && ( - - deploymentGroupHasParent(o.group, "OIDC"), - )} - /> - )} -
      + {oidcEnabled && ( + + deploymentGroupHasParent(o.group, "OIDC"), + )} + /> + )} +
      -
      - - } - > - - Login with GitHub - - - Set up authentication to login with GitHub. - - +
      + + } + > + + Login with GitHub + + + Set up authentication to login with GitHub. + + - - {githubEnabled ? : } - + {githubEnabled ? : } - {githubEnabled && ( - - deploymentGroupHasParent(o.group, "GitHub"), - )} - /> - )} -
      - - + {githubEnabled && ( + + deploymentGroupHasParent(o.group, "GitHub"), + )} + /> + )} +
      +
      ); }; diff --git a/site/src/pages/GroupsPage/GroupsPageView.tsx b/site/src/pages/GroupsPage/GroupsPageView.tsx index d8de2507d19d7..1eb3f6b809648 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.tsx @@ -42,66 +42,64 @@ export const GroupsPageView: FC = ({ const isEmpty = Boolean(groups && groups.length === 0); return ( - <> - - - - - - - - - Name - Users - - - - - - - - + + + + + +
      + + + Name + Users + + + + + + + + - - - - - - - Create group - - - ) - } - /> - - - + + + + + + + Create group + + + ) + } + /> + + + - - {groups?.map((group) => ( - - ))} - - - -
      -
      -
      - + + {groups?.map((group) => ( + + ))} + + + + + + ); }; diff --git a/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx b/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx index 7b06ef4b23a95..06177cfb84ccc 100644 --- a/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx +++ b/site/src/pages/LoginOAuthDevicePage/LoginOAuthDevicePage.tsx @@ -31,6 +31,10 @@ const LoginOAuthDevicePage: FC = () => { ); } + return ; +}; + +const LoginOauthDevicePageWithState: FC<{ state: string }> = ({ state }) => { const externalAuthDeviceQuery = useQuery({ ...getGitHubDevice(), refetchOnMount: false, diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx index c97793d7addf1..59a086a024b9a 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx @@ -74,6 +74,13 @@ const IdpSyncPage: FC = () => { enabled: !!field, }); + const patchGroupSyncSettingsMutation = useMutation( + patchGroupSyncSettings(organizationName, queryClient), + ); + const patchRoleSyncSettingsMutation = useMutation( + patchRoleSyncSettings(organizationName, queryClient), + ); + if (!organization) { return ; } @@ -95,13 +102,6 @@ const IdpSyncPage: FC = () => { ); } - const patchGroupSyncSettingsMutation = useMutation( - patchGroupSyncSettings(organizationName, queryClient), - ); - const patchRoleSyncSettingsMutation = useMutation( - patchRoleSyncSettings(organizationName, queryClient), - ); - const error = patchGroupSyncSettingsMutation.error || patchRoleSyncSettingsMutation.error || diff --git a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx index fd8c9e8eafb06..4983e671aa5a6 100644 --- a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx +++ b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.tsx @@ -75,25 +75,8 @@ interface EditRolesButtonProps { userLoginType?: string; } -export const EditRolesButton: FC = ({ - roles, - selectedRoleNames, - onChange, - isLoading, - userLoginType, - oidcRoleSync, -}) => { - const handleChange = (roleName: string) => { - if (selectedRoleNames.has(roleName)) { - const serialized = [...selectedRoleNames]; - onChange(serialized.filter((role) => role !== roleName)); - return; - } - - onChange([...selectedRoleNames, roleName]); - }; - const [isAdvancedOpen, setIsAdvancedOpen] = useState(false); - +export const EditRolesButton: FC = (props) => { + const { userLoginType, oidcRoleSync } = props; const canSetRoles = userLoginType !== "oidc" || (userLoginType === "oidc" && !oidcRoleSync); @@ -111,6 +94,26 @@ export const EditRolesButton: FC = ({ ); } + return ; +}; + +const EnabledEditRolesButton: FC = ({ + roles, + selectedRoleNames, + onChange, + isLoading, +}) => { + const handleChange = (roleName: string) => { + if (selectedRoleNames.has(roleName)) { + const serialized = [...selectedRoleNames]; + onChange(serialized.filter((role) => role !== roleName)); + return; + } + + onChange([...selectedRoleNames, roleName]); + }; + const [isAdvancedOpen, setIsAdvancedOpen] = useState(false); + const filteredRoles = roles.filter( (role) => role.name !== "organization-workspace-creation-ban", ); diff --git a/site/src/pages/TaskPage/TaskApps.tsx b/site/src/pages/TaskPage/TaskApps.tsx index 34891471731f5..26d8562d1ebd2 100644 --- a/site/src/pages/TaskPage/TaskApps.tsx +++ b/site/src/pages/TaskPage/TaskApps.tsx @@ -125,7 +125,6 @@ type TaskExternalAppsDropdownProps = { const TaskExternalAppsDropdown: FC = ({ task, - agents, externalApps, }) => { return ( @@ -138,31 +137,40 @@ const TaskExternalAppsDropdown: FC = ({ - {externalApps.map(({ app, agent }) => { - const link = useAppLink(app, { - agent, - workspace: task.workspace, - }); - - return ( - - - {app.icon ? ( - - ) : ( - - )} - {link.label} - - - ); - })} + {externalApps.map(({ app, agent }) => ( + + ))}
      ); }; +const ExternalAppMenuItem: FC<{ + app: WorkspaceApp; + agent: WorkspaceAgent; + task: Task; +}> = ({ app, agent, task }) => { + const link = useAppLink(app, { + agent, + workspace: task.workspace, + }); + + return ( + + + {app.icon ? : } + {link.label} + + + ); +}; + type TaskAppTabProps = { task: Task; app: WorkspaceApp; diff --git a/site/src/pages/TaskPage/TaskPage.stories.tsx b/site/src/pages/TaskPage/TaskPage.stories.tsx index 218fa527a23cf..6a486442ace8c 100644 --- a/site/src/pages/TaskPage/TaskPage.stories.tsx +++ b/site/src/pages/TaskPage/TaskPage.stories.tsx @@ -36,7 +36,7 @@ type Story = StoryObj; export const Loading: Story = { beforeEach: () => { spyOn(data, "fetchTask").mockImplementation( - () => new Promise((res) => 1000 * 60 * 60), + () => new Promise((_res) => 1000 * 60 * 60), ); }, }; diff --git a/site/src/pages/TaskPage/TaskPage.tsx b/site/src/pages/TaskPage/TaskPage.tsx index b941f373e1965..7017986c7b686 100644 --- a/site/src/pages/TaskPage/TaskPage.tsx +++ b/site/src/pages/TaskPage/TaskPage.tsx @@ -95,7 +95,7 @@ const TaskPage = () => { } let content: ReactNode = null; - const terminatedStatuses: WorkspaceStatus[] = [ + const _terminatedStatuses: WorkspaceStatus[] = [ "canceled", "canceling", "deleted", diff --git a/site/src/pages/TaskPage/TaskStatusLink.tsx b/site/src/pages/TaskPage/TaskStatusLink.tsx index 41dff13c9de83..7fbc74d937d23 100644 --- a/site/src/pages/TaskPage/TaskStatusLink.tsx +++ b/site/src/pages/TaskPage/TaskStatusLink.tsx @@ -50,7 +50,7 @@ export const TaskStatusLink: FC = ({ uri }) => { } break; } - } catch (error) { + } catch (_error) { // Invalid URL, probably. } diff --git a/site/src/pages/TasksPage/UsersCombobox.tsx b/site/src/pages/TasksPage/UsersCombobox.tsx index e3f8de2bbca56..603085f28d678 100644 --- a/site/src/pages/TasksPage/UsersCombobox.tsx +++ b/site/src/pages/TasksPage/UsersCombobox.tsx @@ -42,7 +42,7 @@ export const UsersCombobox: FC = ({ const usersQuery = useQuery({ ...users({ q: debouncedSearch }), select: (data) => - data.users.toSorted((a, b) => { + data.users.toSorted((a, _b) => { return selectedOption && a.username === selectedOption.value ? -1 : 0; }), placeholderData: keepPreviousData, diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx index 010c765007aef..e1f53cb6af6a6 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx @@ -39,7 +39,7 @@ const TemplateEmbedPageExperimental: FC = () => { const [wsError, setWsError] = useState(null); const sendMessage = useEffectEvent( - (formValues: Record, ownerId?: string) => { + (formValues: Record, _ownerId?: string) => { const request: DynamicParametersRequest = { id: wsResponseId.current + 1, owner_id: me.id, @@ -187,90 +187,88 @@ const TemplateEmbedPageView: FC = ({ }; return ( - <> -
      -
      - {isLoading ? ( -
      -
      - - -
      -
      - - -
      -
      - - -
      +
      +
      + {isLoading ? ( +
      +
      + +
      - ) : ( - <> - {Boolean(error) && } - {diagnostics.length > 0 && ( - - )} -
      -
      -
      -

      Creation mode

      -

      - When set to automatic mode, clicking the button will - create the workspace automatically without displaying a - form to the user. -

      +
      + + +
      +
      + + +
      +
      + ) : ( + <> + {Boolean(error) && } + {diagnostics.length > 0 && ( + + )} +
      +
      +
      +

      Creation mode

      +

      + When set to automatic mode, clicking the button will create + the workspace automatically without displaying a form to the + user. +

      +
      + { + setFormState((prev) => ({ + ...prev, + mode: v as "manual" | "auto", + })); + }} + > +
      + +
      - { - setFormState((prev) => ({ - ...prev, - mode: v as "manual" | "auto", - })); - }} - > -
      - - -
      -
      - - -
      -
      -
      - - - - {parameters.length > 0 && ( -
      - {parameters.map((parameter) => { - const isDisabled = parameter.styling?.disabled; - return ( - handleChange(parameter, value)} - disabled={isDisabled} - value={formState.paramValues[parameter.name] || ""} - /> - ); - })} +
      + +
      - )} -
      - - )} -
      + +
      + + - + {parameters.length > 0 && ( +
      + {parameters.map((parameter) => { + const isDisabled = parameter.styling?.disabled; + return ( + handleChange(parameter, value)} + disabled={isDisabled} + value={formState.paramValues[parameter.name] || ""} + /> + ); + })} +
      + )} +
      + + )}
      - + + +
      ); }; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx index 33385da6cab7f..9c3ac62692155 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx @@ -62,71 +62,66 @@ export const ScheduleDialog: FC = ({ >

      {title}

      - <> - {showDormancyWarning && ( - <> -

      Dormancy Threshold

      -

      - This change will result in{" "} - {inactiveWorkspacesToGoDormant}{" "} - {inactiveWorkspacesToGoDormant === 1 - ? "workspace" - : "workspaces"}{" "} - being immediately transitioned to the dormant state and{" "} - {inactiveWorkspacesToGoDormantInWeek}{" "} - {inactiveWorkspacesToGoDormantInWeek === 1 - ? "workspace" - : "workspaces"}{" "} - over the next 7 days. To prevent this, do you want to reset the - inactivity period for all template workspaces? -

      - { - updateInactiveWorkspaces(e.target.checked); - }} - /> - } - label="Prevent Dormancy - Reset all workspace inactivity periods" - /> - - )} - {showDeletionWarning && ( - <> -

      Dormancy Auto-Deletion

      -

      - This change will result in{" "} - {dormantWorkspacesToBeDeleted}{" "} - {dormantWorkspacesToBeDeleted === 1 - ? "workspace" - : "workspaces"}{" "} - being immediately deleted and{" "} - {dormantWorkspacesToBeDeletedInWeek}{" "} - {dormantWorkspacesToBeDeletedInWeek === 1 - ? "workspace" - : "workspaces"}{" "} - over the next 7 days. To prevent this, do you want to reset the - dormancy period for all template workspaces? -

      - { - updateDormantWorkspaces(e.target.checked); - }} - /> - } - label="Prevent Deletion - Reset all workspace dormancy periods" - /> - - )} - + {showDormancyWarning && ( + <> +

      Dormancy Threshold

      +

      + This change will result in{" "} + {inactiveWorkspacesToGoDormant}{" "} + {inactiveWorkspacesToGoDormant === 1 ? "workspace" : "workspaces"}{" "} + being immediately transitioned to the dormant state and{" "} + {inactiveWorkspacesToGoDormantInWeek}{" "} + {inactiveWorkspacesToGoDormantInWeek === 1 + ? "workspace" + : "workspaces"}{" "} + over the next 7 days. To prevent this, do you want to reset the + inactivity period for all template workspaces? +

      + { + updateInactiveWorkspaces(e.target.checked); + }} + /> + } + label="Prevent Dormancy - Reset all workspace inactivity periods" + /> + + )} + + {showDeletionWarning && ( + <> +

      Dormancy Auto-Deletion

      +

      + This change will result in{" "} + {dormantWorkspacesToBeDeleted}{" "} + {dormantWorkspacesToBeDeleted === 1 ? "workspace" : "workspaces"}{" "} + being immediately deleted and{" "} + {dormantWorkspacesToBeDeletedInWeek}{" "} + {dormantWorkspacesToBeDeletedInWeek === 1 + ? "workspace" + : "workspaces"}{" "} + over the next 7 days. To prevent this, do you want to reset the + dormancy period for all template workspaces? +

      + { + updateDormantWorkspaces(e.target.checked); + }} + /> + } + label="Prevent Deletion - Reset all workspace dormancy periods" + /> + + )}
      diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx index 4c0bb7f8c8ab8..b33b0042c3f2d 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx @@ -161,7 +161,7 @@ const selectInitialUserVariableValues = ( }; const ValidationSchemaForTemplateVariables = ( - ns: string, + _ns: string, templateVariables: TemplateVersionVariable[], ): Yup.AnySchema => { return Yup.array() diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx index c91840f6ee9cc..40294ee9ca5a3 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx @@ -29,17 +29,15 @@ const AppearancePage: FC = () => { } return ( - <> - - + ); }; diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx index b4924a5a09381..617e3bde52b34 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx @@ -59,43 +59,41 @@ export const ExternalAuthPageView: FC = ({ } return ( - <> - - - - - Application - - - Link to connect - - - - - - - {auths.providers === null || auths.providers?.length === 0 ? ( - - ) : ( - auths.providers?.map((app) => ( - l.provider_id === app.id)} - onUnlinkExternalAuth={() => { - onUnlinkExternalAuth(app.id); - }} - onValidateExternalAuth={() => { - onValidateExternalAuth(app.id); - }} - /> - )) - )} - -
      -
      - + + + + + Application + + + Link to connect + + + + + + + {auths.providers === null || auths.providers?.length === 0 ? ( + + ) : ( + auths.providers?.map((app) => ( + l.provider_id === app.id)} + onUnlinkExternalAuth={() => { + onUnlinkExternalAuth(app.id); + }} + onValidateExternalAuth={() => { + onValidateExternalAuth(app.id); + }} + /> + )) + )} + +
      +
      ); }; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx index 8a050f710d0f4..dc320a58d5ff3 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx @@ -73,39 +73,37 @@ export const SecurityForm: FC = ({ } return ( - <> -
      - - {Boolean(error) && } - - - + + + {Boolean(error) && } + + + -
      - -
      -
      - - +
      + +
      +
      + ); }; diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx index 591e4bce59aae..417a5d731e33d 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx @@ -33,7 +33,6 @@ export const ProxyRow: FC = ({ proxy, latency }) => { case "http/1.0": case "http/1.1": extraWarnings.push( - // biome-ignore lint/style/useTemplate: easier to read short lines `Requests to the proxy from current browser are using "${latency.nextHopProtocol}". ` + "The proxy server might not support HTTP/2. " + "For usability reasons, HTTP/2 or above is recommended. " + @@ -141,7 +140,7 @@ const ProxyMessagesList: FC = ({ title, messages }) => { const theme = useTheme(); if (!messages) { - return <>; + return null; } return ( diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx index 306da719be0ca..bf61f8de6649c 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx @@ -117,7 +117,7 @@ export const WorkspaceBuildProgress: FC = ({ // HACK: the codersdk type generator doesn't support null values, but this // can be null when the template is new. if ((transitionStats.P50 as number | null) === null) { - return <>; + return null; } return (
      diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index bba5f83b5720f..667df7cd34252 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -211,7 +211,7 @@ export const WorkspaceReadyPage: FC = ({ hasEphemeral: ephemeralParameters.length > 0, ephemeralParameters, }; - } catch (error) { + } catch (_error) { return { hasEphemeral: false, ephemeralParameters: [] }; } }; diff --git a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx index 977fe42a1611f..879f27d53c8ae 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx @@ -264,17 +264,9 @@ const DormantWorkspaces: FC = ({ workspaces }) => { return ( <>

      - {workspaces.length === 1 ? ( - <> - This selected workspace is dormant, and must be activated before it - can be updated. - - ) : ( - <> - These selected workspaces are dormant, and must be activated before - they can be updated. - - )} + {workspaces.length === 1 + ? "This selected workspace is dormant, and must be activated before it can be updated." + : "These selected workspaces are dormant, and must be activated before they can be updated."}

        {workspaces.map((workspace) => ( diff --git a/site/src/serviceWorker.ts b/site/src/serviceWorker.ts index bc99983e02a6c..462e3e2084bf1 100644 --- a/site/src/serviceWorker.ts +++ b/site/src/serviceWorker.ts @@ -2,10 +2,10 @@ import type { WebpushMessage } from "api/typesGenerated"; -// @ts-ignore +// @ts-expect-error declare const self: ServiceWorkerGlobalScope; -self.addEventListener("install", (event) => { +self.addEventListener("install", (_event) => { self.skipWaiting(); }); diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 8aac9f6233615..e0f692dacbfec 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -614,7 +614,7 @@ const MockUserAuthProvisioner: TypesGen.ProvisionerDaemon = { tags: { scope: "user" }, }; -const MockPskProvisioner: TypesGen.ProvisionerDaemon = { +const _MockPskProvisioner: TypesGen.ProvisionerDaemon = { ...MockProvisioner, id: "test-psk-provisioner", key_id: MockProvisionerPskKey.id, @@ -622,7 +622,7 @@ const MockPskProvisioner: TypesGen.ProvisionerDaemon = { name: "Test psk provisioner", }; -const MockKeyProvisioner: TypesGen.ProvisionerDaemon = { +const _MockKeyProvisioner: TypesGen.ProvisionerDaemon = { ...MockProvisioner, id: "test-key-provisioner", key_id: MockProvisionerKey.id, @@ -632,7 +632,7 @@ const MockKeyProvisioner: TypesGen.ProvisionerDaemon = { tags: MockProvisionerKey.tags, }; -const MockProvisioner2: TypesGen.ProvisionerDaemon = { +const _MockProvisioner2: TypesGen.ProvisionerDaemon = { ...MockProvisioner, id: "test-provisioner-2", name: "Test Provisioner 2", @@ -831,7 +831,7 @@ export const MockTemplate: TypesGen.Template = { cors_behavior: "simple", }; -const MockTemplateVersionFiles: TemplateVersionFiles = { +const _MockTemplateVersionFiles: TemplateVersionFiles = { "README.md": "# Example\n\nThis is an example template.", "main.tf": `// Provides info about the workspace. data "coder_workspace" "me" {} @@ -1201,7 +1201,7 @@ export const MockWorkspaceResourceMultipleAgents: TypesGen.WorkspaceResource = { ], }; -const MockWorkspaceResourceHidden: TypesGen.WorkspaceResource = { +const _MockWorkspaceResourceHidden: TypesGen.WorkspaceResource = { ...MockWorkspaceResource, id: "test-workspace-resource-hidden", name: "workspace-resource-hidden", @@ -1244,7 +1244,7 @@ export const MockWorkspaceContainerResource: TypesGen.WorkspaceResource = { daily_cost: 0, }; -const MockWorkspaceAutostartDisabled: TypesGen.UpdateWorkspaceAutostartRequest = +const _MockWorkspaceAutostartDisabled: TypesGen.UpdateWorkspaceAutostartRequest = { schedule: "", }; @@ -1554,7 +1554,7 @@ export const MockOutdatedStoppedWorkspaceRequireActiveVersion: TypesGen.Workspac }, }; -const MockOutdatedStoppedWorkspaceAlwaysUpdate: TypesGen.Workspace = { +const _MockOutdatedStoppedWorkspaceAlwaysUpdate: TypesGen.Workspace = { ...MockOutdatedRunningWorkspaceAlwaysUpdate, latest_build: { ...MockWorkspaceBuild, @@ -1583,7 +1583,7 @@ export const MockWorkspacesResponse: TypesGen.WorkspacesResponse = { count: 26, }; -const MockWorkspacesResponseWithDeletions = { +const _MockWorkspacesResponseWithDeletions = { workspaces: [...MockWorkspacesResponse.workspaces, MockWorkspaceWithDeletion], count: MockWorkspacesResponse.count + 1, }; @@ -1738,7 +1738,7 @@ export const MockWorkspaceRichParametersRequest: TypesGen.CreateWorkspaceRequest ], }; -const MockUserAgent = { +const _MockUserAgent = { browser: "Chrome 99.0.4844", device: "Other", ip_address: "11.22.33.44", @@ -2420,7 +2420,7 @@ export const MockEntitlements: TypesGen.Entitlements = { refreshed_at: "2022-05-20T16:45:57.122Z", }; -const MockEntitlementsWithWarnings: TypesGen.Entitlements = { +const _MockEntitlementsWithWarnings: TypesGen.Entitlements = { errors: [], warnings: ["You are over your active user limit.", "And another thing."], has_license: true, @@ -2490,7 +2490,7 @@ export const MockEntitlementsWithScheduling: TypesGen.Entitlements = { }), }; -const MockEntitlementsWithUserLimit: TypesGen.Entitlements = { +const _MockEntitlementsWithUserLimit: TypesGen.Entitlements = { errors: [], warnings: [], has_license: true, @@ -2667,7 +2667,7 @@ export const MockAuditLogGitSSH: TypesGen.AuditLog = { }, }; -const MockAuditOauthConvert: TypesGen.AuditLog = { +const _MockAuditOauthConvert: TypesGen.AuditLog = { ...MockAuditLog, resource_type: "convert_login", resource_target: "oidc", diff --git a/site/src/testHelpers/storybook.tsx b/site/src/testHelpers/storybook.tsx index 2790ced99a8ae..4561d7b7348c6 100644 --- a/site/src/testHelpers/storybook.tsx +++ b/site/src/testHelpers/storybook.tsx @@ -106,7 +106,7 @@ export const withWebSocket = (Story: FC, { parameters }: StoryContext) => { }, 0); } - removeEventListener(type: string, callback: CallbackFn) {} + removeEventListener(_type: string, _callback: CallbackFn) {} close() {} } as unknown as typeof window.WebSocket; diff --git a/site/src/theme/mui.ts b/site/src/theme/mui.ts index 743d6d90023b0..fc20b0a9f9be1 100644 --- a/site/src/theme/mui.ts +++ b/site/src/theme/mui.ts @@ -12,18 +12,6 @@ import { } from "./constants"; import tw from "./tailwindColors"; -type PaletteIndex = - | "primary" - | "secondary" - | "background" - | "text" - | "error" - | "warning" - | "info" - | "success" - | "action" - | "neutral"; - // biome-ignore lint/suspicious/noExplicitAny: needed for MUI overrides type MuiStyle = any; diff --git a/site/src/theme/roles.ts b/site/src/theme/roles.ts index b83bd6ad15f09..702cebf1ad158 100644 --- a/site/src/theme/roles.ts +++ b/site/src/theme/roles.ts @@ -1,9 +1,5 @@ export type ThemeRole = keyof Roles; -type InteractiveThemeRole = keyof { - [K in keyof Roles as Roles[K] extends InteractiveRole ? K : never]: unknown; -}; - export interface Roles { /** Something is wrong; either unexpectedly, or in a meaningful way. */ error: Role; diff --git a/site/src/utils/portForward.ts b/site/src/utils/portForward.ts index 448c521155ac2..78dae8c1543ff 100644 --- a/site/src/utils/portForward.ts +++ b/site/src/utils/portForward.ts @@ -65,7 +65,7 @@ export const openMaybePortForwardedURL = ( open( portForwardURL( proxyHost, - Number.parseInt(url.port), + Number.parseInt(url.port, 10), agentName, workspaceName, username, @@ -74,7 +74,7 @@ export const openMaybePortForwardedURL = ( url.search, ), ); - } catch (ex) { + } catch (_ex) { open(uri); } }; diff --git a/site/vite.config.mts b/site/vite.config.mts index f2f9650a6c6d9..d2da0a1a93752 100644 --- a/site/vite.config.mts +++ b/site/vite.config.mts @@ -89,7 +89,7 @@ export default defineConfig({ // Vite does not catch socket errors, and stops the webserver. // As /logs endpoint can return HTTP 4xx status, we need to embrace // Vite with a custom error handler to prevent from quitting. - proxy.on("proxyReqWs", (proxyReq, req, socket) => { + proxy.on("proxyReqWs", (proxyReq, _req, socket) => { if (process.env.NODE_ENV === "development") { proxyReq.setHeader( "origin", From 7e0e8dc858a83f4e060b0c5b89cee83ef78e4fc6 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Thu, 14 Aug 2025 21:13:15 +0000 Subject: [PATCH 3/3] Fix type issues --- site/src/components/Latency/Latency.tsx | 2 -- site/src/serviceWorker.ts | 1 - 2 files changed, 3 deletions(-) diff --git a/site/src/components/Latency/Latency.tsx b/site/src/components/Latency/Latency.tsx index 1130dfc5c9703..de5c5dc2851b8 100644 --- a/site/src/components/Latency/Latency.tsx +++ b/site/src/components/Latency/Latency.tsx @@ -38,8 +38,6 @@ export const Latency: FC = ({ const notAvailableText = "Latency not available"; return ( - {notAvailableText} - { pFad - Phonifier reborn

        Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

        Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


        Alternative Proxies:

        Alternative Proxy

        pFad Proxy

        pFad v3 Proxy

        pFad v4 Proxy