PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / mega-footer / index.js

index.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.7, at blocks/mega-footer/index.js

346 lines 28.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ====================================================
2 Mega Footer — editor (index.js)
3 Block: blockenberg/mega-footer
4 ==================================================== */
5 ( function () {
6 var el = wp.element.createElement;
7 var Fragment = wp.element.Fragment;
8 var useState = wp.element.useState;
9 var MediaUpload = wp.blockEditor.MediaUpload;
10 var MediaUploadCheck = wp.blockEditor.MediaUploadCheck;
11 var registerBlockType = wp.blocks.registerBlockType;
12 var InspectorControls = wp.blockEditor.InspectorControls;
13 var useBlockProps = wp.blockEditor.useBlockProps;
14 var PanelColorSettings = wp.blockEditor.PanelColorSettings;
15 var PanelBody = wp.components.PanelBody;
16 var RangeControl = wp.components.RangeControl;
17 var SelectControl = wp.components.SelectControl;
18 var ToggleControl = wp.components.ToggleControl;
19 var TextControl = wp.components.TextControl;
20 var Button = wp.components.Button;
21 var __ = wp.i18n.__;
22
23 var _tc, _tv;
24 function getTypoControl() { return _tc || (_tc = window.bkbgTypographyControl); }
25 function getTypoCssVars() { return _tv || (_tv = window.bkbgTypoCssVars); }
26
27 function uid() { return 'mf' + Math.random().toString(36).slice(2,7); }
28 function move(arr, from, to) { var a=arr.slice(); a.splice(to,0,a.splice(from,1)[0]); return a; }
29
30 /* Social SVG icons */
31 var SOCIAL_ICONS = {
32 twitter: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.743l7.737-8.858L1.256 2.25H8.08l4.214 5.578 5.95-5.578zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>',
33 github: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.627 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>',
34 linkedin: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>',
35 instagram:'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>',
36 youtube: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg>',
37 };
38
39 function wrapStyle(a) {
40 var v = getTypoCssVars() || function () { return {}; };
41 return Object.assign({
42 '--bkbg-mftr-pt': a.paddingTop+'px',
43 '--bkbg-mftr-pb': a.paddingBottom+'px',
44 '--bkbg-mftr-gap': a.gap+'px',
45 '--bkbg-mftr-heading-c': a.headingColor,
46 '--bkbg-mftr-link-c': a.linkColor,
47 '--bkbg-mftr-link-hov-c': a.linkHoverColor,
48 '--bkbg-mftr-tagline-c': a.taglineColor,
49 '--bkbg-mftr-div-c': a.dividerColor,
50 '--bkbg-mftr-copy-c': a.copyrightColor,
51 '--bkbg-mftr-social-c': a.socialIconColor,
52 background: a.footerBg || undefined,
53 },
54 v(a.headingTypo,'--bkbg-mftr-hd-'),
55 v(a.taglineTypo,'--bkbg-mftr-tl-'),
56 v(a.linkTypo,'--bkbg-mftr-lk-'),
57 v(a.copyrightTypo,'--bkbg-mftr-cp-')
58 );
59 }
60
61 function SocialIcon(props) {
62 var svgSrc = SOCIAL_ICONS[props.platform] || '';
63 return svgSrc
64 ? el('img', { src:svgSrc, alt:props.label, width:18, height:18, style:{display:'block',opacity:.7,filter:'invert(1)'} })
65 : el('span', null, props.label);
66 }
67
68 registerBlockType('blockenberg/mega-footer', {
69 edit: function (props) {
70 var a = props.attributes;
71 var setAttr = props.setAttributes;
72 var _editCol = useState(null);
73 var editColId = _editCol[0]; var setEditColId = _editCol[1];
74
75 var blockProps = useBlockProps({
76 className: 'bkbg-mftr-wrap bkbg-mftr-layout--' + a.layout,
77 style: wrapStyle(a)
78 });
79
80 function updateCol(id, patch) {
81 setAttr({ columns: a.columns.map(function(c){ return c.id===id ? Object.assign({},c,patch) : c; }) });
82 }
83 function updateLink(colId, linkId, patch) {
84 setAttr({ columns: a.columns.map(function(c){ if(c.id!==colId) return c; return Object.assign({},c,{links:c.links.map(function(l){ return l.id===linkId ? Object.assign({},l,patch) : l; })}); }) });
85 }
86 function updateSocial(id, patch) {
87 setAttr({ socialLinks: a.socialLinks.map(function(s){ return s.id===id ? Object.assign({},s,patch) : s; }) });
88 }
89 function updateBottomLink(id, patch) {
90 setAttr({ bottomLinks: a.bottomLinks.map(function(l){ return l.id===id ? Object.assign({},l,patch) : l; }) });
91 }
92
93 var inspector = el(InspectorControls, null,
94 el(PanelBody, { title:__('Logo & Brand','blockenberg'), initialOpen:true },
95 el(MediaUploadCheck, null,
96 el(MediaUpload, {
97 onSelect:function(m){ setAttr({logoUrl:m.url,logoId:m.id}); },
98 allowedTypes:['image'], value:a.logoId,
99 render:function(o){ return el(Button, { onClick:o.open, variant:'secondary', isSmall:true }, a.logoUrl ? __('Change logo','blockenberg') : __('Upload logo','blockenberg')); }
100 })
101 ),
102 a.logoUrl ? el(Button, { isDestructive:true, variant:'tertiary', isSmall:true, style:{marginTop:'4px'}, onClick:function(){ setAttr({logoUrl:'',logoId:0}); } }, __('Remove logo','blockenberg')) : null,
103 el(RangeControl, { label:__('Logo width (px)','blockenberg'), value:a.logoWidth, min:60, max:300, onChange:function(v){ setAttr({logoWidth:v}); } }),
104 el(ToggleControl, { label:__('Show tagline','blockenberg'), checked:a.showTagline, onChange:function(v){ setAttr({showTagline:v}); } }),
105 el(TextControl, { label:__('Tagline','blockenberg'), value:a.tagline, onChange:function(v){ setAttr({tagline:v}); } })
106 ),
107 el(PanelBody, { title:__('Link Columns','blockenberg'), initialOpen:false },
108 a.columns.map(function(col, ci) {
109 var isOpen = editColId === col.id;
110 return el('div', { key:col.id },
111 el('div', { style:{display:'flex',alignItems:'center',gap:'6px',background:isOpen?'#f3f0ff':'#f8f9fa',border:isOpen?'1px solid #6c3fb5':'1px solid #e2e8f0',borderRadius:'6px',padding:'6px 8px',marginBottom:'4px',cursor:'pointer'}, onClick:function(){ setEditColId(isOpen?null:col.id); } },
112 el('span', { style:{flex:1,fontSize:'13px',fontWeight:500} }, col.heading || __('(Column)','blockenberg')),
113 el(Button, { icon:'arrow-up', isSmall:true, disabled:ci===0, onClick:function(e){ e.stopPropagation(); setAttr({columns:move(a.columns,ci,ci-1)}); } }),
114 el(Button, { icon:'arrow-down', isSmall:true, disabled:ci===a.columns.length-1, onClick:function(e){ e.stopPropagation(); setAttr({columns:move(a.columns,ci,ci+1)}); } }),
115 el(Button, { icon:'no-alt', isSmall:true, isDestructive:true, onClick:function(e){ e.stopPropagation(); setAttr({columns:a.columns.filter(function(_,i){ return i!==ci; })}); if(editColId===col.id)setEditColId(null); } })
116 ),
117 isOpen ? el('div', { style:{padding:'10px',background:'#faf8ff',border:'1px solid #6c3fb5',borderTop:'none',borderRadius:'0 0 6px 6px',marginBottom:'4px'} },
118 el(TextControl, { label:__('Column heading','blockenberg'), value:col.heading, onChange:function(v){ updateCol(col.id,{heading:v}); } }),
119 el('p', { style:{fontSize:'11px',color:'#64748b',margin:'8px 0 4px',fontWeight:600,textTransform:'uppercase',letterSpacing:'.5px'} }, __('Links','blockenberg')),
120 col.links.map(function(link, li) {
121 return el('div', { key:link.id, style:{display:'grid',gridTemplateColumns:'1fr 1fr auto auto auto',gap:'4px',marginBottom:'4px',alignItems:'center'} },
122 el(TextControl, { placeholder:__('Label','blockenberg'), value:link.label, onChange:function(v){ updateLink(col.id,link.id,{label:v}); }, style:{margin:0} }),
123 el(TextControl, { placeholder:__('URL','blockenberg'), value:link.url, onChange:function(v){ updateLink(col.id,link.id,{url:v}); }, style:{margin:0} }),
124 el(Button, { icon:'arrow-up', isSmall:true, disabled:li===0, onClick:function(){ updateCol(col.id,{links:move(col.links,li,li-1)}); } }),
125 el(Button, { icon:'arrow-down', isSmall:true, disabled:li===col.links.length-1, onClick:function(){ updateCol(col.id,{links:move(col.links,li,li+1)}); } }),
126 el(Button, { icon:'no-alt', isSmall:true, isDestructive:true, onClick:function(){ updateCol(col.id,{links:col.links.filter(function(l){ return l.id!==link.id; })}); } })
127 );
128 }),
129 el(Button, { variant:'secondary', isSmall:true, style:{width:'100%',marginTop:'4px'}, onClick:function(){ updateCol(col.id,{links:col.links.concat([{id:uid(),label:'New link',url:'#'}])}); } }, __('+ Add link','blockenberg'))
130 ) : null
131 );
132 }),
133 el(Button, { variant:'primary', isSmall:true, style:{marginTop:'8px',width:'100%'}, onClick:function(){ var n={id:uid(),heading:'New Column',links:[{id:uid(),label:'Link',url:'#'}]}; setAttr({columns:a.columns.concat([n])}); setEditColId(n.id); } }, __('+ Add Column','blockenberg'))
134 ),
135 el(PanelBody, { title:__('Social Links','blockenberg'), initialOpen:false },
136 el(ToggleControl, { label:__('Show social','blockenberg'), checked:a.showSocial, onChange:function(v){ setAttr({showSocial:v}); } }),
137 a.socialLinks.map(function(link, si) {
138 return el('div', { key:link.id, style:{display:'grid',gridTemplateColumns:'100px 1fr auto',gap:'4px',marginBottom:'4px',alignItems:'center'} },
139 el(SelectControl, { value:link.platform, options:[
140 {label:'Twitter/X', value:'twitter'},
141 {label:'GitHub', value:'github'},
142 {label:'LinkedIn', value:'linkedin'},
143 {label:'Instagram', value:'instagram'},
144 {label:'YouTube', value:'youtube'},
145 ], onChange:function(v){ updateSocial(link.id,{platform:v,label:v}); }, style:{margin:0} }),
146 el(TextControl, { placeholder:__('URL','blockenberg'), value:link.url, onChange:function(v){ updateSocial(link.id,{url:v}); }, style:{margin:0} }),
147 el(Button, { icon:'no-alt', isSmall:true, isDestructive:true, onClick:function(){ setAttr({socialLinks:a.socialLinks.filter(function(l){ return l.id!==link.id; })}); } })
148 );
149 }),
150 el(Button, { variant:'secondary', isSmall:true, style:{width:'100%',marginTop:'4px'}, onClick:function(){ setAttr({socialLinks:a.socialLinks.concat([{id:uid(),platform:'twitter',url:'#',label:'Twitter'}])}); } }, __('+ Add social','blockenberg'))
151 ),
152 el(PanelBody, { title:__('Bottom Bar','blockenberg'), initialOpen:false },
153 el(ToggleControl, { label:__('Show bottom bar','blockenberg'), checked:a.showBottomBar, onChange:function(v){ setAttr({showBottomBar:v}); } }),
154 el(TextControl, { label:__('Copyright text','blockenberg'), value:a.copyright, onChange:function(v){ setAttr({copyright:v}); } }),
155 el('p', { style:{fontSize:'11px',color:'#64748b',margin:'8px 0 4px',fontWeight:600} }, __('Bottom links','blockenberg')),
156 a.bottomLinks.map(function(link, bi) {
157 return el('div', { key:link.id, style:{display:'grid',gridTemplateColumns:'1fr 1fr auto',gap:'4px',marginBottom:'4px',alignItems:'center'} },
158 el(TextControl, { placeholder:__('Label','blockenberg'), value:link.label, onChange:function(v){ updateBottomLink(link.id,{label:v}); }, style:{margin:0} }),
159 el(TextControl, { placeholder:__('URL','blockenberg'), value:link.url, onChange:function(v){ updateBottomLink(link.id,{url:v}); }, style:{margin:0} }),
160 el(Button, { icon:'no-alt', isSmall:true, isDestructive:true, onClick:function(){ setAttr({bottomLinks:a.bottomLinks.filter(function(l){ return l.id!==link.id; })}); } })
161 );
162 }),
163 el(Button, { variant:'secondary', isSmall:true, style:{width:'100%',marginTop:'4px'}, onClick:function(){ setAttr({bottomLinks:a.bottomLinks.concat([{id:uid(),label:'New link',url:'#'}])}); } }, __('+ Add bottom link','blockenberg'))
164 ),
165 el(PanelBody, { title:__('Style','blockenberg'), initialOpen:false },
166 el(SelectControl, { label:__('Layout','blockenberg'), value:a.layout, options:[
167 {label:'Logo left + columns', value:'logo-left'},
168 {label:'Logo top centered', value:'logo-top'},
169 ], onChange:function(v){ setAttr({layout:v}); } }),
170 el(RangeControl, { label:__('Gap (px)','blockenberg'), value:a.gap, min:16, max:80, onChange:function(v){ setAttr({gap:v}); } }),
171 el(RangeControl, { label:__('Padding top (px)','blockenberg'), value:a.paddingTop, min:0, max:120, onChange:function(v){ setAttr({paddingTop:v}); } }),
172 el(RangeControl, { label:__('Padding bottom (px)','blockenberg'), value:a.paddingBottom, min:0, max:120, onChange:function(v){ setAttr({paddingBottom:v}); } }),
173 el(ToggleControl, { label:__('Show divider','blockenberg'), checked:a.showDivider, onChange:function(v){ setAttr({showDivider:v}); } })
174 ),
175
176 el( PanelBody, { title: __( 'Typography', 'blockenberg' ), initialOpen: false },
177 getTypoControl() && el(getTypoControl(), { label: 'Column Heading', value: a.headingTypo || {}, onChange: function(v){ setAttr({ headingTypo: v }); } }),
178 getTypoControl() && el(getTypoControl(), { label: 'Tagline', value: a.taglineTypo || {}, onChange: function(v){ setAttr({ taglineTypo: v }); } }),
179 getTypoControl() && el(getTypoControl(), { label: 'Link', value: a.linkTypo || {}, onChange: function(v){ setAttr({ linkTypo: v }); } }),
180 getTypoControl() && el(getTypoControl(), { label: 'Copyright', value: a.copyrightTypo || {}, onChange: function(v){ setAttr({ copyrightTypo: v }); } })
181 ),
182 el(PanelColorSettings, { title:__('Colors','blockenberg'), initialOpen:false, colorSettings:[
183 {label:__('Footer bg','blockenberg'), value:a.footerBg, onChange:function(v){ setAttr({footerBg:v||''}); }},
184 {label:__('Heading color','blockenberg'), value:a.headingColor, onChange:function(v){ setAttr({headingColor:v||''}); }},
185 {label:__('Link color','blockenberg'), value:a.linkColor, onChange:function(v){ setAttr({linkColor:v||''}); }},
186 {label:__('Link hover','blockenberg'), value:a.linkHoverColor, onChange:function(v){ setAttr({linkHoverColor:v||''}); }},
187 {label:__('Tagline','blockenberg'), value:a.taglineColor, onChange:function(v){ setAttr({taglineColor:v||''}); }},
188 {label:__('Divider','blockenberg'), value:a.dividerColor, onChange:function(v){ setAttr({dividerColor:v||''}); }},
189 {label:__('Copyright','blockenberg'), value:a.copyrightColor, onChange:function(v){ setAttr({copyrightColor:v||''}); }},
190 {label:__('Social icons','blockenberg'), value:a.socialIconColor,onChange:function(v){ setAttr({socialIconColor:v||''}); }},
191 ] })
192 );
193
194 /* Preview render */
195 var logoEl = a.logoUrl
196 ? el('img', { src:a.logoUrl, alt:'Logo', style:{width:a.logoWidth+'px',height:'auto',display:'block'} })
197 : el('div', { style:{width:a.logoWidth+'px',height:'40px',background:'#1e293b',borderRadius:'6px',display:'flex',alignItems:'center',justifyContent:'center',color:'#94a3b8',fontSize:'13px'} }, __('Logo','blockenberg'));
198
199 var brandEl = el('div', { className:'bkbg-mftr-brand' },
200 logoEl,
201 a.showTagline ? el('p', { className:'bkbg-mftr-tagline' }, a.tagline) : null,
202 a.showSocial ? el('div', { className:'bkbg-mftr-social' },
203 a.socialLinks.map(function(link) {
204 return el('a', { key:link.id, href:'#', className:'bkbg-mftr-social-link', onClick:function(e){ e.preventDefault(); } },
205 el(SocialIcon, { platform:link.platform, label:link.label })
206 );
207 })
208 ) : null
209 );
210
211 var colsEl = el('div', { className:'bkbg-mftr-cols', style:{gridTemplateColumns:'repeat('+a.columns.length+',1fr)'} },
212 a.columns.map(function(col) {
213 return el('div', { key:col.id, className:'bkbg-mftr-col' },
214 el('h4', { className:'bkbg-mftr-col-heading' }, col.heading),
215 el('ul', { className:'bkbg-mftr-col-list' },
216 col.links.map(function(link) {
217 return el('li', { key:link.id },
218 el('a', { href:link.url, className:'bkbg-mftr-col-link', onClick:function(e){ e.preventDefault(); } }, link.label)
219 );
220 })
221 )
222 );
223 })
224 );
225
226 var bottomEl = a.showBottomBar ? el('div', { className:'bkbg-mftr-bottom' },
227 el('span', { className:'bkbg-mftr-copyright' }, a.copyright),
228 a.bottomLinks.length ? el('div', { className:'bkbg-mftr-bottom-links' },
229 a.bottomLinks.map(function(link) { return el('a', { key:link.id, href:link.url, className:'bkbg-mftr-bottom-link', onClick:function(e){ e.preventDefault(); } }, link.label); })
230 ) : null
231 ) : null;
232
233 return el(Fragment, null,
234 inspector,
235 el('div', blockProps,
236 el('div', { className:'bkbg-mftr-main' },
237 brandEl,
238 colsEl
239 ),
240 a.showDivider ? el('hr', { className:'bkbg-mftr-divider' }) : null,
241 bottomEl
242 )
243 );
244 },
245
246 deprecated: [{
247 save: function (props) {
248 var a = props.attributes;
249 var blockProps = wp.blockEditor.useBlockProps.save({
250 className: 'bkbg-mftr-wrap bkbg-mftr-layout--' + a.layout,
251 style: {
252 '--bkbg-mftr-pt':a.paddingTop+'px','--bkbg-mftr-pb':a.paddingBottom+'px','--bkbg-mftr-gap':a.gap+'px','--bkbg-mftr-heading-sz':a.headingSize+'px','--bkbg-mftr-link-sz':a.linkSize+'px','--bkbg-mftr-tagline-sz':a.taglineSize+'px','--bkbg-mftr-heading-c':a.headingColor,'--bkbg-mftr-link-c':a.linkColor,'--bkbg-mftr-link-hov-c':a.linkHoverColor,'--bkbg-mftr-tagline-c':a.taglineColor,'--bkbg-mftr-div-c':a.dividerColor,'--bkbg-mftr-copy-c':a.copyrightColor,'--bkbg-mftr-copyright-sz':(a.copyrightFontSize||13)+'px','--bkbg-mftr-font-weight':String(a.fontWeight||400),'--bkbg-mftr-social-c':a.socialIconColor,background:a.footerBg||undefined,
253 }
254 });
255 return el('div', blockProps,
256 el('div', { className:'bkbg-mftr-main' },
257 el('div', { className:'bkbg-mftr-brand' },
258 a.logoUrl ? el('img', { src:a.logoUrl, alt:'Logo', className:'bkbg-mftr-logo', style:{width:a.logoWidth+'px'}, loading:'lazy' }) : null,
259 a.showTagline ? el('p', { className:'bkbg-mftr-tagline' }, a.tagline) : null,
260 a.showSocial ? el('div', { className:'bkbg-mftr-social' },
261 a.socialLinks.map(function(link) {
262 var svgSrc = SOCIAL_ICONS[link.platform] || '';
263 return el('a', { key:link.id, href:link.url, className:'bkbg-mftr-social-link', 'aria-label':link.label, rel:'noopener noreferrer', target:'_blank' },
264 svgSrc ? el('img', { src:svgSrc, alt:link.label, width:18, height:18 }) : el('span', null, link.label)
265 );
266 })
267 ) : null
268 ),
269 el('div', { className:'bkbg-mftr-cols', style:{gridTemplateColumns:'repeat('+a.columns.length+',1fr)'} },
270 a.columns.map(function(col) {
271 return el('div', { key:col.id, className:'bkbg-mftr-col' },
272 el('h4', { className:'bkbg-mftr-col-heading' }, col.heading),
273 el('ul', { className:'bkbg-mftr-col-list' },
274 col.links.map(function(link) {
275 return el('li', { key:link.id }, el('a', { href:link.url, className:'bkbg-mftr-col-link' }, link.label));
276 })
277 )
278 );
279 })
280 )
281 ),
282 a.showDivider ? el('hr', { className:'bkbg-mftr-divider' }) : null,
283 a.showBottomBar ? el('div', { className:'bkbg-mftr-bottom' },
284 el('span', { className:'bkbg-mftr-copyright' }, a.copyright),
285 a.bottomLinks.length ? el('div', { className:'bkbg-mftr-bottom-links' },
286 a.bottomLinks.map(function(link) { return el('a', { key:link.id, href:link.url, className:'bkbg-mftr-bottom-link' }, link.label); })
287 ) : null
288 ) : null
289 );
290 }
291 }],
292
293 save: function (props) {
294 var a = props.attributes;
295 var v = (typeof window.bkbgTypoCssVars === 'function') ? window.bkbgTypoCssVars : function () { return {}; };
296 var s = Object.assign({
297 '--bkbg-mftr-pt':a.paddingTop+'px','--bkbg-mftr-pb':a.paddingBottom+'px','--bkbg-mftr-gap':a.gap+'px','--bkbg-mftr-heading-c':a.headingColor,'--bkbg-mftr-link-c':a.linkColor,'--bkbg-mftr-link-hov-c':a.linkHoverColor,'--bkbg-mftr-tagline-c':a.taglineColor,'--bkbg-mftr-div-c':a.dividerColor,'--bkbg-mftr-copy-c':a.copyrightColor,'--bkbg-mftr-social-c':a.socialIconColor,background:a.footerBg||undefined
298 },
299 v(a.headingTypo,'--bkbg-mftr-hd-'),
300 v(a.taglineTypo,'--bkbg-mftr-tl-'),
301 v(a.linkTypo,'--bkbg-mftr-lk-'),
302 v(a.copyrightTypo,'--bkbg-mftr-cp-')
303 );
304 var blockProps = wp.blockEditor.useBlockProps.save({
305 className: 'bkbg-mftr-wrap bkbg-mftr-layout--' + a.layout,
306 style: s
307 });
308 return el('div', blockProps,
309 el('div', { className:'bkbg-mftr-main' },
310 el('div', { className:'bkbg-mftr-brand' },
311 a.logoUrl ? el('img', { src:a.logoUrl, alt:'Logo', className:'bkbg-mftr-logo', style:{width:a.logoWidth+'px'}, loading:'lazy' }) : null,
312 a.showTagline ? el('p', { className:'bkbg-mftr-tagline' }, a.tagline) : null,
313 a.showSocial ? el('div', { className:'bkbg-mftr-social' },
314 a.socialLinks.map(function(link) {
315 var svgSrc = SOCIAL_ICONS[link.platform] || '';
316 return el('a', { key:link.id, href:link.url, className:'bkbg-mftr-social-link', 'aria-label':link.label, rel:'noopener noreferrer', target:'_blank' },
317 svgSrc ? el('img', { src:svgSrc, alt:link.label, width:18, height:18 }) : el('span', null, link.label)
318 );
319 })
320 ) : null
321 ),
322 el('div', { className:'bkbg-mftr-cols', style:{gridTemplateColumns:'repeat('+a.columns.length+',1fr)'} },
323 a.columns.map(function(col) {
324 return el('div', { key:col.id, className:'bkbg-mftr-col' },
325 el('h4', { className:'bkbg-mftr-col-heading' }, col.heading),
326 el('ul', { className:'bkbg-mftr-col-list' },
327 col.links.map(function(link) {
328 return el('li', { key:link.id }, el('a', { href:link.url, className:'bkbg-mftr-col-link' }, link.label));
329 })
330 )
331 );
332 })
333 )
334 ),
335 a.showDivider ? el('hr', { className:'bkbg-mftr-divider' }) : null,
336 a.showBottomBar ? el('div', { className:'bkbg-mftr-bottom' },
337 el('span', { className:'bkbg-mftr-copyright' }, a.copyright),
338 a.bottomLinks.length ? el('div', { className:'bkbg-mftr-bottom-links' },
339 a.bottomLinks.map(function(link) { return el('a', { key:link.id, href:link.url, className:'bkbg-mftr-bottom-link' }, link.label); })
340 ) : null
341 ) : null
342 );
343 }
344 });
345 }() );
346