Compare commits

..

2 Commits
dev ... release

Author SHA1 Message Date
Ubuntu
2bb4747426 insert property data 2025-09-10 17:40:07 +05:30
Ubuntu
9bb7f6a727 V1.0.0-rc 2025-09-10 03:49:08 +05:30
3 changed files with 1317 additions and 482 deletions

View File

@ -247,7 +247,7 @@
.draggable-table-container .resize-handle.resize-sw { bottom: -4px; left: -4px; cursor: sw-resize; } .draggable-table-container .resize-handle.resize-sw { bottom: -4px; left: -4px; cursor: sw-resize; }
.draggable-table-container .resize-handle.resize-se { bottom: -4px; right: -4px; cursor: se-resize; } .draggable-table-container .resize-handle.resize-se { bottom: -4px; right: -4px; cursor: se-resize; }
/* Draggable table container (mirrors images) */ /* Draggable table container (mirrors images) */
.draggable-table-container { position: absolute; cursor: move; user-select: none; z-index: 1000; border: 2px dashed #667eea; border-radius: 8px; background: #ffffff; } .draggable-table-container { position: absolute; cursor: move; user-select: none; z-index: 1000; border: 2px solid transparent; border-radius: 8px; background: #ffffff; }
.draggable-table-container .resize-handle { opacity: 1; } .draggable-table-container .resize-handle { opacity: 1; }
.asgar1-preview .cover-hero { position: relative; height: 180px; overflow: hidden; border-radius: 10px; margin: 12px; background: #222; background-size: cover; background-position: center; } .asgar1-preview .cover-hero { position: relative; height: 180px; overflow: hidden; border-radius: 10px; margin: 12px; background: #222; background-size: cover; background-position: center; }
.asgar1-preview .cover-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.35)); } .asgar1-preview .cover-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.35)); }
@ -638,12 +638,315 @@ late particularay
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.15); box-shadow: 0 20px 50px rgba(0, 0, 0, 0.15);
border-color: #C0A062; border-color: #C0A062;
background: #ffffff; background: #ffffff;
animation: templateHoverPulse 0.6s ease-in-out;
}
/* Enhanced hover animation */
@keyframes templateHoverPulse {
0% {
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08);
}
50% {
box-shadow: 0 25px 60px rgba(192, 160, 98, 0.25);
}
100% {
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.15);
}
}
/* Additional hover effects for template content */
.template-card:hover .template-content {
transform: translateY(-2px);
transition: transform 0.3s ease;
}
/* Hover effect for template titles */
.template-card:hover h1,
.template-card:hover h2,
.template-card:hover h3 {
color: #C0A062;
transition: color 0.3s ease;
}
/* Hover effect for template preview images */
.template-card:hover .gallery-item,
.template-card:hover .hero,
.template-card:hover .p1-image-side,
.template-card:hover .p2-image,
.template-card:hover .vision-image {
transform: scale(1.05);
transition: transform 0.3s ease;
filter: brightness(1.1);
}
/* Hover effect for buttons within templates */
.template-card:hover .cta-btn,
.template-card:hover .btn {
background: #C0A062 !important;
color: white !important;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(192, 160, 98, 0.3);
transition: all 0.3s ease;
}
/* Hover effect for property stats */
.template-card:hover .stat-item,
.template-card:hover .feature-item {
color: #C0A062;
transform: translateX(5px);
transition: all 0.3s ease;
}
/* Hover effect for amenities and lists */
.template-card:hover .amenity-item,
.template-card:hover .amenities-list li {
color: #C0A062;
transform: translateX(8px);
transition: all 0.3s ease;
}
/* Hover effect for icons */
.template-card:hover .fa-solid,
.template-card:hover .fa-check {
color: #C0A062;
transform: scale(1.2);
transition: all 0.3s ease;
}
/* Hover effect for property details */
.template-card:hover .spec-item,
.template-card:hover .item {
border-left: 3px solid #C0A062;
padding-left: 8px;
transition: all 0.3s ease;
}
/* Hover effect for contact info */
.template-card:hover .agent-info,
.template-card:hover .contact-info {
background: rgba(192, 160, 98, 0.1);
border-radius: 8px;
padding: 8px;
transition: all 0.3s ease;
}
/* Hover effect for cover elements */
.template-card:hover .cover-title,
.template-card:hover .main-title,
.template-card:hover .p1-main-title {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
transition: text-shadow 0.3s ease;
}
/* Hover effect for gallery items */
.template-card:hover .gallery-item span {
background: rgba(192, 160, 98, 0.9);
color: white;
transition: all 0.3s ease;
}
/* Hover effect for page numbers and footers */
.template-card:hover .page-number,
.template-card:hover .page-footer-bar {
color: #C0A062;
font-weight: 600;
transition: all 0.3s ease;
}
/* Hover effect for newsletter-style template */
.template-card:hover .newsletter-header h2 {
background: linear-gradient(135deg, #C0A062, #8B6914);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
transition: all 0.3s ease;
}
/* Hover effect for modern home template elements */
.template-card:hover .property-name,
.template-card:hover .property-address {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
transition: text-shadow 0.3s ease;
}
/* Hover effect for grand oak template */
.template-card:hover .cover-title,
.template-card:hover .p1-main-title {
background: linear-gradient(135deg, #C0A062, #8B6914);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
transition: all 0.3s ease;
}
/* Hover effect for vertice template */
.template-card:hover .main-title {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
transition: text-shadow 0.3s ease;
}
/* Hover effect for serenity template */
.template-card:hover .p1-main-title {
color: #C0A062;
transform: translateY(-2px);
transition: all 0.3s ease;
}
/* Hover effect for price displays */
.template-card:hover .price,
.template-card:hover .priceDisplay {
color: #C0A062;
font-weight: 700;
transform: scale(1.05);
transition: all 0.3s ease;
}
/* Hover effect for reference IDs */
.template-card:hover .reference-id,
.template-card:hover .p1-ref-id {
background: rgba(192, 160, 98, 0.1);
padding: 4px 8px;
border-radius: 4px;
transition: all 0.3s ease;
}
/* Hover effect for collection badges */
.template-card:hover .collection {
background: #C0A062;
color: white;
padding: 4px 12px;
border-radius: 12px;
transition: all 0.3s ease;
}
/* Hover effect for area displays */
.template-card:hover .area {
color: #C0A062;
font-weight: 600;
transition: all 0.3s ease;
}
/* Hover effect for section titles */
.template-card:hover .section-title {
border-bottom: 2px solid #C0A062;
padding-bottom: 4px;
transition: all 0.3s ease;
}
/* Hover effect for description text */
.template-card:hover .description p,
.template-card:hover .pull-quote {
color: #555;
line-height: 1.7;
transition: all 0.3s ease;
}
/* Hover effect for pull quotes */
.template-card:hover .pull-quote {
border-left: 4px solid #C0A062;
padding-left: 16px;
font-style: italic;
font-weight: 500;
transition: all 0.3s ease;
}
/* Hover effect for floor plan stats */
.template-card:hover .floorplan-stats-p5 .stat {
background: rgba(192, 160, 98, 0.1);
border-radius: 8px;
padding: 8px;
transition: all 0.3s ease;
}
/* Hover effect for highlights list */
.template-card:hover .highlights-list-p6 li {
background: rgba(192, 160, 98, 0.05);
padding: 4px 8px;
border-radius: 4px;
margin: 2px 0;
transition: all 0.3s ease;
}
/* Hover effect for property field displays */
.template-card:hover .property-field {
background: rgba(192, 160, 98, 0.05);
padding: 4px 8px;
border-radius: 4px;
transition: all 0.3s ease;
}
/* Hover effect for owner info */
.template-card:hover .owner-info {
background: rgba(192, 160, 98, 0.1);
padding: 8px;
border-radius: 8px;
border-left: 3px solid #C0A062;
transition: all 0.3s ease;
} }
.template-card.selected { .template-card.selected {
border: 3px solid #000000 !important; /* Black selected border */ border: 3px solid #000000 !important; /* Black selected border */
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
transform: translateY(-6px); transform: translateY(-6px);
animation: selectedPulse 2s ease-in-out infinite;
}
/* Selected state animation */
@keyframes selectedPulse {
0%, 100% {
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}
50% {
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3);
}
}
/* Enhanced selected indicator */
.selected-indicator {
position: absolute;
top: 15px;
right: 15px;
background: linear-gradient(135deg, #C0A062, #8B6914);
color: white;
padding: 8px 16px;
border-radius: 20px;
font-size: 12px;
font-weight: 600;
display: flex;
align-items: center;
gap: 6px;
box-shadow: 0 4px 12px rgba(192, 160, 98, 0.4);
animation: selectedIndicatorBounce 0.6s ease-out;
z-index: 10;
}
@keyframes selectedIndicatorBounce {
0% {
transform: scale(0) rotate(-180deg);
opacity: 0;
}
50% {
transform: scale(1.2) rotate(-90deg);
opacity: 0.8;
}
100% {
transform: scale(1) rotate(0deg);
opacity: 1;
}
}
.selected-icon {
font-size: 14px;
animation: checkmarkPulse 1.5s ease-in-out infinite;
}
@keyframes checkmarkPulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
} }
/* Template Heights - Masonry Zigzag Layout */ /* Template Heights - Masonry Zigzag Layout */
@ -7376,7 +7679,7 @@ late particularay
.draggable-element:hover, .draggable-element:hover,
.draggable-element.selected { .draggable-element.selected {
border-color: #C0A062; /* Gold accent theme */ border: 2px solid transparent !important; /* Keep transparent border */
background: rgba(102, 126, 234, 0.1); background: rgba(102, 126, 234, 0.1);
box-shadow: 0 2px 10px rgba(102, 126, 234, 0.3); box-shadow: 0 2px 10px rgba(102, 126, 234, 0.3);
} }
@ -8233,20 +8536,27 @@ button, .btn, .toolbar-button, .export-pdf-btn {
z-index: 1000; z-index: 1000;
min-width: 100px; min-width: 100px;
min-height: 100px; min-height: 100px;
border: 2px dashed #667eea; border: none !important;
border-radius: 8px; border-radius: 4px;
background: rgba(102, 126, 234, 0.1); background: transparent;
padding: 5px; padding: 0;
transition: all 0.2s ease; transition: all 0.2s ease;
transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0);
box-shadow: none;
}
.draggable-image-container img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px;
} }
.draggable-image-container img { display: block; }
.draggable-image-container:hover { .draggable-image-container:hover {
border-color: #764ba2; border: none !important;
background: rgba(102, 126, 234, 0.15); background: transparent;
transform: translate3d(0, -2px, 0); transform: translate3d(0, 0, 0);
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
/* Minimal frame variant to avoid visual/positional shifts when wrapping existing images */ /* Minimal frame variant to avoid visual/positional shifts when wrapping existing images */
@ -8255,9 +8565,9 @@ button, .btn, .toolbar-button, .export-pdf-btn {
.draggable-image-container.no-frame.dragging { border: none; background: transparent; box-shadow: none; transform: none; } .draggable-image-container.no-frame.dragging { border: none; background: transparent; box-shadow: none; transform: none; }
.draggable-image-container.dragging { .draggable-image-container.dragging {
border-color: #764ba2; border: none !important;
background: rgba(102, 126, 234, 0.2); background: transparent;
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
transform: scale(1.02); transform: scale(1.02);
transition: none; transition: none;
z-index: 1001; z-index: 1001;
@ -8355,15 +8665,15 @@ button, .btn, .toolbar-button, .export-pdf-btn {
/* Dragging state */ /* Dragging state */
.draggable-image-container.dragging { .draggable-image-container.dragging {
border-color: #764ba2; border: none !important;
background: rgba(102, 126, 234, 0.2); background: transparent;
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
} }
/* Resizing state */ /* Resizing state */
.draggable-image-container.resizing { .draggable-image-container.resizing {
border-color: #ff6b6b; border: none !important;
background: rgba(255, 107, 107, 0.1); background: transparent;
} }
/* Text Alignment Section - Fixed Width */ /* Text Alignment Section - Fixed Width */
@ -10128,8 +10438,8 @@ img[draggable="true"] {
} }
.draggable-image-container.selected { .draggable-image-container.selected {
border-color: #C0A062; /* Gold accent theme */ border: none !important;
box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.2); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
.draggable-image-container img { .draggable-image-container img {
@ -10196,7 +10506,7 @@ img[draggable="true"] {
overflow: hidden; overflow: hidden;
} }
.draggable-table-container.selected { .draggable-table-container.selected {
border-color: #C0A062; /* Gold accent theme */ border: 2px solid transparent !important; /* Keep transparent border */
box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.2); box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.2);
} }

View File

@ -846,37 +846,76 @@
<div class="toolbar-section"> <div class="toolbar-section">
<div class="toolbar-section-title">Insert Property Data</div> <div class="toolbar-section-title">Insert Property Data</div>
<div class="property-insert-grid"> <div class="property-insert-grid">
<!-- Basic Information -->
<button class="property-insert-btn" onclick={insertPropertyName} <button class="property-insert-btn" onclick={insertPropertyName}
title="Insert Property Name"> title="Insert Property Name">
Name Name
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyPrice} <button class="property-insert-btn" onclick={insertPropertyTitle}
title="Insert Property Price"> title="Insert Property Title">
Price Title
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyType} <button class="property-insert-btn" onclick={insertPropertyType}
title="Insert Property Type"> title="Insert Property Type">
Type Type
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyBedrooms}
title="Insert Bedrooms">
Beds
</button> <!-- Pricing Information -->
<button class="property-insert-btn" onclick={insertPropertyBathrooms} <button class="property-insert-btn" onclick={insertPropertyPrice}
title="Insert Bathrooms"> title="Insert Property Price">
Baths Price
</button> </button>
<button class="property-insert-btn" onclick={insertPropertySqft} <button class="property-insert-btn" onclick={insertPropertySqft}
title="Insert Square Footage"> title="Insert Square Footage">
Sq Ft Sq Ft
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyAddress} title="Insert Address"> <button class="property-insert-btn" onclick={insertPropertyFloor}
Address title="Insert Floor">
Floor
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyDescription} <button class="property-insert-btn" onclick={insertPropertyBuildYear}
title="Insert Description"> title="Insert Build Year">
Description Year
</button> </button>
<button class="property-insert-btn" onclick={insertPropertyParking}
title="Insert Parking">
Parking
</button>
<button class="property-insert-btn" onclick={insertPropertyFurnished}
title="Insert Furnished Status">
Furnished
</button>
<button class="property-insert-btn" onclick={insertPropertyOfferingType}
title="Insert Offering Type">
Offering
</button>
<!-- Location Information -->
<button class="property-insert-btn" onclick={insertPropertyCity}
title="Insert City">
City
</button>
<button class="property-insert-btn" onclick={insertPropertyContactEmail}
title="Insert Contact Email">
Email
</button>
<button class="property-insert-btn" onclick={insertPropertyContactPhone}
title="Insert Contact Phone">
Phone
</button>
</div> </div>
</div> </div>