PluginProbe
Text Typing – grab attention with animated typing headlines / trunk
Text Typing – grab attention with animated typing headlines vtrunk
2.1.0 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
text-typing / dashboard / utils / blocks.js

blocks.js in Text Typing – grab attention with animated typing headlines trunk, at dashboard/utils/blocks.js

834 lines 16.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // Block catalogue rendered by the Blocks page (#/blocks) and the Welcome-page
2 // Blocks card. Shape matches bpl-tools/Admin/Blocks:
3 // { name, title, icon, demo, docs, status, required?, isPremium? }
4 // `name` MUST match the registered block name so the disable toggle maps to the
5 // ttbDisabledBlocks option honoured in index.php at registration time.
6
7 const demoBase = "https://bblockswp.com/demo";
8 const docsBase = "https://bplugins.com/docs";
9
10 const typingIcon = (
11 <svg
12 width="24"
13 height="24"
14 viewBox="0 0 24 24"
15 fill="currentColor"
16 xmlns="http://www.w3.org/2000/svg">
17 <path d="M2.5 4v3h5v12h3V7h5V4h-13zm19 5h-9v3h3v7h3v-7h3V9z" />
18 </svg>
19 );
20
21 const headlineIcon = (
22 <svg
23 width="24"
24 height="24"
25 viewBox="0 0 24 24"
26 fill="none"
27 xmlns="http://www.w3.org/2000/svg">
28 <path
29 d="M4 6h16M4 12h10M4 18h7"
30 stroke="currentColor"
31 strokeWidth="2"
32 strokeLinecap="round"
33 />
34 <path
35 d="M16.5 14.5l1.2 3 3 1.2-3 1.2-1.2 3-1.2-3-3-1.2 3-1.2 1.2-3z"
36 fill="currentColor"
37 />
38 </svg>
39 );
40
41 const rotatingIcon = (
42 <svg
43 width="24"
44 height="24"
45 viewBox="0 0 24 24"
46 fill="none"
47 xmlns="http://www.w3.org/2000/svg">
48 <path
49 d="M4 7h9M4 12h6"
50 stroke="currentColor"
51 strokeWidth="2"
52 strokeLinecap="round"
53 />
54 <path
55 d="M20 7a5 5 0 0 0-9-3M16 17a5 5 0 0 0 9 3"
56 stroke="currentColor"
57 strokeWidth="2"
58 strokeLinecap="round"
59 />
60 <path
61 d="M11 2v3h3M21 22v-3h-3"
62 stroke="currentColor"
63 strokeWidth="2"
64 strokeLinecap="round"
65 strokeLinejoin="round"
66 />
67 </svg>
68 );
69
70 const counterIcon = (
71 <svg
72 width="24"
73 height="24"
74 viewBox="0 0 24 24"
75 fill="none"
76 xmlns="http://www.w3.org/2000/svg">
77 <rect
78 x="3"
79 y="5"
80 width="18"
81 height="11"
82 rx="2"
83 stroke="currentColor"
84 strokeWidth="2"
85 />
86 <path
87 d="M7 9v3M12 8v4M17 9v3"
88 stroke="currentColor"
89 strokeWidth="2"
90 strokeLinecap="round"
91 />
92 <path
93 d="M8 20h8"
94 stroke="currentColor"
95 strokeWidth="2"
96 strokeLinecap="round"
97 />
98 </svg>
99 );
100
101 const marqueeIcon = (
102 <svg
103 width="24"
104 height="24"
105 viewBox="0 0 24 24"
106 fill="none"
107 xmlns="http://www.w3.org/2000/svg">
108 <rect
109 x="2"
110 y="7"
111 width="20"
112 height="10"
113 rx="2"
114 stroke="currentColor"
115 strokeWidth="2"
116 />
117 <path
118 d="M6 12h6"
119 stroke="currentColor"
120 strokeWidth="2"
121 strokeLinecap="round"
122 />
123 <path
124 d="M15 9l3 3-3 3"
125 stroke="currentColor"
126 strokeWidth="2"
127 strokeLinecap="round"
128 strokeLinejoin="round"
129 />
130 </svg>
131 );
132
133 const circularIcon = (
134 <svg
135 width="24"
136 height="24"
137 viewBox="0 0 24 24"
138 fill="none"
139 xmlns="http://www.w3.org/2000/svg">
140 <circle
141 cx="12"
142 cy="12"
143 r="9"
144 stroke="currentColor"
145 strokeWidth="2"
146 strokeDasharray="3 2.5"
147 />
148 <circle cx="12" cy="12" r="2.5" fill="currentColor" />
149 </svg>
150 );
151
152 const outlineIcon = (
153 <svg
154 width="24"
155 height="24"
156 viewBox="0 0 24 24"
157 fill="none"
158 xmlns="http://www.w3.org/2000/svg">
159 <path
160 d="M6 18V6h2.5a3.5 3.5 0 0 1 0 7H6"
161 stroke="currentColor"
162 strokeWidth="2"
163 strokeLinecap="round"
164 strokeLinejoin="round"
165 />
166 <path
167 d="M14 18l3-12 3 12M14.8 14h4.4"
168 stroke="currentColor"
169 strokeWidth="2"
170 strokeLinecap="round"
171 strokeLinejoin="round"
172 />
173 </svg>
174 );
175
176 const maskIcon = (
177 <svg
178 width="24"
179 height="24"
180 viewBox="0 0 24 24"
181 fill="none"
182 xmlns="http://www.w3.org/2000/svg">
183 <path
184 d="M4 7h6v10H4zM14 7h6M14 12h6M14 17h4"
185 stroke="currentColor"
186 strokeWidth="2"
187 strokeLinecap="round"
188 />
189 <path
190 d="M4.5 14.5L7 12l3 3"
191 stroke="currentColor"
192 strokeWidth="1.6"
193 strokeLinecap="round"
194 strokeLinejoin="round"
195 />
196 </svg>
197 );
198
199 const highlightIcon = (
200 <svg
201 width="24"
202 height="24"
203 viewBox="0 0 24 24"
204 fill="none"
205 xmlns="http://www.w3.org/2000/svg">
206 <path
207 d="M5 8h14M5 12h9"
208 stroke="currentColor"
209 strokeWidth="2"
210 strokeLinecap="round"
211 />
212 <path
213 d="M4 17c3-1.6 13-1.6 16 0"
214 stroke="currentColor"
215 strokeWidth="2"
216 strokeLinecap="round"
217 />
218 </svg>
219 );
220
221 const tiltIcon = (
222 <svg
223 width="24"
224 height="24"
225 viewBox="0 0 24 24"
226 fill="none"
227 xmlns="http://www.w3.org/2000/svg">
228 <path
229 d="M3 8.5l9-4 9 4-9 4-9-4z"
230 stroke="currentColor"
231 strokeWidth="2"
232 strokeLinejoin="round"
233 />
234 <path
235 d="M3 8.5v6l9 4 9-4v-6"
236 stroke="currentColor"
237 strokeWidth="2"
238 strokeLinejoin="round"
239 />
240 </svg>
241 );
242
243 const wavyIcon = (
244 <svg
245 width="24"
246 height="24"
247 viewBox="0 0 24 24"
248 fill="none"
249 xmlns="http://www.w3.org/2000/svg">
250 <path
251 d="M2 14c2.5 0 2.5-5 5-5s2.5 5 5 5 2.5-5 5-5 2.5 5 5 5"
252 stroke="currentColor"
253 strokeWidth="2"
254 strokeLinecap="round"
255 strokeLinejoin="round"
256 />
257 <path
258 d="M4 18h16"
259 stroke="currentColor"
260 strokeWidth="2"
261 strokeLinecap="round"
262 opacity="0.5"
263 />
264 </svg>
265 );
266
267 const gradientIcon = (
268 <svg
269 width="24"
270 height="24"
271 viewBox="0 0 24 24"
272 fill="none"
273 xmlns="http://www.w3.org/2000/svg">
274 <path
275 d="M6 18V6h3l3 8 3-8h3"
276 stroke="currentColor"
277 strokeWidth="2"
278 strokeLinecap="round"
279 strokeLinejoin="round"
280 />
281 <rect
282 x="4"
283 y="20.5"
284 width="16"
285 height="2"
286 rx="1"
287 fill="currentColor"
288 opacity="0.55"
289 />
290 </svg>
291 );
292
293 const neonIcon = (
294 <svg
295 width="24"
296 height="24"
297 viewBox="0 0 24 24"
298 fill="none"
299 xmlns="http://www.w3.org/2000/svg">
300 <path
301 d="M6 17V7l6 7 6-7v10"
302 stroke="currentColor"
303 strokeWidth="2"
304 strokeLinecap="round"
305 strokeLinejoin="round"
306 />
307 </svg>
308 );
309
310 const glitchIcon = (
311 <svg
312 width="24"
313 height="24"
314 viewBox="0 0 24 24"
315 fill="none"
316 xmlns="http://www.w3.org/2000/svg">
317 <path
318 d="M5 8h12M3 12h12M7 16h12"
319 stroke="currentColor"
320 strokeWidth="2"
321 strokeLinecap="round"
322 />
323 <path
324 d="M18 7l2 1-2 1M6 15l-2 1 2 1"
325 stroke="currentColor"
326 strokeWidth="1.6"
327 strokeLinecap="round"
328 strokeLinejoin="round"
329 opacity="0.6"
330 />
331 </svg>
332 );
333
334 const stickerIcon = (
335 <svg
336 width="24"
337 height="24"
338 viewBox="0 0 24 24"
339 fill="none"
340 xmlns="http://www.w3.org/2000/svg">
341 <path
342 d="M9 18V8h2.5a3 3 0 0 1 0 6H9"
343 stroke="currentColor"
344 strokeWidth="2"
345 strokeLinecap="round"
346 strokeLinejoin="round"
347 opacity="0.4"
348 transform="translate(2.5 2.5)"
349 />
350 <path
351 d="M9 18V8h2.5a3 3 0 0 1 0 6H9"
352 stroke="currentColor"
353 strokeWidth="2"
354 strokeLinecap="round"
355 strokeLinejoin="round"
356 />
357 </svg>
358 );
359
360 const flipIcon = (
361 <svg
362 width="24"
363 height="24"
364 viewBox="0 0 24 24"
365 fill="none"
366 xmlns="http://www.w3.org/2000/svg">
367 <rect
368 x="4"
369 y="5"
370 width="16"
371 height="14"
372 rx="2"
373 stroke="currentColor"
374 strokeWidth="2"
375 />
376 <path d="M4 12h16" stroke="currentColor" strokeWidth="2" />
377 <path
378 d="M9 8.5h6"
379 stroke="currentColor"
380 strokeWidth="1.6"
381 strokeLinecap="round"
382 opacity="0.6"
383 />
384 </svg>
385 );
386
387 const scrambleIcon = (
388 <svg
389 width="24"
390 height="24"
391 viewBox="0 0 24 24"
392 fill="none"
393 xmlns="http://www.w3.org/2000/svg">
394 <path
395 d="M4 7h4M10 7h2M14 7h6M4 12h6M12 12h3M17 12h3M4 17h3M9 17h5M16 17h4"
396 stroke="currentColor"
397 strokeWidth="2"
398 strokeLinecap="round"
399 />
400 </svg>
401 );
402
403 const reflectionIcon = (
404 <svg
405 width="24"
406 height="24"
407 viewBox="0 0 24 24"
408 fill="none"
409 xmlns="http://www.w3.org/2000/svg">
410 <path
411 d="M8 10V4l4 5 4-5v6"
412 stroke="currentColor"
413 strokeWidth="2"
414 strokeLinecap="round"
415 strokeLinejoin="round"
416 />
417 <path
418 d="M8 14v6l4-5 4 5v-6"
419 stroke="currentColor"
420 strokeWidth="2"
421 strokeLinecap="round"
422 strokeLinejoin="round"
423 opacity="0.35"
424 />
425 <path
426 d="M4 12h16"
427 stroke="currentColor"
428 strokeWidth="1.4"
429 strokeDasharray="2 2"
430 opacity="0.5"
431 />
432 </svg>
433 );
434
435 const longShadowIcon = (
436 <svg
437 width="24"
438 height="24"
439 viewBox="0 0 24 24"
440 fill="none"
441 xmlns="http://www.w3.org/2000/svg">
442 <path
443 d="M7 16V8h2.5a2.5 2.5 0 0 1 0 5H7"
444 stroke="currentColor"
445 strokeWidth="2"
446 strokeLinecap="round"
447 strokeLinejoin="round"
448 />
449 <path
450 d="M11 13l5 6M13 12l4 5M15 11l3 4"
451 stroke="currentColor"
452 strokeWidth="1.4"
453 strokeLinecap="round"
454 opacity="0.4"
455 />
456 </svg>
457 );
458
459 const trackingIcon = (
460 <svg
461 width="24"
462 height="24"
463 viewBox="0 0 24 24"
464 fill="none"
465 xmlns="http://www.w3.org/2000/svg">
466 <path
467 d="M5 7v10M19 7v10"
468 stroke="currentColor"
469 strokeWidth="2"
470 strokeLinecap="round"
471 />
472 <path
473 d="M9 12h6M9 12l2-2M9 12l2 2M15 12l-2-2M15 12l-2 2"
474 stroke="currentColor"
475 strokeWidth="2"
476 strokeLinecap="round"
477 strokeLinejoin="round"
478 />
479 </svg>
480 );
481
482 const shineIcon = (
483 <svg
484 width="24"
485 height="24"
486 viewBox="0 0 24 24"
487 fill="none"
488 xmlns="http://www.w3.org/2000/svg">
489 <path
490 d="M6 17V7l5 7 5-7v10"
491 stroke="currentColor"
492 strokeWidth="2"
493 strokeLinecap="round"
494 strokeLinejoin="round"
495 />
496 <path
497 d="M19 5l.7 1.8L21.5 7.5l-1.8.7L19 10l-.7-1.8L16.5 7.5l1.8-.7L19 5z"
498 fill="currentColor"
499 opacity="0.7"
500 />
501 </svg>
502 );
503
504 const arcIcon = (
505 <svg
506 width="24"
507 height="24"
508 viewBox="0 0 24 24"
509 fill="none"
510 xmlns="http://www.w3.org/2000/svg">
511 <path
512 d="M4 15c2.5-6 13.5-6 16 0"
513 stroke="currentColor"
514 strokeWidth="2"
515 strokeLinecap="round"
516 />
517 <path
518 d="M7 12.5v2M12 10.5v2M17 12.5v2"
519 stroke="currentColor"
520 strokeWidth="2"
521 strokeLinecap="round"
522 />
523 </svg>
524 );
525
526 const verticalIcon = (
527 <svg
528 width="24"
529 height="24"
530 viewBox="0 0 24 24"
531 fill="none"
532 xmlns="http://www.w3.org/2000/svg">
533 <path
534 d="M12 4v16M12 4l-3 3M12 4l3 3"
535 stroke="currentColor"
536 strokeWidth="2"
537 strokeLinecap="round"
538 strokeLinejoin="round"
539 />
540 <path
541 d="M7 8h.01M7 12h.01M7 16h.01M17 8h.01M17 12h.01M17 16h.01"
542 stroke="currentColor"
543 strokeWidth="2"
544 strokeLinecap="round"
545 opacity="0.5"
546 />
547 </svg>
548 );
549
550 const rainbowIcon = (
551 <svg
552 width="24"
553 height="24"
554 viewBox="0 0 24 24"
555 fill="none"
556 xmlns="http://www.w3.org/2000/svg">
557 <path
558 d="M3 18a9 9 0 0 1 18 0"
559 stroke="currentColor"
560 strokeWidth="2"
561 strokeLinecap="round"
562 />
563 <path
564 d="M6 18a6 6 0 0 1 12 0"
565 stroke="currentColor"
566 strokeWidth="2"
567 strokeLinecap="round"
568 opacity="0.6"
569 />
570 <path
571 d="M9 18a3 3 0 0 1 6 0"
572 stroke="currentColor"
573 strokeWidth="2"
574 strokeLinecap="round"
575 opacity="0.35"
576 />
577 </svg>
578 );
579
580 const splitIcon = (
581 <svg
582 width="24"
583 height="24"
584 viewBox="0 0 24 24"
585 fill="none"
586 xmlns="http://www.w3.org/2000/svg">
587 <rect
588 x="3"
589 y="13"
590 width="3.5"
591 height="7"
592 rx="1"
593 fill="currentColor"
594 opacity="0.4"
595 />
596 <rect
597 x="8"
598 y="9"
599 width="3.5"
600 height="11"
601 rx="1"
602 fill="currentColor"
603 opacity="0.65"
604 />
605 <rect
606 x="13"
607 y="6"
608 width="3.5"
609 height="14"
610 rx="1"
611 fill="currentColor"
612 opacity="0.85"
613 />
614 <rect x="18" y="3" width="3.5" height="17" rx="1" fill="currentColor" />
615 </svg>
616 );
617
618 const blockCatalog = [
619 {
620 name: "ttb/text-typing",
621 title: "Text Typing",
622 icon: typingIcon,
623 docs: `${docsBase}/typing-text-block/`,
624 status: "published",
625 required: true,
626 },
627 {
628 name: "ttb/animated-headline",
629 title: "Animated Headline",
630 icon: headlineIcon,
631 docs: `${docsBase}/typing-text-block/`,
632 status: "published",
633 isPremium: true,
634 },
635 {
636 name: "ttb/rotating-words",
637 title: "Rotating Words",
638 icon: rotatingIcon,
639 docs: `${docsBase}/typing-text-block/`,
640 status: "published",
641 isPremium: true,
642 },
643 {
644 name: "ttb/number-counter",
645 title: "Number Counter",
646 icon: counterIcon,
647 docs: `${docsBase}/typing-text-block/`,
648 status: "published",
649 isPremium: true,
650 },
651 {
652 name: "ttb/text-marquee",
653 title: "Text Marquee",
654 icon: marqueeIcon,
655 docs: `${docsBase}/typing-text-block/`,
656 status: "published",
657 isPremium: true,
658 },
659 {
660 name: "ttb/circular-text",
661 title: "Circular Text",
662 icon: circularIcon,
663 docs: `${docsBase}/typing-text-block/`,
664 status: "published",
665 isPremium: true,
666 },
667 {
668 name: "ttb/outline-text",
669 title: "Outline Text",
670 icon: outlineIcon,
671 docs: `${docsBase}/typing-text-block/`,
672 status: "published",
673 isPremium: true,
674 },
675 {
676 name: "ttb/text-mask",
677 title: "Text Mask",
678 icon: maskIcon,
679 docs: `${docsBase}/typing-text-block/`,
680 status: "published",
681 isPremium: true,
682 },
683 {
684 name: "ttb/animated-highlight",
685 title: "Animated Highlight",
686 icon: highlightIcon,
687 docs: `${docsBase}/typing-text-block/`,
688 status: "published",
689 isPremium: true,
690 },
691 {
692 name: "ttb/tilt-text",
693 title: "3D Tilt Text",
694 icon: tiltIcon,
695 docs: `${docsBase}/typing-text-block/`,
696 status: "published",
697 isPremium: true,
698 },
699 {
700 name: "ttb/wavy-text",
701 title: "Wavy Text",
702 icon: wavyIcon,
703 docs: `${docsBase}/typing-text-block/`,
704 status: "published",
705 isPremium: true,
706 },
707 {
708 name: "ttb/gradient-text",
709 title: "Gradient Text",
710 icon: gradientIcon,
711 docs: `${docsBase}/typing-text-block/`,
712 status: "published",
713 isPremium: true,
714 },
715 {
716 name: "ttb/neon-text",
717 title: "Neon Text",
718 icon: neonIcon,
719 docs: `${docsBase}/typing-text-block/`,
720 status: "published",
721 isPremium: true,
722 },
723 {
724 name: "ttb/glitch-text",
725 title: "Glitch Text",
726 icon: glitchIcon,
727 docs: `${docsBase}/typing-text-block/`,
728 status: "published",
729 isPremium: true,
730 },
731 {
732 name: "ttb/sticker-text",
733 title: "Sticker Text",
734 icon: stickerIcon,
735 docs: `${docsBase}/typing-text-block/`,
736 status: "published",
737 isPremium: true,
738 },
739 {
740 name: "ttb/flip-text",
741 title: "Split-Flap Text",
742 icon: flipIcon,
743 docs: `${docsBase}/typing-text-block/`,
744 status: "published",
745 isPremium: true,
746 },
747 {
748 name: "ttb/scramble-text",
749 title: "Scramble Text",
750 icon: scrambleIcon,
751 docs: `${docsBase}/typing-text-block/`,
752 status: "published",
753 isPremium: true,
754 },
755 {
756 name: "ttb/reflection-text",
757 title: "Reflection Text",
758 icon: reflectionIcon,
759 docs: `${docsBase}/typing-text-block/`,
760 status: "published",
761 isPremium: true,
762 },
763 {
764 name: "ttb/long-shadow-text",
765 title: "Long Shadow Text",
766 icon: longShadowIcon,
767 docs: `${docsBase}/typing-text-block/`,
768 status: "published",
769 isPremium: true,
770 },
771 {
772 name: "ttb/tracking-text",
773 title: "Tracking-In Text",
774 icon: trackingIcon,
775 docs: `${docsBase}/typing-text-block/`,
776 status: "published",
777 isPremium: true,
778 },
779 {
780 name: "ttb/shine-text",
781 title: "Shine Text",
782 icon: shineIcon,
783 docs: `${docsBase}/typing-text-block/`,
784 status: "published",
785 isPremium: true,
786 },
787 {
788 name: "ttb/arc-text",
789 title: "Curved Text",
790 icon: arcIcon,
791 docs: `${docsBase}/typing-text-block/`,
792 status: "published",
793 isPremium: true,
794 },
795 {
796 name: "ttb/vertical-text",
797 title: "Vertical Text",
798 icon: verticalIcon,
799 docs: `${docsBase}/typing-text-block/`,
800 status: "published",
801 isPremium: true,
802 },
803 {
804 name: "ttb/rainbow-text",
805 title: "Rainbow Text",
806 icon: rainbowIcon,
807 docs: `${docsBase}/typing-text-block/`,
808 status: "published",
809 isPremium: true,
810 },
811 {
812 name: "ttb/split-text",
813 title: "Split Text",
814 icon: splitIcon,
815 docs: `${docsBase}/typing-text-block/`,
816 status: "published",
817 isPremium: true,
818 },
819 ];
820
821 // The core Text Typing block has its own standalone demo page; every other
822 // block links to its section on the all-in-one demo page via ?block=<slug>,
823 // which that page isolates to show only that one demo.
824 export const allBlocks = blockCatalog.map((block) => {
825 const slug = block.name.replace("ttb/", "");
826 return {
827 ...block,
828 demo:
829 block.name === "ttb/text-typing"
830 ? `${demoBase}/text-typing/`
831 : `${demoBase}/text-typing-block/?block=${slug}#${slug}`,
832 };
833 });
834