import { useState, useRef, useEffect } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { useNotification } from '../context/notification-context' import { motion, AnimatePresence } from 'framer-motion' import { FaBookReader, FaTimes, FaVideo, FaLink } from 'react-icons/fa' import VideoPlayer from '../components/VideoPlayer' interface Video { id: string title: string description: string thumbnail: string videoSrc: string vttSrc: string transcriptSrc?: string } interface Category { id: string title: string description: string videos: Video[] } const ITEMS_PER_PAGE = { mobile: 3, tablet: 4, desktop: 6 } const resourceCategories: Category[] = [ { id: 'governance', title: 'Professional Development & Governance', description: 'Essential training materials for effective organizational management and parliamentary procedures', videos: [ { id: 'secretary-role-responsibilities', title: 'Secretary Role & Responsibilities: Comprehensive Guide', description: 'Expert parliamentarian Mark Apodaca provides a detailed overview of a secretary\'s essential duties, including keeping meeting minutes, maintaining member records, and managing organizational documentation', thumbnail: '/images/thumbnails/secretary-role-responsibilities.png', videoSrc: '/videos/secretary-role-responsibilities.mp4', vttSrc: '/subtitles/secretary-role-responsibilities.vtt', transcriptSrc: '/transcriptions/secretary-role-responsibilities.txt' }, { id: 'minutes-approval-procedure', title: 'Meeting Minutes Approval: Expert Guidelines', description: 'Expert parliamentarian Mark Apodaca explains the proper procedures for reviewing and accepting meeting minutes in non-profit organizations', thumbnail: '/images/thumbnails/minutes-approval-procedure.png', videoSrc: '/videos/minutes-approval-procedure.mp4', vttSrc: '/subtitles/minutes-approval-procedure.vtt', transcriptSrc: '/transcriptions/minutes-approval-procedure.txt' }, { id: 'board-participation-guidelines', title: 'Board Meeting Participation: Guidelines & Procedures', description: 'Expert parliamentarian Mark Apodaca explains proper protocols for member participation in board meetings and channels for expressing concerns', thumbnail: '/images/thumbnails/board-participation-guidelines.png', videoSrc: '/videos/board-participation-guidelines.mp4', vttSrc: '/subtitles/board-participation-guidelines.vtt', transcriptSrc: '/transcriptions/board-participation-guidelines.txt' }, { id: 'board-member-reprimands', title: 'Board Member Reprimands: Due Process Guidelines', description: 'Expert parliamentarian Mark Apodaca explains proper procedures for handling board member reprimands and the importance of due process in organizational governance', thumbnail: '/images/thumbnails/board-member-reprimands.png', videoSrc: '/videos/board-member-reprimands.mp4', vttSrc: '/subtitles/board-member-reprimands.vtt', transcriptSrc: '/transcriptions/board-member-reprimands.txt' }, { id: 'meeting-minutes-access-rights', title: 'Meeting Minutes Access Rights: Member Guidelines', description: 'Expert parliamentarian Mark Apodaca explains members\' rights to access meeting minutes and proper procedures for requesting organizational records', thumbnail: '/images/thumbnails/meeting-minutes-access-rights.png', videoSrc: '/videos/meeting-minutes-access-rights.mp4', vttSrc: '/subtitles/meeting-minutes-access-rights.vtt', transcriptSrc: '/transcriptions/meeting-minutes-access-rights.txt' } ] } ] const Resources = () => { const { videoId } = useParams<{ videoId?: string }>() const navigate = useNavigate() const { showNotification } = useNotification() const [selectedVideo, setSelectedVideo] = useState