From 0178b159ea7fbe92c8d283b0333d0aeb019482da Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Fri, 26 Jan 2024 18:42:36 +0000 Subject: [PATCH] chore: remove most usage of `PropsWithChildren` --- .../src/components/Conditionals/ChooseOne.tsx | 16 +++++----- .../Dialogs/ConfirmDialog/ConfirmDialog.tsx | 6 ++-- site/src/components/Expander/Expander.tsx | 5 ++-- site/src/components/Form/Form.tsx | 30 ++++++++++--------- .../components/FullPageForm/FullPageForm.tsx | 3 +- .../FullPageForm/FullPageHorizontalForm.tsx | 14 +++++---- .../components/HelpTooltip/HelpTooltip.tsx | 19 ++++++------ .../PageHeader/FullWidthPageHeader.tsx | 14 ++++++--- site/src/components/PageHeader/PageHeader.tsx | 19 +++++++----- .../PaginationWidget/PageButtons.tsx | 15 +++++----- site/src/components/Popover/Popover.tsx | 4 +-- .../src/components/Resources/ResourceCard.tsx | 2 +- site/src/components/Resources/Resources.tsx | 8 ++--- .../Resources/SSHButton/SSHButton.tsx | 4 +-- .../TemplateResourcesTable.tsx | 10 +++---- .../src/components/Timeline/TimelineEntry.tsx | 18 +++++------ .../GeneralSettingsPage/ChartSection.tsx | 10 ++----- site/src/pages/LoginPage/SignInForm.tsx | 8 ++--- .../TemplatePermissionsPageView.tsx | 2 +- .../TemplateSchedulePage/ScheduleDialog.tsx | 4 +-- .../SSHKeysPage/SSHKeysPageView.tsx | 4 +-- .../SchedulePage/ScheduleForm.tsx | 16 +++++----- .../WorkspaceProxyPage/WorkspaceProxyView.tsx | 10 +++---- .../pages/UsersPage/ResetPasswordDialog.tsx | 11 +++++-- site/src/pages/UsersPage/UsersPageView.tsx | 7 ++--- .../pages/UsersPage/UsersTable/UsersTable.tsx | 9 +++--- .../UsersPage/UsersTable/UsersTableBody.tsx | 4 +-- .../pages/WorkspacePage/ResourceMetadata.tsx | 13 +++++--- .../WorkspacePage/WorkspaceDeletedBanner.tsx | 8 ++--- .../WorkspaceScheduleForm.tsx | 5 +--- 30 files changed, 156 insertions(+), 142 deletions(-) diff --git a/site/src/components/Conditionals/ChooseOne.tsx b/site/src/components/Conditionals/ChooseOne.tsx index 36faac837dd5d..edb26fc660b33 100644 --- a/site/src/components/Conditionals/ChooseOne.tsx +++ b/site/src/components/Conditionals/ChooseOne.tsx @@ -1,7 +1,13 @@ -import { Children, PropsWithChildren } from "react"; +import { + Children, + type FC, + type PropsWithChildren, + type ReactNode, +} from "react"; export interface CondProps { condition?: boolean; + children?: ReactNode; } /** @@ -11,9 +17,7 @@ export interface CondProps { * @param condition boolean expression indicating whether the child should be rendered, or undefined * @returns child. Note that Cond alone does not enforce the condition; it should be used inside ChooseOne. */ -export const Cond = ({ - children, -}: PropsWithChildren): JSX.Element => { +export const Cond: FC = ({ children }) => { return <>{children}; }; @@ -24,9 +28,7 @@ export const Cond = ({ * @returns one of its children, or null if there are no children * @throws an error if its last child has a condition prop, or any non-final children do not have a condition prop */ -export const ChooseOne = ({ - children, -}: PropsWithChildren): JSX.Element | null => { +export const ChooseOne: FC = ({ children }) => { const childArray = Children.toArray(children) as JSX.Element[]; if (childArray.length === 0) { return null; diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx index d39fd9526c9d1..08b00733ea516 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx @@ -1,10 +1,10 @@ import DialogActions from "@mui/material/DialogActions"; import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type PropsWithChildren, type ReactNode } from "react"; +import { type FC, type ReactNode } from "react"; import { Dialog, DialogActionButtons, - DialogActionButtonsProps, + type DialogActionButtonsProps, } from "../Dialog"; import type { ConfirmDialogType } from "../types"; @@ -98,7 +98,7 @@ const styles = { * Quick-use version of the Dialog component with slightly alternative styles, * great to use for dialogs that don't have any interaction beyond yes / no. */ -export const ConfirmDialog: FC> = ({ +export const ConfirmDialog: FC = ({ cancelText, confirmLoading, confirmText, diff --git a/site/src/components/Expander/Expander.tsx b/site/src/components/Expander/Expander.tsx index 7ca21ab1b05ef..6d3ff6160ce02 100644 --- a/site/src/components/Expander/Expander.tsx +++ b/site/src/components/Expander/Expander.tsx @@ -1,15 +1,16 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Collapse from "@mui/material/Collapse"; import Link from "@mui/material/Link"; +import { type FC, type ReactNode } from "react"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; -import { type FC, type PropsWithChildren } from "react"; export interface ExpanderProps { expanded: boolean; setExpanded: (val: boolean) => void; + children?: ReactNode; } -export const Expander: FC> = ({ +export const Expander: FC = ({ expanded, setExpanded, children, diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index 826b2ea81adcd..f1a91a9898f80 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -5,6 +5,7 @@ import { type HTMLProps, type PropsWithChildren, useContext, + ReactNode, } from "react"; import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; @@ -67,19 +68,20 @@ export const VerticalForm: FC> = ({ ); }; -export const FormSection: FC< - PropsWithChildren & { - title: string | JSX.Element; - description: string | JSX.Element; - classes?: { - root?: string; - sectionInfo?: string; - infoTitle?: string; - }; - alpha?: boolean; - deprecated?: boolean; - } -> = ({ +interface FormSectionProps { + children?: ReactNode; + title: ReactNode; + description: ReactNode; + classes?: { + root?: string; + sectionInfo?: string; + infoTitle?: string; + }; + alpha?: boolean; + deprecated?: boolean; +} + +export const FormSection: FC = ({ children, title, description, @@ -166,7 +168,7 @@ const styles = { }, } satisfies Record>; -export const FormFooter = (props: Exclude) => ( +export const FormFooter: FC> = (props) => ( ); diff --git a/site/src/components/FullPageForm/FullPageForm.tsx b/site/src/components/FullPageForm/FullPageForm.tsx index f3f521c1015cf..0d4e8b1b5a49d 100644 --- a/site/src/components/FullPageForm/FullPageForm.tsx +++ b/site/src/components/FullPageForm/FullPageForm.tsx @@ -9,9 +9,10 @@ import { export interface FullPageFormProps { title: string; detail?: ReactNode; + children?: ReactNode; } -export const FullPageForm: FC> = ({ +export const FullPageForm: FC = ({ title, detail, children, diff --git a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx index aa85e14dc88b4..9bf7c042b4045 100644 --- a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx +++ b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx @@ -1,21 +1,25 @@ +import Button from "@mui/material/Button"; +import { type FC, type ReactNode } from "react"; import { Margins } from "components/Margins/Margins"; -import { FC, ReactNode } from "react"; import { PageHeader, PageHeaderTitle, PageHeaderSubtitle, } from "components/PageHeader/PageHeader"; -import Button from "@mui/material/Button"; export interface FullPageHorizontalFormProps { title: string; detail?: ReactNode; onCancel?: () => void; + children?: ReactNode; } -export const FullPageHorizontalForm: FC< - React.PropsWithChildren -> = ({ title, detail, onCancel, children }) => { +export const FullPageHorizontalForm: FC = ({ + title, + detail, + onCancel, + children, +}) => { return ( > = (props) => { +export const HelpTooltip: FC = (props) => { return ; }; -export const HelpTooltipContent = ( - props: ComponentProps, -) => { +export const HelpTooltipContent: FC = (props) => { const theme = useTheme(); return ( @@ -125,10 +124,12 @@ export const HelpTooltipText: FC> = ({ ); }; -export const HelpTooltipLink: FC> = ({ - children, - href, -}) => { +interface HelpTooltipLink { + children?: ReactNode; + href: string; +} + +export const HelpTooltipLink: FC = ({ children, href }) => { return ( diff --git a/site/src/components/PageHeader/FullWidthPageHeader.tsx b/site/src/components/PageHeader/FullWidthPageHeader.tsx index 32257579cffe8..117e988a815dc 100644 --- a/site/src/components/PageHeader/FullWidthPageHeader.tsx +++ b/site/src/components/PageHeader/FullWidthPageHeader.tsx @@ -1,9 +1,15 @@ import { type CSSObject, useTheme } from "@emotion/react"; -import { type FC, type PropsWithChildren } from "react"; +import { type FC, type PropsWithChildren, type ReactNode } from "react"; -export const FullWidthPageHeader: FC< - PropsWithChildren & { sticky?: boolean } -> = ({ children, sticky = true }) => { +interface FullWidthPageHeaderProps { + children?: ReactNode; + sticky?: boolean; +} + +export const FullWidthPageHeader: FC = ({ + children, + sticky = true, +}) => { const theme = useTheme(); return (
> = ({ +export const PageHeader: FC = ({ children, actions, className, @@ -48,9 +49,7 @@ export const PageHeader: FC> = ({ ); }; -export const PageHeaderTitle: FC> = ({ - children, -}) => { +export const PageHeaderTitle: FC = ({ children }) => { return (

> = ({ ); }; -export const PageHeaderSubtitle: FC< - PropsWithChildren<{ condensed?: boolean }> -> = ({ children, condensed }) => { +interface PageHeaderSubtitleProps { + children?: ReactNode; + condensed?: boolean; +} + +export const PageHeaderSubtitle: FC = ({ + children, + condensed, +}) => { return (

({ diff --git a/site/src/components/PaginationWidget/PageButtons.tsx b/site/src/components/PaginationWidget/PageButtons.tsx index 003cb7bf4be34..d124b4562dab4 100644 --- a/site/src/components/PaginationWidget/PageButtons.tsx +++ b/site/src/components/PaginationWidget/PageButtons.tsx @@ -1,6 +1,6 @@ -import { type FC, type PropsWithChildren } from "react"; import Button from "@mui/material/Button"; import { useTheme } from "@emotion/react"; +import { type FC, type ReactNode } from "react"; type NumberedPageButtonProps = { pageNumber: number; @@ -31,9 +31,10 @@ export const NumberedPageButton: FC = ({ ); }; -type PlaceholderPageButtonProps = PropsWithChildren<{ +type PlaceholderPageButtonProps = { pagesOmitted: number; -}>; + children?: ReactNode; +}; export const PlaceholderPageButton: FC = ({ pagesOmitted, @@ -50,14 +51,14 @@ export const PlaceholderPageButton: FC = ({ ); }; -type BasePageButtonProps = PropsWithChildren<{ +type BasePageButtonProps = { + children?: ReactNode; + onClick?: () => void; name: string; "aria-label": string; - - onClick?: () => void; highlighted?: boolean; disabled?: boolean; -}>; +}; const BasePageButton: FC = ({ children, diff --git a/site/src/components/Popover/Popover.tsx b/site/src/components/Popover/Popover.tsx index f67cf4612cbb8..d3af0d98bb775 100644 --- a/site/src/components/Popover/Popover.tsx +++ b/site/src/components/Popover/Popover.tsx @@ -40,7 +40,7 @@ const PopoverContext = createContext( undefined, ); -interface PopoverProps { +export interface PopoverProps { children: ReactNode | ((popover: PopoverContextValue) => ReactNode); // Allows inline usage mode?: TriggerMode; isDefaultOpen?: boolean; @@ -112,7 +112,7 @@ export const PopoverTrigger = ( type Horizontal = "left" | "right"; -type PopoverContentProps = Omit< +export type PopoverContentProps = Omit< MuiPopoverProps, "open" | "onClose" | "anchorEl" > & { diff --git a/site/src/components/Resources/ResourceCard.tsx b/site/src/components/Resources/ResourceCard.tsx index 6e7188230a10d..6463487dfb3ff 100644 --- a/site/src/components/Resources/ResourceCard.tsx +++ b/site/src/components/Resources/ResourceCard.tsx @@ -76,7 +76,7 @@ export interface ResourceCardProps { agentRow: (agent: WorkspaceAgent) => JSX.Element; } -const p = ({ children }: PropsWithChildren) => { +const p: FC = ({ children }) => { const childrens = Children.toArray(children); if (childrens.every((child) => typeof child === "string")) { return {children}; diff --git a/site/src/components/Resources/Resources.tsx b/site/src/components/Resources/Resources.tsx index 556133506508c..7294d4876f01e 100644 --- a/site/src/components/Resources/Resources.tsx +++ b/site/src/components/Resources/Resources.tsx @@ -1,11 +1,10 @@ -import { type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { type FC, useState } from "react"; import type { WorkspaceAgent, WorkspaceResource } from "api/typesGenerated"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { Stack } from "../Stack/Stack"; import { ResourceCard } from "./ResourceCard"; -import { useTheme } from "@mui/material/styles"; const countAgents = (resource: WorkspaceResource) => { return resource.agents ? resource.agents.length : 0; @@ -16,10 +15,7 @@ interface ResourcesProps { agentRow: (agent: WorkspaceAgent, numberOfAgents: number) => JSX.Element; } -export const Resources: FC> = ({ - resources, - agentRow, -}) => { +export const Resources: FC = ({ resources, agentRow }) => { const theme = useTheme(); const [shouldDisplayHideResources, setShouldDisplayHideResources] = useState(false); diff --git a/site/src/components/Resources/SSHButton/SSHButton.tsx b/site/src/components/Resources/SSHButton/SSHButton.tsx index c911a4c73cf60..62d1beb648dbe 100644 --- a/site/src/components/Resources/SSHButton/SSHButton.tsx +++ b/site/src/components/Resources/SSHButton/SSHButton.tsx @@ -1,5 +1,5 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type PropsWithChildren } from "react"; +import { type FC } from "react"; import { HelpTooltipLink, HelpTooltipLinksGroup, @@ -24,7 +24,7 @@ export interface SSHButtonProps { sshPrefix?: string; } -export const SSHButton: FC> = ({ +export const SSHButton: FC = ({ workspaceName, agentName, isDefaultOpen = false, diff --git a/site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx b/site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx index 90562dbcbc51c..f1e5ba93e6f4f 100644 --- a/site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx +++ b/site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx @@ -1,15 +1,15 @@ +import { type FC } from "react"; +import type { WorkspaceResource } from "api/typesGenerated"; import { AgentRowPreview } from "components/Resources/AgentRowPreview"; import { Resources } from "components/Resources/Resources"; -import { FC } from "react"; -import { WorkspaceResource } from "api/typesGenerated"; export interface TemplateResourcesProps { resources: WorkspaceResource[]; } -export const TemplateResourcesTable: FC< - React.PropsWithChildren -> = ({ resources }) => { +export const TemplateResourcesTable: FC = ({ + resources, +}) => { return ( ; +interface TimelineEntryProps extends TableRowProps { + clickable?: boolean; +} -export const TimelineEntry = forwardRef(function TimelineEntry( - { children, clickable = true, ...props }: TimelineEntryProps, - ref?: React.ForwardedRef, -) { +export const TimelineEntry = forwardRef< + HTMLTableRowElement, + TimelineEntryProps +>(function TimelineEntry({ children, clickable = true, ...props }, ref) { return ( ; title?: string | JSX.Element; } -export const ChartSection: FC> = ({ +export const ChartSection: FC = ({ action, children, contentsProps, diff --git a/site/src/pages/LoginPage/SignInForm.tsx b/site/src/pages/LoginPage/SignInForm.tsx index 4fa20687d52d9..11bdc402abca4 100644 --- a/site/src/pages/LoginPage/SignInForm.tsx +++ b/site/src/pages/LoginPage/SignInForm.tsx @@ -1,11 +1,11 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import { ReactNode, type FC } from "react"; +import { type FC, type ReactNode } from "react"; import type { AuthMethods } from "api/typesGenerated"; -import { PasswordSignInForm } from "./PasswordSignInForm"; -import { OAuthSignInForm } from "./OAuthSignInForm"; import { Alert } from "components/Alert/Alert"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { getApplicationName } from "utils/appearance"; +import { PasswordSignInForm } from "./PasswordSignInForm"; +import { OAuthSignInForm } from "./OAuthSignInForm"; export const Language = { emailLabel: "Email", @@ -69,7 +69,7 @@ export interface SignInFormProps { onSubmit: (credentials: { email: string; password: string }) => void; } -export const SignInForm: FC> = ({ +export const SignInForm: FC = ({ authMethods, redirectTo, isSigningIn, diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index 2c75b473bc191..0e2fb9b2162a7 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -181,7 +181,7 @@ export interface TemplatePermissionsPageViewProps { } export const TemplatePermissionsPageView: FC< - React.PropsWithChildren + TemplatePermissionsPageViewProps > = ({ templateACL, canUpdatePermissions, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx index 756fd97703309..08fe8e6b65927 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx @@ -1,5 +1,5 @@ import DialogActions from "@mui/material/DialogActions"; -import { type FC, type PropsWithChildren } from "react"; +import { type FC } from "react"; import Checkbox from "@mui/material/Checkbox"; import FormControlLabel from "@mui/material/FormControlLabel"; import { Stack } from "@mui/system"; @@ -18,7 +18,7 @@ export interface ScheduleDialogProps extends ConfirmDialogProps { readonly deletionValueChanged: boolean; } -export const ScheduleDialog: FC> = ({ +export const ScheduleDialog: FC = ({ cancelText, confirmLoading, disabled = false, diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx index c3ac6a1c47e4d..97d05761b2c6d 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx @@ -1,6 +1,6 @@ import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; -import { type FC, type PropsWithChildren } from "react"; +import { type FC } from "react"; import { useTheme } from "@emotion/react"; import type { GitSSHKey } from "api/typesGenerated"; import { CodeExample } from "components/CodeExample/CodeExample"; @@ -14,7 +14,7 @@ export interface SSHKeysPageViewProps { onRegenerateClick: () => void; } -export const SSHKeysPageView: FC> = ({ +export const SSHKeysPageView: FC = ({ isLoading, getSSHKeyError, sshKey, diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx index 932dc4acd6f9d..16bb44691f70c 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx @@ -1,20 +1,20 @@ import TextField from "@mui/material/TextField"; +import MenuItem from "@mui/material/MenuItem"; +import LoadingButton from "@mui/lab/LoadingButton"; import { FormikContextType, useFormik } from "formik"; -import { FC, useEffect, useState } from "react"; +import { type FC, useEffect, useState } from "react"; import * as Yup from "yup"; import { getFormHelpers } from "utils/formUtils"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Form, FormFields } from "components/Form/Form"; -import { +import type { UpdateUserQuietHoursScheduleRequest, UserQuietHoursScheduleResponse, } from "api/typesGenerated"; -import MenuItem from "@mui/material/MenuItem"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { Form, FormFields } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; -import { timeZones, getPreferredTimezone } from "utils/timeZones"; import { Alert } from "components/Alert/Alert"; import { timeToCron, quietHoursDisplay, validTime } from "utils/schedule"; -import LoadingButton from "@mui/lab/LoadingButton"; +import { timeZones, getPreferredTimezone } from "utils/timeZones"; export interface ScheduleFormValues { time: string; @@ -45,7 +45,7 @@ export interface ScheduleFormProps { now?: Date; } -export const ScheduleForm: FC> = ({ +export const ScheduleForm: FC = ({ isLoading, initialValues, submitError, diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx index 0832ef8dcffd0..d2c467a155b8b 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx @@ -4,15 +4,15 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; +import { type FC } from "react"; +import type { Region } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { Stack } from "components/Stack/Stack"; import { TableEmpty } from "components/TableEmpty/TableEmpty"; import { TableLoader } from "components/TableLoader/TableLoader"; -import { FC } from "react"; -import { Region } from "api/typesGenerated"; -import { ProxyRow } from "./WorkspaceProxyRow"; import { ProxyLatencyReport } from "contexts/useProxyLatency"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { ProxyRow } from "./WorkspaceProxyRow"; export interface WorkspaceProxyViewProps { proxies?: Region[]; @@ -24,9 +24,7 @@ export interface WorkspaceProxyViewProps { selectProxyError?: unknown; } -export const WorkspaceProxyView: FC< - React.PropsWithChildren -> = ({ +export const WorkspaceProxyView: FC = ({ proxies, proxyLatencies, getWorkspaceProxiesError, diff --git a/site/src/pages/UsersPage/ResetPasswordDialog.tsx b/site/src/pages/UsersPage/ResetPasswordDialog.tsx index 9bf8bbe51b63c..a96e7d34cbdb8 100644 --- a/site/src/pages/UsersPage/ResetPasswordDialog.tsx +++ b/site/src/pages/UsersPage/ResetPasswordDialog.tsx @@ -22,9 +22,14 @@ export const Language = { confirmText: "Reset password", }; -export const ResetPasswordDialog: FC< - React.PropsWithChildren -> = ({ open, onClose, onConfirm, user, newPassword, loading }) => { +export const ResetPasswordDialog: FC = ({ + open, + onClose, + onConfirm, + user, + newPassword, + loading, +}) => { const description = ( <>

{Language.message(user?.username)}

diff --git a/site/src/pages/UsersPage/UsersPageView.tsx b/site/src/pages/UsersPage/UsersPageView.tsx index 422e4be26192d..3216e8c4df94f 100644 --- a/site/src/pages/UsersPage/UsersPageView.tsx +++ b/site/src/pages/UsersPage/UsersPageView.tsx @@ -1,13 +1,12 @@ import { type ComponentProps, type FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { type GroupsByUserId } from "api/queries/groups"; - -import { UsersTable } from "./UsersTable/UsersTable"; -import { UsersFilter } from "./UsersFilter"; import { PaginationContainer, type PaginationResult, } from "components/PaginationWidget/PaginationContainer"; +import { UsersTable } from "./UsersTable/UsersTable"; +import { UsersFilter } from "./UsersFilter"; export interface UsersPageViewProps { users?: TypesGen.User[]; @@ -35,7 +34,7 @@ export interface UsersPageViewProps { usersQuery: PaginationResult; } -export const UsersPageView: FC> = ({ +export const UsersPageView: FC = ({ users, roles, onSuspendUser, diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx index 7c00c470b23b8..c552a87e0906a 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx @@ -1,13 +1,12 @@ -import { type FC } from "react"; -import type * as TypesGen from "api/typesGenerated"; -import { type GroupsByUserId } from "api/queries/groups"; - import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; +import { type FC } from "react"; +import type * as TypesGen from "api/typesGenerated"; +import { type GroupsByUserId } from "api/queries/groups"; import { Stack } from "components/Stack/Stack"; import { TableColumnHelpTooltip } from "./TableColumnHelpTooltip"; import { UsersTableBody } from "./UsersTableBody"; @@ -45,7 +44,7 @@ export interface UsersTableProps { authMethods?: TypesGen.AuthMethods; } -export const UsersTable: FC> = ({ +export const UsersTable: FC = ({ users, roles, onSuspendUser, diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx index fe906c4b1cebd..0e0a45f9f6ad8 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx @@ -62,9 +62,7 @@ interface UsersTableBodyProps { oidcRoleSyncEnabled: boolean; } -export const UsersTableBody: FC< - React.PropsWithChildren -> = ({ +export const UsersTableBody: FC = ({ users, authMethods, roles, diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.tsx index bc7aeda23ed89..5dc4b0e21e316 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.tsx @@ -1,9 +1,14 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import { + Children, + type FC, + type HTMLAttributes, + type PropsWithChildren, +} from "react"; +import type { WorkspaceResource } from "api/typesGenerated"; import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { SensitiveValue } from "components/Resources/SensitiveValue"; import { CopyableValue } from "components/CopyableValue/CopyableValue"; -import { WorkspaceResource } from "api/typesGenerated"; -import { Children, FC, HTMLAttributes, PropsWithChildren } from "react"; -import { Interpolation, Theme } from "@emotion/react"; type ResourceMetadataProps = Omit, "resource"> & { resource: WorkspaceResource; @@ -49,7 +54,7 @@ export const ResourceMetadata: FC = ({ ); }; -const MetaValue = ({ children }: PropsWithChildren) => { +const MetaValue: FC = ({ children }) => { const childrenArray = Children.toArray(children); if (childrenArray.every((child) => typeof child === "string")) { return ( diff --git a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx index a5b75a524c350..8001319b48677 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx @@ -1,14 +1,14 @@ import Button from "@mui/material/Button"; -import { FC } from "react"; +import { type FC } from "react"; import { Alert } from "components/Alert/Alert"; export interface WorkspaceDeletedBannerProps { handleClick: () => void; } -export const WorkspaceDeletedBanner: FC< - React.PropsWithChildren -> = ({ handleClick }) => { +export const WorkspaceDeletedBanner: FC = ({ + handleClick, +}) => { const NewWorkspaceButton = (