From b15bfa41c2d97e58ff7b694c1b0b519c4b39a1f1 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Wed, 6 Sep 2023 15:06:08 -0300 Subject: [PATCH] chore(site): move components close to where they are used (#9552) * Move AppLink * Move AuditLogRow * Move UserDropdown * Move BuildsTable * Remove CodeBlock * Move CreateUserForm * Move DeploymentBanner * Move ResetPassworDialog * Move EditRolesButton * Move EnterpriseSnackbar * Move GitAuth * Move LicenseBanner * Move Logs * Move MultiTextField * Move Navbar * Remove PasswordField * Move RuntimeErrorState * Remove Section * Move SectionAction * Move ServiceBanner * Move SettingsAccountForm * Move LicenseCard * Move SettingsSecurityForm * Move SignInForm * Remove TabPanel and TabSidebar * Move TemplateStats and TemplateVariableField * Move TemplateEditor * Move TerminalLink * Move SSH Button * Move many tooltips * Move UsersTable * Move VersionsTable * Move VSCodeDesktopButton * Remove WarningAlert * Move Workspace * Move WorkspaceActions * Move WorkspaceBuildProgress * Move WorkspaceDeletedBanner * Move WorkspaceScheduleForm * Move WorkspaceSection * Move WorkspaceStats * Fix imports * Flat CreateUserForm * Flat GitAuth * Transform WorkspaceSection into ChartSection * Flat AccountForm * Flat ConfirmDeleteDialog * Flat ResetPasswordDialog * Flat BuildsTable --- site/e2e/global.setup.ts | 2 +- site/src/AppRouter.tsx | 7 +- .../BuildAvatar.tsx | 0 .../CodeBlock/CodeBlock.stories.tsx | 25 ---- .../components/CodeBlock/CodeBlock.test.tsx | 15 -- site/src/components/CodeBlock/CodeBlock.tsx | 59 -------- site/src/components/DAUChart/DAUChart.tsx | 2 +- .../components/Dashboard/DashboardLayout.tsx | 8 +- .../DeploymentBanner/DeploymentBanner.tsx | 2 +- .../DeploymentBannerView.stories.tsx | 0 .../DeploymentBanner/DeploymentBannerView.tsx | 0 .../LicenseBanner/LicenseBanner.tsx | 0 .../LicenseBannerView.stories.tsx | 0 .../LicenseBanner/LicenseBannerView.tsx | 0 .../{ => Dashboard}/Navbar/Navbar.test.tsx | 0 .../{ => Dashboard}/Navbar/Navbar.tsx | 0 .../Navbar/NavbarView.stories.tsx | 2 +- .../Navbar/NavbarView.test.tsx | 4 +- .../{ => Dashboard}/Navbar/NavbarView.tsx | 8 +- .../BorderedMenu/BorderedMenu.tsx | 0 .../BorderedMenu}/BorderedMenuRow.tsx | 4 +- .../UserDropdown/UserDropdown.stories.tsx | 2 +- .../UserDropdown/UserDropdown.test.tsx | 6 +- .../Navbar}/UserDropdown/UserDropdown.tsx | 15 +- .../UserDropdownContent.stories.tsx | 2 +- .../UserDropdownContent.test.tsx | 4 +- .../UserDropdownContent.tsx | 2 +- .../ServiceBanner/ServiceBanner.tsx | 0 .../ServiceBannerView.stories.tsx | 0 .../ServiceBanner/ServiceBannerView.tsx | 0 .../ErrorBoundary/ErrorBoundary.tsx | 2 +- .../RuntimeErrorState.stories.tsx | 0 .../RuntimeErrorState/RuntimeErrorState.tsx | 2 +- .../EnterpriseSnackbar.stories.tsx | 0 .../EnterpriseSnackbar/EnterpriseSnackbar.tsx | 2 +- .../GlobalSnackbar/GlobalSnackbar.tsx | 2 +- .../HelpTooltip/HelpTooltip.stories.tsx | 0 .../HelpTooltip/HelpTooltip.tsx | 2 +- .../{Tooltips => }/HelpTooltip/index.ts | 0 .../PasswordField/PasswordField.test.tsx | 13 -- .../PasswordField/PasswordField.tsx | 52 ------- .../src/components/Resources/AgentLatency.tsx | 2 +- .../AgentOutdatedTooltip.tsx | 2 +- site/src/components/Resources/AgentRow.tsx | 10 +- .../components/Resources/AgentRowPreview.tsx | 2 +- site/src/components/Resources/AgentStatus.tsx | 2 +- .../src/components/Resources/AgentVersion.tsx | 2 +- .../AppLink/AppLink.stories.tsx | 0 .../{ => Resources}/AppLink/AppLink.tsx | 4 +- .../AppLink/AppPreviewLink.tsx | 0 .../{ => Resources}/AppLink/BaseIcon.tsx | 0 .../{ => Resources}/AppLink/ShareIcon.tsx | 2 +- .../Resources/PortForwardButton.tsx | 2 +- .../SSHButton/SSHButton.stories.tsx | 0 .../{ => Resources}/SSHButton/SSHButton.tsx | 6 +- .../TerminalLink/TerminalLink.stories.tsx | 0 .../TerminalLink/TerminalLink.tsx | 4 +- .../VSCodeDesktopButton.stories.tsx | 0 .../VSCodeDesktopButton.tsx | 0 .../MultiTextField/MultiTextField.stories.tsx | 0 .../MultiTextField/MultiTextField.tsx | 0 .../RichParameterInput/RichParameterInput.tsx | 2 +- .../components/Section/Section.stories.tsx | 38 ----- site/src/components/Section/Section.tsx | 92 ------------ .../src/components/SettingsLayout/Section.tsx | 2 +- .../SectionAction.tsx | 0 .../components/TabPanel/TabPanel.stories.tsx | 21 --- site/src/components/TabPanel/TabPanel.tsx | 99 ------------- .../TabSidebar/TabSidebar.stories.tsx | 20 --- site/src/components/TabSidebar/TabSidebar.tsx | 134 ------------------ site/src/components/Tooltips/index.ts | 4 - .../components/UsersLayout/UsersLayout.tsx | 2 +- .../WarningAlert/WarningAlert.stories.tsx | 40 ------ .../components/WarningAlert/WarningAlert.tsx | 65 --------- .../Logs/Logs.stories.tsx | 2 +- .../{ => WorkspaceBuildLogs}/Logs/Logs.tsx | 4 +- .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 2 +- .../WorkspaceOutdatedTooltip.tsx | 2 +- .../WorkspaceSection.stories.tsx | 29 ---- .../AuditPage}/AuditHelpTooltip.tsx | 2 +- .../AuditLogDescription.test.tsx | 0 .../AuditLogDescription.tsx | 0 .../BuildAuditDescription.tsx | 0 .../AuditLogRow/AuditLogDescription/index.ts | 0 .../AuditLogRow/AuditLogDiff/AuditLogDiff.tsx | 0 .../AuditLogDiff/auditUtils.test.ts | 0 .../AuditLogRow/AuditLogDiff/auditUtils.ts | 0 .../AuditLogRow/AuditLogDiff/index.ts | 0 .../AuditLogRow/AuditLogRow.stories.tsx | 0 .../AuditPage}/AuditLogRow/AuditLogRow.tsx | 0 site/src/pages/AuditPage/AuditPageView.tsx | 4 +- .../CreateTemplatePage/CreateTemplateForm.tsx | 5 +- .../CreateUserForm.stories.tsx | 0 .../CreateUserPage}/CreateUserForm.tsx | 14 +- .../CreateUserPage/CreateUserPage.test.tsx | 10 +- .../CreateUserPage/CreateUserPage.tsx | 8 +- .../CreateWorkspacePageView.tsx | 2 +- .../CreateWorkspacePage}/GitAuth.stories.tsx | 0 .../CreateWorkspacePage}/GitAuth.tsx | 0 .../GeneralSettingsPage/ChartSection.tsx} | 6 +- .../GeneralSettingsPageView.tsx | 6 +- .../LicenseCard.test.tsx | 2 +- .../LicensesSettingsPage}/LicenseCard.tsx | 0 .../LicensesSettingsPageView.tsx | 2 +- site/src/pages/LoginPage/LoginPage.test.tsx | 2 +- site/src/pages/LoginPage/LoginPageView.tsx | 2 +- .../LoginPage}/SignInForm/OAuthSignInForm.tsx | 2 +- .../SignInForm/PasswordSignInForm.tsx | 6 +- .../SignInForm/SignInForm.stories.tsx | 0 .../LoginPage}/SignInForm/SignInForm.tsx | 4 +- .../LoginPage}/SignInForm/SignInForm.types.ts | 0 .../TemplateInsightsPage.tsx | 2 +- .../TemplateStats.stories.tsx | 5 +- .../TemplateSummaryPage}/TemplateStats.tsx | 2 +- .../TemplateSummaryPageView.tsx | 2 +- .../TemplateVersionsPage.tsx | 2 +- .../TemplateVersionsPage}/VersionRow.tsx | 0 .../VersionsTable.stories.tsx | 2 +- .../TemplateVersionsPage}/VersionsTable.tsx | 6 +- .../TemplateSettingsForm.tsx | 5 +- .../TemplateVariableField.tsx | 0 .../TemplateVariablesForm.tsx | 2 +- .../TemplateVersionEditor/FileDialog.tsx | 0 .../TemplateVersionEditor/FileTreeView.tsx | 0 .../MissingTemplateVariablesDialog.tsx | 0 .../TemplateVersionEditor/MonacoEditor.tsx | 0 .../PublishTemplateVersionDialog.tsx | 2 +- .../TemplateVersionEditor.stories.tsx | 0 .../TemplateVersionEditor.tsx | 2 +- .../TemplateVersionStatusBadge.tsx | 0 .../TemplateVersionEditorPage.test.tsx | 2 +- .../TemplateVersionEditorPage.tsx | 2 +- .../TemplateVersionEditorPage/data.ts | 0 .../TemplateVersionEditorPage/types.ts | 0 .../pages/TemplatesPage/TemplatesPageView.tsx | 2 +- .../AccountPage/AccountForm.stories.tsx} | 4 +- .../AccountPage/AccountForm.test.tsx} | 6 +- .../AccountPage/AccountForm.tsx} | 8 +- .../AccountPage/AccountPage.test.tsx | 8 +- .../AccountPage/AccountPage.tsx | 4 +- .../SecurityPage/SecurityPage.test.tsx | 2 +- .../SecurityPage/SecurityPage.tsx | 2 +- .../SettingsSecurityForm.stories.tsx | 0 .../SecurityPage}/SettingsSecurityForm.tsx | 4 +- .../ConfirmDeleteDialog.stories.tsx | 0 .../{components => }/ConfirmDeleteDialog.tsx | 2 +- .../TokensPage/TokensPage.tsx | 2 +- .../TokensPage/components/index.ts | 1 - .../ResetPasswordDialog.stories.tsx | 0 .../UsersPage}/ResetPasswordDialog.tsx | 6 +- site/src/pages/UsersPage/UsersPage.test.tsx | 2 +- site/src/pages/UsersPage/UsersPage.tsx | 2 +- site/src/pages/UsersPage/UsersPageView.tsx | 2 +- .../UsersTable}/EditRolesButton.stories.tsx | 0 .../UsersPage/UsersTable}/EditRolesButton.tsx | 2 +- .../UsersTable}/UserRoleHelpTooltip.tsx | 2 +- .../UsersTable/UsersTable.stories.tsx | 0 .../UsersPage}/UsersTable/UsersTable.tsx | 6 +- .../UsersPage}/UsersTable/UsersTableBody.tsx | 14 +- .../WorkspaceBuildPageView.tsx | 2 +- .../WorkspacePage}/BuildRow.tsx | 2 +- .../WorkspacePage}/BuildsTable.stories.tsx | 2 +- .../WorkspacePage}/BuildsTable.tsx | 6 +- .../WorkspacePage}/Workspace.stories.tsx | 0 .../WorkspacePage}/Workspace.tsx | 20 +-- .../BuildParametersPopover.tsx | 2 +- .../WorkspaceActions/Buttons.tsx | 0 .../WorkspaceActions.stories.tsx | 2 +- .../WorkspaceActions/WorkspaceActions.tsx | 0 .../WorkspaceActions/constants.ts | 0 .../WorkspaceBuildProgress.stories.tsx | 0 .../WorkspacePage}/WorkspaceBuildProgress.tsx | 0 .../WorkspaceDeletedBanner.stories.tsx | 0 .../WorkspacePage}/WorkspaceDeletedBanner.tsx | 0 .../WorkspacePage/WorkspaceReadyPage.tsx | 13 +- .../WorkspacePage}/WorkspaceStats.stories.tsx | 5 +- .../WorkspacePage}/WorkspaceStats.tsx | 4 +- .../WorkspaceScheduleForm.stories.tsx | 0 .../WorkspaceScheduleForm.test.ts | 0 .../WorkspaceScheduleForm.tsx | 2 +- .../WorkspaceSchedulePage.test.tsx | 2 +- .../WorkspaceSchedulePage.tsx | 12 +- .../WorkspaceSchedulePage/formToRequest.ts | 2 +- .../WorkspaceSchedulePage/schedule.test.ts | 70 +++++++++ .../WorkspaceSchedulePage/schedule.ts | 16 +++ .../WorkspaceSchedulePage}/zones.ts | 0 .../WorkspacesPage}/WorkspaceHelpTooltip.tsx | 2 +- .../WorkspacesPage/WorkspacesPageView.tsx | 2 +- .../pages/WorkspacesPage/WorkspacesTable.tsx | 4 +- site/src/utils/schedule.test.ts | 71 ---------- site/src/utils/schedule.ts | 17 --- .../templateVersionEditorXService.ts | 2 +- .../workspaceAgentLogsXService.ts | 2 +- 193 files changed, 289 insertions(+), 1007 deletions(-) rename site/src/components/{BuildsTable => BuildAvatar}/BuildAvatar.tsx (100%) delete mode 100644 site/src/components/CodeBlock/CodeBlock.stories.tsx delete mode 100644 site/src/components/CodeBlock/CodeBlock.test.tsx delete mode 100644 site/src/components/CodeBlock/CodeBlock.tsx rename site/src/components/{ => Dashboard}/DeploymentBanner/DeploymentBanner.tsx (85%) rename site/src/components/{ => Dashboard}/DeploymentBanner/DeploymentBannerView.stories.tsx (100%) rename site/src/components/{ => Dashboard}/DeploymentBanner/DeploymentBannerView.tsx (100%) rename site/src/components/{ => Dashboard}/LicenseBanner/LicenseBanner.tsx (100%) rename site/src/components/{ => Dashboard}/LicenseBanner/LicenseBannerView.stories.tsx (100%) rename site/src/components/{ => Dashboard}/LicenseBanner/LicenseBannerView.tsx (100%) rename site/src/components/{ => Dashboard}/Navbar/Navbar.test.tsx (100%) rename site/src/components/{ => Dashboard}/Navbar/Navbar.tsx (100%) rename site/src/components/{ => Dashboard}/Navbar/NavbarView.stories.tsx (92%) rename site/src/components/{ => Dashboard}/Navbar/NavbarView.test.tsx (97%) rename site/src/components/{ => Dashboard}/Navbar/NavbarView.tsx (98%) rename site/src/components/{ => Dashboard/Navbar/UserDropdown}/BorderedMenu/BorderedMenu.tsx (100%) rename site/src/components/{BorderedMenuRow => Dashboard/Navbar/UserDropdown/BorderedMenu}/BorderedMenuRow.tsx (95%) rename site/src/components/{ => Dashboard/Navbar}/UserDropdown/UserDropdown.stories.tsx (90%) rename site/src/components/{ => Dashboard/Navbar}/UserDropdown/UserDropdown.test.tsx (82%) rename site/src/components/{ => Dashboard/Navbar}/UserDropdown/UserDropdown.tsx (86%) rename site/src/components/{ => Dashboard/Navbar/UserDropdown}/UserDropdownContent/UserDropdownContent.stories.tsx (93%) rename site/src/components/{ => Dashboard/Navbar/UserDropdown}/UserDropdownContent/UserDropdownContent.test.tsx (95%) rename site/src/components/{ => Dashboard/Navbar/UserDropdown}/UserDropdownContent/UserDropdownContent.tsx (98%) rename site/src/components/{ => Dashboard}/ServiceBanner/ServiceBanner.tsx (100%) rename site/src/components/{ => Dashboard}/ServiceBanner/ServiceBannerView.stories.tsx (100%) rename site/src/components/{ => Dashboard}/ServiceBanner/ServiceBannerView.tsx (100%) rename site/src/components/{ => ErrorBoundary}/RuntimeErrorState/RuntimeErrorState.stories.tsx (100%) rename site/src/components/{ => ErrorBoundary}/RuntimeErrorState/RuntimeErrorState.tsx (99%) rename site/src/components/{ => GlobalSnackbar}/EnterpriseSnackbar/EnterpriseSnackbar.stories.tsx (100%) rename site/src/components/{ => GlobalSnackbar}/EnterpriseSnackbar/EnterpriseSnackbar.tsx (98%) rename site/src/components/{Tooltips => }/HelpTooltip/HelpTooltip.stories.tsx (100%) rename site/src/components/{Tooltips => }/HelpTooltip/HelpTooltip.tsx (99%) rename site/src/components/{Tooltips => }/HelpTooltip/index.ts (100%) delete mode 100644 site/src/components/PasswordField/PasswordField.test.tsx delete mode 100644 site/src/components/PasswordField/PasswordField.tsx rename site/src/components/{Tooltips => Resources}/AgentOutdatedTooltip.tsx (98%) rename site/src/components/{ => Resources}/AppLink/AppLink.stories.tsx (100%) rename site/src/components/{ => Resources}/AppLink/AppLink.tsx (97%) rename site/src/components/{ => Resources}/AppLink/AppPreviewLink.tsx (100%) rename site/src/components/{ => Resources}/AppLink/BaseIcon.tsx (100%) rename site/src/components/{ => Resources}/AppLink/ShareIcon.tsx (94%) rename site/src/components/{ => Resources}/SSHButton/SSHButton.stories.tsx (100%) rename site/src/components/{ => Resources}/SSHButton/SSHButton.tsx (95%) rename site/src/components/{ => Resources}/TerminalLink/TerminalLink.stories.tsx (100%) rename site/src/components/{ => Resources}/TerminalLink/TerminalLink.tsx (92%) rename site/src/components/{ => Resources}/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx (100%) rename site/src/components/{ => Resources}/VSCodeDesktopButton/VSCodeDesktopButton.tsx (100%) rename site/src/components/{ => RichParameterInput}/MultiTextField/MultiTextField.stories.tsx (100%) rename site/src/components/{ => RichParameterInput}/MultiTextField/MultiTextField.tsx (100%) delete mode 100644 site/src/components/Section/Section.stories.tsx delete mode 100644 site/src/components/Section/Section.tsx rename site/src/components/{SectionAction => SettingsLayout}/SectionAction.tsx (100%) delete mode 100644 site/src/components/TabPanel/TabPanel.stories.tsx delete mode 100644 site/src/components/TabPanel/TabPanel.tsx delete mode 100644 site/src/components/TabSidebar/TabSidebar.stories.tsx delete mode 100644 site/src/components/TabSidebar/TabSidebar.tsx delete mode 100644 site/src/components/Tooltips/index.ts delete mode 100644 site/src/components/WarningAlert/WarningAlert.stories.tsx delete mode 100644 site/src/components/WarningAlert/WarningAlert.tsx rename site/src/components/{ => WorkspaceBuildLogs}/Logs/Logs.stories.tsx (89%) rename site/src/components/{ => WorkspaceBuildLogs}/Logs/Logs.tsx (96%) rename site/src/components/{Tooltips => WorkspaceOutdatedTooltip}/WorkspaceOutdatedTooltip.tsx (98%) delete mode 100644 site/src/components/WorkspaceSection/WorkspaceSection.stories.tsx rename site/src/{components/Tooltips => pages/AuditPage}/AuditHelpTooltip.tsx (94%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDescription/AuditLogDescription.test.tsx (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDescription/index.ts (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDiff/auditUtils.test.ts (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDiff/auditUtils.ts (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogDiff/index.ts (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogRow.stories.tsx (100%) rename site/src/{components => pages/AuditPage}/AuditLogRow/AuditLogRow.tsx (100%) rename site/src/{components/CreateUserForm => pages/CreateUserPage}/CreateUserForm.stories.tsx (100%) rename site/src/{components/CreateUserForm => pages/CreateUserPage}/CreateUserForm.tsx (95%) rename site/src/pages/{UsersPage => }/CreateUserPage/CreateUserPage.test.tsx (86%) rename site/src/pages/{UsersPage => }/CreateUserPage/CreateUserPage.tsx (86%) rename site/src/{components/GitAuth => pages/CreateWorkspacePage}/GitAuth.stories.tsx (100%) rename site/src/{components/GitAuth => pages/CreateWorkspacePage}/GitAuth.tsx (100%) rename site/src/{components/WorkspaceSection/WorkspaceSection.tsx => pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx} (87%) rename site/src/{components/LicenseCard => pages/DeploySettingsPage/LicensesSettingsPage}/LicenseCard.test.tsx (96%) rename site/src/{components/LicenseCard => pages/DeploySettingsPage/LicensesSettingsPage}/LicenseCard.tsx (100%) rename site/src/{components => pages/LoginPage}/SignInForm/OAuthSignInForm.tsx (97%) rename site/src/{components => pages/LoginPage}/SignInForm/PasswordSignInForm.tsx (90%) rename site/src/{components => pages/LoginPage}/SignInForm/SignInForm.stories.tsx (100%) rename site/src/{components => pages/LoginPage}/SignInForm/SignInForm.tsx (97%) rename site/src/{components => pages/LoginPage}/SignInForm/SignInForm.types.ts (100%) rename site/src/{components/TemplateStats => pages/TemplatePage/TemplateSummaryPage}/TemplateStats.stories.tsx (93%) rename site/src/{components/TemplateStats => pages/TemplatePage/TemplateSummaryPage}/TemplateStats.tsx (96%) rename site/src/{components/VersionsTable => pages/TemplatePage/TemplateVersionsPage}/VersionRow.tsx (100%) rename site/src/{components/VersionsTable => pages/TemplatePage/TemplateVersionsPage}/VersionsTable.stories.tsx (94%) rename site/src/{components/VersionsTable => pages/TemplatePage/TemplateVersionsPage}/VersionsTable.tsx (92%) rename site/src/{components/TemplateVariableField => pages/TemplateSettingsPage/TemplateVariablesPage}/TemplateVariableField.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/FileDialog.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/FileTreeView.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/MissingTemplateVariablesDialog.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/MonacoEditor.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/PublishTemplateVersionDialog.tsx (97%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/TemplateVersionEditor.stories.tsx (100%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/TemplateVersionEditor.tsx (99%) rename site/src/{components => pages/TemplateVersionEditorPage}/TemplateVersionEditor/TemplateVersionStatusBadge.tsx (100%) rename site/src/pages/{TemplateVersionPage => }/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx (98%) rename site/src/pages/{TemplateVersionPage => }/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx (96%) rename site/src/pages/{TemplateVersionPage => }/TemplateVersionEditorPage/data.ts (100%) rename site/src/pages/{TemplateVersionPage => }/TemplateVersionEditorPage/types.ts (100%) rename site/src/{components/SettingsAccountForm/SettingsAccountForm.stories.tsx => pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx} (89%) rename site/src/{components/SettingsAccountForm/SettingsAccountForm.test.tsx => pages/UserSettingsPage/AccountPage/AccountForm.test.tsx} (90%) rename site/src/{components/SettingsAccountForm/SettingsAccountForm.tsx => pages/UserSettingsPage/AccountPage/AccountForm.tsx} (93%) rename site/src/{components/SettingsSecurityForm => pages/UserSettingsPage/SecurityPage}/SettingsSecurityForm.stories.tsx (100%) rename site/src/{components/SettingsSecurityForm => pages/UserSettingsPage/SecurityPage}/SettingsSecurityForm.tsx (96%) rename site/src/pages/UserSettingsPage/TokensPage/{components => }/ConfirmDeleteDialog.stories.tsx (100%) rename site/src/pages/UserSettingsPage/TokensPage/{components => }/ConfirmDeleteDialog.tsx (97%) delete mode 100644 site/src/pages/UserSettingsPage/TokensPage/components/index.ts rename site/src/{components/Dialogs/ResetPasswordDialog => pages/UsersPage}/ResetPasswordDialog.stories.tsx (100%) rename site/src/{components/Dialogs/ResetPasswordDialog => pages/UsersPage}/ResetPasswordDialog.tsx (87%) rename site/src/{components/EditRolesButton => pages/UsersPage/UsersTable}/EditRolesButton.stories.tsx (100%) rename site/src/{components/EditRolesButton => pages/UsersPage/UsersTable}/EditRolesButton.tsx (99%) rename site/src/{components/Tooltips => pages/UsersPage/UsersTable}/UserRoleHelpTooltip.tsx (94%) rename site/src/{components => pages/UsersPage}/UsersTable/UsersTable.stories.tsx (100%) rename site/src/{components => pages/UsersPage}/UsersTable/UsersTable.tsx (94%) rename site/src/{components => pages/UsersPage}/UsersTable/UsersTableBody.tsx (96%) rename site/src/{components/BuildsTable => pages/WorkspacePage}/BuildRow.tsx (98%) rename site/src/{components/BuildsTable => pages/WorkspacePage}/BuildsTable.stories.tsx (89%) rename site/src/{components/BuildsTable => pages/WorkspacePage}/BuildsTable.tsx (88%) rename site/src/{components/Workspace => pages/WorkspacePage}/Workspace.stories.tsx (100%) rename site/src/{components/Workspace => pages/WorkspacePage}/Workspace.tsx (95%) rename site/src/{components => pages/WorkspacePage}/WorkspaceActions/BuildParametersPopover.tsx (99%) rename site/src/{components => pages/WorkspacePage}/WorkspaceActions/Buttons.tsx (100%) rename site/src/{components => pages/WorkspacePage}/WorkspaceActions/WorkspaceActions.stories.tsx (97%) rename site/src/{components => pages/WorkspacePage}/WorkspaceActions/WorkspaceActions.tsx (100%) rename site/src/{components => pages/WorkspacePage}/WorkspaceActions/constants.ts (100%) rename site/src/{components/WorkspaceBuildProgress => pages/WorkspacePage}/WorkspaceBuildProgress.stories.tsx (100%) rename site/src/{components/WorkspaceBuildProgress => pages/WorkspacePage}/WorkspaceBuildProgress.tsx (100%) rename site/src/{components/WorkspaceDeletedBanner => pages/WorkspacePage}/WorkspaceDeletedBanner.stories.tsx (100%) rename site/src/{components/WorkspaceDeletedBanner => pages/WorkspacePage}/WorkspaceDeletedBanner.tsx (100%) rename site/src/{components/WorkspaceStats => pages/WorkspacePage}/WorkspaceStats.stories.tsx (91%) rename site/src/{components/WorkspaceStats => pages/WorkspacePage}/WorkspaceStats.tsx (98%) rename site/src/{components/WorkspaceScheduleForm => pages/WorkspaceSettingsPage/WorkspaceSchedulePage}/WorkspaceScheduleForm.stories.tsx (100%) rename site/src/{components/WorkspaceScheduleForm => pages/WorkspaceSettingsPage/WorkspaceSchedulePage}/WorkspaceScheduleForm.test.ts (100%) rename site/src/{components/WorkspaceScheduleForm => pages/WorkspaceSettingsPage/WorkspaceSchedulePage}/WorkspaceScheduleForm.tsx (99%) create mode 100644 site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.test.ts rename site/src/{components/WorkspaceScheduleForm => pages/WorkspaceSettingsPage/WorkspaceSchedulePage}/zones.ts (100%) rename site/src/{components/Tooltips => pages/WorkspacesPage}/WorkspaceHelpTooltip.tsx (96%) diff --git a/site/e2e/global.setup.ts b/site/e2e/global.setup.ts index 06e41ec343..db52c1057f 100644 --- a/site/e2e/global.setup.ts +++ b/site/e2e/global.setup.ts @@ -1,7 +1,7 @@ import { test, expect } from "@playwright/test" import * as constants from "./constants" import { STORAGE_STATE } from "./playwright.config" -import { Language } from "../src/components/CreateUserForm/CreateUserForm" +import { Language } from "../src/pages/CreateUserPage/CreateUserForm" test("create first user", async ({ page }) => { await page.goto("/", { waitUntil: "domcontentloaded" }) diff --git a/site/src/AppRouter.tsx b/site/src/AppRouter.tsx index 785048fe72..b470b66abd 100644 --- a/site/src/AppRouter.tsx +++ b/site/src/AppRouter.tsx @@ -43,7 +43,7 @@ const WorkspaceProxyPage = lazy( import("./pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage"), ) const CreateUserPage = lazy( - () => import("./pages/UsersPage/CreateUserPage/CreateUserPage"), + () => import("./pages/CreateUserPage/CreateUserPage"), ) const WorkspaceBuildPage = lazy( () => import("./pages/WorkspaceBuildPage/WorkspaceBuildPage"), @@ -120,10 +120,7 @@ const TemplateVersionPage = lazy( () => import("./pages/TemplateVersionPage/TemplateVersionPage"), ) const TemplateVersionEditorPage = lazy( - () => - import( - "./pages/TemplateVersionPage/TemplateVersionEditorPage/TemplateVersionEditorPage" - ), + () => import("./pages/TemplateVersionEditorPage/TemplateVersionEditorPage"), ) const StarterTemplatesPage = lazy( () => import("./pages/StarterTemplatesPage/StarterTemplatesPage"), diff --git a/site/src/components/BuildsTable/BuildAvatar.tsx b/site/src/components/BuildAvatar/BuildAvatar.tsx similarity index 100% rename from site/src/components/BuildsTable/BuildAvatar.tsx rename to site/src/components/BuildAvatar/BuildAvatar.tsx diff --git a/site/src/components/CodeBlock/CodeBlock.stories.tsx b/site/src/components/CodeBlock/CodeBlock.stories.tsx deleted file mode 100644 index 2716b32b79..0000000000 --- a/site/src/components/CodeBlock/CodeBlock.stories.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Story } from "@storybook/react" -import { CodeBlock, CodeBlockProps } from "./CodeBlock" - -const sampleLines = `Successfully assigned coder/image-jcws7 to cluster-1 -Container image "gcr.io/coder-dogfood/master/coder-dev-ubuntu@sha256" already present on machine -Created container user -Started container user -Using user 'coder' with shell '/bin/bash'`.split("\n") - -export default { - title: "components/CodeBlock", - component: CodeBlock, - argTypes: { - lines: { control: "text", defaultValue: sampleLines }, - }, -} - -const Template: Story = (args: CodeBlockProps) => ( - -) - -export const Example = Template.bind({}) -Example.args = { - lines: sampleLines, -} diff --git a/site/src/components/CodeBlock/CodeBlock.test.tsx b/site/src/components/CodeBlock/CodeBlock.test.tsx deleted file mode 100644 index 3140893385..0000000000 --- a/site/src/components/CodeBlock/CodeBlock.test.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { screen } from "@testing-library/react" -import { render } from "../../testHelpers/renderHelpers" -import { CodeBlock } from "./CodeBlock" - -describe("CodeBlock", () => { - it("renders lines)", async () => { - // When - render() - - // Then - // Both lines should be rendered - await screen.findByText("line1") - await screen.findByText("line2") - }) -}) diff --git a/site/src/components/CodeBlock/CodeBlock.tsx b/site/src/components/CodeBlock/CodeBlock.tsx deleted file mode 100644 index e7af0b9d32..0000000000 --- a/site/src/components/CodeBlock/CodeBlock.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { makeStyles } from "@mui/styles" -import { FC, Fragment, ReactElement } from "react" -import { MONOSPACE_FONT_FAMILY } from "../../theme/constants" -import { combineClasses } from "../../utils/combineClasses" - -export interface CodeBlockProps { - lines: string[] - ctas?: ReactElement[] - className?: string -} - -export const CodeBlock: FC> = ({ - lines, - ctas, - className = "", -}) => { - const styles = useStyles() - - return ( - <> -
- {lines.map((line, idx) => ( -
- {line} -
- ))} -
- {ctas && ctas.length > 0 && ( -
- {ctas.map((cta, i) => { - return {cta} - })} -
- )} - - ) -} - -const useStyles = makeStyles((theme) => ({ - root: { - minHeight: 156, - maxHeight: 240, - overflowY: "scroll", - background: theme.palette.background.default, - color: theme.palette.text.primary, - fontFamily: MONOSPACE_FONT_FAMILY, - fontSize: 13, - wordBreak: "break-all", - padding: theme.spacing(2), - borderRadius: theme.shape.borderRadius, - }, - line: { - whiteSpace: "pre-wrap", - }, - ctaBar: { - display: "flex", - justifyContent: "space-between", - }, -})) diff --git a/site/src/components/DAUChart/DAUChart.tsx b/site/src/components/DAUChart/DAUChart.tsx index ae93b0e086..53c32c6ead 100644 --- a/site/src/components/DAUChart/DAUChart.tsx +++ b/site/src/components/DAUChart/DAUChart.tsx @@ -19,7 +19,7 @@ import { HelpTooltip, HelpTooltipTitle, HelpTooltipText, -} from "components/Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import dayjs from "dayjs" import { FC } from "react" import { Bar } from "react-chartjs-2" diff --git a/site/src/components/Dashboard/DashboardLayout.tsx b/site/src/components/Dashboard/DashboardLayout.tsx index 605f305a49..124630ce0a 100644 --- a/site/src/components/Dashboard/DashboardLayout.tsx +++ b/site/src/components/Dashboard/DashboardLayout.tsx @@ -1,15 +1,15 @@ import { makeStyles } from "@mui/styles" import { useMachine } from "@xstate/react" -import { DeploymentBanner } from "components/DeploymentBanner/DeploymentBanner" -import { LicenseBanner } from "components/LicenseBanner/LicenseBanner" +import { DeploymentBanner } from "./DeploymentBanner/DeploymentBanner" +import { LicenseBanner } from "components/Dashboard/LicenseBanner/LicenseBanner" import { Loader } from "components/Loader/Loader" -import { ServiceBanner } from "components/ServiceBanner/ServiceBanner" +import { ServiceBanner } from "components/Dashboard/ServiceBanner/ServiceBanner" import { usePermissions } from "hooks/usePermissions" import { FC, Suspense } from "react" import { Outlet } from "react-router-dom" import { dashboardContentBottomPadding } from "theme/constants" import { updateCheckMachine } from "xServices/updateCheck/updateCheckXService" -import { Navbar } from "../Navbar/Navbar" +import { Navbar } from "./Navbar/Navbar" import Snackbar from "@mui/material/Snackbar" import Link from "@mui/material/Link" import Box, { BoxProps } from "@mui/material/Box" diff --git a/site/src/components/DeploymentBanner/DeploymentBanner.tsx b/site/src/components/Dashboard/DeploymentBanner/DeploymentBanner.tsx similarity index 85% rename from site/src/components/DeploymentBanner/DeploymentBanner.tsx rename to site/src/components/Dashboard/DeploymentBanner/DeploymentBanner.tsx index d5cd1e25e5..561efcaf84 100644 --- a/site/src/components/DeploymentBanner/DeploymentBanner.tsx +++ b/site/src/components/Dashboard/DeploymentBanner/DeploymentBanner.tsx @@ -1,7 +1,7 @@ import { useMachine } from "@xstate/react" import { usePermissions } from "hooks/usePermissions" import { DeploymentBannerView } from "./DeploymentBannerView" -import { deploymentStatsMachine } from "../../xServices/deploymentStats/deploymentStatsMachine" +import { deploymentStatsMachine } from "xServices/deploymentStats/deploymentStatsMachine" export const DeploymentBanner: React.FC = () => { const permissions = usePermissions() diff --git a/site/src/components/DeploymentBanner/DeploymentBannerView.stories.tsx b/site/src/components/Dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx similarity index 100% rename from site/src/components/DeploymentBanner/DeploymentBannerView.stories.tsx rename to site/src/components/Dashboard/DeploymentBanner/DeploymentBannerView.stories.tsx diff --git a/site/src/components/DeploymentBanner/DeploymentBannerView.tsx b/site/src/components/Dashboard/DeploymentBanner/DeploymentBannerView.tsx similarity index 100% rename from site/src/components/DeploymentBanner/DeploymentBannerView.tsx rename to site/src/components/Dashboard/DeploymentBanner/DeploymentBannerView.tsx diff --git a/site/src/components/LicenseBanner/LicenseBanner.tsx b/site/src/components/Dashboard/LicenseBanner/LicenseBanner.tsx similarity index 100% rename from site/src/components/LicenseBanner/LicenseBanner.tsx rename to site/src/components/Dashboard/LicenseBanner/LicenseBanner.tsx diff --git a/site/src/components/LicenseBanner/LicenseBannerView.stories.tsx b/site/src/components/Dashboard/LicenseBanner/LicenseBannerView.stories.tsx similarity index 100% rename from site/src/components/LicenseBanner/LicenseBannerView.stories.tsx rename to site/src/components/Dashboard/LicenseBanner/LicenseBannerView.stories.tsx diff --git a/site/src/components/LicenseBanner/LicenseBannerView.tsx b/site/src/components/Dashboard/LicenseBanner/LicenseBannerView.tsx similarity index 100% rename from site/src/components/LicenseBanner/LicenseBannerView.tsx rename to site/src/components/Dashboard/LicenseBanner/LicenseBannerView.tsx diff --git a/site/src/components/Navbar/Navbar.test.tsx b/site/src/components/Dashboard/Navbar/Navbar.test.tsx similarity index 100% rename from site/src/components/Navbar/Navbar.test.tsx rename to site/src/components/Dashboard/Navbar/Navbar.test.tsx diff --git a/site/src/components/Navbar/Navbar.tsx b/site/src/components/Dashboard/Navbar/Navbar.tsx similarity index 100% rename from site/src/components/Navbar/Navbar.tsx rename to site/src/components/Dashboard/Navbar/Navbar.tsx diff --git a/site/src/components/Navbar/NavbarView.stories.tsx b/site/src/components/Dashboard/Navbar/NavbarView.stories.tsx similarity index 92% rename from site/src/components/Navbar/NavbarView.stories.tsx rename to site/src/components/Dashboard/Navbar/NavbarView.stories.tsx index 83347adbe0..d62358cb5f 100644 --- a/site/src/components/Navbar/NavbarView.stories.tsx +++ b/site/src/components/Dashboard/Navbar/NavbarView.stories.tsx @@ -1,5 +1,5 @@ import { Story } from "@storybook/react" -import { MockUser, MockUser2 } from "../../testHelpers/entities" +import { MockUser, MockUser2 } from "../../../testHelpers/entities" import { NavbarView, NavbarViewProps } from "./NavbarView" export default { diff --git a/site/src/components/Navbar/NavbarView.test.tsx b/site/src/components/Dashboard/Navbar/NavbarView.test.tsx similarity index 97% rename from site/src/components/Navbar/NavbarView.test.tsx rename to site/src/components/Dashboard/Navbar/NavbarView.test.tsx index 2ba0abc8e0..8688269b78 100644 --- a/site/src/components/Navbar/NavbarView.test.tsx +++ b/site/src/components/Dashboard/Navbar/NavbarView.test.tsx @@ -3,8 +3,8 @@ import { MockPrimaryWorkspaceProxy, MockUser, MockUser2, -} from "../../testHelpers/entities" -import { renderWithAuth } from "../../testHelpers/renderHelpers" +} from "../../../testHelpers/entities" +import { renderWithAuth } from "../../../testHelpers/renderHelpers" import { Language as navLanguage, NavbarView } from "./NavbarView" import { ProxyContextValue } from "contexts/ProxyContext" import { action } from "@storybook/addon-actions" diff --git a/site/src/components/Navbar/NavbarView.tsx b/site/src/components/Dashboard/Navbar/NavbarView.tsx similarity index 98% rename from site/src/components/Navbar/NavbarView.tsx rename to site/src/components/Dashboard/Navbar/NavbarView.tsx index 6a6d0cfc03..2f742fa417 100644 --- a/site/src/components/Navbar/NavbarView.tsx +++ b/site/src/components/Dashboard/Navbar/NavbarView.tsx @@ -8,10 +8,10 @@ import { CoderIcon } from "components/Icons/CoderIcon" import { FC, useRef, useState } from "react" import { NavLink, useLocation, useNavigate } from "react-router-dom" import { colors } from "theme/colors" -import * as TypesGen from "../../api/typesGenerated" -import { navHeight } from "../../theme/constants" -import { combineClasses } from "../../utils/combineClasses" -import { UserDropdown } from "../UserDropdown/UserDropdown" +import * as TypesGen from "../../../api/typesGenerated" +import { navHeight } from "../../../theme/constants" +import { combineClasses } from "../../../utils/combineClasses" +import { UserDropdown } from "./UserDropdown/UserDropdown" import Box from "@mui/material/Box" import Menu from "@mui/material/Menu" import Button from "@mui/material/Button" diff --git a/site/src/components/BorderedMenu/BorderedMenu.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/BorderedMenu/BorderedMenu.tsx similarity index 100% rename from site/src/components/BorderedMenu/BorderedMenu.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/BorderedMenu/BorderedMenu.tsx diff --git a/site/src/components/BorderedMenuRow/BorderedMenuRow.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/BorderedMenu/BorderedMenuRow.tsx similarity index 95% rename from site/src/components/BorderedMenuRow/BorderedMenuRow.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/BorderedMenu/BorderedMenuRow.tsx index fa67df6cf9..4974dc9539 100644 --- a/site/src/components/BorderedMenuRow/BorderedMenuRow.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/BorderedMenu/BorderedMenuRow.tsx @@ -3,8 +3,8 @@ import { makeStyles } from "@mui/styles" import CheckIcon from "@mui/icons-material/Check" import { FC } from "react" import { NavLink } from "react-router-dom" -import { ellipsizeText } from "../../utils/ellipsizeText" -import { Typography } from "../Typography/Typography" +import { ellipsizeText } from "../../../../../utils/ellipsizeText" +import { Typography } from "../../../../Typography/Typography" type BorderedMenuRowVariant = "narrow" | "wide" diff --git a/site/src/components/UserDropdown/UserDropdown.stories.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx similarity index 90% rename from site/src/components/UserDropdown/UserDropdown.stories.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx index 6e75b70797..29b1591e56 100644 --- a/site/src/components/UserDropdown/UserDropdown.stories.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.stories.tsx @@ -1,6 +1,6 @@ import Box from "@mui/material/Box" import { Story } from "@storybook/react" -import { MockUser } from "../../testHelpers/entities" +import { MockUser } from "../../../../testHelpers/entities" import { UserDropdown, UserDropdownProps } from "./UserDropdown" export default { diff --git a/site/src/components/UserDropdown/UserDropdown.test.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.test.tsx similarity index 82% rename from site/src/components/UserDropdown/UserDropdown.test.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.test.tsx index 2ffcb6d0b5..ad44311f77 100644 --- a/site/src/components/UserDropdown/UserDropdown.test.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.test.tsx @@ -1,7 +1,7 @@ import { fireEvent, screen } from "@testing-library/react" -import { MockSupportLinks, MockUser } from "../../testHelpers/entities" -import { render } from "../../testHelpers/renderHelpers" -import { Language } from "../UserDropdownContent/UserDropdownContent" +import { MockSupportLinks, MockUser } from "../../../../testHelpers/entities" +import { render } from "../../../../testHelpers/renderHelpers" +import { Language } from "./UserDropdownContent/UserDropdownContent" import { UserDropdown, UserDropdownProps } from "./UserDropdown" const renderAndClick = async (props: Partial = {}) => { diff --git a/site/src/components/UserDropdown/UserDropdown.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.tsx similarity index 86% rename from site/src/components/UserDropdown/UserDropdown.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.tsx index 1e77e5ad6b..b74b7188cb 100644 --- a/site/src/components/UserDropdown/UserDropdown.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdown.tsx @@ -3,12 +3,15 @@ import MenuItem from "@mui/material/MenuItem" import { makeStyles } from "@mui/styles" import { useState, FC, PropsWithChildren, MouseEvent } from "react" import { colors } from "theme/colors" -import * as TypesGen from "../../api/typesGenerated" -import { navHeight } from "../../theme/constants" -import { BorderedMenu } from "../BorderedMenu/BorderedMenu" -import { CloseDropdown, OpenDropdown } from "../DropdownArrows/DropdownArrows" -import { UserAvatar } from "../UserAvatar/UserAvatar" -import { UserDropdownContent } from "../UserDropdownContent/UserDropdownContent" +import * as TypesGen from "../../../../api/typesGenerated" +import { navHeight } from "../../../../theme/constants" +import { BorderedMenu } from "./BorderedMenu/BorderedMenu" +import { + CloseDropdown, + OpenDropdown, +} from "../../../DropdownArrows/DropdownArrows" +import { UserAvatar } from "../../../UserAvatar/UserAvatar" +import { UserDropdownContent } from "./UserDropdownContent/UserDropdownContent" import { BUTTON_SM_HEIGHT } from "theme/theme" export interface UserDropdownProps { diff --git a/site/src/components/UserDropdownContent/UserDropdownContent.stories.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.stories.tsx similarity index 93% rename from site/src/components/UserDropdownContent/UserDropdownContent.stories.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.stories.tsx index ee562021b2..79d42e1fd9 100644 --- a/site/src/components/UserDropdownContent/UserDropdownContent.stories.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.stories.tsx @@ -1,5 +1,5 @@ import { Story } from "@storybook/react" -import { MockUser } from "../../testHelpers/entities" +import { MockUser } from "../../../../../testHelpers/entities" import { UserDropdownContent, UserDropdownContentProps, diff --git a/site/src/components/UserDropdownContent/UserDropdownContent.test.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.test.tsx similarity index 95% rename from site/src/components/UserDropdownContent/UserDropdownContent.test.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.test.tsx index 3eb538c6b6..5826fb8f10 100644 --- a/site/src/components/UserDropdownContent/UserDropdownContent.test.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.test.tsx @@ -3,8 +3,8 @@ import { MockBuildInfo, MockSupportLinks, MockUser, -} from "../../testHelpers/entities" -import { render } from "../../testHelpers/renderHelpers" +} from "../../../../../testHelpers/entities" +import { render } from "../../../../../testHelpers/renderHelpers" import { Language, UserDropdownContent } from "./UserDropdownContent" describe("UserDropdownContent", () => { diff --git a/site/src/components/UserDropdownContent/UserDropdownContent.tsx b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.tsx similarity index 98% rename from site/src/components/UserDropdownContent/UserDropdownContent.tsx rename to site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.tsx index c5f779b54d..a17accfd4c 100644 --- a/site/src/components/UserDropdownContent/UserDropdownContent.tsx +++ b/site/src/components/Dashboard/Navbar/UserDropdown/UserDropdownContent/UserDropdownContent.tsx @@ -8,7 +8,7 @@ import LaunchIcon from "@mui/icons-material/LaunchOutlined" import { Stack } from "components/Stack/Stack" import { FC } from "react" import { Link } from "react-router-dom" -import * as TypesGen from "../../api/typesGenerated" +import * as TypesGen from "../../../../../api/typesGenerated" import DocsIcon from "@mui/icons-material/MenuBook" import LogoutIcon from "@mui/icons-material/ExitToAppOutlined" import { combineClasses } from "utils/combineClasses" diff --git a/site/src/components/ServiceBanner/ServiceBanner.tsx b/site/src/components/Dashboard/ServiceBanner/ServiceBanner.tsx similarity index 100% rename from site/src/components/ServiceBanner/ServiceBanner.tsx rename to site/src/components/Dashboard/ServiceBanner/ServiceBanner.tsx diff --git a/site/src/components/ServiceBanner/ServiceBannerView.stories.tsx b/site/src/components/Dashboard/ServiceBanner/ServiceBannerView.stories.tsx similarity index 100% rename from site/src/components/ServiceBanner/ServiceBannerView.stories.tsx rename to site/src/components/Dashboard/ServiceBanner/ServiceBannerView.stories.tsx diff --git a/site/src/components/ServiceBanner/ServiceBannerView.tsx b/site/src/components/Dashboard/ServiceBanner/ServiceBannerView.tsx similarity index 100% rename from site/src/components/ServiceBanner/ServiceBannerView.tsx rename to site/src/components/Dashboard/ServiceBanner/ServiceBannerView.tsx diff --git a/site/src/components/ErrorBoundary/ErrorBoundary.tsx b/site/src/components/ErrorBoundary/ErrorBoundary.tsx index 9f6eae8c97..a8aa101b55 100644 --- a/site/src/components/ErrorBoundary/ErrorBoundary.tsx +++ b/site/src/components/ErrorBoundary/ErrorBoundary.tsx @@ -1,5 +1,5 @@ import { Component, ReactNode, PropsWithChildren } from "react" -import { RuntimeErrorState } from "../RuntimeErrorState/RuntimeErrorState" +import { RuntimeErrorState } from "./RuntimeErrorState/RuntimeErrorState" type ErrorBoundaryProps = PropsWithChildren diff --git a/site/src/components/RuntimeErrorState/RuntimeErrorState.stories.tsx b/site/src/components/ErrorBoundary/RuntimeErrorState/RuntimeErrorState.stories.tsx similarity index 100% rename from site/src/components/RuntimeErrorState/RuntimeErrorState.stories.tsx rename to site/src/components/ErrorBoundary/RuntimeErrorState/RuntimeErrorState.stories.tsx diff --git a/site/src/components/RuntimeErrorState/RuntimeErrorState.tsx b/site/src/components/ErrorBoundary/RuntimeErrorState/RuntimeErrorState.tsx similarity index 99% rename from site/src/components/RuntimeErrorState/RuntimeErrorState.tsx rename to site/src/components/ErrorBoundary/RuntimeErrorState/RuntimeErrorState.tsx index 3d2a0bd6a7..332b8c9970 100644 --- a/site/src/components/RuntimeErrorState/RuntimeErrorState.tsx +++ b/site/src/components/ErrorBoundary/RuntimeErrorState/RuntimeErrorState.tsx @@ -9,7 +9,7 @@ import { FullScreenLoader } from "components/Loader/FullScreenLoader" import { Stack } from "components/Stack/Stack" import { FC, useEffect, useState } from "react" import { Helmet } from "react-helmet-async" -import { Margins } from "../Margins/Margins" +import { Margins } from "../../Margins/Margins" const fetchDynamicallyImportedModuleError = "Failed to fetch dynamically imported module" diff --git a/site/src/components/EnterpriseSnackbar/EnterpriseSnackbar.stories.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar/EnterpriseSnackbar.stories.tsx similarity index 100% rename from site/src/components/EnterpriseSnackbar/EnterpriseSnackbar.stories.tsx rename to site/src/components/GlobalSnackbar/EnterpriseSnackbar/EnterpriseSnackbar.stories.tsx diff --git a/site/src/components/EnterpriseSnackbar/EnterpriseSnackbar.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar/EnterpriseSnackbar.tsx similarity index 98% rename from site/src/components/EnterpriseSnackbar/EnterpriseSnackbar.tsx rename to site/src/components/GlobalSnackbar/EnterpriseSnackbar/EnterpriseSnackbar.tsx index 3708eb4588..07e8ac7cd3 100644 --- a/site/src/components/EnterpriseSnackbar/EnterpriseSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/EnterpriseSnackbar/EnterpriseSnackbar.tsx @@ -5,7 +5,7 @@ import Snackbar, { import { makeStyles } from "@mui/styles" import CloseIcon from "@mui/icons-material/Close" import { FC } from "react" -import { combineClasses } from "../../utils/combineClasses" +import { combineClasses } from "../../../utils/combineClasses" type EnterpriseSnackbarVariant = "error" | "info" | "success" diff --git a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx index 6287918045..c143f22341 100644 --- a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx @@ -2,7 +2,7 @@ import { makeStyles } from "@mui/styles" import { useCallback, useState, FC } from "react" import { useCustomEvent } from "../../hooks/events" import { CustomEventListener } from "../../utils/events" -import { EnterpriseSnackbar } from "../EnterpriseSnackbar/EnterpriseSnackbar" +import { EnterpriseSnackbar } from "./EnterpriseSnackbar/EnterpriseSnackbar" import { ErrorIcon } from "../Icons/ErrorIcon" import { Typography } from "../Typography/Typography" import { diff --git a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx b/site/src/components/HelpTooltip/HelpTooltip.stories.tsx similarity index 100% rename from site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx rename to site/src/components/HelpTooltip/HelpTooltip.stories.tsx diff --git a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx b/site/src/components/HelpTooltip/HelpTooltip.tsx similarity index 99% rename from site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx rename to site/src/components/HelpTooltip/HelpTooltip.tsx index b248450667..bb1a9a9af3 100644 --- a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.tsx @@ -12,7 +12,7 @@ import { PropsWithChildren, } from "react" import { combineClasses } from "utils/combineClasses" -import { Stack } from "../../Stack/Stack" +import { Stack } from "components/Stack/Stack" import Box, { BoxProps } from "@mui/material/Box" type Icon = typeof HelpIcon diff --git a/site/src/components/Tooltips/HelpTooltip/index.ts b/site/src/components/HelpTooltip/index.ts similarity index 100% rename from site/src/components/Tooltips/HelpTooltip/index.ts rename to site/src/components/HelpTooltip/index.ts diff --git a/site/src/components/PasswordField/PasswordField.test.tsx b/site/src/components/PasswordField/PasswordField.test.tsx deleted file mode 100644 index e5c08afa44..0000000000 --- a/site/src/components/PasswordField/PasswordField.test.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { render, screen } from "@testing-library/react" -import { PasswordField } from "./PasswordField" - -describe("PasswordField", () => { - it("renders", async () => { - // When - render() - - // Then - const element = await screen.findByText("Enter password") - expect(element).toBeDefined() - }) -}) diff --git a/site/src/components/PasswordField/PasswordField.tsx b/site/src/components/PasswordField/PasswordField.tsx deleted file mode 100644 index f1eb57b356..0000000000 --- a/site/src/components/PasswordField/PasswordField.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import IconButton from "@mui/material/IconButton" -import InputAdornment from "@mui/material/InputAdornment" -import { makeStyles } from "@mui/styles" -import TextField, { TextFieldProps } from "@mui/material/TextField" -import VisibilityOffOutlined from "@mui/icons-material/VisibilityOffOutlined" -import VisibilityOutlined from "@mui/icons-material/VisibilityOutlined" -import { useCallback, useState, FC, PropsWithChildren } from "react" - -type PasswordFieldProps = Omit - -export const PasswordField: FC> = ({ - variant = "outlined", - ...rest -}) => { - const styles = useStyles() - const [showPassword, setShowPassword] = useState(false) - - const handleVisibilityChange = useCallback( - () => setShowPassword((showPassword) => !showPassword), - [], - ) - const VisibilityIcon = showPassword - ? VisibilityOffOutlined - : VisibilityOutlined - - return ( - - - - - - ), - }} - /> - ) -} - -const useStyles = makeStyles({ - visibilityIcon: { - fontSize: 20, - }, -}) diff --git a/site/src/components/Resources/AgentLatency.tsx b/site/src/components/Resources/AgentLatency.tsx index 6f3ef29ad7..2d3c63d0a0 100644 --- a/site/src/components/Resources/AgentLatency.tsx +++ b/site/src/components/Resources/AgentLatency.tsx @@ -5,7 +5,7 @@ import { HelpTooltipText, HelpPopover, HelpTooltipTitle, -} from "components/Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { Stack } from "components/Stack/Stack" import { WorkspaceAgent, DERPRegion } from "api/typesGenerated" import { getLatencyColor } from "utils/latency" diff --git a/site/src/components/Tooltips/AgentOutdatedTooltip.tsx b/site/src/components/Resources/AgentOutdatedTooltip.tsx similarity index 98% rename from site/src/components/Tooltips/AgentOutdatedTooltip.tsx rename to site/src/components/Resources/AgentOutdatedTooltip.tsx index eb706f3a58..dc095a7c35 100644 --- a/site/src/components/Tooltips/AgentOutdatedTooltip.tsx +++ b/site/src/components/Resources/AgentOutdatedTooltip.tsx @@ -8,7 +8,7 @@ import { HelpTooltipAction, HelpTooltipLinksGroup, HelpTooltipContext, -} from "components/Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { WorkspaceAgent } from "api/typesGenerated" import { Stack } from "components/Stack/Stack" import { useTranslation } from "react-i18next" diff --git a/site/src/components/Resources/AgentRow.tsx b/site/src/components/Resources/AgentRow.tsx index 508156e573..8dee461172 100644 --- a/site/src/components/Resources/AgentRow.tsx +++ b/site/src/components/Resources/AgentRow.tsx @@ -7,9 +7,9 @@ import { CloseDropdown, OpenDropdown, } from "components/DropdownArrows/DropdownArrows" -import { LogLine, logLineHeight } from "components/Logs/Logs" +import { LogLine, logLineHeight } from "components/WorkspaceBuildLogs/Logs/Logs" import { PortForwardButton } from "./PortForwardButton" -import { VSCodeDesktopButton } from "components/VSCodeDesktopButton/VSCodeDesktopButton" +import { VSCodeDesktopButton } from "components/Resources/VSCodeDesktopButton/VSCodeDesktopButton" import { FC, useCallback, @@ -34,10 +34,10 @@ import { WorkspaceAgent, WorkspaceAgentMetadata, } from "../../api/typesGenerated" -import { AppLink } from "../AppLink/AppLink" -import { SSHButton } from "../SSHButton/SSHButton" +import { AppLink } from "./AppLink/AppLink" +import { SSHButton } from "./SSHButton/SSHButton" import { Stack } from "../Stack/Stack" -import { TerminalLink } from "../TerminalLink/TerminalLink" +import { TerminalLink } from "./TerminalLink/TerminalLink" import { AgentLatency } from "./AgentLatency" import { AgentMetadata } from "./AgentMetadata" import { AgentVersion } from "./AgentVersion" diff --git a/site/src/components/Resources/AgentRowPreview.tsx b/site/src/components/Resources/AgentRowPreview.tsx index 9f7926fb42..970c991292 100644 --- a/site/src/components/Resources/AgentRowPreview.tsx +++ b/site/src/components/Resources/AgentRowPreview.tsx @@ -1,5 +1,5 @@ import { makeStyles } from "@mui/styles" -import { AppPreviewLink } from "components/AppLink/AppPreviewLink" +import { AppPreviewLink } from "components/Resources/AppLink/AppPreviewLink" import { Maybe } from "components/Conditionals/Maybe" import { FC } from "react" import { useTranslation } from "react-i18next" diff --git a/site/src/components/Resources/AgentStatus.tsx b/site/src/components/Resources/AgentStatus.tsx index 7a8b80a3a5..8e4eb823b9 100644 --- a/site/src/components/Resources/AgentStatus.tsx +++ b/site/src/components/Resources/AgentStatus.tsx @@ -9,7 +9,7 @@ import { HelpPopover, HelpTooltipText, HelpTooltipTitle, -} from "components/Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { useRef, useState } from "react" import Link from "@mui/material/Link" diff --git a/site/src/components/Resources/AgentVersion.tsx b/site/src/components/Resources/AgentVersion.tsx index c6caff69a9..3fe4cf60e2 100644 --- a/site/src/components/Resources/AgentVersion.tsx +++ b/site/src/components/Resources/AgentVersion.tsx @@ -2,7 +2,7 @@ import { useRef, useState, FC } from "react" import { makeStyles } from "@mui/styles" import { WorkspaceAgent } from "api/typesGenerated" import { getDisplayVersionStatus } from "utils/workspace" -import { AgentOutdatedTooltip } from "components/Tooltips/AgentOutdatedTooltip" +import { AgentOutdatedTooltip } from "./AgentOutdatedTooltip" export const AgentVersion: FC<{ agent: WorkspaceAgent diff --git a/site/src/components/AppLink/AppLink.stories.tsx b/site/src/components/Resources/AppLink/AppLink.stories.tsx similarity index 100% rename from site/src/components/AppLink/AppLink.stories.tsx rename to site/src/components/Resources/AppLink/AppLink.stories.tsx diff --git a/site/src/components/AppLink/AppLink.tsx b/site/src/components/Resources/AppLink/AppLink.tsx similarity index 97% rename from site/src/components/AppLink/AppLink.tsx rename to site/src/components/Resources/AppLink/AppLink.tsx index 5e3dee4642..b936c6c1fb 100644 --- a/site/src/components/AppLink/AppLink.tsx +++ b/site/src/components/Resources/AppLink/AppLink.tsx @@ -6,8 +6,8 @@ import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline" import { PrimaryAgentButton } from "components/Resources/AgentButton" import { FC } from "react" import { combineClasses } from "utils/combineClasses" -import * as TypesGen from "../../api/typesGenerated" -import { generateRandomString } from "../../utils/random" +import * as TypesGen from "../../../api/typesGenerated" +import { generateRandomString } from "../../../utils/random" import { BaseIcon } from "./BaseIcon" import { ShareIcon } from "./ShareIcon" import { useProxy } from "contexts/ProxyContext" diff --git a/site/src/components/AppLink/AppPreviewLink.tsx b/site/src/components/Resources/AppLink/AppPreviewLink.tsx similarity index 100% rename from site/src/components/AppLink/AppPreviewLink.tsx rename to site/src/components/Resources/AppLink/AppPreviewLink.tsx diff --git a/site/src/components/AppLink/BaseIcon.tsx b/site/src/components/Resources/AppLink/BaseIcon.tsx similarity index 100% rename from site/src/components/AppLink/BaseIcon.tsx rename to site/src/components/Resources/AppLink/BaseIcon.tsx diff --git a/site/src/components/AppLink/ShareIcon.tsx b/site/src/components/Resources/AppLink/ShareIcon.tsx similarity index 94% rename from site/src/components/AppLink/ShareIcon.tsx rename to site/src/components/Resources/AppLink/ShareIcon.tsx index 9e3f86aa44..f7d737534b 100644 --- a/site/src/components/AppLink/ShareIcon.tsx +++ b/site/src/components/Resources/AppLink/ShareIcon.tsx @@ -1,7 +1,7 @@ import PublicOutlinedIcon from "@mui/icons-material/PublicOutlined" import GroupOutlinedIcon from "@mui/icons-material/GroupOutlined" import LaunchOutlinedIcon from "@mui/icons-material/LaunchOutlined" -import * as TypesGen from "../../api/typesGenerated" +import * as TypesGen from "../../../api/typesGenerated" import Tooltip from "@mui/material/Tooltip" import { useTranslation } from "react-i18next" diff --git a/site/src/components/Resources/PortForwardButton.tsx b/site/src/components/Resources/PortForwardButton.tsx index 4f9faf540a..b2e52c6bcd 100644 --- a/site/src/components/Resources/PortForwardButton.tsx +++ b/site/src/components/Resources/PortForwardButton.tsx @@ -8,7 +8,7 @@ import { HelpTooltipLinksGroup, HelpTooltipText, HelpTooltipTitle, -} from "../Tooltips/HelpTooltip" +} from "components/HelpTooltip" import { SecondaryAgentButton } from "components/Resources/AgentButton" import { docs } from "utils/docs" import Box from "@mui/material/Box" diff --git a/site/src/components/SSHButton/SSHButton.stories.tsx b/site/src/components/Resources/SSHButton/SSHButton.stories.tsx similarity index 100% rename from site/src/components/SSHButton/SSHButton.stories.tsx rename to site/src/components/Resources/SSHButton/SSHButton.stories.tsx diff --git a/site/src/components/SSHButton/SSHButton.tsx b/site/src/components/Resources/SSHButton/SSHButton.tsx similarity index 95% rename from site/src/components/SSHButton/SSHButton.tsx rename to site/src/components/Resources/SSHButton/SSHButton.tsx index 480ae617b7..c5d2c54f02 100644 --- a/site/src/components/SSHButton/SSHButton.tsx +++ b/site/src/components/Resources/SSHButton/SSHButton.tsx @@ -2,13 +2,13 @@ import Popover from "@mui/material/Popover" import { makeStyles } from "@mui/styles" import { SecondaryAgentButton } from "components/Resources/AgentButton" import { useRef, useState } from "react" -import { CodeExample } from "../CodeExample/CodeExample" -import { Stack } from "../Stack/Stack" +import { CodeExample } from "../../CodeExample/CodeExample" +import { Stack } from "../../Stack/Stack" import { HelpTooltipLink, HelpTooltipLinksGroup, HelpTooltipText, -} from "../Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { docs } from "utils/docs" export interface SSHButtonProps { diff --git a/site/src/components/TerminalLink/TerminalLink.stories.tsx b/site/src/components/Resources/TerminalLink/TerminalLink.stories.tsx similarity index 100% rename from site/src/components/TerminalLink/TerminalLink.stories.tsx rename to site/src/components/Resources/TerminalLink/TerminalLink.stories.tsx diff --git a/site/src/components/TerminalLink/TerminalLink.tsx b/site/src/components/Resources/TerminalLink/TerminalLink.tsx similarity index 92% rename from site/src/components/TerminalLink/TerminalLink.tsx rename to site/src/components/Resources/TerminalLink/TerminalLink.tsx index f5227302c6..4f39f98c43 100644 --- a/site/src/components/TerminalLink/TerminalLink.tsx +++ b/site/src/components/Resources/TerminalLink/TerminalLink.tsx @@ -1,8 +1,8 @@ import Link from "@mui/material/Link" import { SecondaryAgentButton } from "components/Resources/AgentButton" import { FC } from "react" -import * as TypesGen from "../../api/typesGenerated" -import { generateRandomString } from "../../utils/random" +import * as TypesGen from "../../../api/typesGenerated" +import { generateRandomString } from "../../../utils/random" export const Language = { linkText: "Terminal", diff --git a/site/src/components/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx b/site/src/components/Resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx similarity index 100% rename from site/src/components/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx rename to site/src/components/Resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx diff --git a/site/src/components/VSCodeDesktopButton/VSCodeDesktopButton.tsx b/site/src/components/Resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx similarity index 100% rename from site/src/components/VSCodeDesktopButton/VSCodeDesktopButton.tsx rename to site/src/components/Resources/VSCodeDesktopButton/VSCodeDesktopButton.tsx diff --git a/site/src/components/MultiTextField/MultiTextField.stories.tsx b/site/src/components/RichParameterInput/MultiTextField/MultiTextField.stories.tsx similarity index 100% rename from site/src/components/MultiTextField/MultiTextField.stories.tsx rename to site/src/components/RichParameterInput/MultiTextField/MultiTextField.stories.tsx diff --git a/site/src/components/MultiTextField/MultiTextField.tsx b/site/src/components/RichParameterInput/MultiTextField/MultiTextField.tsx similarity index 100% rename from site/src/components/MultiTextField/MultiTextField.tsx rename to site/src/components/RichParameterInput/MultiTextField/MultiTextField.tsx diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index 6b905fe36e..7749f063a8 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -8,7 +8,7 @@ import { FC } from "react" import { TemplateVersionParameter } from "../../api/typesGenerated" import { colors } from "theme/colors" import { MemoizedMarkdown } from "components/Markdown/Markdown" -import { MultiTextField } from "components/MultiTextField/MultiTextField" +import { MultiTextField } from "components/RichParameterInput/MultiTextField/MultiTextField" import Box from "@mui/material/Box" import { Theme } from "@mui/material/styles" diff --git a/site/src/components/Section/Section.stories.tsx b/site/src/components/Section/Section.stories.tsx deleted file mode 100644 index ff6f803a0d..0000000000 --- a/site/src/components/Section/Section.stories.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import Button from "@mui/material/Button" -import TextField from "@mui/material/TextField" -import { Story } from "@storybook/react" -import { Section, SectionProps } from "./Section" - -export default { - title: "components/Section", - component: Section, - argTypes: { - title: { type: "string" }, - description: { type: "string" }, - children: { control: { disable: true } }, - }, -} - -const Template: Story = (args: SectionProps) => ( -
-) - -export const Example = Template.bind({}) -Example.args = { - title: "User Settings", - description: "Add your personal info", - children: ( - <> -
- - - - - - - - - ), -} diff --git a/site/src/components/Section/Section.tsx b/site/src/components/Section/Section.tsx deleted file mode 100644 index fc1df1dc51..0000000000 --- a/site/src/components/Section/Section.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { makeStyles } from "@mui/styles" -import Typography from "@mui/material/Typography" -import { FC } from "react" -import { combineClasses } from "../../utils/combineClasses" -import { SectionAction } from "../SectionAction/SectionAction" - -type SectionLayout = "fixed" | "fluid" - -export interface SectionProps { - title?: React.ReactNode | string - description?: React.ReactNode - toolbar?: React.ReactNode - alert?: React.ReactNode - layout?: SectionLayout - className?: string - children?: React.ReactNode -} - -type SectionFC = FC> & { - Action: typeof SectionAction -} - -export const Section: SectionFC = ({ - title, - description, - toolbar, - alert, - className = "", - children, - layout = "fixed", -}) => { - const styles = useStyles({ layout }) - return ( -
-
- {(title || description) && ( -
-
- {title && {title}} - {description && typeof description === "string" && ( - - {description} - - )} - {description && typeof description !== "string" && ( -
{description}
- )} -
- {toolbar &&
{toolbar}
} -
- )} - {alert &&
{alert}
} - {children} -
-
- ) -} - -// Sub-components -Section.Action = SectionAction - -const useStyles = makeStyles((theme) => ({ - root: { - backgroundColor: theme.palette.background.paper, - boxShadow: theme.shadows[6], - marginBottom: theme.spacing(1), - padding: theme.spacing(6), - borderRadius: theme.shape.borderRadius, - border: `1px solid ${theme.palette.divider}`, - - [theme.breakpoints.down("md")]: { - padding: theme.spacing(4, 3, 4, 3), - }, - }, - inner: ({ layout }: { layout: SectionLayout }) => ({ - maxWidth: layout === "fluid" ? "100%" : 500, - }), - alert: { - marginBottom: theme.spacing(1), - }, - header: { - marginBottom: theme.spacing(4), - display: "flex", - flexDirection: "row", - justifyContent: "space-between", - }, - description: { - color: theme.palette.text.secondary, - fontSize: 16, - marginTop: theme.spacing(2), - }, -})) diff --git a/site/src/components/SettingsLayout/Section.tsx b/site/src/components/SettingsLayout/Section.tsx index 35419ff4ab..6f33deaac9 100644 --- a/site/src/components/SettingsLayout/Section.tsx +++ b/site/src/components/SettingsLayout/Section.tsx @@ -1,7 +1,7 @@ import { makeStyles } from "@mui/styles" import Typography from "@mui/material/Typography" import { FC, ReactNode, PropsWithChildren } from "react" -import { SectionAction } from "../SectionAction/SectionAction" +import { SectionAction } from "./SectionAction" type SectionLayout = "fixed" | "fluid" diff --git a/site/src/components/SectionAction/SectionAction.tsx b/site/src/components/SettingsLayout/SectionAction.tsx similarity index 100% rename from site/src/components/SectionAction/SectionAction.tsx rename to site/src/components/SettingsLayout/SectionAction.tsx diff --git a/site/src/components/TabPanel/TabPanel.stories.tsx b/site/src/components/TabPanel/TabPanel.stories.tsx deleted file mode 100644 index b0dd71155a..0000000000 --- a/site/src/components/TabPanel/TabPanel.stories.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Story } from "@storybook/react" -import { TabPanel, TabPanelProps } from "./TabPanel" - -export default { - title: "components/TabPanel", - component: TabPanel, -} - -const Template: Story = (args: TabPanelProps) => ( - -) - -export const Example = Template.bind({}) -Example.args = { - title: "Title", - menuItems: [ - { label: "OAuth Settings", path: "oauthSettings" }, - { label: "Security", path: "oauthSettings", hasChanges: true }, - { label: "Hardware", path: "oauthSettings" }, - ], -} diff --git a/site/src/components/TabPanel/TabPanel.tsx b/site/src/components/TabPanel/TabPanel.tsx deleted file mode 100644 index 72e6d9f628..0000000000 --- a/site/src/components/TabPanel/TabPanel.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { makeStyles } from "@mui/styles" -import { FC } from "react" -import { TabSidebar, TabSidebarItem } from "../TabSidebar/TabSidebar" - -export interface TabPanelProps { - title: string - menuItems: TabSidebarItem[] -} - -export const TabPanel: FC> = ({ - children, - title, - menuItems, -}) => { - const styles = useStyles() - - return ( -
-
-
-
{title}
- -
- -
{children}
-
-
- ) -} - -const useStyles = makeStyles((theme) => ({ - root: { - minHeight: 400, - marginBottom: theme.spacing(2), - }, - - inner: { - display: "flex", - maxWidth: 1920, - padding: theme.spacing(5, 3.5, 0, 4), - - [theme.breakpoints.down("md")]: { - flexDirection: "column", - padding: 0, - }, - }, - - icon: { - fontSize: 100, - position: "absolute", - left: -50, - top: 31, - color: theme.palette.text.secondary, - transition: "transform 0.3s ease", - zIndex: -1, - }, - - menuPanel: { - paddingRight: 40, - - [theme.breakpoints.down("md")]: { - padding: 0, - }, - }, - - title: { - marginTop: theme.spacing(6), - fontSize: 32, - }, - - contentPanel: { - display: "flex", - flexDirection: "column", - width: "100%", - maxWidth: 930, - }, - - [theme.breakpoints.up("lg")]: { - icon: { - position: "relative", - top: -11, - left: 30, - }, - contentPanel: { - width: 930, - }, - }, - - [theme.breakpoints.down("xl")]: { - contentPanel: { - width: 890, - }, - }, - [theme.breakpoints.down("md")]: { - contentPanel: { - width: "auto", - }, - }, -})) diff --git a/site/src/components/TabSidebar/TabSidebar.stories.tsx b/site/src/components/TabSidebar/TabSidebar.stories.tsx deleted file mode 100644 index dea4f9b821..0000000000 --- a/site/src/components/TabSidebar/TabSidebar.stories.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Story } from "@storybook/react" -import { TabSidebar, TabSidebarProps } from "./TabSidebar" - -export default { - title: "components/TabSidebar", - component: TabSidebar, -} - -const Template: Story = (args: TabSidebarProps) => ( - -) - -export const Example = Template.bind({}) -Example.args = { - menuItems: [ - { label: "OAuth Settings", path: "oauthSettings" }, - { label: "Security", path: "security", hasChanges: true }, - { label: "Hardware", path: "hardware" }, - ], -} diff --git a/site/src/components/TabSidebar/TabSidebar.tsx b/site/src/components/TabSidebar/TabSidebar.tsx deleted file mode 100644 index af92db8a5d..0000000000 --- a/site/src/components/TabSidebar/TabSidebar.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import List from "@mui/material/List" -import ListItem from "@mui/material/ListItem" -import { makeStyles } from "@mui/styles" -import { FC } from "react" -import { NavLink } from "react-router-dom" -import { sidePadding } from "theme/constants" -import { combineClasses } from "../../utils/combineClasses" - -export interface TabSidebarItem { - path: string - label: string - hasChanges?: boolean -} - -export interface TabSidebarProps { - menuItems: TabSidebarItem[] -} - -export const TabSidebar: FC> = ({ - menuItems, -}) => { - const styles = useStyles() - - return ( - - {menuItems.map(({ hasChanges, ...tab }) => { - return ( - - {({ isActive }) => ( - - - {hasChanges ? `${tab.label}*` : tab.label} - - - )} - - ) - })} - - ) -} - -const useStyles = makeStyles((theme) => ({ - menu: { - minWidth: 160, - marginTop: theme.spacing(5), - - [theme.breakpoints.down("md")]: { - display: "flex", - borderBottom: `1px solid ${theme.palette.divider}`, - marginBottom: theme.spacing(2), - // Fit all the width - width: `calc(100% + ${sidePadding * 2}px)`, - marginLeft: -sidePadding, - marginTop: sidePadding, - }, - }, - - link: { - textDecoration: "none", - flex: 1, - }, - - menuItem: { - letterSpacing: theme.spacing(-0.0375), - padding: 0, - fontSize: 18, - color: theme.palette.text.secondary, - - "&.MuiListItem-button:hover": { - backgroundColor: "transparent", - }, - }, - - menuItemSpan: { - paddingTop: theme.spacing(1.5), - paddingBottom: theme.spacing(1), - transition: "300ms all ease", - position: "relative", - - "&:hover": { - color: theme.palette.text.primary, - }, - "&.active": { - color: theme.palette.secondary.dark, - }, - - "&.active, &:hover": { - "&::before": { - opacity: 1, - }, - "&::after": { - opacity: 1, - }, - }, - - [theme.breakpoints.down("md")]: { - textAlign: "center", - width: "100%", - paddingTop: theme.spacing(2), - paddingBottom: theme.spacing(2), - }, - }, - - [theme.breakpoints.up("lg")]: { - menuItemSpan: { - "&::before": { - content: "'{'", - position: "absolute", - left: -15, - opacity: 0, - transition: "inherit", - }, - "&::after": { - content: "'}'", - position: "absolute", - right: -15, - opacity: 0, - transition: "inherit", - }, - }, - }, -})) diff --git a/site/src/components/Tooltips/index.ts b/site/src/components/Tooltips/index.ts deleted file mode 100644 index a1b1d76803..0000000000 --- a/site/src/components/Tooltips/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { AuditHelpTooltip } from "./AuditHelpTooltip" -export { WorkspaceOutdatedTooltip } from "./WorkspaceOutdatedTooltip" -export { UserRoleHelpTooltip } from "./UserRoleHelpTooltip" -export { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip" diff --git a/site/src/components/UsersLayout/UsersLayout.tsx b/site/src/components/UsersLayout/UsersLayout.tsx index 2756bf6823..9429f29ed3 100644 --- a/site/src/components/UsersLayout/UsersLayout.tsx +++ b/site/src/components/UsersLayout/UsersLayout.tsx @@ -3,7 +3,7 @@ import Link from "@mui/material/Link" import { makeStyles } from "@mui/styles" import GroupAdd from "@mui/icons-material/GroupAddOutlined" import PersonAdd from "@mui/icons-material/PersonAddOutlined" -import { USERS_LINK } from "components/Navbar/NavbarView" +import { USERS_LINK } from "components/Dashboard/Navbar/NavbarView" import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader" import { useFeatureVisibility } from "hooks/useFeatureVisibility" import { usePermissions } from "hooks/usePermissions" diff --git a/site/src/components/WarningAlert/WarningAlert.stories.tsx b/site/src/components/WarningAlert/WarningAlert.stories.tsx deleted file mode 100644 index 774f995010..0000000000 --- a/site/src/components/WarningAlert/WarningAlert.stories.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Meta, StoryObj } from "@storybook/react" -import { WarningAlert } from "./WarningAlert" -import Button from "@mui/material/Button" - -const meta: Meta = { - title: "components/WarningAlert", - component: WarningAlert, -} - -export default meta - -type Story = StoryObj - -export const ExampleWithDismiss: Story = { - args: { - text: "This is a warning", - dismissible: true, - }, -} - -const ExampleAction = ( - -) - -export const ExampleWithAction = { - args: { - text: "This is a warning", - actions: [ExampleAction], - }, -} - -export const ExampleWithActionAndDismiss = { - args: { - text: "This is a warning", - actions: [ExampleAction], - dismissible: true, - }, -} diff --git a/site/src/components/WarningAlert/WarningAlert.tsx b/site/src/components/WarningAlert/WarningAlert.tsx deleted file mode 100644 index b7b8d06075..0000000000 --- a/site/src/components/WarningAlert/WarningAlert.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { useState, FC, ReactElement } from "react" -import Collapse from "@mui/material/Collapse" -import { Stack } from "components/Stack/Stack" -import { makeStyles } from "@mui/styles" -import { colors } from "theme/colors" -import ReportProblemOutlinedIcon from "@mui/icons-material/ReportProblemOutlined" -import Button from "@mui/material/Button" -import { useTranslation } from "react-i18next" - -export interface WarningAlertProps { - text: string - dismissible?: boolean - actions?: ReactElement[] -} - -export const WarningAlert: FC = ({ - text, - dismissible = false, - actions = [], -}) => { - const { t } = useTranslation("common") - const [open, setOpen] = useState(true) - const classes = useStyles() - - return ( - - - - - {text} - - - {actions.length > 0 && - actions.map((action) =>
{action}
)} - {dismissible && ( - - )} -
-
-
- ) -} - -const useStyles = makeStyles((theme) => ({ - alertContainer: { - border: `1px solid ${colors.orange[7]}`, - borderRadius: theme.shape.borderRadius, - padding: `${theme.spacing(1)} ${theme.spacing(2)}`, - backgroundColor: `${colors.gray[16]}`, - }, - alertIcon: { - color: `${colors.orange[7]}`, - }, -})) diff --git a/site/src/components/Logs/Logs.stories.tsx b/site/src/components/WorkspaceBuildLogs/Logs/Logs.stories.tsx similarity index 89% rename from site/src/components/Logs/Logs.stories.tsx rename to site/src/components/WorkspaceBuildLogs/Logs/Logs.stories.tsx index 7f211cc938..f96b2feedf 100644 --- a/site/src/components/Logs/Logs.stories.tsx +++ b/site/src/components/WorkspaceBuildLogs/Logs/Logs.stories.tsx @@ -1,6 +1,6 @@ import { ComponentMeta, Story } from "@storybook/react" import { LogLevel } from "api/typesGenerated" -import { MockWorkspaceBuildLogs } from "../../testHelpers/entities" +import { MockWorkspaceBuildLogs } from "../../../testHelpers/entities" import { Logs, LogsProps } from "./Logs" export default { diff --git a/site/src/components/Logs/Logs.tsx b/site/src/components/WorkspaceBuildLogs/Logs/Logs.tsx similarity index 96% rename from site/src/components/Logs/Logs.tsx rename to site/src/components/WorkspaceBuildLogs/Logs/Logs.tsx index 6ad2e6ddf3..f2753b68af 100644 --- a/site/src/components/Logs/Logs.tsx +++ b/site/src/components/WorkspaceBuildLogs/Logs/Logs.tsx @@ -2,8 +2,8 @@ import { makeStyles } from "@mui/styles" import { LogLevel } from "api/typesGenerated" import dayjs from "dayjs" import { FC, useMemo } from "react" -import { MONOSPACE_FONT_FAMILY } from "../../theme/constants" -import { combineClasses } from "../../utils/combineClasses" +import { MONOSPACE_FONT_FAMILY } from "../../../theme/constants" +import { combineClasses } from "../../../utils/combineClasses" import AnsiToHTML from "ansi-to-html" import { Theme } from "@mui/material/styles" diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx index e0682ce907..95e1a59b7e 100644 --- a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx +++ b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx @@ -3,7 +3,7 @@ import dayjs from "dayjs" import { ComponentProps, FC, Fragment } from "react" import { ProvisionerJobLog } from "../../api/typesGenerated" import { MONOSPACE_FONT_FAMILY } from "../../theme/constants" -import { Logs } from "../Logs/Logs" +import { Logs } from "./Logs/Logs" import Box from "@mui/material/Box" import { combineClasses } from "utils/combineClasses" diff --git a/site/src/components/Tooltips/WorkspaceOutdatedTooltip.tsx b/site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx similarity index 98% rename from site/src/components/Tooltips/WorkspaceOutdatedTooltip.tsx rename to site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx index a00ab665b5..615fa0dc6b 100644 --- a/site/src/components/Tooltips/WorkspaceOutdatedTooltip.tsx +++ b/site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx @@ -6,7 +6,7 @@ import { HelpTooltipLinksGroup, HelpTooltipText, HelpTooltipTitle, -} from "./HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import InfoIcon from "@mui/icons-material/InfoOutlined" import { makeStyles } from "@mui/styles" import { colors } from "theme/colors" diff --git a/site/src/components/WorkspaceSection/WorkspaceSection.stories.tsx b/site/src/components/WorkspaceSection/WorkspaceSection.stories.tsx deleted file mode 100644 index 7550af1fc9..0000000000 --- a/site/src/components/WorkspaceSection/WorkspaceSection.stories.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import IconButton from "@mui/material/IconButton" -import EditIcon from "@mui/icons-material/Edit" -import { action } from "@storybook/addon-actions" -import { Story } from "@storybook/react" -import { WorkspaceSection, WorkspaceSectionProps } from "./WorkspaceSection" - -export default { - title: "components/WorkspaceSection", - component: WorkspaceSection, -} - -const Template: Story = (args) => ( - Content -) - -export const NoAction = Template.bind({}) -NoAction.args = { - title: "A Workspace Section", -} - -export const Action = Template.bind({}) -Action.args = { - action: ( - - - - ), - title: "Action Section", -} diff --git a/site/src/components/Tooltips/AuditHelpTooltip.tsx b/site/src/pages/AuditPage/AuditHelpTooltip.tsx similarity index 94% rename from site/src/components/Tooltips/AuditHelpTooltip.tsx rename to site/src/pages/AuditPage/AuditHelpTooltip.tsx index a5c0e7905e..1a6da31a79 100644 --- a/site/src/components/Tooltips/AuditHelpTooltip.tsx +++ b/site/src/pages/AuditPage/AuditHelpTooltip.tsx @@ -5,7 +5,7 @@ import { HelpTooltipLinksGroup, HelpTooltipText, HelpTooltipTitle, -} from "./HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { docs } from "utils/docs" export const Language = { diff --git a/site/src/components/AuditLogRow/AuditLogDescription/AuditLogDescription.test.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.test.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDescription/AuditLogDescription.test.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.test.tsx diff --git a/site/src/components/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx diff --git a/site/src/components/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx diff --git a/site/src/components/AuditLogRow/AuditLogDescription/index.ts b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/index.ts similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDescription/index.ts rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/index.ts diff --git a/site/src/components/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx diff --git a/site/src/components/AuditLogRow/AuditLogDiff/auditUtils.test.ts b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.test.ts similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDiff/auditUtils.test.ts rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.test.ts diff --git a/site/src/components/AuditLogRow/AuditLogDiff/auditUtils.ts b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDiff/auditUtils.ts rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts diff --git a/site/src/components/AuditLogRow/AuditLogDiff/index.ts b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/index.ts similarity index 100% rename from site/src/components/AuditLogRow/AuditLogDiff/index.ts rename to site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/index.ts diff --git a/site/src/components/AuditLogRow/AuditLogRow.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogRow.stories.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogRow.stories.tsx diff --git a/site/src/components/AuditLogRow/AuditLogRow.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx similarity index 100% rename from site/src/components/AuditLogRow/AuditLogRow.tsx rename to site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx diff --git a/site/src/pages/AuditPage/AuditPageView.tsx b/site/src/pages/AuditPage/AuditPageView.tsx index 65435d9a5d..ec441b4eec 100644 --- a/site/src/pages/AuditPage/AuditPageView.tsx +++ b/site/src/pages/AuditPage/AuditPageView.tsx @@ -4,7 +4,7 @@ import TableCell from "@mui/material/TableCell" import TableContainer from "@mui/material/TableContainer" import TableRow from "@mui/material/TableRow" import { AuditLog } from "api/typesGenerated" -import { AuditLogRow } from "components/AuditLogRow/AuditLogRow" +import { AuditLogRow } from "pages/AuditPage/AuditLogRow/AuditLogRow" import { ChooseOne, Cond } from "components/Conditionals/ChooseOne" import { EmptyState } from "components/EmptyState/EmptyState" import { Margins } from "components/Margins/Margins" @@ -16,7 +16,7 @@ import { import { Stack } from "components/Stack/Stack" import { TableLoader } from "components/TableLoader/TableLoader" import { Timeline } from "components/Timeline/Timeline" -import { AuditHelpTooltip } from "components/Tooltips" +import { AuditHelpTooltip } from "./AuditHelpTooltip" import { ComponentProps, FC } from "react" import { useTranslation } from "react-i18next" import { AuditPaywall } from "./AuditPaywall" diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index 899298b411..fe4f4e3ed2 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -25,7 +25,10 @@ import { import { CreateTemplateData } from "xServices/createTemplate/createTemplateXService" import * as Yup from "yup" import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs" -import { HelpTooltip, HelpTooltipText } from "components/Tooltips/HelpTooltip" +import { + HelpTooltip, + HelpTooltipText, +} from "components/HelpTooltip/HelpTooltip" import { LazyIconField } from "components/IconField/LazyIconField" import { Maybe } from "components/Conditionals/Maybe" import i18next from "i18next" diff --git a/site/src/components/CreateUserForm/CreateUserForm.stories.tsx b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx similarity index 100% rename from site/src/components/CreateUserForm/CreateUserForm.stories.tsx rename to site/src/pages/CreateUserPage/CreateUserForm.stories.tsx diff --git a/site/src/components/CreateUserForm/CreateUserForm.tsx b/site/src/pages/CreateUserPage/CreateUserForm.tsx similarity index 95% rename from site/src/components/CreateUserForm/CreateUserForm.tsx rename to site/src/pages/CreateUserPage/CreateUserForm.tsx index c0423bfc51..05d3c77aa6 100644 --- a/site/src/components/CreateUserForm/CreateUserForm.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.tsx @@ -2,15 +2,11 @@ import TextField from "@mui/material/TextField" import { FormikContextType, useFormik } from "formik" import { FC } from "react" import * as Yup from "yup" -import * as TypesGen from "../../api/typesGenerated" -import { - getFormHelpers, - nameValidator, - onChangeTrimmed, -} from "../../utils/formUtils" -import { FormFooter } from "../FormFooter/FormFooter" -import { FullPageForm } from "../FullPageForm/FullPageForm" -import { Stack } from "../Stack/Stack" +import * as TypesGen from "api/typesGenerated" +import { getFormHelpers, nameValidator, onChangeTrimmed } from "utils/formUtils" +import { FormFooter } from "components/FormFooter/FormFooter" +import { FullPageForm } from "components/FullPageForm/FullPageForm" +import { Stack } from "components/Stack/Stack" import { ErrorAlert } from "components/Alert/ErrorAlert" import { hasApiFieldErrors, isApiError } from "api/errors" import MenuItem from "@mui/material/MenuItem" diff --git a/site/src/pages/UsersPage/CreateUserPage/CreateUserPage.test.tsx b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx similarity index 86% rename from site/src/pages/UsersPage/CreateUserPage/CreateUserPage.test.tsx rename to site/src/pages/CreateUserPage/CreateUserPage.test.tsx index ceeb30528d..74df3c647c 100644 --- a/site/src/pages/UsersPage/CreateUserPage/CreateUserPage.test.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx @@ -1,14 +1,14 @@ import { fireEvent, screen } from "@testing-library/react" import userEvent from "@testing-library/user-event" import { rest } from "msw" -import { Language as FormLanguage } from "../../../components/CreateUserForm/CreateUserForm" -import { Language as FooterLanguage } from "../../../components/FormFooter/FormFooter" +import { Language as FormLanguage } from "./CreateUserForm" +import { Language as FooterLanguage } from "components/FormFooter/FormFooter" import { renderWithAuth, waitForLoaderToBeRemoved, -} from "../../../testHelpers/renderHelpers" -import { server } from "../../../testHelpers/server" -import { Language as CreateUserLanguage } from "../../../xServices/users/createUserXService" +} from "testHelpers/renderHelpers" +import { server } from "testHelpers/server" +import { Language as CreateUserLanguage } from "xServices/users/createUserXService" import { CreateUserPage } from "./CreateUserPage" const renderCreateUserPage = async () => { diff --git a/site/src/pages/UsersPage/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx similarity index 86% rename from site/src/pages/UsersPage/CreateUserPage/CreateUserPage.tsx rename to site/src/pages/CreateUserPage/CreateUserPage.tsx index cd92b6bc81..88c9cc47fe 100644 --- a/site/src/pages/UsersPage/CreateUserPage/CreateUserPage.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx @@ -4,10 +4,10 @@ import { FC } from "react" import { Helmet } from "react-helmet-async" import { useNavigate } from "react-router-dom" import { createUserMachine } from "xServices/users/createUserXService" -import * as TypesGen from "../../../api/typesGenerated" -import { CreateUserForm } from "../../../components/CreateUserForm/CreateUserForm" -import { Margins } from "../../../components/Margins/Margins" -import { pageTitle } from "../../../utils/page" +import * as TypesGen from "api/typesGenerated" +import { CreateUserForm } from "./CreateUserForm" +import { Margins } from "components/Margins/Margins" +import { pageTitle } from "utils/page" import { getAuthMethods } from "api/api" import { useQuery } from "@tanstack/react-query" diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 2063b738cd..8ca6f178a9 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -24,7 +24,7 @@ import { MutableTemplateParametersSection, } from "components/TemplateParameters/TemplateParameters" import { CreateWSPermissions } from "xServices/createWorkspace/createWorkspaceXService" -import { GitAuth } from "components/GitAuth/GitAuth" +import { GitAuth } from "./GitAuth" import { ErrorAlert } from "components/Alert/ErrorAlert" export interface CreateWorkspacePageViewProps { diff --git a/site/src/components/GitAuth/GitAuth.stories.tsx b/site/src/pages/CreateWorkspacePage/GitAuth.stories.tsx similarity index 100% rename from site/src/components/GitAuth/GitAuth.stories.tsx rename to site/src/pages/CreateWorkspacePage/GitAuth.stories.tsx diff --git a/site/src/components/GitAuth/GitAuth.tsx b/site/src/pages/CreateWorkspacePage/GitAuth.tsx similarity index 100% rename from site/src/components/GitAuth/GitAuth.tsx rename to site/src/pages/CreateWorkspacePage/GitAuth.tsx diff --git a/site/src/components/WorkspaceSection/WorkspaceSection.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx similarity index 87% rename from site/src/components/WorkspaceSection/WorkspaceSection.tsx rename to site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx index e7dc1732a7..3e97012f6b 100644 --- a/site/src/components/WorkspaceSection/WorkspaceSection.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx @@ -1,9 +1,9 @@ import Paper from "@mui/material/Paper" import { makeStyles } from "@mui/styles" import { HTMLProps, ReactNode, FC, PropsWithChildren } from "react" -import { combineClasses } from "../../utils/combineClasses" +import { combineClasses } from "utils/combineClasses" -export interface WorkspaceSectionProps { +export interface ChartSectionProps { /** * action appears in the top right of the section card */ @@ -12,7 +12,7 @@ export interface WorkspaceSectionProps { title?: string | JSX.Element } -export const WorkspaceSection: FC> = ({ +export const ChartSection: FC> = ({ action, children, contentsProps, diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx index f798bcbcdd..5c450c48ca 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx @@ -6,7 +6,7 @@ import { DAUChart, DAUTitle } from "components/DAUChart/DAUChart" import { Header } from "components/DeploySettingsLayout/Header" import OptionsTable from "components/DeploySettingsLayout/OptionsTable" import { Stack } from "components/Stack/Stack" -import { WorkspaceSection } from "components/WorkspaceSection/WorkspaceSection" +import { ChartSection } from "./ChartSection" import { useDeploymentOptions } from "utils/deployOptions" import { docs } from "utils/docs" @@ -33,9 +33,9 @@ export const GeneralSettingsPageView = ({ )} {deploymentDAUs && ( - }> + }> - + )} { + describe("autostart", () => { + it("should be true if toggle values are different", () => { + const autostart = { autostartEnabled: true, ...emptySchedule } + const formValues = { + autostartEnabled: false, + ...emptySchedule, + autostopEnabled: false, + ttl: emptyTTL, + } + expect(scheduleChanged(autostart, formValues)).toBe(true) + }) + it("should be true if schedule values are different", () => { + const autostart = { autostartEnabled: true, ...emptySchedule } + const formValues = { + autostartEnabled: true, + ...{ ...emptySchedule, monday: true, startTime: "09:00" }, + autostopEnabled: false, + ttl: emptyTTL, + } + expect(scheduleChanged(autostart, formValues)).toBe(true) + }) + it("should be false if all autostart values are the same", () => { + const autostart = { autostartEnabled: true, ...emptySchedule } + const formValues = { + autostartEnabled: true, + ...emptySchedule, + autostopEnabled: false, + ttl: emptyTTL, + } + expect(scheduleChanged(autostart, formValues)).toBe(false) + }) + }) + + describe("autostop", () => { + it("should be true if toggle values are different", () => { + const autostop = { autostopEnabled: true, ttl: 1000 } + const formValues = { + autostartEnabled: false, + ...emptySchedule, + autostopEnabled: false, + ttl: 1000, + } + expect(scheduleChanged(autostop, formValues)).toBe(true) + }) + it("should be true if ttl values are different", () => { + const autostop = { autostopEnabled: true, ttl: 1000 } + const formValues = { + autostartEnabled: false, + ...emptySchedule, + autostopEnabled: true, + ttl: 2000, + } + expect(scheduleChanged(autostop, formValues)).toBe(true) + }) + it("should be false if all autostop values are the same", () => { + const autostop = { autostopEnabled: true, ttl: 1000 } + const formValues = { + autostartEnabled: false, + ...emptySchedule, + autostopEnabled: true, + ttl: 1000, + } + expect(scheduleChanged(autostop, formValues)).toBe(false) + }) + }) +}) diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts index a04c9f486c..a8f96f8a56 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts @@ -3,6 +3,10 @@ import dayjs from "dayjs" import timezone from "dayjs/plugin/timezone" import utc from "dayjs/plugin/utc" import { extractTimezone, stripTimezone } from "../../../utils/schedule" +import { Autostop } from "./ttl" +import { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm" +import map from "lodash/map" +import some from "lodash/some" // REMARK: timezone plugin depends on UTC // @@ -89,3 +93,15 @@ export const scheduleToAutostart = (schedule?: string): Autostart => { return { autostartEnabled: false, ...emptySchedule } } } + +export const scheduleChanged = ( + initialValues: Autostart | Autostop, + formValues: WorkspaceScheduleFormValues, +): boolean => + some( + map( + { ...initialValues }, + (v: boolean | string, k: keyof typeof initialValues) => + formValues[k] !== v, + ), + ) diff --git a/site/src/components/WorkspaceScheduleForm/zones.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/zones.ts similarity index 100% rename from site/src/components/WorkspaceScheduleForm/zones.ts rename to site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/zones.ts diff --git a/site/src/components/Tooltips/WorkspaceHelpTooltip.tsx b/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx similarity index 96% rename from site/src/components/Tooltips/WorkspaceHelpTooltip.tsx rename to site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx index 58001bd9b8..21f83e8eb7 100644 --- a/site/src/components/Tooltips/WorkspaceHelpTooltip.tsx +++ b/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx @@ -5,7 +5,7 @@ import { HelpTooltipLinksGroup, HelpTooltipText, HelpTooltipTitle, -} from "./HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import { docs } from "utils/docs" const Language = { diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx index 16563d1a02..4fb722292e 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx @@ -11,7 +11,7 @@ import { PageHeaderTitle, } from "components/PageHeader/PageHeader" import { Stack } from "components/Stack/Stack" -import { WorkspaceHelpTooltip } from "components/Tooltips" +import { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip" import { WorkspacesTable } from "pages/WorkspacesPage/WorkspacesTable" import { useLocalStorage } from "hooks" import { DormantWorkspaceBanner, Count } from "components/WorkspaceDeletion" diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index 4dde93aa35..99124eb234 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -21,7 +21,7 @@ import { HelpTooltip, HelpTooltipText, HelpTooltipTitle, -} from "components/Tooltips/HelpTooltip" +} from "components/HelpTooltip/HelpTooltip" import InfoIcon from "@mui/icons-material/InfoOutlined" import { colors } from "theme/colors" import { useClickableTableRow } from "hooks/useClickableTableRow" @@ -31,7 +31,7 @@ import { AvatarData } from "components/AvatarData/AvatarData" import { Avatar } from "components/Avatar/Avatar" import { Stack } from "components/Stack/Stack" import { LastUsed } from "pages/WorkspacesPage/LastUsed" -import { WorkspaceOutdatedTooltip } from "components/Tooltips" +import { WorkspaceOutdatedTooltip } from "components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip" import { WorkspaceStatusBadge } from "components/WorkspaceStatusBadge/WorkspaceStatusBadge" import { getDisplayWorkspaceTemplateName } from "utils/workspace" import Checkbox from "@mui/material/Checkbox" diff --git a/site/src/utils/schedule.test.ts b/site/src/utils/schedule.test.ts index 29d8aec191..2268674097 100644 --- a/site/src/utils/schedule.test.ts +++ b/site/src/utils/schedule.test.ts @@ -1,7 +1,5 @@ import dayjs from "dayjs" import duration from "dayjs/plugin/duration" -import { emptySchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule" -import { emptyTTL } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/ttl" import { Workspace } from "../api/typesGenerated" import * as Mocks from "../testHelpers/entities" import { @@ -12,7 +10,6 @@ import { getMaxDeadlineChange, getMinDeadline, stripTimezone, - scheduleChanged, } from "./schedule" dayjs.extend(duration) @@ -77,71 +74,3 @@ describe("getMaxDeadlineChange", () => { expect(getMaxDeadlineChange(deadline, minDeadline)).toEqual(2) }) }) - -describe("scheduleChanged", () => { - describe("autostart", () => { - it("should be true if toggle values are different", () => { - const autostart = { autostartEnabled: true, ...emptySchedule } - const formValues = { - autostartEnabled: false, - ...emptySchedule, - autostopEnabled: false, - ttl: emptyTTL, - } - expect(scheduleChanged(autostart, formValues)).toBe(true) - }) - it("should be true if schedule values are different", () => { - const autostart = { autostartEnabled: true, ...emptySchedule } - const formValues = { - autostartEnabled: true, - ...{ ...emptySchedule, monday: true, startTime: "09:00" }, - autostopEnabled: false, - ttl: emptyTTL, - } - expect(scheduleChanged(autostart, formValues)).toBe(true) - }) - it("should be false if all autostart values are the same", () => { - const autostart = { autostartEnabled: true, ...emptySchedule } - const formValues = { - autostartEnabled: true, - ...emptySchedule, - autostopEnabled: false, - ttl: emptyTTL, - } - expect(scheduleChanged(autostart, formValues)).toBe(false) - }) - }) - - describe("autostop", () => { - it("should be true if toggle values are different", () => { - const autostop = { autostopEnabled: true, ttl: 1000 } - const formValues = { - autostartEnabled: false, - ...emptySchedule, - autostopEnabled: false, - ttl: 1000, - } - expect(scheduleChanged(autostop, formValues)).toBe(true) - }) - it("should be true if ttl values are different", () => { - const autostop = { autostopEnabled: true, ttl: 1000 } - const formValues = { - autostartEnabled: false, - ...emptySchedule, - autostopEnabled: true, - ttl: 2000, - } - expect(scheduleChanged(autostop, formValues)).toBe(true) - }) - it("should be false if all autostop values are the same", () => { - const autostop = { autostopEnabled: true, ttl: 1000 } - const formValues = { - autostartEnabled: false, - ...emptySchedule, - autostopEnabled: true, - ttl: 1000, - } - expect(scheduleChanged(autostop, formValues)).toBe(false) - }) - }) -}) diff --git a/site/src/utils/schedule.ts b/site/src/utils/schedule.ts index 02e3751638..1bd71185f3 100644 --- a/site/src/utils/schedule.ts +++ b/site/src/utils/schedule.ts @@ -1,5 +1,3 @@ -import map from "lodash/map" -import some from "lodash/some" import cronstrue from "cronstrue" import dayjs, { Dayjs } from "dayjs" import advancedFormat from "dayjs/plugin/advancedFormat" @@ -9,9 +7,6 @@ import timezone from "dayjs/plugin/timezone" import utc from "dayjs/plugin/utc" import { Workspace } from "../api/typesGenerated" import { isWorkspaceOn } from "./workspace" -import { WorkspaceScheduleFormValues } from "components/WorkspaceScheduleForm/WorkspaceScheduleForm" -import { Autostop } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/ttl" -import { Autostart } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule" // REMARK: some plugins depend on utc, so it's listed first. Otherwise they're // sorted alphabetically. @@ -162,15 +157,3 @@ export const getMaxDeadlineChange = ( deadline: dayjs.Dayjs, extremeDeadline: dayjs.Dayjs, ): number => Math.abs(deadline.diff(extremeDeadline, "hours")) - -export const scheduleChanged = ( - initialValues: Autostart | Autostop, - formValues: WorkspaceScheduleFormValues, -): boolean => - some( - map( - { ...initialValues }, - (v: boolean | string, k: keyof typeof initialValues) => - formValues[k] !== v, - ), - ) diff --git a/site/src/xServices/templateVersionEditor/templateVersionEditorXService.ts b/site/src/xServices/templateVersionEditor/templateVersionEditorXService.ts index 990479b9c2..3f8ebc26a4 100644 --- a/site/src/xServices/templateVersionEditor/templateVersionEditorXService.ts +++ b/site/src/xServices/templateVersionEditor/templateVersionEditorXService.ts @@ -12,7 +12,7 @@ import * as API from "api/api" import { FileTree, traverse } from "utils/filetree" import { isAllowedFile } from "utils/templateVersion" import { TarReader, TarWriter } from "utils/tar" -import { PublishVersionData } from "pages/TemplateVersionPage/TemplateVersionEditorPage/types" +import { PublishVersionData } from "pages/TemplateVersionEditorPage/types" export interface TemplateVersionEditorMachineContext { orgId: string diff --git a/site/src/xServices/workspaceAgentLogs/workspaceAgentLogsXService.ts b/site/src/xServices/workspaceAgentLogs/workspaceAgentLogsXService.ts index 9f2277dc8b..e1a44ce085 100644 --- a/site/src/xServices/workspaceAgentLogs/workspaceAgentLogsXService.ts +++ b/site/src/xServices/workspaceAgentLogs/workspaceAgentLogsXService.ts @@ -1,6 +1,6 @@ import * as API from "api/api" import { createMachine, assign } from "xstate" -import { Line } from "components/Logs/Logs" +import { Line } from "components/WorkspaceBuildLogs/Logs/Logs" // Logs are stored as the Line interface to make rendering // much more efficient. Instead of mapping objects each time, we're