diff --git a/apps/web/src/features/routines/routines.api.test.ts b/apps/web/src/features/routines/api/routines.api.test.ts similarity index 100% rename from apps/web/src/features/routines/routines.api.test.ts rename to apps/web/src/features/routines/api/routines.api.test.ts diff --git a/apps/web/src/features/routines/routines.api.ts b/apps/web/src/features/routines/api/routines.api.ts similarity index 100% rename from apps/web/src/features/routines/routines.api.ts rename to apps/web/src/features/routines/api/routines.api.ts diff --git a/apps/web/src/features/routines/routines.query.ts b/apps/web/src/features/routines/api/routines.query.ts similarity index 100% rename from apps/web/src/features/routines/routines.query.ts rename to apps/web/src/features/routines/api/routines.query.ts diff --git a/apps/web/src/features/routines/routine-editor.test.tsx b/apps/web/src/features/routines/create/editor/routine-editor.test.tsx similarity index 98% rename from apps/web/src/features/routines/routine-editor.test.tsx rename to apps/web/src/features/routines/create/editor/routine-editor.test.tsx index 9e760cd..edb455b 100644 --- a/apps/web/src/features/routines/routine-editor.test.tsx +++ b/apps/web/src/features/routines/create/editor/routine-editor.test.tsx @@ -13,7 +13,7 @@ import { cleanup, render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { afterEach, describe, expect, it } from 'vitest'; -import { RoutineDraftFormProvider } from './routine-draft-form'; +import { RoutineDraftFormProvider } from '../routine-draft-form'; import { RoutineEditor } from './routine-editor'; afterEach(() => { diff --git a/apps/web/src/features/routines/routine-editor.tsx b/apps/web/src/features/routines/create/editor/routine-editor.tsx similarity index 87% rename from apps/web/src/features/routines/routine-editor.tsx rename to apps/web/src/features/routines/create/editor/routine-editor.tsx index 79fadeb..7140059 100644 --- a/apps/web/src/features/routines/routine-editor.tsx +++ b/apps/web/src/features/routines/create/editor/routine-editor.tsx @@ -3,13 +3,13 @@ import { Link, useNavigate } from '@tanstack/react-router'; import { ArrowLeft, Plus } from 'lucide-react'; import { useFormContext } from 'react-hook-form'; -import { AddActionButton } from '../../components/ui/add-action-button'; -import { Button } from '../../components/ui/button'; -import { Input } from '../../components/ui/input'; -import { Label } from '../../components/ui/label'; -import { PageTitle } from '../../components/ui/page-title'; -import { cn } from '../../lib/utils'; -import type { RoutineDraftFormValues } from './routine-draft-form'; +import { AddActionButton } from '@/components/ui/add-action-button'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { PageTitle } from '@/components/ui/page-title'; +import { cn } from '@/lib/utils'; +import type { RoutineDraftFormValues } from '../routine-draft-form'; import { RoutineScheduleField } from './routine-schedule-field'; export function RoutineEditor() { diff --git a/apps/web/src/features/routines/routine-schedule-field.tsx b/apps/web/src/features/routines/create/editor/routine-schedule-field.tsx similarity index 85% rename from apps/web/src/features/routines/routine-schedule-field.tsx rename to apps/web/src/features/routines/create/editor/routine-schedule-field.tsx index 3054ee6..3546bb9 100644 --- a/apps/web/src/features/routines/routine-schedule-field.tsx +++ b/apps/web/src/features/routines/create/editor/routine-schedule-field.tsx @@ -1,8 +1,8 @@ /** Displays routine schedule selections and the entry point for adding one. */ import { Plus } from 'lucide-react'; -import { Button } from '../../components/ui/button'; -import { Label } from '../../components/ui/label'; +import { Button } from '@/components/ui/button'; +import { Label } from '@/components/ui/label'; export function RoutineScheduleField() { return ( diff --git a/apps/web/src/features/routines/exercise-configuration.test.tsx b/apps/web/src/features/routines/create/exercise-configuration/exercise-configuration.test.tsx similarity index 100% rename from apps/web/src/features/routines/exercise-configuration.test.tsx rename to apps/web/src/features/routines/create/exercise-configuration/exercise-configuration.test.tsx diff --git a/apps/web/src/features/routines/exercise-configuration.tsx b/apps/web/src/features/routines/create/exercise-configuration/exercise-configuration.tsx similarity index 93% rename from apps/web/src/features/routines/exercise-configuration.tsx rename to apps/web/src/features/routines/create/exercise-configuration/exercise-configuration.tsx index 783825e..7bae624 100644 --- a/apps/web/src/features/routines/exercise-configuration.tsx +++ b/apps/web/src/features/routines/create/exercise-configuration/exercise-configuration.tsx @@ -5,13 +5,13 @@ import { Dumbbell, X } from 'lucide-react'; import { cn } from '@/lib/utils'; -import { Button } from '../../components/ui/button'; -import { Label } from '../../components/ui/label'; -import { LoadingState } from '../../components/ui/loading-state'; -import { NumberStepper } from '../../components/ui/number-stepper'; -import { PageTitle } from '../../components/ui/page-title'; -import { PositiveIntegerInput } from '../../components/ui/positive-integer-input'; -import { useExercises } from '../exercises/exercises.query'; +import { Button } from '@/components/ui/button'; +import { Label } from '@/components/ui/label'; +import { LoadingState } from '@/components/ui/loading-state'; +import { NumberStepper } from '@/components/ui/number-stepper'; +import { PageTitle } from '@/components/ui/page-title'; +import { PositiveIntegerInput } from '@/components/ui/positive-integer-input'; +import { useExercises } from '@/features/exercises/exercises.query'; type ExerciseConfigurationProps = { exerciseId: string; diff --git a/apps/web/src/features/routines/exercise-picker.test.tsx b/apps/web/src/features/routines/create/exercise-picker/exercise-picker.test.tsx similarity index 100% rename from apps/web/src/features/routines/exercise-picker.test.tsx rename to apps/web/src/features/routines/create/exercise-picker/exercise-picker.test.tsx diff --git a/apps/web/src/features/routines/exercise-picker.tsx b/apps/web/src/features/routines/create/exercise-picker/exercise-picker.tsx similarity index 91% rename from apps/web/src/features/routines/exercise-picker.tsx rename to apps/web/src/features/routines/create/exercise-picker/exercise-picker.tsx index 15f0a4a..63e6112 100644 --- a/apps/web/src/features/routines/exercise-picker.tsx +++ b/apps/web/src/features/routines/create/exercise-picker/exercise-picker.tsx @@ -4,12 +4,12 @@ import { Link } from '@tanstack/react-router'; import { ChevronRight, Dumbbell, Plus, Search, X } from 'lucide-react'; import { useState } from 'react'; -import { AddActionButton } from '../../components/ui/add-action-button'; -import { Button } from '../../components/ui/button'; -import { Input } from '../../components/ui/input'; -import { LoadingState } from '../../components/ui/loading-state'; -import { PageTitle } from '../../components/ui/page-title'; -import { useExercises } from '../exercises/exercises.query'; +import { AddActionButton } from '@/components/ui/add-action-button'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { LoadingState } from '@/components/ui/loading-state'; +import { PageTitle } from '@/components/ui/page-title'; +import { useExercises } from '@/features/exercises/exercises.query'; export function ExercisePicker() { const [searchTerm, setSearchTerm] = useState(''); diff --git a/apps/web/src/features/routines/routine-draft-form.tsx b/apps/web/src/features/routines/create/routine-draft-form.tsx similarity index 100% rename from apps/web/src/features/routines/routine-draft-form.tsx rename to apps/web/src/features/routines/create/routine-draft-form.tsx diff --git a/apps/web/src/features/routines/routines-landing.test.tsx b/apps/web/src/features/routines/landing/routines-landing.test.tsx similarity index 96% rename from apps/web/src/features/routines/routines-landing.test.tsx rename to apps/web/src/features/routines/landing/routines-landing.test.tsx index 772326a..11680ae 100644 --- a/apps/web/src/features/routines/routines-landing.test.tsx +++ b/apps/web/src/features/routines/landing/routines-landing.test.tsx @@ -16,8 +16,8 @@ import { import type { PropsWithChildren } from 'react'; import { afterEach, describe, expect, it, vi } from 'vitest'; -import { ApplicationIdentityContext } from '../../app/application-identity'; -import { createPublicUser } from '../../test/fixtures/public-user.fixture'; +import { ApplicationIdentityContext } from '@/app/application-identity'; +import { createPublicUser } from '@/test/fixtures/public-user.fixture'; import { RoutinesLanding } from './routines-landing'; afterEach(() => { diff --git a/apps/web/src/features/routines/routines-landing.tsx b/apps/web/src/features/routines/landing/routines-landing.tsx similarity index 94% rename from apps/web/src/features/routines/routines-landing.tsx rename to apps/web/src/features/routines/landing/routines-landing.tsx index cd7ea93..b2f4c88 100644 --- a/apps/web/src/features/routines/routines-landing.tsx +++ b/apps/web/src/features/routines/landing/routines-landing.tsx @@ -4,10 +4,10 @@ import { Link } from '@tanstack/react-router'; import { CalendarDays, Dumbbell, Plus } from 'lucide-react'; import type { ReactNode } from 'react'; -import { useApplicationIdentity } from '../../app/application-identity'; -import { AddActionButton } from '../../components/ui/add-action-button'; -import { PageTitle } from '../../components/ui/page-title'; -import { useRoutines } from './routines.query'; +import { useApplicationIdentity } from '@/app/application-identity'; +import { AddActionButton } from '@/components/ui/add-action-button'; +import { PageTitle } from '@/components/ui/page-title'; +import { useRoutines } from '../api/routines.query'; const DAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; diff --git a/apps/web/src/routes/_app._routine-create/route.tsx b/apps/web/src/routes/_app._routine-create/route.tsx index fc8d670..fb57d35 100644 --- a/apps/web/src/routes/_app._routine-create/route.tsx +++ b/apps/web/src/routes/_app._routine-create/route.tsx @@ -1,7 +1,7 @@ /** Keeps routine draft form state mounted across the complete creation flow. */ import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { RoutineDraftFormProvider } from '../../features/routines/routine-draft-form'; +import { RoutineDraftFormProvider } from '../../features/routines/create/routine-draft-form'; export const Route = createFileRoute('/_app/_routine-create')({ component: RoutineCreationLayout, diff --git a/apps/web/src/routes/_app._routine-create/routines_.new.tsx b/apps/web/src/routes/_app._routine-create/routines_.new.tsx index fb7e492..0361e8f 100644 --- a/apps/web/src/routes/_app._routine-create/routines_.new.tsx +++ b/apps/web/src/routes/_app._routine-create/routines_.new.tsx @@ -1,7 +1,7 @@ // Maps the routine-creation URL into the persistent routine form layout. import { createFileRoute } from '@tanstack/react-router'; -import { RoutineEditor } from '../../features/routines/routine-editor'; +import { RoutineEditor } from '../../features/routines/create/editor/routine-editor'; export const Route = createFileRoute('/_app/_routine-create/routines_/new')({ component: RoutineEditor, diff --git a/apps/web/src/routes/_app._routine-create/routines_.new_.exercises.tsx b/apps/web/src/routes/_app._routine-create/routines_.new_.exercises.tsx index 1cf856d..e29b67e 100644 --- a/apps/web/src/routes/_app._routine-create/routines_.new_.exercises.tsx +++ b/apps/web/src/routes/_app._routine-create/routines_.new_.exercises.tsx @@ -1,7 +1,7 @@ /** Registers the protected exercise-picker route inside routine creation. */ import { createFileRoute } from '@tanstack/react-router'; -import { ExercisePicker } from '../../features/routines/exercise-picker'; +import { ExercisePicker } from '../../features/routines/create/exercise-picker/exercise-picker'; export const Route = createFileRoute( '/_app/_routine-create/routines_/new_/exercises', diff --git a/apps/web/src/routes/_app._routine-create/routines_.new_.exercises_.$exerciseId.tsx b/apps/web/src/routes/_app._routine-create/routines_.new_.exercises_.$exerciseId.tsx index e4e0f4c..16eee46 100644 --- a/apps/web/src/routes/_app._routine-create/routines_.new_.exercises_.$exerciseId.tsx +++ b/apps/web/src/routes/_app._routine-create/routines_.new_.exercises_.$exerciseId.tsx @@ -1,7 +1,7 @@ /** Registers exercise configuration inside the persistent routine form flow. */ import { createFileRoute } from '@tanstack/react-router'; -import { ExerciseConfiguration } from '../../features/routines/exercise-configuration'; +import { ExerciseConfiguration } from '../../features/routines/create/exercise-configuration/exercise-configuration'; export const Route = createFileRoute( '/_app/_routine-create/routines_/new_/exercises_/$exerciseId', diff --git a/apps/web/src/routes/_app.routines.tsx b/apps/web/src/routes/_app.routines.tsx index 5be1bad..4a1aaff 100644 --- a/apps/web/src/routes/_app.routines.tsx +++ b/apps/web/src/routes/_app.routines.tsx @@ -1,7 +1,7 @@ // Maps the routines URL into the protected application layout. import { createFileRoute } from '@tanstack/react-router'; -import { RoutinesLanding } from '../features/routines/routines-landing'; +import { RoutinesLanding } from '../features/routines/landing/routines-landing'; export const Route = createFileRoute('/_app/routines')({ component: RoutinesLanding,