@appgram/react 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{useVote-CLhkwtLT.d.mts → StatusBoard-DhKRu-An.d.mts} +125 -1
  2. package/dist/{useVote-CLhkwtLT.d.ts → StatusBoard-DhKRu-An.d.ts} +125 -1
  3. package/dist/{chunk-N6PJDQCU.mjs → chunk-NABMGLTY.mjs} +210 -6
  4. package/dist/chunk-NABMGLTY.mjs.map +1 -0
  5. package/dist/chunk-NSV6Q6QQ.js +202 -0
  6. package/dist/chunk-NSV6Q6QQ.js.map +1 -0
  7. package/dist/chunk-ONZ7RQBM.mjs +199 -0
  8. package/dist/chunk-ONZ7RQBM.mjs.map +1 -0
  9. package/dist/{chunk-75P634IK.js → chunk-UPTP7QX5.js} +213 -5
  10. package/dist/chunk-UPTP7QX5.js.map +1 -0
  11. package/dist/{chunk-AIDLOCVJ.mjs → chunk-UWIJR4ZY.mjs} +760 -15
  12. package/dist/chunk-UWIJR4ZY.mjs.map +1 -0
  13. package/dist/{chunk-3UBJGXCO.js → chunk-WZIN7KEM.js} +820 -74
  14. package/dist/chunk-WZIN7KEM.js.map +1 -0
  15. package/dist/components/index.d.mts +68 -106
  16. package/dist/components/index.d.ts +68 -106
  17. package/dist/components/index.js +29 -21
  18. package/dist/components/index.mjs +2 -2
  19. package/dist/hooks/index.d.mts +3 -572
  20. package/dist/hooks/index.d.ts +3 -572
  21. package/dist/hooks/index.js +33 -13
  22. package/dist/hooks/index.mjs +2 -2
  23. package/dist/index-DpZz_TZE.d.ts +917 -0
  24. package/dist/index-X95JANOa.d.mts +917 -0
  25. package/dist/index.d.mts +32 -5
  26. package/dist/index.d.ts +32 -5
  27. package/dist/index.js +123 -76
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +60 -41
  30. package/dist/index.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/chunk-3UBJGXCO.js.map +0 -1
  33. package/dist/chunk-75P634IK.js.map +0 -1
  34. package/dist/chunk-AIDLOCVJ.mjs.map +0 -1
  35. package/dist/chunk-KPIKYXAN.mjs +0 -47
  36. package/dist/chunk-KPIKYXAN.mjs.map +0 -1
  37. package/dist/chunk-N6PJDQCU.mjs.map +0 -1
  38. package/dist/chunk-ZJZ3A2S3.js +0 -49
  39. package/dist/chunk-ZJZ3A2S3.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/VoteButton.tsx","../src/components/feedback/WishCard.tsx","../src/components/feedback/WishList.tsx","../src/components/feedback/WishDetail.tsx","../src/components/feedback/SubmitWishForm.tsx","../src/components/roadmap/RoadmapColumn.tsx","../src/components/roadmap/RoadmapBoard.tsx","../src/components/releases/ReleaseCard.tsx","../src/components/releases/ReleaseList.tsx","../src/components/shared/Markdown.tsx","../src/components/releases/ReleaseDetail.tsx","../src/components/releases/Releases.tsx","../src/components/releases/WhatsNewPopup.tsx","../src/components/help/HelpCollections.tsx","../src/components/help/HelpArticles.tsx","../src/components/help/HelpArticleDetail.tsx","../src/components/help/HelpCenter.tsx","../src/components/support/SupportForm.tsx","../src/components/status/StatusBoard.tsx","../src/components/status/StatusIncidentDetail.tsx"],"names":["useAppgramContext","useVote","jsxs","Fragment","jsx","cn","motion","ChevronUp","MessageSquare","useState","useWishes","useEffect","useCallback","useRef","Plus","Search","AnimatePresence","React","Sparkles","Clock","AlertCircle","CheckCircle2","useComments","formatDate","X","User","Loader2","Send","ChevronRight","useRoadmap","Zap","Bug","Wrench","ArrowRight","useReleases","Package","ReactMarkdown","remarkGfm","className","itemTypeConfig","useRelease","ArrowLeft","Tag","Calendar","ChevronLeft","Pause","Play","Gift","BookOpen","MessageCircle","Mail","Folder","useHelpCenter","HelpCircle","FileText","useHelpFlow","ARTICLE_TYPE_CONFIG","useHelpArticle","DOMPurify","statusConfig","useSupport","Upload","AlertTriangle","XCircle","formatDateTime","Activity","incidentStatusConfig","impactConfig"],"mappings":"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","file":"chunk-3UBJGXCO.js","sourcesContent":["/**\n * VoteButton Component\n *\n * A button for voting on wishes with animated feedback.\n */\n\nimport React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useVote, type UseVoteOptions } from '../../hooks/useVote'\nimport { useAppgramContext } from '../../provider/context'\n\nexport interface VoteButtonProps extends Omit<UseVoteOptions, 'onVoteChange'> {\n /**\n * Size variant\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg'\n\n /**\n * Show vote count\n * @default true\n */\n showCount?: boolean\n\n /**\n * Custom class name\n */\n className?: string\n\n /**\n * Callback when vote state changes\n */\n onVoteChange?: (hasVoted: boolean, voteCount: number) => void\n\n /**\n * Custom render function for the button content\n */\n renderContent?: (props: {\n hasVoted: boolean\n voteCount: number\n isLoading: boolean\n }) => React.ReactNode\n}\n\nconst sizeClasses = {\n sm: 'px-2 py-1 text-xs min-w-[50px]',\n md: 'px-3 py-2 text-sm min-w-[60px]',\n lg: 'px-4 py-3 text-base min-w-[70px]',\n}\n\nconst iconSizes = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n}\n\nexport function VoteButton({\n wishId,\n initialVoteCount,\n initialHasVoted,\n voterEmail,\n onVoteChange,\n size = 'md',\n showCount = true,\n className,\n renderContent,\n}: VoteButtonProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const { hasVoted, voteCount, isLoading, toggle } = useVote({\n wishId,\n initialVoteCount,\n initialHasVoted,\n voterEmail,\n onVoteChange,\n })\n\n // Use theme's currentColors which automatically resolves based on dark/light mode\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Default content\n const defaultContent = (\n <>\n <svg\n className={cn(\n iconSizes[size],\n 'transition-transform duration-200',\n hasVoted && 'animate-appgram-vote-pop'\n )}\n viewBox=\"0 0 24 24\"\n fill={hasVoted ? 'currentColor' : 'none'}\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 15l7-7 7 7\"\n />\n </svg>\n {showCount && <span className=\"font-medium\">{voteCount}</span>}\n </>\n )\n\n return (\n <button\n type=\"button\"\n onClick={toggle}\n disabled={isLoading}\n className={cn(\n 'inline-flex flex-col items-center justify-center gap-0.5 rounded-lg',\n 'border transition-all duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n sizeClasses[size],\n isLoading && 'opacity-50 cursor-not-allowed',\n className\n )}\n style={{\n backgroundColor: hasVoted ? 'var(--appgram-primary)' : (isDark ? 'var(--appgram-card)' : 'white'),\n borderColor: hasVoted ? 'var(--appgram-primary)' : (isDark ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.2)'),\n color: hasVoted ? 'white' : 'var(--appgram-foreground)',\n }}\n >\n {renderContent\n ? renderContent({ hasVoted, voteCount, isLoading })\n : defaultContent}\n </button>\n )\n}\n","/**\n * WishCard Component\n *\n * Modern glassmorphism card with animations and theming.\n * Adapted from FeedbackModern variant.\n */\n\nimport React from 'react'\nimport { motion } from 'framer-motion'\nimport { ChevronUp, MessageSquare } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport type { Wish, WishStatus } from '../../types'\n\n// Status labels - modern friendly names\nconst statusLabels: Record<WishStatus, string> = {\n pending: 'New',\n under_review: 'Reviewing',\n planned: 'Planned',\n in_progress: 'Building',\n completed: 'Shipped',\n declined: 'Closed',\n}\n\n// Get status colors based on theme\nfunction getStatusColors(status: WishStatus, primaryColor: string) {\n const statusStyles: Record<WishStatus, { color: string; bgColor: string }> = {\n pending: { color: primaryColor, bgColor: `${primaryColor}15` },\n under_review: { color: '#8b5cf6', bgColor: 'rgba(139, 92, 246, 0.1)' },\n planned: { color: '#06b6d4', bgColor: 'rgba(6, 182, 212, 0.1)' },\n in_progress: { color: primaryColor, bgColor: `${primaryColor}15` },\n completed: { color: '#10b981', bgColor: 'rgba(16, 185, 129, 0.1)' },\n declined: { color: '#6b7280', bgColor: 'rgba(107, 114, 128, 0.1)' },\n }\n return statusStyles[status] || statusStyles.pending\n}\n\nexport interface WishCardProps {\n /**\n * The wish data\n */\n wish: Wish\n\n /**\n * Click handler for the card\n */\n onClick?: () => void\n\n /**\n * Vote handler\n */\n onVote?: (wishId: string, hasVoted: boolean, voteCount: number) => void\n\n /**\n * Comment click handler\n */\n onCommentClick?: () => void\n\n /**\n * Override hasVoted state (for optimistic updates)\n */\n hasVoted?: boolean\n\n /**\n * Override vote count (for optimistic updates)\n */\n voteCount?: number\n\n /**\n * Loading state for vote\n */\n isVoting?: boolean\n\n /**\n * Custom class name\n */\n className?: string\n\n /**\n * Custom render function for the vote button\n */\n renderVoteButton?: (props: {\n wishId: string\n voteCount: number\n hasVoted: boolean\n isLoading: boolean\n onVote: () => void\n }) => React.ReactNode\n\n /**\n * Show status badge\n * @default true\n */\n showStatus?: boolean\n\n /**\n * Show category badge\n * @default true\n */\n showCategory?: boolean\n\n /**\n * Show comment count\n * @default true\n */\n showCommentCount?: boolean\n\n /**\n * Show author\n * @default true\n */\n showAuthor?: boolean\n\n /**\n * Animation delay index (for staggered animations)\n */\n animationIndex?: number\n}\n\nexport function WishCard({\n wish,\n onClick,\n onVote,\n onCommentClick,\n hasVoted,\n voteCount,\n isVoting = false,\n className,\n renderVoteButton,\n showStatus = true,\n showCategory = true,\n showCommentCount = true,\n showAuthor = true,\n animationIndex = 0,\n}: WishCardProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const displayVoteCount = voteCount ?? wish.vote_count\n const displayHasVoted = hasVoted ?? wish.has_voted ?? false\n const statusColors = getStatusColors(wish.status, primaryColor)\n const statusLabel = statusLabels[wish.status] || statusLabels.pending\n\n const handleVoteClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n onVote?.(wish.id, !displayHasVoted, displayHasVoted ? displayVoteCount - 1 : displayVoteCount + 1)\n }\n\n const handleCommentClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n onCommentClick?.()\n }\n\n return (\n <motion.div\n layout\n initial={{ opacity: 0, y: 30, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{\n delay: animationIndex * 0.04,\n duration: 0.4,\n ease: [0.25, 0.46, 0.45, 0.94],\n }}\n className={cn('cursor-pointer group', className)}\n onClick={onClick}\n >\n <div\n className=\"overflow-hidden transition-all duration-300 hover:shadow-2xl\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.5)',\n backdropFilter: 'blur(12px)',\n WebkitBackdropFilter: 'blur(12px)',\n borderRadius: `${borderRadius}px`,\n boxShadow: isDark ? '0 4px 24px -4px rgba(0,0,0,0.3)' : `0 4px 24px -4px ${primaryColor}10`,\n border: isDark ? '1px solid rgba(255,255,255,0.1)' : 'none',\n }}\n >\n <div className=\"flex items-stretch\">\n {/* Vote Section - Left side */}\n <motion.div\n className=\"flex flex-col items-center justify-center px-5 py-6 border-r\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.05)',\n minWidth: '80px',\n }}\n whileHover={{ scale: 1.02 }}\n >\n {renderVoteButton ? (\n renderVoteButton({\n wishId: wish.id,\n voteCount: displayVoteCount,\n hasVoted: displayHasVoted,\n isLoading: isVoting,\n onVote: () => onVote?.(wish.id, !displayHasVoted, displayHasVoted ? displayVoteCount - 1 : displayVoteCount + 1),\n })\n ) : (\n <button\n className=\"h-auto p-2 bg-transparent border-0 cursor-pointer\"\n onClick={handleVoteClick}\n disabled={isVoting}\n >\n <motion.div\n className=\"flex flex-col items-center gap-1\"\n whileHover={{ y: -2 }}\n whileTap={{ scale: 0.95 }}\n >\n <ChevronUp\n className=\"h-5 w-5 transition-colors\"\n style={{\n color: displayHasVoted ? primaryColor : (isDark ? 'rgba(255, 255, 255, 0.3)' : 'rgba(0, 0, 0, 0.3)'),\n }}\n />\n <span\n className=\"text-xl font-semibold\"\n style={{\n color: displayHasVoted ? primaryColor : 'var(--appgram-foreground)',\n }}\n >\n {displayVoteCount}\n </span>\n </motion.div>\n </button>\n )}\n </motion.div>\n\n {/* Content Section */}\n <div className=\"flex-1 p-5\">\n {/* Top row - Category and Status */}\n <div className=\"flex items-center gap-2 mb-3 flex-wrap\">\n {showCategory && wish.category && (\n <span\n className=\"text-xs font-medium px-2.5 py-1\"\n style={{\n backgroundColor: `${wish.category.color}15`,\n color: wish.category.color,\n borderRadius: `${Math.max(4, borderRadius - 8)}px`,\n }}\n >\n {wish.category.name}\n </span>\n )}\n {showStatus && (\n <span\n className=\"text-xs font-medium px-2.5 py-1\"\n style={{\n backgroundColor: statusColors.bgColor,\n color: statusColors.color,\n borderRadius: `${Math.max(4, borderRadius - 8)}px`,\n }}\n >\n {statusLabel}\n </span>\n )}\n </div>\n\n {/* Title */}\n <h3\n className=\"text-lg font-semibold mb-2 group-hover:translate-x-1 transition-transform\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {wish.title}\n </h3>\n\n {/* Description */}\n {wish.description && (\n <p\n className=\"text-sm leading-relaxed mb-4\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {wish.description}\n </p>\n )}\n\n {/* Footer - Author and comments */}\n <div className=\"flex items-center justify-between mt-auto pt-2\">\n {showAuthor && (\n <span\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n by {wish.author?.name || wish.author_name || 'Anonymous'}\n </span>\n )}\n\n {showCommentCount && (wish.comment_count ?? 0) > 0 && (\n <div\n className=\"flex items-center gap-1.5 cursor-pointer hover:opacity-80 transition-opacity\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n onClick={handleCommentClick}\n >\n <MessageSquare className=\"h-4 w-4\" />\n <span className=\"text-sm\">{wish.comment_count}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </motion.div>\n )\n}\n","/**\n * WishList Component\n *\n * Modern glassmorphism list with animations for displaying and voting on feature requests.\n * Adapted from FeedbackModern variant.\n *\n * @example\n * ```tsx\n * import { WishList } from '@appgram/react'\n *\n * <WishList\n * heading=\"Feature Requests\"\n * description=\"Vote for features you'd like to see\"\n * showSearch\n * variant=\"cards\"\n * onWishClick={(wish) => console.log('Clicked:', wish.title)}\n * onAddWish={() => setShowForm(true)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Compact variant for sidebar\n * <WishList\n * variant=\"compact\"\n * filters={{ status: 'pending' }}\n * showSearch\n * />\n * ```\n */\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Search, Sparkles, Plus } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useWishes } from '../../hooks/useWishes'\nimport { WishCard } from './WishCard'\nimport type { Wish, WishFilters } from '../../types'\n\nexport interface WishListProps {\n /**\n * Layout variant\n * @default 'cards'\n */\n variant?: 'cards' | 'compact' | 'masonry'\n\n /**\n * Initial filters\n */\n filters?: WishFilters\n\n /**\n * Auto-refresh interval in milliseconds\n * @default 0\n */\n refreshInterval?: number\n\n /**\n * Click handler for a wish\n */\n onWishClick?: (wish: Wish) => void\n\n /**\n * Handler for adding a new wish\n */\n onAddWish?: () => void\n\n /**\n * Custom render function for individual wish cards\n */\n renderWish?: (wish: Wish, index: number) => React.ReactNode\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Show search input\n * @default false\n */\n showSearch?: boolean\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nexport function WishList({\n variant = 'cards',\n filters: initialFilters,\n refreshInterval = 0,\n onWishClick,\n onAddWish,\n renderWish,\n renderLoading,\n renderEmpty,\n renderError,\n heading,\n description,\n headingAlignment = 'left',\n showSearch = false,\n className,\n}: WishListProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const [searchQuery, setSearchQuery] = useState('')\n const [hasInitiallyLoaded, setHasInitiallyLoaded] = useState(false)\n\n // Track locally voted wishes for optimistic updates\n const [localVotes, setLocalVotes] = useState<Record<string, { hasVoted: boolean; voteCount: number }>>({})\n\n const { wishes, isLoading, error, page, totalPages, setPage, setFilters, refetch } =\n useWishes({\n filters: initialFilters,\n refreshInterval,\n })\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Initialize local state from props and track initial load\n useEffect(() => {\n if (!isLoading && wishes.length > 0) {\n setHasInitiallyLoaded(true)\n }\n const newLocalVotes: Record<string, { hasVoted: boolean; voteCount: number }> = {}\n wishes.forEach((wish) => {\n newLocalVotes[wish.id] = {\n hasVoted: wish.has_voted || false,\n voteCount: wish.vote_count || 0,\n }\n })\n setLocalVotes(newLocalVotes)\n }, [wishes, isLoading])\n\n // Get vote state (local or from props)\n const getVoteState = useCallback(\n (wish: Wish) => {\n if (localVotes[wish.id]) {\n return localVotes[wish.id]\n }\n return { hasVoted: wish.has_voted || false, voteCount: wish.vote_count || 0 }\n },\n [localVotes]\n )\n\n // Handle vote with optimistic update\n const handleVote = useCallback((wishId: string) => {\n setLocalVotes((prev) => {\n const current = prev[wishId] || { hasVoted: false, voteCount: 0 }\n return {\n ...prev,\n [wishId]: {\n hasVoted: !current.hasVoted,\n voteCount: current.hasVoted ? current.voteCount - 1 : current.voteCount + 1,\n },\n }\n })\n }, [])\n\n // Debounce ref for search\n const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Handle search with debounce\n const handleSearch = useCallback((query: string) => {\n setSearchQuery(query)\n\n // Clear previous debounce\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n\n // Debounce the API call\n searchDebounceRef.current = setTimeout(() => {\n setFilters({\n ...initialFilters,\n search: query || undefined,\n })\n }, 300)\n }, [initialFilters, setFilters])\n\n // Cleanup debounce on unmount\n useEffect(() => {\n return () => {\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n }\n }, [])\n\n // Loading state - only show full loading spinner on initial load\n const showFullLoading = isLoading && !hasInitiallyLoaded\n if (showFullLoading) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n return (\n <div className={cn('space-y-6', className)}>\n {/* Page Header - Modern gradient text effect */}\n {heading && (\n <motion.div\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.6, ease: 'easeOut' }}\n className=\"mb-10\"\n style={{ textAlign: headingAlignment }}\n >\n <motion.h1\n className=\"text-4xl md:text-5xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {heading}\n </motion.h1>\n {description && (\n <p\n className=\"text-lg md:text-xl leading-relaxed\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)',\n maxWidth: headingAlignment === 'center' ? '48rem' : '100%',\n marginLeft: headingAlignment === 'center' ? 'auto' : headingAlignment === 'right' ? 'auto' : '0',\n marginRight: headingAlignment === 'center' ? 'auto' : headingAlignment === 'left' ? 'auto' : '0',\n }}\n >\n {description}\n </p>\n )}\n </motion.div>\n )}\n\n {/* Add Wish Button */}\n {onAddWish && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: 0.2 }}\n className=\"flex justify-center mb-10\"\n >\n <button\n onClick={onAddWish}\n className=\"flex items-center gap-2 px-6 py-3 text-white font-medium shadow-lg hover:shadow-2xl hover:scale-105 transition-all duration-300\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <Plus className=\"w-4 h-4\" />\n Submit Idea\n </button>\n </motion.div>\n )}\n\n {showSearch && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: 0.1 }}\n className=\"relative flex-1 min-w-[200px] mb-6\"\n >\n <input\n type=\"text\"\n placeholder=\"Search ideas...\"\n value={searchQuery}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full pl-10 pr-4 py-3 backdrop-blur-sm focus:outline-none focus:ring-2 transition-all\"\n style={{\n borderRadius: `${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.5)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n border: `1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n color: 'var(--appgram-foreground)',\n }}\n />\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }} />\n </motion.div>\n )}\n\n {/* Wish List */}\n {wishes.length > 0 ? (\n <div\n className={cn(\n variant === 'cards' && 'grid gap-4',\n variant === 'compact' && 'space-y-2',\n variant === 'masonry' && 'columns-1 md:columns-2 lg:columns-3 gap-4'\n )}\n >\n <AnimatePresence mode=\"popLayout\">\n {wishes.map((wish, index) => {\n const voteState = getVoteState(wish)\n\n return renderWish ? (\n <React.Fragment key={wish.id}>{renderWish(wish, index)}</React.Fragment>\n ) : (\n <div\n key={wish.id}\n className={variant === 'masonry' ? 'break-inside-avoid mb-4' : undefined}\n >\n <WishCard\n wish={wish}\n onClick={onWishClick ? () => onWishClick(wish) : undefined}\n onVote={() => handleVote(wish.id)}\n hasVoted={voteState.hasVoted}\n voteCount={voteState.voteCount}\n animationIndex={index}\n />\n </div>\n )\n })}\n </AnimatePresence>\n </div>\n ) : (\n /* Empty State - Modern illustration */\n renderEmpty ? (\n <>{renderEmpty()}</>\n ) : (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"text-center py-20\"\n >\n <motion.div\n animate={{\n y: [0, -8, 0],\n rotate: [0, 5, -5, 0],\n }}\n transition={{\n duration: 4,\n repeat: Infinity,\n ease: 'easeInOut',\n }}\n className=\"inline-flex items-center justify-center w-20 h-20 rounded-full mb-6\"\n style={{\n backgroundColor: `${primaryColor}10`,\n }}\n >\n <Sparkles className=\"h-10 w-10\" style={{ color: primaryColor }} />\n </motion.div>\n\n <h3 className=\"text-xl font-semibold mb-2\" style={{ color: 'var(--appgram-foreground)' }}>Share your ideas</h3>\n <p className=\"max-w-sm mx-auto\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n Be the first to submit a feature request and help shape the future!\n </p>\n\n {onAddWish && (\n <button\n onClick={onAddWish}\n className=\"mt-6 flex items-center gap-2 px-6 py-3 text-white font-medium shadow-lg hover:shadow-2xl hover:scale-105 transition-all duration-300 mx-auto\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <Plus className=\"w-4 h-4\" />\n Submit First Idea\n </button>\n )}\n </motion.div>\n )\n )}\n\n {/* Pagination */}\n {totalPages > 1 && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"flex justify-center items-center gap-4 mt-8\"\n >\n <button\n onClick={() => setPage(page - 1)}\n disabled={page <= 1}\n className=\"px-4 py-2 backdrop-blur-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed transition-all\"\n style={{\n borderRadius: `${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.5)',\n border: `1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n color: 'var(--appgram-foreground)',\n }}\n >\n Previous\n </button>\n <span className=\"text-sm\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}>\n Page {page} of {totalPages}\n </span>\n <button\n onClick={() => setPage(page + 1)}\n disabled={page >= totalPages}\n className=\"px-4 py-2 backdrop-blur-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed transition-all\"\n style={{\n borderRadius: `${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.5)',\n border: `1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n color: 'var(--appgram-foreground)',\n }}\n >\n Next\n </button>\n </motion.div>\n )}\n </div>\n )\n}\n","/**\n * WishDetail Component\n *\n * Sheet/modal for displaying wish details with voting and comments.\n * Adapted from PublicWishDetail.\n */\n\nimport React, { useState, useEffect } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n ChevronUp,\n MessageSquare,\n Send,\n Clock,\n CheckCircle2,\n AlertCircle,\n User,\n X,\n Loader2,\n} from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useVote } from '../../hooks/useVote'\nimport { useComments } from '../../hooks/useComments'\nimport type { Wish, Comment } from '../../types'\n\nexport interface WishDetailProps {\n /**\n * The wish to display\n */\n wish: Wish | null\n\n /**\n * Whether the detail view is open\n */\n open: boolean\n\n /**\n * Callback when open state changes\n */\n onOpenChange: (open: boolean) => void\n\n /**\n * Callback when vote is toggled\n */\n onVote?: (wishId: string) => void\n\n /**\n * Callback when a comment is added\n */\n onCommentAdded?: (comment: Comment) => void\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nconst statusConfig: Record<\n string,\n { label: string; color: string; icon: typeof CheckCircle2 }\n> = {\n pending: { label: 'New', color: '#6366f1', icon: Clock },\n under_review: { label: 'Reviewing', color: '#8b5cf6', icon: AlertCircle },\n planned: { label: 'Planned', color: '#10b981', icon: Clock },\n in_progress: { label: 'Building', color: '#f59e0b', icon: AlertCircle },\n completed: { label: 'Shipped', color: '#10b981', icon: CheckCircle2 },\n declined: { label: 'Closed', color: '#6b7280', icon: AlertCircle },\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2)\n}\n\nexport function WishDetail({\n wish,\n open,\n onOpenChange,\n onVote,\n onCommentAdded,\n className,\n}: WishDetailProps): React.ReactElement | null {\n const { theme } = useAppgramContext()\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const [newComment, setNewComment] = useState('')\n const [authorName, setAuthorName] = useState('')\n\n // Reset form when wish changes\n useEffect(() => {\n if (wish) {\n setNewComment('')\n setAuthorName('')\n }\n }, [wish?.id])\n\n const {\n hasVoted,\n voteCount,\n toggle: toggleVote,\n isLoading: isVoteLoading,\n } = useVote({\n wishId: wish?.id || '',\n initialVoteCount: wish?.vote_count,\n initialHasVoted: wish?.has_voted,\n })\n\n const {\n comments,\n isLoading: isLoadingComments,\n createComment,\n isCreating: isAddingComment,\n } = useComments({\n wishId: wish?.id || '',\n })\n\n if (!wish) return null\n\n const status = statusConfig[wish.status] || statusConfig.pending\n const StatusIcon = status.icon\n\n const handleVote = () => {\n toggleVote()\n onVote?.(wish.id)\n }\n\n const handleSubmitComment = async (e: React.FormEvent) => {\n e.preventDefault()\n if (!newComment.trim()) return\n\n const result = await createComment({\n content: newComment,\n author_name: authorName.trim() || undefined,\n })\n\n if (result) {\n setNewComment('')\n setAuthorName('')\n onCommentAdded?.(result)\n }\n }\n\n const formatDate = (date: string) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n }\n\n return (\n <AnimatePresence>\n {open && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-black/50 z-50\"\n onClick={() => onOpenChange(false)}\n />\n\n {/* Sheet */}\n <motion.div\n initial={{ x: '100%' }}\n animate={{ x: 0 }}\n exit={{ x: '100%' }}\n transition={{ type: 'spring', damping: 30, stiffness: 300 }}\n className={cn(\n 'fixed right-0 top-0 bottom-0 w-full sm:w-[500px] md:w-[600px] z-50 shadow-2xl flex flex-col overflow-hidden',\n className\n )}\n style={{\n borderRadius: `${borderRadius}px 0 0 ${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-background)' : 'white',\n }}\n >\n {/* Close Button */}\n <button\n onClick={() => onOpenChange(false)}\n className=\"absolute top-4 right-4 p-2 rounded-full transition-colors z-10\"\n style={{ backgroundColor: isDark ? 'rgba(255,255,255,0.05)' : 'transparent' }}\n >\n <X className=\"w-5 h-5\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }} />\n </button>\n\n {/* Header */}\n <div className=\"p-6 pb-4 flex-shrink-0\">\n <div className=\"flex gap-4\">\n {/* Vote Button */}\n <motion.button\n onClick={handleVote}\n disabled={isVoteLoading}\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n className={cn(\n 'flex flex-col items-center justify-center gap-1 px-4 py-3 rounded-xl border-2 transition-all min-w-[70px] shrink-0',\n isVoteLoading && 'opacity-50'\n )}\n style={{\n backgroundColor: hasVoted ? `${primaryColor}15` : 'transparent',\n borderColor: hasVoted ? primaryColor : (isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'),\n color: hasVoted ? primaryColor : 'var(--appgram-foreground)',\n }}\n >\n <ChevronUp\n className={cn('w-6 h-6 transition-all', hasVoted && 'fill-current')}\n strokeWidth={2}\n />\n <span className=\"text-sm font-bold\">{voteCount}</span>\n </motion.button>\n\n {/* Title & Status */}\n <div className=\"flex-1 min-w-0\">\n <h2\n className=\"text-xl font-bold mb-2\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {wish.title}\n </h2>\n <div className=\"flex flex-wrap items-center gap-2\">\n <span\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium\"\n style={{\n backgroundColor: `${status.color}15`,\n color: status.color,\n }}\n >\n <StatusIcon className=\"w-3.5 h-3.5\" />\n {status.label}\n </span>\n {wish.category && (\n <span\n className=\"px-2.5 py-1 rounded-full text-xs font-medium\"\n style={{\n backgroundColor: `${wish.category.color}15`,\n color: wish.category.color,\n }}\n >\n {wish.category.name}\n </span>\n )}\n </div>\n </div>\n </div>\n\n {/* Separator */}\n <div\n className=\"h-px my-4\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)' }}\n />\n\n {/* Description */}\n <p\n className=\"text-sm leading-relaxed whitespace-pre-line\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)' }}\n >\n {wish.description}\n </p>\n\n {/* Author & Date */}\n <div\n className=\"flex items-center gap-4 mt-4 text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <div className=\"flex items-center gap-1.5\">\n <User className=\"w-3.5 h-3.5\" />\n <span>\n {wish.author?.name || wish.author_email || 'Anonymous'}\n </span>\n </div>\n <span>•</span>\n <span>{formatDate(wish.created_at)}</span>\n </div>\n </div>\n\n {/* Separator */}\n <div\n className=\"h-px flex-shrink-0\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)' }}\n />\n\n {/* Comments Section */}\n <div className=\"flex-1 flex flex-col min-h-0 overflow-hidden\">\n {/* Comments Header */}\n <div\n className=\"px-6 py-3 flex items-center gap-2 flex-shrink-0\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n <MessageSquare className=\"w-4 h-4\" />\n <span className=\"font-semibold text-sm\">\n Comments ({comments.length})\n </span>\n </div>\n\n {/* Comments List */}\n <div className=\"flex-1 min-h-0 overflow-y-auto\">\n <div className=\"px-6 space-y-4 pb-4\">\n {isLoadingComments ? (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2\n className=\"w-5 h-5 animate-spin mr-2\"\n style={{ color: primaryColor }}\n />\n <span style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n Loading comments...\n </span>\n </div>\n ) : comments.length === 0 ? (\n <p\n className=\"text-center py-8 text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n No comments yet. Be the first to share your thoughts!\n </p>\n ) : (\n <AnimatePresence>\n {comments.map((comment, index) => (\n <motion.div\n key={comment.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: index * 0.05 }}\n className=\"flex gap-3\"\n >\n <div\n className=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-medium shrink-0\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n }}\n >\n {getInitials(\n comment.author_name || 'AN'\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span\n className=\"font-medium text-sm\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {comment.author_name || 'Anonymous'}\n </span>\n {comment.is_official && (\n <span\n className=\"text-xs px-1.5 py-0 rounded text-white\"\n style={{ backgroundColor: primaryColor }}\n >\n Official\n </span>\n )}\n <span\n className=\"text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n >\n {formatDate(comment.created_at)}\n </span>\n </div>\n <p\n className={cn(\n 'text-sm leading-relaxed',\n comment.is_official && 'p-3 rounded-lg'\n )}\n style={\n comment.is_official\n ? {\n backgroundColor: `${primaryColor}10`,\n borderLeft: `3px solid ${primaryColor}`,\n color: 'var(--appgram-foreground)',\n }\n : { color: isDark ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)' }\n }\n >\n {comment.content}\n </p>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n )}\n </div>\n </div>\n\n {/* Add Comment Form */}\n <div\n className=\"border-t flex-shrink-0 p-4\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n backgroundColor: isDark ? 'var(--appgram-background)' : 'white',\n }}\n >\n <form onSubmit={handleSubmitComment} className=\"space-y-3\">\n <input\n type=\"text\"\n placeholder=\"Your name (optional)\"\n value={authorName}\n onChange={(e) => setAuthorName(e.target.value)}\n maxLength={100}\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n color: 'var(--appgram-foreground)',\n }}\n />\n <div className=\"flex gap-2\">\n <textarea\n placeholder=\"Write a comment...\"\n value={newComment}\n onChange={(e) => setNewComment(e.target.value)}\n maxLength={1000}\n className=\"flex-1 min-h-[60px] px-4 py-3 text-sm border focus:outline-none focus:ring-2 resize-none transition-all\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n color: 'var(--appgram-foreground)',\n }}\n />\n <button\n type=\"submit\"\n disabled={!newComment.trim() || isAddingComment}\n className=\"h-[60px] w-[60px] shrink-0 flex items-center justify-center text-white disabled:opacity-50 transition-all\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n {isAddingComment ? (\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n ) : (\n <Send className=\"w-4 h-4\" />\n )}\n </button>\n </div>\n </form>\n </div>\n </div>\n </motion.div>\n </>\n )}\n </AnimatePresence>\n )\n}\n","/**\n * SubmitWishForm Component\n *\n * Sheet/modal for submitting new feature requests.\n * Adapted from FeatureRequestForm.\n */\n\nimport React, { useState, useEffect } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Sparkles, Send, Loader2, X } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport type { Wish } from '../../types'\n\nexport interface SubmitWishFormProps {\n /**\n * Whether the form is open\n */\n open: boolean\n\n /**\n * Callback when open state changes\n */\n onOpenChange: (open: boolean) => void\n\n /**\n * Callback when wish is successfully submitted\n */\n onSuccess?: (wish: Wish) => void\n\n /**\n * Callback when submission fails\n */\n onError?: (error: string) => void\n\n /**\n * Form title\n * @default 'Submit a Feature Request'\n */\n title?: string\n\n /**\n * Form description\n */\n description?: string\n\n /**\n * Submit button text\n * @default 'Submit Feature Request'\n */\n submitButtonText?: string\n\n /**\n * Custom class name\n */\n className?: string\n}\n\ninterface FormData {\n title: string\n description: string\n email: string\n}\n\nexport function SubmitWishForm({\n open,\n onOpenChange,\n onSuccess,\n onError,\n title = 'Submit a Feature Request',\n description = \"Share your idea with us! We review all submissions and prioritize based on community feedback.\",\n submitButtonText = 'Submit Feature Request',\n className,\n}: SubmitWishFormProps): React.ReactElement {\n const { theme, client } = useAppgramContext()\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const secondaryColor = theme.colors?.secondary || '#38BDF8'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const [formData, setFormData] = useState<FormData>({\n title: '',\n description: '',\n email: '',\n })\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n // Reset form when modal opens\n useEffect(() => {\n if (open) {\n setFormData({ title: '', description: '', email: '' })\n setError(null)\n }\n }, [open])\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n if (!formData.title.trim() || !formData.description.trim()) return\n\n setIsSubmitting(true)\n setError(null)\n\n try {\n // Extract author name from email or use default\n let authorName = 'Anonymous User'\n if (formData.email) {\n const emailParts = formData.email.split('@')[0]\n authorName =\n emailParts\n .split(/[._-]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ') || 'Anonymous User'\n }\n\n const response = await client.createWish({\n title: formData.title.trim(),\n description: formData.description.trim(),\n author_email: formData.email?.trim() || undefined,\n author_name: authorName,\n })\n\n if (response.success && response.data) {\n onOpenChange(false)\n onSuccess?.(response.data)\n } else {\n const errorMessage =\n response.error?.message || 'Failed to submit feature request'\n setError(errorMessage)\n onError?.(errorMessage)\n }\n } catch (err: any) {\n const errorMessage = err?.message || 'An unexpected error occurred'\n setError(errorMessage)\n onError?.(errorMessage)\n } finally {\n setIsSubmitting(false)\n }\n }\n\n return (\n <AnimatePresence>\n {open && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-black/50 z-50\"\n onClick={() => onOpenChange(false)}\n />\n\n {/* Sheet */}\n <motion.div\n initial={{ x: '100%' }}\n animate={{ x: 0 }}\n exit={{ x: '100%' }}\n transition={{ type: 'spring', damping: 30, stiffness: 300 }}\n className={cn(\n 'fixed right-0 top-0 bottom-0 w-full sm:w-[480px] md:w-[540px] z-50 shadow-2xl flex flex-col overflow-hidden',\n className\n )}\n style={{\n borderRadius: `${borderRadius}px 0 0 ${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-background)' : 'white',\n }}\n >\n {/* Gradient Header */}\n <div\n className=\"h-1.5 flex-shrink-0\"\n style={{\n background: `linear-gradient(90deg, ${primaryColor}, ${secondaryColor})`,\n }}\n />\n\n {/* Close Button */}\n <button\n onClick={() => onOpenChange(false)}\n className=\"absolute top-4 right-4 p-2 rounded-full transition-colors z-10\"\n style={{ backgroundColor: isDark ? 'rgba(255,255,255,0.05)' : 'transparent' }}\n >\n <X className=\"w-5 h-5\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }} />\n </button>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto\">\n {/* Header */}\n <div className=\"px-8 pt-8 pb-6\">\n <h2\n className=\"text-2xl font-bold leading-tight mb-2\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {title}\n </h2>\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {description}\n </p>\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"px-8 pb-8 space-y-6\">\n {/* Title Field */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <label\n className=\"text-sm font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Feature Title\n </label>\n <span\n className=\"text-xs font-medium\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n >\n Required\n </span>\n </div>\n <input\n type=\"text\"\n placeholder=\"e.g., Add dark mode support\"\n value={formData.title}\n onChange={(e) =>\n setFormData({ ...formData, title: e.target.value })\n }\n required\n maxLength={150}\n className=\"w-full h-11 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.15)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n color: 'var(--appgram-foreground)',\n }}\n />\n <p\n className=\"text-xs mt-1\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Keep it concise and descriptive\n </p>\n </motion.div>\n\n {/* Description Field */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.15 }}\n className=\"space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <label\n className=\"text-sm font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Description\n </label>\n <span\n className=\"text-xs font-medium\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n >\n Required\n </span>\n </div>\n <textarea\n placeholder=\"Describe your idea in detail. What problem does it solve? How would it work?\"\n value={formData.description}\n onChange={(e) =>\n setFormData({ ...formData, description: e.target.value })\n }\n required\n maxLength={500}\n rows={5}\n className=\"w-full px-4 py-3 text-sm border focus:outline-none focus:ring-2 resize-none transition-all\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.15)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n lineHeight: '1.6',\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n color: 'var(--appgram-foreground)',\n }}\n />\n <div className=\"flex items-center justify-between\">\n <p\n className=\"text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Provide as much detail as possible\n </p>\n <p\n className=\"text-xs font-medium\"\n style={{\n color:\n formData.description.length > 450\n ? primaryColor\n : (isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'),\n }}\n >\n {formData.description.length}/500\n </p>\n </div>\n </motion.div>\n\n {/* Email Field */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 }}\n className=\"space-y-2\"\n >\n <div className=\"flex items-center justify-between\">\n <label\n className=\"text-sm font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Email Address\n </label>\n <span\n className=\"text-xs font-medium\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n >\n Optional\n </span>\n </div>\n <input\n type=\"email\"\n placeholder=\"your.email@example.com\"\n value={formData.email}\n onChange={(e) =>\n setFormData({ ...formData, email: e.target.value })\n }\n className=\"w-full h-11 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.15)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n color: 'var(--appgram-foreground)',\n }}\n />\n <div className=\"flex items-start gap-2 mt-1\">\n <div\n className=\"w-4 h-4 rounded-full flex items-center justify-center mt-0.5 shrink-0\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <Sparkles\n className=\"w-2.5 h-2.5\"\n style={{ color: primaryColor }}\n />\n </div>\n <p\n className=\"text-xs leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n We'll notify you when there are updates on your submission.\n </p>\n </div>\n </motion.div>\n\n {/* Separator */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.25 }}\n >\n <div\n className=\"h-px\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)' }}\n />\n </motion.div>\n\n {/* Error Message */}\n {error && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"p-3 rounded-lg\"\n style={{\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n }}\n >\n <p className=\"text-sm font-medium\" style={{ color: '#dc2626' }}>\n {error}\n </p>\n </motion.div>\n )}\n\n {/* Submit Button */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.3 }}\n >\n <button\n type=\"submit\"\n disabled={\n !formData.title.trim() ||\n !formData.description.trim() ||\n isSubmitting\n }\n className=\"w-full flex items-center justify-center gap-2.5 h-12 text-base font-semibold text-white transition-all hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${borderRadius}px`,\n }}\n >\n {isSubmitting ? (\n <>\n <Loader2 className=\"w-5 h-5 animate-spin\" />\n <span>Submitting...</span>\n </>\n ) : (\n <>\n <Send className=\"w-5 h-5\" />\n <span>{submitButtonText}</span>\n </>\n )}\n </button>\n </motion.div>\n\n {/* Trust Badge */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.35 }}\n className=\"flex items-center justify-center gap-2\"\n >\n <div\n className=\"w-1 h-1 rounded-full\"\n style={{ backgroundColor: primaryColor }}\n />\n <p className=\"text-xs\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n Your feedback is valuable and helps shape our product\n </p>\n </motion.div>\n </form>\n </div>\n </motion.div>\n </>\n )}\n </AnimatePresence>\n )\n}\n","/**\n * RoadmapColumn Component\n *\n * A single column in the roadmap board.\n */\n\nimport React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport type { RoadmapColumn as RoadmapColumnType, RoadmapItem } from '../../types'\n\nexport interface RoadmapColumnProps {\n /**\n * The column data\n */\n column: RoadmapColumnType\n\n /**\n * Click handler for items\n */\n onItemClick?: (item: RoadmapItem) => void\n\n /**\n * Show vote counts on items\n * @default true\n */\n showVoteCounts?: boolean\n\n /**\n * Custom render function for items\n */\n renderItem?: (item: RoadmapItem) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nexport function RoadmapColumn({\n column,\n onItemClick,\n showVoteCounts = true,\n renderItem,\n className,\n}: RoadmapColumnProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const borderRadius = theme.borderRadius || 8\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const items = column.items || []\n\n return (\n <div className={cn('flex flex-col min-w-[280px] max-w-[320px]', className)}>\n {/* Column Header */}\n <div\n className=\"flex items-center gap-2 px-3 py-2 mb-3 rounded-lg\"\n style={{ backgroundColor: `${column.color}20` }}\n >\n <div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: column.color }}\n />\n <h3 className=\"font-semibold\" style={{ color: 'var(--appgram-foreground)' }}>{column.name}</h3>\n <span className=\"text-sm ml-auto\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>{items.length}</span>\n </div>\n\n {/* Items */}\n <div className=\"flex-1 space-y-3 min-h-[200px]\">\n {items.map((item) =>\n renderItem ? (\n <React.Fragment key={item.id}>{renderItem(item)}</React.Fragment>\n ) : (\n <div\n key={item.id}\n onClick={onItemClick ? () => onItemClick(item) : undefined}\n className={cn(\n 'p-3 shadow-sm',\n 'hover:shadow-md transition-shadow duration-200',\n onItemClick && 'cursor-pointer'\n )}\n style={{\n borderRadius: `${borderRadius}px`,\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n border: `1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n }}\n role={onItemClick ? 'button' : undefined}\n tabIndex={onItemClick ? 0 : undefined}\n >\n <h4 className=\"font-medium mb-1 line-clamp-2\" style={{ color: 'var(--appgram-foreground)' }}>\n {item.title || item.wish?.title || 'Untitled'}\n </h4>\n {(item.description || item.wish?.description) && (\n <p className=\"text-sm line-clamp-2 mb-2\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}>\n {item.description || item.wish?.description}\n </p>\n )}\n <div className=\"flex items-center gap-2 text-xs\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n {showVoteCounts && item.wish && (\n <span className=\"flex items-center gap-1\">\n <svg\n className=\"w-3 h-3\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 15l7-7 7 7\"\n />\n </svg>\n {item.wish.vote_count}\n </span>\n )}\n {item.target_date && (\n <span className=\"ml-auto\">\n {new Date(item.target_date).toLocaleDateString()}\n </span>\n )}\n </div>\n </div>\n )\n )}\n\n {items.length === 0 && (\n <div className=\"text-center text-sm py-8\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}>\n No items\n </div>\n )}\n </div>\n </div>\n )\n}\n","/**\n * RoadmapBoard Component\n *\n * Modern glassmorphism kanban board with animations for displaying product roadmap.\n * Adapted from RoadmapModern variant.\n *\n * @example\n * ```tsx\n * import { RoadmapBoard } from '@appgram/react'\n *\n * <RoadmapBoard\n * heading=\"Product Roadmap\"\n * description=\"See what's coming next\"\n * variant=\"kanban\"\n * showVoteCounts\n * onItemClick={(item) => openWishDetail(item.id)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Timeline view for chronological display\n * <RoadmapBoard\n * variant=\"timeline\"\n * heading=\"Coming Soon\"\n * developersNote=\"Subject to change\"\n * />\n * ```\n */\n\nimport React, { useState, useCallback } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { ChevronUp, ChevronRight, MessageSquare, Clock } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useRoadmap } from '../../hooks/useRoadmap'\nimport { WishDetail } from '../feedback/WishDetail'\nimport type { RoadmapItem, RoadmapColumn as RoadmapColumnType, Wish } from '../../types'\n\nexport interface RoadmapBoardProps {\n /**\n * Layout variant\n * @default 'kanban'\n */\n variant?: 'kanban' | 'list' | 'timeline'\n\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Developer's note\n */\n developersNote?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Click handler for items\n */\n onItemClick?: (item: RoadmapItem) => void\n\n /**\n * Show vote counts on items\n * @default true\n */\n showVoteCounts?: boolean\n\n /**\n * Show comment counts\n * @default true\n */\n showComments?: boolean\n\n /**\n * Custom render function for columns\n */\n renderColumn?: (column: RoadmapColumnType) => React.ReactNode\n\n /**\n * Custom render function for items\n */\n renderItem?: (item: RoadmapItem) => React.ReactNode\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Auto-refresh interval in milliseconds\n * @default 0\n */\n refreshInterval?: number\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Modern card component for roadmap items\nfunction ModernCard({\n item,\n primaryColor,\n borderRadius,\n showVoteCounts,\n showComments,\n onClick,\n isDark,\n}: {\n item: RoadmapItem\n primaryColor: string\n borderRadius: number\n showVoteCounts: boolean\n showComments: boolean\n onClick?: () => void\n isDark: boolean\n}) {\n const wish = item.wish\n\n return (\n <motion.div\n layout\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n whileHover={{ x: 4 }}\n className=\"cursor-pointer group\"\n onClick={onClick}\n >\n <div\n className=\"p-4 backdrop-blur-sm border transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.5)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n <div className=\"flex items-start gap-3\">\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {/* Category Badge */}\n {wish?.category && (\n <span\n className=\"inline-block mb-2 text-[10px] font-medium uppercase px-1.5 py-0.5 rounded\"\n style={{\n backgroundColor: `${wish.category.color}12`,\n color: wish.category.color,\n }}\n >\n {wish.category.name}\n </span>\n )}\n\n {/* Title */}\n <h4\n className=\"font-medium text-sm mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {item.title || wish?.title || 'Untitled'}\n </h4>\n\n {/* Description */}\n {(item.description || wish?.description) && (\n <p\n className=\"text-sm line-clamp-2 mb-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {item.description || wish?.description}\n </p>\n )}\n\n {/* Stats row */}\n {wish && (showVoteCounts || showComments) && (\n <div className=\"flex items-center gap-3 text-xs\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n {showVoteCounts && (\n <div className=\"flex items-center gap-1\" style={{ color: primaryColor }}>\n <ChevronUp className=\"w-3.5 h-3.5\" />\n <span className=\"font-medium\">{wish.vote_count || 0}</span>\n </div>\n )}\n {showComments && (wish.comment_count ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <MessageSquare className=\"w-3 h-3\" />\n <span>{wish.comment_count}</span>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Right: Chevron */}\n <ChevronRight\n className=\"w-4 h-4 mt-1 opacity-40 group-hover:opacity-100 shrink-0 transition-opacity\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </div>\n </div>\n </motion.div>\n )\n}\n\n// Modern column component\nfunction ModernColumn({\n column,\n primaryColor,\n borderRadius,\n showVoteCounts,\n showComments,\n onItemClick,\n isDark,\n}: {\n column: RoadmapColumnType\n primaryColor: string\n borderRadius: number\n showVoteCounts: boolean\n showComments: boolean\n onItemClick?: (item: RoadmapItem) => void\n isDark: boolean\n}) {\n return (\n <motion.div\n className=\"flex-shrink-0 w-80\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n >\n {/* Column Header - Glassmorphism */}\n <div\n className=\"flex items-center gap-3 px-4 py-3 mb-3\"\n style={{\n backgroundColor: `${column.color}10`,\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderRadius: `${borderRadius}px`,\n border: `1px solid ${column.color}20`,\n }}\n >\n <motion.div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: column.color }}\n animate={{ scale: [1, 1.2, 1] }}\n transition={{ duration: 2, repeat: Infinity, ease: 'easeInOut' }}\n />\n <h3\n className=\"font-semibold flex-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {column.name}\n </h3>\n <span\n className=\"text-xs font-medium px-2 py-0.5\"\n style={{\n backgroundColor: `${column.color}20`,\n color: column.color,\n borderRadius: `${Math.max(4, borderRadius - 8)}px`,\n }}\n >\n {(column.items || []).length}\n </span>\n </div>\n\n {/* Column Content */}\n <div className=\"space-y-3\">\n <AnimatePresence mode=\"popLayout\">\n {(column.items || []).map((item, index) => (\n <motion.div\n key={item.id}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ delay: index * 0.05 }}\n >\n <ModernCard\n item={item}\n primaryColor={primaryColor}\n borderRadius={Math.max(borderRadius - 4, 8)}\n showVoteCounts={showVoteCounts}\n showComments={showComments}\n onClick={onItemClick ? () => onItemClick(item) : undefined}\n isDark={isDark}\n />\n </motion.div>\n ))}\n </AnimatePresence>\n\n {/* Empty state */}\n {(column.items || []).length === 0 && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"text-center py-12 px-4\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.02)' : 'rgba(0, 0, 0, 0.02)',\n borderRadius: `${borderRadius}px`,\n border: `1px dashed ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n }}\n >\n <p\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n >\n No items yet\n </p>\n </motion.div>\n )}\n </div>\n </motion.div>\n )\n}\n\nexport function RoadmapBoard({\n variant: _variant = 'kanban',\n heading,\n description,\n developersNote,\n headingAlignment = 'left',\n onItemClick,\n showVoteCounts = true,\n showComments = true,\n renderColumn,\n renderItem: _renderItem,\n renderLoading,\n renderEmpty,\n renderError,\n refreshInterval = 0,\n className,\n}: RoadmapBoardProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const { columns, isLoading, error, refetch } = useRoadmap({\n refreshInterval,\n })\n\n // State for wish detail\n const [selectedWish, setSelectedWish] = useState<Wish | null>(null)\n const [isDetailOpen, setIsDetailOpen] = useState(false)\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Sort columns by sort_order\n const sortedColumns = [...columns].sort((a, b) => (a.sort_order || 0) - (b.sort_order || 0))\n\n // Count total items\n const totalItems = columns.reduce((sum, col) => sum + (col.items || []).length, 0)\n\n // Handle item click - open wish detail\n const handleItemClick = useCallback((item: RoadmapItem) => {\n // Create a Wish object from either the associated wish or the roadmap item itself\n const wish: Wish = item.wish\n ? {\n id: item.wish.id,\n project_id: '',\n title: item.wish.title,\n description: item.wish.description || '',\n status: (item.wish.status as Wish['status']) || 'pending',\n vote_count: item.wish.vote_count || 0,\n comment_count: item.wish.comment_count || 0,\n has_voted: false,\n slug: '',\n author_type: 'anonymous',\n is_pinned: false,\n created_at: item.wish.created_at || new Date().toISOString(),\n updated_at: new Date().toISOString(),\n author_name: item.wish.author?.name || 'Anonymous',\n author_email: item.wish.author?.email || item.wish.author_email,\n }\n : {\n // For roadmap items without a wish, create a pseudo-wish from item data\n id: item.id,\n project_id: '',\n title: item.title,\n description: item.description || '',\n status: 'planned' as Wish['status'],\n vote_count: 0,\n comment_count: 0,\n has_voted: false,\n slug: '',\n author_type: 'anonymous',\n is_pinned: false,\n created_at: item.created_at,\n updated_at: item.updated_at,\n }\n\n setSelectedWish(wish)\n setIsDetailOpen(true)\n\n // Also call external handler if provided\n onItemClick?.(item)\n }, [onItemClick])\n\n // Loading state\n if (isLoading) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n return (\n <div className={cn('space-y-8', className)}>\n {/* Page Header - Modern with gradient accent */}\n {heading && (\n <motion.div\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.6, ease: 'easeOut' }}\n className=\"mb-12\"\n style={{ textAlign: headingAlignment }}\n >\n <motion.h1\n className=\"text-4xl md:text-5xl font-bold mb-6\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {heading}\n </motion.h1>\n {description && (\n <p\n className=\"text-lg md:text-xl leading-relaxed\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n maxWidth: headingAlignment === 'center' ? '48rem' : '100%',\n marginLeft: headingAlignment === 'center' ? 'auto' : headingAlignment === 'right' ? 'auto' : '0',\n marginRight: headingAlignment === 'center' ? 'auto' : headingAlignment === 'left' ? 'auto' : '0',\n }}\n >\n {description}\n </p>\n )}\n </motion.div>\n )}\n\n {/* Developer's Note - Floating card */}\n {developersNote && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 }}\n >\n <div\n className=\"overflow-hidden p-5\"\n style={{\n backgroundColor: `${primaryColor}08`,\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderRadius: `${borderRadius}px`,\n boxShadow: `0 4px 24px -4px ${primaryColor}15`,\n }}\n >\n <div className=\"flex items-start gap-3\">\n <div\n className=\"p-2 rounded-lg\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <Clock className=\"w-5 h-5\" style={{ color: primaryColor }} />\n </div>\n <p\n className=\"text-sm leading-relaxed flex-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {developersNote}\n </p>\n </div>\n </div>\n </motion.div>\n )}\n\n {/* Roadmap Board */}\n {totalItems > 0 || sortedColumns.length > 0 ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3 }}\n className=\"-mx-4 px-4\"\n >\n <div className=\"overflow-x-auto\">\n <div className=\"flex gap-5 pb-4 min-w-max\">\n {sortedColumns.map((column, index) =>\n renderColumn ? (\n <React.Fragment key={column.id}>{renderColumn(column)}</React.Fragment>\n ) : (\n <motion.div\n key={column.id}\n initial={{ opacity: 0, x: 30 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: 0.3 + index * 0.1, duration: 0.4 }}\n >\n <ModernColumn\n column={column}\n primaryColor={primaryColor}\n borderRadius={borderRadius}\n showVoteCounts={showVoteCounts}\n showComments={showComments}\n onItemClick={handleItemClick}\n isDark={isDark}\n />\n </motion.div>\n )\n )}\n </div>\n </div>\n </motion.div>\n ) : (\n /* Empty State */\n renderEmpty ? (\n <>{renderEmpty()}</>\n ) : (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"text-center py-20\"\n >\n <motion.div\n animate={{\n y: [0, -8, 0],\n rotate: [0, 5, -5, 0],\n }}\n transition={{\n duration: 4,\n repeat: Infinity,\n ease: 'easeInOut',\n }}\n className=\"inline-flex items-center justify-center w-20 h-20 rounded-full mb-6\"\n style={{\n backgroundColor: `${primaryColor}10`,\n }}\n >\n <Clock\n className=\"h-10 w-10\"\n style={{ color: primaryColor }}\n />\n </motion.div>\n\n <h3\n className=\"text-xl font-semibold mb-2\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Coming soon\n </h3>\n <p\n className=\"max-w-sm mx-auto\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n Our roadmap is being prepared. Check back soon for exciting updates!\n </p>\n </motion.div>\n )\n )}\n\n {/* Wish Detail Sheet */}\n <WishDetail\n wish={selectedWish}\n open={isDetailOpen}\n onOpenChange={setIsDetailOpen}\n />\n </div>\n )\n}\n","/**\n * ReleaseCard Component\n *\n * A card component for displaying a single release/changelog entry.\n */\n\nimport React from 'react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport type { Release } from '../../types'\n\nexport interface ReleaseCardProps {\n /**\n * The release data\n */\n release: Release\n\n /**\n * Click handler\n */\n onClick?: () => void\n\n /**\n * Show cover image\n * @default true\n */\n showCoverImage?: boolean\n\n /**\n * Show labels\n * @default true\n */\n showLabels?: boolean\n\n /**\n * Show date\n * @default true\n */\n showDate?: boolean\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nconst labelColors: Record<string, { bg: string; text: string }> = {\n feature: { bg: 'bg-green-100', text: 'text-green-700' },\n bugfix: { bg: 'bg-red-100', text: 'text-red-700' },\n fix: { bg: 'bg-red-100', text: 'text-red-700' },\n improvement: { bg: 'bg-blue-100', text: 'text-blue-700' },\n enhancement: { bg: 'bg-blue-100', text: 'text-blue-700' },\n breaking: { bg: 'bg-orange-100', text: 'text-orange-700' },\n security: { bg: 'bg-purple-100', text: 'text-purple-700' },\n docs: { bg: 'bg-gray-100', text: 'text-gray-700' },\n documentation: { bg: 'bg-gray-100', text: 'text-gray-700' },\n performance: { bg: 'bg-yellow-100', text: 'text-yellow-700' },\n}\n\nfunction getLabelStyle(label: string): { bg: string; text: string } {\n const normalized = label.toLowerCase()\n return labelColors[normalized] || { bg: 'bg-gray-100', text: 'text-gray-700' }\n}\n\nexport function ReleaseCard({\n release,\n onClick,\n showCoverImage = true,\n showLabels = true,\n showDate = true,\n className,\n}: ReleaseCardProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const borderRadius = theme.borderRadius || 8\n\n const date = release.published_at || release.created_at\n const formattedDate = date\n ? new Date(date).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n : null\n\n return (\n <article\n onClick={onClick}\n className={cn(\n 'bg-white border border-gray-200 overflow-hidden',\n 'hover:shadow-md transition-shadow duration-200',\n onClick && 'cursor-pointer',\n className\n )}\n style={{ borderRadius: `${borderRadius}px` }}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {/* Cover Image */}\n {showCoverImage && release.cover_image_url && (\n <div className=\"aspect-video overflow-hidden\">\n <img\n src={release.cover_image_url}\n alt={release.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n\n <div className=\"p-4\">\n {/* Labels */}\n {showLabels && release.labels && release.labels.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 mb-2\">\n {release.labels.map((label) => {\n const style = getLabelStyle(label)\n return (\n <span\n key={label}\n className={cn('px-2 py-0.5 text-xs rounded-full', style.bg, style.text)}\n >\n {label}\n </span>\n )\n })}\n </div>\n )}\n\n {/* Version & Date */}\n <div className=\"flex items-center gap-2 text-sm text-gray-500 mb-2\">\n {release.version && (\n <span className=\"font-mono bg-gray-100 px-1.5 py-0.5 rounded\">\n {release.version}\n </span>\n )}\n {showDate && formattedDate && <span>{formattedDate}</span>}\n </div>\n\n {/* Title */}\n <h3 className=\"font-semibold text-gray-900 mb-2 line-clamp-2\">\n {release.title}\n </h3>\n\n {/* Excerpt */}\n {release.excerpt && (\n <p className=\"text-sm text-gray-600 line-clamp-3\">{release.excerpt}</p>\n )}\n </div>\n </article>\n )\n}\n","/**\n * ReleaseList Component\n *\n * Modern changelog with animations.\n * Adapted from ReleasesModern variant.\n */\n\nimport React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Sparkles, Zap, Bug, Wrench, ArrowRight, Package } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useReleases } from '../../hooks/useReleases'\nimport type { Release } from '../../types'\n\n// Release item type config\nconst itemTypeConfig: Record<string, {\n label: string\n color: string\n icon: typeof Zap\n}> = {\n feature: { label: 'Feature', color: '#8b5cf6', icon: Sparkles },\n improvement: { label: 'Improvement', color: '#3b82f6', icon: Zap },\n bugfix: { label: 'Bug Fix', color: '#10b981', icon: Bug },\n other: { label: 'Other', color: '#6b7280', icon: Wrench },\n}\n\nexport interface ReleaseListProps {\n /**\n * Layout variant\n * @default 'timeline'\n */\n variant?: 'timeline' | 'cards' | 'compact'\n\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Maximum number of releases to show\n * @default 50\n */\n limit?: number\n\n /**\n * Click handler for releases\n */\n onReleaseClick?: (release: Release) => void\n\n /**\n * Custom render function for releases\n */\n renderRelease?: (release: Release, index: number) => React.ReactNode\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Modern release card\nfunction ModernReleaseCard({\n release,\n primaryColor,\n borderRadius,\n onClick,\n featured = false,\n isDark = false,\n}: {\n release: Release\n primaryColor: string\n borderRadius: number\n onClick?: () => void\n featured?: boolean\n isDark?: boolean\n}) {\n // Group items by type\n const itemsByType = (release.items || []).reduce((acc, item) => {\n acc[item.type] = (acc[item.type] || 0) + 1\n return acc\n }, {} as Record<string, number>)\n\n const formatDate = (date: string) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n }\n\n const accentColor = primaryColor\n\n return (\n <motion.article\n whileHover={{ y: -2 }}\n className={cn(\n 'group cursor-pointer rounded-lg border transition-all duration-200',\n featured ? 'p-6 sm:p-8' : 'p-5'\n )}\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n onClick={onClick}\n >\n {/* Header: Version + Date */}\n <div className=\"flex items-center gap-3 mb-4 flex-wrap\">\n {release.version && (\n <span\n className=\"font-mono text-xs font-medium px-2 py-0.5 rounded\"\n style={{\n backgroundColor: `${accentColor}15`,\n color: accentColor,\n }}\n >\n v{release.version}\n </span>\n )}\n {featured && (\n <span\n className=\"text-xs font-medium px-2 py-0.5 rounded\"\n style={{\n backgroundColor: `${primaryColor}15`,\n color: primaryColor,\n }}\n >\n Latest\n </span>\n )}\n {(release.published_at || release.created_at) && (\n <span\n className=\"text-sm ml-auto\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {formatDate(release.published_at || release.created_at)}\n </span>\n )}\n </div>\n\n {/* Title */}\n <h3\n className={cn(\n 'font-semibold mb-3 transition-opacity group-hover:opacity-70',\n featured ? 'text-2xl' : 'text-lg'\n )}\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.3 }}\n >\n {release.title}\n </h3>\n\n {/* Description / Excerpt */}\n {(release.excerpt || release.content) && (\n <p\n className={cn(\n 'leading-relaxed mb-5',\n featured ? 'text-base' : 'text-sm'\n )}\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {(release.excerpt || release.content || '').slice(0, 200)}\n {(release.excerpt || release.content || '').length > 200 ? '...' : ''}\n </p>\n )}\n\n {/* Type badges */}\n {Object.keys(itemsByType).length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-5\">\n {(Object.entries(itemsByType) as [string, number][]).map(([type, count]) => {\n const config = itemTypeConfig[type] || itemTypeConfig.other\n const Icon = config.icon\n return (\n <span\n key={type}\n className=\"inline-flex items-center text-xs font-medium px-2 py-1 rounded\"\n style={{\n backgroundColor: `${config.color}12`,\n color: config.color,\n }}\n >\n <Icon className=\"w-3 h-3 mr-1.5\" />\n {count} {config.label}{count > 1 ? 's' : ''}\n </span>\n )\n })}\n </div>\n )}\n\n {/* Items preview (featured only) */}\n {featured && release.items && release.items.length > 0 && (\n <div\n className=\"rounded-lg p-4 mb-5 space-y-3\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.03)' : 'rgba(0, 0, 0, 0.02)' }}\n >\n {release.items.slice(0, 4).map((item) => {\n const config = itemTypeConfig[item.type] || itemTypeConfig.other\n const Icon = config.icon\n return (\n <div key={item.id} className=\"flex items-start gap-3\">\n <Icon\n className=\"w-4 h-4 mt-0.5 shrink-0\"\n style={{ color: config.color }}\n />\n <span\n className=\"text-sm leading-snug\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.8)' : 'rgba(0, 0, 0, 0.8)' }}\n >\n {item.title}\n </span>\n </div>\n )\n })}\n {release.items.length > 4 && (\n <p\n className=\"text-xs pt-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n +{release.items.length - 4} more changes\n </p>\n )}\n </div>\n )}\n\n {/* Read more link */}\n <div\n className=\"flex items-center gap-2 text-sm font-medium group-hover:gap-3 transition-all\"\n style={{ color: accentColor }}\n >\n <span>Read more</span>\n <ArrowRight className=\"w-4 h-4\" />\n </div>\n </motion.article>\n )\n}\n\nexport function ReleaseList({\n variant: _variant = 'timeline',\n heading,\n description,\n headingAlignment = 'left',\n limit = 50,\n onReleaseClick,\n renderRelease,\n renderLoading,\n renderEmpty,\n renderError,\n className,\n}: ReleaseListProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const { releases, isLoading, error, refetch } = useReleases({ limit })\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Get featured (latest) release and remaining releases\n const publishedReleases = releases.filter((r) => r.is_published !== false)\n const [featuredRelease, ...otherReleases] = publishedReleases\n\n // Loading state\n if (isLoading) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n return (\n <div className={cn('max-w-3xl mx-auto', className)}>\n {/* Page Header */}\n {(heading || description) && (\n <motion.header\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-12\"\n style={{ textAlign: headingAlignment }}\n >\n {heading && (\n <h1\n className=\"text-3xl md:text-4xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {heading}\n </h1>\n )}\n {description && (\n <p\n className=\"text-base md:text-lg leading-relaxed max-w-2xl\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n marginLeft: headingAlignment === 'center' ? 'auto' : 0,\n marginRight: headingAlignment === 'center' ? 'auto' : 0,\n }}\n >\n {description}\n </p>\n )}\n </motion.header>\n )}\n\n {publishedReleases.length > 0 ? (\n <div className=\"space-y-8\">\n {/* Featured Release */}\n {featuredRelease && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4 }}\n >\n {renderRelease ? (\n renderRelease(featuredRelease, 0)\n ) : (\n <ModernReleaseCard\n release={featuredRelease}\n primaryColor={primaryColor}\n borderRadius={borderRadius}\n onClick={onReleaseClick ? () => onReleaseClick(featuredRelease) : undefined}\n featured\n isDark={isDark}\n />\n )}\n </motion.div>\n )}\n\n {/* Other Releases */}\n {otherReleases.length > 0 && (\n <div className=\"space-y-6\">\n <h2\n className=\"text-sm font-medium uppercase\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Previous Releases\n </h2>\n\n <div className=\"space-y-4\">\n <AnimatePresence>\n {otherReleases.map((release, index) => (\n <motion.div\n key={release.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0 }}\n transition={{ delay: index * 0.05 }}\n >\n {renderRelease ? (\n renderRelease(release, index + 1)\n ) : (\n <ModernReleaseCard\n release={release}\n primaryColor={primaryColor}\n borderRadius={borderRadius}\n onClick={onReleaseClick ? () => onReleaseClick(release) : undefined}\n isDark={isDark}\n />\n )}\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n </div>\n )}\n </div>\n ) : (\n /* Empty State */\n renderEmpty ? (\n <>{renderEmpty()}</>\n ) : (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"text-center py-16\"\n >\n <div\n className=\"inline-flex items-center justify-center w-16 h-16 rounded-full mb-6\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)' }}\n >\n <Package\n className=\"w-8 h-8\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </div>\n <h3\n className=\"text-xl font-semibold mb-2\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n No releases yet\n </h3>\n <p\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n Check back soon for updates.\n </p>\n </motion.div>\n )\n )}\n </div>\n )\n}\n","/**\n * Markdown Component\n *\n * Renders markdown content with consistent styling using react-markdown.\n */\n\nimport React from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\n\nexport interface MarkdownProps {\n /**\n * Markdown content to render\n */\n content: string\n\n /**\n * Accent color for links and highlights\n */\n accentColor?: string\n\n /**\n * Custom class name for the container\n */\n className?: string\n}\n\nexport function Markdown({\n content,\n accentColor = '#6366f1',\n className,\n}: MarkdownProps): React.ReactElement {\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n h1: ({ children }) => (\n <h1\n className=\"text-2xl font-bold mt-8 mb-4 first:mt-0\"\n style={{ color: '#1f2937', lineHeight: 1.2 }}\n >\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2\n className=\"text-xl font-semibold mt-6 mb-3\"\n style={{ color: '#1f2937', lineHeight: 1.3 }}\n >\n {children}\n </h2>\n ),\n h3: ({ children }) => (\n <h3\n className=\"text-lg font-semibold mt-5 mb-2\"\n style={{ color: '#1f2937', lineHeight: 1.4 }}\n >\n {children}\n </h3>\n ),\n h4: ({ children }) => (\n <h4\n className=\"text-base font-semibold mt-4 mb-2\"\n style={{ color: '#1f2937' }}\n >\n {children}\n </h4>\n ),\n p: ({ children }) => (\n <p\n className=\"text-base leading-7 mb-4\"\n style={{ color: 'rgba(0, 0, 0, 0.8)' }}\n >\n {children}\n </p>\n ),\n blockquote: ({ children }) => (\n <blockquote\n className=\"border-l-4 pl-4 my-4 italic\"\n style={{\n color: 'rgba(0, 0, 0, 0.7)',\n borderColor: `${accentColor}40`,\n }}\n >\n {children}\n </blockquote>\n ),\n ul: ({ children }) => (\n <ul className=\"my-4 space-y-2 list-disc pl-6\" style={{ color: 'rgba(0, 0, 0, 0.8)' }}>\n {children}\n </ul>\n ),\n ol: ({ children }) => (\n <ol className=\"my-4 space-y-2 list-decimal pl-6\" style={{ color: 'rgba(0, 0, 0, 0.8)' }}>\n {children}\n </ol>\n ),\n li: ({ children }) => (\n <li className=\"text-base leading-7\">\n {children}\n </li>\n ),\n code: ({ children, className }) => {\n const isInline = !className\n return isInline ? (\n <code\n className=\"px-1.5 py-0.5 rounded text-sm font-mono\"\n style={{\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n color: '#1f2937',\n }}\n >\n {children}\n </code>\n ) : (\n <code className={className}>{children}</code>\n )\n },\n pre: ({ children }) => (\n <pre\n className=\"my-4 p-4 rounded-lg overflow-x-auto font-mono text-sm\"\n style={{\n backgroundColor: '#1f2937',\n color: '#f3f4f6',\n }}\n >\n {children}\n </pre>\n ),\n a: ({ href, children }) => (\n <a\n href={href}\n className=\"font-medium underline underline-offset-2 hover:opacity-80 transition-opacity\"\n style={{ color: accentColor }}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </a>\n ),\n hr: () => (\n <hr\n className=\"my-8 border-t\"\n style={{ borderColor: 'rgba(0, 0, 0, 0.1)' }}\n />\n ),\n img: ({ src, alt }) => (\n <figure className=\"my-6\">\n <img\n src={src}\n alt={alt}\n className=\"w-full rounded-lg\"\n />\n {alt && (\n <figcaption\n className=\"text-sm text-center mt-2\"\n style={{ color: 'rgba(0, 0, 0, 0.5)' }}\n >\n {alt}\n </figcaption>\n )}\n </figure>\n ),\n table: ({ children }) => (\n <div className=\"my-4 w-full overflow-x-auto\">\n <table className=\"w-full text-sm border-collapse\">\n {children}\n </table>\n </div>\n ),\n thead: ({ children }) => (\n <thead style={{ backgroundColor: 'rgba(0, 0, 0, 0.03)' }}>\n {children}\n </thead>\n ),\n tbody: ({ children }) => <tbody>{children}</tbody>,\n tr: ({ children }) => (\n <tr style={{ borderBottom: '1px solid rgba(0, 0, 0, 0.1)' }}>\n {children}\n </tr>\n ),\n th: ({ children }) => (\n <th\n className=\"px-3 py-2 text-left font-semibold\"\n style={{ color: '#1f2937', borderBottom: '2px solid rgba(0, 0, 0, 0.1)' }}\n >\n {children}\n </th>\n ),\n td: ({ children }) => (\n <td\n className=\"px-3 py-2\"\n style={{ color: 'rgba(0, 0, 0, 0.8)' }}\n >\n {children}\n </td>\n ),\n strong: ({ children }) => (\n <strong className=\"font-semibold\" style={{ color: '#1f2937' }}>\n {children}\n </strong>\n ),\n em: ({ children }) => <em>{children}</em>,\n }}\n >\n {content}\n </ReactMarkdown>\n </div>\n )\n}\n","/**\n * ReleaseDetail Component\n *\n * Displays a single release's full content with glassmorphism styling.\n */\n\nimport React from 'react'\nimport { motion } from 'framer-motion'\nimport { ArrowLeft, Calendar, Tag, Sparkles, Zap, Bug, Wrench } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { Markdown } from '../shared'\nimport { useAppgramContext } from '../../provider/context'\nimport { useRelease } from '../../hooks/useReleases'\nimport type { Release } from '../../types'\n\nexport interface ReleaseDetailProps {\n /**\n * The release to display (either pass release object or releaseSlug)\n */\n release?: Release\n\n /**\n * Release slug to fetch (alternative to passing release object)\n */\n releaseSlug?: string\n\n /**\n * Back button click handler\n */\n onBack?: () => void\n\n /**\n * Show back button\n * @default true\n */\n showBackButton?: boolean\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Release item type config\nconst itemTypeConfig: Record<string, {\n label: string\n color: string\n icon: typeof Zap\n}> = {\n feature: { label: 'Feature', color: '#8b5cf6', icon: Sparkles },\n improvement: { label: 'Improvement', color: '#3b82f6', icon: Zap },\n bugfix: { label: 'Bug Fix', color: '#10b981', icon: Bug },\n other: { label: 'Other', color: '#6b7280', icon: Wrench },\n}\n\nfunction formatDate(dateString: string): string {\n return new Date(dateString).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n}\n\nexport function ReleaseDetail({\n release: providedRelease,\n releaseSlug,\n onBack,\n showBackButton = true,\n renderLoading,\n renderError,\n className,\n}: ReleaseDetailProps): React.ReactElement | null {\n const { theme } = useAppgramContext()\n const {\n release: fetchedRelease,\n isLoading,\n error,\n refetch,\n } = useRelease({\n releaseSlug: releaseSlug || '',\n skip: !releaseSlug || !!providedRelease,\n })\n\n const release = providedRelease || fetchedRelease\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const accentColor = theme.colors?.accent || primaryColor\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Loading state\n if (isLoading && !release) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error && !release) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n if (!release) return null\n\n // Group items by type\n const itemsByType = (release.items || []).reduce((acc, item) => {\n if (!acc[item.type]) acc[item.type] = []\n acc[item.type]!.push(item)\n return acc\n }, {} as Record<string, typeof release.items>)\n\n return (\n <div className={cn('w-full', className)}>\n <div className=\"max-w-3xl mx-auto px-6 py-8\">\n {/* Back Button */}\n {showBackButton && onBack && (\n <motion.button\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3 }}\n onClick={onBack}\n className=\"flex items-center gap-2 mb-6 px-4 py-2 text-sm font-medium transition-all hover:opacity-80\"\n style={{\n color: primaryColor,\n backgroundColor: `${primaryColor}10`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n Back to Releases\n </motion.button>\n )}\n\n {/* Release Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"mb-8\"\n >\n {/* Cover Image */}\n {release.cover_image_url && (\n <div\n className=\"mb-6 overflow-hidden\"\n style={{ borderRadius: `${borderRadius}px` }}\n >\n <img\n src={release.cover_image_url}\n alt={release.title}\n className=\"w-full h-auto object-cover\"\n />\n </div>\n )}\n\n {/* Meta info */}\n <div className=\"flex items-center gap-3 flex-wrap mb-4\">\n {release.version && (\n <span\n className=\"font-mono text-xs font-medium px-2 py-1 rounded\"\n style={{\n backgroundColor: `${accentColor}15`,\n color: accentColor,\n }}\n >\n v{release.version}\n </span>\n )}\n {release.labels && release.labels.length > 0 && release.labels.map((label) => (\n <span\n key={label}\n className=\"inline-flex items-center gap-1 text-xs font-medium px-2 py-1 rounded\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n }}\n >\n <Tag className=\"w-3 h-3\" />\n {label}\n </span>\n ))}\n </div>\n\n {/* Title */}\n <h1\n className=\"text-2xl md:text-3xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {release.title}\n </h1>\n\n {/* Date */}\n {(release.published_at || release.created_at) && (\n <div\n className=\"flex items-center gap-2 text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <Calendar className=\"w-4 h-4\" />\n <span>{formatDate(release.published_at || release.created_at)}</span>\n </div>\n )}\n </motion.div>\n\n {/* Release Items by Type */}\n {Object.keys(itemsByType).length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1, duration: 0.5 }}\n className=\"mb-8 space-y-6\"\n >\n {(Object.entries(itemsByType) as [string, typeof release.items][]).map(([type, items]) => {\n const config = itemTypeConfig[type] || itemTypeConfig.other\n const Icon = config.icon\n\n return (\n <div key={type}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Icon className=\"w-4 h-4\" style={{ color: config.color }} />\n <h3\n className=\"text-sm font-semibold uppercase\"\n style={{ color: config.color }}\n >\n {config.label}s\n </h3>\n <span\n className=\"text-xs px-1.5 py-0.5 rounded\"\n style={{\n backgroundColor: `${config.color}15`,\n color: config.color,\n }}\n >\n {items?.length || 0}\n </span>\n </div>\n\n <div className=\"space-y-2\">\n {items?.map((item) => (\n <div\n key={item.id}\n className={`p-4 backdrop-blur-sm border transition-all ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/50'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n <h4\n className=\"font-medium text-sm mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {item.title}\n </h4>\n {item.description && (\n <p\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {item.description}\n </p>\n )}\n {item.image_url && (\n <img\n src={item.image_url}\n alt={item.title}\n className=\"mt-3 rounded-lg max-w-full h-auto\"\n />\n )}\n </div>\n ))}\n </div>\n </div>\n )\n })}\n </motion.div>\n )}\n\n {/* Release Content */}\n {release.content && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2, duration: 0.5 }}\n >\n <div\n className={`p-6 md:p-8 backdrop-blur-sm border ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/70'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <Markdown content={release.content} accentColor={accentColor} />\n </div>\n </motion.div>\n )}\n </div>\n </div>\n )\n}\n","/**\n * Releases Component\n *\n * Complete releases/changelog with navigation between list and detail views.\n * Handles all state management internally for a seamless user experience.\n *\n * @example\n * ```tsx\n * import { Releases } from '@appgram/react'\n *\n * <Releases\n * heading=\"What's New\"\n * description=\"See the latest features and improvements\"\n * variant=\"timeline\"\n * limit={10}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Cards variant for a grid layout\n * <Releases\n * heading=\"Release Notes\"\n * variant=\"cards\"\n * onReleaseClick={(release) => router.push(`/releases/${release.id}`)}\n * />\n * ```\n */\n\nimport React, { useState, useCallback } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { ReleaseList } from './ReleaseList'\nimport { ReleaseDetail } from './ReleaseDetail'\nimport { cn } from '../../utils/cn'\nimport type { Release } from '../../types'\n\ntype ViewState =\n | { type: 'list' }\n | { type: 'detail'; release: Release }\n\nexport interface ReleasesProps {\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Maximum number of releases to show\n * @default 50\n */\n limit?: number\n\n /**\n * Layout variant for list\n * @default 'timeline'\n */\n variant?: 'timeline' | 'cards' | 'compact'\n\n /**\n * External callback when release is clicked (for custom routing)\n * If not provided, internal navigation is used\n */\n onReleaseClick?: (release: Release) => void\n\n /**\n * Use external routing instead of internal state management\n * Set to true if you want to handle navigation yourself via onReleaseClick\n * @default false\n */\n useExternalRouting?: boolean\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nexport function Releases({\n heading = 'Releases',\n description = 'See what\\'s new and what\\'s changed.',\n headingAlignment = 'left',\n limit = 50,\n variant = 'timeline',\n onReleaseClick: externalReleaseClick,\n useExternalRouting = false,\n renderLoading,\n renderEmpty,\n renderError,\n className,\n}: ReleasesProps): React.ReactElement {\n const [viewState, setViewState] = useState<ViewState>({ type: 'list' })\n\n // Handle release click\n const handleReleaseClick = useCallback(\n (release: Release) => {\n if (useExternalRouting && externalReleaseClick) {\n externalReleaseClick(release)\n } else {\n setViewState({ type: 'detail', release })\n }\n },\n [useExternalRouting, externalReleaseClick]\n )\n\n // Navigate back to list\n const handleBackToList = useCallback(() => {\n setViewState({ type: 'list' })\n }, [])\n\n // Animation variants\n const pageVariants = {\n initial: { opacity: 0, x: 20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -20 },\n }\n\n return (\n <div className={cn('w-full', className)}>\n <AnimatePresence mode=\"wait\">\n {viewState.type === 'list' && (\n <motion.div\n key=\"list\"\n variants={pageVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{ duration: 0.3 }}\n >\n <ReleaseList\n heading={heading}\n description={description}\n headingAlignment={headingAlignment}\n limit={limit}\n variant={variant}\n onReleaseClick={handleReleaseClick}\n renderLoading={renderLoading}\n renderEmpty={renderEmpty}\n renderError={renderError}\n />\n </motion.div>\n )}\n\n {viewState.type === 'detail' && (\n <motion.div\n key={`detail-${viewState.release.id}`}\n variants={pageVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{ duration: 0.3 }}\n >\n <ReleaseDetail\n release={viewState.release}\n onBack={handleBackToList}\n renderLoading={renderLoading}\n renderError={renderError}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n","/**\n * WhatsNewPopup Component\n *\n * Small popup at bottom of screen showing latest release features\n * with media carousel for images and videos.\n */\n\nimport React, { useState, useEffect, useRef } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { X, Sparkles, Zap, Bug, Wrench, ChevronRight, ChevronLeft, Gift, Play, Pause } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useReleases } from '../../hooks/useReleases'\n\nexport interface WhatsNewPopupProps {\n /**\n * Whether the popup is open\n */\n open?: boolean\n\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void\n\n /**\n * Auto-show popup on mount if there's a new release\n * Uses localStorage to track seen releases\n * @default true\n */\n autoShow?: boolean\n\n /**\n * localStorage key for tracking seen releases\n * @default 'appgram-seen-release'\n */\n storageKey?: string\n\n /**\n * Maximum number of items to show\n * @default 5\n */\n maxItems?: number\n\n /**\n * Show only specific item types\n */\n showTypes?: ('feature' | 'improvement' | 'bugfix' | 'other')[]\n\n /**\n * Title for the popup\n * @default \"What's New\"\n */\n title?: string\n\n /**\n * Click handler for \"View All\" button\n */\n onViewAll?: () => void\n\n /**\n * Position of the popup\n * @default 'bottom-right'\n */\n position?: 'bottom-right' | 'bottom-left' | 'bottom-center'\n\n /**\n * Show media carousel\n * @default true\n */\n showMedia?: boolean\n\n /**\n * Auto-play carousel interval in ms (0 to disable)\n * @default 5000\n */\n autoPlayInterval?: number\n\n /**\n * Custom class name\n */\n className?: string\n}\n\ninterface MediaItem {\n type: 'image' | 'video'\n url: string\n title?: string\n}\n\nconst itemTypeConfig: Record<string, {\n label: string\n color: string\n icon: typeof Zap\n}> = {\n feature: { label: 'New', color: '#8b5cf6', icon: Sparkles },\n improvement: { label: 'Improved', color: '#3b82f6', icon: Zap },\n bugfix: { label: 'Fixed', color: '#10b981', icon: Bug },\n other: { label: 'Update', color: '#6b7280', icon: Wrench },\n}\n\nfunction isVideoUrl(url: string): boolean {\n const videoExtensions = ['.mp4', '.webm', '.ogg', '.mov']\n const videoHosts = ['youtube.com', 'youtu.be', 'vimeo.com', 'loom.com']\n\n const lowerUrl = url.toLowerCase()\n if (videoExtensions.some(ext => lowerUrl.includes(ext))) return true\n if (videoHosts.some(host => lowerUrl.includes(host))) return true\n return false\n}\n\nfunction getEmbedUrl(url: string): string {\n // YouTube\n if (url.includes('youtube.com/watch')) {\n const videoId = new URL(url).searchParams.get('v')\n if (videoId) return `https://www.youtube.com/embed/${videoId}?autoplay=0`\n }\n if (url.includes('youtu.be/')) {\n const videoId = url.split('youtu.be/')[1]?.split('?')[0]\n if (videoId) return `https://www.youtube.com/embed/${videoId}?autoplay=0`\n }\n // Vimeo\n if (url.includes('vimeo.com/')) {\n const videoId = url.split('vimeo.com/')[1]?.split('?')[0]\n if (videoId) return `https://player.vimeo.com/video/${videoId}`\n }\n // Loom\n if (url.includes('loom.com/share/')) {\n const videoId = url.split('loom.com/share/')[1]?.split('?')[0]\n if (videoId) return `https://www.loom.com/embed/${videoId}`\n }\n return url\n}\n\nfunction MediaCarousel({\n media,\n primaryColor,\n borderRadius,\n autoPlayInterval,\n}: {\n media: MediaItem[]\n primaryColor: string\n borderRadius: number\n autoPlayInterval: number\n}) {\n const [currentIndex, setCurrentIndex] = useState(0)\n const [isPlaying, setIsPlaying] = useState(autoPlayInterval > 0)\n const videoRef = useRef<HTMLVideoElement>(null)\n\n // Auto-play carousel\n useEffect(() => {\n if (!isPlaying || autoPlayInterval <= 0 || media.length <= 1) return\n\n const interval = setInterval(() => {\n setCurrentIndex((prev) => (prev + 1) % media.length)\n }, autoPlayInterval)\n\n return () => clearInterval(interval)\n }, [isPlaying, autoPlayInterval, media.length])\n\n const goTo = (index: number) => {\n setCurrentIndex(index)\n setIsPlaying(false) // Pause auto-play when manually navigating\n }\n\n const goNext = () => goTo((currentIndex + 1) % media.length)\n const goPrev = () => goTo((currentIndex - 1 + media.length) % media.length)\n\n const currentMedia = media[currentIndex]\n\n return (\n <div className=\"relative\">\n {/* Media Display */}\n <div\n className=\"relative overflow-hidden bg-black/5\"\n style={{\n borderRadius: `${Math.max(borderRadius - 8, 4)}px`,\n aspectRatio: '16/9',\n }}\n >\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={currentIndex}\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n transition={{ duration: 0.3 }}\n className=\"absolute inset-0\"\n >\n {currentMedia.type === 'video' ? (\n isVideoUrl(currentMedia.url) && (\n currentMedia.url.includes('youtube') ||\n currentMedia.url.includes('vimeo') ||\n currentMedia.url.includes('loom')\n ) ? (\n <iframe\n src={getEmbedUrl(currentMedia.url)}\n className=\"w-full h-full\"\n sandbox=\"allow-scripts allow-same-origin allow-presentation\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n title={currentMedia.title || 'Video'}\n />\n ) : (\n <video\n ref={videoRef}\n src={currentMedia.url}\n className=\"w-full h-full object-cover\"\n controls\n playsInline\n />\n )\n ) : (\n <img\n src={currentMedia.url}\n alt={currentMedia.title || 'Feature preview'}\n className=\"w-full h-full object-cover\"\n />\n )}\n </motion.div>\n </AnimatePresence>\n\n {/* Navigation Arrows */}\n {media.length > 1 && (\n <>\n <button\n onClick={goPrev}\n className=\"absolute left-2 top-1/2 -translate-y-1/2 p-1.5 rounded-full bg-black/40 hover:bg-black/60 transition-colors\"\n >\n <ChevronLeft className=\"w-4 h-4 text-white\" />\n </button>\n <button\n onClick={goNext}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 rounded-full bg-black/40 hover:bg-black/60 transition-colors\"\n >\n <ChevronRight className=\"w-4 h-4 text-white\" />\n </button>\n </>\n )}\n\n {/* Play/Pause indicator for auto-play */}\n {media.length > 1 && autoPlayInterval > 0 && (\n <button\n onClick={() => setIsPlaying(!isPlaying)}\n className=\"absolute top-2 right-2 p-1.5 rounded-full bg-black/40 hover:bg-black/60 transition-colors\"\n >\n {isPlaying ? (\n <Pause className=\"w-3 h-3 text-white\" />\n ) : (\n <Play className=\"w-3 h-3 text-white\" />\n )}\n </button>\n )}\n </div>\n\n {/* Dots Indicator */}\n {media.length > 1 && (\n <div className=\"flex justify-center gap-1.5 mt-2\">\n {media.map((_, index) => (\n <button\n key={index}\n onClick={() => goTo(index)}\n className=\"transition-all\"\n style={{\n width: index === currentIndex ? 16 : 6,\n height: 6,\n borderRadius: 3,\n backgroundColor: index === currentIndex ? primaryColor : 'rgba(0,0,0,0.2)',\n }}\n />\n ))}\n </div>\n )}\n\n {/* Caption */}\n {currentMedia.title && (\n <p\n className=\"text-xs text-center mt-1.5 font-medium\"\n style={{ color: 'rgba(0,0,0,0.6)' }}\n >\n {currentMedia.title}\n </p>\n )}\n </div>\n )\n}\n\ninterface ReleaseFeatureLocal {\n id: string\n release_id: string\n title: string\n description: string\n image_url?: string | null\n sort_order: number\n}\n\nexport function WhatsNewPopup({\n open: controlledOpen,\n onOpenChange,\n autoShow = true,\n storageKey = 'appgram-seen-release',\n maxItems = 5,\n showTypes,\n title = \"What's New\",\n onViewAll,\n position = 'bottom-right',\n showMedia = true,\n autoPlayInterval = 5000,\n className,\n}: WhatsNewPopupProps): React.ReactElement | null {\n const { theme, client } = useAppgramContext()\n const { releases, isLoading } = useReleases({ limit: 1 })\n const [internalOpen, setInternalOpen] = useState(false)\n const [features, setFeatures] = useState<ReleaseFeatureLocal[]>([])\n\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const primaryColor = theme.colors?.primary || '#6366f1'\n const borderRadius = theme.borderRadius || 16\n\n const latestRelease = releases[0]\n\n // Fetch features for the release\n useEffect(() => {\n if (!latestRelease?.slug) return\n\n const loadFeatures = async () => {\n try {\n const response = await client.getReleaseFeatures(latestRelease.slug)\n if (response.success && response.data) {\n const sortedFeatures = [...response.data].sort((a, b) => a.sort_order - b.sort_order)\n setFeatures(sortedFeatures as ReleaseFeatureLocal[])\n }\n } catch (error) {\n console.error('Failed to load release features:', error)\n }\n }\n\n loadFeatures()\n }, [latestRelease?.slug, client])\n\n // Auto-show logic\n useEffect(() => {\n if (!autoShow || isControlled || isLoading || !latestRelease) return\n\n const seenReleaseId = localStorage.getItem(storageKey)\n if (seenReleaseId !== latestRelease.id) {\n setInternalOpen(true)\n }\n }, [autoShow, isControlled, isLoading, latestRelease, storageKey])\n\n const handleClose = () => {\n if (isControlled) {\n onOpenChange?.(false)\n } else {\n setInternalOpen(false)\n }\n\n // Mark as seen\n if (latestRelease) {\n localStorage.setItem(storageKey, latestRelease.id)\n }\n }\n\n const handleViewAll = () => {\n handleClose()\n onViewAll?.()\n }\n\n if (!latestRelease) return null\n\n // Get items to display (from release.items if available)\n let items = latestRelease.items || []\n if (showTypes && showTypes.length > 0) {\n items = items.filter(item => showTypes.includes(item.type))\n }\n items = items.slice(0, maxItems)\n\n // Collect media items - prioritize features, then items, then cover image\n const mediaItems: MediaItem[] = []\n\n // Add cover image first\n if (latestRelease.cover_image_url) {\n mediaItems.push({\n type: isVideoUrl(latestRelease.cover_image_url) ? 'video' : 'image',\n url: latestRelease.cover_image_url,\n title: latestRelease.title,\n })\n }\n\n // Add feature images/videos (these are the key highlights)\n features.forEach(feature => {\n if (feature.image_url) {\n mediaItems.push({\n type: isVideoUrl(feature.image_url) ? 'video' : 'image',\n url: feature.image_url,\n title: feature.title,\n })\n }\n })\n\n // Add item images/videos as fallback\n items.forEach(item => {\n if (item.image_url) {\n mediaItems.push({\n type: isVideoUrl(item.image_url) ? 'video' : 'image',\n url: item.image_url,\n title: item.title,\n })\n }\n })\n\n // Position classes\n const positionClasses = {\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n }\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, y: 100, scale: 0.9 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 50, scale: 0.95 }}\n transition={{ type: 'spring', damping: 25, stiffness: 300 }}\n className={cn(\n 'fixed z-50 w-[380px] max-w-[calc(100vw-2rem)]',\n positionClasses[position],\n className\n )}\n >\n <div\n className=\"bg-white shadow-2xl overflow-hidden\"\n style={{\n borderRadius: `${borderRadius}px`,\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n }}\n >\n {/* Header */}\n <div\n className=\"px-4 py-3 flex items-center justify-between\"\n style={{\n background: `linear-gradient(135deg, ${primaryColor}, ${primaryColor}dd)`,\n }}\n >\n <div className=\"flex items-center gap-2 text-white\">\n <Gift className=\"w-4 h-4\" />\n <span className=\"font-semibold text-sm\">{title}</span>\n {latestRelease.version && (\n <span\n className=\"text-xs px-1.5 py-0.5 rounded-full\"\n style={{ backgroundColor: 'rgba(255,255,255,0.2)' }}\n >\n v{latestRelease.version}\n </span>\n )}\n </div>\n <button\n onClick={handleClose}\n className=\"p-1 rounded-full hover:bg-white/20 transition-colors\"\n >\n <X className=\"w-4 h-4 text-white\" />\n </button>\n </div>\n\n {/* Media Carousel */}\n {showMedia && mediaItems.length > 0 && (\n <div className=\"px-3 pt-3\">\n <MediaCarousel\n media={mediaItems}\n primaryColor={primaryColor}\n borderRadius={borderRadius}\n autoPlayInterval={autoPlayInterval}\n />\n </div>\n )}\n\n {/* Release Title */}\n <div className=\"px-4 py-3 border-b\" style={{ borderColor: 'rgba(0,0,0,0.06)' }}>\n <h3 className=\"font-semibold text-sm\" style={{ color: '#1f2937' }}>\n {latestRelease.title}\n </h3>\n {latestRelease.excerpt && (\n <p className=\"text-xs mt-1 line-clamp-2\" style={{ color: 'rgba(0,0,0,0.6)' }}>\n {latestRelease.excerpt}\n </p>\n )}\n </div>\n\n {/* Features & Items List */}\n {(features.length > 0 || items.length > 0) && (\n <div className=\"px-2 py-2 max-h-[180px] overflow-y-auto\">\n {/* Features first */}\n {features.map((feature, index) => (\n <motion.div\n key={feature.id}\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.05 }}\n className=\"flex items-start gap-2.5 px-2 py-2 rounded-lg hover:bg-black/[0.02] transition-colors\"\n >\n <div\n className=\"p-1.5 rounded-md shrink-0 mt-0.5\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <Sparkles className=\"w-3 h-3\" style={{ color: primaryColor }} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span\n className=\"text-[10px] font-medium uppercase\"\n style={{ color: primaryColor }}\n >\n Feature\n </span>\n </div>\n <p\n className=\"text-sm font-medium leading-snug\"\n style={{ color: '#1f2937' }}\n >\n {feature.title}\n </p>\n {feature.description && (\n <p\n className=\"text-xs mt-0.5 line-clamp-2\"\n style={{ color: 'rgba(0,0,0,0.5)' }}\n >\n {feature.description}\n </p>\n )}\n </div>\n </motion.div>\n ))}\n\n {/* Items */}\n {items.map((item, index) => {\n const config = itemTypeConfig[item.type] || itemTypeConfig.other\n const Icon = config.icon\n\n return (\n <motion.div\n key={item.id}\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: (features.length + index) * 0.05 }}\n className=\"flex items-start gap-2.5 px-2 py-2 rounded-lg hover:bg-black/[0.02] transition-colors\"\n >\n <div\n className=\"p-1.5 rounded-md shrink-0 mt-0.5\"\n style={{ backgroundColor: `${config.color}15` }}\n >\n <Icon className=\"w-3 h-3\" style={{ color: config.color }} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span\n className=\"text-[10px] font-medium uppercase\"\n style={{ color: config.color }}\n >\n {config.label}\n </span>\n </div>\n <p\n className=\"text-sm font-medium leading-snug\"\n style={{ color: '#1f2937' }}\n >\n {item.title}\n </p>\n {item.description && (\n <p\n className=\"text-xs mt-0.5 line-clamp-2\"\n style={{ color: 'rgba(0,0,0,0.5)' }}\n >\n {item.description}\n </p>\n )}\n </div>\n </motion.div>\n )\n })}\n </div>\n )}\n\n {/* Footer */}\n <div\n className=\"px-4 py-3 flex items-center justify-between border-t\"\n style={{ borderColor: 'rgba(0,0,0,0.06)', backgroundColor: 'rgba(0,0,0,0.02)' }}\n >\n <button\n onClick={handleClose}\n className=\"text-xs font-medium transition-colors hover:opacity-70\"\n style={{ color: 'rgba(0,0,0,0.5)' }}\n >\n Dismiss\n </button>\n {onViewAll && (\n <button\n onClick={handleViewAll}\n className=\"flex items-center gap-1 text-xs font-medium transition-colors hover:opacity-80\"\n style={{ color: primaryColor }}\n >\n View all updates\n <ChevronRight className=\"w-3 h-3\" />\n </button>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n","/**\n * HelpCollections Component\n *\n * Modern help center with glassmorphism style, quick actions, and grid layout.\n * Adapted from HelpCenterGlass variant.\n */\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n Search,\n Folder,\n HelpCircle,\n FileText,\n ChevronRight,\n BookOpen,\n MessageCircle,\n Mail,\n Loader2,\n} from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useHelpCenter } from '../../hooks/useHelpCenter'\nimport type { HelpFlow, HelpArticle } from '../../types'\n\nexport interface QuickAction {\n label: string\n icon?: React.ComponentType<{ className?: string }>\n onClick: () => void\n}\n\nexport interface HelpCollectionsProps {\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'center'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Click handler for flows\n */\n onFlowClick?: (flow: HelpFlow) => void\n\n /**\n * Click handler for articles\n */\n onArticleClick?: (article: HelpArticle, flow: HelpFlow) => void\n\n /**\n * Featured articles to display\n */\n featuredArticles?: HelpArticle[]\n\n /**\n * Show search input\n * @default true\n */\n showSearch?: boolean\n\n /**\n * Quick action buttons to display\n */\n quickActions?: QuickAction[]\n\n /**\n * Show contact support footer\n * @default true\n */\n showFooter?: boolean\n\n /**\n * Contact support URL\n */\n contactSupportUrl?: string\n\n /**\n * Live chat handler\n */\n onLiveChatClick?: () => void\n\n /**\n * Layout variant\n * @default 'grid'\n */\n variant?: 'grid' | 'list'\n\n /**\n * Custom render function for flows\n */\n renderFlow?: (flow: HelpFlow) => React.ReactNode\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Icon mapping for collections based on name\nfunction getCollectionIcon(name: string) {\n const lower = name.toLowerCase()\n if (lower.includes('start') || lower.includes('getting')) return BookOpen\n if (lower.includes('api') || lower.includes('develop')) return MessageCircle\n if (lower.includes('account') || lower.includes('billing')) return Mail\n return Folder\n}\n\nexport function HelpCollections({\n heading = 'Help Center',\n description = 'How can we help you today?',\n headingAlignment = 'center',\n onFlowClick,\n onArticleClick,\n featuredArticles,\n showSearch = true,\n quickActions,\n showFooter = true,\n contactSupportUrl,\n onLiveChatClick,\n variant = 'grid',\n renderFlow,\n renderLoading,\n renderEmpty,\n renderError,\n className,\n}: HelpCollectionsProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const { flows, isLoading, error, refetch } = useHelpCenter()\n const [searchQuery, setSearchQuery] = useState('')\n const [showAllArticles, setShowAllArticles] = useState(false)\n const [hasInitiallyLoaded, setHasInitiallyLoaded] = useState(false)\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const accentColor = theme.colors?.accent || primaryColor\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n // Track initial load\n useEffect(() => {\n if (!isLoading && flows.length > 0) {\n setHasInitiallyLoaded(true)\n }\n }, [isLoading, flows.length])\n\n // Reset show all when search changes\n useEffect(() => {\n setShowAllArticles(false)\n }, [searchQuery])\n\n // Debounce ref for search\n const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const [debouncedQuery, setDebouncedQuery] = useState('')\n\n const handleSearch = useCallback((query: string) => {\n setSearchQuery(query)\n\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n\n searchDebounceRef.current = setTimeout(() => {\n setDebouncedQuery(query)\n }, 300)\n }, [])\n\n useEffect(() => {\n return () => {\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n }\n }, [])\n\n // Loading state - only show full loading on initial load\n const showFullLoading = isLoading && !hasInitiallyLoaded\n if (showFullLoading) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n // Filter flows based on search\n const filteredFlows = debouncedQuery\n ? flows.filter(\n (flow) =>\n flow.name.toLowerCase().includes(debouncedQuery.toLowerCase()) ||\n flow.description?.toLowerCase().includes(debouncedQuery.toLowerCase()) ||\n flow.articles?.some(\n (article) =>\n article.title.toLowerCase().includes(debouncedQuery.toLowerCase()) ||\n article.excerpt?.toLowerCase().includes(debouncedQuery.toLowerCase())\n )\n )\n : flows\n\n // Default quick actions if none provided\n const defaultQuickActions: QuickAction[] = [\n ...(contactSupportUrl ? [{ label: 'Submit a Ticket', icon: Mail, onClick: () => window.open(contactSupportUrl, '_blank') }] : []),\n ...(onLiveChatClick ? [{ label: 'Live Chat', icon: MessageCircle, onClick: onLiveChatClick }] : []),\n ]\n\n const actions = quickActions || defaultQuickActions\n\n return (\n <div className={cn('w-full', className)}>\n <div className=\"max-w-4xl mx-auto px-6 py-8\">\n {/* Page Header */}\n {(heading || description) && (\n <motion.header\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.6 }}\n className=\"mb-10\"\n style={{ textAlign: headingAlignment }}\n >\n {heading && (\n <h1\n className=\"text-3xl md:text-4xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {heading}\n </h1>\n )}\n {description && (\n <p\n className=\"text-base md:text-lg leading-relaxed max-w-2xl\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n marginLeft: headingAlignment === 'center' ? 'auto' : 0,\n marginRight: headingAlignment === 'center' ? 'auto' : 0,\n }}\n >\n {description}\n </p>\n )}\n </motion.header>\n )}\n\n {/* Search Bar */}\n {showSearch && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1, duration: 0.5 }}\n className=\"mb-8\"\n >\n <div className=\"relative max-w-2xl mx-auto flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Search\n className=\"absolute left-4 top-1/2 -translate-y-1/2 w-5 h-5 z-10 pointer-events-none\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n <input\n type=\"text\"\n placeholder=\"Search for help articles...\"\n value={searchQuery}\n onChange={(e) => handleSearch(e.target.value)}\n className={`w-full h-12 pl-12 pr-4 text-sm backdrop-blur-sm border focus:outline-none focus:ring-2 transition-all ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/50'}`}\n style={{\n color: 'var(--appgram-foreground)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${borderRadius}px`,\n }}\n />\n </div>\n {/* Loading indicator for search */}\n {isLoading && hasInitiallyLoaded && (\n <Loader2\n className=\"w-5 h-5 animate-spin\"\n style={{ color: primaryColor }}\n />\n )}\n </div>\n </motion.div>\n )}\n\n {/* Quick Actions */}\n {actions.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.15, duration: 0.5 }}\n className=\"flex flex-wrap justify-center gap-3 mb-12\"\n >\n {actions.map((action) => {\n const Icon = action.icon || HelpCircle\n return (\n <button\n key={action.label}\n onClick={action.onClick}\n className={`flex items-center gap-2 px-5 py-2.5 rounded-full backdrop-blur-sm border transition-all group ${isDark ? 'bg-[var(--appgram-card)] hover:bg-[var(--appgram-card)]' : 'bg-white/50 hover:bg-white/80'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <Icon\n className=\"w-4 h-4 transition-colors\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n />\n <span className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n {action.label}\n </span>\n </button>\n )\n })}\n </motion.div>\n )}\n\n {/* Collections */}\n {filteredFlows.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2, duration: 0.5 }}\n className=\"mb-12\"\n >\n <div className=\"flex items-center gap-2 mb-6\">\n <Folder className=\"w-5 h-5\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }} />\n <h2\n className=\"text-lg font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Browse by Topic\n </h2>\n </div>\n\n <div\n className={cn(\n variant === 'grid' && 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',\n variant === 'list' && 'space-y-3'\n )}\n >\n <AnimatePresence>\n {filteredFlows.map((flow, index) => {\n if (renderFlow) {\n return <React.Fragment key={flow.id}>{renderFlow(flow)}</React.Fragment>\n }\n\n const Icon = getCollectionIcon(flow.name)\n\n return (\n <motion.article\n key={flow.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0 }}\n transition={{ delay: 0.25 + index * 0.05, duration: 0.4 }}\n whileHover={{ y: -4, scale: 1.01 }}\n className=\"group cursor-pointer overflow-hidden\"\n onClick={() => onFlowClick?.(flow)}\n >\n <div\n className={`h-full p-5 backdrop-blur-sm border transition-all duration-300 hover:shadow-lg ${isDark ? 'bg-[var(--appgram-card)] hover:bg-[var(--appgram-card)]' : 'bg-white/70 hover:bg-white/90'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <div className=\"flex items-start justify-between mb-3\">\n <div\n className=\"p-2.5 rounded-xl\"\n style={{ backgroundColor: `${accentColor}10` }}\n >\n {flow.icon ? (\n <span className=\"text-lg\">{flow.icon}</span>\n ) : (\n <Icon className=\"w-5 h-5\" style={{ color: accentColor }} />\n )}\n </div>\n <ChevronRight\n className=\"w-5 h-5 opacity-0 group-hover:opacity-100 group-hover:translate-x-1 transition-all\"\n style={{ color: accentColor }}\n />\n </div>\n\n <h3\n className=\"text-base font-semibold mb-1.5 transition-colors\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {flow.name}\n </h3>\n\n {flow.description && (\n <p\n className=\"text-sm leading-relaxed mb-3\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {flow.description}\n </p>\n )}\n\n {flow.articles && flow.articles.length > 0 && (\n <div\n className=\"flex items-center gap-1.5 text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <BookOpen className=\"w-3.5 h-3.5\" />\n <span>\n {flow.articles.length} article{flow.articles.length !== 1 ? 's' : ''}\n </span>\n </div>\n )}\n </div>\n </motion.article>\n )\n })}\n </AnimatePresence>\n </div>\n </motion.div>\n )}\n\n {/* Featured Articles */}\n {featuredArticles && featuredArticles.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.35, duration: 0.5 }}\n className=\"mb-12\"\n >\n <div className=\"flex items-center gap-2 mb-6\">\n <FileText className=\"w-5 h-5\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }} />\n <h2\n className=\"text-lg font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Popular Articles\n </h2>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n {featuredArticles.slice(0, showAllArticles ? undefined : 6).map((article, index) => (\n <motion.button\n key={article.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.4 + index * 0.05, duration: 0.4 }}\n whileHover={{ x: 4 }}\n className={`w-full flex items-center gap-3 p-4 backdrop-blur-sm border transition-all group text-left ${isDark ? 'bg-[var(--appgram-card)] hover:bg-[var(--appgram-card)]' : 'bg-white/50 hover:bg-white/80'}`}\n onClick={() =>\n onArticleClick?.(\n article,\n flows.find((f) => f.articles?.some((a) => a.id === article.id)) as HelpFlow\n )\n }\n disabled={!onArticleClick}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n cursor: onArticleClick ? 'pointer' : 'default',\n }}\n >\n <div\n className=\"p-2 rounded-lg\"\n style={{ backgroundColor: `${accentColor}10` }}\n >\n <FileText className=\"w-4 h-4\" style={{ color: accentColor }} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <span\n className=\"text-sm font-medium block truncate\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {article.title}\n </span>\n </div>\n <ChevronRight\n className=\"w-4 h-4 opacity-40 group-hover:opacity-100 transition-opacity\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </motion.button>\n ))}\n </div>\n\n {!showAllArticles && featuredArticles.length > 6 && (\n <div className=\"text-center mt-6\">\n <button\n onClick={() => setShowAllArticles(true)}\n className={`px-6 py-2.5 text-sm font-medium rounded-full border transition-all ${isDark ? 'hover:bg-[var(--appgram-card)]' : 'hover:bg-white/50'}`}\n style={{\n color: accentColor,\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n Show {featuredArticles.length - 6} more articles\n </button>\n </div>\n )}\n </motion.div>\n )}\n\n {/* No results */}\n {filteredFlows.length === 0 && debouncedQuery && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"text-center py-12\"\n >\n <p style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n No results found for \"{debouncedQuery}\"\n </p>\n </motion.div>\n )}\n\n {/* Empty State */}\n {flows.length === 0 && !debouncedQuery && (\n renderEmpty ? (\n <>{renderEmpty()}</>\n ) : (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3, duration: 0.6 }}\n className=\"text-center py-20\"\n >\n <div\n className=\"inline-flex items-center justify-center w-20 h-20 rounded-full mb-6\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)' }}\n >\n <HelpCircle className=\"w-10 h-10\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.3)' : 'rgba(0, 0, 0, 0.3)' }} />\n </div>\n <h3 className=\"text-2xl font-semibold mb-2\" style={{ color: 'var(--appgram-foreground)' }}>\n No help articles yet\n </h3>\n <p className=\"max-w-md mx-auto\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n Check back soon for helpful articles and guides.\n </p>\n </motion.div>\n )\n )}\n\n {/* Footer */}\n {showFooter && (contactSupportUrl || onLiveChatClick) && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.5, duration: 0.5 }}\n className=\"mt-12 pt-8 border-t\"\n style={{ borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)' }}\n >\n <div\n className=\"flex flex-col md:flex-row items-center justify-between gap-4 text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <p>Still need help? We're here for you.</p>\n <div className=\"flex items-center gap-6\">\n {contactSupportUrl && (\n <a\n href={contactSupportUrl}\n className=\"flex items-center gap-2 transition-colors hover:opacity-70\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n <Mail className=\"w-4 h-4\" />\n Contact Support\n </a>\n )}\n {onLiveChatClick && (\n <button\n onClick={onLiveChatClick}\n className=\"flex items-center gap-2 transition-colors hover:opacity-70\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n <MessageCircle className=\"w-4 h-4\" />\n Live Chat\n </button>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </div>\n </div>\n )\n}\n","/**\n * HelpArticles Component\n *\n * Displays articles within a selected help flow with glassmorphism styling.\n */\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n Search,\n FileText,\n ChevronRight,\n ArrowLeft,\n BookOpen,\n Loader2,\n} from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useHelpFlow } from '../../hooks/useHelpCenter'\nimport type { HelpFlow, HelpArticle } from '../../types'\n\nexport interface HelpArticlesProps {\n /**\n * The flow to display articles for (either pass flow object or flowSlug)\n */\n flow?: HelpFlow\n\n /**\n * Flow slug to fetch (alternative to passing flow object)\n */\n flowSlug?: string\n\n /**\n * Click handler for articles\n */\n onArticleClick?: (article: HelpArticle) => void\n\n /**\n * Back button click handler\n */\n onBack?: () => void\n\n /**\n * Show search input\n * @default true\n */\n showSearch?: boolean\n\n /**\n * Show back button\n * @default true\n */\n showBackButton?: boolean\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nconst ARTICLE_TYPE_CONFIG = {\n guide: { label: 'Guide', color: '#3b82f6' },\n faq: { label: 'FAQ', color: '#8b5cf6' },\n tutorial: { label: 'Tutorial', color: '#10b981' },\n} as const\n\nexport function HelpArticles({\n flow: providedFlow,\n flowSlug,\n onArticleClick,\n onBack,\n showSearch = true,\n showBackButton = true,\n renderLoading,\n renderEmpty,\n renderError,\n className,\n}: HelpArticlesProps): React.ReactElement | null {\n const { theme } = useAppgramContext()\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n const {\n flow: fetchedFlow,\n isLoading,\n error,\n refetch,\n } = useHelpFlow({\n flowSlug: flowSlug || '',\n skip: !flowSlug || !!providedFlow,\n })\n\n const flow = providedFlow || fetchedFlow\n const [searchQuery, setSearchQuery] = useState('')\n const [showAllArticles, setShowAllArticles] = useState(false)\n\n const primaryColor = theme.colors?.primary || '#6366f1'\n const accentColor = theme.colors?.accent || primaryColor\n const borderRadius = theme.borderRadius || 16\n\n // Debounce search\n const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const [debouncedQuery, setDebouncedQuery] = useState('')\n\n const handleSearch = useCallback((query: string) => {\n setSearchQuery(query)\n\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n\n searchDebounceRef.current = setTimeout(() => {\n setDebouncedQuery(query)\n }, 300)\n }, [])\n\n useEffect(() => {\n return () => {\n if (searchDebounceRef.current) {\n clearTimeout(searchDebounceRef.current)\n }\n }\n }, [])\n\n // Reset show all when search changes\n useEffect(() => {\n setShowAllArticles(false)\n }, [debouncedQuery])\n\n // Loading state\n if (isLoading && !flow) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error && !flow) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n if (!flow) return null\n\n // Filter articles\n const articles = flow.articles || []\n const filteredArticles = debouncedQuery\n ? articles.filter(\n (article) =>\n article.title.toLowerCase().includes(debouncedQuery.toLowerCase()) ||\n article.excerpt?.toLowerCase().includes(debouncedQuery.toLowerCase()) ||\n article.content.toLowerCase().includes(debouncedQuery.toLowerCase())\n )\n : articles\n\n const publishedArticles = filteredArticles\n .filter((a) => a.is_published)\n .sort((a, b) => a.sort_order - b.sort_order)\n\n return (\n <div className={cn('w-full', className)}>\n <div className=\"max-w-4xl mx-auto px-6 py-8\">\n {/* Back Button */}\n {showBackButton && onBack && (\n <motion.button\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3 }}\n onClick={onBack}\n className=\"flex items-center gap-2 mb-6 px-4 py-2 text-sm font-medium transition-all hover:opacity-80\"\n style={{\n color: primaryColor,\n backgroundColor: `${primaryColor}10`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n Back\n </motion.button>\n )}\n\n {/* Flow Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"mb-8\"\n >\n <div\n className={`p-6 backdrop-blur-sm border ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/70'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <div className=\"flex items-start gap-4\">\n <div\n className=\"p-3 rounded-xl\"\n style={{ backgroundColor: `${accentColor}15` }}\n >\n {flow.icon ? (\n <span className=\"text-2xl\">{flow.icon}</span>\n ) : (\n <BookOpen className=\"w-6 h-6\" style={{ color: accentColor }} />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <h1\n className=\"text-xl md:text-2xl font-bold mb-2\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {flow.name}\n </h1>\n {flow.description && (\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {flow.description}\n </p>\n )}\n <div\n className=\"flex items-center gap-1.5 text-xs mt-3\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <FileText className=\"w-3.5 h-3.5\" />\n <span>\n {publishedArticles.length} article{publishedArticles.length !== 1 ? 's' : ''}\n </span>\n </div>\n </div>\n </div>\n </div>\n </motion.div>\n\n {/* Search Bar */}\n {showSearch && publishedArticles.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1, duration: 0.5 }}\n className=\"mb-8\"\n >\n <div className=\"relative max-w-2xl mx-auto flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Search\n className=\"absolute left-4 top-1/2 -translate-y-1/2 w-5 h-5 z-10 pointer-events-none\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n <input\n type=\"text\"\n placeholder=\"Search articles...\"\n value={searchQuery}\n onChange={(e) => handleSearch(e.target.value)}\n className={`w-full h-12 pl-12 pr-4 text-sm backdrop-blur-sm border focus:outline-none focus:ring-2 transition-all ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/50'}`}\n style={{\n color: 'var(--appgram-foreground)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${borderRadius}px`,\n }}\n />\n </div>\n {isLoading && (\n <Loader2\n className=\"w-5 h-5 animate-spin\"\n style={{ color: primaryColor }}\n />\n )}\n </div>\n </motion.div>\n )}\n\n {/* Articles List */}\n {publishedArticles.length > 0 ? (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2, duration: 0.5 }}\n >\n <div className=\"space-y-3\">\n <AnimatePresence>\n {publishedArticles\n .slice(0, showAllArticles ? undefined : 10)\n .map((article, index) => {\n const typeConfig =\n ARTICLE_TYPE_CONFIG[article.article_type as keyof typeof ARTICLE_TYPE_CONFIG]\n\n return (\n <motion.button\n key={article.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0 }}\n transition={{ delay: 0.25 + index * 0.03, duration: 0.4 }}\n whileHover={{ x: 4 }}\n className={`w-full flex items-start gap-4 p-4 backdrop-blur-sm border transition-all group text-left ${isDark ? 'bg-[var(--appgram-card)] hover:bg-[var(--appgram-card)]' : 'bg-white/50 hover:bg-white/80'}`}\n onClick={() => onArticleClick?.(article)}\n disabled={!onArticleClick}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n cursor: onArticleClick ? 'pointer' : 'default',\n }}\n >\n <div\n className=\"p-2 rounded-lg shrink-0\"\n style={{ backgroundColor: `${accentColor}10` }}\n >\n <FileText className=\"w-4 h-4\" style={{ color: accentColor }} />\n </div>\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap mb-1\">\n <span\n className=\"text-sm font-medium\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {article.title}\n </span>\n {typeConfig && (\n <span\n className=\"text-[10px] font-medium uppercase px-1.5 py-0.5 rounded\"\n style={{\n backgroundColor: `${typeConfig.color}12`,\n color: typeConfig.color,\n }}\n >\n {typeConfig.label}\n </span>\n )}\n </div>\n\n {article.excerpt && (\n <p\n className=\"text-sm line-clamp-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {article.excerpt}\n </p>\n )}\n </div>\n\n <ChevronRight\n className=\"w-4 h-4 mt-1 opacity-40 group-hover:opacity-100 shrink-0 transition-opacity\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </motion.button>\n )\n })}\n </AnimatePresence>\n </div>\n\n {/* Show More */}\n {!showAllArticles && publishedArticles.length > 10 && (\n <div className=\"text-center mt-6\">\n <button\n onClick={() => setShowAllArticles(true)}\n className={`px-6 py-2.5 text-sm font-medium rounded-full border transition-all ${isDark ? 'hover:bg-[var(--appgram-card)]' : 'hover:bg-white/50'}`}\n style={{\n color: accentColor,\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n Show {publishedArticles.length - 10} more articles\n </button>\n </div>\n )}\n </motion.div>\n ) : debouncedQuery ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"text-center py-12\"\n >\n <p style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n No results found for \"{debouncedQuery}\"\n </p>\n </motion.div>\n ) : renderEmpty ? (\n <>{renderEmpty()}</>\n ) : (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3, duration: 0.6 }}\n className=\"text-center py-20\"\n >\n <div\n className=\"inline-flex items-center justify-center w-20 h-20 rounded-full mb-6\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)' }}\n >\n <FileText className=\"w-10 h-10\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.3)' : 'rgba(0, 0, 0, 0.3)' }} />\n </div>\n <h3 className=\"text-2xl font-semibold mb-2\" style={{ color: 'var(--appgram-foreground)' }}>\n No articles yet\n </h3>\n <p className=\"max-w-md mx-auto\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n Check back soon for help articles in this topic.\n </p>\n </motion.div>\n )}\n </div>\n </div>\n )\n}\n","/**\n * HelpArticleDetail Component\n *\n * Displays a single help article's content with glassmorphism styling.\n */\n\nimport React from 'react'\nimport DOMPurify from 'dompurify'\nimport { motion } from 'framer-motion'\nimport { ArrowLeft, FileText, Clock, Calendar } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useHelpArticle } from '../../hooks/useHelpCenter'\nimport type { HelpArticle, HelpFlow } from '../../types'\n\nexport interface HelpArticleDetailProps {\n /**\n * The article to display (either pass article object or articleSlug + flowId)\n */\n article?: HelpArticle\n\n /**\n * Article slug to fetch (alternative to passing article object)\n */\n articleSlug?: string\n\n /**\n * Flow ID for fetching article (required if using articleSlug)\n */\n flowId?: string\n\n /**\n * The parent flow (for context)\n */\n flow?: HelpFlow\n\n /**\n * Back button click handler\n */\n onBack?: () => void\n\n /**\n * Show back button\n * @default true\n */\n showBackButton?: boolean\n\n /**\n * Show article metadata (date, type)\n * @default true\n */\n showMetadata?: boolean\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nconst ARTICLE_TYPE_CONFIG = {\n guide: { label: 'Guide', color: '#3b82f6' },\n faq: { label: 'FAQ', color: '#8b5cf6' },\n tutorial: { label: 'Tutorial', color: '#10b981' },\n} as const\n\nfunction formatDate(dateString: string): string {\n const date = new Date(dateString)\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n}\n\nexport function HelpArticleDetail({\n article: providedArticle,\n articleSlug,\n flowId,\n flow,\n onBack,\n showBackButton = true,\n showMetadata = true,\n renderLoading,\n renderError,\n className,\n}: HelpArticleDetailProps): React.ReactElement | null {\n const { theme } = useAppgramContext()\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n const {\n article: fetchedArticle,\n isLoading,\n error,\n refetch,\n } = useHelpArticle({\n articleSlug: articleSlug || '',\n flowId: flowId || '',\n skip: !articleSlug || !flowId || !!providedArticle,\n })\n\n const article = providedArticle || fetchedArticle\n\n const primaryColor = theme.colors?.primary || '#6366f1'\n const accentColor = theme.colors?.accent || primaryColor\n const borderRadius = theme.borderRadius || 16\n\n // Loading state\n if (isLoading && !article) {\n if (renderLoading) return <>{renderLoading()}</>\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{ borderColor: primaryColor, borderTopColor: 'transparent' }}\n />\n </div>\n )\n }\n\n // Error state\n if (error && !article) {\n if (renderError) return <>{renderError(error, refetch)}</>\n return (\n <div className=\"text-center py-12\">\n <p className=\"text-red-600 mb-4\">{error}</p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 text-white transition-colors\"\n style={{ backgroundColor: primaryColor, borderRadius: `${borderRadius}px` }}\n >\n Try Again\n </button>\n </div>\n )\n }\n\n if (!article) return null\n\n const typeConfig = ARTICLE_TYPE_CONFIG[article.article_type as keyof typeof ARTICLE_TYPE_CONFIG]\n\n return (\n <div className={cn('w-full', className)}>\n <div className=\"max-w-4xl mx-auto px-6 py-8\">\n {/* Back Button */}\n {showBackButton && onBack && (\n <motion.button\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3 }}\n onClick={onBack}\n className=\"flex items-center gap-2 mb-6 px-4 py-2 text-sm font-medium transition-all hover:opacity-80\"\n style={{\n color: primaryColor,\n backgroundColor: `${primaryColor}10`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n {flow ? `Back to ${flow.name}` : 'Back'}\n </motion.button>\n )}\n\n {/* Article Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"mb-8\"\n >\n <div className=\"flex items-start gap-4 mb-4\">\n <div\n className=\"p-3 rounded-xl shrink-0\"\n style={{ backgroundColor: `${accentColor}15` }}\n >\n <FileText className=\"w-6 h-6\" style={{ color: accentColor }} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap mb-2\">\n {typeConfig && (\n <span\n className=\"text-xs font-medium uppercase px-2 py-0.5 rounded\"\n style={{\n backgroundColor: `${typeConfig.color}12`,\n color: typeConfig.color,\n }}\n >\n {typeConfig.label}\n </span>\n )}\n {flow && (\n <span\n className=\"text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {flow.name}\n </span>\n )}\n </div>\n <h1\n className=\"text-2xl md:text-3xl font-bold\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {article.title}\n </h1>\n </div>\n </div>\n\n {/* Metadata */}\n {showMetadata && (\n <div className=\"flex items-center gap-4 flex-wrap text-xs\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n {article.published_at && (\n <div className=\"flex items-center gap-1.5\">\n <Calendar className=\"w-3.5 h-3.5\" />\n <span>Published {formatDate(article.published_at)}</span>\n </div>\n )}\n {article.updated_at && article.updated_at !== article.published_at && (\n <div className=\"flex items-center gap-1.5\">\n <Clock className=\"w-3.5 h-3.5\" />\n <span>Updated {formatDate(article.updated_at)}</span>\n </div>\n )}\n </div>\n )}\n\n {/* Excerpt */}\n {article.excerpt && (\n <p\n className=\"mt-4 text-base leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {article.excerpt}\n </p>\n )}\n </motion.div>\n\n {/* Article Content */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2, duration: 0.5 }}\n >\n <div\n className={`p-6 md:p-8 backdrop-blur-sm border ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/70'}`}\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <div\n className=\"article-content\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(article.content) }}\n />\n </div>\n </motion.div>\n </div>\n\n {/* HTML content styling - theme aware */}\n <style>{`\n .article-content { color: ${isDark ? '#e5e5e5' : '#1f2937'}; }\n .article-content h1 { font-size: 1.875rem; font-weight: 700; margin-top: 1.5rem; margin-bottom: 1rem; line-height: 1.2; color: ${isDark ? '#e5e5e5' : '#1f2937'}; }\n .article-content h2 { font-size: 1.5rem; font-weight: 600; margin-top: 1.5rem; margin-bottom: 0.75rem; line-height: 1.3; color: ${isDark ? '#e5e5e5' : '#1f2937'}; }\n .article-content h3 { font-size: 1.25rem; font-weight: 600; margin-top: 1.25rem; margin-bottom: 0.5rem; line-height: 1.4; color: ${isDark ? '#e5e5e5' : '#1f2937'}; }\n .article-content h4 { font-size: 1.125rem; font-weight: 600; margin-top: 1rem; margin-bottom: 0.5rem; color: ${isDark ? '#e5e5e5' : '#1f2937'}; }\n .article-content p { margin-bottom: 1rem; line-height: 1.7; color: ${isDark ? 'rgba(255, 255, 255, 0.8)' : 'rgba(0, 0, 0, 0.8)'}; }\n .article-content ul, .article-content ol { margin-bottom: 1rem; padding-left: 1.5rem; }\n .article-content ul { list-style-type: disc; }\n .article-content ol { list-style-type: decimal; }\n .article-content li { margin-bottom: 0.5rem; line-height: 1.6; color: ${isDark ? 'rgba(255, 255, 255, 0.8)' : 'rgba(0, 0, 0, 0.8)'}; }\n .article-content a { color: ${accentColor}; text-decoration: underline; text-underline-offset: 2px; }\n .article-content a:hover { opacity: 0.8; }\n .article-content code {\n background-color: ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.05)'};\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n font-size: 0.875em;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n }\n .article-content pre {\n background-color: ${isDark ? '#0a0a0a' : '#1f2937'};\n color: #f3f4f6;\n padding: 1rem;\n border-radius: 0.5rem;\n overflow-x: auto;\n margin: 1rem 0;\n }\n .article-content pre code {\n background-color: transparent;\n padding: 0;\n color: inherit;\n }\n .article-content blockquote {\n border-left: 4px solid ${accentColor}40;\n padding-left: 1rem;\n margin: 1rem 0;\n font-style: italic;\n color: ${isDark ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)'};\n }\n .article-content img {\n max-width: 100%;\n height: auto;\n border-radius: 0.5rem;\n margin: 1rem 0;\n }\n .article-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 1rem 0;\n }\n .article-content th, .article-content td {\n border: 1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'};\n padding: 0.5rem 0.75rem;\n text-align: left;\n }\n .article-content th {\n background-color: ${isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.03)'};\n font-weight: 600;\n }\n .article-content hr {\n border: none;\n border-top: 1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'};\n margin: 2rem 0;\n }\n `}</style>\n </div>\n )\n}\n","/**\n * HelpCenter Component\n *\n * Complete help center with navigation between collections, articles, and article detail.\n * Handles all state management internally for a seamless user experience.\n *\n * @example\n * ```tsx\n * import { HelpCenter } from '@appgram/react'\n *\n * <HelpCenter\n * heading=\"Help Center\"\n * description=\"How can we help you today?\"\n * showSearch\n * showFooter\n * quickActions={[\n * { label: 'Submit Ticket', onClick: () => router.push('/support') },\n * { label: 'Live Chat', onClick: () => openChat() },\n * ]}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Grid variant with featured articles\n * <HelpCenter\n * variant=\"grid\"\n * featuredArticles={topArticles}\n * onLiveChatClick={() => window.Intercom?.('show')}\n * />\n * ```\n */\n\nimport React, { useState, useCallback } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { HelpCollections, type QuickAction } from './HelpCollections'\nimport { HelpArticles } from './HelpArticles'\nimport { HelpArticleDetail } from './HelpArticleDetail'\nimport { cn } from '../../utils/cn'\nimport type { HelpFlow, HelpArticle } from '../../types'\n\ntype ViewState =\n | { type: 'collections' }\n | { type: 'flow'; flow: HelpFlow }\n | { type: 'article'; article: HelpArticle; flow: HelpFlow | null }\n\nexport interface HelpCenterProps {\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'center'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Featured articles to display on the main view\n */\n featuredArticles?: HelpArticle[]\n\n /**\n * Show search input\n * @default true\n */\n showSearch?: boolean\n\n /**\n * Quick action buttons to display\n */\n quickActions?: QuickAction[]\n\n /**\n * Show contact support footer\n * @default true\n */\n showFooter?: boolean\n\n /**\n * Contact support URL\n */\n contactSupportUrl?: string\n\n /**\n * Live chat handler\n */\n onLiveChatClick?: () => void\n\n /**\n * Layout variant for collections\n * @default 'grid'\n */\n variant?: 'grid' | 'list'\n\n /**\n * External callback when flow is clicked (for custom routing)\n * If not provided, internal navigation is used\n */\n onFlowClick?: (flow: HelpFlow) => void\n\n /**\n * External callback when article is clicked (for custom routing)\n * If not provided, internal navigation is used\n */\n onArticleClick?: (article: HelpArticle, flow: HelpFlow | null) => void\n\n /**\n * Use external routing instead of internal state management\n * Set to true if you want to handle navigation yourself via onFlowClick/onArticleClick\n * @default false\n */\n useExternalRouting?: boolean\n\n /**\n * Custom render function for loading state\n */\n renderLoading?: () => React.ReactNode\n\n /**\n * Custom render function for empty state\n */\n renderEmpty?: () => React.ReactNode\n\n /**\n * Custom render function for error state\n */\n renderError?: (error: string, retry: () => void) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nexport function HelpCenter({\n heading = 'Help Center',\n description = 'How can we help you today?',\n headingAlignment = 'center',\n featuredArticles,\n showSearch = true,\n quickActions,\n showFooter = true,\n contactSupportUrl,\n onLiveChatClick,\n variant = 'grid',\n onFlowClick: externalFlowClick,\n onArticleClick: externalArticleClick,\n useExternalRouting = false,\n renderLoading,\n renderEmpty,\n renderError,\n className,\n}: HelpCenterProps): React.ReactElement {\n const [viewState, setViewState] = useState<ViewState>({ type: 'collections' })\n\n // Handle flow click\n const handleFlowClick = useCallback(\n (flow: HelpFlow) => {\n if (useExternalRouting && externalFlowClick) {\n externalFlowClick(flow)\n } else {\n setViewState({ type: 'flow', flow })\n }\n },\n [useExternalRouting, externalFlowClick]\n )\n\n // Handle article click from collections view (featured articles)\n const handleArticleClickFromCollections = useCallback(\n (article: HelpArticle, flow: HelpFlow) => {\n if (useExternalRouting && externalArticleClick) {\n externalArticleClick(article, flow)\n } else {\n setViewState({ type: 'article', article, flow })\n }\n },\n [useExternalRouting, externalArticleClick]\n )\n\n // Handle article click from flow view\n const handleArticleClickFromFlow = useCallback(\n (article: HelpArticle) => {\n if (useExternalRouting && externalArticleClick) {\n externalArticleClick(article, viewState.type === 'flow' ? viewState.flow : null)\n } else {\n const flow = viewState.type === 'flow' ? viewState.flow : null\n setViewState({ type: 'article', article, flow })\n }\n },\n [useExternalRouting, externalArticleClick, viewState]\n )\n\n // Navigate back to collections\n const handleBackToCollections = useCallback(() => {\n setViewState({ type: 'collections' })\n }, [])\n\n // Navigate back to flow from article\n const handleBackToFlow = useCallback(() => {\n if (viewState.type === 'article' && viewState.flow) {\n setViewState({ type: 'flow', flow: viewState.flow })\n } else {\n setViewState({ type: 'collections' })\n }\n }, [viewState])\n\n // Animation variants\n const pageVariants = {\n initial: { opacity: 0, x: 20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -20 },\n }\n\n return (\n <div className={cn('w-full', className)}>\n <AnimatePresence mode=\"wait\">\n {viewState.type === 'collections' && (\n <motion.div\n key=\"collections\"\n variants={pageVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{ duration: 0.3 }}\n >\n <HelpCollections\n heading={heading}\n description={description}\n headingAlignment={headingAlignment}\n featuredArticles={featuredArticles}\n showSearch={showSearch}\n quickActions={quickActions}\n showFooter={showFooter}\n contactSupportUrl={contactSupportUrl}\n onLiveChatClick={onLiveChatClick}\n variant={variant}\n onFlowClick={handleFlowClick}\n onArticleClick={handleArticleClickFromCollections}\n renderLoading={renderLoading}\n renderEmpty={renderEmpty}\n renderError={renderError}\n />\n </motion.div>\n )}\n\n {viewState.type === 'flow' && (\n <motion.div\n key={`flow-${viewState.flow.id}`}\n variants={pageVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{ duration: 0.3 }}\n >\n <HelpArticles\n flow={viewState.flow}\n onArticleClick={handleArticleClickFromFlow}\n onBack={handleBackToCollections}\n showSearch={showSearch}\n renderLoading={renderLoading}\n renderEmpty={renderEmpty}\n renderError={renderError}\n />\n </motion.div>\n )}\n\n {viewState.type === 'article' && (\n <motion.div\n key={`article-${viewState.article.id}`}\n variants={pageVariants}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n transition={{ duration: 0.3 }}\n >\n <HelpArticleDetail\n article={viewState.article}\n flow={viewState.flow || undefined}\n onBack={handleBackToFlow}\n renderLoading={renderLoading}\n renderError={renderError}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n","/**\n * SupportForm Component\n *\n * Modern support form with animations for submitting and tracking support tickets.\n * Adapted from SupportModern variant.\n *\n * @example\n * ```tsx\n * import { SupportForm } from '@appgram/react'\n *\n * <SupportForm\n * heading=\"Contact Support\"\n * description=\"We're here to help\"\n * showCategory\n * showName\n * showAttachments\n * onSubmitSuccess={(ticket) => console.log('Created:', ticket.id)}\n * onSubmitError={(error) => toast.error(error)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With status check enabled\n * <SupportForm\n * heading=\"Get Help\"\n * showCheckStatus\n * checkTitle=\"Check Your Tickets\"\n * checkDescription=\"Enter your email to find existing tickets\"\n * onCheckStatus={(email) => sendMagicLink(email)}\n * />\n * ```\n */\n\nimport React, { useState } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport {\n Send,\n Search,\n Upload,\n FileText,\n X,\n MessageSquare,\n HelpCircle,\n CheckCircle2,\n Mail,\n AlertCircle,\n ChevronRight,\n ArrowLeft,\n} from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport { useSupport } from '../../hooks/useSupport'\nimport type { SupportRequestCategory, SupportRequest } from '../../types'\n\n// Status configuration for tickets\nconst statusConfig: Record<\n string,\n { label: string; color: string; bgColor: string }\n> = {\n open: { label: 'Open', color: '#3b82f6', bgColor: '#3b82f615' },\n in_progress: { label: 'In Progress', color: '#f59e0b', bgColor: '#f59e0b15' },\n waiting_on_customer: {\n label: 'Awaiting Reply',\n color: '#8b5cf6',\n bgColor: '#8b5cf615',\n },\n resolved: { label: 'Resolved', color: '#10b981', bgColor: '#10b98115' },\n closed: { label: 'Closed', color: '#6b7280', bgColor: '#6b728015' },\n}\n\nexport interface SupportFormProps {\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Submit section title\n */\n submitTitle?: string\n\n /**\n * Submit section description\n */\n submitDescription?: string\n\n /**\n * Check status section title\n */\n checkTitle?: string\n\n /**\n * Check status section description\n */\n checkDescription?: string\n\n /**\n * Callback when ticket is successfully submitted\n */\n onSubmitSuccess?: (ticket: SupportRequest) => void\n\n /**\n * Callback when submission fails\n */\n onSubmitError?: (error: string) => void\n\n /**\n * Callback when checking status (optional - uses magic link by default)\n */\n onCheckStatus?: (email: string) => void\n\n /**\n * Callback when a ticket is clicked\n */\n onTicketClick?: (ticket: SupportRequest) => void\n\n /**\n * Show category selector\n * @default true\n */\n showCategory?: boolean\n\n /**\n * Show name field\n * @default true\n */\n showName?: boolean\n\n /**\n * Show check status tab\n * @default true\n */\n showCheckStatus?: boolean\n\n /**\n * Show file attachments\n * @default true\n */\n showAttachments?: boolean\n\n /**\n * Submit button text\n * @default 'Send Request'\n */\n submitButtonText?: string\n\n /**\n * Access token for viewing tickets (from magic link)\n */\n accessToken?: string\n\n /**\n * Custom class name\n */\n className?: string\n}\n\nconst categoryOptions: { value: SupportRequestCategory; label: string }[] = [\n { value: 'general_inquiry', label: 'General Inquiry' },\n { value: 'bug_report', label: 'Bug Report' },\n { value: 'feature_request', label: 'Feature Request' },\n { value: 'billing', label: 'Billing' },\n { value: 'account', label: 'Account' },\n]\n\nexport function SupportForm({\n heading,\n description,\n headingAlignment = 'left',\n submitTitle = 'Submit a Request',\n submitDescription = \"Describe your issue and we'll get back to you as soon as possible.\",\n checkTitle = 'Check Status',\n checkDescription = 'Track the progress of your existing support requests.',\n onSubmitSuccess,\n onSubmitError,\n onCheckStatus,\n onTicketClick,\n showCategory = true,\n showName = true,\n showCheckStatus = true,\n showAttachments = true,\n submitButtonText = 'Send Request',\n accessToken,\n className,\n}: SupportFormProps): React.ReactElement {\n const { theme } = useAppgramContext()\n const {\n submitTicket,\n isSubmitting,\n error,\n successMessage,\n clearMessages,\n requestMagicLink,\n isSendingMagicLink,\n verifyToken,\n isVerifying,\n } = useSupport({\n onSubmitSuccess,\n onSubmitError,\n })\n\n const [activeTab, setActiveTab] = useState<'submit' | 'check'>('submit')\n const [formData, setFormData] = useState({\n subject: '',\n description: '',\n user_email: '',\n user_name: '',\n category: 'general_inquiry' as SupportRequestCategory,\n })\n const [checkEmail, setCheckEmail] = useState('')\n const [attachments, setAttachments] = useState<File[]>([])\n const [magicLinkSent, setMagicLinkSent] = useState(false)\n const [tickets, setTickets] = useState<SupportRequest[]>([])\n const [ticketsEmail, setTicketsEmail] = useState('')\n const [showingTickets, setShowingTickets] = useState(false)\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const isValidEmail = (email: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n if (!isValidEmail(formData.user_email)) return\n clearMessages()\n\n const result = await submitTicket({\n subject: formData.subject,\n description: formData.description,\n user_email: formData.user_email,\n user_name: showName ? formData.user_name : undefined,\n category: showCategory ? formData.category : undefined,\n attachments: showAttachments && attachments.length > 0 ? attachments : undefined,\n })\n\n if (result) {\n setFormData({\n subject: '',\n description: '',\n user_email: '',\n user_name: '',\n category: 'general_inquiry',\n })\n setAttachments([])\n }\n }\n\n const handleCheckStatus = async (e: React.FormEvent) => {\n e.preventDefault()\n if (!checkEmail || !isValidEmail(checkEmail)) return\n\n // If custom handler provided, use it\n if (onCheckStatus) {\n onCheckStatus(checkEmail)\n return\n }\n\n // Otherwise use magic link flow\n const success = await requestMagicLink(checkEmail)\n if (success) {\n setMagicLinkSent(true)\n }\n }\n\n // Verify token on mount if provided\n React.useEffect(() => {\n if (accessToken) {\n verifyToken(accessToken).then((result) => {\n if (result) {\n setTickets(result.tickets)\n setTicketsEmail(result.userEmail)\n setShowingTickets(true)\n setActiveTab('check')\n }\n })\n }\n }, [accessToken, verifyToken])\n\n const formatDate = (date: string) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n }\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n ) => {\n const { name, value } = e.target\n setFormData((prev) => ({ ...prev, [name]: value }))\n }\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(e.target.files || [])\n setAttachments((prev) => [...prev, ...files])\n }\n\n const removeAttachment = (index: number) => {\n setAttachments((prev) => prev.filter((_, i) => i !== index))\n }\n\n // Success state\n if (successMessage) {\n return (\n <div className={cn('max-w-3xl mx-auto', className)}>\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n className=\"text-center py-16\"\n >\n <div\n className=\"inline-flex items-center justify-center w-16 h-16 rounded-full mb-6\"\n style={{ backgroundColor: '#10b98115' }}\n >\n <CheckCircle2 className=\"w-8 h-8\" style={{ color: '#10b981' }} />\n </div>\n <h2\n className=\"text-2xl font-bold mb-3\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Request Submitted\n </h2>\n <p\n className=\"text-base leading-relaxed mb-6\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n We've received your request and will get back to you at {formData.user_email || 'your email'}.\n </p>\n <button\n onClick={clearMessages}\n className=\"px-6 py-3 text-white font-medium transition-all hover:shadow-lg\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n Submit Another Request\n </button>\n </motion.div>\n </div>\n )\n }\n\n return (\n <div className={cn('max-w-3xl mx-auto', className)}>\n {/* Page Header */}\n {(heading || description) && (\n <motion.header\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-10\"\n style={{ textAlign: headingAlignment }}\n >\n {heading && (\n <h1\n className=\"text-3xl md:text-4xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {heading}\n </h1>\n )}\n {description && (\n <p\n className=\"text-base md:text-lg leading-relaxed max-w-2xl\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n marginLeft: headingAlignment === 'center' ? 'auto' : 0,\n marginRight: headingAlignment === 'center' ? 'auto' : 0,\n }}\n >\n {description}\n </p>\n )}\n </motion.header>\n )}\n\n {/* Tab Switcher */}\n {showCheckStatus && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"flex gap-1 p-1 rounded-lg mb-8 max-w-xs\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.04)' : 'rgba(0, 0, 0, 0.04)' }}\n >\n <button\n onClick={() => setActiveTab('submit')}\n className=\"flex-1 py-2 px-4 rounded-md text-sm font-medium transition-all\"\n style={{\n backgroundColor: activeTab === 'submit' ? (isDark ? 'var(--appgram-card)' : 'white') : 'transparent',\n color: activeTab === 'submit' ? 'var(--appgram-foreground)' : (isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)'),\n boxShadow: activeTab === 'submit' ? (isDark ? '0 1px 3px rgba(0,0,0,0.3)' : '0 1px 3px rgba(0,0,0,0.1)') : 'none',\n }}\n >\n Submit Request\n </button>\n <button\n onClick={() => setActiveTab('check')}\n className=\"flex-1 py-2 px-4 rounded-md text-sm font-medium transition-all\"\n style={{\n backgroundColor: activeTab === 'check' ? (isDark ? 'var(--appgram-card)' : 'white') : 'transparent',\n color: activeTab === 'check' ? 'var(--appgram-foreground)' : (isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)'),\n boxShadow: activeTab === 'check' ? (isDark ? '0 1px 3px rgba(0,0,0,0.3)' : '0 1px 3px rgba(0,0,0,0.1)') : 'none',\n }}\n >\n Check Status\n </button>\n </motion.div>\n )}\n\n {/* Content Area */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n >\n {activeTab === 'submit' ? (\n <div\n className=\"rounded-lg border p-6\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n {/* Header */}\n <div className=\"flex items-start gap-4 mb-6\">\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center shrink-0\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <MessageSquare\n className=\"w-5 h-5\"\n style={{ color: primaryColor }}\n />\n </div>\n <div>\n <h2\n className=\"text-lg font-semibold mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {submitTitle}\n </h2>\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {submitDescription}\n </p>\n </div>\n </div>\n\n {/* Error Message */}\n {error && (\n <div\n className=\"p-3 text-sm mb-4\"\n style={{\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n color: '#dc2626',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n {error}\n </div>\n )}\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* Name Field */}\n {showName && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Name\n </label>\n <input\n type=\"text\"\n name=\"user_name\"\n placeholder=\"Your name\"\n value={formData.user_name}\n onChange={handleChange}\n maxLength={100}\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n />\n </div>\n )}\n\n {/* Email Field */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Email Address <span style={{ color: '#dc2626' }}>*</span>\n </label>\n <input\n type=\"email\"\n name=\"user_email\"\n placeholder=\"you@example.com\"\n value={formData.user_email}\n onChange={handleChange}\n required\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n />\n </div>\n\n {/* Category Field */}\n {showCategory && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Category\n </label>\n <select\n name=\"category\"\n value={formData.category}\n onChange={handleChange}\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all appearance-none\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n {categoryOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Subject Field */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Subject <span style={{ color: '#dc2626' }}>*</span>\n </label>\n <input\n type=\"text\"\n name=\"subject\"\n placeholder=\"Brief description of your issue\"\n value={formData.subject}\n onChange={handleChange}\n required\n maxLength={200}\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n />\n </div>\n\n {/* Description Field */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Message <span style={{ color: '#dc2626' }}>*</span>\n </label>\n <textarea\n name=\"description\"\n placeholder=\"Describe your issue in detail...\"\n value={formData.description}\n onChange={handleChange}\n required\n maxLength={2000}\n rows={5}\n className=\"w-full px-4 py-3 text-sm border focus:outline-none focus:ring-2 resize-none transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n />\n </div>\n\n {/* Attachments */}\n {showAttachments && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n Attachments (optional)\n </label>\n <div\n className=\"border border-dashed rounded-lg p-6 text-center transition-opacity hover:opacity-70\"\n style={{\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.15)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n <input\n type=\"file\"\n multiple\n onChange={handleFileChange}\n className=\"hidden\"\n id=\"file-upload\"\n />\n <label htmlFor=\"file-upload\" className=\"cursor-pointer\">\n <Upload\n className=\"w-6 h-6 mx-auto mb-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n <p\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Click to upload files\n </p>\n </label>\n </div>\n\n {attachments.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mt-3\">\n {attachments.map((file, index) => (\n <div\n key={index}\n className=\"flex items-center gap-2 px-3 py-1.5 rounded-md text-sm\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.04)',\n color: 'var(--appgram-foreground)',\n }}\n >\n <FileText className=\"w-3.5 h-3.5\" />\n <span className=\"max-w-[120px] truncate\">{file.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAttachment(index)}\n className=\"transition-opacity hover:opacity-70\"\n >\n <X className=\"w-3.5 h-3.5\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Submit Button */}\n <button\n type=\"submit\"\n className=\"w-full flex items-center justify-center gap-2 py-3 text-white font-medium transition-all hover:shadow-lg disabled:opacity-50\"\n disabled={isSubmitting}\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n {isSubmitting ? (\n 'Sending...'\n ) : (\n <>\n <Send className=\"w-4 h-4\" />\n {submitButtonText}\n </>\n )}\n </button>\n </form>\n </div>\n ) : showingTickets ? (\n /* Ticket List View */\n <div\n className=\"rounded-lg border p-6\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-6\">\n <div className=\"flex items-start gap-4\">\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center shrink-0\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <MessageSquare\n className=\"w-5 h-5\"\n style={{ color: primaryColor }}\n />\n </div>\n <div>\n <h2\n className=\"text-lg font-semibold mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Your Requests\n </h2>\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {ticketsEmail}\n </p>\n </div>\n </div>\n <button\n onClick={() => {\n setShowingTickets(false)\n setTickets([])\n setMagicLinkSent(false)\n }}\n className=\"text-sm flex items-center gap-1 transition-opacity hover:opacity-70\"\n style={{ color: primaryColor }}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n Back\n </button>\n </div>\n\n {/* Loading State */}\n {isVerifying && (\n <div className=\"flex items-center justify-center py-12\">\n <div\n className=\"w-8 h-8 border-2 border-t-transparent rounded-full animate-spin\"\n style={{\n borderColor: primaryColor,\n borderTopColor: 'transparent',\n }}\n />\n </div>\n )}\n\n {/* Ticket List */}\n {!isVerifying && tickets.length > 0 && (\n <div className=\"space-y-3\">\n <AnimatePresence>\n {tickets.map((ticket, index) => {\n const status =\n statusConfig[ticket.status] || statusConfig.open\n return (\n <motion.div\n key={ticket.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0 }}\n transition={{ delay: index * 0.05 }}\n whileHover={{ y: -2 }}\n className=\"group cursor-pointer rounded-lg border p-4 transition-all\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.02)' : 'rgba(255, 255, 255, 0.5)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n onClick={() => onTicketClick?.(ticket)}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-2\">\n <span\n className=\"text-xs font-medium px-2 py-0.5 rounded\"\n style={{\n backgroundColor: status.bgColor,\n color: status.color,\n }}\n >\n {status.label}\n </span>\n {ticket.category && (\n <span\n className=\"text-xs px-2 py-0.5 rounded\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.04)',\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n }}\n >\n {ticket.category.replace('_', ' ')}\n </span>\n )}\n </div>\n <h3\n className=\"font-medium text-base mb-1 truncate transition-opacity group-hover:opacity-70\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {ticket.subject}\n </h3>\n <p\n className=\"text-sm truncate\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {ticket.description}\n </p>\n </div>\n <div className=\"flex items-center gap-3 shrink-0\">\n <span\n className=\"text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {formatDate(ticket.created_at)}\n </span>\n <ChevronRight\n className=\"w-4 h-4 opacity-0 group-hover:opacity-100 transition-opacity\"\n style={{ color: primaryColor }}\n />\n </div>\n </div>\n </motion.div>\n )\n })}\n </AnimatePresence>\n </div>\n )}\n\n {/* Empty State */}\n {!isVerifying && tickets.length === 0 && (\n <div className=\"text-center py-12\">\n <div\n className=\"inline-flex items-center justify-center w-12 h-12 rounded-full mb-4\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.04)' }}\n >\n <MessageSquare\n className=\"w-6 h-6\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </div>\n <h3\n className=\"text-base font-semibold mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n No requests found\n </h3>\n <p\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n You haven't submitted any support requests yet.\n </p>\n <button\n onClick={() => setActiveTab('submit')}\n className=\"mt-4 px-4 py-2 text-sm font-medium text-white transition-all hover:shadow-lg\"\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n Submit a Request\n </button>\n </div>\n )}\n </div>\n ) : magicLinkSent ? (\n /* Magic Link Sent Success State */\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n className=\"rounded-lg border p-6 text-center\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n <div\n className=\"inline-flex items-center justify-center w-16 h-16 rounded-full mb-6\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <Mail className=\"w-8 h-8\" style={{ color: primaryColor }} />\n </div>\n <h2\n className=\"text-2xl font-bold mb-3\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Check Your Email\n </h2>\n <p\n className=\"text-base leading-relaxed mb-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n We've sent a magic link to <strong>{checkEmail}</strong>\n </p>\n <p\n className=\"text-sm mb-6\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Click the link in the email to view your support requests.\n </p>\n <button\n onClick={() => {\n setMagicLinkSent(false)\n setCheckEmail('')\n }}\n className=\"text-sm font-medium transition-opacity hover:opacity-70\"\n style={{ color: primaryColor }}\n >\n Use a different email\n </button>\n </motion.div>\n ) : (\n /* Check Status Form */\n <div\n className=\"rounded-lg border p-6\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n {/* Header */}\n <div className=\"flex items-start gap-4 mb-6\">\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center shrink-0\"\n style={{ backgroundColor: `${primaryColor}15` }}\n >\n <Search className=\"w-5 h-5\" style={{ color: primaryColor }} />\n </div>\n <div>\n <h2\n className=\"text-lg font-semibold mb-1\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {checkTitle}\n </h2>\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)' }}\n >\n {checkDescription}\n </p>\n </div>\n </div>\n\n {/* Error Message */}\n {error && activeTab === 'check' && (\n <div\n className=\"p-3 text-sm mb-4 flex items-center gap-2\"\n style={{\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n color: '#dc2626',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n <AlertCircle className=\"w-4 h-4 shrink-0\" />\n {error}\n </div>\n )}\n\n {/* Form */}\n <form onSubmit={handleCheckStatus} className=\"space-y-5\">\n <div className=\"space-y-2\">\n <label\n className=\"text-sm font-medium\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Email Address\n </label>\n <input\n type=\"email\"\n placeholder=\"Enter the email you used to submit\"\n value={checkEmail}\n onChange={(e) => setCheckEmail(e.target.value)}\n required\n className=\"w-full h-10 px-4 text-sm border focus:outline-none focus:ring-2 transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'white',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n color: 'var(--appgram-foreground)',\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n />\n </div>\n\n <button\n type=\"submit\"\n className=\"w-full flex items-center justify-center gap-2 py-3 text-white font-medium transition-all hover:shadow-lg disabled:opacity-50\"\n disabled={isSendingMagicLink}\n style={{\n backgroundColor: primaryColor,\n borderRadius: `${Math.min(borderRadius, 8)}px`,\n }}\n >\n {isSendingMagicLink ? (\n <>\n <div\n className=\"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin\"\n />\n Sending...\n </>\n ) : (\n <>\n <Search className=\"w-4 h-4\" style={{ color: 'white' }} />\n Find My Requests\n </>\n )}\n </button>\n </form>\n\n <div\n className=\"mt-6 pt-6 border-t text-center\"\n style={{ borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)' }}\n >\n <HelpCircle\n className=\"w-6 h-6 mx-auto mb-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.3)' : 'rgba(0, 0, 0, 0.3)' }}\n />\n <p className=\"text-sm\" style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}>\n You'll receive a magic link to view your tickets\n </p>\n </div>\n </div>\n )}\n </motion.div>\n </div>\n )\n}\n","/**\n * StatusBoard Component\n *\n * Modern system status page with service health indicators and incident tracking.\n * Adapted from StatusModern variant.\n *\n * @example\n * ```tsx\n * import { StatusBoard } from '@appgram/react'\n *\n * <StatusBoard\n * heading=\"System Status\"\n * description=\"Current operational status of all services\"\n * status={statusData}\n * onIncidentClick={(incident) => openIncidentDetail(incident.id)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom component rendering\n * <StatusBoard\n * status={statusData}\n * renderComponent={(component) => (\n * <div className=\"custom-card\">\n * <Icon name={component.status} />\n * <span>{component.name}</span>\n * </div>\n * )}\n * />\n * ```\n */\n\nimport React from 'react'\nimport { motion } from 'framer-motion'\nimport {\n CheckCircle2,\n AlertTriangle,\n XCircle,\n Activity,\n ArrowRight,\n Clock,\n} from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\n\n// Status types\nexport type OverallStatus =\n | 'operational'\n | 'degraded'\n | 'partial_outage'\n | 'major_outage'\n\nexport type ComponentStatus =\n | 'operational'\n | 'degraded'\n | 'partial_outage'\n | 'major_outage'\n\nexport type IncidentStatus =\n | 'investigating'\n | 'identified'\n | 'monitoring'\n | 'resolved'\n\nexport type IncidentImpact = 'minor' | 'major' | 'critical'\n\nexport interface StatusComponent {\n id: string\n name: string\n description?: string\n status: ComponentStatus\n group?: string\n}\n\nexport interface IncidentUpdate {\n id: string\n message: string\n status: IncidentStatus\n created_at: string\n}\n\nexport interface StatusIncident {\n id: string\n title: string\n status: IncidentStatus\n impact: IncidentImpact\n created_at: string\n resolved_at?: string | null\n updates: IncidentUpdate[]\n affected_components?: string[]\n}\n\nexport interface StatusData {\n overall_status: OverallStatus\n components: StatusComponent[]\n incidents: StatusIncident[]\n last_updated?: string\n}\n\nexport interface StatusBoardProps {\n /**\n * Status data to display\n */\n status: StatusData\n\n /**\n * Page heading\n */\n heading?: string\n\n /**\n * Page description\n */\n description?: string\n\n /**\n * Heading alignment\n * @default 'left'\n */\n headingAlignment?: 'left' | 'center' | 'right'\n\n /**\n * Show component descriptions\n * @default true\n */\n showComponentDescriptions?: boolean\n\n /**\n * Show incident history\n * @default true\n */\n showIncidentHistory?: boolean\n\n /**\n * Max number of past incidents to show\n * @default 5\n */\n maxPastIncidents?: number\n\n /**\n * Click handler for incidents\n */\n onIncidentClick?: (incident: StatusIncident) => void\n\n /**\n * Custom render for overall status\n */\n renderOverallStatus?: (status: OverallStatus) => React.ReactNode\n\n /**\n * Custom render for component\n */\n renderComponent?: (component: StatusComponent) => React.ReactNode\n\n /**\n * Custom render for incident\n */\n renderIncident?: (incident: StatusIncident) => React.ReactNode\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Overall status configuration\nconst overallStatusConfig: Record<\n OverallStatus,\n { label: string; color: string; icon: typeof CheckCircle2 }\n> = {\n operational: {\n label: 'All Systems Operational',\n color: '#10b981',\n icon: CheckCircle2,\n },\n degraded: {\n label: 'Partial System Degradation',\n color: '#f59e0b',\n icon: AlertTriangle,\n },\n partial_outage: {\n label: 'Partial System Outage',\n color: '#f97316',\n icon: AlertTriangle,\n },\n major_outage: {\n label: 'Major System Outage',\n color: '#ef4444',\n icon: XCircle,\n },\n}\n\n// Component status configuration\nconst componentStatusConfig: Record<\n ComponentStatus,\n { label: string; color: string }\n> = {\n operational: { label: 'Operational', color: '#10b981' },\n degraded: { label: 'Degraded', color: '#f59e0b' },\n partial_outage: { label: 'Partial Outage', color: '#f97316' },\n major_outage: { label: 'Major Outage', color: '#ef4444' },\n}\n\n// Incident status configuration\nconst incidentStatusConfig: Record<\n IncidentStatus,\n { label: string; color: string }\n> = {\n investigating: { label: 'Investigating', color: '#f59e0b' },\n identified: { label: 'Identified', color: '#f97316' },\n monitoring: { label: 'Monitoring', color: '#3b82f6' },\n resolved: { label: 'Resolved', color: '#10b981' },\n}\n\n// Impact configuration\nconst impactConfig: Record<IncidentImpact, { label: string; color: string }> = {\n minor: { label: 'Minor', color: '#6b7280' },\n major: { label: 'Major', color: '#f59e0b' },\n critical: { label: 'Critical', color: '#ef4444' },\n}\n\n// Status dot component\nfunction StatusDot({\n status,\n primaryColor,\n}: {\n status: ComponentStatus\n primaryColor?: string\n}) {\n const config = componentStatusConfig[status]\n const color = status === 'operational' && primaryColor ? primaryColor : config.color\n\n return (\n <div className=\"relative flex h-2.5 w-2.5\">\n {status !== 'operational' && (\n <motion.span\n animate={{ scale: [1, 1.5], opacity: [0.5, 0] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: 'easeOut' }}\n className=\"absolute inline-flex h-full w-full rounded-full opacity-75\"\n style={{ backgroundColor: color }}\n />\n )}\n <span\n className=\"relative inline-flex rounded-full h-2.5 w-2.5\"\n style={{ backgroundColor: color }}\n />\n </div>\n )\n}\n\nexport function StatusBoard({\n status,\n heading,\n description,\n headingAlignment = 'left',\n showComponentDescriptions = true,\n showIncidentHistory = true,\n maxPastIncidents = 5,\n onIncidentClick,\n renderOverallStatus,\n renderComponent,\n renderIncident,\n className,\n}: StatusBoardProps): React.ReactElement {\n const { theme } = useAppgramContext()\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const overallConfig = overallStatusConfig[status.overall_status]\n const OverallIcon = overallConfig.icon\n const activeIncidents = status.incidents.filter((i) => i.status !== 'resolved')\n const resolvedIncidents = status.incidents.filter((i) => i.status === 'resolved')\n\n const formatDate = (date: string) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n }\n\n const formatDateTime = (date: string) => {\n return new Date(date).toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })\n }\n\n // Group components by group name\n const componentGroups = status.components.reduce(\n (acc, component) => {\n const group = component.group || 'Services'\n if (!acc[group]) acc[group] = []\n acc[group].push(component)\n return acc\n },\n {} as Record<string, StatusComponent[]>\n )\n\n return (\n <div className={cn('max-w-4xl mx-auto space-y-8', className)}>\n {/* Page Header */}\n {(heading || description) && (\n <motion.header\n initial={{ opacity: 0, y: -20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n style={{ textAlign: headingAlignment }}\n >\n {heading && (\n <h1\n className=\"text-3xl md:text-4xl font-bold mb-4\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {heading}\n </h1>\n )}\n {description && (\n <p\n className=\"text-base md:text-lg leading-relaxed max-w-2xl\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.6)',\n marginLeft: headingAlignment === 'center' ? 'auto' : 0,\n marginRight: headingAlignment === 'center' ? 'auto' : 0,\n }}\n >\n {description}\n </p>\n )}\n </motion.header>\n )}\n\n {/* Overall Status Hero */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4 }}\n >\n {renderOverallStatus ? (\n renderOverallStatus(status.overall_status)\n ) : (\n <div\n className=\"flex flex-col sm:flex-row items-center justify-between p-5 border rounded-lg\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor:\n status.overall_status === 'operational'\n ? (isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.1)')\n : overallConfig.color,\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n <div className=\"flex items-center gap-4\">\n <div\n className=\"flex items-center justify-center w-12 h-12 rounded-full\"\n style={{ backgroundColor: `${overallConfig.color}15` }}\n >\n <OverallIcon\n className=\"w-6 h-6\"\n style={{ color: overallConfig.color }}\n />\n </div>\n <div>\n <h2\n className=\"text-xl sm:text-2xl font-bold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {overallConfig.label}\n </h2>\n </div>\n </div>\n <div\n className=\"mt-4 sm:mt-0 text-sm font-medium flex items-center gap-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <Clock className=\"w-4 h-4\" />\n <span>\n Updated{' '}\n {status.last_updated\n ? formatDateTime(status.last_updated)\n : new Date().toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: 'numeric',\n })}\n </span>\n </div>\n </div>\n )}\n </motion.div>\n\n {/* Active Incidents */}\n {activeIncidents.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n >\n <div className=\"flex items-center gap-2 mb-4\">\n <AlertTriangle className=\"w-5 h-5\" style={{ color: '#f59e0b' }} />\n <h2\n className=\"text-lg font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Active Incidents\n </h2>\n </div>\n\n <div className=\"space-y-4\">\n {activeIncidents.map((incident) => {\n const incidentConfig = incidentStatusConfig[incident.status]\n const impact = impactConfig[incident.impact]\n\n return renderIncident ? (\n <React.Fragment key={incident.id}>\n {renderIncident(incident)}\n </React.Fragment>\n ) : (\n <motion.div\n key={incident.id}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"rounded-lg border overflow-hidden\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n {/* Incident Header */}\n <div\n className=\"px-6 py-4 border-b\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.02)' : 'rgba(0, 0, 0, 0.02)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n }}\n >\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <span\n className=\"text-xs font-bold uppercase px-2 py-0.5 rounded border\"\n style={{\n color: incidentConfig.color,\n borderColor: `${incidentConfig.color}40`,\n backgroundColor: `${incidentConfig.color}10`,\n }}\n >\n {incidentConfig.label}\n </span>\n <span\n className=\"text-xs font-medium px-2 py-0.5 rounded\"\n style={{\n color: impact.color,\n backgroundColor: `${impact.color}15`,\n }}\n >\n {impact.label}\n </span>\n </div>\n <h3\n className=\"text-lg font-semibold\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {incident.title}\n </h3>\n </div>\n <div\n className=\"text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {formatDate(incident.created_at)}\n </div>\n </div>\n </div>\n\n {/* Incident Updates Timeline */}\n <div className=\"px-6 py-6 space-y-6\">\n {incident.updates.map((update, idx) => (\n <div\n key={update.id}\n className=\"relative pl-6\"\n >\n {/* Timeline line */}\n {idx !== incident.updates.length - 1 && (\n <div\n className=\"absolute left-[3px] top-2 bottom-[-24px] w-[2px]\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)' }}\n />\n )}\n {/* Dot */}\n <div\n className=\"absolute left-0 top-1.5 w-2 h-2 rounded-full\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.3)' : '#1f2937' }}\n />\n\n <div className=\"space-y-1\">\n <p\n className=\"text-sm leading-relaxed\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {update.message}\n </p>\n <div\n className=\"flex items-center gap-2 text-xs\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <span>{formatDateTime(update.created_at)}</span>\n <span>—</span>\n <span className=\"capitalize\">\n {update.status.replace('_', ' ')}\n </span>\n </div>\n </div>\n </div>\n ))}\n </div>\n </motion.div>\n )\n })}\n </div>\n </motion.div>\n )}\n\n {/* System Components */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 }}\n >\n <h2 className=\"text-lg font-semibold mb-4\" style={{ color: 'var(--appgram-foreground)' }}>\n System Status\n </h2>\n\n {Object.entries(componentGroups).map(([groupName, components]) => (\n <div key={groupName} className=\"mb-6 last:mb-0\">\n {Object.keys(componentGroups).length > 1 && (\n <h3\n className=\"text-sm font-medium uppercase mb-3\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {groupName}\n </h3>\n )}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {components.map((component) => {\n const config = componentStatusConfig[component.status]\n\n return renderComponent ? (\n <React.Fragment key={component.id}>\n {renderComponent(component)}\n </React.Fragment>\n ) : (\n <motion.div\n key={component.id}\n whileHover={{ y: -2 }}\n className=\"group rounded-lg border p-4 transition-all\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"space-y-1\">\n <h4\n className=\"font-medium leading-tight\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {component.name}\n </h4>\n {showComponentDescriptions && component.description && (\n <p\n className=\"text-sm line-clamp-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n {component.description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-2 pl-3\">\n <StatusDot\n status={component.status}\n primaryColor={primaryColor}\n />\n <span\n className=\"text-xs font-medium opacity-0 group-hover:opacity-100 transition-opacity\"\n style={{ color: config.color }}\n >\n {config.label}\n </span>\n </div>\n </div>\n </motion.div>\n )\n })}\n </div>\n </div>\n ))}\n </motion.div>\n\n {/* Incident History */}\n {showIncidentHistory && (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.3 }}\n >\n <h2 className=\"text-lg font-semibold mb-4\" style={{ color: 'var(--appgram-foreground)' }}>\n Past Incidents\n </h2>\n\n <div\n className=\"rounded-lg border divide-y\"\n style={{\n backgroundColor: isDark ? 'var(--appgram-card)' : 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n borderRadius: `${Math.min(borderRadius, 12)}px`,\n }}\n >\n {resolvedIncidents.length > 0 ? (\n resolvedIncidents.slice(0, maxPastIncidents).map((incident) => {\n const impact = impactConfig[incident.impact]\n const duration = incident.resolved_at\n ? Math.round(\n (new Date(incident.resolved_at).getTime() -\n new Date(incident.created_at).getTime()) /\n 60000\n )\n : null\n\n return (\n <motion.div\n key={incident.id}\n whileHover={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.01)' : 'rgba(0, 0, 0, 0.02)' }}\n className=\"p-4 sm:p-5 flex flex-col sm:flex-row sm:items-center justify-between gap-3 cursor-pointer transition-colors\"\n style={{ borderColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)' }}\n onClick={() => onIncidentClick?.(incident)}\n >\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <span\n className=\"font-medium\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n {incident.title}\n </span>\n <span\n className=\"w-1.5 h-1.5 rounded-full\"\n style={{ backgroundColor: impact.color }}\n />\n </div>\n <div\n className=\"text-sm flex items-center gap-2\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <span>{formatDate(incident.created_at)}</span>\n {duration !== null && (\n <>\n <span>•</span>\n <span className=\"font-mono text-xs\">\n {duration < 60\n ? `${duration}m`\n : `${Math.round(duration / 60)}h ${duration % 60}m`}\n </span>\n </>\n )}\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <span\n className=\"text-xs px-2 py-1 rounded capitalize\"\n style={{\n backgroundColor: `${incidentStatusConfig.resolved.color}15`,\n color: incidentStatusConfig.resolved.color,\n }}\n >\n {incident.status}\n </span>\n <ArrowRight\n className=\"w-4 h-4 opacity-50\"\n style={{ color: 'var(--appgram-foreground)' }}\n />\n </div>\n </motion.div>\n )\n })\n ) : (\n <div className=\"py-16 text-center\">\n <div\n className=\"inline-flex items-center justify-center w-12 h-12 rounded-full mb-4\"\n style={{ backgroundColor: isDark ? 'rgba(255, 255, 255, 0.04)' : 'rgba(0, 0, 0, 0.04)' }}\n >\n <Activity\n className=\"w-5 h-5\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.4)' : 'rgba(0, 0, 0, 0.4)' }}\n />\n </div>\n <h3 className=\"font-medium\" style={{ color: 'var(--appgram-foreground)' }}>\n No recent incidents\n </h3>\n <p\n className=\"text-sm mt-1\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Systems have been running smoothly.\n </p>\n </div>\n )}\n </div>\n\n {resolvedIncidents.length > maxPastIncidents && (\n <div className=\"mt-4 text-center\">\n <button\n className=\"text-sm font-medium transition-opacity hover:opacity-70\"\n style={{ color: primaryColor }}\n >\n View full history\n </button>\n </div>\n )}\n </motion.div>\n )}\n </div>\n )\n}\n","/**\n * StatusIncidentDetail Component\n *\n * Displays a single incident's full details with timeline of updates.\n */\n\nimport React from 'react'\nimport { motion } from 'framer-motion'\nimport { ArrowLeft, AlertTriangle, CheckCircle2, Clock, Calendar } from 'lucide-react'\nimport { cn } from '../../utils/cn'\nimport { useAppgramContext } from '../../provider/context'\nimport type { StatusIncident, IncidentStatus, IncidentImpact } from './StatusBoard'\n\nexport interface StatusIncidentDetailProps {\n /**\n * The incident to display\n */\n incident: StatusIncident\n\n /**\n * Back button click handler\n */\n onBack?: () => void\n\n /**\n * Show back button\n * @default true\n */\n showBackButton?: boolean\n\n /**\n * Show affected components\n * @default true\n */\n showAffectedComponents?: boolean\n\n /**\n * Custom class name\n */\n className?: string\n}\n\n// Incident status configuration\nconst incidentStatusConfig: Record<\n IncidentStatus,\n { label: string; color: string; icon: typeof AlertTriangle }\n> = {\n investigating: { label: 'Investigating', color: '#f59e0b', icon: AlertTriangle },\n identified: { label: 'Identified', color: '#f97316', icon: AlertTriangle },\n monitoring: { label: 'Monitoring', color: '#3b82f6', icon: Clock },\n resolved: { label: 'Resolved', color: '#10b981', icon: CheckCircle2 },\n}\n\n// Impact configuration\nconst impactConfig: Record<IncidentImpact, { label: string; color: string }> = {\n minor: { label: 'Minor Impact', color: '#6b7280' },\n major: { label: 'Major Impact', color: '#f59e0b' },\n critical: { label: 'Critical Impact', color: '#ef4444' },\n}\n\nfunction formatDate(dateString: string): string {\n return new Date(dateString).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n}\n\nfunction formatDateTime(dateString: string): string {\n return new Date(dateString).toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })\n}\n\nfunction formatDuration(startDate: string, endDate: string): string {\n const duration = Math.round(\n (new Date(endDate).getTime() - new Date(startDate).getTime()) / 60000\n )\n\n if (duration < 60) {\n return `${duration} minute${duration !== 1 ? 's' : ''}`\n }\n\n const hours = Math.floor(duration / 60)\n const minutes = duration % 60\n\n if (minutes === 0) {\n return `${hours} hour${hours !== 1 ? 's' : ''}`\n }\n\n return `${hours}h ${minutes}m`\n}\n\nexport function StatusIncidentDetail({\n incident,\n onBack,\n showBackButton = true,\n showAffectedComponents = true,\n className,\n}: StatusIncidentDetailProps): React.ReactElement {\n const { theme } = useAppgramContext()\n\n const primaryColor = theme.colors?.primary || '#0EA5E9'\n const borderRadius = theme.borderRadius || 16\n const isDark = (theme as { isDark?: boolean }).isDark ?? false\n\n const statusConfig = incidentStatusConfig[incident.status]\n const impact = impactConfig[incident.impact]\n const StatusIcon = statusConfig.icon\n const isResolved = incident.status === 'resolved'\n\n return (\n <div className={cn('w-full', className)}>\n <div className=\"max-w-3xl mx-auto px-6 py-8\">\n {/* Back Button */}\n {showBackButton && onBack && (\n <motion.button\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3 }}\n onClick={onBack}\n className=\"flex items-center gap-2 mb-6 px-4 py-2 text-sm font-medium transition-all hover:opacity-80\"\n style={{\n color: primaryColor,\n backgroundColor: `${primaryColor}10`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n Back to Status\n </motion.button>\n )}\n\n {/* Incident Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"mb-8\"\n >\n {/* Status Banner */}\n <div\n className=\"flex items-center gap-3 p-4 mb-6 rounded-lg\"\n style={{\n backgroundColor: `${statusConfig.color}10`,\n border: `1px solid ${statusConfig.color}30`,\n borderRadius: `${borderRadius}px`,\n }}\n >\n <StatusIcon className=\"w-5 h-5\" style={{ color: statusConfig.color }} />\n <span\n className=\"text-sm font-semibold uppercase\"\n style={{ color: statusConfig.color }}\n >\n {statusConfig.label}\n </span>\n {isResolved && incident.resolved_at && (\n <span\n className=\"ml-auto text-sm\"\n style={{ color: statusConfig.color }}\n >\n Resolved in {formatDuration(incident.created_at, incident.resolved_at)}\n </span>\n )}\n </div>\n\n {/* Title and Meta */}\n <div className=\"space-y-4\">\n <div className=\"flex items-start gap-3 flex-wrap\">\n <span\n className=\"text-xs font-medium px-2 py-1 rounded\"\n style={{\n backgroundColor: `${impact.color}15`,\n color: impact.color,\n }}\n >\n {impact.label}\n </span>\n </div>\n\n <h1\n className=\"text-2xl md:text-3xl font-bold\"\n style={{ color: 'var(--appgram-foreground)', lineHeight: 1.2 }}\n >\n {incident.title}\n </h1>\n\n <div\n className=\"flex items-center gap-4 flex-wrap text-sm\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n <div className=\"flex items-center gap-1.5\">\n <Calendar className=\"w-4 h-4\" />\n <span>Started {formatDate(incident.created_at)}</span>\n </div>\n {incident.resolved_at && (\n <div className=\"flex items-center gap-1.5\">\n <CheckCircle2 className=\"w-4 h-4\" />\n <span>Resolved {formatDate(incident.resolved_at)}</span>\n </div>\n )}\n </div>\n </div>\n </motion.div>\n\n {/* Affected Components */}\n {showAffectedComponents && incident.affected_components && incident.affected_components.length > 0 && (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1, duration: 0.5 }}\n className=\"mb-8\"\n >\n <h2\n className=\"text-sm font-semibold uppercase mb-3\"\n style={{ color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)' }}\n >\n Affected Components\n </h2>\n <div className=\"flex flex-wrap gap-2\">\n {incident.affected_components.map((component) => (\n <span\n key={component}\n className=\"text-sm px-3 py-1.5 rounded-full\"\n style={{\n backgroundColor: isDark ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0, 0, 0, 0.05)',\n color: 'var(--appgram-foreground)',\n border: `1px solid ${isDark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)'}`,\n }}\n >\n {component}\n </span>\n ))}\n </div>\n </motion.div>\n )}\n\n {/* Timeline */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2, duration: 0.5 }}\n >\n <h2\n className=\"text-lg font-semibold mb-4\"\n style={{ color: 'var(--appgram-foreground)' }}\n >\n Incident Timeline\n </h2>\n\n <div\n className={`rounded-lg border overflow-hidden ${isDark ? 'bg-[var(--appgram-card)]' : 'bg-white/70'}`}\n style={{\n backdropFilter: 'blur(8px)',\n WebkitBackdropFilter: 'blur(8px)',\n borderColor: isDark ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.08)',\n borderRadius: `${borderRadius}px`,\n }}\n >\n <div className=\"p-6 space-y-6\">\n {incident.updates.length > 0 ? (\n incident.updates.map((update, idx) => {\n const updateStatusConfig = incidentStatusConfig[update.status]\n const UpdateIcon = updateStatusConfig.icon\n const isLast = idx === incident.updates.length - 1\n\n return (\n <div key={update.id} className=\"relative\">\n {/* Timeline connector */}\n {!isLast && (\n <div\n className=\"absolute left-[11px] top-8 bottom-[-28px] w-[2px]\"\n style={{\n backgroundColor: isDark\n ? 'rgba(255, 255, 255, 0.1)'\n : 'rgba(0, 0, 0, 0.1)',\n }}\n />\n )}\n\n <div className=\"flex gap-4\">\n {/* Status Icon */}\n <div\n className=\"flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center\"\n style={{ backgroundColor: `${updateStatusConfig.color}15` }}\n >\n <UpdateIcon\n className=\"w-3.5 h-3.5\"\n style={{ color: updateStatusConfig.color }}\n />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0 pb-2\">\n <div className=\"flex items-center gap-2 mb-2 flex-wrap\">\n <span\n className=\"text-xs font-semibold uppercase px-2 py-0.5 rounded\"\n style={{\n backgroundColor: `${updateStatusConfig.color}10`,\n color: updateStatusConfig.color,\n }}\n >\n {updateStatusConfig.label}\n </span>\n <span\n className=\"text-xs\"\n style={{\n color: isDark\n ? 'rgba(255, 255, 255, 0.5)'\n : 'rgba(0, 0, 0, 0.5)',\n }}\n >\n {formatDateTime(update.created_at)}\n </span>\n </div>\n\n <p\n className=\"text-sm leading-relaxed\"\n style={{\n color: isDark\n ? 'rgba(255, 255, 255, 0.8)'\n : 'rgba(0, 0, 0, 0.8)',\n }}\n >\n {update.message}\n </p>\n </div>\n </div>\n </div>\n )\n })\n ) : (\n <div\n className=\"text-center py-8\"\n style={{\n color: isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)',\n }}\n >\n <p>No updates available for this incident.</p>\n </div>\n )}\n </div>\n </div>\n </motion.div>\n </div>\n </div>\n )\n}\n"]}