@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.
Files changed (767) hide show
  1. package/.prettierignore +5 -0
  2. package/.prettierrc.json +8 -0
  3. package/.vite-dev +0 -0
  4. package/README.md +47 -0
  5. package/admin/js/widget-browser.js +124 -0
  6. package/admin/views/onboarding.php +62 -0
  7. package/admin/views/partials/category-tabs.php +39 -0
  8. package/admin/views/partials/step-complete.php +48 -0
  9. package/admin/views/partials/step-requirements.php +52 -0
  10. package/admin/views/partials/step-widgets.php +63 -0
  11. package/admin/views/partials/widget-card.php +67 -0
  12. package/admin/views/partials/widget-toolbar.php +28 -0
  13. package/admin/views/preview-embed.php +78 -0
  14. package/admin/views/preview-frame.php +183 -0
  15. package/admin/views/preview-index.php +74 -0
  16. package/admin/views/settings.php +94 -0
  17. package/admin/views/setup-widget-catalog-frontend.php +189 -0
  18. package/admin/views/setup-widget-catalog.php +164 -0
  19. package/assets/css/lenis.css +18 -0
  20. package/assets/css/tailwind.css +740 -0
  21. package/assets/dist/.vite/manifest.json +13 -0
  22. package/assets/dist/animations-BySooxN8.js +37 -0
  23. package/assets/dist/tailwind-DzIAfumJ.css +1 -0
  24. package/assets/js/animations.js +113 -0
  25. package/assets/js/utilities/hover-reveal.js +88 -0
  26. package/assets/js/utilities/pin.js +31 -0
  27. package/assets/js/utilities/reveal.js +59 -0
  28. package/assets/js/utilities/split-text.js +93 -0
  29. package/assets/js/utilities/stagger.js +48 -0
  30. package/assets/previews/.gitkeep +2 -0
  31. package/assets/previews/README.md +65 -0
  32. package/assets/svgs/components/accordion.svg +9 -0
  33. package/assets/svgs/components/alert.svg +6 -0
  34. package/assets/svgs/components/avatar.svg +4 -0
  35. package/assets/svgs/components/badge.svg +4 -0
  36. package/assets/svgs/components/breadcrumbs.svg +7 -0
  37. package/assets/svgs/components/button.svg +4 -0
  38. package/assets/svgs/components/calendar.svg +10 -0
  39. package/assets/svgs/components/card.svg +5 -0
  40. package/assets/svgs/widgets/bento-grid.svg +8 -0
  41. package/assets/svgs/widgets/bento-portfolio.svg +8 -0
  42. package/assets/svgs/widgets/content-block.svg +4 -0
  43. package/assets/svgs/widgets/faq.svg +11 -0
  44. package/assets/svgs/widgets/feature-grid.svg +14 -0
  45. package/assets/svgs/widgets/feature-list-cta.svg +10 -0
  46. package/assets/svgs/widgets/footer.svg +7 -0
  47. package/assets/svgs/widgets/grid-posts.svg +11 -0
  48. package/assets/svgs/widgets/grid-team.svg +8 -0
  49. package/assets/svgs/widgets/hero.svg +7 -0
  50. package/assets/svgs/widgets/intro-text.svg +3 -0
  51. package/assets/svgs/widgets/logo-grid.svg +12 -0
  52. package/assets/svgs/widgets/navigation.svg +10 -0
  53. package/assets/svgs/widgets/newsletter.svg +6 -0
  54. package/assets/svgs/widgets/pricing-table.svg +9 -0
  55. package/assets/svgs/widgets/social-proof.svg +7 -0
  56. package/docs/cursor-global-rule.md +24 -0
  57. package/docs/install-new-instance.md +92 -0
  58. package/docs/npm-widget-cheatsheet.md +178 -0
  59. package/docs/package-installation.md +127 -0
  60. package/docs/widgets/blog-grid.md +31 -0
  61. package/docs/widgets/card-hover-reveal.md +27 -0
  62. package/docs/widgets/cta-banner.md +31 -0
  63. package/docs/widgets/cta-split.md +26 -0
  64. package/docs/widgets/faq.md +31 -0
  65. package/docs/widgets/feature-list.md +21 -0
  66. package/docs/widgets/footer-links-contact.md +24 -0
  67. package/elements/.gitkeep +0 -0
  68. package/elements/button/button.php +161 -0
  69. package/elements/button/templates/render.php +89 -0
  70. package/elements/cta-group/templates/render.php +61 -0
  71. package/elements/image/image.php +113 -0
  72. package/elements/image/templates/render.php +43 -0
  73. package/elements/section-header/templates/render.php +103 -0
  74. package/includes/button-presets.php +71 -0
  75. package/includes/class-admin-settings.php +134 -0
  76. package/includes/class-disable-reset-css.php +78 -0
  77. package/includes/class-gravity-forms-styles.php +78 -0
  78. package/includes/class-onboarding.php +214 -0
  79. package/includes/class-setup-widget-catalog.php +37 -0
  80. package/includes/class-widget-manager.php +605 -0
  81. package/includes/class-widget-preview.php +101 -0
  82. package/includes/footer-menu-columns.php +85 -0
  83. package/includes/widget-preview-defaults.php +660 -0
  84. package/package.json +38 -0
  85. package/packages/core/assets/css/lenis.css +18 -0
  86. package/packages/core/assets/css/tailwind.css +704 -0
  87. package/packages/core/assets/dist/.vite/manifest.json +13 -0
  88. package/packages/core/assets/dist/animations-BySooxN8.js +37 -0
  89. package/packages/core/assets/dist/tailwind-BE97TLZW.css +1 -0
  90. package/packages/core/assets/js/animations.js +113 -0
  91. package/packages/core/assets/js/utilities/hover-reveal.js +88 -0
  92. package/packages/core/assets/js/utilities/pin.js +31 -0
  93. package/packages/core/assets/js/utilities/reveal.js +56 -0
  94. package/packages/core/assets/js/utilities/split-text.js +74 -0
  95. package/packages/core/assets/js/utilities/stagger.js +46 -0
  96. package/packages/core/includes/class-plugin.php +75 -0
  97. package/packages/core/includes/class-vite-assets.php +357 -0
  98. package/packages/core/includes/class-widgets-loader.php +195 -0
  99. package/packages/core/includes/helpers.php +407 -0
  100. package/packages/core/includes/traits/trait-animation-controls.php +194 -0
  101. package/packages/core/includes/traits/trait-common-controls.php +239 -0
  102. package/packages/core/package.json +25 -0
  103. package/packages/core/vite.config.js +123 -0
  104. package/packages/widgets/bento-grid/bento-grid.php +761 -0
  105. package/packages/widgets/bento-grid/data/view.php +327 -0
  106. package/packages/widgets/bento-grid/package.json +12 -0
  107. package/packages/widgets/bento-grid/templates/partials/cell1.php +45 -0
  108. package/packages/widgets/bento-grid/templates/partials/cell2.php +52 -0
  109. package/packages/widgets/bento-grid/templates/partials/cell3.php +45 -0
  110. package/packages/widgets/bento-grid/templates/partials/cell4.php +44 -0
  111. package/packages/widgets/bento-grid/templates/partials/default-grid.php +31 -0
  112. package/packages/widgets/bento-grid/templates/partials/tcsr-row1-left.php +68 -0
  113. package/packages/widgets/bento-grid/templates/partials/tcsr-row1-right.php +65 -0
  114. package/packages/widgets/bento-grid/templates/partials/tcsr-row2-center.php +41 -0
  115. package/packages/widgets/bento-grid/templates/partials/tcsr-row2-left.php +38 -0
  116. package/packages/widgets/bento-grid/templates/partials/tcsr-row2-right.php +38 -0
  117. package/packages/widgets/bento-grid/templates/partials/two-column-second-row-grid.php +35 -0
  118. package/packages/widgets/bento-grid/templates/partials/two-row-deploys.php +47 -0
  119. package/packages/widgets/bento-grid/templates/partials/two-row-grid.php +34 -0
  120. package/packages/widgets/bento-grid/templates/partials/two-row-integrations.php +40 -0
  121. package/packages/widgets/bento-grid/templates/partials/two-row-overview.php +67 -0
  122. package/packages/widgets/bento-grid/templates/partials/two-row-releases.php +29 -0
  123. package/packages/widgets/bento-grid/templates/partials/two-row-security.php +44 -0
  124. package/packages/widgets/bento-grid/templates/wrapper.php +72 -0
  125. package/packages/widgets/bento-grid-4/bento-grid-4.php +524 -0
  126. package/packages/widgets/bento-grid-4/data/view.php +127 -0
  127. package/packages/widgets/bento-grid-4/package.json +12 -0
  128. package/packages/widgets/bento-grid-4/templates/partials/cell1.php +45 -0
  129. package/packages/widgets/bento-grid-4/templates/partials/cell2.php +52 -0
  130. package/packages/widgets/bento-grid-4/templates/partials/cell3.php +45 -0
  131. package/packages/widgets/bento-grid-4/templates/partials/cell4.php +44 -0
  132. package/packages/widgets/bento-grid-4/templates/partials/default-grid.php +31 -0
  133. package/packages/widgets/bento-grid-4/templates/partials/tcsr-row1-left.php +68 -0
  134. package/packages/widgets/bento-grid-4/templates/partials/tcsr-row1-right.php +65 -0
  135. package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-center.php +41 -0
  136. package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-left.php +38 -0
  137. package/packages/widgets/bento-grid-4/templates/partials/tcsr-row2-right.php +38 -0
  138. package/packages/widgets/bento-grid-4/templates/partials/two-column-second-row-grid.php +35 -0
  139. package/packages/widgets/bento-grid-4/templates/partials/two-row-deploys.php +47 -0
  140. package/packages/widgets/bento-grid-4/templates/partials/two-row-grid.php +34 -0
  141. package/packages/widgets/bento-grid-4/templates/partials/two-row-integrations.php +40 -0
  142. package/packages/widgets/bento-grid-4/templates/partials/two-row-overview.php +67 -0
  143. package/packages/widgets/bento-grid-4/templates/partials/two-row-releases.php +29 -0
  144. package/packages/widgets/bento-grid-4/templates/partials/two-row-security.php +44 -0
  145. package/packages/widgets/bento-grid-4/templates/wrapper.php +65 -0
  146. package/packages/widgets/bento-grid-5/bento-grid-5.php +219 -0
  147. package/packages/widgets/bento-grid-5/data/view.php +136 -0
  148. package/packages/widgets/bento-grid-5/package.json +12 -0
  149. package/packages/widgets/bento-grid-5/templates/partials/cell1.php +45 -0
  150. package/packages/widgets/bento-grid-5/templates/partials/cell2.php +52 -0
  151. package/packages/widgets/bento-grid-5/templates/partials/cell3.php +45 -0
  152. package/packages/widgets/bento-grid-5/templates/partials/cell4.php +44 -0
  153. package/packages/widgets/bento-grid-5/templates/partials/default-grid.php +31 -0
  154. package/packages/widgets/bento-grid-5/templates/partials/tcsr-row1-left.php +68 -0
  155. package/packages/widgets/bento-grid-5/templates/partials/tcsr-row1-right.php +65 -0
  156. package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-center.php +41 -0
  157. package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-left.php +38 -0
  158. package/packages/widgets/bento-grid-5/templates/partials/tcsr-row2-right.php +38 -0
  159. package/packages/widgets/bento-grid-5/templates/partials/two-column-second-row-grid.php +35 -0
  160. package/packages/widgets/bento-grid-5/templates/partials/two-row-deploys.php +47 -0
  161. package/packages/widgets/bento-grid-5/templates/partials/two-row-grid.php +34 -0
  162. package/packages/widgets/bento-grid-5/templates/partials/two-row-integrations.php +40 -0
  163. package/packages/widgets/bento-grid-5/templates/partials/two-row-overview.php +67 -0
  164. package/packages/widgets/bento-grid-5/templates/partials/two-row-releases.php +29 -0
  165. package/packages/widgets/bento-grid-5/templates/partials/two-row-security.php +44 -0
  166. package/packages/widgets/bento-grid-5/templates/wrapper.php +65 -0
  167. package/packages/widgets/bento-grid-6/bento-grid-6.php +223 -0
  168. package/packages/widgets/bento-grid-6/data/view.php +158 -0
  169. package/packages/widgets/bento-grid-6/package.json +12 -0
  170. package/packages/widgets/bento-grid-6/templates/partials/cell1.php +45 -0
  171. package/packages/widgets/bento-grid-6/templates/partials/cell2.php +52 -0
  172. package/packages/widgets/bento-grid-6/templates/partials/cell3.php +45 -0
  173. package/packages/widgets/bento-grid-6/templates/partials/cell4.php +44 -0
  174. package/packages/widgets/bento-grid-6/templates/partials/default-grid.php +31 -0
  175. package/packages/widgets/bento-grid-6/templates/partials/tcsr-row1-left.php +68 -0
  176. package/packages/widgets/bento-grid-6/templates/partials/tcsr-row1-right.php +65 -0
  177. package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-center.php +41 -0
  178. package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-left.php +38 -0
  179. package/packages/widgets/bento-grid-6/templates/partials/tcsr-row2-right.php +38 -0
  180. package/packages/widgets/bento-grid-6/templates/partials/two-column-second-row-grid.php +35 -0
  181. package/packages/widgets/bento-grid-6/templates/partials/two-row-deploys.php +47 -0
  182. package/packages/widgets/bento-grid-6/templates/partials/two-row-grid.php +34 -0
  183. package/packages/widgets/bento-grid-6/templates/partials/two-row-integrations.php +40 -0
  184. package/packages/widgets/bento-grid-6/templates/partials/two-row-overview.php +67 -0
  185. package/packages/widgets/bento-grid-6/templates/partials/two-row-releases.php +29 -0
  186. package/packages/widgets/bento-grid-6/templates/partials/two-row-security.php +44 -0
  187. package/packages/widgets/bento-grid-6/templates/wrapper.php +65 -0
  188. package/packages/widgets/bento-portfolio/bento-portfolio.php +399 -0
  189. package/packages/widgets/bento-portfolio/data/view.php +102 -0
  190. package/packages/widgets/bento-portfolio/package.json +12 -0
  191. package/packages/widgets/bento-portfolio/templates/partials/portfolio-card.php +84 -0
  192. package/packages/widgets/bento-portfolio/templates/partials/portfolio-default-grid.php +35 -0
  193. package/packages/widgets/bento-portfolio/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
  194. package/packages/widgets/bento-portfolio/templates/partials/portfolio-two-row-grid.php +35 -0
  195. package/packages/widgets/bento-portfolio/templates/wrapper.php +88 -0
  196. package/packages/widgets/bento-portfolio-4/bento-portfolio-4.php +382 -0
  197. package/packages/widgets/bento-portfolio-4/data/view.php +91 -0
  198. package/packages/widgets/bento-portfolio-4/package.json +12 -0
  199. package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-card.php +84 -0
  200. package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-default-grid.php +35 -0
  201. package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
  202. package/packages/widgets/bento-portfolio-4/templates/partials/portfolio-two-row-grid.php +35 -0
  203. package/packages/widgets/bento-portfolio-4/templates/wrapper.php +78 -0
  204. package/packages/widgets/bento-portfolio-5/bento-portfolio-5.php +382 -0
  205. package/packages/widgets/bento-portfolio-5/data/view.php +91 -0
  206. package/packages/widgets/bento-portfolio-5/package.json +12 -0
  207. package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-card.php +84 -0
  208. package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-default-grid.php +35 -0
  209. package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
  210. package/packages/widgets/bento-portfolio-5/templates/partials/portfolio-two-row-grid.php +35 -0
  211. package/packages/widgets/bento-portfolio-5/templates/wrapper.php +78 -0
  212. package/packages/widgets/bento-portfolio-6/bento-portfolio-6.php +382 -0
  213. package/packages/widgets/bento-portfolio-6/data/view.php +91 -0
  214. package/packages/widgets/bento-portfolio-6/package.json +12 -0
  215. package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-card.php +84 -0
  216. package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-default-grid.php +35 -0
  217. package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
  218. package/packages/widgets/bento-portfolio-6/templates/partials/portfolio-two-row-grid.php +35 -0
  219. package/packages/widgets/bento-portfolio-6/templates/wrapper.php +78 -0
  220. package/packages/widgets/blog-grid/blog-grid.php +359 -0
  221. package/packages/widgets/blog-grid/data/view.php +192 -0
  222. package/packages/widgets/blog-grid/package.json +12 -0
  223. package/packages/widgets/blog-grid/templates/partials/card.php +73 -0
  224. package/packages/widgets/blog-grid/templates/wrapper.php +89 -0
  225. package/packages/widgets/card-hover-reveal/card-hover-reveal.php +329 -0
  226. package/packages/widgets/card-hover-reveal/data/view.php +108 -0
  227. package/packages/widgets/card-hover-reveal/package.json +12 -0
  228. package/packages/widgets/card-hover-reveal/templates/partials/card.php +86 -0
  229. package/packages/widgets/card-hover-reveal/templates/wrapper.php +80 -0
  230. package/packages/widgets/client-logos/client-logos.php +214 -0
  231. package/packages/widgets/client-logos/data/view.php +88 -0
  232. package/packages/widgets/client-logos/package.json +12 -0
  233. package/packages/widgets/client-logos/templates/partials/client-item.php +38 -0
  234. package/packages/widgets/client-logos/templates/wrapper.php +62 -0
  235. package/packages/widgets/content-block/content-block.php +280 -0
  236. package/packages/widgets/content-block/data/view.php +103 -0
  237. package/packages/widgets/content-block/package.json +12 -0
  238. package/packages/widgets/content-block/templates/partials/content.php +52 -0
  239. package/packages/widgets/content-block/templates/wrapper.php +73 -0
  240. package/packages/widgets/cta-banner/cta-banner.php +300 -0
  241. package/packages/widgets/cta-banner/data/view.php +96 -0
  242. package/packages/widgets/cta-banner/package.json +12 -0
  243. package/packages/widgets/cta-banner/templates/wrapper.php +131 -0
  244. package/packages/widgets/cta-notify/cta-notify.php +135 -0
  245. package/packages/widgets/cta-notify/data/view.php +48 -0
  246. package/packages/widgets/cta-notify/package.json +12 -0
  247. package/packages/widgets/cta-notify/templates/wrapper.php +69 -0
  248. package/packages/widgets/cta-split/cta-split.php +246 -0
  249. package/packages/widgets/cta-split/data/view.php +84 -0
  250. package/packages/widgets/cta-split/package.json +12 -0
  251. package/packages/widgets/cta-split/templates/wrapper.php +113 -0
  252. package/packages/widgets/faq-centered/data/view.php +87 -0
  253. package/packages/widgets/faq-centered/faq-centered.php +223 -0
  254. package/packages/widgets/faq-centered/package.json +12 -0
  255. package/packages/widgets/faq-centered/templates/partials/accordion.php +70 -0
  256. package/packages/widgets/faq-centered/templates/partials/layout-centered.php +41 -0
  257. package/packages/widgets/faq-centered/templates/partials/layout-split.php +47 -0
  258. package/packages/widgets/faq-centered/templates/partials/layout-stacked.php +57 -0
  259. package/packages/widgets/faq-centered/templates/wrapper.php +70 -0
  260. package/packages/widgets/faq-split/data/view.php +93 -0
  261. package/packages/widgets/faq-split/faq-split.php +236 -0
  262. package/packages/widgets/faq-split/package.json +12 -0
  263. package/packages/widgets/faq-split/templates/partials/accordion.php +70 -0
  264. package/packages/widgets/faq-split/templates/partials/layout-centered.php +41 -0
  265. package/packages/widgets/faq-split/templates/partials/layout-split.php +47 -0
  266. package/packages/widgets/faq-split/templates/partials/layout-stacked.php +57 -0
  267. package/packages/widgets/faq-split/templates/wrapper.php +70 -0
  268. package/packages/widgets/faq-stacked/data/view.php +92 -0
  269. package/packages/widgets/faq-stacked/faq-stacked.php +223 -0
  270. package/packages/widgets/faq-stacked/package.json +12 -0
  271. package/packages/widgets/faq-stacked/templates/partials/accordion.php +70 -0
  272. package/packages/widgets/faq-stacked/templates/partials/layout-centered.php +41 -0
  273. package/packages/widgets/faq-stacked/templates/partials/layout-split.php +47 -0
  274. package/packages/widgets/faq-stacked/templates/partials/layout-stacked.php +57 -0
  275. package/packages/widgets/faq-stacked/templates/wrapper.php +70 -0
  276. package/packages/widgets/feature-grid/data/view.php +80 -0
  277. package/packages/widgets/feature-grid/feature-grid.php +305 -0
  278. package/packages/widgets/feature-grid/package.json +12 -0
  279. package/packages/widgets/feature-grid/templates/partials/centered-2x2.php +69 -0
  280. package/packages/widgets/feature-grid/templates/partials/feature-item.php +54 -0
  281. package/packages/widgets/feature-grid/templates/wrapper.php +67 -0
  282. package/packages/widgets/feature-grid-centered/data/view.php +78 -0
  283. package/packages/widgets/feature-grid-centered/feature-grid-centered.php +278 -0
  284. package/packages/widgets/feature-grid-centered/package.json +12 -0
  285. package/packages/widgets/feature-grid-centered/templates/partials/centered-2x2.php +69 -0
  286. package/packages/widgets/feature-grid-centered/templates/partials/feature-item.php +54 -0
  287. package/packages/widgets/feature-grid-centered/templates/wrapper.php +35 -0
  288. package/packages/widgets/feature-list/data/view.php +49 -0
  289. package/packages/widgets/feature-list/feature-list.php +160 -0
  290. package/packages/widgets/feature-list/package.json +12 -0
  291. package/packages/widgets/feature-list/templates/wrapper.php +69 -0
  292. package/packages/widgets/feature-list-cta/data/view.php +62 -0
  293. package/packages/widgets/feature-list-cta/feature-list-cta.php +226 -0
  294. package/packages/widgets/feature-list-cta/package.json +12 -0
  295. package/packages/widgets/feature-list-cta/templates/partials/feature-item.php +49 -0
  296. package/packages/widgets/feature-list-cta/templates/wrapper.php +65 -0
  297. package/packages/widgets/footer/data/view.php +133 -0
  298. package/packages/widgets/footer/footer.php +389 -0
  299. package/packages/widgets/footer/package.json +12 -0
  300. package/packages/widgets/footer/templates/partials/bottom.php +77 -0
  301. package/packages/widgets/footer/templates/partials/cta.php +47 -0
  302. package/packages/widgets/footer/templates/partials/link-columns.php +52 -0
  303. package/packages/widgets/footer/templates/wrapper.php +53 -0
  304. package/packages/widgets/footer-brand/data/view.php +130 -0
  305. package/packages/widgets/footer-brand/footer-brand.php +278 -0
  306. package/packages/widgets/footer-brand/package.json +12 -0
  307. package/packages/widgets/footer-brand/templates/partials/brand.php +69 -0
  308. package/packages/widgets/footer-brand/templates/partials/link-columns.php +51 -0
  309. package/packages/widgets/footer-brand/templates/wrapper.php +59 -0
  310. package/packages/widgets/footer-links-contact/data/view.php +145 -0
  311. package/packages/widgets/footer-links-contact/footer-links-contact.php +361 -0
  312. package/packages/widgets/footer-links-contact/package.json +12 -0
  313. package/packages/widgets/footer-links-contact/templates/partials/bottom.php +70 -0
  314. package/packages/widgets/footer-links-contact/templates/partials/contact-column.php +66 -0
  315. package/packages/widgets/footer-links-contact/templates/partials/link-column.php +39 -0
  316. package/packages/widgets/footer-links-contact/templates/partials/logo-column.php +46 -0
  317. package/packages/widgets/footer-links-contact/templates/wrapper.php +68 -0
  318. package/packages/widgets/form-contact/data/view.php +96 -0
  319. package/packages/widgets/form-contact/form-contact.php +274 -0
  320. package/packages/widgets/form-contact/package.json +12 -0
  321. package/packages/widgets/form-contact/templates/partials/testimonial.php +83 -0
  322. package/packages/widgets/form-contact/templates/wrapper.php +98 -0
  323. package/packages/widgets/grid-case-studies/data/view.php +74 -0
  324. package/packages/widgets/grid-case-studies/grid-case-studies.php +262 -0
  325. package/packages/widgets/grid-case-studies/package.json +12 -0
  326. package/packages/widgets/grid-case-studies/templates/partials/card.php +66 -0
  327. package/packages/widgets/grid-case-studies/templates/wrapper.php +69 -0
  328. package/packages/widgets/grid-components/data/view.php +107 -0
  329. package/packages/widgets/grid-components/grid-components.php +323 -0
  330. package/packages/widgets/grid-components/package.json +12 -0
  331. package/packages/widgets/grid-components/templates/partials/component-card.php +81 -0
  332. package/packages/widgets/grid-components/templates/wrapper.php +55 -0
  333. package/packages/widgets/grid-team/data/view.php +67 -0
  334. package/packages/widgets/grid-team/grid-team.php +201 -0
  335. package/packages/widgets/grid-team/package.json +12 -0
  336. package/packages/widgets/grid-team/templates/partials/team-card.php +52 -0
  337. package/packages/widgets/grid-team/templates/wrapper.php +67 -0
  338. package/packages/widgets/hero-announcement/data/view.php +96 -0
  339. package/packages/widgets/hero-announcement/hero-announcement.php +270 -0
  340. package/packages/widgets/hero-announcement/package.json +12 -0
  341. package/packages/widgets/hero-announcement/templates/wrapper.php +111 -0
  342. package/packages/widgets/hero-centered-image/data/view.php +119 -0
  343. package/packages/widgets/hero-centered-image/hero-centered-image.php +297 -0
  344. package/packages/widgets/hero-centered-image/package.json +12 -0
  345. package/packages/widgets/hero-centered-image/templates/wrapper.php +123 -0
  346. package/packages/widgets/hero-collage/data/view.php +108 -0
  347. package/packages/widgets/hero-collage/hero-collage.php +151 -0
  348. package/packages/widgets/hero-collage/package.json +12 -0
  349. package/packages/widgets/hero-collage/templates/wrapper.php +102 -0
  350. package/packages/widgets/hero-overlay/data/view.php +117 -0
  351. package/packages/widgets/hero-overlay/hero-overlay.php +277 -0
  352. package/packages/widgets/hero-overlay/package.json +12 -0
  353. package/packages/widgets/hero-overlay/templates/wrapper.php +225 -0
  354. package/packages/widgets/hero-overlay-single/data/view.php +118 -0
  355. package/packages/widgets/hero-overlay-single/hero-overlay-single.php +221 -0
  356. package/packages/widgets/hero-overlay-single/package.json +12 -0
  357. package/packages/widgets/hero-overlay-single/templates/wrapper.php +225 -0
  358. package/packages/widgets/hero-overlay-slider/data/view.php +118 -0
  359. package/packages/widgets/hero-overlay-slider/hero-overlay-slider.php +262 -0
  360. package/packages/widgets/hero-overlay-slider/package.json +12 -0
  361. package/packages/widgets/hero-overlay-slider/templates/wrapper.php +225 -0
  362. package/packages/widgets/hero-saas-centered/data/view.php +79 -0
  363. package/packages/widgets/hero-saas-centered/hero-saas-centered.php +145 -0
  364. package/packages/widgets/hero-saas-centered/package.json +12 -0
  365. package/packages/widgets/hero-saas-centered/templates/partials/layout-centered.php +70 -0
  366. package/packages/widgets/hero-saas-centered/templates/partials/layout-split.php +76 -0
  367. package/packages/widgets/hero-saas-centered/templates/partials/layout-stacked.php +70 -0
  368. package/packages/widgets/hero-saas-centered/templates/wrapper.php +46 -0
  369. package/packages/widgets/hero-saas-split/data/view.php +83 -0
  370. package/packages/widgets/hero-saas-split/hero-saas-split.php +158 -0
  371. package/packages/widgets/hero-saas-split/package.json +12 -0
  372. package/packages/widgets/hero-saas-split/templates/partials/layout-centered.php +70 -0
  373. package/packages/widgets/hero-saas-split/templates/partials/layout-split.php +76 -0
  374. package/packages/widgets/hero-saas-split/templates/partials/layout-stacked.php +70 -0
  375. package/packages/widgets/hero-saas-split/templates/wrapper.php +46 -0
  376. package/packages/widgets/hero-saas-stacked/data/view.php +79 -0
  377. package/packages/widgets/hero-saas-stacked/hero-saas-stacked.php +145 -0
  378. package/packages/widgets/hero-saas-stacked/package.json +12 -0
  379. package/packages/widgets/hero-saas-stacked/templates/partials/layout-centered.php +70 -0
  380. package/packages/widgets/hero-saas-stacked/templates/partials/layout-split.php +76 -0
  381. package/packages/widgets/hero-saas-stacked/templates/partials/layout-stacked.php +70 -0
  382. package/packages/widgets/hero-saas-stacked/templates/wrapper.php +46 -0
  383. package/packages/widgets/hero-split/data/view.php +84 -0
  384. package/packages/widgets/hero-split/hero-split.php +127 -0
  385. package/packages/widgets/hero-split/package.json +12 -0
  386. package/packages/widgets/hero-split/templates/wrapper.php +86 -0
  387. package/packages/widgets/hero-stacked-image/data/view.php +137 -0
  388. package/packages/widgets/hero-stacked-image/hero-stacked-image.php +248 -0
  389. package/packages/widgets/hero-stacked-image/package.json +12 -0
  390. package/packages/widgets/hero-stacked-image/templates/wrapper.php +176 -0
  391. package/packages/widgets/intro-pattern/data/view.php +64 -0
  392. package/packages/widgets/intro-pattern/intro-pattern.php +161 -0
  393. package/packages/widgets/intro-pattern/package.json +12 -0
  394. package/packages/widgets/intro-pattern/templates/wrapper.php +61 -0
  395. package/packages/widgets/intro-text/data/view.php +79 -0
  396. package/packages/widgets/intro-text/intro-text.php +252 -0
  397. package/packages/widgets/intro-text/package.json +12 -0
  398. package/packages/widgets/intro-text/templates/wrapper.php +75 -0
  399. package/packages/widgets/logo-grid-centered/data/view.php +79 -0
  400. package/packages/widgets/logo-grid-centered/logo-grid-centered.php +254 -0
  401. package/packages/widgets/logo-grid-centered/package.json +12 -0
  402. package/packages/widgets/logo-grid-centered/templates/wrapper.php +95 -0
  403. package/packages/widgets/logo-grid-row/data/view.php +79 -0
  404. package/packages/widgets/logo-grid-row/logo-grid-row.php +254 -0
  405. package/packages/widgets/logo-grid-row/package.json +12 -0
  406. package/packages/widgets/logo-grid-row/templates/wrapper.php +108 -0
  407. package/packages/widgets/logo-grid-split/data/view.php +79 -0
  408. package/packages/widgets/logo-grid-split/logo-grid-split.php +254 -0
  409. package/packages/widgets/logo-grid-split/package.json +12 -0
  410. package/packages/widgets/logo-grid-split/templates/wrapper.php +97 -0
  411. package/packages/widgets/nav-centered/data/view.php +253 -0
  412. package/packages/widgets/nav-centered/nav-centered.php +350 -0
  413. package/packages/widgets/nav-centered/package.json +12 -0
  414. package/packages/widgets/nav-centered/templates/partials/desktop-mega-panel.php +109 -0
  415. package/packages/widgets/nav-centered/templates/partials/desktop-menu.php +102 -0
  416. package/packages/widgets/nav-centered/templates/partials/mobile-menu.php +104 -0
  417. package/packages/widgets/nav-centered/templates/wrapper.php +401 -0
  418. package/packages/widgets/nav-compact/data/view.php +253 -0
  419. package/packages/widgets/nav-compact/nav-compact.php +350 -0
  420. package/packages/widgets/nav-compact/package.json +12 -0
  421. package/packages/widgets/nav-compact/templates/partials/desktop-mega-panel.php +109 -0
  422. package/packages/widgets/nav-compact/templates/partials/desktop-menu.php +102 -0
  423. package/packages/widgets/nav-compact/templates/partials/mobile-menu.php +104 -0
  424. package/packages/widgets/nav-compact/templates/wrapper.php +401 -0
  425. package/packages/widgets/nav-default/data/view.php +254 -0
  426. package/packages/widgets/nav-default/nav-default.php +350 -0
  427. package/packages/widgets/nav-default/package.json +12 -0
  428. package/packages/widgets/nav-default/templates/partials/desktop-mega-panel.php +109 -0
  429. package/packages/widgets/nav-default/templates/partials/desktop-menu.php +102 -0
  430. package/packages/widgets/nav-default/templates/partials/mobile-menu.php +104 -0
  431. package/packages/widgets/nav-default/templates/wrapper.php +401 -0
  432. package/packages/widgets/nav-floating/data/view.php +253 -0
  433. package/packages/widgets/nav-floating/nav-floating.php +350 -0
  434. package/packages/widgets/nav-floating/package.json +12 -0
  435. package/packages/widgets/nav-floating/templates/partials/desktop-mega-panel.php +109 -0
  436. package/packages/widgets/nav-floating/templates/partials/desktop-menu.php +102 -0
  437. package/packages/widgets/nav-floating/templates/partials/mobile-menu.php +104 -0
  438. package/packages/widgets/nav-floating/templates/wrapper.php +401 -0
  439. package/packages/widgets/nav-minimal/data/view.php +253 -0
  440. package/packages/widgets/nav-minimal/nav-minimal.php +350 -0
  441. package/packages/widgets/nav-minimal/package.json +12 -0
  442. package/packages/widgets/nav-minimal/templates/partials/desktop-mega-panel.php +109 -0
  443. package/packages/widgets/nav-minimal/templates/partials/desktop-menu.php +102 -0
  444. package/packages/widgets/nav-minimal/templates/partials/mobile-menu.php +104 -0
  445. package/packages/widgets/nav-minimal/templates/wrapper.php +401 -0
  446. package/packages/widgets/newsletter/data/view.php +56 -0
  447. package/packages/widgets/newsletter/newsletter.php +210 -0
  448. package/packages/widgets/newsletter/package.json +12 -0
  449. package/packages/widgets/newsletter/templates/wrapper.php +137 -0
  450. package/packages/widgets/newsletter-card/data/view.php +55 -0
  451. package/packages/widgets/newsletter-card/newsletter-card.php +184 -0
  452. package/packages/widgets/newsletter-card/package.json +12 -0
  453. package/packages/widgets/newsletter-card/templates/wrapper.php +90 -0
  454. package/packages/widgets/newsletter-section/data/view.php +55 -0
  455. package/packages/widgets/newsletter-section/newsletter-section.php +184 -0
  456. package/packages/widgets/newsletter-section/package.json +12 -0
  457. package/packages/widgets/newsletter-section/templates/wrapper.php +87 -0
  458. package/packages/widgets/outreach-dashboard/data/view.php +176 -0
  459. package/packages/widgets/outreach-dashboard/outreach-dashboard.php +504 -0
  460. package/packages/widgets/outreach-dashboard/package.json +12 -0
  461. package/packages/widgets/outreach-dashboard/templates/partials/card-chat.php +69 -0
  462. package/packages/widgets/outreach-dashboard/templates/partials/card-engagement.php +60 -0
  463. package/packages/widgets/outreach-dashboard/templates/partials/card-integrations.php +39 -0
  464. package/packages/widgets/outreach-dashboard/templates/partials/card-meetings.php +43 -0
  465. package/packages/widgets/outreach-dashboard/templates/partials/card-networking.php +28 -0
  466. package/packages/widgets/outreach-dashboard/templates/wrapper.php +76 -0
  467. package/packages/widgets/page-hero-center/data/view.php +43 -0
  468. package/packages/widgets/page-hero-center/package.json +12 -0
  469. package/packages/widgets/page-hero-center/page-hero-center.php +120 -0
  470. package/packages/widgets/page-hero-center/templates/wrapper.php +54 -0
  471. package/packages/widgets/page-hero-left/data/view.php +43 -0
  472. package/packages/widgets/page-hero-left/package.json +12 -0
  473. package/packages/widgets/page-hero-left/page-hero-left.php +120 -0
  474. package/packages/widgets/page-hero-left/templates/wrapper.php +54 -0
  475. package/packages/widgets/pipeline-dashboard/data/view.php +131 -0
  476. package/packages/widgets/pipeline-dashboard/package.json +12 -0
  477. package/packages/widgets/pipeline-dashboard/pipeline-dashboard.php +407 -0
  478. package/packages/widgets/pipeline-dashboard/templates/partials/app-bar.php +31 -0
  479. package/packages/widgets/pipeline-dashboard/templates/partials/kanban.php +56 -0
  480. package/packages/widgets/pipeline-dashboard/templates/partials/pipeline-header.php +66 -0
  481. package/packages/widgets/pipeline-dashboard/templates/wrapper.php +64 -0
  482. package/packages/widgets/posts-grid/data/view.php +144 -0
  483. package/packages/widgets/posts-grid/package.json +12 -0
  484. package/packages/widgets/posts-grid/posts-grid.php +282 -0
  485. package/packages/widgets/posts-grid/templates/partials/card-overlay.php +58 -0
  486. package/packages/widgets/posts-grid/templates/partials/card.php +49 -0
  487. package/packages/widgets/posts-grid/templates/wrapper.php +55 -0
  488. package/packages/widgets/posts-grid-overlay/data/view.php +144 -0
  489. package/packages/widgets/posts-grid-overlay/package.json +12 -0
  490. package/packages/widgets/posts-grid-overlay/posts-grid-overlay.php +282 -0
  491. package/packages/widgets/posts-grid-overlay/templates/partials/card-overlay.php +58 -0
  492. package/packages/widgets/posts-grid-overlay/templates/partials/card.php +49 -0
  493. package/packages/widgets/posts-grid-overlay/templates/wrapper.php +55 -0
  494. package/packages/widgets/pricing-table/data/view.php +96 -0
  495. package/packages/widgets/pricing-table/package.json +12 -0
  496. package/packages/widgets/pricing-table/pricing-table.php +376 -0
  497. package/packages/widgets/pricing-table/templates/partials/pricing-card.php +125 -0
  498. package/packages/widgets/pricing-table/templates/wrapper.php +164 -0
  499. package/packages/widgets/sales-dashboard/data/view.php +158 -0
  500. package/packages/widgets/sales-dashboard/package.json +12 -0
  501. package/packages/widgets/sales-dashboard/sales-dashboard.php +434 -0
  502. package/packages/widgets/sales-dashboard/templates/partials/card-competitors.php +78 -0
  503. package/packages/widgets/sales-dashboard/templates/partials/card-feature.php +58 -0
  504. package/packages/widgets/sales-dashboard/templates/partials/card-profile.php +76 -0
  505. package/packages/widgets/sales-dashboard/templates/wrapper.php +74 -0
  506. package/packages/widgets/section-stats/data/view.php +90 -0
  507. package/packages/widgets/section-stats/package.json +12 -0
  508. package/packages/widgets/section-stats/section-stats.php +232 -0
  509. package/packages/widgets/section-stats/templates/partials/stat-card.php +44 -0
  510. package/packages/widgets/section-stats/templates/wrapper.php +87 -0
  511. package/packages/widgets/services/data/view.php +79 -0
  512. package/packages/widgets/services/package.json +12 -0
  513. package/packages/widgets/services/services.php +198 -0
  514. package/packages/widgets/services/templates/partials/service-item.php +35 -0
  515. package/packages/widgets/services/templates/wrapper.php +92 -0
  516. package/packages/widgets/simple-page-hero/data/view.php +43 -0
  517. package/packages/widgets/simple-page-hero/package.json +12 -0
  518. package/packages/widgets/simple-page-hero/simple-page-hero.php +147 -0
  519. package/packages/widgets/simple-page-hero/templates/wrapper.php +54 -0
  520. package/packages/widgets/social-proof/data/view.php +62 -0
  521. package/packages/widgets/social-proof/package.json +12 -0
  522. package/packages/widgets/social-proof/social-proof.php +271 -0
  523. package/packages/widgets/social-proof/templates/partials/layout-trust.php +73 -0
  524. package/packages/widgets/social-proof/templates/partials/stat-card.php +32 -0
  525. package/packages/widgets/social-proof/templates/partials/stat-item.php +35 -0
  526. package/packages/widgets/social-proof/templates/wrapper.php +87 -0
  527. package/packages/widgets/social-proof-trust/data/view.php +105 -0
  528. package/packages/widgets/social-proof-trust/package.json +12 -0
  529. package/packages/widgets/social-proof-trust/social-proof-trust.php +367 -0
  530. package/packages/widgets/social-proof-trust/templates/partials/layout-trust.php +73 -0
  531. package/packages/widgets/social-proof-trust/templates/partials/stat-card.php +32 -0
  532. package/packages/widgets/social-proof-trust/templates/partials/stat-item.php +35 -0
  533. package/packages/widgets/social-proof-trust/templates/wrapper.php +48 -0
  534. package/packages/widgets/testimonial-quote/data/view.php +57 -0
  535. package/packages/widgets/testimonial-quote/package.json +12 -0
  536. package/packages/widgets/testimonial-quote/templates/wrapper.php +66 -0
  537. package/packages/widgets/testimonial-quote/testimonial-quote.php +157 -0
  538. package/packages/widgets/testimonials-bento/data/view.php +110 -0
  539. package/packages/widgets/testimonials-bento/package.json +12 -0
  540. package/packages/widgets/testimonials-bento/templates/partials/layout-bento.php +36 -0
  541. package/packages/widgets/testimonials-bento/templates/partials/layout-masonry.php +74 -0
  542. package/packages/widgets/testimonials-bento/templates/partials/testimonial-card.php +85 -0
  543. package/packages/widgets/testimonials-bento/templates/wrapper.php +63 -0
  544. package/packages/widgets/testimonials-bento/testimonials-bento.php +322 -0
  545. package/packages/widgets/testimonials-grid/data/view.php +108 -0
  546. package/packages/widgets/testimonials-grid/package.json +12 -0
  547. package/packages/widgets/testimonials-grid/templates/partials/layout-bento.php +36 -0
  548. package/packages/widgets/testimonials-grid/templates/partials/layout-masonry.php +74 -0
  549. package/packages/widgets/testimonials-grid/templates/partials/testimonial-card.php +85 -0
  550. package/packages/widgets/testimonials-grid/templates/wrapper.php +74 -0
  551. package/packages/widgets/testimonials-grid/testimonials-grid.php +336 -0
  552. package/packages/widgets/testimonials-masonry/data/view.php +108 -0
  553. package/packages/widgets/testimonials-masonry/package.json +12 -0
  554. package/packages/widgets/testimonials-masonry/templates/partials/layout-bento.php +36 -0
  555. package/packages/widgets/testimonials-masonry/templates/partials/layout-masonry.php +74 -0
  556. package/packages/widgets/testimonials-masonry/templates/partials/testimonial-card.php +85 -0
  557. package/packages/widgets/testimonials-masonry/templates/wrapper.php +63 -0
  558. package/packages/widgets/testimonials-masonry/testimonials-masonry.php +336 -0
  559. package/packages/widgets/widget-filter/data/view.php +527 -0
  560. package/packages/widgets/widget-filter/package.json +12 -0
  561. package/packages/widgets/widget-filter/templates/wrapper.php +630 -0
  562. package/packages/widgets/widget-filter/widget-filter.php +123 -0
  563. package/scripts/scaffold-widget-packages.js +109 -0
  564. package/scripts/setup.sh +56 -0
  565. package/scripts/split-widget.js +176 -0
  566. package/scripts/sync-widgets.js +69 -0
  567. package/sociallane-elements.php +104 -0
  568. package/vite.config.js +129 -0
  569. package/widgets/.gitkeep +0 -0
  570. package/widgets/bento-grid/bento-grid.php +761 -0
  571. package/widgets/bento-grid/data/view.php +334 -0
  572. package/widgets/bento-grid/templates/partials/cell1.php +45 -0
  573. package/widgets/bento-grid/templates/partials/cell2.php +52 -0
  574. package/widgets/bento-grid/templates/partials/cell3.php +45 -0
  575. package/widgets/bento-grid/templates/partials/cell4.php +44 -0
  576. package/widgets/bento-grid/templates/partials/default-grid.php +31 -0
  577. package/widgets/bento-grid/templates/partials/tcsr-row1-left.php +68 -0
  578. package/widgets/bento-grid/templates/partials/tcsr-row1-right.php +65 -0
  579. package/widgets/bento-grid/templates/partials/tcsr-row2-center.php +41 -0
  580. package/widgets/bento-grid/templates/partials/tcsr-row2-left.php +38 -0
  581. package/widgets/bento-grid/templates/partials/tcsr-row2-right.php +38 -0
  582. package/widgets/bento-grid/templates/partials/two-column-second-row-grid.php +35 -0
  583. package/widgets/bento-grid/templates/partials/two-row-deploys.php +47 -0
  584. package/widgets/bento-grid/templates/partials/two-row-grid.php +34 -0
  585. package/widgets/bento-grid/templates/partials/two-row-integrations.php +40 -0
  586. package/widgets/bento-grid/templates/partials/two-row-overview.php +67 -0
  587. package/widgets/bento-grid/templates/partials/two-row-releases.php +29 -0
  588. package/widgets/bento-grid/templates/partials/two-row-security.php +44 -0
  589. package/widgets/bento-grid/templates/wrapper.php +72 -0
  590. package/widgets/bento-portfolio/bento-portfolio.php +399 -0
  591. package/widgets/bento-portfolio/data/view.php +124 -0
  592. package/widgets/bento-portfolio/templates/partials/portfolio-card.php +84 -0
  593. package/widgets/bento-portfolio/templates/partials/portfolio-default-grid.php +35 -0
  594. package/widgets/bento-portfolio/templates/partials/portfolio-two-column-second-row-grid.php +39 -0
  595. package/widgets/bento-portfolio/templates/partials/portfolio-two-row-grid.php +35 -0
  596. package/widgets/bento-portfolio/templates/wrapper.php +88 -0
  597. package/widgets/blog-grid/blog-grid.php +359 -0
  598. package/widgets/blog-grid/data/view.php +209 -0
  599. package/widgets/blog-grid/templates/partials/card.php +73 -0
  600. package/widgets/blog-grid/templates/wrapper.php +89 -0
  601. package/widgets/card-hover-reveal/card-hover-reveal.php +329 -0
  602. package/widgets/card-hover-reveal/data/view.php +141 -0
  603. package/widgets/card-hover-reveal/templates/partials/card.php +119 -0
  604. package/widgets/card-hover-reveal/templates/wrapper.php +80 -0
  605. package/widgets/client-logos/client-logos.php +214 -0
  606. package/widgets/client-logos/data/view.php +105 -0
  607. package/widgets/client-logos/templates/partials/client-item.php +38 -0
  608. package/widgets/client-logos/templates/wrapper.php +62 -0
  609. package/widgets/content-block/content-block.php +280 -0
  610. package/widgets/content-block/data/view.php +120 -0
  611. package/widgets/content-block/templates/partials/content.php +52 -0
  612. package/widgets/content-block/templates/wrapper.php +73 -0
  613. package/widgets/cta-banner/cta-banner.php +300 -0
  614. package/widgets/cta-banner/data/view.php +101 -0
  615. package/widgets/cta-banner/templates/wrapper.php +131 -0
  616. package/widgets/cta-notify/cta-notify.php +135 -0
  617. package/widgets/cta-notify/data/view.php +55 -0
  618. package/widgets/cta-notify/templates/wrapper.php +69 -0
  619. package/widgets/cta-split/cta-split.php +246 -0
  620. package/widgets/cta-split/data/view.php +86 -0
  621. package/widgets/cta-split/templates/wrapper.php +113 -0
  622. package/widgets/faq/data/view.php +105 -0
  623. package/widgets/faq/faq.php +253 -0
  624. package/widgets/faq/templates/partials/accordion.php +74 -0
  625. package/widgets/faq/templates/partials/layout-centered.php +41 -0
  626. package/widgets/faq/templates/partials/layout-split.php +47 -0
  627. package/widgets/faq/templates/partials/layout-stacked.php +57 -0
  628. package/widgets/faq/templates/wrapper.php +76 -0
  629. package/widgets/feature-grid/data/view.php +121 -0
  630. package/widgets/feature-grid/feature-grid.php +321 -0
  631. package/widgets/feature-grid/templates/partials/centered-2x2.php +69 -0
  632. package/widgets/feature-grid/templates/partials/feature-item.php +54 -0
  633. package/widgets/feature-grid/templates/wrapper.php +71 -0
  634. package/widgets/feature-list/data/view.php +56 -0
  635. package/widgets/feature-list/feature-list.php +160 -0
  636. package/widgets/feature-list/templates/wrapper.php +69 -0
  637. package/widgets/feature-list-cta/data/view.php +85 -0
  638. package/widgets/feature-list-cta/feature-list-cta.php +226 -0
  639. package/widgets/feature-list-cta/templates/partials/feature-item.php +49 -0
  640. package/widgets/feature-list-cta/templates/wrapper.php +65 -0
  641. package/widgets/footer/data/view.php +139 -0
  642. package/widgets/footer/footer.php +389 -0
  643. package/widgets/footer/templates/partials/bottom.php +77 -0
  644. package/widgets/footer/templates/partials/cta.php +47 -0
  645. package/widgets/footer/templates/partials/link-columns.php +52 -0
  646. package/widgets/footer/templates/wrapper.php +53 -0
  647. package/widgets/footer-brand/data/view.php +135 -0
  648. package/widgets/footer-brand/footer-brand.php +278 -0
  649. package/widgets/footer-brand/templates/partials/brand.php +69 -0
  650. package/widgets/footer-brand/templates/partials/link-columns.php +51 -0
  651. package/widgets/footer-brand/templates/wrapper.php +59 -0
  652. package/widgets/footer-links-contact/data/view.php +165 -0
  653. package/widgets/footer-links-contact/footer-links-contact.php +361 -0
  654. package/widgets/footer-links-contact/templates/partials/bottom.php +70 -0
  655. package/widgets/footer-links-contact/templates/partials/contact-column.php +66 -0
  656. package/widgets/footer-links-contact/templates/partials/link-column.php +39 -0
  657. package/widgets/footer-links-contact/templates/partials/logo-column.php +46 -0
  658. package/widgets/footer-links-contact/templates/wrapper.php +68 -0
  659. package/widgets/form-contact/data/view.php +133 -0
  660. package/widgets/form-contact/form-contact.php +274 -0
  661. package/widgets/form-contact/templates/partials/testimonial.php +83 -0
  662. package/widgets/form-contact/templates/wrapper.php +98 -0
  663. package/widgets/grid-case-studies/data/view.php +88 -0
  664. package/widgets/grid-case-studies/grid-case-studies.php +262 -0
  665. package/widgets/grid-case-studies/templates/partials/card.php +66 -0
  666. package/widgets/grid-case-studies/templates/wrapper.php +69 -0
  667. package/widgets/grid-components/data/view.php +131 -0
  668. package/widgets/grid-components/grid-components.php +316 -0
  669. package/widgets/grid-components/templates/partials/component-card.php +81 -0
  670. package/widgets/grid-components/templates/wrapper.php +55 -0
  671. package/widgets/grid-posts/data/view.php +159 -0
  672. package/widgets/grid-posts/grid-posts.php +295 -0
  673. package/widgets/grid-posts/templates/partials/card-overlay.php +58 -0
  674. package/widgets/grid-posts/templates/partials/card.php +49 -0
  675. package/widgets/grid-posts/templates/wrapper.php +59 -0
  676. package/widgets/grid-team/data/view.php +80 -0
  677. package/widgets/grid-team/grid-team.php +201 -0
  678. package/widgets/grid-team/templates/partials/team-card.php +52 -0
  679. package/widgets/grid-team/templates/wrapper.php +67 -0
  680. package/widgets/grid-testimonials/data/view.php +179 -0
  681. package/widgets/grid-testimonials/grid-testimonials.php +370 -0
  682. package/widgets/grid-testimonials/templates/partials/layout-bento.php +36 -0
  683. package/widgets/grid-testimonials/templates/partials/layout-masonry.php +74 -0
  684. package/widgets/grid-testimonials/templates/partials/testimonial-card.php +85 -0
  685. package/widgets/grid-testimonials/templates/wrapper.php +84 -0
  686. package/widgets/hero-announcement/data/view.php +98 -0
  687. package/widgets/hero-announcement/hero-announcement.php +270 -0
  688. package/widgets/hero-announcement/templates/wrapper.php +111 -0
  689. package/widgets/hero-centered-image/data/view.php +128 -0
  690. package/widgets/hero-centered-image/hero-centered-image.php +297 -0
  691. package/widgets/hero-centered-image/templates/wrapper.php +123 -0
  692. package/widgets/hero-collage/data/view.php +113 -0
  693. package/widgets/hero-collage/hero-collage.php +151 -0
  694. package/widgets/hero-collage/templates/wrapper.php +102 -0
  695. package/widgets/hero-overlay/data/view.php +121 -0
  696. package/widgets/hero-overlay/hero-overlay.php +277 -0
  697. package/widgets/hero-overlay/templates/wrapper.php +225 -0
  698. package/widgets/hero-saas/data/view.php +106 -0
  699. package/widgets/hero-saas/hero-saas.php +175 -0
  700. package/widgets/hero-saas/templates/partials/layout-centered.php +70 -0
  701. package/widgets/hero-saas/templates/partials/layout-split.php +76 -0
  702. package/widgets/hero-saas/templates/partials/layout-stacked.php +70 -0
  703. package/widgets/hero-saas/templates/wrapper.php +54 -0
  704. package/widgets/hero-split/data/view.php +92 -0
  705. package/widgets/hero-split/hero-split.php +127 -0
  706. package/widgets/hero-split/templates/wrapper.php +86 -0
  707. package/widgets/hero-stacked-image/data/view.php +142 -0
  708. package/widgets/hero-stacked-image/hero-stacked-image.php +248 -0
  709. package/widgets/hero-stacked-image/templates/wrapper.php +176 -0
  710. package/widgets/intro-pattern/data/view.php +73 -0
  711. package/widgets/intro-pattern/intro-pattern.php +161 -0
  712. package/widgets/intro-pattern/templates/wrapper.php +61 -0
  713. package/widgets/intro-text/data/view.php +97 -0
  714. package/widgets/intro-text/intro-text.php +252 -0
  715. package/widgets/intro-text/templates/wrapper.php +75 -0
  716. package/widgets/logo-grid/data/view.php +113 -0
  717. package/widgets/logo-grid/logo-grid.php +281 -0
  718. package/widgets/logo-grid/templates/wrapper.php +213 -0
  719. package/widgets/newsletter/data/view.php +75 -0
  720. package/widgets/newsletter/newsletter.php +210 -0
  721. package/widgets/newsletter/templates/wrapper.php +137 -0
  722. package/widgets/outreach-dashboard/data/view.php +176 -0
  723. package/widgets/outreach-dashboard/outreach-dashboard.php +504 -0
  724. package/widgets/outreach-dashboard/templates/partials/card-chat.php +69 -0
  725. package/widgets/outreach-dashboard/templates/partials/card-engagement.php +60 -0
  726. package/widgets/outreach-dashboard/templates/partials/card-integrations.php +39 -0
  727. package/widgets/outreach-dashboard/templates/partials/card-meetings.php +43 -0
  728. package/widgets/outreach-dashboard/templates/partials/card-networking.php +28 -0
  729. package/widgets/outreach-dashboard/templates/wrapper.php +76 -0
  730. package/widgets/pipeline-dashboard/data/view.php +131 -0
  731. package/widgets/pipeline-dashboard/pipeline-dashboard.php +407 -0
  732. package/widgets/pipeline-dashboard/templates/partials/app-bar.php +31 -0
  733. package/widgets/pipeline-dashboard/templates/partials/kanban.php +56 -0
  734. package/widgets/pipeline-dashboard/templates/partials/pipeline-header.php +66 -0
  735. package/widgets/pipeline-dashboard/templates/wrapper.php +64 -0
  736. package/widgets/pricing-table/data/view.php +133 -0
  737. package/widgets/pricing-table/pricing-table.php +376 -0
  738. package/widgets/pricing-table/templates/partials/pricing-card.php +125 -0
  739. package/widgets/pricing-table/templates/wrapper.php +164 -0
  740. package/widgets/sales-dashboard/data/view.php +158 -0
  741. package/widgets/sales-dashboard/sales-dashboard.php +434 -0
  742. package/widgets/sales-dashboard/templates/partials/card-competitors.php +78 -0
  743. package/widgets/sales-dashboard/templates/partials/card-feature.php +58 -0
  744. package/widgets/sales-dashboard/templates/partials/card-profile.php +76 -0
  745. package/widgets/sales-dashboard/templates/wrapper.php +74 -0
  746. package/widgets/section-stats/data/view.php +105 -0
  747. package/widgets/section-stats/section-stats.php +232 -0
  748. package/widgets/section-stats/templates/partials/stat-card.php +44 -0
  749. package/widgets/section-stats/templates/wrapper.php +87 -0
  750. package/widgets/services/data/view.php +91 -0
  751. package/widgets/services/services.php +198 -0
  752. package/widgets/services/templates/partials/service-item.php +35 -0
  753. package/widgets/services/templates/wrapper.php +92 -0
  754. package/widgets/simple-page-hero/data/view.php +52 -0
  755. package/widgets/simple-page-hero/simple-page-hero.php +147 -0
  756. package/widgets/simple-page-hero/templates/wrapper.php +54 -0
  757. package/widgets/social-proof/data/view.php +143 -0
  758. package/widgets/social-proof/social-proof.php +389 -0
  759. package/widgets/social-proof/templates/partials/layout-trust.php +73 -0
  760. package/widgets/social-proof/templates/partials/stat-card.php +32 -0
  761. package/widgets/social-proof/templates/partials/stat-item.php +35 -0
  762. package/widgets/social-proof/templates/wrapper.php +93 -0
  763. package/widgets/testimonial-quote/data/view.php +62 -0
  764. package/widgets/testimonial-quote/templates/wrapper.php +66 -0
  765. package/widgets/testimonial-quote/testimonial-quote.php +157 -0
  766. package/widgets.json +75 -0
  767. 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
+ }