feat: add comprehensive documentation and client dashboard

- Rename releases.ts to documentatie.ts for better naming
- Add 'use client' directives to UI components for client-side rendering
- Add new documentation pages for features:
  - Client Management (CRUD operations)
  - Intake System (AI-powered intake analysis)
  - Treatment Planning (SMART goals and progress tracking)
  - Verpleegkundige Overdracht (nursing handover with ROM measurements)
  - Voice-Controlled Reporting (AI-driven speech recording)
  - Interface Design System (complete UI/UX specifications)
  - Build Errors Fix (troubleshooting guide)
- Add client dashboard page with route structure
- Update documentation index with new categories and planned features
- Refactor BentoCard to use native anchor tags instead of Button component

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
colinislit
2025-11-19 22:48:41 +01:00
parent 709cebb671
commit e9f4ffc297
21 changed files with 1272 additions and 33 deletions

View File

@@ -6,7 +6,7 @@
import { notFound } from 'next/navigation'
import { MDXRemote } from 'next-mdx-remote/rsc'
import { getRelease, getAllReleases } from '@/lib/mdx/releases'
import { getRelease, getAllReleases } from '@/lib/mdx/documentatie'
import { mdxComponents } from '../components/mdx-components'
interface ReleasePageProps {

View File

@@ -1,3 +1,5 @@
'use client'
/**
* Release Sidebar Wrapper
*
@@ -5,7 +7,7 @@
*/
import { ReleaseSidebar } from './release-sidebar'
import type { ReleaseNote, GroupMetadata, CategoryMetadata } from '@/lib/mdx/releases'
import type { ReleaseNote, GroupMetadata, CategoryMetadata } from '@/lib/mdx/documentatie'
interface ReleaseSidebarWrapperProps {
releases: ReleaseNote[]

View File

@@ -55,11 +55,10 @@ export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) {
<div className="flex gap-2 p-4 overflow-x-auto">
<Link
href="/documentatie"
className={`flex-shrink-0 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${
pathname === '/documentatie'
className={`flex-shrink-0 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${pathname === '/documentatie'
? 'bg-teal-100 text-teal-700'
: 'bg-slate-100 text-slate-600 hover:bg-slate-200'
}`}
}`}
>
Overzicht
</Link>
@@ -67,11 +66,10 @@ export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) {
<Link
key={release.slug}
href={`/documentatie/${release.slug}`}
className={`flex-shrink-0 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${
pathname === `/documentatie/${release.slug}`
className={`flex-shrink-0 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${pathname === `/documentatie/${release.slug}`
? 'bg-teal-100 text-teal-700'
: 'bg-slate-100 text-slate-600 hover:bg-slate-200'
}`}
}`}
>
{release.frontmatter.title}
</Link>
@@ -80,7 +78,7 @@ export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) {
</div>
{/* Desktop: Fixed sidebar */}
<aside className="hidden lg:block w-64 fixed top-16 bottom-0 bg-white border-r border-slate-200 overflow-y-auto">
<aside className="hidden lg:block w-80 fixed top-16 bottom-0 bg-white border-r border-slate-200 overflow-y-auto">
<div className="p-6">
<h2 className="text-xs font-semibold text-slate-500 uppercase tracking-wide mb-4">
Documentatie
@@ -90,11 +88,10 @@ export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) {
{/* Overview link */}
<Link
href="/documentatie"
className={`flex items-center justify-between px-3 py-2 rounded-lg text-sm font-medium transition-colors ${
pathname === '/documentatie' && !isReleaseDetail
className={`flex items-center justify-between px-3 py-2 rounded-lg text-sm font-medium transition-colors ${pathname === '/documentatie' && !isReleaseDetail
? 'bg-teal-50 text-teal-700'
: 'text-slate-700 hover:bg-slate-50'
}`}
}`}
>
<span>Overzicht</span>
</Link>
@@ -131,19 +128,17 @@ export function ReleaseSidebar({ releases, metadata }: ReleaseSidebarProps) {
<Link
key={release.slug}
href={`/documentatie/${release.slug}`}
className={`flex items-center justify-between px-3 py-2 rounded-lg text-sm font-medium transition-colors group ${
isActive
className={`flex items-center justify-between px-3 py-2 rounded-lg text-sm font-medium transition-colors group ${isActive
? 'bg-teal-50 text-teal-700'
: 'text-slate-700 hover:bg-slate-50'
}`}
}`}
>
<div className="flex items-center gap-2">
<div className="flex items-center gap-2 min-w-0">
<StatusDot status={release.frontmatter.status} />
<span className="truncate">{release.frontmatter.title}</span>
<span className="whitespace-normal">{release.frontmatter.title}</span>
</div>
<ChevronRight className={`w-4 h-4 flex-shrink-0 transition-opacity ${
isActive ? 'opacity-100' : 'opacity-0 group-hover:opacity-50'
}`} />
<ChevronRight className={`w-4 h-4 flex-shrink-0 transition-opacity ${isActive ? 'opacity-100' : 'opacity-0 group-hover:opacity-50'
}`} />
</Link>
)
})}

View File

@@ -5,7 +5,7 @@
*/
import type { ReactNode } from 'react'
import { getAllReleases, getCategoryMetadata } from '@/lib/mdx/releases'
import { getAllReleases, getCategoryMetadata } from '@/lib/mdx/documentatie'
import ReleaseSidebar from './components/release-sidebar-wrapper'
interface ReleasesLayoutProps {
@@ -18,13 +18,13 @@ export default async function ReleasesLayout({ children }: ReleasesLayoutProps)
return (
<div className="min-h-screen bg-slate-50">
<div className="max-w-[1400px] mx-auto">
<div className="max-w-[1600px] mx-auto">
<div className="flex">
{/* Sidebar - hidden on mobile, fixed on desktop */}
<ReleaseSidebar releases={releases} metadata={metadata} />
{/* Main Content */}
<div className="flex-1 lg:ml-64">
<div className="flex-1 lg:ml-80">
{children}
</div>
</div>

View File

@@ -5,7 +5,7 @@
*/
import Link from 'next/link'
import { getAllReleases } from '@/lib/mdx/releases'
import { getAllReleases } from '@/lib/mdx/documentatie'
export const metadata = {
title: 'Documentatie - AI Speedrun',

View File

@@ -0,0 +1,27 @@
/**
* Client Dashboard - Level 2 (Client Dossier)
*
* Overzicht van client voortgang, recente activiteit en belangrijke metrics.
*/
export default function ClientDashboardPage({ params }: { params: Promise<{ id: string }> }) {
return (
<div>
<h1 className="text-2xl font-bold text-slate-900 mb-6">
Dashboard
</h1>
<div className="bg-slate-100 border-2 border-dashed border-slate-300 rounded-lg p-12 text-center">
<p className="text-slate-600 text-lg mb-2">
Client Dashboard
</p>
<p className="text-slate-500 text-sm">
Overzicht, recente activiteit, snelle acties
</p>
<p className="text-xs text-slate-400 mt-4">
Placeholder - Not designed yet
</p>
</div>
</div>
);
}

View File

@@ -1,3 +1,5 @@
'use client'
export function ClientListSkeleton() {
return (
<div className="space-y-4">