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:
@@ -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";
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 };
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user