diff --git a/docs/api-mock-schemas.json b/docs/api-mock-schemas.json new file mode 100644 index 0000000..fba66e3 --- /dev/null +++ b/docs/api-mock-schemas.json @@ -0,0 +1,77 @@ +{ + "subscriptions": { + "transactions": [ + { + "id": "sub_tx_001", + "userId": "u_123", + "userName": "John Doe", + "planName": "Professional", + "amount": 29.99, + "currency": "USD", + "status": "SUCCESS", + "paymentMethod": "Credit Card (**** 4242)", + "transactionDate": "2024-04-15T10:00:00Z", + "failureReason": null + }, + { + "id": "sub_tx_002", + "userId": "u_456", + "userName": "Jane Smith", + "planName": "Enterprise", + "amount": 199.99, + "currency": "USD", + "status": "FAILED", + "paymentMethod": "PayPal", + "transactionDate": "2024-04-16T14:20:00Z", + "failureReason": "Insufficient funds" + } + ] + }, + "issues": [ + { + "id": "iss_501", + "reporterId": "u_789", + "reporterName": "Bob Miller", + "type": "BUG", + "priority": "HIGH", + "title": "Cannot upload attachments in Proforma Requests", + "description": "Getting a 500 error when trying to upload PDF files larger than 2MB.", + "status": "OPEN", + "assignedTo": "admin_001", + "createdAt": "2024-04-16T08:30:00Z" + } + ], + "faq": [ + { + "id": "faq_001", + "question": "How do I reset my password?", + "answer": "Go to settings > security and click on 'Reset Password'.", + "category": "ACCOUNT", + "isPublished": true, + "order": 1 + } + ], + "support": { + "tickets": [ + { + "id": "sup_101", + "requesterEmail": "help@client.com", + "subject": "Missing Invoice #INV-102", + "message": "I paid for my subscription but didn't receive the invoice.", + "status": "PENDING", + "createdAt": "2024-04-16T11:00:00Z" + } + ] + }, + "notifications": { + "sms": { + "to": "+1234567890", + "content": "Your payment was successful." + }, + "email": { + "to": "user@example.com", + "subject": "Payment Confirmation", + "body": "Your payment of $29.99 has been processed." + } + } +} diff --git a/package-lock.json b/package-lock.json index 175f7d7..d4f0ce1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "lucide-react": "^0.561.0", "react": "^19.2.4", "react-dom": "^19.2.4", + "react-is": "^19.2.5", "react-router-dom": "^7.11.0", "recharts": "^3.6.0", "sonner": "^2.0.7", @@ -7053,11 +7054,10 @@ } }, "node_modules/react-is": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", - "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", - "license": "MIT", - "peer": true + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.5.tgz", + "integrity": "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==", + "license": "MIT" }, "node_modules/react-redux": { "version": "9.2.0", diff --git a/package.json b/package.json index f42d983..695acc0 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "lucide-react": "^0.561.0", "react": "^19.2.4", "react-dom": "^19.2.4", + "react-is": "^19.2.5", "react-router-dom": "^7.11.0", "recharts": "^3.6.0", "sonner": "^2.0.7", diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx new file mode 100644 index 0000000..d513f35 --- /dev/null +++ b/src/components/ui/textarea.tsx @@ -0,0 +1,23 @@ +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +export interface TextareaProps extends React.TextareaHTMLAttributes {} + +const Textarea = React.forwardRef( + ({ className, ...props }, ref) => { + return ( +