Plugin Directory

Changeset 3333158


Ignore:
Timestamp:
07/23/2025 08:31:25 PM (7 months ago)
Author:
havenlytics
Message:

Version 1.0.7 - Fixed responsive issues, organized modal files, added ABSPATH checks, and improved shortcode features.

Location:
havenlytics
Files:
102 added
15 edited

Legend:

Unmodified
Added
Removed
  • havenlytics/trunk/havenlytics.php

    r3332499 r3333158  
    11<?php
    22/*
    3 Plugin Name: Havenlytics – Real Estate & Property Listings
     3Plugin Name: Havenlytics – WP Real Estate & Property Listings Directory
    44Plugin URI: https://wordpress.org/plugins/havenlytics/
    55Description: A property listing plugin for WordPress that allows users to easily manage and display property listings.
    6 Version: 1.0.6
     6Version: 1.0.7
    77Author: Havenlytics
    88Author URI: https://havenlytics.com
     
    3030
    3131// Define constants
    32 define('HVNLY_PROPERTY_VERSION', '1.0.6');
     32define('HVNLY_PROPERTY_VERSION', '1.0.7');
    3333define('HVNLY_PROPERTY_URL', plugin_dir_url(__FILE__));
    3434define('HVNLY_PROPERTY_PATH', plugin_dir_path(__FILE__));
  • havenlytics/trunk/public/assets/css/havenlytics-property-featured-carousel.css

    r3332499 r3333158  
    223223.havenlytics_featured_items-widget .havenlytics_price {
    224224    font-size: var(--havenlytics-priceSize);
    225     font-weight: var(--havenlytics-fontWeight-bold);
     225    font-weight: var(--havenlytics-fontWeight-semibold);
    226226    color: var(--havenlytics-priceColor);
    227227    margin-bottom: 5px;
  • havenlytics/trunk/public/assets/css/havenlytics-property-grid.css

    r3324509 r3333158  
    341341    }
    342342}
    343 
     343@media (max-width: 767px) {
     344.havenlytics-property--content {
     345    padding: 15px;
     346}
     347.havenlytics-btn-primary {
     348    padding: 12px 20px;
     349
     350}
     351
     352}
    344353@media (max-width: 576px) {
    345354    .havenlytics-property-gallery {
  • havenlytics/trunk/public/assets/css/havenlytics-property-list.css

    r3324509 r3333158  
    542542}
    543543
     544@media (max-width: 767px) {
     545.havenlytics-property-content {
     546    padding: 15px;
     547}
     548
     549.havenlytics-detail-item {
     550    display: flex;
     551    flex-direction: row;
     552    align-items: center;
     553    padding: 15px;
     554    background: rgba(108, 96, 254, 0.05);
     555    border-radius: 15px;
     556    transition: all 0.3s;
     557    justify-content: space-evenly;
     558}
     559.havenlytics-detail-icon {
     560
     561    margin-bottom: 0;
     562 
     563}
     564}
     565
    544566@media (max-width: 576px) {
    545567    .havenlytics-property-title-container {
     
    551573
    552574.havenlytics-property-content {
    553     padding: 25px;
     575    padding: 15px;
    554576}
    555577
  • havenlytics/trunk/public/assets/css/havenlytics-property-popups.css

    r3325794 r3333158  
    182182/* Form Styles */
    183183.havenlytics_popup_form {
    184     display: grid;
    185     grid-template-columns: 1fr 1fr;
    186     gap: 20px;
     184    display: block;
    187185    margin-top: 30px;
    188 }
     186    max-width: 550px;
     187    margin: 0px auto;
     188}
     189#havenlytics_popup_enquiry .havenlytics_popup_content p.havenlytics_popup_sub_title,
     190#havenlytics_popup_agent .havenlytics_popup_content p.havenlytics_popup_sub_title,
     191#havenlytics_popup_viewing .havenlytics_popup_content p.havenlytics_popup_sub_title{text-align: center;}
     192
     193#havenlytics_popup_enquiry .havenlytics_popup_content .havenlytics_popup_form p br,
     194#havenlytics_popup_agent .havenlytics_popup_content .havenlytics_popup_form p br,
     195#havenlytics_popup_viewing .havenlytics_popup_content .havenlytics_popup_form p br{display: none;}
    189196
    190197.havenlytics_popup_form_group {
     
    509516/* ========== Form Layout ========== */
    510517.havenlytics_popup_form form {
    511   display: flex;
     518  /* display: flex;
    512519  flex-direction: column;
    513   gap: 1.5rem; /* Spacing between each field group */
     520  gap: 1.5rem; */
    514521}
    515522
     
    534541.havenlytics_popup_form select {
    535542  width: 100%;
    536   padding: 0.75rem 1rem;
     543  padding: 1.5rem 1rem !important;
    537544  font-size: 1rem;
    538545  font-family: var(--havenlytics-bodyFont);
     
    550557.havenlytics_popup_form select:focus {
    551558  outline: none;
    552   border-color: var(--havenlytics-primary); /* <- Primary color for focus */
     559  border-color: var(--havenlytics-secondary) !important; /* <- Primary color for focus */
    553560  box-shadow: 0 0 0 3px rgba(108, 96, 254, 0.1);
    554561}
     
    556563/* ========== Textarea Styling ========== */
    557564.havenlytics_popup_form textarea {
    558   min-height: 140px;
     565  height: 100px;
    559566  resize: vertical;
    560567}
     
    572579  border-radius: var(--havenlytics-btnRadius);
    573580  cursor: pointer;
    574   transition: background-color var(--havenlytics-transitionTime);
     581  transition: background-color var(--havenlytics-transitionTime);    padding: 15px 35px;
    575582}
    576583
     
    589596.havenlytics_popup_form input:valid,
    590597.havenlytics_popup_form textarea:valid {
    591   border-color: var(--havenlytics-success);
     598  border-color: var(--havenlytics-primary)
    592599}
    593600
  • havenlytics/trunk/public/assets/css/havenlytics-root-style.css

    r3324509 r3333158  
    7171  --havenlytics-metaSize: 0.875rem;     /* Meta info */
    7272  --havenlytics-excerptSize: 0.95rem;   /* Description */
    73   --havenlytics-labelSize: 0.8rem;      /* Form labels */
     73  --havenlytics-labelSize: 0.9rem;      /* Form labels */
    7474
    7575  /* ======================
     
    991991}
    992992
    993 
     993@media (max-width: 767px) {
     994    .havenlytics-btn-primary {
     995        padding: 12px 20px;
     996    }
     997}
    994998
    995999
     
    12511255}
    12521256
    1253 .havenlytics_gallery_fancybox_property_button::before {
     1257/* .havenlytics_gallery_fancybox_property_button::before {
    12541258    content: '';
    12551259    position: absolute;
     
    12611265    transition: width 0.5s ease;
    12621266    z-index: -1;
    1263 }
    1264 
    1265 
    1266 .havenlytics_gallery_fancybox_property_button:hover {
     1267} */
     1268a.havenlytics_gallery_fancybox_property_button:hover{
     1269  color: var(--havenlytics-bg-white);
     1270}
     1271
     1272/* .havenlytics_gallery_fancybox_property_button:hover {
    12671273    transform: translateY(-3px);
    12681274    box-shadow: 0 8px 25px rgba(255, 126, 95, 0.6);
    1269 }
    1270 
    1271 .havenlytics_gallery_fancybox_property_button:hover::before {
     1275} */
     1276
     1277/* .havenlytics_gallery_fancybox_property_button:hover::before {
    12721278    width: 100%;
    1273 }
     1279} */
    12741280
    12751281.havenlytics_gallery_fancybox_property_button i {
  • havenlytics/trunk/public/assets/js/havenlytics-frontend-scripts.js

    r3332499 r3333158  
    594594                nav: false,
    595595                dots: false,
    596                 autoplay: false,
    597                 autoplayTimeout: 5000,
     596                autoplay: true,
     597                autoplayTimeout: 10000,
    598598                autoplayHoverPause: true,
    599599                items: 1,
  • havenlytics/trunk/public/class-frontend.php

    r3322295 r3333158  
    9898
    9999    // Featured filter
    100     if (!empty($atts['featured']) && $atts['featured'] === 'yes') {
    101       $meta_query[] = [
    102         'key' => '_havenlytics_featured',
    103         'value' => '1',
    104         'compare' => '='
    105       ];
     100    if (isset($atts['featured'])) {
     101      if ($atts['featured'] === 'yes') {
     102        $meta_query[] = [
     103          'key' => '_havenlytics_property_featured_item',
     104          'value' => '1',
     105          'compare' => '='
     106        ];
     107      } elseif ($atts['featured'] === 'no') {
     108        $meta_query[] = [
     109          'key' => '_havenlytics_property_featured_item',
     110          'value' => '1',
     111          'compare' => '!='
     112        ];
     113      }
    106114    }
    107115
     
    199207    $property_id = get_the_ID();
    200208    $meta_fields = $this->get_property_meta_fields($property_id);
     209    $short_description = get_post_meta($property_id, '_havenlytics_short_description', true);
     210    $short_info = wp_trim_words($short_description, 18, '...');
     211
    201212
    202213    // Try to load view-specific template first
     
    224235  private function render_grid_card($meta_fields)
    225236  {
     237    $property_id = get_the_ID();
     238    $meta_fields = $this->get_property_meta_fields($property_id);
    226239?>
    227 <div class="heavenlytics-col">
    228     <div class="heavenlytics-property-card">
    229         <div class="heavenlytics-property-card-image">
    230             <?php if ($meta_fields['featured_image']) : ?>
    231             <img src="<?php echo esc_url($meta_fields['featured_image']); ?>" alt="<?php the_title_attribute(); ?>">
     240
     241    <!-- Property grid -->
     242    <div class="col-lg-4 col-md-6">
     243      <div class="havenlytics-property-card-grid">
     244        <div class="havenlytics-property-grid-item">
     245          <div class="havenlytics-property-gallery">
     246
     247            <?php
     248            // Prepare gallery data
     249            $gallery       = get_post_meta($property_id, '_havenlytics_gallery', true);
     250            $gallery_images = ! empty($gallery) ? explode(',', $gallery) : array();
     251
     252            // Show only the featured or default image if 4 or fewer gallery images exist.
     253            if (count($gallery_images) <= 3) :
     254
     255              $featured_image = isset($meta_fields['featured_image']) ? esc_url($meta_fields['featured_image']) : '';
     256              $default_image  = isset($meta_fields['default_image']) ? esc_url($meta_fields['default_image']) : '';
     257
     258            ?>
     259              <a href="<?php echo esc_url(get_the_permalink()); ?>" class="havenlytics-property-img">
     260                <img src="<?php echo esc_url($featured_image ? $featured_image : $default_image); ?>"
     261                  class="img-fluid" alt="<?php echo esc_attr(get_the_title()); ?>">
     262              </a>
     263
     264
    232265            <?php else : ?>
    233             <img src="<?php echo esc_url($meta_fields['default_image']); ?>" alt="<?php the_title_attribute(); ?>">
     266
     267              <div class="havenlytics-carousel-gallery"
     268                id="havenlytics-carousel-gallery-<?php echo esc_attr($property_id); ?>">
     269                <div class="havenlytics-carousel-track">
     270                  <?php
     271                  foreach ($gallery_images as $image_id) :
     272                    $image_url = wp_get_attachment_image_url($image_id, 'large');
     273                  ?>
     274                    <div class="havenlytics-carousel-slide"
     275                      style="background-image: url('<?php echo esc_url($image_url); ?>');">
     276                    </div>
     277                  <?php endforeach; ?>
     278                </div>
     279
     280                <div class="havenlytics-carousel-nav">
     281                  <button class="havenlytics-carousel-nav-btn havenlytics-carousel-prev-btn">
     282                    <i class="fas fa-chevron-left"></i>
     283                  </button>
     284                  <button class="havenlytics-carousel-nav-btn havenlytics-carousel-next-btn">
     285                    <i class="fas fa-chevron-right"></i>
     286                  </button>
     287                </div>
     288
     289                <div class="havenlytics-carousel-indicators">
     290                  <?php foreach ($gallery_images as $index => $image_id) : ?>
     291                    <div
     292                      class="havenlytics-carousel-indicator <?php echo (0 === $index) ? 'havenlytics-carousel-active' : ''; ?>">
     293                    </div>
     294                  <?php endforeach; ?>
     295                </div>
     296              </div>
     297
    234298            <?php endif; ?>
    235299
     300
     301
     302            <?php if ($meta_fields['price']) : ?>
     303              <?php
     304              // Get the currency symbol
     305              $currency_sign = $this->get_currency_symbol($property_id);
     306              ?>
     307              <div class="havenlytics-property-amount">
     308                <h5><span><?php echo esc_html($currency_sign); ?> <?php echo esc_html($meta_fields['price']); ?>
     309                  </span></h5>
     310              </div>
     311            <?php endif; ?>
     312
     313
    236314            <?php if ($meta_fields['status_badge']) : ?>
    237             <span class="heavenlytics-property-badge"><?php echo esc_html($meta_fields['status_badge']); ?></span>
     315              <div class="havenlytics-property-featured">
     316                <span><?php echo esc_html($meta_fields['status_badge']); ?></span>
     317              </div>
    238318            <?php endif; ?>
     319            <!-- <div class="new-featured">
     320                    <span>New</span>
     321                </div> -->
     322            <!-- <a href="javascript:void(0)">
     323                    <div class="havenlytics-property-favourite havenlytics-property-selected">
     324                        <i class="fa-regular fa-heart"></i>
     325                    </div>
     326                </a> -->
     327          </div>
     328          <div class="havenlytics-property--content">
     329            <?php $this->render_star_feedback($property_id, '_havenlytics_rating_star'); ?>
     330
     331            <h3 class="havenlytics-property-title">
     332              <a href="<?php echo esc_url(get_the_permalink()); ?>">
     333                <?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?>
     334              </a>
     335            </h3>
     336
     337
     338
     339            <?php if ($meta_fields['city']) : ?>
     340              <p class="havenlytics-property-location">
     341                <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24" fill="#6C60FE">
     342                  <path
     343                    d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
     344                </svg>
     345                <?php echo esc_html($meta_fields['city']); ?>
     346              </p>
     347            <?php endif; ?>
     348            <?php if (! empty($meta_fields['bedrooms']) || ! empty($meta_fields['bathrooms']) || ! empty($meta_fields['sqft'])) : ?>
     349              <ul class="d-flex havenlytics-property-short-details">
     350                <li>
     351
     352                  <?php $this->render_meta_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'beds'); ?>
     353                </li>
     354                <li>
     355
     356                  <?php $this->render_meta_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'baths'); ?>
     357                </li>
     358                <li>
     359
     360                  <?php $this->render_meta_item($meta_fields['sqft'], __('sqft', 'havenlytics'), 'sqft'); ?>
     361                </li>
     362              </ul>
     363            <?php endif; ?>
     364
     365            <ul class="havenlytics-property-category d-flex justify-content-between align-items-center">
     366              <!-- <li class="havenlytics-property-user-info">
     367                        <?php
     368                        // $author_id     = get_post_field('post_author', get_the_ID());
     369                        // $avatar_url    = get_avatar_url($author_id, ['size' => 96]);
     370                        // $author_name   = get_the_author_meta('display_name', $author_id);
     371                        // $author_url    = get_author_posts_url($author_id);
     372                        // $user_location = get_user_meta($author_id, 'location', true); // Optional custom meta
     373                        // $user_location = $user_location ? $user_location : esc_html__('Agent', 'havenlytics');
     374                        ?>
     375
     376                        <a href="<?php // echo esc_url($author_url);
     377                                  ?>">
     378                            <img src="<?php // echo esc_url($avatar_url);
     379                                      ?>" class="img-fluid avatar"
     380                                alt="<?php // echo esc_attr($author_name);
     381                                      ?>">
     382                        </a>
     383                        <div class="havenlytics-property-user-name">
     384                            <a href="<?php //echo esc_url($author_url);
     385                                      ?>"><?php //echo esc_html($author_name);
     386                                          ?></a>
     387                            <p><?php //echo esc_html($user_location);
     388                                ?></p>
     389                        </div>
     390
     391                    </li> -->
     392              <li>
     393                <a href="<?php the_permalink(); ?>" class="havenlytics-btn-primary havenlytics-btn-style-2">
     394                  <?php esc_html_e('View Property', 'havenlytics'); ?>
     395                </a>
     396              </li>
     397            </ul>
     398          </div>
    239399        </div>
    240 
    241         <div class="heavenlytics-property-card-content">
     400      </div>
     401    </div>
     402    <!-- /Property grid -->
     403  <?php
     404  }
     405
     406  private function render_list_card($meta_fields)
     407  {
     408    $property_id = get_the_ID();
     409    $meta_fields = $this->get_property_meta_fields($property_id);
     410    $short_description = get_post_meta($property_id, '_havenlytics_short_description', true);
     411    $short_info = wp_trim_words($short_description, 18, '...');
     412  ?>
     413    <!-- Property card list-->
     414    <div class="col-lg-12 col-md-6">
     415
     416      <div class="havenlytics-property-card">
     417        <?php
     418        $gallery = get_post_meta($property_id, '_havenlytics_gallery', true);
     419        $gallery_images = !empty($gallery) ? explode(',', $gallery) : array();
     420        ?>
     421
     422        <?php if (!empty($gallery_images)) : ?>
     423          <div class="havenlytics-property-list-gallery">
     424            <div class="havenlytics-gallery-container">
     425              <div class="havenlytics-gallery-main"
     426                style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($gallery_images[0], 'large')); ?>')">
     427              </div>
     428            </div>
     429            <div class="havenlytics-thumb-nav havenlytics-thumb-prev">
     430              <i class="fas fa-chevron-left"></i>
     431            </div>
     432            <div class="havenlytics-thumb-nav havenlytics-thumb-next">
     433              <i class="fas fa-chevron-right"></i>
     434            </div>
     435            <div class="havenlytics-gallery-thumbnails">
     436              <?php foreach ($gallery_images as $index => $image_id) :
     437                $thumb_url = wp_get_attachment_image_url($image_id, 'large');
     438                $is_active = ($index === 0) ? 'active' : '';
     439              ?>
     440                <div class="havenlytics-gallery-thumb <?php echo esc_attr($is_active); ?>"
     441                  data-highres="<?php echo esc_url($thumb_url); ?>"
     442                  style="background-image: url('<?php echo esc_url($thumb_url); ?>')">
     443                </div>
     444              <?php endforeach; ?>
     445            </div>
     446            <?php if ($meta_fields['status_badge']) : ?>
     447              <div class="havenlytics-property-featured">
     448                <span><?php echo esc_html($meta_fields['status_badge']); ?></span>
     449              </div>
     450            <?php endif; ?>
     451
     452            <!-- <button class="havenlytics-favorite-btn active">
     453                <i class="fas fa-heart"></i>
     454            </button> -->
     455          </div>
     456        <?php endif; ?>
     457
     458        <div class="havenlytics-property-content">
     459          <div class="havenlytics-property-header">
     460            <div class="havenlytics-property-title-container">
     461              <h3 class="havenlytics-property-title">
     462                <a href="<?php echo esc_url(get_the_permalink()); ?>">
     463                  <?php echo esc_html(wp_trim_words(get_the_title(), 5, '...')); ?>
     464                </a>
     465              </h3>
     466              <?php if ($meta_fields['city']) : ?>
     467                <p class="havenlytics-property-location">
     468                  <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24" fill="#6C60FE">
     469                    <path
     470                      d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
     471                  </svg>
     472                  <?php echo esc_html($meta_fields['city']); ?>
     473                </p>
     474              <?php endif; ?>
     475
     476            </div>
     477
     478
     479
    242480            <?php if ($meta_fields['price']) : ?>
    243             <div class="heavenlytics-property-price"><span>$ </span><?php echo esc_html($meta_fields['price']); ?></div>
     481              <?php
     482              // Get the currency symbol
     483              $currency_sign = $this->get_currency_symbol($property_id);
     484              ?>
     485              <div class="havenlytics-property-price"><?php echo esc_html($currency_sign); ?>
     486                <?php echo esc_html($meta_fields['price']); ?></div>
     487
    244488            <?php endif; ?>
    245489
    246             <h3 class="heavenlytics-property-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    247 
    248             <?php if ($meta_fields['type_label']) : ?>
    249             <div class="heavenlytics-property-type"><?php echo esc_html($meta_fields['type_label']); ?></div>
    250             <?php endif; ?>
    251 
    252             <div class="heavenlytics-property-meta">
    253                 <?php $this->render_meta_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'beds'); ?>
    254                 <?php $this->render_meta_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'baths'); ?>
    255                 <?php $this->render_meta_item($meta_fields['sqft'], __('sqft', 'havenlytics'), 'sqft'); ?>
     490          </div>
     491
     492          <?php $this->render_star_feedback($property_id, '_havenlytics_rating_star'); ?>
     493
     494          <?php if ($short_info) : ?>
     495            <p class="havenlytics-property-description">
     496              <?php echo esc_html($short_info); ?>
     497
     498            </p>
     499          <?php endif; ?>
     500          <?php
     501          $meta_fields = [
     502            'bedrooms'    => get_post_meta($property_id, '_havenlytics_bedrooms', true),
     503            'bathrooms'   => get_post_meta($property_id, '_havenlytics_bathrooms', true),
     504            'sqft'        => get_post_meta($property_id, '_havenlytics_sqft', true),
     505            'garage'      => get_post_meta($property_id, '_havenlytics_garage', true),
     506            'year_built'  => get_post_meta($property_id, '_havenlytics_year_built', true),
     507          ];
     508
     509          // Only show section if any meta is not empty
     510          if (
     511            !empty($meta_fields['bedrooms']) ||
     512            !empty($meta_fields['bathrooms']) ||
     513            !empty($meta_fields['sqft']) ||
     514            !empty($meta_fields['garage']) ||
     515            !empty($meta_fields['year_built'])
     516          ) :
     517          ?>
     518            <div class="havenlytics-property-details">
     519              <?php $this->render_meta_list_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'fas fa-bed'); ?>
     520              <?php $this->render_meta_list_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'fas fa-bath'); ?>
     521              <?php $this->render_meta_list_item($meta_fields['sqft'], __('Sqft', 'havenlytics'), 'fas fa-ruler-combined'); ?>
     522              <?php $this->render_meta_list_item($meta_fields['garage'], __('Garage', 'havenlytics'), 'fas fa-car'); ?>
     523              <?php $this->render_meta_list_item($meta_fields['year_built'], __('Built', 'havenlytics'), 'fas fa-calendar-alt'); ?>
    256524            </div>
    257 
    258             <div class="heavenlytics-property-excerpt">
    259                 <?php echo esc_html(wp_trim_words(get_the_excerpt(), 20)); ?>
    260 
    261             </div>
    262 
    263             <div class="heavenlytics-property-footer">
    264                 <?php if ($meta_fields['city']) : ?>
    265                 <div class="heavenlytics-property-location">
    266                     <svg viewBox="0 0 24 24">
    267                         <path
    268                             d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
    269                     </svg>
    270                     <?php echo esc_html($meta_fields['city']); ?>
    271                 </div>
    272                 <?php endif; ?>
    273 
    274                 <a href="<?php the_permalink(); ?>" class="heavenlytics-property-link">
    275                     <?php esc_html_e('View Details', 'havenlytics'); ?>
    276                 </a>
    277             </div>
     525          <?php endif; ?>
     526          <div class="havenlytics-property-footer">
     527            <?php
     528            // // Get the post author ID
     529            // $author_id = get_post_field('post_author', get_the_ID());
     530
     531            // // Get avatar URL safely
     532            // $avatar_url = get_avatar_url($author_id, ['size' => 200]);
     533
     534            // // Get author name and fallback
     535            // $author_name = get_the_author_meta('display_name', $author_id);
     536            // $author_name = $author_name ? $author_name : esc_html__('Agent', 'havenlytics');
     537
     538            // // Get custom title (optional), fallback if empty
     539            // $author_title = get_user_meta($author_id, 'agent_title', true);
     540            // $author_title = $author_title ? $author_title : esc_html__('Licensed Real Estate Agent', 'havenlytics');
     541            ?>
     542
     543            <!-- <div class="havenlytics-agent-info">
     544                    <img src="<?php //echo esc_url($avatar_url);
     545                              ?>" class="havenlytics-agent-avatar"
     546                        alt="<?php //echo esc_attr($author_name);
     547                              ?>">
     548                    <div class="havenlytics-agent-details">
     549                        <div class="havenlytics-agent-name"><?php //echo esc_html($author_name);
     550                                                            ?></div>
     551                        <div class="havenlytics-agent-title"><?php //echo esc_html($author_title);
     552                                                              ?></div>
     553                    </div>
     554                </div> -->
     555
     556            <a href="<?php the_permalink(); ?>" class="havenlytics-btn-primary havenlytics-btn-style-1">
     557              <?php esc_html_e('View Property', 'havenlytics'); ?>
     558            </a>
     559          </div>
    278560        </div>
     561      </div>
     562
    279563    </div>
    280 </div>
    281 <?php
    282   }
    283 
    284   private function render_list_card($meta_fields)
    285   {
    286   ?>
    287 <div class="heavenlytics-list-item">
    288     <div class="heavenlytics-property-card">
    289         <div class="heavenlytics-property-card-image">
    290             <?php if ($meta_fields['featured_image']) : ?>
    291             <img src="<?php echo esc_url($meta_fields['featured_image']); ?>" alt="<?php the_title_attribute(); ?>">
    292             <?php else : ?>
    293             <img src="<?php echo esc_url($meta_fields['default_image']); ?>" alt="<?php the_title_attribute(); ?>">
    294             <?php endif; ?>
    295 
    296             <?php if ($meta_fields['status_badge']) : ?>
    297             <span class="heavenlytics-property-badge"><?php echo esc_html($meta_fields['status_badge']); ?></span>
    298             <?php endif; ?>
    299         </div>
    300 
    301         <div class="heavenlytics-property-card-content">
    302             <div class="heavenlytics-property-header">
    303                 <h3 class="heavenlytics-property-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    304                 </h3>
    305                 <?php if ($meta_fields['price']) : ?>
    306                 <div class="heavenlytics-property-price"><span>$ </span><?php echo esc_html($meta_fields['price']); ?>
    307                 </div>
    308                 <?php endif; ?>
    309             </div>
    310 
    311             <?php if ($meta_fields['type_label']) : ?>
    312             <div class="heavenlytics-property-type"><?php echo esc_html($meta_fields['type_label']); ?></div>
    313             <?php endif; ?>
    314 
    315             <div class="heavenlytics-property-meta">
    316                 <?php $this->render_meta_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'beds'); ?>
    317                 <?php $this->render_meta_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'baths'); ?>
    318                 <?php $this->render_meta_item($meta_fields['sqft'], __('sqft', 'havenlytics'), 'sqft'); ?>
    319             </div>
    320 
    321             <div class="heavenlytics-property-excerpt">
    322                 <?php echo esc_html(wp_trim_words(get_the_excerpt(), 30)); ?>
    323             </div>
    324 
    325             <div class="heavenlytics-property-footer">
    326                 <?php if ($meta_fields['city']) : ?>
    327                 <div class="heavenlytics-property-location">
    328                     <svg viewBox="0 0 24 24">
    329                         <path
    330                             d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
    331                     </svg>
    332                     <?php echo esc_html($meta_fields['city']); ?>
    333                 </div>
    334                 <?php endif; ?>
    335 
    336                 <a href="<?php the_permalink(); ?>" class="heavenlytics-property-link">
    337                     <?php esc_html_e('View Details', 'havenlytics'); ?>
    338                 </a>
    339             </div>
    340         </div>
    341     </div>
    342 </div>
    343 <?php
     564    <!-- /Property card list -->
     565  <?php
    344566  }
    345567
     
    475697
    476698  ?>
    477 <div class="heavenlytics-property-meta-item">
    478     <?php echo wp_kses($icons[$icon_type], $allowed_svg_tags); ?>
    479     <?php echo esc_html($value); ?> <?php echo esc_html($label); ?>
    480 </div>
    481 <?php
     699    <div class="heavenlytics-property-meta-item">
     700      <?php echo wp_kses($icons[$icon_type], $allowed_svg_tags); ?>
     701      <?php echo esc_html($value); ?> <?php echo esc_html($label); ?>
     702    </div>
     703  <?php
    482704  }
    483705
     
    486708    if (empty($value)) return;
    487709  ?>
    488 <div class="havenlytics-detail-item">
    489     <div class="havenlytics-detail-icon">
     710    <div class="havenlytics-detail-item">
     711      <div class="havenlytics-detail-icon">
    490712        <i class="<?php echo esc_attr($icon_class_name); ?>"></i>
     713      </div>
     714      <div class="havenlytics-detail-value"><?php echo esc_html($value); ?></div>
     715      <div class="havenlytics-detail-label"><?php echo esc_html($label); ?></div>
    491716    </div>
    492     <div class="havenlytics-detail-value"><?php echo esc_html($value); ?></div>
    493     <div class="havenlytics-detail-label"><?php echo esc_html($label); ?></div>
    494 </div>
    495 <?php
     717  <?php
    496718  }
    497719
     
    609831  {
    610832  ?>
    611 <div class="heavenlytics-col heavenlytics-col-12">
    612     <p><?php esc_html_e('No properties found.', 'havenlytics'); ?></p>
    613 </div>
     833    <div class="heavenlytics-col heavenlytics-col-12">
     834      <p><?php esc_html_e('No properties found.', 'havenlytics'); ?></p>
     835    </div>
    614836<?php
    615837  }
  • havenlytics/trunk/readme.txt

    r3332499 r3333158  
    1 === Havenlytics – Real Estate & Property Listings ===
     1=== Havenlytics – WP Real Estate & Property Listings Directory ===
    22Contributors: Havenlytics
    33Donate link: https://havenlytics.com
     
    66Tested up to: 6.8
    77Requires PHP: 7.2 
    8 Stable tag: 1.0.6
     8Stable tag: 1.0.7
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    139139== Changelog ==
    140140
     141= 1.0.7 =
     142* Fixed responsive UI issues across various sections for better mobile experience.
     143* Organized modal templates into a separate folder for better code structure and maintainability.
     144* Added `ABSPATH` check to all standalone PHP files to enhance plugin security.
     145* Implemented featured property filter support within the property shortcode.
     146
     147
    141148= 1.0.6 =
    142149* Introduced dynamic rendering of featured properties in the single property widget carousel.
  • havenlytics/trunk/templates/hvnly_property-single.php

    r3332499 r3333158  
    120120    ?>
    121121
    122     <div class="container">
    123         <!-- Property Gallery with Prefix -->
    124         <div class="havenlytics_property_single">
    125             <div class="property-gallery">
    126                 <?php if (!empty($gallery_images)) : ?>
    127                 <div class="gallery-main">
    128                     <?php foreach ($gallery_images as $index => $image_id) : ?>
    129                     <div class="gallery-slide <?php echo $index === 0 ? 'active' : ''; ?>"
    130                         style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'large')); ?>')">
    131                     </div>
    132 
    133                     <?php endforeach; ?>
    134 
    135                     <div class="gallery-counter">1/<?php echo count($gallery_images); ?></div>
    136                     <div class="transition-indicator"></div>
    137 
    138                     <div class="gallery-controls">
    139                         <button class="gallery-btn prev-btn">
    140                             <i class="fas fa-chevron-left"></i>
    141                         </button>
    142                         <button class="gallery-btn next-btn">
    143                             <i class="fas fa-chevron-right"></i>
    144                         </button>
    145                     </div>
     122        <div class="container">
     123            <!-- Property Gallery with Prefix -->
     124            <div class="havenlytics_property_single">
     125                <div class="property-gallery">
     126                    <?php if (!empty($gallery_images)) : ?>
     127                        <div class="gallery-main">
     128                            <?php foreach ($gallery_images as $index => $image_id) : ?>
     129                                <div class="gallery-slide <?php echo $index === 0 ? 'active' : ''; ?>"
     130                                    style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'large')); ?>')">
     131                                </div>
     132
     133                            <?php endforeach; ?>
     134
     135                            <div class="gallery-counter">1/<?php echo count($gallery_images); ?></div>
     136                            <div class="transition-indicator"></div>
     137
     138                            <div class="gallery-controls">
     139                                <button class="gallery-btn prev-btn">
     140                                    <i class="fas fa-chevron-left"></i>
     141                                </button>
     142                                <button class="gallery-btn next-btn">
     143                                    <i class="fas fa-chevron-right"></i>
     144                                </button>
     145                            </div>
     146                        </div>
     147
     148                        <div class="thumbnail-container">
     149                            <?php foreach ($gallery_images as $index => $image_id) : ?>
     150                                <div class="property-thumbnail <?php echo $index === 0 ? 'active' : ''; ?>"
     151                                    data-index="<?php echo esc_attr($index); ?>"
     152                                    style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'thumbnail')); ?>')">
     153                                </div>
     154                            <?php endforeach; ?>
     155                        </div>
     156
     157                    <?php elseif (has_post_thumbnail($property_id)) : ?>
     158                        <div class="gallery-main">
     159                            <div class="gallery-slide active"
     160                                style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'large')); ?>')">
     161                            </div>
     162
     163                            <div class="gallery-counter">1/1</div>
     164                            <div class="transition-indicator"></div>
     165
     166                            <div class="gallery-controls">
     167                                <button class="gallery-btn prev-btn">
     168                                    <i class="fas fa-chevron-left"></i>
     169                                </button>
     170                                <button class="gallery-btn next-btn">
     171                                    <i class="fas fa-chevron-right"></i>
     172                                </button>
     173                            </div>
     174                        </div>
     175
     176                        <div class="thumbnail-container">
     177                            <div class="property-thumbnail active" data-index="0"
     178                                style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'thumbnail')); ?>')">
     179                            </div>
     180                        </div>
     181
     182                    <?php else : ?>
     183                        <div class="gallery-main">
     184                            <div class="gallery-slide active"
     185                                style="background-image: url('<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/no-thumb.png'); ?>')">
     186                            </div>
     187                            <div class="gallery-counter">0/0</div>
     188                        </div>
     189                    <?php endif; ?>
    146190                </div>
    147191
    148                 <div class="thumbnail-container">
    149                     <?php foreach ($gallery_images as $index => $image_id) : ?>
    150                     <div class="property-thumbnail <?php echo $index === 0 ? 'active' : ''; ?>"
    151                         data-index="<?php echo esc_attr($index); ?>"
    152                         style="background-image: url('<?php echo esc_url(wp_get_attachment_image_url($image_id, 'thumbnail')); ?>')">
    153                     </div>
    154                     <?php endforeach; ?>
    155                 </div>
    156 
    157                 <?php elseif (has_post_thumbnail($property_id)) : ?>
    158                 <div class="gallery-main">
    159                     <div class="gallery-slide active"
    160                         style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'large')); ?>')">
    161                     </div>
    162 
    163                     <div class="gallery-counter">1/1</div>
    164                     <div class="transition-indicator"></div>
    165 
    166                     <div class="gallery-controls">
    167                         <button class="gallery-btn prev-btn">
    168                             <i class="fas fa-chevron-left"></i>
    169                         </button>
    170                         <button class="gallery-btn next-btn">
    171                             <i class="fas fa-chevron-right"></i>
    172                         </button>
    173                     </div>
    174                 </div>
    175 
    176                 <div class="thumbnail-container">
    177                     <div class="property-thumbnail active" data-index="0"
    178                         style="background-image: url('<?php echo esc_url(get_the_post_thumbnail_url($property_id, 'thumbnail')); ?>')">
    179                     </div>
    180                 </div>
    181 
    182                 <?php else : ?>
    183                 <div class="gallery-main">
    184                     <div class="gallery-slide active"
    185                         style="background-image: url('<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/no-thumb.png'); ?>')">
    186                     </div>
    187                     <div class="gallery-counter">0/0</div>
    188                 </div>
    189                 <?php endif; ?>
    190             </div>
    191 
    192             <!-- Property Header -->
    193             <div class="property-header">
    194                 <div>
    195                     <h1 class="property-title"><?php the_title(); ?></h1>
    196                     <div class="property-address">
    197                         <i class="fas fa-map-marker-alt"></i>
    198                         <?php echo esc_html($address); ?>
    199                     </div>
    200                     <div class="property-uptodate">
    201                         <i class="fas fa-calendar"></i>
    202                         <?php
     192                <!-- Property Header -->
     193                <div class="property-header">
     194                    <div>
     195                        <h1 class="property-title"><?php the_title(); ?></h1>
     196                        <div class="property-address">
     197                            <i class="fas fa-map-marker-alt"></i>
     198                            <?php echo esc_html($address); ?>
     199                        </div>
     200                        <div class="property-uptodate">
     201                            <i class="fas fa-calendar"></i>
     202                            <?php
    203203                            $updated_time = get_the_modified_time('U'); // Get UNIX timestamp
    204204                            $current_time = current_time('timestamp'); // Current timestamp according to WordPress time zone
     
    212212                            }
    213213                            ?>
     214                        </div>
     215
     216
    214217                    </div>
    215218
    216219
     220                    <div class="property-price">
     221                        <?php echo esc_html($currency_symbol); ?> <?php echo esc_html($price); ?>
     222                    </div>
     223
     224
    217225                </div>
    218226
    219227
    220                 <div class="property-price">
    221                     <?php echo esc_html($currency_symbol); ?> <?php echo esc_html($price); ?>
    222                 </div>
    223 
    224 
    225             </div>
    226 
    227 
    228 
    229             <div class="row">
    230                 <div class="col-lg-8">
    231 
    232                     <!-- Property Overview -->
    233                     <div class="property-details-card">
    234                         <h2 class="section-title">Overview</h2>
    235 
    236                         <div class="row">
    237                             <div class="col-lg-4 col-md-6">
    238 
    239                                 <?php if ($bedrooms) : ?>
    240                                 <div class="detail-item">
    241                                     <div class="detail-icon">
    242                                         <i class="fas fa-bed"></i>
    243                                     </div>
    244                                     <div class="detail-content">
    245                                         <h4><?php esc_html_e('Bedrooms', 'havenlytics'); ?></h4>
    246                                         <p><?php echo esc_html($bedrooms); ?></p>
    247                                     </div>
     228
     229                <div class="row">
     230                    <div class="col-lg-8">
     231
     232                        <!-- Property Overview -->
     233                        <div class="property-details-card">
     234                            <h2 class="section-title">Overview</h2>
     235
     236                            <div class="row">
     237                                <div class="col-lg-4 col-md-6">
     238
     239                                    <?php if ($bedrooms) : ?>
     240                                        <div class="detail-item">
     241                                            <div class="detail-icon">
     242                                                <i class="fas fa-bed"></i>
     243                                            </div>
     244                                            <div class="detail-content">
     245                                                <h4><?php esc_html_e('Bedrooms', 'havenlytics'); ?></h4>
     246                                                <p><?php echo esc_html($bedrooms); ?></p>
     247                                            </div>
     248                                        </div>
     249                                    <?php endif; ?>
     250
     251                                    <?php if ($sqft) : ?>
     252                                        <div class="detail-item">
     253                                            <div class="detail-icon">
     254                                                <i class="fas fa-ruler-combined"></i>
     255                                            </div>
     256                                            <div class="detail-content">
     257                                                <h4>
     258                                                    <?php esc_html_e('Square Feet', 'havenlytics'); ?></h4>
     259                                                <p> <?php echo esc_html($sqft); ?>
     260                                                    <?php esc_html_e('sqft', 'havenlytics'); ?>
     261                                                </p>
     262                                            </div>
     263                                        </div>
     264                                    <?php endif; ?>
     265                                    <?php if ($year_built) : ?>
     266                                        <div class="detail-item">
     267                                            <div class="detail-icon">
     268                                                <i class="fas fa-calendar-alt"></i>
     269                                            </div>
     270                                            <div class="detail-content">
     271                                                <h4><?php esc_html_e('Year Built', 'havenlytics'); ?></h4>
     272                                                <p><?php echo esc_html($year_built); ?></p>
     273                                            </div>
     274                                        </div>
     275                                    <?php endif; ?>
    248276                                </div>
    249                                 <?php endif; ?>
    250 
    251                                 <?php if ($sqft) : ?>
    252                                 <div class="detail-item">
    253                                     <div class="detail-icon">
    254                                         <i class="fas fa-ruler-combined"></i>
    255                                     </div>
    256                                     <div class="detail-content">
    257                                         <h4>
    258                                             <?php esc_html_e('Square Feet', 'havenlytics'); ?></h4>
    259                                         <p> <?php echo esc_html($sqft); ?>
    260                                             <?php esc_html_e('sqft', 'havenlytics'); ?>
    261                                         </p>
    262                                     </div>
     277
     278                                <div class="col-lg-4 col-md-6">
     279                                    <?php if ($bathrooms) : ?>
     280                                        <div class="detail-item">
     281                                            <div class="detail-icon">
     282                                                <i class="fas fa-bath"></i>
     283                                            </div>
     284                                            <div class="detail-content">
     285                                                <h4><?php esc_html_e('Bathrooms', 'havenlytics'); ?></h4>
     286                                                <p><?php echo esc_html($bathrooms); ?></p>
     287                                            </div>
     288                                        </div>
     289                                    <?php endif; ?>
     290                                    <?php if ($lot_size) : ?>
     291                                        <div class="detail-item">
     292                                            <div class="detail-icon">
     293                                                <i class="fas fa-vector-square"></i>
     294                                            </div>
     295                                            <div class="detail-content">
     296                                                <h4><?php esc_html_e('Lot Size', 'havenlytics'); ?></h4>
     297                                                <p><?php echo esc_html($lot_size); ?> acres</p>
     298                                            </div>
     299                                        </div>
     300                                    <?php endif; ?>
     301                                    <?php if ($garage) : ?>
     302                                        <div class="detail-item">
     303                                            <div class="detail-icon">
     304                                                <i class="fas fa-car"></i>
     305                                            </div>
     306                                            <div class="detail-content">
     307                                                <h4><?php esc_html_e('Garage', 'havenlytics'); ?></h4>
     308                                                <p><?php echo esc_html($garage); ?>
     309                                                    car<?php echo esc_html($garage > 1 ? 's' : ''); ?></p>
     310                                            </div>
     311                                        </div>
     312                                    <?php endif; ?>
    263313                                </div>
    264                                 <?php endif; ?>
    265                                 <?php if ($year_built) : ?>
    266                                 <div class="detail-item">
    267                                     <div class="detail-icon">
    268                                         <i class="fas fa-calendar-alt"></i>
    269                                     </div>
    270                                     <div class="detail-content">
    271                                         <h4><?php esc_html_e('Year Built', 'havenlytics'); ?></h4>
    272                                         <p><?php echo esc_html($year_built); ?></p>
    273                                     </div>
     314
     315                                <div class="col-lg-4 col-md-6">
     316                                    <?php if ($tax_amount) : ?>
     317                                        <div class="detail-item">
     318                                            <div class="detail-icon">
     319                                                <i class="fas fa-dollar-sign"></i>
     320                                            </div>
     321                                            <div class="detail-content">
     322                                                <h4><?php esc_html_e('Annual Tax', 'havenlytics'); ?></h4>
     323                                                <p><?php echo esc_html($currency_symbol); ?>
     324                                                    <?php echo esc_html($tax_amount); ?></p>
     325                                            </div>
     326                                        </div>
     327                                    <?php endif; ?>
     328                                    <?php if ($rating) : ?>
     329                                        <div class="detail-item">
     330                                            <div class="detail-icon">
     331                                                <i class="fas fa-star"></i>
     332                                            </div>
     333                                            <div class="detail-content">
     334                                                <h4><?php esc_html_e('Rating', 'havenlytics'); ?></h4>
     335                                                <p><?php echo esc_html($rating); ?> / 5</p>
     336                                            </div>
     337                                        </div>
     338                                    <?php endif; ?>
     339
    274340                                </div>
    275                                 <?php endif; ?>
    276                             </div>
    277 
    278                             <div class="col-lg-4 col-md-6">
    279                                 <?php if ($bathrooms) : ?>
    280                                 <div class="detail-item">
    281                                     <div class="detail-icon">
    282                                         <i class="fas fa-bath"></i>
    283                                     </div>
    284                                     <div class="detail-content">
    285                                         <h4><?php esc_html_e('Bathrooms', 'havenlytics'); ?></h4>
    286                                         <p><?php echo esc_html($bathrooms); ?></p>
    287                                     </div>
     341                            </div>
     342                        </div>
     343
     344                        <?php if ($short_description) : ?>
     345                            <!-- Property Summary -->
     346                            <div class="property-details-card">
     347                                <h2 class="section-title">Property Summary</h2>
     348                                <p class="property-description">
     349                                    <?php echo esc_html($short_description); ?>
     350                                </p>
     351
     352                            </div>
     353                        <?php endif; ?>
     354                        <!-- Property Details -->
     355                        <div class="property-details-card">
     356                            <h2 class="section-title">Property Details</h2>
     357                            <div class="property-description">
     358                                <?php the_content(); ?>
     359                            </div>
     360
     361                        </div>
     362
     363
     364
     365
     366                        <?php if (!empty(array_filter($features))) : ?>
     367                            <!-- Features Section -->
     368                            <div class="property-details-card">
     369                                <h2 class="section-title"><?php esc_html_e('Features & Amenities', 'havenlytics'); ?></h2>
     370                                <div class="features-grid">
     371                                    <?php foreach ($features as $feature => $value) :
     372                                        if ($value) : ?>
     373
     374                                            <div class="feature-item">
     375                                                <i class="fas fa-check-circle"></i>
     376                                                <span><?php echo esc_html(ucfirst(str_replace('_', ' ', $feature))); ?></span>
     377                                            </div>
     378                                    <?php endif;
     379                                    endforeach; ?>
    288380                                </div>
    289                                 <?php endif; ?>
    290                                 <?php if ($lot_size) : ?>
    291                                 <div class="detail-item">
    292                                     <div class="detail-icon">
    293                                         <i class="fas fa-vector-square"></i>
    294                                     </div>
    295                                     <div class="detail-content">
    296                                         <h4><?php esc_html_e('Lot Size', 'havenlytics'); ?></h4>
    297                                         <p><?php echo esc_html($lot_size); ?> acres</p>
    298                                     </div>
    299                                 </div>
    300                                 <?php endif; ?>
    301                                 <?php if ($garage) : ?>
    302                                 <div class="detail-item">
    303                                     <div class="detail-icon">
    304                                         <i class="fas fa-car"></i>
    305                                     </div>
    306                                     <div class="detail-content">
    307                                         <h4><?php esc_html_e('Garage', 'havenlytics'); ?></h4>
    308                                         <p><?php echo esc_html($garage); ?>
    309                                             car<?php echo esc_html($garage > 1 ? 's' : ''); ?></p>
    310                                     </div>
    311                                 </div>
    312                                 <?php endif; ?>
    313                             </div>
    314 
    315                             <div class="col-lg-4 col-md-6">
    316                                 <?php if ($tax_amount) : ?>
    317                                 <div class="detail-item">
    318                                     <div class="detail-icon">
    319                                         <i class="fas fa-dollar-sign"></i>
    320                                     </div>
    321                                     <div class="detail-content">
    322                                         <h4><?php esc_html_e('Annual Tax', 'havenlytics'); ?></h4>
    323                                         <p><?php echo esc_html($currency_symbol); ?>
    324                                             <?php echo esc_html($tax_amount); ?></p>
    325                                     </div>
    326                                 </div>
    327                                 <?php endif; ?>
    328                                 <?php if ($rating) : ?>
    329                                 <div class="detail-item">
    330                                     <div class="detail-icon">
    331                                         <i class="fas fa-star"></i>
    332                                     </div>
    333                                     <div class="detail-content">
    334                                         <h4><?php esc_html_e('Rating', 'havenlytics'); ?></h4>
    335                                         <p><?php echo esc_html($rating); ?> / 5</p>
    336                                     </div>
    337                                 </div>
    338                                 <?php endif; ?>
    339 
    340                             </div>
    341                         </div>
    342                     </div>
    343 
    344                     <?php if ($short_description) : ?>
    345                     <!-- Property Summary -->
    346                     <div class="property-details-card">
    347                         <h2 class="section-title">Property Summary</h2>
    348                         <p class="property-description">
    349                             <?php echo esc_html($short_description); ?>
    350                         </p>
    351 
    352                     </div>
    353                     <?php endif; ?>
    354                     <!-- Property Details -->
    355                     <div class="property-details-card">
    356                         <h2 class="section-title">Property Details</h2>
    357                         <div class="property-description">
    358                             <?php the_content(); ?>
    359                         </div>
    360 
    361                     </div>
    362 
    363 
    364 
    365 
    366                     <?php if (!empty(array_filter($features))) : ?>
    367                     <!-- Features Section -->
    368                     <div class="property-details-card">
    369                         <h2 class="section-title"><?php esc_html_e('Features & Amenities', 'havenlytics'); ?></h2>
    370                         <div class="features-grid">
    371                             <?php foreach ($features as $feature => $value) :
    372                                         if ($value) : ?>
    373 
    374                             <div class="feature-item">
    375                                 <i class="fas fa-check-circle"></i>
    376                                 <span><?php echo esc_html(ucfirst(str_replace('_', ' ', $feature))); ?></span>
    377                             </div>
    378                             <?php endif;
    379                                     endforeach; ?>
    380                         </div>
    381                     </div>
    382                     <?php endif; ?>
    383                     <!-- Floor Plans -->
    384 
    385 
    386                     <!-- Video -->
    387                     <div class="property-details-card">
    388                         <div class="property-video-card">
    389                             <h2 class="section-title"><?php esc_html_e('Property Video', 'havenlytics'); ?></h2>
    390 
    391                             <div class="video-container">
    392                                 <?php
     381                            </div>
     382                        <?php endif; ?>
     383                        <!-- Floor Plans -->
     384
     385
     386                        <!-- Video -->
     387                        <div class="property-details-card">
     388                            <div class="property-video-card">
     389                                <h2 class="section-title"><?php esc_html_e('Property Video', 'havenlytics'); ?></h2>
     390
     391                                <div class="video-container">
     392                                    <?php
    393393                                    // Get selected video type
    394394                                    $video_type = get_post_meta(get_the_ID(), '_havenlytics_property_video_type', true);
     
    414414                                    ?>
    415415
    416                                 <?php if (!empty($video_url)) : ?>
    417                                 <div class="video-wrapper">
    418                                     <div class="video-thumbnail">
    419                                         <img src="<?php echo esc_url($thumbnail_url); ?>"
    420                                             alt="Property Video Thumbnail">
    421 
    422                                         <div class="havenlytics_property_video-btn-main">
    423                                             <div class="havenlytics_property_video-play-button" id="play-button"
    424                                                 data-video-url="<?php echo esc_url($video_url); ?>"
    425                                                 data-video-type="<?php echo esc_attr($video_type); ?>">
    426                                                 <div class="havenlytics_property_video-icon"></div>
    427                                                 <div class="havenlytics_property_video-pulse-ring"></div>
    428                                             </div>
    429                                         </div>
     416                                    <?php if (!empty($video_url)) : ?>
     417                                        <div class="video-wrapper">
     418                                            <div class="video-thumbnail">
     419                                                <img src="<?php echo esc_url($thumbnail_url); ?>"
     420                                                    alt="Property Video Thumbnail">
     421
     422                                                <div class="havenlytics_property_video-btn-main">
     423                                                    <div class="havenlytics_property_video-play-button" id="play-button"
     424                                                        data-video-url="<?php echo esc_url($video_url); ?>"
     425                                                        data-video-type="<?php echo esc_attr($video_type); ?>">
     426                                                        <div class="havenlytics_property_video-icon"></div>
     427                                                        <div class="havenlytics_property_video-pulse-ring"></div>
     428                                                    </div>
     429                                                </div>
     430                                            </div>
     431                                        </div>
     432
     433                                        <!-- Video Popup -->
     434                                        <div class="havenlytics_property_video-overlay">
     435                                            <div class="havenlytics_property_video-spinner"></div>
     436                                            <div class="havenlytics_property_video-container">
     437                                                <div class="havenlytics_property_video-close">
     438                                                    <i class="fas fa-times"></i>
     439                                                </div>
     440                                                <div class="havenlytics_property_video-player" id="video-player"></div>
     441                                            </div>
     442                                        </div>
     443                                    <?php else : ?>
     444                                        <p><?php esc_html_e('No video available for this property.', 'havenlytics'); ?></p>
     445                                    <?php endif; ?>
     446                                </div>
     447                            </div>
     448                        </div>
     449
     450
     451
     452                        <?php if ($latitude && $longitude) : ?>
     453                            <!-- Location Map -->
     454                            <div class="property-details-card">
     455                                <h2 class="section-title"><?php esc_html_e('Property Location', 'havenlytics'); ?></h2>
     456
     457                                <div class="map-container">
     458                                    <div id="havenlytics-property-map" data-lat="<?php echo esc_attr($latitude); ?>"
     459                                        data-lng="<?php echo esc_attr($longitude); ?>"
     460                                        style="height: 400px; width: 100%; background: #f5f5f5;">
    430461                                    </div>
    431                                 </div>
    432 
    433                                 <!-- Video Popup -->
    434                                 <div class="havenlytics_property_video-overlay">
    435                                     <div class="havenlytics_property_video-spinner"></div>
    436                                     <div class="havenlytics_property_video-container">
    437                                         <div class="havenlytics_property_video-close">
    438                                             <i class="fas fa-times"></i>
    439                                         </div>
    440                                         <div class="havenlytics_property_video-player" id="video-player"></div>
    441                                     </div>
    442                                 </div>
    443                                 <?php else : ?>
    444                                 <p><?php esc_html_e('No video available for this property.', 'havenlytics'); ?></p>
    445                                 <?php endif; ?>
    446                             </div>
    447                         </div>
    448                     </div>
    449 
    450 
    451 
    452                     <?php if ($latitude && $longitude) : ?>
    453                     <!-- Location Map -->
    454                     <div class="property-details-card">
    455                         <h2 class="section-title"><?php esc_html_e('Property Location', 'havenlytics'); ?></h2>
    456 
    457                         <div class="map-container">
    458                             <div id="havenlytics-property-map" data-lat="<?php echo esc_attr($latitude); ?>"
    459                                 data-lng="<?php echo esc_attr($longitude); ?>"
    460                                 style="height: 400px; width: 100%; background: #f5f5f5;">
    461                             </div>
    462                             <!-- <div class="map-overlay">
     462                                    <!-- <div class="map-overlay">
    463463
    464464                                        <h3>Neighborhood Information</h3>
     
    470470                                    </div> -->
    471471
    472                         </div>
    473                     </div>
    474                     <?php endif; ?>
    475                     <!-- Popup Gallery  -->
    476                     <div class="property-details-card">
    477                         <h2 class="section-title">Property Gallery</h2>
    478                         <div class="row">
    479                             <div class="col-md-12 mb-4">
    480                                 <div class="havenlytics_gallery_fancybox_gallery">
    481                                     <?php if (!empty($gallery_images)) : ?>
    482                                     <?php foreach ($gallery_images as $index => $image_id) :
     472                                </div>
     473                            </div>
     474                        <?php endif; ?>
     475                        <!-- Popup Gallery  -->
     476                        <div class="property-details-card">
     477                            <h2 class="section-title">Property Gallery</h2>
     478                            <div class="row">
     479                                <div class="col-md-12 mb-4">
     480                                    <div class="havenlytics_gallery_fancybox_gallery">
     481                                        <?php if (!empty($gallery_images)) : ?>
     482                                            <?php foreach ($gallery_images as $index => $image_id) :
    483483                                                $thumb_url = wp_get_attachment_image_url($image_id, 'medium');
    484484                                                $large_url = wp_get_attachment_image_url($image_id, 'large');
     
    487487                                                $animation_delay = 0.2 + ($index * 0.1); // optional animated delay
    488488                                            ?>
    489                                     <div class="havenlytics_gallery_fancybox_gallery-item havenlytics_gallery_fancybox_floating"
    490                                         style="animation-delay: <?php echo esc_attr(number_format($animation_delay, 1)); ?>s;"
    491                                         data-button-title="<?php the_title(); ?>"
    492                                         data-button-link="<?php echo esc_url(get_permalink($property_id)); ?>">
    493                                         <img src="<?php echo esc_url($thumb_url); ?>"
    494                                             data-large="<?php echo esc_url($large_url); ?>"
    495                                             alt="<?php echo esc_attr($alt_text ? $alt_text : $title_text); ?>">
    496                                         <div class="havenlytics_gallery_fancybox_gallery-caption">
    497                                             <?php echo esc_html($title_text); ?>
    498                                         </div>
     489                                                <div class="havenlytics_gallery_fancybox_gallery-item havenlytics_gallery_fancybox_floating"
     490                                                    style="animation-delay: <?php echo esc_attr(number_format($animation_delay, 1)); ?>s;"
     491                                                    data-button-title="<?php the_title(); ?>"
     492                                                    data-button-link="<?php echo esc_url(get_permalink($property_id)); ?>">
     493                                                    <img src="<?php echo esc_url($thumb_url); ?>"
     494                                                        data-large="<?php echo esc_url($large_url); ?>"
     495                                                        alt="<?php echo esc_attr($alt_text ? $alt_text : $title_text); ?>">
     496                                                    <div class="havenlytics_gallery_fancybox_gallery-caption">
     497                                                        <?php echo esc_html($title_text); ?>
     498                                                    </div>
     499                                                </div>
     500                                            <?php endforeach; ?>
     501                                        <?php else : ?>
     502                                            <p><?php esc_html_e('No gallery images found.', 'havenlytics'); ?></p>
     503                                        <?php endif; ?>
    499504                                    </div>
    500                                     <?php endforeach; ?>
    501                                     <?php else : ?>
    502                                     <p><?php esc_html_e('No gallery images found.', 'havenlytics'); ?></p>
    503                                     <?php endif; ?>
     505
     506                                    <!-- Heavenlytics FancyBox Structure -->
     507                                    <div class="havenlytics_gallery_fancybox_fancybox">
     508                                        <span class="havenlytics_gallery_fancybox_fancybox_close"><i
     509                                                class="fas fa-times"></i></span>
     510                                        <span
     511                                            class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_prev"><i
     512                                                class="fas fa-chevron-left"></i></span>
     513                                        <span
     514                                            class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_next"><i
     515                                                class="fas fa-chevron-right"></i></span>
     516                                        <div class="havenlytics_gallery_fancybox_fancybox_counter">1 / 8</div>
     517
     518                                        <div class="havenlytics_gallery_fancybox_fancybox_content">
     519                                            <div class="havenlytics_gallery_fancybox_fancybox_main">
     520                                                <div class="havenlytics_gallery_fancybox_fancybox_img_wrap">
     521                                                    <img class="havenlytics_gallery_fancybox_fancybox_img" src="" alt="">
     522                                                </div>
     523                                                <div class="havenlytics_gallery_fancybox_fancybox_caption"></div>
     524                                                <div class="havenlytics_gallery_fancybox_fancybox_property">
     525                                                    <a href="#" class="havenlytics_gallery_fancybox_property_button"
     526                                                        target="_blank">
     527                                                        View Property Details <i class="fas fa-arrow-right"></i>
     528                                                    </a>
     529                                                </div>
     530                                            </div>
     531                                            <div class="havenlytics_gallery_fancybox_fancybox_sidebar">
     532                                                <div class="havenlytics_gallery_fancybox_fancybox_thumbnails"></div>
     533                                            </div>
     534                                        </div>
     535                                    </div>
     536                                    <!-- Heavenlytics FancyBox Structure -->
    504537                                </div>
    505538
    506                                 <!-- Heavenlytics FancyBox Structure -->
    507                                 <div class="havenlytics_gallery_fancybox_fancybox">
    508                                     <span class="havenlytics_gallery_fancybox_fancybox_close"><i
    509                                             class="fas fa-times"></i></span>
    510                                     <span
    511                                         class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_prev"><i
    512                                             class="fas fa-chevron-left"></i></span>
    513                                     <span
    514                                         class="havenlytics_gallery_fancybox_fancybox_nav havenlytics_gallery_fancybox_fancybox_next"><i
    515                                             class="fas fa-chevron-right"></i></span>
    516                                     <div class="havenlytics_gallery_fancybox_fancybox_counter">1 / 8</div>
    517 
    518                                     <div class="havenlytics_gallery_fancybox_fancybox_content">
    519                                         <div class="havenlytics_gallery_fancybox_fancybox_main">
    520                                             <div class="havenlytics_gallery_fancybox_fancybox_img_wrap">
    521                                                 <img class="havenlytics_gallery_fancybox_fancybox_img" src="" alt="">
    522                                             </div>
    523                                             <div class="havenlytics_gallery_fancybox_fancybox_caption"></div>
    524                                             <div class="havenlytics_gallery_fancybox_fancybox_property">
    525                                                 <a href="#" class="havenlytics_gallery_fancybox_property_button"
    526                                                     target="_blank">
    527                                                     View Property Details <i class="fas fa-arrow-right"></i>
    528                                                 </a>
    529                                             </div>
    530                                         </div>
    531                                         <div class="havenlytics_gallery_fancybox_fancybox_sidebar">
    532                                             <div class="havenlytics_gallery_fancybox_fancybox_thumbnails"></div>
    533                                         </div>
    534                                     </div>
    535                                 </div>
    536                                 <!-- Heavenlytics FancyBox Structure -->
    537                             </div>
    538 
    539 
    540                         </div>
     539
     540                            </div>
     541                        </div>
     542
     543
    541544                    </div>
    542545
    543 
    544                 </div>
    545 
    546                 <!-- Sidebar -->
    547                 <div class="col-lg-4">
    548                     <div class="havenlytics_sticky_sidebar">
    549                         <!-- Amenities Section -->
    550                         <div class="property-details-card">
    551                             <h2 class="section-title">Property Amenities</h2>
    552                             <div class="havenlytics-amenities-grid">
    553                                 <?php
     546                    <!-- Sidebar -->
     547                    <div class="col-lg-4">
     548                        <div class="havenlytics_sticky_sidebar">
     549                            <!-- Amenities Section -->
     550                            <div class="property-details-card">
     551                                <h2 class="section-title">Property Amenities</h2>
     552                                <div class="havenlytics-amenities-grid">
     553                                    <?php
    554554                                    $post_id = get_the_ID();
    555555
    556556                                    if (get_post_meta($post_id, '_havenlytics_property_book_property', true)) :
    557557                                    ?>
    558                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="enquiry">
    559                                     <div class="havenlytics-amenity-icon">
    560                                         <i class="fas fa-calendar"></i>
    561                                     </div>
    562                                     <h4>Book Property</h4>
     558                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="enquiry">
     559                                            <div class="havenlytics-amenity-icon">
     560                                                <i class="fas fa-calendar"></i>
     561                                            </div>
     562                                            <h4>Book Property</h4>
     563                                        </div>
     564                                    <?php endif; ?>
     565
     566                                    <?php if (get_post_meta($post_id, '_havenlytics_property_virtual_tour', true)) : ?>
     567                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger"
     568                                            data-popup="virtualTour">
     569                                            <div class="havenlytics-amenity-icon">
     570                                                <i class="fas fa-vr-cardboard"></i>
     571                                            </div>
     572                                            <h4>Virtual Tour</h4>
     573                                        </div>
     574                                    <?php endif; ?>
     575
     576                                    <?php if (get_post_meta($post_id, '_havenlytics_property_floorplan_img', true)) : ?>
     577                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="floorplan">
     578                                            <div class="havenlytics-amenity-icon">
     579                                                <i class="fas fa-vector-square"></i>
     580                                            </div>
     581                                            <h4>Floorplan</h4>
     582                                        </div>
     583                                    <?php endif; ?>
     584
     585                                    <?php if (get_post_meta($post_id, '_havenlytics_property_brochure_pdf', true)) : ?>
     586                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="brochure">
     587                                            <div class="havenlytics-amenity-icon">
     588                                                <i class="fas fa-file-alt"></i>
     589                                            </div>
     590                                            <h4>View Brochure</h4>
     591                                        </div>
     592                                    <?php endif; ?>
     593
     594                                    <?php if (get_post_meta($post_id, '_havenlytics_property_epc_pdf', true)) : ?>
     595                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="epc">
     596                                            <div class="havenlytics-amenity-icon">
     597                                                <i class="fas fa-clipboard"></i>
     598                                            </div>
     599                                            <h4>View Epc</h4>
     600                                        </div>
     601                                    <?php endif; ?>
     602
     603                                    <?php if (get_post_meta($post_id, '_havenlytics_property_map_url', true)) : ?>
     604                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="map">
     605                                            <div class="havenlytics-amenity-icon">
     606                                                <i class="fas fa-map-marked-alt"></i>
     607                                            </div>
     608                                            <h4>Map</h4>
     609                                        </div>
     610                                    <?php endif; ?>
     611
     612                                    <?php if (get_post_meta($post_id, '_havenlytics_property_request_call', true)) : ?>
     613                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="agent">
     614                                            <div class="havenlytics-amenity-icon">
     615                                                <i class="fas fa-phone-alt"></i>
     616                                            </div>
     617                                            <h4>Request Call Back</h4>
     618                                        </div>
     619                                    <?php endif; ?>
     620
     621                                    <?php if (get_post_meta($post_id, '_havenlytics_property_arrange_view', true)) : ?>
     622                                        <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="viewing">
     623                                            <div class="havenlytics-amenity-icon">
     624                                                <i class="fas fa-calendar-check"></i>
     625                                            </div>
     626                                            <h4>Arrange Viewing</h4>
     627                                        </div>
     628                                    <?php endif; ?>
    563629                                </div>
    564                                 <?php endif; ?>
    565 
    566                                 <?php if (get_post_meta($post_id, '_havenlytics_property_virtual_tour', true)) : ?>
    567                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger"
    568                                     data-popup="virtualTour">
    569                                     <div class="havenlytics-amenity-icon">
    570                                         <i class="fas fa-vr-cardboard"></i>
    571                                     </div>
    572                                     <h4>Virtual Tour</h4>
    573                                 </div>
    574                                 <?php endif; ?>
    575 
    576                                 <?php if (get_post_meta($post_id, '_havenlytics_property_floorplan_img', true)) : ?>
    577                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="floorplan">
    578                                     <div class="havenlytics-amenity-icon">
    579                                         <i class="fas fa-vector-square"></i>
    580                                     </div>
    581                                     <h4>Floorplan</h4>
    582                                 </div>
    583                                 <?php endif; ?>
    584 
    585                                 <?php if (get_post_meta($post_id, '_havenlytics_property_brochure_pdf', true)) : ?>
    586                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="brochure">
    587                                     <div class="havenlytics-amenity-icon">
    588                                         <i class="fas fa-file-alt"></i>
    589                                     </div>
    590                                     <h4>View Brochure</h4>
    591                                 </div>
    592                                 <?php endif; ?>
    593 
    594                                 <?php if (get_post_meta($post_id, '_havenlytics_property_epc_pdf', true)) : ?>
    595                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="epc">
    596                                     <div class="havenlytics-amenity-icon">
    597                                         <i class="fas fa-clipboard"></i>
    598                                     </div>
    599                                     <h4>View Epc</h4>
    600                                 </div>
    601                                 <?php endif; ?>
    602 
    603                                 <?php if (get_post_meta($post_id, '_havenlytics_property_map_url', true)) : ?>
    604                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="map">
    605                                     <div class="havenlytics-amenity-icon">
    606                                         <i class="fas fa-map-marked-alt"></i>
    607                                     </div>
    608                                     <h4>Map</h4>
    609                                 </div>
    610                                 <?php endif; ?>
    611 
    612                                 <?php if (get_post_meta($post_id, '_havenlytics_property_request_call', true)) : ?>
    613                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="agent">
    614                                     <div class="havenlytics-amenity-icon">
    615                                         <i class="fas fa-phone-alt"></i>
    616                                     </div>
    617                                     <h4>Request Call Back</h4>
    618                                 </div>
    619                                 <?php endif; ?>
    620 
    621                                 <?php if (get_post_meta($post_id, '_havenlytics_property_arrange_view', true)) : ?>
    622                                 <div class="havenlytics-amenity-card havenlytics-popup-trigger" data-popup="viewing">
    623                                     <div class="havenlytics-amenity-icon">
    624                                         <i class="fas fa-calendar-check"></i>
    625                                     </div>
    626                                     <h4>Arrange Viewing</h4>
    627                                 </div>
    628                                 <?php endif; ?>
    629                             </div>
    630 
    631                         </div>
    632                         <?php
     630
     631                            </div>
     632                            <?php
    633633                            // Get the custom meta field value
    634634                            $featured_property = get_post_meta(get_the_ID(), '_havenlytics_property_featured_item', true);
     
    637637                            if (!empty($featured_property)) :
    638638                            ?>
    639                         <!-- Featured Property-->
    640                         <div class="property-details-card">
    641 
    642                             <h2 class="section-title">Featured Property</h2>
    643 
    644                             <div class="havenlytics_featured_items-widget">
    645                                 <div class="havenlytics_carousel-container">
    646                                     <div class="owl-carousel owl-theme havenlytics_carousel">
    647 
    648                                         <?php
     639                                <!-- Featured Property-->
     640                                <div class="property-details-card">
     641
     642                                    <h2 class="section-title">Featured Property</h2>
     643
     644                                    <div class="havenlytics_featured_items-widget">
     645                                        <div class="havenlytics_carousel-container">
     646                                            <div class="owl-carousel owl-theme havenlytics_carousel">
     647
     648                                                <?php
    649649                                                // Query only featured properties
    650650                                                $args = array(
     
    717717                                                ?>
    718718
    719                                         <!-- Property 1 -->
    720                                         <div class="havenlytics_property item">
    721                                             <div class="havenlytics_image">
    722                                                 <?php if (has_post_thumbnail()) : ?>
    723                                                 <?php the_post_thumbnail('havenlytics-property-related-thumb', array('class' => 'img-fluid', 'alt' => esc_attr(get_the_title()))); ?>
    724                                                 <?php else : ?>
    725                                                 <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>"
    726                                                     alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>"
    727                                                     class="img-fluid" />
    728                                                 <?php endif; ?>
    729                                                 <?php if (! empty($status_badge)) : ?>
    730                                                 <div class="havenlytics_badge"><?php echo esc_html($status_badge); ?>
    731                                                 </div>
    732                                                 <?php endif; ?>
    733                                             </div>
    734                                             <div class="havenlytics_details">
    735                                                 <?php if ($price) : ?>
    736                                                 <div class="havenlytics_price">
    737                                                     <?php echo esc_html($currency_symbol . $price); ?></div>
    738                                                 <?php endif; ?>
    739                                                 <div class="havenlytics_title">
    740                                                     <a href="<?php the_permalink(); ?>">
    741                                                         <?php echo esc_html(wp_trim_words(get_the_title(), 8, '...')); ?>
    742                                                     </a>
    743                                                 </div>
    744                                                 <?php if ($address) : ?>
    745                                                 <div class="havenlytics_address">
    746                                                     <i class="fas fa-map-marker-alt"></i>
    747                                                     <?php echo esc_html($address); ?>
    748                                                 </div>
    749                                                 <?php endif; ?>
    750                                                 <div class="havenlytics_features">
    751                                                     <?php if ($bedrooms) : ?>
    752 
    753 
    754 
    755                                                     <div class="havenlytics_feature">
    756                                                         <!-- Bedrooms SVG -->
    757                                                         <svg fill="#6C60FE" width="20px" height="20px"
    758                                                             viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1"
    759                                                             xmlns="http://www.w3.org/2000/svg"
    760                                                             xmlns:xlink="http://www.w3.org/1999/xlink"
    761                                                             style="enable-background:new 0 0 122.88 99.94"
    762                                                             xml:space="preserve">
    763                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    764                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    765                                                                 stroke-linejoin="round"></g>
    766                                                             <g id="SVGRepo_iconCarrier">
    767                                                                 <g>
    768                                                                     <path
    769                                                                         d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z">
    770                                                                     </path>
    771                                                                 </g>
    772                                                             </g>
    773                                                         </svg>
    774                                                         <span><?php echo esc_html($bedrooms); ?>
    775                                                             <?php esc_html_e('Beds', 'havenlytics'); ?></span>
    776                                                     </div>
    777                                                     <?php endif; ?>
    778 
    779                                                     <?php if ($bathrooms) : ?>
    780 
    781 
    782                                                     <div class="havenlytics_feature">
    783                                                         <!-- Bathrooms SVG -->
    784                                                         <svg fill="#6C60FE" width="20px" height="20px"
    785                                                             viewBox="0 0 512 512" id="Layer_1"
    786                                                             enable-background="new 0 0 512 512"
    787                                                             xmlns="http://www.w3.org/2000/svg">
    788                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    789                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    790                                                                 stroke-linejoin="round"></g>
    791                                                             <g id="SVGRepo_iconCarrier">
    792                                                                 <g>
    793                                                                     <path
    794                                                                         d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z">
    795                                                                     </path>
    796                                                                 </g>
    797                                                             </g>
    798                                                         </svg>
    799                                                         <span><?php echo esc_html($bathrooms); ?>
    800                                                             <?php esc_html_e('Baths', 'havenlytics'); ?></span>
    801                                                     </div>
    802                                                     <?php endif; ?>
    803 
    804 
    805                                                     <?php if ($sqft) : ?>
    806                                                     <div class="havenlytics_feature">
    807 
    808                                                         <!-- Area SVG -->
    809                                                         <svg fill="#6C60FE" width="20px" height="20px"
    810                                                             viewBox="0 0 256 256" id="Flat"
    811                                                             xmlns="http://www.w3.org/2000/svg">
    812                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    813                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    814                                                                 stroke-linejoin="round" stroke="#CCCCCC"
    815                                                                 stroke-width="7.68"></g>
    816                                                             <g id="SVGRepo_iconCarrier">
    817                                                                 <path
    818                                                                     d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z">
    819                                                                 </path>
    820                                                             </g>
    821                                                         </svg>
    822                                                         <span><?php echo esc_html(number_format($sqft)); ?>
    823                                                             <?php esc_html_e('sqft', 'havenlytics'); ?></span>
    824                                                     </div>
    825                                                     <?php endif; ?>
    826                                                 </div>
    827                                             </div>
    828                                         </div>
    829                                         <?php
     719                                                        <!-- Property -->
     720                                                        <div class="havenlytics_property item">
     721                                                            <div class="havenlytics_image">
     722                                                                <?php if (has_post_thumbnail()) : ?>
     723                                                                    <?php the_post_thumbnail('havenlytics-property-related-thumb', array('class' => 'img-fluid', 'alt' => esc_attr(get_the_title()))); ?>
     724                                                                <?php else : ?>
     725                                                                    <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>"
     726                                                                        alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>"
     727                                                                        class="img-fluid" />
     728                                                                <?php endif; ?>
     729                                                                <?php if (! empty($status_badge)) : ?>
     730                                                                    <div class="havenlytics_badge"><?php echo esc_html($status_badge); ?>
     731                                                                    </div>
     732                                                                <?php endif; ?>
     733                                                            </div>
     734                                                            <div class="havenlytics_details">
     735                                                                <?php if ($price) : ?>
     736                                                                    <div class="havenlytics_price">
     737                                                                        <?php echo esc_html($currency_symbol . $price); ?></div>
     738                                                                <?php endif; ?>
     739                                                                <div class="havenlytics_title">
     740                                                                    <a href="<?php the_permalink(); ?>">
     741                                                                        <?php echo esc_html(wp_trim_words(get_the_title(), 8, '...')); ?>
     742                                                                    </a>
     743                                                                </div>
     744                                                                <?php if ($address) : ?>
     745                                                                    <div class="havenlytics_address">
     746                                                                        <i class="fas fa-map-marker-alt"></i>
     747                                                                        <?php echo esc_html($address); ?>
     748                                                                    </div>
     749                                                                <?php endif; ?>
     750                                                                <div class="havenlytics_features">
     751                                                                    <?php if ($bedrooms) : ?>
     752
     753
     754
     755                                                                        <div class="havenlytics_feature">
     756                                                                            <!-- Bedrooms SVG -->
     757                                                                            <svg fill="#6C60FE" width="20px" height="20px"
     758                                                                                viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1"
     759                                                                                xmlns="http://www.w3.org/2000/svg"
     760                                                                                xmlns:xlink="http://www.w3.org/1999/xlink"
     761                                                                                style="enable-background:new 0 0 122.88 99.94"
     762                                                                                xml:space="preserve">
     763                                                                                <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     764                                                                                <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     765                                                                                    stroke-linejoin="round"></g>
     766                                                                                <g id="SVGRepo_iconCarrier">
     767                                                                                    <g>
     768                                                                                        <path
     769                                                                                            d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z">
     770                                                                                        </path>
     771                                                                                    </g>
     772                                                                                </g>
     773                                                                            </svg>
     774                                                                            <span><?php echo esc_html($bedrooms); ?>
     775                                                                                <?php esc_html_e('Beds', 'havenlytics'); ?></span>
     776                                                                        </div>
     777                                                                    <?php endif; ?>
     778
     779                                                                    <?php if ($bathrooms) : ?>
     780
     781
     782                                                                        <div class="havenlytics_feature">
     783                                                                            <!-- Bathrooms SVG -->
     784                                                                            <svg fill="#6C60FE" width="20px" height="20px"
     785                                                                                viewBox="0 0 512 512" id="Layer_1"
     786                                                                                enable-background="new 0 0 512 512"
     787                                                                                xmlns="http://www.w3.org/2000/svg">
     788                                                                                <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     789                                                                                <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     790                                                                                    stroke-linejoin="round"></g>
     791                                                                                <g id="SVGRepo_iconCarrier">
     792                                                                                    <g>
     793                                                                                        <path
     794                                                                                            d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z">
     795                                                                                        </path>
     796                                                                                    </g>
     797                                                                                </g>
     798                                                                            </svg>
     799                                                                            <span><?php echo esc_html($bathrooms); ?>
     800                                                                                <?php esc_html_e('Baths', 'havenlytics'); ?></span>
     801                                                                        </div>
     802                                                                    <?php endif; ?>
     803
     804
     805                                                                    <?php if ($sqft) : ?>
     806                                                                        <div class="havenlytics_feature">
     807
     808                                                                            <!-- Area SVG -->
     809                                                                            <svg fill="#6C60FE" width="20px" height="20px"
     810                                                                                viewBox="0 0 256 256" id="Flat"
     811                                                                                xmlns="http://www.w3.org/2000/svg">
     812                                                                                <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     813                                                                                <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     814                                                                                    stroke-linejoin="round" stroke="#CCCCCC"
     815                                                                                    stroke-width="7.68"></g>
     816                                                                                <g id="SVGRepo_iconCarrier">
     817                                                                                    <path
     818                                                                                        d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z">
     819                                                                                    </path>
     820                                                                                </g>
     821                                                                            </svg>
     822                                                                            <span><?php echo esc_html(number_format($sqft)); ?>
     823                                                                                <?php esc_html_e('sqft', 'havenlytics'); ?></span>
     824                                                                        </div>
     825                                                                    <?php endif; ?>
     826                                                                </div>
     827                                                            </div>
     828                                                        </div>
     829                                                <?php
    830830                                                    endwhile;
    831831                                                    wp_reset_postdata();
     
    835835
    836836
    837                                     </div>
    838 
    839                                     <div class="havenlytics_nav">
    840                                         <button class="havenlytics_prev">
    841                                             <i class="fas fa-chevron-left"></i>
    842                                         </button>
    843                                         <button class="havenlytics_next">
    844                                             <i class="fas fa-chevron-right"></i>
    845                                         </button>
    846                                     </div>
    847                                 </div>
    848 
    849                                 <?php
     837                                            </div>
     838
     839                                            <div class="havenlytics_nav">
     840                                                <button class="havenlytics_prev">
     841                                                    <i class="fas fa-chevron-left"></i>
     842                                                </button>
     843                                                <button class="havenlytics_next">
     844                                                    <i class="fas fa-chevron-right"></i>
     845                                                </button>
     846                                            </div>
     847                                        </div>
     848
     849                                        <?php
    850850                                        // Generate dynamic dots based on found posts
    851851                                        $total_items = $featured_query->found_posts;
    852852                                        if ($total_items > 0) :
    853853                                        ?>
    854                                 <div class="havenlytics_dots">
    855                                     <?php for ($i = 0; $i < $total_items; $i++) : ?>
    856                                     <div class="havenlytics_dot<?php echo ($i === 0) ? ' active' : ''; ?>"></div>
    857                                     <?php endfor; ?>
     854                                            <div class="havenlytics_dots">
     855                                                <?php for ($i = 0; $i < $total_items; $i++) : ?>
     856                                                    <div class="havenlytics_dot<?php echo ($i === 0) ? ' active' : ''; ?>"></div>
     857                                                <?php endfor; ?>
     858                                            </div>
     859                                        <?php endif; ?>
     860
     861
     862                                    </div>
     863
    858864                                </div>
    859                                 <?php endif; ?>
    860 
    861 
    862                             </div>
    863 
    864                         </div>
    865                         <?php endif; ?>
    866 
     865                            <?php endif; ?>
     866
     867                        </div>
    867868                    </div>
    868869                </div>
    869             </div>
    870 
    871 
    872             <!-- Similar Listings -->
    873             <div class="havenlytics-similar-list">
    874                 <div class="havenlytics-similar-section-heading">
    875                     <h2><?php esc_html_e('Similar Property Listings', 'havenlytics'); ?></h2>
    876                     <div class="havenlytics-similar-line">
    877                         <span class="havenlytics-similar-line1"></span>
    878                         <span class="havenlytics-similar-line2"></span>
     870
     871
     872                <!-- Similar Listings -->
     873                <div class="havenlytics-similar-list">
     874                    <div class="havenlytics-similar-section-heading">
     875                        <h2><?php esc_html_e('Similar Property Listings', 'havenlytics'); ?></h2>
     876                        <div class="havenlytics-similar-line">
     877                            <span class="havenlytics-similar-line1"></span>
     878                            <span class="havenlytics-similar-line2"></span>
     879                        </div>
     880                        <p><?php esc_html_e('Explore properties with similar features and locations', 'havenlytics'); ?></p>
    879881                    </div>
    880                     <p><?php esc_html_e('Explore properties with similar features and locations', 'havenlytics'); ?></p>
    881                 </div>
    882                 <div class="row">
    883                     <div class="col-md-12">
    884                         <div class="havenlytics-similar-slider owl-carousel">
    885                             <?php
     882                    <div class="row">
     883                        <div class="col-md-12">
     884                            <div class="havenlytics-similar-slider owl-carousel">
     885                                <?php
    886886                                $current_post_id = get_the_ID();
    887887
     
    981981                                        }
    982982                                ?>
    983                             <!-- Property Card -->
    984                             <div class="havenlytics-property-card-grid">
    985                                 <div class="havenlytics-property-grid-item">
    986                                     <div class="havenlytics-property-thumbnail-item">
    987                                         <div class="havenlytics-related-carousel-thumbnail">
    988                                             <?php if (has_post_thumbnail()) : ?>
    989                                             <?php the_post_thumbnail('havenlytics-property-related-thumb', array(
     983                                        <!-- Property Card -->
     984                                        <div class="havenlytics-property-card-grid">
     985                                            <div class="havenlytics-property-grid-item">
     986                                                <div class="havenlytics-property-thumbnail-item">
     987                                                    <div class="havenlytics-related-carousel-thumbnail">
     988                                                        <?php if (has_post_thumbnail()) : ?>
     989                                                            <?php the_post_thumbnail('havenlytics-property-related-thumb', array(
    990990                                                                'alt' => esc_attr(get_the_title()),
    991991                                                                'class' => 'img-fluid'
    992992                                                            )); ?>
    993                                             <?php else : ?>
    994                                             <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>"
    995                                                 alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>"
    996                                                 class="img-fluid" width="400" height="300" <?php endif; ?> </div>
    997 
    998                                             <?php if ($price) : ?>
    999                                             <div class="havenlytics-property-amount">
    1000                                                 <h5>
    1001                                                     <span>
    1002                                                         <?php echo esc_html($currency_symbol); ?>
    1003                                                         <?php echo esc_html($price); ?>
    1004                                                     </span>
    1005                                                 </h5>
    1006                                             </div>
    1007                                             <?php endif; ?>
    1008 
    1009                                             <?php if ($status_badge) : ?>
    1010                                             <div class="havenlytics-property-featured">
    1011                                                 <span><?php echo esc_html($status_badge); ?></span>
    1012                                             </div>
    1013                                             <?php endif; ?>
    1014                                         </div>
    1015 
    1016                                         <div class="havenlytics-property--content">
    1017                                             <h3 class="havenlytics-property-title">
    1018                                                 <a
    1019                                                     href="<?php the_permalink(); ?>"><?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?></a>
    1020                                             </h3>
    1021 
    1022                                             <?php if ($address) : ?>
    1023                                             <p class="havenlytics-property-location">
    1024                                                 <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24"
    1025                                                     fill="#6C60FE">
    1026                                                     <path
    1027                                                         d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z">
    1028                                                     </path>
    1029                                                 </svg>
    1030                                                 <?php echo esc_html($address); ?>
    1031                                             </p>
    1032                                             <?php endif; ?>
    1033 
    1034                                             <ul class="d-flex havenlytics-property-short-details">
    1035                                                 <?php if ($bedrooms) : ?>
    1036                                                 <li>
    1037                                                     <div class="heavenlytics-property-meta-item">
    1038                                                         <!-- Bedrooms SVG -->
    1039                                                         <svg fill="#6C60FE" width="20px" height="20px"
    1040                                                             viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1"
    1041                                                             xmlns="http://www.w3.org/2000/svg"
    1042                                                             xmlns:xlink="http://www.w3.org/1999/xlink"
    1043                                                             style="enable-background:new 0 0 122.88 99.94"
    1044                                                             xml:space="preserve">
    1045                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    1046                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    1047                                                                 stroke-linejoin="round"></g>
    1048                                                             <g id="SVGRepo_iconCarrier">
    1049                                                                 <g>
     993                                                        <?php else : ?>
     994                                                            <img src="<?php echo esc_url(HVNLY_PROPERTY_URL . 'public/assets/img/video-placeholder.png'); ?>"
     995                                                                alt="<?php esc_attr_e('Property Image', 'havenlytics'); ?>"
     996                                                                class="img-fluid" width="400" height="300" <?php endif; ?> </div>
     997
     998                                                            <?php if ($price) : ?>
     999                                                                <div class="havenlytics-property-amount">
     1000                                                                    <h5>
     1001                                                                        <span>
     1002                                                                            <?php echo esc_html($currency_symbol); ?>
     1003                                                                            <?php echo esc_html($price); ?>
     1004                                                                        </span>
     1005                                                                    </h5>
     1006                                                                </div>
     1007                                                            <?php endif; ?>
     1008
     1009                                                            <?php if ($status_badge) : ?>
     1010                                                                <div class="havenlytics-property-featured">
     1011                                                                    <span><?php echo esc_html($status_badge); ?></span>
     1012                                                                </div>
     1013                                                            <?php endif; ?>
     1014                                                    </div>
     1015
     1016                                                    <div class="havenlytics-property--content">
     1017                                                        <h3 class="havenlytics-property-title">
     1018                                                            <a
     1019                                                                href="<?php the_permalink(); ?>"><?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?></a>
     1020                                                        </h3>
     1021
     1022                                                        <?php if ($address) : ?>
     1023                                                            <p class="havenlytics-property-location">
     1024                                                                <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24"
     1025                                                                    fill="#6C60FE">
    10501026                                                                    <path
    1051                                                                         d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z">
     1027                                                                        d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z">
    10521028                                                                    </path>
    1053                                                                 </g>
    1054                                                             </g>
    1055                                                         </svg>
    1056                                                         <?php echo esc_html($bedrooms); ?>
    1057                                                         <?php esc_html_e('Beds', 'havenlytics'); ?>
     1029                                                                </svg>
     1030                                                                <?php echo esc_html($address); ?>
     1031                                                            </p>
     1032                                                        <?php endif; ?>
     1033
     1034                                                        <ul class="d-flex havenlytics-property-short-details">
     1035                                                            <?php if ($bedrooms) : ?>
     1036                                                                <li>
     1037                                                                    <div class="heavenlytics-property-meta-item">
     1038                                                                        <!-- Bedrooms SVG -->
     1039                                                                        <svg fill="#6C60FE" width="20px" height="20px"
     1040                                                                            viewBox="0 -11.47 122.88 122.88" version="1.1" id="Layer_1"
     1041                                                                            xmlns="http://www.w3.org/2000/svg"
     1042                                                                            xmlns:xlink="http://www.w3.org/1999/xlink"
     1043                                                                            style="enable-background:new 0 0 122.88 99.94"
     1044                                                                            xml:space="preserve">
     1045                                                                            <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     1046                                                                            <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     1047                                                                                stroke-linejoin="round"></g>
     1048                                                                            <g id="SVGRepo_iconCarrier">
     1049                                                                                <g>
     1050                                                                                    <path
     1051                                                                                        d="M4.22,67.36h114.31v-4.67c0-1.13-0.22-2.18-0.61-3.12c-0.42-1-1.04-1.89-1.81-2.66c-0.47-0.47-1-0.9-1.57-1.28 c-0.58-0.39-1.2-0.73-1.85-1.02c-1.75-0.38-3.49-0.74-5.22-1.08c-1.74-0.34-3.49-0.66-5.25-0.96c-0.08-0.01-0.14-0.02-0.22-0.04 c-0.89-0.15-1.74-0.29-2.55-0.42c-0.81-0.13-1.67-0.26-2.57-0.4l-0.02,0c-6.12-0.78-12.22-1.38-18.31-1.78 c-6.1-0.4-12.17-0.6-18.2-0.61c-3.58,0-7.15,0.06-10.72,0.2c-3.55,0.14-7.12,0.34-10.69,0.62l-0.02,0 c-3.34,0.31-6.67,0.7-10.01,1.15c-3.33,0.45-6.67,0.98-10.03,1.57l-0.37,0.09c-0.07,0.02-0.14,0.03-0.2,0.03 c-0.06,0.01-0.12,0.01-0.18,0.01c-1.57,0.28-3.18,0.59-4.84,0.92c-1.61,0.32-3.22,0.66-4.82,1.01c-0.4,0.22-0.78,0.47-1.14,0.73 c-0.36,0.27-0.71,0.56-1.02,0.87v0c-0.67,0.67-1.2,1.44-1.56,2.3c-0.34,0.81-0.53,1.71-0.53,2.69V67.36L4.22,67.36z M14.2,0h92.99 c1.21,0,2.37,0.24,3.43,0.68c1.1,0.46,2.09,1.13,2.92,1.95c0.83,0.83,1.5,1.82,1.95,2.92c0.44,1.06,0.68,2.22,0.68,3.43v42.69 c0.51,0.3,1.01,0.63,1.47,0.99c0.52,0.4,1.01,0.82,1.46,1.27c1.16,1.16,2.1,2.51,2.73,4.03c0.6,1.43,0.93,3.02,0.93,4.74v6.09 c0.03,0.1,0.06,0.2,0.08,0.3l0,0.02c0.02,0.13,0.03,0.25,0.03,0.37c0,0.13-0.01,0.26-0.04,0.39l0,0c-0.02,0.1-0.05,0.2-0.08,0.3 v27.66c0,0.58-0.24,1.11-0.62,1.49c-0.38,0.38-0.91,0.62-1.49,0.62h-4.35c-0.49,0-0.94-0.17-1.3-0.45 c-0.36-0.28-0.63-0.68-0.74-1.14c-0.8-2.3-1.61-4.12-2.48-5.54c-0.86-1.4-1.78-2.4-2.84-3.11c-1.07-0.71-2.35-1.16-3.9-1.43 c-1.58-0.28-3.42-0.37-5.61-0.36l-79.76,0.1l-0.04,0c-1.57-0.03-2.86,0.17-3.94,0.59c-1.07,0.42-1.94,1.05-2.66,1.86 c-0.81,0.9-1.49,2.05-2.11,3.39c-0.63,1.37-1.2,2.93-1.77,4.64l0,0c-0.14,0.44-0.42,0.79-0.77,1.04c-0.33,0.24-0.73,0.38-1.14,0.4 c-0.03,0.01-0.06,0.01-0.09,0.01H2.11c-0.58,0-1.11-0.24-1.49-0.62C0.24,98.94,0,98.41,0,97.83V61.52c0-1.57,0.3-3.01,0.84-4.31 c0.58-1.38,1.43-2.61,2.49-3.67c0.3-0.3,0.63-0.6,0.98-0.88c0.3-0.24,0.6-0.47,0.92-0.68V8.89c0-1.21,0.24-2.36,0.68-3.4 c0.46-1.09,1.13-2.07,1.96-2.89c0.83-0.82,1.82-1.47,2.91-1.92C11.84,0.24,12.99,0,14.2,0L14.2,0z M107.19,4.22H14.2 c-0.65,0-1.27,0.13-1.84,0.36c-0.59,0.24-1.11,0.59-1.55,1.02c-0.43,0.42-0.78,0.94-1.02,1.5C9.57,7.65,9.45,8.25,9.45,8.89v41.06 c0.3-0.1,0.6-0.18,0.91-0.26c0.49-0.13,0.98-0.24,1.47-0.32c0.68-0.12,1.42-0.25,2.22-0.39c0.6-0.1,1.24-0.21,1.9-0.31V38.19 c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55c1.38-0.57,2.89-0.89,4.47-0.89h19.82 c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81c0.57,1.38,0.89,2.89,0.89,4.47v6.69 c0.7-0.01,1.4-0.01,2.11-0.01v-6.68c0-1.58,0.32-3.09,0.89-4.47c0.6-1.44,1.47-2.73,2.55-3.81c1.08-1.08,2.37-1.95,3.81-2.55 c1.38-0.57,2.89-0.89,4.47-0.89h19.82c1.58,0,3.09,0.32,4.47,0.89c1.44,0.6,2.73,1.47,3.81,2.55c1.08,1.08,1.95,2.37,2.55,3.81 c0.57,1.38,0.89,2.89,0.89,4.47v10.34c0.75,0.11,1.55,0.24,2.41,0.38c0.95,0.15,1.86,0.3,2.74,0.45c0.45,0.08,0.91,0.17,1.37,0.28 c0.29,0.07,0.57,0.14,0.84,0.22V8.98c0-0.64-0.13-1.25-0.36-1.81c-0.24-0.58-0.6-1.1-1.04-1.55c-0.44-0.44-0.97-0.8-1.54-1.04 C108.44,4.35,107.83,4.22,107.19,4.22L107.19,4.22z M43.21,45.56c2.01-0.15,4.03-0.28,6.08-0.38c1.89-0.1,3.8-0.17,5.71-0.22v-6.77 c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64c-0.88-0.37-1.85-0.57-2.86-0.57H27.67 c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44c-0.37,0.88-0.57,1.85-0.57,2.86V48 c1.62-0.24,3.26-0.46,4.94-0.68c1.81-0.23,3.61-0.44,5.39-0.64c0.69-0.08,1.43-0.17,2.2-0.25c0.72-0.08,1.47-0.15,2.27-0.23 c1.36-0.13,2.71-0.25,4.04-0.36C40.37,45.75,41.77,45.65,43.21,45.56L43.21,45.56z M65.54,44.9c1.21,0.02,2.42,0.05,3.63,0.09 c1.34,0.04,2.68,0.1,4.01,0.16l0.01,0c2.19,0.08,4.33,0.18,6.41,0.3c2.08,0.12,4.11,0.27,6.05,0.44c2.82,0.25,5.55,0.55,8.14,0.9 c2.32,0.32,4.52,0.68,6.58,1.08v-9.68c0-1.01-0.2-1.98-0.57-2.86c-0.38-0.92-0.94-1.74-1.64-2.44c-0.69-0.69-1.52-1.25-2.44-1.64 c-0.88-0.37-1.85-0.57-2.86-0.57H73.05c-1.01,0-1.98,0.2-2.86,0.57c-0.92,0.38-1.74,0.94-2.44,1.64c-0.69,0.69-1.25,1.52-1.64,2.44 c-0.37,0.88-0.57,1.85-0.57,2.86V44.9L65.54,44.9z M118.54,71.59H4.22v24.13h1.43c0.56-1.58,1.14-3.05,1.79-4.36 c0.7-1.4,1.49-2.64,2.45-3.71c1.14-1.28,2.48-2.27,4.09-2.93c1.61-0.65,3.49-0.98,5.75-0.93l79.69-0.1c2.57,0,4.77,0.12,6.69,0.49 c1.95,0.37,3.63,1,5.14,2c1.4,0.93,2.6,2.16,3.68,3.77c1.03,1.54,1.95,3.43,2.83,5.76h0.76V71.59L118.54,71.59z">
     1052                                                                                    </path>
     1053                                                                                </g>
     1054                                                                            </g>
     1055                                                                        </svg>
     1056                                                                        <?php echo esc_html($bedrooms); ?>
     1057                                                                        <?php esc_html_e('Beds', 'havenlytics'); ?>
     1058                                                                    </div>
     1059                                                                </li>
     1060                                                            <?php endif; ?>
     1061
     1062                                                            <?php if ($bathrooms) : ?>
     1063                                                                <li>
     1064                                                                    <div class="heavenlytics-property-meta-item">
     1065                                                                        <!-- Bathrooms SVG -->
     1066                                                                        <svg fill="#6C60FE" width="20px" height="20px"
     1067                                                                            viewBox="0 0 512 512" id="Layer_1"
     1068                                                                            enable-background="new 0 0 512 512"
     1069                                                                            xmlns="http://www.w3.org/2000/svg">
     1070                                                                            <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     1071                                                                            <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     1072                                                                                stroke-linejoin="round"></g>
     1073                                                                            <g id="SVGRepo_iconCarrier">
     1074                                                                                <g>
     1075                                                                                    <path
     1076                                                                                        d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z">
     1077                                                                                    </path>
     1078                                                                                </g>
     1079                                                                            </g>
     1080                                                                        </svg>
     1081                                                                        <?php echo esc_html($bathrooms); ?>
     1082                                                                        <?php esc_html_e('Baths', 'havenlytics'); ?>
     1083                                                                    </div>
     1084                                                                </li>
     1085                                                            <?php endif; ?>
     1086
     1087                                                            <?php if ($sqft) : ?>
     1088                                                                <li>
     1089                                                                    <div class="heavenlytics-property-meta-item">
     1090                                                                        <!-- Area SVG -->
     1091                                                                        <svg fill="#6C60FE" width="20px" height="20px"
     1092                                                                            viewBox="0 0 256 256" id="Flat"
     1093                                                                            xmlns="http://www.w3.org/2000/svg">
     1094                                                                            <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
     1095                                                                            <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
     1096                                                                                stroke-linejoin="round" stroke="#CCCCCC"
     1097                                                                                stroke-width="7.68"></g>
     1098                                                                            <g id="SVGRepo_iconCarrier">
     1099                                                                                <path
     1100                                                                                    d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z">
     1101                                                                                </path>
     1102                                                                            </g>
     1103                                                                        </svg>
     1104                                                                        <?php echo esc_html(number_format($sqft)); ?>
     1105                                                                        <?php esc_html_e('sqft', 'havenlytics'); ?>
     1106                                                                    </div>
     1107                                                                </li>
     1108                                                            <?php endif; ?>
     1109                                                        </ul>
     1110
     1111                                                        <ul
     1112                                                            class="havenlytics-property-category d-flex justify-content-between align-items-center">
     1113                                                            <li>
     1114                                                                <a href="<?php the_permalink(); ?>"
     1115                                                                    class="havenlytics-btn-primary havenlytics-btn-style-1">
     1116                                                                    <?php esc_html_e('View Property', 'havenlytics'); ?>
     1117                                                                </a>
     1118                                                            </li>
     1119                                                        </ul>
    10581120                                                    </div>
    1059                                                 </li>
    1060                                                 <?php endif; ?>
    1061 
    1062                                                 <?php if ($bathrooms) : ?>
    1063                                                 <li>
    1064                                                     <div class="heavenlytics-property-meta-item">
    1065                                                         <!-- Bathrooms SVG -->
    1066                                                         <svg fill="#6C60FE" width="20px" height="20px"
    1067                                                             viewBox="0 0 512 512" id="Layer_1"
    1068                                                             enable-background="new 0 0 512 512"
    1069                                                             xmlns="http://www.w3.org/2000/svg">
    1070                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    1071                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    1072                                                                 stroke-linejoin="round"></g>
    1073                                                             <g id="SVGRepo_iconCarrier">
    1074                                                                 <g>
    1075                                                                     <path
    1076                                                                         d="m496 288c-38.154 0-437.487 0-448 0v-56h32c8.837 0 16-7.164 16-16v-40c0-8.836-7.163-16-16-16s-16 7.164-16 16v24h-16v-138.745c0-25.903 31.562-39.064 49.941-20.686l16.94 16.94c-13.424 23.401-10.164 53.835 9.805 73.805l8 8c6.247 6.248 16.379 6.249 22.627 0l64-64c6.249-6.248 6.249-16.379 0-22.627l-8-8c-20.35-20.351-50.837-23.06-73.817-9.817l-16.928-16.928c-11.57-11.57-26.952-17.942-43.313-17.942-33.776 0-61.255 27.479-61.255 61.255v226.745c-8.837 0-16 7.164-16 16s7.163 16 16 16v32c0 43.889 19.742 83.247 50.806 109.681l-22.338 23.229c-9.803 10.193-2.445 27.09 11.53 27.09 4.199 0 8.394-1.644 11.534-4.91l26.218-27.263c19.844 10.326 42.376 16.173 66.25 16.173h192c23.874 0 46.406-5.847 66.25-16.173l26.218 27.263c6.106 6.35 16.234 6.585 22.623.442 6.369-6.125 6.566-16.254.441-22.623l-22.338-23.229c31.064-26.433 50.806-65.791 50.806-109.68v-32c8.837 0 16-7.164 16-16s-7.163-16-16-16zm-310.89-223.738-40.845 40.845c-8.246-11.427-7.23-27.515 3.048-37.794 10.378-10.377 26.461-11.259 37.797-3.051zm278.89 287.738c0 61.757-50.243 112-112 112h-192c-61.757 0-112-50.243-112-112v-32h416z">
    1077                                                                     </path>
    1078                                                                 </g>
    1079                                                             </g>
    1080                                                         </svg>
    1081                                                         <?php echo esc_html($bathrooms); ?>
    1082                                                         <?php esc_html_e('Baths', 'havenlytics'); ?>
    1083                                                     </div>
    1084                                                 </li>
    1085                                                 <?php endif; ?>
    1086 
    1087                                                 <?php if ($sqft) : ?>
    1088                                                 <li>
    1089                                                     <div class="heavenlytics-property-meta-item">
    1090                                                         <!-- Area SVG -->
    1091                                                         <svg fill="#6C60FE" width="20px" height="20px"
    1092                                                             viewBox="0 0 256 256" id="Flat"
    1093                                                             xmlns="http://www.w3.org/2000/svg">
    1094                                                             <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
    1095                                                             <g id="SVGRepo_tracerCarrier" stroke-linecap="round"
    1096                                                                 stroke-linejoin="round" stroke="#CCCCCC"
    1097                                                                 stroke-width="7.68"></g>
    1098                                                             <g id="SVGRepo_iconCarrier">
    1099                                                                 <path
    1100                                                                     d="M240,211.98316H227.99414v-108a12.01343,12.01343,0,0,0-12-12h-68v-52a12.01343,12.01343,0,0,0-12-12h-96a12.01343,12.01343,0,0,0-12,12v172H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8Zm-24.00586-112a4.00426,4.00426,0,0,1,4,4v108h-72v-112Zm-180-60a4.00427,4.00427,0,0,1,4-4h96a4.00426,4.00426,0,0,1,4,4v172h-104Zm24,32a4.0002,4.0002,0,0,1,4-4h32a4,4,0,1,1,0,8h-32A4.0002,4.0002,0,0,1,59.99414,71.98316Zm56,64a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,115.99414,135.98316Zm-16,40a4.0002,4.0002,0,0,1-4,4h-32a4,4,0,0,1,0-8h32A4.0002,4.0002,0,0,1,99.99414,175.98316Zm96,0a4.0002,4.0002,0,0,1-4,4h-16a4,4,0,0,1,0-8h16A4.0002,4.0002,0,0,1,195.99414,175.98316Zm-24-40a4.0002,4.0002,0,0,1,4-4h16a4,4,0,1,1,0,8h-16A4.0002,4.0002,0,0,1,171.99414,135.98316Z">
    1101                                                                 </path>
    1102                                                             </g>
    1103                                                         </svg>
    1104                                                         <?php echo esc_html(number_format($sqft)); ?>
    1105                                                         <?php esc_html_e('sqft', 'havenlytics'); ?>
    1106                                                     </div>
    1107                                                 </li>
    1108                                                 <?php endif; ?>
    1109                                             </ul>
    1110 
    1111                                             <ul
    1112                                                 class="havenlytics-property-category d-flex justify-content-between align-items-center">
    1113                                                 <li>
    1114                                                     <a href="<?php the_permalink(); ?>"
    1115                                                         class="havenlytics-btn-primary havenlytics-btn-style-1">
    1116                                                         <?php esc_html_e('View Property', 'havenlytics'); ?>
    1117                                                     </a>
    1118                                                 </li>
    1119                                             </ul>
    1120                                         </div>
    1121                                     </div>
    1122                                 </div>
    1123                                 <!-- /Property Card -->
    1124                                 <?php
     1121                                                </div>
     1122                                            </div>
     1123                                            <!-- /Property Card -->
     1124                                        <?php
    11251125                                    endwhile;
    11261126                                    wp_reset_postdata();
    11271127                                else : ?>
    1128                                 <p><?php esc_html_e('No similar properties found.', 'havenlytics'); ?></p>
    1129                                 <?php endif; ?>
     1128                                        <p><?php esc_html_e('No similar properties found.', 'havenlytics'); ?></p>
     1129                                    <?php endif; ?>
     1130                                        </div>
    11301131                            </div>
    11311132                        </div>
    11321133                    </div>
    1133                 </div>
    1134                 <!-- /Similar Listings -->
    1135 
    1136 
    1137             </div>
    1138         </div>
    1139 
    1140         <?php endwhile; ?>
    1141     </div>
    1142 
    1143 
    1144 
    1145 
    1146 
    1147     <!-- Make Enquiry Popup -->
    1148     <div class="havenlytics_popup_overlay" id="havenlytics_popup_enquiry">
    1149         <div class="havenlytics_popup_container havenlytics_popup_animate_flip">
    1150             <div class="fullscreen-indicator">Full Screen Mode</div>
    1151             <div class="havenlytics_popup_controls">
    1152                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1153                     <i class="fas fa-expand"></i>
    1154                 </div>
    1155                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1156                     <i class="fas fa-times"></i>
     1134                    <!-- /Similar Listings -->
     1135
     1136
    11571137                </div>
    11581138            </div>
    1159             <div class="havenlytics_popup_content">
    1160                 <h2 class="havenlytics_popup_title">Book Property</h2>
    1161                 <p>Fill out the form below and our team will get back to you as soon as possible.</p>
    1162 
    1163                 <div class="havenlytics_popup_form">
    1164                     <?php
    1165                         $book_property = get_post_meta($post->ID, '_havenlytics_property_book_property', true);
    1166 
    1167                         if (!empty($book_property)) {
    1168                             echo do_shortcode(wp_kses_post($book_property));
    1169                         }
    1170                         ?>
    1171 
    1172                 </div>
    1173             </div>
     1139
     1140        <?php endwhile; ?>
    11741141        </div>
    1175     </div>
    1176 
    1177     <!-- Virtual Tour Popup -->
    1178     <div class="havenlytics_popup_overlay" id="havenlytics_popup_virtualTour">
    1179         <div class="havenlytics_popup_container havenlytics_popup_animate_3d">
    1180             <div class="fullscreen-indicator">Full Screen Mode</div>
    1181             <div class="havenlytics_popup_controls">
    1182                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1183                     <i class="fas fa-expand"></i>
    1184                 </div>
    1185                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1186                     <i class="fas fa-times"></i>
    1187                 </div>
    1188             </div>
    1189             <div class="havenlytics_popup_content">
    1190                 <h2 class="havenlytics_popup_title">3D Virtual Tour</h2>
    1191                 <p>Explore this beautiful property through our immersive 360° virtual tour.</p>
    1192 
    1193                 <?php
    1194                     $virtual_tour_url = get_post_meta($post->ID, '_havenlytics_property_virtual_tour', true);
    1195                     ?>
    1196 
    1197                 <div class="havenlytics_popup_virtual_tour" style="height: 100vh;">
    1198                     <?php if (!empty($virtual_tour_url)) : ?>
    1199                     <iframe src="<?php echo esc_url($virtual_tour_url); ?>" width="100%" height="100%" frameborder="0"
    1200                         allowfullscreen loading="lazy" style="border: none; height: 100%; width: 100%;"></iframe>
    1201                     <?php else : ?>
    1202                     <div class="virtual-tour-placeholder">
    1203                         <i class="fas fa-vr-cardboard"></i>
    1204                         <h3>Interactive 3D Tour</h3>
    1205                         <p>Navigate through each room with our virtual reality experience</p>
    1206                     </div>
    1207                     <?php endif; ?>
    1208                 </div>
    1209 
    1210 
    1211             </div>
    1212         </div>
    1213     </div>
    1214 
    1215     <!-- Floorplan Popup -->
    1216     <div class="havenlytics_popup_overlay" id="havenlytics_popup_floorplan">
    1217         <div class="havenlytics_popup_container havenlytics_popup_animate_slide">
    1218             <div class="fullscreen-indicator">Full Screen Mode</div>
    1219             <div class="havenlytics_popup_controls">
    1220                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1221                     <i class="fas fa-expand"></i>
    1222                 </div>
    1223                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1224                     <i class="fas fa-times"></i>
    1225                 </div>
    1226             </div>
    1227             <div class="havenlytics_popup_content">
    1228                 <h2 class="havenlytics_popup_title">Property Floorplan</h2>
    1229                 <p>Detailed layout showing room dimensions and spatial relationships.</p>
    1230 
    1231 
    1232                 <?php
    1233                     $floorplan_url = get_post_meta($post->ID, '_havenlytics_property_floorplan_img', true);
    1234                     ?>
    1235 
    1236 
    1237                 <?php if (!empty($floorplan_url)) : ?>
    1238                 <img src="<?php echo esc_url($floorplan_url); ?>" alt="Property Floorplan"
    1239                     style="width: 100%; height: 100%; object-fit: cover; border-radius: 8px;">
    1240                 <?php else : ?>
    1241                 <div class="havenlytics_popup_floorplan">
    1242                     <div style="text-align: center; color: #7f8c8d;">
    1243                         <i class="fas fa-drafting-compass" style="font-size: 4rem; margin-bottom: 15px;"></i>
    1244                         <h3>Detailed Floorplan</h3>
    1245                         <p>PDF document with measurements and layout</p>
    1246                     </div>
    1247                 </div>
    1248                 <?php endif; ?>
    1249 
    1250 
    1251 
    1252 
    1253 
    1254 
    1255             </div>
    1256         </div>
    1257     </div>
    1258 
    1259     <!-- Brochure Popup -->
    1260     <div class="havenlytics_popup_overlay" id="havenlytics_popup_brochure">
    1261         <div class="havenlytics_popup_container havenlytics_popup_animate_rotate">
    1262             <div class="fullscreen-indicator">Full Screen Mode</div>
    1263             <div class="havenlytics_popup_controls">
    1264                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1265                     <i class="fas fa-expand"></i>
    1266                 </div>
    1267                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1268                     <i class="fas fa-times"></i>
    1269                 </div>
    1270             </div>
    1271             <?php
    1272                 $brochure_pdf = get_post_meta(get_the_ID(), '_havenlytics_property_brochure_pdf', true);
    1273                 ?>
    1274 
    1275             <div class="havenlytics_popup_content">
    1276                 <h2 class="havenlytics_popup_title">Property Brochure</h2>
    1277                 <p>Download our comprehensive brochure with high-quality photos and details.</p>
    1278 
    1279                 <div class="havenlytics_popup_brochure">
    1280                     <?php if (!empty($brochure_pdf)) : ?>
    1281                     <iframe src="<?php echo esc_url($brochure_pdf); ?>" width="100%" height="700"
    1282                         style="border: none;"></iframe>
    1283                     <?php else : ?>
    1284                     <div style="text-align: center; color: #7f8c8d;">
    1285                         <i class="fas fa-file-pdf" style="font-size: 4rem; margin-bottom: 15px;"></i>
    1286                         <h3>Property Brochure</h3>
    1287                         <p>Detailed PDF document with all property information</p>
    1288                     </div>
    1289                     <?php endif; ?>
    1290                 </div>
    1291 
    1292                 <?php if (!empty($brochure_pdf)) : ?>
    1293                 <a href="<?php echo esc_url($brochure_pdf); ?>" download class="havenlytics_popup_submit"
    1294                     style="margin-top: 20px; display: inline-block;">
    1295                     <i class="fas fa-download"></i> Download Brochure (PDF)
    1296                 </a>
    1297                 <?php endif; ?>
    1298             </div>
    1299 
    1300         </div>
    1301     </div>
    1302 
    1303     <!-- View EPC Popup -->
    1304     <div class="havenlytics_popup_overlay" id="havenlytics_popup_epc">
    1305         <div class="havenlytics_popup_container havenlytics_popup_animate_bounce">
    1306             <div class="fullscreen-indicator">Full Screen Mode</div>
    1307             <div class="havenlytics_popup_controls">
    1308                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1309                     <i class="fas fa-expand"></i>
    1310                 </div>
    1311                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1312                     <i class="fas fa-times"></i>
    1313                 </div>
    1314             </div>
    1315             <?php
    1316                 $epc_pdf = get_post_meta(get_the_ID(), '_havenlytics_property_epc_pdf', true);
    1317                 ?>
    1318 
    1319             <div class="havenlytics_popup_content">
    1320                 <h2 class="havenlytics_popup_title">Energy Performance Certificate</h2>
    1321                 <p>Energy efficiency rating of the property.</p>
    1322 
    1323                 <div class="havenlytics_popup_epc">
    1324                     <?php if (!empty($epc_pdf)) : ?>
    1325                     <iframe src="<?php echo esc_url($epc_pdf); ?>" width="100%" height="700"
    1326                         style="border: 1px solid #ccc;" allowfullscreen>
    1327                     </iframe>
    1328                     <?php else : ?>
    1329                     <div style="text-align: center; color: #7f8c8d;">
    1330                         <div style="font-size: 5rem; font-weight: bold; color: #27ae60; margin-bottom: 15px;">B</div>
    1331                         <h3>Energy Rating: B (82)</h3>
    1332                         <p>Potential Rating: A (94)</p>
    1333                     </div>
    1334                     <?php endif; ?>
    1335                 </div>
    1336 
    1337                 <?php if (!empty($epc_pdf)) : ?>
    1338                 <a href="<?php echo esc_url($epc_pdf); ?>" target="_blank" class="havenlytics_popup_submit"
    1339                     style="margin-top: 20px; display: inline-block; text-align: center;">
    1340                     <i class="fas fa-download"></i> Download EPC (PDF)
    1341                 </a>
    1342                 <?php else : ?>
    1343                 <button class="havenlytics_popup_submit" style="margin-top: 20px;" disabled>
    1344                     <i class="fas fa-download"></i> Download EPC (PDF)
    1345                 </button>
    1346                 <?php endif; ?>
    1347             </div>
    1348 
    1349         </div>
    1350     </div>
    1351 
    1352     <!-- Map Popup -->
    1353     <div class="havenlytics_popup_overlay" id="havenlytics_popup_map">
    1354         <div class="havenlytics_popup_container havenlytics_popup_animate_zoom">
    1355             <div class="fullscreen-indicator">Full Screen Mode</div>
    1356             <div class="havenlytics_popup_controls">
    1357                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1358                     <i class="fas fa-expand"></i>
    1359                 </div>
    1360                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1361                     <i class="fas fa-times"></i>
    1362                 </div>
    1363             </div>
    1364             <?php
    1365                 $map_url = get_post_meta(get_the_ID(), '_havenlytics_property_map_url', true);
    1366                 ?>
    1367 
    1368             <div class="havenlytics_popup_content">
    1369                 <h2 class="havenlytics_popup_title">Property Location</h2>
    1370                 <p>Located in a desirable neighborhood with excellent amenities.</p>
    1371 
    1372                 <div class="havenlytics_popup_map">
    1373                     <?php if (!empty($map_url)) : ?>
    1374                     <iframe src="<?php echo esc_url($map_url); ?>" width="100%" height="700" style="border:0;"
    1375                         allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade">
    1376                     </iframe>
    1377                     <?php else : ?>
    1378                     <div style="text-align: center; color: #7f8c8d;">
    1379                         <i class="fas fa-map-marked-alt" style="font-size: 4rem; margin-bottom: 15px;"></i>
    1380                         <h3>Interactive Map</h3>
    1381                         <p>Explore the neighborhood and nearby amenities</p>
    1382                     </div>
    1383                     <?php endif; ?>
    1384                 </div>
    1385             </div>
    1386 
    1387         </div>
    1388     </div>
    1389 
    1390     <!-- Arrange Viewing Popup -->
    1391     <div class="havenlytics_popup_overlay" id="havenlytics_popup_viewing">
    1392         <div class="havenlytics_popup_container havenlytics_popup_animate_flip">
    1393             <div class="fullscreen-indicator">Full Screen Mode</div>
    1394             <div class="havenlytics_popup_controls">
    1395                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1396                     <i class="fas fa-expand"></i>
    1397                 </div>
    1398                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1399                     <i class="fas fa-times"></i>
    1400                 </div>
    1401             </div>
    1402             <div class="havenlytics_popup_content">
    1403                 <h2 class="havenlytics_popup_title">Arrange a Viewing</h2>
    1404                 <p>Schedule a time to visit this property.</p>
    1405 
    1406                 <div class="havenlytics_popup_form">
    1407                     <?php
    1408                         $request_callback = get_post_meta($post->ID, '_havenlytics_property_request_call', true);
    1409 
    1410                         if (!empty($request_callback)) {
    1411                             echo do_shortcode(wp_kses_post($request_callback));
    1412                         }
    1413                         ?>
    1414 
    1415                 </div>
    1416             </div>
    1417         </div>
    1418     </div>
    1419 
    1420     <!-- Contact Agent Popup -->
    1421     <div class="havenlytics_popup_overlay" id="havenlytics_popup_agent">
    1422         <div class="havenlytics_popup_container havenlytics_popup_animate_rotate">
    1423             <div class="fullscreen-indicator">Full Screen Mode</div>
    1424             <div class="havenlytics_popup_controls">
    1425                 <div class="havenlytics_popup_control_btn havenlytics_popup_fullscreen">
    1426                     <i class="fas fa-expand"></i>
    1427                 </div>
    1428                 <div class="havenlytics_popup_control_btn havenlytics_popup_close">
    1429                     <i class="fas fa-times"></i>
    1430                 </div>
    1431             </div>
    1432             <div class="havenlytics_popup_content">
    1433                 <h2 class="havenlytics_popup_title">Request Call Back</h2>
    1434                 <p>Get in touch with our dedicated agent for this property.</p>
    1435 
    1436 
    1437 
    1438                 <div class="havenlytics_popup_form">
    1439                     <?php
    1440                         $arrange_viewing = get_post_meta($post->ID, '_havenlytics_property_arrange_view', true);
    1441 
    1442                         if (!empty($arrange_viewing)) {
    1443                             echo do_shortcode(wp_kses_post($arrange_viewing));
    1444                         }
    1445                         ?>
    1446 
    1447                 </div>
    1448             </div>
    1449         </div>
    1450     </div>
    1451 
    1452 
    1453 
    1454 
    1455     <?php get_footer(); ?>
     1142
     1143
     1144
     1145        <?php
     1146        // Template part to load modals
     1147        $modals = [
     1148            'modal-enquiry',
     1149            'modal-virtual-tour',
     1150            'modal-floorplan',
     1151            'modal-brochure',
     1152            'modal-epc',
     1153            'modal-map',
     1154            'modal-viewing',
     1155            'modal-agent'
     1156        ];
     1157
     1158        foreach ($modals as $modal) {
     1159            include HVNLY_PROPERTY_PATH . 'includes/modals/' . $modal . '.php';
     1160        }
     1161        ?>
     1162
     1163
     1164
     1165
     1166        <?php get_footer(); ?>
  • havenlytics/trunk/templates/property-card-grid.php

    r3322295 r3333158  
    44 * Grid view property card template
    55 */
    6 $property_id = get_the_ID();
    7 $meta_fields = $this->get_property_meta_fields($property_id);
     6// $property_id = get_the_ID();
     7// $meta_fields = $this->get_property_meta_fields($property_id);
    88
    99?>
  • havenlytics/trunk/templates/property-card-list.php

    r3322295 r3333158  
    44 * List view property card template
    55 */
    6 $property_id = get_the_ID();
    7 $meta_fields = $this->get_property_meta_fields($property_id);
    8 $short_description = get_post_meta($property_id, '_havenlytics_short_description', true);
    9 $short_info = wp_trim_words($short_description, 18, '...');
     6// $property_id = get_the_ID();
     7// $meta_fields = $this->get_property_meta_fields($property_id);
     8// $short_description = get_post_meta($property_id, '_havenlytics_short_description', true);
     9// $short_info = wp_trim_words($short_description, 18, '...');
    1010
    1111
  • havenlytics/trunk/templates/property-card.php

    r3315596 r3333158  
    44 * Default property card template with attribute support
    55 */
    6 $property_id = get_the_ID();
    7 $meta_fields = $this->get_property_meta_fields($property_id);
    8 $excerpt_length = isset($atts['excerpt_length']) ? (int)$atts['excerpt_length'] : 20;
     6// $property_id = get_the_ID();
     7// $meta_fields = $this->get_property_meta_fields($property_id);
     8// $excerpt_length = isset($atts['excerpt_length']) ? (int)$atts['excerpt_length'] : 20;
    99?>
    1010
    11 <div class="<?php echo $view_type === 'grid' ? 'heavenlytics-col' : 'heavenlytics-list-item'; ?>">
    12     <div class="heavenlytics-property-card">
    13         <div class="heavenlytics-property-card-image">
    14             <?php if ($meta_fields['featured_image']) : ?>
    15             <img src="<?php echo esc_url($meta_fields['featured_image']); ?>" alt="<?php the_title_attribute(); ?>">
    16             <?php else : ?>
    17             <img src="<?php echo esc_url($meta_fields['default_image']); ?>" alt="<?php the_title_attribute(); ?>">
    18             <?php endif; ?>
     11<!-- Property grid -->
     12<div class="col-lg-4 col-md-6">
     13    <div class="havenlytics-property-card-grid">
     14        <div class="havenlytics-property-grid-item">
     15            <div class="havenlytics-property-gallery">
    1916
    20             <?php if ($meta_fields['status_badge']) : ?>
    21             <span class="heavenlytics-property-badge"><?php echo esc_html($meta_fields['status_badge']); ?></span>
    22             <?php endif; ?>
    23         </div>
     17                <?php
     18                // Prepare gallery data
     19                $gallery       = get_post_meta($property_id, '_havenlytics_gallery', true);
     20                $gallery_images = ! empty($gallery) ? explode(',', $gallery) : array();
    2421
    25         <div class="heavenlytics-property-card-content">
    26             <?php if ($view_type !== 'list' && (!isset($atts['show_price']) || $atts['show_price'] !== 'no')) : ?>
    27             <?php if ($meta_fields['price']) : ?>
    28             <div class="heavenlytics-property-price"><span>$ </span><?php echo esc_html($meta_fields['price']); ?></div>
    29             <?php endif; ?>
    30             <?php endif; ?>
     22                // Show only the featured or default image if 4 or fewer gallery images exist.
     23                if (count($gallery_images) <= 3) :
    3124
    32             <h3 class="heavenlytics-property-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
     25                    $featured_image = isset($meta_fields['featured_image']) ? esc_url($meta_fields['featured_image']) : '';
     26                    $default_image  = isset($meta_fields['default_image']) ? esc_url($meta_fields['default_image']) : '';
    3327
    34             <?php if ($meta_fields['type_label']) : ?>
    35             <div class="heavenlytics-property-type"><?php echo esc_html($meta_fields['type_label']); ?></div>
    36             <?php endif; ?>
     28                ?>
     29                    <a href="<?php echo esc_url(get_the_permalink()); ?>" class="havenlytics-property-img">
     30                        <img src="<?php echo esc_url($featured_image ? $featured_image : $default_image); ?>"
     31                            class="img-fluid" alt="<?php echo esc_attr(get_the_title()); ?>">
     32                    </a>
    3733
    38             <div class="heavenlytics-property-meta">
    39                 <?php if (!isset($atts['show_beds']) || $atts['show_beds'] !== 'no') : ?>
    40                 <?php $this->render_meta_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'beds'); ?>
     34
     35                <?php else : ?>
     36
     37                    <div class="havenlytics-carousel-gallery"
     38                        id="havenlytics-carousel-gallery-<?php echo esc_attr($property_id); ?>">
     39                        <div class="havenlytics-carousel-track">
     40                            <?php
     41                            foreach ($gallery_images as $image_id) :
     42                                $image_url = wp_get_attachment_image_url($image_id, 'large');
     43                            ?>
     44                                <div class="havenlytics-carousel-slide"
     45                                    style="background-image: url('<?php echo esc_url($image_url); ?>');">
     46                                </div>
     47                            <?php endforeach; ?>
     48                        </div>
     49
     50                        <div class="havenlytics-carousel-nav">
     51                            <button class="havenlytics-carousel-nav-btn havenlytics-carousel-prev-btn">
     52                                <i class="fas fa-chevron-left"></i>
     53                            </button>
     54                            <button class="havenlytics-carousel-nav-btn havenlytics-carousel-next-btn">
     55                                <i class="fas fa-chevron-right"></i>
     56                            </button>
     57                        </div>
     58
     59                        <div class="havenlytics-carousel-indicators">
     60                            <?php foreach ($gallery_images as $index => $image_id) : ?>
     61                                <div
     62                                    class="havenlytics-carousel-indicator <?php echo (0 === $index) ? 'havenlytics-carousel-active' : ''; ?>">
     63                                </div>
     64                            <?php endforeach; ?>
     65                        </div>
     66                    </div>
     67
    4168                <?php endif; ?>
    4269
    43                 <?php if (!isset($atts['show_baths']) || $atts['show_baths'] !== 'no') : ?>
    44                 <?php $this->render_meta_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'baths'); ?>
     70
     71
     72                <?php if ($meta_fields['price']) : ?>
     73                    <?php
     74                    // Get the currency symbol
     75                    $currency_sign = $this->get_currency_symbol($property_id);
     76                    ?>
     77                    <div class="havenlytics-property-amount">
     78                        <h5><span><?php echo esc_html($currency_sign); ?> <?php echo esc_html($meta_fields['price']); ?>
     79                            </span></h5>
     80                    </div>
    4581                <?php endif; ?>
    4682
    47                 <?php if (!isset($atts['show_sqft']) || $atts['show_sqft'] !== 'no') : ?>
    48                 <?php $this->render_meta_item($meta_fields['sqft'], __('sqft', 'havenlytics'), 'sqft'); ?>
     83
     84                <?php if ($meta_fields['status_badge']) : ?>
     85                    <div class="havenlytics-property-featured">
     86                        <span><?php echo esc_html($meta_fields['status_badge']); ?></span>
     87                    </div>
    4988                <?php endif; ?>
     89                <!-- <div class="new-featured">
     90                    <span>New</span>
     91                </div> -->
     92                <!-- <a href="javascript:void(0)">
     93                    <div class="havenlytics-property-favourite havenlytics-property-selected">
     94                        <i class="fa-regular fa-heart"></i>
     95                    </div>
     96                </a> -->
    5097            </div>
     98            <div class="havenlytics-property--content">
     99                <?php $this->render_star_feedback($property_id, '_havenlytics_rating_star'); ?>
    51100
    52             <?php if (!isset($atts['show_excerpt']) || $atts['show_excerpt'] !== 'no') : ?>
    53             <div class="heavenlytics-property-excerpt">
     101                <h3 class="havenlytics-property-title">
     102                    <a href="<?php echo esc_url(get_the_permalink()); ?>">
     103                        <?php echo esc_html(wp_trim_words(get_the_title(), 4, '...')); ?>
     104                    </a>
     105                </h3>
    54106
    55                 <?php echo esc_html(wp_trim_words(get_the_excerpt(), $excerpt_length)); ?>
    56             </div>
    57             <?php endif; ?>
    58107
    59             <div class="heavenlytics-property-footer">
    60                 <?php if ((!isset($atts['show_location']) || $atts['show_location'] !== 'no') && $meta_fields['city']) : ?>
    61                 <div class="heavenlytics-property-location">
    62                     <svg viewBox="0 0 24 24">
    63                         <path
    64                             d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
    65                     </svg>
    66                     <?php echo esc_html($meta_fields['city']); ?>
    67                 </div>
     108
     109                <?php if ($meta_fields['city']) : ?>
     110                    <p class="havenlytics-property-location">
     111                        <svg class="custom-icon" width="20px" height="20px" viewBox="0 0 24 24" fill="#6C60FE">
     112                            <path
     113                                d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" />
     114                        </svg>
     115                        <?php echo esc_html($meta_fields['city']); ?>
     116                    </p>
     117                <?php endif; ?>
     118                <?php if (! empty($meta_fields['bedrooms']) || ! empty($meta_fields['bathrooms']) || ! empty($meta_fields['sqft'])) : ?>
     119                    <ul class="d-flex havenlytics-property-short-details">
     120                        <li>
     121
     122                            <?php $this->render_meta_item($meta_fields['bedrooms'], __('Beds', 'havenlytics'), 'beds'); ?>
     123                        </li>
     124                        <li>
     125
     126                            <?php $this->render_meta_item($meta_fields['bathrooms'], __('Baths', 'havenlytics'), 'baths'); ?>
     127                        </li>
     128                        <li>
     129
     130                            <?php $this->render_meta_item($meta_fields['sqft'], __('sqft', 'havenlytics'), 'sqft'); ?>
     131                        </li>
     132                    </ul>
    68133                <?php endif; ?>
    69134
    70                 <a href="<?php the_permalink(); ?>" class="heavenlytics-property-link">
    71                     <?php esc_html_e('View Details', 'havenlytics'); ?>
    72                 </a>
     135                <ul class="havenlytics-property-category d-flex justify-content-between align-items-center">
     136                    <!-- <li class="havenlytics-property-user-info">
     137                        <?php
     138                        // $author_id     = get_post_field('post_author', get_the_ID());
     139                        // $avatar_url    = get_avatar_url($author_id, ['size' => 96]);
     140                        // $author_name   = get_the_author_meta('display_name', $author_id);
     141                        // $author_url    = get_author_posts_url($author_id);
     142                        // $user_location = get_user_meta($author_id, 'location', true); // Optional custom meta
     143                        // $user_location = $user_location ? $user_location : esc_html__('Agent', 'havenlytics');
     144                        ?>
     145
     146                        <a href="<?php // echo esc_url($author_url);
     147                                    ?>">
     148                            <img src="<?php // echo esc_url($avatar_url);
     149                                        ?>" class="img-fluid avatar"
     150                                alt="<?php // echo esc_attr($author_name);
     151                                        ?>">
     152                        </a>
     153                        <div class="havenlytics-property-user-name">
     154                            <a href="<?php //echo esc_url($author_url);
     155                                        ?>"><?php //echo esc_html($author_name);
     156                                            ?></a>
     157                            <p><?php //echo esc_html($user_location);
     158                                ?></p>
     159                        </div>
     160
     161                    </li> -->
     162                    <li>
     163                        <a href="<?php the_permalink(); ?>" class="havenlytics-btn-primary havenlytics-btn-style-2">
     164                            <?php esc_html_e('View Property', 'havenlytics'); ?>
     165                        </a>
     166                    </li>
     167                </ul>
    73168            </div>
    74169        </div>
    75170    </div>
    76171</div>
     172<!-- /Property grid -->
Note: See TracChangeset for help on using the changeset viewer.