src/ApplicationBundle/Modules/HoneybeeWeb/Resources/views/pages/contact.html.twig line 1

Open in your IDE?
  1. {% include '@Application/inc/central_header.html.twig' %}
  2. <style>
  3. :root {
  4.     --n-cream: #F7F5F0;
  5.     --n-dark:  #1A1D2E;
  6.     --n-amber: #C07D2A;
  7.     --n-sage:  #3D6B52;
  8.     --n-slate: #3D4F72;
  9.     --n-muted: #6B7280;
  10.     --n-border: rgba(26,29,46,.08);
  11. }
  12. .n-page-hero {
  13.     background: var(--n-cream);
  14.     padding: 80px 0 56px;
  15.     text-align: center;
  16. }
  17. .n-page-hero .n-eyebrow {
  18.     display: inline-block;
  19.     font-size: .75rem;
  20.     font-weight: 700;
  21.     letter-spacing: .12em;
  22.     text-transform: uppercase;
  23.     color: var(--n-amber);
  24.     margin-bottom: 14px;
  25. }
  26. .n-page-hero h1 {
  27.     font-family: 'Montserrat', sans-serif;
  28.     font-size: clamp(2rem, 4vw, 2.8rem);
  29.     font-weight: 700;
  30.     color: var(--n-dark);
  31.     margin: 0 0 14px;
  32.     line-height: 1.2;
  33. }
  34. .n-page-hero p {
  35.     font-size: 1.05rem;
  36.     color: var(--n-muted);
  37.     max-width: 520px;
  38.     margin: 0 auto;
  39.     line-height: 1.7;
  40. }
  41. /* ── Contact Section ── */
  42. .n-contact-section {
  43.     background: #fff;
  44.     padding: 72px 0 96px;
  45. }
  46. .n-contact-inner {
  47.     display: grid;
  48.     grid-template-columns: 1fr 1fr;
  49.     gap: 64px;
  50.     align-items: center;
  51.     max-width: 960px;
  52.     margin: 0 auto;
  53.     padding: 0 24px;
  54. }
  55. @media(max-width:768px) {
  56.     .n-contact-inner { grid-template-columns: 1fr; gap: 32px; }
  57.     .n-contact-img { display: none; }
  58. }
  59. .n-contact-img img {
  60.     width: 100%;
  61.     max-width: 380px;
  62.     display: block;
  63.     margin: 0 auto;
  64.     opacity: .92;
  65. }
  66. /* form */
  67. .n-contact-form h2 {
  68.     font-family: 'Montserrat', sans-serif;
  69.     font-size: 1.6rem;
  70.     font-weight: 700;
  71.     color: var(--n-dark);
  72.     margin: 0 0 6px;
  73. }
  74. .n-contact-form .n-form-sub {
  75.     font-size: .9rem;
  76.     color: var(--n-muted);
  77.     margin: 0 0 28px;
  78. }
  79. .n-field {
  80.     margin-bottom: 18px;
  81. }
  82. .n-field label {
  83.     display: block;
  84.     font-size: .82rem;
  85.     font-weight: 600;
  86.     color: var(--n-dark);
  87.     margin-bottom: 6px;
  88.     letter-spacing: .02em;
  89. }
  90. .n-field input,
  91. .n-field textarea {
  92.     width: 100%;
  93.     padding: 11px 14px;
  94.     border: 1.5px solid var(--n-border);
  95.     border-radius: 8px;
  96.     font-size: .95rem;
  97.     color: var(--n-dark);
  98.     background: var(--n-cream);
  99.     transition: border-color .2s;
  100.     font-family: 'DM Sans', sans-serif;
  101.     outline: none;
  102.     box-sizing: border-box;
  103. }
  104. .n-field input:focus,
  105. .n-field textarea:focus {
  106.     border-color: var(--n-amber);
  107.     background: #fff;
  108. }
  109. .n-field textarea {
  110.     resize: vertical;
  111.     min-height: 110px;
  112. }
  113. .n-submit-btn {
  114.     display: inline-flex;
  115.     align-items: center;
  116.     gap: 8px;
  117.     padding: 12px 32px;
  118.     background: var(--n-amber);
  119.     color: #fff;
  120.     border: none;
  121.     border-radius: 8px;
  122.     font-family: 'DM Sans', sans-serif;
  123.     font-size: .95rem;
  124.     font-weight: 600;
  125.     cursor: pointer;
  126.     transition: background .2s, transform .15s;
  127. }
  128. .n-submit-btn:hover { background: #a86d24; transform: translateY(-1px); }
  129. /* ── 3-step wizard ── */
  130. .n-step {
  131.     margin-bottom: 30px;
  132. }
  133. .n-step-head {
  134.     display: flex;
  135.     align-items: center;
  136.     gap: 12px;
  137.     margin-bottom: 16px;
  138. }
  139. .n-step-num {
  140.     flex: 0 0 auto;
  141.     width: 30px;
  142.     height: 30px;
  143.     border-radius: 50%;
  144.     background: var(--n-amber);
  145.     color: #fff;
  146.     font-family: 'Montserrat', sans-serif;
  147.     font-weight: 700;
  148.     font-size: .9rem;
  149.     display: inline-flex;
  150.     align-items: center;
  151.     justify-content: center;
  152. }
  153. .n-step-title {
  154.     font-family: 'Montserrat', sans-serif;
  155.     font-size: 1.05rem;
  156.     font-weight: 700;
  157.     color: var(--n-dark);
  158.     margin: 0;
  159.     line-height: 1.3;
  160. }
  161. .n-field select {
  162.     width: 100%;
  163.     padding: 11px 14px;
  164.     border: 1.5px solid var(--n-border);
  165.     border-radius: 8px;
  166.     font-size: .95rem;
  167.     color: var(--n-dark);
  168.     background: var(--n-cream);
  169.     transition: border-color .2s;
  170.     font-family: 'DM Sans', sans-serif;
  171.     outline: none;
  172.     box-sizing: border-box;
  173. }
  174. .n-field select:focus { border-color: var(--n-amber); background: #fff; }
  175. .n-field input[type=file] {
  176.     padding: 9px 14px;
  177.     background: var(--n-cream);
  178. }
  179. .n-help {
  180.     font-size: .78rem;
  181.     color: var(--n-muted);
  182.     line-height: 1.5;
  183.     margin: 6px 0 0;
  184. }
  185. /* ── Our Offices ── */
  186. .n-offices-section {
  187.     background: var(--n-cream);
  188.     padding: 64px 0 92px;
  189.     border-top: 1px solid var(--n-border);
  190. }
  191. .n-offices-head {
  192.     text-align: center;
  193.     max-width: 580px;
  194.     margin: 0 auto 44px;
  195.     padding: 0 24px;
  196. }
  197. .n-offices-head .n-eyebrow {
  198.     display: inline-block;
  199.     font-size: .75rem;
  200.     font-weight: 700;
  201.     letter-spacing: .12em;
  202.     text-transform: uppercase;
  203.     color: var(--n-amber);
  204.     margin-bottom: 12px;
  205. }
  206. .n-offices-head h2 {
  207.     font-family: 'Montserrat', sans-serif;
  208.     font-size: clamp(1.5rem, 3vw, 2rem);
  209.     font-weight: 700;
  210.     color: var(--n-dark);
  211.     margin: 0 0 10px;
  212. }
  213. .n-offices-head p {
  214.     font-size: .95rem;
  215.     color: var(--n-muted);
  216.     line-height: 1.7;
  217.     margin: 0;
  218. }
  219. .n-offices-grid {
  220.     display: grid;
  221.     grid-template-columns: repeat(3, 1fr);
  222.     gap: 24px;
  223.     max-width: 980px;
  224.     margin: 0 auto;
  225.     padding: 0 24px;
  226. }
  227. @media(max-width:820px) { .n-offices-grid { grid-template-columns: 1fr; max-width: 460px; } }
  228. .n-office-card {
  229.     background: #fff;
  230.     border: 1px solid var(--n-border);
  231.     border-radius: 14px;
  232.     padding: 28px 26px;
  233.     transition: box-shadow .2s, transform .2s;
  234. }
  235. .n-office-card:hover {
  236.     box-shadow: 0 12px 30px rgba(26,29,46,.08);
  237.     transform: translateY(-2px);
  238. }
  239. .n-office-badge {
  240.     display: inline-block;
  241.     font-size: .7rem;
  242.     font-weight: 700;
  243.     letter-spacing: .08em;
  244.     text-transform: uppercase;
  245.     padding: 4px 12px;
  246.     border-radius: 999px;
  247.     margin-bottom: 16px;
  248. }
  249. .n-office-card h3 {
  250.     font-family: 'Montserrat', sans-serif;
  251.     font-size: 1.25rem;
  252.     font-weight: 700;
  253.     color: var(--n-dark);
  254.     margin: 0 0 14px;
  255. }
  256. .n-office-card address { font-style: normal; }
  257. .n-office-card address p {
  258.     font-size: .92rem;
  259.     color: var(--n-muted);
  260.     line-height: 1.75;
  261.     margin: 0;
  262. }
  263. .n-office-meta {
  264.     margin-top: 18px;
  265.     padding-top: 16px;
  266.     border-top: 1px solid var(--n-border);
  267. }
  268. .n-office-meta a,
  269. .n-office-meta span {
  270.     display: block;
  271.     font-size: .85rem;
  272.     color: var(--n-dark);
  273.     text-decoration: none;
  274.     line-height: 1.9;
  275. }
  276. .n-office-meta a:hover { color: var(--n-amber); }
  277. .n-office-icn { color: var(--n-amber); width: 16px; display: inline-block; text-align: center; margin-right: 4px; }
  278. </style>
  279. <!-- Page Hero -->
  280. <section class="n-page-hero">
  281.     <div class="n-wrap">
  282.         <span class="n-eyebrow">Get in Touch</span>
  283.         <h1>Find the right HoneyBee setup for your company.</h1>
  284.         <p>Tell us what you need, what kind of company you are, and a little about your current workflow or site requirement — we will respond with a recommended HoneyBee setup.</p>
  285.         <p style="max-width:520px;margin:10px auto 0;font-size:.9rem;color:var(--n-muted);line-height:1.7;">For more specific technical or project discussions, you can also book an online meeting with our team.</p>
  286.     </div>
  287. </section>
  288. <!-- Contact Form Section -->
  289. <section class="n-contact-section">
  290.     <div class="n-contact-inner">
  291.         <div class="n-contact-img">
  292.             <img src="{{ absolute_url(path('dashboard')) }}honeybee_web_assets/images/about/contact-robot.svg?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}" alt="Contact HoneyBee">
  293.         </div>
  294.         <div class="n-contact-form">
  295.             <h2>Get your HoneyBee recommendation</h2>
  296.             <p class="n-form-sub">Three quick steps. We typically respond within one business day, and for complex or project-related queries we may follow up with a call or meeting.</p>
  297.             <form id="newsletter-form" method="post" enctype="multipart/form-data">
  298.                 <!-- Step 1 -->
  299.                 <div class="n-step">
  300.                     <div class="n-step-head">
  301.                         <span class="n-step-num">1</span>
  302.                         <p class="n-step-title">What do you need?</p>
  303.                     </div>
  304.                     <div class="n-field">
  305.                         <label for="enquiry_need">Select what you are looking for</label>
  306.                         <select id="enquiry_need" name="enquiry_need" onchange="document.getElementById('subject').value=this.value">
  307.                             <option value="" disabled selected>Choose an option…</option>
  308.                             <option value="Project-Based ERP">Project-Based ERP</option>
  309.                             <option value="General Business ERP">General Business ERP</option>
  310.                             <option value="HoneyCore Edge+ Design and Quotation">HoneyCore Edge+ Design and Quotation</option>
  311.                             <option value="HoneyCore Edge EMS Site Intelligence">HoneyCore Edge EMS Site Intelligence</option>
  312.                             <option value="Customization">Customization</option>
  313.                             <option value="Partner Application">Partner Application</option>
  314.                             <option value="Enterprise / Private Cloud">Enterprise / Private Cloud</option>
  315.                             <option value="Research / innovation partnership">Research / innovation partnership</option>
  316.                             <option value="Not sure yet">Not sure yet</option>
  317.                         </select>
  318.                     </div>
  319.                 </div>
  320.                 <!-- Step 2 -->
  321.                 <div class="n-step">
  322.                     <div class="n-step-head">
  323.                         <span class="n-step-num">2</span>
  324.                         <p class="n-step-title">What type of company are you?</p>
  325.                     </div>
  326.                     <div class="n-field">
  327.                         <label for="company_type">Select your company type</label>
  328.                         <select id="company_type" name="company_type">
  329.                             <option value="" disabled selected>Choose an option…</option>
  330.                             <option value="EPC">EPC</option>
  331.                             <option value="Engineering / construction">Engineering / construction</option>
  332.                             <option value="Solar / renewable energy">Solar / renewable energy</option>
  333.                             <option value="IoT / industrial automation / HoneyCore Edge+ system integrator">IoT / industrial automation / HoneyCore Edge+ system integrator</option>
  334.                             <option value="System integrator">System integrator</option>
  335.                             <option value="Trading / distribution">Trading / distribution</option>
  336.                             <option value="Service company">Service company</option>
  337.                             <option value="Factory / industrial operator">Factory / industrial operator</option>
  338.                             <option value="IPP / OPEX / PPA">IPP / OPEX / PPA</option>
  339.                             <option value="General SME">General SME</option>
  340.                             <option value="University / research organization">University / research organization</option>
  341.                             <option value="Investor / bank / grant stakeholder">Investor / bank / grant stakeholder</option>
  342.                             <option value="Other">Other</option>
  343.                         </select>
  344.                     </div>
  345.                 </div>
  346.                 <!-- Step 3 -->
  347.                 <div class="n-step">
  348.                     <div class="n-step-head">
  349.                         <span class="n-step-num">3</span>
  350.                         <p class="n-step-title">Describe or upload your current workflow or site requirement</p>
  351.                     </div>
  352.                     <div class="n-field">
  353.                         <label for="message">Describe your workflow or requirement</label>
  354.                         <textarea id="message" name="message" placeholder="Tell us about your current workflow, project, or site requirement…" required></textarea>
  355.                     </div>
  356.                     <div class="n-field">
  357.                         <label for="workflow_file">Upload a document <span style="font-weight:400;color:var(--n-muted)">(optional)</span></label>
  358.                         <input type="file" id="workflow_file" name="workflow_file">
  359.                         <p class="n-help">You can upload a quotation, cost sheet, workflow doc, project sheet, SLD, technical doc, ERP export, HoneyCore Edge+ requirement list, meter / sensor list, data point list, site layout, or research brief.</p>
  360.                     </div>
  361.                     <!-- Contact details -->
  362.                     <div class="n-field">
  363.                         <label for="name">Full Name</label>
  364.                         <input type="text" id="name" name="name" placeholder="Your full name" required>
  365.                     </div>
  366.                     <div class="n-field">
  367.                         <label for="email">Email Address</label>
  368.                         <input type="email" id="email" name="email" placeholder="your@company.com" required>
  369.                     </div>
  370.                     <div class="n-field">
  371.                         <label for="phone">Phone <span style="font-weight:400;color:var(--n-muted)">(optional)</span></label>
  372.                         <input type="text" id="phone" name="phone" placeholder="Optional — include country code">
  373.                     </div>
  374.                     <!-- Preserved subject field (mirrors Step 1 selection for the existing submission contract) -->
  375.                     <input type="hidden" id="subject" name="subject" value="HoneyBee Recommendation Request">
  376.                 </div>
  377.                 <button type="submit" class="n-submit-btn">
  378.                     <i class="fa fa-paper-plane"></i> Get My HoneyBee Recommendation
  379.                 </button>
  380.             </form>
  381.             <div style="margin-top:32px;padding-top:24px;border-top:1.5px solid var(--n-border)">
  382.                 <p style="font-size:.9rem;font-weight:700;color:var(--n-dark);margin-bottom:6px;">Need to speak directly?</p>
  383.                 <p style="font-size:.85rem;color:var(--n-muted);line-height:1.65;margin-bottom:14px;">You can also book an online meeting for detailed discussions on your project, HoneyCore Edge+ deployment, IoT integration, or enterprise rollout.</p>
  384.                 <a href="{{ url('book_demo_page') }}" style="display:inline-flex;align-items:center;gap:8px;padding:10px 22px;border-radius:8px;border:1.5px solid var(--n-border);background:var(--n-cream);font-size:.85rem;font-weight:600;color:var(--n-dark);text-decoration:none;transition:border-color .2s;" onmouseover="this.style.borderColor='var(--n-amber)'" onmouseout="this.style.borderColor='var(--n-border)'">
  385.                     <i class="fa fa-calendar"></i> Book Online Meeting
  386.                 </a>
  387.             </div>
  388.             <div style="margin-top:28px;padding:20px 22px;background:var(--n-cream);border-radius:10px;border:1px solid var(--n-border)">
  389.                 <p style="font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--n-muted);margin-bottom:10px;">What happens after you submit?</p>
  390.                 <p style="font-size:.85rem;color:var(--n-muted);line-height:1.6;margin-bottom:8px;">We review your message and respond by email. Depending on your request, we may:</p>
  391.                 <ul style="font-size:.85rem;color:var(--n-muted);line-height:1.8;padding-left:18px;margin:0;">
  392.                     <li>Answer directly</li>
  393.                     <li>Suggest a product demo</li>
  394.                     <li>Propose a technical discussion</li>
  395.                     <li>Recommend a HoneyCore Edge+ or deployment approach</li>
  396.                     <li>Share a quotation or next steps</li>
  397.                 </ul>
  398.             </div>
  399.         </div>
  400.     </div>
  401. </section>
  402. <!-- Our Offices -->
  403. <section class="n-offices-section">
  404.     <div class="n-offices-head">
  405.         <span class="n-eyebrow">Our Offices</span>
  406.         <h2>Where to find us</h2>
  407.         <p>Reach us at any of our offices, or use the form above — we will route your request to the right team.</p>
  408.     </div>
  409.     <div class="n-offices-grid">
  410.         <div class="n-office-card">
  411.             <span class="n-office-badge" style="background:rgba(192,125,42,.12);color:var(--n-amber)">Head Office</span>
  412.             <h3>Singapore</h3>
  413.             <address>
  414.                 <p>HoneyBee IoT (Pte.) Ltd.<br>
  415.                 2 Venture Drive, #19-21<br>
  416.                 Vision Exchange<br>
  417.                 Singapore 608526</p>
  418.             </address>
  419.             <div class="n-office-meta">
  420.                 <span><i class="fa fa-building-o n-office-icn"></i> UEN 202507612D</span>
  421.                 <a href="mailto:info@ourhoneybee.eu"><i class="fa fa-envelope-o n-office-icn"></i> info@ourhoneybee.eu</a>
  422.             </div>
  423.         </div>
  424.         <div class="n-office-card">
  425.             <span class="n-office-badge" style="background:rgba(61,107,82,.12);color:var(--n-sage)">Germany Office</span>
  426.             <h3>Germany &middot; Europe</h3>
  427.             <address>
  428.                 <p>Brühlweg 1<br>
  429.                 88451 Dettingen an der Iller<br>
  430.                 Germany</p>
  431.             </address>
  432.             <div class="n-office-meta">
  433.                 <a href="tel:+4917634616155"><i class="fa fa-phone n-office-icn"></i> +49 176 34616155</a>
  434.                 <a href="mailto:info@ourhoneybee.eu"><i class="fa fa-envelope-o n-office-icn"></i> info@ourhoneybee.eu</a>
  435.             </div>
  436.         </div>
  437.         <div class="n-office-card">
  438.             <span class="n-office-badge" style="background:rgba(61,79,114,.12);color:var(--n-slate)">R&amp;D Office</span>
  439.             <h3>Bangladesh</h3>
  440.             <address>
  441.                 <p>HoneyBee IoT Ltd.<br>
  442.                 Flat #4B, House 09, Road 4<br>
  443.                 Dhaka 1230, Bangladesh</p>
  444.             </address>
  445.             <div class="n-office-meta">
  446.                 <a href="tel:+8801325081052"><i class="fa fa-phone n-office-icn"></i> +880 1325-081052</a>
  447.                 <span style="color:var(--n-muted)"><i class="fa fa-flask n-office-icn"></i> Engineering &amp; Research</span>
  448.             </div>
  449.         </div>
  450.     </div>
  451. </section>
  452. <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
  453. <script>
  454.     $(document).ready(function () {
  455.         $('#newsletter-form').on('submit', function (e) {
  456.             e.preventDefault();
  457.             $.ajax({
  458.                 url: "{{ path('honeybee_contact') }}",
  459.                 type: "POST",
  460.                 data: new FormData(this),
  461.                 processData: false,
  462.                 contentType: false,
  463.                 success: function (response) {
  464.                     if (response.success) {
  465.                         Swal.fire({
  466.                             icon: 'success',
  467.                             title: 'Thanks for Reaching Out!',
  468.                             text: response.message,
  469.                             timer: 2000,
  470.                             showConfirmButton: false
  471.                         });
  472.                         $('#newsletter-form')[0].reset();
  473.                     } else {
  474.                         Swal.fire('Error', response.message, 'error');
  475.                     }
  476.                 },
  477.                 error: function () {
  478.                     Swal.fire('Oops!', 'Something went wrong. Please try again.', 'error');
  479.                 }
  480.             });
  481.         });
  482.     });
  483. </script>
  484. {% include '@HoneybeeWeb/footer/central_footer.html.twig' %}