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