-
-
-
+ {/* Ticket Details */}
+
+
+
+
Ticket Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {fieldErrors.title && (
+
{fieldErrors.title}
+ )}
+
+
+
+
+
+
+
+
+
+
+ Tip: More details help us resolve your issue faster
+
+
+ {fieldErrors.description && (
+
{fieldErrors.description}
+ )}
+
+
-
-
-
-
- {/* Ticket Details */}
-
-
Ticket Details
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {/* Submit Section */}
+
+
+
+
+ Average response time: 2-4 hours
+
diff --git a/gnx-react/components/pages/support/SupportCenterContent.tsx b/gnx-react/components/pages/support/SupportCenterContent.tsx
index 1743c758..22bdebfb 100644
--- a/gnx-react/components/pages/support/SupportCenterContent.tsx
+++ b/gnx-react/components/pages/support/SupportCenterContent.tsx
@@ -9,9 +9,10 @@ type ModalType = 'create' | 'knowledge' | 'status' | null;
interface SupportCenterContentProps {
activeModal: ModalType;
onClose: () => void;
+ onOpenModal?: (type: ModalType) => void;
}
-const SupportCenterContent = ({ activeModal, onClose }: SupportCenterContentProps) => {
+const SupportCenterContent = ({ activeModal, onClose, onOpenModal }: SupportCenterContentProps) => {
// Close modal on escape key
useEffect(() => {
const handleEscape = (e: KeyboardEvent) => {
@@ -115,7 +116,13 @@ const SupportCenterContent = ({ activeModal, onClose }: SupportCenterContentProp
{/* Modal Body */}
- {activeModal === 'create' && }
+ {activeModal === 'create' && (
+ {
+ if (onOpenModal) {
+ onOpenModal('status');
+ }
+ }} />
+ )}
{activeModal === 'knowledge' && }
{activeModal === 'status' && }
diff --git a/gnx-react/components/pages/support/TicketStatusCheck.tsx b/gnx-react/components/pages/support/TicketStatusCheck.tsx
index a1d419e9..ac437741 100644
--- a/gnx-react/components/pages/support/TicketStatusCheck.tsx
+++ b/gnx-react/components/pages/support/TicketStatusCheck.tsx
@@ -39,122 +39,233 @@ const TicketStatusCheck = () => {
});
};
+ const getRelativeTime = (dateString: string) => {
+ const date = new Date(dateString);
+ const now = new Date();
+ const diffMs = now.getTime() - date.getTime();
+ const diffMins = Math.floor(diffMs / 60000);
+ const diffHours = Math.floor(diffMins / 60);
+ const diffDays = Math.floor(diffHours / 24);
+
+ if (diffMins < 60) return `${diffMins} minute${diffMins !== 1 ? 's' : ''} ago`;
+ if (diffHours < 24) return `${diffHours} hour${diffHours !== 1 ? 's' : ''} ago`;
+ if (diffDays < 7) return `${diffDays} day${diffDays !== 1 ? 's' : ''} ago`;
+ return formatDate(dateString);
+ };
+
+ const getStatusIcon = (statusName: string) => {
+ const status = statusName.toLowerCase();
+ if (status.includes('open') || status.includes('new')) return 'fa-inbox';
+ if (status.includes('progress') || status.includes('working')) return 'fa-spinner';
+ if (status.includes('pending') || status.includes('waiting')) return 'fa-clock';
+ if (status.includes('resolved') || status.includes('closed')) return 'fa-check-circle';
+ return 'fa-ticket';
+ };
+
+ const getPriorityIcon = (priorityName: string) => {
+ const priority = priorityName.toLowerCase();
+ if (priority.includes('urgent') || priority.includes('critical')) return 'fa-exclamation-triangle';
+ if (priority.includes('high')) return 'fa-arrow-up';
+ if (priority.includes('medium')) return 'fa-minus';
+ if (priority.includes('low')) return 'fa-arrow-down';
+ return 'fa-flag';
+ };
+
return (
-
+
-
-
+
+
+
+
+
Check Ticket Status
-
Enter your ticket number to view the current status and details of your support request.
+
Track your support request in real-time with instant status updates
-