From aa81238cd0519b32e6567248ba120105a26b5e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayla=20=E3=81=AF=E3=81=AA?= Date: Thu, 26 Mar 2026 16:04:24 -0600 Subject: [PATCH] chore: modernize all typescript imports (#23511) --- site/jest.setup.ts | 2 +- site/src/@types/emotion.d.ts | 2 +- site/src/@types/storybook.d.ts | 2 +- site/src/api/api.test.ts | 2 +- site/src/api/errors.test.ts | 2 +- site/src/api/queries/appearance.ts | 2 +- site/src/api/queries/audits.ts | 2 +- site/src/api/queries/authCheck.ts | 2 +- site/src/api/queries/buildInfo.ts | 2 +- site/src/api/queries/connectionlog.ts | 2 +- site/src/api/queries/entitlements.ts | 2 +- site/src/api/queries/experiments.ts | 2 +- site/src/api/queries/groups.ts | 2 +- site/src/api/queries/organizations.ts | 24 +++++------ site/src/api/queries/users.ts | 10 ++--- site/src/api/queries/util.ts | 2 +- site/src/api/queries/workspaces.ts | 8 ++-- .../components/Alert/ErrorAlert.stories.tsx | 2 +- site/src/components/Avatar/Avatar.tsx | 2 +- .../Breadcrumb/Breadcrumb.stories.tsx | 2 +- .../components/CodeExample/CodeExample.tsx | 2 +- site/src/components/CopyButton/CopyButton.tsx | 2 +- .../CopyableValue/CopyableValue.tsx | 4 +- .../ConfirmDialog/ConfirmDialog.test.tsx | 2 +- .../DeleteDialog/DeleteDialog.test.tsx | 2 +- .../ErrorBoundary/GlobalErrorBoundary.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 | 2 +- .../Filter/SelectFilter.stories.tsx | 2 +- site/src/components/IconField/EmojiPicker.tsx | 4 +- .../components/InfoTooltip/InfoTooltip.tsx | 2 +- site/src/components/Logs/LogLine.stories.tsx | 2 +- site/src/components/Logs/LogLine.tsx | 2 +- site/src/components/Logs/Logs.stories.tsx | 4 +- site/src/components/Margins/Margins.tsx | 2 +- site/src/components/Markdown/Markdown.tsx | 2 +- .../MultiSelectCombobox.stories.tsx | 2 +- .../MultiSelectCombobox.tsx | 2 +- .../MultiMemberSelect.stories.tsx | 2 +- .../MultiUserSelect.stories.tsx | 2 +- .../OrganizationAutocomplete.stories.tsx | 8 ++-- .../PaginationWidget/PaginationContainer.tsx | 2 +- .../PaginationWidgetBase.test.tsx | 2 +- .../PasswordField/PasswordField.tsx | 2 +- site/src/components/Pill/Pill.tsx | 2 +- .../RichParameterInput.stories.tsx | 2 +- .../components/SearchField/SearchField.tsx | 2 +- .../SelectMenu/SelectMenu.stories.tsx | 2 +- .../MemberAutocomplete.stories.tsx | 2 +- .../UserAutocomplete.stories.tsx | 2 +- .../UserAutocomplete/UserAutocomplete.tsx | 2 +- site/src/contexts/ProxyContext.test.tsx | 14 +++---- site/src/contexts/ProxyContext.tsx | 2 +- site/src/contexts/ThemeProvider.tsx | 4 +- site/src/contexts/auth/AuthProvider.tsx | 4 +- site/src/contexts/auth/RequireAuth.test.tsx | 12 +++--- site/src/contexts/auth/RequireAuth.tsx | 2 +- site/src/contexts/useWebpushNotifications.ts | 2 +- site/src/hooks/useEmbeddedMetadata.test.ts | 6 +-- site/src/hooks/useEmbeddedMetadata.ts | 2 +- site/src/hooks/usePaginatedQuery.test.ts | 2 +- site/src/hooks/useSearchParamsKey.test.ts | 2 +- site/src/modules/apps/apps.test.ts | 2 +- .../BuildAvatar/BuildAvatar.stories.tsx | 2 +- .../builds/BuildAvatar/BuildAvatar.tsx | 2 +- .../AnnouncementBanners.tsx | 2 +- .../dashboard/DashboardLayout.test.tsx | 10 ++--- .../src/modules/dashboard/DashboardLayout.tsx | 4 +- .../modules/dashboard/DashboardProvider.tsx | 4 +- .../DeploymentBannerView.stories.tsx | 6 +-- .../dashboard/LicenseBanner/LicenseBanner.tsx | 2 +- .../LicenseBannerView.stories.tsx | 2 +- .../dashboard/Navbar/DeploymentDropdown.tsx | 2 +- .../dashboard/Navbar/MobileMenu.stories.tsx | 10 ++--- site/src/modules/dashboard/Navbar/Navbar.tsx | 6 +-- .../dashboard/Navbar/NavbarView.stories.tsx | 10 +++-- .../modules/dashboard/Navbar/NavbarView.tsx | 6 +-- .../dashboard/Navbar/ProxyMenu.stories.tsx | 16 ++++---- .../UserDropdown/UserDropdown.stories.tsx | 4 +- .../UserDropdown/UserDropdownContent.test.tsx | 4 +- .../UserDropdown/UserDropdownContent.tsx | 2 +- .../modules/dashboard/useUpdateCheck.test.tsx | 4 +- .../management/DeploymentSettingsLayout.tsx | 4 +- .../modules/management/DeploymentSidebar.tsx | 2 +- .../DeploymentSidebarView.stories.tsx | 6 +-- .../management/DeploymentSidebarView.tsx | 2 +- .../management/OrganizationSettingsLayout.tsx | 10 ++--- .../management/OrganizationSidebar.tsx | 2 +- .../OrganizationSidebarView.stories.tsx | 10 ++--- .../management/OrganizationSidebarView.tsx | 4 +- site/src/modules/navigation.ts | 2 +- .../NotificationsInbox/InboxItem.stories.tsx | 2 +- .../InboxPopover.stories.tsx | 2 +- .../NotificationsInbox.stories.tsx | 4 +- .../NotificationsInbox/NotificationsInbox.tsx | 2 +- .../provisioners/ProvisionerAlert.stories.tsx | 2 +- .../modules/provisioners/ProvisionerAlert.tsx | 2 +- .../ProvisionerStatusAlert.stories.tsx | 4 +- .../provisioners/ProvisionerTagsField.tsx | 2 +- .../AgentDevcontainerCard.stories.tsx | 14 +++---- .../resources/AgentDevcontainerCard.tsx | 2 +- .../resources/AgentExternal.stories.tsx | 6 +-- .../modules/resources/AgentRow.stories.tsx | 14 +++---- site/src/modules/resources/AgentRow.test.tsx | 2 +- site/src/modules/resources/AgentRow.tsx | 2 +- .../resources/AgentRowPreview.stories.tsx | 2 +- .../resources/AgentRowPreview.test.tsx | 4 +- site/src/modules/resources/AgentVersion.tsx | 2 +- .../resources/AppLink/AppLink.stories.tsx | 8 ++-- .../resources/AppLink/AppLink.test.tsx | 6 +-- .../src/modules/resources/AppLink/AppLink.tsx | 4 +- .../DownloadAgentLogsButton.stories.tsx | 2 +- .../resources/PortForwardButton.stories.tsx | 8 ++-- .../resources/PortForwardButton.test.tsx | 6 +-- .../modules/resources/PortForwardButton.tsx | 2 +- .../PortForwardPopoverView.stories.tsx | 6 +-- .../resources/ResourceAvatar.stories.tsx | 2 +- .../resources/ResourceCard.stories.tsx | 4 +- .../modules/resources/ResourceCard.test.tsx | 4 +- .../modules/resources/Resources.stories.tsx | 6 +-- .../resources/SSHButton/SSHButton.stories.tsx | 10 ++--- .../TerminalLink/TerminalLink.stories.tsx | 2 +- .../resources/TerminalLink/TerminalLink.tsx | 2 +- .../VSCodeDesktopButton.stories.tsx | 2 +- .../VSCodeDesktopButton.tsx | 2 +- .../VSCodeDevContainerButton.stories.tsx | 2 +- .../resources/WildcardHostnameWarning.tsx | 2 +- .../resources/useAgentContainers.jest.tsx | 12 +++--- .../modules/resources/useAgentContainers.ts | 2 +- .../modules/resources/useAgentLogs.jest.ts | 10 ++--- .../TaskDeleteDialog.stories.tsx | 4 +- .../TaskFeedbackDialog.stories.tsx | 4 +- .../tasks/TaskPrompt/TaskPrompt.stories.tsx | 14 +++---- .../modules/tasks/TaskPrompt/TaskPrompt.tsx | 4 +- .../TemplateVersionSelect.stories.tsx | 2 +- .../TasksSidebar/TasksSidebar.stories.tsx | 14 +++---- .../tasks/TasksSidebar/TasksSidebar.tsx | 2 +- .../TasksSidebar/UserCombobox.stories.tsx | 4 +- .../tasks/TasksSidebar/UserCombobox.tsx | 2 +- .../TemplateExampleCard.stories.tsx | 6 +-- .../TemplateFileTree.stories.tsx | 2 +- .../TemplateFiles/TemplateFiles.stories.tsx | 4 +- .../templates/TemplateFiles/TemplateFiles.tsx | 2 +- .../TemplateResourcesTable.stories.tsx | 4 +- .../TemplateResourcesTable.tsx | 4 +- .../modules/templates/useWatchVersionLogs.ts | 2 +- .../DynamicParameter.jest.tsx | 2 +- .../DynamicParameter.stories.tsx | 2 +- .../WorkspaceAppStatus.stories.tsx | 4 +- .../WorkspaceAppStatus/WorkspaceAppStatus.tsx | 2 +- .../WorkspaceBuildData.stories.tsx | 2 +- .../WorkspaceBuildLogs.stories.tsx | 4 +- .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 2 +- .../WorkspaceDormantBadge.stories.tsx | 2 +- .../ChangeWorkspaceVersionDialog.stories.tsx | 6 +-- .../ChangeWorkspaceVersionDialog.tsx | 2 +- .../DownloadLogsDialog.stories.tsx | 4 +- .../WorkspaceDeleteDialog.stories.tsx | 6 +-- .../useWorkspaceDuplication.jest.tsx | 10 ++--- .../useWorkspaceDuplication.ts | 2 +- .../WorkspaceOutdatedTooltip.stories.tsx | 8 ++-- .../WorkspaceOutdatedTooltip.tsx | 2 +- .../AddWorkspaceUserOrGroup.tsx | 16 ++++---- .../UserOrGroupAutocomplete.tsx | 2 +- .../WorkspaceSharingForm.tsx | 2 +- .../WorkspaceStatus.stories.tsx | 2 +- .../WorkspaceStatusIndicator.stories.tsx | 6 +-- .../WorkspaceStatusIndicator.tsx | 2 +- .../WorkspaceTimings.stories.tsx | 2 +- .../workspaces/WorkspaceUpdateDialogs.tsx | 4 +- site/src/modules/workspaces/health.test.ts | 12 +++--- .../ListSessionsPage/ListSessionsPage.tsx | 6 +-- .../ListSessionsPageView.stories.tsx | 2 +- .../ListSessionsRow.stories.tsx | 2 +- .../RequestLogsPage/RequestLogsPage.tsx | 6 +-- .../RequestLogsPageView.stories.tsx | 10 ++--- .../RequestLogsRow/RequestLogsRow.stories.tsx | 2 +- .../SessionSummaryTable.stories.tsx | 2 +- .../pages/AgentsPage/AgentDetail.stories.tsx | 22 +++++----- site/src/pages/AgentsPage/AgentDetail.tsx | 10 ++--- site/src/pages/AgentsPage/AgentEmbedPage.tsx | 4 +- .../AgentSettingsPageView.stories.tsx | 7 +++- .../AgentsPage/AgentSettingsPageView.tsx | 4 +- site/src/pages/AgentsPage/AgentsPage.tsx | 2 +- .../AgentsPage/AgentsPageView.stories.tsx | 15 ++++--- ...serCompactionThresholdSettings.stories.tsx | 7 +++- .../components/AgentCreateForm.stories.tsx | 2 +- .../components/AgentDetailContent.tsx | 2 +- .../components/AgentDetailView.stories.tsx | 7 +++- .../AgentsPage/components/AgentPageHeader.tsx | 2 +- .../LimitsTab/GroupLimitsSection.tsx | 2 +- .../Sidebar/AgentsSidebar.stories.tsx | 7 +++- .../components/Sidebar/AgentsSidebar.test.tsx | 22 +++++----- .../components/Sidebar/AgentsSidebar.tsx | 4 +- site/src/pages/AuditPage/AuditFilter.tsx | 8 ++-- .../AuditLogDescription.stories.tsx | 4 +- .../AuditLogRow/AuditLogDiff/AuditLogDiff.tsx | 4 +- .../AuditLogRow/AuditLogRow.stories.tsx | 8 ++-- site/src/pages/AuditPage/AuditPage.test.tsx | 20 +++++----- site/src/pages/AuditPage/AuditPage.tsx | 8 ++-- .../pages/AuditPage/AuditPageView.stories.tsx | 16 ++++---- .../ConnectionLogPage/ConnectionLogFilter.tsx | 8 ++-- .../ConnectionLogPage.test.tsx | 20 +++++----- .../ConnectionLogPage/ConnectionLogPage.tsx | 8 ++-- .../ConnectionLogPageView.stories.tsx | 14 +++---- .../ConnectionLogDescription.stories.tsx | 4 +- .../ConnectionLogRow.stories.tsx | 6 +-- .../CreateTemplateGalleryPageView.stories.tsx | 8 ++-- .../StarterTemplates.tsx | 2 +- .../BuildLogsDrawer.stories.tsx | 8 ++-- .../CreateTemplatePage/BuildLogsDrawer.tsx | 10 ++--- .../CreateTemplateForm.stories.tsx | 16 ++++---- .../CreateTemplatePage/CreateTemplateForm.tsx | 2 +- .../CreateTemplatePage.jest.tsx | 10 ++--- .../CreateTemplatePage/CreateTemplatePage.tsx | 2 +- .../DuplicateTemplateView.tsx | 4 +- .../ImportStarterTemplateView.tsx | 2 +- .../CreateTemplatePage/UploadTemplateView.tsx | 2 +- .../CreateTokenPage/CreateTokenPage.jest.tsx | 8 ++-- .../CreateUserPage/CreateUserForm.stories.tsx | 10 ++--- .../CreateUserPage/CreateUserPage.test.tsx | 10 ++--- .../pages/CreateUserPage/CreateUserPage.tsx | 2 +- .../CreateWorkspacePage.jest.tsx | 16 ++++---- .../CreateWorkspacePage.tsx | 6 +-- .../CreateWorkspacePageView.stories.tsx | 4 +- .../CreateWorkspacePageView.tsx | 20 +++++----- .../SelectedTemplate.stories.tsx | 2 +- .../AIGovernanceSettingsPage.tsx | 4 +- .../AnnouncementBannerDialog.tsx | 2 +- .../AppearanceSettingsPage.tsx | 6 +-- .../ExternalAuthSettingsPage.tsx | 2 +- .../ExportPolicyButton.stories.tsx | 2 +- .../IdpOrgSyncPage/IdpOrgSyncPage.tsx | 4 +- .../IdpOrgSyncPageView.stories.tsx | 6 +-- .../LicenseCard.stories.tsx | 4 +- .../LicensesSettingsPage/LicenseCard.test.tsx | 4 +- .../LicensesSettingsPage.stories.tsx | 2 +- .../LicensesSettingsPage.tsx | 2 +- .../LicensesSettingsPageView.stories.tsx | 4 +- .../LicensesSettingsPageView.tsx | 2 +- .../NetworkSettingsPage.tsx | 2 +- .../NotificationEvents.stories.tsx | 2 +- .../NotificationsPage/NotificationEvents.tsx | 12 +++--- .../NotificationsPage.stories.tsx | 10 ++--- .../NotificationsPage/NotificationsPage.tsx | 6 +-- .../NotificationsPage/storybookUtils.ts | 24 +++++------ .../CreateOAuth2AppPageView.stories.tsx | 2 +- .../EditOAuth2AppPageView.stories.tsx | 4 +- .../OAuth2AppsSettingsPageView.stories.tsx | 2 +- .../OAuth2AppsSettingsPageView.tsx | 2 +- .../ObservabilitySettingsPage.tsx | 6 +-- .../pages/DeploymentSettingsPage/Option.tsx | 2 +- .../OverviewPage/OverviewPage.tsx | 4 +- .../OverviewPage/OverviewPageView.stories.tsx | 2 +- .../PremiumPage/PremiumPage.tsx | 2 +- .../SecuritySettingsPage.tsx | 4 +- .../UserAuthSettingsPage.tsx | 2 +- .../EditUserPage/EditUserForm.stories.tsx | 2 +- .../CreateGroupPageView.stories.tsx | 2 +- .../src/pages/GroupsPage/GroupMembersPage.tsx | 2 +- .../pages/GroupsPage/GroupPage.stories.tsx | 14 +++---- site/src/pages/GroupsPage/GroupPage.tsx | 2 +- .../GroupSettingsPageView.stories.tsx | 2 +- .../GroupsPage/GroupSettingsPageView.tsx | 2 +- site/src/pages/GroupsPage/GroupsPage.tsx | 4 +- .../pages/GroupsPage/GroupsPageProvider.tsx | 2 +- .../GroupsPage/GroupsPageView.stories.tsx | 2 +- .../HealthPage/AccessURLPage.stories.tsx | 2 +- .../HealthPage/DERPRegionPage.stories.tsx | 2 +- site/src/pages/HealthPage/HealthLayout.tsx | 2 +- .../HealthPage/ProvisionerDaemonsPage.tsx | 2 +- .../HealthPage/WebsocketPage.stories.tsx | 2 +- site/src/pages/HealthPage/WebsocketPage.tsx | 2 +- .../HealthPage/WorkspaceProxyPage.stories.tsx | 2 +- site/src/pages/HealthPage/storybook.tsx | 20 +++++----- .../src/pages/IconsPage/IconsPage.stories.tsx | 2 +- site/src/pages/IconsPage/IconsPage.tsx | 12 +++--- site/src/pages/LoginPage/LoginPage.test.tsx | 14 +++---- site/src/pages/LoginPage/LoginPage.tsx | 2 +- .../pages/LoginPage/LoginPageView.stories.tsx | 6 +-- .../pages/LoginPage/SignInForm.stories.tsx | 2 +- .../CreateOrganizationPage.tsx | 4 +- .../CreateOrganizationPageView.stories.tsx | 2 +- .../CustomRolesPage/CreateEditRolePage.tsx | 4 +- .../CreateEditRolePageView.stories.tsx | 6 +-- .../CustomRolesPage/CustomRolesPage.tsx | 6 +-- .../CustomRolesPageView.stories.tsx | 4 +- .../PermissionPillsList.stories.tsx | 2 +- .../ExportPolicyButton.stories.tsx | 6 +-- .../IdpSyncPage/IdpGroupSyncForm.tsx | 2 +- .../IdpSyncPage/IdpSyncPage.tsx | 6 +-- .../IdpSyncPage/IdpSyncPageView.stories.tsx | 6 +-- .../OrganizationMembersPage.test.tsx | 14 +++---- .../OrganizationMembersPage.tsx | 12 +++--- .../OrganizationMembersPageView.stories.tsx | 10 ++--- .../OrganizationMembersPageView.tsx | 2 +- .../CancelJobButton.stories.tsx | 2 +- .../CancelJobConfirmationDialog.stories.tsx | 4 +- .../JobRow.stories.tsx | 2 +- .../JobRow.tsx | 12 +++--- .../OrganizationProvisionerJobsPage.tsx | 2 +- ...izationProvisionerJobsPageView.stories.tsx | 2 +- .../OrganizationProvisionerKeysPage.tsx | 6 +-- ...izationProvisionerKeysPageView.stories.tsx | 10 ++--- .../ProvisionerKeyRow.tsx | 10 ++--- .../OrganizationProvisionersPage.tsx | 8 ++-- ...ganizationProvisionersPageView.stories.tsx | 4 +- .../ProvisionerRow.stories.tsx | 2 +- .../ProvisionerRow.tsx | 12 +++--- .../ProvisionerVersion.stories.tsx | 2 +- .../OrganizationRedirect.test.tsx | 10 ++--- .../OrganizationRedirect.tsx | 4 +- .../OrganizationSettingsPage.tsx | 4 +- .../OrganizationSettingsPageView.stories.tsx | 10 ++--- .../UserTable/EditRolesButton.stories.tsx | 8 ++-- .../ChangePasswordPage.stories.tsx | 4 +- .../RequestOTPPage.stories.tsx | 4 +- site/src/pages/SetupPage/SetupPage.test.tsx | 12 +++--- site/src/pages/SetupPage/SetupPage.tsx | 2 +- .../pages/SetupPage/SetupPageView.stories.tsx | 4 +- .../StarterTemplatePageView.stories.tsx | 4 +- .../TaskPage/ModifyPromptDialog.stories.tsx | 10 ++--- site/src/pages/TaskPage/TaskAppIframe.tsx | 4 +- site/src/pages/TaskPage/TaskApps.stories.tsx | 12 +++--- site/src/pages/TaskPage/TaskApps.tsx | 12 +++--- site/src/pages/TaskPage/TaskPage.stories.tsx | 40 +++++++++---------- site/src/pages/TaskPage/TaskPage.tsx | 18 ++++----- .../TaskPage/TaskWildcardWarning.stories.tsx | 4 +- .../pages/TaskPage/TaskWildcardWarning.tsx | 2 +- .../BatchDeleteConfirmation.stories.tsx | 4 +- .../src/pages/TasksPage/TasksPage.stories.tsx | 32 +++++++-------- site/src/pages/TasksPage/TasksPage.tsx | 14 +++---- site/src/pages/TasksPage/TasksTable.tsx | 16 ++++---- site/src/pages/TasksPage/UsersCombobox.tsx | 2 +- .../TemplateEmbedPage.jest.tsx | 18 ++++----- .../TemplateEmbedPage/TemplateEmbedPage.tsx | 4 +- .../TemplateEmbedPageExperimental.tsx | 12 +++--- .../TemplateEmbedPageView.stories.tsx | 6 +-- .../TemplateFilesPage.jest.tsx | 4 +- .../TemplateFilesPage/TemplateFilesPage.tsx | 2 +- .../TemplateInsightsPage.stories.tsx | 4 +- .../TemplateInsightsPage.tsx | 2 +- .../src/pages/TemplatePage/TemplateLayout.tsx | 10 ++--- .../TemplatePageHeader.stories.tsx | 4 +- .../pages/TemplatePage/TemplatePageHeader.tsx | 4 +- .../TemplatePrebuildsPageView.stories.tsx | 4 +- .../TemplateRedirectController.test.tsx | 4 +- .../TemplateRedirectController.tsx | 2 +- .../TemplateResourcesPageView.stories.tsx | 4 +- .../TemplateResourcesPageView.tsx | 2 +- .../TemplatePage/TemplateStats.stories.tsx | 2 +- .../TemplateVersionsPage.tsx | 2 +- .../TemplateVersionsPage/VersionRow.tsx | 2 +- .../VersionsTable.stories.tsx | 6 +-- .../useDeletionDialogState.jest.ts | 2 +- .../pages/TemplateSettingsPage/Sidebar.tsx | 2 +- .../TemplateSettingsPage.jest.tsx | 20 +++++----- .../TemplateSettingsPage.tsx | 4 +- .../TemplateSettingsPageView.stories.tsx | 4 +- .../TemplatePermissionsPage.tsx | 2 +- .../TemplatePermissionsPageView.stories.tsx | 2 +- .../TemplatePermissionsPageView.tsx | 2 +- .../UserOrGroupAutocomplete.tsx | 2 +- .../TemplateSchedulePage.test.tsx | 16 ++++---- .../TemplateSchedulePage.tsx | 4 +- .../TemplateSchedulePageView.stories.tsx | 2 +- .../TemplateVariablesPage.jest.tsx | 12 +++--- .../TemplateVariablesPage.tsx | 2 +- .../TemplateVariablesPageView.stories.tsx | 6 +-- .../MonacoEditor.tsx | 2 +- .../ProvisionerTagsPopover.stories.tsx | 4 +- .../ProvisionerTagsPopover.tsx | 2 +- .../TemplateVersionEditor.stories.tsx | 10 ++--- .../TemplateVersionEditor.tsx | 22 +++++----- .../TemplateVersionEditorPage.test.tsx | 26 ++++++------ .../TemplateVersionEditorPage.tsx | 4 +- .../TemplateVersionStatusBadge.tsx | 2 +- .../TemplateVersionPage.jest.tsx | 8 ++-- .../TemplateVersionPage.tsx | 2 +- .../TemplateVersionPageView.stories.tsx | 6 +-- .../TemplateVersionPageView.tsx | 6 +-- .../pages/TemplatesPage/EmptyTemplates.tsx | 2 +- .../pages/TemplatesPage/TemplatesFilter.tsx | 2 +- .../src/pages/TemplatesPage/TemplatesPage.tsx | 2 +- .../TemplatesPageView.stories.tsx | 16 ++++---- .../pages/TemplatesPage/TemplatesPageView.tsx | 6 +-- .../pages/TerminalPage/TerminalPage.jest.tsx | 14 +++---- .../TerminalPage/TerminalPage.stories.tsx | 26 ++++++------ site/src/pages/TerminalPage/TerminalPage.tsx | 8 ++-- .../AccountPage/AccountForm.stories.tsx | 2 +- .../AccountPage/AccountForm.test.tsx | 4 +- .../AccountPage/AccountPage.test.tsx | 4 +- .../AccountPage/AccountPage.tsx | 2 +- .../AccountPage/AccountUserGroups.stories.tsx | 6 +-- .../AccountPage/AccountUserGroups.tsx | 2 +- .../AppearancePage/AppearanceForm.tsx | 12 +++--- .../AppearancePage/AppearancePage.test.tsx | 4 +- .../AppearancePage/AppearancePage.tsx | 2 +- .../ExternalAuthPageView.stories.tsx | 4 +- .../ExternalAuthPage/ExternalAuthPageView.tsx | 2 +- .../NotificationsPage.stories.tsx | 24 +++++------ .../NotificationsPage/NotificationsPage.tsx | 18 ++++----- .../OAuth2ProviderPageView.stories.tsx | 2 +- .../SSHKeysPage/SSHKeysPage.test.tsx | 4 +- .../SSHKeysPage/SSHKeysPageView.stories.tsx | 2 +- .../SchedulePage/ScheduleForm.stories.tsx | 2 +- .../SchedulePage/SchedulePage.test.tsx | 6 +-- .../SecurityPage/SecurityForm.stories.tsx | 2 +- .../SecurityPage/SecurityPage.jest.tsx | 10 ++--- .../SecurityPage/SecurityPageView.stories.tsx | 8 ++-- site/src/pages/UserSettingsPage/Sidebar.tsx | 2 +- .../ConfirmDeleteDialog.stories.tsx | 2 +- .../TokensPage/TokensPageView.stories.tsx | 2 +- .../WorkspaceProxyView.stories.tsx | 4 +- .../UsersPage/ResetPasswordDialog.stories.tsx | 2 +- .../src/pages/UsersPage/UsersPage.stories.tsx | 12 +++--- site/src/pages/UsersPage/UsersPage.tsx | 8 ++-- .../pages/UsersPage/UsersPageView.stories.tsx | 16 ++++---- .../UsersTable/UsersTable.stories.tsx | 4 +- .../WorkspaceBuildPage.jest.tsx | 10 ++--- .../WorkspaceBuildPage/WorkspaceBuildPage.tsx | 2 +- .../WorkspaceBuildPageView.stories.tsx | 6 +-- .../WorkspaceBuildPageView.tsx | 20 +++++----- .../WorkspacePage/AppStatuses.stories.tsx | 10 ++--- site/src/pages/WorkspacePage/AppStatuses.tsx | 4 +- .../pages/WorkspacePage/HistorySidebar.tsx | 8 ++-- .../ResourceMetadata.stories.tsx | 2 +- .../pages/WorkspacePage/ResourceMetadata.tsx | 2 +- .../pages/WorkspacePage/Workspace.stories.tsx | 10 ++--- site/src/pages/WorkspacePage/Workspace.tsx | 10 ++--- .../WorkspaceActions/DebugButton.stories.tsx | 8 ++-- .../WorkspaceActions/RetryButton.stories.tsx | 10 ++--- .../WorkspaceActions/ShareButton.tsx | 8 ++-- .../WorkspaceActions.stories.tsx | 12 +++--- .../WorkspaceActions/WorkspaceActions.tsx | 14 +++---- .../WorkspaceBuildLogsSection.tsx | 2 +- .../WorkspaceBuildProgress.stories.tsx | 6 +-- .../WorkspaceNotifications/Notifications.tsx | 2 +- .../WorkspaceNotifications.stories.tsx | 14 +++---- .../WorkspaceNotifications.tsx | 6 +-- .../WorkspacePage/WorkspacePage.jest.tsx | 30 +++++++------- .../src/pages/WorkspacePage/WorkspacePage.tsx | 2 +- .../WorkspacePage/WorkspaceReadyPage.tsx | 18 ++++----- .../WorkspaceScheduleControls.test.tsx | 6 +-- .../WorkspaceScheduleControls.tsx | 4 +- .../WorkspacePage/WorkspaceTopbar.stories.tsx | 17 ++++---- .../pages/WorkspacePage/WorkspaceTopbar.tsx | 6 +-- .../WorkspacePage/useResourcesNav.test.tsx | 2 +- .../pages/WorkspacePage/useResourcesNav.ts | 4 +- .../WorkspaceParametersForm.tsx | 2 +- .../WorkspaceParametersPage.stories.tsx | 6 +-- .../WorkspaceParametersPage.test.tsx | 10 ++--- .../WorkspaceParametersPageExperimental.tsx | 2 +- ...orkspaceParametersPageViewExperimental.tsx | 14 +++---- .../WorkspaceScheduleForm.stories.tsx | 2 +- .../WorkspaceScheduleForm.test.tsx | 4 +- .../WorkspaceSchedulePage.stories.tsx | 19 +++++---- .../WorkspaceSchedulePage.test.tsx | 12 +++--- .../WorkspaceSettingsPage.test.tsx | 10 ++--- .../WorkspaceSettingsPageView.stories.tsx | 2 +- .../WorkspaceSharingPage.tsx | 6 +-- .../WorkspaceSharingPageView.stories.tsx | 16 ++++---- .../WorkspaceSharingPageView.tsx | 6 +-- .../BatchDeleteConfirmation.stories.tsx | 4 +- .../BatchUpdateModalForm.stories.tsx | 4 +- .../WorkspacesPage/BatchUpdateModalForm.tsx | 2 +- .../pages/WorkspacesPage/WorkspacesButton.tsx | 2 +- .../pages/WorkspacesPage/WorkspacesEmpty.tsx | 2 +- .../WorkspacesPage/WorkspacesPage.test.tsx | 32 +++++++-------- .../pages/WorkspacesPage/WorkspacesPage.tsx | 10 ++--- .../WorkspacesPageView.stories.tsx | 32 +++++++-------- .../pages/WorkspacesPage/WorkspacesTable.tsx | 34 ++++++++-------- .../filter/WorkspacesFilter.stories.tsx | 4 +- .../filter/WorkspacesFilter.tsx | 10 ++--- site/src/testHelpers/entities.ts | 4 +- site/src/testHelpers/handlers.ts | 2 +- site/src/testHelpers/renderHelpers.tsx | 8 ++-- site/src/testHelpers/storybook.tsx | 8 ++-- site/src/utils/OneWayWebSocket.jest.ts | 2 +- site/src/utils/dormant.test.ts | 2 +- site/src/utils/formUtils.test.ts | 2 +- site/src/utils/http.ts | 2 +- site/src/utils/schedule.test.ts | 2 +- site/src/utils/schedule.tsx | 2 +- site/src/utils/templateVersion.ts | 2 +- site/src/utils/workspace.test.ts | 2 +- site/test/setup/msw.ts | 2 +- site/vite.config.mts | 17 +++----- 490 files changed, 1431 insertions(+), 1413 deletions(-) diff --git a/site/jest.setup.ts b/site/jest.setup.ts index 8a37ac8c91..a775eccbe6 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 { ProxyLatencyReport } from "contexts/useProxyLatency"; import { useMemo } from "react"; import type { Region } from "#/api/typesGenerated"; +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/src/@types/emotion.d.ts b/site/src/@types/emotion.d.ts index ec423cc27c..6724c41e40 100644 --- a/site/src/@types/emotion.d.ts +++ b/site/src/@types/emotion.d.ts @@ -1,4 +1,4 @@ -import type { Theme as CoderTheme } from "theme"; +import type { Theme as CoderTheme } from "#/theme"; declare module "@emotion/react" { interface Theme extends CoderTheme {} diff --git a/site/src/@types/storybook.d.ts b/site/src/@types/storybook.d.ts index 6bba446782..ba17103c42 100644 --- a/site/src/@types/storybook.d.ts +++ b/site/src/@types/storybook.d.ts @@ -6,7 +6,7 @@ import type { SerpentOption, User, } from "#/api/typesGenerated"; -import type { Permissions } from "modules/permissions"; +import type { Permissions } from "#/modules/permissions"; import type { QueryKey } from "react-query"; import type { ReactRouterAddonStoryParameters } from "storybook-addon-remix-react-router"; diff --git a/site/src/api/api.test.ts b/site/src/api/api.test.ts index adff022c17..e38e422c9f 100644 --- a/site/src/api/api.test.ts +++ b/site/src/api/api.test.ts @@ -7,7 +7,7 @@ import { MockWorkspace, MockWorkspaceBuild, MockWorkspaceBuildParameter1, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { API, getURLWithSearchParams, MissingBuildParameters } from "./api"; import type * as TypesGen from "./typesGenerated"; diff --git a/site/src/api/errors.test.ts b/site/src/api/errors.test.ts index 860f42f28e..3b5c9ac3a5 100644 --- a/site/src/api/errors.test.ts +++ b/site/src/api/errors.test.ts @@ -1,4 +1,4 @@ -import { mockApiError } from "testHelpers/entities"; +import { mockApiError } from "#/testHelpers/entities"; import { getErrorMessage, getValidationErrorMessage, diff --git a/site/src/api/queries/appearance.ts b/site/src/api/queries/appearance.ts index 6a41723684..70ba43a9b8 100644 --- a/site/src/api/queries/appearance.ts +++ b/site/src/api/queries/appearance.ts @@ -1,7 +1,7 @@ -import type { MetadataState } from "hooks/useEmbeddedMetadata"; import type { QueryClient } from "react-query"; import { API } from "#/api/api"; import type { AppearanceConfig } from "#/api/typesGenerated"; +import type { MetadataState } from "#/hooks/useEmbeddedMetadata"; import { cachedQuery } from "./util"; export const appearanceConfigKey = ["appearance"] as const; diff --git a/site/src/api/queries/audits.ts b/site/src/api/queries/audits.ts index b0bc78a6cf..c0ed578172 100644 --- a/site/src/api/queries/audits.ts +++ b/site/src/api/queries/audits.ts @@ -1,7 +1,7 @@ -import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import { API } from "#/api/api"; import type { AuditLogResponse } from "#/api/typesGenerated"; import { useFilterParamsKey } from "#/components/Filter/Filter"; +import type { UsePaginatedQueryOptions } from "#/hooks/usePaginatedQuery"; export function paginatedAudits( searchParams: URLSearchParams, diff --git a/site/src/api/queries/authCheck.ts b/site/src/api/queries/authCheck.ts index 826d6395cd..4cf802d795 100644 --- a/site/src/api/queries/authCheck.ts +++ b/site/src/api/queries/authCheck.ts @@ -1,9 +1,9 @@ -import type { MetadataState, MetadataValue } from "hooks/useEmbeddedMetadata"; import { API } from "#/api/api"; import type { AuthorizationRequest, AuthorizationResponse, } from "#/api/typesGenerated"; +import type { MetadataState, MetadataValue } from "#/hooks/useEmbeddedMetadata"; import { disabledRefetchOptions } from "./util"; const AUTHORIZATION_KEY = "authorization"; diff --git a/site/src/api/queries/buildInfo.ts b/site/src/api/queries/buildInfo.ts index a754d7717f..b42ff410df 100644 --- a/site/src/api/queries/buildInfo.ts +++ b/site/src/api/queries/buildInfo.ts @@ -1,6 +1,6 @@ -import type { MetadataState } from "hooks/useEmbeddedMetadata"; import { API } from "#/api/api"; import type { BuildInfoResponse } from "#/api/typesGenerated"; +import type { MetadataState } from "#/hooks/useEmbeddedMetadata"; import { cachedQuery } from "./util"; const buildInfoKey = ["buildInfo"] as const; diff --git a/site/src/api/queries/connectionlog.ts b/site/src/api/queries/connectionlog.ts index ac8ed4aa34..760652f6ed 100644 --- a/site/src/api/queries/connectionlog.ts +++ b/site/src/api/queries/connectionlog.ts @@ -1,7 +1,7 @@ -import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import { API } from "#/api/api"; import type { ConnectionLogResponse } from "#/api/typesGenerated"; import { useFilterParamsKey } from "#/components/Filter/Filter"; +import type { UsePaginatedQueryOptions } from "#/hooks/usePaginatedQuery"; export function paginatedConnectionLogs( searchParams: URLSearchParams, diff --git a/site/src/api/queries/entitlements.ts b/site/src/api/queries/entitlements.ts index 4086f8f7ea..d1a2575dae 100644 --- a/site/src/api/queries/entitlements.ts +++ b/site/src/api/queries/entitlements.ts @@ -1,7 +1,7 @@ -import type { MetadataState } from "hooks/useEmbeddedMetadata"; import type { QueryClient } from "react-query"; import { API } from "#/api/api"; import type { Entitlements } from "#/api/typesGenerated"; +import type { MetadataState } from "#/hooks/useEmbeddedMetadata"; import { cachedQuery } from "./util"; const entitlementsQueryKey = ["entitlements"] as const; diff --git a/site/src/api/queries/experiments.ts b/site/src/api/queries/experiments.ts index 304687c12d..6d46c006a3 100644 --- a/site/src/api/queries/experiments.ts +++ b/site/src/api/queries/experiments.ts @@ -1,6 +1,6 @@ -import type { MetadataState } from "hooks/useEmbeddedMetadata"; import { API } from "#/api/api"; import { type Experiment, Experiments } from "#/api/typesGenerated"; +import type { MetadataState } from "#/hooks/useEmbeddedMetadata"; import { cachedQuery } from "./util"; const experimentsKey = ["experiments"] as const; diff --git a/site/src/api/queries/groups.ts b/site/src/api/queries/groups.ts index f278da03ee..ca946ca398 100644 --- a/site/src/api/queries/groups.ts +++ b/site/src/api/queries/groups.ts @@ -1,4 +1,3 @@ -import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import type { QueryClient, UseQueryOptions } from "react-query"; import { prepareQuery } from "utils/filters"; import { API } from "#/api/api"; @@ -10,6 +9,7 @@ import type { PatchGroupRequest, UsersRequest, } from "#/api/typesGenerated"; +import type { UsePaginatedQueryOptions } from "#/hooks/usePaginatedQuery"; type GroupSortOrder = "asc" | "desc"; diff --git a/site/src/api/queries/organizations.ts b/site/src/api/queries/organizations.ts index 8aab000852..e15f625ba8 100644 --- a/site/src/api/queries/organizations.ts +++ b/site/src/api/queries/organizations.ts @@ -1,15 +1,3 @@ -import type { MetadataState } from "hooks/useEmbeddedMetadata"; -import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; -import { - type OrganizationPermissionName, - type OrganizationPermissions, - organizationPermissionChecks, -} from "modules/permissions/organizations"; -import { - type WorkspacePermissionName, - type WorkspacePermissions, - workspacePermissionChecks, -} from "modules/permissions/workspaces"; import type { QueryClient, UseQueryOptions } from "react-query"; import { API, @@ -27,6 +15,18 @@ import type { UpdateWorkspaceSharingSettingsRequest, UsersRequest, } from "#/api/typesGenerated"; +import type { MetadataState } from "#/hooks/useEmbeddedMetadata"; +import type { UsePaginatedQueryOptions } from "#/hooks/usePaginatedQuery"; +import { + type OrganizationPermissionName, + type OrganizationPermissions, + organizationPermissionChecks, +} from "#/modules/permissions/organizations"; +import { + type WorkspacePermissionName, + type WorkspacePermissions, + workspacePermissionChecks, +} from "#/modules/permissions/workspaces"; import { meKey } from "./users"; import { cachedQuery } from "./util"; diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index bccbe4c660..a3c592be07 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -1,8 +1,3 @@ -import { - defaultMetadataManager, - type MetadataState, -} from "hooks/useEmbeddedMetadata"; -import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import type { MutationOptions, QueryClient, @@ -26,6 +21,11 @@ import type { UserPreferenceSettings, UsersRequest, } from "#/api/typesGenerated"; +import { + defaultMetadataManager, + type MetadataState, +} from "#/hooks/useEmbeddedMetadata"; +import type { UsePaginatedQueryOptions } from "#/hooks/usePaginatedQuery"; import { getAuthorizationKey } from "./authCheck"; import { cachedQuery } from "./util"; diff --git a/site/src/api/queries/util.ts b/site/src/api/queries/util.ts index d582e97069..4458e13552 100644 --- a/site/src/api/queries/util.ts +++ b/site/src/api/queries/util.ts @@ -1,5 +1,5 @@ -import type { MetadataState, MetadataValue } from "hooks/useEmbeddedMetadata"; import type { QueryKey, UseQueryOptions } from "react-query"; +import type { MetadataState, MetadataValue } from "#/hooks/useEmbeddedMetadata"; export const disabledRefetchOptions = { gcTime: Number.POSITIVE_INFINITY, diff --git a/site/src/api/queries/workspaces.ts b/site/src/api/queries/workspaces.ts index b005201548..b773985359 100644 --- a/site/src/api/queries/workspaces.ts +++ b/site/src/api/queries/workspaces.ts @@ -1,8 +1,4 @@ import type { Dayjs } from "dayjs"; -import { - type WorkspacePermissions, - workspaceChecks, -} from "modules/workspaces/permissions"; import type { ConnectionStatus } from "pages/TerminalPage/types"; import type { MutationOptions, @@ -29,6 +25,10 @@ import type { WorkspacesRequest, WorkspacesResponse, } from "#/api/typesGenerated"; +import { + type WorkspacePermissions, + workspaceChecks, +} from "#/modules/workspaces/permissions"; import { checkAuthorization } from "./authCheck"; import { disabledRefetchOptions } from "./util"; import { workspaceBuildsKey } from "./workspaceBuilds"; diff --git a/site/src/components/Alert/ErrorAlert.stories.tsx b/site/src/components/Alert/ErrorAlert.stories.tsx index f8fa500910..8a2ea13ecc 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 ac11bf0a06..1313627622 100644 --- a/site/src/components/Avatar/Avatar.tsx +++ b/site/src/components/Avatar/Avatar.tsx @@ -13,8 +13,8 @@ import { useTheme } from "@emotion/react"; import * as AvatarPrimitive from "@radix-ui/react-avatar"; import { cva, type VariantProps } from "class-variance-authority"; -import { getExternalImageStylesFromUrl } from "theme/externalImages"; import { cn } from "utils/cn"; +import { getExternalImageStylesFromUrl } from "#/theme/externalImages"; const avatarVariants = cva( "relative flex shrink-0 overflow-hidden rounded border border-solid bg-surface-secondary text-content-secondary", diff --git a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx index 20a5f10ebc..7ece0cd119 100644 --- a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx +++ b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx @@ -1,4 +1,3 @@ -import { MockOrganization } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Breadcrumb, @@ -9,6 +8,7 @@ import { BreadcrumbPage, BreadcrumbSeparator, } from "#/components/Breadcrumb/Breadcrumb"; +import { MockOrganization } from "#/testHelpers/entities"; const meta: Meta = { title: "components/Breadcrumb", diff --git a/site/src/components/CodeExample/CodeExample.tsx b/site/src/components/CodeExample/CodeExample.tsx index 118a41fb92..bca878653b 100644 --- a/site/src/components/CodeExample/CodeExample.tsx +++ b/site/src/components/CodeExample/CodeExample.tsx @@ -1,13 +1,13 @@ import type { Interpolation, Theme } from "@emotion/react"; import { EyeIcon, EyeOffIcon } from "lucide-react"; import { type FC, useState } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { Button } from "#/components/Button/Button"; import { Tooltip, TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; import { CopyButton } from "../CopyButton/CopyButton"; interface CodeExampleProps { diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index 5db9e0396d..eb0b030969 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -1,4 +1,3 @@ -import { useClipboard } from "hooks/useClipboard"; import { CopyIcon } from "lucide-react"; import type { FC } from "react"; import { CheckIcon } from "#/components/AnimatedIcons/Check"; @@ -8,6 +7,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useClipboard } from "#/hooks/useClipboard"; type CopyButtonProps = ButtonProps & { text: string; diff --git a/site/src/components/CopyableValue/CopyableValue.tsx b/site/src/components/CopyableValue/CopyableValue.tsx index 8fe7f917e0..665073f979 100644 --- a/site/src/components/CopyableValue/CopyableValue.tsx +++ b/site/src/components/CopyableValue/CopyableValue.tsx @@ -1,5 +1,3 @@ -import { useClickable } from "hooks/useClickable"; -import { useClipboard } from "hooks/useClipboard"; import { type FC, type HTMLAttributes, useState } from "react"; import { cn } from "utils/cn"; import { @@ -7,6 +5,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useClickable } from "#/hooks/useClickable"; +import { useClipboard } from "#/hooks/useClipboard"; type TooltipSide = "top" | "right" | "bottom" | "left"; diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx index 8ec97302ed..96373e7b32 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx @@ -1,5 +1,5 @@ -import { renderComponent } from "testHelpers/renderHelpers"; import { fireEvent, screen } from "@testing-library/react"; +import { renderComponent } from "#/testHelpers/renderHelpers"; 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 1ef3159747..29b0c84a06 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"; +import { renderComponent } from "#/testHelpers/renderHelpers"; import { DeleteDialog } from "./DeleteDialog"; const inputTestId = "delete-dialog-name-confirmation"; diff --git a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx index d14ac3155d..8188053322 100644 --- a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx +++ b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx @@ -1,4 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useState } from "react"; import { type ErrorResponse, @@ -9,6 +8,7 @@ import { import { Button } from "#/components/Button/Button"; import { CoderIcon } from "#/components/Icons/CoderIcon"; import { Link } from "#/components/Link/Link"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; const errorPageTitle = "Something went wrong"; diff --git a/site/src/components/ExternalImage/ExternalImage.tsx b/site/src/components/ExternalImage/ExternalImage.tsx index 62d2f77f62..e2005c6807 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 { getExternalImageStylesFromUrl } from "theme/externalImages"; +import { getExternalImageStylesFromUrl } from "#/theme/externalImages"; export const ExternalImage: React.FC> = ({ ...props diff --git a/site/src/components/FileUpload/FileUpload.test.tsx b/site/src/components/FileUpload/FileUpload.test.tsx index f72425152e..0dca853851 100644 --- a/site/src/components/FileUpload/FileUpload.test.tsx +++ b/site/src/components/FileUpload/FileUpload.test.tsx @@ -1,5 +1,5 @@ -import { renderComponent } from "testHelpers/renderHelpers"; import { fireEvent, screen } from "@testing-library/react"; +import { renderComponent } from "#/testHelpers/renderHelpers"; 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 a0c3a6902a..391e75f362 100644 --- a/site/src/components/FileUpload/FileUpload.tsx +++ b/site/src/components/FileUpload/FileUpload.tsx @@ -1,10 +1,10 @@ import { css, type Interpolation, type Theme } from "@emotion/react"; import CircularProgress from "@mui/material/CircularProgress"; import IconButton from "@mui/material/IconButton"; -import { useClickable } from "hooks/useClickable"; import { CloudUploadIcon, FolderIcon, TrashIcon } from "lucide-react"; import { type DragEvent, type FC, type ReactNode, useRef } from "react"; import { Stack } from "#/components/Stack/Stack"; +import { useClickable } from "#/hooks/useClickable"; interface FileUploadProps { isUploading: boolean; diff --git a/site/src/components/Filter/Filter.tsx b/site/src/components/Filter/Filter.tsx index 3a71622c8d..4568aaf83b 100644 --- a/site/src/components/Filter/Filter.tsx +++ b/site/src/components/Filter/Filter.tsx @@ -1,7 +1,6 @@ import { useTheme } from "@emotion/react"; import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton"; import type { Breakpoint } from "@mui/system/createTheme"; -import { useDebouncedFunction } from "hooks/debounce"; import { ExternalLinkIcon, SlidersHorizontal } from "lucide-react"; import { type FC, type ReactNode, useEffect, useRef, useState } from "react"; import { @@ -20,6 +19,7 @@ import { DropdownMenuTrigger, } from "#/components/DropdownMenu/DropdownMenu"; import { SearchField } from "#/components/SearchField/SearchField"; +import { useDebouncedFunction } from "#/hooks/debounce"; type PresetFilter = { name: string; diff --git a/site/src/components/Filter/SelectFilter.stories.tsx b/site/src/components/Filter/SelectFilter.stories.tsx index a8ee81da1a..d793910d08 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 { useState } from "react"; import { expect, screen, userEvent, within } from "storybook/test"; import { Avatar } from "#/components/Avatar/Avatar"; import { ComboboxInput } from "#/components/Combobox/Combobox"; +import { withDesktopViewport } from "#/testHelpers/storybook"; import { SelectFilter, type SelectFilterOption } from "./SelectFilter"; const options: SelectFilterOption[] = Array.from({ length: 50 }, (_, i) => ({ diff --git a/site/src/components/IconField/EmojiPicker.tsx b/site/src/components/IconField/EmojiPicker.tsx index 2d06a94376..a80923426f 100644 --- a/site/src/components/IconField/EmojiPicker.tsx +++ b/site/src/components/IconField/EmojiPicker.tsx @@ -1,8 +1,8 @@ import data from "@emoji-mart/data/sets/15/apple.json"; import EmojiMart from "@emoji-mart/react"; import { type ComponentProps, type FC, useEffect } from "react"; -import { DEPRECATED_ICONS } from "theme/deprecatedIcons"; -import icons from "theme/icons.json"; +import { DEPRECATED_ICONS } from "#/theme/deprecatedIcons"; +import icons from "#/theme/icons.json"; const custom = [ { diff --git a/site/src/components/InfoTooltip/InfoTooltip.tsx b/site/src/components/InfoTooltip/InfoTooltip.tsx index 580df4a787..d727240df6 100644 --- a/site/src/components/InfoTooltip/InfoTooltip.tsx +++ b/site/src/components/InfoTooltip/InfoTooltip.tsx @@ -1,5 +1,4 @@ import type { FC, ReactNode } from "react"; -import type { ThemeRole } from "theme/roles"; import { cn } from "utils/cn"; import { HelpTooltip, @@ -9,6 +8,7 @@ import { HelpTooltipText, HelpTooltipTitle, } from "#/components/HelpTooltip/HelpTooltip"; +import type { ThemeRole } from "#/theme/roles"; interface InfoTooltipProps { type?: ThemeRole; diff --git a/site/src/components/Logs/LogLine.stories.tsx b/site/src/components/Logs/LogLine.stories.tsx index e294f60ba1..330ee34266 100644 --- a/site/src/components/Logs/LogLine.stories.tsx +++ b/site/src/components/Logs/LogLine.stories.tsx @@ -1,5 +1,5 @@ -import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; import { LogLine, LogLinePrefix } from "./LogLine"; const meta: Meta = { diff --git a/site/src/components/Logs/LogLine.tsx b/site/src/components/Logs/LogLine.tsx index 8fc977c430..17943283b6 100644 --- a/site/src/components/Logs/LogLine.tsx +++ b/site/src/components/Logs/LogLine.tsx @@ -1,7 +1,7 @@ import type { Interpolation, Theme } from "@emotion/react"; import type { FC, HTMLAttributes } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import type { LogLevel } from "#/api/typesGenerated"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; const DEFAULT_LOG_LINE_SIDE_PADDING = 24; diff --git a/site/src/components/Logs/Logs.stories.tsx b/site/src/components/Logs/Logs.stories.tsx index a9f8fff0f7..349e7e0acb 100644 --- a/site/src/components/Logs/Logs.stories.tsx +++ b/site/src/components/Logs/Logs.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockWorkspaceBuildLogs } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockWorkspaceBuildLogs } from "#/testHelpers/entities"; import type { Line } from "./LogLine"; import { Logs } from "./Logs"; diff --git a/site/src/components/Margins/Margins.tsx b/site/src/components/Margins/Margins.tsx index cd7a9db9e4..d97ad7cdcd 100644 --- a/site/src/components/Margins/Margins.tsx +++ b/site/src/components/Margins/Margins.tsx @@ -3,7 +3,7 @@ import { containerWidth, containerWidthMedium, sidePadding, -} from "theme/constants"; +} from "#/theme/constants"; type Size = "regular" | "medium" | "small"; diff --git a/site/src/components/Markdown/Markdown.tsx b/site/src/components/Markdown/Markdown.tsx index d3d829c198..1ca6943afe 100644 --- a/site/src/components/Markdown/Markdown.tsx +++ b/site/src/components/Markdown/Markdown.tsx @@ -13,7 +13,6 @@ import ReactMarkdown, { type Options } from "react-markdown"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { dracula } from "react-syntax-highlighter/dist/cjs/styles/prism"; import gfm from "remark-gfm"; -import colors from "theme/tailwindColors"; import { cn } from "utils/cn"; import { Table, @@ -22,6 +21,7 @@ import { TableHeader, TableRow, } from "#/components/Table/Table"; +import colors from "#/theme/tailwindColors"; interface MarkdownProps { /** diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.stories.tsx index ff25209e20..29da4b4750 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 ca3f6c0653..947cc7db88 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -3,7 +3,6 @@ * @see {@link https://shadcnui-expansions.typeart.cc/docs/multiple-selector} */ import { Command as CommandPrimitive, useCommandState } from "cmdk"; -import { useDebouncedValue } from "hooks/debounce"; import { Info, X } from "lucide-react"; import { type ComponentPropsWithoutRef, @@ -32,6 +31,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useDebouncedValue } from "#/hooks/debounce"; export interface Option { value: string; diff --git a/site/src/components/MultiUserSelect/MultiMemberSelect.stories.tsx b/site/src/components/MultiUserSelect/MultiMemberSelect.stories.tsx index 6db831c3c2..eb376eded9 100644 --- a/site/src/components/MultiUserSelect/MultiMemberSelect.stories.tsx +++ b/site/src/components/MultiUserSelect/MultiMemberSelect.stories.tsx @@ -1,6 +1,6 @@ -import { MockOrganizationMember } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { organizationMembersKey } from "api/queries/organizations"; +import { MockOrganizationMember } from "#/testHelpers/entities"; import { MultiMemberSelect } from "./MultiUserSelect"; const meta: Meta = { diff --git a/site/src/components/MultiUserSelect/MultiUserSelect.stories.tsx b/site/src/components/MultiUserSelect/MultiUserSelect.stories.tsx index a6e4d97c0f..f03ea4993a 100644 --- a/site/src/components/MultiUserSelect/MultiUserSelect.stories.tsx +++ b/site/src/components/MultiUserSelect/MultiUserSelect.stories.tsx @@ -1,9 +1,9 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; import { usersKey } from "api/queries/users"; import { MockUsers } from "pages/UsersPage/storybookData/users"; import { spyOn } from "storybook/test"; +import { mockApiError } from "#/testHelpers/entities"; import { MultiUserSelect } from "./MultiUserSelect"; const meta: Meta = { diff --git a/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx b/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.stories.tsx index 66f3dde252..e809a7505b 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"; +} from "#/testHelpers/entities"; import { OrganizationAutocomplete } from "./OrganizationAutocomplete"; const meta: Meta = { diff --git a/site/src/components/PaginationWidget/PaginationContainer.tsx b/site/src/components/PaginationWidget/PaginationContainer.tsx index b4c9b53a65..b8ebd7d7b7 100644 --- a/site/src/components/PaginationWidget/PaginationContainer.tsx +++ b/site/src/components/PaginationWidget/PaginationContainer.tsx @@ -1,5 +1,5 @@ -import type { PaginationResultInfo } from "hooks/usePaginatedQuery"; import type { FC, HTMLAttributes } from "react"; +import type { PaginationResultInfo } from "#/hooks/usePaginatedQuery"; import { PaginationAmount } from "./PaginationAmount"; import { PaginationWidgetBase } from "./PaginationWidgetBase"; diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx index b0afc3a608..a7acf8f7bc 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/PasswordField/PasswordField.tsx b/site/src/components/PasswordField/PasswordField.tsx index 45eef2934f..b9d364fbd8 100644 --- a/site/src/components/PasswordField/PasswordField.tsx +++ b/site/src/components/PasswordField/PasswordField.tsx @@ -1,8 +1,8 @@ import TextField, { type TextFieldProps } from "@mui/material/TextField"; -import { useDebouncedValue } from "hooks/debounce"; import type { FC } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { API } from "#/api/api"; +import { useDebouncedValue } from "#/hooks/debounce"; // TODO: @BrunoQuaresma: Unable to integrate Yup + Formik for validation. The // validation was triggering on the onChange event, but the form.errors were not diff --git a/site/src/components/Pill/Pill.tsx b/site/src/components/Pill/Pill.tsx index b2e6e9e372..a62e52e79f 100644 --- a/site/src/components/Pill/Pill.tsx +++ b/site/src/components/Pill/Pill.tsx @@ -3,7 +3,7 @@ import CircularProgress, { type CircularProgressProps, } from "@mui/material/CircularProgress"; import { type FC, type ReactNode, useMemo } from "react"; -import type { ThemeRole } from "theme/roles"; +import type { ThemeRole } from "#/theme/roles"; type PillProps = React.ComponentPropsWithRef<"div"> & { icon?: ReactNode; diff --git a/site/src/components/RichParameterInput/RichParameterInput.stories.tsx b/site/src/components/RichParameterInput/RichParameterInput.stories.tsx index e3638ba343..b4e27994f7 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/SearchField/SearchField.tsx b/site/src/components/SearchField/SearchField.tsx index 0f5a5a8d78..9477c547e4 100644 --- a/site/src/components/SearchField/SearchField.tsx +++ b/site/src/components/SearchField/SearchField.tsx @@ -1,4 +1,3 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { SearchIcon, XIcon } from "lucide-react"; import { type Ref, useLayoutEffect, useRef } from "react"; import { @@ -12,6 +11,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; export type SearchFieldProps = { value: string; diff --git a/site/src/components/SelectMenu/SelectMenu.stories.tsx b/site/src/components/SelectMenu/SelectMenu.stories.tsx index 9bb34e4fb8..c9c5bfb4c1 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 { action } from "storybook/actions"; import { userEvent, within } from "storybook/test"; import { Avatar } from "#/components/Avatar/Avatar"; +import { withDesktopViewport } from "#/testHelpers/storybook"; import { SelectMenu, SelectMenuButton, diff --git a/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx b/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx index b9226c86ab..744f9fac76 100644 --- a/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx +++ b/site/src/components/UserAutocomplete/MemberAutocomplete.stories.tsx @@ -1,5 +1,5 @@ -import { MockOrganizationMember } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockOrganizationMember } from "#/testHelpers/entities"; 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 25dd78ddff..02049d6ba0 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx @@ -1,5 +1,5 @@ -import { MockUserOwner } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockUserOwner } from "#/testHelpers/entities"; import { UserAutocomplete } from "./UserAutocomplete"; const meta: Meta = { diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.tsx index a641277e28..59fb730037 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.tsx @@ -1,4 +1,3 @@ -import { useDebouncedFunction, useDebouncedValue } from "hooks/debounce"; import { type FC, useId, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { cn } from "utils/cn"; @@ -26,6 +25,7 @@ import { } from "#/components/Combobox/Combobox"; import { Label } from "#/components/Label/Label"; import { Spinner } from "#/components/Spinner/Spinner"; +import { useDebouncedFunction, useDebouncedValue } from "#/hooks/debounce"; // The common properties between users and org members that we need. type SelectedUser = { diff --git a/site/src/contexts/ProxyContext.test.tsx b/site/src/contexts/ProxyContext.test.tsx index 8bfcb62a5d..a2c901a4b5 100644 --- a/site/src/contexts/ProxyContext.test.tsx +++ b/site/src/contexts/ProxyContext.test.tsx @@ -1,19 +1,19 @@ import "testHelpers/localStorage"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; +import type { Region } from "#/api/typesGenerated"; import { MockHealthyWildWorkspaceProxy, MockPrimaryWorkspaceProxy, MockUnhealthyWildWorkspaceProxy, MockWorkspaceProxies, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { renderWithAuth, waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { HttpResponse, http } from "msw"; -import type { Region } from "#/api/typesGenerated"; +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { getPreferredProxy, ProxyProvider, diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index 4d5e512009..f7933b1dd7 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { createContext, type FC, @@ -13,6 +12,7 @@ import { useQuery } from "react-query"; import { API } from "#/api/api"; import { cachedQuery } from "#/api/queries/util"; import type { Region, WorkspaceProxy } from "#/api/typesGenerated"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import { type ProxyLatencyReport, useProxyLatency } from "./useProxyLatency"; export type Proxies = readonly Region[] | readonly WorkspaceProxy[]; diff --git a/site/src/contexts/ThemeProvider.tsx b/site/src/contexts/ThemeProvider.tsx index dcbaa018af..d4d8c8f293 100644 --- a/site/src/contexts/ThemeProvider.tsx +++ b/site/src/contexts/ThemeProvider.tsx @@ -11,7 +11,6 @@ import { ThemeProvider as MuiThemeProvider, StyledEngineProvider, } from "@mui/material/styles"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, type PropsWithChildren, @@ -21,8 +20,9 @@ import { useState, } from "react"; import { useQuery } from "react-query"; -import themes, { DEFAULT_THEME, type Theme } from "theme"; import { appearanceSettings } from "#/api/queries/users"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import themes, { DEFAULT_THEME, type Theme } from "#/theme"; /** * diff --git a/site/src/contexts/auth/AuthProvider.tsx b/site/src/contexts/auth/AuthProvider.tsx index 928e64d3bb..dad5b89cb1 100644 --- a/site/src/contexts/auth/AuthProvider.tsx +++ b/site/src/contexts/auth/AuthProvider.tsx @@ -1,5 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { type Permissions, permissionChecks } from "modules/permissions"; import { createContext, type FC, @@ -19,6 +17,8 @@ import { updateProfile as updateProfileOptions, } from "#/api/queries/users"; import type { UpdateUserProfileRequest, User } from "#/api/typesGenerated"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { type Permissions, permissionChecks } from "#/modules/permissions"; export type AuthContextValue = { isLoading: boolean; diff --git a/site/src/contexts/auth/RequireAuth.test.tsx b/site/src/contexts/auth/RequireAuth.test.tsx index 09036a8441..54fa2569e9 100644 --- a/site/src/contexts/auth/RequireAuth.test.tsx +++ b/site/src/contexts/auth/RequireAuth.test.tsx @@ -1,14 +1,14 @@ -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 { MockPermissions, MockUserOwner } from "#/testHelpers/entities"; +import { + createTestQueryClient, + renderWithAuth, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { AuthContext, type AuthContextValue } from "./AuthProvider"; describe("RequireAuth", () => { diff --git a/site/src/contexts/auth/RequireAuth.tsx b/site/src/contexts/auth/RequireAuth.tsx index c69ac2af76..bda80655bd 100644 --- a/site/src/contexts/auth/RequireAuth.tsx +++ b/site/src/contexts/auth/RequireAuth.tsx @@ -1,11 +1,11 @@ import { ProxyProvider as ProductionProxyProvider } from "contexts/ProxyContext"; -import { DashboardProvider as ProductionDashboardProvider } from "modules/dashboard/DashboardProvider"; import { type FC, useEffect } from "react"; import { Navigate, Outlet, useLocation } from "react-router"; import { embedRedirect } from "utils/redirect"; import { API } from "#/api/api"; import { isApiError } from "#/api/errors"; import { Loader } from "#/components/Loader/Loader"; +import { DashboardProvider as ProductionDashboardProvider } from "#/modules/dashboard/DashboardProvider"; import { useAuthContext } from "./AuthProvider"; type RequireAuthProps = Readonly<{ diff --git a/site/src/contexts/useWebpushNotifications.ts b/site/src/contexts/useWebpushNotifications.ts index a268aa16da..04446d2e04 100644 --- a/site/src/contexts/useWebpushNotifications.ts +++ b/site/src/contexts/useWebpushNotifications.ts @@ -1,9 +1,9 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { useEffect, useState } from "react"; import { useQuery } from "react-query"; import { API } from "#/api/api"; import { buildInfo } from "#/api/queries/buildInfo"; import { experiments } from "#/api/queries/experiments"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; interface WebpushNotifications { readonly enabled: boolean; diff --git a/site/src/hooks/useEmbeddedMetadata.test.ts b/site/src/hooks/useEmbeddedMetadata.test.ts index 22bdd3b456..24f7e95241 100644 --- a/site/src/hooks/useEmbeddedMetadata.test.ts +++ b/site/src/hooks/useEmbeddedMetadata.test.ts @@ -1,3 +1,5 @@ +import { act, renderHook } from "@testing-library/react"; +import type { Region, User } from "#/api/typesGenerated"; import { MockAgentsTabVisible, MockAppearanceConfig, @@ -9,9 +11,7 @@ import { MockTasksTabVisible, MockUserAppearanceSettings, MockUserOwner, -} from "testHelpers/entities"; -import { act, renderHook } from "@testing-library/react"; -import type { Region, User } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; import { DEFAULT_METADATA_KEY, type MetadataKey, diff --git a/site/src/hooks/useEmbeddedMetadata.ts b/site/src/hooks/useEmbeddedMetadata.ts index 1f1e61d3ae..5679760f5b 100644 --- a/site/src/hooks/useEmbeddedMetadata.ts +++ b/site/src/hooks/useEmbeddedMetadata.ts @@ -1,4 +1,3 @@ -import type { Permissions } from "modules/permissions"; import { useMemo, useSyncExternalStore } from "react"; import type { AppearanceConfig, @@ -10,6 +9,7 @@ import type { User, UserAppearanceSettings, } from "#/api/typesGenerated"; +import type { Permissions } from "#/modules/permissions"; export const DEFAULT_METADATA_KEY = "property"; /** diff --git a/site/src/hooks/usePaginatedQuery.test.ts b/site/src/hooks/usePaginatedQuery.test.ts index 0d620451d2..060e44e07c 100644 --- a/site/src/hooks/usePaginatedQuery.test.ts +++ b/site/src/hooks/usePaginatedQuery.test.ts @@ -1,5 +1,5 @@ -import { renderHookWithAuth } from "testHelpers/hooks"; import { waitFor } from "@testing-library/react"; +import { renderHookWithAuth } from "#/testHelpers/hooks"; import { type PaginatedData, type UsePaginatedQueryOptions, diff --git a/site/src/hooks/useSearchParamsKey.test.ts b/site/src/hooks/useSearchParamsKey.test.ts index 38117d402d..3f7b4e0b0e 100644 --- a/site/src/hooks/useSearchParamsKey.test.ts +++ b/site/src/hooks/useSearchParamsKey.test.ts @@ -1,5 +1,5 @@ -import { renderHookWithAuth } from "testHelpers/hooks"; import { act, waitFor } from "@testing-library/react"; +import { renderHookWithAuth } from "#/testHelpers/hooks"; import { useSearchParamsKey } from "./useSearchParamsKey"; /** diff --git a/site/src/modules/apps/apps.test.ts b/site/src/modules/apps/apps.test.ts index c30e3bdbf9..e85b4421ed 100644 --- a/site/src/modules/apps/apps.test.ts +++ b/site/src/modules/apps/apps.test.ts @@ -2,7 +2,7 @@ import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceApp, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { getAppHref, getVSCodeHref, SESSION_TOKEN_PLACEHOLDER } from "./apps"; describe("getVSCodeHref", () => { diff --git a/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx b/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx index 2e7f77c336..5e0d441a13 100644 --- a/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx +++ b/site/src/modules/builds/BuildAvatar/BuildAvatar.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceBuild } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceBuild } from "#/testHelpers/entities"; import { BuildAvatar } from "./BuildAvatar"; const meta: Meta = { diff --git a/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx b/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx index 6dca1839eb..4205a90235 100644 --- a/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx +++ b/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx @@ -1,10 +1,10 @@ import { useTheme } from "@emotion/react"; -import { useClassName } from "hooks/useClassName"; import type { FC } from "react"; import { getDisplayWorkspaceBuildStatus } from "utils/workspace"; import type { WorkspaceBuild } from "#/api/typesGenerated"; import { Avatar, type AvatarProps } from "#/components/Avatar/Avatar"; import { BuildIcon } from "#/components/BuildIcon/BuildIcon"; +import { useClassName } from "#/hooks/useClassName"; interface BuildAvatarProps { build: WorkspaceBuild; diff --git a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBanners.tsx b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBanners.tsx index 84f7d25fdc..3e9a2e79df 100644 --- a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBanners.tsx +++ b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBanners.tsx @@ -1,6 +1,6 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import type { BannerConfig } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { AnnouncementBannerView } from "./AnnouncementBannerView"; export const AnnouncementBanners: FC = () => { diff --git a/site/src/modules/dashboard/DashboardLayout.test.tsx b/site/src/modules/dashboard/DashboardLayout.test.tsx index 3aaadb4155..655a250e89 100644 --- a/site/src/modules/dashboard/DashboardLayout.test.tsx +++ b/site/src/modules/dashboard/DashboardLayout.test.tsx @@ -1,11 +1,11 @@ -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { HttpResponse, http } from "msw"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { DashboardLayout } from "./DashboardLayout"; test("Show the new Coder version notification", async () => { diff --git a/site/src/modules/dashboard/DashboardLayout.tsx b/site/src/modules/dashboard/DashboardLayout.tsx index 4cc4445ee0..08fe663d42 100644 --- a/site/src/modules/dashboard/DashboardLayout.tsx +++ b/site/src/modules/dashboard/DashboardLayout.tsx @@ -2,14 +2,14 @@ import Link from "@mui/material/Link"; import Snackbar from "@mui/material/Snackbar"; import { useAuthenticated } from "hooks"; import { InfoIcon } from "lucide-react"; -import { AnnouncementBanners } from "modules/dashboard/AnnouncementBanners/AnnouncementBanners"; -import { LicenseBanner } from "modules/dashboard/LicenseBanner/LicenseBanner"; import { type FC, type HTMLAttributes, Suspense } from "react"; import { Outlet } from "react-router"; import { cn } from "utils/cn"; import { docs } from "utils/docs"; import { Button } from "#/components/Button/Button"; import { Loader } from "#/components/Loader/Loader"; +import { AnnouncementBanners } from "#/modules/dashboard/AnnouncementBanners/AnnouncementBanners"; +import { LicenseBanner } from "#/modules/dashboard/LicenseBanner/LicenseBanner"; import { DeploymentBanner } from "./DeploymentBanner/DeploymentBanner"; import { Navbar } from "./Navbar/Navbar"; import { useUpdateCheck } from "./useUpdateCheck"; diff --git a/site/src/modules/dashboard/DashboardProvider.tsx b/site/src/modules/dashboard/DashboardProvider.tsx index 631a0a5971..feaae7c43b 100644 --- a/site/src/modules/dashboard/DashboardProvider.tsx +++ b/site/src/modules/dashboard/DashboardProvider.tsx @@ -1,6 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { canViewAnyOrganization } from "modules/permissions"; import { createContext, type FC, type PropsWithChildren } from "react"; import { useQuery } from "react-query"; import { appearance } from "#/api/queries/appearance"; @@ -17,6 +15,8 @@ import type { } from "#/api/typesGenerated"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { canViewAnyOrganization } from "#/modules/permissions"; import { selectFeatureVisibility } from "./entitlements"; export interface DashboardValue { diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx index b5bb44f76d..409121e94b 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx @@ -1,9 +1,9 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, screen, userEvent, waitFor, within } from "storybook/test"; import { DeploymentHealthUnhealthy, MockDeploymentStats, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, screen, userEvent, waitFor, within } from "storybook/test"; +} from "#/testHelpers/entities"; import { DeploymentBannerView } from "./DeploymentBannerView"; const meta: Meta = { diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx index c914fe9dd1..405566c554 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx @@ -1,5 +1,5 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { LicenseBannerView } from "./LicenseBannerView"; export const LicenseBanner: FC = () => { diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx index 423447cfb9..abca3476f5 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { LicenseManagedAgentLimitExceededWarningText } from "#/api/typesGenerated"; +import { chromatic } from "#/testHelpers/chromatic"; import { LicenseBannerView } from "./LicenseBannerView"; const meta: Meta = { diff --git a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx index 9d87e5c824..e31463851f 100644 --- a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx @@ -1,4 +1,3 @@ -import { linkToAuditing } from "modules/navigation"; import type { FC } from "react"; import { Link } from "react-router"; import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; @@ -9,6 +8,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from "#/components/DropdownMenu/DropdownMenu"; +import { linkToAuditing } from "#/modules/navigation"; interface DeploymentDropdownProps { canViewDeployment: boolean; diff --git a/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx b/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx index d99a221e8a..06091dac4c 100644 --- a/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx +++ b/site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx @@ -1,3 +1,7 @@ +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, @@ -5,11 +9,7 @@ import { MockUserMember, 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"; +} from "#/testHelpers/entities"; import { MobileMenu } from "./MobileMenu"; const meta: Meta = { diff --git a/site/src/modules/dashboard/Navbar/Navbar.tsx b/site/src/modules/dashboard/Navbar/Navbar.tsx index 781ddd6b26..50802d5941 100644 --- a/site/src/modules/dashboard/Navbar/Navbar.tsx +++ b/site/src/modules/dashboard/Navbar/Navbar.tsx @@ -1,12 +1,12 @@ import { useProxy } from "contexts/ProxyContext"; import { useAuthenticated } from "hooks"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { canViewDeploymentSettings } from "modules/permissions"; import type { FC } from "react"; import { useQuery } from "react-query"; import { buildInfo } from "#/api/queries/buildInfo"; import type { LinkConfig } from "#/api/typesGenerated"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { canViewDeploymentSettings } from "#/modules/permissions"; import { useFeatureVisibility } from "../useFeatureVisibility"; import { NavbarView } from "./NavbarView"; diff --git a/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx b/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx index 6549209d62..2ce2d63aef 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.stories.tsx @@ -1,9 +1,13 @@ -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { MockTasks, 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 type { TasksFilter } from "#/api/typesGenerated"; +import { chromaticWithTablet } from "#/testHelpers/chromatic"; +import { + MockTasks, + MockUserMember, + MockUserOwner, +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { NavbarView } from "./NavbarView"; const tasksFilter: TasksFilter = { diff --git a/site/src/modules/dashboard/Navbar/NavbarView.tsx b/site/src/modules/dashboard/Navbar/NavbarView.tsx index ab631ffdd5..eddca0b322 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.tsx @@ -1,7 +1,4 @@ import type { ProxyContextValue } from "contexts/ProxyContext"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { NotificationsInbox } from "modules/notifications/NotificationsInbox/NotificationsInbox"; import type { FC } from "react"; import { useQuery } from "react-query"; import { NavLink, useLocation } from "react-router"; @@ -18,6 +15,9 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { NotificationsInbox } from "#/modules/notifications/NotificationsInbox/NotificationsInbox"; import { DeploymentDropdown } from "./DeploymentDropdown"; import { MobileMenu } from "./MobileMenu"; import { ProxyMenu } from "./ProxyMenu"; diff --git a/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx b/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx index 627aaa71e7..688fa71527 100644 --- a/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx +++ b/site/src/modules/dashboard/Navbar/ProxyMenu.stories.tsx @@ -1,17 +1,17 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { AuthProvider } from "contexts/auth/AuthProvider"; +import { getPreferredProxy } from "contexts/ProxyContext"; +import { fn, userEvent, within } from "storybook/test"; +import { getAuthorizationKey } from "#/api/queries/authCheck"; +import { permissionChecks } from "#/modules/permissions"; import { MockAuthMethodsAll, MockPermissions, MockProxyLatencies, MockUserOwner, MockWorkspaceProxies, -} from "testHelpers/entities"; -import { withDesktopViewport } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { AuthProvider } from "contexts/auth/AuthProvider"; -import { getPreferredProxy } from "contexts/ProxyContext"; -import { permissionChecks } from "modules/permissions"; -import { fn, userEvent, within } from "storybook/test"; -import { getAuthorizationKey } from "#/api/queries/authCheck"; +} from "#/testHelpers/entities"; +import { withDesktopViewport } from "#/testHelpers/storybook"; 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 1eb86cb9cc..06e5a1a446 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 { 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 { MockBuildInfo, MockUserOwner } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; 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 412411da97..601cbb76b7 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx @@ -1,11 +1,11 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { render, waitForLoaderToBeRemoved } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "#/components/DropdownMenu/DropdownMenu"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { render, waitForLoaderToBeRemoved } from "#/testHelpers/renderHelpers"; import { Language, UserDropdownContent } from "./UserDropdownContent"; const renderUserDropdownContent = (props: { onSignOut: () => void }) => { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index c35ae3315f..eee919763a 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -1,4 +1,3 @@ -import { useClipboard } from "hooks/useClipboard"; import { CircleUserIcon, CopyIcon, @@ -19,6 +18,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useClipboard } from "#/hooks/useClipboard"; import { SupportIcon } from "../SupportIcon"; export const Language = { diff --git a/site/src/modules/dashboard/useUpdateCheck.test.tsx b/site/src/modules/dashboard/useUpdateCheck.test.tsx index f3ab00d434..eea7288d02 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 { 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/management/DeploymentSettingsLayout.tsx b/site/src/modules/management/DeploymentSettingsLayout.tsx index 0254406d63..bdc02e47b3 100644 --- a/site/src/modules/management/DeploymentSettingsLayout.tsx +++ b/site/src/modules/management/DeploymentSettingsLayout.tsx @@ -1,6 +1,4 @@ import { useAuthenticated } from "hooks"; -import { canViewDeploymentSettings } from "modules/permissions"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { type FC, Suspense } from "react"; import { Navigate, Outlet, useLocation } from "react-router"; import { @@ -11,6 +9,8 @@ import { BreadcrumbSeparator, } from "#/components/Breadcrumb/Breadcrumb"; import { Loader } from "#/components/Loader/Loader"; +import { canViewDeploymentSettings } from "#/modules/permissions"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { DeploymentSidebar } from "./DeploymentSidebar"; const DeploymentSettingsLayout: FC = () => { diff --git a/site/src/modules/management/DeploymentSidebar.tsx b/site/src/modules/management/DeploymentSidebar.tsx index 8c3138e769..ab6564a959 100644 --- a/site/src/modules/management/DeploymentSidebar.tsx +++ b/site/src/modules/management/DeploymentSidebar.tsx @@ -1,6 +1,6 @@ import { useAuthenticated } from "hooks"; -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { DeploymentSidebarView } from "./DeploymentSidebarView"; /** diff --git a/site/src/modules/management/DeploymentSidebarView.stories.tsx b/site/src/modules/management/DeploymentSidebarView.stories.tsx index a58268d9e7..a9b01facf9 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"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { DeploymentSidebarView } from "./DeploymentSidebarView"; const meta: Meta = { diff --git a/site/src/modules/management/DeploymentSidebarView.tsx b/site/src/modules/management/DeploymentSidebarView.tsx index 341f59acdc..016f7c0b59 100644 --- a/site/src/modules/management/DeploymentSidebarView.tsx +++ b/site/src/modules/management/DeploymentSidebarView.tsx @@ -1,5 +1,4 @@ import { ArrowUpRight } from "lucide-react"; -import type { Permissions } from "modules/permissions"; import type { FC } from "react"; import { isDevBuild } from "utils/buildInfo"; import type { BuildInfoResponse, Experiment } from "#/api/typesGenerated"; @@ -8,6 +7,7 @@ import { SettingsSidebarNavItem as SidebarNavItem, } from "#/components/Sidebar/Sidebar"; import { Stack } from "#/components/Stack/Stack"; +import type { Permissions } from "#/modules/permissions"; interface DeploymentSidebarViewProps { /** Site-wide permissions. */ diff --git a/site/src/modules/management/OrganizationSettingsLayout.tsx b/site/src/modules/management/OrganizationSettingsLayout.tsx index f8d723eeab..344d857b10 100644 --- a/site/src/modules/management/OrganizationSettingsLayout.tsx +++ b/site/src/modules/management/OrganizationSettingsLayout.tsx @@ -1,8 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { - canViewOrganization, - type OrganizationPermissions, -} from "modules/permissions/organizations"; import NotFoundPage from "pages/404Page/404Page"; import { createContext, type FC, Suspense, useContext } from "react"; import { useQuery } from "react-query"; @@ -19,6 +14,11 @@ import { BreadcrumbSeparator, } from "#/components/Breadcrumb/Breadcrumb"; import { Loader } from "#/components/Loader/Loader"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { + canViewOrganization, + type OrganizationPermissions, +} from "#/modules/permissions/organizations"; export const OrganizationSettingsContext = createContext< OrganizationSettingsValue | undefined diff --git a/site/src/modules/management/OrganizationSidebar.tsx b/site/src/modules/management/OrganizationSidebar.tsx index e424e3b189..b9591ae4c5 100644 --- a/site/src/modules/management/OrganizationSidebar.tsx +++ b/site/src/modules/management/OrganizationSidebar.tsx @@ -1,7 +1,7 @@ import { useAuthenticated } from "hooks"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; import type { FC } from "react"; import { Sidebar as BaseSidebar } from "#/components/Sidebar/Sidebar"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; import { OrganizationSidebarView } from "./OrganizationSidebarView"; /** diff --git a/site/src/modules/management/OrganizationSidebarView.stories.tsx b/site/src/modules/management/OrganizationSidebarView.stories.tsx index df77f770a9..24423c3863 100644 --- a/site/src/modules/management/OrganizationSidebarView.stories.tsx +++ b/site/src/modules/management/OrganizationSidebarView.stories.tsx @@ -1,3 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, waitFor, within } from "storybook/test"; +import type { Organization } from "#/api/typesGenerated"; import { MockNoOrganizationPermissions, MockNoPermissions, @@ -5,11 +8,8 @@ import { MockOrganization2, MockOrganizationPermissions, MockPermissions, -} 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 type { Organization } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { OrganizationSidebarView } from "./OrganizationSidebarView"; const meta: Meta = { diff --git a/site/src/modules/management/OrganizationSidebarView.tsx b/site/src/modules/management/OrganizationSidebarView.tsx index 1b42047352..9ac17c1c12 100644 --- a/site/src/modules/management/OrganizationSidebarView.tsx +++ b/site/src/modules/management/OrganizationSidebarView.tsx @@ -1,6 +1,4 @@ import { Check, Plus } from "lucide-react"; -import type { Permissions } from "modules/permissions"; -import type { OrganizationPermissions } from "modules/permissions/organizations"; import { type FC, useState } from "react"; import { useNavigate } from "react-router"; import type { Organization } from "#/api/typesGenerated"; @@ -22,6 +20,8 @@ import { PopoverTrigger, } from "#/components/Popover/Popover"; import { SettingsSidebarNavItem } from "#/components/Sidebar/Sidebar"; +import type { Permissions } from "#/modules/permissions"; +import type { OrganizationPermissions } from "#/modules/permissions/organizations"; interface OrganizationsSettingsNavigationProps { /** The organization selected from the dropdown */ diff --git a/site/src/modules/navigation.ts b/site/src/modules/navigation.ts index 289b54a7b0..e3067681b9 100644 --- a/site/src/modules/navigation.ts +++ b/site/src/modules/navigation.ts @@ -2,7 +2,7 @@ * @fileoverview TODO: centralize navigation code here! URL constants, URL formatting, all of it */ -import { useEffectEvent } from "hooks/hookPolyfills"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; import type { DashboardValue } from "./dashboard/DashboardProvider"; import { useDashboard } from "./dashboard/useDashboard"; diff --git a/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx b/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx index 1aff447b26..cef5f6e6f7 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxItem.stories.tsx @@ -1,7 +1,7 @@ -import { MockNotification } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, within } from "storybook/test"; import { daysAgo } from "utils/time"; +import { MockNotification } from "#/testHelpers/entities"; import { InboxItem } from "./InboxItem"; const meta: Meta = { diff --git a/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx b/site/src/modules/notifications/NotificationsInbox/InboxPopover.stories.tsx index 3243298333..37b43fcfc9 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 056a493565..fad9bf5760 100644 --- a/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx +++ b/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.stories.tsx @@ -1,7 +1,7 @@ -import { MockNotifications, mockApiError } from "testHelpers/entities"; -import { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; +import { MockNotifications, mockApiError } from "#/testHelpers/entities"; +import { withToaster } from "#/testHelpers/storybook"; import { NotificationsInbox } from "./NotificationsInbox"; const meta: Meta = { diff --git a/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.tsx b/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.tsx index ca1794ae05..a22d7bcb3a 100644 --- a/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.tsx +++ b/site/src/modules/notifications/NotificationsInbox/NotificationsInbox.tsx @@ -1,4 +1,3 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { type FC, useEffect } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -8,6 +7,7 @@ import type { ListInboxNotificationsResponse, UpdateInboxNotificationReadStatusResponse, } from "#/api/typesGenerated"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; import { InboxPopover } from "./InboxPopover"; const NOTIFICATIONS_QUERY_KEY = ["notifications"]; diff --git a/site/src/modules/provisioners/ProvisionerAlert.stories.tsx b/site/src/modules/provisioners/ProvisionerAlert.stories.tsx index d2fd8ca9b3..50562a6f16 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.stories.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.stories.tsx @@ -1,5 +1,5 @@ -import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; 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 65763dd9a5..400815f1e6 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.tsx @@ -1,4 +1,3 @@ -import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; import type { FC } from "react"; import { cn } from "utils/cn"; import { @@ -7,6 +6,7 @@ import { AlertDescription, AlertTitle, } from "#/components/Alert/Alert"; +import { ProvisionerTag } from "#/modules/provisioners/ProvisionerTag"; export enum AlertVariant { // Alerts are usually styled with a full rounded border and meant to use as a visually distinct element of the page. diff --git a/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx b/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx index 1ff98d35b6..a8397e3cdf 100644 --- a/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx +++ b/site/src/modules/provisioners/ProvisionerStatusAlert.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockTemplateVersion } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockTemplateVersion } from "#/testHelpers/entities"; import { AlertVariant } from "./ProvisionerAlert"; import { ProvisionerStatusAlert } from "./ProvisionerStatusAlert"; diff --git a/site/src/modules/provisioners/ProvisionerTagsField.tsx b/site/src/modules/provisioners/ProvisionerTagsField.tsx index 4723385358..ed0bb7a85d 100644 --- a/site/src/modules/provisioners/ProvisionerTagsField.tsx +++ b/site/src/modules/provisioners/ProvisionerTagsField.tsx @@ -1,10 +1,10 @@ import TextField from "@mui/material/TextField"; import { PlusIcon } from "lucide-react"; -import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; import { type FC, useRef, useState } from "react"; import * as Yup from "yup"; import type { ProvisionerDaemon } from "#/api/typesGenerated"; import { Button } from "#/components/Button/Button"; +import { ProvisionerTag } from "#/modules/provisioners/ProvisionerTag"; // Users can't delete these tags const REQUIRED_TAGS = ["scope", "organization", "user"]; diff --git a/site/src/modules/resources/AgentDevcontainerCard.stories.tsx b/site/src/modules/resources/AgentDevcontainerCard.stories.tsx index dc9f8feec5..71da8917f4 100644 --- a/site/src/modules/resources/AgentDevcontainerCard.stories.tsx +++ b/site/src/modules/resources/AgentDevcontainerCard.stories.tsx @@ -1,4 +1,8 @@ -import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getPreferredProxy } from "contexts/ProxyContext"; +import { screen, spyOn, userEvent, within } from "storybook/test"; +import { API } from "#/api/api"; +import { chromatic } from "#/testHelpers/chromatic"; import { MockListeningPortsResponse, MockPrimaryWorkspaceProxy, @@ -12,15 +16,11 @@ import { MockWorkspaceProxies, MockWorkspaceSubAgent, mockApiError, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { withDashboardProvider, withProxyProvider, -} from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getPreferredProxy } from "contexts/ProxyContext"; -import { screen, spyOn, userEvent, within } from "storybook/test"; -import { API } from "#/api/api"; +} from "#/testHelpers/storybook"; import { AgentDevcontainerCard } from "./AgentDevcontainerCard"; const meta: Meta = { diff --git a/site/src/modules/resources/AgentDevcontainerCard.tsx b/site/src/modules/resources/AgentDevcontainerCard.tsx index edad63f662..08b77c5e7d 100644 --- a/site/src/modules/resources/AgentDevcontainerCard.tsx +++ b/site/src/modules/resources/AgentDevcontainerCard.tsx @@ -1,7 +1,6 @@ import Skeleton from "@mui/material/Skeleton"; import { useProxy } from "contexts/ProxyContext"; import { Container, ExternalLinkIcon } from "lucide-react"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import { AppStatuses } from "pages/WorkspacePage/AppStatuses"; import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; @@ -37,6 +36,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; import { AgentApps, organizeAgentApps } from "./AgentApps/AgentApps"; import { AgentButton } from "./AgentButton"; import { AgentDevcontainerMoreActions } from "./AgentDevcontainerMoreActions"; diff --git a/site/src/modules/resources/AgentExternal.stories.tsx b/site/src/modules/resources/AgentExternal.stories.tsx index f83095dd1b..d261d0f27d 100644 --- a/site/src/modules/resources/AgentExternal.stories.tsx +++ b/site/src/modules/resources/AgentExternal.stories.tsx @@ -1,7 +1,7 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockWorkspace, MockWorkspaceAgent } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { AgentExternal } from "./AgentExternal"; const meta: Meta = { diff --git a/site/src/modules/resources/AgentRow.stories.tsx b/site/src/modules/resources/AgentRow.stories.tsx index 0d45be20cf..a48faba402 100644 --- a/site/src/modules/resources/AgentRow.stories.tsx +++ b/site/src/modules/resources/AgentRow.stories.tsx @@ -1,15 +1,15 @@ -import { chromatic } from "testHelpers/chromatic"; -import * as M from "testHelpers/entities"; -import { - withDashboardProvider, - withProxyProvider, - withWebSocket, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { getPreferredProxy } from "contexts/ProxyContext"; import { spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; import { workspaceAgentContainersKey } from "#/api/queries/workspaces"; +import { chromatic } from "#/testHelpers/chromatic"; +import * as M from "#/testHelpers/entities"; +import { + withDashboardProvider, + withProxyProvider, + withWebSocket, +} from "#/testHelpers/storybook"; import { AgentRow } from "./AgentRow"; const defaultAgentMetadata = [ diff --git a/site/src/modules/resources/AgentRow.test.tsx b/site/src/modules/resources/AgentRow.test.tsx index 3af0575890..6dc274554d 100644 --- a/site/src/modules/resources/AgentRow.test.tsx +++ b/site/src/modules/resources/AgentRow.test.tsx @@ -1,4 +1,4 @@ -import { MockWorkspaceApp } from "testHelpers/entities"; +import { MockWorkspaceApp } from "#/testHelpers/entities"; import { organizeAgentApps } from "./AgentApps/AgentApps"; describe("organizeAgentApps", () => { diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index fe01b59e1a..30e1c54e09 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -3,7 +3,6 @@ import Divider from "@mui/material/Divider"; import Skeleton from "@mui/material/Skeleton"; import { useProxy } from "contexts/ProxyContext"; import { SquareCheckBigIcon } from "lucide-react"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import { AppStatuses } from "pages/WorkspacePage/AppStatuses"; import { type FC, @@ -25,6 +24,7 @@ import type { } from "#/api/typesGenerated"; import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; import { Button } from "#/components/Button/Button"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; import { AgentApps, organizeAgentApps } from "./AgentApps/AgentApps"; import { AgentDevcontainerCard } from "./AgentDevcontainerCard"; import { AgentExternal } from "./AgentExternal"; diff --git a/site/src/modules/resources/AgentRowPreview.stories.tsx b/site/src/modules/resources/AgentRowPreview.stories.tsx index 8cd4f6bd7b..386003f7e0 100644 --- a/site/src/modules/resources/AgentRowPreview.stories.tsx +++ b/site/src/modules/resources/AgentRowPreview.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceAgent, MockWorkspaceApp } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceAgent, MockWorkspaceApp } from "#/testHelpers/entities"; 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 1306ff24bc..a49801d416 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/AgentVersion.tsx b/site/src/modules/resources/AgentVersion.tsx index 4118b3f2e1..530132bca4 100644 --- a/site/src/modules/resources/AgentVersion.tsx +++ b/site/src/modules/resources/AgentVersion.tsx @@ -1,9 +1,9 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import type { FC } from "react"; import { useQuery } from "react-query"; import { agentVersionStatus, getDisplayVersionStatus } from "utils/workspace"; import { buildInfo } from "#/api/queries/buildInfo"; import type { WorkspaceAgent } from "#/api/typesGenerated"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import { AgentOutdatedTooltip } from "./AgentOutdatedTooltip"; interface AgentVersionProps { diff --git a/site/src/modules/resources/AppLink/AppLink.stories.tsx b/site/src/modules/resources/AppLink/AppLink.stories.tsx index 49051b692f..c374e52e4b 100644 --- a/site/src/modules/resources/AppLink/AppLink.stories.tsx +++ b/site/src/modules/resources/AppLink/AppLink.stories.tsx @@ -1,13 +1,13 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getPreferredProxy } from "contexts/ProxyContext"; import { MockPrimaryWorkspaceProxy, MockWorkspace, MockWorkspaceAgent, MockWorkspaceApp, MockWorkspaceProxies, -} from "testHelpers/entities"; -import { withProxyProvider, withToaster } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getPreferredProxy } from "contexts/ProxyContext"; +} from "#/testHelpers/entities"; +import { withProxyProvider, withToaster } from "#/testHelpers/storybook"; import { AppLink } from "./AppLink"; const meta: Meta = { diff --git a/site/src/modules/resources/AppLink/AppLink.test.tsx b/site/src/modules/resources/AppLink/AppLink.test.tsx index 44676b22c2..0efc8574aa 100644 --- a/site/src/modules/resources/AppLink/AppLink.test.tsx +++ b/site/src/modules/resources/AppLink/AppLink.test.tsx @@ -1,10 +1,10 @@ +import { screen } from "@testing-library/react"; import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceApp, -} from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; -import { screen } from "@testing-library/react"; +} from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; import { AppLink } from "./AppLink"; const renderAppLink = (app: typeof MockWorkspaceApp) => { diff --git a/site/src/modules/resources/AppLink/AppLink.tsx b/site/src/modules/resources/AppLink/AppLink.tsx index ec9976ca3e..d587dd5c1c 100644 --- a/site/src/modules/resources/AppLink/AppLink.tsx +++ b/site/src/modules/resources/AppLink/AppLink.tsx @@ -7,8 +7,6 @@ import { SquareArrowOutUpRightIcon, UsersIcon, } from "lucide-react"; -import { isExternalApp, needsSessionToken } from "modules/apps/apps"; -import { useAppLink } from "modules/apps/useAppLink"; import { type FC, type ReactNode, useState } from "react"; import { docs } from "utils/docs"; import type * as TypesGen from "#/api/typesGenerated"; @@ -21,6 +19,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { isExternalApp, needsSessionToken } from "#/modules/apps/apps"; +import { useAppLink } from "#/modules/apps/useAppLink"; import { AgentButton } from "../AgentButton"; import { BaseIcon } from "./BaseIcon"; diff --git a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx index 171f8296ff..6800acee0a 100644 --- a/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx +++ b/site/src/modules/resources/DownloadAgentLogsButton.stories.tsx @@ -1,8 +1,8 @@ -import { MockWorkspaceAgent } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { agentLogsKey } from "#/api/queries/workspaces"; import type { WorkspaceAgentLog } from "#/api/typesGenerated"; +import { 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 daa7e2c4d7..8102ba600b 100644 --- a/site/src/modules/resources/PortForwardButton.stories.tsx +++ b/site/src/modules/resources/PortForwardButton.stories.tsx @@ -1,13 +1,13 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { MockListeningPortsResponse, MockSharedPortsResponse, MockTemplate, MockWorkspace, MockWorkspaceAgent, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { PortForwardButton } from "./PortForwardButton"; const meta: Meta = { diff --git a/site/src/modules/resources/PortForwardButton.test.tsx b/site/src/modules/resources/PortForwardButton.test.tsx index 7f88a4b714..e2fc19c6fa 100644 --- a/site/src/modules/resources/PortForwardButton.test.tsx +++ b/site/src/modules/resources/PortForwardButton.test.tsx @@ -1,12 +1,12 @@ +import { screen } from "@testing-library/react"; import { MockListeningPortsResponse, MockSharedPortsResponse, MockTemplate, MockWorkspace, MockWorkspaceAgent, -} from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; -import { screen } from "@testing-library/react"; +} from "#/testHelpers/entities"; +import { render } from "#/testHelpers/renderHelpers"; import { PortForwardPopoverView } from "./PortForwardButton"; describe("PortForwardPopoverView", () => { diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index 961ebb77c6..d7a61d27b4 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -15,7 +15,6 @@ import { ShareIcon, X as XIcon, } from "lucide-react"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { type FC, useState } from "react"; import { useMutation, useQuery } from "react-query"; import { docs } from "utils/docs"; @@ -60,6 +59,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; interface PortForwardButtonProps { host: string; diff --git a/site/src/modules/resources/PortForwardPopoverView.stories.tsx b/site/src/modules/resources/PortForwardPopoverView.stories.tsx index e1663f1db4..7cb19d4a06 100644 --- a/site/src/modules/resources/PortForwardPopoverView.stories.tsx +++ b/site/src/modules/resources/PortForwardPopoverView.stories.tsx @@ -1,12 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { MockListeningPortsResponse, MockSharedPortsResponse, MockTemplate, MockWorkspace, MockWorkspaceAgent, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; import { PortForwardPopoverView } from "./PortForwardButton"; const meta: Meta = { diff --git a/site/src/modules/resources/ResourceAvatar.stories.tsx b/site/src/modules/resources/ResourceAvatar.stories.tsx index 8ca3000eac..508b500cba 100644 --- a/site/src/modules/resources/ResourceAvatar.stories.tsx +++ b/site/src/modules/resources/ResourceAvatar.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceResource } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceResource } from "#/testHelpers/entities"; 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 c5885bebf7..76e55fad5f 100644 --- a/site/src/modules/resources/ResourceCard.stories.tsx +++ b/site/src/modules/resources/ResourceCard.stories.tsx @@ -1,6 +1,6 @@ -import { MockWorkspaceResource } from "testHelpers/entities"; -import { withProxyProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceResource } from "#/testHelpers/entities"; +import { withProxyProvider } from "#/testHelpers/storybook"; 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 dc787b4c35..078ea6df30 100644 --- a/site/src/modules/resources/ResourceCard.test.tsx +++ b/site/src/modules/resources/ResourceCard.test.tsx @@ -1,7 +1,7 @@ -import { MockWorkspaceResource } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import type { WorkspaceResourceMetadata } from "#/api/typesGenerated"; +import { MockWorkspaceResource } from "#/testHelpers/entities"; +import { render } from "#/testHelpers/renderHelpers"; 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 0d8015f37e..ef71566a1c 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"; +} from "#/testHelpers/entities"; +import { withProxyProvider } from "#/testHelpers/storybook"; 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 187a63db5d..9735d4b237 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 { spyOn, userEvent, within } from "storybook/test"; +import { API } from "#/api/api"; import { MockDeploymentSSH, MockWorkspace, MockWorkspaceAgent, -} from "testHelpers/entities"; -import { withDesktopViewport } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { spyOn, userEvent, within } from "storybook/test"; -import { API } from "#/api/api"; +} from "#/testHelpers/entities"; +import { withDesktopViewport } from "#/testHelpers/storybook"; import { AgentSSHButton } from "./SSHButton"; const meta: Meta = { diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx index baef99efcb..c144e39e67 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspace } from "#/testHelpers/entities"; import { TerminalLink } from "./TerminalLink"; const meta: Meta = { diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.tsx index f6ccfb3a8e..352c48fc10 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.tsx @@ -1,6 +1,6 @@ -import { getTerminalHref, openAppInNewWindow } from "modules/apps/apps"; import type { FC, MouseEvent } from "react"; import { TerminalIcon } from "#/components/Icons/TerminalIcon"; +import { getTerminalHref, openAppInNewWindow } from "#/modules/apps/apps"; import { AgentButton } from "../AgentButton"; import { DisplayAppNameMap } from "../AppLink/AppLink"; diff --git a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx index 477a40d106..cbdf6f009d 100644 --- a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx +++ b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspace, MockWorkspaceAgent } from "#/testHelpers/entities"; import { VSCodeDesktopButton } from "./VSCodeDesktopButton"; const meta: Meta = { diff --git a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx index bd645d2b9f..4a5f377d86 100644 --- a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx +++ b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx @@ -1,12 +1,12 @@ import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; -import { getVSCodeHref } from "modules/apps/apps"; import { type FC, useRef, useState } from "react"; import { API } from "#/api/api"; import type { DisplayApp } from "#/api/typesGenerated"; import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; import { VSCodeIcon } from "#/components/Icons/VSCodeIcon"; import { VSCodeInsidersIcon } from "#/components/Icons/VSCodeInsidersIcon"; +import { getVSCodeHref } from "#/modules/apps/apps"; import { AgentButton } from "../AgentButton"; import { DisplayAppNameMap } from "../AppLink/AppLink"; diff --git a/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx b/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx index f6cfd0850d..be619ddb86 100644 --- a/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx +++ b/site/src/modules/resources/VSCodeDevContainerButton/VSCodeDevContainerButton.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspace, MockWorkspaceAgent } from "#/testHelpers/entities"; import { VSCodeDevContainerButton } from "./VSCodeDevContainerButton"; const meta: Meta = { diff --git a/site/src/modules/resources/WildcardHostnameWarning.tsx b/site/src/modules/resources/WildcardHostnameWarning.tsx index 795d600074..5081aaf710 100644 --- a/site/src/modules/resources/WildcardHostnameWarning.tsx +++ b/site/src/modules/resources/WildcardHostnameWarning.tsx @@ -1,10 +1,10 @@ import { useProxy } from "contexts/ProxyContext"; -import { useAuthenticated } from "hooks/useAuthenticated"; import type { FC } from "react"; import { docs } from "utils/docs"; import type { WorkspaceResource } from "#/api/typesGenerated"; import { Alert, AlertDescription, AlertTitle } from "#/components/Alert/Alert"; import { Link } from "#/components/Link/Link"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; interface WildcardHostnameWarningProps { // If resources are provided, show template-focused warning diff --git a/site/src/modules/resources/useAgentContainers.jest.tsx b/site/src/modules/resources/useAgentContainers.jest.tsx index 682f79d13f..3e9c7f610d 100644 --- a/site/src/modules/resources/useAgentContainers.jest.tsx +++ b/site/src/modules/resources/useAgentContainers.jest.tsx @@ -1,9 +1,3 @@ -import { - MockWorkspaceAgent, - MockWorkspaceAgentDevcontainer, -} from "testHelpers/entities"; -import { createTestQueryClient } from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { renderHook, waitFor } from "@testing-library/react"; import { HttpResponse, http } from "msw"; import type { FC, PropsWithChildren } from "react"; @@ -13,6 +7,12 @@ import { toast } from "sonner"; import type { OneWayWebSocket } from "utils/OneWayWebSocket"; import * as API from "#/api/api"; import type { WorkspaceAgentListContainersResponse } from "#/api/typesGenerated"; +import { + MockWorkspaceAgent, + MockWorkspaceAgentDevcontainer, +} from "#/testHelpers/entities"; +import { createTestQueryClient } from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { useAgentContainers } from "./useAgentContainers"; const createWrapper = (): FC => { diff --git a/site/src/modules/resources/useAgentContainers.ts b/site/src/modules/resources/useAgentContainers.ts index 31e4b42474..12a86bb153 100644 --- a/site/src/modules/resources/useAgentContainers.ts +++ b/site/src/modules/resources/useAgentContainers.ts @@ -1,4 +1,3 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { useEffect } from "react"; import { useQuery, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -12,6 +11,7 @@ import type { WorkspaceAgentDevcontainer, WorkspaceAgentListContainersResponse, } from "#/api/typesGenerated"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; export function useAgentContainers( agent: WorkspaceAgent, diff --git a/site/src/modules/resources/useAgentLogs.jest.ts b/site/src/modules/resources/useAgentLogs.jest.ts index 0b8ad003eb..f2f1c51b46 100644 --- a/site/src/modules/resources/useAgentLogs.jest.ts +++ b/site/src/modules/resources/useAgentLogs.jest.ts @@ -1,14 +1,14 @@ -import { MockWorkspaceAgent } from "testHelpers/entities"; -import { - createMockWebSocket, - type MockWebSocketServer, -} from "testHelpers/websockets"; import { renderHook, waitFor } from "@testing-library/react"; import { act } from "react"; import { toast } from "sonner"; import { OneWayWebSocket } from "utils/OneWayWebSocket"; import * as apiModule from "#/api/api"; import type { WorkspaceAgentLog } from "#/api/typesGenerated"; +import { MockWorkspaceAgent } from "#/testHelpers/entities"; +import { + createMockWebSocket, + type MockWebSocketServer, +} from "#/testHelpers/websockets"; import { useAgentLogs } from "./useAgentLogs"; const millisecondsInOneMinute = 60_000; diff --git a/site/src/modules/tasks/TaskDeleteDialog/TaskDeleteDialog.stories.tsx b/site/src/modules/tasks/TaskDeleteDialog/TaskDeleteDialog.stories.tsx index 795f3d9992..e9b19dd6b7 100644 --- a/site/src/modules/tasks/TaskDeleteDialog/TaskDeleteDialog.stories.tsx +++ b/site/src/modules/tasks/TaskDeleteDialog/TaskDeleteDialog.stories.tsx @@ -1,8 +1,8 @@ -import { MockTask } from "testHelpers/entities"; -import { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { API } from "#/api/api"; +import { MockTask } from "#/testHelpers/entities"; +import { withToaster } from "#/testHelpers/storybook"; import { TaskDeleteDialog } from "./TaskDeleteDialog"; const meta: Meta = { diff --git a/site/src/modules/tasks/TaskFeedbackDialog/TaskFeedbackDialog.stories.tsx b/site/src/modules/tasks/TaskFeedbackDialog/TaskFeedbackDialog.stories.tsx index 0dec67b19b..295e06c85d 100644 --- a/site/src/modules/tasks/TaskFeedbackDialog/TaskFeedbackDialog.stories.tsx +++ b/site/src/modules/tasks/TaskFeedbackDialog/TaskFeedbackDialog.stories.tsx @@ -1,8 +1,8 @@ -import { MockTask, mockApiError } from "testHelpers/entities"; -import { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; +import { MockTask, mockApiError } from "#/testHelpers/entities"; +import { withToaster } from "#/testHelpers/storybook"; import { TaskFeedbackDialog } from "./TaskFeedbackDialog"; const meta: Meta = { diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx index 2e6c6827fc..43e0b6083f 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx @@ -1,3 +1,8 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; +import { API } from "#/api/api"; +import { templateVersionPresetsKey } from "#/api/queries/templates"; +import type { Task } from "#/api/typesGenerated"; import { MockPresets, MockTask, @@ -9,13 +14,8 @@ import { MockTemplateVersionExternalAuthGithubAuthenticated, MockUserOwner, mockApiError, -} from "testHelpers/entities"; -import { withAuthProvider, withToaster } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; -import { API } from "#/api/api"; -import { templateVersionPresetsKey } from "#/api/queries/templates"; -import type { Task } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withAuthProvider, withToaster } from "#/testHelpers/storybook"; import type TasksPage from "../../../pages/TasksPage/TasksPage"; import { TaskPrompt } from "./TaskPrompt"; diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx index 01301adb68..60c1bc0333 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx @@ -1,5 +1,3 @@ -import { useAuthenticated } from "hooks/useAuthenticated"; -import { useExternalAuth } from "hooks/useExternalAuth"; import { ArrowUpIcon, InfoIcon, RedoIcon, RotateCcwIcon } from "lucide-react"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; @@ -38,6 +36,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; +import { useExternalAuth } from "#/hooks/useExternalAuth"; import { PromptSelectTrigger } from "./PromptSelectTrigger"; import { TemplateVersionSelect } from "./TemplateVersionSelect"; diff --git a/site/src/modules/tasks/TaskPrompt/TemplateVersionSelect.stories.tsx b/site/src/modules/tasks/TaskPrompt/TemplateVersionSelect.stories.tsx index d2adee39d7..35aca658de 100644 --- a/site/src/modules/tasks/TaskPrompt/TemplateVersionSelect.stories.tsx +++ b/site/src/modules/tasks/TaskPrompt/TemplateVersionSelect.stories.tsx @@ -1,9 +1,9 @@ -import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { useState } from "react"; import { spyOn, userEvent, within } from "storybook/test"; import { daysAgo } from "utils/time"; import { API } from "#/api/api"; +import { MockTemplate, MockTemplateVersion } from "#/testHelpers/entities"; import { TemplateVersionSelect } from "./TemplateVersionSelect"; const meta: Meta = { diff --git a/site/src/modules/tasks/TasksSidebar/TasksSidebar.stories.tsx b/site/src/modules/tasks/TasksSidebar/TasksSidebar.stories.tsx index e79dab1d38..de93f0981b 100644 --- a/site/src/modules/tasks/TasksSidebar/TasksSidebar.stories.tsx +++ b/site/src/modules/tasks/TasksSidebar/TasksSidebar.stories.tsx @@ -1,16 +1,16 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockUsers } from "pages/UsersPage/storybookData/users"; +import { spyOn, userEvent, within } from "storybook/test"; +import { reactRouterParameters } from "storybook-addon-remix-react-router"; +import { API } from "#/api/api"; import { MockDisplayNameTasks, MockTask, MockTasks, MockUserOwner, mockApiError, -} from "testHelpers/entities"; -import { withAuthProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { MockUsers } from "pages/UsersPage/storybookData/users"; -import { spyOn, userEvent, within } from "storybook/test"; -import { reactRouterParameters } from "storybook-addon-remix-react-router"; -import { API } from "#/api/api"; +} from "#/testHelpers/entities"; +import { withAuthProvider } from "#/testHelpers/storybook"; import { TasksSidebar } from "./TasksSidebar"; const meta: Meta = { diff --git a/site/src/modules/tasks/TasksSidebar/TasksSidebar.tsx b/site/src/modules/tasks/TasksSidebar/TasksSidebar.tsx index c3bf147882..f37c983ec1 100644 --- a/site/src/modules/tasks/TasksSidebar/TasksSidebar.tsx +++ b/site/src/modules/tasks/TasksSidebar/TasksSidebar.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; import { EditIcon, EllipsisIcon, @@ -37,6 +36,7 @@ import { TooltipProvider, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; import { TaskDeleteDialog } from "../TaskDeleteDialog/TaskDeleteDialog"; import { taskStatusToStatusIndicatorVariant } from "../TaskStatus/TaskStatus"; import { canPauseTask, canResumeTask, isPauseDisabled } from "../taskActions"; diff --git a/site/src/modules/tasks/TasksSidebar/UserCombobox.stories.tsx b/site/src/modules/tasks/TasksSidebar/UserCombobox.stories.tsx index a2dc91670e..ba32ef6bca 100644 --- a/site/src/modules/tasks/TasksSidebar/UserCombobox.stories.tsx +++ b/site/src/modules/tasks/TasksSidebar/UserCombobox.stories.tsx @@ -1,11 +1,11 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { waitFor } from "@testing-library/react"; import { MockUsers } from "pages/UsersPage/storybookData/users"; import { useState } from "react"; import { expect, spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { withAuthProvider } from "#/testHelpers/storybook"; import { UserCombobox } from "./UserCombobox"; const meta: Meta = { diff --git a/site/src/modules/tasks/TasksSidebar/UserCombobox.tsx b/site/src/modules/tasks/TasksSidebar/UserCombobox.tsx index 6583717fc8..08139fdaf2 100644 --- a/site/src/modules/tasks/TasksSidebar/UserCombobox.tsx +++ b/site/src/modules/tasks/TasksSidebar/UserCombobox.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useDebouncedValue } from "hooks/debounce"; import { CheckIcon, ChevronsUpDownIcon } from "lucide-react"; import { type FC, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; @@ -21,6 +20,7 @@ import { PopoverContent, PopoverTrigger, } from "#/components/Popover/Popover"; +import { useDebouncedValue } from "#/hooks/debounce"; type UserOption = { label: string; diff --git a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx index 775c82f806..df438dafed 100644 --- a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx +++ b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx @@ -1,9 +1,9 @@ -import { chromatic } from "testHelpers/chromatic"; +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"; +} from "#/testHelpers/entities"; 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 56e86d1698..bc01f89e75 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx @@ -1,7 +1,7 @@ -import { chromatic } from "testHelpers/chromatic"; import { useTheme } from "@emotion/react"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { FileTree } from "utils/filetree"; +import { chromatic } from "#/testHelpers/chromatic"; import { TemplateFileTree } from "./TemplateFileTree"; const fileTree: FileTree = { diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx index 3a7adcfacf..0121697051 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { TemplateFiles } from "./TemplateFiles"; const exampleFiles = { diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx index 9a53e85c5c..1a70b02a60 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx @@ -1,12 +1,12 @@ import set from "lodash/set"; import { EditIcon } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, useCallback, useMemo } from "react"; import { Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; import type { FileTree } from "utils/filetree"; import type { TemplateVersionFiles } from "utils/templateVersion"; import { SyntaxHighlighter } from "#/components/SyntaxHighlighter/SyntaxHighlighter"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { getTemplateFileIcon } from "./TemplateFileIcon"; import { TemplateFileTree } from "./TemplateFileTree"; diff --git a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx index 9a0d1556e9..f089006634 100644 --- a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx +++ b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.stories.tsx @@ -1,11 +1,11 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockWorkspaceAgent, MockWorkspaceAgentConnecting, MockWorkspaceImageResource, MockWorkspaceResource, MockWorkspaceVolumeResource, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; import { TemplateResourcesTable } from "./TemplateResourcesTable"; const meta: Meta = { diff --git a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx index 995466c6ac..318022405e 100644 --- a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx +++ b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx @@ -1,7 +1,7 @@ -import { AgentRowPreview } from "modules/resources/AgentRowPreview"; -import { Resources } from "modules/resources/Resources"; import type { FC } from "react"; import type { WorkspaceResource } from "#/api/typesGenerated"; +import { AgentRowPreview } from "#/modules/resources/AgentRowPreview"; +import { Resources } from "#/modules/resources/Resources"; interface TemplateResourcesProps { resources: WorkspaceResource[]; diff --git a/site/src/modules/templates/useWatchVersionLogs.ts b/site/src/modules/templates/useWatchVersionLogs.ts index 3e22560cc6..69fbc2373c 100644 --- a/site/src/modules/templates/useWatchVersionLogs.ts +++ b/site/src/modules/templates/useWatchVersionLogs.ts @@ -1,7 +1,7 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { useEffect, useState } from "react"; import { watchBuildLogsByTemplateVersionId } from "#/api/api"; import type { ProvisionerJobLog, TemplateVersion } from "#/api/typesGenerated"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; export const useWatchVersionLogs = ( templateVersion: TemplateVersion | undefined, options?: { onDone: () => Promise }, diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.jest.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.jest.tsx index 9ff7e64199..2ff85fe7e0 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.jest.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.jest.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/DynamicParameter/DynamicParameter.stories.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx index ac627c6130..4cee312b4e 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx @@ -1,5 +1,5 @@ -import { MockPreviewParameter } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockPreviewParameter } from "#/testHelpers/entities"; import { DynamicParameter } from "./DynamicParameter"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx index 3fbfc819b4..b8b5835a49 100644 --- a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.stories.tsx @@ -1,6 +1,6 @@ -import { MockWorkspaceAppStatus } from "testHelpers/entities"; -import { withProxyProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceAppStatus } from "#/testHelpers/entities"; +import { withProxyProvider } from "#/testHelpers/storybook"; import { WorkspaceAppStatus } from "./WorkspaceAppStatus"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.tsx b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.tsx index f69bd27bcf..d36e9f3db2 100644 --- a/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.tsx +++ b/site/src/modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus.tsx @@ -1,11 +1,11 @@ import capitalize from "lodash/capitalize"; -import { AppStatusStateIcon } from "modules/apps/AppStatusStateIcon"; import type { WorkspaceAppStatus as APIWorkspaceAppStatus } from "#/api/typesGenerated"; import { Tooltip, TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { AppStatusStateIcon } from "#/modules/apps/AppStatusStateIcon"; type WorkspaceAppStatusProps = { status: APIWorkspaceAppStatus | null; diff --git a/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx b/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx index ec984417e9..d54c4284e3 100644 --- a/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceBuild } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceBuild } from "#/testHelpers/entities"; 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 55ccc6ff6e..79ccc13907 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockWorkspaceBuildLogs } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockWorkspaceBuildLogs } from "#/testHelpers/entities"; import { WorkspaceBuildLogs } from "./WorkspaceBuildLogs"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx index 92a1e58c3c..58e390b420 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx @@ -7,11 +7,11 @@ import { useLayoutEffect, useRef, } from "react"; -import { BODY_FONT_FAMILY } from "theme/constants"; import { cn } from "utils/cn"; import type { ProvisionerJobLog, WorkspaceBuild } from "#/api/typesGenerated"; import type { Line } from "#/components/Logs/LogLine"; import { DEFAULT_LOG_LINE_SIDE_PADDING, Logs } from "#/components/Logs/Logs"; +import { BODY_FONT_FAMILY } from "#/theme/constants"; const Language = { seconds: "seconds", diff --git a/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx b/site/src/modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge.stories.tsx index c7a159c0ce..11fca6ad2c 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 5aba014fb1..17676b4325 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"; +} from "#/testHelpers/entities"; import { ChangeWorkspaceVersionDialog } from "./ChangeWorkspaceVersionDialog"; const noMessage = { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.tsx index 3e355ecae4..8a208c96cf 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/ChangeWorkspaceVersionDialog.tsx @@ -3,7 +3,6 @@ import Autocomplete from "@mui/material/Autocomplete"; import CircularProgress from "@mui/material/CircularProgress"; import TextField from "@mui/material/TextField"; import { InfoIcon } from "lucide-react"; -import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import { type FC, useState } from "react"; import { useQuery } from "react-query"; import { createDayString } from "utils/createDayString"; @@ -18,6 +17,7 @@ import { FormFields } from "#/components/Form/Form"; import { Loader } from "#/components/Loader/Loader"; import { Pill } from "#/components/Pill/Pill"; import { Stack } from "#/components/Stack/Stack"; +import { TemplateUpdateMessage } from "#/modules/templates/TemplateUpdateMessage"; type ChangeWorkspaceVersionDialogProps = DialogProps & { workspace: Workspace; diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/DownloadLogsDialog.stories.tsx index f84aa47331..d2d94f5006 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 { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { agentLogsKey, buildLogsKey } from "#/api/queries/workspaces"; +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 7debfb1ce9..e8fbc9d6ab 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/WorkspaceDeleteDialog.stories.tsx @@ -1,10 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { daysAgo } from "utils/time"; import { MockFailedWorkspace, MockTaskWorkspace, MockWorkspace, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { daysAgo } from "utils/time"; +} from "#/testHelpers/entities"; import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.jest.tsx b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.jest.tsx index 199f49f214..ce5b4ccc9b 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.jest.tsx +++ b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.jest.tsx @@ -1,11 +1,11 @@ -import * as M from "testHelpers/entities"; -import { - type GetLocationSnapshot, - renderHookWithAuth, -} from "testHelpers/hooks"; import { act, waitFor } from "@testing-library/react"; import CreateWorkspacePage from "pages/CreateWorkspacePage/CreateWorkspacePage"; import type { Workspace } from "#/api/typesGenerated"; +import * as M from "#/testHelpers/entities"; +import { + type GetLocationSnapshot, + renderHookWithAuth, +} from "#/testHelpers/hooks"; import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; function render(workspace?: Workspace) { diff --git a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.ts b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.ts index 2c625792a6..b829d64b09 100644 --- a/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.ts +++ b/site/src/modules/workspaces/WorkspaceMoreActions/useWorkspaceDuplication.ts @@ -1,10 +1,10 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; import type { CreateWorkspaceMode } from "pages/CreateWorkspacePage/CreateWorkspacePage"; import { useCallback } from "react"; import { useQuery } from "react-query"; import { useNavigate } from "react-router"; import { workspaceBuildParameters } from "#/api/queries/workspaceBuilds"; import type { Workspace, WorkspaceBuildParameter } from "#/api/typesGenerated"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; function getDuplicationUrlParams( workspaceParams: readonly WorkspaceBuildParameter[], diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx index c6fb40924c..90a9e3130d 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, screen, 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, screen, userEvent, waitFor, within } from "storybook/test"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; 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 4484b20fa2..8dc03c8a51 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx @@ -2,7 +2,6 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Link from "@mui/material/Link"; import Skeleton from "@mui/material/Skeleton"; import { InfoIcon, RotateCcwIcon } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, type ReactNode, useState } from "react"; import { useQuery } from "react-query"; import { toast } from "sonner"; @@ -19,6 +18,7 @@ import { HelpTooltipTitle, HelpTooltipTrigger, } from "#/components/HelpTooltip/HelpTooltip"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { useWorkspaceUpdate, WorkspaceUpdateDialogs, diff --git a/site/src/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup.tsx b/site/src/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup.tsx index 274c352f21..6058cdf570 100644 --- a/site/src/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup.tsx +++ b/site/src/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup.tsx @@ -1,11 +1,3 @@ -import { - UserOrGroupAutocomplete, - type UserOrGroupAutocompleteValue, -} from "modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete"; -import { - AddWorkspaceMemberForm, - RoleSelectField, -} from "modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; import { type FC, useState } from "react"; import type { Group, @@ -14,6 +6,14 @@ import type { WorkspaceRole, WorkspaceUser, } from "#/api/typesGenerated"; +import { + UserOrGroupAutocomplete, + type UserOrGroupAutocompleteValue, +} from "#/modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete"; +import { + AddWorkspaceMemberForm, + RoleSelectField, +} from "#/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; type AddWorkspaceUserOrGroupProps = { organizationID: string; diff --git a/site/src/modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete.tsx b/site/src/modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete.tsx index a0641c5a96..a9a35ed37c 100644 --- a/site/src/modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete.tsx +++ b/site/src/modules/workspaces/WorkspaceSharingForm/UserOrGroupAutocomplete.tsx @@ -1,5 +1,4 @@ import { Check } from "lucide-react"; -import { getGroupSubtitle, isGroup } from "modules/groups"; import { type FC, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { groupsByOrganization } from "#/api/queries/groups"; @@ -10,6 +9,7 @@ import type { } from "#/api/typesGenerated"; import { Autocomplete } from "#/components/Autocomplete/Autocomplete"; import { AvatarData } from "#/components/Avatar/AvatarData"; +import { getGroupSubtitle, isGroup } from "#/modules/groups"; type OrganizationMember = OrganizationMemberWithUserData & { id: string }; type AutocompleteOption = OrganizationMember | Group; diff --git a/site/src/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm.tsx b/site/src/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm.tsx index 7bb2456592..1427c2fd3d 100644 --- a/site/src/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm.tsx +++ b/site/src/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm.tsx @@ -1,5 +1,4 @@ import { EllipsisVertical, UserPlusIcon } from "lucide-react"; -import { getGroupSubtitle } from "modules/groups"; import type { FC, ReactNode } from "react"; import { useQuery } from "react-query"; import { workspaceSharingSettings } from "#/api/queries/organizations"; @@ -39,6 +38,7 @@ import { TableRow, } from "#/components/Table/Table"; import { TableLoader } from "#/components/TableLoader/TableLoader"; +import { getGroupSubtitle } from "#/modules/groups"; interface RoleSelectProps { value: WorkspaceRole; diff --git a/site/src/modules/workspaces/WorkspaceStatus/WorkspaceStatus.stories.tsx b/site/src/modules/workspaces/WorkspaceStatus/WorkspaceStatus.stories.tsx index 60313bf116..9f29787fda 100644 --- a/site/src/modules/workspaces/WorkspaceStatus/WorkspaceStatus.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatus/WorkspaceStatus.stories.tsx @@ -1,5 +1,5 @@ -import { MockDormantWorkspace, MockWorkspace } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockDormantWorkspace, MockWorkspace } from "#/testHelpers/entities"; import { WorkspaceStatus } from "./WorkspaceStatus"; const meta: Meta = { diff --git a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx index 0c0792eae3..a396b4f314 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx @@ -1,10 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { Workspace, WorkspaceStatus } from "#/api/typesGenerated"; import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceResource, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { Workspace, WorkspaceStatus } from "#/api/typesGenerated"; +} 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 9e90b7e7d4..dbb933cdba 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx @@ -1,4 +1,3 @@ -import { getAgentHealthIssue } from "modules/workspaces/health"; import type React from "react"; import type { FC } from "react"; import { @@ -16,6 +15,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { getAgentHealthIssue } from "#/modules/workspaces/health"; const variantByStatusType: Record< DisplayWorkspaceStatusType, diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx index 5c7f91ddd6..7fd05bec85 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx @@ -1,6 +1,6 @@ -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 { WorkspaceTimingsResponse } from "./storybookData"; import { WorkspaceTimings } from "./WorkspaceTimings"; diff --git a/site/src/modules/workspaces/WorkspaceUpdateDialogs.tsx b/site/src/modules/workspaces/WorkspaceUpdateDialogs.tsx index a5a365ce63..66b53b43b0 100644 --- a/site/src/modules/workspaces/WorkspaceUpdateDialogs.tsx +++ b/site/src/modules/workspaces/WorkspaceUpdateDialogs.tsx @@ -1,5 +1,3 @@ -import { UpdateBuildParametersDialog } from "modules/workspaces/WorkspaceMoreActions/UpdateBuildParametersDialog"; -import { UpdateBuildParametersDialogExperimental } from "modules/workspaces/WorkspaceMoreActions/UpdateBuildParametersDialogExperimental"; import { type FC, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { MissingBuildParameters, ParameterValidationError } from "#/api/api"; @@ -12,6 +10,8 @@ import type { } from "#/api/typesGenerated"; import { ConfirmDialog } from "#/components/Dialogs/ConfirmDialog/ConfirmDialog"; import { MemoizedInlineMarkdown } from "#/components/Markdown/Markdown"; +import { UpdateBuildParametersDialog } from "#/modules/workspaces/WorkspaceMoreActions/UpdateBuildParametersDialog"; +import { UpdateBuildParametersDialogExperimental } from "#/modules/workspaces/WorkspaceMoreActions/UpdateBuildParametersDialogExperimental"; type UseWorkspaceUpdateOptions = { workspace: Workspace; diff --git a/site/src/modules/workspaces/health.test.ts b/site/src/modules/workspaces/health.test.ts index 2b06104d12..ed8e2d61a2 100644 --- a/site/src/modules/workspaces/health.test.ts +++ b/site/src/modules/workspaces/health.test.ts @@ -1,15 +1,15 @@ -import { - MockWorkspace, - MockWorkspaceAgent, - MockWorkspaceBuild, - MockWorkspaceResource, -} from "testHelpers/entities"; import { describe, expect, it } from "vitest"; import type { Workspace, WorkspaceAgentLifecycle, WorkspaceAgentStatus, } from "#/api/typesGenerated"; +import { + MockWorkspace, + MockWorkspaceAgent, + MockWorkspaceBuild, + MockWorkspaceResource, +} from "#/testHelpers/entities"; import { getAgentHealthIssue } from "./health"; interface AgentOverrides { diff --git a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPage.tsx b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPage.tsx index 994be0025c..e98767e7d6 100644 --- a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPage.tsx +++ b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPage.tsx @@ -1,13 +1,13 @@ import { useFilter } from "components/Filter/Filter"; import { useUserFilterMenu } from "components/Filter/UserFilter"; import { useAuthenticated } from "hooks"; -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useNavigate, useSearchParams } from "react-router"; import { pageTitle } from "utils/page"; import { paginatedSessions } from "#/api/queries/aiBridge"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { useProviderFilterMenu } from "../RequestLogsPage/RequestLogsFilter/ProviderFilter"; import { ListSessionsPageView } from "./ListSessionsPageView"; diff --git a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPageView.stories.tsx b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPageView.stories.tsx index 3bed9090fb..2b87d9acc2 100644 --- a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPageView.stories.tsx +++ b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsPageView.stories.tsx @@ -1,4 +1,3 @@ -import { MockSession } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { getDefaultFilterProps, @@ -10,6 +9,7 @@ import { } from "components/PaginationWidget/PaginationContainer.mocks"; import type { ComponentProps } from "react"; import { fn } from "storybook/test"; +import { MockSession } from "#/testHelpers/entities"; import { ListSessionsPageView } from "./ListSessionsPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsRow.stories.tsx b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsRow.stories.tsx index 2ec9c72633..ed39076425 100644 --- a/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsRow.stories.tsx +++ b/site/src/pages/AIBridgePage/ListSessionsPage/ListSessionsRow.stories.tsx @@ -1,7 +1,7 @@ -import { MockSession } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Table, TableBody } from "components/Table/Table"; import { fn } from "storybook/test"; +import { MockSession } from "#/testHelpers/entities"; import { ListSessionsRow } from "./ListSessionsRow"; const meta: Meta = { diff --git a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPage.tsx b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPage.tsx index 7faff8528e..4becbf3563 100644 --- a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPage.tsx +++ b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPage.tsx @@ -1,13 +1,13 @@ import { useAuthenticated } from "hooks"; -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useSearchParams } from "react-router"; import { pageTitle } from "utils/page"; import { paginatedInterceptions } from "#/api/queries/aiBridge"; import { useFilter } from "#/components/Filter/Filter"; import { useUserFilterMenu } from "#/components/Filter/UserFilter"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { useModelFilterMenu } from "./RequestLogsFilter/ModelFilter"; import { useProviderFilterMenu } from "./RequestLogsFilter/ProviderFilter"; import { RequestLogsPageView } from "./RequestLogsPageView"; diff --git a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPageView.stories.tsx b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPageView.stories.tsx index 0f29efcf9e..624bbbf74e 100644 --- a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPageView.stories.tsx +++ b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsPageView.stories.tsx @@ -1,8 +1,3 @@ -import { - MockInterception, - MockInterceptionAnthropic, - MockInterceptionCopilot, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { ComponentProps } from "react"; import { @@ -13,6 +8,11 @@ import { mockInitialRenderResult, mockSuccessResult, } from "#/components/PaginationWidget/PaginationContainer.mocks"; +import { + MockInterception, + MockInterceptionAnthropic, + MockInterceptionCopilot, +} from "#/testHelpers/entities"; import { RequestLogsPageView } from "./RequestLogsPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsRow/RequestLogsRow.stories.tsx b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsRow/RequestLogsRow.stories.tsx index 93fb3f5158..335bc600c6 100644 --- a/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsRow/RequestLogsRow.stories.tsx +++ b/site/src/pages/AIBridgePage/RequestLogsPage/RequestLogsRow/RequestLogsRow.stories.tsx @@ -1,6 +1,6 @@ -import { MockInterception } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { Table, TableBody } from "#/components/Table/Table"; +import { MockInterception } from "#/testHelpers/entities"; import { RequestLogsRow } from "./RequestLogsRow"; const meta: Meta = { diff --git a/site/src/pages/AIBridgePage/SessionThreadsPage/SessionSummaryTable.stories.tsx b/site/src/pages/AIBridgePage/SessionThreadsPage/SessionSummaryTable.stories.tsx index a4b2a6cc86..10bc86d21b 100644 --- a/site/src/pages/AIBridgePage/SessionThreadsPage/SessionSummaryTable.stories.tsx +++ b/site/src/pages/AIBridgePage/SessionThreadsPage/SessionSummaryTable.stories.tsx @@ -1,5 +1,5 @@ -import { MockSession } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockSession } from "#/testHelpers/entities"; import { SessionSummaryTable } from "./SessionSummaryTable"; const meta: Meta = { diff --git a/site/src/pages/AgentsPage/AgentDetail.stories.tsx b/site/src/pages/AgentsPage/AgentDetail.stories.tsx index 9de997964c..44bd0be38c 100644 --- a/site/src/pages/AgentsPage/AgentDetail.stories.tsx +++ b/site/src/pages/AgentsPage/AgentDetail.stories.tsx @@ -1,14 +1,3 @@ -import { - MockUserOwner, - MockWorkspace, - MockWorkspaceAgent, -} from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withProxyProvider, - withWebSocket, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import type { FC } from "react"; import { useRef } from "react"; @@ -30,6 +19,17 @@ import { } from "#/api/queries/chats"; import { workspaceByIdKey } from "#/api/queries/workspaces"; import type * as TypesGen from "#/api/typesGenerated"; +import { + MockUserOwner, + MockWorkspace, + MockWorkspaceAgent, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withProxyProvider, + withWebSocket, +} from "#/testHelpers/storybook"; import AgentDetail, { RIGHT_PANEL_OPEN_KEY } from "./AgentDetail"; import type { AgentsOutletContext } from "./AgentsPage"; diff --git a/site/src/pages/AgentsPage/AgentDetail.tsx b/site/src/pages/AgentsPage/AgentDetail.tsx index 063d1da49e..8d7e3d408b 100644 --- a/site/src/pages/AgentsPage/AgentDetail.tsx +++ b/site/src/pages/AgentsPage/AgentDetail.tsx @@ -1,9 +1,4 @@ import { useProxy } from "contexts/ProxyContext"; -import { - getTerminalHref, - getVSCodeHref, - openAppInNewWindow, -} from "modules/apps/apps"; import { type FC, useEffect, useLayoutEffect, useRef, useState } from "react"; import { useInfiniteQuery, @@ -37,6 +32,11 @@ import { deploymentSSHConfig } from "#/api/queries/deployment"; import { workspaceById, workspaceByIdKey } from "#/api/queries/workspaces"; import type * as TypesGen from "#/api/typesGenerated"; import type { ChatMessagePart } from "#/api/typesGenerated"; +import { + getTerminalHref, + getVSCodeHref, + openAppInNewWindow, +} from "#/modules/apps/apps"; import type { AgentsOutletContext } from "./AgentsPage"; import type { ChatMessageInputRef } from "./components/AgentChatInput"; import { diff --git a/site/src/pages/AgentsPage/AgentEmbedPage.tsx b/site/src/pages/AgentsPage/AgentEmbedPage.tsx index cf1f69f20b..f04864242d 100644 --- a/site/src/pages/AgentsPage/AgentEmbedPage.tsx +++ b/site/src/pages/AgentsPage/AgentEmbedPage.tsx @@ -1,13 +1,13 @@ import { useAuthContext } from "contexts/auth/AuthProvider"; import { ProxyProvider } from "contexts/ProxyContext"; -import { DashboardProvider } from "modules/dashboard/DashboardProvider"; -import { permissionChecks } from "modules/permissions"; import { type FC, useEffect, useLayoutEffect, useRef, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Outlet, useBlocker, useParams, useSearchParams } from "react-router"; import { getErrorMessage } from "#/api/errors"; import { Button } from "#/components/Button/Button"; import { Loader } from "#/components/Loader/Loader"; +import { DashboardProvider } from "#/modules/dashboard/DashboardProvider"; +import { permissionChecks } from "#/modules/permissions"; import type { AgentsOutletContext } from "./AgentsPage"; import { bootstrapChatEmbedSession, diff --git a/site/src/pages/AgentsPage/AgentSettingsPageView.stories.tsx b/site/src/pages/AgentsPage/AgentSettingsPageView.stories.tsx index 9a28a103fb..58647db404 100644 --- a/site/src/pages/AgentsPage/AgentSettingsPageView.stories.tsx +++ b/site/src/pages/AgentsPage/AgentSettingsPageView.stories.tsx @@ -1,11 +1,14 @@ -import { MockTemplate, MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { API } from "#/api/api"; import { userKey } from "#/api/queries/users"; import type * as TypesGen from "#/api/typesGenerated"; +import { MockTemplate, MockUserOwner } from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; import { AgentSettingsPageView } from "./AgentSettingsPageView"; // ── Usage mock helpers ───────────────────────────────────────── diff --git a/site/src/pages/AgentsPage/AgentSettingsPageView.tsx b/site/src/pages/AgentsPage/AgentSettingsPageView.tsx index 41cb3b568a..1b0ea61661 100644 --- a/site/src/pages/AgentsPage/AgentSettingsPageView.tsx +++ b/site/src/pages/AgentsPage/AgentSettingsPageView.tsx @@ -1,6 +1,4 @@ import dayjs from "dayjs"; -import { useDebouncedValue } from "hooks/debounce"; -import { useClickableTableRow } from "hooks/useClickableTableRow"; import { ChevronLeftIcon, ShieldIcon } from "lucide-react"; import { type FC, type FormEvent, useMemo, useState } from "react"; import { @@ -61,6 +59,8 @@ import { TooltipProvider, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useDebouncedValue } from "#/hooks/debounce"; +import { useClickableTableRow } from "#/hooks/useClickableTableRow"; import { ChatCostSummaryView } from "./components/ChatCostSummaryView"; import { ChatModelAdminPanel } from "./components/ChatModelAdminPanel/ChatModelAdminPanel"; import { diff --git a/site/src/pages/AgentsPage/AgentsPage.tsx b/site/src/pages/AgentsPage/AgentsPage.tsx index 14601e7cca..b27c9d203f 100644 --- a/site/src/pages/AgentsPage/AgentsPage.tsx +++ b/site/src/pages/AgentsPage/AgentsPage.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { type FC, useEffect, useRef, useState } from "react"; import { useInfiniteQuery, @@ -32,6 +31,7 @@ import { import { workspaceById } from "#/api/queries/workspaces"; import type * as TypesGen from "#/api/typesGenerated"; import { DeleteDialog } from "#/components/Dialogs/DeleteDialog/DeleteDialog"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { AgentsPageView } from "./AgentsPageView"; import { emptyInputStorageKey } from "./components/AgentCreateForm"; import { maybePlayChime } from "./components/AgentDetail/useAgentChime"; diff --git a/site/src/pages/AgentsPage/AgentsPageView.stories.tsx b/site/src/pages/AgentsPage/AgentsPageView.stories.tsx index db2d91dd78..8b2f04ed65 100644 --- a/site/src/pages/AgentsPage/AgentsPageView.stories.tsx +++ b/site/src/pages/AgentsPage/AgentsPageView.stories.tsx @@ -1,9 +1,3 @@ -import { - MockNoPermissions, - MockPermissions, - MockUserOwner, -} from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import { useState } from "react"; @@ -22,6 +16,15 @@ import type * as TypesGen from "#/api/typesGenerated"; import type { Chat } from "#/api/typesGenerated"; import type { ModelSelectorOption } from "#/components/ai-elements"; import { DeleteDialog } from "#/components/Dialogs/DeleteDialog/DeleteDialog"; +import { + MockNoPermissions, + MockPermissions, + MockUserOwner, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; import AgentAnalyticsPage from "./AgentAnalyticsPage"; import AgentCreatePage from "./AgentCreatePage"; import AgentSettingsPage from "./AgentSettingsPage"; diff --git a/site/src/pages/AgentsPage/UserCompactionThresholdSettings.stories.tsx b/site/src/pages/AgentsPage/UserCompactionThresholdSettings.stories.tsx index 9594b83f83..142d2d8356 100644 --- a/site/src/pages/AgentsPage/UserCompactionThresholdSettings.stories.tsx +++ b/site/src/pages/AgentsPage/UserCompactionThresholdSettings.stories.tsx @@ -1,9 +1,12 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { API } from "#/api/api"; import type * as TypesGen from "#/api/typesGenerated"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; import { UserCompactionThresholdSettings } from "./UserCompactionThresholdSettings"; const mockModelConfigs: TypesGen.ChatModelConfig[] = [ diff --git a/site/src/pages/AgentsPage/components/AgentCreateForm.stories.tsx b/site/src/pages/AgentsPage/components/AgentCreateForm.stories.tsx index 00c3a6cb15..7796f255d8 100644 --- a/site/src/pages/AgentsPage/components/AgentCreateForm.stories.tsx +++ b/site/src/pages/AgentsPage/components/AgentCreateForm.stories.tsx @@ -1,8 +1,8 @@ -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, spyOn, userEvent, waitFor, within } from "storybook/test"; import { API } from "#/api/api"; import { MockWorkspace } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { AgentCreateForm } from "./AgentCreateForm"; const modelConfigID = "model-config-1"; diff --git a/site/src/pages/AgentsPage/components/AgentDetailContent.tsx b/site/src/pages/AgentsPage/components/AgentDetailContent.tsx index 43a69f9270..c75088c244 100644 --- a/site/src/pages/AgentsPage/components/AgentDetailContent.tsx +++ b/site/src/pages/AgentsPage/components/AgentDetailContent.tsx @@ -1,9 +1,9 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import { type FC, Profiler, useEffect } from "react"; import { toast } from "sonner"; import type { UrlTransform } from "streamdown"; import type * as TypesGen from "#/api/typesGenerated"; import type { ModelSelectorOption } from "#/components/ai-elements"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { useFileAttachments } from "../hooks/useFileAttachments"; import type { ChatDetailError } from "../utils/usageLimitMessage"; import { diff --git a/site/src/pages/AgentsPage/components/AgentDetailView.stories.tsx b/site/src/pages/AgentsPage/components/AgentDetailView.stories.tsx index b00d368fde..ac923cb26b 100644 --- a/site/src/pages/AgentsPage/components/AgentDetailView.stories.tsx +++ b/site/src/pages/AgentsPage/components/AgentDetailView.stories.tsx @@ -1,5 +1,3 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Decorator, Meta, StoryObj } from "@storybook/react-vite"; import type { ComponentProps, FC } from "react"; import { expect, fn, spyOn, userEvent, waitFor, within } from "storybook/test"; @@ -8,6 +6,11 @@ import { API } from "#/api/api"; import type * as TypesGen from "#/api/typesGenerated"; import type { ChatDiffStatus, ChatMessagePart } from "#/api/typesGenerated"; import type { ModelSelectorOption } from "#/components/ai-elements"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; import type { ChatDetailError } from "../utils/usageLimitMessage"; import { createChatStore } from "./AgentDetail/ChatContext"; import { diff --git a/site/src/pages/AgentsPage/components/AgentPageHeader.tsx b/site/src/pages/AgentsPage/components/AgentPageHeader.tsx index 971a9e736f..efdf69ea17 100644 --- a/site/src/pages/AgentsPage/components/AgentPageHeader.tsx +++ b/site/src/pages/AgentsPage/components/AgentPageHeader.tsx @@ -4,13 +4,13 @@ import { PanelLeftIcon, SettingsIcon, } from "lucide-react"; -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC, ReactNode } from "react"; import { Link, NavLink, useLocation, useOutletContext } from "react-router"; import { cn } from "utils/cn"; import { Button } from "#/components/Button/Button"; import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; import { CoderIcon } from "#/components/Icons/CoderIcon"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import type { AgentsOutletContext } from "../AgentsPageView"; import { sidebarViewFromPath } from "./Sidebar/AgentsSidebar"; diff --git a/site/src/pages/AgentsPage/components/LimitsTab/GroupLimitsSection.tsx b/site/src/pages/AgentsPage/components/LimitsTab/GroupLimitsSection.tsx index 31510f125a..728b913b7b 100644 --- a/site/src/pages/AgentsPage/components/LimitsTab/GroupLimitsSection.tsx +++ b/site/src/pages/AgentsPage/components/LimitsTab/GroupLimitsSection.tsx @@ -1,5 +1,4 @@ import { Check } from "lucide-react"; -import { getGroupSubtitle } from "modules/groups"; import { type FC, useId } from "react"; import { formatCostMicros, isPositiveFiniteDollarAmount } from "utils/currency"; import { getErrorMessage } from "#/api/errors"; @@ -18,6 +17,7 @@ import { TableHeader, TableRow, } from "#/components/Table/Table"; +import { getGroupSubtitle } from "#/modules/groups"; import { SectionHeader } from "../SectionHeader"; interface GroupLimitsSectionProps { diff --git a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.stories.tsx b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.stories.tsx index 5972506f99..7c0ef418d5 100644 --- a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.stories.tsx +++ b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.stories.tsx @@ -1,11 +1,14 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { reactRouterParameters } from "storybook-addon-remix-react-router"; import type * as TypesGen from "#/api/typesGenerated"; import type { Chat } from "#/api/typesGenerated"; import type { ModelSelectorOption } from "#/components/ai-elements"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; import { AgentsSidebar } from "./AgentsSidebar"; const defaultModelOptions: ModelSelectorOption[] = [ diff --git a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.test.tsx b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.test.tsx index 1a5c625555..cf883ae12b 100644 --- a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.test.tsx +++ b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.test.tsx @@ -1,20 +1,20 @@ +import { act, render } from "@testing-library/react"; +import { ThemeOverride } from "contexts/ThemeProvider"; +import type { FC, PropsWithChildren } from "react"; +import { QueryClient, QueryClientProvider } from "react-query"; +import { MemoryRouter } from "react-router"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type * as TypesGen from "#/api/typesGenerated"; +import type { Chat } from "#/api/typesGenerated"; +import { DashboardContext } from "#/modules/dashboard/DashboardProvider"; import { MockAppearanceConfig, MockBuildInfo, MockDefaultOrganization, MockEntitlements, MockUserOwner, -} from "testHelpers/entities"; -import { act, render } from "@testing-library/react"; -import { ThemeOverride } from "contexts/ThemeProvider"; -import { DashboardContext } from "modules/dashboard/DashboardProvider"; -import type { FC, PropsWithChildren } from "react"; -import { QueryClient, QueryClientProvider } from "react-query"; -import { MemoryRouter } from "react-router"; -import themes, { DEFAULT_THEME } from "theme"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type * as TypesGen from "#/api/typesGenerated"; -import type { Chat } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import themes, { DEFAULT_THEME } from "#/theme"; import { AgentsSidebar } from "./AgentsSidebar"; // ---- IntersectionObserver mock ---- diff --git a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.tsx b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.tsx index 416629bd76..78f53d0df0 100644 --- a/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.tsx +++ b/site/src/pages/AgentsPage/components/Sidebar/AgentsSidebar.tsx @@ -48,8 +48,6 @@ import { UserIcon, WandSparklesIcon, } from "lucide-react"; -import { UserDropdownContent } from "modules/dashboard/Navbar/UserDropdown/UserDropdownContent"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { createContext, type FC, @@ -88,6 +86,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { UserDropdownContent } from "#/modules/dashboard/Navbar/UserDropdown/UserDropdownContent"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { getNormalizedModelRef } from "../../utils/modelOptions"; import { getTimeGroup, TIME_GROUPS } from "../../utils/timeGroups"; import { UsageIndicator } from "../UsageIndicator"; diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index 4d205f1cf6..ff7e43641c 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,8 +1,4 @@ import capitalize from "lodash/capitalize"; -import { - type OrganizationsFilterMenu, - OrganizationsMenu, -} from "modules/tableFiltering/options"; import type { FC } from "react"; import { docs } from "utils/docs"; import { AuditActions, ResourceTypes } from "#/api/typesGenerated"; @@ -24,6 +20,10 @@ import { type UserFilterMenu, UserMenu, } from "#/components/Filter/UserFilter"; +import { + type OrganizationsFilterMenu, + OrganizationsMenu, +} from "#/modules/tableFiltering/options"; const PRESET_FILTERS = [ { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx index 8abf5442eb..487df92f3c 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockAuditLog, MockAuditLogRequestPasswordReset, @@ -5,8 +6,7 @@ import { MockAuditLogUnsuccessfulLoginKnownUser, MockAuditLogWithWorkspaceBuild, MockWorkspaceCreateAuditLogForDifferentOwner, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; import { AuditLogDescription } from "./AuditLogDescription"; const meta: Meta = { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx index 9edf9a6947..1caa70d48a 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx @@ -1,8 +1,8 @@ import type { Interpolation, Theme } from "@emotion/react"; import type { FC } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; -import colors from "theme/tailwindColors"; import type { AuditDiff } from "#/api/typesGenerated"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; +import colors from "#/theme/tailwindColors"; const getDiffValue = (value: unknown): string => { if (typeof value === "string") { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx index 6292768da2..2d4fd6e28e 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx @@ -1,4 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { Table, TableBody } from "#/components/Table/Table"; +import { chromatic } from "#/testHelpers/chromatic"; import { MockAuditLog, MockAuditLog2, @@ -7,9 +9,7 @@ import { MockAuditLogWithDeletedResource, MockAuditLogWithWorkspaceBuild, MockUserOwner, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Table, TableBody } from "#/components/Table/Table"; +} from "#/testHelpers/entities"; import { AuditLogRow } from "./AuditLogRow"; const meta: Meta = { diff --git a/site/src/pages/AuditPage/AuditPage.test.tsx b/site/src/pages/AuditPage/AuditPage.test.tsx index 87dac33226..d59dc9f50b 100644 --- a/site/src/pages/AuditPage/AuditPage.test.tsx +++ b/site/src/pages/AuditPage/AuditPage.test.tsx @@ -1,13 +1,3 @@ -import { - MockAuditLog, - MockAuditLog2, - MockEntitlementsWithAuditLog, -} from "testHelpers/entities"; -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { createEvent, fireEvent, @@ -21,6 +11,16 @@ import * as CreateDayString from "utils/createDayString"; import { API } from "#/api/api"; import type { AuditLogsRequest } from "#/api/typesGenerated"; import { DEFAULT_RECORDS_PER_PAGE } from "#/components/PaginationWidget/utils"; +import { + MockAuditLog, + MockAuditLog2, + MockEntitlementsWithAuditLog, +} from "#/testHelpers/entities"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import AuditPage from "./AuditPage"; interface RenderPageOptions { diff --git a/site/src/pages/AuditPage/AuditPage.tsx b/site/src/pages/AuditPage/AuditPage.tsx index c931e2f184..e32c85aded 100644 --- a/site/src/pages/AuditPage/AuditPage.tsx +++ b/site/src/pages/AuditPage/AuditPage.tsx @@ -1,7 +1,3 @@ -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { useOrganizationsFilterMenu } from "modules/tableFiltering/options"; import type { FC } from "react"; import { useSearchParams } from "react-router"; import { pageTitle } from "utils/page"; @@ -9,6 +5,10 @@ import { paginatedAudits } from "#/api/queries/audits"; import { useFilter } from "#/components/Filter/Filter"; import { useUserFilterMenu } from "#/components/Filter/UserFilter"; import { isNonInitialPage } from "#/components/PaginationWidget/utils"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { useOrganizationsFilterMenu } from "#/modules/tableFiltering/options"; import { useActionFilterMenu, useResourceTypeFilterMenu } from "./AuditFilter"; import { AuditPageView } from "./AuditPageView"; diff --git a/site/src/pages/AuditPage/AuditPageView.stories.tsx b/site/src/pages/AuditPage/AuditPageView.stories.tsx index 96f6ed0323..fb263efcd3 100644 --- a/site/src/pages/AuditPage/AuditPageView.stories.tsx +++ b/site/src/pages/AuditPage/AuditPageView.stories.tsx @@ -1,12 +1,4 @@ -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { - MockAuditLog, - MockAuditLog2, - MockAuditLog3, - MockUserOwner, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import type { ComponentProps } from "react"; import { getDefaultFilterProps, @@ -16,6 +8,14 @@ import { mockInitialRenderResult, mockSuccessResult, } from "#/components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "#/hooks/usePaginatedQuery"; +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 82d6ff3914..3953bc6a39 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogFilter.tsx @@ -1,8 +1,4 @@ import capitalize from "lodash/capitalize"; -import { - type OrganizationsFilterMenu, - OrganizationsMenu, -} from "modules/tableFiltering/options"; import type { FC } from "react"; import { connectionTypeToFriendlyName } from "utils/connection"; import { docs } from "utils/docs"; @@ -30,6 +26,10 @@ import { type UserFilterMenu, UserMenu, } from "#/components/Filter/UserFilter"; +import { + type OrganizationsFilterMenu, + OrganizationsMenu, +} from "#/modules/tableFiltering/options"; type ConnectionLogFilterValues = { status?: ConnectionLogStatus; diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx index 6f5d6fb389..3e718dba21 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogPage.test.tsx @@ -1,19 +1,19 @@ -import { - MockConnectedSSHConnectionLog, - MockDisconnectedSSHConnectionLog, - MockEntitlementsWithConnectionLog, -} from "testHelpers/entities"; -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { HttpResponse, http } from "msw"; import * as CreateDayString from "utils/createDayString"; import { API } from "#/api/api"; import { DEFAULT_RECORDS_PER_PAGE } from "#/components/PaginationWidget/utils"; +import { + MockConnectedSSHConnectionLog, + MockDisconnectedSSHConnectionLog, + MockEntitlementsWithConnectionLog, +} from "#/testHelpers/entities"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import ConnectionLogPage from "./ConnectionLogPage"; interface RenderPageOptions { diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogPage.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogPage.tsx index 019d31af80..454a1ccc7d 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogPage.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogPage.tsx @@ -1,7 +1,3 @@ -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { useOrganizationsFilterMenu } from "modules/tableFiltering/options"; import type { FC } from "react"; import { useSearchParams } from "react-router"; import { pageTitle } from "utils/page"; @@ -9,6 +5,10 @@ import { paginatedConnectionLogs } from "#/api/queries/connectionlog"; import { useFilter } from "#/components/Filter/Filter"; import { useUserFilterMenu } from "#/components/Filter/UserFilter"; import { isNonInitialPage } from "#/components/PaginationWidget/utils"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { useOrganizationsFilterMenu } from "#/modules/tableFiltering/options"; import { useStatusFilterMenu, useTypeFilterMenu } from "./ConnectionLogFilter"; import { ConnectionLogPageView } from "./ConnectionLogPageView"; diff --git a/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx b/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx index f7fc6ecf69..d2ac6ba03f 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogPageView.stories.tsx @@ -1,11 +1,4 @@ -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { - MockConnectedSSHConnectionLog, - MockDisconnectedSSHConnectionLog, - MockUserOwner, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import type { ComponentProps } from "react"; import { getDefaultFilterProps, @@ -15,6 +8,13 @@ import { mockInitialRenderResult, mockSuccessResult, } from "#/components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "#/hooks/usePaginatedQuery"; +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 1354960c78..ac28e642ea 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"; +} from "#/testHelpers/entities"; 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 23b641563a..1a46a1112f 100644 --- a/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx +++ b/site/src/pages/ConnectionLogPage/ConnectionLogRow/ConnectionLogRow.stories.tsx @@ -1,10 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { Table, TableBody } from "#/components/Table/Table"; import { MockConnectedSSHConnectionLog, MockDisconnectedSSHConnectionLog, MockWebConnectionLog, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Table, TableBody } from "#/components/Table/Table"; +} from "#/testHelpers/entities"; import { ConnectionLogRow } from "./ConnectionLogRow"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx index b406daeb93..db92ac1b0d 100644 --- a/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx +++ b/site/src/pages/CreateTemplateGalleryPage/CreateTemplateGalleryPageView.stories.tsx @@ -1,11 +1,11 @@ -import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getTemplatesByTag } from "utils/starterTemplates"; +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"; +} from "#/testHelpers/entities"; import { CreateTemplateGalleryPageView } from "./CreateTemplateGalleryPageView"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplateGalleryPage/StarterTemplates.tsx b/site/src/pages/CreateTemplateGalleryPage/StarterTemplates.tsx index 4311aade8a..28aced760c 100644 --- a/site/src/pages/CreateTemplateGalleryPage/StarterTemplates.tsx +++ b/site/src/pages/CreateTemplateGalleryPage/StarterTemplates.tsx @@ -1,10 +1,10 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { TemplateExampleCard } from "modules/templates/TemplateExampleCard/TemplateExampleCard"; import type { FC } from "react"; import { Link, useSearchParams } from "react-router"; import type { StarterTemplatesByTag } from "utils/starterTemplates"; import type { TemplateExample } from "#/api/typesGenerated"; import { Stack } from "#/components/Stack/Stack"; +import { TemplateExampleCard } from "#/modules/templates/TemplateExampleCard/TemplateExampleCard"; const getTagLabel = (tag: string) => { const labelByTag: Record = { diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx index ce6e32ab8d..fbd0e5cad9 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"; +} from "#/testHelpers/entities"; +import { withWebSocket } from "#/testHelpers/storybook"; import { BuildLogsDrawer } from "./BuildLogsDrawer"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx index d66c1ff809..df46f1e552 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx @@ -2,16 +2,16 @@ import type { Interpolation, Theme } from "@emotion/react"; import Drawer from "@mui/material/Drawer"; import IconButton from "@mui/material/IconButton"; import { TriangleAlertIcon, XIcon } from "lucide-react"; -import { AlertVariant } from "modules/provisioners/ProvisionerAlert"; -import { ProvisionerStatusAlert } from "modules/provisioners/ProvisionerStatusAlert"; -import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import type { FC } from "react"; -import { navHeight } from "theme/constants"; import { JobError } from "#/api/queries/templates"; import type { TemplateVersion } from "#/api/typesGenerated"; import { Button } from "#/components/Button/Button"; import { Loader } from "#/components/Loader/Loader"; +import { AlertVariant } from "#/modules/provisioners/ProvisionerAlert"; +import { ProvisionerStatusAlert } from "#/modules/provisioners/ProvisionerStatusAlert"; +import { useWatchVersionLogs } from "#/modules/templates/useWatchVersionLogs"; +import { WorkspaceBuildLogs } from "#/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { navHeight } from "#/theme/constants"; type BuildLogsDrawerProps = { error: unknown; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx index 8e84f835a7..a0f93cc3ba 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx @@ -1,3 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; +import { screen, userEvent } from "storybook/test"; +import { + getProvisionerDaemonsKey, + organizationsKey, +} from "#/api/queries/organizations"; import { MockDefaultOrganization, MockOrganization2, @@ -8,14 +15,7 @@ import { MockTemplateVersionVariable3, MockTemplateVersionVariable4, MockTemplateVersionVariable5, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; -import { screen, userEvent } from "storybook/test"; -import { - getProvisionerDaemonsKey, - organizationsKey, -} from "#/api/queries/organizations"; +} from "#/testHelpers/entities"; import { CreateTemplateForm } from "./CreateTemplateForm"; const meta: Meta = { diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index f3424be60b..4f663bbd4c 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -3,7 +3,6 @@ import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; import camelCase from "lodash/camelCase"; import capitalize from "lodash/capitalize"; -import { ProvisionerTagsField } from "modules/provisioners/ProvisionerTagsField"; import { SelectedTemplate } from "pages/CreateWorkspacePage/SelectedTemplate"; import { type FC, useState } from "react"; import { useQuery } from "react-query"; @@ -44,6 +43,7 @@ import { IconField } from "#/components/IconField/IconField"; import { Label } from "#/components/Label/Label"; import { OrganizationAutocomplete } from "#/components/OrganizationAutocomplete/OrganizationAutocomplete"; import { Spinner } from "#/components/Spinner/Spinner"; +import { ProvisionerTagsField } from "#/modules/provisioners/ProvisionerTagsField"; import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; import { VariableInput } from "./VariableInput"; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplatePage.jest.tsx b/site/src/pages/CreateTemplatePage/CreateTemplatePage.jest.tsx index f219e2d3a6..74859cd023 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.jest.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.jest.tsx @@ -1,3 +1,6 @@ +import { fireEvent, screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "#/api/api"; import { MockTemplate, MockTemplateExample, @@ -6,11 +9,8 @@ import { MockTemplateVersionVariable2, MockTemplateVersionVariable3, 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"; +} from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; 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 01e7491813..f8f10d3736 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx @@ -1,4 +1,3 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, useRef, useState } from "react"; import { useMutation } from "react-query"; import { useNavigate, useSearchParams } from "react-router"; @@ -6,6 +5,7 @@ import { pageTitle } from "utils/page"; import { createTemplate } from "#/api/queries/templates"; import type { TemplateVersion } from "#/api/typesGenerated"; import { FullPageHorizontalForm } from "#/components/FullPageForm/FullPageHorizontalForm"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { BuildLogsDrawer } from "./BuildLogsDrawer"; import { DuplicateTemplateView } from "./DuplicateTemplateView"; import { ImportStarterTemplateView } from "./ImportStarterTemplateView"; diff --git a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx index 7aa65bcff7..f4944a72c9 100644 --- a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx @@ -1,5 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useNavigate, useSearchParams } from "react-router"; @@ -15,6 +13,8 @@ import type { Template, TemplateVersion } from "#/api/typesGenerated"; import { Alert } from "#/components/Alert/Alert"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; import { CreateTemplateForm } from "./CreateTemplateForm"; import type { CreateTemplatePageViewProps } from "./types"; import { firstVersionFromFile, getFormPermissions, newTemplate } from "./utils"; diff --git a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx index 61daf840f8..e5f8694ec6 100644 --- a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx @@ -1,4 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { useNavigate, useSearchParams } from "react-router"; @@ -10,6 +9,7 @@ import { } from "#/api/queries/templates"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { CreateTemplateForm } from "./CreateTemplateForm"; import type { CreateTemplatePageViewProps } from "./types"; import { diff --git a/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx b/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx index 4ab3a99ecf..35ae48c042 100644 --- a/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx @@ -1,4 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { useMutation, useQuery } from "react-query"; import { useNavigate } from "react-router"; @@ -10,6 +9,7 @@ import { templateVersionLogs, templateVersionVariables, } from "#/api/queries/templates"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { CreateTemplateForm } from "./CreateTemplateForm"; import type { CreateTemplatePageViewProps } from "./types"; import { firstVersionFromFile, getFormPermissions, newTemplate } from "./utils"; diff --git a/site/src/pages/CreateTokenPage/CreateTokenPage.jest.tsx b/site/src/pages/CreateTokenPage/CreateTokenPage.jest.tsx index 149ad75557..1ab9e11cd7 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenPage.jest.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenPage.jest.tsx @@ -1,10 +1,10 @@ -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 { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; import CreateTokenPage from "./CreateTokenPage"; describe("TokenPage", () => { diff --git a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx index fb66862bc5..3c0e42745b 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx @@ -1,13 +1,13 @@ -import { - MockOrganization, - MockOrganization2, - mockApiError, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; import { userEvent, within } from "storybook/test"; import { organizationsKey } from "#/api/queries/organizations"; import type { Organization } from "#/api/typesGenerated"; +import { + MockOrganization, + MockOrganization2, + mockApiError, +} from "#/testHelpers/entities"; 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 316336ddcc..1722cd2f92 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.test.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx @@ -1,12 +1,12 @@ -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { HttpResponse, http } from "msw"; import { describe, expect, it } from "vitest"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import CreateUserPage from "./CreateUserPage"; const fillForm = async ({ diff --git a/site/src/pages/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx index 62f1fc133f..e94c1408c6 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx @@ -1,4 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate } from "react-router"; @@ -7,6 +6,7 @@ import { pageTitle } from "utils/page"; import { getErrorDetail, getErrorMessage } from "#/api/errors"; import { authMethods, createUser } from "#/api/queries/users"; import { Margins } from "#/components/Margins/Margins"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { CreateUserForm } from "./CreateUserForm"; const CreateUserPage: FC = () => { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.jest.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.jest.tsx index 50f65fe0f2..ee0135fc9f 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.jest.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.jest.tsx @@ -1,3 +1,8 @@ +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { act } from "react"; +import { API } from "#/api/api"; +import type { DynamicParametersResponse } from "#/api/typesGenerated"; import { MockDropdownParameter, MockDynamicParametersResponse, @@ -10,17 +15,12 @@ import { MockUserOwner, MockValidationParameter, MockWorkspace, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { renderWithAuth, waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { createMockWebSocket } from "testHelpers/websockets"; -import { screen, waitFor, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { act } from "react"; -import { API } from "#/api/api"; -import type { DynamicParametersResponse } from "#/api/typesGenerated"; +} from "#/testHelpers/renderHelpers"; +import { createMockWebSocket } from "#/testHelpers/websockets"; import CreateWorkspacePage from "./CreateWorkspacePage"; describe("CreateWorkspacePage", () => { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 0360a23800..d9b66d260f 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -1,7 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useEffectEvent } from "hooks/hookPolyfills"; -import { getInitialParameterValues } from "modules/workspaces/DynamicParameter/DynamicParameter"; -import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; import { type FC, useCallback, @@ -32,6 +29,9 @@ import type { Workspace, } from "#/api/typesGenerated"; import { Loader } from "#/components/Loader/Loader"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; +import { getInitialParameterValues } from "#/modules/workspaces/DynamicParameter/DynamicParameter"; +import { generateWorkspaceName } from "#/modules/workspaces/generateWorkspaceName"; import { AutoCreateConsentDialog } from "./AutoCreateConsentDialog"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; import { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index fd3dc12dcf..b689d72bd0 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -1,9 +1,9 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockTemplate, MockUserOwner } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, screen, within } from "storybook/test"; import { DetailedError } from "#/api/errors"; import type { PreviewParameter } from "#/api/typesGenerated"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockTemplate, MockUserOwner } from "#/testHelpers/entities"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; const meta: Meta = { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 1ef299127b..a4eabbd6f0 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -1,15 +1,5 @@ import { type FormikContextType, useFormik } from "formik"; -import { useDebouncedFunction } from "hooks/debounce"; -import type { ExternalAuthPollingState } from "hooks/useExternalAuth"; import { ArrowLeft, CircleHelp, ExternalLinkIcon } from "lucide-react"; -import { useSyncFormParameters } from "modules/hooks/useSyncFormParameters"; -import { - Diagnostics, - DynamicParameter, - getInitialParameterValues, - useValidationSchemaForDynamicParameters, -} from "modules/workspaces/DynamicParameter/DynamicParameter"; -import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; import { type FC, useCallback, @@ -51,6 +41,16 @@ import { TooltipTrigger, } from "#/components/Tooltip/Tooltip"; import { WorkspaceUserAutocomplete } from "#/components/UserAutocomplete/UserAutocomplete"; +import { useDebouncedFunction } from "#/hooks/debounce"; +import type { ExternalAuthPollingState } from "#/hooks/useExternalAuth"; +import { useSyncFormParameters } from "#/modules/hooks/useSyncFormParameters"; +import { + Diagnostics, + DynamicParameter, + getInitialParameterValues, + useValidationSchemaForDynamicParameters, +} from "#/modules/workspaces/DynamicParameter/DynamicParameter"; +import { generateWorkspaceName } from "#/modules/workspaces/generateWorkspaceName"; import type { CreateWorkspaceMode } from "./CreateWorkspacePage"; import { ExternalAuthButton } from "./ExternalAuthButton"; import type { CreateWorkspacePermissions } from "./permissions"; diff --git a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx index b4125ac999..e1d74fe230 100644 --- a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx @@ -1,5 +1,5 @@ -import { MockTemplate } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockTemplate } from "#/testHelpers/entities"; import { SelectedTemplate } from "./SelectedTemplate"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/AIGovernanceSettingsPage/AIGovernanceSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/AIGovernanceSettingsPage/AIGovernanceSettingsPage.tsx index 71a0583c7b..c914b80276 100644 --- a/site/src/pages/DeploymentSettingsPage/AIGovernanceSettingsPage/AIGovernanceSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/AIGovernanceSettingsPage/AIGovernanceSettingsPage.tsx @@ -1,7 +1,7 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { AIGovernanceSettingsPageView } from "./AIGovernanceSettingsPageView"; const AIGovernanceSettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AnnouncementBannerDialog.tsx b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AnnouncementBannerDialog.tsx index 2519695fe7..bde49fca64 100644 --- a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AnnouncementBannerDialog.tsx +++ b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AnnouncementBannerDialog.tsx @@ -2,7 +2,6 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import DialogActions from "@mui/material/DialogActions"; import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; -import { AnnouncementBannerView } from "modules/dashboard/AnnouncementBanners/AnnouncementBannerView"; import { type FC, useState } from "react"; import { SliderPicker, TwitterPicker } from "react-color"; import { getFormHelpers } from "utils/formUtils"; @@ -10,6 +9,7 @@ import type { BannerConfig } from "#/api/typesGenerated"; import { Button } from "#/components/Button/Button"; import { Dialog, DialogActionButtons } from "#/components/Dialogs/Dialog"; import { Stack } from "#/components/Stack/Stack"; +import { AnnouncementBannerView } from "#/modules/dashboard/AnnouncementBanners/AnnouncementBannerView"; interface AnnouncementBannerDialogProps { banner: BannerConfig; diff --git a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx index 312a01d7da..a4ac83d324 100644 --- a/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx @@ -1,7 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -12,6 +9,9 @@ import { updateAppearance, } from "#/api/queries/appearance"; import type { UpdateAppearanceConfig } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { AppearanceSettingsPageView } from "./AppearanceSettingsPageView"; // ServiceBanner is unlike the other Deployment Settings pages because it diff --git a/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx index e76e7e9fc7..8ae3211b9b 100644 --- a/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx @@ -1,6 +1,6 @@ -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { ExternalAuthSettingsPageView } from "./ExternalAuthSettingsPageView"; const ExternalAuthSettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/ExportPolicyButton.stories.tsx index 8257e658ae..3dc00f2887 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 6cf96c8b3d..21218f7801 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPage.tsx @@ -1,5 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -15,6 +13,8 @@ import { ChooseOne, Cond } from "#/components/Conditionals/ChooseOne"; import { Link } from "#/components/Link/Link"; import { Loader } from "#/components/Loader/Loader"; import { PaywallPremium } from "#/components/Paywall/PaywallPremium"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; import { ExportPolicyButton } from "./ExportPolicyButton"; import { IdpOrgSyncPageView } from "./IdpOrgSyncPageView"; diff --git a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx index 5baa25557a..9a991a5b52 100644 --- a/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/IdpOrgSyncPage/IdpOrgSyncPageView.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, within } from "storybook/test"; import { MockOrganization, MockOrganization2, @@ -5,9 +7,7 @@ import { MockOrganizationSyncSettings, MockOrganizationSyncSettings2, MockOrganizationSyncSettingsEmpty, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; import { IdpOrgSyncPageView } from "./IdpOrgSyncPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.stories.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.stories.tsx index f9ee370b37..d4c2275310 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.stories.tsx @@ -1,8 +1,8 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockLicenseResponse } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import { expect, fn, within } from "storybook/test"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockLicenseResponse } from "#/testHelpers/entities"; import { LicenseCard } from "./LicenseCard"; diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx index 93e7a2a05a..92129f4bcf 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseCard.test.tsx @@ -1,7 +1,7 @@ -import { MockLicenseResponse } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; import { screen, within } from "@testing-library/react"; import userEvent, { type UserEvent } from "@testing-library/user-event"; +import { MockLicenseResponse } from "#/testHelpers/entities"; +import { render } from "#/testHelpers/renderHelpers"; import { LicenseCard } from "./LicenseCard"; const openRemoveDialog = async (user: UserEvent) => { diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.stories.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.stories.tsx index 1b734582a0..303a0458ce 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.stories.tsx @@ -1,7 +1,7 @@ -import { MockEntitlements, MockLicenseResponse } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import { expect, within } from "storybook/test"; +import { MockEntitlements, MockLicenseResponse } from "#/testHelpers/entities"; import LicensesSettingsPage from "./LicensesSettingsPage"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx index 1e771e1179..750633bddd 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx @@ -1,4 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useSearchParams } from "react-router"; @@ -8,6 +7,7 @@ import { API } from "#/api/api"; import { getErrorDetail, getErrorMessage } from "#/api/errors"; import { entitlements, refreshEntitlements } from "#/api/queries/entitlements"; import { insightsUserStatusCounts } from "#/api/queries/insights"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import LicensesSettingsPageView from "./LicensesSettingsPageView"; const LicensesSettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.stories.tsx index 31ea6f600e..ef17f89600 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.stories.tsx @@ -1,8 +1,8 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockLicenseResponse } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, within } from "storybook/test"; import type { Feature } from "#/api/typesGenerated"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockLicenseResponse } from "#/testHelpers/entities"; import LicensesSettingsPageView from "./LicensesSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx index dd4c2b6fb7..8496baeed6 100644 --- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx @@ -1,7 +1,6 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import MuiLink from "@mui/material/Link"; import Skeleton from "@mui/material/Skeleton"; -import { useWindowSize } from "hooks/useWindowSize"; import { PlusIcon, RotateCwIcon } from "lucide-react"; import type { FC } from "react"; import Confetti from "react-confetti"; @@ -21,6 +20,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useWindowSize } from "#/hooks/useWindowSize"; import { AIGovernanceUsersConsumption } from "./AIGovernanceUsersConsumptionChart"; import { LicenseCard } from "./LicenseCard"; import { LicenseSeatConsumptionChart } from "./LicenseSeatConsumptionChart"; diff --git a/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx index 281dc72aea..c28cccad66 100644 --- a/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx @@ -1,6 +1,6 @@ -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { NetworkSettingsPageView } from "./NetworkSettingsPageView"; const NetworkSettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx index 66982402c0..26a5f9b991 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.stories.tsx @@ -1,9 +1,9 @@ -import { MockSystemNotificationTemplates } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; import { selectTemplatesByGroup } from "#/api/queries/notifications"; import type { DeploymentValues } from "#/api/typesGenerated"; +import { MockSystemNotificationTemplates } 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 18db5d8781..71871fae40 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationEvents.tsx @@ -6,12 +6,6 @@ import ListItem from "@mui/material/ListItem"; import ListItemText, { listItemTextClasses } from "@mui/material/ListItemText"; import ToggleButton from "@mui/material/ToggleButton"; import ToggleButtonGroup from "@mui/material/ToggleButtonGroup"; -import { - castNotificationMethod, - methodIcons, - methodLabels, - type NotificationMethod, -} from "modules/notifications/utils"; import { type FC, Fragment } from "react"; import { useMutation, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -30,6 +24,12 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { + castNotificationMethod, + methodIcons, + methodLabels, + type NotificationMethod, +} from "#/modules/notifications/utils"; type NotificationEventsProps = { defaultMethod: NotificationMethod; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx index d6692a3b06..4cc9b242df 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.stories.tsx @@ -1,8 +1,3 @@ -import { - MockCustomNotificationTemplates, - MockNotificationMethodsResponse, - MockSystemNotificationTemplates, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { userEvent, within } from "storybook/test"; import { @@ -10,6 +5,11 @@ import { notificationDispatchMethodsKey, systemNotificationTemplatesKey, } from "#/api/queries/notifications"; +import { + MockCustomNotificationTemplates, + MockNotificationMethodsResponse, + MockSystemNotificationTemplates, +} from "#/testHelpers/entities"; import NotificationsPage from "./NotificationsPage"; import { baseMeta } from "./storybookUtils"; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx index 9e50c70972..542d0372e3 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx @@ -1,7 +1,4 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; -import { castNotificationMethod } from "modules/notifications/utils"; import type { FC } from "react"; import { useQueries } from "react-query"; import { deploymentGroupHasParent } from "utils/deployOptions"; @@ -21,6 +18,9 @@ import { SettingsHeaderTitle, } from "#/components/SettingsHeader/SettingsHeader"; import { TabLink, Tabs, TabsList } from "#/components/Tabs/Tabs"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; +import { castNotificationMethod } from "#/modules/notifications/utils"; import OptionsTable from "../OptionsTable"; import { NotificationEvents } from "./NotificationEvents"; import { Troubleshooting } from "./Troubleshooting"; diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts index 7f11dd6f50..549e7aaed9 100644 --- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts +++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts @@ -1,15 +1,3 @@ -import { - MockCustomNotificationTemplates, - MockNotificationMethodsResponse, - MockSystemNotificationTemplates, - MockUserOwner, -} from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withOrganizationSettingsProvider, - withToaster, -} from "testHelpers/storybook"; import type { Meta } from "@storybook/react-vite"; import { customNotificationTemplatesKey, @@ -17,6 +5,18 @@ import { systemNotificationTemplatesKey, } from "#/api/queries/notifications"; import type { DeploymentValues, SerpentOption } from "#/api/typesGenerated"; +import { + MockCustomNotificationTemplates, + MockNotificationMethodsResponse, + MockSystemNotificationTemplates, + MockUserOwner, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withOrganizationSettingsProvider, + withToaster, +} from "#/testHelpers/storybook"; 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 781692903b..4be0e49f37 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.stories.tsx @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockApiError } from "#/testHelpers/entities"; 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 b1f3ed5c1f..4f01726db7 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"; +} from "#/testHelpers/entities"; import { EditOAuth2AppPageView } from "./EditOAuth2AppPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx index 2db4a1d729..ef3cb419ce 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockOAuth2ProviderApps } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockOAuth2ProviderApps } from "#/testHelpers/entities"; import OAuth2AppsSettingsPageView from "./OAuth2AppsSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx index bb344f1b6d..afb53ec915 100644 --- a/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx +++ b/site/src/pages/DeploymentSettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx @@ -1,5 +1,4 @@ import { useTheme } from "@emotion/react"; -import { useClickableTableRow } from "hooks/useClickableTableRow"; import { ChevronRightIcon, PlusIcon } from "lucide-react"; import type { FC } from "react"; import { Link, useNavigate } from "react-router"; @@ -23,6 +22,7 @@ import { TableRow, } from "#/components/Table/Table"; import { TableLoader } from "#/components/TableLoader/TableLoader"; +import { useClickableTableRow } from "#/hooks/useClickableTableRow"; type OAuth2AppsSettingsProps = { apps?: TypesGen.OAuth2ProviderApp[]; diff --git a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx index 31bfb4d940..0569363dc6 100644 --- a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx @@ -1,8 +1,8 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { ObservabilitySettingsPageView } from "./ObservabilitySettingsPageView"; const ObservabilitySettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/Option.tsx b/site/src/pages/DeploymentSettingsPage/Option.tsx index 587a379d7c..708dd39e3a 100644 --- a/site/src/pages/DeploymentSettingsPage/Option.tsx +++ b/site/src/pages/DeploymentSettingsPage/Option.tsx @@ -1,8 +1,8 @@ import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { WrenchIcon } from "lucide-react"; import type { FC, HTMLAttributes, PropsWithChildren } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { DisabledBadge, EnabledBadge } from "#/components/Badges/Badges"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; export const OptionName: FC = ({ children }) => { return ( diff --git a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx index c511b4dcde..d8b563b041 100644 --- a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx @@ -1,5 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { useQuery } from "react-query"; import { pageTitle } from "utils/page"; @@ -9,6 +7,8 @@ import { experiments, isKnownExperiment, } from "#/api/queries/experiments"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { OverviewPageView } from "./OverviewPageView"; const OverviewPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx index b77d69a485..d6a7e97211 100644 --- a/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx +++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockDeploymentDAUResponse } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockDeploymentDAUResponse } from "#/testHelpers/entities"; import { OverviewPageView } from "./OverviewPageView"; const meta: Meta = { diff --git a/site/src/pages/DeploymentSettingsPage/PremiumPage/PremiumPage.tsx b/site/src/pages/DeploymentSettingsPage/PremiumPage/PremiumPage.tsx index 20be13f0f4..70579b70c7 100644 --- a/site/src/pages/DeploymentSettingsPage/PremiumPage/PremiumPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/PremiumPage/PremiumPage.tsx @@ -1,6 +1,6 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { PremiumPageView } from "./PremiumPageView"; const PremiumPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx index af0486786b..ef2516d7e2 100644 --- a/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx @@ -1,7 +1,7 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { SecuritySettingsPageView } from "./SecuritySettingsPageView"; const SecuritySettingsPage: FC = () => { diff --git a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx index 9425a4bb37..abe05367a6 100644 --- a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx +++ b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx @@ -1,6 +1,6 @@ -import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider"; import type { FC } from "react"; import { pageTitle } from "utils/page"; +import { useDeploymentConfig } from "#/modules/management/DeploymentConfigProvider"; import { UserAuthSettingsPageView } from "./UserAuthSettingsPageView"; const UserAuthSettingsPage: FC = () => { diff --git a/site/src/pages/EditUserPage/EditUserForm.stories.tsx b/site/src/pages/EditUserPage/EditUserForm.stories.tsx index d81b9db8e8..f26290c913 100644 --- a/site/src/pages/EditUserPage/EditUserForm.stories.tsx +++ b/site/src/pages/EditUserPage/EditUserForm.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 { EditUserForm } from "./EditUserForm"; const meta: Meta = { diff --git a/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx b/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx index fe73334930..bf81612193 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/GroupMembersPage.tsx b/site/src/pages/GroupsPage/GroupMembersPage.tsx index b4c87e0215..d9f4666db3 100644 --- a/site/src/pages/GroupsPage/GroupMembersPage.tsx +++ b/site/src/pages/GroupsPage/GroupMembersPage.tsx @@ -1,6 +1,5 @@ import type { Interpolation, Theme } from "@emotion/react"; import { EllipsisVertical, UserPlusIcon } from "lucide-react"; -import { isEveryoneGroup } from "modules/groups"; import { type FC, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { useOutletContext } from "react-router"; @@ -35,6 +34,7 @@ import { TableHeader, TableRow, } from "#/components/Table/Table"; +import { isEveryoneGroup } from "#/modules/groups"; import type { GroupPageOutletContext } from "./GroupPage"; const GroupMembersPage: FC = () => { diff --git a/site/src/pages/GroupsPage/GroupPage.stories.tsx b/site/src/pages/GroupsPage/GroupPage.stories.tsx index 5b60a4baf0..c44a5a0bae 100644 --- a/site/src/pages/GroupsPage/GroupPage.stories.tsx +++ b/site/src/pages/GroupsPage/GroupPage.stories.tsx @@ -1,10 +1,3 @@ -import { - MockDefaultOrganization, - MockGroup, - MockGroupWithoutMembers, - MockOrganizationMember, - MockOrganizationMember2, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { spyOn, userEvent, within } from "storybook/test"; import { @@ -18,6 +11,13 @@ import { groupPermissionsKey, } from "#/api/queries/groups"; import { organizationMembersKey } from "#/api/queries/organizations"; +import { + MockDefaultOrganization, + MockGroup, + MockGroupWithoutMembers, + MockOrganizationMember, + MockOrganizationMember2, +} from "#/testHelpers/entities"; import GroupMembersPage from "./GroupMembersPage"; import GroupPage from "./GroupPage"; diff --git a/site/src/pages/GroupsPage/GroupPage.tsx b/site/src/pages/GroupsPage/GroupPage.tsx index 7eda6cfce6..d812a96954 100644 --- a/site/src/pages/GroupsPage/GroupPage.tsx +++ b/site/src/pages/GroupsPage/GroupPage.tsx @@ -1,4 +1,3 @@ -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; import { TrashIcon } from "lucide-react"; import { type ComponentProps, type FC, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; @@ -32,6 +31,7 @@ import { SettingsHeaderTitle, } from "#/components/SettingsHeader/SettingsHeader"; import { TabLink, Tabs, TabsList } from "#/components/Tabs/Tabs"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; export type GroupPageOutletContext = { group: Group; diff --git a/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx b/site/src/pages/GroupsPage/GroupSettingsPageView.stories.tsx index fa8a0dc459..dd85785881 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/GroupSettingsPageView.tsx b/site/src/pages/GroupsPage/GroupSettingsPageView.tsx index 435f5a0634..ebe7b2c34b 100644 --- a/site/src/pages/GroupsPage/GroupSettingsPageView.tsx +++ b/site/src/pages/GroupsPage/GroupSettingsPageView.tsx @@ -1,5 +1,4 @@ import { useFormik } from "formik"; -import { isEveryoneGroup } from "modules/groups"; import type { FC } from "react"; import { getFormHelpers, @@ -13,6 +12,7 @@ import { IconField } from "#/components/IconField/IconField"; import { Input } from "#/components/Input/Input"; import { Label } from "#/components/Label/Label"; import { Spinner } from "#/components/Spinner/Spinner"; +import { isEveryoneGroup } from "#/modules/groups"; type FormData = { name: string; diff --git a/site/src/pages/GroupsPage/GroupsPage.tsx b/site/src/pages/GroupsPage/GroupsPage.tsx index f8ea67af9a..e2f237310d 100644 --- a/site/src/pages/GroupsPage/GroupsPage.tsx +++ b/site/src/pages/GroupsPage/GroupsPage.tsx @@ -1,6 +1,4 @@ import { PlusIcon } from "lucide-react"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { type FC, useEffect } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink } from "react-router"; @@ -17,6 +15,8 @@ import { SettingsHeaderDescription, SettingsHeaderTitle, } from "#/components/SettingsHeader/SettingsHeader"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { useGroupsSettings } from "./GroupsPageProvider"; import { GroupsPageView } from "./GroupsPageView"; diff --git a/site/src/pages/GroupsPage/GroupsPageProvider.tsx b/site/src/pages/GroupsPage/GroupsPageProvider.tsx index 325d74a956..ac141ca9f7 100644 --- a/site/src/pages/GroupsPage/GroupsPageProvider.tsx +++ b/site/src/pages/GroupsPage/GroupsPageProvider.tsx @@ -1,7 +1,7 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import { createContext, type FC, useContext } from "react"; import { Navigate, Outlet, useParams } from "react-router"; import type { Organization } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; const GroupsPageContext = createContext( undefined, diff --git a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx index 2f2f659680..671a50e3a6 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockGroup } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockGroup } from "#/testHelpers/entities"; 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 4343bab3c8..01c7d036f6 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/DERPRegionPage.stories.tsx b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx index d7bbe71d28..97c4bb4f1e 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx @@ -1,5 +1,5 @@ -import { MockHealth } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockHealth } from "#/testHelpers/entities"; import DERPRegionPage from "./DERPRegionPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/HealthLayout.tsx b/site/src/pages/HealthPage/HealthLayout.tsx index 1e44e8faa9..09f60af9bb 100644 --- a/site/src/pages/HealthPage/HealthLayout.tsx +++ b/site/src/pages/HealthPage/HealthLayout.tsx @@ -2,7 +2,6 @@ import CircularProgress from "@mui/material/CircularProgress"; import IconButton from "@mui/material/IconButton"; import kebabCase from "lodash/fp/kebabCase"; import { BellOffIcon, RotateCcwIcon } from "lucide-react"; -import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; import { type FC, Suspense } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { NavLink, Outlet } from "react-router"; @@ -18,6 +17,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { DashboardFullPage } from "#/modules/dashboard/DashboardLayout"; import { HealthIcon } from "./Content"; const linkStyles = { diff --git a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx index d30d50ac0e..db74f182a3 100644 --- a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx +++ b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx @@ -1,9 +1,9 @@ -import { Provisioner } from "modules/provisioners/Provisioner"; import type { FC } from "react"; import { useOutletContext } from "react-router"; import { pageTitle } from "utils/page"; import type { HealthcheckReport } from "#/api/typesGenerated"; import { Alert } from "#/components/Alert/Alert"; +import { Provisioner } from "#/modules/provisioners/Provisioner"; import { Header, HeaderTitle, diff --git a/site/src/pages/HealthPage/WebsocketPage.stories.tsx b/site/src/pages/HealthPage/WebsocketPage.stories.tsx index dd75430de9..59247cec7a 100644 --- a/site/src/pages/HealthPage/WebsocketPage.stories.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.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 { generateMeta } from "./storybook"; import WebsocketPage from "./WebsocketPage"; diff --git a/site/src/pages/HealthPage/WebsocketPage.tsx b/site/src/pages/HealthPage/WebsocketPage.tsx index 804e32e34d..8b3d6e83e8 100644 --- a/site/src/pages/HealthPage/WebsocketPage.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.tsx @@ -1,7 +1,6 @@ import { useTheme } from "@emotion/react"; import { CodeIcon } from "lucide-react"; import { useOutletContext } from "react-router"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { pageTitle } from "utils/page"; import type { HealthcheckReport } from "#/api/typesGenerated"; import { Alert } from "#/components/Alert/Alert"; @@ -10,6 +9,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; import { Header, HeaderTitle, diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx index 053cf4c2b7..78f2f67d5b 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.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 { generateMeta } from "./storybook"; import WorkspaceProxyPage from "./WorkspaceProxyPage"; diff --git a/site/src/pages/HealthPage/storybook.tsx b/site/src/pages/HealthPage/storybook.tsx index 01bc050f1e..d4e2543fa8 100644 --- a/site/src/pages/HealthPage/storybook.tsx +++ b/site/src/pages/HealthPage/storybook.tsx @@ -1,13 +1,3 @@ -import { chromatic } from "testHelpers/chromatic"; -import { - MockAppearanceConfig, - MockBuildInfo, - MockEntitlements, - MockExperiments, - MockHealth, - MockHealthSettings, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta } from "@storybook/react-vite"; import { type RouteDefinition, @@ -18,6 +8,16 @@ import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY, } from "#/api/queries/debug"; +import { chromatic } from "#/testHelpers/chromatic"; +import { + MockAppearanceConfig, + MockBuildInfo, + MockEntitlements, + MockExperiments, + MockHealth, + MockHealthSettings, +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; 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 7fdb66d4a2..09e9b63347 100644 --- a/site/src/pages/IconsPage/IconsPage.stories.tsx +++ b/site/src/pages/IconsPage/IconsPage.stories.tsx @@ -1,5 +1,5 @@ -import { chromatic } from "testHelpers/chromatic"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; import IconsPage from "./IconsPage"; const meta: Meta = { diff --git a/site/src/pages/IconsPage/IconsPage.tsx b/site/src/pages/IconsPage/IconsPage.tsx index 6a1f15ccd8..68f6186d68 100644 --- a/site/src/pages/IconsPage/IconsPage.tsx +++ b/site/src/pages/IconsPage/IconsPage.tsx @@ -5,12 +5,6 @@ import Link from "@mui/material/Link"; import TextField from "@mui/material/TextField"; import { SearchIcon, XIcon } from "lucide-react"; import { type FC, type ReactNode, useMemo, useState } from "react"; -import { DEPRECATED_ICONS } from "theme/deprecatedIcons"; -import { - defaultParametersForBuiltinIcons, - parseImageParameters, -} from "theme/externalImages"; -import icons from "theme/icons.json"; import uFuzzy from "ufuzzy"; import { pageTitle } from "utils/page"; import { CopyableValue } from "#/components/CopyableValue/CopyableValue"; @@ -26,6 +20,12 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { DEPRECATED_ICONS } from "#/theme/deprecatedIcons"; +import { + defaultParametersForBuiltinIcons, + parseImageParameters, +} from "#/theme/externalImages"; +import icons from "#/theme/icons.json"; const filteredIcons = icons.filter((icon) => !DEPRECATED_ICONS.includes(icon)); const iconsWithoutSuffix = filteredIcons.map((icon) => { diff --git a/site/src/pages/LoginPage/LoginPage.test.tsx b/site/src/pages/LoginPage/LoginPage.test.tsx index a268bc1eb8..91dd44a245 100644 --- a/site/src/pages/LoginPage/LoginPage.test.tsx +++ b/site/src/pages/LoginPage/LoginPage.test.tsx @@ -1,14 +1,14 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { - render, - renderWithRouter, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; import { fireEvent, screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { HttpResponse, http } from "msw"; import { createMemoryRouter } from "react-router"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { + render, + renderWithRouter, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { Language } from "./Language"; import LoginPage from "./LoginPage"; diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index bbdd8b987a..243b6cc1e1 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -1,5 +1,4 @@ import { useAuthContext } from "contexts/auth/AuthProvider"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useEffect } from "react"; import { useQuery } from "react-query"; import { Navigate, useLocation, useNavigate } from "react-router"; @@ -8,6 +7,7 @@ import { retrieveRedirect } from "utils/redirect"; import { sendDeploymentEvent } from "utils/telemetry"; import { buildInfo } from "#/api/queries/buildInfo"; import { authMethods } from "#/api/queries/users"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import { LoginPageView } from "./LoginPageView"; const LoginPage: FC = () => { diff --git a/site/src/pages/LoginPage/LoginPageView.stories.tsx b/site/src/pages/LoginPage/LoginPageView.stories.tsx index 7ffc43bb09..28a6cf6d5a 100644 --- a/site/src/pages/LoginPage/LoginPageView.stories.tsx +++ b/site/src/pages/LoginPage/LoginPageView.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { MockAuthMethodsAll, MockAuthMethodsExternal, @@ -5,9 +7,7 @@ import { MockAuthMethodsPasswordTermsOfService, MockBuildInfo, mockApiError, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; 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 af35e952a4..8f39e587f9 100644 --- a/site/src/pages/LoginPage/SignInForm.stories.tsx +++ b/site/src/pages/LoginPage/SignInForm.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 { SignInForm } from "./SignInForm"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx index eaffc10344..2a1a23de53 100644 --- a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx @@ -1,11 +1,11 @@ import { useAuthenticated } from "hooks"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate } from "react-router"; import { toast } from "sonner"; import { createOrganization } from "#/api/queries/organizations"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { CreateOrganizationPageView } from "./CreateOrganizationPageView"; const CreateOrganizationPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx index a9657cd93d..dfbff52a15 100644 --- a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPageView.stories.tsx @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockApiError } from "#/testHelpers/entities"; import { CreateOrganizationPageView } from "./CreateOrganizationPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx index a1a791ea43..93371f277a 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx @@ -1,5 +1,3 @@ -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router"; @@ -14,6 +12,8 @@ import { import type { CustomRoleRequest } from "#/api/typesGenerated"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import CreateEditRolePageView from "./CreateEditRolePageView"; const CreateEditRolePage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePageView.stories.tsx index 01d9150a6a..90a44e9cfc 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, mockApiError, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; import CreateEditRolePageView from "./CreateEditRolePageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx index 0d4a522735..c568cca813 100644 --- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx @@ -1,6 +1,3 @@ -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useParams } from "react-router"; @@ -17,6 +14,9 @@ import { SettingsHeaderTitle, } from "#/components/SettingsHeader/SettingsHeader"; import { Stack } from "#/components/Stack/Stack"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { CustomRolesPageView } from "./CustomRolesPageView"; const CustomRolesPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPageView.stories.tsx index 7f02cb4f48..18d40aac91 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"; +} from "#/testHelpers/entities"; 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 57a4aab1fc..13435ca467 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/IdpSyncPage/ExportPolicyButton.stories.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/ExportPolicyButton.stories.tsx index a55588afc0..cd468f3b79 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"; +} from "#/testHelpers/entities"; import { ExportPolicyButton } from "./ExportPolicyButton"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpGroupSyncForm.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpGroupSyncForm.tsx index d40cb2646b..f40a682e38 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpGroupSyncForm.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpGroupSyncForm.tsx @@ -1,6 +1,5 @@ import { useFormik } from "formik"; import { Plus, Trash, TriangleAlert } from "lucide-react"; -import { isEveryoneGroup } from "modules/groups"; import { type FC, type KeyboardEventHandler, useId, useState } from "react"; import { docs } from "utils/docs"; import { isUUID } from "utils/uuid"; @@ -42,6 +41,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { isEveryoneGroup } from "#/modules/groups"; import { ExportPolicyButton } from "./ExportPolicyButton"; import { IdpMappingTable } from "./IdpMappingTable"; import { IdpPillList } from "./IdpPillList"; diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx index aff9cc873a..3ba8fdcad8 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPage.tsx @@ -1,6 +1,3 @@ -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQueries, useQuery, useQueryClient } from "react-query"; import { useParams, useSearchParams } from "react-router"; @@ -21,6 +18,9 @@ import { ChooseOne, Cond } from "#/components/Conditionals/ChooseOne"; import { EmptyState } from "#/components/EmptyState/EmptyState"; import { Link } from "#/components/Link/Link"; import { PaywallPremium } from "#/components/Paywall/PaywallPremium"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import IdpSyncPageView from "./IdpSyncPageView"; const IdpSyncPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx index 71f587d43f..dca9767d0e 100644 --- a/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/IdpSyncPage/IdpSyncPageView.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent } from "storybook/test"; import { MockGroup, MockGroup2, @@ -8,9 +10,7 @@ import { MockMultipleOverflowGroupSyncSettings, MockOrganization, MockRoleSyncSettings, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, userEvent } from "storybook/test"; +} from "#/testHelpers/entities"; 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 e3381dc425..91ee12d7a8 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.test.tsx @@ -1,19 +1,19 @@ +import { fireEvent, screen, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; +import type { SlimRole } from "#/api/typesGenerated"; import { MockEntitlementsWithMultiOrg, MockOrganization, MockOrganizationAuditorRole, MockOrganizationPermissions, MockUserOwner, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { renderWithOrganizationSettingsLayout, 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 { HttpResponse, http } from "msw"; -import type { SlimRole } from "#/api/typesGenerated"; +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import OrganizationMembersPage from "./OrganizationMembersPage"; vi.spyOn(console, "error").mockImplementation(() => {}); diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.tsx index c1778076ad..739965f982 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPage.tsx @@ -1,9 +1,3 @@ -import { useAuthenticated } from "hooks"; -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { shouldShowAISeatColumn } from "modules/dashboard/entitlements"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { type FC, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useParams, useSearchParams } from "react-router"; @@ -25,6 +19,12 @@ import type { import { ConfirmDialog } from "#/components/Dialogs/ConfirmDialog/ConfirmDialog"; import { EmptyState } from "#/components/EmptyState/EmptyState"; import { Stack } from "#/components/Stack/Stack"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { shouldShowAISeatColumn } from "#/modules/dashboard/entitlements"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { OrganizationMembersPageView } from "./OrganizationMembersPageView"; const OrganizationMembersPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx index b5d0cb647c..b863feee26 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.stories.tsx @@ -1,14 +1,14 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, within } from "storybook/test"; +import { mockSuccessResult } from "#/components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "#/hooks/usePaginatedQuery"; import { MockOrganizationMember, MockOrganizationMember2, MockOwnerRole, MockUserAdminRole, MockUserOwner, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; -import { expect, within } from "storybook/test"; -import { mockSuccessResult } from "#/components/PaginationWidget/PaginationContainer.mocks"; +} from "#/testHelpers/entities"; import { OrganizationMembersPageView } from "./OrganizationMembersPageView"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx index b08b33c6a9..28b6aab86f 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationMembersPageView.tsx @@ -1,4 +1,3 @@ -import type { PaginationResultInfo } from "hooks/usePaginatedQuery"; import { EllipsisVertical, TriangleAlert, UserPlusIcon } from "lucide-react"; import { AISeatCell } from "modules/users/AISeatCell"; import { UserGroupsCell } from "pages/UsersPage/UsersTable/UserGroupsCell"; @@ -38,6 +37,7 @@ import { TableRow, } from "#/components/Table/Table"; import { UserAutocomplete } from "#/components/UserAutocomplete/UserAutocomplete"; +import type { PaginationResultInfo } from "#/hooks/usePaginatedQuery"; import { TableColumnHelpTooltip } from "./UserTable/TableColumnHelpTooltip"; import { UserRoleCell } from "./UserTable/UserRoleCell"; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/CancelJobButton.stories.tsx index e42d653e1e..7cd368cd57 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 4f2614633f..fc8a67760b 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 { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import type { Response } from "#/api/typesGenerated"; +import { MockProvisionerJob } from "#/testHelpers/entities"; +import { withToaster } 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 d40e85b6b8..df1b4c24a7 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.stories.tsx @@ -1,8 +1,8 @@ -import { MockProvisionerJob } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, within } from "storybook/test"; import { daysAgo } from "utils/time"; import { Table, TableBody } from "#/components/Table/Table"; +import { MockProvisionerJob } from "#/testHelpers/entities"; import { JobRow } from "./JobRow"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.tsx index faadc3d9da..f3acfa8d2f 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/JobRow.tsx @@ -1,10 +1,4 @@ import { ChevronRightIcon, TriangleAlertIcon } from "lucide-react"; -import { JobStatusIndicator } from "modules/provisioners/JobStatusIndicator"; -import { - ProvisionerTag, - ProvisionerTags, - ProvisionerTruncateTags, -} from "modules/provisioners/ProvisionerTags"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; @@ -14,6 +8,12 @@ import { Avatar } from "#/components/Avatar/Avatar"; import { Badge } from "#/components/Badge/Badge"; import { Button } from "#/components/Button/Button"; import { TableCell, TableRow } from "#/components/Table/Table"; +import { JobStatusIndicator } from "#/modules/provisioners/JobStatusIndicator"; +import { + ProvisionerTag, + ProvisionerTags, + ProvisionerTruncateTags, +} from "#/modules/provisioners/ProvisionerTags"; import { CancelJobButton } from "./CancelJobButton"; type JobRowProps = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPage.tsx index f55ff8d284..739ea67caa 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPage.tsx @@ -1,8 +1,8 @@ -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useSearchParams } from "react-router"; import { provisionerJobs } from "#/api/queries/organizations"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; import OrganizationProvisionerJobsPageView from "./OrganizationProvisionerJobsPageView"; const OrganizationProvisionerJobsPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx index 0ed64fd655..a99d672fe3 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerJobsPage/OrganizationProvisionerJobsPageView.stories.tsx @@ -1,9 +1,9 @@ -import { MockOrganization, MockProvisionerJob } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { useState } from "react"; import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import { daysAgo } from "utils/time"; import type { ProvisionerJob } from "#/api/typesGenerated"; +import { MockOrganization, MockProvisionerJob } from "#/testHelpers/entities"; import OrganizationProvisionerJobsPageView from "./OrganizationProvisionerJobsPageView"; const MockProvisionerJobs: ProvisionerJob[] = Array.from( diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPage.tsx index 925ef3900b..207effb139 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPage.tsx @@ -1,12 +1,12 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useParams } from "react-router"; import { pageTitle } from "utils/page"; import { provisionerDaemonGroups } from "#/api/queries/organizations"; import { EmptyState } from "#/components/EmptyState/EmptyState"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { OrganizationProvisionerKeysPageView } from "./OrganizationProvisionerKeysPageView"; const OrganizationProvisionerKeysPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx index 9c0b90389a..7ed15cb670 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/OrganizationProvisionerKeysPageView.stories.tsx @@ -1,8 +1,3 @@ -import { - MockProvisioner, - MockProvisionerKey, - mockApiError, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { type ProvisionerKeyDaemons, @@ -10,6 +5,11 @@ 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/OrganizationProvisionerKeysPage/ProvisionerKeyRow.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/ProvisionerKeyRow.tsx index a6d9a64aad..fd59e45571 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/ProvisionerKeyRow.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionerKeysPage/ProvisionerKeyRow.tsx @@ -1,9 +1,4 @@ import { ChevronRightIcon } from "lucide-react"; -import { - ProvisionerTag, - ProvisionerTags, - ProvisionerTruncateTags, -} from "modules/provisioners/ProvisionerTags"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; @@ -12,6 +7,11 @@ import type { ProvisionerDaemon, ProvisionerKey } from "#/api/typesGenerated"; import { Badge } from "#/components/Badge/Badge"; import { Button } from "#/components/Button/Button"; import { TableCell, TableRow } from "#/components/Table/Table"; +import { + ProvisionerTag, + ProvisionerTags, + ProvisionerTruncateTags, +} from "#/modules/provisioners/ProvisionerTags"; type ProvisionerKeyRowProps = { readonly provisionerKey: ProvisionerKey; diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPage.tsx index ac5408a295..744b359c24 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPage.tsx @@ -1,7 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useParams, useSearchParams } from "react-router"; @@ -9,6 +5,10 @@ import { pageTitle } from "utils/page"; import { buildInfo } from "#/api/queries/buildInfo"; import { provisionerDaemons } from "#/api/queries/organizations"; import { EmptyState } from "#/components/EmptyState/EmptyState"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { OrganizationProvisionersPageView } from "./OrganizationProvisionersPageView"; const OrganizationProvisionersPage: FC = () => { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx index 8dba15b4d8..812cba959f 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/OrganizationProvisionersPageView.stories.tsx @@ -1,11 +1,11 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockBuildInfo, MockProvisioner, MockProvisionerWithTags, MockUserProvisioner, mockApiError, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; 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 05f0c653d8..900d454f37 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 { expect, userEvent, within } from "storybook/test"; import { Table, TableBody } from "#/components/Table/Table"; +import { MockBuildInfo, MockProvisioner } from "#/testHelpers/entities"; import { ProvisionerRow } from "./ProvisionerRow"; const meta: Meta = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.tsx index e27f5aea72..5f6cd9bb84 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerRow.tsx @@ -1,10 +1,4 @@ import { ChevronRightIcon } from "lucide-react"; -import { JobStatusIndicator } from "modules/provisioners/JobStatusIndicator"; -import { - ProvisionerTag, - ProvisionerTags, - ProvisionerTruncateTags, -} from "modules/provisioners/ProvisionerTags"; import { ProvisionerKey } from "pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerKey"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; @@ -21,6 +15,12 @@ import { type StatusIndicatorProps, } from "#/components/StatusIndicator/StatusIndicator"; import { TableCell, TableRow } from "#/components/Table/Table"; +import { JobStatusIndicator } from "#/modules/provisioners/JobStatusIndicator"; +import { + ProvisionerTag, + ProvisionerTags, + ProvisionerTruncateTags, +} from "#/modules/provisioners/ProvisionerTags"; import { ProvisionerVersion } from "./ProvisionerVersion"; const variantByStatus: Record< diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationProvisionersPage/ProvisionerVersion.stories.tsx index 43c872aa55..ed8f5b317a 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 3a85da1896..77edf9c3f9 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.test.tsx @@ -1,15 +1,15 @@ +import { screen } from "@testing-library/react"; +import { HttpResponse, http } from "msw"; import { MockDefaultOrganization, MockEntitlementsWithMultiOrg, MockOrganization2, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { renderWithOrganizationSettingsLayout, waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; -import { screen } from "@testing-library/react"; -import { HttpResponse, http } from "msw"; +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import OrganizationRedirect from "./OrganizationRedirect"; vi.spyOn(console, "error").mockImplementation(() => {}); diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx index 8bbab6fd63..15ea630f65 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx @@ -1,8 +1,8 @@ -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { canEditOrganization } from "modules/permissions/organizations"; import type { FC } from "react"; import { Navigate } from "react-router"; import { EmptyState } from "#/components/EmptyState/EmptyState"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { canEditOrganization } from "#/modules/permissions/organizations"; const OrganizationRedirect: FC = () => { const { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx index 1fde7424ee..cef0ca031b 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPage.tsx @@ -1,5 +1,3 @@ -import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate } from "react-router"; @@ -14,6 +12,8 @@ import { } from "#/api/queries/organizations"; import type { ShareableWorkspaceOwners } from "#/api/typesGenerated"; import { EmptyState } from "#/components/EmptyState/EmptyState"; +import { useOrganizationSettings } from "#/modules/management/OrganizationSettingsLayout"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { OrganizationSettingsPageView } from "./OrganizationSettingsPageView"; const sharingUpdatedToastLabels: Record = { diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx index c578e07c4a..68c7578d36 100644 --- a/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/OrganizationSettingsPageView.stories.tsx @@ -1,12 +1,12 @@ -import { chromatic } from "testHelpers/chromatic"; -import { - MockDefaultOrganization, - MockOrganization, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { within } from "@testing-library/react"; import { action } from "storybook/actions"; import { userEvent } from "storybook/test"; +import { chromatic } from "#/testHelpers/chromatic"; +import { + MockDefaultOrganization, + MockOrganization, +} from "#/testHelpers/entities"; 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 48a03a15d2..b3ddbcdcbd 100644 --- a/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx +++ b/site/src/pages/OrganizationSettingsPage/UserTable/EditRolesButton.stories.tsx @@ -1,12 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; import { MockOwnerRole, MockSiteRoles, MockUserAdminRole, MockWorkspaceCreationBanRole, -} from "testHelpers/entities"; -import { withDesktopViewport } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; +} from "#/testHelpers/entities"; +import { withDesktopViewport } from "#/testHelpers/storybook"; import { EditRolesButton } from "./EditRolesButton"; const meta: Meta = { diff --git a/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx b/site/src/pages/ResetPasswordPage/ChangePasswordPage.stories.tsx index 1234fdba89..1dbf451b6b 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 { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; +import { mockApiError } from "#/testHelpers/entities"; +import { withToaster } 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 2261c79633..3ddd0d7e19 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 { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; +import { mockApiError } from "#/testHelpers/entities"; +import { withToaster } 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 91f4d0b915..b9de311a08 100644 --- a/site/src/pages/SetupPage/SetupPage.test.tsx +++ b/site/src/pages/SetupPage/SetupPage.test.tsx @@ -1,14 +1,14 @@ -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 { HttpResponse, http } from "msw"; import { createMemoryRouter } from "react-router"; import type { Response, User } from "#/api/typesGenerated"; +import { MockBuildInfo, MockUserOwner } from "#/testHelpers/entities"; +import { + renderWithRouter, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { SetupPage } from "./SetupPage"; import { Language as PageViewLanguage } from "./SetupPageView"; diff --git a/site/src/pages/SetupPage/SetupPage.tsx b/site/src/pages/SetupPage/SetupPage.tsx index f57bc1e38a..23919c75da 100644 --- a/site/src/pages/SetupPage/SetupPage.tsx +++ b/site/src/pages/SetupPage/SetupPage.tsx @@ -1,5 +1,4 @@ import { useAuthContext } from "contexts/auth/AuthProvider"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useEffect, useRef } from "react"; import { useMutation, useQuery } from "react-query"; import { Navigate } from "react-router"; @@ -8,6 +7,7 @@ import { sendDeploymentEvent } from "utils/telemetry"; import { buildInfo } from "#/api/queries/buildInfo"; import { authMethods, createFirstUser } from "#/api/queries/users"; import { Loader } from "#/components/Loader/Loader"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import { SetupPageView } from "./SetupPageView"; export const SetupPage: FC = () => { diff --git a/site/src/pages/SetupPage/SetupPageView.stories.tsx b/site/src/pages/SetupPage/SetupPageView.stories.tsx index ce6b9ce8c3..8367eaa387 100644 --- a/site/src/pages/SetupPage/SetupPageView.stories.tsx +++ b/site/src/pages/SetupPage/SetupPageView.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { mockApiError } from "#/testHelpers/entities"; 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 3c35efdc26..6392f307a3 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockTemplateExample, mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockTemplateExample, mockApiError } from "#/testHelpers/entities"; import { StarterTemplatePageView } from "./StarterTemplatePageView"; const meta: Meta = { diff --git a/site/src/pages/TaskPage/ModifyPromptDialog.stories.tsx b/site/src/pages/TaskPage/ModifyPromptDialog.stories.tsx index f12118eb28..d06c726441 100644 --- a/site/src/pages/TaskPage/ModifyPromptDialog.stories.tsx +++ b/site/src/pages/TaskPage/ModifyPromptDialog.stories.tsx @@ -1,13 +1,13 @@ -import { - MockTask, - MockTaskWorkspace, - mockApiError, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { API } from "#/api/api"; import { workspaceBuildParametersKey } from "#/api/queries/workspaceBuilds"; import type { Workspace, WorkspaceBuildParameter } from "#/api/typesGenerated"; +import { + MockTask, + MockTaskWorkspace, + mockApiError, +} from "#/testHelpers/entities"; import { ModifyPromptDialog } from "./ModifyPromptDialog"; const mockTaskWorkspaceStarting: Workspace = { diff --git a/site/src/pages/TaskPage/TaskAppIframe.tsx b/site/src/pages/TaskPage/TaskAppIframe.tsx index 18bc4191ed..4e7123fcf8 100644 --- a/site/src/pages/TaskPage/TaskAppIframe.tsx +++ b/site/src/pages/TaskPage/TaskAppIframe.tsx @@ -1,7 +1,5 @@ import { useProxy } from "contexts/ProxyContext"; import { EllipsisVertical, ExternalLinkIcon, HouseIcon } from "lucide-react"; -import { useAppLink } from "modules/apps/useAppLink"; -import type { WorkspaceAppWithAgent } from "modules/tasks/apps"; import { type FC, type HTMLProps, useRef } from "react"; import { Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; @@ -14,6 +12,8 @@ import { DropdownMenuTrigger, } from "#/components/DropdownMenu/DropdownMenu"; import { Spinner } from "#/components/Spinner/Spinner"; +import { useAppLink } from "#/modules/apps/useAppLink"; +import type { WorkspaceAppWithAgent } from "#/modules/tasks/apps"; import { TaskWildcardWarning } from "./TaskWildcardWarning"; type TaskAppIFrameProps = { diff --git a/site/src/pages/TaskPage/TaskApps.stories.tsx b/site/src/pages/TaskPage/TaskApps.stories.tsx index de484b9130..31626c33c2 100644 --- a/site/src/pages/TaskPage/TaskApps.stories.tsx +++ b/site/src/pages/TaskPage/TaskApps.stories.tsx @@ -1,3 +1,7 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { getPreferredProxy } from "contexts/ProxyContext"; +import kebabCase from "lodash/kebabCase"; +import type { Task, Workspace, WorkspaceApp } from "#/api/typesGenerated"; import { MockPrimaryWorkspaceProxy, MockTask, @@ -6,12 +10,8 @@ import { MockWorkspaceAgent, MockWorkspaceApp, MockWorkspaceProxies, -} from "testHelpers/entities"; -import { withAuthProvider, withProxyProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { getPreferredProxy } from "contexts/ProxyContext"; -import kebabCase from "lodash/kebabCase"; -import type { Task, Workspace, WorkspaceApp } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withAuthProvider, withProxyProvider } from "#/testHelpers/storybook"; import { TaskApps } from "./TaskApps"; const mockExternalApp: WorkspaceApp = { diff --git a/site/src/pages/TaskPage/TaskApps.tsx b/site/src/pages/TaskPage/TaskApps.tsx index 80af5053a2..946e8d386c 100644 --- a/site/src/pages/TaskPage/TaskApps.tsx +++ b/site/src/pages/TaskPage/TaskApps.tsx @@ -1,10 +1,4 @@ import { ChevronDownIcon, LayoutGridIcon, TerminalIcon } from "lucide-react"; -import { getTerminalHref } from "modules/apps/apps"; -import { useAppLink } from "modules/apps/useAppLink"; -import { - getAllAppsWithAgent, - type WorkspaceAppWithAgent, -} from "modules/tasks/apps"; import { type FC, useState } from "react"; import { type LinkProps, Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; @@ -21,6 +15,12 @@ import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; import { InfoTooltip } from "#/components/InfoTooltip/InfoTooltip"; import { Link } from "#/components/Link/Link"; import { ScrollArea, ScrollBar } from "#/components/ScrollArea/ScrollArea"; +import { getTerminalHref } from "#/modules/apps/apps"; +import { useAppLink } from "#/modules/apps/useAppLink"; +import { + getAllAppsWithAgent, + type WorkspaceAppWithAgent, +} from "#/modules/tasks/apps"; import { TaskAppIFrame, TaskIframe } from "./TaskAppIframe"; type TaskAppsProps = { diff --git a/site/src/pages/TaskPage/TaskPage.stories.tsx b/site/src/pages/TaskPage/TaskPage.stories.tsx index 6d9a9beede..3501d40fa4 100644 --- a/site/src/pages/TaskPage/TaskPage.stories.tsx +++ b/site/src/pages/TaskPage/TaskPage.stories.tsx @@ -1,3 +1,21 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { + expect, + screen, + spyOn, + userEvent, + waitFor, + within, +} from "storybook/test"; +import { reactRouterParameters } from "storybook-addon-remix-react-router"; +import { API } from "#/api/api"; +import { taskLogsKey } from "#/api/queries/tasks"; +import type { + Task, + TaskLogsResponse, + Workspace, + WorkspaceApp, +} from "#/api/typesGenerated"; import { MockCanceledWorkspace, MockCancelingWorkspace, @@ -21,32 +39,14 @@ import { MockWorkspaceBuildStop, MockWorkspaceResource, mockApiError, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { withAuthProvider, withDashboardProvider, withProxyProvider, withToaster, withWebSocket, -} from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { - expect, - screen, - spyOn, - userEvent, - waitFor, - within, -} from "storybook/test"; -import { reactRouterParameters } from "storybook-addon-remix-react-router"; -import { API } from "#/api/api"; -import { taskLogsKey } from "#/api/queries/tasks"; -import type { - Task, - TaskLogsResponse, - Workspace, - WorkspaceApp, -} from "#/api/typesGenerated"; +} from "#/testHelpers/storybook"; import TaskPage from "./TaskPage"; const MockClaudeCodeApp: WorkspaceApp = { diff --git a/site/src/pages/TaskPage/TaskPage.tsx b/site/src/pages/TaskPage/TaskPage.tsx index 04c757a532..01d7ed1035 100644 --- a/site/src/pages/TaskPage/TaskPage.tsx +++ b/site/src/pages/TaskPage/TaskPage.tsx @@ -1,19 +1,10 @@ import isChromatic from "chromatic/isChromatic"; -import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; import { ArrowLeftIcon, PauseIcon, RotateCcwIcon, TriangleAlertIcon, } from "lucide-react"; -import { AgentLogs } from "modules/resources/AgentLogs/AgentLogs"; -import { useAgentLogs } from "modules/resources/useAgentLogs"; -import { getAllAppsWithAgent } from "modules/tasks/apps"; -import { TasksSidebar } from "modules/tasks/TasksSidebar/TasksSidebar"; -import { isPauseDisabled } from "modules/tasks/taskActions"; -import { WorkspaceErrorDialog } from "modules/workspaces/ErrorDialog/WorkspaceErrorDialog"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; -import { WorkspaceOutdatedTooltip } from "modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; import { type FC, type PropsWithChildren, @@ -54,6 +45,15 @@ import { Loader } from "#/components/Loader/Loader"; import { Margins } from "#/components/Margins/Margins"; import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Spinner } from "#/components/Spinner/Spinner"; +import { useWorkspaceBuildLogs } from "#/hooks/useWorkspaceBuildLogs"; +import { AgentLogs } from "#/modules/resources/AgentLogs/AgentLogs"; +import { useAgentLogs } from "#/modules/resources/useAgentLogs"; +import { getAllAppsWithAgent } from "#/modules/tasks/apps"; +import { TasksSidebar } from "#/modules/tasks/TasksSidebar/TasksSidebar"; +import { isPauseDisabled } from "#/modules/tasks/taskActions"; +import { WorkspaceErrorDialog } from "#/modules/workspaces/ErrorDialog/WorkspaceErrorDialog"; +import { WorkspaceBuildLogs } from "#/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { WorkspaceOutdatedTooltip } from "#/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; import { getActiveTransitionStats, WorkspaceBuildProgress, diff --git a/site/src/pages/TaskPage/TaskWildcardWarning.stories.tsx b/site/src/pages/TaskPage/TaskWildcardWarning.stories.tsx index a2378bce30..c98b2ccee3 100644 --- a/site/src/pages/TaskPage/TaskWildcardWarning.stories.tsx +++ b/site/src/pages/TaskPage/TaskWildcardWarning.stories.tsx @@ -1,6 +1,6 @@ -import { MockUserOwner } from "testHelpers/entities"; -import { withAuthProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { withAuthProvider } from "#/testHelpers/storybook"; import type { TaskApps } from "./TaskApps"; import { TaskWildcardWarning } from "./TaskWildcardWarning"; diff --git a/site/src/pages/TaskPage/TaskWildcardWarning.tsx b/site/src/pages/TaskPage/TaskWildcardWarning.tsx index 6fa67cd30e..b41c974342 100644 --- a/site/src/pages/TaskPage/TaskWildcardWarning.tsx +++ b/site/src/pages/TaskPage/TaskWildcardWarning.tsx @@ -1,8 +1,8 @@ -import { useAuthenticated } from "hooks/useAuthenticated"; import { SquareArrowOutUpRightIcon } from "lucide-react"; import { Link as RouterLink } from "react-router"; import { docs } from "utils/docs"; import { Button } from "#/components/Button/Button"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; export const TaskWildcardWarning = () => { const { permissions } = useAuthenticated(); diff --git a/site/src/pages/TasksPage/BatchDeleteConfirmation.stories.tsx b/site/src/pages/TasksPage/BatchDeleteConfirmation.stories.tsx index 4d14bf6e1d..3ef9336b7d 100644 --- a/site/src/pages/TasksPage/BatchDeleteConfirmation.stories.tsx +++ b/site/src/pages/TasksPage/BatchDeleteConfirmation.stories.tsx @@ -1,8 +1,8 @@ -import { chromatic } from "testHelpers/chromatic"; -import { MockTask } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; import { userEvent, within } from "storybook/test"; +import { chromatic } from "#/testHelpers/chromatic"; +import { MockTask } from "#/testHelpers/entities"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; const meta: Meta = { diff --git a/site/src/pages/TasksPage/TasksPage.stories.tsx b/site/src/pages/TasksPage/TasksPage.stories.tsx index 839c098b58..d83e3dff85 100644 --- a/site/src/pages/TasksPage/TasksPage.stories.tsx +++ b/site/src/pages/TasksPage/TasksPage.stories.tsx @@ -1,19 +1,3 @@ -import { - MockDisplayNameTasks, - MockInitializingTasks, - MockSystemNotificationTemplates, - MockTask, - MockTasks, - MockTemplate, - MockUserOwner, - MockWorkspaceBuildStop, - mockApiError, -} from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withProxyProvider, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockUsers } from "pages/UsersPage/storybookData/users"; import { @@ -27,6 +11,22 @@ import { } from "storybook/test"; import { API } from "#/api/api"; import { getTemplatesQueryKey } from "#/api/queries/templates"; +import { + MockDisplayNameTasks, + MockInitializingTasks, + MockSystemNotificationTemplates, + MockTask, + MockTasks, + MockTemplate, + MockUserOwner, + MockWorkspaceBuildStop, + mockApiError, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withProxyProvider, +} from "#/testHelpers/storybook"; import TasksPage from "./TasksPage"; const meta: Meta = { diff --git a/site/src/pages/TasksPage/TasksPage.tsx b/site/src/pages/TasksPage/TasksPage.tsx index ef49977fc4..671fae47ee 100644 --- a/site/src/pages/TasksPage/TasksPage.tsx +++ b/site/src/pages/TasksPage/TasksPage.tsx @@ -1,12 +1,5 @@ import { useAuthenticated } from "hooks"; -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; import { ChevronDownIcon, TrashIcon } from "lucide-react"; -import { - isTaskNotification, - notificationIsDisabled, - selectDisabledPreferences, -} from "modules/notifications/utils"; -import { TaskPrompt } from "modules/tasks/TaskPrompt/TaskPrompt"; import { type FC, useState } from "react"; import { useMutation, useQueries, useQuery, useQueryClient } from "react-query"; import { cn } from "utils/cn"; @@ -41,6 +34,13 @@ import { import { Spinner } from "#/components/Spinner/Spinner"; import { Switch } from "#/components/Switch/Switch"; import { TableToolbar } from "#/components/TableToolbar/TableToolbar"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; +import { + isTaskNotification, + notificationIsDisabled, + selectDisabledPreferences, +} from "#/modules/notifications/utils"; +import { TaskPrompt } from "#/modules/tasks/TaskPrompt/TaskPrompt"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; import { useBatchTaskActions } from "./batchActions"; import { TasksTable } from "./TasksTable"; diff --git a/site/src/pages/TasksPage/TasksTable.tsx b/site/src/pages/TasksPage/TasksTable.tsx index 0843ddd3a8..4096c24317 100644 --- a/site/src/pages/TasksPage/TasksTable.tsx +++ b/site/src/pages/TasksPage/TasksTable.tsx @@ -1,13 +1,5 @@ import { useClickableTableRow } from "hooks"; import { EllipsisVertical, RotateCcwIcon, TrashIcon } from "lucide-react"; -import { TaskActionButton } from "modules/tasks/TaskActionButton"; -import { TaskDeleteDialog } from "modules/tasks/TaskDeleteDialog/TaskDeleteDialog"; -import { TaskStatus } from "modules/tasks/TaskStatus/TaskStatus"; -import { - canPauseTask, - canResumeTask, - isPauseDisabled, -} from "modules/tasks/taskActions"; import { type FC, type ReactNode, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate } from "react-router"; @@ -40,6 +32,14 @@ import { TableLoaderSkeleton, TableRowSkeleton, } from "#/components/TableLoader/TableLoader"; +import { TaskActionButton } from "#/modules/tasks/TaskActionButton"; +import { TaskDeleteDialog } from "#/modules/tasks/TaskDeleteDialog/TaskDeleteDialog"; +import { TaskStatus } from "#/modules/tasks/TaskStatus/TaskStatus"; +import { + canPauseTask, + canResumeTask, + isPauseDisabled, +} from "#/modules/tasks/taskActions"; type TasksTableProps = { tasks: readonly Task[] | undefined; diff --git a/site/src/pages/TasksPage/UsersCombobox.tsx b/site/src/pages/TasksPage/UsersCombobox.tsx index c611429b77..89f9525a9f 100644 --- a/site/src/pages/TasksPage/UsersCombobox.tsx +++ b/site/src/pages/TasksPage/UsersCombobox.tsx @@ -1,6 +1,5 @@ import Skeleton from "@mui/material/Skeleton"; import { useAuthenticated } from "hooks"; -import { useDebouncedValue } from "hooks/debounce"; import { CheckIcon, ChevronsUpDownIcon } from "lucide-react"; import { type FC, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; @@ -22,6 +21,7 @@ import { PopoverContent, PopoverTrigger, } from "#/components/Popover/Popover"; +import { useDebouncedValue } from "#/hooks/debounce"; type UserOption = { label: string; diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.jest.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.jest.tsx index e86c2b4f56..941d14bf3e 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.jest.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.jest.tsx @@ -1,16 +1,16 @@ -import { - MockTemplate, - MockTemplateVersionParameter1 as parameter1, - MockTemplateVersionParameter2 as parameter2, -} from "testHelpers/entities"; -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { TemplateLayout } from "pages/TemplatePage/TemplateLayout"; import { API } from "#/api/api"; +import { + MockTemplate, + MockTemplateVersionParameter1 as parameter1, + MockTemplateVersionParameter2 as parameter2, +} from "#/testHelpers/entities"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; 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/TemplateEmbedPage.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx index 82e2988557..794c304163 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx @@ -1,8 +1,6 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; -import { useDebouncedFunction } from "hooks/debounce"; -import { useClipboard } from "hooks/useClipboard"; import { CheckIcon, CopyIcon } from "lucide-react"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { type FC, useEffect, useId, useState } from "react"; @@ -20,6 +18,8 @@ import { Input } from "#/components/Input/Input"; import { Label } from "#/components/Label/Label"; import { Loader } from "#/components/Loader/Loader"; import { RichParameterInput } from "#/components/RichParameterInput/RichParameterInput"; +import { useDebouncedFunction } from "#/hooks/debounce"; +import { useClipboard } from "#/hooks/useClipboard"; type ButtonValues = Record; diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx index 50ed0d1f7d..30c6e17292 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageExperimental.tsx @@ -1,11 +1,5 @@ import { useAuthenticated } from "hooks"; -import { useEffectEvent } from "hooks/hookPolyfills"; -import { useClipboard } from "hooks/useClipboard"; import { CheckIcon, CopyIcon } from "lucide-react"; -import { - Diagnostics, - DynamicParameter, -} from "modules/workspaces/DynamicParameter/DynamicParameter"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { type FC, useEffect, useMemo, useRef, useState } from "react"; import { pageTitle } from "utils/page"; @@ -24,6 +18,12 @@ import { Label } from "#/components/Label/Label"; import { RadioGroup, RadioGroupItem } from "#/components/RadioGroup/RadioGroup"; import { Separator } from "#/components/Separator/Separator"; import { Skeleton } from "#/components/Skeleton/Skeleton"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; +import { useClipboard } from "#/hooks/useClipboard"; +import { + Diagnostics, + DynamicParameter, +} from "#/modules/workspaces/DynamicParameter/DynamicParameter"; type ButtonValues = Record; diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx index 8aa1ee1233..3bb78ac4d8 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx @@ -1,12 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { screen, userEvent } from "storybook/test"; import { MockTemplate, MockTemplateVersionParameter1, MockTemplateVersionParameter2, MockTemplateVersionParameter3, MockTemplateVersionParameter4, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { screen, userEvent } from "storybook/test"; +} from "#/testHelpers/entities"; import { TemplateEmbedPageView } from "./TemplateEmbedPage"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.jest.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.jest.tsx index d042cb0e67..c8e662d79d 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.jest.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.jest.tsx @@ -1,10 +1,10 @@ import { AppProviders } from "App"; -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 { MockTemplate } from "#/testHelpers/entities"; +import { server } from "#/testHelpers/server"; import { TemplateLayout } from "../TemplateLayout"; import TemplateFilesPage from "./TemplateFilesPage"; diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx index 3a760013e1..3fb464ead7 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx @@ -1,4 +1,3 @@ -import { TemplateFiles } from "modules/templates/TemplateFiles/TemplateFiles"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import type { FC } from "react"; import { useQuery } from "react-query"; @@ -8,6 +7,7 @@ import { templateFiles, } from "#/api/queries/templates"; import { Loader } from "#/components/Loader/Loader"; +import { TemplateFiles } from "#/modules/templates/TemplateFiles/TemplateFiles"; import { getTemplatePageTitle } from "../utils"; const TemplateFilesPage: FC = () => { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx index d4ec9009c1..6d51f8eaf8 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.stories.tsx @@ -1,6 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { chromatic } from "#/testHelpers/chromatic"; +import { mockApiError } from "#/testHelpers/entities"; 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 94c5a70d9d..c86eddde93 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -4,7 +4,6 @@ import { CircleXIcon, SquareArrowOutUpRightIcon, } from "lucide-react"; -import { RequirePermission } from "modules/permissions/RequirePermission"; import { DateRangePicker as DailyPicker, type DateRangeValue, @@ -65,6 +64,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { RequirePermission } from "#/modules/permissions/RequirePermission"; import { getTemplatePageTitle } from "../utils"; import { type InsightsInterval, IntervalMenu } from "./IntervalMenu"; import { lastWeeks } from "./utils"; diff --git a/site/src/pages/TemplatePage/TemplateLayout.tsx b/site/src/pages/TemplatePage/TemplateLayout.tsx index 54a50a24bb..890057e386 100644 --- a/site/src/pages/TemplatePage/TemplateLayout.tsx +++ b/site/src/pages/TemplatePage/TemplateLayout.tsx @@ -1,9 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { - type WorkspacePermissions, - workspacePermissionChecks, -} from "modules/permissions/workspaces"; import { createContext, type FC, @@ -20,6 +15,11 @@ import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; import { Margins } from "#/components/Margins/Margins"; import { TabLink, Tabs, TabsList } from "#/components/Tabs/Tabs"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; +import { + type WorkspacePermissions, + workspacePermissionChecks, +} from "#/modules/permissions/workspaces"; import { TemplatePageHeader } from "./TemplatePageHeader"; const templatePermissions = ( diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx index 10063c21a1..482c9a56c4 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx @@ -1,6 +1,6 @@ -import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockTemplate, MockTemplateVersion } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { TemplatePageHeader } from "./TemplatePageHeader"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index 70e114a729..f5b9a6d4dd 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -7,8 +7,6 @@ import { SettingsIcon, TrashIcon, } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; -import type { WorkspacePermissions } from "modules/permissions/workspaces"; import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink, useNavigate } from "react-router"; @@ -41,6 +39,8 @@ import { } from "#/components/PageHeader/PageHeader"; import { Pill } from "#/components/Pill/Pill"; import { Stack } from "#/components/Stack/Stack"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import type { WorkspacePermissions } from "#/modules/permissions/workspaces"; import { TemplateStats } from "./TemplateStats"; import { useDeletionDialogState } from "./useDeletionDialogState"; diff --git a/site/src/pages/TemplatePage/TemplatePrebuildsPage/TemplatePrebuildsPageView.stories.tsx b/site/src/pages/TemplatePage/TemplatePrebuildsPage/TemplatePrebuildsPageView.stories.tsx index 77bde4be25..33a3b252cf 100644 --- a/site/src/pages/TemplatePage/TemplatePrebuildsPage/TemplatePrebuildsPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplatePrebuildsPage/TemplatePrebuildsPageView.stories.tsx @@ -1,8 +1,8 @@ -import { MockTemplate } from "testHelpers/entities"; -import { withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { spyOn, userEvent, within } from "storybook/test"; import { API } from "#/api/api"; +import { MockTemplate } from "#/testHelpers/entities"; +import { withToaster } from "#/testHelpers/storybook"; import { TemplatePrebuildsPageView } from "./TemplatePrebuildsPage"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx b/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx index ea9aef122e..02ce9c14f2 100644 --- a/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx +++ b/site/src/pages/TemplatePage/TemplateRedirectController.test.tsx @@ -1,7 +1,7 @@ -import * as M from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; import { waitFor } from "@testing-library/react"; import { API } from "#/api/api"; +import * as M from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; import { TemplateRedirectController } from "./TemplateRedirectController"; const renderTemplateRedirectController = (route: string) => { diff --git a/site/src/pages/TemplatePage/TemplateRedirectController.tsx b/site/src/pages/TemplatePage/TemplateRedirectController.tsx index df9e6d2e15..d6e764de51 100644 --- a/site/src/pages/TemplatePage/TemplateRedirectController.tsx +++ b/site/src/pages/TemplatePage/TemplateRedirectController.tsx @@ -1,7 +1,7 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { Navigate, Outlet, useLocation, useParams } from "react-router"; import type { Organization } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; export const TemplateRedirectController: FC = () => { const { organizations, showOrganizations } = useDashboard(); diff --git a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx index 6a88d61bc3..52e8ca57cd 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"; +} from "#/testHelpers/entities"; import { TemplateResourcesPageView } from "./TemplateResourcesPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx index 32e3e9c832..b99869c4da 100644 --- a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx @@ -1,8 +1,8 @@ -import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; import type { FC } from "react"; import { Navigate, useLocation } from "react-router"; import type { Template, WorkspaceResource } from "#/api/typesGenerated"; import { Loader } from "#/components/Loader/Loader"; +import { TemplateResourcesTable } from "#/modules/templates/TemplateResourcesTable/TemplateResourcesTable"; interface TemplateResourcesPageViewProps { resources?: WorkspaceResource[]; diff --git a/site/src/pages/TemplatePage/TemplateStats.stories.tsx b/site/src/pages/TemplatePage/TemplateStats.stories.tsx index d10c797f4c..49ef63a652 100644 --- a/site/src/pages/TemplatePage/TemplateStats.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateStats.stories.tsx @@ -1,5 +1,5 @@ -import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockTemplate, MockTemplateVersion } from "#/testHelpers/entities"; import { TemplateStats } from "./TemplateStats"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx index b5da09bfcb..f146f2ca4c 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx @@ -1,4 +1,3 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; @@ -11,6 +10,7 @@ import { templateVersionsQueryKey, } from "#/api/queries/templates"; import { ConfirmDialog } from "#/components/Dialogs/ConfirmDialog/ConfirmDialog"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { getTemplatePageTitle } from "../utils"; import { VersionsTable } from "./VersionsTable"; diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx index fe8f25ca74..10afbf82d5 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx @@ -1,5 +1,4 @@ import type { CSSObject, Interpolation, Theme } from "@emotion/react"; -import { useClickableTableRow } from "hooks/useClickableTableRow"; import type { FC } from "react"; import { useNavigate } from "react-router"; import type { TemplateVersion } from "#/api/typesGenerated"; @@ -10,6 +9,7 @@ import { Pill } from "#/components/Pill/Pill"; import { Stack } from "#/components/Stack/Stack"; import { TableCell } from "#/components/Table/Table"; import { TimelineEntry } from "#/components/Timeline/TimelineEntry"; +import { useClickableTableRow } from "#/hooks/useClickableTableRow"; interface VersionRowProps { version: TemplateVersion; diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx index 3530e9b796..fecde1b2d7 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { MockCanceledProvisionerJob, MockCancelingProvisionerJob, @@ -5,9 +7,7 @@ import { MockPendingProvisionerJob, MockRunningProvisionerJob, MockTemplateVersion, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; +} from "#/testHelpers/entities"; import { VersionsTable } from "./VersionsTable"; const meta: Meta = { diff --git a/site/src/pages/TemplatePage/useDeletionDialogState.jest.ts b/site/src/pages/TemplatePage/useDeletionDialogState.jest.ts index 7dce22ff08..7f44e83f24 100644 --- a/site/src/pages/TemplatePage/useDeletionDialogState.jest.ts +++ b/site/src/pages/TemplatePage/useDeletionDialogState.jest.ts @@ -1,8 +1,8 @@ -import { MockTemplate } from "testHelpers/entities"; import { act, renderHook, waitFor } from "@testing-library/react"; import { createElement } from "react"; import { QueryClient, QueryClientProvider } from "react-query"; import { API } from "#/api/api"; +import { MockTemplate } from "#/testHelpers/entities"; import { useDeletionDialogState } from "./useDeletionDialogState"; const wrapper = ({ children }: { children: React.ReactNode }) => diff --git a/site/src/pages/TemplateSettingsPage/Sidebar.tsx b/site/src/pages/TemplateSettingsPage/Sidebar.tsx index fbedfd5483..f02cae4e69 100644 --- a/site/src/pages/TemplateSettingsPage/Sidebar.tsx +++ b/site/src/pages/TemplateSettingsPage/Sidebar.tsx @@ -4,7 +4,6 @@ import { SettingsIcon, CodeIcon as VariablesIcon, } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; import type { Template } from "#/api/typesGenerated"; import { Avatar } from "#/components/Avatar/Avatar"; @@ -13,6 +12,7 @@ import { SidebarHeader, SidebarNavItem, } from "#/components/Sidebar/Sidebar"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; interface SidebarProps { template: Template; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.jest.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.jest.tsx index 2781765973..c62fb6977d 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.jest.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.jest.tsx @@ -1,18 +1,18 @@ -import { - MockEntitlements, - MockTemplate, - mockApiError, -} from "testHelpers/entities"; -import { - renderWithTemplateSettingsLayout, - 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 { HttpResponse, http } from "msw"; import { API, withDefaultFeatures } from "#/api/api"; import type { UpdateTemplateMeta } from "#/api/typesGenerated"; +import { + MockEntitlements, + MockTemplate, + mockApiError, +} from "#/testHelpers/entities"; +import { + renderWithTemplateSettingsLayout, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { validationSchema } from "./TemplateSettingsForm"; import TemplateSettingsPage from "./TemplateSettingsPage"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx index 333ec98fab..b899a690e6 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx @@ -1,5 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router"; @@ -9,6 +7,8 @@ import { API } from "#/api/api"; import { getErrorDetail, getErrorMessage } from "#/api/errors"; import { templateByNameKey } from "#/api/queries/templates"; import type { UpdateTemplateMeta } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateSettingsPageView } from "./TemplateSettingsPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx index a17b7cbb31..f19dc7c72f 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx @@ -1,7 +1,7 @@ -import { MockTemplate, mockApiError } from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { action } from "storybook/actions"; +import { MockTemplate, mockApiError } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { TemplateSettingsPageView } from "./TemplateSettingsPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx index ff6682a0f9..e902c7c97b 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx @@ -1,4 +1,3 @@ -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -11,6 +10,7 @@ import { templateACL, } from "#/api/queries/templates"; import { PaywallPremium } from "#/components/Paywall/PaywallPremium"; +import { useFeatureVisibility } from "#/modules/dashboard/useFeatureVisibility"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplatePermissionsPageView } from "./TemplatePermissionsPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx index 3cd295a948..013f18378f 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockTemplateACL, MockTemplateACLEmpty } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockTemplateACL, MockTemplateACLEmpty } from "#/testHelpers/entities"; 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 507bc002e9..b5ba126a89 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -1,5 +1,4 @@ import { EllipsisVertical, UserPlusIcon } from "lucide-react"; -import { getGroupSubtitle } from "modules/groups"; import { type FC, useState } from "react"; import type { Group, @@ -41,6 +40,7 @@ import { TableRow, } from "#/components/Table/Table"; import { TableLoader } from "#/components/TableLoader/TableLoader"; +import { getGroupSubtitle } from "#/modules/groups"; import { UserOrGroupAutocomplete, type UserOrGroupAutocompleteValue, diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx index 04a0944d52..b576d2ba14 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx @@ -1,5 +1,4 @@ import { Check } from "lucide-react"; -import { getGroupSubtitle, isGroup } from "modules/groups"; import { type FC, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { prepareQuery } from "utils/filters"; @@ -7,6 +6,7 @@ import { templaceACLAvailable } from "#/api/queries/templates"; import type { Group, ReducedUser } from "#/api/typesGenerated"; import { Autocomplete } from "#/components/Autocomplete/Autocomplete"; import { AvatarData } from "#/components/Avatar/AvatarData"; +import { getGroupSubtitle, isGroup } from "#/modules/groups"; export type UserOrGroupAutocompleteValue = ReducedUser | Group | null; type AutocompleteOption = Exclude; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx index e4a969a343..21837080e6 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx @@ -1,14 +1,14 @@ -import { - MockEntitlementsWithScheduling, - MockTemplate, -} from "testHelpers/entities"; -import { - renderWithTemplateSettingsLayout, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; import { screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { API } from "#/api/api"; +import { + MockEntitlementsWithScheduling, + MockTemplate, +} from "#/testHelpers/entities"; +import { + renderWithTemplateSettingsLayout, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; import { getValidationSchema, type TemplateScheduleFormValues, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx index 6ecea9b668..495fa41331 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx @@ -1,5 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router"; @@ -8,6 +6,8 @@ import { pageTitle } from "utils/page"; import { API } from "#/api/api"; import { templateByNameKey } from "#/api/queries/templates"; import type { UpdateTemplateMeta } from "#/api/typesGenerated"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateSchedulePageView } from "./TemplateSchedulePageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx index 44f3f0e248..5ba34480bf 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx @@ -1,8 +1,8 @@ -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 { expect, fn, userEvent, waitFor, within } from "storybook/test"; +import { MockTemplate } from "#/testHelpers/entities"; import { TemplateSchedulePageView } from "./TemplateSchedulePageView"; const queryClient = new QueryClient({ diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.jest.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.jest.tsx index a3a6c20a95..4bd85ece8a 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.jest.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.jest.tsx @@ -1,18 +1,18 @@ +import { screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { toast } from "sonner"; +import { API } from "#/api/api"; import { MockTemplate, MockTemplateVersion, MockTemplateVersion2, MockTemplateVersionVariable1, MockTemplateVersionVariable2, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { screen, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { toast } from "sonner"; -import { API } from "#/api/api"; +} from "#/testHelpers/renderHelpers"; import TemplateVariablesPage from "./TemplateVariablesPage"; // The createAndBuildTemplateVersion mutation polls getTemplateVersion behind diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx index 9aee7ece91..9544e618e2 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx @@ -1,4 +1,3 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, useCallback } from "react"; import { keepPreviousData, @@ -22,6 +21,7 @@ import type { } from "#/api/typesGenerated"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateVariablesPageView } from "./TemplateVariablesPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx index b8f6e23090..7037c60bdf 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { MockTemplateVersion, MockTemplateVersionVariable1, @@ -6,9 +8,7 @@ import { MockTemplateVersionVariable4, MockTemplateVersionVariable5, mockApiError, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; +} from "#/testHelpers/entities"; import { TemplateVariablesPageView } from "./TemplateVariablesPageView"; const meta: Meta = { diff --git a/site/src/pages/TemplateVersionEditorPage/MonacoEditor.tsx b/site/src/pages/TemplateVersionEditorPage/MonacoEditor.tsx index 8608c9e8e8..90106ab01e 100644 --- a/site/src/pages/TemplateVersionEditorPage/MonacoEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/MonacoEditor.tsx @@ -2,7 +2,7 @@ import { useTheme } from "@emotion/react"; import Editor, { loader } from "@monaco-editor/react"; import * as monaco from "monaco-editor"; import { type FC, useEffect } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +import { MONOSPACE_FONT_FAMILY } from "#/theme/constants"; loader.config({ monaco }); diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx index 95698dfb78..c003fa6feb 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 b4d830bd2f..8d8616a13a 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx @@ -1,6 +1,5 @@ import Link from "@mui/material/Link"; import useTheme from "@mui/system/useTheme"; -import { ProvisionerTagsField } from "modules/provisioners/ProvisionerTagsField"; import type { FC } from "react"; import { docs } from "utils/docs"; import type { ProvisionerDaemon } from "#/api/typesGenerated"; @@ -12,6 +11,7 @@ import { PopoverContent, PopoverTrigger, } from "#/components/Popover/Popover"; +import { ProvisionerTagsField } from "#/modules/provisioners/ProvisionerTagsField"; interface ProvisionerTagsPopoverProps { tags: ProvisionerDaemon["tags"]; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx index 77082b71c5..a4f2f15ee6 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.stories.tsx @@ -1,4 +1,6 @@ -import { chromatic } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; +import { chromatic } from "#/testHelpers/chromatic"; import { MockFailedProvisionerJob, MockRunningProvisionerJob, @@ -13,10 +15,8 @@ import { MockWorkspaceResourceMultipleAgents, MockWorkspaceResourceSensitive, MockWorkspaceVolumeResource, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { TemplateVersionEditor } from "./TemplateVersionEditor"; const meta: Meta = { diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index 261f173f40..676e14b15c 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -7,17 +7,6 @@ import { TriangleAlertIcon, XIcon, } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; -import { - AlertVariant, - ProvisionerAlert, -} from "modules/provisioners/ProvisionerAlert"; -import { ProvisionerStatusAlert } from "modules/provisioners/ProvisionerStatusAlert"; -import { WildcardHostnameWarning } from "modules/resources/WildcardHostnameWarning"; -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"; import { type FC, useCallback, useEffect, useRef, useState } from "react"; import { @@ -63,6 +52,17 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import { + AlertVariant, + ProvisionerAlert, +} from "#/modules/provisioners/ProvisionerAlert"; +import { ProvisionerStatusAlert } from "#/modules/provisioners/ProvisionerStatusAlert"; +import { WildcardHostnameWarning } from "#/modules/resources/WildcardHostnameWarning"; +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 { CreateFileDialog, DeleteFileDialog, diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index 57604e8fd7..4d18068dea 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -1,17 +1,4 @@ import { AppProviders } from "App"; -import { - MockTemplate, - MockTemplateVersion, - MockTemplateVersionVariable1, - MockTemplateVersionVariable2, - MockWorkspaceBuildLogs, -} from "testHelpers/entities"; -import { - createTestQueryClient, - renderWithAuth, - 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 { RequireAuth } from "contexts/auth/RequireAuth"; @@ -23,6 +10,19 @@ import type { FileTree } from "utils/filetree"; import * as apiModule from "#/api/api"; import { templateVersionVariablesKey } from "#/api/queries/templates"; import type { TemplateVersion } from "#/api/typesGenerated"; +import { + MockTemplate, + MockTemplateVersion, + MockTemplateVersionVariable1, + MockTemplateVersionVariable2, + MockWorkspaceBuildLogs, +} from "#/testHelpers/entities"; +import { + createTestQueryClient, + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import type { MonacoEditorProps } from "./MonacoEditor"; import { Language } from "./PublishTemplateVersionDialog"; import TemplateVersionEditorPage, { diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index 53dbfde008..487bd697cf 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -1,5 +1,3 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; -import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; import { type FC, useEffect, useState } from "react"; import { keepPreviousData, @@ -29,6 +27,8 @@ import type { TemplateVersion, } from "#/api/typesGenerated"; import { Loader } from "#/components/Loader/Loader"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import { useWatchVersionLogs } from "#/modules/templates/useWatchVersionLogs"; import { TemplateVersionEditor } from "./TemplateVersionEditor"; const TemplateVersionEditorPage: FC = () => { diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx index eeb54da422..d73d233216 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx @@ -1,9 +1,9 @@ import { CheckIcon, CircleAlertIcon, HourglassIcon } from "lucide-react"; import type { FC, ReactNode } from "react"; -import type { ThemeRole } from "theme/roles"; import { getPendingStatusLabel } from "utils/provisionerJob"; import type { TemplateVersion } from "#/api/typesGenerated"; import { Pill, PillSpinner } from "#/components/Pill/Pill"; +import type { ThemeRole } from "#/theme/roles"; interface TemplateVersionStatusBadgeProps { version: TemplateVersion; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.jest.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.jest.tsx index a737d8c785..e9bd91d1e4 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.jest.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.jest.tsx @@ -1,10 +1,10 @@ -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 { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; import TemplateVersionPage from "./TemplateVersionPage"; const TEMPLATE_NAME = "coder-ts"; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx index a0b110287c..e102c06e55 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, useMemo } from "react"; import { useQuery } from "react-query"; import { useParams } from "react-router"; @@ -10,6 +9,7 @@ import { templateVersion, templateVersionByName, } from "#/api/queries/templates"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; import { TemplateVersionPageView } from "./TemplateVersionPageView"; const TemplateVersionPage: FC = () => { diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index 94d6cd593e..90174279d4 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -1,11 +1,11 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockTemplate, MockTemplateVersion, MockTemplateVersionWithMarkdownMessage, mockApiError, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { TemplateVersionPageView, type TemplateVersionPageViewProps, diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index e6cd667dd9..7edce8c955 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,7 +1,4 @@ import { EditIcon, ExternalLinkIcon, PlusIcon } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; -import { TemplateFiles } from "modules/templates/TemplateFiles/TemplateFiles"; -import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import type { FC } from "react"; import { Link as RouterLink } from "react-router"; import { createDayString } from "utils/createDayString"; @@ -18,6 +15,9 @@ import { } from "#/components/PageHeader/PageHeader"; import { Stack } from "#/components/Stack/Stack"; import { Stats, StatsItem } from "#/components/Stats/Stats"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import { TemplateFiles } from "#/modules/templates/TemplateFiles/TemplateFiles"; +import { TemplateUpdateMessage } from "#/modules/templates/TemplateUpdateMessage"; export interface TemplateVersionPageViewProps { organizationName: string; diff --git a/site/src/pages/TemplatesPage/EmptyTemplates.tsx b/site/src/pages/TemplatesPage/EmptyTemplates.tsx index e36da40daf..fc4e44b544 100644 --- a/site/src/pages/TemplatesPage/EmptyTemplates.tsx +++ b/site/src/pages/TemplatesPage/EmptyTemplates.tsx @@ -1,5 +1,4 @@ import Link from "@mui/material/Link"; -import { TemplateExampleCard } from "modules/templates/TemplateExampleCard/TemplateExampleCard"; import type { FC } from "react"; import { Link as RouterLink } from "react-router"; import { docs } from "utils/docs"; @@ -8,6 +7,7 @@ import { Button } from "#/components/Button/Button"; import { CodeExample } from "#/components/CodeExample/CodeExample"; import { Stack } from "#/components/Stack/Stack"; import { TableEmpty } from "#/components/TableEmpty/TableEmpty"; +import { TemplateExampleCard } from "#/modules/templates/TemplateExampleCard/TemplateExampleCard"; // Those are from https://github.com/coder/coder/tree/main/examples/templates const featuredExampleIds = [ diff --git a/site/src/pages/TemplatesPage/TemplatesFilter.tsx b/site/src/pages/TemplatesPage/TemplatesFilter.tsx index 93c30ab512..31301acbff 100644 --- a/site/src/pages/TemplatesPage/TemplatesFilter.tsx +++ b/site/src/pages/TemplatesPage/TemplatesFilter.tsx @@ -1,4 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { API } from "#/api/api"; import type { Organization } from "#/api/typesGenerated"; @@ -13,6 +12,7 @@ import { SelectFilter, type SelectFilterOption, } from "#/components/Filter/SelectFilter"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { DEFAULT_USER_FILTER_WIDTH, type UserFilterMenu, diff --git a/site/src/pages/TemplatesPage/TemplatesPage.tsx b/site/src/pages/TemplatesPage/TemplatesPage.tsx index 0829380c74..880316b4aa 100644 --- a/site/src/pages/TemplatesPage/TemplatesPage.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPage.tsx @@ -1,5 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { useQuery } from "react-query"; import { useSearchParams } from "react-router"; @@ -8,6 +7,7 @@ import { workspacePermissionsByOrganization } from "#/api/queries/organizations" import { templateExamples, templates } from "#/api/queries/templates"; import { type UseFilterResult, useFilter } from "#/components/Filter/Filter"; import { useUserFilterMenu } from "#/components/Filter/UserFilter"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { TemplatesPageView } from "./TemplatesPageView"; const TemplatesPage: FC = () => { diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx index 7e49edc287..a2c1ee8201 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx @@ -1,17 +1,17 @@ -import { chromaticWithTablet } from "testHelpers/chromatic"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { + getDefaultFilterProps, + MockMenu, +} from "#/components/Filter/storyHelpers"; +import { chromaticWithTablet } from "#/testHelpers/chromatic"; import { MockTemplate, MockTemplateExample, MockTemplateExample2, MockUserOwner, mockApiError, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { - getDefaultFilterProps, - MockMenu, -} from "#/components/Filter/storyHelpers"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import type { TemplateFilterState } from "./TemplatesPage"; import { TemplatesPageView } from "./TemplatesPageView"; diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index 9cb5f8b087..84e65b7916 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -1,9 +1,6 @@ import type { Interpolation, Theme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; -import { useClickableTableRow } from "hooks/useClickableTableRow"; import { ArrowRightIcon, PlusIcon } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; -import type { WorkspacePermissions } from "modules/permissions/workspaces"; import type { FC } from "react"; import { Link as RouterLink, useNavigate } from "react-router"; import { createDayString } from "utils/createDayString"; @@ -48,6 +45,9 @@ import { TableLoaderSkeleton, TableRowSkeleton, } from "#/components/TableLoader/TableLoader"; +import { useClickableTableRow } from "#/hooks/useClickableTableRow"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import type { WorkspacePermissions } from "#/modules/permissions/workspaces"; import { EmptyTemplates } from "./EmptyTemplates"; import { TemplatesFilter } from "./TemplatesFilter"; import type { TemplateFilterState } from "./TemplatesPage"; diff --git a/site/src/pages/TerminalPage/TerminalPage.jest.tsx b/site/src/pages/TerminalPage/TerminalPage.jest.tsx index 34c4beb420..ecded5bdd0 100644 --- a/site/src/pages/TerminalPage/TerminalPage.jest.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.jest.tsx @@ -1,16 +1,16 @@ import "jest-canvas-mock"; -import { - MockUserOwner, - MockWorkspace, - MockWorkspaceAgent, -} 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 WS from "jest-websocket-mock"; import { HttpResponse, http } from "msw"; import { API } from "#/api/api"; +import { + MockUserOwner, + MockWorkspace, + MockWorkspaceAgent, +} from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import TerminalPage, { Language } from "./TerminalPage"; const renderTerminal = async ( diff --git a/site/src/pages/TerminalPage/TerminalPage.stories.tsx b/site/src/pages/TerminalPage/TerminalPage.stories.tsx index dfd8598c84..b730003325 100644 --- a/site/src/pages/TerminalPage/TerminalPage.stories.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.stories.tsx @@ -1,3 +1,14 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { AuthProvider } from "contexts/auth/AuthProvider"; +import { RequireAuth } from "contexts/auth/RequireAuth"; +import { + reactRouterOutlet, + reactRouterParameters, +} from "storybook-addon-remix-react-router"; +import { getAuthorizationKey } from "#/api/queries/authCheck"; +import { workspaceByOwnerAndNameKey } from "#/api/queries/workspaces"; +import type { Workspace, WorkspaceAgentLifecycle } from "#/api/typesGenerated"; +import { permissionChecks } from "#/modules/permissions"; import { MockAppearanceConfig, MockAuthMethodsAll, @@ -10,19 +21,8 @@ import { MockUserOwner, MockWorkspace, MockWorkspaceAgent, -} from "testHelpers/entities"; -import { withWebSocket } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -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 { getAuthorizationKey } from "#/api/queries/authCheck"; -import { workspaceByOwnerAndNameKey } from "#/api/queries/workspaces"; -import type { Workspace, WorkspaceAgentLifecycle } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withWebSocket } from "#/testHelpers/storybook"; import TerminalPage from "./TerminalPage"; const createWorkspaceWithAgent = (lifecycle: WorkspaceAgentLifecycle) => { diff --git a/site/src/pages/TerminalPage/TerminalPage.tsx b/site/src/pages/TerminalPage/TerminalPage.tsx index 529254b7d7..53cd05454b 100644 --- a/site/src/pages/TerminalPage/TerminalPage.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.tsx @@ -8,13 +8,9 @@ import { WebglAddon } from "@xterm/addon-webgl"; import { Terminal } from "@xterm/xterm"; import { useProxy } from "contexts/ProxyContext"; import { ThemeOverride } from "contexts/ThemeProvider"; -import { useClipboard } from "hooks/useClipboard"; -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useCallback, useEffect, useRef, useState } from "react"; import { useQuery } from "react-query"; import { useNavigate, useParams, useSearchParams } from "react-router"; -import themes from "theme"; -import { DEFAULT_TERMINAL_FONT, terminalFonts } from "theme/constants"; import { pageTitle } from "utils/page"; import { openMaybePortForwardedURL } from "utils/portForward"; import { terminalWebsocketUrl } from "utils/terminal"; @@ -33,6 +29,10 @@ import { workspaceByOwnerAndName, workspaceUsage, } from "#/api/queries/workspaces"; +import { useClipboard } from "#/hooks/useClipboard"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; +import themes from "#/theme"; +import { DEFAULT_TERMINAL_FONT, terminalFonts } from "#/theme/constants"; import { TerminalAlerts } from "./TerminalAlerts"; import type { ConnectionStatus } from "./types"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx index 572bfbbc71..c58b630568 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockApiError } from "#/testHelpers/entities"; 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 6af0dabc13..88727aa143 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx @@ -1,7 +1,7 @@ -import { MockUserMember } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import type { UpdateUserProfileRequest } from "#/api/typesGenerated"; +import { MockUserMember } from "#/testHelpers/entities"; +import { render } from "#/testHelpers/renderHelpers"; 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 7c9092c3e4..31b735d3fe 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx @@ -1,7 +1,7 @@ -import { mockApiError } from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; import { fireEvent, screen, waitFor } from "@testing-library/react"; import { API } from "#/api/api"; +import { mockApiError } from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; import * as AccountForm from "./AccountForm"; import AccountPage from "./AccountPage"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx index a5688ae2f8..5c29426286 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx @@ -1,10 +1,10 @@ import { useAuthContext } from "contexts/auth/AuthProvider"; import { useAuthenticated } from "hooks"; -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { useQuery } from "react-query"; import { groupsForUser } from "#/api/queries/groups"; import { Stack } from "#/components/Stack/Stack"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { Section } from "../Section"; import { AccountForm } from "./AccountForm"; import { AccountUserGroups } from "./AccountUserGroups"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx index 443df4bf0a..0277bfd8bd 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"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { AccountUserGroups } from "./AccountUserGroups"; const MockGroup2 = { diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx index d57347d0db..e36b704b17 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx @@ -1,10 +1,10 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { isApiError } from "#/api/errors"; import type { Group } from "#/api/typesGenerated"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { AvatarCard } from "#/components/Avatar/AvatarCard"; import { Loader } from "#/components/Loader/Loader"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { Section } from "../Section"; type AccountGroupsProps = { diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx index fc96e75a85..0b9b3ef13a 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx @@ -1,10 +1,4 @@ import type { FC } from "react"; -import { DEFAULT_THEME } from "theme"; -import { - DEFAULT_TERMINAL_FONT, - terminalFontLabels, - terminalFonts, -} from "theme/constants"; import { cn } from "utils/cn"; import { type TerminalFontName, @@ -16,6 +10,12 @@ import { PreviewBadge } from "#/components/Badges/Badges"; import { Label } from "#/components/Label/Label"; import { RadioGroup, RadioGroupItem } from "#/components/RadioGroup/RadioGroup"; import { Spinner } from "#/components/Spinner/Spinner"; +import { DEFAULT_THEME } from "#/theme"; +import { + DEFAULT_TERMINAL_FONT, + terminalFontLabels, + terminalFonts, +} from "#/theme/constants"; import { Section } from "../Section"; // Display Geist Mono (the default monospace font) first, then the rest diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx index 44b4a8c6a2..c6e1d4fb13 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 4f9a32ceb0..e7288d4c09 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx @@ -1,4 +1,3 @@ -import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { @@ -7,6 +6,7 @@ import { } from "#/api/queries/users"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; +import { useEmbeddedMetadata } from "#/hooks/useEmbeddedMetadata"; import { AppearanceForm } from "./AppearanceForm"; const AppearancePage: FC = () => { diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx index b94d51e843..ad318c604b 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"; +} from "#/testHelpers/entities"; import { ExternalAuthPageView } from "./ExternalAuthPageView"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx index 396b53271a..c684346068 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx @@ -1,5 +1,4 @@ import { useTheme } from "@emotion/react"; -import type { ExternalAuthPollingState } from "hooks/useExternalAuth"; import { EllipsisVertical, RefreshCcwIcon } from "lucide-react"; import { type FC, useCallback, useEffect, useState } from "react"; import { useQuery } from "react-query"; @@ -35,6 +34,7 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import type { ExternalAuthPollingState } from "#/hooks/useExternalAuth"; type ExternalAuthPageViewProps = { isLoading: boolean; diff --git a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx index a965e8ffc6..e6de0ca7aa 100644 --- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx +++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx @@ -1,15 +1,3 @@ -import { - MockCustomNotificationTemplates, - MockNotificationMethodsResponse, - MockNotificationPreferences, - MockSystemNotificationTemplates, - MockUserOwner, -} from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withToaster, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import { reactRouterParameters } from "storybook-addon-remix-react-router"; @@ -20,6 +8,18 @@ import { systemNotificationTemplatesKey, userNotificationPreferencesKey, } from "#/api/queries/notifications"; +import { + MockCustomNotificationTemplates, + MockNotificationMethodsResponse, + MockNotificationPreferences, + MockSystemNotificationTemplates, + MockUserOwner, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withToaster, +} from "#/testHelpers/storybook"; 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 cd8f947a85..e43c31749d 100644 --- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx +++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx @@ -1,13 +1,4 @@ import { useAuthenticated } from "hooks"; -import { - castNotificationMethod, - isTaskNotification, - methodIcons, - methodLabels, - notificationIsDisabled, - selectDisabledPreferences, -} from "modules/notifications/utils"; -import type { Permissions } from "modules/permissions"; import { type FC, Fragment, useEffect } from "react"; import { useMutation, useQueries, useQuery, useQueryClient } from "react-query"; import { useSearchParams } from "react-router"; @@ -35,6 +26,15 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { + castNotificationMethod, + isTaskNotification, + methodIcons, + methodLabels, + notificationIsDisabled, + selectDisabledPreferences, +} from "#/modules/notifications/utils"; +import type { Permissions } from "#/modules/permissions"; import { Section } from "../Section"; const NotificationsPage: FC = () => { diff --git a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx index 257ca13851..a85508f8ac 100644 --- a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockOAuth2ProviderApps } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockOAuth2ProviderApps } from "#/testHelpers/entities"; 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 eac0c61f94..bcf4c8fc60 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx @@ -1,7 +1,7 @@ -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 { MockGitSSHKey, mockApiError } from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; 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 a46732ee96..bc96f4b348 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockApiError } from "#/testHelpers/entities"; 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 ca53d69b59..85a2aea415 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 06954d0b19..eda3420f22 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx @@ -1,10 +1,10 @@ -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 { HttpResponse, http } from "msw"; import type { UpdateUserQuietHoursScheduleRequest } from "#/api/typesGenerated"; +import { MockUserOwner } from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; 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 be8a0ccff0..251dd9aa17 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { mockApiError } from "#/testHelpers/entities"; import { SecurityForm } from "./SecurityForm"; const meta: Meta = { diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.jest.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.jest.tsx index 269af7592b..aa72671725 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.jest.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.jest.tsx @@ -1,12 +1,12 @@ -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 { MockAuthMethodsAll, mockApiError } from "#/testHelpers/entities"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; 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 9319409018..437feb9ae4 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx @@ -1,11 +1,11 @@ -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 { + MockAuthMethodsAll, + MockAuthMethodsPasswordOnly, +} from "#/testHelpers/entities"; import { SecurityPageView } from "./SecurityPage"; const defaultArgs: ComponentProps = { diff --git a/site/src/pages/UserSettingsPage/Sidebar.tsx b/site/src/pages/UserSettingsPage/Sidebar.tsx index 2cbe55f047..7fb448ce3c 100644 --- a/site/src/pages/UserSettingsPage/Sidebar.tsx +++ b/site/src/pages/UserSettingsPage/Sidebar.tsx @@ -8,7 +8,6 @@ import { ShieldIcon, UserIcon, } from "lucide-react"; -import { useDashboard } from "modules/dashboard/useDashboard"; import type { FC } from "react"; import { isDevBuild } from "utils/buildInfo"; import type { User } from "#/api/typesGenerated"; @@ -19,6 +18,7 @@ import { SidebarHeader, SidebarNavItem, } from "#/components/Sidebar/Sidebar"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; interface SidebarProps { user: User; diff --git a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx index 56ba22c7be..dac00efc02 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/TokensPageView.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx index 51d4e30e24..c6bc7d801a 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx @@ -1,5 +1,5 @@ -import { MockTokens, mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockTokens, mockApiError } from "#/testHelpers/entities"; 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 e84f50b922..132dcb42f0 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.stories.tsx @@ -1,11 +1,11 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockHealthyWildWorkspaceProxy, MockPrimaryWorkspaceProxy, MockProxyLatencies, MockWorkspaceProxies, mockApiError, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; 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 2525cd2bfd..6b34bcd553 100644 --- a/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx +++ b/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx @@ -1,5 +1,5 @@ -import { MockUserOwner } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockUserOwner } from "#/testHelpers/entities"; import { ResetPasswordDialog } from "./ResetPasswordDialog"; const meta: Meta = { diff --git a/site/src/pages/UsersPage/UsersPage.stories.tsx b/site/src/pages/UsersPage/UsersPage.stories.tsx index a90528da19..4423d00341 100644 --- a/site/src/pages/UsersPage/UsersPage.stories.tsx +++ b/site/src/pages/UsersPage/UsersPage.stories.tsx @@ -1,9 +1,3 @@ -import { MockAuthMethodsAll, MockUserOwner } from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withToaster, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockGroups } from "pages/UsersPage/storybookData/groups"; import { MockRoles } from "pages/UsersPage/storybookData/roles"; @@ -15,6 +9,12 @@ import { groupsQueryKey } from "#/api/queries/groups"; import { rolesQueryKey } from "#/api/queries/roles"; import { authMethodsQueryKey, usersKey } from "#/api/queries/users"; import type { User } from "#/api/typesGenerated"; +import { MockAuthMethodsAll, MockUserOwner } from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withToaster, +} from "#/testHelpers/storybook"; import UsersPage from "./UsersPage"; const parameters = { diff --git a/site/src/pages/UsersPage/UsersPage.tsx b/site/src/pages/UsersPage/UsersPage.tsx index b59da844da..f79374e7fc 100644 --- a/site/src/pages/UsersPage/UsersPage.tsx +++ b/site/src/pages/UsersPage/UsersPage.tsx @@ -1,7 +1,3 @@ -import { useAuthenticated } from "hooks"; -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; -import { shouldShowAISeatColumn } from "modules/dashboard/entitlements"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { type FC, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useSearchParams } from "react-router"; @@ -27,6 +23,10 @@ import { DeleteDialog } from "#/components/Dialogs/DeleteDialog/DeleteDialog"; import { useFilter } from "#/components/Filter/Filter"; import { useStatusFilterMenu } from "#/components/Filter/UsersFilter"; import { isNonInitialPage } from "#/components/PaginationWidget/utils"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; +import { usePaginatedQuery } from "#/hooks/usePaginatedQuery"; +import { shouldShowAISeatColumn } from "#/modules/dashboard/entitlements"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; import { ResetPasswordDialog } from "./ResetPasswordDialog"; import { UsersPageView } from "./UsersPageView"; diff --git a/site/src/pages/UsersPage/UsersPageView.stories.tsx b/site/src/pages/UsersPage/UsersPageView.stories.tsx index 034e64af9c..4e0adef96c 100644 --- a/site/src/pages/UsersPage/UsersPageView.stories.tsx +++ b/site/src/pages/UsersPage/UsersPageView.stories.tsx @@ -1,18 +1,18 @@ -import { - MockAssignableSiteRoles, - MockAuthMethodsPasswordOnly, - MockUserMember, - MockUserOwner, - mockApiError, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import type { ComponentProps } from "react"; import { getDefaultFilterProps, MockMenu, } from "#/components/Filter/storyHelpers"; import { mockSuccessResult } from "#/components/PaginationWidget/PaginationContainer.mocks"; +import type { UsePaginatedQueryResult } from "#/hooks/usePaginatedQuery"; +import { + MockAssignableSiteRoles, + MockAuthMethodsPasswordOnly, + MockUserMember, + MockUserOwner, + mockApiError, +} from "#/testHelpers/entities"; import { UsersPageView } from "./UsersPageView"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx index a9fccc50e5..1d1536ca4c 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; import { MockAssignableSiteRoles, MockAuditorRole, @@ -8,8 +9,7 @@ import { MockUserAdminRole, MockUserMember, MockUserOwner, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; +} from "#/testHelpers/entities"; import { UsersTable } from "./UsersTable"; const mockGroupsByUserId = new Map([ diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.jest.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.jest.tsx index c036d0fdb3..bfe77c3c33 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.jest.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.jest.tsx @@ -1,13 +1,13 @@ +import { screen, waitFor } from "@testing-library/react"; +import WS from "jest-websocket-mock"; +import { API } from "#/api/api"; import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceAgentLogs, MockWorkspaceBuild, -} from "testHelpers/entities"; -import { renderWithAuth } from "testHelpers/renderHelpers"; -import { screen, waitFor } from "@testing-library/react"; -import WS from "jest-websocket-mock"; -import { API } from "#/api/api"; +} from "#/testHelpers/entities"; +import { renderWithAuth } from "#/testHelpers/renderHelpers"; import WorkspaceBuildPage from "./WorkspaceBuildPage"; import { LOGS_TAB_KEY } from "./WorkspaceBuildPageView"; diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx index d2b0757802..d2560f89b2 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx @@ -1,11 +1,11 @@ import dayjs from "dayjs"; -import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; import type { FC } from "react"; import { keepPreviousData, useQuery } from "react-query"; import { useParams } from "react-router"; import { pageTitle } from "utils/page"; import { API } from "#/api/api"; import { workspaceBuildByNumber } from "#/api/queries/workspaceBuilds"; +import { useWorkspaceBuildLogs } from "#/hooks/useWorkspaceBuildLogs"; import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"; const WorkspaceBuildPage: FC = () => { diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx index a026f9a5b3..9ca87dbfe1 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx @@ -1,10 +1,10 @@ -import { chromatic } from "testHelpers/chromatic"; +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"; +} from "#/testHelpers/entities"; import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"; const defaultBuilds = Array.from({ length: 15 }, (_, i) => ({ diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx index b4856be4e5..8b76c15a74 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx @@ -1,14 +1,4 @@ -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; import { ExternalLinkIcon } from "lucide-react"; -import { BuildAvatar } from "modules/builds/BuildAvatar/BuildAvatar"; -import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; -import { AgentLogs } from "modules/resources/AgentLogs/AgentLogs"; -import { useAgentLogs } from "modules/resources/useAgentLogs"; -import { - WorkspaceBuildData, - WorkspaceBuildDataSkeleton, -} from "modules/workspaces/WorkspaceBuildData/WorkspaceBuildData"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { type FC, type HTMLProps, @@ -37,6 +27,16 @@ import { import { Stack } from "#/components/Stack/Stack"; import { Stats, StatsItem } from "#/components/Stats/Stats"; import { TAB_PADDING_X, TabLink, Tabs, TabsList } from "#/components/Tabs/Tabs"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; +import { BuildAvatar } from "#/modules/builds/BuildAvatar/BuildAvatar"; +import { DashboardFullPage } from "#/modules/dashboard/DashboardLayout"; +import { AgentLogs } from "#/modules/resources/AgentLogs/AgentLogs"; +import { useAgentLogs } from "#/modules/resources/useAgentLogs"; +import { + WorkspaceBuildData, + WorkspaceBuildDataSkeleton, +} from "#/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData"; +import { WorkspaceBuildLogs } from "#/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { Sidebar, SidebarCaption, SidebarItem } from "./Sidebar"; export const LOGS_TAB_KEY = "logs"; diff --git a/site/src/pages/WorkspacePage/AppStatuses.stories.tsx b/site/src/pages/WorkspacePage/AppStatuses.stories.tsx index da061ca968..660e7cbd2c 100644 --- a/site/src/pages/WorkspacePage/AppStatuses.stories.tsx +++ b/site/src/pages/WorkspacePage/AppStatuses.stories.tsx @@ -1,3 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { userEvent, within } from "storybook/test"; +import type { WorkspaceAppStatus } from "#/api/typesGenerated"; import { createTimestamp, MockTaskWorkspace, @@ -6,11 +9,8 @@ import { MockWorkspaceApp, MockWorkspaceAppStatus, MockWorkspaceAppStatuses, -} from "testHelpers/entities"; -import { withProxyProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { userEvent, within } from "storybook/test"; -import type { WorkspaceAppStatus } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withProxyProvider } from "#/testHelpers/storybook"; import { AppStatuses } from "./AppStatuses"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/AppStatuses.tsx b/site/src/pages/WorkspacePage/AppStatuses.tsx index 4756e01954..fb500094d8 100644 --- a/site/src/pages/WorkspacePage/AppStatuses.tsx +++ b/site/src/pages/WorkspacePage/AppStatuses.tsx @@ -1,7 +1,5 @@ import capitalize from "lodash/capitalize"; import { ExternalLinkIcon, FileIcon, LayoutGridIcon } from "lucide-react"; -import { AppStatusStateIcon } from "modules/apps/AppStatusStateIcon"; -import { useAppLink } from "modules/apps/useAppLink"; import { type FC, useState } from "react"; import { timeFrom } from "utils/time"; import { truncateURI } from "utils/uri"; @@ -20,6 +18,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { AppStatusStateIcon } from "#/modules/apps/AppStatusStateIcon"; +import { useAppLink } from "#/modules/apps/useAppLink"; interface AppStatusesProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/HistorySidebar.tsx b/site/src/pages/WorkspacePage/HistorySidebar.tsx index d3a5f54b37..6e840cf552 100644 --- a/site/src/pages/WorkspacePage/HistorySidebar.tsx +++ b/site/src/pages/WorkspacePage/HistorySidebar.tsx @@ -1,8 +1,4 @@ import { ArrowDownIcon } from "lucide-react"; -import { - WorkspaceBuildData, - WorkspaceBuildDataSkeleton, -} from "modules/workspaces/WorkspaceBuildData/WorkspaceBuildData"; import type { FC } from "react"; import { useInfiniteQuery } from "react-query"; import { infiniteWorkspaceBuilds } from "#/api/queries/workspaceBuilds"; @@ -16,6 +12,10 @@ import { } from "#/components/FullPageLayout/Sidebar"; import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Spinner } from "#/components/Spinner/Spinner"; +import { + WorkspaceBuildData, + WorkspaceBuildDataSkeleton, +} from "#/modules/workspaces/WorkspaceBuildData/WorkspaceBuildData"; interface HistorySidebarProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx index 00bc197ed1..2ac4c616f2 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceResource } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; +import { MockWorkspaceResource } from "#/testHelpers/entities"; import { ResourceMetadata } from "./ResourceMetadata"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.tsx index dc510cf5d3..0223360523 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.tsx @@ -1,9 +1,9 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { SensitiveValue } from "modules/resources/SensitiveValue"; import { Children, type FC, type HTMLAttributes } from "react"; import type { WorkspaceResource } from "#/api/typesGenerated"; import { CopyableValue } from "#/components/CopyableValue/CopyableValue"; import { MemoizedInlineMarkdown } from "#/components/Markdown/Markdown"; +import { SensitiveValue } from "#/modules/resources/SensitiveValue"; type ResourceMetadataProps = Omit, "resource"> & { resource: WorkspaceResource; diff --git a/site/src/pages/WorkspacePage/Workspace.stories.tsx b/site/src/pages/WorkspacePage/Workspace.stories.tsx index be6f181fe2..fbf4c17c4a 100644 --- a/site/src/pages/WorkspacePage/Workspace.stories.tsx +++ b/site/src/pages/WorkspacePage/Workspace.stories.tsx @@ -1,12 +1,12 @@ -import * as Mocks from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; +import type { ProvisionerJobLog } from "#/api/typesGenerated"; +import * as Mocks from "#/testHelpers/entities"; import { withAuthProvider, withDashboardProvider, withProxyProvider, -} from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; -import type { ProvisionerJobLog } from "#/api/typesGenerated"; +} from "#/testHelpers/storybook"; import type { WorkspacePermissions } from "../../modules/workspaces/permissions"; import { Workspace } from "./Workspace"; import { defaultPermissions } from "./WorkspaceNotifications/WorkspaceNotifications.stories"; diff --git a/site/src/pages/WorkspacePage/Workspace.tsx b/site/src/pages/WorkspacePage/Workspace.tsx index 3faeddc0d4..2735ed19b1 100644 --- a/site/src/pages/WorkspacePage/Workspace.tsx +++ b/site/src/pages/WorkspacePage/Workspace.tsx @@ -1,14 +1,14 @@ -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; import { BlocksIcon, HistoryIcon } from "lucide-react"; -import { ProvisionerStatusAlert } from "modules/provisioners/ProvisionerStatusAlert"; -import { AgentRow } from "modules/resources/AgentRow"; -import { getAgentHealthIssue } from "modules/workspaces/health"; -import { WorkspaceTimings } from "modules/workspaces/WorkspaceTiming/WorkspaceTimings"; import type { FC } from "react"; import { useNavigate } from "react-router"; import type * as TypesGen from "#/api/typesGenerated"; import { Alert, AlertDescription, AlertTitle } from "#/components/Alert/Alert"; import { SidebarIconButton } from "#/components/FullPageLayout/Sidebar"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; +import { ProvisionerStatusAlert } from "#/modules/provisioners/ProvisionerStatusAlert"; +import { AgentRow } from "#/modules/resources/AgentRow"; +import { getAgentHealthIssue } from "#/modules/workspaces/health"; +import { WorkspaceTimings } from "#/modules/workspaces/WorkspaceTiming/WorkspaceTimings"; import type { WorkspacePermissions } from "../../modules/workspaces/permissions"; import { HistorySidebar } from "./HistorySidebar"; import { ResourceMetadata } from "./ResourceMetadata"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx index e23c3d2c59..03d6929863 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx @@ -1,11 +1,11 @@ -import { - MockTemplateVersionParameter1, - MockWorkspace, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, screen, userEvent, waitFor } from "storybook/test"; import { richParametersKey } from "#/api/queries/templates"; import { workspaceBuildParametersKey } from "#/api/queries/workspaceBuilds"; +import { + MockTemplateVersionParameter1, + 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 8887872a8d..94b463f1c4 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx @@ -1,13 +1,13 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, screen, userEvent, waitFor } from "storybook/test"; +import { richParametersKey } from "#/api/queries/templates"; +import { workspaceBuildParametersKey } from "#/api/queries/workspaceBuilds"; import { MockNonClassicParameterFlowWorkspace, MockTemplateVersionParameter1, MockTemplateVersionParameter6, MockWorkspace, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { expect, screen, userEvent, waitFor } from "storybook/test"; -import { richParametersKey } from "#/api/queries/templates"; -import { workspaceBuildParametersKey } from "#/api/queries/workspaceBuilds"; +} from "#/testHelpers/entities"; import { RetryButton } from "./RetryButton"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/ShareButton.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/ShareButton.tsx index 978b1f55f2..73a8bfe9aa 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/ShareButton.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/ShareButton.tsx @@ -1,8 +1,4 @@ import { Share2Icon } from "lucide-react"; -import { isGroup } from "modules/groups"; -import { AddWorkspaceUserOrGroup } from "modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup"; -import { useWorkspaceSharing } from "modules/workspaces/WorkspaceSharingForm/useWorkspaceSharing"; -import { WorkspaceSharingForm } from "modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; import type { FC } from "react"; import type { Workspace } from "#/api/typesGenerated"; import { FeatureStageBadge } from "#/components/FeatureStageBadge/FeatureStageBadge"; @@ -12,6 +8,10 @@ import { PopoverContent, PopoverTrigger, } from "#/components/Popover/Popover"; +import { isGroup } from "#/modules/groups"; +import { AddWorkspaceUserOrGroup } from "#/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup"; +import { useWorkspaceSharing } from "#/modules/workspaces/WorkspaceSharingForm/useWorkspaceSharing"; +import { WorkspaceSharingForm } from "#/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; interface ShareButtonProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx index 7bd3aa7b41..0ec276605c 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx @@ -1,13 +1,13 @@ -import * as Mocks from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withDesktopViewport, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { expect, userEvent, within } from "storybook/test"; import { deploymentConfigQueryKey } from "#/api/queries/deployment"; import { agentLogsKey, buildLogsKey } from "#/api/queries/workspaces"; +import * as Mocks from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withDesktopViewport, +} from "#/testHelpers/storybook"; 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 2150f0f449..2fe202a5b4 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx @@ -1,15 +1,15 @@ -import { useAuthenticated } from "hooks/useAuthenticated"; -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"; import { deploymentConfig } from "#/api/queries/deployment"; import type { Workspace, WorkspaceBuildParameter } from "#/api/typesGenerated"; +import { useAuthenticated } from "#/hooks/useAuthenticated"; +import { + type ActionType, + abilitiesByWorkspaceStatus, +} from "#/modules/workspaces/actions"; +import type { WorkspacePermissions } from "#/modules/workspaces/permissions"; +import { WorkspaceMoreActions } from "#/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions"; import { ActivateButton, CancelButton, diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx index 863f1cad4f..db7021c0df 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx @@ -1,8 +1,8 @@ import { useTheme } from "@emotion/react"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import type { FC } from "react"; import type { ProvisionerJobLog } from "#/api/typesGenerated"; import { Loader } from "#/components/Loader/Loader"; +import { WorkspaceBuildLogs } from "#/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; interface WorkspaceBuildLogsSectionProps { logs?: ProvisionerJobLog[]; diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx index d7a6526bfb..cad761f1f8 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"; +} from "#/testHelpers/entities"; 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 0e0324c337..8ddb36fc9c 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx @@ -1,6 +1,5 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { type FC, type ReactNode, useState } from "react"; -import type { ThemeRole } from "theme/roles"; import type { AlertProps } from "#/components/Alert/Alert"; import { Button, type ButtonProps } from "#/components/Button/Button"; import { Pill } from "#/components/Pill/Pill"; @@ -10,6 +9,7 @@ import { TooltipProvider, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import type { ThemeRole } from "#/theme/roles"; export type NotificationItem = { title: string; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx index 16110836b4..7a94a8001f 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx @@ -1,3 +1,8 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, screen, userEvent, waitFor } from "storybook/test"; +import { getWorkspaceResolveAutostartQueryKey } from "#/api/queries/workspaceQuota"; +import type { Workspace } from "#/api/typesGenerated"; +import type { WorkspacePermissions } from "#/modules/workspaces/permissions"; import { MockOutdatedWorkspace, MockTemplate, @@ -6,13 +11,8 @@ import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceResource, -} from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { WorkspacePermissions } from "modules/workspaces/permissions"; -import { expect, screen, userEvent, waitFor } from "storybook/test"; -import { getWorkspaceResolveAutostartQueryKey } from "#/api/queries/workspaceQuota"; -import type { Workspace } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import { WorkspaceNotifications } from "./WorkspaceNotifications"; export const defaultPermissions: WorkspacePermissions = { diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index 0b38cc0ab3..25c01eac00 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -2,9 +2,6 @@ import type { Interpolation, Theme } from "@emotion/react"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; import { InfoIcon, TriangleAlertIcon } from "lucide-react"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; -import { getAgentHealthIssue } from "modules/workspaces/health"; import { type FC, useEffect, useState } from "react"; import { workspaceResolveAutostart } from "#/api/queries/workspaceQuota"; import type { @@ -14,6 +11,9 @@ import type { WorkspaceBuild, } from "#/api/typesGenerated"; import { MemoizedInlineMarkdown } from "#/components/Markdown/Markdown"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { TemplateUpdateMessage } from "#/modules/templates/TemplateUpdateMessage"; +import { getAgentHealthIssue } from "#/modules/workspaces/health"; dayjs.extend(relativeTime); diff --git a/site/src/pages/WorkspacePage/WorkspacePage.jest.tsx b/site/src/pages/WorkspacePage/WorkspacePage.jest.tsx index 43d1237fac..989aa053ff 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.jest.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.jest.tsx @@ -1,3 +1,15 @@ +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import MockServerSocket from "jest-websocket-mock"; +import { HttpResponse, http } from "msw"; +import type { FC } from "react"; +import * as apiModule from "#/api/api"; +import type { TemplateVersionParameter, Workspace } from "#/api/typesGenerated"; +import { + DashboardContext, + type DashboardProvider, +} from "#/modules/dashboard/DashboardProvider"; +import type { WorkspacePermissions } from "#/modules/workspaces/permissions"; import { MockAppearanceConfig, MockBuildInfo, @@ -16,24 +28,12 @@ import { MockWorkspace, MockWorkspaceBuild, MockWorkspaceBuildDelete, -} from "testHelpers/entities"; +} from "#/testHelpers/entities"; import { type RenderWithAuthOptions, 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 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 * as apiModule from "#/api/api"; -import type { TemplateVersionParameter, Workspace } from "#/api/typesGenerated"; +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import WorkspacePage from "./WorkspacePage"; const { API, MissingBuildParameters } = apiModule; diff --git a/site/src/pages/WorkspacePage/WorkspacePage.tsx b/site/src/pages/WorkspacePage/WorkspacePage.tsx index 65c4345c76..825862fa33 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.tsx @@ -1,4 +1,3 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { type FC, useEffect } from "react"; import { useQuery, useQueryClient } from "react-query"; import { useParams } from "react-router"; @@ -14,6 +13,7 @@ import type { Workspace } from "#/api/typesGenerated"; import { ErrorAlert } from "#/components/Alert/ErrorAlert"; import { Loader } from "#/components/Loader/Loader"; import { Margins } from "#/components/Margins/Margins"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; import { WorkspaceReadyPage } from "./WorkspaceReadyPage"; const WorkspacePage: FC = () => { diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index 1764b62ec1..cd9e0fe7c5 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -1,12 +1,3 @@ -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 { - useWorkspaceUpdate, - WorkspaceUpdateDialogs, -} from "modules/workspaces/WorkspaceUpdateDialogs"; import { type FC, useEffect, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { toast } from "sonner"; @@ -33,6 +24,15 @@ import { ConfirmDialog, type ConfirmDialogProps, } from "#/components/Dialogs/ConfirmDialog/ConfirmDialog"; +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 { + useWorkspaceUpdate, + WorkspaceUpdateDialogs, +} from "#/modules/workspaces/WorkspaceUpdateDialogs"; import { Workspace } from "./Workspace"; interface WorkspaceReadyPageProps { diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx index 1a62534537..4793ee0172 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx @@ -1,6 +1,3 @@ -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 dayjs from "dayjs"; @@ -9,6 +6,9 @@ import type { FC } from "react"; import { useQuery } from "react-query"; import { API } from "#/api/api"; import { workspaceByOwnerAndName } from "#/api/queries/workspaces"; +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 86744b4f3f..22001f6626 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -1,9 +1,7 @@ import type { Interpolation, Theme } from "@emotion/react"; import Link, { type LinkProps } from "@mui/material/Link"; 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, useRef, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Link as RouterLink } from "react-router"; @@ -30,6 +28,8 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useTime } from "#/hooks/useTime"; +import { getWorkspaceActivityStatus } from "#/modules/workspaces/activity"; interface WorkspaceScheduleContainerProps { children?: ReactNode; diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx index dcdccdc0ed..6855cf6045 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx @@ -1,16 +1,19 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import dayjs from "dayjs"; +import { expect, screen, userEvent, waitFor, within } from "storybook/test"; +import { getWorkspaceQuotaQueryKey } from "#/api/queries/workspaceQuota"; +import type { Workspace, WorkspaceQuota } from "#/api/typesGenerated"; import { MockOrganization, MockTemplate, MockTemplateVersion, MockUserOwner, MockWorkspace, -} from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import dayjs from "dayjs"; -import { expect, screen, userEvent, waitFor, within } from "storybook/test"; -import { getWorkspaceQuotaQueryKey } from "#/api/queries/workspaceQuota"; -import type { Workspace, WorkspaceQuota } from "#/api/typesGenerated"; +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, +} from "#/testHelpers/storybook"; 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 40557a7695..38355431ce 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -1,9 +1,6 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Link from "@mui/material/Link"; 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"; import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink } from "react-router"; @@ -32,6 +29,9 @@ import { TooltipContent, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; +import { WorkspaceStatusIndicator } from "#/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator"; import type { WorkspacePermissions } from "../../modules/workspaces/permissions"; import { WorkspaceActions } from "./WorkspaceActions/WorkspaceActions"; import { WorkspaceNotifications } from "./WorkspaceNotifications/WorkspaceNotifications"; diff --git a/site/src/pages/WorkspacePage/useResourcesNav.test.tsx b/site/src/pages/WorkspacePage/useResourcesNav.test.tsx index 46c76c72a9..9dd64b6fdc 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 { createMemoryRouter, RouterProvider } from "react-router"; import type { WorkspaceResource } from "#/api/typesGenerated"; +import { MockWorkspaceResource } from "#/testHelpers/entities"; import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; describe("useResourcesNav", () => { diff --git a/site/src/pages/WorkspacePage/useResourcesNav.ts b/site/src/pages/WorkspacePage/useResourcesNav.ts index f0954de0a0..7f64cba141 100644 --- a/site/src/pages/WorkspacePage/useResourcesNav.ts +++ b/site/src/pages/WorkspacePage/useResourcesNav.ts @@ -1,7 +1,7 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; -import { useSearchParamsKey } from "hooks/useSearchParamsKey"; import { useCallback, useEffect } from "react"; import type { WorkspaceResource } from "#/api/typesGenerated"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; +import { useSearchParamsKey } from "#/hooks/useSearchParamsKey"; export const resourceOptionValue = (resource: WorkspaceResource) => { return `${resource.type}_${resource.name}`; }; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index 612564a817..6acb0e6fc7 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -1,5 +1,4 @@ import { useFormik } from "formik"; -import { ClassicParameterFlowDeprecationWarning } from "modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning"; import type { FC } from "react"; import { getFormHelpers } from "utils/formUtils"; import { @@ -23,6 +22,7 @@ import { } from "#/components/Form/Form"; import { RichParameterInput } from "#/components/RichParameterInput/RichParameterInput"; import { Spinner } from "#/components/Spinner/Spinner"; +import { ClassicParameterFlowDeprecationWarning } from "#/modules/workspaces/ClassicParameterFlowDeprecationWarning/ClassicParameterFlowDeprecationWarning"; export type WorkspaceParametersFormValues = { rich_parameter_values: WorkspaceBuildParameter[]; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx index cbeee6be23..5afb507cfa 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { action } from "storybook/actions"; import { MockOutdatedStoppedWorkspaceRequireActiveVersion, MockTemplateVersionParameter1, @@ -7,9 +9,7 @@ import { MockWorkspaceBuildParameter1, MockWorkspaceBuildParameter2, MockWorkspaceBuildParameter3, -} from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react-vite"; -import { action } from "storybook/actions"; +} from "#/testHelpers/entities"; 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 752acfca47..7beba625f3 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx @@ -1,3 +1,6 @@ +import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { API } from "#/api/api"; import { MockTemplateVersionParameter1, MockTemplateVersionParameter2, @@ -7,14 +10,11 @@ import { MockWorkspaceBuildParameter1, MockWorkspaceBuildParameter2, MockWorkspaceBuildParameter4, -} from "testHelpers/entities"; +} 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"; +} from "#/testHelpers/renderHelpers"; import WorkspaceParametersPage from "./WorkspaceParametersPage"; test("Submit the workspace settings page successfully", async () => { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx index 10b9e294dd..0e12d9ccdc 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageExperimental.tsx @@ -1,4 +1,3 @@ -import { useEffectEvent } from "hooks/hookPolyfills"; import { CircleHelp } from "lucide-react"; import type { FC } from "react"; import { useEffect, useMemo, useRef, useState } from "react"; @@ -25,6 +24,7 @@ import { TooltipProvider, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; import { type WorkspacePermissions, workspaceChecks, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx index f22feadecc..200d77fe40 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPageViewExperimental.tsx @@ -1,11 +1,4 @@ import { useFormik } from "formik"; -import { useDebouncedFunction } from "hooks/debounce"; -import { useSyncFormParameters } from "modules/hooks/useSyncFormParameters"; -import { - DynamicParameter, - getInitialParameterValues, - useValidationSchemaForDynamicParameters, -} from "modules/workspaces/DynamicParameter/DynamicParameter"; import type { FC } from "react"; import { cn } from "utils/cn"; import { docs } from "utils/docs"; @@ -20,6 +13,13 @@ import { Button } from "#/components/Button/Button"; import { Label } from "#/components/Label/Label"; import { Link } from "#/components/Link/Link"; import { Spinner } from "#/components/Spinner/Spinner"; +import { useDebouncedFunction } from "#/hooks/debounce"; +import { useSyncFormParameters } from "#/modules/hooks/useSyncFormParameters"; +import { + DynamicParameter, + getInitialParameterValues, + useValidationSchemaForDynamicParameters, +} from "#/modules/workspaces/DynamicParameter/DynamicParameter"; type WorkspaceParametersPageViewExperimentalProps = { workspace: Workspace; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx index 1de412679d..32d1a2eab5 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx @@ -1,4 +1,3 @@ -import { MockTemplate, mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import advancedFormat from "dayjs/plugin/advancedFormat"; @@ -10,6 +9,7 @@ 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 5aa618bfd9..6036039a2f 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -1,9 +1,9 @@ -import { MockTemplate } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; import { screen } from "@testing-library/react"; import { defaultSchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; import { timeZones } from "utils/timeZones"; import { API } from "#/api/api"; +import { MockTemplate } from "#/testHelpers/entities"; +import { render } from "#/testHelpers/renderHelpers"; import { Language, ttlShutdownAt, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx index 51d5171b6a..a87935731e 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.stories.tsx @@ -1,12 +1,4 @@ -import { - MockPrebuiltWorkspace, - MockTemplate, - MockUserOwner, - MockWorkspace, -} from "testHelpers/entities"; -import { withAuthProvider, withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { WorkspacePermissions } from "modules/workspaces/permissions"; import { reactRouterOutlet, reactRouterParameters, @@ -14,6 +6,17 @@ import { import { templateByNameKey } from "#/api/queries/templates"; import { workspaceByOwnerAndNameKey } from "#/api/queries/workspaces"; import type { Workspace } from "#/api/typesGenerated"; +import type { WorkspacePermissions } from "#/modules/workspaces/permissions"; +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 9f1b78ad98..e7f3b69f4f 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -1,13 +1,13 @@ +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { HttpResponse, http } from "msw"; import { MockUserOwner, MockWorkspace, MockWorkspaceBuild, -} from "testHelpers/entities"; -import { renderWithWorkspaceSettingsLayout } from "testHelpers/renderHelpers"; -import { server } from "testHelpers/server"; -import { screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; -import { HttpResponse, http } from "msw"; +} from "#/testHelpers/entities"; +import { renderWithWorkspaceSettingsLayout } from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import { formValuesToAutostartRequest, formValuesToTTLRequest, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx index 5ae0091587..b4f5425b16 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx @@ -1,11 +1,11 @@ -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 { MockWorkspace } from "#/testHelpers/entities"; +import { + renderWithWorkspaceSettingsLayout, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; 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 3a1eb37e75..188afc39d8 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/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPage.tsx index 802cc96659..e3adfe4058 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPage.tsx @@ -1,12 +1,12 @@ -import type { WorkspacePermissions } from "modules/workspaces/permissions"; -import { workspaceChecks } from "modules/workspaces/permissions"; -import { useWorkspaceSharing } from "modules/workspaces/WorkspaceSharingForm/useWorkspaceSharing"; import type { FC } from "react"; import { useQuery } from "react-query"; import { docs } from "utils/docs"; import { pageTitle } from "utils/page"; import { checkAuthorization } from "#/api/queries/authCheck"; import { Link } from "#/components/Link/Link"; +import type { WorkspacePermissions } from "#/modules/workspaces/permissions"; +import { workspaceChecks } from "#/modules/workspaces/permissions"; +import { useWorkspaceSharing } from "#/modules/workspaces/WorkspaceSharingForm/useWorkspaceSharing"; import { useWorkspaceSettings } from "../useWorkspaceSettings"; import { WorkspaceSharingPageView } from "./WorkspaceSharingPageView"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.stories.tsx index 97c230c436..d8122d2b33 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.stories.tsx @@ -1,11 +1,3 @@ -import { - MockGroup, - MockGroup2, - MockUserMember, - MockUserOwner, - MockWorkspace, - mockApiError, -} from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { getWorkspaceSharingSettingsKey } from "#/api/queries/organizations"; import type { @@ -13,6 +5,14 @@ import type { WorkspaceGroup, WorkspaceUser, } from "#/api/typesGenerated"; +import { + MockGroup, + MockGroup2, + MockUserMember, + MockUserOwner, + MockWorkspace, + mockApiError, +} from "#/testHelpers/entities"; import { WorkspaceSharingPageView } from "./WorkspaceSharingPageView"; const mockWorkspaceUser: WorkspaceUser = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.tsx index 77d1629cbb..32f82daaa6 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSharingPage/WorkspaceSharingPageView.tsx @@ -1,6 +1,3 @@ -import { isGroup } from "modules/groups"; -import { AddWorkspaceUserOrGroup } from "modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup"; -import { WorkspaceSharingForm } from "modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; import type { FC } from "react"; import type { Group, @@ -10,6 +7,9 @@ import type { WorkspaceRole, WorkspaceUser, } from "#/api/typesGenerated"; +import { isGroup } from "#/modules/groups"; +import { AddWorkspaceUserOrGroup } from "#/modules/workspaces/WorkspaceSharingForm/AddWorkspaceUserOrGroup"; +import { WorkspaceSharingForm } from "#/modules/workspaces/WorkspaceSharingForm/WorkspaceSharingForm"; interface WorkspaceSharingPageViewProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx index 6f59210230..fe19ba7357 100644 --- a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx +++ b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.stories.tsx @@ -1,7 +1,7 @@ -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 { chromatic } from "#/testHelpers/chromatic"; +import { MockUserMember, MockWorkspace } from "#/testHelpers/entities"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; const meta: Meta = { diff --git a/site/src/pages/WorkspacesPage/BatchUpdateModalForm.stories.tsx b/site/src/pages/WorkspacesPage/BatchUpdateModalForm.stories.tsx index a6114d45f4..5d0235277d 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateModalForm.stories.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateModalForm.stories.tsx @@ -1,6 +1,4 @@ -import { MockTemplateVersion, MockWorkspace } from "testHelpers/entities"; import type { Meta, Parameters, StoryObj } from "@storybook/react-vite"; -import { ACTIVE_BUILD_STATUSES } from "modules/workspaces/status"; import { useQueryClient } from "react-query"; import { action } from "storybook/actions"; import { expect, screen, userEvent, within } from "storybook/test"; @@ -10,6 +8,8 @@ import type { Workspace, WorkspaceBuild, } from "#/api/typesGenerated"; +import { ACTIVE_BUILD_STATUSES } from "#/modules/workspaces/status"; +import { MockTemplateVersion, MockWorkspace } from "#/testHelpers/entities"; import { BatchUpdateModalForm } from "./BatchUpdateModalForm"; type Writeable = { -readonly [Key in keyof T]: T[Key] }; diff --git a/site/src/pages/WorkspacesPage/BatchUpdateModalForm.tsx b/site/src/pages/WorkspacesPage/BatchUpdateModalForm.tsx index be281296c9..7fb02c0e80 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateModalForm.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateModalForm.tsx @@ -1,7 +1,6 @@ import { Label } from "@radix-ui/react-label"; import { Slot } from "@radix-ui/react-slot"; import { TriangleAlert } from "lucide-react"; -import { ACTIVE_BUILD_STATUSES } from "modules/workspaces/status"; import { type FC, type ForwardedRef, @@ -26,6 +25,7 @@ import { DialogTitle, } from "#/components/Dialog/Dialog"; import { Spinner } from "#/components/Spinner/Spinner"; +import { ACTIVE_BUILD_STATUSES } from "#/modules/workspaces/status"; export const BatchUpdateModalForm: FC = ({ open, diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index ea819f0cb6..0c39a3e562 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -1,6 +1,5 @@ import Link from "@mui/material/Link"; import { ExternalLinkIcon } from "lucide-react"; -import { linkToTemplate, useLinks } from "modules/navigation"; import { type FC, type ReactNode, useState } from "react"; import type { UseQueryResult } from "react-query"; import { @@ -20,6 +19,7 @@ import { PopoverTrigger, } from "#/components/Popover/Popover"; import { SearchEmpty } from "#/components/Search/Search"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; type TemplatesQuery = UseQueryResult; diff --git a/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx b/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx index a1337aced5..17baf47c5e 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx @@ -1,10 +1,10 @@ -import { linkToTemplate, useLinks } from "modules/navigation"; import type { FC } from "react"; import { Link } from "react-router"; import type { Template } from "#/api/typesGenerated"; import { Avatar } from "#/components/Avatar/Avatar"; import { Button } from "#/components/Button/Button"; import { EmptyState } from "#/components/EmptyState/EmptyState"; +import { linkToTemplate, useLinks } from "#/modules/navigation"; interface WorkspacesEmptyProps { isUsingFilter: boolean; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx index ac1841a726..1326b18119 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx @@ -1,19 +1,3 @@ -import { - MockDormantOutdatedWorkspace, - MockDormantWorkspace, - MockOutdatedWorkspace, - MockRunningOutdatedWorkspace, - MockStoppedWorkspace, - MockWorkspace, - MockWorkspaceAgent, - MockWorkspaceApp, - MockWorkspacesResponse, -} from "testHelpers/entities"; -import { - renderWithAuth, - 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 { HttpResponse, http } from "msw"; @@ -25,6 +9,22 @@ import type { WorkspaceAppHealth, WorkspacesResponse, } from "#/api/typesGenerated"; +import { + MockDormantOutdatedWorkspace, + MockDormantWorkspace, + MockOutdatedWorkspace, + MockRunningOutdatedWorkspace, + MockStoppedWorkspace, + MockWorkspace, + MockWorkspaceAgent, + MockWorkspaceApp, + MockWorkspacesResponse, +} from "#/testHelpers/entities"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "#/testHelpers/renderHelpers"; +import { server } from "#/testHelpers/server"; import WorkspacesPage from "./WorkspacesPage"; describe("WorkspacesPage", () => { diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx index 1285f9c8bc..1d6dd2c052 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx @@ -1,9 +1,4 @@ import { useAuthenticated } from "hooks"; -import { useEffectEvent } from "hooks/hookPolyfills"; -import { usePagination } from "hooks/usePagination"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useOrganizationsFilterMenu } from "modules/tableFiltering/options"; -import { ACTIVE_BUILD_STATUSES } from "modules/workspaces/status"; import { type FC, useMemo, useState } from "react"; import { useQuery, useQueryClient } from "react-query"; import { useSearchParams } from "react-router"; @@ -16,6 +11,11 @@ import { templates, templateVersionRoot } from "#/api/queries/templates"; import { workspaces } from "#/api/queries/workspaces"; import { useFilter } from "#/components/Filter/Filter"; import { useUserFilterMenu } from "#/components/Filter/UserFilter"; +import { useEffectEvent } from "#/hooks/hookPolyfills"; +import { usePagination } from "#/hooks/usePagination"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { useOrganizationsFilterMenu } from "#/modules/tableFiltering/options"; +import { ACTIVE_BUILD_STATUSES } from "#/modules/workspaces/status"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; import { BatchUpdateModalForm } from "./BatchUpdateModalForm"; import { useBatchActions } from "./batchActions"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index acb54ed664..0091cd709f 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -1,19 +1,3 @@ -import { - MockBuildInfo, - MockOrganization, - MockPendingProvisionerJob, - MockTaskWorkspace, - MockTemplate, - MockUserOwner, - MockWorkspace, - MockWorkspaceAgent, - mockApiError, -} from "testHelpers/entities"; -import { - withAuthProvider, - withDashboardProvider, - withProxyProvider, -} from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import dayjs from "dayjs"; import uniqueId from "lodash/uniqueId"; @@ -28,6 +12,22 @@ import { MockMenu, } from "#/components/Filter/storyHelpers"; import { DEFAULT_RECORDS_PER_PAGE } from "#/components/PaginationWidget/utils"; +import { + MockBuildInfo, + MockOrganization, + MockPendingProvisionerJob, + MockTaskWorkspace, + MockTemplate, + MockUserOwner, + MockWorkspace, + MockWorkspaceAgent, + mockApiError, +} from "#/testHelpers/entities"; +import { + withAuthProvider, + withDashboardProvider, + withProxyProvider, +} from "#/testHelpers/storybook"; import type { WorkspaceFilterState } from "./filter/WorkspacesFilter"; import { WorkspacesPageView } from "./WorkspacesPageView"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index af4f929ba6..b56019c288 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -1,6 +1,5 @@ import Skeleton from "@mui/material/Skeleton"; import { useAuthenticated } from "hooks"; -import { useClickableTableRow } from "hooks/useClickableTableRow"; import { BanIcon, CloudIcon, @@ -12,22 +11,6 @@ import { SquareTerminalIcon, StarIcon, } from "lucide-react"; -import { - getTerminalHref, - getVSCodeHref, - openAppInNewWindow, -} from "modules/apps/apps"; -import { useAppLink } from "modules/apps/useAppLink"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { abilitiesByWorkspaceStatus } from "modules/workspaces/actions"; -import { WorkspaceBuildCancelDialog } from "modules/workspaces/WorkspaceBuildCancelDialog/WorkspaceBuildCancelDialog"; -import { WorkspaceMoreActions } from "modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions"; -import { WorkspaceOutdatedTooltip } from "modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; -import { WorkspaceStatus } from "modules/workspaces/WorkspaceStatus/WorkspaceStatus"; -import { - useWorkspaceUpdate, - WorkspaceUpdateDialogs, -} from "modules/workspaces/WorkspaceUpdateDialogs"; import type React from "react"; import { type FC, @@ -83,6 +66,23 @@ import { TooltipProvider, TooltipTrigger, } from "#/components/Tooltip/Tooltip"; +import { useClickableTableRow } from "#/hooks/useClickableTableRow"; +import { + getTerminalHref, + getVSCodeHref, + openAppInNewWindow, +} from "#/modules/apps/apps"; +import { useAppLink } from "#/modules/apps/useAppLink"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { abilitiesByWorkspaceStatus } from "#/modules/workspaces/actions"; +import { WorkspaceBuildCancelDialog } from "#/modules/workspaces/WorkspaceBuildCancelDialog/WorkspaceBuildCancelDialog"; +import { WorkspaceMoreActions } from "#/modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions"; +import { WorkspaceOutdatedTooltip } from "#/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; +import { WorkspaceStatus } from "#/modules/workspaces/WorkspaceStatus/WorkspaceStatus"; +import { + useWorkspaceUpdate, + WorkspaceUpdateDialogs, +} from "#/modules/workspaces/WorkspaceUpdateDialogs"; import { WorkspaceSharingIndicator } from "./WorkspaceSharingIndicator"; import { WorkspacesEmpty } from "./WorkspacesEmpty"; diff --git a/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.stories.tsx b/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.stories.tsx index 5782bc731c..93c97b0b4c 100644 --- a/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.stories.tsx +++ b/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.stories.tsx @@ -1,10 +1,10 @@ -import { mockApiError } from "testHelpers/entities"; -import { withDashboardProvider } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { getDefaultFilterProps, MockMenu, } from "#/components/Filter/storyHelpers"; +import { mockApiError } from "#/testHelpers/entities"; +import { withDashboardProvider } from "#/testHelpers/storybook"; import type { WorkspaceFilterState } from "./WorkspacesFilter"; import { WorkspacesFilter } from "./WorkspacesFilter"; diff --git a/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.tsx b/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.tsx index 5169d277d1..b419d27969 100644 --- a/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.tsx +++ b/site/src/pages/WorkspacesPage/filter/WorkspacesFilter.tsx @@ -1,8 +1,3 @@ -import { useDashboard } from "modules/dashboard/useDashboard"; -import { - type OrganizationsFilterMenu, - OrganizationsMenu, -} from "modules/tableFiltering/options"; import type { FC } from "react"; import { docs } from "utils/docs"; import { @@ -15,6 +10,11 @@ import { type UserFilterMenu, UserMenu, } from "#/components/Filter/UserFilter"; +import { useDashboard } from "#/modules/dashboard/useDashboard"; +import { + type OrganizationsFilterMenu, + OrganizationsMenu, +} from "#/modules/tableFiltering/options"; import { type StatusFilterMenu, StatusMenu, diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 6d73cac8d2..1d65ca9e10 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -1,7 +1,5 @@ import type { ProxyLatencyReport } from "contexts/useProxyLatency"; import range from "lodash/range"; -import type { Permissions } from "modules/permissions"; -import type { OrganizationPermissions } from "modules/permissions/organizations"; import type { FileTree } from "utils/filetree"; import type { TemplateVersionFiles } from "utils/templateVersion"; import { @@ -11,6 +9,8 @@ import { } from "#/api/api"; import type { FieldError } from "#/api/errors"; import type * as TypesGen from "#/api/typesGenerated"; +import type { Permissions } from "#/modules/permissions"; +import type { OrganizationPermissions } from "#/modules/permissions/organizations"; export const MockOrganization: TypesGen.Organization = { id: "my-organization-id", diff --git a/site/src/testHelpers/handlers.ts b/site/src/testHelpers/handlers.ts index 0483eb5aff..df4ab4103d 100644 --- a/site/src/testHelpers/handlers.ts +++ b/site/src/testHelpers/handlers.ts @@ -1,8 +1,8 @@ import fs from "node:fs"; import path from "node:path"; -import { permissionChecks } from "modules/permissions"; import { HttpResponse, http } from "msw"; import type { CreateWorkspaceBuildRequest } from "#/api/typesGenerated"; +import { permissionChecks } from "#/modules/permissions"; import * as M from "./entities"; import { MockGroup, MockWorkspaceQuota } from "./entities"; diff --git a/site/src/testHelpers/renderHelpers.tsx b/site/src/testHelpers/renderHelpers.tsx index f0953dcc57..34e6c948df 100644 --- a/site/src/testHelpers/renderHelpers.tsx +++ b/site/src/testHelpers/renderHelpers.tsx @@ -7,9 +7,6 @@ import { import { RequireAuth } from "contexts/auth/RequireAuth"; import type { ProxyProvider } from "contexts/ProxyContext"; import { ThemeOverride } from "contexts/ThemeProvider"; -import { DashboardLayout } from "modules/dashboard/DashboardLayout"; -import type { DashboardProvider } from "modules/dashboard/DashboardProvider"; -import OrganizationSettingsLayout from "modules/management/OrganizationSettingsLayout"; import { TemplateSettingsLayout } from "pages/TemplateSettingsPage/TemplateSettingsLayout"; import { WorkspaceSettingsLayout } from "pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"; import type { JSX, ReactNode } from "react"; @@ -19,8 +16,11 @@ import { type RouteObject, RouterProvider, } from "react-router"; -import themes, { DEFAULT_THEME } from "theme"; import { TooltipProvider } from "#/components/Tooltip/Tooltip"; +import { DashboardLayout } from "#/modules/dashboard/DashboardLayout"; +import type { DashboardProvider } from "#/modules/dashboard/DashboardProvider"; +import OrganizationSettingsLayout from "#/modules/management/OrganizationSettingsLayout"; +import themes, { DEFAULT_THEME } from "#/theme"; import { MockUserOwner } from "./entities"; // Creates one query client for each test case, to make sure that tests are diff --git a/site/src/testHelpers/storybook.tsx b/site/src/testHelpers/storybook.tsx index 85f64baa1c..1cf21be504 100644 --- a/site/src/testHelpers/storybook.tsx +++ b/site/src/testHelpers/storybook.tsx @@ -5,10 +5,6 @@ import { ProxyContext, type ProxyContextValue, } from "contexts/ProxyContext"; -import { DashboardContext } from "modules/dashboard/DashboardProvider"; -import { DeploymentConfigContext } from "modules/management/DeploymentConfigProvider"; -import { OrganizationSettingsContext } from "modules/management/OrganizationSettingsLayout"; -import { permissionChecks } from "modules/permissions"; import type { FC } from "react"; import { useQueryClient } from "react-query"; import { withDefaultFeatures } from "#/api/api"; @@ -16,6 +12,10 @@ import { getAuthorizationKey } from "#/api/queries/authCheck"; import { hasFirstUserKey, meKey } from "#/api/queries/users"; import type { Entitlements } from "#/api/typesGenerated"; import { Toaster } from "#/components/Toaster/Toaster"; +import { DashboardContext } from "#/modules/dashboard/DashboardProvider"; +import { DeploymentConfigContext } from "#/modules/management/DeploymentConfigProvider"; +import { OrganizationSettingsContext } from "#/modules/management/OrganizationSettingsLayout"; +import { permissionChecks } from "#/modules/permissions"; import { MockAppearanceConfig, MockBuildInfo, diff --git a/site/src/utils/OneWayWebSocket.jest.ts b/site/src/utils/OneWayWebSocket.jest.ts index 3a4b954145..95e733adff 100644 --- a/site/src/utils/OneWayWebSocket.jest.ts +++ b/site/src/utils/OneWayWebSocket.jest.ts @@ -10,7 +10,7 @@ import { createMockWebSocket, type MockWebSocketServer, -} from "testHelpers/websockets"; +} from "#/testHelpers/websockets"; import { type OneWayMessageEvent, OneWayWebSocket } from "./OneWayWebSocket"; describe(OneWayWebSocket.name, () => { diff --git a/site/src/utils/dormant.test.ts b/site/src/utils/dormant.test.ts index ce84127ec9..2dc3a28196 100644 --- a/site/src/utils/dormant.test.ts +++ b/site/src/utils/dormant.test.ts @@ -1,5 +1,5 @@ -import * as Mocks from "testHelpers/entities"; import type * as TypesGen from "#/api/typesGenerated"; +import * as Mocks from "#/testHelpers/entities"; import { displayDormantDeletion } from "./dormant"; describe("displayDormantDeletion", () => { diff --git a/site/src/utils/formUtils.test.ts b/site/src/utils/formUtils.test.ts index 9ed94c840f..dac91ee6f1 100644 --- a/site/src/utils/formUtils.test.ts +++ b/site/src/utils/formUtils.test.ts @@ -1,5 +1,5 @@ -import { mockApiError } from "testHelpers/entities"; import type { FormikContextType } from "formik/dist/types"; +import { mockApiError } from "#/testHelpers/entities"; import { getFormHelpers, nameValidator, onChangeTrimmed } from "./formUtils"; interface TestType { diff --git a/site/src/utils/http.ts b/site/src/utils/http.ts index 5ea00dbd18..4e04f827ce 100644 --- a/site/src/utils/http.ts +++ b/site/src/utils/http.ts @@ -1,4 +1,4 @@ -import type { ThemeRole } from "theme/roles"; +import type { ThemeRole } from "#/theme/roles"; export const httpStatusColor = (httpStatus: number): ThemeRole => { // Treat server errors (500) as errors diff --git a/site/src/utils/schedule.test.ts b/site/src/utils/schedule.test.ts index ee0b94162d..8a00283025 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 dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; import type { Workspace } from "#/api/typesGenerated"; +import * as Mocks from "#/testHelpers/entities"; import { deadlineExtensionMax, deadlineExtensionMin, diff --git a/site/src/utils/schedule.tsx b/site/src/utils/schedule.tsx index 14c0273b99..73b72b9f60 100644 --- a/site/src/utils/schedule.tsx +++ b/site/src/utils/schedule.tsx @@ -6,11 +6,11 @@ import duration from "dayjs/plugin/duration"; import relativeTime from "dayjs/plugin/relativeTime"; import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; -import type { WorkspaceActivityStatus } from "modules/workspaces/activity"; import type { ReactNode } from "react"; import { Link as RouterLink } from "react-router"; import type { Template, Workspace } from "#/api/typesGenerated"; import { HelpTooltipTitle } from "#/components/HelpTooltip/HelpTooltip"; +import type { WorkspaceActivityStatus } from "#/modules/workspaces/activity"; import { isWorkspaceOn } from "./workspace"; // REMARK: some plugins depend on utc, so it's listed first. Otherwise they're diff --git a/site/src/utils/templateVersion.ts b/site/src/utils/templateVersion.ts index b34958734e..ac0e0d8908 100644 --- a/site/src/utils/templateVersion.ts +++ b/site/src/utils/templateVersion.ts @@ -1,5 +1,5 @@ import set from "lodash/set"; -import { isBinaryData } from "modules/templates/TemplateFiles/isBinaryData"; +import { isBinaryData } from "#/modules/templates/TemplateFiles/isBinaryData"; import type { FileTree } from "./filetree"; import { TarFileTypeCodes, TarReader } from "./tar"; diff --git a/site/src/utils/workspace.test.ts b/site/src/utils/workspace.test.ts index 072dcfa49a..ee4c7c2b88 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 dayjs from "dayjs"; import type * as TypesGen from "#/api/typesGenerated"; +import * as Mocks from "#/testHelpers/entities"; import { agentVersionStatus, defaultWorkspaceExtension, diff --git a/site/test/setup/msw.ts b/site/test/setup/msw.ts index 658d74c019..2458492c29 100644 --- a/site/test/setup/msw.ts +++ b/site/test/setup/msw.ts @@ -1,5 +1,5 @@ -import { server } from "testHelpers/server"; import { cleanup } from "@testing-library/react"; +import { server } from "#/testHelpers/server"; // MSW server lifecycle beforeAll(() => server.listen({ onUnhandledRequest: "warn" })); diff --git a/site/vite.config.mts b/site/vite.config.mts index 2496511ade..065bcd8594 100644 --- a/site/vite.config.mts +++ b/site/vite.config.mts @@ -7,12 +7,9 @@ import type { PluginOption } from "vite"; import checker from "vite-plugin-checker"; import { defineConfig } from "vitest/config"; -// Enable the React profiling build and discoverable source maps for -// internal deployments (e.g. dogfood). The profiling build swaps -// react-dom/client for react-dom/profiling, which keeps production -// optimizations but leaves the onRender callback and -// React Performance Tracks instrumentation intact. The overhead is -// ~13% on the react-dom chunk size. +// We enable profiling and source maps for internal deployments (e.g. dogfood). +// The profiling build uses react-dom/profiling, which keeps optimizations but +// preserves performance instrumentation. const isProfilingBuild = process.env.CODER_REACT_PROFILING === "true"; const plugins: PluginOption[] = [ @@ -217,12 +214,8 @@ export default defineConfig({ }, resolve: { alias: { - // In profiling builds, swap the production react-dom client - // bundle for the profiling variant so that - // onRender receives actual timing data. - // Note: react-dom/profiling is a superset of react-dom/client - // (16 vs 3 exports). If a future React major changes this - // relationship, the alias may need updating. + // In profiling builds, swap the usual reconciler for the profiling + // variant so that receives actual timing data. ...(isProfilingBuild ? { "react-dom/client": "react-dom/profiling" } : {}),