Pages Audit — Complete Inventory
Generated from comprehensive file-by-file review of frontend/src/pages/
Legend
| Field |
Description |
| Component |
Export name |
| Purpose |
One-line description |
| Origin |
tailadmin-original · tailadmin-modified · custom · placeholder |
| UI Patterns |
Layout/interaction patterns used |
| Shared Components |
Imports from components/ |
| Local Sub-components |
Page-specific child components (in components/ subdirs) |
| Pattern Duplication |
Repeated code that could be extracted |
| Template |
Which template system is used (if any) |
1. Dashboard
Dashboard/Home.tsx (~300 lines)
| Field |
Value |
| Component |
Home |
| Purpose |
Main dashboard with workflow pipeline, quick actions, analytics widgets, and site overview |
| Origin |
custom |
| UI Patterns |
Widget grid layout (3-col responsive), floating action button, site filter, AI period filter |
| Shared Components |
PageMeta, WorkflowGuide, Button, usePageContext |
| Local Sub-components |
NeedsAttentionBar, WorkflowPipelineWidget, QuickActionsWidget, AIOperationsWidget, RecentActivityWidget, ContentVelocityWidget, AutomationStatusWidget, SitesOverviewWidget, CreditsUsageWidget, AccountInfoWidget, KeywordLibraryStatsWidget (all from components/dashboard/) |
| Pattern Duplication |
None — all widgets properly extracted |
| Template |
None (custom widget grid) |
2. Planner
Planner/Keywords.tsx (~800 lines)
| Field |
Value |
| Component |
Keywords |
| Purpose |
Keyword management table with CRUD, filters, bulk actions, import/export, auto-clustering |
| Origin |
custom |
| UI Patterns |
Config-driven table, cascading filters from backend, debounced search, volume range dropdown with refs, header metrics from API totals, bulk action with progress modal |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
useKeywordsImportExport hook (from components/keywords-library/) |
| Pattern Duplication |
Cascading filter pattern repeated in Clusters/Ideas; header metrics calculation repeated in all Planner pages; volume range dropdown is inline (not extracted) |
| Template |
TablePageTemplate + createKeywordsPageConfig() |
Planner/Clusters.tsx (~700 lines)
| Field |
Value |
| Component |
Clusters |
| Purpose |
Cluster management table with CRUD, filters, bulk idea generation |
| Origin |
custom |
| UI Patterns |
Config-driven table, cascading filters, header metrics from API totals, StandardThreeWidgetFooter |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
None |
| Pattern Duplication |
Near-identical to Keywords.tsx — cascading filter loading, header metrics pattern, footer widget pattern |
| Template |
TablePageTemplate + createClustersPageConfig() |
Planner/ClusterDetail.tsx (~280 lines)
| Field |
Value |
| Component |
ClusterDetail |
| Purpose |
Detail view for single cluster with tabs (articles, pages, products, taxonomy) |
| Origin |
custom |
| UI Patterns |
Param-driven detail view, inline tab implementation (Button-based with border-bottom), tabbed content types, breadcrumb back navigation |
| Shared Components |
PageMeta, PageHeader, Card, Button, Badge, useToast |
| Local Sub-components |
None |
| Pattern Duplication |
Custom inline tab implementation — does NOT use a shared Tab component; duplicates tab pattern seen in Sites/Settings |
| Template |
None (custom detail view) |
Planner/Ideas.tsx (~700 lines)
| Field |
Value |
| Component |
Ideas |
| Purpose |
Content ideas management with queue-to-writer bulk action |
| Origin |
custom |
| UI Patterns |
Config-driven table, cascading filters, header metrics, bulk queue action with progress modal |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
None |
| Pattern Duplication |
Near-identical to Keywords/Clusters — same cascading filter + header metrics + footer pattern. Bug: sectors prop passed twice in pageConfig creation |
| Template |
TablePageTemplate + createIdeasPageConfig() |
3. Writer
Writer/Content.tsx (~550 lines)
| Field |
Value |
| Component |
Content (Writer) |
| Purpose |
Content drafts table (status='draft') with generate image prompts, optimize, send to optimizer, view on WordPress actions |
| Origin |
custom |
| UI Patterns |
Config-driven table, locked status filter, per-row AI actions, inline optimization via optimizerApi |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
None |
| Pattern Duplication |
Same table page pattern as Planner pages |
| Template |
TablePageTemplate + createContentPageConfig() |
Writer/Tasks.tsx (~500+ lines)
| Field |
Value |
| Component |
Tasks |
| Purpose |
Writing tasks management with content generation and image generation bulk actions |
| Origin |
custom |
| UI Patterns |
Config-driven table, per-row content generation, bulk image generation |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
None |
| Pattern Duplication |
Same table page pattern as Planner/Writer pages |
| Template |
TablePageTemplate + createTasksPageConfig() |
Writer/Review.tsx (~500 lines)
| Field |
Value |
| Component |
Review |
| Purpose |
Content review queue (status='review') with approve single/bulk actions |
| Origin |
custom |
| UI Patterns |
Config-driven table, approval workflow, event-based refresh |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
None |
| Pattern Duplication |
Same table pattern. Note: Uses different event name ('site-changed' vs 'siteChanged' used elsewhere) |
| Template |
TablePageTemplate + createReviewPageConfig() |
Writer/Approved.tsx (~550+ lines)
| Field |
Value |
| Component |
Approved |
| Purpose |
Approved content ready for publishing with extensive publishing workflow (single/bulk publish, schedule, reschedule) |
| Origin |
custom |
| UI Patterns |
Config-driven table, multi-modal publishing workflow, schedule management |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, ProgressModal, useToast, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
PublishingProgressModal, BulkPublishingModal, PublishLimitModal, ScheduleContentModal, BulkScheduleModal, BulkSchedulePreviewModal, ErrorDetailsModal (from components/publishing/, components/BulkWordPressPublish/) |
| Pattern Duplication |
Base table pattern same; extensive modal system is specific to this page |
| Template |
TablePageTemplate + createApprovedPageConfig() |
Writer/Images.tsx (~550+ lines)
| Field |
Value |
| Component |
Images |
| Purpose |
Image management grouped by content (one row per content) with image generation queue |
| Origin |
custom |
| UI Patterns |
Config-driven table, client-side filtering/sorting/pagination (not server-side), image generation queue flow, settings pre-fetch |
| Shared Components |
PageHeader, StandardThreeWidgetFooter, FormModal, useToast, useSiteStore, useSectorStore |
| Local Sub-components |
ImageQueueModal, SingleRecordStatusUpdateModal (from components/) |
| Pattern Duplication |
Client-side filtering is an anomaly vs. other table pages that use server-side; base table pattern same |
| Template |
TablePageTemplate + createImagesPageConfig() |
Writer/ContentView.tsx (~67 lines)
| Field |
Value |
| Component |
ContentView |
| Purpose |
Individual content detail view (thin wrapper loading content by ID) |
| Origin |
custom |
| UI Patterns |
Param-driven detail view, loading state, error handling |
| Shared Components |
None directly (delegates to template) |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
ContentViewTemplate |
4. Publisher
Publisher/ContentCalendar.tsx (~550+ lines)
| Field |
Value |
| Component |
ContentCalendar |
| Purpose |
Content scheduling with calendar and list views, drag-drop reordering and date assignment |
| Origin |
custom |
| UI Patterns |
Dual view (calendar grid + list), drag-drop (list reorder + calendar date drop), complex derived state via useMemo, ButtonGroup view toggle |
| Shared Components |
PageMeta, PageHeader, ComponentCard, Card, Button, IconButton, ButtonGroup, CalendarItemTooltip, ScheduleContentModal |
| Local Sub-components |
None (inline calendar grid rendering) |
| Pattern Duplication |
Calendar rendering is fully inline (~200+ lines); shares ScheduleContentModal with Approved.tsx |
| Template |
None (fully custom) |
Publisher/PublishSettings.tsx (~500 lines)
| Field |
Value |
| Component |
PublishSettings |
| Purpose |
Publishing automation, limits, and schedule configuration (3-card form layout) |
| Origin |
custom |
| UI Patterns |
3-card form layout (Automation, Limits, Schedule), toggle switches, inline form validation |
| Shared Components |
PageMeta, PageHeader, Card, Button, IconButton, Label, InputField, Switch |
| Local Sub-components |
None |
| Pattern Duplication |
Settings form pattern similar to Sites/Settings and account/ContentSettingsPage |
| Template |
None (custom form layout) |
5. Sites
Sites/List.tsx (~550+ lines)
| Field |
Value |
| Component |
SitesList |
| Purpose |
Sites list with table/grid toggle, site CRUD, activation, deletion |
| Origin |
custom |
| UI Patterns |
Dual view (table + grid cards), ViewToggle, client-side filtering, inline deletion/toggle, WorkflowGuide |
| Shared Components |
PageMeta, PageHeader, Card, Button, Badge, Alert, Switch, InputField, Select, ViewToggle, WorkflowGuide, ConfirmDialog, SiteTypeBadge |
| Local Sub-components |
None |
| Pattern Duplication |
Table view uses TablePageTemplate; grid view is custom inline cards |
| Template |
TablePageTemplate (table view only) + custom grid view |
Sites/Dashboard.tsx (~500 lines)
| Field |
Value |
| Component |
SiteDashboard |
| Purpose |
Individual site dashboard with setup checklist, quick actions, analytics |
| Origin |
custom |
| UI Patterns |
Widget layout, setup checklist, quick action cards, stat widgets |
| Shared Components |
PageMeta, PageHeader, ComponentCard, SiteInfoBar, Card, Button |
| Local Sub-components |
SiteSetupChecklist, SiteConfigWidget, OperationsCostsWidget, CreditAvailabilityWidget (from components/sites/) |
| Pattern Duplication |
Widget grid similar to Dashboard/Home but site-specific |
| Template |
None (custom widget layout) |
Sites/Settings.tsx (~1000+ lines)
| Field |
Value |
| Component |
SiteSettings |
| Purpose |
Site settings with tabs (General, Automation, Integrations) — massive form |
| Origin |
custom |
| UI Patterns |
Tabbed form, SEO settings, industry/sector selection, AI settings, WordPress integration form |
| Shared Components |
PageMeta, PageHeader, Card, Button, InputField, Select, SelectDropdown, Checkbox, Radio, TextArea, Switch, SiteInfoBar |
| Local Sub-components |
AIAutomationSettings, WordPressIntegrationForm (from components/integration/, components/sites/) |
| Pattern Duplication |
Custom inline tab implementation (duplicates pattern in ClusterDetail); very large file that could be split into tab sub-components |
| Template |
None (custom tabbed form) |
Sites/Content.tsx (~500 lines)
| Field |
Value |
| Component |
SiteContent |
| Purpose |
Site-specific content manager with manual table and custom filters |
| Origin |
custom |
| UI Patterns |
Manual table (not TablePageTemplate), custom filter cards, manual pagination |
| Shared Components |
PageMeta, PageHeader, Card, Button, InputField, Select, SiteInfoBar |
| Local Sub-components |
None |
| Pattern Duplication |
Manual table implementation duplicates what TablePageTemplate provides; manual pagination duplicates template pagination |
| Template |
None (custom manual table) |
Sites/ContentStructure.tsx (416 lines)
| Field |
Value |
| Component |
ContentStructure |
| Purpose |
Content organized by clusters with keyword table and content list |
| Origin |
custom |
| UI Patterns |
Cluster selector dropdown, keyword table, content list, inline tables |
| Shared Components |
PageMeta, PageHeader, Card, Button, Badge, Select, SiteInfoBar |
| Local Sub-components |
None |
| Pattern Duplication |
Manual inline tables duplicate TablePageTemplate capabilities |
| Template |
None (custom cluster-based view) |
Sites/PostEditor.tsx (672 lines)
| Field |
Value |
| Component |
PostEditor |
| Purpose |
Full-featured post editor with SEO metadata, taxonomy, and content validation tabs |
| Origin |
custom |
| UI Patterns |
Tabbed editor (content, taxonomy, validation), form inputs, rich content editing |
| Shared Components |
PageMeta, PageHeader, Card, Button, form components, SiteInfoBar |
| Local Sub-components |
Content validation feature inline |
| Pattern Duplication |
Tab implementation likely duplicates other inline tab patterns |
| Template |
None (custom post editor) |
Sites/PageManager.tsx (395 lines)
| Field |
Value |
| Component |
PageManager |
| Purpose |
Drag-drop page reordering and management |
| Origin |
custom |
| UI Patterns |
Drag-and-drop with react-dnd + HTML5Backend, sortable list |
| Shared Components |
PageMeta, PageHeader, DndProvider, useDrag, useDrop |
| Local Sub-components |
None |
| Pattern Duplication |
Only page using react-dnd directly |
| Template |
None (custom drag-drop interface) |
Sites/SyncDashboard.tsx (460 lines)
| Field |
Value |
| Component |
SyncDashboard |
| Purpose |
WordPress sync health dashboard with sync status, mismatches, and logs |
| Origin |
custom |
| UI Patterns |
Status cards, sync action buttons, mismatch list, log viewer |
| Shared Components |
PageMeta, PageHeader, Card, Button, Badge |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None (custom dashboard) |
Sites/PublishingQueue.tsx (441 lines)
| Field |
Value |
| Component |
PublishingQueue |
| Purpose |
Scheduled content queue with list/calendar view (site-specific) |
| Origin |
custom |
| UI Patterns |
Dual view (list + calendar), similar to ContentCalendar but site-scoped |
| Shared Components |
PageMeta, PageHeader, Card, Button |
| Local Sub-components |
None |
| Pattern Duplication |
Duplicates much of Publisher/ContentCalendar.tsx but scoped to a single site |
| Template |
None (custom queue view) |
Sites/AIAutomationSettings.tsx (929 lines)
| Field |
Value |
| Component |
AIAutomationSettings |
| Purpose |
Unified AI & automation settings per site (per SETTINGS-CONSOLIDATION-PLAN) |
| Origin |
custom |
| UI Patterns |
Multi-section settings form, stage configuration, unified settings API |
| Shared Components |
Card, Button, Switch, InputField, Label, Select |
| Local Sub-components |
Uses unifiedSettings.api with UnifiedSiteSettings, StageConfig types |
| Pattern Duplication |
Large settings form pattern similar to Sites/Settings, Publisher/PublishSettings |
| Template |
None (custom settings form) |
Sites/DeploymentPanel.tsx (43 lines)
| Field |
Value |
| Component |
DeploymentPanel |
| Purpose |
DEPRECATED — Placeholder showing deprecation notice |
| Origin |
custom (deprecated) |
| UI Patterns |
Static notice card |
| Shared Components |
PageMeta, PageHeader, Card |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None |
6. Automation
Automation/AutomationPage.tsx (~1156 lines)
| Field |
Value |
| Component |
AutomationPage |
| Purpose |
Main automation dashboard — run/pause/config pipeline, live progress tracking, activity log, eligibility checks |
| Origin |
custom |
| UI Patterns |
7-stage pipeline visualization, live polling progress, server time display, eligibility gating, stage color coding |
| Shared Components |
PageMeta, PageHeader, ComponentCard, DebugSiteSelector, Button, useToast, useSiteStore |
| Local Sub-components |
ActivityLog, CurrentProcessingCardV2, GlobalProgressBar (from components/Automation/) |
| Pattern Duplication |
None — highly specialized |
| Template |
None (custom automation dashboard) |
Automation/AutomationOverview.tsx (269 lines)
| Field |
Value |
| Component |
AutomationOverview |
| Purpose |
Production stats dashboard showing actual output metrics and meaningful run history |
| Origin |
custom |
| UI Patterns |
Quick action buttons with badge counts, production summary, run history list |
| Shared Components |
PageMeta, PageHeader, useToast, useSiteStore |
| Local Sub-components |
MeaningfulRunHistory, ProductionSummary (from components/Automation/DetailView/) |
| Pattern Duplication |
None |
| Template |
None (custom stats dashboard) |
Automation/AutomationRunDetail.tsx (218 lines)
| Field |
Value |
| Component |
AutomationRunDetail |
| Purpose |
Detailed view of a single automation run with stage breakdown, charts, and insights |
| Origin |
custom |
| UI Patterns |
Run summary card, 2-col layout (credit chart + stage accordion), insights panel, derived insights from data |
| Shared Components |
PageMeta, PageHeader, useToast, useSiteStore |
| Local Sub-components |
RunSummaryCard, StageAccordion, EfficiencyMetrics, InsightsPanel, CreditBreakdownChart (from components/Automation/DetailView/) |
| Pattern Duplication |
None |
| Template |
None (custom detail view) |
Automation/PipelineSettings.tsx (399 lines)
| Field |
Value |
| Component |
PipelineSettings |
| Purpose |
Configure 7-stage automation pipeline — per-stage enable/disable, batch sizes, delays |
| Origin |
custom |
| UI Patterns |
Multi-stage form with checkboxes and inputs per stage, save/cancel flow |
| Shared Components |
PageMeta, PageHeader, Card, Button, Checkbox, Select, InputField, useToast, useSiteStore |
| Local Sub-components |
None |
| Pattern Duplication |
Settings form pattern (similar to PublishSettings, Sites/Settings) |
| Template |
None (custom pipeline settings form) |
7. Thinker
Thinker/Prompts.tsx (499 lines)
| Field |
Value |
| Component |
Prompts |
| Purpose |
AI prompt library — manage/edit/reset prompt templates for all AI operations (clustering, ideas, content, images, site structure) |
| Origin |
custom |
| UI Patterns |
Grouped prompt editor cards (Planner, Writer, Image, Site Builder sections), save/reset per prompt, TextArea editors |
| Shared Components |
PageMeta, PageHeader, Button, TextArea, useToast |
| Local Sub-components |
None |
| Pattern Duplication |
Repeating card+TextArea+save/reset pattern for each prompt type — could extract a PromptEditorCard component |
| Template |
None (custom prompt editor layout) |
Thinker/AuthorProfiles.tsx (160 lines)
| Field |
Value |
| Component |
AuthorProfiles |
| Purpose |
CRUD for writing style profiles (name, tone, language) |
| Origin |
custom |
| UI Patterns |
Card grid, FormModal for create/edit, confirm-delete, CRUD API calls |
| Shared Components |
PageMeta, PageHeader, Card, Button, Badge, FormModal, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
FormModal CRUD pattern is clean and reusable |
| Template |
None (card grid + FormModal) |
Thinker/ImageTesting.tsx (28 lines)
| Field |
Value |
| Component |
ImageTesting |
| Purpose |
PLACEHOLDER — "Coming Soon" for image testing |
| Origin |
placeholder |
| UI Patterns |
Static placeholder card |
| Shared Components |
PageMeta, PageHeader, ComponentCard |
| Local Sub-components |
None |
| Pattern Duplication |
Same "Coming Soon" pattern as Profile, Strategies |
| Template |
None |
Thinker/Profile.tsx (22 lines)
| Field |
Value |
| Component |
Profile |
| Purpose |
PLACEHOLDER — "Coming Soon" for AI profile settings |
| Origin |
placeholder |
| UI Patterns |
Static placeholder card |
| Shared Components |
PageMeta, ComponentCard |
| Local Sub-components |
None |
| Pattern Duplication |
Same "Coming Soon" pattern as ImageTesting, Strategies |
| Template |
None |
Thinker/Strategies.tsx (28 lines)
| Field |
Value |
| Component |
Strategies |
| Purpose |
PLACEHOLDER — "Coming Soon" for content strategies |
| Origin |
placeholder |
| UI Patterns |
Static placeholder card |
| Shared Components |
PageMeta, PageHeader, ComponentCard |
| Local Sub-components |
None |
| Pattern Duplication |
Same "Coming Soon" pattern as ImageTesting, Profile |
| Template |
None |
8. Optimizer
Optimizer/ContentSelector.tsx (303 lines)
| Field |
Value |
| Component |
OptimizerContentSelector |
| Purpose |
Content list for selecting items to optimize — single/batch optimize with entry point selection |
| Origin |
custom |
| UI Patterns |
Manual table with checkboxes, client-side filtering, batch selection, entry-point dropdown, manual pagination |
| Shared Components |
PageMeta, PageHeader, ModuleNavigationTabs, Button, Select, Checkbox, useToast, useSectorStore, usePageSizeStore |
| Local Sub-components |
ContentFilter, SourceBadge, OptimizationScores (from components/content/, components/optimizer/) |
| Pattern Duplication |
Manual table with inline pagination — duplicates TablePageTemplate capability; pagination buttons duplicate pattern seen in Linker, Sites/Content |
| Template |
None (custom manual table) |
Optimizer/AnalysisPreview.tsx (304 lines)
| Field |
Value |
| Component |
AnalysisPreview |
| Purpose |
Preview optimization scores for a single content item without applying changes |
| Origin |
custom |
| UI Patterns |
Param-driven detail view, score cards, metadata coverage scorecards, recommended actions list |
| Shared Components |
PageMeta, PageHeader, useToast |
| Local Sub-components |
OptimizationScores (from components/optimizer/) |
| Pattern Duplication |
None |
| Template |
None (custom analysis view) |
9. Linker
Linker/ContentList.tsx (237 lines)
| Field |
Value |
| Component |
LinkerContentList |
| Purpose |
Content list for adding internal links — single/batch link processing |
| Origin |
custom |
| UI Patterns |
Manual table, per-row process button, batch processing, link results display, manual pagination |
| Shared Components |
PageMeta, PageHeader, ModuleNavigationTabs, Button, useToast, useSectorStore, usePageSizeStore, usePageLoading |
| Local Sub-components |
SourceBadge, LinkResults (from components/content/, components/linker/) |
| Pattern Duplication |
Manual table + inline pagination — same pattern as Optimizer/ContentSelector and Sites/Content |
| Template |
None (custom manual table) |
10. Settings (Admin/Legacy)
Settings/Integration.tsx (~1028 lines)
| Field |
Value |
| Component |
Integration |
| Purpose |
API integration management (OpenAI, Runware, GSC) — configure keys, test connections, image generation settings |
| Origin |
custom |
| UI Patterns |
Integration cards, validation cards, image generation/result cards, site integrations, FormModal for config |
| Shared Components |
PageMeta, IntegrationCard, ValidationCard, ImageGenerationCard, ImageResultCard, ImageServiceCard, SiteIntegrationsSection, Modal, FormModal, Button, Checkbox, Label, SelectDropdown, Alert, useToast |
| Local Sub-components |
Inline SVG icon components (OpenAIIcon, RunwareIcon, GSCIcon) |
| Pattern Duplication |
Complex integration management — unique |
| Template |
None (custom integration management) |
Settings/Sites.tsx (~638 lines)
| Field |
Value |
| Component |
Sites (Settings) |
| Purpose |
Admin site management — CRUD sites, manage sectors, toggle active sites |
| Origin |
custom |
| UI Patterns |
SiteCard grid, FormModal for create/edit, sector selector modal, confirm delete |
| Shared Components |
PageMeta, SiteCard, FormModal, ConfirmDialog, Button, Alert, Select, Checkbox, Badge, useToast |
| Local Sub-components |
Inline SiteIcon SVG |
| Pattern Duplication |
Overlaps with Sites/List.tsx — both manage sites with different UIs |
| Template |
None (card grid + modals) |
Settings/WordPressIntegrationDebug.tsx (~655 lines)
| Field |
Value |
| Component |
WordPressIntegrationDebug |
| Purpose |
WordPress integration health debugging — sync events, data validation, API status checks |
| Origin |
custom |
| UI Patterns |
Health status cards, sync event log, data validation table, debug toggle |
| Shared Components |
useSiteStore, useToast, icons |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Sites/SyncDashboard — both show WordPress sync health |
| Template |
None (custom debug interface) |
Settings/CreditsAndBilling.tsx (~238 lines)
| Field |
Value |
| Component |
CreditsAndBilling |
| Purpose |
Usage overview with credit balance and transaction history |
| Origin |
custom |
| UI Patterns |
Tab toggle (overview/transactions), metric cards, transaction table |
| Shared Components |
PageMeta, ComponentCard, EnhancedMetricCard, Button, Badge, useToast |
| Local Sub-components |
None |
| Pattern Duplication |
Duplicates functionality in account/UsageDashboardPage and Billing/Usage |
| Template |
None (custom billing view) |
Settings/Plans.tsx (~218 lines)
| Field |
Value |
| Component |
Plans |
| Purpose |
Display available subscription plans using PricingTable component |
| Origin |
custom |
| UI Patterns |
Pricing table display, plan feature extraction, URL-based plan preselection |
| Shared Components |
PageMeta, PricingTable1, useToast, usePageLoading, useAuthStore |
| Local Sub-components |
None |
| Pattern Duplication |
Plan display overlaps with account/PlansAndBillingPage |
| Template |
None (pricing table) |
Settings/Publishing.tsx (~226 lines)
| Field |
Value |
| Component |
Publishing |
| Purpose |
Publishing rules, auto-publish, sync settings (TODO: mostly placeholder) |
| Origin |
custom |
| UI Patterns |
Settings form with checkboxes, dropdowns, PublishingRules component |
| Shared Components |
PageMeta, Card, Button, Checkbox, Label, Input, Select, PublishingRules, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Publisher/PublishSettings |
| Template |
None (custom settings form) |
Settings/General.tsx (109 lines)
| Field |
Value |
| Component |
GeneralSettings |
| Purpose |
App preferences (table records per page, default sort) |
| Origin |
custom |
| UI Patterns |
Simple settings form, settingsStore integration |
| Shared Components |
PageMeta, ComponentCard, Button, Label, InputField, Select, useSettingsStore, useToast |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None (ComponentCard form) |
Settings/Industries.tsx (59 lines)
| Field |
Value |
| Component |
Industries (Settings) |
| Purpose |
Admin industry template viewer (read-only card grid) |
| Origin |
custom |
| UI Patterns |
Card grid, badge for active status |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Reference/Industries |
| Template |
None (card grid) |
Settings/Subscriptions.tsx (94 lines)
| Field |
Value |
| Component |
Subscriptions |
| Purpose |
Admin subscription list (table of account subscriptions) |
| Origin |
custom |
| UI Patterns |
Simple table in Card, status badges |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None (simple table) |
Settings/Users.tsx (79 lines)
| Field |
Value |
| Component |
Users |
| Purpose |
Admin user list (table of account users) |
| Origin |
custom |
| UI Patterns |
Simple table in Card, role/status badges |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None (simple table) |
Settings/Account.tsx (43 lines)
| Field |
Value |
| Component |
AccountSettings (Settings) |
| Purpose |
PLACEHOLDER — "coming soon" for account settings |
| Origin |
placeholder |
| UI Patterns |
Static placeholder |
| Shared Components |
PageMeta, Card, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Functionality exists in account/AccountSettingsPage |
| Template |
None |
Settings/System.tsx (43 lines)
| Field |
Value |
| Component |
SystemSettings |
| Purpose |
PLACEHOLDER — "coming soon" for system settings |
| Origin |
placeholder |
| UI Patterns |
Static placeholder |
| Shared Components |
PageMeta, Card, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None |
11. Billing (Legacy)
Billing/Usage.tsx (170 lines)
| Field |
Value |
| Component |
Usage |
| Purpose |
Credit usage overview with cost table and transaction history |
| Origin |
custom |
| UI Patterns |
Balance card, cost reference table, transaction list |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Duplicates Settings/CreditsAndBilling and account/UsageDashboardPage |
| Template |
None |
Billing/Credits.tsx (122 lines)
| Field |
Value |
| Component |
Credits |
| Purpose |
Credit balance display with upgrade CTA |
| Origin |
custom |
| UI Patterns |
Balance cards, link to plans |
| Shared Components |
PageMeta, Card, Badge, Button, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Usage page and account/UsageDashboardPage |
| Template |
None |
Billing/Transactions.tsx (103 lines)
| Field |
Value |
| Component |
Transactions |
| Purpose |
Credit transaction history table with pagination |
| Origin |
custom |
| UI Patterns |
Table with color-coded badges, pagination |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Transaction table duplicated in Settings/CreditsAndBilling and Billing/Usage |
| Template |
None |
12. Account (Current)
account/PlansAndBillingPage.tsx (~1822 lines)
| Field |
Value |
| Component |
PlansAndBillingPage |
| Purpose |
Comprehensive billing dashboard — current plan, credit packages, invoices, payment methods, purchase flow |
| Origin |
custom |
| UI Patterns |
Multi-section dashboard, credit package cards, invoice downloads, payment method cards, purchase modals, portal integration |
| Shared Components |
PageMeta, PageHeader, Card, Badge, Button, Label, useToast, usePageLoading |
| Local Sub-components |
Inline SVG icons, portal-based purchase modal |
| Pattern Duplication |
Supersedes Settings/Plans, Settings/CreditsAndBilling, Billing/*; very large file that could be split |
| Template |
None (custom multi-section dashboard) |
account/AccountSettingsPage.tsx (~979 lines)
| Field |
Value |
| Component |
AccountSettingsPage |
| Purpose |
Account, profile, and team management — single scrollable page with all settings |
| Origin |
custom |
| UI Patterns |
Vertical form sections (Account, Profile, Team), invite/remove team members, change password, modal for invites |
| Shared Components |
PageMeta, PageHeader, ComponentCard, Card, Badge, Button, InputField, Select, Checkbox, Modal, useToast, useAuthStore, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Supersedes Settings/Account placeholder |
| Template |
None (custom form sections) |
account/UsageDashboardPage.tsx (~954 lines)
| Field |
Value |
| Component |
UsageDashboardPage |
| Purpose |
Unified analytics dashboard — credit usage charts, operation breakdowns, plan limits, usage trends |
| Origin |
custom |
| UI Patterns |
Charts (react-apexcharts), stat cards, operation breakdown table, period selector, pagination |
| Shared Components |
PageMeta, PageHeader, Card, Badge, Button, SelectDropdown, Input, Pagination, useToast |
| Local Sub-components |
None (uses Chart from react-apexcharts) |
| Pattern Duplication |
Supersedes Billing/Usage, Billing/Credits, Settings/CreditsAndBilling; most comprehensive usage view |
| Template |
None (custom analytics dashboard) |
account/ContentSettingsPage.tsx (~686 lines)
| Field |
Value |
| Component |
ContentSettingsPage |
| Purpose |
Content generation, publishing, and image settings — 3-tab settings page |
| Origin |
custom |
| UI Patterns |
Tabbed form (Content, Publishing, Images), image generation settings with provider/model selectors |
| Shared Components |
PageMeta, PageHeader, Card, Button, SelectDropdown, Label, Checkbox, TextArea, useToast |
| Local Sub-components |
None |
| Pattern Duplication |
Publishing settings overlap with Publisher/PublishSettings; image settings overlap with Settings/Integration |
| Template |
None (tabbed settings form) |
account/PurchaseCreditsPage.tsx (~429 lines)
| Field |
Value |
| Component |
PurchaseCreditsPage |
| Purpose |
Credit package selection and payment flow — choose package, select payment method, purchase |
| Origin |
custom |
| UI Patterns |
Package selection cards, payment method selection, manual payment form, invoice display |
| Shared Components |
PageMeta, PageHeader, Button, InputField, TextArea, Label |
| Local Sub-components |
None |
| Pattern Duplication |
Purchase flow also exists within PlansAndBillingPage |
| Template |
None (custom purchase flow) |
account/NotificationsPage.tsx (~428 lines)
| Field |
Value |
| Component |
NotificationsPage |
| Purpose |
Notification center — list, filter, mark read, delete notifications |
| Origin |
custom |
| UI Patterns |
Filterable notification list, severity/type/read filters, bulk mark all read, individual delete |
| Shared Components |
PageMeta, PageHeader, Card, Button, Select, useNotificationStore, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None (custom notification list) |
account/UsageAnalyticsPage.tsx (~278 lines)
| Field |
Value |
| Component |
UsageAnalyticsPage |
| Purpose |
Usage analytics with URL-driven tabs (limits, activity, insights, API) |
| Origin |
custom |
| UI Patterns |
URL-driven tab selection (path-based), period selector, billing panels |
| Shared Components |
PageMeta, PageHeader, Card, Badge, Button, useToast |
| Local Sub-components |
BillingUsagePanel, UsageLimitsPanel, CreditInsightsCharts (from components/billing/) |
| Pattern Duplication |
Overlaps with UsageDashboardPage — both show usage analytics with different approaches |
| Template |
None (tabbed analytics) |
13. Setup
Setup/SetupWizard.tsx (46 lines)
| Field |
Value |
| Component |
SetupWizard |
| Purpose |
Onboarding setup wizard — thin wrapper delegating to OnboardingWizard component |
| Origin |
custom |
| UI Patterns |
Wizard flow, complete/skip callbacks, page context integration |
| Shared Components |
PageMeta, OnboardingWizard, usePageContext |
| Local Sub-components |
None (all logic in OnboardingWizard) |
| Pattern Duplication |
None |
| Template |
None (delegated to OnboardingWizard) |
Setup/IndustriesSectorsKeywords.tsx (~1583 lines)
| Field |
Value |
| Component |
IndustriesSectorsKeywords |
| Purpose |
Keywords library — browse seed keywords by industry/sector, add to workflow, CSV import, smart suggestions |
| Origin |
custom |
| UI Patterns |
Sector metric grid, smart suggestions, sector card browsing, CSV import modal, bulk add with confirmation, TablePageTemplate for keyword table |
| Shared Components |
PageMeta, PageHeader, WorkflowGuide, Badge, Button, Modal, FileInput, Label, Input, Card, useToast, usePageLoading, useSiteStore, useSectorStore, usePageSizeStore |
| Local Sub-components |
SectorMetricGrid, SmartSuggestions, SectorCardsGrid, BulkAddConfirmation (from components/keywords-library/) |
| Pattern Duplication |
Very large file that mixes browsing, importing, and management; could be split |
| Template |
TablePageTemplate (for keyword browsing table) |
14. AuthPages
AuthPages/SignIn.tsx (17 lines)
| Field |
Value |
| Component |
SignIn |
| Purpose |
Sign-in page — thin wrapper composing AuthLayout + SignInForm |
| Origin |
tailadmin-modified |
| UI Patterns |
Auth layout with split-screen |
| Shared Components |
PageMeta, AuthLayout, SignInForm |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
AuthLayout (shared auth template) |
AuthPages/SignUp.tsx (~120 lines)
| Field |
Value |
| Component |
SignUp |
| Purpose |
Registration page with plan selection and unified signup form |
| Origin |
tailadmin-modified |
| UI Patterns |
Plan pre-selection from URL, plan cards, auth layout |
| Shared Components |
PageMeta, SignUpFormUnified, GridShape |
| Local Sub-components |
None |
| Pattern Duplication |
Plan fetching logic duplicated from Settings/Plans |
| Template |
Custom layout (inline, not AuthLayout) |
AuthPages/AuthPageLayout.tsx (87 lines)
| Field |
Value |
| Component |
AuthLayout |
| Purpose |
Shared auth page layout — split-screen with branding panel and plan preview |
| Origin |
tailadmin-modified |
| UI Patterns |
Split-screen layout (form left, branding right), responsive collapse, plan preview card, theme toggler |
| Shared Components |
GridShape, ThemeTogglerTwo |
| Local Sub-components |
None |
| Pattern Duplication |
None — this IS the shared layout |
| Template |
N/A (this is a layout component) |
AuthPages/ForgotPassword.tsx (177 lines)
| Field |
Value |
| Component |
ForgotPassword |
| Purpose |
Request password reset email |
| Origin |
custom |
| UI Patterns |
Centered card form, success state transition, anti-enumeration (always shows success) |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Standalone layout (doesn't use AuthLayout) |
| Template |
None (standalone centered form) |
AuthPages/ResetPassword.tsx (348 lines)
| Field |
Value |
| Component |
ResetPassword |
| Purpose |
Password reset form with token from email link |
| Origin |
custom |
| UI Patterns |
Token-validated form, password strength checks, state machine (form/success/error/expired), auto-redirect |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Standalone layout (doesn't use AuthLayout) |
| Template |
None (standalone centered form) |
AuthPages/VerifyEmail.tsx (220 lines)
| Field |
Value |
| Component |
VerifyEmail |
| Purpose |
Email verification with token from email link |
| Origin |
custom |
| UI Patterns |
Auto-verify on mount, state machine (verifying/success/error/expired), resend option |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Standalone layout (doesn't use AuthLayout) |
| Template |
None (standalone centered form) |
AuthPages/Unsubscribe.tsx (82 lines)
| Field |
Value |
| Component |
Unsubscribe |
| Purpose |
Email preferences redirect — auto-redirects to account settings after 5s |
| Origin |
custom |
| UI Patterns |
Informational card with auto-redirect timer, transactional email notice |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Standalone layout |
| Template |
None (standalone centered card) |
15. Help
Help/Help.tsx (~1306 lines)
| Field |
Value |
| Component |
Help |
| Purpose |
In-app help documentation — workflow pipeline visualization, Q&A accordions, getting started guide |
| Origin |
custom |
| UI Patterns |
Table of contents, anchor-link scrolling, workflow pipeline visualization, accordion FAQ sections, cards |
| Shared Components |
PageMeta, PageHeader, Accordion, AccordionItem, Card, Badge |
| Local Sub-components |
WorkflowPipeline (inline component), TableOfContentsItem interface |
| Pattern Duplication |
WorkflowPipeline visualization duplicates Dashboard pipeline widget concept; very large file |
| Template |
None (custom documentation page) |
16. Reference
Reference/Industries.tsx (185 lines)
| Field |
Value |
| Component |
Industries (Reference) |
| Purpose |
Reference view of industries with keyword counts and volume stats |
| Origin |
custom |
| UI Patterns |
Card grid with keyword stats, volume formatting, tooltip enrichment |
| Shared Components |
PageMeta, PageHeader, Card, Badge, Tooltip, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Settings/Industries (both show industry cards) |
| Template |
None (card grid) |
Reference/SeedKeywords.tsx (119 lines)
| Field |
Value |
| Component |
SeedKeywords |
| Purpose |
Global keyword library browser with industry filter and search |
| Origin |
custom |
| UI Patterns |
Filter bar (industry dropdown + search), keyword list |
| Shared Components |
PageMeta, Card, Badge, useToast, usePageLoading |
| Local Sub-components |
None |
| Pattern Duplication |
Overlaps with Setup/IndustriesSectorsKeywords keyword browsing |
| Template |
None |
17. Standalone Pages
Payment.tsx (122 lines)
| Field |
Value |
| Component |
Payment |
| Purpose |
Manual payment contact form — generates mailto link for sales |
| Origin |
custom |
| UI Patterns |
Simple form, mailto link generation, plan display from URL params |
| Shared Components |
InputField, TextArea, Label, Button, useAuthStore |
| Local Sub-components |
None |
| Pattern Duplication |
None — unique manual payment flow |
| Template |
None |
UIElements.tsx (737 lines)
| Field |
Value |
| Component |
UIElements |
| Purpose |
DEV REFERENCE — UI component showcase/documentation page (non-indexable) |
| Origin |
tailadmin-modified |
| UI Patterns |
Component showcase with live examples of all components/ui/ elements |
| Shared Components |
Imports effectively ALL components/ui/ components |
| Local Sub-components |
None |
| Pattern Duplication |
N/A — reference page |
| Template |
None |
Components.tsx (680 lines)
| Field |
Value |
| Component |
Components |
| Purpose |
DEV REFERENCE — Modal, dropdown, pagination, card, chart demo page |
| Origin |
tailadmin-modified |
| UI Patterns |
Component showcase with AlertModal, Modal, Dropdown, Pagination, Card variants |
| Shared Components |
PageMeta, AlertModal, Modal, Button, Dropdown, DropdownItem, Pagination, Card, ChartTab, InputField, TextArea |
| Local Sub-components |
None |
| Pattern Duplication |
N/A — reference page |
| Template |
None |
18. Legal
legal/Privacy.tsx (260 lines)
| Field |
Value |
| Component |
Privacy |
| Purpose |
Privacy policy static content page |
| Origin |
custom |
| UI Patterns |
Static content with sections, centered card layout, back-to-home link |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Same layout pattern as Terms.tsx |
| Template |
None (standalone legal) |
legal/Terms.tsx (186 lines)
| Field |
Value |
| Component |
Terms |
| Purpose |
Terms and conditions static content page |
| Origin |
custom |
| UI Patterns |
Static content with sections, centered card layout, back-to-home link |
| Shared Components |
PageMeta |
| Local Sub-components |
None |
| Pattern Duplication |
Same layout pattern as Privacy.tsx — could extract a LegalPageLayout |
| Template |
None (standalone legal) |
19. OtherPage
OtherPage/NotFound.tsx (44 lines)
| Field |
Value |
| Component |
NotFound |
| Purpose |
404 error page |
| Origin |
tailadmin-original |
| UI Patterns |
Centered error display, SVG illustration, back-to-home link, GridShape background |
| Shared Components |
PageMeta, GridShape |
| Local Sub-components |
None |
| Pattern Duplication |
None |
| Template |
None |
Summary Statistics
| Metric |
Count |
| Total page files |
68 |
Using TablePageTemplate |
10 (Keywords, Clusters, Ideas, Tasks, Content, Review, Approved, Images, Sites/List (table view), Setup/IndustriesSectorsKeywords) |
Using ContentViewTemplate |
1 (ContentView) |
| Custom (no template) |
50 |
| Placeholder / Coming Soon |
5 (ImageTesting, Profile, Strategies, Settings/Account, Settings/System) |
| Deprecated |
1 (DeploymentPanel) |
| TailAdmin-original |
1 (NotFound) |
| TailAdmin-modified |
4 (SignIn, SignUp, UIElements, Components) |
| Dev reference only |
2 (UIElements, Components) |
Key Findings — Pattern Duplication
1. Manual Table Duplication
Pages: Sites/Content, Sites/ContentStructure, Optimizer/ContentSelector, Linker/ContentList
These pages build manual <table> with inline pagination instead of using TablePageTemplate. Candidate for migration or a simpler SimpleTableTemplate.
2. Settings Form Proliferation
Pages: Sites/Settings, Sites/AIAutomationSettings, Publisher/PublishSettings, Automation/PipelineSettings, account/ContentSettingsPage, Settings/Publishing
At least 6 pages implement settings forms with similar card+toggle+save patterns. Consider a SettingsFormTemplate or shared SettingsSection component.
3. Billing/Usage Triplication
Legacy: Settings/CreditsAndBilling, Billing/Usage, Billing/Credits, Billing/Transactions
Current: account/PlansAndBillingPage, account/UsageDashboardPage, account/UsageAnalyticsPage
The legacy Settings/Billing pages duplicate what the account/* pages already provide. Candidates for removal.
4. Inline Tab Implementation
Pages: ClusterDetail, Sites/Settings, Sites/PostEditor
Custom button-based tab implementations instead of using a shared Tabs component.
5. Cascading Filter Boilerplate
Pages: Keywords, Clusters, Ideas, Tasks, Content, Review, Approved, Images
All Planner+Writer table pages repeat ~50-100 lines of cascading filter loading logic. Could be extracted into a useCascadingFilters hook.
6. WordPress Sync Overlap
Pages: Settings/WordPressIntegrationDebug vs Sites/SyncDashboard
Both show WordPress sync health with overlapping functionality.
7. Industry Display Overlap
Pages: Settings/Industries vs Reference/Industries
Both display industry cards; the Reference version adds keyword stats.
8. Calendar Duplication
Pages: Publisher/ContentCalendar vs Sites/PublishingQueue
Both implement calendar+list views for scheduled content. The site-scoped version could reuse the publisher calendar component.
9. Legal Page Layout
Pages: legal/Privacy vs legal/Terms
Identical layout wrapper — candidate for a LegalPageLayout component.