Merge pull request 'Herstructureer src/ naar feature-based folderstructuur' (#8) from feature/restructure-folder-layout into master
Continuous Integration / config (push) Successful in 10s
Continuous Integration / prepare (push) Successful in 1m14s
Continuous Integration / build-production (push) Skipped
Continuous Integration / build (push) Successful in 2m0s
Continuous Integration / test (push) Successful in 1m55s
Continuous Integration / deploy-production (push) Skipped
Deploy / deploy (push) Successful in 40s
Continuous Integration / deploy-test (push) Successful in 41s

Reviewed-on: #8
This commit was merged in pull request #8.
This commit is contained in:
2026-08-01 00:38:22 +02:00
25 changed files with 34 additions and 33 deletions
@@ -1,7 +1,7 @@
import { useState } from 'react';
import { navLinks } from '../data/content';
import { ThemeToggle } from './ThemeToggle';
import { handleAnchorClick } from '../utils/scrollToHash';
import { navLinks } from '../../features/landing/data/content';
import { ThemeToggle } from '../ui/ThemeToggle';
import { handleAnchorClick } from '../../utils/scrollToHash';
export function Nav() {
const [isMenuOpen, setIsMenuOpen] = useState(false);
@@ -1,8 +1,8 @@
import type { ReactNode } from 'react';
import { Nav } from './Nav';
import { Footer } from './Footer';
import { UmamiAnalytics } from './UmamiAnalytics';
import { SentryTestButton } from './SentryTestButton';
import { UmamiAnalytics } from '../shared/UmamiAnalytics';
import { SentryTestButton } from '../shared/SentryTestButton';
export function RootLayout({ children }: { children: ReactNode }) {
return (
@@ -1,7 +1,7 @@
import { render, screen, fireEvent } from '@testing-library/react';
import { describe, it, expect, beforeEach } from 'vitest';
import { Nav } from '../Nav';
import { ThemeProvider } from '../../theme/ThemeProvider';
import { ThemeProvider } from '../../../theme/ThemeProvider';
function renderNav() {
return render(
@@ -1,4 +1,4 @@
import { useTheme } from '../theme/ThemeProvider';
import { useTheme } from '../../theme/ThemeProvider';
/**
* Visible theme switcher (requirements FR-3, Functional Design Q1/Q7).
@@ -1,8 +1,8 @@
import { render, screen, waitFor } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { PackagesSection } from '../PackagesSection';
import { packages } from '../../data/content';
import { PackagesSection } from '../components/PackagesSection';
import { packages } from '../data/content';
function renderWithQueryClient() {
const queryClient = new QueryClient();
@@ -1,5 +1,5 @@
import { heroContent } from '../data/content';
import { handleAnchorClick } from '../utils/scrollToHash';
import { handleAnchorClick } from '../../../utils/scrollToHash';
export function Hero() {
return (
@@ -1,5 +1,5 @@
import type { PackageCardData } from '../data/content';
import { handleAnchorClick } from '../utils/scrollToHash';
import { handleAnchorClick } from '../../../utils/scrollToHash';
export function PackageCard({ pkg }: { pkg: PackageCardData }) {
return (
@@ -7,7 +7,7 @@
*
* This module is the current source of truth for content (requirements FR-1/FR-6).
* It is deliberately structured so it can be swapped for TanStack Query data later
* (see src/hooks/usePackagesQuery.ts) with minimal changes (requirements FR-5).
* (see src/features/landing/hooks/usePackagesQuery.ts) with minimal changes (requirements FR-5).
*/
export interface NavLink {
@@ -0,0 +1,17 @@
import { Hero } from '../components/Hero';
import { PackagesSection } from '../components/PackagesSection';
import { ProcessSection } from '../components/ProcessSection';
import { AboutSection } from '../components/AboutSection';
import { ContactSection } from '../components/ContactSection';
export function LandingPage() {
return (
<>
<Hero />
<PackagesSection />
<ProcessSection />
<AboutSection />
<ContactSection />
</>
);
}
+3 -3
View File
@@ -1,9 +1,9 @@
import { createRootRoute, Outlet } from '@tanstack/react-router';
import { QueryClientProvider } from '@tanstack/react-query';
import { ErrorBoundary } from '../components/ErrorBoundary';
import { ErrorBoundary } from '../components/shared/ErrorBoundary';
import { ThemeProvider } from '../theme/ThemeProvider';
import { RootLayout } from '../components/RootLayout';
import { queryClient } from '../queryClient';
import { RootLayout } from '../components/layout/RootLayout';
import { queryClient } from '../lib/queryClient';
/**
* Root route composition (Functional Design / NFR Design logical components):
+2 -18
View File
@@ -1,25 +1,9 @@
import { createRoute } from '@tanstack/react-router';
import { rootRoute } from './__root';
import { Hero } from '../components/Hero';
import { PackagesSection } from '../components/PackagesSection';
import { ProcessSection } from '../components/ProcessSection';
import { AboutSection } from '../components/AboutSection';
import { ContactSection } from '../components/ContactSection';
function IndexPage() {
return (
<>
<Hero />
<PackagesSection />
<ProcessSection />
<AboutSection />
<ContactSection />
</>
);
}
import { LandingPage } from '../features/landing/pages/LandingPage';
export const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/',
component: IndexPage,
component: LandingPage,
});