diff --git a/site/src/App.tsx b/site/src/App.tsx index 4d6c5ad94a..197d875a1a 100644 --- a/site/src/App.tsx +++ b/site/src/App.tsx @@ -1,6 +1,5 @@ import "./theme/globalFonts"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { TooltipProvider } from "components/Tooltip/Tooltip"; import { type FC, type ReactNode, @@ -10,6 +9,7 @@ import { } from "react"; import { QueryClient, QueryClientProvider } from "react-query"; import { RouterProvider } from "react-router"; +import { TooltipProvider } from "#/components/Tooltip/Tooltip"; import { Toaster } from "./components/Toaster/Toaster"; import { AuthProvider } from "./contexts/auth/AuthProvider"; import { DiffsWorkerPoolProvider } from "./contexts/DiffsWorkerPoolProvider"; diff --git a/site/src/api/queries/aiBridge.ts b/site/src/api/queries/aiBridge.ts index 987555aabc..039847ef2d 100644 --- a/site/src/api/queries/aiBridge.ts +++ b/site/src/api/queries/aiBridge.ts @@ -1,7 +1,7 @@ import { API } from "api/api"; import type { AIBridgeListInterceptionsResponse } from "api/typesGenerated"; -import { useFilterParamsKey } from "components/Filter/Filter"; import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; +import { useFilterParamsKey } from "#/components/Filter/Filter"; export const paginatedInterceptions = ( searchParams: URLSearchParams, diff --git a/site/src/api/queries/audits.ts b/site/src/api/queries/audits.ts index 9be370271c..4a7cfeb53b 100644 --- a/site/src/api/queries/audits.ts +++ b/site/src/api/queries/audits.ts @@ -1,7 +1,7 @@ import { API } from "api/api"; import type { AuditLogResponse } from "api/typesGenerated"; -import { useFilterParamsKey } from "components/Filter/Filter"; import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; +import { useFilterParamsKey } from "#/components/Filter/Filter"; export function paginatedAudits( searchParams: URLSearchParams, diff --git a/site/src/api/queries/connectionlog.ts b/site/src/api/queries/connectionlog.ts index 9fbeb3f9e7..30fc724844 100644 --- a/site/src/api/queries/connectionlog.ts +++ b/site/src/api/queries/connectionlog.ts @@ -1,7 +1,7 @@ import { API } from "api/api"; import type { ConnectionLogResponse } from "api/typesGenerated"; -import { useFilterParamsKey } from "components/Filter/Filter"; import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; +import { useFilterParamsKey } from "#/components/Filter/Filter"; export function paginatedConnectionLogs( searchParams: URLSearchParams, diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index b75419fdf4..9f60bf791f 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -1,19 +1,19 @@ +import type { FC } from "react"; +import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts"; +import { formatDate } from "utils/time"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, -} from "components/Chart/Chart"; +} from "#/components/Chart/Chart"; import { HelpTooltip, HelpTooltipContent, HelpTooltipIconTrigger, HelpTooltipText, HelpTooltipTitle, -} from "components/HelpTooltip/HelpTooltip"; -import type { FC } from "react"; -import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts"; -import { formatDate } from "utils/time"; +} from "#/components/HelpTooltip/HelpTooltip"; const chartConfig = { amount: { diff --git a/site/src/components/Alert/Alert.stories.tsx b/site/src/components/Alert/Alert.stories.tsx index 979a0b6a9a..fb605f44d3 100644 --- a/site/src/components/Alert/Alert.stories.tsx +++ b/site/src/components/Alert/Alert.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; +import { Button } from "#/components/Button/Button"; import { Alert } from "./Alert"; const meta: Meta = { diff --git a/site/src/components/Alert/Alert.tsx b/site/src/components/Alert/Alert.tsx index 62d5329e11..5961e7f981 100644 --- a/site/src/components/Alert/Alert.tsx +++ b/site/src/components/Alert/Alert.tsx @@ -1,5 +1,4 @@ import { cva } from "class-variance-authority"; -import { Button } from "components/Button/Button"; import { CircleAlertIcon, CircleCheckIcon, @@ -9,6 +8,7 @@ import { } from "lucide-react"; import { type FC, type ReactNode, useState } from "react"; import { cn } from "utils/cn"; +import { Button } from "#/components/Button/Button"; const alertVariants = cva( "relative w-full rounded-lg border border-solid p-4 text-left", diff --git a/site/src/components/Alert/ErrorAlert.stories.tsx b/site/src/components/Alert/ErrorAlert.stories.tsx index 28120dd105..f8fa500910 100644 --- a/site/src/components/Alert/ErrorAlert.stories.tsx +++ b/site/src/components/Alert/ErrorAlert.stories.tsx @@ -1,6 +1,6 @@ import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; +import { Button } from "#/components/Button/Button"; import { ErrorAlert } from "./ErrorAlert"; const mockError = mockApiError({ diff --git a/site/src/components/Autocomplete/Autocomplete.stories.tsx b/site/src/components/Autocomplete/Autocomplete.stories.tsx index 4d19a5bd5c..6906f16331 100644 --- a/site/src/components/Autocomplete/Autocomplete.stories.tsx +++ b/site/src/components/Autocomplete/Autocomplete.stories.tsx @@ -1,9 +1,9 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Avatar } from "components/Avatar/Avatar"; -import { AvatarData } from "components/Avatar/AvatarData"; import { Check } from "lucide-react"; import { useState } from "react"; import { expect, fn, screen, userEvent, waitFor, within } from "storybook/test"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { AvatarData } from "#/components/Avatar/AvatarData"; import { Autocomplete } from "./Autocomplete"; const meta: Meta = { diff --git a/site/src/components/Autocomplete/Autocomplete.tsx b/site/src/components/Autocomplete/Autocomplete.tsx index 025a1dc88d..f9fdc2758c 100644 --- a/site/src/components/Autocomplete/Autocomplete.tsx +++ b/site/src/components/Autocomplete/Autocomplete.tsx @@ -1,18 +1,3 @@ -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, -} from "components/Command/Command"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/Popover/Popover"; -import { Spinner } from "components/Spinner/Spinner"; import { Check, X } from "lucide-react"; import { type KeyboardEvent, @@ -21,6 +6,21 @@ import { useState, } from "react"; import { cn } from "utils/cn"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "#/components/Command/Command"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "#/components/Popover/Popover"; +import { Spinner } from "#/components/Spinner/Spinner"; interface AutocompleteProps { value: TOption | null; diff --git a/site/src/components/Avatar/AvatarCard.tsx b/site/src/components/Avatar/AvatarCard.tsx index 97df5c6ee7..e008e5fd79 100644 --- a/site/src/components/Avatar/AvatarCard.tsx +++ b/site/src/components/Avatar/AvatarCard.tsx @@ -1,6 +1,6 @@ import { type CSSObject, useTheme } from "@emotion/react"; -import { Avatar } from "components/Avatar/Avatar"; import type { FC, ReactNode } from "react"; +import { Avatar } from "#/components/Avatar/Avatar"; type AvatarCardProps = { header: string; diff --git a/site/src/components/Avatar/AvatarData.tsx b/site/src/components/Avatar/AvatarData.tsx index 2762e90e7f..702ecfc69a 100644 --- a/site/src/components/Avatar/AvatarData.tsx +++ b/site/src/components/Avatar/AvatarData.tsx @@ -1,5 +1,5 @@ -import { Avatar } from "components/Avatar/Avatar"; import type { FC, ReactNode } from "react"; +import { Avatar } from "#/components/Avatar/Avatar"; interface AvatarDataProps { title: ReactNode; diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index c594261c6c..6bb4a73608 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -1,5 +1,5 @@ -import { Badge } from "components/Badge/Badge"; -import { Stack } from "components/Stack/Stack"; +import { Badge } from "#/components/Badge/Badge"; +import { Stack } from "#/components/Stack/Stack"; export const EnabledBadge: React.FC = () => { return ( diff --git a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx index bc14950462..20a5f10ebc 100644 --- a/site/src/components/Breadcrumb/Breadcrumb.stories.tsx +++ b/site/src/components/Breadcrumb/Breadcrumb.stories.tsx @@ -8,7 +8,7 @@ import { BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, -} from "components/Breadcrumb/Breadcrumb"; +} from "#/components/Breadcrumb/Breadcrumb"; const meta: Meta = { title: "components/Breadcrumb", diff --git a/site/src/components/ChatMessageInput/FileReferenceNode.tsx b/site/src/components/ChatMessageInput/FileReferenceNode.tsx index 585bc645fc..c022b10dc4 100644 --- a/site/src/components/ChatMessageInput/FileReferenceNode.tsx +++ b/site/src/components/ChatMessageInput/FileReferenceNode.tsx @@ -1,5 +1,4 @@ import { useLexicalNodeSelection } from "@lexical/react/useLexicalNodeSelection"; -import { FileIcon } from "components/FileIcon/FileIcon"; import { $getNodeByKey, DecoratorNode, @@ -12,6 +11,7 @@ import { import { XIcon } from "lucide-react"; import { type FC, memo, type ReactNode } from "react"; import { cn } from "utils/cn"; +import { FileIcon } from "#/components/FileIcon/FileIcon"; type SerializedFileReferenceNode = Spread< { diff --git a/site/src/components/CodeExample/CodeExample.tsx b/site/src/components/CodeExample/CodeExample.tsx index 42759889fd..118a41fb92 100644 --- a/site/src/components/CodeExample/CodeExample.tsx +++ b/site/src/components/CodeExample/CodeExample.tsx @@ -1,13 +1,13 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { Button } from "components/Button/Button"; +import { EyeIcon, EyeOffIcon } from "lucide-react"; +import { type FC, useState } from "react"; +import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +import { Button } from "#/components/Button/Button"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { EyeIcon, EyeOffIcon } from "lucide-react"; -import { type FC, useState } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +} from "#/components/Tooltip/Tooltip"; import { CopyButton } from "../CopyButton/CopyButton"; interface CodeExampleProps { diff --git a/site/src/components/Collapsible/Collapsible.stories.tsx b/site/src/components/Collapsible/Collapsible.stories.tsx index 2e6c5274b8..521d0844c7 100644 --- a/site/src/components/Collapsible/Collapsible.stories.tsx +++ b/site/src/components/Collapsible/Collapsible.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; import { ChevronsUpDown } from "lucide-react"; +import { Button } from "#/components/Button/Button"; import { Collapsible, CollapsibleContent, diff --git a/site/src/components/Combobox/Combobox.stories.tsx b/site/src/components/Combobox/Combobox.stories.tsx index e1e12a49eb..6e52ec3141 100644 --- a/site/src/components/Combobox/Combobox.stories.tsx +++ b/site/src/components/Combobox/Combobox.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import type { SelectFilterOption } from "components/Filter/SelectFilter"; import { useState } from "react"; import { expect, screen, userEvent, waitFor, within } from "storybook/test"; +import type { SelectFilterOption } from "#/components/Filter/SelectFilter"; import { Combobox, ComboboxButton, diff --git a/site/src/components/Combobox/Combobox.tsx b/site/src/components/Combobox/Combobox.tsx index bee47d5b52..3752f6f2e9 100644 --- a/site/src/components/Combobox/Combobox.tsx +++ b/site/src/components/Combobox/Combobox.tsx @@ -1,22 +1,22 @@ -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Button } from "components/Button/Button"; +import { CheckIcon } from "lucide-react"; +import type React from "react"; +import { createContext, useContext, useState } from "react"; +import { cn } from "utils/cn"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Button } from "#/components/Button/Button"; import { Command, CommandEmpty, CommandInput, CommandItem, CommandList, -} from "components/Command/Command"; -import type { SelectFilterOption } from "components/Filter/SelectFilter"; +} from "#/components/Command/Command"; +import type { SelectFilterOption } from "#/components/Filter/SelectFilter"; import { Popover, PopoverContent, PopoverTrigger, -} from "components/Popover/Popover"; -import { CheckIcon } from "lucide-react"; -import type React from "react"; -import { createContext, useContext, useState } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Popover/Popover"; type ComboboxContextProps = { open: boolean; diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index afc7007c74..5db9e0396d 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -1,13 +1,13 @@ -import { CheckIcon } from "components/AnimatedIcons/Check"; -import { Button, type ButtonProps } from "components/Button/Button"; +import { useClipboard } from "hooks/useClipboard"; +import { CopyIcon } from "lucide-react"; +import type { FC } from "react"; +import { CheckIcon } from "#/components/AnimatedIcons/Check"; +import { Button, type ButtonProps } from "#/components/Button/Button"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { useClipboard } from "hooks/useClipboard"; -import { CopyIcon } from "lucide-react"; -import type { FC } from "react"; +} from "#/components/Tooltip/Tooltip"; type CopyButtonProps = ButtonProps & { text: string; diff --git a/site/src/components/CopyableValue/CopyableValue.tsx b/site/src/components/CopyableValue/CopyableValue.tsx index 7c0373b8dd..8fe7f917e0 100644 --- a/site/src/components/CopyableValue/CopyableValue.tsx +++ b/site/src/components/CopyableValue/CopyableValue.tsx @@ -1,12 +1,12 @@ -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { useClickable } from "hooks/useClickable"; import { useClipboard } from "hooks/useClipboard"; import { type FC, type HTMLAttributes, useState } from "react"; import { cn } from "utils/cn"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; type TooltipSide = "top" | "right" | "bottom" | "left"; diff --git a/site/src/components/CustomLogo/CustomLogo.tsx b/site/src/components/CustomLogo/CustomLogo.tsx index 0e8c080d43..d8e9765c10 100644 --- a/site/src/components/CustomLogo/CustomLogo.tsx +++ b/site/src/components/CustomLogo/CustomLogo.tsx @@ -1,7 +1,7 @@ import type { Interpolation, Theme } from "@emotion/react"; -import { CoderIcon } from "components/Icons/CoderIcon"; import type { FC } from "react"; import { getApplicationName, getLogoURL } from "utils/appearance"; +import { CoderIcon } from "#/components/Icons/CoderIcon"; /** * Enterprise customers can set a custom logo for their Coder application. Use diff --git a/site/src/components/Dialog/Dialog.stories.tsx b/site/src/components/Dialog/Dialog.stories.tsx index 3385ad2774..b0f732bf64 100644 --- a/site/src/components/Dialog/Dialog.stories.tsx +++ b/site/src/components/Dialog/Dialog.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; import { userEvent, within } from "storybook/test"; +import { Button } from "#/components/Button/Button"; import { Dialog, DialogContent, diff --git a/site/src/components/Dialogs/Dialog.tsx b/site/src/components/Dialogs/Dialog.tsx index 532b47a133..40d08f4b3b 100644 --- a/site/src/components/Dialogs/Dialog.tsx +++ b/site/src/components/Dialogs/Dialog.tsx @@ -1,7 +1,7 @@ import MuiDialog, { type DialogProps } from "@mui/material/Dialog"; -import { Button } from "components/Button/Button"; -import { Spinner } from "components/Spinner/Spinner"; import type { FC, ReactNode } from "react"; +import { Button } from "#/components/Button/Button"; +import { Spinner } from "#/components/Spinner/Spinner"; import type { ConfirmDialogType } from "./types"; export interface DialogActionButtonsProps { diff --git a/site/src/components/DropdownMenu/DropdownMenu.stories.tsx b/site/src/components/DropdownMenu/DropdownMenu.stories.tsx index 3276a5fbed..7d766ebf17 100644 --- a/site/src/components/DropdownMenu/DropdownMenu.stories.tsx +++ b/site/src/components/DropdownMenu/DropdownMenu.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; import { userEvent, within } from "storybook/test"; +import { Button } from "#/components/Button/Button"; import { DropdownMenu, DropdownMenuContent, diff --git a/site/src/components/EmptyState/EmptyState.stories.tsx b/site/src/components/EmptyState/EmptyState.stories.tsx index 5497ab8cba..d07eb4de82 100644 --- a/site/src/components/EmptyState/EmptyState.stories.tsx +++ b/site/src/components/EmptyState/EmptyState.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; +import { Button } from "#/components/Button/Button"; import { EmptyState } from "./EmptyState"; const meta: Meta = { diff --git a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx index 831b8d730c..d14ac3155d 100644 --- a/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx +++ b/site/src/components/ErrorBoundary/GlobalErrorBoundary.tsx @@ -1,6 +1,3 @@ -import { Button } from "components/Button/Button"; -import { CoderIcon } from "components/Icons/CoderIcon"; -import { Link } from "components/Link/Link"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { type FC, useState } from "react"; import { @@ -9,6 +6,9 @@ import { useLocation, useRouteError, } from "react-router"; +import { Button } from "#/components/Button/Button"; +import { CoderIcon } from "#/components/Icons/CoderIcon"; +import { Link } from "#/components/Link/Link"; const errorPageTitle = "Something went wrong"; diff --git a/site/src/components/Expander/Expander.tsx b/site/src/components/Expander/Expander.tsx index 4b130fc397..2ba3e09c49 100644 --- a/site/src/components/Expander/Expander.tsx +++ b/site/src/components/Expander/Expander.tsx @@ -1,10 +1,10 @@ -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; +import type { FC, ReactNode } from "react"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, -} from "components/Collapsible/Collapsible"; -import type { FC, ReactNode } from "react"; +} from "#/components/Collapsible/Collapsible"; interface ExpanderProps { expanded: boolean; diff --git a/site/src/components/FeatureStageBadge/FeatureStageBadge.tsx b/site/src/components/FeatureStageBadge/FeatureStageBadge.tsx index a6f43436b2..53fbcaf2df 100644 --- a/site/src/components/FeatureStageBadge/FeatureStageBadge.tsx +++ b/site/src/components/FeatureStageBadge/FeatureStageBadge.tsx @@ -1,12 +1,12 @@ -import { Link } from "components/Link/Link"; +import type { FC, HTMLAttributes, ReactNode } from "react"; +import { cn } from "utils/cn"; +import { docs } from "utils/docs"; +import { Link } from "#/components/Link/Link"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import type { FC, HTMLAttributes, ReactNode } from "react"; -import { cn } from "utils/cn"; -import { docs } from "utils/docs"; +} from "#/components/Tooltip/Tooltip"; /** * All types of feature that we are currently supporting. Defined as record to diff --git a/site/src/components/FileUpload/FileUpload.tsx b/site/src/components/FileUpload/FileUpload.tsx index 95c7baa816..a0c3a6902a 100644 --- a/site/src/components/FileUpload/FileUpload.tsx +++ b/site/src/components/FileUpload/FileUpload.tsx @@ -1,10 +1,10 @@ import { css, type Interpolation, type Theme } from "@emotion/react"; import CircularProgress from "@mui/material/CircularProgress"; import IconButton from "@mui/material/IconButton"; -import { Stack } from "components/Stack/Stack"; import { useClickable } from "hooks/useClickable"; import { CloudUploadIcon, FolderIcon, TrashIcon } from "lucide-react"; import { type DragEvent, type FC, type ReactNode, useRef } from "react"; +import { Stack } from "#/components/Stack/Stack"; interface FileUploadProps { isUploading: boolean; @@ -137,18 +137,18 @@ const useFileDrop = ( const styles = { root: (theme) => css` - display: flex; - align-items: center; - justify-content: center; - border-radius: 8px; - border: 2px dashed ${theme.palette.divider}; - padding: 48px; - cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + border-radius: 8px; + border: 2px dashed ${theme.palette.divider}; + padding: 48px; + cursor: pointer; - &:hover { - background-color: ${theme.palette.background.paper}; - } - `, + &:hover { + background-color: ${theme.palette.background.paper}; + } + `, disabled: { pointerEvents: "none", diff --git a/site/src/components/Filter/Filter.tsx b/site/src/components/Filter/Filter.tsx index 10dcce3219..84cb8cee59 100644 --- a/site/src/components/Filter/Filter.tsx +++ b/site/src/components/Filter/Filter.tsx @@ -6,7 +6,10 @@ import { hasError, isApiValidationError, } from "api/errors"; -import { Button } from "components/Button/Button"; +import { useDebouncedFunction } from "hooks/debounce"; +import { ExternalLinkIcon, SlidersHorizontal } from "lucide-react"; +import { type FC, type ReactNode, useEffect, useRef, useState } from "react"; +import { Button } from "#/components/Button/Button"; import { DropdownMenu, DropdownMenuContent, @@ -15,11 +18,8 @@ import { DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import { SearchField } from "components/SearchField/SearchField"; -import { useDebouncedFunction } from "hooks/debounce"; -import { ExternalLinkIcon, SlidersHorizontal } from "lucide-react"; -import { type FC, type ReactNode, useEffect, useRef, useState } from "react"; +} from "#/components/DropdownMenu/DropdownMenu"; +import { SearchField } from "#/components/SearchField/SearchField"; type PresetFilter = { name: string; diff --git a/site/src/components/Filter/SelectFilter.stories.tsx b/site/src/components/Filter/SelectFilter.stories.tsx index efd41c055a..a8ee81da1a 100644 --- a/site/src/components/Filter/SelectFilter.stories.tsx +++ b/site/src/components/Filter/SelectFilter.stories.tsx @@ -1,9 +1,9 @@ import { withDesktopViewport } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Avatar } from "components/Avatar/Avatar"; -import { ComboboxInput } from "components/Combobox/Combobox"; import { useState } from "react"; import { expect, screen, userEvent, within } from "storybook/test"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { ComboboxInput } from "#/components/Combobox/Combobox"; import { SelectFilter, type SelectFilterOption } from "./SelectFilter"; const options: SelectFilterOption[] = Array.from({ length: 50 }, (_, i) => ({ diff --git a/site/src/components/Filter/SelectFilter.tsx b/site/src/components/Filter/SelectFilter.tsx index d93c196203..5da26bacdf 100644 --- a/site/src/components/Filter/SelectFilter.tsx +++ b/site/src/components/Filter/SelectFilter.tsx @@ -1,3 +1,5 @@ +import type { FC, ReactNode } from "react"; +import { cn } from "utils/cn"; import { Combobox, ComboboxButton, @@ -6,10 +8,8 @@ import { ComboboxItem, ComboboxList, ComboboxTrigger, -} from "components/Combobox/Combobox"; -import { Spinner } from "components/Spinner/Spinner"; -import type { FC, ReactNode } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Combobox/Combobox"; +import { Spinner } from "#/components/Spinner/Spinner"; const BASE_WIDTH = 200; diff --git a/site/src/components/Filter/UserFilter.tsx b/site/src/components/Filter/UserFilter.tsx index 2b555094c0..8c7dd310ba 100644 --- a/site/src/components/Filter/UserFilter.tsx +++ b/site/src/components/Filter/UserFilter.tsx @@ -1,12 +1,12 @@ import { API } from "api/api"; -import { Avatar } from "components/Avatar/Avatar"; -import { ComboboxInput } from "components/Combobox/Combobox"; +import { useAuthenticated } from "hooks"; +import type { FC } from "react"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { ComboboxInput } from "#/components/Combobox/Combobox"; import { SelectFilter, type SelectFilterOption, -} from "components/Filter/SelectFilter"; -import { useAuthenticated } from "hooks"; -import type { FC } from "react"; +} from "#/components/Filter/SelectFilter"; import { type UseFilterMenuOptions, useFilterMenu } from "./menu"; export const DEFAULT_USER_FILTER_WIDTH = 175; diff --git a/site/src/components/Filter/UsersFilter.tsx b/site/src/components/Filter/UsersFilter.tsx index 86e928af19..cb1ea26e65 100644 --- a/site/src/components/Filter/UsersFilter.tsx +++ b/site/src/components/Filter/UsersFilter.tsx @@ -1,15 +1,19 @@ -import { Filter, MenuSkeleton, type useFilter } from "components/Filter/Filter"; +import type { FC } from "react"; +import { docs } from "utils/docs"; +import { + Filter, + MenuSkeleton, + type useFilter, +} from "#/components/Filter/Filter"; import { type UseFilterMenuOptions, useFilterMenu, -} from "components/Filter/menu"; +} from "#/components/Filter/menu"; import { SelectFilter, type SelectFilterOption, -} from "components/Filter/SelectFilter"; -import { StatusIndicatorDot } from "components/StatusIndicator/StatusIndicator"; -import type { FC } from "react"; -import { docs } from "utils/docs"; +} from "#/components/Filter/SelectFilter"; +import { StatusIndicatorDot } from "#/components/StatusIndicator/StatusIndicator"; const userFilterQuery = { active: "status:active", diff --git a/site/src/components/Filter/menu.ts b/site/src/components/Filter/menu.ts index 5c5bfc685f..728c92abc2 100644 --- a/site/src/components/Filter/menu.ts +++ b/site/src/components/Filter/menu.ts @@ -1,6 +1,6 @@ -import type { SelectFilterOption } from "components/Filter/SelectFilter"; import { useMemo, useRef, useState } from "react"; import { keepPreviousData, useQuery } from "react-query"; +import type { SelectFilterOption } from "#/components/Filter/SelectFilter"; export type UseFilterMenuOptions = { id: string; diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index 8c95937130..c33cabe5ee 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -1,6 +1,4 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges"; -import { Stack } from "components/Stack/Stack"; import { type ComponentProps, createContext, @@ -10,6 +8,8 @@ import { useContext, } from "react"; import { cn } from "utils/cn"; +import { AlphaBadge, DeprecatedBadge } from "#/components/Badges/Badges"; +import { Stack } from "#/components/Stack/Stack"; type FormContextValue = { direction?: "horizontal" | "vertical" }; diff --git a/site/src/components/FormField/FormField.tsx b/site/src/components/FormField/FormField.tsx index b0cb8ed9c2..92257899fd 100644 --- a/site/src/components/FormField/FormField.tsx +++ b/site/src/components/FormField/FormField.tsx @@ -1,8 +1,8 @@ -import { Input } from "components/Input/Input"; -import { Label } from "components/Label/Label"; import { type FC, type ReactNode, useId } from "react"; import { cn } from "utils/cn"; import type { FormHelpers } from "utils/formUtils"; +import { Input } from "#/components/Input/Input"; +import { Label } from "#/components/Label/Label"; type FormFieldProps = React.ComponentPropsWithRef<"input"> & { field: FormHelpers; diff --git a/site/src/components/FullPageForm/FullPageForm.stories.tsx b/site/src/components/FullPageForm/FullPageForm.stories.tsx index 5ef859d4c6..2820f075e2 100644 --- a/site/src/components/FullPageForm/FullPageForm.stories.tsx +++ b/site/src/components/FullPageForm/FullPageForm.stories.tsx @@ -1,8 +1,8 @@ import TextField from "@mui/material/TextField"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; -import { FormFooter } from "components/Form/Form"; import type { FC } from "react"; +import { Button } from "#/components/Button/Button"; +import { FormFooter } from "#/components/Form/Form"; import { Stack } from "../Stack/Stack"; import { FullPageForm, type FullPageFormProps } from "./FullPageForm"; diff --git a/site/src/components/FullPageForm/FullPageForm.tsx b/site/src/components/FullPageForm/FullPageForm.tsx index 7606353ab5..8cc802303b 100644 --- a/site/src/components/FullPageForm/FullPageForm.tsx +++ b/site/src/components/FullPageForm/FullPageForm.tsx @@ -1,10 +1,10 @@ -import { Margins } from "components/Margins/Margins"; +import type { FC, ReactNode } from "react"; +import { Margins } from "#/components/Margins/Margins"; import { PageHeader, PageHeaderSubtitle, PageHeaderTitle, -} from "components/PageHeader/PageHeader"; -import type { FC, ReactNode } from "react"; +} from "#/components/PageHeader/PageHeader"; export interface FullPageFormProps { title: string; detail?: ReactNode; diff --git a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx index 1919a4cbe6..38c06fb137 100644 --- a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx +++ b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx @@ -1,11 +1,11 @@ -import { Button } from "components/Button/Button"; -import { Margins } from "components/Margins/Margins"; +import type { FC, ReactNode } from "react"; +import { Button } from "#/components/Button/Button"; +import { Margins } from "#/components/Margins/Margins"; import { PageHeader, PageHeaderSubtitle, PageHeaderTitle, -} from "components/PageHeader/PageHeader"; -import type { FC, ReactNode } from "react"; +} from "#/components/PageHeader/PageHeader"; interface FullPageHorizontalFormProps { title: string; diff --git a/site/src/components/FullPageLayout/Topbar.tsx b/site/src/components/FullPageLayout/Topbar.tsx index 2c4685d0f5..07643e6f59 100644 --- a/site/src/components/FullPageLayout/Topbar.tsx +++ b/site/src/components/FullPageLayout/Topbar.tsx @@ -1,7 +1,5 @@ import { useTheme } from "@emotion/react"; import IconButton, { type IconButtonProps } from "@mui/material/IconButton"; -import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; -import { Button, type ButtonProps } from "components/Button/Button"; import { cloneElement, type FC, @@ -10,6 +8,8 @@ import { type Ref, } from "react"; import { cn } from "utils/cn"; +import { Avatar, type AvatarProps } from "#/components/Avatar/Avatar"; +import { Button, type ButtonProps } from "#/components/Button/Button"; export const Topbar: FC> = ({ className, diff --git a/site/src/components/GitDeviceAuth/GitDeviceAuth.tsx b/site/src/components/GitDeviceAuth/GitDeviceAuth.tsx index 6516f64a8c..619237acf6 100644 --- a/site/src/components/GitDeviceAuth/GitDeviceAuth.tsx +++ b/site/src/components/GitDeviceAuth/GitDeviceAuth.tsx @@ -4,10 +4,10 @@ import Link from "@mui/material/Link"; import type { ApiErrorResponse } from "api/errors"; import type { ExternalAuthDevice } from "api/typesGenerated"; import { isAxiosError } from "axios"; -import { Alert, AlertDescription, AlertTitle } from "components/Alert/Alert"; -import { CopyButton } from "components/CopyButton/CopyButton"; import { ExternalLinkIcon } from "lucide-react"; import type { FC } from "react"; +import { Alert, AlertDescription, AlertTitle } from "#/components/Alert/Alert"; +import { CopyButton } from "#/components/CopyButton/CopyButton"; interface GitDeviceAuthProps { externalAuthDevice?: ExternalAuthDevice; diff --git a/site/src/components/HelpTooltip/HelpTooltip.tsx b/site/src/components/HelpTooltip/HelpTooltip.tsx index d83ce41edb..ddd3b8ba1b 100644 --- a/site/src/components/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.tsx @@ -1,13 +1,13 @@ +import { CircleHelpIcon, ExternalLinkIcon } from "lucide-react"; +import type { FC, HTMLAttributes, PropsWithChildren, ReactNode } from "react"; +import { cn } from "utils/cn"; import { Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleHelpIcon, ExternalLinkIcon } from "lucide-react"; -import type { FC, HTMLAttributes, PropsWithChildren, ReactNode } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; type Icon = typeof CircleHelpIcon; diff --git a/site/src/components/IconField/IconField.tsx b/site/src/components/IconField/IconField.tsx index ccf1a36010..01d74b7464 100644 --- a/site/src/components/IconField/IconField.tsx +++ b/site/src/components/IconField/IconField.tsx @@ -1,16 +1,16 @@ import { css, Global, useTheme } from "@emotion/react"; import InputAdornment from "@mui/material/InputAdornment"; import TextField, { type TextFieldProps } from "@mui/material/TextField"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Button } from "components/Button/Button"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { Loader } from "components/Loader/Loader"; +import { type FC, lazy, Suspense, useState } from "react"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Button } from "#/components/Button/Button"; +import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; +import { Loader } from "#/components/Loader/Loader"; import { Popover, PopoverContent, PopoverTrigger, -} from "components/Popover/Popover"; -import { type FC, lazy, Suspense, useState } from "react"; +} from "#/components/Popover/Popover"; type IconFieldProps = TextFieldProps & { onPickEmoji: (value: string) => void; diff --git a/site/src/components/InfoTooltip/InfoTooltip.tsx b/site/src/components/InfoTooltip/InfoTooltip.tsx index e53cfaa0ec..580df4a787 100644 --- a/site/src/components/InfoTooltip/InfoTooltip.tsx +++ b/site/src/components/InfoTooltip/InfoTooltip.tsx @@ -1,3 +1,6 @@ +import type { FC, ReactNode } from "react"; +import type { ThemeRole } from "theme/roles"; +import { cn } from "utils/cn"; import { HelpTooltip, HelpTooltipContent, @@ -5,10 +8,7 @@ import { HelpTooltipIconTrigger, HelpTooltipText, HelpTooltipTitle, -} from "components/HelpTooltip/HelpTooltip"; -import type { FC, ReactNode } from "react"; -import type { ThemeRole } from "theme/roles"; -import { cn } from "utils/cn"; +} from "#/components/HelpTooltip/HelpTooltip"; interface InfoTooltipProps { type?: ThemeRole; diff --git a/site/src/components/InputGroup/InputGroup.tsx b/site/src/components/InputGroup/InputGroup.tsx index 1ff5dc53af..549442bddd 100644 --- a/site/src/components/InputGroup/InputGroup.tsx +++ b/site/src/components/InputGroup/InputGroup.tsx @@ -1,7 +1,7 @@ import { cva, type VariantProps } from "class-variance-authority"; -import { Button, type ButtonProps } from "components/Button/Button"; -import { Input } from "components/Input/Input"; import { cn } from "utils/cn"; +import { Button, type ButtonProps } from "#/components/Button/Button"; +import { Input } from "#/components/Input/Input"; export const InputGroup: React.FC> = ({ className, diff --git a/site/src/components/Latency/Latency.tsx b/site/src/components/Latency/Latency.tsx index ded20ccb14..fbfbf6eddb 100644 --- a/site/src/components/Latency/Latency.tsx +++ b/site/src/components/Latency/Latency.tsx @@ -1,14 +1,14 @@ import CircularProgress from "@mui/material/CircularProgress"; -import { Abbr } from "components/Abbr/Abbr"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { CircleHelpIcon } from "lucide-react"; import type { FC } from "react"; import { cn } from "utils/cn"; import { getLatencyColor } from "utils/latency"; +import { Abbr } from "#/components/Abbr/Abbr"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; interface LatencyProps { latency?: number; diff --git a/site/src/components/Loader/Loader.tsx b/site/src/components/Loader/Loader.tsx index 2688d94b58..7e463ef1f4 100644 --- a/site/src/components/Loader/Loader.tsx +++ b/site/src/components/Loader/Loader.tsx @@ -1,6 +1,6 @@ -import { Spinner } from "components/Spinner/Spinner"; import type { FC, HTMLAttributes } from "react"; import { cn } from "utils/cn"; +import { Spinner } from "#/components/Spinner/Spinner"; interface LoaderProps extends HTMLAttributes { fullscreen?: boolean; diff --git a/site/src/components/Markdown/Markdown.tsx b/site/src/components/Markdown/Markdown.tsx index 423a74645e..d3d829c198 100644 --- a/site/src/components/Markdown/Markdown.tsx +++ b/site/src/components/Markdown/Markdown.tsx @@ -1,12 +1,5 @@ import type { Interpolation, Theme } from "@emotion/react"; import Link from "@mui/material/Link"; -import { - Table, - TableBody, - TableCell, - TableHeader, - TableRow, -} from "components/Table/Table"; import isEqual from "lodash/isEqual"; import { type FC, @@ -22,6 +15,13 @@ import { dracula } from "react-syntax-highlighter/dist/cjs/styles/prism"; import gfm from "remark-gfm"; import colors from "theme/tailwindColors"; import { cn } from "utils/cn"; +import { + Table, + TableBody, + TableCell, + TableHeader, + TableRow, +} from "#/components/Table/Table"; interface MarkdownProps { /** diff --git a/site/src/components/Menu/MenuSearch.tsx b/site/src/components/Menu/MenuSearch.tsx index e792b97b18..d6aa7e8362 100644 --- a/site/src/components/Menu/MenuSearch.tsx +++ b/site/src/components/Menu/MenuSearch.tsx @@ -1,8 +1,8 @@ +import type { FC } from "react"; import { SearchField, type SearchFieldProps, -} from "components/SearchField/SearchField"; -import type { FC } from "react"; +} from "#/components/SearchField/SearchField"; export const MenuSearch: FC = (props) => { return ; }; diff --git a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx index 87cd5acd04..19dba23f38 100644 --- a/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx +++ b/site/src/components/MultiSelectCombobox/MultiSelectCombobox.tsx @@ -3,20 +3,6 @@ * @see {@link https://shadcnui-expansions.typeart.cc/docs/multiple-selector} */ import { Command as CommandPrimitive, useCommandState } from "cmdk"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Avatar } from "components/Avatar/Avatar"; -import { Badge } from "components/Badge/Badge"; -import { - Command, - CommandGroup, - CommandItem, - CommandList, -} from "components/Command/Command"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { useDebouncedValue } from "hooks/debounce"; import { Info, X } from "lucide-react"; import { @@ -32,6 +18,20 @@ import { useState, } from "react"; import { cn } from "utils/cn"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { Badge } from "#/components/Badge/Badge"; +import { + Command, + CommandGroup, + CommandItem, + CommandList, +} from "#/components/Command/Command"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; export interface Option { value: string; diff --git a/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.tsx b/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.tsx index 03b4bcb0ec..16e4cd35c9 100644 --- a/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.tsx +++ b/site/src/components/OrganizationAutocomplete/OrganizationAutocomplete.tsx @@ -1,9 +1,12 @@ import { checkAuthorization } from "api/queries/authCheck"; import { organizations } from "api/queries/organizations"; import type { AuthorizationCheck, Organization } from "api/typesGenerated"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Avatar } from "components/Avatar/Avatar"; -import { Button } from "components/Button/Button"; +import { Check } from "lucide-react"; +import { type FC, useEffect, useState } from "react"; +import { useQuery } from "react-query"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { Button } from "#/components/Button/Button"; import { Command, CommandEmpty, @@ -11,15 +14,12 @@ import { CommandInput, CommandItem, CommandList, -} from "components/Command/Command"; +} from "#/components/Command/Command"; import { Popover, PopoverContent, PopoverTrigger, -} from "components/Popover/Popover"; -import { Check } from "lucide-react"; -import { type FC, useEffect, useState } from "react"; -import { useQuery } from "react-query"; +} from "#/components/Popover/Popover"; type OrganizationAutocompleteProps = { onChange: (organization: Organization | null) => void; diff --git a/site/src/components/PaginationWidget/PageButtons.tsx b/site/src/components/PaginationWidget/PageButtons.tsx index 117bba1924..aa549ff589 100644 --- a/site/src/components/PaginationWidget/PageButtons.tsx +++ b/site/src/components/PaginationWidget/PageButtons.tsx @@ -1,5 +1,5 @@ -import { Button } from "components/Button/Button"; import type { FC, ReactNode } from "react"; +import { Button } from "#/components/Button/Button"; type NumberedPageButtonProps = { pageNumber: number; diff --git a/site/src/components/PaginationWidget/PaginationNavButton.tsx b/site/src/components/PaginationWidget/PaginationNavButton.tsx index 3e6d905384..014a3af596 100644 --- a/site/src/components/PaginationWidget/PaginationNavButton.tsx +++ b/site/src/components/PaginationWidget/PaginationNavButton.tsx @@ -1,5 +1,5 @@ -import { Button } from "components/Button/Button"; import type { ButtonHTMLAttributes, ReactNode } from "react"; +import { Button } from "#/components/Button/Button"; type PaginationNavButtonProps = Omit< ButtonHTMLAttributes, diff --git a/site/src/components/Paywall/Paywall.stories.tsx b/site/src/components/Paywall/Paywall.stories.tsx index ba2e4dcce5..1387fa6625 100644 --- a/site/src/components/Paywall/Paywall.stories.tsx +++ b/site/src/components/Paywall/Paywall.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { PremiumBadge } from "components/Badges/Badges"; +import { PremiumBadge } from "#/components/Badges/Badges"; import { Paywall, PaywallContent, diff --git a/site/src/components/Paywall/Paywall.tsx b/site/src/components/Paywall/Paywall.tsx index dee8b558e4..74a26ad1b6 100644 --- a/site/src/components/Paywall/Paywall.tsx +++ b/site/src/components/Paywall/Paywall.tsx @@ -1,8 +1,8 @@ -import { Button } from "components/Button/Button"; import { CircleCheckBigIcon } from "lucide-react"; import type React from "react"; import type { FC } from "react"; import { cn } from "utils/cn"; +import { Button } from "#/components/Button/Button"; export const Paywall = ({ className, diff --git a/site/src/components/Paywall/PaywallAIGovernance.tsx b/site/src/components/Paywall/PaywallAIGovernance.tsx index da721d70c6..f981714d04 100644 --- a/site/src/components/Paywall/PaywallAIGovernance.tsx +++ b/site/src/components/Paywall/PaywallAIGovernance.tsx @@ -1,5 +1,5 @@ -import { PremiumBadge } from "components/Badges/Badges"; import { docs } from "utils/docs"; +import { PremiumBadge } from "#/components/Badges/Badges"; import { Paywall, PaywallContent, diff --git a/site/src/components/Paywall/PaywallPremium.tsx b/site/src/components/Paywall/PaywallPremium.tsx index 99b22d4bdb..22e0c295d0 100644 --- a/site/src/components/Paywall/PaywallPremium.tsx +++ b/site/src/components/Paywall/PaywallPremium.tsx @@ -1,6 +1,6 @@ -import { PremiumBadge } from "components/Badges/Badges"; import type { ReactNode } from "react"; import { cn } from "utils/cn"; +import { PremiumBadge } from "#/components/Badges/Badges"; import { Paywall, PaywallContent, diff --git a/site/src/components/Popover/Popover.stories.tsx b/site/src/components/Popover/Popover.stories.tsx index 43fe64e770..2864754ccb 100644 --- a/site/src/components/Popover/Popover.stories.tsx +++ b/site/src/components/Popover/Popover.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; import { expect, screen, userEvent, waitFor, within } from "storybook/test"; +import { Button } from "#/components/Button/Button"; import { Popover, PopoverContent, PopoverTrigger } from "./Popover"; const meta: Meta = { diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index b3d7589187..732ffde302 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -6,22 +6,22 @@ import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField, { type TextFieldProps } from "@mui/material/TextField"; import type { TemplateVersionParameter } from "api/typesGenerated"; -import { Button } from "components/Button/Button"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { MemoizedMarkdown } from "components/Markdown/Markdown"; -import { Pill } from "components/Pill/Pill"; -import { Stack } from "components/Stack/Stack"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { CircleAlertIcon, SettingsIcon } from "lucide-react"; import { type FC, type ReactNode, useState } from "react"; import type { AutofillBuildParameter, AutofillSource, } from "utils/richParameters"; +import { Button } from "#/components/Button/Button"; +import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; +import { MemoizedMarkdown } from "#/components/Markdown/Markdown"; +import { Pill } from "#/components/Pill/Pill"; +import { Stack } from "#/components/Stack/Stack"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { TagInput } from "../TagInput/TagInput"; const isBoolean = (parameter: TemplateVersionParameter) => { diff --git a/site/src/components/SearchField/SearchField.tsx b/site/src/components/SearchField/SearchField.tsx index 3f860b1c68..0f5a5a8d78 100644 --- a/site/src/components/SearchField/SearchField.tsx +++ b/site/src/components/SearchField/SearchField.tsx @@ -1,17 +1,17 @@ +import { useEffectEvent } from "hooks/hookPolyfills"; +import { SearchIcon, XIcon } from "lucide-react"; +import { type Ref, useLayoutEffect, useRef } from "react"; import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, -} from "components/InputGroup/InputGroup"; +} from "#/components/InputGroup/InputGroup"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { useEffectEvent } from "hooks/hookPolyfills"; -import { SearchIcon, XIcon } from "lucide-react"; -import { type Ref, useLayoutEffect, useRef } from "react"; +} from "#/components/Tooltip/Tooltip"; export type SearchFieldProps = { value: string; diff --git a/site/src/components/Select/Select.tsx b/site/src/components/Select/Select.tsx index 2514d41000..712fa590e6 100644 --- a/site/src/components/Select/Select.tsx +++ b/site/src/components/Select/Select.tsx @@ -3,13 +3,13 @@ * @see {@link https://ui.shadcn.com/docs/components/select} */ import * as SelectPrimitive from "@radix-ui/react-select"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; import { Check, ChevronUp, ChevronDown as LucideChevronDown, } from "lucide-react"; import { cn } from "utils/cn"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; export const Select = SelectPrimitive.Root; diff --git a/site/src/components/SelectMenu/SelectMenu.stories.tsx b/site/src/components/SelectMenu/SelectMenu.stories.tsx index a49dfb6145..9bb34e4fb8 100644 --- a/site/src/components/SelectMenu/SelectMenu.stories.tsx +++ b/site/src/components/SelectMenu/SelectMenu.stories.tsx @@ -1,8 +1,8 @@ import { withDesktopViewport } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Avatar } from "components/Avatar/Avatar"; import { action } from "storybook/actions"; import { userEvent, within } from "storybook/test"; +import { Avatar } from "#/components/Avatar/Avatar"; import { SelectMenu, SelectMenuButton, diff --git a/site/src/components/SelectMenu/SelectMenu.tsx b/site/src/components/SelectMenu/SelectMenu.tsx index f0c4df5902..5c817d5334 100644 --- a/site/src/components/SelectMenu/SelectMenu.tsx +++ b/site/src/components/SelectMenu/SelectMenu.tsx @@ -1,18 +1,5 @@ import MenuItem, { type MenuItemProps } from "@mui/material/MenuItem"; import MenuList, { type MenuListProps } from "@mui/material/MenuList"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Button, type ButtonProps } from "components/Button/Button"; -import { - Popover, - PopoverContent, - type PopoverContentProps, - PopoverTrigger, - type PopoverTriggerProps, -} from "components/Popover/Popover"; -import { - SearchField, - type SearchFieldProps, -} from "components/SearchField/SearchField"; import { CheckIcon } from "lucide-react"; import { Children, @@ -23,6 +10,19 @@ import { useMemo, } from "react"; import { cn } from "utils/cn"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Button, type ButtonProps } from "#/components/Button/Button"; +import { + Popover, + PopoverContent, + type PopoverContentProps, + PopoverTrigger, + type PopoverTriggerProps, +} from "#/components/Popover/Popover"; +import { + SearchField, + type SearchFieldProps, +} from "#/components/SearchField/SearchField"; export const SelectMenu = Popover; diff --git a/site/src/components/SettingsHeader/SettingsHeader.tsx b/site/src/components/SettingsHeader/SettingsHeader.tsx index 5c419e5c86..d40be46f12 100644 --- a/site/src/components/SettingsHeader/SettingsHeader.tsx +++ b/site/src/components/SettingsHeader/SettingsHeader.tsx @@ -1,8 +1,8 @@ import { cva, type VariantProps } from "class-variance-authority"; -import { Button } from "components/Button/Button"; import { SquareArrowOutUpRightIcon } from "lucide-react"; import type { FC, PropsWithChildren, ReactNode } from "react"; import { cn } from "utils/cn"; +import { Button } from "#/components/Button/Button"; type SettingsHeaderProps = Readonly< PropsWithChildren<{ diff --git a/site/src/components/Sidebar/Sidebar.stories.tsx b/site/src/components/Sidebar/Sidebar.stories.tsx index f352118f5f..3e74da5c11 100644 --- a/site/src/components/Sidebar/Sidebar.stories.tsx +++ b/site/src/components/Sidebar/Sidebar.stories.tsx @@ -1,5 +1,4 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Avatar } from "components/Avatar/Avatar"; import { CalendarCogIcon, FingerprintIcon, @@ -8,6 +7,7 @@ import { UserIcon, } from "lucide-react"; import { Outlet } from "react-router"; +import { Avatar } from "#/components/Avatar/Avatar"; import { Sidebar, SidebarHeader, SidebarNavItem } from "./Sidebar"; const meta: Meta = { diff --git a/site/src/components/Sidebar/Sidebar.tsx b/site/src/components/Sidebar/Sidebar.tsx index 4f626b8802..6ab890e6b1 100644 --- a/site/src/components/Sidebar/Sidebar.tsx +++ b/site/src/components/Sidebar/Sidebar.tsx @@ -1,7 +1,7 @@ -import { Stack } from "components/Stack/Stack"; import type { ElementType, FC, ReactNode } from "react"; import { Link, NavLink } from "react-router"; import { cn } from "utils/cn"; +import { Stack } from "#/components/Stack/Stack"; interface SidebarProps { children?: ReactNode; diff --git a/site/src/components/StackLabel/StackLabel.tsx b/site/src/components/StackLabel/StackLabel.tsx index 601e8d95c7..ae5b24ff51 100644 --- a/site/src/components/StackLabel/StackLabel.tsx +++ b/site/src/components/StackLabel/StackLabel.tsx @@ -1,9 +1,9 @@ import FormHelperText, { type FormHelperTextProps, } from "@mui/material/FormHelperText"; -import { Stack } from "components/Stack/Stack"; import type { ComponentProps, FC } from "react"; import { cn } from "utils/cn"; +import { Stack } from "#/components/Stack/Stack"; /** * Use these components as the label in FormControlLabel when implementing radio diff --git a/site/src/components/StatusIndicator/StatusIndicator.tsx b/site/src/components/StatusIndicator/StatusIndicator.tsx index c5a8b9c0f6..ec9d3794c6 100644 --- a/site/src/components/StatusIndicator/StatusIndicator.tsx +++ b/site/src/components/StatusIndicator/StatusIndicator.tsx @@ -1,11 +1,11 @@ import { cva, type VariantProps } from "class-variance-authority"; +import { createContext, type FC, useContext } from "react"; +import { cn } from "utils/cn"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { createContext, type FC, useContext } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; const statusIndicatorVariants = cva( "font-medium inline-flex items-center gap-2", diff --git a/site/src/components/StatusPill/StatusPill.tsx b/site/src/components/StatusPill/StatusPill.tsx index 7724dbb374..ce15d2de2e 100644 --- a/site/src/components/StatusPill/StatusPill.tsx +++ b/site/src/components/StatusPill/StatusPill.tsx @@ -1,11 +1,11 @@ -import { Pill } from "components/Pill/Pill"; +import type { FC } from "react"; +import { httpStatusColor } from "utils/http"; +import { Pill } from "#/components/Pill/Pill"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import type { FC } from "react"; -import { httpStatusColor } from "utils/http"; +} from "#/components/Tooltip/Tooltip"; interface StatusPillProps { code: number; diff --git a/site/src/components/TableEmpty/TableEmpty.stories.tsx b/site/src/components/TableEmpty/TableEmpty.stories.tsx index c189e3bfec..4f35e5971a 100644 --- a/site/src/components/TableEmpty/TableEmpty.stories.tsx +++ b/site/src/components/TableEmpty/TableEmpty.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { CodeExample } from "components/CodeExample/CodeExample"; -import { Table, TableBody } from "components/Table/Table"; +import { CodeExample } from "#/components/CodeExample/CodeExample"; +import { Table, TableBody } from "#/components/Table/Table"; import { TableEmpty } from "./TableEmpty"; const meta: Meta = { diff --git a/site/src/components/TableEmpty/TableEmpty.tsx b/site/src/components/TableEmpty/TableEmpty.tsx index 1dd2d08dbd..929a574355 100644 --- a/site/src/components/TableEmpty/TableEmpty.tsx +++ b/site/src/components/TableEmpty/TableEmpty.tsx @@ -1,9 +1,9 @@ +import type { FC } from "react"; import { EmptyState, type EmptyStateProps, -} from "components/EmptyState/EmptyState"; -import { TableCell, TableRow } from "components/Table/Table"; -import type { FC } from "react"; +} from "#/components/EmptyState/EmptyState"; +import { TableCell, TableRow } from "#/components/Table/Table"; type TableEmptyProps = EmptyStateProps; diff --git a/site/src/components/TableLoader/TableLoader.stories.tsx b/site/src/components/TableLoader/TableLoader.stories.tsx index c15b4eba48..19d9cd4745 100644 --- a/site/src/components/TableLoader/TableLoader.stories.tsx +++ b/site/src/components/TableLoader/TableLoader.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Table, TableBody } from "components/Table/Table"; +import { Table, TableBody } from "#/components/Table/Table"; import { TableLoader } from "./TableLoader"; const meta: Meta = { diff --git a/site/src/components/TableLoader/TableLoader.tsx b/site/src/components/TableLoader/TableLoader.tsx index 8b063b22a6..211a7b4d2d 100644 --- a/site/src/components/TableLoader/TableLoader.tsx +++ b/site/src/components/TableLoader/TableLoader.tsx @@ -1,9 +1,9 @@ +import { cloneElement, type FC, isValidElement, type ReactNode } from "react"; import { TableCell, TableRow, type TableRowProps, -} from "components/Table/Table"; -import { cloneElement, type FC, isValidElement, type ReactNode } from "react"; +} from "#/components/Table/Table"; import { Loader } from "../Loader/Loader"; export const TableLoader: FC = () => { diff --git a/site/src/components/TagInput/TagInput.tsx b/site/src/components/TagInput/TagInput.tsx index 4f33233148..85e0d954a0 100644 --- a/site/src/components/TagInput/TagInput.tsx +++ b/site/src/components/TagInput/TagInput.tsx @@ -1,7 +1,7 @@ -import { Badge } from "components/Badge/Badge"; -import { Button } from "components/Button/Button"; import { X } from "lucide-react"; import { type FC, useId, useMemo } from "react"; +import { Badge } from "#/components/Badge/Badge"; +import { Button } from "#/components/Button/Button"; type TagInputProps = { label: string; diff --git a/site/src/components/Timeline/Timeline.tsx b/site/src/components/Timeline/Timeline.tsx index 6e2e1e1e2e..bcc8a8ad9e 100644 --- a/site/src/components/Timeline/Timeline.tsx +++ b/site/src/components/Timeline/Timeline.tsx @@ -1,5 +1,5 @@ -import { TimelineDateRow } from "components/Timeline/TimelineDateRow"; import { Fragment, type JSX } from "react"; +import { TimelineDateRow } from "#/components/Timeline/TimelineDateRow"; type GetDateFn = (data: TData) => Date; diff --git a/site/src/components/Timeline/TimelineDateRow.tsx b/site/src/components/Timeline/TimelineDateRow.tsx index 6ac696c4dc..80dda0cbfc 100644 --- a/site/src/components/Timeline/TimelineDateRow.tsx +++ b/site/src/components/Timeline/TimelineDateRow.tsx @@ -1,7 +1,7 @@ import { css, useTheme } from "@emotion/react"; -import { TableCell, TableRow } from "components/Table/Table"; import type { FC } from "react"; import { formatDate } from "utils/time"; +import { TableCell, TableRow } from "#/components/Table/Table"; import { createDisplayDate } from "./utils"; export interface TimelineDateRow { @@ -14,10 +14,10 @@ export const TimelineDateRow: FC = ({ date }) => { return ( ; diff --git a/site/src/components/Toaster/Toaster.tsx b/site/src/components/Toaster/Toaster.tsx index 45796f4cfe..918c5f03d9 100644 --- a/site/src/components/Toaster/Toaster.tsx +++ b/site/src/components/Toaster/Toaster.tsx @@ -1,4 +1,3 @@ -import { Spinner } from "components/Spinner/Spinner"; import { CheckIcon, InfoIcon, @@ -8,6 +7,7 @@ import { } from "lucide-react"; import { Toaster as Sonner, type ToasterProps as SonnerProps } from "sonner"; import { cn } from "utils/cn"; +import { Spinner } from "#/components/Spinner/Spinner"; export const Toaster = ({ ...props }: SonnerProps) => { return ( diff --git a/site/src/components/Tooltip/Tooltip.stories.tsx b/site/src/components/Tooltip/Tooltip.stories.tsx index eba8de5246..f23d176a8d 100644 --- a/site/src/components/Tooltip/Tooltip.stories.tsx +++ b/site/src/components/Tooltip/Tooltip.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; -import { Button } from "components/Button/Button"; +import { Button } from "#/components/Button/Button"; import { Tooltip, TooltipContent, diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.tsx index 6b9cf5fc25..8ba253a23c 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.tsx @@ -6,10 +6,15 @@ import type { OrganizationMemberWithUserData, User, } from "api/typesGenerated"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Avatar } from "components/Avatar/Avatar"; -import { AvatarData } from "components/Avatar/AvatarData"; -import { Button } from "components/Button/Button"; +import { useDebouncedFunction, useDebouncedValue } from "hooks/debounce"; +import { type FC, useId, useState } from "react"; +import { keepPreviousData, useQuery } from "react-query"; +import { cn } from "utils/cn"; +import { prepareQuery } from "utils/filters"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { AvatarData } from "#/components/Avatar/AvatarData"; +import { Button } from "#/components/Button/Button"; import { Combobox, ComboboxContent, @@ -18,14 +23,9 @@ import { ComboboxItem, ComboboxList, ComboboxTrigger, -} from "components/Combobox/Combobox"; -import { Label } from "components/Label/Label"; -import { Spinner } from "components/Spinner/Spinner"; -import { useDebouncedFunction, useDebouncedValue } from "hooks/debounce"; -import { type FC, useId, useState } from "react"; -import { keepPreviousData, useQuery } from "react-query"; -import { cn } from "utils/cn"; -import { prepareQuery } from "utils/filters"; +} from "#/components/Combobox/Combobox"; +import { Label } from "#/components/Label/Label"; +import { Spinner } from "#/components/Spinner/Spinner"; // The common properties between users and org members that we need. type SelectedUser = { diff --git a/site/src/components/ai-elements/model-selector.tsx b/site/src/components/ai-elements/model-selector.tsx index 8ae4032c7d..2fc096c6bd 100644 --- a/site/src/components/ai-elements/model-selector.tsx +++ b/site/src/components/ai-elements/model-selector.tsx @@ -1,3 +1,5 @@ +import type { FC } from "react"; +import { cn } from "utils/cn"; import { Select, SelectContent, @@ -5,15 +7,13 @@ import { SelectItem, SelectTrigger, SelectValue, -} from "components/Select/Select"; +} from "#/components/Select/Select"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import type { FC } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; export interface ModelSelectorOption { id: string; diff --git a/site/src/components/ai-elements/tool/ChatSummarizedTool.tsx b/site/src/components/ai-elements/tool/ChatSummarizedTool.tsx index 33baf8a072..71a493dec4 100644 --- a/site/src/components/ai-elements/tool/ChatSummarizedTool.tsx +++ b/site/src/components/ai-elements/tool/ChatSummarizedTool.tsx @@ -1,12 +1,12 @@ -import { ScrollArea } from "components/ScrollArea/ScrollArea"; +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import { Response } from "../response"; import { ToolCollapsible } from "./ToolCollapsible"; import type { ToolStatus } from "./utils"; diff --git a/site/src/components/ai-elements/tool/ComputerTool.tsx b/site/src/components/ai-elements/tool/ComputerTool.tsx index 7a4f1432bf..93a531bd39 100644 --- a/site/src/components/ai-elements/tool/ComputerTool.tsx +++ b/site/src/components/ai-elements/tool/ComputerTool.tsx @@ -1,11 +1,11 @@ +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import { ToolCollapsible } from "./ToolCollapsible"; import type { ToolStatus } from "./utils"; diff --git a/site/src/components/ai-elements/tool/CreateWorkspaceTool.tsx b/site/src/components/ai-elements/tool/CreateWorkspaceTool.tsx index 62983b2253..865c553d15 100644 --- a/site/src/components/ai-elements/tool/CreateWorkspaceTool.tsx +++ b/site/src/components/ai-elements/tool/CreateWorkspaceTool.tsx @@ -1,12 +1,12 @@ -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { CircleAlertIcon, ExternalLinkIcon, LoaderIcon } from "lucide-react"; import type React from "react"; import { Link } from "react-router"; import { cn } from "utils/cn"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { asRecord, asString, type ToolStatus } from "./utils"; /** diff --git a/site/src/components/ai-elements/tool/EditFilesTool.tsx b/site/src/components/ai-elements/tool/EditFilesTool.tsx index 23ead707b1..c30ae5619a 100644 --- a/site/src/components/ai-elements/tool/EditFilesTool.tsx +++ b/site/src/components/ai-elements/tool/EditFilesTool.tsx @@ -1,15 +1,15 @@ import { useTheme } from "@emotion/react"; import type { FileDiffMetadata } from "@pierre/diffs"; import { FileDiff } from "@pierre/diffs/react"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import { ToolCollapsible } from "./ToolCollapsible"; import { DIFFS_FONT_STYLE, diff --git a/site/src/components/ai-elements/tool/ExecuteTool.tsx b/site/src/components/ai-elements/tool/ExecuteTool.tsx index 7810654cea..48fb011fc6 100644 --- a/site/src/components/ai-elements/tool/ExecuteTool.tsx +++ b/site/src/components/ai-elements/tool/ExecuteTool.tsx @@ -1,6 +1,3 @@ -import { Button } from "components/Button/Button"; -import { CopyButton } from "components/CopyButton/CopyButton"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { CheckIcon, ChevronDownIcon, @@ -11,6 +8,9 @@ import { import type React from "react"; import { useRef, useState } from "react"; import { cn } from "utils/cn"; +import { Button } from "#/components/Button/Button"; +import { CopyButton } from "#/components/CopyButton/CopyButton"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { BORDER_BG_STYLE, COLLAPSED_OUTPUT_HEIGHT, diff --git a/site/src/components/ai-elements/tool/ListTemplatesTool.tsx b/site/src/components/ai-elements/tool/ListTemplatesTool.tsx index 0a90b3787f..7e5231e344 100644 --- a/site/src/components/ai-elements/tool/ListTemplatesTool.tsx +++ b/site/src/components/ai-elements/tool/ListTemplatesTool.tsx @@ -1,12 +1,12 @@ -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { CircleAlertIcon, ExternalLinkIcon, LoaderIcon } from "lucide-react"; import type React from "react"; import { Link } from "react-router"; import { cn } from "utils/cn"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { ToolCollapsible } from "./ToolCollapsible"; import { asRecord, asString, type ToolStatus } from "./utils"; diff --git a/site/src/components/ai-elements/tool/ProcessOutputTool.tsx b/site/src/components/ai-elements/tool/ProcessOutputTool.tsx index aea6deb470..68e7c8847a 100644 --- a/site/src/components/ai-elements/tool/ProcessOutputTool.tsx +++ b/site/src/components/ai-elements/tool/ProcessOutputTool.tsx @@ -1,9 +1,9 @@ -import { CopyButton } from "components/CopyButton/CopyButton"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { ChevronDownIcon, LoaderIcon } from "lucide-react"; import type React from "react"; import { useRef, useState } from "react"; import { cn } from "utils/cn"; +import { CopyButton } from "#/components/CopyButton/CopyButton"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { COLLAPSED_OUTPUT_HEIGHT } from "./utils"; /** diff --git a/site/src/components/ai-elements/tool/ProposePlanTool.tsx b/site/src/components/ai-elements/tool/ProposePlanTool.tsx index fae0def569..a3ecd50562 100644 --- a/site/src/components/ai-elements/tool/ProposePlanTool.tsx +++ b/site/src/components/ai-elements/tool/ProposePlanTool.tsx @@ -1,13 +1,13 @@ import { API } from "api/api"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { CircleAlertIcon, LoaderIcon } from "lucide-react"; import type React from "react"; import { useQuery } from "react-query"; import { cn } from "utils/cn"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { Response } from "../response"; import type { ToolStatus } from "./utils"; diff --git a/site/src/components/ai-elements/tool/ReadFileTool.tsx b/site/src/components/ai-elements/tool/ReadFileTool.tsx index 3e47f6f8ed..1bef9d7cb3 100644 --- a/site/src/components/ai-elements/tool/ReadFileTool.tsx +++ b/site/src/components/ai-elements/tool/ReadFileTool.tsx @@ -1,14 +1,14 @@ import { useTheme } from "@emotion/react"; import { File as FileViewer } from "@pierre/diffs/react"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import { ToolCollapsible } from "./ToolCollapsible"; import { DIFFS_FONT_STYLE, diff --git a/site/src/components/ai-elements/tool/ReadTemplateTool.tsx b/site/src/components/ai-elements/tool/ReadTemplateTool.tsx index 8b86b568df..b84af238b0 100644 --- a/site/src/components/ai-elements/tool/ReadTemplateTool.tsx +++ b/site/src/components/ai-elements/tool/ReadTemplateTool.tsx @@ -1,11 +1,11 @@ +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import type { ToolStatus } from "./utils"; /** diff --git a/site/src/components/ai-elements/tool/SubagentTool.tsx b/site/src/components/ai-elements/tool/SubagentTool.tsx index a26eb9bcc7..f811f891d2 100644 --- a/site/src/components/ai-elements/tool/SubagentTool.tsx +++ b/site/src/components/ai-elements/tool/SubagentTool.tsx @@ -1,4 +1,3 @@ -import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { BotIcon, ChevronDownIcon, @@ -10,6 +9,7 @@ import type React from "react"; import { useState } from "react"; import { Link } from "react-router"; import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Response } from "../response"; import { isSubagentSuccessStatus, diff --git a/site/src/components/ai-elements/tool/Tool.tsx b/site/src/components/ai-elements/tool/Tool.tsx index a9eac9f18c..f9f5cda72f 100644 --- a/site/src/components/ai-elements/tool/Tool.tsx +++ b/site/src/components/ai-elements/tool/Tool.tsx @@ -1,9 +1,9 @@ import { useTheme } from "@emotion/react"; import { FileDiff, File as FileViewer } from "@pierre/diffs/react"; import type * as TypesGen from "api/typesGenerated"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; import { type ComponentPropsWithRef, type FC, memo } from "react"; import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { ChatSummarizedTool } from "./ChatSummarizedTool"; import { ComputerTool } from "./ComputerTool"; import { CreateWorkspaceTool } from "./CreateWorkspaceTool"; diff --git a/site/src/components/ai-elements/tool/ToolIcon.tsx b/site/src/components/ai-elements/tool/ToolIcon.tsx index 90005e9a36..eed1a7371b 100644 --- a/site/src/components/ai-elements/tool/ToolIcon.tsx +++ b/site/src/components/ai-elements/tool/ToolIcon.tsx @@ -1,4 +1,3 @@ -import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { BotIcon, ClipboardListIcon, @@ -12,6 +11,7 @@ import { import type React from "react"; import { useState } from "react"; import { cn } from "utils/cn"; +import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; export const ToolIcon: React.FC<{ name: string; diff --git a/site/src/components/ai-elements/tool/WriteFileTool.tsx b/site/src/components/ai-elements/tool/WriteFileTool.tsx index bfdc176319..f9cda50e44 100644 --- a/site/src/components/ai-elements/tool/WriteFileTool.tsx +++ b/site/src/components/ai-elements/tool/WriteFileTool.tsx @@ -1,15 +1,15 @@ import { useTheme } from "@emotion/react"; import type { FileDiffMetadata } from "@pierre/diffs"; import { FileDiff } from "@pierre/diffs/react"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; +import { CircleAlertIcon, LoaderIcon } from "lucide-react"; +import type React from "react"; +import { cn } from "utils/cn"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { CircleAlertIcon, LoaderIcon } from "lucide-react"; -import type React from "react"; -import { cn } from "utils/cn"; +} from "#/components/Tooltip/Tooltip"; import { ToolCollapsible } from "./ToolCollapsible"; import { DIFFS_FONT_STYLE, diff --git a/site/src/contexts/auth/RequireAuth.tsx b/site/src/contexts/auth/RequireAuth.tsx index 134d3d0c1d..e04e828856 100644 --- a/site/src/contexts/auth/RequireAuth.tsx +++ b/site/src/contexts/auth/RequireAuth.tsx @@ -1,11 +1,11 @@ import { API } from "api/api"; import { isApiError } from "api/errors"; -import { Loader } from "components/Loader/Loader"; import { ProxyProvider as ProductionProxyProvider } from "contexts/ProxyContext"; import { DashboardProvider as ProductionDashboardProvider } from "modules/dashboard/DashboardProvider"; import { type FC, useEffect } from "react"; import { Navigate, Outlet, useLocation } from "react-router"; import { embedRedirect } from "utils/redirect"; +import { Loader } from "#/components/Loader/Loader"; import { useAuthContext } from "./AuthProvider"; type RequireAuthProps = Readonly<{ diff --git a/site/src/hooks/useAuthenticated.tsx b/site/src/hooks/useAuthenticated.ts similarity index 94% rename from site/src/hooks/useAuthenticated.tsx rename to site/src/hooks/useAuthenticated.ts index b03d921843..9dcf9cd9ae 100644 --- a/site/src/hooks/useAuthenticated.tsx +++ b/site/src/hooks/useAuthenticated.ts @@ -1,7 +1,7 @@ import { type AuthContextValue, useAuthContext, -} from "contexts/auth/AuthProvider"; +} from "#/contexts/auth/AuthProvider"; type RequireKeys = Omit & { [K in keyof Pick]-?: NonNullable; diff --git a/site/src/hooks/usePagination.ts b/site/src/hooks/usePagination.ts index 235a150503..e6e54b88b4 100644 --- a/site/src/hooks/usePagination.ts +++ b/site/src/hooks/usePagination.ts @@ -1,4 +1,4 @@ -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import { DEFAULT_RECORDS_PER_PAGE } from "#/components/PaginationWidget/utils"; const paginationKey = "page"; diff --git a/site/src/modules/apps/AppStatusStateIcon.tsx b/site/src/modules/apps/AppStatusStateIcon.tsx index 1800c81958..febdb40bb4 100644 --- a/site/src/modules/apps/AppStatusStateIcon.tsx +++ b/site/src/modules/apps/AppStatusStateIcon.tsx @@ -1,5 +1,4 @@ import type { WorkspaceAppStatusState } from "api/typesGenerated"; -import { Spinner } from "components/Spinner/Spinner"; import { BanIcon, CircleAlertIcon, @@ -10,6 +9,7 @@ import { } from "lucide-react"; import type { FC } from "react"; import { cn } from "utils/cn"; +import { Spinner } from "#/components/Spinner/Spinner"; type AppStatusStateIconProps = { state: WorkspaceAppStatusState; diff --git a/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx b/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx index 3f10323b08..ac9b14840f 100644 --- a/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx +++ b/site/src/modules/builds/BuildAvatar/BuildAvatar.tsx @@ -1,10 +1,10 @@ import { useTheme } from "@emotion/react"; import type { WorkspaceBuild } from "api/typesGenerated"; -import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; -import { BuildIcon } from "components/BuildIcon/BuildIcon"; import { useClassName } from "hooks/useClassName"; import type { FC } from "react"; import { getDisplayWorkspaceBuildStatus } from "utils/workspace"; +import { Avatar, type AvatarProps } from "#/components/Avatar/Avatar"; +import { BuildIcon } from "#/components/BuildIcon/BuildIcon"; interface BuildAvatarProps { build: WorkspaceBuild; diff --git a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx index f26e85709d..0c4ffba70c 100644 --- a/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx +++ b/site/src/modules/dashboard/AnnouncementBanners/AnnouncementBannerView.tsx @@ -1,6 +1,6 @@ -import { InlineMarkdown } from "components/Markdown/Markdown"; import type { FC } from "react"; import { readableForegroundColor } from "utils/colors"; +import { InlineMarkdown } from "#/components/Markdown/Markdown"; interface AnnouncementBannerViewProps { message: string; diff --git a/site/src/modules/dashboard/DashboardLayout.tsx b/site/src/modules/dashboard/DashboardLayout.tsx index 82dbb39d3c..df08c4ace3 100644 --- a/site/src/modules/dashboard/DashboardLayout.tsx +++ b/site/src/modules/dashboard/DashboardLayout.tsx @@ -1,7 +1,5 @@ import Link from "@mui/material/Link"; import Snackbar from "@mui/material/Snackbar"; -import { Button } from "components/Button/Button"; -import { Loader } from "components/Loader/Loader"; import { useAuthenticated } from "hooks"; import { InfoIcon } from "lucide-react"; import { AnnouncementBanners } from "modules/dashboard/AnnouncementBanners/AnnouncementBanners"; @@ -10,6 +8,8 @@ import { type FC, type HTMLAttributes, Suspense } from "react"; import { Outlet } from "react-router"; import { cn } from "utils/cn"; import { docs } from "utils/docs"; +import { Button } from "#/components/Button/Button"; +import { Loader } from "#/components/Loader/Loader"; import { DeploymentBanner } from "./DeploymentBanner/DeploymentBanner"; import { Navbar } from "./Navbar/Navbar"; import { useUpdateCheck } from "./useUpdateCheck"; diff --git a/site/src/modules/dashboard/DashboardProvider.tsx b/site/src/modules/dashboard/DashboardProvider.tsx index b9d0934e5f..887e008747 100644 --- a/site/src/modules/dashboard/DashboardProvider.tsx +++ b/site/src/modules/dashboard/DashboardProvider.tsx @@ -10,13 +10,13 @@ import type { Experiment, Organization, } from "api/typesGenerated"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Loader } from "components/Loader/Loader"; import { useAuthenticated } from "hooks"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { canViewAnyOrganization } from "modules/permissions"; import { createContext, type FC, type PropsWithChildren } from "react"; import { useQuery } from "react-query"; +import { ErrorAlert } from "#/components/Alert/ErrorAlert"; +import { Loader } from "#/components/Loader/Loader"; import { selectFeatureVisibility } from "./entitlements"; export interface DashboardValue { diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx index e43218e5ff..a3662bad5a 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx @@ -3,19 +3,6 @@ import type { HealthcheckReport, WorkspaceStatus, } from "api/typesGenerated"; -import { Button } from "components/Button/Button"; -import { HelpTooltipTitle } from "components/HelpTooltip/HelpTooltip"; -import { JetBrainsIcon } from "components/Icons/JetBrainsIcon"; -import { RocketIcon } from "components/Icons/RocketIcon"; -import { TerminalIcon } from "components/Icons/TerminalIcon"; -import { VSCodeIcon } from "components/Icons/VSCodeIcon"; -import { Link } from "components/Link/Link"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import dayjs from "dayjs"; import { AppWindowIcon, @@ -37,6 +24,19 @@ import { } from "react"; import { Link as RouterLink } from "react-router"; import { getDisplayWorkspaceStatus } from "utils/workspace"; +import { Button } from "#/components/Button/Button"; +import { HelpTooltipTitle } from "#/components/HelpTooltip/HelpTooltip"; +import { JetBrainsIcon } from "#/components/Icons/JetBrainsIcon"; +import { RocketIcon } from "#/components/Icons/RocketIcon"; +import { TerminalIcon } from "#/components/Icons/TerminalIcon"; +import { VSCodeIcon } from "#/components/Icons/VSCodeIcon"; +import { Link } from "#/components/Link/Link"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; interface DeploymentBannerViewProps { health?: HealthcheckReport; diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx index 94293aa979..d99e0c6b7a 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx @@ -2,12 +2,12 @@ import { LicenseManagedAgentLimitExceededWarningText, LicenseTelemetryRequiredErrorText, } from "api/typesGenerated"; -import { Expander } from "components/Expander/Expander"; -import { Link } from "components/Link/Link"; -import { Pill } from "components/Pill/Pill"; import { useState } from "react"; import { cn } from "utils/cn"; import { docs } from "utils/docs"; +import { Expander } from "#/components/Expander/Expander"; +import { Link } from "#/components/Link/Link"; +import { Pill } from "#/components/Pill/Pill"; const formatMessage = (message: string) => { // If the message ends with an alphanumeric character, add a period. diff --git a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx index e0f778bbaa..34971bbc57 100644 --- a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx @@ -1,14 +1,14 @@ -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Button } from "components/Button/Button"; +import { linkToAuditing } from "modules/navigation"; +import type { FC } from "react"; +import { Link } from "react-router"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Button } from "#/components/Button/Button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import { linkToAuditing } from "modules/navigation"; -import type { FC } from "react"; -import { Link } from "react-router"; +} from "#/components/DropdownMenu/DropdownMenu"; interface DeploymentDropdownProps { canViewDeployment: boolean; diff --git a/site/src/modules/dashboard/Navbar/MobileMenu.tsx b/site/src/modules/dashboard/Navbar/MobileMenu.tsx index af6121b975..2762b7a8ea 100644 --- a/site/src/modules/dashboard/Navbar/MobileMenu.tsx +++ b/site/src/modules/dashboard/Navbar/MobileMenu.tsx @@ -1,19 +1,4 @@ import type * as TypesGen from "api/typesGenerated"; -import { Avatar } from "components/Avatar/Avatar"; -import { Button } from "components/Button/Button"; -import { - Collapsible, - CollapsibleContent, - CollapsibleTrigger, -} from "components/Collapsible/Collapsible"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import { Latency } from "components/Latency/Latency"; import type { ProxyContextValue } from "contexts/ProxyContext"; import { ChevronRightIcon, @@ -25,6 +10,21 @@ import { type FC, useState } from "react"; import { Link } from "react-router"; import { toast } from "sonner"; import { cn } from "utils/cn"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { Button } from "#/components/Button/Button"; +import { + Collapsible, + CollapsibleContent, + CollapsibleTrigger, +} from "#/components/Collapsible/Collapsible"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "#/components/DropdownMenu/DropdownMenu"; +import { Latency } from "#/components/Latency/Latency"; import { sortProxiesByLatency } from "./proxyUtils"; const itemStyles = { diff --git a/site/src/modules/dashboard/Navbar/NavbarView.tsx b/site/src/modules/dashboard/Navbar/NavbarView.tsx index f0b2b47c05..09409318a3 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.tsx @@ -1,14 +1,5 @@ import { API } from "api/api"; import type * as TypesGen from "api/typesGenerated"; -import { Badge } from "components/Badge/Badge"; -import { Button } from "components/Button/Button"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { CoderIcon } from "components/Icons/CoderIcon"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import type { ProxyContextValue } from "contexts/ProxyContext"; import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata"; import { NotificationsInbox } from "modules/notifications/NotificationsInbox/NotificationsInbox"; @@ -16,6 +7,15 @@ import type { FC } from "react"; import { useQuery } from "react-query"; import { NavLink, useLocation } from "react-router"; import { cn } from "utils/cn"; +import { Badge } from "#/components/Badge/Badge"; +import { Button } from "#/components/Button/Button"; +import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; +import { CoderIcon } from "#/components/Icons/CoderIcon"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { DeploymentDropdown } from "./DeploymentDropdown"; import { MobileMenu } from "./MobileMenu"; import { ProxyMenu } from "./ProxyMenu"; diff --git a/site/src/modules/dashboard/Navbar/ProxyMenu.tsx b/site/src/modules/dashboard/Navbar/ProxyMenu.tsx index 7f2be688ff..d0cae902ff 100644 --- a/site/src/modules/dashboard/Navbar/ProxyMenu.tsx +++ b/site/src/modules/dashboard/Navbar/ProxyMenu.tsx @@ -1,8 +1,13 @@ import Skeleton from "@mui/material/Skeleton"; import type * as TypesGen from "api/typesGenerated"; -import { Abbr } from "components/Abbr/Abbr"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Button } from "components/Button/Button"; +import type { ProxyContextValue } from "contexts/ProxyContext"; +import { useAuthenticated } from "hooks"; +import { type FC, useState } from "react"; +import { Link } from "react-router"; +import { toast } from "sonner"; +import { Abbr } from "#/components/Abbr/Abbr"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Button } from "#/components/Button/Button"; import { DropdownMenu, DropdownMenuContent, @@ -11,13 +16,8 @@ import { DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import { Latency } from "components/Latency/Latency"; -import type { ProxyContextValue } from "contexts/ProxyContext"; -import { useAuthenticated } from "hooks"; -import { type FC, useState } from "react"; -import { Link } from "react-router"; -import { toast } from "sonner"; +} from "#/components/DropdownMenu/DropdownMenu"; +import { Latency } from "#/components/Latency/Latency"; import { sortProxiesByLatency } from "./proxyUtils"; interface ProxyMenuProps { diff --git a/site/src/modules/dashboard/Navbar/SupportIcon.tsx b/site/src/modules/dashboard/Navbar/SupportIcon.tsx index 6c32f03aea..6e111c02db 100644 --- a/site/src/modules/dashboard/Navbar/SupportIcon.tsx +++ b/site/src/modules/dashboard/Navbar/SupportIcon.tsx @@ -1,7 +1,7 @@ import type { SvgIconProps } from "@mui/material/SvgIcon"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { BookOpenTextIcon, BugIcon, MessageSquareIcon } from "lucide-react"; import type { FC } from "react"; +import { ExternalImage } from "#/components/ExternalImage/ExternalImage"; interface SupportIconProps { icon: string; diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx index 6b1bea9062..35a7d6b213 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx @@ -1,11 +1,11 @@ import type * as TypesGen from "api/typesGenerated"; -import { Avatar } from "components/Avatar/Avatar"; +import type { FC } from "react"; +import { Avatar } from "#/components/Avatar/Avatar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import type { FC } from "react"; +} from "#/components/DropdownMenu/DropdownMenu"; import { UserDropdownContent } from "./UserDropdownContent"; interface UserDropdownProps { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx index 64a44481a4..412411da97 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx @@ -5,7 +5,7 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; +} from "#/components/DropdownMenu/DropdownMenu"; import { Language, UserDropdownContent } from "./UserDropdownContent"; const renderUserDropdownContent = (props: { onSignOut: () => void }) => { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index 53248926b4..66bf9dd389 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -1,14 +1,4 @@ import type * as TypesGen from "api/typesGenerated"; -import { CheckIcon } from "components/AnimatedIcons/Check"; -import { - DropdownMenuItem, - DropdownMenuSeparator, -} from "components/DropdownMenu/DropdownMenu"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "components/Tooltip/Tooltip"; import { useClipboard } from "hooks/useClipboard"; import { CircleUserIcon, @@ -19,6 +9,16 @@ import { } from "lucide-react"; import type { FC } from "react"; import { Link } from "react-router"; +import { CheckIcon } from "#/components/AnimatedIcons/Check"; +import { + DropdownMenuItem, + DropdownMenuSeparator, +} from "#/components/DropdownMenu/DropdownMenu"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "#/components/Tooltip/Tooltip"; import { SupportIcon } from "../SupportIcon"; export const Language = { diff --git a/site/src/modules/management/DeploymentConfigProvider.tsx b/site/src/modules/management/DeploymentConfigProvider.tsx index 51bacf22cd..f6384b7174 100644 --- a/site/src/modules/management/DeploymentConfigProvider.tsx +++ b/site/src/modules/management/DeploymentConfigProvider.tsx @@ -1,10 +1,10 @@ import type { DeploymentConfig } from "api/api"; import { deploymentConfig } from "api/queries/deployment"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Loader } from "components/Loader/Loader"; import { createContext, type FC, useContext } from "react"; import { useQuery } from "react-query"; import { Outlet } from "react-router"; +import { ErrorAlert } from "#/components/Alert/ErrorAlert"; +import { Loader } from "#/components/Loader/Loader"; export const DeploymentConfigContext = createContext< DeploymentConfigValue | undefined diff --git a/site/src/modules/management/DeploymentSettingsLayout.tsx b/site/src/modules/management/DeploymentSettingsLayout.tsx index d52e52d253..0254406d63 100644 --- a/site/src/modules/management/DeploymentSettingsLayout.tsx +++ b/site/src/modules/management/DeploymentSettingsLayout.tsx @@ -1,16 +1,16 @@ +import { useAuthenticated } from "hooks"; +import { canViewDeploymentSettings } from "modules/permissions"; +import { RequirePermission } from "modules/permissions/RequirePermission"; +import { type FC, Suspense } from "react"; +import { Navigate, Outlet, useLocation } from "react-router"; import { Breadcrumb, BreadcrumbItem, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, -} from "components/Breadcrumb/Breadcrumb"; -import { Loader } from "components/Loader/Loader"; -import { useAuthenticated } from "hooks"; -import { canViewDeploymentSettings } from "modules/permissions"; -import { RequirePermission } from "modules/permissions/RequirePermission"; -import { type FC, Suspense } from "react"; -import { Navigate, Outlet, useLocation } from "react-router"; +} from "#/components/Breadcrumb/Breadcrumb"; +import { Loader } from "#/components/Loader/Loader"; import { DeploymentSidebar } from "./DeploymentSidebar"; const DeploymentSettingsLayout: FC = () => { diff --git a/site/src/modules/management/DeploymentSidebarView.tsx b/site/src/modules/management/DeploymentSidebarView.tsx index 9dd7f3d9ff..5e846e0fc3 100644 --- a/site/src/modules/management/DeploymentSidebarView.tsx +++ b/site/src/modules/management/DeploymentSidebarView.tsx @@ -1,13 +1,13 @@ import type { BuildInfoResponse, Experiment } from "api/typesGenerated"; -import { - Sidebar as BaseSidebar, - SettingsSidebarNavItem as SidebarNavItem, -} from "components/Sidebar/Sidebar"; -import { Stack } from "components/Stack/Stack"; import { ArrowUpRight } from "lucide-react"; import type { Permissions } from "modules/permissions"; import type { FC } from "react"; import { isDevBuild } from "utils/buildInfo"; +import { + Sidebar as BaseSidebar, + SettingsSidebarNavItem as SidebarNavItem, +} from "#/components/Sidebar/Sidebar"; +import { Stack } from "#/components/Stack/Stack"; interface DeploymentSidebarViewProps { /** Site-wide permissions. */ diff --git a/site/src/modules/management/OrganizationSettingsLayout.tsx b/site/src/modules/management/OrganizationSettingsLayout.tsx index 46947c750b..7b21128ee1 100644 --- a/site/src/modules/management/OrganizationSettingsLayout.tsx +++ b/site/src/modules/management/OrganizationSettingsLayout.tsx @@ -1,15 +1,5 @@ import { organizationsPermissions } from "api/queries/organizations"; import type { Organization } from "api/typesGenerated"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Avatar } from "components/Avatar/Avatar"; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "components/Breadcrumb/Breadcrumb"; -import { Loader } from "components/Loader/Loader"; import { useDashboard } from "modules/dashboard/useDashboard"; import { canViewOrganization, @@ -19,6 +9,16 @@ import NotFoundPage from "pages/404Page/404Page"; import { createContext, type FC, Suspense, useContext } from "react"; import { useQuery } from "react-query"; import { Outlet, useParams } from "react-router"; +import { ErrorAlert } from "#/components/Alert/ErrorAlert"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "#/components/Breadcrumb/Breadcrumb"; +import { Loader } from "#/components/Loader/Loader"; export const OrganizationSettingsContext = createContext< OrganizationSettingsValue | undefined diff --git a/site/src/modules/management/OrganizationSidebar.tsx b/site/src/modules/management/OrganizationSidebar.tsx index ebcc5e13ce..e424e3b189 100644 --- a/site/src/modules/management/OrganizationSidebar.tsx +++ b/site/src/modules/management/OrganizationSidebar.tsx @@ -1,7 +1,7 @@ -import { Sidebar as BaseSidebar } from "components/Sidebar/Sidebar"; import { useAuthenticated } from "hooks"; import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout"; import type { FC } from "react"; +import { Sidebar as BaseSidebar } from "#/components/Sidebar/Sidebar"; import { OrganizationSidebarView } from "./OrganizationSidebarView"; /** diff --git a/site/src/modules/management/OrganizationSidebarLayout.tsx b/site/src/modules/management/OrganizationSidebarLayout.tsx index ee8803686e..d6bd1bb085 100644 --- a/site/src/modules/management/OrganizationSidebarLayout.tsx +++ b/site/src/modules/management/OrganizationSidebarLayout.tsx @@ -1,6 +1,6 @@ -import { Loader } from "components/Loader/Loader"; import { type FC, Suspense } from "react"; import { Outlet } from "react-router"; +import { Loader } from "#/components/Loader/Loader"; import { OrganizationSidebar } from "./OrganizationSidebar"; const OrganizationSidebarLayout: FC = () => { diff --git a/site/src/modules/management/OrganizationSidebarView.tsx b/site/src/modules/management/OrganizationSidebarView.tsx index 98cb00ea91..d0f3bfe817 100644 --- a/site/src/modules/management/OrganizationSidebarView.tsx +++ b/site/src/modules/management/OrganizationSidebarView.tsx @@ -1,7 +1,12 @@ import type { Organization } from "api/typesGenerated"; -import { ChevronDownIcon } from "components/AnimatedIcons/ChevronDown"; -import { Avatar } from "components/Avatar/Avatar"; -import { Button } from "components/Button/Button"; +import { Check, Plus } from "lucide-react"; +import type { Permissions } from "modules/permissions"; +import type { OrganizationPermissions } from "modules/permissions/organizations"; +import { type FC, useState } from "react"; +import { useNavigate } from "react-router"; +import { ChevronDownIcon } from "#/components/AnimatedIcons/ChevronDown"; +import { Avatar } from "#/components/Avatar/Avatar"; +import { Button } from "#/components/Button/Button"; import { Command, CommandEmpty, @@ -10,18 +15,13 @@ import { CommandItem, CommandList, CommandSeparator, -} from "components/Command/Command"; +} from "#/components/Command/Command"; import { Popover, PopoverContent, PopoverTrigger, -} from "components/Popover/Popover"; -import { SettingsSidebarNavItem } from "components/Sidebar/Sidebar"; -import { Check, Plus } from "lucide-react"; -import type { Permissions } from "modules/permissions"; -import type { OrganizationPermissions } from "modules/permissions/organizations"; -import { type FC, useState } from "react"; -import { useNavigate } from "react-router"; +} from "#/components/Popover/Popover"; +import { SettingsSidebarNavItem } from "#/components/Sidebar/Sidebar"; interface OrganizationsSettingsNavigationProps { /** The organization selected from the dropdown */ diff --git a/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx b/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx index 4ca9085d8d..9c3310be76 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxAvatar.tsx @@ -4,7 +4,6 @@ import { InboxNotificationFallbackIconTemplate, InboxNotificationFallbackIconWorkspace, } from "api/typesGenerated"; -import { Avatar } from "components/Avatar/Avatar"; import { InfoIcon, LaptopIcon, @@ -13,6 +12,7 @@ import { } from "lucide-react"; import type React from "react"; import type { FC } from "react"; +import { Avatar } from "#/components/Avatar/Avatar"; const InboxNotificationFallbackIcons = [ InboxNotificationFallbackIconAccount, diff --git a/site/src/modules/notifications/NotificationsInbox/InboxButton.tsx b/site/src/modules/notifications/NotificationsInbox/InboxButton.tsx index 769e78d9b4..6f7f0f45b5 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxButton.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxButton.tsx @@ -1,6 +1,6 @@ -import { Button, type ButtonProps } from "components/Button/Button"; import { BellIcon } from "lucide-react"; import { cn } from "utils/cn"; +import { Button, type ButtonProps } from "#/components/Button/Button"; import { UnreadBadge } from "./UnreadBadge"; type InboxButtonProps = ButtonProps & { diff --git a/site/src/modules/notifications/NotificationsInbox/InboxItem.tsx b/site/src/modules/notifications/NotificationsInbox/InboxItem.tsx index 656cf7c14a..c401f09c87 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxItem.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxItem.tsx @@ -1,11 +1,11 @@ import type { InboxNotification } from "api/typesGenerated"; -import { Button } from "components/Button/Button"; -import { Link } from "components/Link/Link"; import { SquareCheckBig } from "lucide-react"; import type { FC } from "react"; import Markdown from "react-markdown"; import { Link as RouterLink } from "react-router"; import { relativeTime } from "utils/time"; +import { Button } from "#/components/Button/Button"; +import { Link } from "#/components/Link/Link"; import { InboxAvatar } from "./InboxAvatar"; type InboxItemProps = { diff --git a/site/src/modules/notifications/NotificationsInbox/InboxPopover.tsx b/site/src/modules/notifications/NotificationsInbox/InboxPopover.tsx index 28900fad52..e502129225 100644 --- a/site/src/modules/notifications/NotificationsInbox/InboxPopover.tsx +++ b/site/src/modules/notifications/NotificationsInbox/InboxPopover.tsx @@ -1,16 +1,16 @@ import type { InboxNotification } from "api/typesGenerated"; -import { Button } from "components/Button/Button"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "components/Popover/Popover"; -import { ScrollArea } from "components/ScrollArea/ScrollArea"; -import { Spinner } from "components/Spinner/Spinner"; import { RefreshCwIcon, SettingsIcon } from "lucide-react"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router"; import { cn } from "utils/cn"; +import { Button } from "#/components/Button/Button"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "#/components/Popover/Popover"; +import { ScrollArea } from "#/components/ScrollArea/ScrollArea"; +import { Spinner } from "#/components/Spinner/Spinner"; import { InboxButton } from "./InboxButton"; import { InboxItem } from "./InboxItem"; import { UnreadBadge } from "./UnreadBadge"; diff --git a/site/src/modules/permissions/RequirePermission.tsx b/site/src/modules/permissions/RequirePermission.tsx index 097a6a08c6..d476464efd 100644 --- a/site/src/modules/permissions/RequirePermission.tsx +++ b/site/src/modules/permissions/RequirePermission.tsx @@ -1,3 +1,4 @@ +import type { FC, ReactNode } from "react"; import { Dialog, DialogContent, @@ -5,9 +6,8 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "components/Dialog/Dialog"; -import { Link } from "components/Link/Link"; -import type { FC, ReactNode } from "react"; +} from "#/components/Dialog/Dialog"; +import { Link } from "#/components/Link/Link"; interface RequirePermissionProps { children?: ReactNode; diff --git a/site/src/modules/provisioners/JobStatusIndicator.tsx b/site/src/modules/provisioners/JobStatusIndicator.tsx index 665b252001..ae56e3677e 100644 --- a/site/src/modules/provisioners/JobStatusIndicator.tsx +++ b/site/src/modules/provisioners/JobStatusIndicator.tsx @@ -1,11 +1,11 @@ import type { ProvisionerJobStatus } from "api/typesGenerated"; +import { TriangleAlertIcon } from "lucide-react"; +import type { FC } from "react"; import { StatusIndicator, StatusIndicatorDot, type StatusIndicatorProps, -} from "components/StatusIndicator/StatusIndicator"; -import { TriangleAlertIcon } from "lucide-react"; -import type { FC } from "react"; +} from "#/components/StatusIndicator/StatusIndicator"; const variantByStatus: Record< ProvisionerJobStatus, diff --git a/site/src/modules/provisioners/Provisioner.tsx b/site/src/modules/provisioners/Provisioner.tsx index 755c21fd96..b9f4645d4e 100644 --- a/site/src/modules/provisioners/Provisioner.tsx +++ b/site/src/modules/provisioners/Provisioner.tsx @@ -1,14 +1,14 @@ import { useTheme } from "@emotion/react"; import type { HealthMessage, ProvisionerDaemon } from "api/typesGenerated"; -import { Pill } from "components/Pill/Pill"; +import { Building2Icon, UserIcon } from "lucide-react"; +import type { FC } from "react"; +import { createDayString } from "utils/createDayString"; +import { Pill } from "#/components/Pill/Pill"; import { Tooltip, TooltipContent, TooltipTrigger, -} from "components/Tooltip/Tooltip"; -import { Building2Icon, UserIcon } from "lucide-react"; -import type { FC } from "react"; -import { createDayString } from "utils/createDayString"; +} from "#/components/Tooltip/Tooltip"; import { ProvisionerTag } from "./ProvisionerTag"; interface ProvisionerProps { diff --git a/site/src/modules/provisioners/ProvisionerAlert.tsx b/site/src/modules/provisioners/ProvisionerAlert.tsx index a09707fcac..65763dd9a5 100644 --- a/site/src/modules/provisioners/ProvisionerAlert.tsx +++ b/site/src/modules/provisioners/ProvisionerAlert.tsx @@ -1,12 +1,12 @@ +import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; +import type { FC } from "react"; +import { cn } from "utils/cn"; import { Alert, type AlertColor, AlertDescription, AlertTitle, -} from "components/Alert/Alert"; -import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; -import type { FC } from "react"; -import { cn } from "utils/cn"; +} from "#/components/Alert/Alert"; export enum AlertVariant { // Alerts are usually styled with a full rounded border and meant to use as a visually distinct element of the page. diff --git a/site/src/modules/provisioners/ProvisionerStatusAlert.tsx b/site/src/modules/provisioners/ProvisionerStatusAlert.tsx index e75887f1d9..4135507b2c 100644 --- a/site/src/modules/provisioners/ProvisionerStatusAlert.tsx +++ b/site/src/modules/provisioners/ProvisionerStatusAlert.tsx @@ -1,5 +1,5 @@ -import type { AlertColor } from "components/Alert/Alert"; import type { FC } from "react"; +import type { AlertColor } from "#/components/Alert/Alert"; import { AlertVariant, ProvisionerAlert } from "./ProvisionerAlert"; interface ProvisionerStatusAlertProps { diff --git a/site/src/modules/provisioners/ProvisionerTag.tsx b/site/src/modules/provisioners/ProvisionerTag.tsx index 62806edc4c..40338e9328 100644 --- a/site/src/modules/provisioners/ProvisionerTag.tsx +++ b/site/src/modules/provisioners/ProvisionerTag.tsx @@ -1,8 +1,8 @@ import type { Interpolation, Theme } from "@emotion/react"; import IconButton from "@mui/material/IconButton"; -import { Pill } from "components/Pill/Pill"; import { CircleCheckIcon, CircleMinusIcon, TagIcon, XIcon } from "lucide-react"; import type { ComponentProps, FC } from "react"; +import { Pill } from "#/components/Pill/Pill"; const parseBool = (s: string): { valid: boolean; value: boolean } => { switch (s.toLowerCase()) { diff --git a/site/src/modules/provisioners/ProvisionerTags.tsx b/site/src/modules/provisioners/ProvisionerTags.tsx index 667d2cb56e..8a8fd774c7 100644 --- a/site/src/modules/provisioners/ProvisionerTags.tsx +++ b/site/src/modules/provisioners/ProvisionerTags.tsx @@ -1,6 +1,6 @@ -import { Badge } from "components/Badge/Badge"; import type { FC, HTMLProps } from "react"; import { cn } from "utils/cn"; +import { Badge } from "#/components/Badge/Badge"; export const ProvisionerTags: FC> = ({ className, diff --git a/site/src/modules/provisioners/ProvisionerTagsField.tsx b/site/src/modules/provisioners/ProvisionerTagsField.tsx index 759a436573..699e14a0ec 100644 --- a/site/src/modules/provisioners/ProvisionerTagsField.tsx +++ b/site/src/modules/provisioners/ProvisionerTagsField.tsx @@ -1,10 +1,10 @@ import TextField from "@mui/material/TextField"; import type { ProvisionerDaemon } from "api/typesGenerated"; -import { Button } from "components/Button/Button"; import { PlusIcon } from "lucide-react"; import { ProvisionerTag } from "modules/provisioners/ProvisionerTag"; import { type FC, useRef, useState } from "react"; import * as Yup from "yup"; +import { Button } from "#/components/Button/Button"; // Users can't delete these tags const REQUIRED_TAGS = ["scope", "organization", "user"]; diff --git a/site/src/modules/resources/AgentApps/AgentApps.tsx b/site/src/modules/resources/AgentApps/AgentApps.tsx index 7f91f60f4e..60c7c93b1e 100644 --- a/site/src/modules/resources/AgentApps/AgentApps.tsx +++ b/site/src/modules/resources/AgentApps/AgentApps.tsx @@ -3,14 +3,14 @@ import type { WorkspaceAgent, WorkspaceApp, } from "api/typesGenerated"; +import { Folder } from "lucide-react"; +import type { FC } from "react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from "components/DropdownMenu/DropdownMenu"; -import { Folder } from "lucide-react"; -import type { FC } from "react"; +} from "#/components/DropdownMenu/DropdownMenu"; import { AgentButton } from "../AgentButton"; import { AppLink } from "../AppLink/AppLink"; diff --git a/site/src/modules/resources/AgentButton.tsx b/site/src/modules/resources/AgentButton.tsx index 3d3f6d7f32..6160262a33 100644 --- a/site/src/modules/resources/AgentButton.tsx +++ b/site/src/modules/resources/AgentButton.tsx @@ -1,4 +1,4 @@ -import { Button, type ButtonProps } from "components/Button/Button"; +import { Button, type ButtonProps } from "#/components/Button/Button"; export const AgentButton: React.FC = ({ ...props }) => { return