"use client"; import { MarkdownRenderer } from "@/app/tutos/[slug]/markdown-renderer"; import type { Category, Tutorial } from "@/lib/tutorials"; import { AlignTextLeftOutlined, Books2Outlined, CheckCircle1Outlined, Code1Outlined, EyeOutlined, Folder1Outlined, KeyboardOutlined, Layers1Outlined, Pencil1Outlined, StopwatchOutlined, } from "@lineiconshq/free-icons"; import { Lineicons } from "@lineiconshq/react-lineicons"; import { useCallback, useEffect, useRef, useState } from "react"; type TutorialFormProps = { categories: Category[]; action: (formData: FormData) => Promise; submitLabel: string; initialData?: Partial; }; // Wrapper pour simplifier l'utilisation des icônes LineIcons function Icon({ icon, size = 16, className = "", }: { icon: React.ComponentType>; size?: number; className?: string; }) { return ; } // Composant pour les labels avec icône function FormLabel({ icon, children, required, }: { icon: React.ComponentType>; children: React.ReactNode; required?: boolean; }) { return ( ); } // Composant input stylisé function FormInput({ className = "", ...props }: React.InputHTMLAttributes) { return ( ); } // Composant select stylisé function FormSelect({ children, className = "", ...props }: React.SelectHTMLAttributes) { return ( ); } // Composant textarea stylisé function FormTextarea({ className = "", ...props }: React.TextareaHTMLAttributes) { return (