feat(plugin): Add Elementor dynamic tags and product loop widget v1.7.0
WordPress Plugin: - Add dynamic tags for all product payload fields (name, brand, price, THC, effects, etc.) - Add Product Loop widget with filtering, sorting, and layout options - Register CannaIQ widget category in Elementor - Update build script to auto-upload to MinIO CDN - Remove legacy dutchie references - Bump version to 1.7.0 Backend: - Redirect /downloads/* to CDN instead of serving from local filesystem 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* CannaIQ Menus - WordPress Plugin Styles
|
||||
* v1.5.3
|
||||
* v1.7.0
|
||||
*/
|
||||
|
||||
/* Product Grid */
|
||||
@@ -493,3 +493,189 @@
|
||||
font-size: 14px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Product Loop Widget
|
||||
======================================== */
|
||||
.cannaiq-product-loop {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-grid {
|
||||
display: grid;
|
||||
gap: 20px;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-list .cannaiq-product-card {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-list .cannaiq-product-image {
|
||||
width: 150px;
|
||||
min-width: 150px;
|
||||
aspect-ratio: 1;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-masonry {
|
||||
display: grid;
|
||||
gap: 20px;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
|
||||
.cannaiq-product-loop .cannaiq-product-card {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop .cannaiq-product-name {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
margin: 0 0 4px 0;
|
||||
color: #1a1a1a;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop .cannaiq-product-category {
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop .cannaiq-product-weight {
|
||||
font-size: 13px;
|
||||
color: #666;
|
||||
background: #f0f0f0;
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Strain Badges */
|
||||
.cannaiq-strain-badge {
|
||||
display: inline-block;
|
||||
padding: 3px 10px;
|
||||
border-radius: 12px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
color: #fff;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
/* Cannabinoid Display */
|
||||
.cannaiq-cannabinoids {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
margin: 8px 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.cannaiq-cannabinoids .cannaiq-thc,
|
||||
.cannaiq-cannabinoids .cannaiq-cbd {
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Effects Badges */
|
||||
.cannaiq-effects {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.cannaiq-effect-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 4px 10px;
|
||||
background: #f0f0f0;
|
||||
border-radius: 16px;
|
||||
font-size: 11px;
|
||||
font-weight: 500;
|
||||
color: #444;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.3px;
|
||||
}
|
||||
|
||||
/* Dynamic Tag Effects Badges */
|
||||
.cannaiq-effects-badges {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.cannaiq-effects-badges .cannaiq-effect-badge {
|
||||
padding: 4px 10px;
|
||||
background: linear-gradient(135deg, #f5f5f5, #e8e8e8);
|
||||
border-radius: 16px;
|
||||
font-size: 11px;
|
||||
font-weight: 500;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
/* Effect-specific colors */
|
||||
.cannaiq-effect-happy { background: linear-gradient(135deg, #fff3cd, #ffeaa7); color: #856404; }
|
||||
.cannaiq-effect-relaxed { background: linear-gradient(135deg, #d4edda, #c3e6cb); color: #155724; }
|
||||
.cannaiq-effect-sleepy { background: linear-gradient(135deg, #e2e3f3, #c8c9e8); color: #383d6e; }
|
||||
.cannaiq-effect-focused { background: linear-gradient(135deg, #cce5ff, #b8daff); color: #004085; }
|
||||
.cannaiq-effect-creative { background: linear-gradient(135deg, #f8d7da, #f5c6cb); color: #721c24; }
|
||||
.cannaiq-effect-energetic { background: linear-gradient(135deg, #ffecb3, #ffe082); color: #7c5e00; }
|
||||
.cannaiq-effect-hungry { background: linear-gradient(135deg, #ffe0cc, #ffcc99); color: #8b4513; }
|
||||
.cannaiq-effect-euphoric { background: linear-gradient(135deg, #e8daef, #d7bde2); color: #5b2c6f; }
|
||||
.cannaiq-effect-uplifted { background: linear-gradient(135deg, #d1ecf1, #bee5eb); color: #0c5460; }
|
||||
.cannaiq-effect-talkative { background: linear-gradient(135deg, #cce5ff, #99ccff); color: #004085; }
|
||||
|
||||
/* Sale Badge */
|
||||
.cannaiq-sale-badge {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
background: #e74c3c;
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
padding: 4px 10px;
|
||||
border-radius: 4px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* No Products Message */
|
||||
.cannaiq-no-products {
|
||||
text-align: center;
|
||||
padding: 40px 20px;
|
||||
color: #666;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 1024px) {
|
||||
.cannaiq-product-loop-grid,
|
||||
.cannaiq-product-loop-masonry {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.cannaiq-product-loop-grid,
|
||||
.cannaiq-product-loop-masonry {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-list .cannaiq-product-card {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.cannaiq-product-loop-list .cannaiq-product-image {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user