+
setShowWelcomeGuide(!showWelcomeGuide)}
- variant="success"
+ variant="primary"
+ tone="brand"
size="md"
startIcon={ }
>
Add New Website
+ {viewType === 'grid' && (
+
setShowFilters(!showFilters)}
+ startIcon={ }
+ >
+ {showFilters ? 'Hide Filters' : 'Show Filters'}
+
+ )}
-
+
setViewType('table')}
- variant={viewType === 'table' ? 'secondary' : 'ghost'}
+ variant={viewType === 'table' ? 'primary' : 'ghost'}
+ tone="brand"
size="sm"
startIcon={ }
>
- Table
+ Table
setViewType('grid')}
- variant={viewType === 'grid' ? 'secondary' : 'ghost'}
+ variant={viewType === 'grid' ? 'primary' : 'ghost'}
+ tone="brand"
size="sm"
startIcon={ }
>
- Grid
+ Grid
@@ -600,59 +616,61 @@ export default function SiteList() {
/>
) : (
<>
- {/* Standard Filters Bar for Grid View - Matches Table View */}
-
-
-
-
-
- setSearchTerm(e.target.value)}
- />
-
-
- setSiteTypeFilter(val)}
- />
-
-
- setHostingTypeFilter(val)}
- />
-
-
-
setStatusFilter(val)}
- />
+ {/* Standard Filters Bar for Grid View - Collapsible like table view */}
+ {showFilters && (
+
+
+
+
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+ setSiteTypeFilter(val)}
+ />
+
+
+ setHostingTypeFilter(val)}
+ />
+
+
+ setStatusFilter(val)}
+ />
+
+ {hasActiveFilters && (
+
+ Clear Filters
+
+ )}
- {hasActiveFilters && (
-
- Clear Filters
-
- )}
-
+ )}
{/* Grid View */}
{filteredSites.length === 0 ? (
@@ -665,7 +683,7 @@ export default function SiteList() {
Clear Filters
) : (
-
setShowWelcomeGuide(true)} variant="success" startIcon={ }>
+ setShowWelcomeGuide(true)} variant="primary" tone="success" startIcon={ }>
Add Your First Site
)}
diff --git a/frontend/src/pages/Sites/PageManager.tsx b/frontend/src/pages/Sites/PageManager.tsx
index 0810f02b..12c9125f 100644
--- a/frontend/src/pages/Sites/PageManager.tsx
+++ b/frontend/src/pages/Sites/PageManager.tsx
@@ -11,6 +11,7 @@ import PageMeta from '../../components/common/PageMeta';
import PageHeader from '../../components/common/PageHeader';
import { Card } from '../../components/ui/card';
import Button from '../../components/ui/button/Button';
+import IconButton from '../../components/ui/button/IconButton';
import { useToast } from '../../components/ui/toast/ToastContainer';
import { fetchAPI } from '../../services/api';
import {
@@ -94,13 +95,10 @@ const DraggablePageItem: React.FC<{
-
onEdit(page.id)}>
-
+ onEdit(page.id)} startIcon={ }>
Edit
- onDelete(page.id)}>
-
-
+ onDelete(page.id)} icon={ } />
);
@@ -330,8 +328,8 @@ export default function PageManager() {
size="sm"
onClick={handleBulkDelete}
className="text-error-600 hover:text-error-700"
+ startIcon={
}
>
-
Delete Selected
setSelectedPages(new Set())}>
diff --git a/frontend/src/pages/Sites/PostEditor.tsx b/frontend/src/pages/Sites/PostEditor.tsx
index e5f41788..2108ec5a 100644
--- a/frontend/src/pages/Sites/PostEditor.tsx
+++ b/frontend/src/pages/Sites/PostEditor.tsx
@@ -271,16 +271,16 @@ export default function PostEditor() {
variant={activeTab === 'content' ? 'primary' : 'ghost'}
size="sm"
onClick={() => setActiveTab('content')}
+ startIcon={ }
>
-
Content
setActiveTab('taxonomy')}
+ startIcon={ }
>
-
Taxonomy & Cluster
{content.id && (
@@ -291,8 +291,8 @@ export default function PostEditor() {
setActiveTab('validation');
loadValidation();
}}
+ startIcon={
}
>
-
Validation
{validationResult && !validationResult.is_valid && (
diff --git a/frontend/src/pages/Sites/PublishingQueue.tsx b/frontend/src/pages/Sites/PublishingQueue.tsx
index b4ab2662..133fa849 100644
--- a/frontend/src/pages/Sites/PublishingQueue.tsx
+++ b/frontend/src/pages/Sites/PublishingQueue.tsx
@@ -283,15 +283,15 @@ export default function PublishingQueue() {
setViewMode('list')}
+ startIcon={ }
>
-
List
setViewMode('calendar')}
+ startIcon={ }
>
-
Calendar
diff --git a/frontend/src/pages/Sites/Settings.tsx b/frontend/src/pages/Sites/Settings.tsx
index 2fc38191..a74f7951 100644
--- a/frontend/src/pages/Sites/Settings.tsx
+++ b/frontend/src/pages/Sites/Settings.tsx
@@ -27,7 +27,7 @@ import {
} from '../../services/api';
import WordPressIntegrationForm from '../../components/sites/WordPressIntegrationForm';
import { integrationApi, SiteIntegration } from '../../services/integration.api';
-import { GridIcon, PlugInIcon, PaperPlaneIcon, DocsIcon, BoltIcon, FileIcon, ChevronDownIcon, CloseIcon, PlusIcon } from '../../icons';
+import { GridIcon, PlugInIcon, PaperPlaneIcon, DocsIcon, BoltIcon, FileIcon, ChevronDownIcon, CloseIcon, PlusIcon, RefreshCwIcon } from '../../icons';
import Badge from '../../components/ui/badge/Badge';
import { Dropdown } from '../../components/ui/dropdown/Dropdown';
import { DropdownItem } from '../../components/ui/dropdown/DropdownItem';
@@ -621,8 +621,8 @@ export default function SiteSettings() {
? 'border-brand-500 text-brand-600 dark:text-brand-400'
: 'border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300'
}`}
+ startIcon={ }
>
-
General
}
>
-
Integrations
}
>
-
Publishing
{(wordPressIntegration || site?.wp_url || site?.wp_api_key || site?.hosting_type === 'wordpress') && (
@@ -667,8 +667,8 @@ export default function SiteSettings() {
? 'border-brand-500 text-brand-600 dark:text-brand-400'
: 'border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300'
}`}
+ startIcon={ }
>
-
Content Types
)}
@@ -951,21 +951,9 @@ export default function SiteSettings() {
variant="outline"
disabled={syncLoading || !(wordPressIntegration || site?.wp_url || site?.wp_api_key || site?.hosting_type === 'wordpress')}
onClick={handleManualSync}
- className="flex items-center gap-2"
+ startIcon={syncLoading ? : }
>
- {syncLoading ? (
- <>
-
- Syncing...
- >
- ) : (
- <>
-
-
-
- Sync Structure
- >
- )}
+ {syncLoading ? 'Syncing...' : 'Sync Structure'}
diff --git a/frontend/src/pages/Sites/SyncDashboard.tsx b/frontend/src/pages/Sites/SyncDashboard.tsx
index 09f2ed9a..45980bec 100644
--- a/frontend/src/pages/Sites/SyncDashboard.tsx
+++ b/frontend/src/pages/Sites/SyncDashboard.tsx
@@ -252,8 +252,8 @@ export default function SyncDashboard() {
size="sm"
onClick={() => handleSync('to_external')}
disabled={syncing || !integration.sync_enabled}
+ startIcon={
}
>
-
Sync to WordPress
handleSync('from_external')}
disabled={syncing || !integration.sync_enabled}
+ startIcon={ }
>
-
Sync from WordPress
diff --git a/frontend/src/pages/Thinker/AuthorProfiles.tsx b/frontend/src/pages/Thinker/AuthorProfiles.tsx
index 07d1f3a5..46a2d63d 100644
--- a/frontend/src/pages/Thinker/AuthorProfiles.tsx
+++ b/frontend/src/pages/Thinker/AuthorProfiles.tsx
@@ -107,8 +107,7 @@ export default function AuthorProfiles() {
breadcrumb="Thinker / Author Profiles"
/>
diff --git a/frontend/src/pages/account/AccountSettingsPage.tsx b/frontend/src/pages/account/AccountSettingsPage.tsx
index 1e94565c..bf279da3 100644
--- a/frontend/src/pages/account/AccountSettingsPage.tsx
+++ b/frontend/src/pages/account/AccountSettingsPage.tsx
@@ -7,7 +7,7 @@
import { useState, useEffect } from 'react';
import { useLocation } from 'react-router-dom';
import {
- SaveIcon, Loader2Icon, SettingsIcon, UserIcon, UsersIcon, UserIcon as UserPlusIcon, LockIcon, LockIcon as ShieldIcon, XIcon
+ SaveIcon, Loader2Icon, SettingsIcon, UserIcon, UsersIcon, UserPlusIcon, LockIcon, LockIcon as ShieldIcon, XIcon
} from '../../icons';
import { Card } from '../../components/ui/card';
import Button from '../../components/ui/button/Button';
@@ -605,7 +605,7 @@ export default function AccountSettingsPage() {
}
+ startIcon={
}
onClick={() => setShowInviteModal(true)}
>
Invite Someone
diff --git a/frontend/src/pages/account/ContentSettingsPage.tsx b/frontend/src/pages/account/ContentSettingsPage.tsx
index 876d5233..f7838c0b 100644
--- a/frontend/src/pages/account/ContentSettingsPage.tsx
+++ b/frontend/src/pages/account/ContentSettingsPage.tsx
@@ -7,7 +7,7 @@
import { useState, useEffect, useCallback } from 'react';
import { useLocation } from 'react-router-dom';
import {
- SaveIcon, Loader2Icon, ImageIcon, FileTextIcon, PaperPlaneIcon as SendIcon, SettingsIcon
+ SaveIcon, Loader2Icon, ImageIcon, FileTextIcon, PaperPlaneIcon, SettingsIcon
} from '../../icons';
import { Card } from '../../components/ui/card';
import Button from '../../components/ui/button/Button';
diff --git a/frontend/src/pages/account/NotificationsPage.tsx b/frontend/src/pages/account/NotificationsPage.tsx
index 398cfe41..76439b29 100644
--- a/frontend/src/pages/account/NotificationsPage.tsx
+++ b/frontend/src/pages/account/NotificationsPage.tsx
@@ -209,9 +209,8 @@ export default function NotificationsPage() {
variant="outline"
size="sm"
onClick={() => setShowFilters(!showFilters)}
- className="flex items-center gap-2"
+ startIcon={
}
>
-
Filters
@@ -220,9 +219,8 @@ export default function NotificationsPage() {
variant="outline"
size="sm"
onClick={handleMarkAllRead}
- className="flex items-center gap-2"
+ startIcon={
}
>
-
Mark All Read
)}
diff --git a/frontend/src/pages/account/PlansAndBillingPage.tsx b/frontend/src/pages/account/PlansAndBillingPage.tsx
index 7a39e286..0614045e 100644
--- a/frontend/src/pages/account/PlansAndBillingPage.tsx
+++ b/frontend/src/pages/account/PlansAndBillingPage.tsx
@@ -9,7 +9,7 @@
import { useState, useEffect, useRef } from 'react';
import { Link, useLocation } from 'react-router-dom';
import {
- CreditCardIcon, BoxIcon as PackageIcon, TrendingUpIcon, FileTextIcon, WalletIcon, ArrowUpIcon as ArrowUpCircleIcon,
+ CreditCardIcon, BoxIcon as PackageIcon, TrendingUpIcon, FileTextIcon, WalletIcon, ArrowUpIcon,
Loader2Icon, AlertCircleIcon, CheckCircleIcon, DownloadIcon, ZapIcon, GlobeIcon, UsersIcon, XIcon
} from '../../icons';
import { Card } from '../../components/ui/card';
diff --git a/frontend/src/templates/ContentViewTemplate.tsx b/frontend/src/templates/ContentViewTemplate.tsx
index 0ec23dca..5ba3488a 100644
--- a/frontend/src/templates/ContentViewTemplate.tsx
+++ b/frontend/src/templates/ContentViewTemplate.tsx
@@ -763,8 +763,8 @@ export default function ContentViewTemplate({ content, loading, onBack }: Conten
}
>
-
Back to Content List
)}
@@ -829,8 +829,8 @@ export default function ContentViewTemplate({ content, loading, onBack }: Conten
variant="ghost"
onClick={onBack}
className="mb-6"
+ startIcon={
}
>
-
Back to Content List
)}
@@ -1030,16 +1030,16 @@ export default function ContentViewTemplate({ content, loading, onBack }: Conten
navigate(`/sites/${content.site_id}/posts/${content.id}/edit`)}
+ startIcon={ }
>
-
Edit Content
navigate(`/writer/images?contentId=${content.id}`)}
+ startIcon={ }
>
-
Generate Images
>
@@ -1051,16 +1051,16 @@ export default function ContentViewTemplate({ content, loading, onBack }: Conten
navigate(`/sites/${content.site_id}/posts/${content.id}/edit`)}
+ startIcon={ }
>
-
Edit Content
navigate(`/writer/published?contentId=${content.id}&action=publish`)}
+ startIcon={ }
>
-
Publish
>