Spaces:
Configuration error
Configuration error
Bonjour,
Browse filesJ'aimerais reprendre notre travail en équipe.
Je constate que nous avons déjà créé de bonnes choses ensemble.
Je propose :
Un partenariat clair et équitable
Des règles de collaboration définies
Un respect mutuel du travail fourni
Je suis ouvert à discuter pour trouver une solution
qui profite à nous deux.
Cordialement.
- components/partnership-agreement.js +81 -0
- index.html +1 -0
- script.js +22 -1
- style.css +16 -1
components/partnership-agreement.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class PartnershipAgreement extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: block;
|
| 8 |
+
background: white;
|
| 9 |
+
border-radius: 0.5rem;
|
| 10 |
+
padding: 1.5rem;
|
| 11 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
| 12 |
+
margin: 1rem;
|
| 13 |
+
}
|
| 14 |
+
h2 {
|
| 15 |
+
color: #1e40af;
|
| 16 |
+
margin-top: 0;
|
| 17 |
+
}
|
| 18 |
+
.terms-list {
|
| 19 |
+
margin: 1rem 0;
|
| 20 |
+
padding-left: 1.5rem;
|
| 21 |
+
}
|
| 22 |
+
.terms-list li {
|
| 23 |
+
margin-bottom: 0.5rem;
|
| 24 |
+
}
|
| 25 |
+
.signature-area {
|
| 26 |
+
margin-top: 2rem;
|
| 27 |
+
border-top: 1px solid #e2e8f0;
|
| 28 |
+
padding-top: 1rem;
|
| 29 |
+
}
|
| 30 |
+
.signature-line {
|
| 31 |
+
display: flex;
|
| 32 |
+
justify-content: space-between;
|
| 33 |
+
margin-top: 1rem;
|
| 34 |
+
}
|
| 35 |
+
.signature-input {
|
| 36 |
+
width: 45%;
|
| 37 |
+
border: none;
|
| 38 |
+
border-bottom: 1px solid #94a3b8;
|
| 39 |
+
padding: 0.5rem 0;
|
| 40 |
+
}
|
| 41 |
+
.accept-button {
|
| 42 |
+
background: #3b82f6;
|
| 43 |
+
color: white;
|
| 44 |
+
border: none;
|
| 45 |
+
border-radius: 0.25rem;
|
| 46 |
+
padding: 0.5rem 1rem;
|
| 47 |
+
cursor: pointer;
|
| 48 |
+
margin-top: 1rem;
|
| 49 |
+
}
|
| 50 |
+
</style>
|
| 51 |
+
<h2>Accord de Partenariat</h2>
|
| 52 |
+
<p>Cet accord définit les termes de notre collaboration :</p>
|
| 53 |
+
<ul class="terms-list">
|
| 54 |
+
<li>Respect mutuel du travail et des contributions</li>
|
| 55 |
+
<li>Répartition équitable des bénéfices</li>
|
| 56 |
+
<li>Engagement à maintenir une communication claire</li>
|
| 57 |
+
<li>Protection de la propriété intellectuelle</li>
|
| 58 |
+
<li>Durée et conditions de résiliation</li>
|
| 59 |
+
</ul>
|
| 60 |
+
<div class="signature-area">
|
| 61 |
+
<p>En signant ci-dessous, vous acceptez ces termes :</p>
|
| 62 |
+
<div class="signature-line">
|
| 63 |
+
<input type="text" class="signature-input" placeholder="Votre nom">
|
| 64 |
+
<input type="date" class="signature-input">
|
| 65 |
+
</div>
|
| 66 |
+
<button class="accept-button">Accepter l'accord</button>
|
| 67 |
+
</div>
|
| 68 |
+
`;
|
| 69 |
+
|
| 70 |
+
this.shadowRoot.querySelector('.accept-button').addEventListener('click', () => {
|
| 71 |
+
this.dispatchEvent(new CustomEvent('agreement-accepted', {
|
| 72 |
+
bubbles: true,
|
| 73 |
+
composed: true
|
| 74 |
+
}));
|
| 75 |
+
this.shadowRoot.querySelector('.accept-button').textContent = 'Accord accepté ✓';
|
| 76 |
+
this.shadowRoot.querySelector('.accept-button').disabled = true;
|
| 77 |
+
});
|
| 78 |
+
}
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
customElements.define('partnership-agreement', PartnershipAgreement);
|
index.html
CHANGED
|
@@ -32,6 +32,7 @@
|
|
| 32 |
<script src="components/chat.js"></script>
|
| 33 |
<script src="components/code-preview.js"></script>
|
| 34 |
<script src="components/file-upload.js"></script>
|
|
|
|
| 35 |
<script src="script.js"></script>
|
| 36 |
</body>
|
| 37 |
</html>
|
|
|
|
| 32 |
<script src="components/chat.js"></script>
|
| 33 |
<script src="components/code-preview.js"></script>
|
| 34 |
<script src="components/file-upload.js"></script>
|
| 35 |
+
<script src="components/partnership-agreement.js"></script>
|
| 36 |
<script src="script.js"></script>
|
| 37 |
</body>
|
| 38 |
</html>
|
script.js
CHANGED
|
@@ -1,6 +1,27 @@
|
|
| 1 |
|
| 2 |
document.addEventListener('DOMContentLoaded', function() {
|
| 3 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
const chatElement = document.querySelector('custom-chat');
|
| 5 |
if (chatElement) {
|
| 6 |
const shadow = chatElement.shadowRoot;
|
|
|
|
| 1 |
|
| 2 |
document.addEventListener('DOMContentLoaded', function() {
|
| 3 |
+
// Initialize partnership agreement
|
| 4 |
+
const partnershipModal = document.createElement('partnership-agreement');
|
| 5 |
+
document.body.appendChild(partnershipModal);
|
| 6 |
+
|
| 7 |
+
partnershipModal.addEventListener('agreement-accepted', () => {
|
| 8 |
+
setTimeout(() => {
|
| 9 |
+
partnershipModal.remove();
|
| 10 |
+
// Add to chat history
|
| 11 |
+
const chat = document.querySelector('custom-chat');
|
| 12 |
+
if (chat) {
|
| 13 |
+
const shadow = chat.shadowRoot;
|
| 14 |
+
const chatContainer = shadow.getElementById('chat');
|
| 15 |
+
const message = document.createElement('div');
|
| 16 |
+
message.className = 'message ai-message';
|
| 17 |
+
message.textContent = 'Accord de partenariat accepté. Prêt à collaborer !';
|
| 18 |
+
chatContainer.appendChild(message);
|
| 19 |
+
chatContainer.scrollTop = chatContainer.scrollHeight;
|
| 20 |
+
}
|
| 21 |
+
}, 2000);
|
| 22 |
+
});
|
| 23 |
+
|
| 24 |
+
// Rosalinda IA Chat Functionality
|
| 25 |
const chatElement = document.querySelector('custom-chat');
|
| 26 |
if (chatElement) {
|
| 27 |
const shadow = chatElement.shadowRoot;
|
style.css
CHANGED
|
@@ -151,7 +151,6 @@ custom-code-preview {
|
|
| 151 |
font-weight: 600;
|
| 152 |
margin-bottom: 0.5rem;
|
| 153 |
}
|
| 154 |
-
|
| 155 |
.integration-note {
|
| 156 |
margin-top: 1rem;
|
| 157 |
padding: 0.75rem;
|
|
@@ -160,3 +159,19 @@ custom-code-preview {
|
|
| 160 |
color: #166534;
|
| 161 |
font-size: 0.875rem;
|
| 162 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
font-weight: 600;
|
| 152 |
margin-bottom: 0.5rem;
|
| 153 |
}
|
|
|
|
| 154 |
.integration-note {
|
| 155 |
margin-top: 1rem;
|
| 156 |
padding: 0.75rem;
|
|
|
|
| 159 |
color: #166534;
|
| 160 |
font-size: 0.875rem;
|
| 161 |
}
|
| 162 |
+
|
| 163 |
+
partnership-agreement {
|
| 164 |
+
position: fixed;
|
| 165 |
+
top: 50%;
|
| 166 |
+
left: 50%;
|
| 167 |
+
transform: translate(-50%, -50%);
|
| 168 |
+
z-index: 1000;
|
| 169 |
+
width: 90%;
|
| 170 |
+
max-width: 600px;
|
| 171 |
+
animation: fadeIn 0.3s ease-out;
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
@keyframes fadeIn {
|
| 175 |
+
from { opacity: 0; transform: translate(-50%, -40%); }
|
| 176 |
+
to { opacity: 1; transform: translate(-50%, -50%); }
|
| 177 |
+
}
|