PluginProbe
Tiered Pricing Table for WooCommerce / 6.1.0
Tiered Pricing Table for WooCommerce v6.1.0
8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 All 91 releases
tier-pricing-table / views / admin / welcome-page / welcome-page.php

welcome-page.php in Tiered Pricing Table for WooCommerce 6.1.0, at views/admin/welcome-page/welcome-page.php

1,202 lines 30.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php use TierPricingTable\Core\ServiceContainer;
2
3 defined( 'ABSPATH' ) || die();
4
5 $fileManager = ServiceContainer::getInstance()->getFileManager();
6 ?>
7 <style>
8 /**
9 * General styles
10 */
11 .notice, .error {
12 display: none;
13 }
14
15 .tpt-checkmark {
16 display: block;
17 margin: 10px 0;
18 font-weight: 500;
19 }
20
21 .tpt-checkmark::before {
22 content: url(<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/checkmark.svg' ) ); ?>);
23 width: 1.3em;
24 display: inline-block;
25 padding: 0;
26 height: 1.3em;
27 vertical-align: middle;
28 margin-right: 6px;
29 }
30
31 /**
32 * Button styles
33 */
34 .tpt-welcome-page-button {
35 display: inline-block;
36 padding: 14px 28px;
37 font-size: 15px;
38 font-weight: 600;
39 text-decoration: none;
40 border-radius: 8px;
41 transition: all 0.2s ease;
42 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
43 }
44
45 .tpt-welcome-page-button-primary {
46 background: #96598a;
47 color: #fff;
48 }
49
50 .tpt-welcome-page-button-primary--border {
51 border: 2px solid rgba(255, 255, 255, 0.3);
52 box-shadow: none;
53 }
54
55 .tpt-welcome-page-button-primary:hover {
56 color: #fff;
57 background: #7b3f6f;
58 transform: translateY(-2px);
59 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
60 }
61
62 .tpt-welcome-page-button-primary--border:hover {
63 border-color: #fff;
64 }
65
66 .tpt-welcome-page-button-secondary {
67 background: #79ab3f;
68 color: #fff;
69 }
70
71 .tpt-welcome-page-button-secondary:hover {
72 color: #fff;
73 background: #5f8a2f;
74 transform: translateY(-2px);
75 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
76 }
77
78 .tpt-welcome-page {
79 margin-left: -20px;
80 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
81 }
82
83 .tpt-welcome-page-hero {
84 background: linear-gradient(135deg, #7b3f6f 0%, #96598a 100%);
85 display: flex;
86 justify-content: space-between;
87 align-items: center;
88 color: #fff;
89 padding: 40px 50px;
90 box-shadow: 0 4px 12px rgba(150, 89, 138, 0.2);
91 }
92
93 .tpt-welcome-page-hero__content {
94 width: 45%;
95 }
96
97 .tpt-browser-mockup {
98 background: #fff;
99 border-radius: 12px;
100 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25);
101 width: 100%;
102 max-width: 650px;
103 transform: perspective(1000px) rotateY(-5deg) rotateX(5deg);
104 transition: transform 0.5s ease;
105 margin-left: auto;
106 overflow: hidden;
107 }
108
109 .tpt-browser-mockup:hover {
110 transform: perspective(1000px) rotateY(0deg) rotateX(0deg) scale(1.02);
111 }
112
113 .tpt-browser-mockup-header {
114 background: #f1f5f9;
115 padding: 12px 16px;
116 display: flex;
117 align-items: center;
118 border-bottom: 1px solid #e2e8f0;
119 }
120
121 .tpt-browser-mockup-header .dot {
122 display: inline-block;
123 width: 12px;
124 height: 12px;
125 border-radius: 50%;
126 margin-right: 8px;
127 }
128
129 .tpt-browser-mockup-header .dot-red {
130 background: #ef4444;
131 }
132
133 .tpt-browser-mockup-header .dot-yellow {
134 background: #eab308;
135 }
136
137 .tpt-browser-mockup-header .dot-green {
138 background: #22c55e;
139 }
140
141 .tpt-browser-mockup-address {
142 background: #fff;
143 border: 1px solid #cbd5e1;
144 border-radius: 4px;
145 padding: 4px 12px;
146 font-size: 0.8rem;
147 color: #94a3b8;
148 margin-left: 20px;
149 flex: 1;
150 text-align: center;
151 }
152
153 .tpt-interactive-preview {
154 display: flex;
155 background: #fff;
156 color: #333;
157 padding: 24px;
158 gap: 30px;
159 box-sizing: border-box;
160 }
161
162 .tpt-interactive-preview * {
163 box-sizing: border-box;
164 }
165
166 .tpt-ip-left {
167 flex: 0 0 30%;
168 background: #eef2f6;
169 border-radius: 8px;
170 display: flex;
171 align-items: center;
172 justify-content: center;
173 padding: 20px;
174 min-width: 0;
175 }
176
177 .tpt-ip-left img {
178 width: 100%;
179 max-height: 250px;
180 object-fit: contain;
181 }
182
183 .tpt-ip-right {
184 flex: 1;
185 display: flex;
186 flex-direction: column;
187 text-align: left;
188 min-width: 0;
189 }
190
191 .tpt-ip-title {
192 font-size: 2rem;
193 font-weight: 300;
194 margin: 0 0 10px 0;
195 color: #1e293b;
196 line-height: 1;
197 }
198
199 .tpt-ip-main-price {
200 font-size: 1.5rem;
201 margin-bottom: 15px;
202 color: #475569;
203 }
204
205 .tpt-ip-main-price del {
206 color: #9ca3af;
207 margin-right: 8px;
208 }
209
210 .tpt-ip-desc {
211 color: #64748b;
212 margin-top: 0;
213 margin-bottom: 20px;
214 font-size: 0.95em;
215 }
216
217 .tpt-ip-blocks {
218 display: flex;
219 flex-direction: column;
220 gap: 12px;
221 margin-bottom: 20px;
222 }
223
224 .tpt-hero-preview-row {
225 display: flex;
226 gap: 12px;
227 justify-content: flex-start;
228 flex-wrap: wrap;
229 }
230
231 .tpt-hero-preview-block {
232 background: #f8fafc;
233 border: 1px solid #cbd5e1;
234 border-radius: 6px;
235 padding: 16px 15px 12px 15px;
236 position: relative;
237 flex: 1;
238 min-width: 120px;
239 text-align: left;
240 color: #475569;
241 box-sizing: border-box;
242 cursor: pointer;
243 transition: all 0.2s ease;
244 }
245
246 .tpt-hero-preview-block:hover {
247 border-color: #94a3b8;
248 }
249
250 .tpt-hero-preview-block.is-selected {
251 border-color: #96598a;
252 box-shadow: 0 0 0 1px #96598a;
253 }
254
255 .tpt-hero-preview-qty {
256 font-size: 0.95em;
257 margin-bottom: 6px;
258 color: #64748b;
259 white-space: nowrap;
260 }
261
262 .tpt-hero-preview-price {
263 font-size: 1.15em;
264 color: #334155;
265 white-space: nowrap;
266 }
267
268 .tpt-hero-preview-price strong {
269 font-weight: 700;
270 }
271
272 .tpt-hero-preview-discount {
273 font-size: 0.75em;
274 font-weight: 600;
275 color: #64748b;
276 margin-left: 4px;
277 }
278
279 .tpt-ip-add-to-cart {
280 display: flex;
281 gap: 12px;
282 margin-bottom: 25px;
283 }
284
285 .tpt-ip-qty-input {
286 width: 70px;
287 padding: 8px;
288 border: 1px solid #cbd5e1;
289 border-radius: 4px;
290 font-size: 1.05rem;
291 text-align: center;
292 background: #f1f5f9;
293 color: #334155;
294 }
295
296 .tpt-ip-btn {
297 background: #334155;
298 color: #fff;
299 border: none;
300 padding: 8px 20px;
301 border-radius: 4px;
302 font-size: 1rem;
303 font-weight: 600;
304 cursor: pointer;
305 transition: background 0.2s ease;
306 }
307
308 .tpt-ip-btn:hover {
309 background: #1e293b;
310 }
311
312 .tpt-ip-summary {
313 border-top: 1px solid #e2e8f0;
314 padding-top: 15px;
315 }
316
317 .tpt-ip-summary-row {
318 display: flex;
319 justify-content: space-between;
320 margin-bottom: 8px;
321 font-size: 1.05rem;
322 color: #475569;
323 font-weight: 600;
324 }
325
326 .tpt-ip-summary-row--total {
327 font-size: 1.3rem;
328 color: #64748b;
329 margin-bottom: 0;
330 }
331
332 .tpt-ip-summary-row--total strong {
333 color: #334155;
334 }
335
336 .tpt-welcome-page-hero__title {
337 font-size: 3.5rem;
338 line-height: 1.1;
339 margin-bottom: 20px;
340 font-weight: 700;
341 }
342
343 .tpt-welcome-page-hero__description {
344 font-size: 1.1rem;
345 line-height: 1.6;
346 margin-bottom: 30px;
347 opacity: 0.9;
348 }
349
350 .tpt-welcome-page-hero__actions {
351 display: flex;
352 gap: 15px;
353 }
354
355 .tpt-welcome-page-features {
356 column-count: 2;
357 column-gap: 40px;
358 padding: 0 50px;
359 margin: 50px 0;
360 }
361
362 .tpt-welcome-page-feature {
363 margin-bottom: 40px;
364 break-inside: avoid;
365 }
366
367 .tpt-welcome-page-feature__image-description {
368 text-align: center;
369 margin-bottom: 20px;
370 font-style: italic;
371 color: #64748b;
372 font-size: 0.9em;
373 }
374
375 .tpt-welcome-page-features--templates {
376 column-count: 4;
377 column-gap: 30px;
378 }
379
380 .tpt-welcome-page-feature__inner {
381 background: #fff;
382 padding: 30px;
383 border-radius: 12px;
384 border: 1px solid #f1f5f9;
385 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
386 transition: transform 0.2s ease, box-shadow 0.2s ease;
387 }
388
389 .tpt-welcome-page-feature__inner:hover {
390 transform: translateY(-4px);
391 box-shadow: 0 12px 20px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -5px rgba(0, 0, 0, 0.04);
392 }
393
394 .tpt-welcome-page-feature--template .tpt-welcome-page-feature__inner {
395 padding: 15px;
396 }
397
398 .tpt-welcome-page-feature__title {
399 font-size: 1.4rem;
400 font-weight: 600;
401 margin-bottom: 20px;
402 line-height: 1.4;
403 color: #1e293b;
404 }
405
406 .tpt-welcome-page-feature__description {
407 font-size: 1.05em;
408 color: #334155;
409 }
410
411 .tpt-welcome-page-feature img {
412 width: 100%;
413 border-radius: 6px;
414 }
415
416 .tpt-welcome-page-section-title {
417 font-size: 2.5em;
418 font-weight: 700;
419 line-height: 1.2;
420 padding: 0 50px;
421 margin-top: 60px;
422 color: #0f172a;
423 display: flex;
424 align-items: center;
425 }
426
427 .tpt-welcome-page-section-title span {
428 margin-right: 15px;
429 background: linear-gradient(135deg, #7b3f6f 0%, #96598a 100%);
430 font-size: 1.5rem;
431 color: #fff;
432 display: inline-block;
433 padding: 6px 16px;
434 border-radius: 8px;
435 box-shadow: 0 4px 6px rgba(150, 89, 138, 0.3);
436 }
437
438 .tpt-welcome-page-install-notice {
439 background: #dcfce7;
440 color: #166534;
441 padding: 12px 24px;
442 border-radius: 8px;
443 border: 1px solid #bbf7d0;
444 display: flex;
445 align-items: center;
446 font-weight: 500;
447 font-size: 1.05em;
448 }
449
450 .tpt-welcome-page-install-notice .dashicons {
451 margin-right: 8px;
452 color: #15803d;
453 }
454
455 .tpt-welcome-page-side-features {
456 padding: 0 50px;
457 margin: 40px 0;
458 display: flex;
459 gap: 24px;
460 flex-wrap: wrap;
461 }
462
463 .tpt-welcome-page-side-feature {
464 padding: 20px 25px;
465 background: #fff;
466 font-weight: 500;
467 font-size: 1.25em;
468 color: #334155;
469 border: 1px solid #f1f5f9;
470 border-radius: 12px;
471 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
472 transition: transform 0.2s ease, box-shadow 0.2s ease;
473 display: flex;
474 align-items: center;
475 gap: 12px;
476 }
477
478 .tpt-welcome-page-side-feature:hover {
479 transform: translateY(-4px);
480 box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08);
481 border-color: #e2e8f0;
482 }
483
484 </style>
485 <main class="tpt-welcome-page">
486
487 <div class="tpt-welcome-page-install-notice">
488 <span class="dashicons dashicons-plugins-checked"></span> Thanks for installing the plugin! Below you will find
489 a quick overview of the main features.
490 </div>
491
492 <header class="tpt-welcome-page-hero">
493
494 <div class="tpt-welcome-page-hero__content">
495 <div class="tpt-welcome-page-hero__title">
496 <div>Welcome to</div>
497 <div><b>Tiered Pricing Table</b></div>
498 </div>
499
500 <div class="tpt-welcome-page-hero__description">
501 <p>
502 <?php
503 esc_html_e( 'Tiered Pricing Table is a powerful tool that allows you to create quantity-based pricing for your WooCommerce products.',
504 'tier-pricing-table' );
505 ?>
506 </p>
507 <p>
508 <?php
509 esc_html_e( 'With intuitive templates, flexible pricing rules, and advanced features, this plugin is a perfect fit for any type of store.',
510 'tier-pricing-table' );
511 ?>
512 </p>
513 </div>
514 <div class="tpt-welcome-page-hero__actions">
515 <a href="<?php echo esc_attr( ServiceContainer::getInstance()->getSettings()->getLink() ); ?>"
516 class="tpt-welcome-page-button tpt-welcome-page-button-secondary">
517 <?php esc_html_e( 'Settings', 'tier-pricing-table' ); ?>
518 </a>
519
520 <a href="<?php echo esc_attr( \TierPricingTable\TierPricingTablePlugin::getDocumentationURL() ); ?>"
521 target="_blank"
522 class="tpt-welcome-page-button tpt-welcome-page-button-primary tpt-welcome-page-button-primary--border">
523 <?php esc_html_e( 'Documentation', 'tier-pricing-table' ); ?>
524 </a>
525 </div>
526
527 <div class="tpt-welcome-page-hero__additional" style="font-size: 1.2em; margin-top: 20px;">
528 Questions? We're here to help.
529 <a style="color: #fff"
530 href="<?php echo esc_attr( \TierPricingTable\TierPricingTablePlugin::getContactUsURL() ); ?>"
531 target="_blank">Contact Us</a>
532 </div>
533 </div>
534
535 <div class="tpt-welcome-page-hero__image">
536 <div class="tpt-browser-mockup">
537 <div class="tpt-browser-mockup-header">
538 <span class="dot dot-red"></span>
539 <span class="dot dot-yellow"></span>
540 <span class="dot dot-green"></span>
541 <div class="tpt-browser-mockup-address">yoursite.com/product/cap</div>
542 </div>
543 <div class="tpt-interactive-preview" id="tpt-interactive-preview">
544 <div class="tpt-ip-left">
545 <svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5" stroke-linecap="round"
546 stroke-linejoin="round" style="width: 80%; height: auto; max-height: 200px;">
547 <path d="M20.38 3.46L16 2a4 4 0 01-8 0L3.62 3.46a2 2 0 00-1.34 2.23l.58 3.47a1 1 0 00.99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 002-2V10h2.15a1 1 0 00.99-.84l.58-3.47a2 2 0 00-1.34-2.23z"/>
548 </svg>
549 </div>
550 <div class="tpt-ip-right">
551 <h2 class="tpt-ip-title">Cap</h2>
552 <div class="tpt-ip-main-price" id="tpt-ip-main-price">
553 <del>$100.00</del>
554 <span>$75.00</span></div>
555 <p class="tpt-ip-desc">This is a simple product.</p>
556
557 <div class="tpt-ip-blocks">
558 <div class="tpt-hero-preview-row">
559 <div class="tpt-hero-preview-block tpt-ip-block" data-qty="1" data-price="100.00">
560 <div class="tpt-hero-preview-qty">1 - 9 pieces</div>
561 <div class="tpt-hero-preview-price"><strong>$100.00</strong></div>
562 </div>
563 <div class="tpt-hero-preview-block tpt-ip-block" data-qty="10" data-price="90.00">
564 <div class="tpt-hero-preview-qty">10 - 19 pieces</div>
565 <div class="tpt-hero-preview-price"><strong>$90.00</strong> <span
566 class="tpt-hero-preview-discount">(10% off)</span></div>
567 </div>
568 </div>
569 <div class="tpt-hero-preview-row">
570 <div class="tpt-hero-preview-block tpt-ip-block" data-qty="20" data-price="85.00">
571 <div class="tpt-hero-preview-qty">20 - 49 pieces</div>
572 <div class="tpt-hero-preview-price"><strong>$85.00</strong> <span
573 class="tpt-hero-preview-discount">(15% off)</span></div>
574 </div>
575 <div class="tpt-hero-preview-block tpt-ip-block" data-qty="50" data-price="80.00">
576 <div class="tpt-hero-preview-qty">50 - 99 pieces</div>
577 <div class="tpt-hero-preview-price"><strong>$80.00</strong> <span
578 class="tpt-hero-preview-discount">(20% off)</span></div>
579 </div>
580 </div>
581 <div class="tpt-hero-preview-row">
582 <div class="tpt-hero-preview-block tpt-ip-block is-selected" data-qty="100"
583 data-price="75.00" style="max-width: 200px;">
584 <div class="tpt-hero-preview-qty">100+ pieces</div>
585 <div class="tpt-hero-preview-price"><strong>$75.00</strong> <span
586 class="tpt-hero-preview-discount">(25% off)</span></div>
587 </div>
588 </div>
589 </div>
590
591 <div class="tpt-ip-add-to-cart">
592 <input type="number" id="tpt-ip-qty" class="tpt-ip-qty-input" value="100" min="1">
593 <button class="tpt-ip-btn">Add to cart</button>
594 </div>
595
596 <div class="tpt-ip-summary">
597 <div class="tpt-ip-summary-row">
598 <span id="tpt-ip-summary-qty">100x</span>
599 <span id="tpt-ip-summary-each">$75.00</span>
600 </div>
601 <div class="tpt-ip-summary-row tpt-ip-summary-row--total">
602 <span>Cap</span>
603 <strong id="tpt-ip-summary-total">$7,500.00</strong>
604 </div>
605 </div>
606 </div>
607 </div>
608 </div>
609 </div>
610
611 <script>
612 document.addEventListener('DOMContentLoaded', function () {
613 const blocks = document.querySelectorAll('.tpt-ip-block');
614 const qtyInput = document.getElementById('tpt-ip-qty');
615 const mainPrice = document.getElementById('tpt-ip-main-price');
616 const summaryQty = document.getElementById('tpt-ip-summary-qty');
617 const summaryEach = document.getElementById('tpt-ip-summary-each');
618 const summaryTotal = document.getElementById('tpt-ip-summary-total');
619
620 function getPriceForQty(qty) {
621 if (qty >= 100) return 75.00;
622 if (qty >= 50) return 80.00;
623 if (qty >= 20) return 85.00;
624 if (qty >= 10) return 90.00;
625 return 100.00;
626 }
627
628 function updateUI(qty) {
629 qty = parseInt(qty) || 1;
630 if (qty < 1) qty = 1;
631 if (qtyInput.value != qty) qtyInput.value = qty;
632
633 const price = getPriceForQty(qty);
634
635 blocks.forEach(b => b.classList.remove('is-selected'));
636
637 let selectedIndex = 0;
638 if (qty >= 100) selectedIndex = 4;
639 else if (qty >= 50) selectedIndex = 3;
640 else if (qty >= 20) selectedIndex = 2;
641 else if (qty >= 10) selectedIndex = 1;
642
643 if (blocks[selectedIndex]) blocks[selectedIndex].classList.add('is-selected');
644
645 if (price < 100) {
646 mainPrice.innerHTML = `<del>$100.00</del> <span>$${price.toFixed(2)}</span>`;
647 } else {
648 mainPrice.innerHTML = `<span>$100.00</span>`;
649 }
650
651 summaryQty.innerText = `${qty}x`;
652 summaryEach.innerText = `$${price.toFixed(2)}`;
653 summaryTotal.innerText = `$${(price * qty).toLocaleString('en-US', {
654 minimumFractionDigits: 2,
655 maximumFractionDigits: 2
656 })}`;
657 }
658
659 blocks.forEach(block => {
660 block.addEventListener('click', function () {
661 const qty = parseInt(this.getAttribute('data-qty'));
662 updateUI(qty);
663 });
664 });
665
666 if (qtyInput) {
667 qtyInput.addEventListener('input', function () {
668 updateUI(this.value);
669 });
670 }
671
672 updateUI(100);
673 });
674 </script>
675 </header>
676
677 <div class="tpt-welcome-page-section-title">
678 <span>#1</span>
679 Easy Setup
680 </div>
681
682 <section class="tpt-welcome-page-features">
683
684 <div class="tpt-welcome-page-feature">
685
686 <div class="tpt-welcome-page-feature__title">
687 <?php esc_html_e( 'Apply tiered pricing to products', 'tier-pricing-table' ); ?>:
688 </div>
689
690 <div class="tpt-welcome-page-feature__inner">
691 <div class="tpt-welcome-page-feature__image">
692 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/product-level-rules.png' ) ); ?>">
693 <div class="tpt-welcome-page-feature__image-description">Product edit page</div>
694 </div>
695 <div class="tpt-welcome-page-feature__description">
696 <span class="tpt-checkmark"> Add unlimited quantity-based prices.</span>
697 <span class="tpt-checkmark"> Fixed prices or percentage discounts.</span>
698 <span class="tpt-checkmark"> Works great with variable products.</span>
699 </div>
700 </div>
701
702 </div>
703
704 <div class="tpt-welcome-page-feature">
705
706 <div class="tpt-welcome-page-feature__title">
707 <?php esc_html_e( 'Prices automatically displayed on the product page:', 'tier-pricing-table' ); ?>
708 </div>
709
710 <div class="tpt-welcome-page-feature__inner">
711 <div class="tpt-welcome-page-feature__image">
712 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/product-page.png' ) ); ?>">
713 <div class="tpt-welcome-page-feature__image-description">Product page</div>
714 </div>
715
716 </div>
717 </div>
718
719 </section>
720
721 <div class="tpt-welcome-page-section-title">
722 <span>#2</span>
723 Various Pricing Templates
724 </div>
725
726 <?php
727 $templates = array(
728 array(
729 'title' => __( 'Pricing Table', 'tier-pricing-table' ),
730 'image' => 'table.png',
731 'features' => array(
732 __( 'Ability to add custom columns.', 'tier-pricing-table' ),
733 __( 'Customizable columns titles', 'tier-pricing-table' ),
734 __( 'Customize accent color.', 'tier-pricing-table' ),
735 ),
736 ),
737 array(
738 'title' => __( 'Pricing Blocks', 'tier-pricing-table' ),
739 'image' => 'blocks-2.png',
740 'features' => array(
741 __( 'Show/hide percentage discount.', 'tier-pricing-table' ),
742 ),
743 ),
744 array(
745 'title' => __( 'Pricing Blocks #2', 'tier-pricing-table' ),
746 'image' => 'blocks-3.png',
747 'features' => array(),
748 ),
749 array(
750 'title' => __( 'Pricing Options', 'tier-pricing-table' ),
751 'image' => 'options.png',
752 'features' => array(
753 __( 'Customize template with various available variables.', 'tier-pricing-table' ),
754 __( 'Show/hide total in a selected option.', 'tier-pricing-table' ),
755 ),
756 ),
757
758 array(
759 'title' => __( 'Tooltip', 'tier-pricing-table' ),
760 'image' => 'tooltip.png',
761 'features' => array(
762 __( 'Customizable color and size.', 'tier-pricing-table' ),
763 ),
764 ),
765
766 array(
767 'title' => __( 'Horizontal table', 'tier-pricing-table' ),
768 'image' => 'horizontal-table.png',
769 'features' => array(),
770 ),
771 array(
772 'title' => __( 'Plain text', 'tier-pricing-table' ),
773 'image' => 'plain-text.png',
774 'features' => array(
775 __( 'Customize template with various available variables.', 'tier-pricing-table' ),
776 ),
777 ),
778 array(
779 'title' => __( 'Dropdown', 'tier-pricing-table' ),
780 'image' => 'dropdown.png',
781 'features' => array(
782 __( 'Customizable template.', 'tier-pricing-table' ),
783 ),
784 ),
785 );
786 ?>
787 <section class="tpt-welcome-page-features tpt-welcome-page-features--templates">
788
789 <?php foreach ( $templates as $template ) : ?>
790
791 <div class="tpt-welcome-page-feature tpt-welcome-page-feature--template">
792 <div class="tpt-welcome-page-feature__title">
793 <?php echo esc_html( $template['title'] ); ?>
794 </div>
795
796 <div class="tpt-welcome-page-feature__inner">
797 <div class="tpt-welcome-page-feature__image">
798 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/templates/' . $template['image'] ) ); ?>">
799 </div>
800 <div class="tpt-welcome-page-feature__description">
801
802 <?php foreach ( $template['features'] as $feature ) : ?>
803 <span class="tpt-checkmark"><?php echo esc_html( $feature ); ?></span>
804 <?php endforeach; ?>
805 </div>
806 </div>
807
808 </div>
809
810 <?php endforeach; ?>
811 </section>
812
813 <div class="tpt-welcome-page-section-title">
814 <span>#3</span>
815 Flexible Pricing
816 </div>
817
818 <section class="tpt-welcome-page-features tpt-welcome-page-features--flexible-pricing">
819 <div class="tpt-welcome-page-feature">
820
821 <div class="tpt-welcome-page-feature__title">
822 <?php esc_html_e( 'Apply custom prices to any user role', 'tier-pricing-table' ); ?>:
823 </div>
824
825 <div class="tpt-welcome-page-feature__inner">
826 <div class="tpt-welcome-page-feature__image">
827 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/role-based.png' ) ); ?>">
828 </div>
829 <div class="tpt-welcome-page-feature__description">
830 <span class="tpt-checkmark"> Add unlimited role-based pricing.</span>
831 <span class="tpt-checkmark"> Control regular & sale price or provide a percentage discount.</span>
832 <span class="tpt-checkmark"> Control minimum, maximum and quantity step.</span>
833 <span class="tpt-checkmark"> Works great with variable products.</span>
834 </div>
835 </div>
836
837 </div>
838
839 <div class="tpt-welcome-page-feature">
840
841 <div class="tpt-welcome-page-feature__title">
842 <?php
843 esc_html_e( 'Apply custom prices in bulk for selected categories and users:',
844 'tier-pricing-table' );
845 ?>
846 </div>
847
848 <div class="tpt-welcome-page-feature__inner">
849 <div class="tpt-welcome-page-feature__image">
850 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/global-rules .png' ) ); ?>">
851 </div>
852 <div class="tpt-welcome-page-feature__description">
853 <span class="tpt-checkmark"> Control regular prices, tiered pricing and quantity limits in one place.</span>
854 <span class="tpt-checkmark"> Apply tiered pricing across multiple products.</span>
855 <span class="tpt-checkmark"> Select products or product categories the rule works for.</span>
856 <span class="tpt-checkmark"> Select users or user roles the rule works for.</span>
857 </div>
858 </div>
859 </div>
860 </section>
861
862 <div class="tpt-welcome-page-section-title">
863 <span>#4</span>
864 Advanced Features
865 </div>
866
867 <section class="tpt-welcome-page-features tpt-welcome-page-features--plugin-features">
868 <?php
869 $mainFeatures = array(
870 array(
871 'title' => __( 'Instant price updating', 'tier-pricing-table' ),
872 'image' => 'totals.png',
873 'features' => array(
874 'Price updates instantly when customers change the quantity.',
875 'Instant totals with three different available templates.',
876 'Instant “You save” label which shows to your customers difference between original and sale price.',
877 ),
878 ),
879 array(
880 'title' => __( 'Cart', 'tier-pricing-table' ),
881 'image' => 'cart.png',
882 'features' => array(
883 'Cart upsell to motivate customers to purchase more.',
884 'Customize cart upsells template.',
885 'Tiered price in the cart appears as a discount.',
886 ),
887 ),
888 array(
889 'title' => __( 'Catalog prices', 'tier-pricing-table' ),
890 'image' => 'catalog.png',
891 'features' => array(
892 'Show the lowest price.',
893 'Customize the lowest price prefix: “from $10.00”, “as low as $10.00” or whatever you want.',
894 'Show the price range based on tiered pricing.',
895 ),
896 ),
897 array(
898 'title' => __( 'Product catalog (Category page)', 'tier-pricing-table' ),
899 'image' => 'catalog-render.png',
900 'features' => array(
901 'Customize template (can be different from product page).',
902 'Show quantity field.',
903 ),
904 ),
905 );
906 ?>
907
908 <?php foreach ( $mainFeatures as $feature ) : ?>
909 <div class="tpt-welcome-page-feature">
910
911 <div class="tpt-welcome-page-feature__title">
912 <?php echo esc_html( $feature['title'] ); ?>
913 </div>
914
915 <div class="tpt-welcome-page-feature__inner">
916
917 <div class="tpt-welcome-page-feature__image">
918 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/welcome-page/' . $feature['image'] ) ); ?>">
919 <div class="tpt-welcome-page-feature__image-description">Product catalog</div>
920 </div>
921
922 <div class="tpt-welcome-page-feature__description">
923 <?php foreach ( $feature['features'] as $featureItem ) : ?>
924 <span class="tpt-checkmark"><?php echo esc_html( $featureItem ); ?></span>
925 <?php endforeach; ?>
926 </div>
927 </div>
928
929 </div>
930 <?php endforeach; ?>
931 </section>
932
933 <div class="tpt-welcome-page-section-title">
934 <span>#5</span>
935 Other Features That Make The Plugin Unique
936 </div>
937
938 <?php
939 $otherFeatures = array(
940 array(
941 'title' => __( 'Tier Labels & Badges', 'tier-pricing-table' ),
942 'icon' => '🏷️',
943 ),
944 array(
945 'title' => __( 'Data Cleanup & Role Management Tools', 'tier-pricing-table' ),
946 'icon' => '🛠️',
947 ),
948 array(
949 'title' => __( 'Import \ Export', 'tier-pricing-table' ),
950 'icon' => '🔁',
951 ),
952 array(
953 'title' => __( 'REST API', 'tier-pricing-table' ),
954 'icon' => '⚙️',
955 ),
956 array(
957 'title' => __( 'Admin-made orders supported', 'tier-pricing-table' ),
958 'icon' => '�
959 ',
960 ),
961 array(
962 'title' => __( 'Built-in cache', 'tier-pricing-table' ),
963 'icon' => '🚀',
964 ),
965 array(
966 'title' => __( 'Coupons management', 'tier-pricing-table' ),
967 'icon' => '🎫',
968 ),
969 array(
970 'title' => __( 'Shortcode \ Gutenberg \ Elementor', 'tier-pricing-table' ),
971 'icon' => '🧱',
972 ),
973 array(
974 'title' => __( 'Hide prices for logged-out users', 'tier-pricing-table' ),
975 'icon' => '🔑',
976 ),
977 array(
978 'title' => __( 'Works with any theme', 'tier-pricing-table' ),
979 'icon' => '✨',
980 ),
981 array(
982 'title' => __( 'Debug mode', 'tier-pricing-table' ),
983 'icon' => '⚙️',
984 ),
985 )
986 ?>
987
988 <section class="tpt-welcome-page-side-features">
989 <?php foreach ( $otherFeatures as $feature ) : ?>
990 <div class="tpt-welcome-page-side-feature">
991 <?php echo esc_html( $feature['icon'] ); ?><?php echo esc_html( ' ' . $feature['title'] ); ?>
992 </div>
993 <?php endforeach; ?>
994 </section>
995
996
997 <div class="tpt-welcome-page-section-title">
998 <span>#6</span>
999 Integrations with 3rd party plugins
1000 </div>
1001
1002 <section class="tpt-welcome-page-integrations">
1003 <?php
1004 $integrations = array(
1005 array(
1006 'title' => 'WP All Import',
1007 'image' => 'wpallimport-icon.png',
1008 ),
1009 array(
1010 'title' => 'WPML',
1011 'image' => 'wpml-multicurrency-icon.png',
1012 ),
1013 array(
1014 'title' => 'Elementor',
1015 'image' => 'elementor-icon.svg',
1016 ),
1017 array(
1018 'title' => 'WooCommerce Product Add-ons',
1019 'image' => 'woocommerce-develop.jpeg',
1020 ),
1021 array(
1022 'title' => 'Yith Request a Quote',
1023 'image' => 'yith-raq-icon.jpeg',
1024 ),
1025 array(
1026 'title' => 'Addify Request a Quote',
1027 'image' => 'addify-raq-icon.png',
1028 ),
1029 array(
1030 'title' => 'Aelia Multicurrency',
1031 'image' => 'aelia-icon.svg',
1032 ),
1033 array(
1034 'title' => 'WooCommerce Bundles',
1035 'image' => 'woocommerce-develop.jpeg',
1036 ),
1037 array(
1038 'title' => 'Fox Multicurrency',
1039 'image' => 'fox-icon.png',
1040 ),
1041 array(
1042 'title' => 'Mix & Match Products',
1043 'image' => 'mix-match-icon.png',
1044 ),
1045 array(
1046 'title' => 'Currency Switcher by "WP Experts"',
1047 'image' => 'wccs-icon.png',
1048 ),
1049 array(
1050 'title' => 'WooCommerce Deposits',
1051 'image' => 'woocommerce-develop.jpeg',
1052 ),
1053 array(
1054 'title' => 'WPML Multicurrency',
1055 'image' => 'wpml-multicurrency-icon.png',
1056 ),
1057 array(
1058 'title' => 'WooCommerce Custom Product Addons',
1059 'image' => 'wcpa-icon.png',
1060 ),
1061 );
1062 ?>
1063 <style>
1064 .tpt-welcome-page-integrations {
1065 padding: 40px 50px;
1066 display: flex;
1067 flex-wrap: wrap;
1068 gap: 30px;
1069 align-items: center;
1070 justify-content: flex-start;
1071 }
1072
1073 .tpt-welcome-page-integration {
1074 width: 140px;
1075 text-align: center;
1076 transition: transform 0.2s ease;
1077 }
1078
1079 .tpt-welcome-page-integration:hover {
1080 transform: translateY(-6px) scale(1.05);
1081 }
1082
1083 .tpt-welcome-page-integrations__image img {
1084 width: 65%;
1085 border-radius: 16px;
1086 box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
1087 }
1088
1089 .tpt-welcome-page-integrations__name {
1090 text-align: center;
1091 margin-top: 12px;
1092 font-size: 0.95em;
1093 color: #475569;
1094 }
1095
1096 </style>
1097 <?php foreach ( $integrations as $integration ) : ?>
1098 <div class="tpt-welcome-page-integration">
1099 <div class="tpt-welcome-page-integrations__image">
1100 <img src="<?php echo esc_attr( $fileManager->locateAsset( 'admin/integrations/' . $integration['image'] ) ); ?>">
1101 </div>
1102 <div class="tpt-welcome-page-integrations__name">
1103 <b><?php echo esc_html( $integration['title'] ); ?></b>
1104 </div>
1105 </div>
1106 <?php endforeach; ?>
1107 </section>
1108
1109 <style>
1110 .tpt-welcome-page-contact-us {
1111 background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
1112 padding: 80px 40px;
1113 text-align: center;
1114 border-radius: 16px;
1115 margin: 20px 50px 60px;
1116 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
1117 }
1118
1119 .tpt-welcome-page-contact-us__title {
1120 font-size: 2.5em;
1121 font-weight: 700;
1122 color: #fff;
1123 line-height: 1.2;
1124 margin-bottom: 30px;
1125 }
1126 </style>
1127
1128 <section class="tpt-welcome-page-contact-us">
1129 <div class="tpt-welcome-page-contact-us__title">Have a question?</div>
1130 <div class="tpt-welcome-page-contact-us__button">
1131 <a href="<?php echo esc_attr( \TierPricingTable\TierPricingTablePlugin::getContactUsURL() ); ?>"
1132 target="_blank"
1133 class="tpt-welcome-page-button tpt-welcome-page-button-primary">Contact Us</a>
1134 </div>
1135 </section>
1136 </main>
1137
1138 <style>
1139 @media screen and (max-width: 900px) {
1140
1141 .tpt-welcome-page-hero__content {
1142 width: 100%;
1143 }
1144
1145 .tpt-welcome-page-hero__image {
1146 display: none
1147 }
1148
1149 .tpt-welcome-page-hero__additional {
1150 font-size: 1em;
1151 }
1152
1153 .tpt-welcome-page-features {
1154 column-count: 1;
1155 }
1156
1157 .tpt-welcome-page-features--templates {
1158 column-count: 2;
1159 }
1160
1161 .tpt-welcome-page-feature__image-description {
1162 font-size: 0.8em;
1163 }
1164
1165 .tpt-welcome-page-feature__title {
1166 font-size: 1.4em;
1167 }
1168
1169 .tpt-welcome-page-feature__description {
1170 font-size: 1em;
1171 }
1172
1173 .tpt-welcome-page-section-title {
1174 font-size: 2em;
1175 }
1176
1177 .tpt-welcome-page-side-features {
1178 gap: 10px;
1179 }
1180
1181 .tpt-welcome-page-side-feature {
1182 font-size: 1.2em;
1183 padding: 10px;
1184 }
1185
1186 .tpt-welcome-page-integrations {
1187 padding: 40px 20px;
1188 }
1189
1190 .tpt-welcome-page-integration {
1191 width: 120px;
1192 }
1193
1194 .tpt-welcome-page-contact-us {
1195 padding: 40px 20px;
1196 }
1197
1198 .tpt-welcome-page-contact-us__title {
1199 font-size: 2em;
1200 }
1201 }
1202 </style>