{
  "version": 3,
  "sources": ["src/app/pages/home/services/contact.service.ts", "src/app/core/components/contact-form/contact-form.component.ts", "src/app/core/components/contact-form/contact-form.component.html", "src/app/core/components/contact-info/contact-info.component.ts", "src/app/core/components/contact-info/contact-info.component.html"],
  "sourcesContent": ["import { Injectable } from '@angular/core';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {environment} from '../../../../environment/environment';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ContactService {\r\n\r\n  constructor(private fb : FormBuilder , private http : HttpClient) { }\r\n\r\n  createContactForm(): FormGroup {\r\n    return this.fb.group({\r\n      name: ['', [Validators.required,Validators.minLength(2),Validators.maxLength(500)]],\r\n      email: ['', [Validators.required,Validators.email]],\r\n      phone: [''],\r\n      subject : ['Prise de contact depuis TGCStudios',[Validators.required]],\r\n      site:['TGCStudios',Validators.required],\r\n      message: ['', [Validators.required,Validators.minLength(10),Validators.maxLength(5000)]],\r\n      // champ honeypot - doit rester vide\r\n      website: [''],\r\n      rgpdConsent:[true],\r\n      contactConsent: [false],\r\n\r\n    });\r\n  }\r\n\r\n  sendEmail(formData : FormGroup){\r\n    return this.http.post(environment.apiURL+'/api/contact_email', formData.value)\r\n  }\r\n\r\n}\r\n", "import { Component, OnInit, signal } from '@angular/core';\r\nimport { AbstractControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { ContactService } from '../../../pages/home/services/contact.service';\r\n\r\nimport { ToolsService } from '../../services/tools.service';\r\nimport {LucideSend} from '@lucide/angular';\r\nimport {GoogleAdsService} from '../../services/google-ads.service';\r\n@Component({\r\n  selector: 'app-contact-form',\r\n  standalone:true,\r\n  imports: [ReactiveFormsModule, LucideSend],\r\n  templateUrl: './contact-form.component.html',\r\n  styleUrl: './contact-form.component.sass'\r\n})\r\nexport class ContactFormComponent implements OnInit {\r\n  contactForm!: FormGroup;\r\n\r\n  loader = signal(false);\r\n\r\n  constructor(private contactService: ContactService, private toolsService: ToolsService,private googleAds: GoogleAdsService) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.contactForm = this.contactService.createContactForm();\r\n  }\r\n  // --- HELPERS ---\r\n\r\n  private control(name: string): AbstractControl | null {\r\n    return this.contactForm.get(name);\r\n  }\r\n\r\n  /** Affiche l'erreur seulement après interaction */\r\n  shouldShowError(name: string): boolean {\r\n    const c = this.control(name);\r\n    return !!(c && c.invalid && (c.dirty || c.touched));\r\n  }\r\n\r\n  /** Vrai si le champ est invalide et qu'on doit le signaler */\r\n  isInvalid(name: string): boolean {\r\n    return this.shouldShowError(name);\r\n  }\r\n\r\n  /** Génère un id unique d'erreur par champ */\r\n  errorId(name: string): string {\r\n    return `${name}-error`;\r\n  }\r\n\r\n  /** Retourne l'id d'erreur uniquement si erreur affichée */\r\n  ariaDescribedBy(name: string): string | null {\r\n    return this.shouldShowError(name) ? this.errorId(name) : null;\r\n  }\r\n\r\n  /** Message d'erreur unique par champ */\r\n  getErrorMessage(name: string): string {\r\n    const c = this.control(name);\r\n    if (!c) return 'Champ invalide.';\r\n\r\n    // required\r\n    if (c.hasError('required')) return 'Ce champ est requis.';\r\n    if (c.hasError('requiredTrue')) return 'Nécessaire pour traiter votre demande.';\r\n\r\n    // spécifiques\r\n    if (name === 'name') {\r\n      if (c.hasError('minlength')) return 'Le nom doit contenir au moins 2 caractères.';\r\n    }\r\n\r\n    if (name === 'email') {\r\n      if (c.hasError('email')) return 'Email invalide.';\r\n    }\r\n\r\n    if (name === 'message') {\r\n      if (c.hasError('minlength')) return 'Merci de préciser un peu plus votre demande (10 caractères min).';\r\n    }\r\n\r\n    // fallback\r\n    return 'Champ invalide.';\r\n  }\r\n\r\n\r\n  async onSubmitContactForm() {\r\n    if (this.contactForm.invalid) {\r\n      this.toolsService.openSnackBar('Merci de remplir correctement le formulaire.', false);\r\n      return;\r\n    }\r\n\r\n    this.loader.set(true);\r\n\r\n    try {\r\n\r\n      // ✅ 4) Envoi (inchangé)\r\n      this.contactService.sendEmail(this.contactForm).subscribe({\r\n        next: (data: any) => {\r\n          this.loader.set(false);\r\n\r\n          this.googleAds.trackConversion();\r\n\r\n          this.toolsService.openSnackBar(data.message, data.success);\r\n\r\n        },\r\n        error: () => {\r\n          this.loader.set(false);\r\n          this.toolsService.openSnackBar(\r\n            \"Impossible d’envoyer le message pour le moment. Merci de réessayer dans quelques instants.\",\r\n            false\r\n          );\r\n        },\r\n      });\r\n    } catch (e) {\r\n      this.loader.set(false);\r\n      this.toolsService.openSnackBar(\"reCAPTCHA indisponible. Merci de réessayer.\", false);\r\n    }\r\n  }\r\n\r\n}\r\n", "<form [formGroup]=\"contactForm\" (ngSubmit)=\"onSubmitContactForm()\">\r\n<!--  honeypot-->\r\n  <div class=\"\" style=\"display: none; position:absolute; left: -999999px;\">\r\n    <input type=\"text\" formControlName=\"website\" tabindex=\"-1\" autocomplete=\"off\" aria-hidden=\"true\"/>\r\n  </div>\r\n  <!-- NOM -->\r\n  <div class=\"form-group\">\r\n    <label for=\"name\">Nom<small>*</small></label>\r\n\r\n    <input type=\"text\" id=\"name\" placeholder=\"Votre nom\" formControlName=\"name\" autocomplete=\"name\"\r\n      [attr.aria-invalid]=\"isInvalid('name')\" [attr.aria-describedby]=\"ariaDescribedBy('name')\" required />\r\n\r\n    @if (shouldShowError('name')) {\r\n    <span [id]=\"errorId('name')\" class=\"input-error\" role=\"alert\">\r\n      {{ getErrorMessage('name') }}\r\n    </span>\r\n    }\r\n  </div>\r\n\r\n  <!-- EMAIL + TÉLÉPHONE -->\r\n  <div class=\"form-row\">\r\n\r\n    <!-- EMAIL -->\r\n    <div class=\"form-group\">\r\n      <label for=\"email\">Email<small>*</small></label>\r\n\r\n      <input type=\"email\" id=\"email\" placeholder=\"Votre email\" formControlName=\"email\" autocomplete=\"email\"\r\n        inputmode=\"email\" [attr.aria-invalid]=\"isInvalid('email')\" [attr.aria-describedby]=\"ariaDescribedBy('email')\"\r\n        required />\r\n\r\n      @if (shouldShowError('email')) {\r\n      <span [id]=\"errorId('email')\" class=\"input-error\" role=\"alert\">\r\n        {{ getErrorMessage('email') }}\r\n      </span>\r\n      }\r\n    </div>\r\n\r\n    <!-- TÉLÉPHONE (à toi de décider si optionnel) -->\r\n    <div class=\"form-group\">\r\n      <label for=\"phone\">Téléphone<small>(facultatif)</small></label>\r\n\r\n      <input type=\"tel\" id=\"phone\" placeholder=\"Votre numéro de téléphone\" formControlName=\"phone\" autocomplete=\"tel\"\r\n        inputmode=\"tel\" [attr.aria-invalid]=\"isInvalid('phone')\" [attr.aria-describedby]=\"ariaDescribedBy('phone')\" />\r\n\r\n      @if (shouldShowError('phone')) {\r\n      <span [id]=\"errorId('phone')\" class=\"input-error\" role=\"alert\">\r\n        {{ getErrorMessage('phone') }}\r\n      </span>\r\n      }\r\n    </div>\r\n\r\n  </div>\r\n\r\n  <!-- MESSAGE -->\r\n  <div class=\"form-group\">\r\n    <label for=\"message\">Message<small>*</small></label>\r\n\r\n    <textarea id=\"message\" rows=\"5\"\r\n      placeholder=\"Expliquez votre besoin, même brièvement : création de site, refonte, amélioration d’un site existant, besoin de visibilité...*\"\r\n      formControlName=\"message\" [attr.aria-invalid]=\"isInvalid('message')\"\r\n      [attr.aria-describedby]=\"ariaDescribedBy('message')\" required></textarea>\r\n\r\n    @if (shouldShowError('message')) {\r\n    <span [id]=\"errorId('message')\" class=\"input-error\" role=\"alert\">\r\n      {{ getErrorMessage('message') }}</span>\r\n    }\r\n  </div>\r\n\r\n  <!-- RGPD (obligatoire) -->\r\n  <p class=\"form-info rgpd-box\">\r\n    Les informations envoyées via ce formulaire me permettent uniquement de vous répondre et d’échanger au sujet de\r\n    votre projet. Elles restent confidentielles et ne sont jamais transmises à des tiers.\r\n  </p>\r\n\r\n  <!-- CONSENTEMENT COMMERCIAL (optionnel) -->\r\n  <div class=\"form-group\">\r\n    <label for=\"contactConsent\" class=\"checkbox-label\">\r\n      <input type=\"checkbox\" id=\"contactConsent\" formControlName=\"contactConsent\" class=\"checkbox-input\" />\r\n      Je veux recevoir quelques conseils web de temps en temps — sans spam. </label>\r\n  </div>\r\n\r\n  <!-- BOUTON -->\r\n  @if (loader()) {\r\n    <div class=\"spinner-border m-auto\" role=\"status\">\r\n      <span class=\"visually-hidden\">Chargement...</span>\r\n    </div>\r\n  } @else {\r\n  <button type=\"submit\" class=\"btn-primary\" [disabled]=\"contactForm.invalid\">\r\n    Planifier un échange <svg lucideSend></svg>\r\n  </button>\r\n  }\r\n  <div class=\"form_highlights\">\r\n    <span class=\"badge\">\r\n      Réponse sous 24h\r\n    </span>\r\n    <span class=\"badge\">\r\n      Sans engagement\r\n    </span>\r\n    <span class=\"badge\">\r\n      Devis gratuit\r\n    </span>\r\n  </div>\r\n\r\n</form>\r\n", "import { Component } from '@angular/core';\r\nimport {myInfo} from \"../../data/my-data\";\r\nimport {LucideCalendarDays, LucideMail, LucideMapPin, LucidePhone} from '@lucide/angular';\r\n\r\n@Component({\r\n  selector: 'app-contact-info',\r\n  standalone:true,\r\n  imports: [\r\n    LucideMail,\r\n    LucidePhone,\r\n    LucideCalendarDays,\r\n    LucideMapPin\r\n  ],\r\n  templateUrl: './contact-info.component.html',\r\n  styleUrl: './contact-info.component.sass'\r\n})\r\nexport class ContactInfoComponent {\r\n\r\n    protected readonly myData = myInfo;\r\n}\r\n", "<div class=\"contact-info\">\r\n  <div class=\"info-item\">\r\n    <div class=\"icon\">\r\n      <svg lucideMail></svg>\r\n    </div>\r\n    <div>\r\n      <p class=\"label\">Email</p>\r\n      <a class=\"value\" href=\"mailto:{{myData.email}}\">{{ myData.email }}</a>\r\n      <!--            <p class=\"value\">{{ myData.email }}</p>-->\r\n    </div>\r\n  </div>\r\n  <div class=\"info-item\">\r\n    <div class=\"icon\">\r\n      <svg lucidePhone></svg>\r\n    </div>\r\n    <div>\r\n      <p class=\"label\">Téléphone</p>\r\n      <a class=\"value\" href=\"tel:{{myData?.phone}}\">{{myData?.phone}}</a>\r\n    </div>\r\n  </div>\r\n  <div class=\"info-item\">\r\n    <div class=\"icon\">\r\n      <svg lucideCalendarDays></svg>\r\n    </div>\r\n    <div>\r\n      <p class=\"label\">Horaires</p>\r\n      <p class=\"value\">Lundi - Vendredi <br> 8h00 - 17h00</p>\r\n    </div>\r\n  </div>\r\n  <div class=\"info-item\">\r\n    <div class=\"icon\">\r\n      <svg lucideMapPin></svg>\r\n    </div>\r\n    <div>\r\n      <p class=\"label\">Localisation</p>\r\n      <p class=\"value\">{{ myData.location }}</p>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"social-media\">\r\n    <p>Suivez-moi sur les réseaux sociaux</p>\r\n    <div class=\"social-links\">\r\n      <a href=\"{{myData.githubLink}}\" target=\"_blank\" rel=\"noopener\" class=\"social-btn\" aria-label=\"Mon GitHub\"><svg xmlns=\"http://www.w3.org/2000/svg\"  width=\"24\" height=\"24\" viewBox=\"0 0 640 640\" fill=\"currentColor\"><path d=\"M237.9 461.4C237.9 463.4 235.6 465 232.7 465C229.4 465.3 227.1 463.7 227.1 461.4C227.1 459.4 229.4 457.8 232.3 457.8C235.3 457.5 237.9 459.1 237.9 461.4zM206.8 456.9C206.1 458.9 208.1 461.2 211.1 461.8C213.7 462.8 216.7 461.8 217.3 459.8C217.9 457.8 216 455.5 213 454.6C210.4 453.9 207.5 454.9 206.8 456.9zM251 455.2C248.1 455.9 246.1 457.8 246.4 460.1C246.7 462.1 249.3 463.4 252.3 462.7C255.2 462 257.2 460.1 256.9 458.1C256.6 456.2 253.9 454.9 251 455.2zM316.8 72C178.1 72 72 177.3 72 316C72 426.9 141.8 521.8 241.5 555.2C254.3 557.5 258.8 549.6 258.8 543.1C258.8 536.9 258.5 502.7 258.5 481.7C258.5 481.7 188.5 496.7 173.8 451.9C173.8 451.9 162.4 422.8 146 415.3C146 415.3 123.1 399.6 147.6 399.9C147.6 399.9 172.5 401.9 186.2 425.7C208.1 464.3 244.8 453.2 259.1 446.6C261.4 430.6 267.9 419.5 275.1 412.9C219.2 406.7 162.8 398.6 162.8 302.4C162.8 274.9 170.4 261.1 186.4 243.5C183.8 237 175.3 210.2 189 175.6C209.9 169.1 258 202.6 258 202.6C278 197 299.5 194.1 320.8 194.1C342.1 194.1 363.6 197 383.6 202.6C383.6 202.6 431.7 169 452.6 175.6C466.3 210.3 457.8 237 455.2 243.5C471.2 261.2 481 275 481 302.4C481 398.9 422.1 406.6 366.2 412.9C375.4 420.8 383.2 435.8 383.2 459.3C383.2 493 382.9 534.7 382.9 542.9C382.9 549.4 387.5 557.3 400.2 555C500.2 521.8 568 426.9 568 316C568 177.3 455.5 72 316.8 72zM169.2 416.9C167.9 417.9 168.2 420.2 169.9 422.1C171.5 423.7 173.8 424.4 175.1 423.1C176.4 422.1 176.1 419.8 174.4 417.9C172.8 416.3 170.5 415.6 169.2 416.9zM158.4 408.8C157.7 410.1 158.7 411.7 160.7 412.7C162.3 413.7 164.3 413.4 165 412C165.7 410.7 164.7 409.1 162.7 408.1C160.7 407.5 159.1 407.8 158.4 408.8zM190.8 444.4C189.2 445.7 189.8 448.7 192.1 450.6C194.4 452.9 197.3 453.2 198.6 451.6C199.9 450.3 199.3 447.3 197.3 445.4C195.1 443.1 192.1 442.8 190.8 444.4zM179.4 429.7C177.8 430.7 177.8 433.3 179.4 435.6C181 437.9 183.7 438.9 185 437.9C186.6 436.6 186.6 434 185 431.7C183.6 429.4 181 428.4 179.4 429.7z\"/></svg></a>\r\n      <a href=\"{{myData.linkedinLink}}\" target=\"_blank\" rel=\"noopener\" class=\"social-btn\"\r\n         aria-label=\"Mon Linkedin\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 640 640\" fill=\"currentColor\"><path d=\"M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z\"/></svg></a>\r\n      <a href=\"{{myData.googleLink}}\" target=\"_blank\" rel=\"noopener\" class=\"social-btn\"\r\n         aria-label=\"Mon Linkedin\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" width=\"24\" height=\"24\" fill=\"currentColor\"><path d=\"M564 325.8C564 467.3 467.1 568 324 568C186.8 568 76 457.2 76 320C76 182.8 186.8 72 324 72C390.8 72 447 96.5 490.3 136.9L422.8 201.8C334.5 116.6 170.3 180.6 170.3 320C170.3 406.5 239.4 476.6 324 476.6C422.2 476.6 459 406.2 464.8 369.7L324 369.7L324 284.4L560.1 284.4C562.4 297.1 564 309.3 564 325.8z\"/></svg></a>\r\n\r\n    </div>\r\n  </div>\r\n</div>\r\n"],
  "mappings": "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",
  "names": ["ContactService", "fb", "http", "constructor", "createContactForm", "group", "name", "Validators", "required", "minLength", "maxLength", "email", "phone", "subject", "site", "message", "website", "rgpdConsent", "contactConsent", "sendEmail", "formData", "post", "environment", "apiURL", "value", "\u0275\u0275inject", "FormBuilder", "HttpClient", "factory", "\u0275fac", "providedIn", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "ctx_r0", "errorId", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "getErrorMessage", "\u0275\u0275element", "contactForm", "invalid", "ContactFormComponent", "contactService", "toolsService", "googleAds", "loader", "signal", "constructor", "ngOnInit", "createContactForm", "control", "name", "get", "shouldShowError", "c", "dirty", "touched", "isInvalid", "ariaDescribedBy", "hasError", "onSubmitContactForm", "__async", "openSnackBar", "set", "sendEmail", "subscribe", "next", "data", "trackConversion", "message", "success", "error", "\u0275\u0275directiveInject", "ContactService", "ToolsService", "GoogleAdsService", "selectors", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275listener", "\u0275\u0275conditionalCreate", "ContactFormComponent_Conditional_9_Template", "ContactFormComponent_Conditional_17_Template", "ContactFormComponent_Conditional_24_Template", "ContactFormComponent_Conditional_31_Template", "ContactFormComponent_Conditional_38_Template", "ContactFormComponent_Conditional_39_Template", "\u0275\u0275conditional", "ReactiveFormsModule", "\u0275NgNoValidate", "DefaultValueAccessor", "CheckboxControlValueAccessor", "NgControlStatus", "NgControlStatusGroup", "RequiredValidator", "FormGroupDirective", "FormControlName", "LucideSend", "styles", "ContactInfoComponent", "myData", "myInfo", "selectors", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275text", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275interpolate1", "email", "\u0275\u0275sanitizeUrl", "\u0275\u0275textInterpolate", "phone", "location", "\u0275\u0275interpolate", "githubLink", "linkedinLink", "googleLink", "LucideMail", "LucidePhone", "LucideCalendarDays", "LucideMapPin", "styles"]
}
