diff --git a/site/.storybook/preview.tsx b/site/.storybook/preview.tsx index 6871898a54..21b63e59be 100644 --- a/site/.storybook/preview.tsx +++ b/site/.storybook/preview.tsx @@ -9,7 +9,6 @@ import { import { DecoratorHelpers } from "@storybook/addon-themes"; import isChromatic from "chromatic/isChromatic"; import { StrictMode } from "react"; -import { HelmetProvider } from "react-helmet-async"; import { QueryClient, QueryClientProvider } from "react-query"; import { withRouter } from "storybook-addon-remix-react-router"; import "theme/globalFonts"; @@ -62,14 +61,6 @@ export const parameters: Parameters = { }, }; -const withHelmet: Decorator = (Story) => { - return ( - - - - ); -}; - const withQuery: Decorator = (Story, { parameters }) => { const queryClient = new QueryClient({ defaultOptions: { @@ -118,12 +109,7 @@ const withTheme: Decorator = (Story, context) => { ); }; -export const decorators: Decorator[] = [ - withRouter, - withQuery, - withHelmet, - withTheme, -]; +export const decorators: Decorator[] = [withRouter, withQuery, withTheme]; // Try to fix storybook rendering fonts inconsistently // https://www.chromatic.com/docs/font-loading/#solution-c-check-fonts-have-loaded-in-a-loader diff --git a/site/index.html b/site/index.html index 3b2c5083ec..d8bbea32fa 100644 --- a/site/index.html +++ b/site/index.html @@ -28,34 +28,29 @@ - diff --git a/site/package.json b/site/package.json index 87192d852e..3be72571e4 100644 --- a/site/package.json +++ b/site/package.json @@ -99,7 +99,6 @@ "react-confetti": "6.2.2", "react-date-range": "1.4.0", "react-dom": "19.1.1", - "react-helmet-async": "2.0.5", "react-markdown": "9.0.3", "react-query": "npm:@tanstack/react-query@5.77.0", "react-resizable-panels": "3.0.3", diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index adc6b76b71..41f5b8634f 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -211,9 +211,6 @@ importers: react-dom: specifier: 19.1.1 version: 19.1.1(react@19.1.1) - react-helmet-async: - specifier: 2.0.5 - version: 2.0.5(react@19.1.1) react-markdown: specifier: 9.0.3 version: 9.0.3(@types/react@19.1.13)(react@19.1.1) @@ -3987,9 +3984,6 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, tarball: https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz} engines: {node: '>=12'} - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, tarball: https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, tarball: https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz} engines: {node: '>= 0.10'} @@ -5238,14 +5232,6 @@ packages: react-fast-compare@2.0.4: resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==, tarball: https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz} - react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==, tarball: https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz} - - react-helmet-async@2.0.5: - resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==, tarball: https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-2.0.5.tgz} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-inspector@6.0.2: resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==, tarball: https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz} peerDependencies: @@ -5554,9 +5540,6 @@ packages: shallow-equal@1.2.1: resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==, tarball: https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz} - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==, tarball: https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} engines: {node: '>=8'} @@ -10137,10 +10120,6 @@ snapshots: internmap@2.0.3: {} - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} is-alphabetical@1.0.4: {} @@ -11900,15 +11879,6 @@ snapshots: react-fast-compare@2.0.4: {} - react-fast-compare@3.2.2: {} - - react-helmet-async@2.0.5(react@19.1.1): - dependencies: - invariant: 2.2.4 - react: 19.1.1 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - react-inspector@6.0.2(react@19.1.1): dependencies: react: 19.1.1 @@ -12296,8 +12266,6 @@ snapshots: shallow-equal@1.2.1: {} - shallowequal@1.1.0: {} - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 diff --git a/site/src/App.tsx b/site/src/App.tsx index 9d95b055b4..57497b586f 100644 --- a/site/src/App.tsx +++ b/site/src/App.tsx @@ -7,7 +7,6 @@ import { useEffect, useState, } from "react"; -import { HelmetProvider } from "react-helmet-async"; import { QueryClient, QueryClientProvider } from "react-query"; import { RouterProvider } from "react-router"; import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar"; @@ -51,17 +50,15 @@ export const AppProviders: FC = ({ }, []); return ( - - - - - {children} - - - - {showDevtools && } - - + + + + {children} + + + + {showDevtools && } + ); }; diff --git a/site/src/components/Alert/Alert.tsx b/site/src/components/Alert/Alert.tsx index 1cbf36b2df..86ae99b3b0 100644 --- a/site/src/components/Alert/Alert.tsx +++ b/site/src/components/Alert/Alert.tsx @@ -11,7 +11,6 @@ import { type ReactNode, useState, } from "react"; - export type AlertColor = MuiAlertColor; export type AlertProps = MuiAlertProps & { diff --git a/site/src/components/Avatar/AvatarDataSkeleton.tsx b/site/src/components/Avatar/AvatarDataSkeleton.tsx index d388a44f2d..1c12749888 100644 --- a/site/src/components/Avatar/AvatarDataSkeleton.tsx +++ b/site/src/components/Avatar/AvatarDataSkeleton.tsx @@ -1,6 +1,5 @@ import Skeleton from "@mui/material/Skeleton"; import type { FC } from "react"; - export const AvatarDataSkeleton: FC = () => { return (
diff --git a/site/src/components/Checkbox/Checkbox.tsx b/site/src/components/Checkbox/Checkbox.tsx index e4e5bc813c..ac757952f6 100644 --- a/site/src/components/Checkbox/Checkbox.tsx +++ b/site/src/components/Checkbox/Checkbox.tsx @@ -5,7 +5,6 @@ import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { Check, Minus } from "lucide-react"; import * as React from "react"; - import { cn } from "utils/cn"; /** diff --git a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx index e9042eefb7..831b8d730c 100644 --- a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx +++ b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx @@ -3,7 +3,6 @@ import { CoderIcon } from "components/Icons/CoderIcon"; import { Link } from "components/Link/Link"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useState } from "react"; -import { Helmet } from "react-helmet-async"; import { type ErrorResponse, isRouteErrorResponse, @@ -34,9 +33,7 @@ export const GlobalErrorBoundaryInner: FC = ({ return (
- - {errorPageTitle} - + {errorPageTitle}
diff --git a/site/src/components/FullPageForm/FullPageForm.tsx b/site/src/components/FullPageForm/FullPageForm.tsx index b4825731bc..df068a637d 100644 --- a/site/src/components/FullPageForm/FullPageForm.tsx +++ b/site/src/components/FullPageForm/FullPageForm.tsx @@ -5,7 +5,6 @@ import { PageHeaderTitle, } from "components/PageHeader/PageHeader"; import type { FC, ReactNode } from "react"; - export interface FullPageFormProps { title: string; detail?: ReactNode; diff --git a/site/src/components/Icons/DockerIcon.tsx b/site/src/components/Icons/DockerIcon.tsx index 282e5f33f3..04c0021e73 100644 --- a/site/src/components/Icons/DockerIcon.tsx +++ b/site/src/components/Icons/DockerIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const DockerIcon = (props: SvgIconProps): JSX.Element => ( ( diff --git a/site/src/components/Icons/ErrorIcon.tsx b/site/src/components/Icons/ErrorIcon.tsx index b5da4c50b4..0e8352be79 100644 --- a/site/src/components/Icons/ErrorIcon.tsx +++ b/site/src/components/Icons/ErrorIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const ErrorIcon = (props: SvgIconProps): JSX.Element => ( ( diff --git a/site/src/components/Icons/JetBrainsIcon.tsx b/site/src/components/Icons/JetBrainsIcon.tsx index 277df9a111..033f65186a 100644 --- a/site/src/components/Icons/JetBrainsIcon.tsx +++ b/site/src/components/Icons/JetBrainsIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const JetBrainsIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/RocketIcon.tsx b/site/src/components/Icons/RocketIcon.tsx index d1b4893182..677a1a318a 100644 --- a/site/src/components/Icons/RocketIcon.tsx +++ b/site/src/components/Icons/RocketIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const RocketIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/TerminalIcon.tsx b/site/src/components/Icons/TerminalIcon.tsx index c50f488814..24a7320ac7 100644 --- a/site/src/components/Icons/TerminalIcon.tsx +++ b/site/src/components/Icons/TerminalIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const TerminalIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/VSCodeIcon.tsx b/site/src/components/Icons/VSCodeIcon.tsx index 1c432f972c..583a0a614f 100644 --- a/site/src/components/Icons/VSCodeIcon.tsx +++ b/site/src/components/Icons/VSCodeIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const VSCodeIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/VSCodeInsidersIcon.tsx b/site/src/components/Icons/VSCodeInsidersIcon.tsx index bb4f80f0dd..ef9dbb0e0e 100644 --- a/site/src/components/Icons/VSCodeInsidersIcon.tsx +++ b/site/src/components/Icons/VSCodeInsidersIcon.tsx @@ -1,7 +1,6 @@ import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; import type { JSX } from "react"; - export const VSCodeInsidersIcon = (props: SvgIconProps): JSX.Element => ( > = (props) => { return (
= (props) => { return ( & { onChange: (query: string) => void; autoFocus?: boolean; diff --git a/site/src/components/Separator/Separator.tsx b/site/src/components/Separator/Separator.tsx index e18975eb2d..b43f0f32ae 100644 --- a/site/src/components/Separator/Separator.tsx +++ b/site/src/components/Separator/Separator.tsx @@ -4,7 +4,6 @@ import * as SeparatorPrimitive from "@radix-ui/react-separator"; * @see {@link https://ui.shadcn.com/docs/components/separator} */ import type * as React from "react"; - import { cn } from "utils/cn"; function Separator({ diff --git a/site/src/components/SignInLayout/SignInLayout.tsx b/site/src/components/SignInLayout/SignInLayout.tsx index e495b49ac0..b338d6c81f 100644 --- a/site/src/components/SignInLayout/SignInLayout.tsx +++ b/site/src/components/SignInLayout/SignInLayout.tsx @@ -1,5 +1,4 @@ import type { FC, PropsWithChildren } from "react"; - export const SignInLayout: FC = ({ children }) => { return (
diff --git a/site/src/components/Slider/Slider.tsx b/site/src/components/Slider/Slider.tsx index 74a9aea827..6f1857e641 100644 --- a/site/src/components/Slider/Slider.tsx +++ b/site/src/components/Slider/Slider.tsx @@ -4,7 +4,6 @@ */ import * as SliderPrimitive from "@radix-ui/react-slider"; import * as React from "react"; - import { cn } from "utils/cn"; export const Slider = React.forwardRef< diff --git a/site/src/components/SyntaxHighlighter/coderTheme.ts b/site/src/components/SyntaxHighlighter/coderTheme.ts index e5b935067f..0150ff3f1a 100644 --- a/site/src/components/SyntaxHighlighter/coderTheme.ts +++ b/site/src/components/SyntaxHighlighter/coderTheme.ts @@ -1,7 +1,6 @@ import { useTheme } from "@emotion/react"; import { useMonaco } from "@monaco-editor/react"; import { useEffect, useState } from "react"; - export const useCoderTheme = (): { isLoading: boolean; name: string } => { const [isLoading, setIsLoading] = useState(true); const monaco = useMonaco(); diff --git a/site/src/components/TableToolbar/TableToolbar.tsx b/site/src/components/TableToolbar/TableToolbar.tsx index 4a83858e02..95b2945e05 100644 --- a/site/src/components/TableToolbar/TableToolbar.tsx +++ b/site/src/components/TableToolbar/TableToolbar.tsx @@ -1,6 +1,5 @@ import Skeleton from "@mui/material/Skeleton"; import type { FC, PropsWithChildren } from "react"; - export const TableToolbar: FC = ({ children }) => { return (
diff --git a/site/src/components/Textarea/Textarea.tsx b/site/src/components/Textarea/Textarea.tsx index 7b55c476d6..b9078ae98a 100644 --- a/site/src/components/Textarea/Textarea.tsx +++ b/site/src/components/Textarea/Textarea.tsx @@ -3,7 +3,6 @@ * @see {@link https://ui.shadcn.com/docs/components/textarea} */ import * as React from "react"; - import { cn } from "utils/cn"; export const Textarea = React.forwardRef< diff --git a/site/src/hooks/hookPolyfills.ts b/site/src/hooks/hookPolyfills.ts index 743a3f8750..171ff2c053 100644 --- a/site/src/hooks/hookPolyfills.ts +++ b/site/src/hooks/hookPolyfills.ts @@ -7,7 +7,6 @@ * hooks do, especially for dependency arrays. */ import { useCallback, useLayoutEffect, useRef } from "react"; - /** * A DIY version of useEffectEvent. * diff --git a/site/src/hooks/useEmbeddedMetadata.ts b/site/src/hooks/useEmbeddedMetadata.ts index 64926755ec..951aced7a7 100644 --- a/site/src/hooks/useEmbeddedMetadata.ts +++ b/site/src/hooks/useEmbeddedMetadata.ts @@ -8,7 +8,6 @@ import type { UserAppearanceSettings, } from "api/typesGenerated"; import { useMemo, useSyncExternalStore } from "react"; - export const DEFAULT_METADATA_KEY = "property"; /** diff --git a/site/src/hooks/useWindowSize.ts b/site/src/hooks/useWindowSize.ts index 5fff5c17d8..f2c8a46414 100644 --- a/site/src/hooks/useWindowSize.ts +++ b/site/src/hooks/useWindowSize.ts @@ -1,5 +1,4 @@ import { useEffect, useState } from "react"; - export function useWindowSize() { const [windowSize, setWindowSize] = useState({ width: window.innerWidth, diff --git a/site/src/hooks/useWorkspaceBuildLogs.ts b/site/src/hooks/useWorkspaceBuildLogs.ts index 896ea49219..8ef249ef24 100644 --- a/site/src/hooks/useWorkspaceBuildLogs.ts +++ b/site/src/hooks/useWorkspaceBuildLogs.ts @@ -2,7 +2,6 @@ import { watchBuildLogsByBuildId } from "api/api"; import type { ProvisionerJobLog } from "api/typesGenerated"; import { displayError } from "components/GlobalSnackbar/utils"; import { useEffect, useRef, useState } from "react"; - export const useWorkspaceBuildLogs = ( // buildId is optional because sometimes the build is not loaded yet buildId: string | undefined, diff --git a/site/src/modules/provisioners/ProvisionerAlert.tsx b/site/src/modules/provisioners/ProvisionerAlert.tsx index a736e9a5b7..2160b4e7b3 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.tsx @@ -3,7 +3,6 @@ import AlertTitle from "@mui/material/AlertTitle"; import { Alert, type AlertColor, AlertDetail } from "components/Alert/Alert"; import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; import type { FC } from "react"; - export enum AlertVariant { // Alerts are usually styled with a full rounded border and meant to use as a visually distinct element of the page. // The Standalone variant conforms to this styling. diff --git a/site/src/modules/resources/AgentButton.tsx b/site/src/modules/resources/AgentButton.tsx index e5b4a54834..c02a591b2d 100644 --- a/site/src/modules/resources/AgentButton.tsx +++ b/site/src/modules/resources/AgentButton.tsx @@ -1,6 +1,5 @@ import { Button, type ButtonProps } from "components/Button/Button"; import { forwardRef } from "react"; - export const AgentButton = forwardRef( (props, ref) => { return