From 24a1b25a8d1e50b01236367ad0f6e1b7328a0270 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Wed, 12 Nov 2025 02:32:14 +0000 Subject: [PATCH] Ecosystem License (KND-008) click-wrap modal for first-time track upload cgen-93d742bcdb70432dbea1bc326f104346 --- .../ethos/EcosystemLicenseModal.tsx | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 client/components/ethos/EcosystemLicenseModal.tsx diff --git a/client/components/ethos/EcosystemLicenseModal.tsx b/client/components/ethos/EcosystemLicenseModal.tsx new file mode 100644 index 00000000..e91f2062 --- /dev/null +++ b/client/components/ethos/EcosystemLicenseModal.tsx @@ -0,0 +1,189 @@ +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Alert, AlertDescription } from "@/components/ui/alert"; +import { AlertCircle, CheckCircle2 } from "lucide-react"; + +interface EcosystemLicenseModalProps { + open: boolean; + onAccept: () => void; + onReject: () => void; + isLoading?: boolean; +} + +export default function EcosystemLicenseModal({ + open, + onAccept, + onReject, + isLoading, +}: EcosystemLicenseModalProps) { + const [hasReadTerms, setHasReadTerms] = useState(false); + const [agreeToTerms, setAgreeToTerms] = useState(false); + const [confirmOriginal, setConfirmOriginal] = useState(false); + + const handleAccept = () => { + if (!agreeToTerms || !confirmOriginal) { + return; + } + onAccept(); + }; + + const allChecked = hasReadTerms && agreeToTerms && confirmOriginal; + + return ( + !newOpen && onReject()}> + + + + 🎵 Welcome to the Ethos Library + + + Before you upload your first track, please review and accept the Ecosystem License + + + +
+ {/* Alert */} + + + + This is a one-time agreement. By contributing to the Ethos Library, you're helping + build a vibrant community of creators. We're transparent about how your work will be + used. + + + + {/* License Terms Section */} +
+

KND-008: AeThex Ecosystem License

+ +
+

+ What is the Ecosystem License? +

+

+ The Ecosystem License allows AeThex development teams (specifically our GameForge + arm) to use your track for free in non-commercial projects. This includes: +

+ +
    +
  • Game prototypes and development
  • +
  • Internal research and testing
  • +
  • Community showcases and demos
  • +
  • Educational materials
  • +
+ +

+ What you keep: +

+
    +
  • 100% ownership of your music
  • +
  • Full credit and attribution
  • +
  • Right to license commercially (outside AeThex ecosystem)
  • +
  • Ability to use elsewhere without restriction
  • +
+ +

+ Commercial Use: +

+

+ If you want to license your track for commercial use (outside our ecosystem), you + can set your own price on the NEXUS marketplace or negotiate directly with clients. +

+ +

+ Getting Help: +

+

+ Our CORP arm can help negotiate high-value commercial licenses and connect you with + enterprise clients. +

+ +
+ +

+ Version 1.0 | Effective Date: {new Date().toLocaleDateString()} | For complete + legal terms, see our{" "} + + full agreement + +

+
+
+ + {/* Agreement Checkboxes */} +
+ + + + + +
+ + {/* Status Indicator */} + {allChecked && ( +
+ + All terms accepted. Ready to continue. +
+ )} + + {/* Action Buttons */} +
+ + +
+
+
+
+ ); +}