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 React, { useState, useEffect, useMemo, useCallback } from "react";
import { Stack, Paper, Box, Chip, Typography, Dialog, DialogTitle, DialogContent, DialogActions, CircularProgress } from "@mui/material"; 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 { CreateProjectPayload, Knobs, PodcastMode } from "./types";
import { useSubscription } from "../../contexts/SubscriptionContext"; import { useSubscription } from "../../contexts/SubscriptionContext";
import { podcastApi } from "../../services/podcastApi"; import { podcastApi } from "../../services/podcastApi";

View File

@@ -10,7 +10,11 @@ import {
Divider, Divider,
alpha, alpha,
} from "@mui/material"; } 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 }) => { export const DurationInfoModal: React.FC<{ open: boolean; onClose: () => void }> = ({ open, onClose }) => {
return ( return (

View File

@@ -1,6 +1,11 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Stack, Box, Typography, TextField, ToggleButton, ToggleButtonGroup, alpha, IconButton, Tooltip } from "@mui/material"; 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 { PodcastMode } from "../types";
import { PodcastModeInfoModal } from "./PodcastModeInfoModal"; import { PodcastModeInfoModal } from "./PodcastModeInfoModal";

View File

@@ -11,7 +11,8 @@ import {
Divider, Divider,
alpha, alpha,
} from "@mui/material"; } 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 }) => { export const PodcastModeInfoModal: React.FC<{ open: boolean; onClose: () => void }> = ({ open, onClose }) => {
return ( return (

View File

@@ -1,6 +1,16 @@
import React, { useState, useCallback, useEffect, useRef } from "react"; import React, { useState, useCallback, useEffect, useRef } from "react";
import { Box, Typography, TextField, Tooltip, Button, CircularProgress, alpha, Stack, Chip, IconButton, Collapse } from "@mui/material"; 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 { Knobs } from "../types";
import { podcastApi } from "../../../services/podcastApi"; import { podcastApi } from "../../../services/podcastApi";
import { WebsitePreviewModal } from "./WebsitePreviewModal"; import { WebsitePreviewModal } from "./WebsitePreviewModal";

View File

@@ -1,6 +1,9 @@
import React, { useMemo, useState } from "react"; import React, { useMemo, useState } from "react";
import { Stack, Typography, Divider, Chip, Tooltip, IconButton, alpha, Box } from "@mui/material"; 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 { Fact } from "./types";
import { GlassyCard, glassyCardSx } from "./ui"; import { GlassyCard, glassyCardSx } from "./ui";
import { TextToSpeechButton } from "../shared/TextToSpeechButton"; import { TextToSpeechButton } from "../shared/TextToSpeechButton";

View File

@@ -1,6 +1,9 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Paper, Stack, Typography, IconButton, Tooltip, alpha, Alert } from "@mui/material"; 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"; import { aiApiClient } from "../../api/client";
interface InlineAudioPlayerProps { interface InlineAudioPlayerProps {

View File

@@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { Stack, Typography, Chip, Divider } from "@mui/material"; 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 { PodcastEstimate } from "../types";
import { GlassyCard, glassyCardSx } from "../ui"; import { GlassyCard, glassyCardSx } from "../ui";

View File

@@ -29,7 +29,17 @@ import {
useMediaQuery, useMediaQuery,
useTheme, useTheme,
} from "@mui/material"; } 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 { ResearchProvider } from "../../../services/blogWriterApi";
import { Query } from "../types"; import { Query } from "../types";
import { GlassyCard, glassyCardSx, PrimaryButton, SecondaryButton } from "../ui"; import { GlassyCard, glassyCardSx, PrimaryButton, SecondaryButton } from "../ui";

View File

@@ -1,6 +1,8 @@
import React from "react"; import React from "react";
import { Stack, Box, Typography, Paper, Chip, alpha } from "@mui/material"; 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 { useNavigate } from "react-router-dom";
import { useContentAssets } from "../../hooks/useContentAssets"; import { useContentAssets } from "../../hooks/useContentAssets";
import { GlassyCard, glassyCardSx, SecondaryButton } from "./ui"; import { GlassyCard, glassyCardSx, SecondaryButton } from "./ui";

View File

@@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { Box, Stack, Typography, Alert, Paper, alpha } from "@mui/material"; 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"; import { Script } from "../types";
interface GuidancePanelProps { interface GuidancePanelProps {

View File

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

View File

@@ -19,7 +19,8 @@ import {
alpha, alpha,
TextField, TextField,
} from "@mui/material"; } 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 { PrimaryButton, SecondaryButton } from "../ui";
import { VoiceSelector } from "../../shared/VoiceSelector"; import { VoiceSelector } from "../../shared/VoiceSelector";

View File

@@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { Box, Divider, Stack, Typography, CircularProgress } from "@mui/material"; 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 { interface SceneEditorMediaPanelProps {
hasAudio: boolean; hasAudio: boolean;

View File

@@ -1,6 +1,10 @@
import React, { useEffect, useState, useCallback } from "react"; import React, { useEffect, useState, useCallback } from "react";
import { Box, Stack, Typography, Alert, Paper, LinearProgress, CircularProgress, alpha, IconButton, Divider, Chip, Tooltip } from "@mui/material"; 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 { Script, Knobs, Scene } from "../types";
import { BlogResearchResponse } from "../../../services/blogWriterApi"; import { BlogResearchResponse } from "../../../services/blogWriterApi";
import { podcastApi } from "../../../services/podcastApi"; import { podcastApi } from "../../../services/podcastApi";

View File

@@ -1,6 +1,10 @@
import React from "react"; import React from "react";
import { Box, Stack, Typography, Tabs, Tab, Chip } from "@mui/material"; 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 { PodcastMode, Knobs } from "../types";
import { SecondaryButton } from "../ui"; import { SecondaryButton } from "../ui";
import { useScriptEditor } from "./ScriptEditorContext"; import { useScriptEditor } from "./ScriptEditorContext";

View File

@@ -1,6 +1,13 @@
import React, { useState } from "react"; 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 { 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 { useScriptEditor } from "../ScriptEditorContext";
import { Script } from "../../types"; import { Script } from "../../types";

View File

@@ -1,6 +1,7 @@
import React from "react"; import React from "react";
import { Stack, Box, Typography, Paper, LinearProgress } from "@mui/material"; 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 { Script } from "../../types";
import { useScriptEditor } from "../ScriptEditorContext"; import { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton } from "../../ui"; import { PrimaryButton } from "../../ui";

View File

@@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { Stack, Box, Typography, Paper, LinearProgress } from "@mui/material"; 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 { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton } from "../../ui"; import { PrimaryButton } from "../../ui";

View File

@@ -1,6 +1,7 @@
import React from "react"; import React from "react";
import { Stack, Typography, Paper, Alert, alpha } from "@mui/material"; 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 { useScriptEditor } from "../ScriptEditorContext";
import { PrimaryButton, SecondaryButton } from "../../ui"; import { PrimaryButton, SecondaryButton } from "../../ui";
import { InlineAudioPlayer } from "../../InlineAudioPlayer"; import { InlineAudioPlayer } from "../../InlineAudioPlayer";

View File

@@ -1,6 +1,8 @@
import React from "react"; import React from "react";
import { Stack, Box, Typography, Alert, Paper } from "@mui/material"; 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"; import { useScriptEditor } from "../ScriptEditorContext";
interface FormatItem { interface FormatItem {

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { Box, TextField, Stack, Typography, Tooltip, IconButton } from '@mui/material'; 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'; import { getTooltipText } from '../../../utils/terminology';
interface ProductInfoFormProps { interface ProductInfoFormProps {

View File

@@ -10,7 +10,8 @@ import {
Typography, Typography,
Stack, Stack,
} from '@mui/material'; } 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 { interface ProductVariationsProps {
productVariant: string; productVariant: string;

View File

@@ -10,7 +10,10 @@ import {
Chip, Chip,
Stack, Stack,
} from '@mui/material'; } 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 { interface StyleSelectorProps {
environment: string; environment: string;

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { Tooltip } from '@mui/material'; 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 { interface PersonalizationIndicatorProps {
type: 'placeholder' | 'keywords' | 'presets' | 'angles' | 'provider' | 'mode'; type: 'placeholder' | 'keywords' | 'presets' | 'angles' | 'provider' | 'mode';

View File

@@ -1,6 +1,8 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Tooltip, CircularProgress, Select, MenuItem, FormControl, InputLabel } from '@mui/material'; 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'; import { ResearchPurpose, ContentOutput, ResearchDepthLevel } from '../../types/intent.types';
interface ResearchInputContainerProps { interface ResearchInputContainerProps {

View File

@@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { Box, Typography, Button, Avatar } from '@mui/material'; 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 { AIInsightsPanel as StyledAIInsightsPanel } from '../../shared/styled';
import { AIInsight } from '../../../api/seoDashboard'; import { AIInsight } from '../../../api/seoDashboard';

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { Box, Typography, Chip, LinearProgress } from '@mui/material'; 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 { EnhancedGlassCard } from '../../shared/styled';
import { SEOHealthScore } from '../../../api/seoDashboard'; import { SEOHealthScore } from '../../../api/seoDashboard';

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { Box, Typography } from '@mui/material'; 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 { GlassCard } from '../../shared/styled';
import { SEOMetric } from '../../../api/seoDashboard'; import { SEOMetric } from '../../../api/seoDashboard';

View File

@@ -17,7 +17,8 @@ import {
ResponsiveContainer ResponsiveContainer
} from 'recharts'; } from 'recharts';
import { Box, Paper, CircularProgress, Modal, IconButton } from '@mui/material'; 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 { TerminalTypography, TerminalPaper, terminalColors } from './terminalTheme';
import { getSchedulerEventHistory, SchedulerEvent } from '../../api/schedulerDashboard'; import { getSchedulerEventHistory, SchedulerEvent } from '../../api/schedulerDashboard';

View File

@@ -19,7 +19,9 @@ import {
alpha, alpha,
TextField, TextField,
} from "@mui/material"; } 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 { Button } from "@mui/material";
// Import language-aware voice mapping (optional - only used in YouTube Creator context) // 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 React, { Component, ErrorInfo, ReactNode } from 'react';
import { Typography, Button, Alert, Stack } from '@mui/material'; 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 { interface ComponentErrorBoundaryProps {
children: ReactNode; children: ReactNode;

View File

@@ -1,6 +1,7 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Alert, AlertTitle, IconButton, Collapse } from '@mui/material'; 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'; import { useCopilotKitHealth } from '../../hooks/useCopilotKitHealth';
interface CopilotKitDegradedBannerProps { interface CopilotKitDegradedBannerProps {

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Box, Typography, Chip, Button, Tooltip } from '@mui/material'; 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 { ShimmerHeader } from './styled';
import HeaderControls from './HeaderControls'; import HeaderControls from './HeaderControls';
import { DashboardHeaderProps } from './types'; import { DashboardHeaderProps } from './types';

View File

@@ -1,6 +1,6 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Box, Button, Typography, Stack, Alert, Paper } from '@mui/material'; 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 ErrorBoundary from './ErrorBoundary';
import ComponentErrorBoundary from './ComponentErrorBoundary'; import ComponentErrorBoundary from './ComponentErrorBoundary';

View File

@@ -1,6 +1,9 @@
import React from 'react'; import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, List, ListItem, ListItemText, Paper } from '@mui/material'; 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'; import ChipLegend from './ChipLegend';
interface Suggestion { interface Suggestion {

View File

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

View File

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

View File

@@ -1,6 +1,8 @@
import React from 'react'; import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, Grid, List, ListItem, Paper } from '@mui/material'; 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'; import ChipLegend from './ChipLegend';
interface DeltaQuery { interface DeltaQuery {

View File

@@ -1,6 +1,9 @@
import React from 'react'; import React from 'react';
import { IconButton, Tooltip, CircularProgress, Box, Menu, MenuItem, ListItemIcon, ListItemText, FormControl, Select, Slider, Typography } from '@mui/material'; 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'; import { useTextToSpeech, SpeechSynthesisOptions } from '../../hooks/useTextToSpeech';
interface TextToSpeechButtonProps { interface TextToSpeechButtonProps {

View File

@@ -1,6 +1,10 @@
import React from 'react'; import React from 'react';
import { Card, CardContent, Box, Typography, Tooltip, Chip, Button, List, ListItem, ListItemText, Paper, IconButton } from '@mui/material'; 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'; import ChipLegend from './ChipLegend';
type Query = { query: string; clicks: number; impressions: number; ctr: number }; type Query = { query: string; clicks: number; impressions: number; ctr: number };

View File

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