diff --git a/apps/web/src/components/interviews/questions/listings/study-list/InterviewsStudyListBottomBar.tsx b/apps/web/src/components/interviews/questions/listings/study-list/InterviewsStudyListBottomBar.tsx index 977c709a9..7ddd4deb2 100644 --- a/apps/web/src/components/interviews/questions/listings/study-list/InterviewsStudyListBottomBar.tsx +++ b/apps/web/src/components/interviews/questions/listings/study-list/InterviewsStudyListBottomBar.tsx @@ -2,12 +2,15 @@ import { useUser } from '@supabase/auth-helpers-react'; import clsx from 'clsx'; -import { ReactNode, Suspense } from 'react'; +import type { ReactNode} from 'react'; +import { Suspense } from 'react'; import QuestionBookmarkAction from '~/components/interviews/questions/common/QuestionBookmarkAction'; import QuestionProgressAction from '~/components/interviews/questions/common/QuestionProgressAction'; import QuestionReportIssueButton from '~/components/interviews/questions/common/QuestionReportIssueButton'; +import type { QuestionListTypeData } from '~/components/interviews/questions/common/QuestionsTypes'; import InterviewsQuestionsListSlideOutButton from '~/components/interviews/questions/listings/slideout/InterviewsQuestionsListSlideOutButton'; +import Text from '~/components/ui/Text'; import { themeBackgroundDarkColor, themeBorderColor, @@ -15,31 +18,29 @@ import { import { useQueryQuestionProgress } from '~/db/QuestionsProgressClient'; import { hashQuestion } from '~/db/QuestionsUtils'; -import type { QuestionListTypeData } from '~/components/interviews/questions/common/QuestionsTypes'; -import Text from '~/components/ui/Text'; type Props = Readonly<{ allowBookmark?: boolean; - questionTitle?: string; - initialListType?: QuestionListTypeData; allowMarkComplete?: boolean; + initialListType?: QuestionListTypeData; + leftAddOnItem?: ReactNode; listIsShownInSidebarOnDesktop: boolean; metadata: React.ComponentProps['metadata']; - studyListKey?: string; - leftAddOnItem?: ReactNode; + questionTitle?: string; slideOutSearchParam_MUST_BE_UNIQUE_ON_PAGE?: string | null; + studyListKey?: string; }>; export default function InterviewsStudyListBottomBar({ allowBookmark = true, allowMarkComplete = true, + initialListType, + leftAddOnItem, listIsShownInSidebarOnDesktop, metadata, - studyListKey, - leftAddOnItem, - initialListType, questionTitle, slideOutSearchParam_MUST_BE_UNIQUE_ON_PAGE = 'qns_slideout', + studyListKey, }: Props) { const user = useUser(); const { isLoading } = useQueryQuestionProgress( diff --git a/apps/web/src/components/mdx/MDXCodeBlockExecutable.tsx b/apps/web/src/components/mdx/MDXCodeBlockExecutable.tsx index 1fcbfcc2c..e82e3bade 100644 --- a/apps/web/src/components/mdx/MDXCodeBlockExecutable.tsx +++ b/apps/web/src/components/mdx/MDXCodeBlockExecutable.tsx @@ -3,7 +3,7 @@ import type { ComponentProps } from 'react'; import MDXCodeBlock, { convertContentToCode, } from '~/components/mdx/MDXCodeBlock'; -import JavaScriptCodingQuizCodeEditor from '~/components/workspace/javascript/JavaScriptCodingQuizCodeEditor'; +import JavaScriptCodingQuizCodeEditor from '~/components/workspace/javascript/editor/JavaScriptCodingQuizCodeEditor'; type Props = ComponentProps<'pre'> & Readonly<{ live?: boolean }>; diff --git a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspace.tsx b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspace.tsx index 0143a5c12..6ed459967 100644 --- a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspace.tsx +++ b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspace.tsx @@ -9,16 +9,14 @@ import { RiCodeLine } from 'react-icons/ri'; import useQuestionLogEventCopyContents from '~/components/interviews/questions/common/useQuestionLogEventCopyContents'; import { useIntl } from '~/components/intl'; -import { codingFilesShouldUseTypeScript } from '~/components/workspace/common/codingFilesShouldUseTypeScript'; -import type { CodingWorkspaceTabContents } from '~/components/workspace/common/CodingWorkspaceContext'; -import { CodingWorkspaceProvider } from '~/components/workspace/common/CodingWorkspaceContext'; import CodingWorkspaceDivider, { CodingWorkspaceDividerWrapperClassname, } from '~/components/workspace/common/CodingWorkspaceDivider'; import CodingWorkspaceErrorBoundary from '~/components/workspace/common/CodingWorkspaceErrorBoundary'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import { CodingWorkspaceTabIcons } from '~/components/workspace/common/CodingWorkspaceTabIcons'; import CodingWorkspaceConsole from '~/components/workspace/common/console/CodingWorkspaceConsole'; +import type { CodingWorkspaceTabContents } from '~/components/workspace/common/context/CodingWorkspaceContext'; +import { CodingWorkspaceProvider } from '~/components/workspace/common/context/CodingWorkspaceContext'; import useMonacoEditorModels from '~/components/workspace/common/editor/useMonacoEditorModels'; import useMonacoEditorRegisterEditorOpener from '~/components/workspace/common/editor/useMonacoEditorRegisterEditorOpener'; import useMonacoLanguagesFetchTypeDeclarations from '~/components/workspace/common/editor/useMonacoLanguagesFetchTypeDeclarations'; @@ -32,8 +30,10 @@ import { codingWorkspaceTabFileId, codingWorkspaceTabFilePattern, } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; -import UserInterfaceCodingWorkspacePreview from '~/components/workspace/user-interface/UserInterfaceCodingWorkspacePreview'; -import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext'; +import { codingFilesShouldUseTypeScript } from '~/components/workspace/common/utils/codingFilesShouldUseTypeScript'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; +import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext'; +import UserInterfaceCodingWorkspacePreview from '~/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreview'; import { TilesPanelRoot } from '~/react-tiling/components/TilesPanelRoot'; import { TilesProvider } from '~/react-tiling/state/TilesProvider'; diff --git a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceNewTab.tsx b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceNewTab.tsx index eafe3a027..75bfd27ba 100644 --- a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceNewTab.tsx +++ b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceNewTab.tsx @@ -6,13 +6,13 @@ import { RiCodeLine } from 'react-icons/ri'; import { useIntl } from '~/components/intl'; import Button from '~/components/ui/Button'; import Text from '~/components/ui/Text'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import { codingWorkspaceExplorerFilePathToIcon } from '~/components/workspace/common/explorer/codingWorkspaceExplorerFilePathToIcon'; import { codingWorkspaceTabFileId, codingWorkspaceTabFilePattern, } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; -import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; +import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext'; import type { ProjectsChallengeSolutionWorkspacePredefinedTabsContents, diff --git a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceTypes.tsx b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceTypes.tsx index 4ffe86104..53de259c7 100644 --- a/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceTypes.tsx +++ b/apps/web/src/components/projects/challenges/solutions/ProjectsChallengeSolutionWorkspaceTypes.tsx @@ -1,4 +1,4 @@ -import type { CodingWorkspaceTabContents } from '~/components/workspace/common/CodingWorkspaceContext'; +import type { CodingWorkspaceTabContents } from '~/components/workspace/common/context/CodingWorkspaceContext'; import type { CodingWorkspaceTabFileType } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; export type ProjectsChallengeSolutionWorkspacePredefinedTabsType = diff --git a/apps/web/src/components/projects/challenges/solutions/ProjectsUserInterfaceCodingWorkspaceCodeEditor.tsx b/apps/web/src/components/projects/challenges/solutions/ProjectsUserInterfaceCodingWorkspaceCodeEditor.tsx index 277f80003..42c82d246 100644 --- a/apps/web/src/components/projects/challenges/solutions/ProjectsUserInterfaceCodingWorkspaceCodeEditor.tsx +++ b/apps/web/src/components/projects/challenges/solutions/ProjectsUserInterfaceCodingWorkspaceCodeEditor.tsx @@ -7,12 +7,12 @@ import { useIntl } from '~/components/intl'; import Banner from '~/components/ui/Banner'; import Button from '~/components/ui/Button'; import { themeBorderColor } from '~/components/ui/theme'; -import { useCodingWorkspaceContext } from '~/components/workspace/common/CodingWorkspaceContext'; +import { useCodingWorkspaceContext } from '~/components/workspace/common/context/CodingWorkspaceContext'; import CodingWorkspaceEditorShortcutsButton from '~/components/workspace/common/editor/CodingWorkspaceEditorShortcutsButton'; import CodingWorkspaceResetButton from '~/components/workspace/common/editor/CodingWorkspaceResetButton'; import CodingWorkspaceThemeSelect from '~/components/workspace/common/editor/CodingWorkspaceThemeSelect'; import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; -import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext'; +import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext'; export default function ProjectsUserInterfaceCodingWorkspaceCodeEditor({ filePath, diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu.tsx b/apps/web/src/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu.tsx index 2e1411d16..69c795313 100644 --- a/apps/web/src/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu.tsx +++ b/apps/web/src/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu.tsx @@ -12,7 +12,7 @@ import type { QuestionMetadata } from '~/components/interviews/questions/common/ import { useIntl } from '~/components/intl'; import DropdownMenu from '~/components/ui/DropdownMenu'; -import { useCodingWorkspaceUnsavedSolutionContext } from './CodingWorkspaceUnsavedSolutionContext'; +import { useCodingWorkspaceUnsavedSolutionContext } from './context/CodingWorkspaceUnsavedSolutionContext'; import { useCodingWorkspaceDispatch, useCodingWorkspaceSelector, diff --git a/apps/web/src/components/workspace/common/CodingWorkspacePushCodeToEditorButton.tsx b/apps/web/src/components/workspace/common/CodingWorkspacePushCodeToEditorButton.tsx index 6dd488f6a..2e5d57009 100644 --- a/apps/web/src/components/workspace/common/CodingWorkspacePushCodeToEditorButton.tsx +++ b/apps/web/src/components/workspace/common/CodingWorkspacePushCodeToEditorButton.tsx @@ -7,7 +7,7 @@ import ConfirmationDialog from '~/components/common/ConfirmationDialog'; import { useIntl } from '~/components/intl'; import Button from '~/components/ui/Button'; -import { useCodingWorkspaceUnsavedSolutionContext } from './CodingWorkspaceUnsavedSolutionContext'; +import { useCodingWorkspaceUnsavedSolutionContext } from './context/CodingWorkspaceUnsavedSolutionContext'; import { useCodingWorkspaceSelector } from './store/hooks'; type Variant = 'attempt' | 'solution'; diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceContext.tsx b/apps/web/src/components/workspace/common/context/CodingWorkspaceContext.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceContext.tsx rename to apps/web/src/components/workspace/common/context/CodingWorkspaceContext.tsx diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceUnsavedSolutionContext.tsx b/apps/web/src/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext.tsx similarity index 97% rename from apps/web/src/components/workspace/common/CodingWorkspaceUnsavedSolutionContext.tsx rename to apps/web/src/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext.tsx index 81ff72e41..6fb900ae4 100644 --- a/apps/web/src/components/workspace/common/CodingWorkspaceUnsavedSolutionContext.tsx +++ b/apps/web/src/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext.tsx @@ -3,7 +3,7 @@ import type { Dispatch, ReactNode, SetStateAction } from 'react'; import { createContext, useContext, useEffect, useState } from 'react'; import { useMediaQuery } from 'usehooks-ts'; -import { useCodingWorkspaceSelector } from './store/hooks'; +import { useCodingWorkspaceSelector } from '../store/hooks'; type Props = Readonly<{ children: ReactNode; diff --git a/apps/web/src/components/workspace/common/useCodingWorkspaceCodeEditorCustomActions.tsx b/apps/web/src/components/workspace/common/hooks/useCodingWorkspaceCodeEditorCustomActions.tsx similarity index 95% rename from apps/web/src/components/workspace/common/useCodingWorkspaceCodeEditorCustomActions.tsx rename to apps/web/src/components/workspace/common/hooks/useCodingWorkspaceCodeEditorCustomActions.tsx index a21aff280..ec1fd5d1f 100644 --- a/apps/web/src/components/workspace/common/useCodingWorkspaceCodeEditorCustomActions.tsx +++ b/apps/web/src/components/workspace/common/hooks/useCodingWorkspaceCodeEditorCustomActions.tsx @@ -6,7 +6,7 @@ import Text from '~/components/ui/Text'; import type { CustomActionsOrComponent } from '~/react-tiling/components/TilesPanelActions'; -import CodingWorkspaceThemeSelect from './editor/CodingWorkspaceThemeSelect'; +import CodingWorkspaceThemeSelect from '../editor/CodingWorkspaceThemeSelect'; export default function useCodingWorkspaceCodeEditorCustomActions({ openEditorShortcuts, diff --git a/apps/web/src/components/workspace/common/useCodingWorkspaceSyncSandpackFiles.tsx b/apps/web/src/components/workspace/common/hooks/useCodingWorkspaceSyncSandpackFiles.tsx similarity index 92% rename from apps/web/src/components/workspace/common/useCodingWorkspaceSyncSandpackFiles.tsx rename to apps/web/src/components/workspace/common/hooks/useCodingWorkspaceSyncSandpackFiles.tsx index 9194fc80d..cfa9705aa 100644 --- a/apps/web/src/components/workspace/common/useCodingWorkspaceSyncSandpackFiles.tsx +++ b/apps/web/src/components/workspace/common/hooks/useCodingWorkspaceSyncSandpackFiles.tsx @@ -1,7 +1,7 @@ import { useSandpack } from '@codesandbox/sandpack-react'; import { useEffect } from 'react'; -import { useCodingWorkspaceSelector } from './store/hooks'; +import { useCodingWorkspaceSelector } from '../store/hooks'; export default function useCodingWorkspaceSyncSandpackFiles() { const files = useCodingWorkspaceSelector( diff --git a/apps/web/src/components/workspace/common/useTabletResponsiveLayout.ts b/apps/web/src/components/workspace/common/hooks/useTabletResponsiveLayout.ts similarity index 100% rename from apps/web/src/components/workspace/common/useTabletResponsiveLayout.ts rename to apps/web/src/components/workspace/common/hooks/useTabletResponsiveLayout.ts diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceCommunitySolutionList.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceCommunitySolutionList.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceCommunitySolutionList.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceCommunitySolutionList.tsx diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceMobileSolutionButton.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceMobileSolutionButton.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceMobileSolutionButton.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceMobileSolutionButton.tsx diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceOverwriteConfirmationDialog.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceOverwriteConfirmationDialog.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceOverwriteConfirmationDialog.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceOverwriteConfirmationDialog.tsx diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceRevertCodeConfirmationDialog.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceRevertCodeConfirmationDialog.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceRevertCodeConfirmationDialog.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceRevertCodeConfirmationDialog.tsx diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceSolutionBanner.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceSolutionBanner.tsx similarity index 89% rename from apps/web/src/components/workspace/common/CodingWorkspaceSolutionBanner.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceSolutionBanner.tsx index eda218ea7..6f022504a 100644 --- a/apps/web/src/components/workspace/common/CodingWorkspaceSolutionBanner.tsx +++ b/apps/web/src/components/workspace/common/solution/CodingWorkspaceSolutionBanner.tsx @@ -8,16 +8,15 @@ import { FormattedMessage, useIntl } from '~/components/intl'; import Button from '~/components/ui/Button'; import Text, { textVariants } from '~/components/ui/Text'; import { themeBackgroundColor } from '~/components/ui/theme'; - -import CodingWorkspaceOverwriteConfirmationDialog from './CodingWorkspaceOverwriteConfirmationDialog'; -import CodingWorkspaceRevertCodeConfirmationDialog from './CodingWorkspaceRevertCodeConfirmationDialog'; -import CodingWorkspaceSolutionUnsavedChangesDialog from './CodingWorkspaceSolutionUnsavedChangesDialog'; -import { useCodingWorkspaceUnsavedSolutionContext } from './CodingWorkspaceUnsavedSolutionContext'; +import { useCodingWorkspaceUnsavedSolutionContext } from '~/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext'; +import CodingWorkspaceOverwriteConfirmationDialog from '~/components/workspace/common/solution/CodingWorkspaceOverwriteConfirmationDialog'; +import CodingWorkspaceRevertCodeConfirmationDialog from '~/components/workspace/common/solution/CodingWorkspaceRevertCodeConfirmationDialog'; +import CodingWorkspaceSolutionUnsavedChangesDialog from '~/components/workspace/common/solution/CodingWorkspaceSolutionUnsavedChangesDialog'; import { useCodingWorkspaceDispatch, useCodingWorkspaceSelector, -} from './store/hooks'; -import { updateCurrentOpenedSolution } from './store/solution-slice'; +} from '~/components/workspace/common/store/hooks'; +import { updateCurrentOpenedSolution } from '~/components/workspace/common/store/solution-slice'; type Props = Readonly<{ isMobile: boolean; diff --git a/apps/web/src/components/workspace/common/CodingWorkspaceSolutionUnsavedChangesDialog.tsx b/apps/web/src/components/workspace/common/solution/CodingWorkspaceSolutionUnsavedChangesDialog.tsx similarity index 100% rename from apps/web/src/components/workspace/common/CodingWorkspaceSolutionUnsavedChangesDialog.tsx rename to apps/web/src/components/workspace/common/solution/CodingWorkspaceSolutionUnsavedChangesDialog.tsx diff --git a/apps/web/src/components/workspace/common/store/sandpack-slice.test.ts b/apps/web/src/components/workspace/common/store/sandpack-slice.test.ts index df862fabd..74fff5814 100644 --- a/apps/web/src/components/workspace/common/store/sandpack-slice.test.ts +++ b/apps/web/src/components/workspace/common/store/sandpack-slice.test.ts @@ -1,6 +1,6 @@ import type { Mock } from 'vitest'; -import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '../codingWorkspaceConvertFiles'; +import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '../utils/codingWorkspaceConvertFiles'; import reducer, { initializeSandpack, replaceCurrentFileState, diff --git a/apps/web/src/components/workspace/common/store/sandpack-slice.ts b/apps/web/src/components/workspace/common/store/sandpack-slice.ts index b012b627c..b7fca4c57 100644 --- a/apps/web/src/components/workspace/common/store/sandpack-slice.ts +++ b/apps/web/src/components/workspace/common/store/sandpack-slice.ts @@ -3,7 +3,7 @@ import type { SandpackFiles } from '@codesandbox/sandpack-react'; import type { PayloadAction } from '@reduxjs/toolkit'; import { createSlice } from '@reduxjs/toolkit'; -import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '../codingWorkspaceConvertFiles'; +import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '../utils/codingWorkspaceConvertFiles'; type FileState = Readonly<{ activeFile: string; diff --git a/apps/web/src/components/workspace/common/codingFilesShouldUseTypeScript.ts b/apps/web/src/components/workspace/common/utils/codingFilesShouldUseTypeScript.ts similarity index 100% rename from apps/web/src/components/workspace/common/codingFilesShouldUseTypeScript.ts rename to apps/web/src/components/workspace/common/utils/codingFilesShouldUseTypeScript.ts diff --git a/apps/web/src/components/workspace/common/codingWorkspaceConvertFiles.ts b/apps/web/src/components/workspace/common/utils/codingWorkspaceConvertFiles.ts similarity index 100% rename from apps/web/src/components/workspace/common/codingWorkspaceConvertFiles.ts rename to apps/web/src/components/workspace/common/utils/codingWorkspaceConvertFiles.ts diff --git a/apps/web/src/components/workspace/common/codingWorkspaceExtractFileNameFromPath.ts b/apps/web/src/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath.ts similarity index 100% rename from apps/web/src/components/workspace/common/codingWorkspaceExtractFileNameFromPath.ts rename to apps/web/src/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath.ts diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspace.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspace.tsx index f40c5a0e3..c6af68e72 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspace.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspace.tsx @@ -8,23 +8,23 @@ import type { QuestionMetadata, } from '~/components/interviews/questions/common/QuestionsTypes'; import useQuestionsAutoMarkAsComplete from '~/components/interviews/questions/common/useQuestionsAutoMarkAsComplete'; -import useCodingWorkspaceSyncSandpackFiles from '~/components/workspace/common/useCodingWorkspaceSyncSandpackFiles'; +import useCodingWorkspaceSyncSandpackFiles from '~/components/workspace/common/hooks/useCodingWorkspaceSyncSandpackFiles'; import { TilesProvider } from '~/react-tiling/state/TilesProvider'; -import { codingFilesShouldUseTypeScript } from '../common/codingFilesShouldUseTypeScript'; -import { CodingWorkspaceUnsavedSolutionProvider } from '../common/CodingWorkspaceUnsavedSolutionContext'; +import { CodingWorkspaceUnsavedSolutionProvider } from '../common/context/CodingWorkspaceUnsavedSolutionContext'; import useMonacoEditorModels from '../common/editor/useMonacoEditorModels'; import useMonacoLanguagesFetchTypeDeclarations from '../common/editor/useMonacoLanguagesFetchTypeDeclarations'; import useMonacoLanguagesLoadTSConfig from '../common/editor/useMonacoLanguagesLoadTSConfig'; import useMonacoLanguagesTypeScriptRunDiagnostics from '../common/editor/useMonacoLanguagesTypeScriptRunDiagnostics'; import useRestartSandpack from '../common/sandpack/useRestartSandpack'; +import { codingFilesShouldUseTypeScript } from '../common/utils/codingFilesShouldUseTypeScript'; +import useJavaScriptCodingWorkspaceSaveCodeLocally from './hooks/useJavaScriptCodingWorkspaceSaveLocally'; import { getJavaScriptCodingWorkspaceLayoutTablet, getJavaScriptCodingWorkspaceLayoutTwoColumns, -} from './JavaScriptCodingWorkspaceLayouts'; +} from './layout/JavaScriptCodingWorkspaceLayouts'; import { useJavaScriptCodingWorkspaceSelector } from './store/hooks'; -import useJavaScriptCodingWorkspaceSaveCodeLocally from './useJavaScriptCodingWorkspaceSaveLocally'; export type JavaScriptCodingWorkspaceProps = Readonly<{ canViewPremiumContent: boolean; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceAboveMobile.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceAboveMobile.tsx index d61dc30a3..5601536f8 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceAboveMobile.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceAboveMobile.tsx @@ -8,14 +8,16 @@ import { useMediaQuery } from 'usehooks-ts'; import InterviewsPremiumBadge from '~/components/interviews/common/InterviewsPremiumBadge'; import { useIntl } from '~/components/intl'; -import type { CodingWorkspaceTabContents } from '~/components/workspace/common/CodingWorkspaceContext'; import CodingWorkspaceDescriptionAddOnItems from '~/components/workspace/common/CodingWorkspaceDescriptionAddOnItems'; import CodingWorkspaceDivider, { CodingWorkspaceDividerWrapperClassname, } from '~/components/workspace/common/CodingWorkspaceDivider'; import CodingWorkspaceErrorBoundary from '~/components/workspace/common/CodingWorkspaceErrorBoundary'; import CodingWorkspaceConsole from '~/components/workspace/common/console/CodingWorkspaceConsole'; +import type { CodingWorkspaceTabContents } from '~/components/workspace/common/context/CodingWorkspaceContext'; import CodingWorkspaceEditorShortcutsTab from '~/components/workspace/common/editor/CodingWorkspaceEditorShortcutsTab'; +import useCodingWorkspaceCodeEditorCustomActions from '~/components/workspace/common/hooks/useCodingWorkspaceCodeEditorCustomActions'; +import useTabletResponsiveLayout from '~/components/workspace/common/hooks/useTabletResponsiveLayout'; import { codingWorkspaceTabAttemptId, codingWorkspaceTabAttemptPattern, @@ -24,37 +26,35 @@ import { codingWorkspaceTabFileId, codingWorkspaceTabFilePattern, } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; -import useCodingWorkspaceCodeEditorCustomActions from '~/components/workspace/common/useCodingWorkspaceCodeEditorCustomActions'; -import useTabletResponsiveLayout from '~/components/workspace/common/useTabletResponsiveLayout'; +import JavaScriptCodingWorkspaceCodeEditor from '~/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor'; +import JavaScriptCodingWorkspaceNewTab from '~/components/workspace/javascript/JavaScriptCodingWorkspaceNewTab'; +import JavaScriptCodingWorkspaceCommunitySolutionCreateTab from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionCreateTab'; +import JavaScriptCodingWorkspaceCommunitySolutionList from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionList'; +import JavaScriptCodingWorkspaceCommunitySolutionTab from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionTab'; +import JavaScriptCodingWorkspaceSolution from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolution'; import { useJavaScriptCodingWorkspaceSelector } from '~/components/workspace/javascript/store/hooks'; +import JavaScriptCodingWorkspaceTestsRunTab from '~/components/workspace/javascript/tests/JavaScriptCodingWorkspaceRunTab'; +import JavaScriptCodingWorkspaceTestsSubmitTab from '~/components/workspace/javascript/tests/JavaScriptCodingWorkspaceSubmitTab'; import { TilesPanelRoot } from '~/react-tiling/components/TilesPanelRoot'; import { CodingWorkspaceTabIcons } from '../common/CodingWorkspaceTabIcons'; +import useJavaScriptCodingWorkspaceTilesContext from './hooks/useJavaScriptCodingWorkspaceTilesContext'; import type { JavaScriptWorkspaceRenderProps } from './JavaScriptCodingWorkspace'; import JavaScriptCodingWorkspaceBottomBar from './JavaScriptCodingWorkspaceBottomBar'; -import JavaScriptCodingWorkspaceCodeEditor from './JavaScriptCodingWorkspaceCodeEditor'; -import JavaScriptCodingWorkspaceCommunitySolutionCreateTab from './JavaScriptCodingWorkspaceCommunitySolutionCreateTab'; -import JavaScriptCodingWorkspaceCommunitySolutionList from './JavaScriptCodingWorkspaceCommunitySolutionList'; -import JavaScriptCodingWorkspaceCommunitySolutionTab from './JavaScriptCodingWorkspaceCommunitySolutionTab'; import JavaScriptCodingWorkspaceDescription from './JavaScriptCodingWorkspaceDescription'; -import { - getJavaScriptCodingWorkspaceLayoutTablet, - getJavaScriptCodingWorkspaceLayoutTwoColumns, -} from './JavaScriptCodingWorkspaceLayouts'; -import JavaScriptCodingWorkspaceNewTab from './JavaScriptCodingWorkspaceNewTab'; -import JavaScriptCodingWorkspaceTestsRunTab from './JavaScriptCodingWorkspaceRunTab'; -import JavaScriptCodingWorkspaceSolution from './JavaScriptCodingWorkspaceSolution'; -import JavaScriptCodingWorkspaceSubmissionList from './JavaScriptCodingWorkspaceSubmissionList'; -import JavaScriptCodingWorkspaceSubmissionTab from './JavaScriptCodingWorkspaceSubmissionTab'; -import JavaScriptCodingWorkspaceTestsSubmitTab from './JavaScriptCodingWorkspaceSubmitTab'; -import JavaScriptCodingWorkspaceTestsCode from './JavaScriptCodingWorkspaceTestsCode'; -import JavaScriptCodingWorkspaceTestsEditor from './JavaScriptCodingWorkspaceTestsEditor'; import type { JavaScriptCodingWorkspacePredefinedTabsContents, JavaScriptCodingWorkspaceTabsType, } from './JavaScriptCodingWorkspaceTypes'; -import useJavaScriptCodingWorkspaceTilesContext from './useJavaScriptCodingWorkspaceTilesContext'; +import { + getJavaScriptCodingWorkspaceLayoutTablet, + getJavaScriptCodingWorkspaceLayoutTwoColumns, +} from './layout/JavaScriptCodingWorkspaceLayouts'; +import JavaScriptCodingWorkspaceSubmissionList from './submission/JavaScriptCodingWorkspaceSubmissionList'; +import JavaScriptCodingWorkspaceSubmissionTab from './submission/JavaScriptCodingWorkspaceSubmissionTab'; +import JavaScriptCodingWorkspaceTestsCode from './tests/JavaScriptCodingWorkspaceTestsCode'; +import JavaScriptCodingWorkspaceTestsEditor from './tests/JavaScriptCodingWorkspaceTestsEditor'; const JavaScriptCodingWorkspaceTilesPanelRoot = TilesPanelRoot; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceBottomBar.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceBottomBar.tsx index 9f16a3ccb..cfb63bd5e 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceBottomBar.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceBottomBar.tsx @@ -14,18 +14,18 @@ import Button from '~/components/ui/Button'; import Divider from '~/components/ui/Divider'; import CodingWorkspaceBottomBar from '~/components/workspace/common/CodingWorkspaceBottomBar'; import { CodingWorkspaceBottomBarSettingsDropdownMenu } from '~/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu'; -import CodingWorkspaceMobileSolutionButton from '~/components/workspace/common/CodingWorkspaceMobileSolutionButton'; import CodingWorkspaceTimer from '~/components/workspace/common/CodingWorkspaceTimer'; +import CodingWorkspaceMobileSolutionButton from '~/components/workspace/common/solution/CodingWorkspaceMobileSolutionButton'; import { updateFile } from '~/components/workspace/common/store/sandpack-slice'; import { pauseTimer } from '~/components/workspace/common/store/timer-slice'; +import JavaScriptCodingWorkspaceLayoutDialog from '~/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayoutDialog'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, } from '~/components/workspace/javascript/store/hooks'; import { deleteLocalJavaScriptQuestionCode } from './JavaScriptCodingWorkspaceCodeStorage'; -import JavaScriptCodingWorkspaceLanguageDropdown from './JavaScriptCodingWorkspaceLanguageDropdown'; -import JavaScriptCodingWorkspaceLayoutDialog from './JavaScriptCodingWorkspaceLayoutDialog'; +import JavaScriptCodingWorkspaceLanguageDropdown from './language/JavaScriptCodingWorkspaceLanguageDropdown'; import { runTests, submit } from './store/execution-slice'; type Mode = ComponentProps['mode']; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceDescription.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceDescription.tsx index c078c36ea..bc95df65b 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceDescription.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceDescription.tsx @@ -18,7 +18,7 @@ import CodingWorkspaceQuestionContentProse from '~/components/workspace/common/C import { useQueryQuestionProgress } from '~/db/QuestionsProgressClient'; -import JavaScriptCodingWorkspaceLanguageDropdown from './JavaScriptCodingWorkspaceLanguageDropdown'; +import JavaScriptCodingWorkspaceLanguageDropdown from './language/JavaScriptCodingWorkspaceLanguageDropdown'; type Props = Readonly<{ canViewPremiumContent: boolean; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceMobile.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceMobile.tsx index 7f5e67a66..05b8926bf 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceMobile.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceMobile.tsx @@ -19,12 +19,12 @@ import { useCodingWorkspaceSelector, } from '~/components/workspace/common/store/hooks'; import { updateFile } from '~/components/workspace/common/store/sandpack-slice'; +import JavaScriptCodingWorkspaceCodeEditor from '~/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor'; +import JavaScriptCodingWorkspaceSolution from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolution'; import type { JavaScriptWorkspaceRenderProps } from './JavaScriptCodingWorkspace'; import JavaScriptCodingWorkspaceBottomBar from './JavaScriptCodingWorkspaceBottomBar'; -import JavaScriptCodingWorkspaceCodeEditor from './JavaScriptCodingWorkspaceCodeEditor'; import JavaScriptCodingWorkspaceDescription from './JavaScriptCodingWorkspaceDescription'; -import JavaScriptCodingWorkspaceSolution from './JavaScriptCodingWorkspaceSolution'; type Props = JavaScriptWorkspaceRenderProps; type Mode = ComponentProps['mode']; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSection.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSection.tsx index e3da729ad..bc4d929fb 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSection.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSection.tsx @@ -16,12 +16,12 @@ import type { JavaScriptCodingWorkspaceStore } from '~/components/workspace/java import SandpackObservability from '../common/sandpack/SandpackObservability'; import { useSandpackBundlerURL } from '../common/sandpack/useSandpackBundlerURL'; +import { loadJavaScriptCodingWorkspaceWorkingLanguage } from './language/JavaScriptCodingWorkspaceWorkingLanguageStorage'; +import { makeJavaScriptCodingWorkspaceStore } from './store/javascript-store'; import { javaScriptCodingWorkspaceGetInitialFiles, javascriptCodingWorkspaceGetInitialSandpackState, -} from './javascriptCodingWorkspaceGetInitialFiles'; -import { loadJavaScriptCodingWorkspaceWorkingLanguage } from './JavaScriptCodingWorkspaceWorkingLanguageStorage'; -import { makeJavaScriptCodingWorkspaceStore } from './store/javascript-store'; +} from './utils/javascriptCodingWorkspaceGetInitialFiles'; type Props = Readonly<{ activeTabScrollIntoView?: boolean; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTypes.tsx b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTypes.tsx index c4d6ff5cb..e54f89ec4 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTypes.tsx +++ b/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTypes.tsx @@ -1,4 +1,4 @@ -import type { CodingWorkspaceTabContents } from '../common/CodingWorkspaceContext'; +import type { CodingWorkspaceTabContents } from '../common/context/CodingWorkspaceContext'; import type { CodingWorkspaceTabAttemptType, CodingWorkspaceTabCommunitySolutionType, diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingQuizCodeEditor.tsx b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingQuizCodeEditor.tsx similarity index 98% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingQuizCodeEditor.tsx rename to apps/web/src/components/workspace/javascript/editor/JavaScriptCodingQuizCodeEditor.tsx index aa6536ca6..4f881672f 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingQuizCodeEditor.tsx +++ b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingQuizCodeEditor.tsx @@ -15,12 +15,11 @@ import MDXCodeBlock, { } from '~/components/mdx/MDXCodeBlock'; import Button from '~/components/ui/Button'; import { themeBorderColor } from '~/components/ui/theme'; -import JavaScriptConsoleLite from '~/components/workspace/common/console/JavaScriptConsoleLite'; -import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; - import CodingWorkspaceDivider, { CodingWorkspaceDividerWrapperClassname, -} from '../common/CodingWorkspaceDivider'; +} from '~/components/workspace/common/CodingWorkspaceDivider'; +import JavaScriptConsoleLite from '~/components/workspace/common/console/JavaScriptConsoleLite'; +import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; type Props = React.ComponentProps; @@ -139,7 +138,7 @@ export default function JavaScriptCodingQuizCodeEditor(props: Props) { {isExecutionMode ? (
diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCodeEditor.tsx b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor.tsx similarity index 85% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCodeEditor.tsx rename to apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor.tsx index d27c3ddfc..5d6d0c182 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCodeEditor.tsx +++ b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor.tsx @@ -5,20 +5,19 @@ import { useIsMounted } from 'usehooks-ts'; import { useIntl } from '~/components/intl'; import Button from '~/components/ui/Button'; -import type CodingWorkspaceSolutionBanner from '~/components/workspace/common/CodingWorkspaceSolutionBanner'; import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; +import type CodingWorkspaceSolutionBanner from '~/components/workspace/common/solution/CodingWorkspaceSolutionBanner'; import { updateFile } from '~/components/workspace/common/store/sandpack-slice'; import { onUpdateSolutionCode } from '~/components/workspace/common/store/solution-slice'; import { codingWorkspaceTabFileId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; - -import JavaScriptCodingWorkspaceCustomTestCasesBanner from './JavaScriptCodingWorkspaceCustomTestCasesBanner'; -import JavaScriptCodingWorkspaceResetCodeButton from './JavaScriptCodingWorkspaceResetCodeButton'; -import JavaScriptCodingWorkspaceSolutionBanner from './JavaScriptCodingWorkspaceSolutionBanner'; +import JavaScriptCodingWorkspaceResetCodeButton from '~/components/workspace/javascript/editor/JavaScriptCodingWorkspaceResetCodeButton'; +import useJavaScriptCodingWorkspaceTilesContext from '~/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext'; +import JavaScriptCodingWorkspaceSolutionBanner from '~/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolutionBanner'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, -} from './store/hooks'; -import useJavaScriptCodingWorkspaceTilesContext from './useJavaScriptCodingWorkspaceTilesContext'; +} from '~/components/workspace/javascript/store/hooks'; +import JavaScriptCodingWorkspaceCustomTestCasesBanner from '~/components/workspace/javascript/tests/JavaScriptCodingWorkspaceCustomTestCasesBanner'; type BaseProps = Readonly<{ filePath: string; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceResetCodeButton.tsx b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceResetCodeButton.tsx similarity index 92% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceResetCodeButton.tsx rename to apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceResetCodeButton.tsx index 19b1dbe7b..2a51ee145 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceResetCodeButton.tsx +++ b/apps/web/src/components/workspace/javascript/editor/JavaScriptCodingWorkspaceResetCodeButton.tsx @@ -3,11 +3,11 @@ import { useCallback } from 'react'; import CodingWorkspaceCodeEditorResetCodeButton from '~/components/workspace/common/CodingWorkspaceCodeEditorResetCodeButton'; -import { resetJavaScriptCodingWorkspaceFile } from './store/actions'; +import { resetJavaScriptCodingWorkspaceFile } from '../store/actions'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, -} from './store/hooks'; +} from '../store/hooks'; export default function JavaScriptCodingWorkspaceResetCodeButton({ filePath, diff --git a/apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceSaveLocally.tsx b/apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceSaveLocally.tsx similarity index 82% rename from apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceSaveLocally.tsx rename to apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceSaveLocally.tsx index cd178407e..72a305d55 100644 --- a/apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceSaveLocally.tsx +++ b/apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceSaveLocally.tsx @@ -1,7 +1,7 @@ import { useEffect } from 'react'; -import { saveJavaScriptQuestionCodeLocally } from './JavaScriptCodingWorkspaceCodeStorage'; -import { useJavaScriptCodingWorkspaceSelector } from './store/hooks'; +import { saveJavaScriptQuestionCodeLocally } from '../JavaScriptCodingWorkspaceCodeStorage'; +import { useJavaScriptCodingWorkspaceSelector } from '../store/hooks'; export default function useJavaScriptCodingWorkspaceSaveCodeLocally() { const { language, question } = useJavaScriptCodingWorkspaceSelector( diff --git a/apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceTilesContext.tsx b/apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext.tsx similarity index 69% rename from apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceTilesContext.tsx rename to apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext.tsx index 660394d1d..1004d2586 100644 --- a/apps/web/src/components/workspace/javascript/useJavaScriptCodingWorkspaceTilesContext.tsx +++ b/apps/web/src/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext.tsx @@ -1,6 +1,6 @@ import { useTilesContext } from '~/react-tiling/state/useTilesContext'; -import type { JavaScriptCodingWorkspaceTabsType } from './JavaScriptCodingWorkspaceTypes'; +import type { JavaScriptCodingWorkspaceTabsType } from '../JavaScriptCodingWorkspaceTypes'; export default function useJavaScriptCodingWorkspaceTilesContext() { return useTilesContext(); diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLanguageDropdown.tsx b/apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceLanguageDropdown.tsx similarity index 92% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLanguageDropdown.tsx rename to apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceLanguageDropdown.tsx index 87037d4d8..5c2599321 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLanguageDropdown.tsx +++ b/apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceLanguageDropdown.tsx @@ -2,13 +2,13 @@ import type { QuestionCodingWorkingLanguage } from '~/components/interviews/ques import QuestionLanguageIcon from '~/components/interviews/questions/metadata/QuestionLanguageIcon'; import { useIntl } from '~/components/intl'; import DropdownMenu from '~/components/ui/DropdownMenu'; -import { useCodingWorkspaceUnsavedSolutionContext } from '~/components/workspace/common/CodingWorkspaceUnsavedSolutionContext'; +import { useCodingWorkspaceUnsavedSolutionContext } from '~/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext'; -import { changeJavaScriptCodingWorkspaceLanguage } from './store/actions'; +import { changeJavaScriptCodingWorkspaceLanguage } from '../store/actions'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, -} from './store/hooks'; +} from '../store/hooks'; type Props = Readonly<{ mode?: 'icon' | 'label'; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx b/apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx similarity index 91% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx rename to apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx index d5006d863..75d4f4804 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx +++ b/apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageSelect.tsx @@ -4,7 +4,7 @@ import { forwardRef } from 'react'; import { useIntl } from '~/components/intl'; import Select from '~/components/ui/Select'; -import type { QuestionCodingWorkingLanguage } from '../../interviews/questions/common/QuestionsTypes'; +import type { QuestionCodingWorkingLanguage } from '../../../interviews/questions/common/QuestionsTypes'; const options: ReadonlyArray<{ label: string; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceWorkingLanguageStorage.ts b/apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageStorage.ts similarity index 100% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceWorkingLanguageStorage.ts rename to apps/web/src/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageStorage.ts diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayoutDialog.tsx b/apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayoutDialog.tsx similarity index 89% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayoutDialog.tsx rename to apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayoutDialog.tsx index 5b0b54c9b..e1a2daf34 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayoutDialog.tsx +++ b/apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayoutDialog.tsx @@ -4,16 +4,16 @@ import { RiLayout2Line, RiLayoutGridLine } from 'react-icons/ri'; import { TbColumns3 } from 'react-icons/tb'; import { useIntl } from '~/components/intl'; +import type { CodingWorkspaceLayoutItem } from '~/components/workspace/common/CodingWorkspaceLayoutDialog'; +import CodingWorkspaceLayoutDialog from '~/components/workspace/common/CodingWorkspaceLayoutDialog'; +import useJavaScriptCodingWorkspaceTilesContext from '~/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext'; +import { useJavaScriptCodingWorkspaceSelector } from '~/components/workspace/javascript/store/hooks'; -import type { CodingWorkspaceLayoutItem } from '../common/CodingWorkspaceLayoutDialog'; -import CodingWorkspaceLayoutDialog from '../common/CodingWorkspaceLayoutDialog'; import { getJavaScriptCodingWorkspaceLayoutGrid, getJavaScriptCodingWorkspaceLayoutThreeColumns, getJavaScriptCodingWorkspaceLayoutTwoColumns, } from './JavaScriptCodingWorkspaceLayouts'; -import { useJavaScriptCodingWorkspaceSelector } from './store/hooks'; -import useJavaScriptCodingWorkspaceTilesContext from './useJavaScriptCodingWorkspaceTilesContext'; type Props = Readonly<{ isOpen: boolean; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayouts.ts b/apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayouts.ts similarity index 97% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayouts.ts rename to apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayouts.ts index 8962b24d8..01cfc38b2 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceLayouts.ts +++ b/apps/web/src/components/workspace/javascript/layout/JavaScriptCodingWorkspaceLayouts.ts @@ -2,8 +2,8 @@ import { INTERVIEWS_JS_COMMUNITY_SOLUTIONS_IS_LIVE } from '~/data/FeatureFlags'; import type { TilesPanelConfig } from '~/react-tiling/types'; -import { codingWorkspaceTabFileId } from '../common/tabs/codingWorkspaceTabId'; -import type { JavaScriptCodingWorkspaceTabsType } from './JavaScriptCodingWorkspaceTypes'; +import { codingWorkspaceTabFileId } from '../../common/tabs/codingWorkspaceTabId'; +import type { JavaScriptCodingWorkspaceTabsType } from '../JavaScriptCodingWorkspaceTypes'; const descriptionTab = { closeable: false, diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx similarity index 96% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx rename to apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx index e0ec1501a..d9c354e17 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx +++ b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionCreateTab.tsx @@ -16,9 +16,8 @@ import EmptyState from '~/components/ui/EmptyState'; import Text from '~/components/ui/Text'; import TextArea from '~/components/ui/TextArea'; import TextInput from '~/components/ui/TextInput'; - -import MonacoCodeEditor from '../common/editor/MonacoCodeEditor'; -import JavaScriptCodingWorkspaceWorkingLanguageSelect from './JavaScriptCodingWorkspaceWorkingLanguageSelect'; +import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; +import JavaScriptCodingWorkspaceWorkingLanguageSelect from '~/components/workspace/javascript/language/JavaScriptCodingWorkspaceWorkingLanguageSelect'; type Props = Readonly<{ metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionList.tsx b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionList.tsx similarity index 84% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionList.tsx rename to apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionList.tsx index 75e699896..796a9c639 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionList.tsx +++ b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionList.tsx @@ -1,8 +1,7 @@ import { trpc } from '~/hooks/trpc'; import type { QuestionMetadata } from '~/components/interviews/questions/common/QuestionsTypes'; - -import CodingWorkspaceCommunitySolutionList from '../common/CodingWorkspaceCommunitySolutionList'; +import CodingWorkspaceCommunitySolutionList from '~/components/workspace/common/solution/CodingWorkspaceCommunitySolutionList'; type Props = Readonly<{ metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx similarity index 96% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx rename to apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx index a52a6e771..4916296ba 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx +++ b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceCommunitySolutionTab.tsx @@ -15,11 +15,10 @@ import Heading from '~/components/ui/Heading'; import Prose from '~/components/ui/Prose'; import Spinner from '~/components/ui/Spinner'; import Text from '~/components/ui/Text'; +import JavaScriptCodingWorkspacePushCodeToEditorButton from '~/components/workspace/javascript/JavaScriptCodingWorkspacePushCodeToEditorButton'; import { staticLowerCase } from '~/utils/typescript/stringTransform'; -import JavaScriptCodingWorkspacePushCodeToEditorButton from './JavaScriptCodingWorkspacePushCodeToEditorButton'; - type Props = Readonly<{ solutionId: string; }>; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolution.tsx b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolution.tsx similarity index 95% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolution.tsx rename to apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolution.tsx index 0cea8c7f6..e0e6518df 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolution.tsx +++ b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolution.tsx @@ -19,12 +19,11 @@ import { textVariants } from '~/components/ui/Text'; import { themeBackgroundCardWhiteOnLightColor } from '~/components/ui/theme'; import CodingWorkspaceDescriptionAddOnItems from '~/components/workspace/common/CodingWorkspaceDescriptionAddOnItems'; import CodingWorkspaceMDXComponents from '~/components/workspace/common/CodingWorkspaceMDXComponents'; +import JavaScriptCodingWorkspacePushCodeToEditorButton from '~/components/workspace/javascript/JavaScriptCodingWorkspacePushCodeToEditorButton'; +import JavaScriptCodingWorkspaceLanguageDropdown from '~/components/workspace/javascript/language/JavaScriptCodingWorkspaceLanguageDropdown'; import { useQueryQuestionProgress } from '~/db/QuestionsProgressClient'; -import JavaScriptCodingWorkspaceLanguageDropdown from './JavaScriptCodingWorkspaceLanguageDropdown'; -import JavaScriptCodingWorkspacePushCodeToEditorButton from './JavaScriptCodingWorkspacePushCodeToEditorButton'; - type Props = Readonly<{ canViewPremiumContent: boolean; isMobile?: boolean; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolutionBanner.tsx b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolutionBanner.tsx similarity index 91% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolutionBanner.tsx rename to apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolutionBanner.tsx index f75ce530f..a404a0d27 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSolutionBanner.tsx +++ b/apps/web/src/components/workspace/javascript/solution/JavaScriptCodingWorkspaceSolutionBanner.tsx @@ -1,17 +1,17 @@ import { type ComponentProps, useCallback } from 'react'; import { updateFile } from '~/components/workspace//common/store/sandpack-slice'; -import CodingWorkspaceSolutionBanner from '~/components/workspace/common/CodingWorkspaceSolutionBanner'; +import CodingWorkspaceSolutionBanner from '~/components/workspace/common/solution/CodingWorkspaceSolutionBanner'; import { loadLocalJavaScriptQuestionCode, saveJavaScriptQuestionCodeLocally, -} from './JavaScriptCodingWorkspaceCodeStorage'; -import { submit } from './store/execution-slice'; +} from '../JavaScriptCodingWorkspaceCodeStorage'; +import { submit } from '../store/execution-slice'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, -} from './store/hooks'; +} from '../store/hooks'; export default function JavaScriptCodingWorkspaceSolutionBanner({ isMobile = false, diff --git a/apps/web/src/components/workspace/javascript/store/actions.ts b/apps/web/src/components/workspace/javascript/store/actions.ts index 7006d1a1e..f1ce64153 100644 --- a/apps/web/src/components/workspace/javascript/store/actions.ts +++ b/apps/web/src/components/workspace/javascript/store/actions.ts @@ -1,5 +1,5 @@ import type { QuestionCodingWorkingLanguage } from '~/components/interviews/questions/common/QuestionsTypes'; -import type { SetUnsavedChangesDialogType } from '~/components/workspace/common/CodingWorkspaceUnsavedSolutionContext'; +import type { SetUnsavedChangesDialogType } from '~/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext'; import { resetFile, updateFile, diff --git a/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.test.ts b/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.test.ts index 5935774aa..577683273 100644 --- a/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.test.ts +++ b/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.test.ts @@ -6,8 +6,8 @@ import type { QuestionJavaScript } from '~/components/interviews/questions/commo import type { SandpackState } from '~/components/workspace/common/store/sandpack-slice'; import { initializeSandpack } from '~/components/workspace/common/store/sandpack-slice'; -import * as InitialFiles from '../javascriptCodingWorkspaceGetInitialFiles'; -import * as LanguageStorage from '../JavaScriptCodingWorkspaceWorkingLanguageStorage'; +import * as LanguageStorage from '../language/JavaScriptCodingWorkspaceWorkingLanguageStorage'; +import * as InitialFiles from '../utils/javascriptCodingWorkspaceGetInitialFiles'; import { javaScriptWorkspaceMiddleware } from './javascript-workspace-middleware'; import javascriptWorkspaceReducer, { setLanguage, diff --git a/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.ts b/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.ts index ea19fb093..3835a7187 100644 --- a/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.ts +++ b/apps/web/src/components/workspace/javascript/store/javascript-workspace-middleware.ts @@ -2,8 +2,8 @@ import type { Middleware, MiddlewareAPI } from '@reduxjs/toolkit'; import { initializeSandpack } from '~/components/workspace/common/store/sandpack-slice'; -import { javascriptCodingWorkspaceGetInitialSandpackState } from '../javascriptCodingWorkspaceGetInitialFiles'; -import { saveJavaScriptCodingWorkspaceWorkingLanguage } from '../JavaScriptCodingWorkspaceWorkingLanguageStorage'; +import { saveJavaScriptCodingWorkspaceWorkingLanguage } from '../language/JavaScriptCodingWorkspaceWorkingLanguageStorage'; +import { javascriptCodingWorkspaceGetInitialSandpackState } from '../utils/javascriptCodingWorkspaceGetInitialFiles'; import type { JavaScriptCodingWorkspaceDispatch, JavaScriptCodingWorkspaceState, diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionList.tsx b/apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionList.tsx similarity index 95% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionList.tsx rename to apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionList.tsx index 51829cad5..2f96de5d7 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionList.tsx +++ b/apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionList.tsx @@ -17,9 +17,8 @@ import { themeBorderColor, themeDivideColor, } from '~/components/ui/theme'; - -import JavaScriptCodingWorkspaceSubmissionMetadata from './JavaScriptCodingWorkspaceSubmissionMetadata'; -import { useJavaScriptCodingWorkspaceSelector } from './store/hooks'; +import { useJavaScriptCodingWorkspaceSelector } from '~/components/workspace/javascript/store/hooks'; +import JavaScriptCodingWorkspaceSubmissionMetadata from '~/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionMetadata'; type Props = Readonly<{ metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionMetadata.tsx b/apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionMetadata.tsx similarity index 100% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionMetadata.tsx rename to apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionMetadata.tsx diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionTab.tsx b/apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionTab.tsx similarity index 93% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionTab.tsx rename to apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionTab.tsx index 216a069b8..1b2c3b44b 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmissionTab.tsx +++ b/apps/web/src/components/workspace/javascript/submission/JavaScriptCodingWorkspaceSubmissionTab.tsx @@ -11,9 +11,9 @@ import Spinner from '~/components/ui/Spinner'; import Text from '~/components/ui/Text'; import { themeBackgroundCardWhiteOnLightColor } from '~/components/ui/theme'; -import JavaScriptCodingWorkspacePushCodeToEditorButton from './JavaScriptCodingWorkspacePushCodeToEditorButton'; +import JavaScriptCodingWorkspacePushCodeToEditorButton from '../JavaScriptCodingWorkspacePushCodeToEditorButton'; +import { useJavaScriptCodingWorkspaceSelector } from '../store/hooks'; import JavaScriptCodingWorkspaceSubmissionMetadata from './JavaScriptCodingWorkspaceSubmissionMetadata'; -import { useJavaScriptCodingWorkspaceSelector } from './store/hooks'; type Props = Readonly<{ submissionId: string; diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCustomTestCasesBanner.tsx b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceCustomTestCasesBanner.tsx similarity index 100% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceCustomTestCasesBanner.tsx rename to apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceCustomTestCasesBanner.tsx diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceRunTab.tsx b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceRunTab.tsx similarity index 85% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceRunTab.tsx rename to apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceRunTab.tsx index 6cc73e48c..bd343567a 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceRunTab.tsx +++ b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceRunTab.tsx @@ -1,16 +1,15 @@ import { useEffect } from 'react'; import type { QuestionMetadata } from '~/components/interviews/questions/common/QuestionsTypes'; +import { codingWorkspaceTabFileId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import TestsSection from '~/components/workspace/common/tests/TestsSection'; +import useJavaScriptCodingWorkspaceTilesContext from '~/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, } from '~/components/workspace/javascript/store/hooks'; import { focusOnTest } from '~/components/workspace/javascript/store/javascript-workspace-slice'; -import { codingWorkspaceTabFileId } from '../common/tabs/codingWorkspaceTabId'; -import TestsSection from '../common/tests/TestsSection'; -import useJavaScriptCodingWorkspaceTilesContext from './useJavaScriptCodingWorkspaceTilesContext'; - export default function JavaScriptCodingWorkspaceTestsRunTab({ metadata, specPath, diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmitTab.tsx b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceSubmitTab.tsx similarity index 94% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmitTab.tsx rename to apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceSubmitTab.tsx index 2bf615afa..cfe700cb2 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceSubmitTab.tsx +++ b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceSubmitTab.tsx @@ -6,6 +6,9 @@ import { trpc } from '~/hooks/trpc'; import { useToast } from '~/components/global/toasts/useToast'; import type { QuestionMetadata } from '~/components/interviews/questions/common/QuestionsTypes'; import { useIntl } from '~/components/intl'; +import type { CodingWorkspaceTabFileType } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import TestsSection from '~/components/workspace/common/tests/TestsSection'; +import useJavaScriptCodingWorkspaceTilesContext from '~/components/workspace/javascript/hooks/useJavaScriptCodingWorkspaceTilesContext'; import { useJavaScriptCodingWorkspaceDispatch, useJavaScriptCodingWorkspaceSelector, @@ -18,10 +21,6 @@ import { } from '~/db/QuestionsProgressClient'; import { staticUpperCase } from '~/utils/typescript/stringTransform'; -import type { CodingWorkspaceTabFileType } from '../common/tabs/codingWorkspaceTabId'; -import TestsSection from '../common/tests/TestsSection'; -import useJavaScriptCodingWorkspaceTilesContext from './useJavaScriptCodingWorkspaceTilesContext'; - export default function JavaScriptCodingWorkspaceTestsSubmitTab({ metadata, openBesideTabId, diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTestsCode.tsx b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceTestsCode.tsx similarity index 100% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTestsCode.tsx rename to apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceTestsCode.tsx diff --git a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTestsEditor.tsx b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceTestsEditor.tsx similarity index 94% rename from apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTestsEditor.tsx rename to apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceTestsEditor.tsx index 1cb647e95..25e5e7d99 100644 --- a/apps/web/src/components/workspace/javascript/JavaScriptCodingWorkspaceTestsEditor.tsx +++ b/apps/web/src/components/workspace/javascript/tests/JavaScriptCodingWorkspaceTestsEditor.tsx @@ -3,10 +3,9 @@ import clsx from 'clsx'; import type { editor } from 'monaco-editor'; import { useEffect, useState } from 'react'; +import JavaScriptCodingWorkspaceCodeEditor from '~/components/workspace/javascript/editor/JavaScriptCodingWorkspaceCodeEditor'; import { useJavaScriptCodingWorkspaceSelector } from '~/components/workspace/javascript/store/hooks'; -import JavaScriptCodingWorkspaceCodeEditor from './JavaScriptCodingWorkspaceCodeEditor'; - type Props = Readonly<{ specPath: string; }>; diff --git a/apps/web/src/components/workspace/javascript/javascriptCodingWorkspaceGetInitialFiles.ts b/apps/web/src/components/workspace/javascript/utils/javascriptCodingWorkspaceGetInitialFiles.ts similarity index 90% rename from apps/web/src/components/workspace/javascript/javascriptCodingWorkspaceGetInitialFiles.ts rename to apps/web/src/components/workspace/javascript/utils/javascriptCodingWorkspaceGetInitialFiles.ts index b6718a490..9a96020df 100644 --- a/apps/web/src/components/workspace/javascript/javascriptCodingWorkspaceGetInitialFiles.ts +++ b/apps/web/src/components/workspace/javascript/utils/javascriptCodingWorkspaceGetInitialFiles.ts @@ -2,10 +2,10 @@ import type { QuestionCodingWorkingLanguage, QuestionJavaScript, } from '~/components/interviews/questions/common/QuestionsTypes'; -import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '~/components/workspace/common/codingWorkspaceConvertFiles'; import type { SandpackState } from '~/components/workspace/common/store/sandpack-slice'; +import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '~/components/workspace/common/utils/codingWorkspaceConvertFiles'; -import { loadLocalJavaScriptQuestionCode } from './JavaScriptCodingWorkspaceCodeStorage'; +import { loadLocalJavaScriptQuestionCode } from '../JavaScriptCodingWorkspaceCodeStorage'; export function javaScriptCodingWorkspaceGetInitialFiles({ language, diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspace.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspace.tsx index 8da69d0d9..7a9580ab1 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspace.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspace.tsx @@ -13,13 +13,12 @@ import type { import useQuestionsAutoMarkAsComplete from '~/components/interviews/questions/common/useQuestionsAutoMarkAsComplete'; import { questionUserInterfacePath } from '~/components/interviews/questions/content/user-interface/QuestionUserInterfaceRoutes'; import { useQuestionsListTypeCurrent } from '~/components/interviews/questions/listings/utils/useQuestionsListDataForType'; -import { CodingWorkspaceUnsavedSolutionProvider } from '~/components/workspace/common/CodingWorkspaceUnsavedSolutionContext'; -import useCodingWorkspaceSyncSandpackFiles from '~/components/workspace/common/useCodingWorkspaceSyncSandpackFiles'; +import { CodingWorkspaceUnsavedSolutionProvider } from '~/components/workspace/common/context/CodingWorkspaceUnsavedSolutionContext'; +import useCodingWorkspaceSyncSandpackFiles from '~/components/workspace/common/hooks/useCodingWorkspaceSyncSandpackFiles'; import { useI18nRouter } from '~/next-i18nostic/src'; import { TilesProvider } from '~/react-tiling/state/TilesProvider'; -import { codingFilesShouldUseTypeScript } from '../common/codingFilesShouldUseTypeScript'; import useMonacoEditorModels from '../common/editor/useMonacoEditorModels'; import useMonacoLanguagesFetchTypeDeclarations from '../common/editor/useMonacoLanguagesFetchTypeDeclarations'; import useMonacoLanguagesJSONDefaults from '../common/editor/useMonacoLanguagesJSONDefaults'; @@ -27,12 +26,13 @@ import useMonacoLanguagesLoadTSConfig from '../common/editor/useMonacoLanguagesL import useMonacoLanguagesTypeScriptRunDiagnostics from '../common/editor/useMonacoLanguagesTypeScriptRunDiagnostics'; import useRestartSandpack from '../common/sandpack/useRestartSandpack'; import useSandpackModuleErrorRefreshBrowser from '../common/sandpack/useSandpackModuleErrorRefreshBrowser'; -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; +import { codingFilesShouldUseTypeScript } from '../common/utils/codingFilesShouldUseTypeScript'; +import useUserInterfaceCodingWorkspaceSaveCodeLocally from './hooks/useUserInterfaceCodingWorkspaceSaveCodeLocally'; import { getUserInterfaceCodingWorkspaceLayout, getUserInterfaceCodingWorkspaceLayoutMobile, -} from './UserInterfaceCodingWorkspaceLayouts'; -import useUserInterfaceCodingWorkspaceSaveCodeLocally from './useUserInterfaceCodingWorkspaceSaveCodeLocally'; +} from './layout/UserInterfaceCodingWorkspaceLayouts'; +import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; export type UserInterfaceWorkspaceProps = Readonly<{ canViewPremiumContent: boolean; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceAboveMobile.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceAboveMobile.tsx index 2c0879868..45acbb542 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceAboveMobile.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceAboveMobile.tsx @@ -10,30 +10,41 @@ import { useMediaQuery } from 'usehooks-ts'; import InterviewsPremiumBadge from '~/components/interviews/common/InterviewsPremiumBadge'; import { useIntl } from '~/components/intl'; -import type { CodingWorkspaceTabContents } from '~/components/workspace/common/CodingWorkspaceContext'; import CodingWorkspaceDescriptionAddOnItems from '~/components/workspace/common/CodingWorkspaceDescriptionAddOnItems'; import CodingWorkspaceDivider, { CodingWorkspaceDividerWrapperClassname, } from '~/components/workspace/common/CodingWorkspaceDivider'; import CodingWorkspaceErrorBoundary from '~/components/workspace/common/CodingWorkspaceErrorBoundary'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import { CodingWorkspaceTabIcons } from '~/components/workspace/common/CodingWorkspaceTabIcons'; import CodingWorkspaceConsole from '~/components/workspace/common/console/CodingWorkspaceConsole'; +import type { CodingWorkspaceTabContents } from '~/components/workspace/common/context/CodingWorkspaceContext'; import CodingWorkspaceEditorShortcutsTab from '~/components/workspace/common/editor/CodingWorkspaceEditorShortcutsTab'; import useMonacoEditorRegisterEditorOpener from '~/components/workspace/common/editor/useMonacoEditorRegisterEditorOpener'; +import useCodingWorkspaceCodeEditorCustomActions from '~/components/workspace/common/hooks/useCodingWorkspaceCodeEditorCustomActions'; +import useTabletResponsiveLayout from '~/components/workspace/common/hooks/useTabletResponsiveLayout'; import { codingWorkspaceTabAttemptId, codingWorkspaceTabAttemptPattern, codingWorkspaceTabFileId, codingWorkspaceTabFilePattern, } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; -import useCodingWorkspaceCodeEditorCustomActions from '~/components/workspace/common/useCodingWorkspaceCodeEditorCustomActions'; -import useTabletResponsiveLayout from '~/components/workspace/common/useTabletResponsiveLayout'; -import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; +import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext'; +import UserInterfaceCodingWorkspaceSaveCodeTab from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveCodeTab'; +import UserInterfaceCodingWorkspaceSavesList from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesList'; +import UserInterfaceCodingWorkspaceCommunitySolutionCreateTab from '~/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab'; +import UserInterfaceCodingWorkspaceCommunitySolutionList from '~/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionList'; import { TilesPanelRoot } from '~/react-tiling/components/TilesPanelRoot'; import { codingWorkspaceExplorerFilePathToIcon } from '../common/explorer/codingWorkspaceExplorerFilePathToIcon'; +import UserInterfaceCodingWorkspaceCodeEditor from './editor/UserInterfaceCodingWorkspaceCodeEditor'; +import { + getUserInterfaceCodingWorkspaceLayout, + getUserInterfaceCodingWorkspaceLayoutMobile, +} from './layout/UserInterfaceCodingWorkspaceLayouts'; +import UserInterfaceCodingWorkspacePreview from './preview/UserInterfaceCodingWorkspacePreview'; +import UserInterfaceCodingWorkspaceSolutionPreviewTab from './solution/UserInterfaceCodingWorkspaceSolutionPreviewTab'; import { replaceUserInterfaceCodeEditorContents } from './store/actions'; import { useUserInterfaceCodingWorkspaceDispatch, @@ -41,19 +52,8 @@ import { } from './store/hooks'; import type { UserInterfaceWorkspaceRenderProps } from './UserInterfaceCodingWorkspace'; import UserInterfaceCodingWorkspaceBottomBar from './UserInterfaceCodingWorkspaceBottomBar'; -import UserInterfaceCodingWorkspaceCodeEditor from './UserInterfaceCodingWorkspaceCodeEditor'; -import UserInterfaceCodingWorkspaceCommunitySolutionCreateTab from './UserInterfaceCodingWorkspaceCommunitySolutionCreateTab'; -import UserInterfaceCodingWorkspaceCommunitySolutionList from './UserInterfaceCodingWorkspaceCommunitySolutionList'; import UserInterfaceCodingWorkspaceExplorer from './UserInterfaceCodingWorkspaceExplorer'; -import { - getUserInterfaceCodingWorkspaceLayout, - getUserInterfaceCodingWorkspaceLayoutMobile, -} from './UserInterfaceCodingWorkspaceLayouts'; import UserInterfaceCodingWorkspaceNewTab from './UserInterfaceCodingWorkspaceNewTab'; -import UserInterfaceCodingWorkspacePreview from './UserInterfaceCodingWorkspacePreview'; -import UserInterfaceCodingWorkspaceSaveCodeTab from './UserInterfaceCodingWorkspaceSaveCodeTab'; -import UserInterfaceCodingWorkspaceSavesList from './UserInterfaceCodingWorkspaceSavesList'; -import UserInterfaceCodingWorkspaceSolutionPreviewTab from './UserInterfaceCodingWorkspaceSolutionPreviewTab'; import type { UserInterfaceCodingWorkspacePredefinedTabsContents, UserInterfaceCodingWorkspaceTabsType, diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceBottomBar.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceBottomBar.tsx index 6c0f3b129..e2df1b9d9 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceBottomBar.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceBottomBar.tsx @@ -16,15 +16,15 @@ import QuestionNextQuestions from '~/components/interviews/questions/content/Que import Divider from '~/components/ui/Divider'; import CodingWorkspaceBottomBar from '~/components/workspace/common/CodingWorkspaceBottomBar'; import { CodingWorkspaceBottomBarSettingsDropdownMenu } from '~/components/workspace/common/CodingWorkspaceBottomBarSettingsDropdownMenu'; -import CodingWorkspaceMobileSolutionButton from '~/components/workspace/common/CodingWorkspaceMobileSolutionButton'; import CodingWorkspaceTimer from '~/components/workspace/common/CodingWorkspaceTimer'; +import CodingWorkspaceMobileSolutionButton from '~/components/workspace/common/solution/CodingWorkspaceMobileSolutionButton'; import { useCodingWorkspaceDispatch } from '~/components/workspace/common/store/hooks'; +import UserInterfaceCodingWorkspaceLayoutDialog from './layout/UserInterfaceCodingWorkspaceLayoutDialog'; +import UserInterfaceCodingWorkspaceSaveButton from './save-code/UserInterfaceCodingWorkspaceSaveButton'; import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; import { deleteLocalUserInterfaceQuestionCode } from './UserInterfaceCodingWorkspaceCodeStorage'; import UserInterfaceCodingWorkspaceFrameworkDropdown from './UserInterfaceCodingWorkspaceFrameworkDropdown'; -import UserInterfaceCodingWorkspaceLayoutDialog from './UserInterfaceCodingWorkspaceLayoutDialog'; -import UserInterfaceCodingWorkspaceSaveButton from './UserInterfaceCodingWorkspaceSaveButton'; type Mode = ComponentProps['mode']; type Props = Readonly<{ diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceMobile.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceMobile.tsx index ab8fbe16c..635a8724f 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceMobile.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceMobile.tsx @@ -10,11 +10,14 @@ import Divider from '~/components/ui/Divider'; import Heading from '~/components/ui/Heading'; import Text, { textVariants } from '~/components/ui/Text'; import CodingWorkspaceDescriptionAddOnItems from '~/components/workspace/common/CodingWorkspaceDescriptionAddOnItems'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import CodingWorkspaceMobileExperienceBanner from '~/components/workspace/common/CodingWorkspaceMobileExperienceBanner'; import { CodingWorkspaceTabIcons } from '~/components/workspace/common/CodingWorkspaceTabIcons'; import { codingWorkspaceTabFileId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; +import UserInterfaceCodingWorkspaceCodeEditor from './editor/UserInterfaceCodingWorkspaceCodeEditor'; +import UserInterfaceCodingWorkspaceCodeEditorMobile from './editor/UserInterfaceCodingWorkspaceCodeEditorMobile'; +import UserInterfaceCodingWorkspacePreviewMobile from './preview/UserInterfaceCodingWorkspacePreviewMobile'; import { replaceUserInterfaceCodeEditorContents } from './store/actions'; import { useUserInterfaceCodingWorkspaceDispatch, @@ -22,10 +25,7 @@ import { } from './store/hooks'; import type { UserInterfaceWorkspaceRenderProps } from './UserInterfaceCodingWorkspace'; import UserInterfaceCodingWorkspaceBottomBar from './UserInterfaceCodingWorkspaceBottomBar'; -import UserInterfaceCodingWorkspaceCodeEditor from './UserInterfaceCodingWorkspaceCodeEditor'; -import UserInterfaceCodingWorkspaceCodeEditorMobile from './UserInterfaceCodingWorkspaceCodeEditorMobile'; import UserInterfaceCodingWorkspaceExplorer from './UserInterfaceCodingWorkspaceExplorer'; -import UserInterfaceCodingWorkspacePreviewMobile from './UserInterfaceCodingWorkspacePreviewMobile'; import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; import UserInterfaceCodingWorkspaceWriteup from './UserInterfaceCodingWorkspaceWriteup'; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceNewTab.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceNewTab.tsx index abaf151c1..2a4f2675b 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceNewTab.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceNewTab.tsx @@ -7,19 +7,19 @@ import { INTERVIEWS_UI_COMMUNITY_SOLUTIONS_IS_LIVE } from '~/data/FeatureFlags'; import { useIntl } from '~/components/intl'; import Button from '~/components/ui/Button'; import Text from '~/components/ui/Text'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import { codingWorkspaceExplorerFilePathToIcon } from '~/components/workspace/common/explorer/codingWorkspaceExplorerFilePathToIcon'; import { codingWorkspaceTabFileId, codingWorkspaceTabFilePattern, } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; +import useUserInterfaceCodingWorkspaceTilesContext from './hooks/useUserInterfaceCodingWorkspaceTilesContext'; import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; import type { UserInterfaceCodingWorkspacePredefinedTabsContents, UserInterfaceCodingWorkspacePredefinedTabsType, } from './UserInterfaceCodingWorkspaceTypes'; -import useUserInterfaceCodingWorkspaceTilesContext from './useUserInterfaceCodingWorkspaceTilesContext'; type UserInterfaceCodingNewTabTypeData = | { diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSection.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSection.tsx index d33d4d9f3..b962ee918 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSection.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSection.tsx @@ -13,8 +13,8 @@ import type { QuestionMetadata, QuestionUserInterface, } from '~/components/interviews/questions/common/QuestionsTypes'; -import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '~/components/workspace/common/codingWorkspaceConvertFiles'; import { useSandpackBundlerURL } from '~/components/workspace/common/sandpack/useSandpackBundlerURL'; +import { codingWorkspaceConvertFilesToSandpackBundlerFiles } from '~/components/workspace/common/utils/codingWorkspaceConvertFiles'; import type { UserInterfaceWorkspaceRenderProps } from '~/components/workspace/user-interface/UserInterfaceCodingWorkspace'; import UserInterfaceCodingWorkspace from '~/components/workspace/user-interface/UserInterfaceCodingWorkspace'; import { loadLocalUserInterfaceQuestionCode } from '~/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeStorage'; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceTypes.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceTypes.tsx index b35a50e60..fc391fc76 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceTypes.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceTypes.tsx @@ -1,4 +1,4 @@ -import type { CodingWorkspaceTabContents } from '../common/CodingWorkspaceContext'; +import type { CodingWorkspaceTabContents } from '../common/context/CodingWorkspaceContext'; import type { CodingWorkspaceTabAttemptType, CodingWorkspaceTabFileType, diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceWriteup.tsx b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceWriteup.tsx index 6e010cf06..4e48a62d7 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceWriteup.tsx +++ b/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceWriteup.tsx @@ -26,9 +26,9 @@ import CodingWorkspaceQuestionContentProse from '~/components/workspace/common/C import { useQueryQuestionProgress } from '~/db/QuestionsProgressClient'; +import useUserInterfaceCodingWorkspaceTilesContext from './hooks/useUserInterfaceCodingWorkspaceTilesContext'; +import UserInterfaceCodingWorkspaceSolutionFilesPreview from './solution/UserInterfaceCodingWorkspaceSolutionFilesPreview'; import UserInterfaceCodingWorkspaceFrameworkDropdown from './UserInterfaceCodingWorkspaceFrameworkDropdown'; -import UserInterfaceCodingWorkspaceSolutionFilesPreview from './UserInterfaceCodingWorkspaceSolutionFilesPreview'; -import useUserInterfaceCodingWorkspaceTilesContext from './useUserInterfaceCodingWorkspaceTilesContext'; type BaseProps = Readonly<{ canViewPremiumContent: boolean; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditor.tsx b/apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditor.tsx similarity index 94% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditor.tsx rename to apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditor.tsx index e396f7142..52e366d30 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditor.tsx +++ b/apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditor.tsx @@ -4,8 +4,8 @@ import type { ComponentProps } from 'react'; import { useCallback, useState } from 'react'; import CodingWorkspaceCodeEditorResetCodeButton from '~/components/workspace/common/CodingWorkspaceCodeEditorResetCodeButton'; -import CodingWorkspaceSolutionBanner from '~/components/workspace/common/CodingWorkspaceSolutionBanner'; import MonacoCodeEditor from '~/components/workspace/common/editor/MonacoCodeEditor'; +import CodingWorkspaceSolutionBanner from '~/components/workspace/common/solution/CodingWorkspaceSolutionBanner'; import { updateActiveFile, updateFile, @@ -15,16 +15,16 @@ import { resetHasUnsavedSolutionChanges, } from '~/components/workspace/common/store/solution-slice'; -import { resetUserInterfaceCodingWorkspaceFile } from './store/actions'; +import UserInterfaceCodingWorkspaceSaveDialog from '../save-code/UserInterfaceCodingWorkspaceSaveDialog'; +import { resetUserInterfaceCodingWorkspaceFile } from '../store/actions'; import { useUserInterfaceCodingWorkspaceDispatch, useUserInterfaceCodingWorkspaceSelector, -} from './store/hooks'; +} from '../store/hooks'; import { loadLocalUserInterfaceQuestionCode, saveUserInterfaceQuestionCodeLocally, -} from './UserInterfaceCodingWorkspaceCodeStorage'; -import UserInterfaceCodingWorkspaceSaveDialog from './UserInterfaceCodingWorkspaceSaveDialog'; +} from '../UserInterfaceCodingWorkspaceCodeStorage'; type BaseProps = Readonly<{ filePath: string; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx b/apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx similarity index 88% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx rename to apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx index c38a2122f..1a68983d0 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx +++ b/apps/web/src/components/workspace/user-interface/editor/UserInterfaceCodingWorkspaceCodeEditorMobile.tsx @@ -1,7 +1,7 @@ import CodingWorkspaceErrorBoundary from '~/components/workspace/common/CodingWorkspaceErrorBoundary'; -import UserInterfaceCodingWorkspaceTabsSection from './UserInterfaceCodingWorkspaceTabsSection'; -import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; +import UserInterfaceCodingWorkspaceTabsSection from '../UserInterfaceCodingWorkspaceTabsSection'; +import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; type Props = Readonly<{ activeTabId: string; diff --git a/apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx b/apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx similarity index 79% rename from apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx rename to apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx index 1f6f3a33f..fe8179773 100644 --- a/apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx +++ b/apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceSaveCodeLocally.tsx @@ -2,8 +2,8 @@ import { useEffect } from 'react'; import type { QuestionUserInterface } from '~/components/interviews/questions/common/QuestionsTypes'; -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; -import { saveUserInterfaceQuestionCodeLocally } from './UserInterfaceCodingWorkspaceCodeStorage'; +import { useUserInterfaceCodingWorkspaceSelector } from '../store/hooks'; +import { saveUserInterfaceQuestionCodeLocally } from '../UserInterfaceCodingWorkspaceCodeStorage'; export default function useUserInterfaceCodingWorkspaceSaveCodeLocally( question: QuestionUserInterface, diff --git a/apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext.tsx b/apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext.tsx similarity index 68% rename from apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext.tsx rename to apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext.tsx index 14f996c0a..fae203286 100644 --- a/apps/web/src/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext.tsx +++ b/apps/web/src/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext.tsx @@ -1,6 +1,6 @@ import { useTilesContext } from '~/react-tiling/state/useTilesContext'; -import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; +import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; export default function useUserInterfaceCodingWorkspaceTilesContext() { return useTilesContext(); diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayoutDialog.tsx b/apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayoutDialog.tsx similarity index 94% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayoutDialog.tsx rename to apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayoutDialog.tsx index 51a72b6e2..4d837431c 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayoutDialog.tsx +++ b/apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayoutDialog.tsx @@ -7,12 +7,12 @@ import { useIntl } from '~/components/intl'; import type { CodingWorkspaceLayoutItem } from '~/components/workspace/common/CodingWorkspaceLayoutDialog'; import CodingWorkspaceLayoutDialog from '~/components/workspace/common/CodingWorkspaceLayoutDialog'; -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; +import useUserInterfaceCodingWorkspaceTilesContext from '../hooks/useUserInterfaceCodingWorkspaceTilesContext'; +import { useUserInterfaceCodingWorkspaceSelector } from '../store/hooks'; import { getUserInterfaceCodingWorkspaceLayout, getUserInterfaceCodingWorkspaceLayoutAdvanced, } from './UserInterfaceCodingWorkspaceLayouts'; -import useUserInterfaceCodingWorkspaceTilesContext from './useUserInterfaceCodingWorkspaceTilesContext'; type Props = Readonly<{ isOpen: boolean; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayouts.ts b/apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayouts.ts similarity index 96% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayouts.ts rename to apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayouts.ts index 3c0489e77..e4b865108 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceLayouts.ts +++ b/apps/web/src/components/workspace/user-interface/layout/UserInterfaceCodingWorkspaceLayouts.ts @@ -1,7 +1,7 @@ import type { TilesPanelConfig } from '~/react-tiling/types'; -import { codingWorkspaceTabFileId } from '../common/tabs/codingWorkspaceTabId'; -import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; +import { codingWorkspaceTabFileId } from '../../common/tabs/codingWorkspaceTabId'; +import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; export function getUserInterfaceCodingWorkspaceLayout( activeFile: string, diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspacePreview.tsx b/apps/web/src/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreview.tsx similarity index 100% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspacePreview.tsx rename to apps/web/src/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreview.tsx diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspacePreviewMobile.tsx b/apps/web/src/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreviewMobile.tsx similarity index 82% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspacePreviewMobile.tsx rename to apps/web/src/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreviewMobile.tsx index 308723d4a..9bf199571 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspacePreviewMobile.tsx +++ b/apps/web/src/components/workspace/user-interface/preview/UserInterfaceCodingWorkspacePreviewMobile.tsx @@ -2,11 +2,11 @@ import { useState } from 'react'; import { useIntl } from '~/components/intl'; -import CodingWorkspaceErrorBoundary from '../common/CodingWorkspaceErrorBoundary'; -import CodingWorkspaceConsole from '../common/console/CodingWorkspaceConsole'; +import CodingWorkspaceErrorBoundary from '../../common/CodingWorkspaceErrorBoundary'; +import CodingWorkspaceConsole from '../../common/console/CodingWorkspaceConsole'; +import UserInterfaceCodingWorkspaceTabsSection from '../UserInterfaceCodingWorkspaceTabsSection'; +import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; import UserInterfaceCodingWorkspacePreview from './UserInterfaceCodingWorkspacePreview'; -import UserInterfaceCodingWorkspaceTabsSection from './UserInterfaceCodingWorkspaceTabsSection'; -import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; export default function UserInterfaceCodingWorkspacePreviewMobile() { const intl = useIntl(); diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveButton.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveButton.tsx similarity index 99% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveButton.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveButton.tsx index 3d7745f28..d1b550c5f 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveButton.tsx +++ b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveButton.tsx @@ -14,7 +14,7 @@ import { resetHasUnsavedSolutionChanges } from '~/components/workspace/common/st import { useUserInterfaceCodingWorkspaceDispatch, useUserInterfaceCodingWorkspaceSelector, -} from './store/hooks'; +} from '../store/hooks'; import UserInterfaceCodingWorkspaceSaveDialog from './UserInterfaceCodingWorkspaceSaveDialog'; type Props = Readonly<{ diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveCodeTab.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveCodeTab.tsx similarity index 81% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveCodeTab.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveCodeTab.tsx index b5259ad3d..def90ba14 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveCodeTab.tsx +++ b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveCodeTab.tsx @@ -9,11 +9,10 @@ import { useIntl } from '~/components/intl'; import ScrollArea from '~/components/ui/ScrollArea'; import Spinner from '~/components/ui/Spinner'; import { themeBackgroundCardWhiteOnLightColor } from '~/components/ui/theme'; - -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; -import UserInterfaceCodingWorkspaceSaveMetadata from './UserInterfaceCodingWorkspaceSaveMetadata'; -import UserInterfaceCodingWorkspaceSavesListItemActions from './UserInterfaceCodingWorkspaceSavesListItemActions'; -import UserInterfaceCodingWorkspaceSolutionFilesPreview from './UserInterfaceCodingWorkspaceSolutionFilesPreview'; +import UserInterfaceCodingWorkspaceSaveMetadata from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveMetadata'; +import UserInterfaceCodingWorkspaceSavesListItemActions from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesListItemActions'; +import UserInterfaceCodingWorkspaceSolutionFilesPreview from '~/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionFilesPreview'; +import { useUserInterfaceCodingWorkspaceSelector } from '~/components/workspace/user-interface/store/hooks'; type Props = Readonly<{ onOpenSolutionInWorkspace: ComponentProps< diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveDialog.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveDialog.tsx similarity index 100% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveDialog.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveDialog.tsx diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveMetadata.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveMetadata.tsx similarity index 100% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSaveMetadata.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveMetadata.tsx diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesList.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesList.tsx similarity index 92% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesList.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesList.tsx index ade484cdd..fde1be27d 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesList.tsx +++ b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesList.tsx @@ -17,10 +17,9 @@ import { themeBorderColor, themeDivideColor, } from '~/components/ui/theme'; - -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; -import UserInterfaceCodingWorkspaceSaveMetadata from './UserInterfaceCodingWorkspaceSaveMetadata'; -import UserInterfaceCodingWorkspaceSavesListItemActions from './UserInterfaceCodingWorkspaceSavesListItemActions'; +import UserInterfaceCodingWorkspaceSaveMetadata from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSaveMetadata'; +import UserInterfaceCodingWorkspaceSavesListItemActions from '~/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesListItemActions'; +import { useUserInterfaceCodingWorkspaceSelector } from '~/components/workspace/user-interface/store/hooks'; type Props = Readonly<{ metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesListItemActions.tsx b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesListItemActions.tsx similarity index 97% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesListItemActions.tsx rename to apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesListItemActions.tsx index 35a1b9e71..fa1555813 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSavesListItemActions.tsx +++ b/apps/web/src/components/workspace/user-interface/save-code/UserInterfaceCodingWorkspaceSavesListItemActions.tsx @@ -10,9 +10,8 @@ import Button from '~/components/ui/Button'; import Dialog from '~/components/ui/Dialog'; import DropdownMenu from '~/components/ui/DropdownMenu'; import TextInput from '~/components/ui/TextInput'; -import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/useUserInterfaceCodingWorkspaceTilesContext'; - -import { codingWorkspaceTabAttemptId } from '../common/tabs/codingWorkspaceTabId'; +import { codingWorkspaceTabAttemptId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import useUserInterfaceCodingWorkspaceTilesContext from '~/components/workspace/user-interface/hooks/useUserInterfaceCodingWorkspaceTilesContext'; type Props = Readonly<{ saveId: string; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx similarity index 98% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx rename to apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx index eda2077ee..ddc5805af 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx +++ b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionCreateTab.tsx @@ -15,11 +15,10 @@ import Button from '~/components/ui/Button'; import EmptyState from '~/components/ui/EmptyState'; import TextArea from '~/components/ui/TextArea'; import TextInput from '~/components/ui/TextInput'; +import { useUserInterfaceCodingWorkspaceSelector } from '~/components/workspace/user-interface/store/hooks'; import { staticUpperCase } from '~/utils/typescript/stringTransform'; -import { useUserInterfaceCodingWorkspaceSelector } from './store/hooks'; - type Props = Readonly<{ framework: QuestionFramework; metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx similarity index 82% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx rename to apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx index 23f25f2dc..a77fb9d7b 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx +++ b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceCommunitySolutionList.tsx @@ -1,8 +1,7 @@ import { trpc } from '~/hooks/trpc'; import type { QuestionMetadata } from '~/components/interviews/questions/common/QuestionsTypes'; - -import CodingWorkspaceCommunitySolutionList from '../common/CodingWorkspaceCommunitySolutionList'; +import CodingWorkspaceCommunitySolutionList from '~/components/workspace/common/solution/CodingWorkspaceCommunitySolutionList'; type Props = Readonly<{ metadata: QuestionMetadata; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx similarity index 97% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx rename to apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx index 263b235de..05ed8a447 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx +++ b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionFilesPreview.tsx @@ -7,10 +7,10 @@ import { useIntl } from '~/components/intl'; import MDXCodeBlock from '~/components/mdx/MDXCodeBlock'; import Prose from '~/components/ui/Prose'; import Text from '~/components/ui/Text'; -import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/codingWorkspaceExtractFileNameFromPath'; import getLanguageFromFilePath from '~/components/workspace/common/editor/getLanguageFromFilePath'; +import { codingWorkspaceExtractFileNameFromPath } from '~/components/workspace/common/utils/codingWorkspaceExtractFileNameFromPath'; -import UserInterfaceCodingWorkspacePushCodeToEditorButton from './UserInterfaceCodingWorkspacePushCodeToEditorButton'; +import UserInterfaceCodingWorkspacePushCodeToEditorButton from '../UserInterfaceCodingWorkspacePushCodeToEditorButton'; type Props = Readonly<{ files: SandpackFiles; diff --git a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx similarity index 93% rename from apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx rename to apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx index 08b025a61..8526d346e 100644 --- a/apps/web/src/components/workspace/user-interface/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx +++ b/apps/web/src/components/workspace/user-interface/solution/UserInterfaceCodingWorkspaceSolutionPreviewTab.tsx @@ -11,8 +11,8 @@ import Banner from '~/components/ui/Banner'; import SandpackObservability from '~/components/workspace/common/sandpack/SandpackObservability'; import { useSandpackBundlerURL } from '~/components/workspace/common/sandpack/useSandpackBundlerURL'; -import UserInterfaceCodingWorkspacePreview from './UserInterfaceCodingWorkspacePreview'; -import useUserInterfaceCodingWorkspaceTilesContext from './useUserInterfaceCodingWorkspaceTilesContext'; +import useUserInterfaceCodingWorkspaceTilesContext from '../hooks/useUserInterfaceCodingWorkspaceTilesContext'; +import UserInterfaceCodingWorkspacePreview from '../preview/UserInterfaceCodingWorkspacePreview'; type Props = Readonly<{ bundle: QuestionUserInterfaceBundle; diff --git a/apps/web/src/components/workspace/user-interface/store/actions.ts b/apps/web/src/components/workspace/user-interface/store/actions.ts index 36a5f4259..096bd6cbb 100644 --- a/apps/web/src/components/workspace/user-interface/store/actions.ts +++ b/apps/web/src/components/workspace/user-interface/store/actions.ts @@ -1,18 +1,18 @@ import type { SandpackFiles } from '@codesandbox/sandpack-react'; -import { - codingWorkspaceConvertFilesToSandpackBundlerFiles, - codingWorkspaceConvertFilesToSandpackFiles, -} from '~/components/workspace/common/codingWorkspaceConvertFiles'; import { replaceCurrentFileState, updateFile, } from '~/components/workspace/common/store/sandpack-slice'; import { codingWorkspaceTabFileId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import { + codingWorkspaceConvertFilesToSandpackBundlerFiles, + codingWorkspaceConvertFilesToSandpackFiles, +} from '~/components/workspace/common/utils/codingWorkspaceConvertFiles'; import { saveUserInterfaceQuestionCodeLocally } from '../UserInterfaceCodingWorkspaceCodeStorage'; -import userInterfaceCodingWorkspaceNormalizeFilePaths from '../userInterfaceCodingWorkspaceNormalizeSolutionFilePaths'; import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; +import userInterfaceCodingWorkspaceNormalizeFilePaths from '../utils/userInterfaceCodingWorkspaceNormalizeSolutionFilePaths'; import type { UserInterfaceCodingWorkspaceThunk } from './user-interface-store'; export const resetUserInterfaceCodingWorkspaceFile = diff --git a/apps/web/src/components/workspace/user-interface/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx b/apps/web/src/components/workspace/user-interface/utils/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx similarity index 95% rename from apps/web/src/components/workspace/user-interface/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx rename to apps/web/src/components/workspace/user-interface/utils/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx index 0e29f4341..0865f5fc3 100644 --- a/apps/web/src/components/workspace/user-interface/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx +++ b/apps/web/src/components/workspace/user-interface/utils/userInterfaceCodingWorkspaceCodeEditorResetFiles.tsx @@ -2,8 +2,8 @@ import type { SandpackFiles } from '@codesandbox/sandpack-react'; import { codingWorkspaceTabFileId } from '~/components/workspace/common/tabs/codingWorkspaceTabId'; +import type { UserInterfaceCodingWorkspaceTabsType } from '../UserInterfaceCodingWorkspaceTypes'; import userInterfaceCodingWorkspaceNormalizeFilePaths from './userInterfaceCodingWorkspaceNormalizeSolutionFilePaths'; -import type { UserInterfaceCodingWorkspaceTabsType } from './UserInterfaceCodingWorkspaceTypes'; export type ResetUserInterfaceCodeEditorFilesProps = Readonly<{ changeActiveFile: (tabId: UserInterfaceCodingWorkspaceTabsType) => void; diff --git a/apps/web/src/components/workspace/user-interface/userInterfaceCodingWorkspaceNormalizeSolutionFilePaths.ts b/apps/web/src/components/workspace/user-interface/utils/userInterfaceCodingWorkspaceNormalizeSolutionFilePaths.ts similarity index 100% rename from apps/web/src/components/workspace/user-interface/userInterfaceCodingWorkspaceNormalizeSolutionFilePaths.ts rename to apps/web/src/components/workspace/user-interface/utils/userInterfaceCodingWorkspaceNormalizeSolutionFilePaths.ts