 c177363a19
			
		
	
	c177363a19
	
	
	
		
			
			🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			181 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 'use client'
 | |
| 
 | |
| import { useState } from 'react'
 | |
| import { 
 | |
|   DocumentTextIcon,
 | |
|   CheckCircleIcon,
 | |
|   ExclamationTriangleIcon
 | |
| } from '@heroicons/react/24/outline'
 | |
| 
 | |
| interface TermsAndConditionsProps {
 | |
|   systemInfo: any
 | |
|   configData: any
 | |
|   onComplete: (data: any) => void
 | |
|   onBack?: () => void
 | |
|   isCompleted: boolean
 | |
| }
 | |
| 
 | |
| export default function TermsAndConditions({ 
 | |
|   systemInfo, 
 | |
|   configData, 
 | |
|   onComplete, 
 | |
|   onBack, 
 | |
|   isCompleted 
 | |
| }: TermsAndConditionsProps) {
 | |
|   const [agreed, setAgreed] = useState(configData?.terms?.agreed || false)
 | |
|   const [error, setError] = useState('')
 | |
| 
 | |
|   const handleSubmit = (e: React.FormEvent) => {
 | |
|     e.preventDefault()
 | |
|     
 | |
|     if (!agreed) {
 | |
|       setError('You must agree to the Terms and Conditions to continue')
 | |
|       return
 | |
|     }
 | |
| 
 | |
|     setError('')
 | |
|     onComplete({ 
 | |
|       terms: { 
 | |
|         agreed: true, 
 | |
|         timestamp: new Date().toISOString() 
 | |
|       } 
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <form onSubmit={handleSubmit} className="space-y-8">
 | |
| 
 | |
|       {/* Terms and Conditions Content */}
 | |
|       <div className="card">
 | |
|         <div className="flex items-center mb-4">
 | |
|           <DocumentTextIcon className="h-6 w-6 text-bzzz-primary mr-2" />
 | |
|           <h3 className="text-lg font-medium text-gray-900">CHORUS:agents Software License Agreement</h3>
 | |
|         </div>
 | |
| 
 | |
|         <div className="bg-gray-50 border border-gray-200 rounded-lg p-6 max-h-96 overflow-y-auto">
 | |
|           <div className="prose prose-sm max-w-none text-gray-700">
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">1. License Grant</h4>
 | |
|             <p className="mb-4">
 | |
|               Subject to the terms and conditions of this Agreement, Chorus Services grants you a non-exclusive, 
 | |
|               non-transferable license to use CHORUS:agents (the "Software") for distributed AI coordination and task management.
 | |
|             </p>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">2. Permitted Uses</h4>
 | |
|             <ul className="list-disc list-inside mb-4 space-y-1">
 | |
|               <li>Install and operate CHORUS:agents on your infrastructure</li>
 | |
|               <li>Configure cluster nodes for distributed processing</li>
 | |
|               <li>Integrate with supported AI models and services</li>
 | |
|               <li>Use for commercial and non-commercial purposes</li>
 | |
|             </ul>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">3. Restrictions</h4>
 | |
|             <ul className="list-disc list-inside mb-4 space-y-1">
 | |
|               <li>You may not redistribute, sublicense, or sell the Software</li>
 | |
|               <li>You may not reverse engineer or decompile the Software</li>
 | |
|               <li>You may not use the Software for illegal or harmful purposes</li>
 | |
|               <li>You may not remove or modify proprietary notices</li>
 | |
|             </ul>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">4. Data Privacy</h4>
 | |
|             <p className="mb-4">
 | |
|               CHORUS:agents processes data locally on your infrastructure. Chorus Services does not collect or store 
 | |
|               your operational data. Telemetry data may be collected for software improvement purposes.
 | |
|             </p>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">5. Support and Updates</h4>
 | |
|             <p className="mb-4">
 | |
|               Licensed users receive access to software updates, security patches, and community support. 
 | |
|               Premium support tiers are available separately.
 | |
|             </p>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">6. Disclaimer of Warranty</h4>
 | |
|             <p className="mb-4">
 | |
|               THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. CHORUS SERVICES DISCLAIMS 
 | |
|               ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS 
 | |
|               FOR A PARTICULAR PURPOSE.
 | |
|             </p>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">7. Limitation of Liability</h4>
 | |
|             <p className="mb-4">
 | |
|               IN NO EVENT SHALL CHORUS SERVICES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, 
 | |
|               OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THE SOFTWARE.
 | |
|             </p>
 | |
| 
 | |
|             <h4 className="text-base font-semibold text-gray-900 mb-3">8. Termination</h4>
 | |
|             <p className="mb-4">
 | |
|               This license is effective until terminated. You may terminate it at any time by 
 | |
|               uninstalling the Software. Chorus Services may terminate this license if you 
 | |
|               violate any terms of this Agreement.
 | |
|             </p>
 | |
| 
 | |
|             <div className="bg-blue-50 border-l-4 border-blue-400 p-4 mt-6">
 | |
|               <div className="flex">
 | |
|                 <ExclamationTriangleIcon className="h-5 w-5 text-blue-500 mt-0.5 mr-2" />
 | |
|                 <div className="text-sm text-blue-700">
 | |
|                   <p><strong>Contact Information:</strong></p>
 | |
|                   <p>Chorus Services<br />
 | |
|                   Email: legal@chorus.services<br />
 | |
|                   Website: https://chorus.services</p>
 | |
|                 </div>
 | |
|               </div>
 | |
|             </div>
 | |
|           </div>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       {/* Agreement Checkbox */}
 | |
|       <div className="card">
 | |
|         <div className="space-y-4">
 | |
|           <label className="flex items-start">
 | |
|             <input
 | |
|               type="checkbox"
 | |
|               checked={agreed}
 | |
|               onChange={(e) => setAgreed(e.target.checked)}
 | |
|               className="mt-1 mr-3 h-4 w-4 text-bzzz-primary border-gray-300 rounded focus:ring-bzzz-primary"
 | |
|             />
 | |
|             <div className="text-sm">
 | |
|               <span className="font-medium text-gray-900">
 | |
|                 I have read and agree to the Terms and Conditions
 | |
|               </span>
 | |
|               <p className="text-gray-600 mt-1">
 | |
|                 By checking this box, you acknowledge that you have read, understood, and agree to be 
 | |
|                 bound by the terms and conditions outlined above.
 | |
|               </p>
 | |
|             </div>
 | |
|           </label>
 | |
| 
 | |
|           {error && (
 | |
|             <div className="flex items-center text-red-600 text-sm">
 | |
|               <ExclamationTriangleIcon className="h-4 w-4 mr-1" />
 | |
|               {error}
 | |
|             </div>
 | |
|           )}
 | |
| 
 | |
|           {agreed && (
 | |
|             <div className="flex items-center text-green-600 text-sm">
 | |
|               <CheckCircleIcon className="h-4 w-4 mr-1" />
 | |
|               Thank you for accepting the terms and conditions
 | |
|             </div>
 | |
|           )}
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <div className="flex justify-between pt-6 border-t border-gray-200">
 | |
|         <div>
 | |
|           {onBack && (
 | |
|             <button type="button" onClick={onBack} className="btn-outline">
 | |
|               Back
 | |
|             </button>
 | |
|           )}
 | |
|         </div>
 | |
|         <button 
 | |
|           type="submit" 
 | |
|           disabled={!agreed}
 | |
|           className={`${agreed ? 'btn-primary' : 'btn-disabled'}`}
 | |
|         >
 | |
| {isCompleted ? 'Continue' : 'Next: License Validation'}
 | |
|         </button>
 | |
|       </div>
 | |
|     </form>
 | |
|   )
 | |
| } |