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:
@@ -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 {
|
||||
|
||||
@@ -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[]
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
})}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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',
|
||||
|
||||
27
app/epd/clients/[id]/dashboard/page.tsx
Normal file
27
app/epd/clients/[id]/dashboard/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
'use client'
|
||||
|
||||
export function ClientListSkeleton() {
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
|
||||
Reference in New Issue
Block a user