@inputdev/sdk 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,378 +1,462 @@
1
- # InputDev SDK Documentation �
2
-
3
- > **Le backend de formulaires le plus simple et professionnel pour les développeurs modernes.**
4
-
5
- [![Version](https://img.shields.io/badge/version-1.0.0-059669.svg?style=flat-square)](https://inputdev.dev)
6
- [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE)
7
- [![Documentation](https://img.shields.io/badge/docs-latest-059669.svg?style=flat-square)](https://inputdev.pages.dev/documentation)
8
-
9
- ---
10
-
11
- ## 📖 Table des matières
12
-
13
- - [Introduction](#-introduction)
14
- - [Quick Start](#-quick-start-démarrage-rapide)
15
- - [Comment ça fonctionne](#-comment-ça-fonctionne)
16
- - [Installation](#-installation)
17
- - [Utilisation JavaScript](#-utilisation-javascript-pour-frameworks)
18
- - [SDK JavaScript Avancé](#-sdk-javascript-avancé)
19
- - [Validation Email](#-validation-email)
20
- - [Événements](#-événements)
21
- - [Codes d'erreur](#-codes-derreur)
22
- - [Sécurité](#-sécurité)
23
- - [Mode Silence](#-mode-silence)
24
- - [Limites](#-limites)
25
- - [Bonnes pratiques](#-bonnes-pratiques)
26
- - [Exemple complet](#-exemple-complet-réel)
27
-
28
- ---
29
-
30
- ## 🚀 Introduction
31
-
32
- InputDev permet de transformer un simple formulaire en système de collecte de données sécurisé et professionnel.
33
-
34
- ### ✨ Avantages principaux
35
-
36
- - **Aucune configuration serveur nécessaire** - Déployez en minutes
37
- - **Aucune dépendance externe** - SDK ultra-léger et autonome
38
- - **Installation en moins de 1 minute** - Intégration instantanée
39
- - **Validation automatique** - Emails et champs intégrés
40
- - **Sécurité de niveau entreprise** - HTTPS, CORS, anti-spam
41
-
42
- ---
43
-
44
- ## ⚡ Quick Start (Démarrage rapide)
45
-
46
- ### Étape 1 — Ajouter le script
47
-
48
- #### Via CDN (recommandé)
49
-
50
- ```html
51
- <script src="https://cdn.inputdev.com/sdk/latest/inputdev.min.js"></script>
52
- ```
53
-
54
- #### Via NPM
55
-
56
- ```bash
57
- npm install @inputdev/sdk
58
- import InputDev from "@inputdev/sdk";
59
- ```
60
-
61
- ### Étape 2 — Ajouter votre clé API
62
-
63
- ```html
64
- <form data-inputdev="grts_VotreCleApiDeCeSite">
65
- <input type="text" name="name" required />
66
- <input type="email" name="email" required />
67
- <button type="submit">Envoyer</button>
68
- </form>
69
- ```
70
-
71
- > 🎉 **C'est terminé !** Le formulaire est maintenant connecté à InputDev.
72
-
73
- ---
74
-
75
- ## 🔧 Comment ça fonctionne
76
-
77
- 1. **Navigateur** - L'utilisateur soumet le formulaire
78
- 2. **InputDev API** - Les données sont validées et envoyées en HTTPS
79
- 3. **Stockage sécurisé** - Elles sont enregistrées dans votre tableau de bord
80
-
81
- ---
82
-
83
- ## 📦 Installation
84
-
85
- ### Via CDN (recommandé)
86
-
87
- ```html
88
- <script src="https://cdn.inputdev.com/sdk/latest/inputdev.min.js"></script>
89
- ```
90
-
91
- ### Via NPM
92
-
93
- ```bash
94
- npm install @inputdev/sdk
95
- import InputDev from "@inputdev/sdk";
96
- ```
97
-
98
- ---
99
-
100
- ## 💻 Utilisation JavaScript (Pour Frameworks)
101
-
102
- Idéal pour les frameworks JavaScript (React, Vue, Angular, etc.) où vous contrôlez déjà les données du formulaire :
103
-
104
- ```javascript
105
- const sdk = new InputDev();
106
-
107
- await sdk.submit("grts_VotreCleApiDeCeSite", {
108
- name: "John",
109
- email: "john@email.com",
110
- plan: "premium"
111
- });
112
- ```
113
-
114
- ### Paramètres
115
-
116
- | Paramètre | Type | Obligatoire | Description |
117
- |-----------|------|-------------|-------------|
118
- | `apiKey` | string | Oui | Clé publique fournie par InputDev |
119
- | `data` | object | Oui | Données à envoyer |
120
-
121
- ---
122
-
123
- ## 🚀 SDK JavaScript Avancé
124
-
125
- Pour le HTML classique avec un contrôle total des champs et une gestion personnalisée :
126
-
127
- ```html
128
- <form id="contact-form">
129
- <!-- ... vos champs ici ... -->
130
- <button type="button" onclick="submitFormulaire()">Envoyer</button>
131
- </form>
132
-
133
- <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.prod.js"></script>
134
- <script>
135
- // Fonction réutilisable, contrôle total des champs
136
- function submitFormulaire() {
137
- const dev = new InputDevSDK();
138
- const data = {
139
- email: "exemple@test.com",
140
- message: "Message par défaut",
141
- telephone: "+22990000000",
142
- plan: "free"
143
- };
144
- dev.submit("grts_VotreCleApiDeCeSite", data); // SDK gère erreurs et succès automatiquement
145
- }
146
- </script>
147
- ```
148
-
149
- ### Avantages du SDK avancé
150
-
151
- - **Contrôle total des données** - Gérez chaque champ manuellement
152
- - **Validation personnalisée** - Appliquez vos règles métier
153
- - **Gestion d'erreurs avancée** - Messages d'erreur sur mesure
154
- - **Performance optimisée** - Envoi asynchrone et optimisé
155
-
156
- ---
157
-
158
- ## 📧 Validation Email
159
-
160
- InputDev valide automatiquement les adresses email pour garantir la qualité des données collectées. La validation fonctionne en deux temps : affichage des messages et blocage de la soumission si nécessaire.
161
-
162
- ### Comment ça fonctionne ?
163
-
164
- Le SDK détecte automatiquement tous les champs contenant "email" dans leur nom et applique une validation en temps réel.
165
-
166
- #### Messages dans la console (pour le débogage)
167
-
168
- ```
169
- 📧 VALIDATION EMAIL
170
- ⚠️ Erreurs trouvées:
171
- L'email "email" est invalide: test@invalid
172
- 💡 Corrigez les emails avant de soumettre à nouveau
173
- ```
174
-
175
- #### Messages sous le formulaire (pour l'expérience utilisateur)
176
-
177
- ```html
178
- <div class="inputdev-email-error-message" data-inputdev-error-for="email">
179
- <span style="text-decoration: underline; font-weight: bold;">InputDev SDK</span> :
180
- <span style="font-weight: bold;">Veuillez entrer une adresse email valide</span>
181
- </div>
182
- ```
183
-
184
- ### Processus de validation
185
-
186
- 1. **Détection** : Le SDK identifie les champs avec "email" dans le nom (insensible à la casse)
187
- 2. **Validation en temps réel** : Vérification lors de la perte de focus (blur event)
188
- 3. **Feedback visuel** : Bordure rouge et message d'erreur sous le champ
189
- 4. **Blocage de soumission** : Empêche l'envoi si un email est invalide
190
- 5. **Nettoyage automatique** : Supprime l'erreur quand l'utilisateur corrige
191
-
192
- ### Exemple de validation
193
-
194
- ```html
195
- <form data-inputdev="grts_VotreCleApiDeCeSite">
196
- <input type="text" name="name" placeholder="Nom" required>
197
-
198
- <!-- Sera validé automatiquement -->
199
- <input type="email" name="email" placeholder="Email" required>
200
-
201
- <!-- Aussi validé (contient "email") -->
202
- <input type="email" name="email_confirmation" placeholder="Confirmer l'email">
203
-
204
- <button type="submit">Envoyer</button>
205
- </form>
206
- ```
207
-
208
- ### Types de validation
209
-
210
- #### Emails valides
211
- - user@domain.com
212
- - test.email+tag@example.co.uk
213
- - user123@sub.domain.org
214
-
215
- #### ❌ Emails invalides
216
- - email@
217
- - user.domain.com
218
- - user@domain
219
-
220
- ### Styles appliqués automatiquement
221
-
222
- ```css
223
- .inputdev-email-error {
224
- border: 2px solid #ef4444 !important;
225
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1) !important;
226
- outline: none !important;
227
- }
228
-
229
- .inputdev-email-error-message {
230
- color: #ef4444;
231
- font-size: 12px;
232
- margin-top: 4px;
233
- display: block;
234
- }
235
- ```
236
-
237
- > ⚠️ **Important** : Si un email est invalide, la soumission du formulaire est complètement bloquée. L'utilisateur doit corriger l'email avant de pouvoir envoyer le formulaire.
238
-
239
- > 💡 **Astuce** : La validation fonctionne en mode normal et en mode silence. En mode silence, seul le message sous le formulaire s'affiche (pas de logs console).
240
-
241
- ---
242
-
243
- ## 📡 Événements
244
-
245
- Vous pouvez écouter les événements globaux pour personnaliser l'expérience utilisateur :
246
-
247
- ```javascript
248
- document.addEventListener("inputdev:success", (event) => {
249
- console.log("Succès :", event.detail);
250
- // Rediriger, afficher un message, etc.
251
- });
252
-
253
- document.addEventListener("inputdev:error", (event) => {
254
- console.error("Erreur :", event.detail);
255
- // Afficher une notification, logger l'erreur, etc.
256
- });
257
- ```
258
-
259
- ---
260
-
261
- ## � Codes d'erreur
262
-
263
- | Code | Signification | Solution |
264
- |------|---------------|----------|
265
- | `API_001` | Clé API invalide | Vérifiez votre clé |
266
- | `DOM_001` | Domaine non autorisé | Ajoutez le domaine autorisé |
267
- | `QUO_001` | Quota dépassé | Passez à un plan supérieur |
268
- | `NET_001` | Erreur réseau | Vérifiez la connexion |
269
- | `VAL_001` | Validation échouée | Vérifiez les champs |
270
-
271
- ---
272
-
273
- ## 🔐 Sécurité
274
-
275
- - **Requêtes envoyées en HTTPS** - Chiffrement de bout en bout
276
- - **Validation côté client et serveur** - Double couche de sécurité
277
- - **Domaine autorisé configurable** - Protection contre l'usage non autorisé
278
- - **Anti-spam intégré** - Protection automatique
279
-
280
- > ℹ️ **Sécurité** : La clé API est publique et conçue pour rester dans le frontend. Elle est sécurisée par validation de domaine et quotas automatiques.
281
-
282
- ---
283
-
284
- ## Mode Silence
285
-
286
- Pour désactiver les logs en production :
287
-
288
- ```html
289
- <form data-inputdev-silence="grts_VotreCleApiDeCeSite">
290
- ```
291
-
292
- ---
293
-
294
- ## 📊 Limites
295
-
296
- - **Nombre de soumissions par mois** - Dépend du plan choisi
297
- - **Nombre maximum de formulaires** - Variable selon le plan
298
- - **Nombre de sites/clés actives** - Une clé, un site
299
- - **SSL obligatoire** - HTTPS requis pour la sécurité
300
- - **Domaines autorisés** - Configurable par clé
301
-
302
- ---
303
-
304
- ## ⭐ Bonnes pratiques
305
-
306
- - Toujours utiliser HTTPS
307
- - Toujours définir des champs name
308
- - Toujours gérer les événements erreur
309
- - ✅ Surveiller votre quota
310
- - ✅ Tester en environnement de développement
311
-
312
- ---
313
-
314
- ## 📋 Exemple complet réel
315
-
316
- ```html
317
- <!DOCTYPE html>
318
- <html>
319
- <head>
320
- <script src="https://cdn.inputdev.com/sdk/latest/inputdev.min.js"></script>
321
- </head>
322
- <body>
323
-
324
- <form data-inputdev="grts_VotreCleApiDeCeSite">
325
- <div class="form-group">
326
- <label for="name">Nom complet</label>
327
- <input type="text" id="name" name="name" required>
328
- </div>
329
-
330
- <div class="form-group">
331
- <label for="email">Email</label>
332
- <input type="email" id="email" name="email" required>
333
- </div>
334
-
335
- <div class="form-group">
336
- <label for="message">Message</label>
337
- <textarea id="message" name="message" required></textarea>
338
- </div>
339
-
340
- <button type="submit">Envoyer</button>
341
- </form>
342
-
343
- <script>
344
- // Écouter les événements pour une meilleure UX
345
- document.addEventListener('inputdev:success', (event) => {
346
- alert('Message envoyé avec succès !');
347
- // Réinitialiser le formulaire
348
- document.querySelector('form').reset();
349
- });
350
-
351
- document.addEventListener('inputdev:error', (event) => {
352
- console.error('Erreur lors de l\'envoi :', event.detail);
353
- alert('Une erreur est survenue. Veuillez réessayer.');
354
- });
355
- </script>
356
-
357
- </body>
358
- </html>
359
- ```
360
-
361
- ---
362
-
363
- ## � Support & Liens
364
-
365
- - 📖 **Documentation Complète** : [docs.inputdev.dev](https://inputdev.pages.dev/documentation)
366
- - 💬 **Discord** : [Rejoindre la communauté]
367
- - 🐛 **Issues** : [Signaler un bug]
368
-
369
-
370
- ---
371
-
372
- ## 📄 Licence
373
-
374
- MIT License - voir le fichier [LICENSE](LICENSE) pour plus de détails.
375
-
376
- ---
377
-
378
- <p align="center">Made with ❤️ by <b>InputDev Team</b></p>
1
+ # InputDev SDK Documentation �
2
+
3
+ > **Le backend de formulaires le plus simple et professionnel pour les développeurs modernes.**
4
+
5
+ [![Version](https://img.shields.io/badge/version-1.0.0-059669.svg?style=flat-square)](https://inputdev.dev)
6
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE)
7
+ [![Documentation](https://img.shields.io/badge/docs-latest-059669.svg?style=flat-square)](https://inputdev.pages.dev/documentation)
8
+
9
+ ---
10
+
11
+ ## 📖 Table des matières
12
+
13
+ - [Introduction](#-introduction)
14
+ - [Quick Start](#-quick-start-démarrage-rapide)
15
+ - [Comment ça fonctionne](#-comment-ça-fonctionne)
16
+ - [Installation](#-installation)
17
+ - [Utilisation JavaScript](#-utilisation-javascript-pour-frameworks)
18
+ - [SDK JavaScript Avancé](#-sdk-javascript-avancé)
19
+ - [Validation Email](#-validation-email)
20
+ - [Événements](#-événements)
21
+ - [Codes d'erreur](#-codes-derreur)
22
+ - [Sécurité](#-sécurité)
23
+ - [Mode Silence](#-mode-silence)
24
+ - [Limites](#-limites)
25
+ - [Bonnes pratiques](#-bonnes-pratiques)
26
+ - [Exemple complet](#-exemple-complet-réel)
27
+
28
+ ---
29
+
30
+ ## 🚀 Introduction
31
+
32
+ InputDev permet de transformer un simple formulaire en système de collecte de données sécurisé et professionnel.
33
+
34
+ ### ✨ Avantages principaux
35
+
36
+ - **Aucune configuration serveur nécessaire** - Déployez en minutes
37
+ - **Aucune dépendance externe** - SDK ultra-léger et autonome
38
+ - **Installation en moins de 1 minute** - Intégration instantanée
39
+ - **Validation automatique** - Emails et champs intégrés
40
+ - **Sécurité de niveau entreprise** - HTTPS, CORS, anti-spam
41
+ - **Filtrage intelligent des champs** - Ignore automatiquement les éléments non-pertinents
42
+ - **Retour visuel immédiat** - Boutons verts/rouges selon succès/erreur
43
+ - **Deux versions disponibles** - Minifiée (8.3KB) et complète (10.3KB)
44
+
45
+ ---
46
+
47
+ ## ⚡ Quick Start (Démarrage rapide)
48
+
49
+ ### Étape 1 — Ajouter le script
50
+
51
+ #### Via CDN (recommandé)
52
+
53
+ ```html
54
+ <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.prod.js"></script>
55
+ ```
56
+
57
+ > **Note importante** : Utilisez la version `.prod.js` qui est la seule version fonctionnelle actuellement
58
+
59
+ #### Via NPM
60
+
61
+ ```bash
62
+ npm install @inputdev/sdk
63
+ import InputDev from "@inputdev/sdk";
64
+ ```
65
+
66
+ ### Étape 2 Ajouter votre clé API
67
+
68
+ ```html
69
+ <form data-inputdev="grts_VotreCleApiDeCeSite">
70
+ <input type="text" name="name" required />
71
+ <input type="email" name="email" required />
72
+ <button type="submit">Envoyer</button>
73
+ </form>
74
+ ```
75
+
76
+ > 🎉 **C'est terminé !** Le formulaire est maintenant connecté à InputDev.
77
+
78
+ ---
79
+
80
+ ## 🔧 Comment ça fonctionne
81
+
82
+ 1. **Navigateur** - L'utilisateur soumet le formulaire
83
+ 2. **InputDev API** - Les données sont validées et envoyées en HTTPS
84
+ 3. **Stockage sécurisé** - Elles sont enregistrées dans votre tableau de bord
85
+
86
+ ---
87
+
88
+ ## 📦 Installation
89
+
90
+ ### Via CDN (recommandé pour production)
91
+
92
+ > **Deux versions disponibles :**
93
+ > - **Version minifiée (8.3KB)** : Pour production - chargement ultra-rapide
94
+ > - **Version complète (10.3KB)** : Pour développement - avec commentaires
95
+
96
+ #### Version Minifiée (Production)
97
+ ```html
98
+ <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.min.js"></script>
99
+ ```
100
+
101
+ #### Version Complète (Développement)
102
+ ```html
103
+ <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.prod.js"></script>
104
+ ```
105
+
106
+ #### CDN Alternative (JSDelivr)
107
+ ```html
108
+ <script src="https://cdn.jsdelivr.net/npm/@inputdev/sdk@latest/inputdev-sdk.min.js"></script>
109
+ ```
110
+
111
+ ### Via NPM
112
+
113
+ ```bash
114
+ npm install @inputdev/sdk
115
+ import InputDev from "@inputdev/sdk";
116
+ ```
117
+
118
+ ---
119
+
120
+ ## 💻 Utilisation JavaScript (Pour Frameworks)
121
+
122
+ Idéal pour les frameworks JavaScript (React, Vue, Angular, etc.) où vous contrôlez déjà les données du formulaire :
123
+
124
+ ```javascript
125
+ const sdk = new InputDev();
126
+
127
+ await sdk.submit("grts_VotreCleApiDeCeSite", {
128
+ name: "John",
129
+ email: "john@email.com",
130
+ plan: "premium"
131
+ });
132
+ ```
133
+
134
+ ### Paramètres
135
+
136
+ | Paramètre | Type | Obligatoire | Description |
137
+ |-----------|------|-------------|-------------|
138
+ | `apiKey` | string | Oui | Clé publique fournie par InputDev |
139
+ | `data` | object | Oui | Données à envoyer |
140
+
141
+ ---
142
+
143
+ ## 🚀 SDK JavaScript Avancé
144
+
145
+ Pour le HTML classique avec un contrôle total des champs et une gestion personnalisée :
146
+
147
+ ```html
148
+ <form id="contact-form">
149
+ <!-- ... vos champs ici ... -->
150
+ <button type="button" onclick="submitFormulaire()">Envoyer</button>
151
+ </form>
152
+
153
+ <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.prod.js"></script>
154
+ <script>
155
+ // Fonction réutilisable, contrôle total des champs
156
+ function submitFormulaire() {
157
+ const dev = new InputDevSDK();
158
+ const data = {
159
+ email: "exemple@test.com",
160
+ message: "Message par défaut",
161
+ telephone: "+22990000000",
162
+ plan: "free"
163
+ };
164
+ dev.submit("grts_VotreCleApiDeCeSite", data); // SDK gère erreurs et succès automatiquement
165
+ }
166
+ </script>
167
+ ```
168
+
169
+ ### Avantages du SDK avancé
170
+
171
+ - **Contrôle total des données** - Gérez chaque champ manuellement
172
+ - **Validation personnalisée** - Appliquez vos règles métier
173
+ - **Gestion d'erreurs avancée** - Messages d'erreur sur mesure
174
+ - **Performance optimisée** - Envoi asynchrone et optimisé
175
+
176
+ ---
177
+
178
+ ## 📧 Validation Email
179
+
180
+ InputDev valide automatiquement les adresses email pour garantir la qualité des données collectées. La validation fonctionne en deux temps : affichage des messages et blocage de la soumission si nécessaire.
181
+
182
+ ### Comment ça fonctionne ?
183
+
184
+ Le SDK détecte automatiquement les champs email de deux manières :
185
+ 1. **Type d'input** : Tous les `<input type="email">` sont validés
186
+ 2. **Nom du champ** : Tous les champs dont le nom contient "email" (insensible à la casse)
187
+
188
+ > ⚠️ **Important** : Les **names** sont très importants ! Ils déterminent quels champs seront validés et comment les données seront stockées.
189
+
190
+ #### Messages dans la console (pour le débogage)
191
+
192
+ ```
193
+ 📧 VALIDATION EMAIL
194
+ ⚠️ Erreurs trouvées:
195
+ L'email "email" est invalide: test@invalid
196
+ 💡 Corrigez les emails avant de soumettre à nouveau
197
+ ```
198
+
199
+ #### Messages sous le formulaire (pour l'expérience utilisateur)
200
+
201
+ ```html
202
+ <div class="inputdev-email-error-message" data-inputdev-error-for="email">
203
+ <span style="text-decoration: underline; font-weight: bold;">InputDev SDK</span> :
204
+ <span style="font-weight: bold;">Veuillez entrer une adresse email valide</span>
205
+ </div>
206
+ ```
207
+
208
+ ### Processus de validation
209
+
210
+ 1. **Détection** : Le SDK identifie les champs avec "email" dans le nom (insensible à la casse)
211
+ 2. **Validation en temps réel** : Vérification lors de la perte de focus (blur event)
212
+ 3. **Feedback visuel** : Bordure rouge et message d'erreur sous le champ
213
+ 4. **Blocage de soumission** : Empêche l'envoi si un email est invalide
214
+ 5. **Nettoyage automatique** : Supprime l'erreur quand l'utilisateur corrige
215
+
216
+ ### Exemple de validation
217
+
218
+ ```html
219
+ <form data-inputdev="grts_VotreCleApiDeCeSite">
220
+ <input type="text" name="name" placeholder="Nom" required>
221
+
222
+ <!-- ✅ Sera validé (type="email") -->
223
+ <input type="email" name="contact" placeholder="Contact" required>
224
+
225
+ <!-- Aussi validé (type="email" + name contient "email") -->
226
+ <input type="email" name="email" placeholder="Email" required>
227
+
228
+ <!-- ✅ Validé (name contient "email") -->
229
+ <input type="text" name="user_email" placeholder="Email utilisateur">
230
+
231
+ <!-- ❌ Non validé (ni type="email", ni name avec "email") -->
232
+ <input type="text" name="phone" placeholder="Téléphone">
233
+
234
+ <button type="submit">Envoyer</button>
235
+ </form>
236
+ ```
237
+
238
+ ### Types de validation
239
+
240
+ #### ✅ Champs qui seront validés
241
+ - `<input type="email" name="quelconque">` (peu importe le name)
242
+ - `<input type="text" name="email">` (name contient "email")
243
+ - `<input type="text" name="user_email">` (name contient "email")
244
+ - `<input type="email" name="EMAIL_ADDRESS">` (les deux conditions)
245
+
246
+ #### ❌ Champs qui ne seront PAS validés
247
+ - `<input type="text" name="contact">` (ni type email, ni name avec "email")
248
+ - `<input type="tel" name="phone">` (ni type email, ni name avec "email")
249
+ - `<input type="text" name="message">` (ni type email, ni name avec "email")
250
+
251
+ ### Types de validation
252
+
253
+ #### Emails valides
254
+ - user@domain.com
255
+ - test.email+tag@example.co.uk
256
+ - user123@sub.domain.org
257
+
258
+ #### ❌ Emails invalides
259
+ - email@
260
+ - user.domain.com
261
+ - user@domain
262
+
263
+ ### Importance des names (noms de champs)
264
+
265
+ Les **names** sont cruciaux pour le fonctionnement d'InputDev :
266
+
267
+ 1. **Validation** : Les names déterminent quels champs sont validés automatiquement
268
+ 2. **Stockage** : Les names deviennent les clés dans votre base de données
269
+ 3. **Identification** : Les names permettent d'identifier chaque champ de manière unique
270
+
271
+ #### Bonnes pratiques pour les names
272
+ - ✅ Utilisez des names descriptifs : `name="email_utilisateur"`
273
+ - Utilisez des names simples : `name="telephone"`
274
+ - ✅ Soyez cohérent : `name="email"` et `name="confirmation_email"`
275
+ - Évitez les names vides ou manquants
276
+ - Évitez les caractères spéciaux : `name="email-utilisateur"` (préférer `_`)
277
+
278
+ ### Styles appliqués automatiquement
279
+
280
+ ```css
281
+ .inputdev-email-error {
282
+ border: 2px solid #ef4444 !important;
283
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1) !important;
284
+ outline: none !important;
285
+ }
286
+
287
+ .inputdev-email-error-message {
288
+ color: #ef4444;
289
+ font-size: 12px;
290
+ margin-top: 4px;
291
+ display: block;
292
+ }
293
+ ```
294
+
295
+ > ⚠️ **Important** : Si un email est invalide, la soumission du formulaire est complètement bloquée. L'utilisateur doit corriger l'email avant de pouvoir envoyer le formulaire.
296
+
297
+ > 💡 **Astuce** : La validation fonctionne en mode normal et en mode silence. En mode silence, seul le message sous le formulaire s'affiche (pas de logs console).
298
+
299
+ ---
300
+
301
+ ## 📡 Événements
302
+
303
+ Vous pouvez écouter les événements globaux pour personnaliser l'expérience utilisateur :
304
+
305
+ ```javascript
306
+ document.addEventListener("inputdev:success", (event) => {
307
+ console.log("Succès :", event.detail);
308
+ // Rediriger, afficher un message, etc.
309
+ });
310
+
311
+ document.addEventListener("inputdev:error", (event) => {
312
+ console.error("Erreur :", event.detail);
313
+ // Afficher une notification, logger l'erreur, etc.
314
+ });
315
+ ```
316
+
317
+ ---
318
+
319
+ ## 🔄 Comportement de Soumission (Important)
320
+
321
+ ### ⚠️ **Le SDK bloque temporairement le rechargement de la page**
322
+
323
+ Le SDK InputDev utilise un comportement moderne de type SPA (Single Page Application) pour garantir une meilleure expérience utilisateur :
324
+
325
+ #### 📋 **Ce qui se passe lors de la soumission**
326
+
327
+ 1. **`e.preventDefault()`** : Le rechargement automatique de la page est bloqué
328
+ 2. **Bouton désactivé** : Le bouton submit est désactivé pendant 3 secondes pour éviter les double-soumissions
329
+ 3. **Texte changé** : Le bouton affiche "Envoi en cours..." pendant le traitement
330
+ 4. **Requête asynchrone** : L'envoi se fait en AJAX sans rechargement
331
+ 5. **Gestion des résultats** : Succès ou erreur sont gérés via les événements
332
+
333
+ #### ✅ **Avantages de ce comportement**
334
+
335
+ - 🔄 **Évite les soumissions multiples** - Protection contre les doubles clics
336
+ - 📱 **Meilleure UX** - Pas de rechargement brutal de la page
337
+ - 🔧 **Gestion d'erreur améliorée** - Messages d'erreur sans perdre le formulaire
338
+ - 📊 **Feedback visuel** - Indicateur de chargement clair
339
+ - 🎯 **Compatible SPA** - Fonctionne parfaitement avec React, Vue, Angular
340
+
341
+ > 💡 **Note** : Ce comportement est **intentionnel** et **professionnel**. Il garantit que vos utilisateurs ne perdent jamais leurs données et offre une expérience moderne et fluide.
342
+
343
+ ---
344
+
345
+ ## Codes d'erreur
346
+
347
+ | Code | Signification | Solution |
348
+ |------|---------------|----------|
349
+ | `API_001` | Clé API invalide | Vérifiez votre clé |
350
+ | `DOM_001` | Domaine non autorisé | Ajoutez le domaine autorisé |
351
+ | `QUO_001` | Quota dépassé | Passez à un plan supérieur |
352
+ | `NET_001` | Erreur réseau | Vérifiez la connexion |
353
+ | `VAL_001` | Validation échouée | Vérifiez les champs |
354
+
355
+ ---
356
+
357
+ ## 🔐 Sécurité
358
+
359
+ - **Requêtes envoyées en HTTPS** - Chiffrement de bout en bout
360
+ - **Validation côté client et serveur** - Double couche de sécurité
361
+ - **Domaine autorisé configurable** - Protection contre l'usage non autorisé
362
+ - **Anti-spam intégré** - Protection automatique
363
+
364
+ > ℹ️ **Sécurité** : La clé API est publique et conçue pour rester dans le frontend. Elle est sécurisée par validation de domaine et quotas automatiques.
365
+
366
+ ---
367
+
368
+ ## � Mode Silence
369
+
370
+ Pour désactiver les logs en production :
371
+
372
+ ```html
373
+ <form data-inputdev-silence="grts_VotreCleApiDeCeSite">
374
+ ```
375
+
376
+ ---
377
+
378
+ ## 📊 Limites
379
+
380
+ - **Nombre de soumissions par mois** - Dépend du plan choisi
381
+ - **Nombre maximum de formulaires** - Variable selon le plan
382
+ - **Nombre de sites/clés actives** - Une clé, un site
383
+ - **SSL obligatoire** - HTTPS requis pour la sécurité
384
+ - **Domaines autorisés** - Configurable par clé
385
+
386
+ ---
387
+
388
+ ## ⭐ Bonnes pratiques
389
+
390
+ - ✅ Toujours utiliser HTTPS
391
+ - ✅ Toujours définir des champs name
392
+ - ✅ Toujours gérer les événements erreur
393
+ - ✅ Surveiller votre quota
394
+ - ✅ Tester en environnement de développement
395
+
396
+ ---
397
+
398
+ ## 📋 Exemple complet réel
399
+
400
+ ```html
401
+ <!DOCTYPE html>
402
+ <html>
403
+ <head>
404
+ <script src="https://unpkg.com/@inputdev/sdk@latest/inputdev-sdk.prod.js"></script>
405
+ </head>
406
+ <body>
407
+
408
+ <form data-inputdev="grts_VotreCleApiDeCeSite">
409
+ <div class="form-group">
410
+ <label for="name">Nom complet</label>
411
+ <input type="text" id="name" name="name" required>
412
+ </div>
413
+
414
+ <div class="form-group">
415
+ <label for="email">Email</label>
416
+ <input type="email" id="email" name="email" required>
417
+ </div>
418
+
419
+ <div class="form-group">
420
+ <label for="message">Message</label>
421
+ <textarea id="message" name="message" required></textarea>
422
+ </div>
423
+
424
+ <button type="submit">Envoyer</button>
425
+ </form>
426
+
427
+ <script>
428
+ // Écouter les événements pour une meilleure UX
429
+ document.addEventListener('inputdev:success', (event) => {
430
+ alert('Message envoyé avec succès !');
431
+ // Réinitialiser le formulaire
432
+ document.querySelector('form').reset();
433
+ });
434
+
435
+ document.addEventListener('inputdev:error', (event) => {
436
+ console.error('Erreur lors de l\'envoi :', event.detail);
437
+ alert('Une erreur est survenue. Veuillez réessayer.');
438
+ });
439
+ </script>
440
+
441
+ </body>
442
+ </html>
443
+ ```
444
+
445
+ ---
446
+
447
+ ## � Support & Liens
448
+
449
+ - 📖 **Documentation Complète** : [docs.inputdev.dev](https://inputdev.pages.dev/documentation)
450
+ - 💬 **Discord** : [Rejoindre la communauté]
451
+ - 🐛 **Issues** : [Signaler un bug]
452
+
453
+
454
+ ---
455
+
456
+ ## 📄 Licence
457
+
458
+ MIT License - voir le fichier [LICENSE](LICENSE) pour plus de détails.
459
+
460
+ ---
461
+
462
+ <p align="center">Made with ❤️ by <b>InputDev Team</b></p>