PluginProbe
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits / 3.0.9
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits v3.0.9
3.2.2 3.2.3 3.2.1 3.2.0 3.1.9 3.1.8 3.1.7 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.9 trunk 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.3 1.1.4 1.1.5 All 174 releases
master-addons / inc / modules / display / patterns / patterns.php

patterns.php in Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits 3.0.9, at inc/modules/display/patterns/patterns.php

678 lines 48.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace MasterAddons\Modules\Display;
4
5 // Elementor classes
6 use \Elementor\Controls_Manager;
7
8 if (!defined('ABSPATH')) exit; // Exit if accessed directly
9
10 /**
11 * Background Patterns + Gradient Overlays (inline style)
12 */
13 if (!class_exists('MasterAddons\Modules\Display\Patterns')) {
14 class Patterns extends \MasterAddons\Inc\Classes\Extension_Prototype
15 {
16 private static $instance = null;
17 public $name = 'Patterns';
18 public $has_controls = true;
19 private $is_common = false; // Only apply to section/column/container, not all widgets
20
21 private function add_controls($element, $args)
22 {
23 // Create separate section for patterns
24 $element->start_controls_section(
25 'jltma_patterns_section',
26 [
27 'tab' => Controls_Manager::TAB_STYLE,
28 'label' => __('Patterns', 'master-addons') . JLTMA_EXTENSION_BADGE
29 ]
30 );
31
32 // Enable
33 $element->add_control(
34 'jltma_enable_pattern',
35 [
36 'label' => __('Enable Pattern', 'master-addons'),
37 'type' => Controls_Manager::SWITCHER,
38 'label_on' => __('Yes', 'master-addons'),
39 'label_off' => __('No', 'master-addons'),
40 'return_value' => 'yes',
41 ]
42 );
43
44 // Style chooser - All 77 PatternCraft Patterns
45 $element->add_control(
46 'jltma_pattern_style',
47 [
48 'label' => __('Pattern Style', 'master-addons'),
49 'type' => Controls_Manager::SELECT,
50 'default' => 'top-gradient-radial',
51 'options' => [
52 // Decorative Gradients
53 'top-gradient-radial' => __('Top Gradient Radial', 'master-addons'),
54 'bottom-gradient-radial' => __('Bottom Gradient Radial', 'master-addons'),
55 'bottom-violet-radial' => __('Bottom Violet Radial', 'master-addons'),
56 'bottom-slate-radial' => __('Bottom Slate Radial', 'master-addons'),
57 'radial-teal-glow' => __('Teal Glow', 'master-addons'),
58 'radial-pink-glow' => __('Pink Glow', 'master-addons'),
59 'radial-amber-glow' => __('Amber Glow', 'master-addons'),
60 'radial-emerald-glow' => __('Emerald Glow', 'master-addons'),
61
62 // Dark Decorative
63 'dark-horizon-glow' => __('Dark Horizon Glow', 'master-addons'),
64 'crimson-depth' => __('Crimson Depth', 'master-addons'),
65 'emerald-void' => __('Emerald Void', 'master-addons'),
66 'violet-abyss' => __('Violet Abyss', 'master-addons'),
67 'azure-depths' => __('Azure Depths', 'master-addons'),
68 'orchid-depths' => __('Orchid Depths', 'master-addons'),
69 'dark-horizon-glow-top' => __('Dark Horizon Glow Top', 'master-addons'),
70 'crimson-depth-top' => __('Crimson Depth Top', 'master-addons'),
71 'emerald-void-top' => __('Emerald Void Top', 'master-addons'),
72 'violet-abyss-top' => __('Violet Abyss Top', 'master-addons'),
73 'azure-depths-top' => __('Azure Depths Top', 'master-addons'),
74 'orchid-depths-top' => __('Orchid Depths Top', 'master-addons'),
75
76 // Geometric Grid Patterns
77 'purple-gradient-grid-right' => __('Purple Gradient Grid Right', 'master-addons'),
78 'purple-gradient-grid-left' => __('Purple Gradient Grid Left', 'master-addons'),
79 'dual-gradient-overlay-strong' => __('Dual Gradient Overlay', 'master-addons'),
80 'dual-gradient-overlay-strong-swapped' => __('Dual Gradient Overlay Swapped', 'master-addons'),
81 'dual-gradient-overlay-top' => __('Dual Gradient Overlay (Top)', 'master-addons'),
82 'dual-gradient-overlay-bottom' => __('Dual Gradient Overlay (Bottom)', 'master-addons'),
83 'top-fade-grid' => __('Top Fade Grid', 'master-addons'),
84 'bottom-fade-grid' => __('Bottom Fade Grid', 'master-addons'),
85 'diagonal-fade-grid-left' => __('Diagonal Fade Grid Left', 'master-addons'),
86 'diagonal-fade-grid-right' => __('Diagonal Fade Grid Right', 'master-addons'),
87
88 // Radial Glow Effects
89 'dark-radial-glow' => __('Dark Radial Glow', 'master-addons'),
90 'blue-radial-glow' => __('Blue Radial Glow', 'master-addons'),
91 'purple-radial-glow' => __('Purple Radial Glow', 'master-addons'),
92 'emerald-radial-glow' => __('Emerald Radial Glow', 'master-addons'),
93
94 // Aurora Effects
95 'aurora-dream-corner-whispers' => __('Aurora Dream Corner Whispers', 'master-addons'),
96 'aurora-dream-soft-harmony' => __('Aurora Dream Soft Harmony', 'master-addons'),
97 'aurora-dream-diagonal-flow' => __('Aurora Dream Diagonal Flow', 'master-addons'),
98 'aurora-dream-central-burst' => __('Aurora Dream Central Burst', 'master-addons'),
99
100 // Basic Patterns
101 'waves-vertical' => __('Waves Vertical', 'master-addons'),
102 'waves-horizontal' => __('Waves Horizontal', 'master-addons'),
103 'diagonal-stripes' => __('Diagonal Stripes', 'master-addons'),
104 'dots-pattern' => __('Dots Pattern', 'master-addons'),
105 'crosshatch' => __('Crosshatch', 'master-addons'),
106
107 // Grid Patterns
108 'grid-small' => __('Grid Small', 'master-addons'),
109 'grid-medium' => __('Grid Medium', 'master-addons'),
110 'grid-large' => __('Grid Large', 'master-addons'),
111 'dot-grid' => __('Dot Grid', 'master-addons'),
112 'isometric-grid' => __('Isometric Grid', 'master-addons'),
113 'hexagon-pattern' => __('Hexagon Pattern', 'master-addons'),
114 'triangles-pattern' => __('Triangles Pattern', 'master-addons'),
115 'zigzag-horizontal' => __('Zigzag Horizontal', 'master-addons'),
116 'zigzag-vertical' => __('Zigzag Vertical', 'master-addons'),
117 'tartan' => __('Tartan', 'master-addons'),
118 'plaid-subtle' => __('Plaid Subtle', 'master-addons'),
119
120 // Technical Patterns
121 'blueprint' => __('Blueprint', 'master-addons'),
122 'blueprint-dark' => __('Blueprint Dark', 'master-addons'),
123 'circuit-board' => __('Circuit Board', 'master-addons'),
124 'graph-paper' => __('Graph Paper', 'master-addons'),
125 'notebook' => __('Notebook', 'master-addons'),
126
127 // Cultural Patterns
128 'moroccan' => __('Moroccan', 'master-addons'),
129 'japanese-seigaiha' => __('Japanese Seigaiha', 'master-addons'),
130 'art-deco' => __('Art Deco', 'master-addons'),
131 'vintage-wallpaper' => __('Vintage Wallpaper', 'master-addons'),
132
133 // Texture Patterns
134 'noise-texture' => __('Noise Texture', 'master-addons'),
135 'fabric-texture' => __('Fabric Texture', 'master-addons'),
136 'wood-grain' => __('Wood Grain', 'master-addons'),
137 'marble-veins' => __('Marble Veins', 'master-addons'),
138 'paper-texture' => __('Paper Texture', 'master-addons'),
139
140 // Artistic Patterns
141 'crosshatch-art' => __('Crosshatch Art', 'master-addons'),
142 'stippling' => __('Stippling', 'master-addons'),
143 'sketch-lines' => __('Sketch Lines', 'master-addons'),
144 'watercolor-wash' => __('Watercolor Wash', 'master-addons'),
145 'crosshatch-art-dark' => __('Crosshatch Art Dark', 'master-addons'),
146 ],
147 'condition' => ['jltma_enable_pattern' => 'yes'],
148 ]
149 );
150
151 // Z-Index for layering with Elementor backgrounds
152 $element->add_control(
153 'jltma_pattern_z_index',
154 [
155 'label' => __('Z-Index', 'master-addons'),
156 'type' => Controls_Manager::SLIDER,
157 'range' => ['px' => ['min' => -10, 'max' => 10, 'step' => 1]],
158 'default' => ['size' => '', 'unit' => 'px'],
159 'condition' => ['jltma_enable_pattern' => 'yes'],
160 'description' => __('Set layering position relative to Elementor background', 'master-addons'),
161 ]
162 );
163
164
165 // End the patterns section
166 $element->end_controls_section();
167 }
168
169 protected function add_actions()
170 {
171 // Add separate patterns section after background sections
172 add_action('elementor/element/after_section_end', [$this, 'register_controls'], 10, 3);
173
174 // Add print template for editor preview
175 add_action('elementor/element/print_template', [$this, '_print_template'], 10, 2);
176 add_action('elementor/section/print_template', [$this, '_print_template'], 10, 2);
177 add_action('elementor/column/print_template', [$this, '_print_template'], 10, 2);
178 add_action('elementor/container/print_template', [$this, '_print_template'], 10, 2);
179
180 // Apply inline styles
181 add_action('elementor/frontend/section/before_render', [$this, 'before_render'], 10, 1);
182 add_action('elementor/frontend/column/before_render', [$this, 'before_render'], 10, 1);
183 add_action('elementor/frontend/container/before_render', [$this, 'before_render'], 10, 1);
184 add_action('elementor/frontend/widget/before_render', [$this, 'before_render'], 10, 1);
185 }
186
187 public function register_controls($element, $section_id, $args)
188 {
189 // Add patterns section to section/column/container after their background sections
190 // and to all widgets after _section_style (common style section)
191 $is_layout = (
192 ('section' === $element->get_name() && 'section_background' === $section_id) ||
193 ('column' === $element->get_name() && 'section_style' === $section_id) ||
194 ('container' === $element->get_name() && 'section_background' === $section_id)
195 );
196
197 $is_widget = (
198 !in_array($element->get_name(), ['section', 'column', 'container']) &&
199 '_section_style' === $section_id
200 );
201
202 if ($is_layout || $is_widget) {
203 $this->add_controls($element, $args);
204 }
205 }
206
207 public function before_render($element)
208 {
209 $settings = $element->get_settings_for_display();
210
211 if (empty($settings['jltma_enable_pattern']) || $settings['jltma_enable_pattern'] !== 'yes') {
212 return;
213 }
214
215 // Get z-index for layering with Elementor backgrounds
216 $z_index = isset($settings['jltma_pattern_z_index']['size']) ? $settings['jltma_pattern_z_index']['size'] : 1;
217
218 $pattern_css = '';
219 $pattern_style = $settings['jltma_pattern_style'];
220
221 // All 77 PatternCraft Patterns - Exactly as defined in source
222 switch ($pattern_style) {
223 // Decorative Gradients
224 case 'top-gradient-radial':
225 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #fff 40%, #6366f1 100%);";
226 break;
227
228 case 'bottom-gradient-radial':
229 $pattern_css = "background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #6366f1 100%);";
230 break;
231
232 case 'bottom-violet-radial':
233 $pattern_css = "background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #7c3aed 100%);";
234 break;
235
236 case 'bottom-slate-radial':
237 $pattern_css = "background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #475569 100%);";
238 break;
239
240 case 'radial-teal-glow':
241 $pattern_css = "background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #14b8a6 100%); background-size: 100% 100%;";
242 break;
243
244 case 'radial-pink-glow':
245 $pattern_css = "background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #ec4899 100%); background-size: 100% 100%;";
246 break;
247
248 case 'radial-amber-glow':
249 $pattern_css = "background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #f59e0b 100%); background-size: 100% 100%;";
250 break;
251
252 case 'radial-emerald-glow':
253 $pattern_css = "background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #10b981 100%); background-size: 100% 100%;";
254 break;
255
256 // Dark Decorative
257 case 'dark-horizon-glow':
258 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #0d1a36 100%); background-size: 100% 100%;";
259 break;
260
261 case 'crimson-depth':
262 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #2b0707 100%); background-size: 100% 100%;";
263 break;
264
265 case 'emerald-void':
266 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #072607 100%); background-size: 100% 100%;";
267 break;
268
269 case 'violet-abyss':
270 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #2b092b 100%); background-size: 100% 100%;";
271 break;
272
273 case 'azure-depths':
274 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #010133 100%); background-size: 100% 100%;";
275 break;
276
277 case 'orchid-depths':
278 $pattern_css = "background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #350136 100%); background-size: 100% 100%;";
279 break;
280
281 case 'dark-horizon-glow-top':
282 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #0d1a36 100%);";
283 break;
284
285 case 'crimson-depth-top':
286 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #2b0707 100%);";
287 break;
288
289 case 'emerald-void-top':
290 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #072607 100%);";
291 break;
292
293 case 'violet-abyss-top':
294 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #2b092b 100%);";
295 break;
296
297 case 'azure-depths-top':
298 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #010133 100%);";
299 break;
300
301 case 'orchid-depths-top':
302 $pattern_css = "background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #350136 100%);";
303 break;
304
305 // Geometric Grid Patterns
306 case 'purple-gradient-grid-right':
307 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, #f0f0f0 1px, transparent 1px), linear-gradient(to bottom, #f0f0f0 1px, transparent 1px), radial-gradient(circle 800px at 100% 200px, #d5c5ff, transparent); background-size: 96px 64px, 96px 64px, 100% 100%;";
308 break;
309
310 case 'purple-gradient-grid-left':
311 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, #f0f0f0 1px, transparent 1px), linear-gradient(to bottom, #f0f0f0 1px, transparent 1px), radial-gradient(circle 800px at 0% 200px, #d5c5ff, transparent); background-size: 96px 64px, 96px 64px, 100% 100%;";
312 break;
313
314 case 'dual-gradient-overlay-strong':
315 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, rgba(229,231,235,0.8) 1px, transparent 1px), linear-gradient(to bottom, rgba(229,231,235,0.8) 1px, transparent 1px), radial-gradient(circle 500px at 20% 80%, rgba(139,92,246,0.3), transparent), radial-gradient(circle 500px at 80% 20%, rgba(59,130,246,0.3), transparent); background-size: 48px 48px, 48px 48px, 100% 100%, 100% 100%;";
316 break;
317
318 case 'dual-gradient-overlay-strong-swapped':
319 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, rgba(229,231,235,0.8) 1px, transparent 1px), linear-gradient(to bottom, rgba(229,231,235,0.8) 1px, transparent 1px), radial-gradient(circle 500px at 20% 20%, rgba(139,92,246,0.3), transparent), radial-gradient(circle 500px at 80% 80%, rgba(59,130,246,0.3), transparent); background-size: 48px 48px, 48px 48px, 100% 100%, 100% 100%;";
320 break;
321
322 case 'dual-gradient-overlay-top':
323 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, rgba(229,231,235,0.8) 1px, transparent 1px), linear-gradient(to bottom, rgba(229,231,235,0.8) 1px, transparent 1px), radial-gradient(circle 500px at 0% 20%, rgba(139,92,246,0.3), transparent), radial-gradient(circle 500px at 100% 0%, rgba(59,130,246,0.3), transparent); background-size: 48px 48px, 48px 48px, 100% 100%, 100% 100%;";
324 break;
325
326 case 'dual-gradient-overlay-bottom':
327 $pattern_css = "background: #ffffff; background-image: linear-gradient(to right, rgba(229,231,235,0.8) 1px, transparent 1px), linear-gradient(to bottom, rgba(229,231,235,0.8) 1px, transparent 1px), radial-gradient(circle 500px at 20% 100%, rgba(139,92,246,0.3), transparent), radial-gradient(circle 500px at 100% 80%, rgba(59,130,246,0.3), transparent); background-size: 48px 48px, 48px 48px, 100% 100%, 100% 100%;";
328 break;
329
330 case 'top-fade-grid':
331 $pattern_css = "background: #f8fafc; background-image: linear-gradient(to right, #e2e8f0 1px, transparent 1px), linear-gradient(to bottom, #e2e8f0 1px, transparent 1px); background-size: 20px 30px; -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%); mask-image: radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%);";
332 break;
333
334 case 'bottom-fade-grid':
335 $pattern_css = "background: #f8fafc; background-image: linear-gradient(to right, #e2e8f0 1px, transparent 1px), linear-gradient(to bottom, #e2e8f0 1px, transparent 1px); background-size: 20px 30px; -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 100%, #000 60%, transparent 100%); mask-image: radial-gradient(ellipse 70% 60% at 50% 100%, #000 60%, transparent 100%);";
336 break;
337
338 case 'diagonal-fade-grid-left':
339 $pattern_css = "background: #f9fafb; background-image: linear-gradient(to right, #d1d5db 1px, transparent 1px), linear-gradient(to bottom, #d1d5db 1px, transparent 1px); background-size: 32px 32px; -webkit-mask-image: radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%); mask-image: radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%);";
340 break;
341
342 case 'diagonal-fade-grid-right':
343 $pattern_css = "background: #f9fafb; background-image: linear-gradient(to right, #d1d5db 1px, transparent 1px), linear-gradient(to bottom, #d1d5db 1px, transparent 1px); background-size: 32px 32px; -webkit-mask-image: radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%); mask-image: radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%);";
344 break;
345
346 // Radial Glow Effects
347 case 'dark-radial-glow':
348 $pattern_css = "background: #020617; background-image: radial-gradient(circle 500px at 50% 200px, #3e3e3e, transparent);";
349 break;
350
351 case 'blue-radial-glow':
352 $pattern_css = "background: #0f172a; background-image: radial-gradient(circle 600px at 50% 50%, rgba(59,130,246,0.3), transparent);";
353 break;
354
355 case 'purple-radial-glow':
356 $pattern_css = "background: #020617; background-image: radial-gradient(circle 500px at 50% 100px, rgba(139,92,246,0.4), transparent);";
357 break;
358
359 case 'emerald-radial-glow':
360 $pattern_css = "background: #020617; background-image: radial-gradient(circle 500px at 50% 300px, rgba(16,185,129,0.35), transparent);";
361 break;
362
363 // Aurora Effects
364 case 'aurora-dream-corner-whispers':
365 $pattern_css = "background: #f7eaff; background-image: radial-gradient(ellipse 85% 65% at 8% 8%, rgba(175, 109, 255, 0.42), transparent 60%), radial-gradient(ellipse 75% 60% at 75% 35%, rgba(255, 235, 170, 0.55), transparent 62%), radial-gradient(ellipse 70% 60% at 15% 80%, rgba(255, 100, 180, 0.40), transparent 62%), radial-gradient(ellipse 70% 60% at 92% 92%, rgba(120, 190, 255, 0.45), transparent 62%), linear-gradient(180deg, #f7eaff 0%, #fde2ea 100%); background-size: 100% 100%;";
366 break;
367
368 case 'aurora-dream-soft-harmony':
369 $pattern_css = "background: #f7eaff; background-image: radial-gradient(ellipse 80% 60% at 60% 20%, rgba(175, 109, 255, 0.50), transparent 65%), radial-gradient(ellipse 70% 60% at 20% 80%, rgba(255, 100, 180, 0.45), transparent 65%), radial-gradient(ellipse 60% 50% at 60% 65%, rgba(255, 235, 170, 0.43), transparent 62%), radial-gradient(ellipse 65% 40% at 50% 60%, rgba(120, 190, 255, 0.48), transparent 68%), linear-gradient(180deg, #f7eaff 0%, #fde2ea 100%); background-size: 100% 100%;";
370 break;
371
372 case 'aurora-dream-diagonal-flow':
373 $pattern_css = "background: #f7eaff; background-image: radial-gradient(ellipse 80% 60% at 5% 40%, rgba(175, 109, 255, 0.48), transparent 67%), radial-gradient(ellipse 70% 60% at 45% 45%, rgba(255, 100, 180, 0.41), transparent 67%), radial-gradient(ellipse 62% 52% at 83% 76%, rgba(255, 235, 170, 0.44), transparent 63%), radial-gradient(ellipse 60% 48% at 75% 20%, rgba(120, 190, 255, 0.36), transparent 66%), linear-gradient(45deg, #f7eaff 0%, #fde2ea 100%); background-size: 100% 100%;";
374 break;
375
376 case 'aurora-dream-central-burst':
377 $pattern_css = "background: #f7eaff; background-image: radial-gradient(ellipse 50% 60% at 50% 50%, rgba(175, 109, 255, 0.52), transparent 68%), radial-gradient(ellipse 65% 55% at 40% 40%, rgba(255, 100, 180, 0.40), transparent 62%), radial-gradient(ellipse 70% 50% at 60% 60%, rgba(255, 235, 170, 0.48), transparent 67%), radial-gradient(ellipse 55% 65% at 35% 65%, rgba(120, 190, 255, 0.44), transparent 62%), linear-gradient(180deg, #f7eaff 0%, #fde2ea 100%); background-size: 100% 100%;";
378 break;
379
380 // Basic Patterns
381 case 'waves-vertical':
382 $pattern_css = "background: linear-gradient(90deg, #ffffff 0%, #ffffff 50%, #f3f4f6 50%, #f3f4f6 100%); background-size: 20px 100%;";
383 break;
384
385 case 'waves-horizontal':
386 $pattern_css = "background: linear-gradient(180deg, #ffffff 0%, #ffffff 50%, #f3f4f6 50%, #f3f4f6 100%); background-size: 100% 20px;";
387 break;
388
389 case 'diagonal-stripes':
390 $pattern_css = "background: repeating-linear-gradient(45deg, #f3f4f6 0px, #f3f4f6 10px, #ffffff 10px, #ffffff 20px);";
391 break;
392
393 case 'dots-pattern':
394 $pattern_css = "background-image: radial-gradient(circle, #d1d5db 1px, transparent 1px); background-size: 20px 20px;";
395 break;
396
397 case 'crosshatch':
398 $pattern_css = "background: #f9fafb; background-image: linear-gradient(45deg, #e5e7eb 25%, transparent 25%), linear-gradient(135deg, #e5e7eb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e5e7eb 75%), linear-gradient(135deg, transparent 75%, #e5e7eb 75%); background-size: 20px 20px; background-position: 0 0, 10px 0, 10px -10px, 0px 10px;";
399 break;
400
401 // Grid Patterns
402 case 'grid-small':
403 $pattern_css = "background-image: linear-gradient(to right, #e5e7eb 1px, transparent 1px), linear-gradient(to bottom, #e5e7eb 1px, transparent 1px); background-size: 20px 20px;";
404 break;
405
406 case 'grid-medium':
407 $pattern_css = "background-image: linear-gradient(to right, #d1d5db 1px, transparent 1px), linear-gradient(to bottom, #d1d5db 1px, transparent 1px); background-size: 40px 40px;";
408 break;
409
410 case 'grid-large':
411 $pattern_css = "background-image: linear-gradient(to right, #9ca3af 1px, transparent 1px), linear-gradient(to bottom, #9ca3af 1px, transparent 1px); background-size: 80px 80px;";
412 break;
413
414 case 'dot-grid':
415 $pattern_css = "background-image: radial-gradient(circle, #d1d5db 1px, transparent 1px); background-size: 30px 30px;";
416 break;
417
418 case 'isometric-grid':
419 $pattern_css = "background-image: linear-gradient(30deg, #e5e7eb 12%, transparent 12.5%, transparent 87%, #e5e7eb 87.5%, #e5e7eb), linear-gradient(150deg, #e5e7eb 12%, transparent 12.5%, transparent 87%, #e5e7eb 87.5%, #e5e7eb), linear-gradient(30deg, #e5e7eb 12%, transparent 12.5%, transparent 87%, #e5e7eb 87.5%, #e5e7eb), linear-gradient(150deg, #e5e7eb 12%, transparent 12.5%, transparent 87%, #e5e7eb 87.5%, #e5e7eb); background-size: 80px 140px; background-position: 0 0, 0 0, 40px 70px, 40px 70px;";
420 break;
421
422 case 'hexagon-pattern':
423 $pattern_css = "background: #ffffff; background-image: linear-gradient(30deg, #f3f4f6 12%, transparent 12.5%, transparent 87%, #f3f4f6 87.5%, #f3f4f6), linear-gradient(150deg, #f3f4f6 12%, transparent 12.5%, transparent 87%, #f3f4f6 87.5%, #f3f4f6), linear-gradient(30deg, #f3f4f6 12%, transparent 12.5%, transparent 87%, #f3f4f6 87.5%, #f3f4f6), linear-gradient(150deg, #f3f4f6 12%, transparent 12.5%, transparent 87%, #f3f4f6 87.5%, #f3f4f6), linear-gradient(60deg, #f3f4f677 25%, transparent 25.5%, transparent 75%, #f3f4f677 75%, #f3f4f677), linear-gradient(60deg, #f3f4f677 25%, transparent 25.5%, transparent 75%, #f3f4f677 75%, #f3f4f677); background-size: 80px 140px; background-position: 0 0, 0 0, 40px 70px, 40px 70px, 0 0, 40px 70px;";
424 break;
425
426 case 'triangles-pattern':
427 $pattern_css = "background: #ffffff; background-image: linear-gradient(45deg, #f3f4f6 25%, transparent 25%), linear-gradient(135deg, #f3f4f6 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f3f4f6 75%), linear-gradient(135deg, transparent 75%, #f3f4f6 75%); background-size: 30px 30px; background-position: 0 0, 15px 0, 15px -15px, 0px 15px;";
428 break;
429
430 case 'zigzag-horizontal':
431 $pattern_css = "background: linear-gradient(135deg, #f3f4f6 25%, transparent 25%) -15px 0, linear-gradient(225deg, #f3f4f6 25%, transparent 25%) -15px 0, linear-gradient(315deg, #f3f4f6 25%, transparent 25%), linear-gradient(45deg, #f3f4f6 25%, transparent 25%); background-size: 30px 30px;";
432 break;
433
434 case 'zigzag-vertical':
435 $pattern_css = "background: linear-gradient(45deg, #f3f4f6 25%, transparent 25%) 0 -15px, linear-gradient(315deg, #f3f4f6 25%, transparent 25%) 0 -15px, linear-gradient(225deg, #f3f4f6 25%, transparent 25%), linear-gradient(135deg, #f3f4f6 25%, transparent 25%); background-size: 30px 30px;";
436 break;
437
438 case 'tartan':
439 $pattern_css = "background: #f3f4f6; background-image: repeating-linear-gradient(45deg, #e5e7eb, #e5e7eb 10px, transparent 10px, transparent 20px), repeating-linear-gradient(135deg, #d1d5db, #d1d5db 5px, transparent 5px, transparent 15px), repeating-linear-gradient(90deg, transparent, transparent 10px, #e5e7eb 10px, #e5e7eb 20px), repeating-linear-gradient(0deg, transparent, transparent 10px, #d1d5db 10px, #d1d5db 20px);";
440 break;
441
442 case 'plaid-subtle':
443 $pattern_css = "background: #ffffff; background-image: repeating-linear-gradient(0deg, transparent, transparent 35px, rgba(229,231,235,0.5) 35px, rgba(229,231,235,0.5) 70px), repeating-linear-gradient(90deg, transparent, transparent 35px, rgba(209,213,219,0.5) 35px, rgba(209,213,219,0.5) 70px);";
444 break;
445
446 // Technical Patterns
447 case 'blueprint':
448 $pattern_css = "background: #1e40af; background-image: linear-gradient(rgba(255,255,255,.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.1) 1px, transparent 1px), linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px; background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;";
449 break;
450
451 case 'blueprint-dark':
452 $pattern_css = "background: #0f172a; background-image: linear-gradient(rgba(59,130,246,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(59,130,246,.2) 1px, transparent 1px), linear-gradient(rgba(59,130,246,.1) 1px, transparent 1px), linear-gradient(90deg, rgba(59,130,246,.1) 1px, transparent 1px); background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px; background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;";
453 break;
454
455 case 'circuit-board':
456 $pattern_css = "background: #1f2937; background-image: linear-gradient(rgba(34,197,94,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(34,197,94,.2) 1px, transparent 1px), radial-gradient(circle at 20px 20px, rgba(34,197,94,.3) 2px, transparent 3px), radial-gradient(circle at 80px 80px, rgba(59,130,246,.3) 2px, transparent 3px); background-size: 100px 100px, 100px 100px, 100px 100px, 100px 100px;";
457 break;
458
459 case 'graph-paper':
460 $pattern_css = "background: #ffffff; background-image: linear-gradient(rgba(0,0,0,.1) 1px, transparent 1px), linear-gradient(90deg, rgba(0,0,0,.1) 1px, transparent 1px), linear-gradient(rgba(0,0,0,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0,0,0,.05) 1px, transparent 1px); background-size: 100px 100px, 100px 100px, 10px 10px, 10px 10px;";
461 break;
462
463 case 'notebook':
464 $pattern_css = "background: #fefefe; background-image: linear-gradient(to right, #fde047 0px, #fde047 1px, transparent 1px), linear-gradient(to bottom, rgba(0,0,0,.1) 0px, rgba(0,0,0,.1) 1px, transparent 1px), linear-gradient(to bottom, rgba(239,68,68,.3) 0px, rgba(239,68,68,.3) 1px, transparent 1px); background-size: 100% 30px, 100% 30px, 100% 30px; background-position: 40px 0, 0 0, 0 0;";
465 break;
466
467 // Cultural Patterns
468 case 'moroccan':
469 $pattern_css = "background: #ffffff; background-image: radial-gradient(circle at 25% 25%, #f3f4f6 2%, transparent 3%), radial-gradient(circle at 75% 25%, #f3f4f6 2%, transparent 3%), radial-gradient(circle at 25% 75%, #f3f4f6 2%, transparent 3%), radial-gradient(circle at 75% 75%, #f3f4f6 2%, transparent 3%), linear-gradient(45deg, #e5e7eb 25%, transparent 25%, transparent 75%, #e5e7eb 75%), linear-gradient(135deg, #e5e7eb 25%, transparent 25%, transparent 75%, #e5e7eb 75%); background-size: 40px 40px;";
470 break;
471
472 case 'japanese-seigaiha':
473 $pattern_css = "background: #ffffff; background-image: radial-gradient(circle at 50% 100%, transparent 40%, rgba(59,130,246,.1) 40%, rgba(59,130,246,.1) 60%, transparent 60%), radial-gradient(circle at 0% 100%, transparent 40%, rgba(59,130,246,.05) 40%, rgba(59,130,246,.05) 60%, transparent 60%), radial-gradient(circle at 100% 100%, transparent 40%, rgba(59,130,246,.05) 40%, rgba(59,130,246,.05) 60%, transparent 60%); background-size: 80px 40px, 80px 40px, 80px 40px; background-position: 0 0, -40px 0, 40px 0;";
474 break;
475
476 case 'art-deco':
477 $pattern_css = "background: #fefefe; background-image: linear-gradient(45deg, #f3f4f6 25%, transparent 25%), linear-gradient(135deg, #f3f4f6 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e5e7eb 75%), linear-gradient(135deg, transparent 75%, #e5e7eb 75%), linear-gradient(0deg, #d1d5db, #d1d5db 2px, transparent 2px, transparent 18px, #d1d5db 18px, #d1d5db 20px); background-size: 20px 20px, 20px 20px, 20px 20px, 20px 20px, 100% 20px; background-position: 0 0, 10px 0, 10px -10px, 0 10px, 0 0;";
478 break;
479
480 case 'vintage-wallpaper':
481 $pattern_css = "background: #f9fafb; background-image: radial-gradient(circle at 20% 20%, rgba(239,68,68,.1) 20%, transparent 21%), radial-gradient(circle at 80% 20%, rgba(59,130,246,.1) 20%, transparent 21%), radial-gradient(circle at 20% 80%, rgba(34,197,94,.1) 20%, transparent 21%), radial-gradient(circle at 80% 80%, rgba(245,158,11,.1) 20%, transparent 21%), linear-gradient(45deg, rgba(156,163,175,.1) 25%, transparent 25%), linear-gradient(135deg, rgba(156,163,175,.1) 25%, transparent 25%); background-size: 100px 100px, 100px 100px, 100px 100px, 100px 100px, 20px 20px, 20px 20px;";
482 break;
483
484 // Texture Patterns
485 case 'noise-texture':
486 $pattern_css = "background: #ffffff; opacity: 0.05; background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E\");";
487 break;
488
489 case 'fabric-texture':
490 $pattern_css = "background: #f3f4f6; background-image: linear-gradient(45deg, rgba(0,0,0,.1) 25%, transparent 25%), linear-gradient(135deg, rgba(0,0,0,.1) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0,0,0,.05) 75%), linear-gradient(135deg, transparent 75%, rgba(0,0,0,.05) 75%); background-size: 2px 2px; background-position: 0 0, 1px 0, 1px -1px, 0px 1px;";
491 break;
492
493 case 'wood-grain':
494 $pattern_css = "background: #92400e; background-image: linear-gradient(90deg, rgba(180,83,9,.3) 50%, transparent 50%), linear-gradient(rgba(180,83,9,.2) 50%, rgba(217,119,6,.2) 50%), linear-gradient(90deg, transparent 50%, rgba(180,83,9,.1) 50%); background-size: 40px 3px, 100% 2px, 20px 8px;";
495 break;
496
497 case 'marble-veins':
498 $pattern_css = "background: #f8fafc; background-image: linear-gradient(45deg, rgba(148,163,184,.2) 1px, transparent 1px), linear-gradient(135deg, rgba(148,163,184,.1) 1px, transparent 1px), linear-gradient(90deg, rgba(203,213,225,.3) 0.5px, transparent 0.5px); background-size: 60px 60px, 80px 80px, 100% 20px;";
499 break;
500
501 case 'paper-texture':
502 $pattern_css = "background: #fefefe; background-image: radial-gradient(circle at 1px 1px, rgba(0,0,0,.05) 1px, transparent 0), radial-gradient(circle at 2px 3px, rgba(0,0,0,.03) 1px, transparent 0), radial-gradient(circle at 3px 2px, rgba(0,0,0,.04) 1px, transparent 0); background-size: 10px 10px, 15px 15px, 12px 12px;";
503 break;
504
505 // Artistic Patterns
506 case 'crosshatch-art':
507 $pattern_css = "background: #ffffff; background-image: linear-gradient(45deg, rgba(0,0,0,.1) 1px, transparent 1px), linear-gradient(135deg, rgba(0,0,0,.1) 1px, transparent 1px); background-size: 10px 10px, 10px 10px; background-position: 0 0, 5px 5px;";
508 break;
509
510 case 'stippling':
511 $pattern_css = "background: #ffffff; background-image: radial-gradient(circle at 25% 25%, #000 0.5px, transparent 0.5px), radial-gradient(circle at 75% 25%, #000 0.3px, transparent 0.3px), radial-gradient(circle at 25% 75%, #000 0.4px, transparent 0.4px), radial-gradient(circle at 75% 75%, #000 0.2px, transparent 0.2px); background-size: 20px 20px; opacity: 0.1;";
512 break;
513
514 case 'sketch-lines':
515 $pattern_css = "background: #ffffff; background-image: linear-gradient(90deg, transparent 0%, rgba(0,0,0,.1) 50%, transparent 100%), linear-gradient(45deg, transparent 0%, rgba(0,0,0,.05) 50%, transparent 100%), linear-gradient(135deg, transparent 0%, rgba(0,0,0,.05) 50%, transparent 100%); background-size: 30px 1px, 20px 1px, 25px 1px;";
516 break;
517
518 case 'watercolor-wash':
519 $pattern_css = "background: radial-gradient(ellipse at top, rgba(139,92,246,.1), transparent), radial-gradient(ellipse at bottom, rgba(59,130,246,.1), transparent);";
520 break;
521
522 case 'crosshatch-art-dark':
523 $pattern_css = "background: #111827; background-image: linear-gradient(45deg, rgba(255,255,255,.1) 1px, transparent 1px), linear-gradient(135deg, rgba(255,255,255,.1) 1px, transparent 1px); background-size: 10px 10px, 10px 10px; background-position: 0 0, 5px 5px;";
524 break;
525
526 default:
527 $pattern_css = "background: #f8fafc; background-image: linear-gradient(to right, #e2e8f0 1px, transparent 1px), linear-gradient(to bottom, #e2e8f0 1px, transparent 1px); background-size: 20px 20px;";
528 break;
529 }
530
531 if ($pattern_css) {
532 // Add z-index for proper layering with Elementor backgrounds
533 $final_css = $pattern_css . '; position: relative; z-index: ' . $z_index . ';';
534 $element->add_render_attribute('_wrapper', 'style', preg_replace('/\s+/', ' ', trim($final_css)));
535 }
536 }
537
538 public function _print_template($template, $widget)
539 {
540 // Only modify JS templates for layout elements (section/column/container).
541 // Widgets use server-side PHP rendering; their patterns are handled by before_render().
542 if ( ! in_array( $widget->get_name(), [ 'section', 'column', 'container' ], true ) ) {
543 return $template;
544 }
545
546 ob_start();
547 ?>
548 <# if (settings.jltma_enable_pattern == 'yes') { #>
549 <div class="jltma-pattern-wrapper" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: {{ settings.jltma_pattern_z_index.size }};">
550 <#
551 var patternStyle = settings.jltma_pattern_style || 'top-gradient-radial';
552 var patternCSS = '';
553
554 // All 77 PatternCraft patterns for editor preview
555 switch(patternStyle) {
556 case 'top-gradient-radial':
557 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #fff 40%, #6366f1 100%);';
558 break;
559 case 'bottom-gradient-radial':
560 patternCSS = 'background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #6366f1 100%);';
561 break;
562 case 'bottom-violet-radial':
563 patternCSS = 'background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #7c3aed 100%);';
564 break;
565 case 'bottom-slate-radial':
566 patternCSS = 'background: radial-gradient(125% 125% at 50% 90%, #fff 40%, #475569 100%);';
567 break;
568 case 'radial-teal-glow':
569 patternCSS = 'background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #14b8a6 100%); background-size: 100% 100%;';
570 break;
571 case 'radial-pink-glow':
572 patternCSS = 'background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #ec4899 100%); background-size: 100% 100%;';
573 break;
574 case 'radial-amber-glow':
575 patternCSS = 'background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #f59e0b 100%); background-size: 100% 100%;';
576 break;
577 case 'radial-emerald-glow':
578 patternCSS = 'background: #ffffff; background-image: radial-gradient(125% 125% at 50% 90%, #ffffff 40%, #10b981 100%); background-size: 100% 100%;';
579 break;
580 case 'dark-horizon-glow':
581 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #0d1a36 100%); background-size: 100% 100%;';
582 break;
583 case 'crimson-depth':
584 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #2b0707 100%); background-size: 100% 100%;';
585 break;
586 case 'emerald-void':
587 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #072607 100%); background-size: 100% 100%;';
588 break;
589 case 'violet-abyss':
590 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 90%, #000000 40%, #2b092b 100%); background-size: 100% 100%;';
591 break;
592 case 'azure-depths':
593 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #010133 100%); background-size: 100% 100%;';
594 break;
595 case 'orchid-depths':
596 patternCSS = 'background: #000000; background-image: radial-gradient(125% 125% at 50% 100%, #000000 40%, #350136 100%); background-size: 100% 100%;';
597 break;
598 case 'dark-horizon-glow-top':
599 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #0d1a36 100%);';
600 break;
601 case 'crimson-depth-top':
602 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #2b0707 100%);';
603 break;
604 case 'emerald-void-top':
605 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #072607 100%);';
606 break;
607 case 'violet-abyss-top':
608 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #2b092b 100%);';
609 break;
610 case 'azure-depths-top':
611 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #010133 100%);';
612 break;
613 case 'orchid-depths-top':
614 patternCSS = 'background: radial-gradient(125% 125% at 50% 10%, #000000 40%, #350136 100%);';
615 break;
616 case 'purple-gradient-grid-right':
617 patternCSS = 'background: #ffffff; background-image: linear-gradient(to right, #f0f0f0 1px, transparent 1px), linear-gradient(to bottom, #f0f0f0 1px, transparent 1px), radial-gradient(circle 800px at 100% 200px, #d5c5ff, transparent); background-size: 96px 64px, 96px 64px, 100% 100%;';
618 break;
619 case 'purple-gradient-grid-left':
620 patternCSS = 'background: #ffffff; background-image: linear-gradient(to right, #f0f0f0 1px, transparent 1px), linear-gradient(to bottom, #f0f0f0 1px, transparent 1px), radial-gradient(circle 800px at 0% 200px, #d5c5ff, transparent); background-size: 96px 64px, 96px 64px, 100% 100%;';
621 break;
622 case 'dual-gradient-overlay-strong':
623 patternCSS = 'background: #ffffff; background-image: linear-gradient(to right, rgba(229,231,235,0.8) 1px, transparent 1px), linear-gradient(to bottom, rgba(229,231,235,0.8) 1px, transparent 1px), radial-gradient(circle 500px at 20% 80%, rgba(139,92,246,0.3), transparent), radial-gradient(circle 500px at 80% 20%, rgba(59,130,246,0.3), transparent); background-size: 48px 48px, 48px 48px, 100% 100%, 100% 100%;';
624 break;
625 case 'grid-small':
626 patternCSS = 'background-image: linear-gradient(to right, #e5e7eb 1px, transparent 1px), linear-gradient(to bottom, #e5e7eb 1px, transparent 1px); background-size: 20px 20px;';
627 break;
628 case 'grid-medium':
629 patternCSS = 'background-image: linear-gradient(to right, #d1d5db 1px, transparent 1px), linear-gradient(to bottom, #d1d5db 1px, transparent 1px); background-size: 40px 40px;';
630 break;
631 case 'grid-large':
632 patternCSS = 'background-image: linear-gradient(to right, #9ca3af 1px, transparent 1px), linear-gradient(to bottom, #9ca3af 1px, transparent 1px); background-size: 80px 80px;';
633 break;
634 case 'dots-pattern':
635 patternCSS = 'background-image: radial-gradient(circle, #d1d5db 1px, transparent 1px); background-size: 20px 20px;';
636 break;
637 case 'diagonal-stripes':
638 patternCSS = 'background: repeating-linear-gradient(45deg, #f3f4f6 0px, #f3f4f6 10px, #ffffff 10px, #ffffff 20px);';
639 break;
640 case 'circuit-board':
641 patternCSS = 'background: #1f2937; background-image: linear-gradient(rgba(34,197,94,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(34,197,94,.2) 1px, transparent 1px), radial-gradient(circle at 20px 20px, rgba(34,197,94,.3) 2px, transparent 3px), radial-gradient(circle at 80px 80px, rgba(59,130,246,.3) 2px, transparent 3px); background-size: 100px 100px, 100px 100px, 100px 100px, 100px 100px;';
642 break;
643 case 'blueprint':
644 patternCSS = 'background: #1e40af; background-image: linear-gradient(rgba(255,255,255,.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.1) 1px, transparent 1px), linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px; background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;';
645 break;
646 case 'aurora-dream-soft-harmony':
647 patternCSS = 'background: #f7eaff; background-image: radial-gradient(ellipse 80% 60% at 60% 20%, rgba(175, 109, 255, 0.50), transparent 65%), radial-gradient(ellipse 70% 60% at 20% 80%, rgba(255, 100, 180, 0.45), transparent 65%), radial-gradient(ellipse 60% 50% at 60% 65%, rgba(255, 235, 170, 0.43), transparent 62%), radial-gradient(ellipse 65% 40% at 50% 60%, rgba(120, 190, 255, 0.48), transparent 68%), linear-gradient(180deg, #f7eaff 0%, #fde2ea 100%); background-size: 100% 100%;';
648 break;
649 default:
650 patternCSS = 'background: #f8fafc; background-image: linear-gradient(to right, #e2e8f0 1px, transparent 1px), linear-gradient(to bottom, #e2e8f0 1px, transparent 1px); background-size: 20px 20px;';
651 break;
652 }
653 #>
654 <div style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; {{{ patternCSS }}}"></div>
655 </div>
656 <# } #>
657 <?php
658 $patterns_content = ob_get_contents();
659 ob_end_clean();
660
661 $template = $patterns_content . $template;
662 return $template;
663 }
664
665 public static function get_instance()
666 {
667 if (!self::$instance) {
668 self::$instance = new self;
669 }
670 return self::$instance;
671 }
672 }
673 }
674
675 if (class_exists('MasterAddons\Modules\Display\Patterns')) {
676 Patterns::get_instance();
677 }
678