From 905363289936614602d80d10917084612c1ac343 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Tue, 3 Dec 2024 11:35:47 +0000 Subject: [PATCH] chore: organize imports --- web/src/components/codemirror-editor.tsx | 4 +-- web/src/lib/utils.ts | 6 ++-- web/src/main.tsx | 17 ++++++--- web/src/templates/api.ts | 10 +++--- web/src/templates/build-template-dialog.tsx | 22 ++++++------ web/src/templates/dashboard.tsx | 2 +- web/src/templates/new-template-dialog.tsx | 34 +++++++++--------- web/src/templates/routes.tsx | 2 +- web/src/templates/template-editor-store.tsx | 8 ++--- web/src/templates/template-editor-top-bar.tsx | 8 ++--- web/src/workspaces/api.ts | 6 ++-- web/src/workspaces/dashboard.tsx | 2 +- web/src/workspaces/new-workspace-dialog.tsx | 36 +++++++++---------- web/src/workspaces/workspace-info-dialog.tsx | 4 +-- .../workspaces/workspace-port-info-tab.tsx | 16 ++++----- 15 files changed, 92 insertions(+), 85 deletions(-) diff --git a/web/src/components/codemirror-editor.tsx b/web/src/components/codemirror-editor.tsx index 1f90135..7aa86ad 100644 --- a/web/src/components/codemirror-editor.tsx +++ b/web/src/components/codemirror-editor.tsx @@ -1,5 +1,5 @@ +import { useUiMode } from "@/hooks/use-ui-mode"; import { markdown } from "@codemirror/lang-markdown"; -import { oneDark } from "@codemirror/theme-one-dark"; import { StreamLanguage } from "@codemirror/language"; import { dockerFile } from "@codemirror/legacy-modes/mode/dockerfile"; import { @@ -8,10 +8,10 @@ import { type Extension, type StateEffect, } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; import { vim } from "@replit/codemirror-vim"; import { EditorView, basicSetup } from "codemirror"; import { useEffect, useRef } from "react"; -import { useUiMode } from "@/hooks/use-ui-mode"; type CodeMirrorEditorSupportedLanguage = "markdown" | "dockerfile"; diff --git a/web/src/lib/utils.ts b/web/src/lib/utils.ts index 4b4b1f6..ac680b3 100644 --- a/web/src/lib/utils.ts +++ b/web/src/lib/utils.ts @@ -1,6 +1,6 @@ -import {type ClassValue, clsx} from "clsx" -import {twMerge} from "tailwind-merge" +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) + return twMerge(clsx(inputs)); } diff --git a/web/src/main.tsx b/web/src/main.tsx index 969d8b1..0a77cca 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -1,13 +1,20 @@ -import { StrictMode } from "react"; -import { createRoot } from "react-dom/client"; -import { createRouter, RouterProvider } from "@tanstack/react-router"; import { rootRoute } from "@/root-route.tsx"; import { workspacesRoutes } from "@/workspaces/routes.ts"; +import { RouterProvider, createRouter } from "@tanstack/react-router"; +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; import "./index.css"; -import {templateEditorRoute, templatesDashboardRoute} from "@/templates/routes.tsx"; +import { + templateEditorRoute, + templatesDashboardRoute, +} from "@/templates/routes.tsx"; const router = createRouter({ - routeTree: rootRoute.addChildren([workspacesRoutes, templatesDashboardRoute, templateEditorRoute]), + routeTree: rootRoute.addChildren([ + workspacesRoutes, + templatesDashboardRoute, + templateEditorRoute, + ]), }); createRoot(document.getElementById("root")!).render( diff --git a/web/src/templates/api.ts b/web/src/templates/api.ts index e18fb93..5a2ee17 100644 --- a/web/src/templates/api.ts +++ b/web/src/templates/api.ts @@ -1,13 +1,13 @@ +import { type ApiError, fetchApi } from "@/api"; +import { promiseOrThrow } from "@/lib/errors"; import { useCallback, useState } from "react"; import useSWR, { useSWRConfig } from "swr"; import type { - Template, - TemplateMeta, - TemplateImage, BaseTemplate, + Template, + TemplateImage, + TemplateMeta, } from "./types"; -import { ApiError, fetchApi } from "@/api"; -import { promiseOrThrow } from "@/lib/errors"; function useTemplates() { return useSWR( diff --git a/web/src/templates/build-template-dialog.tsx b/web/src/templates/build-template-dialog.tsx index 1bba3c1..486e151 100644 --- a/web/src/templates/build-template-dialog.tsx +++ b/web/src/templates/build-template-dialog.tsx @@ -1,28 +1,28 @@ -import { useCallback, useState } from "react"; import { Button } from "@/components/ui/button"; import { - DialogHeader, - DialogFooter, - DialogContent, - DialogTitle, - DialogDescription, DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, } from "@/components/ui/dialog"; import { Form, + FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormControl, - FormDescription, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { superstructResolver } from "@hookform/resolvers/superstruct"; -import { useFieldArray, useForm } from "react-hook-form"; -import { array, object, pattern, string, type Infer } from "superstruct"; -import { useTemplateEditorStore } from "./template-editor-store"; import { Check, Pencil, Plus, Trash2, X } from "lucide-react"; +import { useCallback, useState } from "react"; +import { useFieldArray, useForm } from "react-hook-form"; +import { type Infer, array, object, pattern, string } from "superstruct"; +import { useTemplateEditorStore } from "./template-editor-store"; interface BuildArg { argName: string; diff --git a/web/src/templates/dashboard.tsx b/web/src/templates/dashboard.tsx index ece94a9..4722e89 100644 --- a/web/src/templates/dashboard.tsx +++ b/web/src/templates/dashboard.tsx @@ -19,9 +19,9 @@ import { ToastAction } from "@radix-ui/react-toast"; import { Link } from "@tanstack/react-router"; import dayjs from "dayjs"; import { Pencil, Plus, Trash2 } from "lucide-react"; +import React from "react"; import { useDeleteTemplate, useTemplates } from "./api"; import { NewTemplateDialog } from "./new-template-dialog"; -import React from "react"; function TemplatesDashboard() { return ( diff --git a/web/src/templates/new-template-dialog.tsx b/web/src/templates/new-template-dialog.tsx index 04c2e69..c3ab4ae 100644 --- a/web/src/templates/new-template-dialog.tsx +++ b/web/src/templates/new-template-dialog.tsx @@ -1,26 +1,21 @@ import { Button } from "@/components/ui/button"; -import { DialogHeader, DialogFooter } from "@/components/ui/dialog"; +import { DialogFooter, DialogHeader } from "@/components/ui/dialog"; +import { + DialogContent, + DialogDescription, + DialogTitle, +} from "@/components/ui/dialog"; import { Form, + FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormControl, - FormDescription, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { superstructResolver } from "@hookform/resolvers/superstruct"; -import { - DialogContent, - DialogTitle, - DialogDescription, -} from "@/components/ui/dialog"; -import { useRouter } from "@tanstack/react-router"; -import { Loader2 } from "lucide-react"; -import { useForm } from "react-hook-form"; -import { nonempty, object, pattern, string, type Infer } from "superstruct"; -import { useBaseTemplates, useCreateTemplate } from "./api"; +import { LoadingSpinner } from "@/components/ui/loading-spinner"; import { Select, SelectContent, @@ -28,10 +23,15 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { LoadingSpinner } from "@/components/ui/loading-spinner"; -import type { BaseTemplate } from "./types"; -import { useEffect } from "react"; import { useToast } from "@/hooks/use-toast"; +import { superstructResolver } from "@hookform/resolvers/superstruct"; +import { useRouter } from "@tanstack/react-router"; +import { Loader2 } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { type Infer, nonempty, object, pattern, string } from "superstruct"; +import { useBaseTemplates, useCreateTemplate } from "./api"; +import type { BaseTemplate } from "./types"; const NewTemplateForm = object({ baseTemplate: nonempty(string()), diff --git a/web/src/templates/routes.tsx b/web/src/templates/routes.tsx index e35f35d..f06bc94 100644 --- a/web/src/templates/routes.tsx +++ b/web/src/templates/routes.tsx @@ -1,7 +1,7 @@ -import { createRoute } from "@tanstack/react-router"; import { rootRoute } from "@/root-route.tsx"; import { TemplatesDashboard } from "@/templates/dashboard.tsx"; import { TemplateEditor } from "@/templates/template-editor.tsx"; +import { createRoute } from "@tanstack/react-router"; const templatesDashboardRoute = createRoute({ getParentRoute: () => rootRoute, diff --git a/web/src/templates/template-editor-store.tsx b/web/src/templates/template-editor-store.tsx index 321841e..3222a1f 100644 --- a/web/src/templates/template-editor-store.tsx +++ b/web/src/templates/template-editor-store.tsx @@ -1,8 +1,8 @@ -import { createStore, useStore } from "zustand"; -import type { Template } from "./types"; +import { type ApiErrorDetails, isApiErrorResponse } from "@/api"; import { createContext, useContext } from "react"; +import { createStore, useStore } from "zustand"; import { buildTemplate } from "./api"; -import { isApiErrorResponse, type ApiErrorResponse } from "@/api"; +import type { Template } from "./types"; interface TemplateEditorState { template: Template; @@ -11,7 +11,7 @@ interface TemplateEditorState { isBuildOutputVisible: boolean; isVimModeEnabled: boolean; buildOutput: string; - buildError: ApiErrorResponse | null; + buildError: ApiErrorDetails | null; startBuild: ({ imageTag, diff --git a/web/src/templates/template-editor-top-bar.tsx b/web/src/templates/template-editor-top-bar.tsx index 02a7a5b..d95d480 100644 --- a/web/src/templates/template-editor-top-bar.tsx +++ b/web/src/templates/template-editor-top-bar.tsx @@ -1,11 +1,11 @@ import { Button } from "@/components/ui/button"; -import { Loader2, Hammer } from "lucide-react"; +import { Dialog, DialogTrigger } from "@/components/ui/dialog"; +import { Label } from "@/components/ui/label"; +import { Switch } from "@/components/ui/switch"; +import { Hammer, Loader2 } from "lucide-react"; import { useEffect, useId } from "react"; import { BuildTemplateDialog } from "./build-template-dialog"; import { useTemplateEditorStore } from "./template-editor-store"; -import { Dialog, DialogTrigger } from "@/components/ui/dialog"; -import { Switch } from "@/components/ui/switch"; -import { Label } from "@/components/ui/label"; function TemplateEditorTopBar() { const currentFilePath = useTemplateEditorStore( diff --git a/web/src/workspaces/api.ts b/web/src/workspaces/api.ts index 1687aae..6160be6 100644 --- a/web/src/workspaces/api.ts +++ b/web/src/workspaces/api.ts @@ -1,13 +1,13 @@ import { fetchApi } from "@/api"; +import type { QueryStatus } from "@/lib/query"; +import { useCallback, useState } from "react"; import useSWR, { useSWRConfig } from "swr"; import { - WorkspaceStatus, type Workspace, type WorkspacePortMapping, type WorkspaceRuntime, + WorkspaceStatus, } from "./types"; -import { useCallback, useState } from "react"; -import type { QueryStatus } from "@/lib/query"; interface CreateWorkspaceConfig { workspaceName: string; diff --git a/web/src/workspaces/dashboard.tsx b/web/src/workspaces/dashboard.tsx index 61c989b..e53f018 100644 --- a/web/src/workspaces/dashboard.tsx +++ b/web/src/workspaces/dashboard.tsx @@ -7,8 +7,8 @@ import { SidebarProvider } from "@/components/ui/sidebar.tsx"; import { Toaster } from "@/components/ui/toaster"; import { Plus } from "lucide-react"; import { useCallback, useState } from "react"; -import { WorkspaceTable } from "./workspace-table"; import { NewWorkspaceDialog } from "./new-workspace-dialog"; +import { WorkspaceTable } from "./workspace-table"; function WorkspaceDashboard() { return ( diff --git a/web/src/workspaces/new-workspace-dialog.tsx b/web/src/workspaces/new-workspace-dialog.tsx index 843bcfe..3fe1349 100644 --- a/web/src/workspaces/new-workspace-dialog.tsx +++ b/web/src/workspaces/new-workspace-dialog.tsx @@ -1,36 +1,36 @@ -import { Alert, AlertTitle, AlertDescription } from "@/components/ui/alert"; +import { API_ERROR_WORKSPACE_EXISTS, isApiErrorResponse } from "@/api"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { DialogFooter, DialogHeader } from "@/components/ui/dialog"; +import { DialogContent, DialogTitle } from "@/components/ui/dialog"; import { Form, + FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormControl, - FormDescription, FormMessage, } from "@/components/ui/form"; -import { - Select, - SelectTrigger, - SelectValue, - SelectContent, - SelectItem, -} from "@/components/ui/select"; -import { ToastAction } from "@/components/ui/toast"; -import { DialogContent, DialogTitle } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { LoadingSpinner } from "@/components/ui/loading-spinner"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { ToastAction } from "@/components/ui/toast"; import { useToast } from "@/hooks/use-toast"; import { useTemplateImages } from "@/templates/api"; -import { superstructResolver } from "@hookform/resolvers/superstruct"; -import { useRef, useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { nonempty, object, pattern, string, type Infer } from "superstruct"; -import { useCreateWorkspace, useWorkspaceRuntimes } from "./api"; import type { TemplateImage } from "@/templates/types"; +import { superstructResolver } from "@hookform/resolvers/superstruct"; +import { useEffect, useRef } from "react"; +import { useForm } from "react-hook-form"; +import { type Infer, nonempty, object, pattern, string } from "superstruct"; +import { useCreateWorkspace, useWorkspaceRuntimes } from "./api"; import type { WorkspaceRuntime } from "./types"; -import { API_ERROR_WORKSPACE_EXISTS, isApiErrorResponse } from "@/api"; interface NewWorkspaceDialogProps { onCreateSuccess: () => void; diff --git a/web/src/workspaces/workspace-info-dialog.tsx b/web/src/workspaces/workspace-info-dialog.tsx index a47743a..f3937f4 100644 --- a/web/src/workspaces/workspace-info-dialog.tsx +++ b/web/src/workspaces/workspace-info-dialog.tsx @@ -4,10 +4,10 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; -import { useContext } from "react"; -import { WorkspaceTableRowContext } from "./workspace-table"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { useContext } from "react"; import { PortInfoTab } from "./workspace-port-info-tab"; +import { WorkspaceTableRowContext } from "./workspace-table"; function WorkspaceInfoDialog() { const workspace = useContext(WorkspaceTableRowContext); diff --git a/web/src/workspaces/workspace-port-info-tab.tsx b/web/src/workspaces/workspace-port-info-tab.tsx index 3e24972..d85f485 100644 --- a/web/src/workspaces/workspace-port-info-tab.tsx +++ b/web/src/workspaces/workspace-port-info-tab.tsx @@ -1,23 +1,23 @@ import { Button } from "@/components/ui/button"; -import { FormField, FormItem, FormControl, Form } from "@/components/ui/form"; +import { Form, FormControl, FormField, FormItem } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { LoadingSpinner } from "@/components/ui/loading-spinner"; import { - TableHeader, - TableRow, - TableHead, + Table, TableBody, TableCell, - Table, + TableHead, + TableHeader, + TableRow, } from "@/components/ui/table"; import { superstructResolver } from "@hookform/resolvers/superstruct"; import { Check, Trash2, X } from "lucide-react"; import { useContext, useId } from "react"; import { useForm } from "react-hook-form"; -import { object, pattern, string, size, number, type Infer } from "superstruct"; -import { WorkspaceTableRowContext } from "./workspace-table"; +import { type Infer, number, object, pattern, size, string } from "superstruct"; import { create } from "zustand"; import { useAddWorkspacePort } from "./api"; -import { LoadingSpinner } from "@/components/ui/loading-spinner"; +import { WorkspaceTableRowContext } from "./workspace-table"; interface PortInfoTabStore { isAddingPort: boolean;