first commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web Development Configuration (.env.development)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
NEXT_PUBLIC_APP_NAME="SupportHub Web (Dev)"
|
||||||
|
NEXT_PUBLIC_APP_ENV="development"
|
||||||
|
NEXT_PUBLIC_APP_URL="https://support-dev.maskantech.in"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_API_URL="https://supportdev-api.maskantech.in/api/v1"
|
||||||
|
NEXT_PUBLIC_WS_URL="wss://supportdev-api.maskantech.in/ws"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_SAAS_PLATFORM_NAME="SaaS Parent Platform (Dev)"
|
||||||
|
NEXT_PUBLIC_SAAS_AUTH_HEADER="X-SaaS-User-Token"
|
||||||
|
NEXT_PUBLIC_SAAS_EMBED_MODE="false"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_FEATURE_AI_ASSISTANT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_KNOWLEDGE_FIRST_TRIAGE="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_LIVE_CHAT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_SLA_MONITORING="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_KB_DEFAULT_PRODUCT_ID="prod_default"
|
||||||
|
NEXT_PUBLIC_AGENT_AUTO_SUGGEST_KB="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_LOG_LEVEL="debug"
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web Environment Configuration (.env.example)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Application Settings
|
||||||
|
NEXT_PUBLIC_APP_NAME="SupportHub Web"
|
||||||
|
NEXT_PUBLIC_APP_ENV="development"
|
||||||
|
NEXT_PUBLIC_APP_URL="http://localhost:3000"
|
||||||
|
|
||||||
|
# SupportHub Backend API Integration (supporthub-api)
|
||||||
|
NEXT_PUBLIC_API_URL="http://localhost:4501/api/v1"
|
||||||
|
NEXT_PUBLIC_WS_URL="ws://localhost:4501/ws"
|
||||||
|
|
||||||
|
# SaaS Parent Platform Integration
|
||||||
|
NEXT_PUBLIC_SAAS_PLATFORM_NAME="SaaS Parent Platform"
|
||||||
|
NEXT_PUBLIC_SAAS_AUTH_HEADER="X-SaaS-User-Token"
|
||||||
|
NEXT_PUBLIC_SAAS_EMBED_MODE="false"
|
||||||
|
|
||||||
|
# Feature Flags
|
||||||
|
NEXT_PUBLIC_FEATURE_AI_ASSISTANT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_KNOWLEDGE_FIRST_TRIAGE="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_LIVE_CHAT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_SLA_MONITORING="true"
|
||||||
|
|
||||||
|
# Knowledge Base & Agent Triage Settings
|
||||||
|
NEXT_PUBLIC_KB_DEFAULT_PRODUCT_ID="prod_default"
|
||||||
|
NEXT_PUBLIC_AGENT_AUTO_SUGGEST_KB="true"
|
||||||
|
|
||||||
|
# Logging & Analytics
|
||||||
|
NEXT_PUBLIC_LOG_LEVEL="debug"
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web Production Configuration (.env.production)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
NEXT_PUBLIC_APP_NAME="SupportHub Web"
|
||||||
|
NEXT_PUBLIC_APP_ENV="production"
|
||||||
|
NEXT_PUBLIC_APP_URL="https://support.your-domain.com"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_API_URL="https://api.support.your-domain.com/api/v1"
|
||||||
|
NEXT_PUBLIC_WS_URL="wss://api.support.your-domain.com/ws"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_SAAS_PLATFORM_NAME="SaaS Parent Platform"
|
||||||
|
NEXT_PUBLIC_SAAS_AUTH_HEADER="X-SaaS-User-Token"
|
||||||
|
NEXT_PUBLIC_SAAS_EMBED_MODE="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_FEATURE_AI_ASSISTANT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_KNOWLEDGE_FIRST_TRIAGE="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_LIVE_CHAT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_SLA_MONITORING="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_KB_DEFAULT_PRODUCT_ID="prod_live"
|
||||||
|
NEXT_PUBLIC_AGENT_AUTO_SUGGEST_KB="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_LOG_LEVEL="info"
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web Environment Template (.env.template)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Application Settings
|
||||||
|
NEXT_PUBLIC_APP_NAME="SupportHub Web"
|
||||||
|
NEXT_PUBLIC_APP_ENV="development"
|
||||||
|
NEXT_PUBLIC_APP_URL="http://localhost:3000"
|
||||||
|
|
||||||
|
# SupportHub Backend API Integration (supporthub-api)
|
||||||
|
NEXT_PUBLIC_API_URL="http://localhost:4501/api/v1"
|
||||||
|
NEXT_PUBLIC_WS_URL="ws://localhost:4501/ws"
|
||||||
|
|
||||||
|
# SaaS Parent Platform Integration
|
||||||
|
NEXT_PUBLIC_SAAS_PLATFORM_NAME="SaaS Parent Platform"
|
||||||
|
NEXT_PUBLIC_SAAS_AUTH_HEADER="X-SaaS-User-Token"
|
||||||
|
NEXT_PUBLIC_SAAS_EMBED_MODE="false"
|
||||||
|
|
||||||
|
# Feature Flags
|
||||||
|
NEXT_PUBLIC_FEATURE_AI_ASSISTANT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_KNOWLEDGE_FIRST_TRIAGE="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_LIVE_CHAT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_SLA_MONITORING="true"
|
||||||
|
|
||||||
|
# Knowledge Base & Agent Triage Settings
|
||||||
|
NEXT_PUBLIC_KB_DEFAULT_PRODUCT_ID="prod_default"
|
||||||
|
NEXT_PUBLIC_AGENT_AUTO_SUGGEST_KB="true"
|
||||||
|
|
||||||
|
# Logging & Analytics
|
||||||
|
NEXT_PUBLIC_LOG_LEVEL="debug"
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web Test Configuration (.env.test)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
NEXT_PUBLIC_APP_NAME="SupportHub Web (Test)"
|
||||||
|
NEXT_PUBLIC_APP_ENV="test"
|
||||||
|
NEXT_PUBLIC_APP_URL="https://support-test.maskantech.in"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_API_URL="https://supportdtest-api.maskantech.in/api/v1"
|
||||||
|
NEXT_PUBLIC_WS_URL="wss://supportdtest-api.maskantech.in/ws"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_SAAS_PLATFORM_NAME="SaaS Parent Platform (Test)"
|
||||||
|
NEXT_PUBLIC_SAAS_AUTH_HEADER="X-SaaS-User-Token"
|
||||||
|
NEXT_PUBLIC_SAAS_EMBED_MODE="false"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_FEATURE_AI_ASSISTANT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_KNOWLEDGE_FIRST_TRIAGE="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_LIVE_CHAT="true"
|
||||||
|
NEXT_PUBLIC_FEATURE_SLA_MONITORING="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_KB_DEFAULT_PRODUCT_ID="prod_test"
|
||||||
|
NEXT_PUBLIC_AGENT_AUTO_SUGGEST_KB="true"
|
||||||
|
|
||||||
|
NEXT_PUBLIC_LOG_LEVEL="error"
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
# ==========================================
|
||||||
|
# SupportHub Web .gitignore
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
/build
|
||||||
|
/dist
|
||||||
|
|
||||||
|
# Debug & Logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Local Environment Overrides (keep .env.example, .env.development, .env.test, .env.production tracked)
|
||||||
|
.env*.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# Vercel
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# TypeScript & Next build cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
next-env.d.ts
|
||||||
|
|
||||||
|
# Operating System & IDE Files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*.pem
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
reactStrictMode: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
Generated
+7829
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"name": "supporthub-web",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev -p 3000",
|
||||||
|
"build": "next build",
|
||||||
|
"build:dev": "npx dotenv-cli -o -e .env.development -- next build",
|
||||||
|
"build:test": "npx dotenv-cli -o -e .env.test -- next build",
|
||||||
|
"build:prod": "npx dotenv-cli -o -e .env.production -- next build",
|
||||||
|
"start": "next start -p 3000",
|
||||||
|
"lint": "next lint",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"test": "vitest run",
|
||||||
|
"test:watch": "vitest",
|
||||||
|
"test:e2e": "playwright test"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "^14.2.5",
|
||||||
|
"react": "^18.3.1",
|
||||||
|
"react-dom": "^18.3.1",
|
||||||
|
"@tanstack/react-query": "^5.51.15",
|
||||||
|
"clsx": "^2.1.1",
|
||||||
|
"tailwind-merge": "^2.4.0",
|
||||||
|
"lucide-react": "^0.417.0",
|
||||||
|
"axios": "^1.7.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.14.12",
|
||||||
|
"@types/react": "^18.3.3",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"dotenv-cli": "^7.4.2",
|
||||||
|
"typescript": "^5.5.4",
|
||||||
|
"tailwindcss": "^3.4.7",
|
||||||
|
"postcss": "^8.4.40",
|
||||||
|
"autoprefixer": "^10.4.20",
|
||||||
|
"eslint": "^8.57.0",
|
||||||
|
"eslint-config-next": "^14.2.5",
|
||||||
|
"vitest": "^2.0.4",
|
||||||
|
"@playwright/test": "^1.45.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AgentsAdminPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Agents Admin</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AssignmentEngineRulesPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Assignment Engine Rules</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AuditLogsPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Audit Logs</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AdminExecutiveDashboardPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Admin Executive Dashboard</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function EscalationPolicyBuilderPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Escalation Policy Builder</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function OrganizationalHierarchyPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Organizational Hierarchy</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function KnowledgeGovernancePage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Knowledge Governance</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function ProductsCatalogAdminPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Products Catalog Admin</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AnalyticsReportsPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Analytics Reports</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function RoutingEngineRulesPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Routing Engine Rules</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function PlatformSettingsPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Platform Settings</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function SLAPolicyBuilderPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>SLA Policy Builder</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function TeamsAdminPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Teams Admin</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AdminLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
return <div className="adminlayout">{children}</div>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function CustomerLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
return <div className="customerlayout">{children}</div>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AIAssistantSupportPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>AI Assistant Support</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function NewTicketSubmissionPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>New Ticket Submission</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function CustomerSupportOverviewPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Customer Support Overview</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export async function generateStaticParams() {
|
||||||
|
return [{ ticketId: 'sample-ticket-id' }];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function CustomerTicketDetailPage({ params }: { params: { ticketId: string } }) {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Customer Ticket Detail</h1>
|
||||||
|
<p>Ticket ID: {params?.ticketId || 'N/A'}</p>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function CustomerTicketsPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Customer Tickets</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function HelpCenterPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Help Center</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function PublicHomePage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Public Home</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function SystemStatusPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>System Status</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function SupportLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
return <div className="supportlayout">{children}</div>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export async function generateStaticParams() {
|
||||||
|
return [{ ticketId: 'sample-ticket-id' }];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function AgentTicketDetailPage({ params }: { params: { ticketId: string } }) {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Agent Ticket Detail</h1>
|
||||||
|
<p>Ticket ID: {params?.ticketId || 'N/A'}</p>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function AgentTicketWorkbenchPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Agent Ticket Workbench</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function SupportAgentDashboardPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Support Agent Dashboard</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function EscalationsMatrixPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Escalations Matrix</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function ProblemManagementPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Problem Management</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function QueueDispatchPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>Queue Dispatch</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function SLAMonitorPage() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h1>SLA Monitor</h1>
|
||||||
|
<p>Module loaded under SupportHub Web.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function Error({
|
||||||
|
error,
|
||||||
|
reset,
|
||||||
|
}: {
|
||||||
|
error: Error & { digest?: string };
|
||||||
|
reset: () => void;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h2>Something went wrong!</h2>
|
||||||
|
<p>{error?.message || 'An unexpected error occurred.'}</p>
|
||||||
|
<button
|
||||||
|
onClick={() => reset()}
|
||||||
|
style={{
|
||||||
|
padding: '0.5rem 1rem',
|
||||||
|
cursor: 'pointer',
|
||||||
|
borderRadius: '4px',
|
||||||
|
background: '#0066cc',
|
||||||
|
color: '#fff',
|
||||||
|
border: 'none',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Try again
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function GlobalError({
|
||||||
|
error,
|
||||||
|
reset,
|
||||||
|
}: {
|
||||||
|
error: Error & { digest?: string };
|
||||||
|
reset: () => void;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h2>Global Application Error</h2>
|
||||||
|
<p>{error?.message || 'An unexpected error occurred.'}</p>
|
||||||
|
<button
|
||||||
|
onClick={() => reset()}
|
||||||
|
style={{
|
||||||
|
padding: '0.5rem 1rem',
|
||||||
|
cursor: 'pointer',
|
||||||
|
borderRadius: '4px',
|
||||||
|
background: '#0066cc',
|
||||||
|
color: '#fff',
|
||||||
|
border: 'none',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Try again
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: 'SupportHub',
|
||||||
|
description: 'Enterprise Support Platform',
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>{children}</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function Loading() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<p>Loading SupportHub...</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
export default function NotFound() {
|
||||||
|
return (
|
||||||
|
<div style={{ padding: '2rem', fontFamily: 'system-ui, sans-serif' }}>
|
||||||
|
<h2>404 - Page Not Found</h2>
|
||||||
|
<p>Could not find requested resource.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Vendored
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": false,
|
||||||
|
"noEmit": true,
|
||||||
|
"incremental": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "next"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"next-env.d.ts",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user