diff --git a/package.json b/package.json index 8f88ba7..d61549e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "contexta-fe", + "name": "contexta_fe", "private": true, "version": "0.0.0", "type": "module", diff --git a/src/App.tsx b/src/App.tsx index 26e666e..3334a6a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,6 +10,8 @@ import './App.css' const LandingPage = lazy(() => import('@/pages/LandingPage').then(m => ({ default: m.LandingPage }))) const LoginPage = lazy(() => import('@/pages/AuthPages').then(m => ({ default: m.LoginPage }))) const SignupPage = lazy(() => import('@/pages/AuthPages').then(m => ({ default: m.SignupPage }))) +const ForgotPasswordPage = lazy(() => import('@/pages/ForgotPasswordPage').then(m => ({ default: m.ForgotPasswordPage }))) +const ResetPasswordPage = lazy(() => import('@/pages/ResetPasswordPage').then(m => ({ default: m.ResetPasswordPage }))) const DashboardPage = lazy(() => import('@/pages/DashboardPage').then(m => ({ default: m.DashboardPage }))) const ChatbotBuilderPage = lazy(() => import('@/pages/ChatbotBuilderPage').then(m => ({ default: m.ChatbotBuilderPage }))) const MarketplacePage = lazy(() => import('@/pages/MarketplacePage').then(m => ({ default: m.MarketplacePage }))) @@ -17,6 +19,9 @@ const ChatbotDetailPage = lazy(() => import('@/pages/MarketplacePage').then(m => const PricingPage = lazy(() => import('@/pages/PricingPage').then(m => ({ default: m.PricingPage }))) const SettingsPage = lazy(() => import('@/pages/SettingsPage').then(m => ({ default: m.SettingsPage }))) const AnalyticsPage = lazy(() => import('@/pages/AnalyticsPage').then(m => ({ default: m.AnalyticsPage }))) +const PublicChatPage = lazy(() => import('@/pages/PublicChatPage').then(m => ({ default: m.PublicChatPage }))) +const InboxPage = lazy(() => import('@/pages/InboxPage').then(m => ({ default: m.InboxPage }))) +const LeadsPage = lazy(() => import('@/pages/LeadsPage').then(m => ({ default: m.LeadsPage }))) const PageLoader = () => (
{msg.content}
+{msg.content}
- {/* Sources */} - {msg.sources && msg.sources.length > 0 && ( -{src.document_name}
-{src.chunk_text}
-{src.document_name}
+{src.chunk_text}
++ Quick question before we continue +
+Share your details and we'll follow up if needed.
+ ++ Knowledge Gaps β questions your bot couldn't answer well: +
+
+ We sent a confirmation link to {form.email}.
+ Click the link to activate your account.
+
+ Already confirmed?{' '} + Sign in +
+Start from a template or build from scratch
+Add web pages to your chatbot's knowledge base.
+ +{error}
} + + {isLoading ? ( ++ {src.page_title || src.url} +
+{src.url}
++ Publish your chatbot first to get a public chat link. +
+ )} +
+ Paste this script tag before the closing </body> tag on any website.
+
+ {embedScript}
+
+
+ Collect fields:
+When to show form:
+ +
+
+ Configure n8n webhook URL in backend .env (N8N_HANDOFF_WEBHOOK_URL) to receive notifications. +
++ Bot:{' '} + + @{telegramConn.bot_username} + +
+Share this bot link with your customers β they open it and start chatting.
+ +How to create a Telegram bot (2 minutes):
+/newbot
+ Once connected, share your bot link (e.g. t.me/YourBotName) with customers.
+
+ {(connectTelegram.error as any)?.response?.data?.detail || 'Failed to connect. Check your token.'} +
+ )} +Your chatbot keyword:
+
+ {whatsappConn.wa_keyword}
+
+ Share this link with your customers:
++ When customers tap this link, WhatsApp opens with a pre-filled message. They just tap Send and the chat begins automatically. +
+How WhatsApp works with Contexta:
+wa.me/15551234567?text=START+ACME+ You can customise the keyword below. Letters and numbers only, max 12 characters. +
++ {(connectWhatsapp.error as any)?.response?.data?.detail || 'Failed to enable. Please try again.'} +
+ )} +Manage your AI chatbots
@@ -110,12 +107,12 @@ export const DashboardPage: React.FC = () => { } /> ) : ( - // R-02 FIX: Better responsive grid breakpointsNew Chatbot
+New Chatbot
{chatbot.description}
+ )} + + {/* Stats */} +{chatbot.description}
- )} - - {/* Stats */} -We'll send a reset link to your email
++ If {email} is registered, a reset link has been sent. +
+ + Back to sign in + ++ Upgrade to Starter to read all your chatbot conversations in one place. +
+All chatbot conversations
+No conversations yet
+Select a conversation to view
+{msg.content}
++
From document upload to deployment β we handle the heavy lifting so you can focus on your business.
+
Build unlimited chatbots for free. Upgrade to publish and unlock premium features.
-+
Join hundreds of companies using Contexta to power their AI experiences.
-+ Upgrade to Starter to capture and manage leads from your chatbots. +
+Contacts collected by your chatbots
++ Enable lead capture on your chatbots to start collecting contact information from visitors. +
+| Name | +Phone | +Company | +Date | +|
|---|---|---|---|---|
| {lead.email || 'β'} | +{lead.name || 'β'} | +{lead.phone || 'β'} | +{lead.company || 'β'} | ++ {lead.created_at ? new Date(lead.created_at).toLocaleDateString() : 'β'} + | +
Discover and interact with AI chatbots built by businesses