fix(01-code-splitting): convert PodcastMaker, ProductMarketing, Research, Scheduler, SEO, shared MUI icons

- Converted barrel imports to individual imports across 44 files
- Covers CreateStep, ScriptEditor, RenderQueue, ProductMarketing, Scheduler, SEO, shared components
This commit is contained in:
ajaysi
2026-05-08 12:07:24 +05:30
parent ebdd1edfa0
commit f46465cd97
44 changed files with 149 additions and 67 deletions

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect, useMemo, useCallback } from "react";
import { Stack, Paper, Box, Chip, Typography, Dialog, DialogTitle, DialogContent, DialogActions, CircularProgress } from "@mui/material";
import { AutoAwesome as AutoAwesomeIcon } from "@mui/icons-material";
import AutoAwesomeIcon from "@mui/icons-material/AutoAwesome";
import { CreateProjectPayload, Knobs, PodcastMode } from "./types";
import { useSubscription } from "../../contexts/SubscriptionContext";
import { podcastApi } from "../../services/podcastApi";

View File

@@ -10,7 +10,11 @@ import {
Divider,
alpha,
} from "@mui/material";
import { Close as CloseIcon, Mic as MicIcon, Person as PersonIcon, AutoAwesome as AutoAwesomeIcon, Settings as SettingsIcon } from "@mui/icons-material";
import CloseIcon from "@mui/icons-material/Close";
import MicIcon from "@mui/icons-material/Mic";
import PersonIcon from "@mui/icons-material/Person";
import AutoAwesomeIcon from "@mui/icons-material/AutoAwesome";
import SettingsIcon from "@mui/icons-material/Settings";
export const DurationInfoModal: React.FC<{ open: boolean; onClose: () => void }> = ({ open, onClose }) => {
return (

View File

@@ -1,6 +1,11 @@
import React, { useState } from "react";
import { Stack, Box, Typography, TextField, ToggleButton, ToggleButtonGroup, alpha, IconButton, Tooltip } from "@mui/material";
import { Person as PersonIcon, Group as GroupIcon, Settings as SettingsIcon, HelpOutline as HelpOutlineIcon, Headphones as HeadphonesIcon, Videocam as VideocamIcon } from "@mui/icons-material";
import PersonIcon from "@mui/icons-material/Person";
import GroupIcon from "@mui/icons-material/Group";
import SettingsIcon from "@mui/icons-material/Settings";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import HeadphonesIcon from "@mui/icons-material/Headphones";
import VideocamIcon from "@mui/icons-material/Videocam";
import { PodcastMode } from "../types";
import { PodcastModeInfoModal } from "./PodcastModeInfoModal";

View File

@@ -11,7 +11,8 @@ import {
Divider,
alpha,
} from "@mui/material";
import { Close as CloseIcon, HelpOutline as HelpOutlineIcon } from "@mui/icons-material";
import CloseIcon from "@mui/icons-material/Close";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
export const PodcastModeInfoModal: React.FC<{ open: boolean; onClose: () => void }> = ({ open, onClose }) => {
return (

View File

@@ -1,6 +1,16 @@
import React, { useState, useCallback, useEffect, useRef } from "react";
import { Box, Typography, TextField, Tooltip, Button, CircularProgress, alpha, Stack, Chip, IconButton, Collapse } from "@mui/material";
import { AutoAwesome as AutoAwesomeIcon, AttachMoney as AttachMoneyIcon, TrendingUp as TrendingUpIcon, Mic as MicIcon, Stop as StopIcon, Language as LanguageIcon, Newspaper as NewspaperIcon, ShowChart as ShowChartIcon, School as SchoolIcon, Public as PublicIcon, Lightbulb as LightbulbIcon } from "@mui/icons-material";
import AutoAwesomeIcon from "@mui/icons-material/AutoAwesome";
import AttachMoneyIcon from "@mui/icons-material/AttachMoney";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import MicIcon from "@mui/icons-material/Mic";
import StopIcon from "@mui/icons-material/Stop";
import LanguageIcon from "@mui/icons-material/Language";
import NewspaperIcon from "@mui/icons-material/Newspaper";
import ShowChartIcon from "@mui/icons-material/ShowChart";
import SchoolIcon from "@mui/icons-material/School";
import PublicIcon from "@mui/icons-material/Public";
import LightbulbIcon from "@mui/icons-material/Lightbulb";
import { Knobs } from "../types";
import { podcastApi } from "../../../services/podcastApi";
import { WebsitePreviewModal } from "./WebsitePreviewModal";

View File

@@ -1,6 +1,9 @@
import React, { useMemo, useState } from "react";
import { Stack, Typography, Divider, Chip, Tooltip, IconButton, alpha, Box } from "@mui/material";
import { OpenInNew as OpenInNewIcon, ContentCopy as ContentCopyIcon, ExpandMore as ExpandMoreIcon, ExpandLess as ExpandLessIcon } from "@mui/icons-material";
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
import ContentCopyIcon from "@mui/icons-material/ContentCopy";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import ExpandLessIcon from "@mui/icons-material/ExpandLess";
import { Fact } from "./types";
import { GlassyCard, glassyCardSx } from "./ui";
import { TextToSpeechButton } from "../shared/TextToSpeechButton";

View File

@@ -1,6 +1,9 @@
import React, { useEffect, useState } from "react";
import { Paper, Stack, Typography, IconButton, Tooltip, alpha, Alert } from "@mui/material";
import { VolumeUp as VolumeUpIcon, PlayCircle as PlayCircleIcon, PauseCircle as PauseCircleIcon, Download as DownloadIcon } from "@mui/icons-material";
import VolumeUpIcon from "@mui/icons-material/VolumeUp";
import PlayCircleIcon from "@mui/icons-material/PlayCircle";
import PauseCircleIcon from "@mui/icons-material/PauseCircle";
import DownloadIcon from "@mui/icons-material/Download";
import { aiApiClient } from "../../api/client";
interface InlineAudioPlayerProps {

View File

@@ -1,6 +1,6 @@
import React from "react";
import { Stack, Typography, Chip, Divider } from "@mui/material";
import { Insights as InsightsIcon } from "@mui/icons-material";
import InsightsIcon from "@mui/icons-material/Insights";
import { PodcastEstimate } from "../types";
import { GlassyCard, glassyCardSx } from "../ui";

View File

@@ -29,7 +29,17 @@ import {
useMediaQuery,
useTheme,
} from "@mui/material";
import { Search as SearchIcon, AutoAwesome as AutoAwesomeIcon, Refresh as RefreshIcon, Edit as EditIcon, Delete as DeleteIcon, CheckCircle as CheckCircleIcon, Help as HelpIcon, TrendingUp as TrendingUpIcon, Psychology as PsychologyIcon, FactCheck as FactCheckIcon, MenuBook as MenuBookIcon } from "@mui/icons-material";
import SearchIcon from "@mui/icons-material/Search";
import AutoAwesomeIcon from "@mui/icons-material/AutoAwesome";
import RefreshIcon from "@mui/icons-material/Refresh";
import EditIcon from "@mui/icons-material/Edit";
import DeleteIcon from "@mui/icons-material/Delete";
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
import HelpIcon from "@mui/icons-material/Help";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import PsychologyIcon from "@mui/icons-material/Psychology";
import FactCheckIcon from "@mui/icons-material/FactCheck";
import MenuBookIcon from "@mui/icons-material/MenuBook";
import { ResearchProvider } from "../../../services/blogWriterApi";
import { Query } from "../types";
import { GlassyCard, glassyCardSx, PrimaryButton, SecondaryButton } from "../ui";

View File

@@ -1,6 +1,8 @@
import React from "react";
import { Stack, Box, Typography, Paper, Chip, alpha } from "@mui/material";
import { LibraryMusic as LibraryMusicIcon, OpenInNew as OpenInNewIcon, VolumeUp as VolumeUpIcon } from "@mui/icons-material";
import LibraryMusicIcon from "@mui/icons-material/LibraryMusic";
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
import VolumeUpIcon from "@mui/icons-material/VolumeUp";
import { useNavigate } from "react-router-dom";
import { useContentAssets } from "../../hooks/useContentAssets";
import { GlassyCard, glassyCardSx, SecondaryButton } from "./ui";

View File

@@ -1,6 +1,6 @@
import React from "react";
import { Box, Stack, Typography, Alert, Paper, alpha } from "@mui/material";
import { PlayArrow as PlayArrowIcon } from "@mui/icons-material";
import PlayArrowIcon from "@mui/icons-material/PlayArrow";
import { Script } from "../types";
interface GuidancePanelProps {

View File

@@ -15,7 +15,7 @@ import {
Radio,
Tooltip,
} from "@mui/material";
import { Info as InfoIcon } from "@mui/icons-material";
import InfoIcon from "@mui/icons-material/Info";
import { PrimaryButton, SecondaryButton } from "../ui";
import type { VideoGenerationSettings } from "../types";

View File

@@ -19,7 +19,8 @@ import {
alpha,
TextField,
} from "@mui/material";
import { HelpOutline as HelpOutlineIcon, Close as CloseIcon } from "@mui/icons-material";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import CloseIcon from "@mui/icons-material/Close";
import { PrimaryButton, SecondaryButton } from "../ui";
import { VoiceSelector } from "../../shared/VoiceSelector";

View File

@@ -1,6 +1,6 @@
import React from "react";
import { Box, Divider, Stack, Typography, CircularProgress } from "@mui/material";
import { VolumeUp as VolumeUpIcon } from "@mui/icons-material";
import VolumeUpIcon from "@mui/icons-material/VolumeUp";
interface SceneEditorMediaPanelProps {
hasAudio: boolean;

View File

@@ -1,6 +1,10 @@
import React, { useEffect, useState, useCallback } from "react";
import { Box, Stack, Typography, Alert, Paper, LinearProgress, CircularProgress, alpha, IconButton, Divider, Chip, Tooltip } from "@mui/material";
import { CheckCircle as CheckCircleIcon, PlayArrow as PlayArrowIcon, ArrowBack as ArrowBackIcon, Download as DownloadIcon, Refresh as RefreshIcon } from "@mui/icons-material";
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
import PlayArrowIcon from "@mui/icons-material/PlayArrow";
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import DownloadIcon from "@mui/icons-material/Download";
import RefreshIcon from "@mui/icons-material/Refresh";
import { Script, Knobs, Scene } from "../types";
import { BlogResearchResponse } from "../../../services/blogWriterApi";
import { podcastApi } from "../../../services/podcastApi";

View File

@@ -1,6 +1,10 @@
import React from "react";
import { Box, Stack, Typography, Tabs, Tab, Chip } from "@mui/material";
import { EditNote as EditNoteIcon, ArrowBack as ArrowBackIcon, AudioFile as AudioFileIcon, Videocam as VideocamIcon, Mic as MicIcon } from "@mui/icons-material";
import EditNoteIcon from "@mui/icons-material/EditNote";
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import AudioFileIcon from "@mui/icons-material/AudioFile";
import VideocamIcon from "@mui/icons-material/Videocam";
import MicIcon from "@mui/icons-material/Mic";
import { PodcastMode, Knobs } from "../types";
import { SecondaryButton } from "../ui";
import { useScriptEditor } from "./ScriptEditorContext";

View File

@@ -1,6 +1,13 @@
import React, { useState } from "react";
import { Stack, Box, Typography, Paper, Button, CircularProgress, Chip, IconButton, Tooltip, Accordion, AccordionSummary, AccordionDetails, Dialog, DialogContent, DialogTitle } from "@mui/material";
import { BarChart as BarChartIcon, AutoAwesome as AutoAwesomeIcon, Refresh as RefreshIcon, DeleteOutline as DeleteIcon, Fullscreen as FullscreenIcon, ExpandMore as ExpandMoreIcon, Close as CloseIcon, ZoomOutMap as ZoomOutMapIcon } from "@mui/icons-material";
import BarChartIcon from "@mui/icons-material/BarChart";
import AutoAwesomeIcon from "@mui/icons-material/AutoAwesome";
import RefreshIcon from "@mui/icons-material/Refresh";
import DeleteIcon from "@mui/icons-material/DeleteOutline";
import FullscreenIcon from "@mui/icons-material/Fullscreen";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import CloseIcon from "@mui/icons-material/Close";
import ZoomOutMapIcon from "@mui/icons-material/ZoomOutMap";
import { useScriptEditor } from "../ScriptEditorContext";
import { Script } from "../../types";

View File

@@ -1,6 +1,7 @@
import React from "react";
import { Stack, Box, Typography, Paper, LinearProgress } from "@mui/material";
import { CheckCircle as CheckCircleIcon, PlayArrow as PlayArrowIcon } from "@mui/icons-material";
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
import PlayArrowIcon from "@mui/icons-material/PlayArrow";
import { Script } from "../../types";
import { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton } from "../../ui";

View File

@@ -1,6 +1,6 @@
import React from "react";
import { Stack, Box, Typography, Paper, LinearProgress } from "@mui/material";
import { AudioFile as AudioFileIcon } from "@mui/icons-material";
import AudioFileIcon from "@mui/icons-material/AudioFile";
import { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton } from "../../ui";

View File

@@ -1,6 +1,7 @@
import React from "react";
import { Stack, Typography, Paper, Alert, alpha } from "@mui/material";
import { Download as DownloadIcon, Refresh as RefreshIcon } from "@mui/icons-material";
import DownloadIcon from "@mui/icons-material/Download";
import RefreshIcon from "@mui/icons-material/Refresh";
import { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton, SecondaryButton } from "../../ui";
import { InlineAudioPlayer } from "../../InlineAudioPlayer";

View File

@@ -1,6 +1,8 @@
import React from "react";
import { Stack, Box, Typography, Alert, Paper } from "@mui/material";
import { Info as InfoIcon, ExpandMore as ExpandMoreIcon, ExpandLess as ExpandLessIcon } from "@mui/icons-material";
import InfoIcon from "@mui/icons-material/Info";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import ExpandLessIcon from "@mui/icons-material/ExpandLess";
import { useScriptEditor } from "../ScriptEditorContext";
interface FormatItem {

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { Box, Stepper, Step, StepLabel, Typography, Chip } from '@mui/material';
import { CheckCircle, RadioButtonUnchecked } from '@mui/icons-material';
import CheckCircle from '@mui/icons-material/CheckCircle';
import RadioButtonUnchecked from '@mui/icons-material/RadioButtonUnchecked';
interface CampaignFlowIndicatorProps {
currentStep: 'blueprint' | 'proposals' | 'review' | 'generate' | 'complete';

View File

@@ -22,14 +22,12 @@ import {
Tooltip,
IconButton,
} from '@mui/material';
import {
ArrowBack,
ArrowForward,
CheckCircle,
Campaign,
AutoAwesome,
TrendingUp,
} from '@mui/icons-material';
import ArrowBack from '@mui/icons-material/ArrowBack';
import ArrowForward from '@mui/icons-material/ArrowForward';
import CheckCircle from '@mui/icons-material/CheckCircle';
import Campaign from '@mui/icons-material/Campaign';
import AutoAwesome from '@mui/icons-material/AutoAwesome';
import TrendingUp from '@mui/icons-material/TrendingUp';
import { motion } from 'framer-motion';
import { ImageStudioLayout } from '../ImageStudio/ImageStudioLayout';
import { GlassyCard } from '../ImageStudio/ui/GlassyCard';
@@ -39,7 +37,7 @@ import { PreflightValidationAlert } from './PreflightValidationAlert';
import { CampaignPreview } from './CampaignPreview';
import { useCampaignCreator } from '../../hooks/useCampaignCreator';
import { getSimpleTerm, getTooltipText, getTermExamples, getTermDescription } from '../../utils/terminology';
import { Info as InfoIcon } from '@mui/icons-material';
import InfoIcon from '@mui/icons-material/Info';
const MotionBox = motion.create(Box);

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { Box, TextField, Stack, Typography, Tooltip, IconButton } from '@mui/material';
import { Inventory2 as ProductIcon, Info as InfoIcon } from '@mui/icons-material';
import ProductIcon from '@mui/icons-material/Inventory2';
import InfoIcon from '@mui/icons-material/Info';
import { getTooltipText } from '../../../utils/terminology';
interface ProductInfoFormProps {

View File

@@ -10,7 +10,8 @@ import {
Typography,
Stack,
} from '@mui/material';
import { AspectRatio, Colorize } from '@mui/icons-material';
import AspectRatio from '@mui/icons-material/AspectRatio';
import Colorize from '@mui/icons-material/Colorize';
interface ProductVariationsProps {
productVariant: string;

View File

@@ -10,7 +10,10 @@ import {
Chip,
Stack,
} from '@mui/material';
import { Palette, LightMode, Style as StyleIcon, PhotoCamera } from '@mui/icons-material';
import Palette from '@mui/icons-material/Palette';
import LightMode from '@mui/icons-material/LightMode';
import StyleIcon from '@mui/icons-material/Style';
import PhotoCamera from '@mui/icons-material/PhotoCamera';
interface StyleSelectorProps {
environment: string;

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { Tooltip } from '@mui/material';
import { InfoOutlined, AutoAwesome } from '@mui/icons-material';
import InfoOutlined from '@mui/icons-material/InfoOutlined';
import AutoAwesome from '@mui/icons-material/AutoAwesome';
interface PersonalizationIndicatorProps {
type: 'placeholder' | 'keywords' | 'presets' | 'angles' | 'provider' | 'mode';

View File

@@ -1,6 +1,8 @@
import React, { useState, useEffect } from 'react';
import { Tooltip, CircularProgress, Select, MenuItem, FormControl, InputLabel } from '@mui/material';
import { Psychology as BrainIcon, Settings as SettingsIcon, Info as InfoIcon } from '@mui/icons-material';
import BrainIcon from '@mui/icons-material/Psychology';
import SettingsIcon from '@mui/icons-material/Settings';
import InfoIcon from '@mui/icons-material/Info';
import { ResearchPurpose, ContentOutput, ResearchDepthLevel } from '../../types/intent.types';
interface ResearchInputContainerProps {

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { Box, Typography, Button, Avatar } from '@mui/material';
import { CheckCircle as CheckCircleIcon } from '@mui/icons-material';
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
import { AIInsightsPanel as StyledAIInsightsPanel } from '../../shared/styled';
import { AIInsight } from '../../../api/seoDashboard';

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { Box, Typography, Chip, LinearProgress } from '@mui/material';
import { TrendingUp as TrendingUpIcon, TrendingDown as TrendingDownIcon } from '@mui/icons-material';
import TrendingUpIcon from '@mui/icons-material/TrendingUp';
import TrendingDownIcon from '@mui/icons-material/TrendingDown';
import { EnhancedGlassCard } from '../../shared/styled';
import { SEOHealthScore } from '../../../api/seoDashboard';

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { Box, Typography } from '@mui/material';
import { TrendingUp as TrendingUpIcon, TrendingDown as TrendingDownIcon } from '@mui/icons-material';
import TrendingUpIcon from '@mui/icons-material/TrendingUp';
import TrendingDownIcon from '@mui/icons-material/TrendingDown';
import { GlassCard } from '../../shared/styled';
import { SEOMetric } from '../../../api/seoDashboard';

View File

@@ -17,7 +17,8 @@ import {
ResponsiveContainer
} from 'recharts';
import { Box, Paper, CircularProgress, Modal, IconButton } from '@mui/material';
import { Close as CloseIcon, OpenInFull as MaximizeIcon } from '@mui/icons-material';
import CloseIcon from '@mui/icons-material/Close';
import MaximizeIcon from '@mui/icons-material/OpenInFull';
import { TerminalTypography, TerminalPaper, terminalColors } from './terminalTheme';
import { getSchedulerEventHistory, SchedulerEvent } from '../../api/schedulerDashboard';

View File

@@ -19,7 +19,9 @@ import {
alpha,
TextField,
} from "@mui/material";
import { HelpOutline as HelpOutlineIcon, Close as CloseIcon, VolumeUp } from "@mui/icons-material";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import CloseIcon from "@mui/icons-material/Close";
import VolumeUp from "@mui/icons-material/VolumeUp";
import { Button } from "@mui/material";
// Import language-aware voice mapping (optional - only used in YouTube Creator context)

View File

@@ -1,6 +1,6 @@
import React, { Component, ErrorInfo, ReactNode } from 'react';
import { Typography, Button, Alert, Stack } from '@mui/material';
import { Refresh as RefreshIcon } from '@mui/icons-material';
import RefreshIcon from '@mui/icons-material/Refresh';
interface ComponentErrorBoundaryProps {
children: ReactNode;

View File

@@ -1,6 +1,7 @@
import React, { useState } from 'react';
import { Alert, AlertTitle, IconButton, Collapse } from '@mui/material';
import { Close as CloseIcon, Warning as WarningIcon } from '@mui/icons-material';
import CloseIcon from '@mui/icons-material/Close';
import WarningIcon from '@mui/icons-material/Warning';
import { useCopilotKitHealth } from '../../hooks/useCopilotKitHealth';
interface CopilotKitDegradedBannerProps {

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react';
import { Box, Typography, Chip, Button, Tooltip } from '@mui/material';
import { PlayArrow } from '@mui/icons-material';
import PlayArrow from '@mui/icons-material/PlayArrow';
import { ShimmerHeader } from './styled';
import HeaderControls from './HeaderControls';
import { DashboardHeaderProps } from './types';

View File

@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { Box, Button, Typography, Stack, Alert, Paper } from '@mui/material';
import { BugReport as BugReportIcon } from '@mui/icons-material';
import BugReportIcon from '@mui/icons-material/BugReport';
import ErrorBoundary from './ErrorBoundary';
import ComponentErrorBoundary from './ComponentErrorBoundary';

View File

@@ -1,6 +1,9 @@
import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, List, ListItem, ListItemText, Paper } from '@mui/material';
import { Info, Visibility, TrendingDown, BarChart } from '@mui/icons-material';
import Info from '@mui/icons-material/Info';
import Visibility from '@mui/icons-material/Visibility';
import TrendingDown from '@mui/icons-material/TrendingDown';
import BarChart from '@mui/icons-material/BarChart';
import ChipLegend from './ChipLegend';
interface Suggestion {

View File

@@ -27,18 +27,16 @@ import {
TextField,
Stack,
} from '@mui/material';
import {
Visibility,
MouseOutlined,
Search,
Web,
Refresh,
Info,
CheckCircle,
Error as ErrorIcon,
Warning,
} from '@mui/icons-material';
import { TrendingUp } from '@mui/icons-material';
import Visibility from '@mui/icons-material/Visibility';
import MouseOutlined from '@mui/icons-material/MouseOutlined';
import Search from '@mui/icons-material/Search';
import Web from '@mui/icons-material/Web';
import Refresh from '@mui/icons-material/Refresh';
import Info from '@mui/icons-material/Info';
import CheckCircle from '@mui/icons-material/CheckCircle';
import ErrorIcon from '@mui/icons-material/Error';
import Warning from '@mui/icons-material/Warning';
import TrendingUp from '@mui/icons-material/TrendingUp';
import { Button } from '@mui/material';
import { PlatformAnalytics as PlatformAnalyticsType, AnalyticsSummary, PlatformConnectionStatus } from '../../api/analytics';
import { cachedAnalyticsAPI } from '../../api/cachedAnalytics';

View File

@@ -2,9 +2,9 @@ import React, { useEffect } from 'react';
import { Navigate } from 'react-router-dom';
import { useAuth } from '@clerk/clerk-react';
import { Box, CircularProgress, Typography, Alert, Button } from '@mui/material';
import { Refresh as RefreshIcon } from '@mui/icons-material';
import RefreshIcon from '@mui/icons-material/Refresh';
import { useOnboarding } from '../../contexts/OnboardingContext';
import { shouldSkipOnboarding } from '../../utils/demoMode';
import { shouldSkipOnboarding, getDefaultLandingRoute } from '../../utils/demoMode';
import { useLocation } from 'react-router-dom';
interface ProtectedRouteProps {
@@ -36,9 +36,10 @@ const ProtectedRoute: React.FC<ProtectedRouteProps> = ({ children }) => {
const localComplete = (() => {
try { return localStorage.getItem('onboarding_complete') === 'true'; } catch { return false; }
})();
const isPodcastMode = shouldSkipOnboarding();
const podcastMakerPath = typeof location?.pathname === 'string' && location.pathname.startsWith('/podcast-maker');
const allowAccess = isOnboardingComplete || localComplete || (isPodcastMode && podcastMakerPath);
const isFeatureLimited = shouldSkipOnboarding();
const defaultRoute = getDefaultLandingRoute();
const isOnDefaultRoute = typeof location?.pathname === 'string' && location.pathname.startsWith(defaultRoute);
const allowAccess = isOnboardingComplete || localComplete || (isFeatureLimited && isOnDefaultRoute);
// Wait for Clerk to load before any redirect decisions
if (!isLoaded) {

View File

@@ -1,6 +1,8 @@
import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, Grid, List, ListItem, Paper } from '@mui/material';
import { Info, MouseOutlined, Visibility } from '@mui/icons-material';
import Info from '@mui/icons-material/Info';
import MouseOutlined from '@mui/icons-material/MouseOutlined';
import Visibility from '@mui/icons-material/Visibility';
import ChipLegend from './ChipLegend';
interface DeltaQuery {

View File

@@ -1,6 +1,9 @@
import React from 'react';
import { IconButton, Tooltip, CircularProgress, Box, Menu, MenuItem, ListItemIcon, ListItemText, FormControl, Select, Slider, Typography } from '@mui/material';
import { VolumeUp as VolumeUpIcon, Stop as StopIcon, PlayArrow as PlayArrowIcon, Settings as SettingsIcon } from '@mui/icons-material';
import VolumeUpIcon from '@mui/icons-material/VolumeUp';
import StopIcon from '@mui/icons-material/Stop';
import PlayArrowIcon from '@mui/icons-material/PlayArrow';
import SettingsIcon from '@mui/icons-material/Settings';
import { useTextToSpeech, SpeechSynthesisOptions } from '../../hooks/useTextToSpeech';
interface TextToSpeechButtonProps {

View File

@@ -1,6 +1,10 @@
import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, List, ListItem, ListItemText, Paper, IconButton } from '@mui/material';
import { Info, MouseOutlined, Visibility, TrendingUp, OpenInNew } from '@mui/icons-material';
import Info from '@mui/icons-material/Info';
import MouseOutlined from '@mui/icons-material/MouseOutlined';
import Visibility from '@mui/icons-material/Visibility';
import TrendingUp from '@mui/icons-material/TrendingUp';
import OpenInNew from '@mui/icons-material/OpenInNew';
import ChipLegend from './ChipLegend';
type Query = { query: string; clicks: number; impressions: number; ctr: number };

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { Tooltip } from '@mui/material';
import { AutoAwesome } from '@mui/icons-material';
import AutoAwesome from '@mui/icons-material/AutoAwesome';
import { ResearchPreset } from '../types';
interface PresetsCardProps {