@sociallane/elements 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +5 -0
- package/.prettierrc.json +8 -0
- package/.vite-dev +0 -0
- package/README.md +47 -0
- package/admin/js/widget-browser.js +124 -0
- package/admin/views/onboarding.php +62 -0
- package/admin/views/partials/category-tabs.php +39 -0
- package/admin/views/partials/step-complete.php +48 -0
- package/admin/views/partials/step-requirements.php +52 -0
- package/admin/views/partials/step-widgets.php +63 -0
- package/admin/views/partials/widget-card.php +67 -0
- package/admin/views/partials/widget-toolbar.php +28 -0
- package/admin/views/preview-embed.php +78 -0
- package/admin/views/preview-frame.php +183 -0
- package/admin/views/preview-index.php +74 -0
- package/admin/views/settings.php +94 -0
- package/admin/views/setup-widget-catalog-frontend.php +189 -0
- package/admin/views/setup-widget-catalog.php +164 -0
- package/assets/css/lenis.css +18 -0
- package/assets/css/tailwind.css +740 -0
- package/assets/dist/.vite/manifest.json +13 -0
- package/assets/dist/animations-BySooxN8.js +37 -0
- package/assets/dist/tailwind-DzIAfumJ.css +1 -0
- package/assets/js/animations.js +113 -0
- package/assets/js/utilities/hover-reveal.js +88 -0
- package/assets/js/utilities/pin.js +31 -0
- package/assets/js/utilities/reveal.js +59 -0
- package/assets/js/utilities/split-text.js +93 -0
- package/assets/js/utilities/stagger.js +48 -0
- package/assets/previews/.gitkeep +2 -0
- package/assets/previews/README.md +65 -0
- package/assets/svgs/components/accordion.svg +9 -0
- package/assets/svgs/components/alert.svg +6 -0
- package/assets/svgs/components/avatar.svg +4 -0
- package/assets/svgs/components/badge.svg +4 -0
- package/assets/svgs/components/breadcrumbs.svg +7 -0
- package/assets/svgs/components/button.svg +4 -0
- package/assets/svgs/components/calendar.svg +10 -0
- package/assets/svgs/components/card.svg +5 -0
- package/assets/svgs/widgets/bento-grid.svg +8 -0
- package/assets/svgs/widgets/bento-portfolio.svg +8 -0
- package/assets/svgs/widgets/content-block.svg +4 -0
- package/assets/svgs/widgets/faq.svg +11 -0
- package/assets/svgs/widgets/feature-grid.svg +14 -0
- package/assets/svgs/widgets/feature-list-cta.svg +10 -0
- package/assets/svgs/widgets/footer.svg +7 -0
- package/assets/svgs/widgets/grid-posts.svg +11 -0
- package/assets/svgs/widgets/grid-team.svg +8 -0
- package/assets/svgs/widgets/hero.svg +7 -0
- package/assets/svgs/widgets/intro-text.svg +3 -0
- package/assets/svgs/widgets/logo-grid.svg +12 -0
- package/assets/svgs/widgets/navigation.svg +10 -0
- package/assets/svgs/widgets/newsletter.svg +6 -0
- package/assets/svgs/widgets/pricing-table.svg +9 -0
- package/assets/svgs/widgets/social-proof.svg +7 -0
- package/docs/cursor-global-rule.md +24 -0
- package/docs/install-new-instance.md +92 -0
- package/docs/npm-widget-cheatsheet.md +178 -0
- package/docs/package-installation.md +127 -0
- package/docs/widgets/blog-grid.md +31 -0
- package/docs/widgets/card-hover-reveal.md +27 -0
- package/docs/widgets/cta-banner.md +31 -0
- package/docs/widgets/cta-split.md +26 -0
- package/docs/widgets/faq.md +31 -0
- package/docs/widgets/feature-list.md +21 -0
- package/docs/widgets/footer-links-contact.md +24 -0
- package/elements/.gitkeep +0 -0
- package/elements/button/button.php +161 -0
- package/elements/button/templates/render.php +89 -0
- package/elements/cta-group/templates/render.php +61 -0
- package/elements/image/image.php +113 -0
- package/elements/image/templates/render.php +43 -0
- package/elements/section-header/templates/render.php +103 -0
- package/includes/button-presets.php +71 -0
- package/includes/class-admin-settings.php +134 -0
- package/includes/class-disable-reset-css.php +78 -0
- package/includes/class-gravity-forms-styles.php +78 -0
- package/includes/class-onboarding.php +214 -0
- package/includes/class-setup-widget-catalog.php +37 -0
- package/includes/class-widget-manager.php +605 -0
- package/includes/class-widget-preview.php +101 -0
- package/includes/footer-menu-columns.php +85 -0
- package/includes/widget-preview-defaults.php +660 -0
- package/package.json +38 -0
- package/packages/core/assets/css/lenis.css +18 -0
- package/packages/core/assets/css/tailwind.css +704 -0
- package/packages/core/assets/dist/.vite/manifest.json +13 -0
- package/packages/core/assets/dist/animations-BySooxN8.js +37 -0
- package/packages/core/assets/dist/tailwind-BE97TLZW.css +1 -0
- package/packages/core/assets/js/animations.js +113 -0
- package/packages/core/assets/js/utilities/hover-reveal.js +88 -0
- package/packages/core/assets/js/utilities/pin.js +31 -0
- package/packages/core/assets/js/utilities/reveal.js +56 -0
- package/packages/core/assets/js/utilities/split-text.js +74 -0
- package/packages/core/assets/js/utilities/stagger.js +46 -0
- package/packages/core/includes/class-plugin.php +75 -0
- package/packages/core/includes/class-vite-assets.php +357 -0
- package/packages/core/includes/class-widgets-loader.php +195 -0
- package/packages/core/includes/helpers.php +407 -0
- package/packages/core/includes/traits/trait-animation-controls.php +194 -0
- package/packages/core/includes/traits/trait-common-controls.php +239 -0
- package/packages/core/package.json +25 -0
- package/packages/core/vite.config.js +123 -0
- package/packages/widgets/bento-grid/bento-grid.php +761 -0
- package/packages/widgets/bento-grid/data/view.php +327 -0
- package/packages/widgets/bento-grid/package.json +12 -0
- package/packages/widgets/bento-grid/templates/partials/cell1.php +45 -0
- package/packages/widgets/bento-grid/templates/partials/cell2.php +52 -0
- package/packages/widgets/bento-grid/templates/partials/cell3.php +45 -0
- package/packages/widgets/bento-grid/templates/partials/cell4.php +44 -0
- package/packages/widgets/bento-grid/templates/partials/default-grid.php +31 -0
- package/packages/widgets/bento-grid/templates/partials/tcsr-row1-left.php +68 -0
- package/packages/widgets/bento-grid/templates/partials/tcsr-row1-right.php +65 -0
- package/packages/widgets/bento-grid/templates/partials/tcsr-row2-center.php +41 -0
- package/packages/widgets/bento-grid/templates/partials/tcsr-row2-left.php +38 -0
- package/packages/widgets/bento-grid/templates/partials/tcsr-row2-right.php +38 -0
- package/packages/widgets/bento-grid/templates/partials/two-column-second-row-grid.php +35 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-deploys.php +47 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-grid.php +34 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-integrations.php +40 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-overview.php +67 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-releases.php +29 -0
- package/packages/widgets/bento-grid/templates/partials/two-row-security.php +44 -0
- package/packages/widgets/bento-grid/templates/wrapper.php +72 -0
- package/packages/widgets/bento-grid-4/bento-grid-4.php +524 -0
- package/packages/widgets/bento-grid-4/data/view.php +127 -0
- package/packages/widgets/bento-grid-4/package.json +12 -0
- package/packages/widgets/bento-grid-4/templates/partials/cell1.php +45 -0
- package/packages/widgets/bento-grid-4/templates/partials/cell2.php +52 -0
- package/packages/widgets/bento-grid-4/templates/partials/cell3.php +45 -0
- package/packages/widgets/bento-grid-4/templates/partials/cell4.php +44 -0
- package/packages/widgets/bento-grid-4/templates/partials/default-grid.php +31 -0
- package/packages/widgets/bento-grid-4/templates/partials/tcsr-row1-left.php +68 -0
- package/packages/widgets/bento-grid-4/templates/partials/tcsr-row1-right.php +65 -0
- package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-center.php +41 -0
- package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-left.php +38 -0
- package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-right.php +38 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-column-second-row-grid.php +35 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-deploys.php +47 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-grid.php +34 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-integrations.php +40 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-overview.php +67 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-releases.php +29 -0
- package/packages/widgets/bento-grid-4/templates/partials/two-row-security.php +44 -0
- package/packages/widgets/bento-grid-4/templates/wrapper.php +65 -0
- package/packages/widgets/bento-grid-5/bento-grid-5.php +219 -0
- package/packages/widgets/bento-grid-5/data/view.php +136 -0
- package/packages/widgets/bento-grid-5/package.json +12 -0
- package/packages/widgets/bento-grid-5/templates/partials/cell1.php +45 -0
- package/packages/widgets/bento-grid-5/templates/partials/cell2.php +52 -0
- package/packages/widgets/bento-grid-5/templates/partials/cell3.php +45 -0
- package/packages/widgets/bento-grid-5/templates/partials/cell4.php +44 -0
- package/packages/widgets/bento-grid-5/templates/partials/default-grid.php +31 -0
- package/packages/widgets/bento-grid-5/templates/partials/tcsr-row1-left.php +68 -0
- package/packages/widgets/bento-grid-5/templates/partials/tcsr-row1-right.php +65 -0
- package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-center.php +41 -0
- package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-left.php +38 -0
- package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-right.php +38 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-column-second-row-grid.php +35 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-deploys.php +47 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-grid.php +34 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-integrations.php +40 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-overview.php +67 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-releases.php +29 -0
- package/packages/widgets/bento-grid-5/templates/partials/two-row-security.php +44 -0
- package/packages/widgets/bento-grid-5/templates/wrapper.php +65 -0
- package/packages/widgets/bento-grid-6/bento-grid-6.php +223 -0
- package/packages/widgets/bento-grid-6/data/view.php +158 -0
- package/packages/widgets/bento-grid-6/package.json +12 -0
- package/packages/widgets/bento-grid-6/templates/partials/cell1.php +45 -0
- package/packages/widgets/bento-grid-6/templates/partials/cell2.php +52 -0
- package/packages/widgets/bento-grid-6/templates/partials/cell3.php +45 -0
- package/packages/widgets/bento-grid-6/templates/partials/cell4.php +44 -0
- package/packages/widgets/bento-grid-6/templates/partials/default-grid.php +31 -0
- package/packages/widgets/bento-grid-6/templates/partials/tcsr-row1-left.php +68 -0
- package/packages/widgets/bento-grid-6/templates/partials/tcsr-row1-right.php +65 -0
- package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-center.php +41 -0
- package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-left.php +38 -0
- package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-right.php +38 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-column-second-row-grid.php +35 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-deploys.php +47 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-grid.php +34 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-integrations.php +40 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-overview.php +67 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-releases.php +29 -0
- package/packages/widgets/bento-grid-6/templates/partials/two-row-security.php +44 -0
- package/packages/widgets/bento-grid-6/templates/wrapper.php +65 -0
- package/packages/widgets/bento-portfolio/bento-portfolio.php +399 -0
- package/packages/widgets/bento-portfolio/data/view.php +102 -0
- package/packages/widgets/bento-portfolio/package.json +12 -0
- package/packages/widgets/bento-portfolio/templates/partials/portfolio-card.php +84 -0
- package/packages/widgets/bento-portfolio/templates/partials/portfolio-default-grid.php +35 -0
- package/packages/widgets/bento-portfolio/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
- package/packages/widgets/bento-portfolio/templates/partials/portfolio-two-row-grid.php +35 -0
- package/packages/widgets/bento-portfolio/templates/wrapper.php +88 -0
- package/packages/widgets/bento-portfolio-4/bento-portfolio-4.php +382 -0
- package/packages/widgets/bento-portfolio-4/data/view.php +91 -0
- package/packages/widgets/bento-portfolio-4/package.json +12 -0
- package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-card.php +84 -0
- package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-default-grid.php +35 -0
- package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
- package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-two-row-grid.php +35 -0
- package/packages/widgets/bento-portfolio-4/templates/wrapper.php +78 -0
- package/packages/widgets/bento-portfolio-5/bento-portfolio-5.php +382 -0
- package/packages/widgets/bento-portfolio-5/data/view.php +91 -0
- package/packages/widgets/bento-portfolio-5/package.json +12 -0
- package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-card.php +84 -0
- package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-default-grid.php +35 -0
- package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
- package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-two-row-grid.php +35 -0
- package/packages/widgets/bento-portfolio-5/templates/wrapper.php +78 -0
- package/packages/widgets/bento-portfolio-6/bento-portfolio-6.php +382 -0
- package/packages/widgets/bento-portfolio-6/data/view.php +91 -0
- package/packages/widgets/bento-portfolio-6/package.json +12 -0
- package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-card.php +84 -0
- package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-default-grid.php +35 -0
- package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
- package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-two-row-grid.php +35 -0
- package/packages/widgets/bento-portfolio-6/templates/wrapper.php +78 -0
- package/packages/widgets/blog-grid/blog-grid.php +359 -0
- package/packages/widgets/blog-grid/data/view.php +192 -0
- package/packages/widgets/blog-grid/package.json +12 -0
- package/packages/widgets/blog-grid/templates/partials/card.php +73 -0
- package/packages/widgets/blog-grid/templates/wrapper.php +89 -0
- package/packages/widgets/card-hover-reveal/card-hover-reveal.php +329 -0
- package/packages/widgets/card-hover-reveal/data/view.php +108 -0
- package/packages/widgets/card-hover-reveal/package.json +12 -0
- package/packages/widgets/card-hover-reveal/templates/partials/card.php +86 -0
- package/packages/widgets/card-hover-reveal/templates/wrapper.php +80 -0
- package/packages/widgets/client-logos/client-logos.php +214 -0
- package/packages/widgets/client-logos/data/view.php +88 -0
- package/packages/widgets/client-logos/package.json +12 -0
- package/packages/widgets/client-logos/templates/partials/client-item.php +38 -0
- package/packages/widgets/client-logos/templates/wrapper.php +62 -0
- package/packages/widgets/content-block/content-block.php +280 -0
- package/packages/widgets/content-block/data/view.php +103 -0
- package/packages/widgets/content-block/package.json +12 -0
- package/packages/widgets/content-block/templates/partials/content.php +52 -0
- package/packages/widgets/content-block/templates/wrapper.php +73 -0
- package/packages/widgets/cta-banner/cta-banner.php +300 -0
- package/packages/widgets/cta-banner/data/view.php +96 -0
- package/packages/widgets/cta-banner/package.json +12 -0
- package/packages/widgets/cta-banner/templates/wrapper.php +131 -0
- package/packages/widgets/cta-notify/cta-notify.php +135 -0
- package/packages/widgets/cta-notify/data/view.php +48 -0
- package/packages/widgets/cta-notify/package.json +12 -0
- package/packages/widgets/cta-notify/templates/wrapper.php +69 -0
- package/packages/widgets/cta-split/cta-split.php +246 -0
- package/packages/widgets/cta-split/data/view.php +84 -0
- package/packages/widgets/cta-split/package.json +12 -0
- package/packages/widgets/cta-split/templates/wrapper.php +113 -0
- package/packages/widgets/faq-centered/data/view.php +87 -0
- package/packages/widgets/faq-centered/faq-centered.php +223 -0
- package/packages/widgets/faq-centered/package.json +12 -0
- package/packages/widgets/faq-centered/templates/partials/accordion.php +70 -0
- package/packages/widgets/faq-centered/templates/partials/layout-centered.php +41 -0
- package/packages/widgets/faq-centered/templates/partials/layout-split.php +47 -0
- package/packages/widgets/faq-centered/templates/partials/layout-stacked.php +57 -0
- package/packages/widgets/faq-centered/templates/wrapper.php +70 -0
- package/packages/widgets/faq-split/data/view.php +93 -0
- package/packages/widgets/faq-split/faq-split.php +236 -0
- package/packages/widgets/faq-split/package.json +12 -0
- package/packages/widgets/faq-split/templates/partials/accordion.php +70 -0
- package/packages/widgets/faq-split/templates/partials/layout-centered.php +41 -0
- package/packages/widgets/faq-split/templates/partials/layout-split.php +47 -0
- package/packages/widgets/faq-split/templates/partials/layout-stacked.php +57 -0
- package/packages/widgets/faq-split/templates/wrapper.php +70 -0
- package/packages/widgets/faq-stacked/data/view.php +92 -0
- package/packages/widgets/faq-stacked/faq-stacked.php +223 -0
- package/packages/widgets/faq-stacked/package.json +12 -0
- package/packages/widgets/faq-stacked/templates/partials/accordion.php +70 -0
- package/packages/widgets/faq-stacked/templates/partials/layout-centered.php +41 -0
- package/packages/widgets/faq-stacked/templates/partials/layout-split.php +47 -0
- package/packages/widgets/faq-stacked/templates/partials/layout-stacked.php +57 -0
- package/packages/widgets/faq-stacked/templates/wrapper.php +70 -0
- package/packages/widgets/feature-grid/data/view.php +80 -0
- package/packages/widgets/feature-grid/feature-grid.php +305 -0
- package/packages/widgets/feature-grid/package.json +12 -0
- package/packages/widgets/feature-grid/templates/partials/centered-2x2.php +69 -0
- package/packages/widgets/feature-grid/templates/partials/feature-item.php +54 -0
- package/packages/widgets/feature-grid/templates/wrapper.php +67 -0
- package/packages/widgets/feature-grid-centered/data/view.php +78 -0
- package/packages/widgets/feature-grid-centered/feature-grid-centered.php +278 -0
- package/packages/widgets/feature-grid-centered/package.json +12 -0
- package/packages/widgets/feature-grid-centered/templates/partials/centered-2x2.php +69 -0
- package/packages/widgets/feature-grid-centered/templates/partials/feature-item.php +54 -0
- package/packages/widgets/feature-grid-centered/templates/wrapper.php +35 -0
- package/packages/widgets/feature-list/data/view.php +49 -0
- package/packages/widgets/feature-list/feature-list.php +160 -0
- package/packages/widgets/feature-list/package.json +12 -0
- package/packages/widgets/feature-list/templates/wrapper.php +69 -0
- package/packages/widgets/feature-list-cta/data/view.php +62 -0
- package/packages/widgets/feature-list-cta/feature-list-cta.php +226 -0
- package/packages/widgets/feature-list-cta/package.json +12 -0
- package/packages/widgets/feature-list-cta/templates/partials/feature-item.php +49 -0
- package/packages/widgets/feature-list-cta/templates/wrapper.php +65 -0
- package/packages/widgets/footer/data/view.php +133 -0
- package/packages/widgets/footer/footer.php +389 -0
- package/packages/widgets/footer/package.json +12 -0
- package/packages/widgets/footer/templates/partials/bottom.php +77 -0
- package/packages/widgets/footer/templates/partials/cta.php +47 -0
- package/packages/widgets/footer/templates/partials/link-columns.php +52 -0
- package/packages/widgets/footer/templates/wrapper.php +53 -0
- package/packages/widgets/footer-brand/data/view.php +130 -0
- package/packages/widgets/footer-brand/footer-brand.php +278 -0
- package/packages/widgets/footer-brand/package.json +12 -0
- package/packages/widgets/footer-brand/templates/partials/brand.php +69 -0
- package/packages/widgets/footer-brand/templates/partials/link-columns.php +51 -0
- package/packages/widgets/footer-brand/templates/wrapper.php +59 -0
- package/packages/widgets/footer-links-contact/data/view.php +145 -0
- package/packages/widgets/footer-links-contact/footer-links-contact.php +361 -0
- package/packages/widgets/footer-links-contact/package.json +12 -0
- package/packages/widgets/footer-links-contact/templates/partials/bottom.php +70 -0
- package/packages/widgets/footer-links-contact/templates/partials/contact-column.php +66 -0
- package/packages/widgets/footer-links-contact/templates/partials/link-column.php +39 -0
- package/packages/widgets/footer-links-contact/templates/partials/logo-column.php +46 -0
- package/packages/widgets/footer-links-contact/templates/wrapper.php +68 -0
- package/packages/widgets/form-contact/data/view.php +96 -0
- package/packages/widgets/form-contact/form-contact.php +274 -0
- package/packages/widgets/form-contact/package.json +12 -0
- package/packages/widgets/form-contact/templates/partials/testimonial.php +83 -0
- package/packages/widgets/form-contact/templates/wrapper.php +98 -0
- package/packages/widgets/grid-case-studies/data/view.php +74 -0
- package/packages/widgets/grid-case-studies/grid-case-studies.php +262 -0
- package/packages/widgets/grid-case-studies/package.json +12 -0
- package/packages/widgets/grid-case-studies/templates/partials/card.php +66 -0
- package/packages/widgets/grid-case-studies/templates/wrapper.php +69 -0
- package/packages/widgets/grid-components/data/view.php +107 -0
- package/packages/widgets/grid-components/grid-components.php +323 -0
- package/packages/widgets/grid-components/package.json +12 -0
- package/packages/widgets/grid-components/templates/partials/component-card.php +81 -0
- package/packages/widgets/grid-components/templates/wrapper.php +55 -0
- package/packages/widgets/grid-team/data/view.php +67 -0
- package/packages/widgets/grid-team/grid-team.php +201 -0
- package/packages/widgets/grid-team/package.json +12 -0
- package/packages/widgets/grid-team/templates/partials/team-card.php +52 -0
- package/packages/widgets/grid-team/templates/wrapper.php +67 -0
- package/packages/widgets/hero-announcement/data/view.php +96 -0
- package/packages/widgets/hero-announcement/hero-announcement.php +270 -0
- package/packages/widgets/hero-announcement/package.json +12 -0
- package/packages/widgets/hero-announcement/templates/wrapper.php +111 -0
- package/packages/widgets/hero-centered-image/data/view.php +119 -0
- package/packages/widgets/hero-centered-image/hero-centered-image.php +297 -0
- package/packages/widgets/hero-centered-image/package.json +12 -0
- package/packages/widgets/hero-centered-image/templates/wrapper.php +123 -0
- package/packages/widgets/hero-collage/data/view.php +108 -0
- package/packages/widgets/hero-collage/hero-collage.php +151 -0
- package/packages/widgets/hero-collage/package.json +12 -0
- package/packages/widgets/hero-collage/templates/wrapper.php +102 -0
- package/packages/widgets/hero-overlay/data/view.php +117 -0
- package/packages/widgets/hero-overlay/hero-overlay.php +277 -0
- package/packages/widgets/hero-overlay/package.json +12 -0
- package/packages/widgets/hero-overlay/templates/wrapper.php +225 -0
- package/packages/widgets/hero-overlay-single/data/view.php +118 -0
- package/packages/widgets/hero-overlay-single/hero-overlay-single.php +221 -0
- package/packages/widgets/hero-overlay-single/package.json +12 -0
- package/packages/widgets/hero-overlay-single/templates/wrapper.php +225 -0
- package/packages/widgets/hero-overlay-slider/data/view.php +118 -0
- package/packages/widgets/hero-overlay-slider/hero-overlay-slider.php +262 -0
- package/packages/widgets/hero-overlay-slider/package.json +12 -0
- package/packages/widgets/hero-overlay-slider/templates/wrapper.php +225 -0
- package/packages/widgets/hero-saas-centered/data/view.php +79 -0
- package/packages/widgets/hero-saas-centered/hero-saas-centered.php +145 -0
- package/packages/widgets/hero-saas-centered/package.json +12 -0
- package/packages/widgets/hero-saas-centered/templates/partials/layout-centered.php +70 -0
- package/packages/widgets/hero-saas-centered/templates/partials/layout-split.php +76 -0
- package/packages/widgets/hero-saas-centered/templates/partials/layout-stacked.php +70 -0
- package/packages/widgets/hero-saas-centered/templates/wrapper.php +46 -0
- package/packages/widgets/hero-saas-split/data/view.php +83 -0
- package/packages/widgets/hero-saas-split/hero-saas-split.php +158 -0
- package/packages/widgets/hero-saas-split/package.json +12 -0
- package/packages/widgets/hero-saas-split/templates/partials/layout-centered.php +70 -0
- package/packages/widgets/hero-saas-split/templates/partials/layout-split.php +76 -0
- package/packages/widgets/hero-saas-split/templates/partials/layout-stacked.php +70 -0
- package/packages/widgets/hero-saas-split/templates/wrapper.php +46 -0
- package/packages/widgets/hero-saas-stacked/data/view.php +79 -0
- package/packages/widgets/hero-saas-stacked/hero-saas-stacked.php +145 -0
- package/packages/widgets/hero-saas-stacked/package.json +12 -0
- package/packages/widgets/hero-saas-stacked/templates/partials/layout-centered.php +70 -0
- package/packages/widgets/hero-saas-stacked/templates/partials/layout-split.php +76 -0
- package/packages/widgets/hero-saas-stacked/templates/partials/layout-stacked.php +70 -0
- package/packages/widgets/hero-saas-stacked/templates/wrapper.php +46 -0
- package/packages/widgets/hero-split/data/view.php +84 -0
- package/packages/widgets/hero-split/hero-split.php +127 -0
- package/packages/widgets/hero-split/package.json +12 -0
- package/packages/widgets/hero-split/templates/wrapper.php +86 -0
- package/packages/widgets/hero-stacked-image/data/view.php +137 -0
- package/packages/widgets/hero-stacked-image/hero-stacked-image.php +248 -0
- package/packages/widgets/hero-stacked-image/package.json +12 -0
- package/packages/widgets/hero-stacked-image/templates/wrapper.php +176 -0
- package/packages/widgets/intro-pattern/data/view.php +64 -0
- package/packages/widgets/intro-pattern/intro-pattern.php +161 -0
- package/packages/widgets/intro-pattern/package.json +12 -0
- package/packages/widgets/intro-pattern/templates/wrapper.php +61 -0
- package/packages/widgets/intro-text/data/view.php +79 -0
- package/packages/widgets/intro-text/intro-text.php +252 -0
- package/packages/widgets/intro-text/package.json +12 -0
- package/packages/widgets/intro-text/templates/wrapper.php +75 -0
- package/packages/widgets/logo-grid-centered/data/view.php +79 -0
- package/packages/widgets/logo-grid-centered/logo-grid-centered.php +254 -0
- package/packages/widgets/logo-grid-centered/package.json +12 -0
- package/packages/widgets/logo-grid-centered/templates/wrapper.php +95 -0
- package/packages/widgets/logo-grid-row/data/view.php +79 -0
- package/packages/widgets/logo-grid-row/logo-grid-row.php +254 -0
- package/packages/widgets/logo-grid-row/package.json +12 -0
- package/packages/widgets/logo-grid-row/templates/wrapper.php +108 -0
- package/packages/widgets/logo-grid-split/data/view.php +79 -0
- package/packages/widgets/logo-grid-split/logo-grid-split.php +254 -0
- package/packages/widgets/logo-grid-split/package.json +12 -0
- package/packages/widgets/logo-grid-split/templates/wrapper.php +97 -0
- package/packages/widgets/nav-centered/data/view.php +253 -0
- package/packages/widgets/nav-centered/nav-centered.php +350 -0
- package/packages/widgets/nav-centered/package.json +12 -0
- package/packages/widgets/nav-centered/templates/partials/desktop-mega-panel.php +109 -0
- package/packages/widgets/nav-centered/templates/partials/desktop-menu.php +102 -0
- package/packages/widgets/nav-centered/templates/partials/mobile-menu.php +104 -0
- package/packages/widgets/nav-centered/templates/wrapper.php +401 -0
- package/packages/widgets/nav-compact/data/view.php +253 -0
- package/packages/widgets/nav-compact/nav-compact.php +350 -0
- package/packages/widgets/nav-compact/package.json +12 -0
- package/packages/widgets/nav-compact/templates/partials/desktop-mega-panel.php +109 -0
- package/packages/widgets/nav-compact/templates/partials/desktop-menu.php +102 -0
- package/packages/widgets/nav-compact/templates/partials/mobile-menu.php +104 -0
- package/packages/widgets/nav-compact/templates/wrapper.php +401 -0
- package/packages/widgets/nav-default/data/view.php +254 -0
- package/packages/widgets/nav-default/nav-default.php +350 -0
- package/packages/widgets/nav-default/package.json +12 -0
- package/packages/widgets/nav-default/templates/partials/desktop-mega-panel.php +109 -0
- package/packages/widgets/nav-default/templates/partials/desktop-menu.php +102 -0
- package/packages/widgets/nav-default/templates/partials/mobile-menu.php +104 -0
- package/packages/widgets/nav-default/templates/wrapper.php +401 -0
- package/packages/widgets/nav-floating/data/view.php +253 -0
- package/packages/widgets/nav-floating/nav-floating.php +350 -0
- package/packages/widgets/nav-floating/package.json +12 -0
- package/packages/widgets/nav-floating/templates/partials/desktop-mega-panel.php +109 -0
- package/packages/widgets/nav-floating/templates/partials/desktop-menu.php +102 -0
- package/packages/widgets/nav-floating/templates/partials/mobile-menu.php +104 -0
- package/packages/widgets/nav-floating/templates/wrapper.php +401 -0
- package/packages/widgets/nav-minimal/data/view.php +253 -0
- package/packages/widgets/nav-minimal/nav-minimal.php +350 -0
- package/packages/widgets/nav-minimal/package.json +12 -0
- package/packages/widgets/nav-minimal/templates/partials/desktop-mega-panel.php +109 -0
- package/packages/widgets/nav-minimal/templates/partials/desktop-menu.php +102 -0
- package/packages/widgets/nav-minimal/templates/partials/mobile-menu.php +104 -0
- package/packages/widgets/nav-minimal/templates/wrapper.php +401 -0
- package/packages/widgets/newsletter/data/view.php +56 -0
- package/packages/widgets/newsletter/newsletter.php +210 -0
- package/packages/widgets/newsletter/package.json +12 -0
- package/packages/widgets/newsletter/templates/wrapper.php +137 -0
- package/packages/widgets/newsletter-card/data/view.php +55 -0
- package/packages/widgets/newsletter-card/newsletter-card.php +184 -0
- package/packages/widgets/newsletter-card/package.json +12 -0
- package/packages/widgets/newsletter-card/templates/wrapper.php +90 -0
- package/packages/widgets/newsletter-section/data/view.php +55 -0
- package/packages/widgets/newsletter-section/newsletter-section.php +184 -0
- package/packages/widgets/newsletter-section/package.json +12 -0
- package/packages/widgets/newsletter-section/templates/wrapper.php +87 -0
- package/packages/widgets/outreach-dashboard/data/view.php +176 -0
- package/packages/widgets/outreach-dashboard/outreach-dashboard.php +504 -0
- package/packages/widgets/outreach-dashboard/package.json +12 -0
- package/packages/widgets/outreach-dashboard/templates/partials/card-chat.php +69 -0
- package/packages/widgets/outreach-dashboard/templates/partials/card-engagement.php +60 -0
- package/packages/widgets/outreach-dashboard/templates/partials/card-integrations.php +39 -0
- package/packages/widgets/outreach-dashboard/templates/partials/card-meetings.php +43 -0
- package/packages/widgets/outreach-dashboard/templates/partials/card-networking.php +28 -0
- package/packages/widgets/outreach-dashboard/templates/wrapper.php +76 -0
- package/packages/widgets/page-hero-center/data/view.php +43 -0
- package/packages/widgets/page-hero-center/package.json +12 -0
- package/packages/widgets/page-hero-center/page-hero-center.php +120 -0
- package/packages/widgets/page-hero-center/templates/wrapper.php +54 -0
- package/packages/widgets/page-hero-left/data/view.php +43 -0
- package/packages/widgets/page-hero-left/package.json +12 -0
- package/packages/widgets/page-hero-left/page-hero-left.php +120 -0
- package/packages/widgets/page-hero-left/templates/wrapper.php +54 -0
- package/packages/widgets/pipeline-dashboard/data/view.php +131 -0
- package/packages/widgets/pipeline-dashboard/package.json +12 -0
- package/packages/widgets/pipeline-dashboard/pipeline-dashboard.php +407 -0
- package/packages/widgets/pipeline-dashboard/templates/partials/app-bar.php +31 -0
- package/packages/widgets/pipeline-dashboard/templates/partials/kanban.php +56 -0
- package/packages/widgets/pipeline-dashboard/templates/partials/pipeline-header.php +66 -0
- package/packages/widgets/pipeline-dashboard/templates/wrapper.php +64 -0
- package/packages/widgets/posts-grid/data/view.php +144 -0
- package/packages/widgets/posts-grid/package.json +12 -0
- package/packages/widgets/posts-grid/posts-grid.php +282 -0
- package/packages/widgets/posts-grid/templates/partials/card-overlay.php +58 -0
- package/packages/widgets/posts-grid/templates/partials/card.php +49 -0
- package/packages/widgets/posts-grid/templates/wrapper.php +55 -0
- package/packages/widgets/posts-grid-overlay/data/view.php +144 -0
- package/packages/widgets/posts-grid-overlay/package.json +12 -0
- package/packages/widgets/posts-grid-overlay/posts-grid-overlay.php +282 -0
- package/packages/widgets/posts-grid-overlay/templates/partials/card-overlay.php +58 -0
- package/packages/widgets/posts-grid-overlay/templates/partials/card.php +49 -0
- package/packages/widgets/posts-grid-overlay/templates/wrapper.php +55 -0
- package/packages/widgets/pricing-table/data/view.php +96 -0
- package/packages/widgets/pricing-table/package.json +12 -0
- package/packages/widgets/pricing-table/pricing-table.php +376 -0
- package/packages/widgets/pricing-table/templates/partials/pricing-card.php +125 -0
- package/packages/widgets/pricing-table/templates/wrapper.php +164 -0
- package/packages/widgets/sales-dashboard/data/view.php +158 -0
- package/packages/widgets/sales-dashboard/package.json +12 -0
- package/packages/widgets/sales-dashboard/sales-dashboard.php +434 -0
- package/packages/widgets/sales-dashboard/templates/partials/card-competitors.php +78 -0
- package/packages/widgets/sales-dashboard/templates/partials/card-feature.php +58 -0
- package/packages/widgets/sales-dashboard/templates/partials/card-profile.php +76 -0
- package/packages/widgets/sales-dashboard/templates/wrapper.php +74 -0
- package/packages/widgets/section-stats/data/view.php +90 -0
- package/packages/widgets/section-stats/package.json +12 -0
- package/packages/widgets/section-stats/section-stats.php +232 -0
- package/packages/widgets/section-stats/templates/partials/stat-card.php +44 -0
- package/packages/widgets/section-stats/templates/wrapper.php +87 -0
- package/packages/widgets/services/data/view.php +79 -0
- package/packages/widgets/services/package.json +12 -0
- package/packages/widgets/services/services.php +198 -0
- package/packages/widgets/services/templates/partials/service-item.php +35 -0
- package/packages/widgets/services/templates/wrapper.php +92 -0
- package/packages/widgets/simple-page-hero/data/view.php +43 -0
- package/packages/widgets/simple-page-hero/package.json +12 -0
- package/packages/widgets/simple-page-hero/simple-page-hero.php +147 -0
- package/packages/widgets/simple-page-hero/templates/wrapper.php +54 -0
- package/packages/widgets/social-proof/data/view.php +62 -0
- package/packages/widgets/social-proof/package.json +12 -0
- package/packages/widgets/social-proof/social-proof.php +271 -0
- package/packages/widgets/social-proof/templates/partials/layout-trust.php +73 -0
- package/packages/widgets/social-proof/templates/partials/stat-card.php +32 -0
- package/packages/widgets/social-proof/templates/partials/stat-item.php +35 -0
- package/packages/widgets/social-proof/templates/wrapper.php +87 -0
- package/packages/widgets/social-proof-trust/data/view.php +105 -0
- package/packages/widgets/social-proof-trust/package.json +12 -0
- package/packages/widgets/social-proof-trust/social-proof-trust.php +367 -0
- package/packages/widgets/social-proof-trust/templates/partials/layout-trust.php +73 -0
- package/packages/widgets/social-proof-trust/templates/partials/stat-card.php +32 -0
- package/packages/widgets/social-proof-trust/templates/partials/stat-item.php +35 -0
- package/packages/widgets/social-proof-trust/templates/wrapper.php +48 -0
- package/packages/widgets/testimonial-quote/data/view.php +57 -0
- package/packages/widgets/testimonial-quote/package.json +12 -0
- package/packages/widgets/testimonial-quote/templates/wrapper.php +66 -0
- package/packages/widgets/testimonial-quote/testimonial-quote.php +157 -0
- package/packages/widgets/testimonials-bento/data/view.php +110 -0
- package/packages/widgets/testimonials-bento/package.json +12 -0
- package/packages/widgets/testimonials-bento/templates/partials/layout-bento.php +36 -0
- package/packages/widgets/testimonials-bento/templates/partials/layout-masonry.php +74 -0
- package/packages/widgets/testimonials-bento/templates/partials/testimonial-card.php +85 -0
- package/packages/widgets/testimonials-bento/templates/wrapper.php +63 -0
- package/packages/widgets/testimonials-bento/testimonials-bento.php +322 -0
- package/packages/widgets/testimonials-grid/data/view.php +108 -0
- package/packages/widgets/testimonials-grid/package.json +12 -0
- package/packages/widgets/testimonials-grid/templates/partials/layout-bento.php +36 -0
- package/packages/widgets/testimonials-grid/templates/partials/layout-masonry.php +74 -0
- package/packages/widgets/testimonials-grid/templates/partials/testimonial-card.php +85 -0
- package/packages/widgets/testimonials-grid/templates/wrapper.php +74 -0
- package/packages/widgets/testimonials-grid/testimonials-grid.php +336 -0
- package/packages/widgets/testimonials-masonry/data/view.php +108 -0
- package/packages/widgets/testimonials-masonry/package.json +12 -0
- package/packages/widgets/testimonials-masonry/templates/partials/layout-bento.php +36 -0
- package/packages/widgets/testimonials-masonry/templates/partials/layout-masonry.php +74 -0
- package/packages/widgets/testimonials-masonry/templates/partials/testimonial-card.php +85 -0
- package/packages/widgets/testimonials-masonry/templates/wrapper.php +63 -0
- package/packages/widgets/testimonials-masonry/testimonials-masonry.php +336 -0
- package/packages/widgets/widget-filter/data/view.php +527 -0
- package/packages/widgets/widget-filter/package.json +12 -0
- package/packages/widgets/widget-filter/templates/wrapper.php +630 -0
- package/packages/widgets/widget-filter/widget-filter.php +123 -0
- package/scripts/scaffold-widget-packages.js +109 -0
- package/scripts/setup.sh +56 -0
- package/scripts/split-widget.js +176 -0
- package/scripts/sync-widgets.js +69 -0
- package/sociallane-elements.php +104 -0
- package/vite.config.js +129 -0
- package/widgets/.gitkeep +0 -0
- package/widgets/bento-grid/bento-grid.php +761 -0
- package/widgets/bento-grid/data/view.php +334 -0
- package/widgets/bento-grid/templates/partials/cell1.php +45 -0
- package/widgets/bento-grid/templates/partials/cell2.php +52 -0
- package/widgets/bento-grid/templates/partials/cell3.php +45 -0
- package/widgets/bento-grid/templates/partials/cell4.php +44 -0
- package/widgets/bento-grid/templates/partials/default-grid.php +31 -0
- package/widgets/bento-grid/templates/partials/tcsr-row1-left.php +68 -0
- package/widgets/bento-grid/templates/partials/tcsr-row1-right.php +65 -0
- package/widgets/bento-grid/templates/partials/tcsr-row2-center.php +41 -0
- package/widgets/bento-grid/templates/partials/tcsr-row2-left.php +38 -0
- package/widgets/bento-grid/templates/partials/tcsr-row2-right.php +38 -0
- package/widgets/bento-grid/templates/partials/two-column-second-row-grid.php +35 -0
- package/widgets/bento-grid/templates/partials/two-row-deploys.php +47 -0
- package/widgets/bento-grid/templates/partials/two-row-grid.php +34 -0
- package/widgets/bento-grid/templates/partials/two-row-integrations.php +40 -0
- package/widgets/bento-grid/templates/partials/two-row-overview.php +67 -0
- package/widgets/bento-grid/templates/partials/two-row-releases.php +29 -0
- package/widgets/bento-grid/templates/partials/two-row-security.php +44 -0
- package/widgets/bento-grid/templates/wrapper.php +72 -0
- package/widgets/bento-portfolio/bento-portfolio.php +399 -0
- package/widgets/bento-portfolio/data/view.php +124 -0
- package/widgets/bento-portfolio/templates/partials/portfolio-card.php +84 -0
- package/widgets/bento-portfolio/templates/partials/portfolio-default-grid.php +35 -0
- package/widgets/bento-portfolio/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
- package/widgets/bento-portfolio/templates/partials/portfolio-two-row-grid.php +35 -0
- package/widgets/bento-portfolio/templates/wrapper.php +88 -0
- package/widgets/blog-grid/blog-grid.php +359 -0
- package/widgets/blog-grid/data/view.php +209 -0
- package/widgets/blog-grid/templates/partials/card.php +73 -0
- package/widgets/blog-grid/templates/wrapper.php +89 -0
- package/widgets/card-hover-reveal/card-hover-reveal.php +329 -0
- package/widgets/card-hover-reveal/data/view.php +141 -0
- package/widgets/card-hover-reveal/templates/partials/card.php +119 -0
- package/widgets/card-hover-reveal/templates/wrapper.php +80 -0
- package/widgets/client-logos/client-logos.php +214 -0
- package/widgets/client-logos/data/view.php +105 -0
- package/widgets/client-logos/templates/partials/client-item.php +38 -0
- package/widgets/client-logos/templates/wrapper.php +62 -0
- package/widgets/content-block/content-block.php +280 -0
- package/widgets/content-block/data/view.php +120 -0
- package/widgets/content-block/templates/partials/content.php +52 -0
- package/widgets/content-block/templates/wrapper.php +73 -0
- package/widgets/cta-banner/cta-banner.php +300 -0
- package/widgets/cta-banner/data/view.php +101 -0
- package/widgets/cta-banner/templates/wrapper.php +131 -0
- package/widgets/cta-notify/cta-notify.php +135 -0
- package/widgets/cta-notify/data/view.php +55 -0
- package/widgets/cta-notify/templates/wrapper.php +69 -0
- package/widgets/cta-split/cta-split.php +246 -0
- package/widgets/cta-split/data/view.php +86 -0
- package/widgets/cta-split/templates/wrapper.php +113 -0
- package/widgets/faq/data/view.php +105 -0
- package/widgets/faq/faq.php +253 -0
- package/widgets/faq/templates/partials/accordion.php +74 -0
- package/widgets/faq/templates/partials/layout-centered.php +41 -0
- package/widgets/faq/templates/partials/layout-split.php +47 -0
- package/widgets/faq/templates/partials/layout-stacked.php +57 -0
- package/widgets/faq/templates/wrapper.php +76 -0
- package/widgets/feature-grid/data/view.php +121 -0
- package/widgets/feature-grid/feature-grid.php +321 -0
- package/widgets/feature-grid/templates/partials/centered-2x2.php +69 -0
- package/widgets/feature-grid/templates/partials/feature-item.php +54 -0
- package/widgets/feature-grid/templates/wrapper.php +71 -0
- package/widgets/feature-list/data/view.php +56 -0
- package/widgets/feature-list/feature-list.php +160 -0
- package/widgets/feature-list/templates/wrapper.php +69 -0
- package/widgets/feature-list-cta/data/view.php +85 -0
- package/widgets/feature-list-cta/feature-list-cta.php +226 -0
- package/widgets/feature-list-cta/templates/partials/feature-item.php +49 -0
- package/widgets/feature-list-cta/templates/wrapper.php +65 -0
- package/widgets/footer/data/view.php +139 -0
- package/widgets/footer/footer.php +389 -0
- package/widgets/footer/templates/partials/bottom.php +77 -0
- package/widgets/footer/templates/partials/cta.php +47 -0
- package/widgets/footer/templates/partials/link-columns.php +52 -0
- package/widgets/footer/templates/wrapper.php +53 -0
- package/widgets/footer-brand/data/view.php +135 -0
- package/widgets/footer-brand/footer-brand.php +278 -0
- package/widgets/footer-brand/templates/partials/brand.php +69 -0
- package/widgets/footer-brand/templates/partials/link-columns.php +51 -0
- package/widgets/footer-brand/templates/wrapper.php +59 -0
- package/widgets/footer-links-contact/data/view.php +165 -0
- package/widgets/footer-links-contact/footer-links-contact.php +361 -0
- package/widgets/footer-links-contact/templates/partials/bottom.php +70 -0
- package/widgets/footer-links-contact/templates/partials/contact-column.php +66 -0
- package/widgets/footer-links-contact/templates/partials/link-column.php +39 -0
- package/widgets/footer-links-contact/templates/partials/logo-column.php +46 -0
- package/widgets/footer-links-contact/templates/wrapper.php +68 -0
- package/widgets/form-contact/data/view.php +133 -0
- package/widgets/form-contact/form-contact.php +274 -0
- package/widgets/form-contact/templates/partials/testimonial.php +83 -0
- package/widgets/form-contact/templates/wrapper.php +98 -0
- package/widgets/grid-case-studies/data/view.php +88 -0
- package/widgets/grid-case-studies/grid-case-studies.php +262 -0
- package/widgets/grid-case-studies/templates/partials/card.php +66 -0
- package/widgets/grid-case-studies/templates/wrapper.php +69 -0
- package/widgets/grid-components/data/view.php +131 -0
- package/widgets/grid-components/grid-components.php +316 -0
- package/widgets/grid-components/templates/partials/component-card.php +81 -0
- package/widgets/grid-components/templates/wrapper.php +55 -0
- package/widgets/grid-posts/data/view.php +159 -0
- package/widgets/grid-posts/grid-posts.php +295 -0
- package/widgets/grid-posts/templates/partials/card-overlay.php +58 -0
- package/widgets/grid-posts/templates/partials/card.php +49 -0
- package/widgets/grid-posts/templates/wrapper.php +59 -0
- package/widgets/grid-team/data/view.php +80 -0
- package/widgets/grid-team/grid-team.php +201 -0
- package/widgets/grid-team/templates/partials/team-card.php +52 -0
- package/widgets/grid-team/templates/wrapper.php +67 -0
- package/widgets/grid-testimonials/data/view.php +179 -0
- package/widgets/grid-testimonials/grid-testimonials.php +370 -0
- package/widgets/grid-testimonials/templates/partials/layout-bento.php +36 -0
- package/widgets/grid-testimonials/templates/partials/layout-masonry.php +74 -0
- package/widgets/grid-testimonials/templates/partials/testimonial-card.php +85 -0
- package/widgets/grid-testimonials/templates/wrapper.php +84 -0
- package/widgets/hero-announcement/data/view.php +98 -0
- package/widgets/hero-announcement/hero-announcement.php +270 -0
- package/widgets/hero-announcement/templates/wrapper.php +111 -0
- package/widgets/hero-centered-image/data/view.php +128 -0
- package/widgets/hero-centered-image/hero-centered-image.php +297 -0
- package/widgets/hero-centered-image/templates/wrapper.php +123 -0
- package/widgets/hero-collage/data/view.php +113 -0
- package/widgets/hero-collage/hero-collage.php +151 -0
- package/widgets/hero-collage/templates/wrapper.php +102 -0
- package/widgets/hero-overlay/data/view.php +121 -0
- package/widgets/hero-overlay/hero-overlay.php +277 -0
- package/widgets/hero-overlay/templates/wrapper.php +225 -0
- package/widgets/hero-saas/data/view.php +106 -0
- package/widgets/hero-saas/hero-saas.php +175 -0
- package/widgets/hero-saas/templates/partials/layout-centered.php +70 -0
- package/widgets/hero-saas/templates/partials/layout-split.php +76 -0
- package/widgets/hero-saas/templates/partials/layout-stacked.php +70 -0
- package/widgets/hero-saas/templates/wrapper.php +54 -0
- package/widgets/hero-split/data/view.php +92 -0
- package/widgets/hero-split/hero-split.php +127 -0
- package/widgets/hero-split/templates/wrapper.php +86 -0
- package/widgets/hero-stacked-image/data/view.php +142 -0
- package/widgets/hero-stacked-image/hero-stacked-image.php +248 -0
- package/widgets/hero-stacked-image/templates/wrapper.php +176 -0
- package/widgets/intro-pattern/data/view.php +73 -0
- package/widgets/intro-pattern/intro-pattern.php +161 -0
- package/widgets/intro-pattern/templates/wrapper.php +61 -0
- package/widgets/intro-text/data/view.php +97 -0
- package/widgets/intro-text/intro-text.php +252 -0
- package/widgets/intro-text/templates/wrapper.php +75 -0
- package/widgets/logo-grid/data/view.php +113 -0
- package/widgets/logo-grid/logo-grid.php +281 -0
- package/widgets/logo-grid/templates/wrapper.php +213 -0
- package/widgets/newsletter/data/view.php +75 -0
- package/widgets/newsletter/newsletter.php +210 -0
- package/widgets/newsletter/templates/wrapper.php +137 -0
- package/widgets/outreach-dashboard/data/view.php +176 -0
- package/widgets/outreach-dashboard/outreach-dashboard.php +504 -0
- package/widgets/outreach-dashboard/templates/partials/card-chat.php +69 -0
- package/widgets/outreach-dashboard/templates/partials/card-engagement.php +60 -0
- package/widgets/outreach-dashboard/templates/partials/card-integrations.php +39 -0
- package/widgets/outreach-dashboard/templates/partials/card-meetings.php +43 -0
- package/widgets/outreach-dashboard/templates/partials/card-networking.php +28 -0
- package/widgets/outreach-dashboard/templates/wrapper.php +76 -0
- package/widgets/pipeline-dashboard/data/view.php +131 -0
- package/widgets/pipeline-dashboard/pipeline-dashboard.php +407 -0
- package/widgets/pipeline-dashboard/templates/partials/app-bar.php +31 -0
- package/widgets/pipeline-dashboard/templates/partials/kanban.php +56 -0
- package/widgets/pipeline-dashboard/templates/partials/pipeline-header.php +66 -0
- package/widgets/pipeline-dashboard/templates/wrapper.php +64 -0
- package/widgets/pricing-table/data/view.php +133 -0
- package/widgets/pricing-table/pricing-table.php +376 -0
- package/widgets/pricing-table/templates/partials/pricing-card.php +125 -0
- package/widgets/pricing-table/templates/wrapper.php +164 -0
- package/widgets/sales-dashboard/data/view.php +158 -0
- package/widgets/sales-dashboard/sales-dashboard.php +434 -0
- package/widgets/sales-dashboard/templates/partials/card-competitors.php +78 -0
- package/widgets/sales-dashboard/templates/partials/card-feature.php +58 -0
- package/widgets/sales-dashboard/templates/partials/card-profile.php +76 -0
- package/widgets/sales-dashboard/templates/wrapper.php +74 -0
- package/widgets/section-stats/data/view.php +105 -0
- package/widgets/section-stats/section-stats.php +232 -0
- package/widgets/section-stats/templates/partials/stat-card.php +44 -0
- package/widgets/section-stats/templates/wrapper.php +87 -0
- package/widgets/services/data/view.php +91 -0
- package/widgets/services/services.php +198 -0
- package/widgets/services/templates/partials/service-item.php +35 -0
- package/widgets/services/templates/wrapper.php +92 -0
- package/widgets/simple-page-hero/data/view.php +52 -0
- package/widgets/simple-page-hero/simple-page-hero.php +147 -0
- package/widgets/simple-page-hero/templates/wrapper.php +54 -0
- package/widgets/social-proof/data/view.php +143 -0
- package/widgets/social-proof/social-proof.php +389 -0
- package/widgets/social-proof/templates/partials/layout-trust.php +73 -0
- package/widgets/social-proof/templates/partials/stat-card.php +32 -0
- package/widgets/social-proof/templates/partials/stat-item.php +35 -0
- package/widgets/social-proof/templates/wrapper.php +93 -0
- package/widgets/testimonial-quote/data/view.php +62 -0
- package/widgets/testimonial-quote/templates/wrapper.php +66 -0
- package/widgets/testimonial-quote/testimonial-quote.php +157 -0
- package/widgets.json +75 -0
- package/widgets.json.minimal +17 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# npm Widget Import Cheatsheet
|
|
2
|
+
|
|
3
|
+
Quick reference for loading widgets via npm workspaces.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## One-liners
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Full install — REQUIRED for styled widgets (from plugin root)
|
|
11
|
+
npm install && npm run build
|
|
12
|
+
|
|
13
|
+
# Dev watch (rebuilds on file change)
|
|
14
|
+
npm run dev
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Important:** `npm run build` is required. Tailwind scans the plugin root (`packages/widgets/`, `elements/`) for PHP templates and only outputs utility classes it finds. Without a build, widgets render unstyled.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Widget selection
|
|
22
|
+
|
|
23
|
+
Edit `widgets.json` at plugin root:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"widgets": [
|
|
28
|
+
"hero-split",
|
|
29
|
+
"hero-overlay",
|
|
30
|
+
"content-block",
|
|
31
|
+
"faq"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Only slugs listed here are loaded. Add or remove as needed.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Widget → npm package & command
|
|
41
|
+
|
|
42
|
+
Every widget and its npm package / add command:
|
|
43
|
+
|
|
44
|
+
| Widget | Package | Command |
|
|
45
|
+
|--------|---------|---------|
|
|
46
|
+
| bento-grid | `@sociallane/widget-bento-grid` | `npm install @sociallane/widget-bento-grid` |
|
|
47
|
+
| bento-portfolio | `@sociallane/widget-bento-portfolio` | `npm install @sociallane/widget-bento-portfolio` |
|
|
48
|
+
| blog-grid | `@sociallane/widget-blog-grid` | `npm install @sociallane/widget-blog-grid` |
|
|
49
|
+
| card-hover-reveal | `@sociallane/widget-card-hover-reveal` | `npm install @sociallane/widget-card-hover-reveal` |
|
|
50
|
+
| client-logos | `@sociallane/widget-client-logos` | `npm install @sociallane/widget-client-logos` |
|
|
51
|
+
| content-block | `@sociallane/widget-content-block` | `npm install @sociallane/widget-content-block` |
|
|
52
|
+
| cta-banner | `@sociallane/widget-cta-banner` | `npm install @sociallane/widget-cta-banner` |
|
|
53
|
+
| cta-notify | `@sociallane/widget-cta-notify` | `npm install @sociallane/widget-cta-notify` |
|
|
54
|
+
| cta-split | `@sociallane/widget-cta-split` | `npm install @sociallane/widget-cta-split` |
|
|
55
|
+
| faq | `@sociallane/widget-faq` | `npm install @sociallane/widget-faq` |
|
|
56
|
+
| feature-grid | `@sociallane/widget-feature-grid` | `npm install @sociallane/widget-feature-grid` |
|
|
57
|
+
| feature-list | `@sociallane/widget-feature-list` | `npm install @sociallane/widget-feature-list` |
|
|
58
|
+
| feature-list-cta | `@sociallane/widget-feature-list-cta` | `npm install @sociallane/widget-feature-list-cta` |
|
|
59
|
+
| footer | `@sociallane/widget-footer` | `npm install @sociallane/widget-footer` |
|
|
60
|
+
| footer-brand | `@sociallane/widget-footer-brand` | `npm install @sociallane/widget-footer-brand` |
|
|
61
|
+
| footer-links-contact | `@sociallane/widget-footer-links-contact` | `npm install @sociallane/widget-footer-links-contact` |
|
|
62
|
+
| form-contact | `@sociallane/widget-form-contact` | `npm install @sociallane/widget-form-contact` |
|
|
63
|
+
| grid-case-studies | `@sociallane/widget-grid-case-studies` | `npm install @sociallane/widget-grid-case-studies` |
|
|
64
|
+
| grid-components | `@sociallane/widget-grid-components` | `npm install @sociallane/widget-grid-components` |
|
|
65
|
+
| grid-posts | `@sociallane/widget-grid-posts` | `npm install @sociallane/widget-grid-posts` |
|
|
66
|
+
| grid-team | `@sociallane/widget-grid-team` | `npm install @sociallane/widget-grid-team` |
|
|
67
|
+
| grid-testimonials | `@sociallane/widget-grid-testimonials` | `npm install @sociallane/widget-grid-testimonials` |
|
|
68
|
+
| hero-announcement | `@sociallane/widget-hero-announcement` | `npm install @sociallane/widget-hero-announcement` |
|
|
69
|
+
| hero-centered-image | `@sociallane/widget-hero-centered-image` | `npm install @sociallane/widget-hero-centered-image` |
|
|
70
|
+
| hero-collage | `@sociallane/widget-hero-collage` | `npm install @sociallane/widget-hero-collage` |
|
|
71
|
+
| hero-overlay | `@sociallane/widget-hero-overlay` | `npm install @sociallane/widget-hero-overlay` |
|
|
72
|
+
| hero-saas | `@sociallane/widget-hero-saas` | `npm install @sociallane/widget-hero-saas` |
|
|
73
|
+
| hero-split | `@sociallane/widget-hero-split` | `npm install @sociallane/widget-hero-split` |
|
|
74
|
+
| hero-stacked-image | `@sociallane/widget-hero-stacked-image` | `npm install @sociallane/widget-hero-stacked-image` |
|
|
75
|
+
| intro-pattern | `@sociallane/widget-intro-pattern` | `npm install @sociallane/widget-intro-pattern` |
|
|
76
|
+
| intro-text | `@sociallane/widget-intro-text` | `npm install @sociallane/widget-intro-text` |
|
|
77
|
+
| logo-grid | `@sociallane/widget-logo-grid` | `npm install @sociallane/widget-logo-grid` |
|
|
78
|
+
| nav-default | `@sociallane/widget-nav-default` | `npm install @sociallane/widget-nav-default` |
|
|
79
|
+
| nav-centered | `@sociallane/widget-nav-centered` | `npm install @sociallane/widget-nav-centered` |
|
|
80
|
+
| nav-minimal | `@sociallane/widget-nav-minimal` | `npm install @sociallane/widget-nav-minimal` |
|
|
81
|
+
| nav-compact | `@sociallane/widget-nav-compact` | `npm install @sociallane/widget-nav-compact` |
|
|
82
|
+
| nav-floating | `@sociallane/widget-nav-floating` | `npm install @sociallane/widget-nav-floating` |
|
|
83
|
+
| newsletter | `@sociallane/widget-newsletter` | `npm install @sociallane/widget-newsletter` |
|
|
84
|
+
| outreach-dashboard | `@sociallane/widget-outreach-dashboard` | `npm install @sociallane/widget-outreach-dashboard` |
|
|
85
|
+
| pipeline-dashboard | `@sociallane/widget-pipeline-dashboard` | `npm install @sociallane/widget-pipeline-dashboard` |
|
|
86
|
+
| pricing-table | `@sociallane/widget-pricing-table` | `npm install @sociallane/widget-pricing-table` |
|
|
87
|
+
| sales-dashboard | `@sociallane/widget-sales-dashboard` | `npm install @sociallane/widget-sales-dashboard` |
|
|
88
|
+
| section-stats | `@sociallane/widget-section-stats` | `npm install @sociallane/widget-section-stats` |
|
|
89
|
+
| services | `@sociallane/widget-services` | `npm install @sociallane/widget-services` |
|
|
90
|
+
| simple-page-hero | `@sociallane/widget-simple-page-hero` | `npm install @sociallane/widget-simple-page-hero` |
|
|
91
|
+
| social-proof | `@sociallane/widget-social-proof` | `npm install @sociallane/widget-social-proof` |
|
|
92
|
+
| testimonial-quote | `@sociallane/widget-testimonial-quote` | `npm install @sociallane/widget-testimonial-quote` |
|
|
93
|
+
|
|
94
|
+
Then add the slug to `widgets.json`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Available widget slugs (by category)
|
|
99
|
+
|
|
100
|
+
| Category | Slugs |
|
|
101
|
+
|----------|-------|
|
|
102
|
+
| Heroes | `hero-split`, `hero-overlay`, `hero-saas`, `hero-collage`, `hero-centered-image`, `hero-stacked-image`, `hero-announcement`, `simple-page-hero` |
|
|
103
|
+
| Content | `content-block`, `intro-text`, `intro-pattern`, `faq`, `feature-list`, `feature-list-cta`, `feature-grid` |
|
|
104
|
+
| Cards & Grids | `card-hover-reveal`, `bento-grid`, `bento-portfolio`, `grid-posts`, `grid-team`, `grid-testimonials`, `grid-case-studies`, `grid-components`, `logo-grid`, `client-logos` |
|
|
105
|
+
| Forms & CTAs | `cta-banner`, `cta-split`, `cta-notify`, `newsletter`, `form-contact`, `pricing-table` |
|
|
106
|
+
| Navigation | `nav-default`, `nav-centered`, `nav-minimal`, `nav-compact`, `nav-floating`, `footer`, `footer-brand`, `footer-links-contact` |
|
|
107
|
+
| Other | `section-stats`, `social-proof`, `services`, `blog-grid`, `outreach-dashboard`, `pipeline-dashboard`, `sales-dashboard`, `testimonial-quote` |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Scripts
|
|
112
|
+
|
|
113
|
+
| Command | Description |
|
|
114
|
+
|---------|-------------|
|
|
115
|
+
| `npm run build` | Build core (Tailwind + animations) |
|
|
116
|
+
| `npm run dev` | Watch build for core |
|
|
117
|
+
| `npm run build:all` | Build all workspaces |
|
|
118
|
+
| `npm run build:core` | Alias for core build |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Workspace packages
|
|
123
|
+
|
|
124
|
+
- **@sociallane/core** — Required. Theme, animations, PHP bootstrap. Tailwind `@source` scans the full plugin root so widget utilities are included in the build.
|
|
125
|
+
- **@sociallane/widget-{slug}** — Optional. One per widget (e.g. `@sociallane/widget-hero-split`).
|
|
126
|
+
|
|
127
|
+
Widget packages are peer-dependent on core; no separate build needed for most widgets. Run `npm run build` from plugin root after install.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Fresh setup
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
cd wp-content/plugins/sociallane-elements
|
|
135
|
+
|
|
136
|
+
# 1. Install dependencies (core + all widget packages)
|
|
137
|
+
npm install
|
|
138
|
+
|
|
139
|
+
# 2. Build core — REQUIRED for styled widgets
|
|
140
|
+
# Tailwind scans packages/widgets/, elements/ for PHP templates
|
|
141
|
+
npm run build
|
|
142
|
+
|
|
143
|
+
# 3. Edit widgets.json with desired slugs
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Reducing widgets
|
|
149
|
+
|
|
150
|
+
1. Edit `widgets.json` — keep only the slugs you want.
|
|
151
|
+
2. Optionally remove widget dirs from `packages/widgets/` (e.g. if using git submodules).
|
|
152
|
+
3. Run `npm run build` to refresh Tailwind output (scans current templates).
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
### Widgets unstyled
|
|
159
|
+
|
|
160
|
+
Run `npm run build`. Tailwind only outputs utility classes it finds when scanning `packages/widgets/` and `elements/`.
|
|
161
|
+
|
|
162
|
+
### Tailwind not loading
|
|
163
|
+
|
|
164
|
+
If Tailwind styles don’t appear, the plugin may be trying to load from the Vite dev server instead of the built files.
|
|
165
|
+
|
|
166
|
+
**Quick fix** — add to `wp-config.php`:
|
|
167
|
+
|
|
168
|
+
```php
|
|
169
|
+
define( 'SOCIALLANE_ELEMENTS_VITE_PRODUCTION', true );
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This forces use of built assets in `packages/core/assets/dist/`.
|
|
173
|
+
|
|
174
|
+
Then ensure the build has run:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npm run build
|
|
178
|
+
```
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Package Installation (npm / Git Submodules)
|
|
2
|
+
|
|
3
|
+
SocialLane Elements uses a modular package layout so you can load only the widgets you need per instance.
|
|
4
|
+
|
|
5
|
+
> **New instance?** See [install-new-instance.md](install-new-instance.md) to clone the plugin into a fresh WordPress site.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
- **packages/core** — Shared Tailwind theme, GSAP animations, PHP traits, and plugin bootstrap. Required.
|
|
10
|
+
- **packages/widgets/{slug}** — One directory per widget (e.g. `hero-split`, `faq`). Each has its own `package.json` and optional assets.
|
|
11
|
+
|
|
12
|
+
## Loading which widgets
|
|
13
|
+
|
|
14
|
+
- **widgets.json** (plugin root) — List of widget slugs to register. If this file exists, only these widgets are loaded.
|
|
15
|
+
- If `widgets.json` is missing, the loader falls back to the Widget Manager enabled list (onboarding/settings).
|
|
16
|
+
|
|
17
|
+
### Package mode (when widgets.json exists)
|
|
18
|
+
|
|
19
|
+
When `widgets.json` is present, the plugin runs in **package mode**. Only the widget components are available:
|
|
20
|
+
|
|
21
|
+
- **Available:** Widget components (Elementor widgets), core assets (Tailwind, GSAP), elements (Button, Image).
|
|
22
|
+
- **Not available:** Onboarding wizard, SocialLane admin settings page, widget preview pages (`/widget-preview/...`), setup widget catalog shortcode. These features are disabled so that NPM/git-submodule installations get components only, with no admin UI or previews.
|
|
23
|
+
|
|
24
|
+
If you need the full admin (widget management, previews, onboarding), remove or rename `widgets.json`; the plugin will then use the Widget Manager and show all admin features.
|
|
25
|
+
|
|
26
|
+
Edit `widgets.json` to include only the widget slugs you want. You can also let the plugin keep it in sync automatically (see below).
|
|
27
|
+
|
|
28
|
+
### Syncing widgets.json with packages/widgets (automated)
|
|
29
|
+
|
|
30
|
+
Adding or removing widget directories is reflected in `widgets.json` automatically:
|
|
31
|
+
|
|
32
|
+
- **On `npm install`** — The postinstall script runs `sync-widgets` then `build`. Any new folder under `packages/widgets/{slug}` with `{slug}.php` is added to `widgets.json`; removed folders are removed from the list. Existing order is preserved; new slugs are appended sorted.
|
|
33
|
+
- **Manual sync** — From the plugin root run:
|
|
34
|
+
```bash
|
|
35
|
+
npm run sync-widgets
|
|
36
|
+
```
|
|
37
|
+
Use this after adding/removing widget packages by hand (e.g. git submodule add/remove) so you don’t have to edit `widgets.json` yourself.
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"widgets": [
|
|
42
|
+
"hero-split",
|
|
43
|
+
"hero-overlay",
|
|
44
|
+
"content-block",
|
|
45
|
+
"faq"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Git submodules (selective widgets)
|
|
51
|
+
|
|
52
|
+
Use submodules so each WordPress instance only has the core package and the widget packages it needs.
|
|
53
|
+
|
|
54
|
+
1. Clone or use the main plugin repo (with `packages/core` and optionally some `packages/widgets/*`).
|
|
55
|
+
|
|
56
|
+
2. To use **only** core and a few widgets via submodules:
|
|
57
|
+
- Ensure `packages/core` is present (required).
|
|
58
|
+
- Add widget packages as submodules only where you need them, e.g.:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
cd wp-content/plugins/sociallane-elements
|
|
62
|
+
|
|
63
|
+
# Core is required (may already be in repo or added as submodule)
|
|
64
|
+
git submodule add <url-to-sociallane-core> packages/core
|
|
65
|
+
|
|
66
|
+
# Add only the widgets you want
|
|
67
|
+
git submodule add <url-to-widget-hero-split> packages/widgets/hero-split
|
|
68
|
+
git submodule add <url-to-widget-faq> packages/widgets/faq
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. Update **widgets.json** so its `widgets` array lists only the slugs you added (e.g. `hero-split`, `faq`).
|
|
72
|
+
|
|
73
|
+
4. Install and build from plugin root (both required for styled widgets):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm install
|
|
77
|
+
npm run build
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Tailwind scans the full plugin root (`packages/widgets/`, `elements/`) for PHP templates and outputs utility classes used in them. Without `npm run build`, widgets render unstyled.
|
|
81
|
+
|
|
82
|
+
5. After clone, init/update submodules:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
git submodule update --init --recursive
|
|
86
|
+
npm install
|
|
87
|
+
npm run build
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## npm workspaces
|
|
91
|
+
|
|
92
|
+
From the plugin root:
|
|
93
|
+
|
|
94
|
+
- `npm install` — Installs core and all widget package dependencies.
|
|
95
|
+
- `npm run build` — **Required.** Builds core (Tailwind + animations). Tailwind `@source` scans the plugin root (`packages/widgets/`, `elements/`) so the output includes utility classes used in widget templates. Skip this and widgets are unstyled.
|
|
96
|
+
- `npm run dev` — Watch build for core.
|
|
97
|
+
- `npm run build:all` — Build all workspaces (core and any widget that defines a build).
|
|
98
|
+
- `npm run reinstall` — Removes `node_modules` and runs `npm install` (and postinstall build). Use when dependencies are broken or you want a clean install.
|
|
99
|
+
- `npm run sync-widgets` — Updates `widgets.json` from `packages/widgets/` (add new slugs, remove missing ones). Runs automatically on postinstall.
|
|
100
|
+
|
|
101
|
+
Widget packages declare a peer dependency on `@sociallane/core`. Most widgets have no custom CSS/JS and rely on core’s build.
|
|
102
|
+
|
|
103
|
+
### Uninstall and reinstall
|
|
104
|
+
|
|
105
|
+
To fully uninstall and reinstall the npm package (e.g. after changing Node version or fixing a bad install):
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cd wp-content/plugins/sociallane-elements
|
|
109
|
+
npm run reinstall
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Or manually: delete `node_modules`, then run `npm install`. On Windows: `rmdir /s /q node_modules` then `npm install`. After install, `postinstall` runs `npm run build` automatically.
|
|
113
|
+
|
|
114
|
+
### Publishing to npm (maintainers)
|
|
115
|
+
|
|
116
|
+
The plugin is published as `@sociallane/elements`. To publish:
|
|
117
|
+
|
|
118
|
+
1. Log in: `npm login` (use an account with access to the `@sociallane` scope).
|
|
119
|
+
2. Bump version if needed: edit `version` in `package.json` or run `npm version patch|minor|major`.
|
|
120
|
+
3. Publish: `npm publish --access public` (required for scoped packages the first time).
|
|
121
|
+
|
|
122
|
+
`.npmignore` excludes `node_modules`, `.git`, and dev files so the tarball contains plugin source and `packages/`. Consumers run `npm install` in the plugin directory after copying to `wp-content/plugins` to install workspaces and trigger the build.
|
|
123
|
+
|
|
124
|
+
## Adding a new widget package
|
|
125
|
+
|
|
126
|
+
1. Add the widget directory under `packages/widgets/{slug}` with `{slug}.php`, `data/`, `templates/`, and `package.json` (see existing widgets).
|
|
127
|
+
2. Add the slug to `widgets.json` if you use it to control which widgets load.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Blog Grid
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Article cards with category tag overlay on the featured image, date (with calendar icon),
|
|
5
|
+
title, excerpt, and read-more link. Centered section header (title + subtitle) and CTA
|
|
6
|
+
button below the grid. Matches the "Laatste Inzichten" / Latest Insights design.
|
|
7
|
+
|
|
8
|
+
## Setup
|
|
9
|
+
- Registered as the `blog-grid` widget in `widgets/blog-grid/blog-grid.php`.
|
|
10
|
+
- Query: posts from WordPress `post` type; configure count, order, categories, offset.
|
|
11
|
+
- Header: heading, heading tag, subtitle (all with show/hide toggles).
|
|
12
|
+
- CTA: button text, URL (with show/hide toggle).
|
|
13
|
+
- Display: image, category tag, date, excerpt, excerpt length, read-more text.
|
|
14
|
+
- Layout: 2, 3, or 4 columns.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
- `sociallane_prepare_button_data()` for CTA button.
|
|
18
|
+
- `sociallane_animation_view_data()` for GSAP animations.
|
|
19
|
+
- Button element at `elements/button/templates/render.php`.
|
|
20
|
+
- Image element at `elements/image/templates/render.php`.
|
|
21
|
+
- Tailwind styles in `assets/css/tailwind.css`.
|
|
22
|
+
|
|
23
|
+
## Critical Knowledge
|
|
24
|
+
- Category tag is overlaid on the image (top-left, oval, dark translucent bg).
|
|
25
|
+
When no featured image is present, the category is shown as a pill above the date.
|
|
26
|
+
- Cards use white background, rounded corners, shadow, and hover shadow.
|
|
27
|
+
- Read-more link uses blue-chill color and right-arrow SVG.
|
|
28
|
+
- CTA button uses light grey background (neutral-200) and chevron icon.
|
|
29
|
+
|
|
30
|
+
## Change Log
|
|
31
|
+
- 2026-02-07: Initial creation (renamed from grid-insights).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Card Hover Reveal
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Repeatable cards in a grid; each card has an image and, on hover, a backdrop-blur bar
|
|
5
|
+
fades up from the bottom with title (name), optional description (role), and optional CTA.
|
|
6
|
+
GSAP animates the bar and content; section and grid use scroll reveal + stagger. Respects `prefers-reduced-motion`.
|
|
7
|
+
|
|
8
|
+
## Setup
|
|
9
|
+
- Registered as the `card-hover-reveal` widget in `widgets/card-hover-reveal/card-hover-reveal.php`.
|
|
10
|
+
- **Cards** (repeater): Per card: image, alt, optional link; show title, title, title tag; show description, description; show CTA, button text/URL/style.
|
|
11
|
+
- **Layout**: Card aspect ratio (16:9, 4:3, 3:2, 1:1, 3:4); columns (2 or 3).
|
|
12
|
+
|
|
13
|
+
## Dependencies
|
|
14
|
+
- `sociallane_prepare_image_data()`, `sociallane_prepare_button_data()` for data normalization.
|
|
15
|
+
- Button element at `elements/button/templates/render.php`.
|
|
16
|
+
- GSAP hover-reveal: `assets/js/utilities/hover-reveal.js` (initialized from `animations.js`).
|
|
17
|
+
- Tailwind: `.card-hover-reveal__bar` initial state in `assets/css/tailwind.css`.
|
|
18
|
+
|
|
19
|
+
## Critical Knowledge
|
|
20
|
+
- **data-sl-hover-reveal**: Root container; `initHoverReveal()` binds mouseenter/mouseleave/focusin/focusout.
|
|
21
|
+
- **data-sl-hover-reveal-bar**: The blur bar; GSAP animates `yPercent: 100 → 0` and `opacity: 0 → 1`.
|
|
22
|
+
- **data-sl-hover-reveal-item**: Children inside the bar; stagger animation (opacity + y).
|
|
23
|
+
- Bar is hidden by default via CSS (`transform: translateY(100%); opacity: 0`) so there is no flash before GSAP runs. When `prefers-reduced-motion: reduce`, bar and content are shown immediately (no animation).
|
|
24
|
+
|
|
25
|
+
## Change Log
|
|
26
|
+
- 2026-02-07: Converted to repeatable cards in a grid; layout (aspect ratio, columns); stagger animation on grid.
|
|
27
|
+
- 2026-02-07: Initial widget: image card with hover-reveal backdrop bar and GSAP animation.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CTA Banner
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Full-width banner with background image and a lower CTA block: dark overlay
|
|
5
|
+
covering roughly the bottom 45–50% of the image, centered headline, description,
|
|
6
|
+
and contact info (phone and email with icons, optional separator). Optional
|
|
7
|
+
primary button. Matches the design with dark slate blue overlay, white text,
|
|
8
|
+
and teal/cyan icons.
|
|
9
|
+
|
|
10
|
+
## Setup
|
|
11
|
+
- Registered as the `cta-banner` widget in `widgets/cta-banner/cta-banner.php`.
|
|
12
|
+
- **Background**: Background image, alt text, minimum section height (50vh–100vh).
|
|
13
|
+
- **Content**: Show/hide headline, headline text, tag (H1–H3), show/hide description, description text.
|
|
14
|
+
- **Contact**: Show/hide phone, phone number, optional custom phone link URL; show/hide email, email address.
|
|
15
|
+
- **Button**: Optional show/hide CTA button, label, URL.
|
|
16
|
+
- **Layout**: CTA block height as percentage of section (40–60%).
|
|
17
|
+
|
|
18
|
+
## Dependencies
|
|
19
|
+
- `sociallane_prepare_image_data()`, `sociallane_prepare_button_data()`, `sociallane_show_field()`, `sociallane_sanitize_text()`, `sociallane_validate_heading_tag()`, `sociallane_animation_view_data()`, `sociallane_section_animation_attrs()` from `includes/helpers.php`.
|
|
20
|
+
- Button element at `elements/button/templates/render.php`.
|
|
21
|
+
- Animation_Controls trait (section reveal only; no headline/stagger).
|
|
22
|
+
- Tailwind: `blue-chill-*` overlay and icon colors in `assets/css/tailwind.css`.
|
|
23
|
+
|
|
24
|
+
## Critical Knowledge
|
|
25
|
+
- Overlay is absolutely positioned at bottom of section; section has explicit `height` (same as `min_height`) so overlay’s percentage height works.
|
|
26
|
+
- Phone link: uses custom URL if set, otherwise `tel:` from the phone number.
|
|
27
|
+
- Email link: `mailto:` from email address.
|
|
28
|
+
- All color/theme classes live in `data/view.php` (`$view['classes']`); template only echoes them (light/dark prepared).
|
|
29
|
+
|
|
30
|
+
## Change Log
|
|
31
|
+
- 2026-02-07: Initial widget: background image, lower CTA block, headline, description, phone/email with icons, optional button.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# CTA Split
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Two-column section: **left** = dark slate panel (~#2E3E4C) with headline, description, and contact (phone | email) with teal icons and text (#34D399). **Right** = full-height image, no overlay, object-cover. Clean split layout; on mobile content stacks (content first, then image).
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
- Registered as the `cta-split` widget in `widgets/cta-split/cta-split.php`.
|
|
8
|
+
- **Content**: Show/hide headline, headline text, headline tag (H1–H3). Show/hide description, description text.
|
|
9
|
+
- **Contact**: Show/hide phone, phone number, optional phone URL; show/hide email, email address. Rendered as phone | email with teal icon + text, left-aligned.
|
|
10
|
+
- **Image**: Right column image with alt text.
|
|
11
|
+
- **Layout**: Minimum section height (40vh–100vh). Desktop: fixed height so image fills column; mobile: auto height.
|
|
12
|
+
|
|
13
|
+
## Dependencies
|
|
14
|
+
- `sociallane_show_field()`, `sociallane_sanitize_text()`, `sociallane_validate_heading_tag()`, `sociallane_prepare_image_data()`, `sociallane_animation_view_data()`, `sociallane_section_animation_attrs()`, `sociallane_headline_animation_attrs()` from `includes/helpers.php`.
|
|
15
|
+
- Animation_Controls trait (section reveal + headline only).
|
|
16
|
+
- Image element at `elements/image/templates/render.php`.
|
|
17
|
+
- Tailwind: `blue-chill-900` for left panel, `emerald-400` for contact/icon.
|
|
18
|
+
|
|
19
|
+
## Critical Knowledge
|
|
20
|
+
- All color/theme classes live in `data/view.php` (`$view['classes']`); template only echoes them.
|
|
21
|
+
- Section uses inline `min-height` and `height` (same value) on desktop so the right column can be `h-full`; `max-lg:!h-auto` overrides height on mobile so the section grows with stacked content.
|
|
22
|
+
- Left column uses `grid-cols-[minmax(0,1.25fr)_minmax(0,1fr)]` so left is ~55%, right ~45%.
|
|
23
|
+
- Contact block: vertical bar `|` separator between phone and email; both use same teal for icon and text.
|
|
24
|
+
|
|
25
|
+
## Change Log
|
|
26
|
+
- 2026-02-07: Initial widget: split layout, dark left panel, headline, description, phone | email (teal), full-height image right.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# FAQ
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Accordion-style FAQ widget with stacked, split, and centered layouts. Supports
|
|
5
|
+
optional section title/description, per-item buttons, and FAQPage JSON-LD schema
|
|
6
|
+
for SEO.
|
|
7
|
+
|
|
8
|
+
## Setup
|
|
9
|
+
- Registered as the `faq` widget in `widgets/faq/faq.php`.
|
|
10
|
+
- Configure items in the repeater: Question, Answer, optional Button Label/Link.
|
|
11
|
+
- Layout options: `stacked`, `split`, `centered`. Split layout supports header
|
|
12
|
+
position (left/right).
|
|
13
|
+
- "First item open by default" opens the first displayed item.
|
|
14
|
+
|
|
15
|
+
## Dependencies
|
|
16
|
+
- `sociallane_prepare_button_data()` for button data normalization.
|
|
17
|
+
- Button element template at `elements/button/templates/render.php`.
|
|
18
|
+
- Tailwind styles in `assets/css/tailwind.css` (FAQ accordion transitions).
|
|
19
|
+
|
|
20
|
+
## Critical Knowledge
|
|
21
|
+
- The accordion partial runs in a shared include scope. Local FAQ class data is
|
|
22
|
+
stored in `$faq_classes` to avoid collisions with the button template’s
|
|
23
|
+
`$classes` variable.
|
|
24
|
+
- In stacked layout, items are split into two columns; the first visible item
|
|
25
|
+
opens when the "first open" toggle is enabled.
|
|
26
|
+
- If a button label is empty, the button is not rendered; links are sanitized
|
|
27
|
+
in the data layer.
|
|
28
|
+
|
|
29
|
+
## Change Log
|
|
30
|
+
- 2026-02-07: Prevented button template variable collision and ensured the first
|
|
31
|
+
displayed item opens when enabled.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Feature List
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Section with one main heading (top-left) and a list of items, each with a teal checkmark icon. Items can be shown in one or two columns. Light background (~#F8F8F8), dark title, lighter body text, emerald checkmarks. Reusable for services, features, or help topics (e.g. “What can we help you with?”).
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
- Registered as the `feature-list` widget in `widgets/feature-list/feature-list.php`.
|
|
8
|
+
- **Content**: Show/hide title, title text, title tag (H1–H3). Repeater for list items (label only).
|
|
9
|
+
- **Layout**: Columns 1 or 2 (2-column layout on large screens with wide gap).
|
|
10
|
+
|
|
11
|
+
## Dependencies
|
|
12
|
+
- `sociallane_animation_view_data()`, `sociallane_section_animation_attrs()`, `sociallane_headline_animation_attrs()`, `sociallane_stagger_attrs()` from `includes/helpers.php`.
|
|
13
|
+
- Animation_Controls trait (section reveal, headline, stagger).
|
|
14
|
+
- Tailwind: `neutral-100`, `zinc-*`, `emerald-500` for section, text, and icon; `max-w-7xl` container.
|
|
15
|
+
|
|
16
|
+
## Critical Knowledge
|
|
17
|
+
- All color/theme classes live in `data/view.php` (`$view['classes']`); template only echoes them.
|
|
18
|
+
- Section is `aria-labelledby` when title is shown; list is semantic `<ul>` with list-style removed.
|
|
19
|
+
|
|
20
|
+
## Change Log
|
|
21
|
+
- 2026-02-07: Initial widget: heading, repeater items, teal checkmarks, 1/2 columns, headline + stagger animation.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Footer Links & Contact
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Reusable dark footer: logo column (text + optional subtitle + dot, or image), link columns from a WordPress menu, contact column (address, phone, email with icons), and bottom bar (optional social link — LinkedIn/Twitter/Instagram — copyright, footer links repeater). Content constrained to container width (max-w-7xl). No client-specific naming or defaults.
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
- Registered as the `footer-links-contact` widget in `widgets/footer-links-contact/footer-links-contact.php`.
|
|
8
|
+
- **Logo**: Text (main + optional subtitle + optional dot) or image; logo link URL. Default text: "Lorem".
|
|
9
|
+
- **Link columns**: One WordPress menu; top-level items = column headings, children = links.
|
|
10
|
+
- **Contact**: Heading, address line 1 & 2, phone, email (placeholders only; no client copy).
|
|
11
|
+
- **Bottom bar**: Show social (icon: LinkedIn, Twitter, or Instagram; URL), copyright text, repeater "Footer Links" (label + URL). Default links: "Privacy Policy", "Terms of Use". Default copyright: "© 2026 Lorem ipsum. All rights reserved."
|
|
12
|
+
|
|
13
|
+
## Dependencies
|
|
14
|
+
- `sociallane_footer_menu_to_columns()` from `includes/footer-menu-columns.php`.
|
|
15
|
+
- `sociallane_animation_view_data()`, `sociallane_section_animation_attrs()` from `includes/helpers.php`.
|
|
16
|
+
- Animation_Controls trait (section reveal only).
|
|
17
|
+
|
|
18
|
+
## Critical Knowledge
|
|
19
|
+
- All color/theme classes live in `data/view.php` (`$view['classes']`); templates only echo them (light/dark prepared).
|
|
20
|
+
- Grid: logo column wider (1.5fr), then link columns (1fr each), then contact (1fr).
|
|
21
|
+
- Bottom bar: social icon is configurable (LinkedIn, Twitter, Instagram); "Footer Links" repeater is generic (privacy, terms, or any links).
|
|
22
|
+
|
|
23
|
+
## Change Log
|
|
24
|
+
- 2026-02-07: Renamed from footer-legal to footer-links-contact; generic naming, placeholder defaults, bottom_links repeater, optional social icon (LinkedIn/Twitter/Instagram).
|
|
File without changes
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Element: Button
|
|
4
|
+
*
|
|
5
|
+
* A reusable button element with multiple variants and sizes.
|
|
6
|
+
* Available as standalone Elementor widget AND as includable template.
|
|
7
|
+
*
|
|
8
|
+
* @package SocialLane_Elements
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
namespace SocialLane\Elements;
|
|
12
|
+
|
|
13
|
+
use Elementor\Widget_Base;
|
|
14
|
+
use Elementor\Controls_Manager;
|
|
15
|
+
|
|
16
|
+
if ( ! defined( 'ABSPATH' ) ) {
|
|
17
|
+
exit;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Button Element
|
|
22
|
+
*/
|
|
23
|
+
class Button extends Widget_Base {
|
|
24
|
+
|
|
25
|
+
public function get_name(): string {
|
|
26
|
+
return 'button';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public function get_title(): string {
|
|
30
|
+
return esc_html__( 'Button', 'sociallane-elements' );
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public function get_icon(): string {
|
|
34
|
+
return 'eicon-button';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public function get_categories(): array {
|
|
38
|
+
return [ 'sociallane-elements' ];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public function get_keywords(): array {
|
|
42
|
+
return [ 'button', 'link', 'cta', 'action' ];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
protected function register_controls(): void {
|
|
46
|
+
$this->start_controls_section(
|
|
47
|
+
'section_button',
|
|
48
|
+
[
|
|
49
|
+
'label' => esc_html__( 'Button', 'sociallane-elements' ),
|
|
50
|
+
]
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
$this->add_control(
|
|
54
|
+
'text',
|
|
55
|
+
[
|
|
56
|
+
'label' => esc_html__( 'Text', 'sociallane-elements' ),
|
|
57
|
+
'type' => Controls_Manager::TEXT,
|
|
58
|
+
'default' => esc_html__( 'Click Here', 'sociallane-elements' ),
|
|
59
|
+
]
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
$this->add_control(
|
|
63
|
+
'url',
|
|
64
|
+
[
|
|
65
|
+
'label' => esc_html__( 'URL', 'sociallane-elements' ),
|
|
66
|
+
'type' => Controls_Manager::URL,
|
|
67
|
+
]
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
$this->add_control(
|
|
71
|
+
'variant',
|
|
72
|
+
[
|
|
73
|
+
'label' => esc_html__( 'Style', 'sociallane-elements' ),
|
|
74
|
+
'type' => Controls_Manager::SELECT,
|
|
75
|
+
'default' => 'primary',
|
|
76
|
+
'options' => [
|
|
77
|
+
'primary' => esc_html__( 'Primary', 'sociallane-elements' ),
|
|
78
|
+
'secondary' => esc_html__( 'Secondary', 'sociallane-elements' ),
|
|
79
|
+
'ghost' => esc_html__( 'Ghost', 'sociallane-elements' ),
|
|
80
|
+
'outline' => esc_html__( 'Outline', 'sociallane-elements' ),
|
|
81
|
+
],
|
|
82
|
+
]
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
$this->add_control(
|
|
86
|
+
'color',
|
|
87
|
+
[
|
|
88
|
+
'label' => esc_html__( 'Color', 'sociallane-elements' ),
|
|
89
|
+
'type' => Controls_Manager::SELECT,
|
|
90
|
+
'default' => 'default',
|
|
91
|
+
'options' => function_exists( 'sociallane_get_button_color_options' ) ? sociallane_get_button_color_options() : [ 'default' => esc_html__( 'Default (brand)', 'sociallane-elements' ) ],
|
|
92
|
+
'description' => esc_html__( 'Same style, different accent.', 'sociallane-elements' ),
|
|
93
|
+
]
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
$this->add_control(
|
|
97
|
+
'size',
|
|
98
|
+
[
|
|
99
|
+
'label' => esc_html__( 'Size', 'sociallane-elements' ),
|
|
100
|
+
'type' => Controls_Manager::SELECT,
|
|
101
|
+
'default' => 'md',
|
|
102
|
+
'options' => [
|
|
103
|
+
'sm' => esc_html__( 'Small', 'sociallane-elements' ),
|
|
104
|
+
'md' => esc_html__( 'Medium', 'sociallane-elements' ),
|
|
105
|
+
'lg' => esc_html__( 'Large', 'sociallane-elements' ),
|
|
106
|
+
],
|
|
107
|
+
]
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
$this->add_control(
|
|
111
|
+
'icon',
|
|
112
|
+
[
|
|
113
|
+
'label' => esc_html__( 'Icon', 'sociallane-elements' ),
|
|
114
|
+
'type' => Controls_Manager::ICONS,
|
|
115
|
+
]
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
$this->add_control(
|
|
119
|
+
'icon_position',
|
|
120
|
+
[
|
|
121
|
+
'label' => esc_html__( 'Icon Position', 'sociallane-elements' ),
|
|
122
|
+
'type' => Controls_Manager::SELECT,
|
|
123
|
+
'default' => 'right',
|
|
124
|
+
'options' => [
|
|
125
|
+
'left' => esc_html__( 'Left', 'sociallane-elements' ),
|
|
126
|
+
'right' => esc_html__( 'Right', 'sociallane-elements' ),
|
|
127
|
+
],
|
|
128
|
+
]
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
$this->end_controls_section();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
protected function render(): void {
|
|
135
|
+
$settings = $this->get_settings_for_display();
|
|
136
|
+
|
|
137
|
+
$url_data = $settings['url'] ?? [];
|
|
138
|
+
$button = [
|
|
139
|
+
'text' => esc_html( $settings['text'] ?? '' ),
|
|
140
|
+
'url' => esc_url( $url_data['url'] ?? '#' ),
|
|
141
|
+
'variant' => $settings['variant'] ?? 'primary',
|
|
142
|
+
'size' => $settings['size'] ?? 'md',
|
|
143
|
+
'color' => $settings['color'] ?? 'default',
|
|
144
|
+
'icon' => $settings['icon'] ?? null,
|
|
145
|
+
'icon_position' => $settings['icon_position'] ?? 'right',
|
|
146
|
+
'attrs' => '',
|
|
147
|
+
];
|
|
148
|
+
|
|
149
|
+
$attrs = [];
|
|
150
|
+
if ( ! empty( $url_data['is_external'] ) ) {
|
|
151
|
+
$attrs[] = 'target="_blank"';
|
|
152
|
+
$attrs[] = 'rel="noopener noreferrer"';
|
|
153
|
+
}
|
|
154
|
+
if ( ! empty( $url_data['nofollow'] ) ) {
|
|
155
|
+
$attrs[] = 'rel="nofollow"';
|
|
156
|
+
}
|
|
157
|
+
$button['attrs'] = implode( ' ', $attrs );
|
|
158
|
+
|
|
159
|
+
include __DIR__ . '/templates/render.php';
|
|
160
|
+
}
|
|
161
|
+
}
|