PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / trunk
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance vtrunk
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
wp-optimize / vendor / team-updraft / lib-onboarding-wizard / Wizard / Onboarding / src / components / Modal / Premium.tsx

Premium.tsx in WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance trunk, at vendor/team-updraft/lib-onboarding-wizard/Wizard/Onboarding/src/components/Modal/Premium.tsx

53 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { memo, useMemo } from "react";
2 import Icon from "../../utils/Icon";
3 import { renderPossiblyHtml } from '../../utils/html';
4
5 const Premium = memo(({ bullets }: { bullets?: string[] | string[][] }) => {
6 if (!bullets || bullets.length === 0) return null;
7
8 /**
9 * Normalize bullets
10 */
11 const rows = useMemo(() => {
12 const isRowArray = Array.isArray(bullets[0]);
13 return isRowArray ? bullets : bullets.map((b) => [b]);
14 }, [bullets]);
15
16 return (
17 <div className="table mx-auto">
18 {rows.map((row, rowIndex) => (
19 <div key={`row-${rowIndex}`} className="table-row">
20 {row.map((bullet, colIndex) => {
21 const baseText =
22 typeof bullet === "string" ? bullet : bullet?.text;
23
24 const baseIcon =
25 typeof bullet === "string"
26 ? "check"
27 : bullet?.icon ?? "check";
28
29 return (
30 <div
31 key={`bullet-${rowIndex}-${colIndex}`}
32 className="table-cell pr-3"
33 >
34 <div className="flex items-start gap-2">
35 <Icon
36 name={baseIcon}
37 color="var(--teamupdraft-orange-dark)"
38 size={25}
39 />
40 <div className="text-[var(--teamupdraft-grey-700)] text-md font-normal leading-relaxed">
41 {renderPossiblyHtml(baseText)}
42 </div>
43 </div>
44 </div>
45 );
46 })}
47 </div>
48 ))}
49 </div>
50 );
51 });
52
53 export default Premium;