jigsaw_engine 0.4.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 (759) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +18 -0
  3. data/Rakefile +6 -0
  4. data/app/assets/stylesheets/jigsaw/grid_resize.css +21 -0
  5. data/app/assets/stylesheets/jigsaw/layout_editor.css +356 -0
  6. data/app/components/custom_module_component.rb +38 -0
  7. data/app/controllers/jigsaw/application_controller.rb +5 -0
  8. data/app/controllers/jigsaw/dashboard_controller.rb +8 -0
  9. data/app/controllers/jigsaw/layout_templates_controller.rb +73 -0
  10. data/app/controllers/jigsaw/pages_controller.rb +114 -0
  11. data/app/controllers/jigsaw/slot_templates_controller.rb +71 -0
  12. data/app/controllers/jigsaw/slots_controller.rb +54 -0
  13. data/app/helpers/jigsaw/custom_module_helper.rb +7 -0
  14. data/app/helpers/jigsaw/pages_helper.rb +7 -0
  15. data/app/javascript/jigsaw/components/ui/button.js +53 -0
  16. data/app/javascript/jigsaw/components/ui/dropdown-menu.js +157 -0
  17. data/app/javascript/jigsaw/components/ui/sheet.js +122 -0
  18. data/app/javascript/jigsaw/components/ui/utils.js +8 -0
  19. data/app/javascript/jigsaw/controllers/custom_module_controller.js +75 -0
  20. data/app/javascript/jigsaw/controllers/custom_page_controller.js +23 -0
  21. data/app/javascript/jigsaw/controllers/flyout_resize_controller.js +60 -0
  22. data/app/javascript/jigsaw/controllers/grid_resize_controller.js +228 -0
  23. data/app/javascript/jigsaw/controllers/layout_editor_controller.js +502 -0
  24. data/app/javascript/jigsaw/controllers/module_editor_controller.js +146 -0
  25. data/app/javascript/jigsaw/controllers/monaco_editor_controller.js +49 -0
  26. data/app/javascript/jigsaw/lib/generate_layout_css.js +52 -0
  27. data/app/javascript/seeds/blocks/authentication-forms-1/config.json +1 -0
  28. data/app/javascript/seeds/blocks/authentication-forms-1/data.js +1 -0
  29. data/app/javascript/seeds/blocks/authentication-forms-1/render.jsx +80 -0
  30. data/app/javascript/seeds/blocks/authentication-forms-2/config.json +1 -0
  31. data/app/javascript/seeds/blocks/authentication-forms-2/data.js +1 -0
  32. data/app/javascript/seeds/blocks/authentication-forms-2/render.jsx +90 -0
  33. data/app/javascript/seeds/blocks/authentication-forms-3/config.json +1 -0
  34. data/app/javascript/seeds/blocks/authentication-forms-3/data.js +1 -0
  35. data/app/javascript/seeds/blocks/authentication-forms-3/render.jsx +94 -0
  36. data/app/javascript/seeds/blocks/authentication-forms-4/config.json +1 -0
  37. data/app/javascript/seeds/blocks/authentication-forms-4/data.js +1 -0
  38. data/app/javascript/seeds/blocks/authentication-forms-4/render.jsx +97 -0
  39. data/app/javascript/seeds/blocks/authentication-forms-5/config.json +1 -0
  40. data/app/javascript/seeds/blocks/authentication-forms-5/data.js +1 -0
  41. data/app/javascript/seeds/blocks/authentication-forms-5/render.jsx +82 -0
  42. data/app/javascript/seeds/blocks/authentication-forms-6/config.json +1 -0
  43. data/app/javascript/seeds/blocks/authentication-forms-6/data.js +1 -0
  44. data/app/javascript/seeds/blocks/authentication-forms-6/render.jsx +34 -0
  45. data/app/javascript/seeds/blocks/dashboard-ui/charts-1/config.json +1 -0
  46. data/app/javascript/seeds/blocks/dashboard-ui/charts-1/data.js +1 -0
  47. data/app/javascript/seeds/blocks/dashboard-ui/charts-1/render.jsx +98 -0
  48. data/app/javascript/seeds/blocks/dashboard-ui/charts-10/config.json +1 -0
  49. data/app/javascript/seeds/blocks/dashboard-ui/charts-10/data.js +1 -0
  50. data/app/javascript/seeds/blocks/dashboard-ui/charts-10/render.jsx +181 -0
  51. data/app/javascript/seeds/blocks/dashboard-ui/charts-11/config.json +1 -0
  52. data/app/javascript/seeds/blocks/dashboard-ui/charts-11/data.js +1 -0
  53. data/app/javascript/seeds/blocks/dashboard-ui/charts-11/render.jsx +184 -0
  54. data/app/javascript/seeds/blocks/dashboard-ui/charts-12/config.json +1 -0
  55. data/app/javascript/seeds/blocks/dashboard-ui/charts-12/data.js +1 -0
  56. data/app/javascript/seeds/blocks/dashboard-ui/charts-12/render.jsx +180 -0
  57. data/app/javascript/seeds/blocks/dashboard-ui/charts-13/config.json +1 -0
  58. data/app/javascript/seeds/blocks/dashboard-ui/charts-13/data.js +1 -0
  59. data/app/javascript/seeds/blocks/dashboard-ui/charts-13/render.jsx +151 -0
  60. data/app/javascript/seeds/blocks/dashboard-ui/charts-14/config.json +1 -0
  61. data/app/javascript/seeds/blocks/dashboard-ui/charts-14/data.js +1 -0
  62. data/app/javascript/seeds/blocks/dashboard-ui/charts-14/render.jsx +169 -0
  63. data/app/javascript/seeds/blocks/dashboard-ui/charts-15/config.json +1 -0
  64. data/app/javascript/seeds/blocks/dashboard-ui/charts-15/data.js +1 -0
  65. data/app/javascript/seeds/blocks/dashboard-ui/charts-15/render.jsx +115 -0
  66. data/app/javascript/seeds/blocks/dashboard-ui/charts-16/config.json +1 -0
  67. data/app/javascript/seeds/blocks/dashboard-ui/charts-16/data.js +1 -0
  68. data/app/javascript/seeds/blocks/dashboard-ui/charts-16/render.jsx +128 -0
  69. data/app/javascript/seeds/blocks/dashboard-ui/charts-17/config.json +1 -0
  70. data/app/javascript/seeds/blocks/dashboard-ui/charts-17/data.js +1 -0
  71. data/app/javascript/seeds/blocks/dashboard-ui/charts-17/render.jsx +84 -0
  72. data/app/javascript/seeds/blocks/dashboard-ui/charts-18/config.json +1 -0
  73. data/app/javascript/seeds/blocks/dashboard-ui/charts-18/data.js +1 -0
  74. data/app/javascript/seeds/blocks/dashboard-ui/charts-18/render.jsx +139 -0
  75. data/app/javascript/seeds/blocks/dashboard-ui/charts-19/config.json +1 -0
  76. data/app/javascript/seeds/blocks/dashboard-ui/charts-19/data.js +1 -0
  77. data/app/javascript/seeds/blocks/dashboard-ui/charts-19/render.jsx +146 -0
  78. data/app/javascript/seeds/blocks/dashboard-ui/charts-2/config.json +1 -0
  79. data/app/javascript/seeds/blocks/dashboard-ui/charts-2/data.js +1 -0
  80. data/app/javascript/seeds/blocks/dashboard-ui/charts-2/render.jsx +163 -0
  81. data/app/javascript/seeds/blocks/dashboard-ui/charts-20/config.json +1 -0
  82. data/app/javascript/seeds/blocks/dashboard-ui/charts-20/data.js +1 -0
  83. data/app/javascript/seeds/blocks/dashboard-ui/charts-20/render.jsx +71 -0
  84. data/app/javascript/seeds/blocks/dashboard-ui/charts-3/config.json +1 -0
  85. data/app/javascript/seeds/blocks/dashboard-ui/charts-3/data.js +1 -0
  86. data/app/javascript/seeds/blocks/dashboard-ui/charts-3/render.jsx +122 -0
  87. data/app/javascript/seeds/blocks/dashboard-ui/charts-4/config.json +1 -0
  88. data/app/javascript/seeds/blocks/dashboard-ui/charts-4/data.js +1 -0
  89. data/app/javascript/seeds/blocks/dashboard-ui/charts-4/render.jsx +136 -0
  90. data/app/javascript/seeds/blocks/dashboard-ui/charts-5/config.json +1 -0
  91. data/app/javascript/seeds/blocks/dashboard-ui/charts-5/data.js +1 -0
  92. data/app/javascript/seeds/blocks/dashboard-ui/charts-5/render.jsx +294 -0
  93. data/app/javascript/seeds/blocks/dashboard-ui/charts-6/config.json +1 -0
  94. data/app/javascript/seeds/blocks/dashboard-ui/charts-6/data.js +1 -0
  95. data/app/javascript/seeds/blocks/dashboard-ui/charts-6/render.jsx +139 -0
  96. data/app/javascript/seeds/blocks/dashboard-ui/charts-7/config.json +1 -0
  97. data/app/javascript/seeds/blocks/dashboard-ui/charts-7/data.js +1 -0
  98. data/app/javascript/seeds/blocks/dashboard-ui/charts-7/render.jsx +219 -0
  99. data/app/javascript/seeds/blocks/dashboard-ui/charts-8/config.json +1 -0
  100. data/app/javascript/seeds/blocks/dashboard-ui/charts-8/data.js +1 -0
  101. data/app/javascript/seeds/blocks/dashboard-ui/charts-8/render.jsx +249 -0
  102. data/app/javascript/seeds/blocks/dashboard-ui/charts-9/config.json +1 -0
  103. data/app/javascript/seeds/blocks/dashboard-ui/charts-9/data.js +1 -0
  104. data/app/javascript/seeds/blocks/dashboard-ui/charts-9/render.jsx +213 -0
  105. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/config.json +1 -0
  106. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/data.js +1 -0
  107. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/render.jsx +434 -0
  108. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/config.json +1 -0
  109. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/data.js +1 -0
  110. data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/render.jsx +332 -0
  111. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/config.json +1 -0
  112. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/data.js +1 -0
  113. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/render.jsx +121 -0
  114. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/config.json +1 -0
  115. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/data.js +1 -0
  116. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/render.jsx +99 -0
  117. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/config.json +1 -0
  118. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/data.js +1 -0
  119. data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/render.jsx +176 -0
  120. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/config.json +1 -0
  121. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/data.js +1 -0
  122. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/render.jsx +20 -0
  123. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/config.json +1 -0
  124. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/data.js +1 -0
  125. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/render.jsx +22 -0
  126. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/config.json +1 -0
  127. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/data.js +1 -0
  128. data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/render.jsx +22 -0
  129. data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/config.json +1 -0
  130. data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/data.js +1 -0
  131. data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/render.jsx +20 -0
  132. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/config.json +1 -0
  133. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/data.js +1 -0
  134. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/render.jsx +98 -0
  135. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/config.json +1 -0
  136. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/data.js +1 -0
  137. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/render.jsx +116 -0
  138. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/config.json +1 -0
  139. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/data.js +1 -0
  140. data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/render.jsx +104 -0
  141. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/config.json +1 -0
  142. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/data.js +1 -0
  143. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/render.jsx +147 -0
  144. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/config.json +1 -0
  145. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/data.js +1 -0
  146. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/render.jsx +120 -0
  147. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/config.json +1 -0
  148. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/data.js +1 -0
  149. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/render.jsx +62 -0
  150. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/config.json +1 -0
  151. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/data.js +1 -0
  152. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/render.jsx +49 -0
  153. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/config.json +1 -0
  154. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/data.js +1 -0
  155. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/render.jsx +106 -0
  156. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/config.json +1 -0
  157. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/data.js +1 -0
  158. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/render.jsx +79 -0
  159. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/config.json +1 -0
  160. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/data.js +1 -0
  161. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/render.jsx +57 -0
  162. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/config.json +1 -0
  163. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/data.js +1 -0
  164. data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/render.jsx +234 -0
  165. data/app/javascript/seeds/blocks/dashboard-ui/tables-1/config.json +1 -0
  166. data/app/javascript/seeds/blocks/dashboard-ui/tables-1/data.js +1 -0
  167. data/app/javascript/seeds/blocks/dashboard-ui/tables-1/render.jsx +295 -0
  168. data/app/javascript/seeds/blocks/datepicker-1/config.json +1 -0
  169. data/app/javascript/seeds/blocks/datepicker-1/data.js +1 -0
  170. data/app/javascript/seeds/blocks/datepicker-1/render.jsx +14 -0
  171. data/app/javascript/seeds/blocks/datepicker-2/config.json +1 -0
  172. data/app/javascript/seeds/blocks/datepicker-2/data.js +1 -0
  173. data/app/javascript/seeds/blocks/datepicker-2/render.jsx +29 -0
  174. data/app/javascript/seeds/blocks/datepicker-3/config.json +1 -0
  175. data/app/javascript/seeds/blocks/datepicker-3/data.js +1 -0
  176. data/app/javascript/seeds/blocks/datepicker-3/render.jsx +163 -0
  177. data/app/javascript/seeds/blocks/datepicker-4/config.json +1 -0
  178. data/app/javascript/seeds/blocks/datepicker-4/data.js +1 -0
  179. data/app/javascript/seeds/blocks/datepicker-4/render.jsx +192 -0
  180. data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/config.json +1 -0
  181. data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/data.js +1 -0
  182. data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/render.jsx +723 -0
  183. data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/config.json +1 -0
  184. data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/data.js +1 -0
  185. data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/render.jsx +508 -0
  186. data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/config.json +1 -0
  187. data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/data.js +1 -0
  188. data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/render.jsx +632 -0
  189. data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/config.json +1 -0
  190. data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/data.js +1 -0
  191. data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/render.jsx +1013 -0
  192. data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/config.json +1 -0
  193. data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/data.js +1 -0
  194. data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/render.jsx +520 -0
  195. data/app/javascript/seeds/blocks/ecommerce/product-category-1/config.json +1 -0
  196. data/app/javascript/seeds/blocks/ecommerce/product-category-1/data.js +1 -0
  197. data/app/javascript/seeds/blocks/ecommerce/product-category-1/render.jsx +121 -0
  198. data/app/javascript/seeds/blocks/ecommerce/product-category-2/config.json +1 -0
  199. data/app/javascript/seeds/blocks/ecommerce/product-category-2/data.js +1 -0
  200. data/app/javascript/seeds/blocks/ecommerce/product-category-2/render.jsx +126 -0
  201. data/app/javascript/seeds/blocks/ecommerce/product-category-3/config.json +1 -0
  202. data/app/javascript/seeds/blocks/ecommerce/product-category-3/data.js +1 -0
  203. data/app/javascript/seeds/blocks/ecommerce/product-category-3/render.jsx +81 -0
  204. data/app/javascript/seeds/blocks/ecommerce/product-category-4/config.json +1 -0
  205. data/app/javascript/seeds/blocks/ecommerce/product-category-4/data.js +1 -0
  206. data/app/javascript/seeds/blocks/ecommerce/product-category-4/render.jsx +85 -0
  207. data/app/javascript/seeds/blocks/ecommerce/product-detail-1/config.json +1 -0
  208. data/app/javascript/seeds/blocks/ecommerce/product-detail-1/data.js +1 -0
  209. data/app/javascript/seeds/blocks/ecommerce/product-detail-1/render.jsx +80 -0
  210. data/app/javascript/seeds/blocks/ecommerce/product-detail-2/config.json +1 -0
  211. data/app/javascript/seeds/blocks/ecommerce/product-detail-2/data.js +1 -0
  212. data/app/javascript/seeds/blocks/ecommerce/product-detail-2/render.jsx +226 -0
  213. data/app/javascript/seeds/blocks/ecommerce/product-detail-3/config.json +1 -0
  214. data/app/javascript/seeds/blocks/ecommerce/product-detail-3/data.js +1 -0
  215. data/app/javascript/seeds/blocks/ecommerce/product-detail-3/render.jsx +315 -0
  216. data/app/javascript/seeds/blocks/ecommerce/product-detail-4/config.json +1 -0
  217. data/app/javascript/seeds/blocks/ecommerce/product-detail-4/data.js +1 -0
  218. data/app/javascript/seeds/blocks/ecommerce/product-detail-4/render.jsx +269 -0
  219. data/app/javascript/seeds/blocks/ecommerce/product-detail-5/config.json +1 -0
  220. data/app/javascript/seeds/blocks/ecommerce/product-detail-5/data.js +1 -0
  221. data/app/javascript/seeds/blocks/ecommerce/product-detail-5/render.jsx +265 -0
  222. data/app/javascript/seeds/blocks/ecommerce/product-detail-6/config.json +1 -0
  223. data/app/javascript/seeds/blocks/ecommerce/product-detail-6/data.js +1 -0
  224. data/app/javascript/seeds/blocks/ecommerce/product-detail-6/render.jsx +477 -0
  225. data/app/javascript/seeds/blocks/ecommerce/product-detail-7/config.json +1 -0
  226. data/app/javascript/seeds/blocks/ecommerce/product-detail-7/data.js +1 -0
  227. data/app/javascript/seeds/blocks/ecommerce/product-detail-7/render.jsx +405 -0
  228. data/app/javascript/seeds/blocks/ecommerce/product-features-1/config.json +1 -0
  229. data/app/javascript/seeds/blocks/ecommerce/product-features-1/data.js +1 -0
  230. data/app/javascript/seeds/blocks/ecommerce/product-features-1/render.jsx +71 -0
  231. data/app/javascript/seeds/blocks/ecommerce/product-features-2/config.json +1 -0
  232. data/app/javascript/seeds/blocks/ecommerce/product-features-2/data.js +1 -0
  233. data/app/javascript/seeds/blocks/ecommerce/product-features-2/render.jsx +135 -0
  234. data/app/javascript/seeds/blocks/ecommerce/product-list-1/config.json +1 -0
  235. data/app/javascript/seeds/blocks/ecommerce/product-list-1/data.js +1 -0
  236. data/app/javascript/seeds/blocks/ecommerce/product-list-1/render.jsx +87 -0
  237. data/app/javascript/seeds/blocks/ecommerce/product-list-2/config.json +1 -0
  238. data/app/javascript/seeds/blocks/ecommerce/product-list-2/data.js +1 -0
  239. data/app/javascript/seeds/blocks/ecommerce/product-list-2/render.jsx +151 -0
  240. data/app/javascript/seeds/blocks/ecommerce/product-list-3/config.json +1 -0
  241. data/app/javascript/seeds/blocks/ecommerce/product-list-3/data.js +1 -0
  242. data/app/javascript/seeds/blocks/ecommerce/product-list-3/render.jsx +313 -0
  243. data/app/javascript/seeds/blocks/ecommerce/product-list-4/config.json +1 -0
  244. data/app/javascript/seeds/blocks/ecommerce/product-list-4/data.js +1 -0
  245. data/app/javascript/seeds/blocks/ecommerce/product-list-4/render.jsx +223 -0
  246. data/app/javascript/seeds/blocks/ecommerce/product-list-5/config.json +1 -0
  247. data/app/javascript/seeds/blocks/ecommerce/product-list-5/data.js +1 -0
  248. data/app/javascript/seeds/blocks/ecommerce/product-list-5/render.jsx +200 -0
  249. data/app/javascript/seeds/blocks/ecommerce/product-list-6/config.json +1 -0
  250. data/app/javascript/seeds/blocks/ecommerce/product-list-6/data.js +1 -0
  251. data/app/javascript/seeds/blocks/ecommerce/product-list-6/render.jsx +177 -0
  252. data/app/javascript/seeds/blocks/ecommerce/product-list-7/config.json +1 -0
  253. data/app/javascript/seeds/blocks/ecommerce/product-list-7/data.js +1 -0
  254. data/app/javascript/seeds/blocks/ecommerce/product-list-7/render.jsx +175 -0
  255. data/app/javascript/seeds/blocks/ecommerce/product-list-8/config.json +1 -0
  256. data/app/javascript/seeds/blocks/ecommerce/product-list-8/data.js +1 -0
  257. data/app/javascript/seeds/blocks/ecommerce/product-list-8/render.jsx +231 -0
  258. data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/config.json +1 -0
  259. data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/data.js +1 -0
  260. data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/render.jsx +64 -0
  261. data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/config.json +1 -0
  262. data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/data.js +1 -0
  263. data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/render.jsx +62 -0
  264. data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/config.json +1 -0
  265. data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/data.js +1 -0
  266. data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/render.jsx +75 -0
  267. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/config.json +1 -0
  268. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/data.js +1 -0
  269. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/render.jsx +197 -0
  270. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/config.json +1 -0
  271. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/data.js +1 -0
  272. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/render.jsx +143 -0
  273. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/config.json +1 -0
  274. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/data.js +1 -0
  275. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/render.jsx +225 -0
  276. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/config.json +1 -0
  277. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/data.js +1 -0
  278. data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/render.jsx +93 -0
  279. data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/config.json +1 -0
  280. data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/data.js +1 -0
  281. data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/render.jsx +290 -0
  282. data/app/javascript/seeds/blocks/ecommerce-charts-1/config.json +1 -0
  283. data/app/javascript/seeds/blocks/ecommerce-charts-1/data.js +1 -0
  284. data/app/javascript/seeds/blocks/ecommerce-charts-1/render.jsx +86 -0
  285. data/app/javascript/seeds/blocks/ecommerce-charts-2/config.json +1 -0
  286. data/app/javascript/seeds/blocks/ecommerce-charts-2/data.js +1 -0
  287. data/app/javascript/seeds/blocks/ecommerce-charts-2/render.jsx +119 -0
  288. data/app/javascript/seeds/blocks/ecommerce-charts-3/config.json +1 -0
  289. data/app/javascript/seeds/blocks/ecommerce-charts-3/data.js +1 -0
  290. data/app/javascript/seeds/blocks/ecommerce-charts-3/render.jsx +97 -0
  291. data/app/javascript/seeds/blocks/ecommerce-charts-4/config.json +1 -0
  292. data/app/javascript/seeds/blocks/ecommerce-charts-4/data.js +1 -0
  293. data/app/javascript/seeds/blocks/ecommerce-charts-4/render.jsx +108 -0
  294. data/app/javascript/seeds/blocks/line-charts-1/config.json +1 -0
  295. data/app/javascript/seeds/blocks/line-charts-1/data.js +1 -0
  296. data/app/javascript/seeds/blocks/line-charts-1/render.jsx +230 -0
  297. data/app/javascript/seeds/blocks/line-charts-2/config.json +1 -0
  298. data/app/javascript/seeds/blocks/line-charts-2/data.js +1 -0
  299. data/app/javascript/seeds/blocks/line-charts-2/render.jsx +118 -0
  300. data/app/javascript/seeds/blocks/line-charts-3/config.json +1 -0
  301. data/app/javascript/seeds/blocks/line-charts-3/data.js +1 -0
  302. data/app/javascript/seeds/blocks/line-charts-3/render.jsx +134 -0
  303. data/app/javascript/seeds/blocks/line-charts-4/config.json +1 -0
  304. data/app/javascript/seeds/blocks/line-charts-4/data.js +1 -0
  305. data/app/javascript/seeds/blocks/line-charts-4/render.jsx +115 -0
  306. data/app/javascript/seeds/blocks/marketing/call-to-action-1/config.json +1 -0
  307. data/app/javascript/seeds/blocks/marketing/call-to-action-1/data.js +1 -0
  308. data/app/javascript/seeds/blocks/marketing/call-to-action-1/render.jsx +31 -0
  309. data/app/javascript/seeds/blocks/marketing/call-to-action-10/config.json +1 -0
  310. data/app/javascript/seeds/blocks/marketing/call-to-action-10/data.js +1 -0
  311. data/app/javascript/seeds/blocks/marketing/call-to-action-10/render.jsx +76 -0
  312. data/app/javascript/seeds/blocks/marketing/call-to-action-2/config.json +1 -0
  313. data/app/javascript/seeds/blocks/marketing/call-to-action-2/data.js +1 -0
  314. data/app/javascript/seeds/blocks/marketing/call-to-action-2/render.jsx +78 -0
  315. data/app/javascript/seeds/blocks/marketing/call-to-action-3/config.json +1 -0
  316. data/app/javascript/seeds/blocks/marketing/call-to-action-3/data.js +1 -0
  317. data/app/javascript/seeds/blocks/marketing/call-to-action-3/render.jsx +50 -0
  318. data/app/javascript/seeds/blocks/marketing/call-to-action-4/config.json +1 -0
  319. data/app/javascript/seeds/blocks/marketing/call-to-action-4/data.js +1 -0
  320. data/app/javascript/seeds/blocks/marketing/call-to-action-4/render.jsx +24 -0
  321. data/app/javascript/seeds/blocks/marketing/call-to-action-5/config.json +1 -0
  322. data/app/javascript/seeds/blocks/marketing/call-to-action-5/data.js +1 -0
  323. data/app/javascript/seeds/blocks/marketing/call-to-action-5/render.jsx +66 -0
  324. data/app/javascript/seeds/blocks/marketing/call-to-action-6/config.json +1 -0
  325. data/app/javascript/seeds/blocks/marketing/call-to-action-6/data.js +1 -0
  326. data/app/javascript/seeds/blocks/marketing/call-to-action-6/render.jsx +69 -0
  327. data/app/javascript/seeds/blocks/marketing/call-to-action-7/config.json +1 -0
  328. data/app/javascript/seeds/blocks/marketing/call-to-action-7/data.js +1 -0
  329. data/app/javascript/seeds/blocks/marketing/call-to-action-7/render.jsx +43 -0
  330. data/app/javascript/seeds/blocks/marketing/call-to-action-8/config.json +1 -0
  331. data/app/javascript/seeds/blocks/marketing/call-to-action-8/data.js +1 -0
  332. data/app/javascript/seeds/blocks/marketing/call-to-action-8/render.jsx +63 -0
  333. data/app/javascript/seeds/blocks/marketing/call-to-action-9/config.json +1 -0
  334. data/app/javascript/seeds/blocks/marketing/call-to-action-9/data.js +1 -0
  335. data/app/javascript/seeds/blocks/marketing/call-to-action-9/render.jsx +27 -0
  336. data/app/javascript/seeds/blocks/marketing/changelog-1/config.json +1 -0
  337. data/app/javascript/seeds/blocks/marketing/changelog-1/data.js +1 -0
  338. data/app/javascript/seeds/blocks/marketing/changelog-1/render.jsx +106 -0
  339. data/app/javascript/seeds/blocks/marketing/changelog-2/config.json +1 -0
  340. data/app/javascript/seeds/blocks/marketing/changelog-2/data.js +1 -0
  341. data/app/javascript/seeds/blocks/marketing/changelog-2/render.jsx +157 -0
  342. data/app/javascript/seeds/blocks/marketing/changelog-3/config.json +1 -0
  343. data/app/javascript/seeds/blocks/marketing/changelog-3/data.js +1 -0
  344. data/app/javascript/seeds/blocks/marketing/changelog-3/render.jsx +204 -0
  345. data/app/javascript/seeds/blocks/marketing/changelog-4/config.json +1 -0
  346. data/app/javascript/seeds/blocks/marketing/changelog-4/data.js +1 -0
  347. data/app/javascript/seeds/blocks/marketing/changelog-4/render.jsx +199 -0
  348. data/app/javascript/seeds/blocks/marketing/feature-section-1/config.json +1 -0
  349. data/app/javascript/seeds/blocks/marketing/feature-section-1/data.js +1 -0
  350. data/app/javascript/seeds/blocks/marketing/feature-section-1/render.jsx +155 -0
  351. data/app/javascript/seeds/blocks/marketing/feature-section-10/config.json +1 -0
  352. data/app/javascript/seeds/blocks/marketing/feature-section-10/data.js +1 -0
  353. data/app/javascript/seeds/blocks/marketing/feature-section-10/render.jsx +83 -0
  354. data/app/javascript/seeds/blocks/marketing/feature-section-11/config.json +1 -0
  355. data/app/javascript/seeds/blocks/marketing/feature-section-11/data.js +1 -0
  356. data/app/javascript/seeds/blocks/marketing/feature-section-11/render.jsx +338 -0
  357. data/app/javascript/seeds/blocks/marketing/feature-section-12/config.json +1 -0
  358. data/app/javascript/seeds/blocks/marketing/feature-section-12/data.js +1 -0
  359. data/app/javascript/seeds/blocks/marketing/feature-section-12/render.jsx +96 -0
  360. data/app/javascript/seeds/blocks/marketing/feature-section-13/config.json +1 -0
  361. data/app/javascript/seeds/blocks/marketing/feature-section-13/data.js +1 -0
  362. data/app/javascript/seeds/blocks/marketing/feature-section-13/render.jsx +77 -0
  363. data/app/javascript/seeds/blocks/marketing/feature-section-2/config.json +1 -0
  364. data/app/javascript/seeds/blocks/marketing/feature-section-2/data.js +1 -0
  365. data/app/javascript/seeds/blocks/marketing/feature-section-2/render.jsx +117 -0
  366. data/app/javascript/seeds/blocks/marketing/feature-section-3/config.json +1 -0
  367. data/app/javascript/seeds/blocks/marketing/feature-section-3/data.js +1 -0
  368. data/app/javascript/seeds/blocks/marketing/feature-section-3/render.jsx +105 -0
  369. data/app/javascript/seeds/blocks/marketing/feature-section-4/config.json +1 -0
  370. data/app/javascript/seeds/blocks/marketing/feature-section-4/data.js +1 -0
  371. data/app/javascript/seeds/blocks/marketing/feature-section-4/render.jsx +127 -0
  372. data/app/javascript/seeds/blocks/marketing/feature-section-5/config.json +1 -0
  373. data/app/javascript/seeds/blocks/marketing/feature-section-5/data.js +1 -0
  374. data/app/javascript/seeds/blocks/marketing/feature-section-5/render.jsx +78 -0
  375. data/app/javascript/seeds/blocks/marketing/feature-section-6/config.json +1 -0
  376. data/app/javascript/seeds/blocks/marketing/feature-section-6/data.js +1 -0
  377. data/app/javascript/seeds/blocks/marketing/feature-section-6/render.jsx +79 -0
  378. data/app/javascript/seeds/blocks/marketing/feature-section-7/config.json +1 -0
  379. data/app/javascript/seeds/blocks/marketing/feature-section-7/data.js +1 -0
  380. data/app/javascript/seeds/blocks/marketing/feature-section-7/render.jsx +138 -0
  381. data/app/javascript/seeds/blocks/marketing/feature-section-8/config.json +1 -0
  382. data/app/javascript/seeds/blocks/marketing/feature-section-8/data.js +1 -0
  383. data/app/javascript/seeds/blocks/marketing/feature-section-8/render.jsx +215 -0
  384. data/app/javascript/seeds/blocks/marketing/feature-section-9/config.json +1 -0
  385. data/app/javascript/seeds/blocks/marketing/feature-section-9/data.js +1 -0
  386. data/app/javascript/seeds/blocks/marketing/feature-section-9/render.jsx +81 -0
  387. data/app/javascript/seeds/blocks/marketing/footers-1/config.json +1 -0
  388. data/app/javascript/seeds/blocks/marketing/footers-1/data.js +1 -0
  389. data/app/javascript/seeds/blocks/marketing/footers-1/render.jsx +106 -0
  390. data/app/javascript/seeds/blocks/marketing/footers-2/config.json +1 -0
  391. data/app/javascript/seeds/blocks/marketing/footers-2/data.js +1 -0
  392. data/app/javascript/seeds/blocks/marketing/footers-2/render.jsx +76 -0
  393. data/app/javascript/seeds/blocks/marketing/footers-3/config.json +1 -0
  394. data/app/javascript/seeds/blocks/marketing/footers-3/data.js +1 -0
  395. data/app/javascript/seeds/blocks/marketing/footers-3/render.jsx +160 -0
  396. data/app/javascript/seeds/blocks/marketing/footers-4/config.json +1 -0
  397. data/app/javascript/seeds/blocks/marketing/footers-4/data.js +1 -0
  398. data/app/javascript/seeds/blocks/marketing/footers-4/render.jsx +167 -0
  399. data/app/javascript/seeds/blocks/marketing/footers-5/config.json +1 -0
  400. data/app/javascript/seeds/blocks/marketing/footers-5/data.js +1 -0
  401. data/app/javascript/seeds/blocks/marketing/footers-5/render.jsx +223 -0
  402. data/app/javascript/seeds/blocks/marketing/hero-section-1/config.json +1 -0
  403. data/app/javascript/seeds/blocks/marketing/hero-section-1/data.js +1 -0
  404. data/app/javascript/seeds/blocks/marketing/hero-section-1/render.jsx +49 -0
  405. data/app/javascript/seeds/blocks/marketing/hero-section-10/config.json +1 -0
  406. data/app/javascript/seeds/blocks/marketing/hero-section-10/data.js +1 -0
  407. data/app/javascript/seeds/blocks/marketing/hero-section-10/render.jsx +147 -0
  408. data/app/javascript/seeds/blocks/marketing/hero-section-11/config.json +1 -0
  409. data/app/javascript/seeds/blocks/marketing/hero-section-11/data.js +1 -0
  410. data/app/javascript/seeds/blocks/marketing/hero-section-11/render.jsx +218 -0
  411. data/app/javascript/seeds/blocks/marketing/hero-section-12/config.json +1 -0
  412. data/app/javascript/seeds/blocks/marketing/hero-section-12/data.js +1 -0
  413. data/app/javascript/seeds/blocks/marketing/hero-section-12/render.jsx +287 -0
  414. data/app/javascript/seeds/blocks/marketing/hero-section-13/config.json +1 -0
  415. data/app/javascript/seeds/blocks/marketing/hero-section-13/data.js +1 -0
  416. data/app/javascript/seeds/blocks/marketing/hero-section-13/render.jsx +113 -0
  417. data/app/javascript/seeds/blocks/marketing/hero-section-14/config.json +1 -0
  418. data/app/javascript/seeds/blocks/marketing/hero-section-14/data.js +1 -0
  419. data/app/javascript/seeds/blocks/marketing/hero-section-14/render.jsx +249 -0
  420. data/app/javascript/seeds/blocks/marketing/hero-section-2/config.json +1 -0
  421. data/app/javascript/seeds/blocks/marketing/hero-section-2/data.js +1 -0
  422. data/app/javascript/seeds/blocks/marketing/hero-section-2/render.jsx +94 -0
  423. data/app/javascript/seeds/blocks/marketing/hero-section-3/config.json +1 -0
  424. data/app/javascript/seeds/blocks/marketing/hero-section-3/data.js +1 -0
  425. data/app/javascript/seeds/blocks/marketing/hero-section-3/render.jsx +51 -0
  426. data/app/javascript/seeds/blocks/marketing/hero-section-4/config.json +1 -0
  427. data/app/javascript/seeds/blocks/marketing/hero-section-4/data.js +1 -0
  428. data/app/javascript/seeds/blocks/marketing/hero-section-4/render.jsx +153 -0
  429. data/app/javascript/seeds/blocks/marketing/hero-section-5/config.json +1 -0
  430. data/app/javascript/seeds/blocks/marketing/hero-section-5/data.js +1 -0
  431. data/app/javascript/seeds/blocks/marketing/hero-section-5/render.jsx +210 -0
  432. data/app/javascript/seeds/blocks/marketing/hero-section-6/config.json +1 -0
  433. data/app/javascript/seeds/blocks/marketing/hero-section-6/data.js +1 -0
  434. data/app/javascript/seeds/blocks/marketing/hero-section-6/render.jsx +191 -0
  435. data/app/javascript/seeds/blocks/marketing/hero-section-7/config.json +1 -0
  436. data/app/javascript/seeds/blocks/marketing/hero-section-7/data.js +1 -0
  437. data/app/javascript/seeds/blocks/marketing/hero-section-7/render.jsx +306 -0
  438. data/app/javascript/seeds/blocks/marketing/hero-section-8/config.json +1 -0
  439. data/app/javascript/seeds/blocks/marketing/hero-section-8/data.js +1 -0
  440. data/app/javascript/seeds/blocks/marketing/hero-section-8/render.jsx +103 -0
  441. data/app/javascript/seeds/blocks/marketing/hero-section-9/config.json +1 -0
  442. data/app/javascript/seeds/blocks/marketing/hero-section-9/data.js +1 -0
  443. data/app/javascript/seeds/blocks/marketing/hero-section-9/render.jsx +354 -0
  444. data/app/javascript/seeds/blocks/marketing/integrations-1/config.json +1 -0
  445. data/app/javascript/seeds/blocks/marketing/integrations-1/data.js +1 -0
  446. data/app/javascript/seeds/blocks/marketing/integrations-1/render.jsx +483 -0
  447. data/app/javascript/seeds/blocks/marketing/integrations-2/config.json +1 -0
  448. data/app/javascript/seeds/blocks/marketing/integrations-2/data.js +1 -0
  449. data/app/javascript/seeds/blocks/marketing/integrations-2/render.jsx +468 -0
  450. data/app/javascript/seeds/blocks/marketing/integrations-3/config.json +1 -0
  451. data/app/javascript/seeds/blocks/marketing/integrations-3/data.js +1 -0
  452. data/app/javascript/seeds/blocks/marketing/integrations-3/render.jsx +441 -0
  453. data/app/javascript/seeds/blocks/marketing/integrations-4/config.json +1 -0
  454. data/app/javascript/seeds/blocks/marketing/integrations-4/data.js +1 -0
  455. data/app/javascript/seeds/blocks/marketing/integrations-4/render.jsx +433 -0
  456. data/app/javascript/seeds/blocks/marketing/integrations-5/config.json +1 -0
  457. data/app/javascript/seeds/blocks/marketing/integrations-5/data.js +1 -0
  458. data/app/javascript/seeds/blocks/marketing/integrations-5/render.jsx +477 -0
  459. data/app/javascript/seeds/blocks/marketing/integrations-6/config.json +1 -0
  460. data/app/javascript/seeds/blocks/marketing/integrations-6/data.js +1 -0
  461. data/app/javascript/seeds/blocks/marketing/integrations-6/render.jsx +468 -0
  462. data/app/javascript/seeds/blocks/marketing/navbars-1/config.json +1 -0
  463. data/app/javascript/seeds/blocks/marketing/navbars-1/data.js +1 -0
  464. data/app/javascript/seeds/blocks/marketing/navbars-1/render.jsx +133 -0
  465. data/app/javascript/seeds/blocks/marketing/navbars-2/config.json +1 -0
  466. data/app/javascript/seeds/blocks/marketing/navbars-2/data.js +1 -0
  467. data/app/javascript/seeds/blocks/marketing/navbars-2/render.jsx +95 -0
  468. data/app/javascript/seeds/blocks/marketing/navbars-3/config.json +1 -0
  469. data/app/javascript/seeds/blocks/marketing/navbars-3/data.js +1 -0
  470. data/app/javascript/seeds/blocks/marketing/navbars-3/render.jsx +246 -0
  471. data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/config.json +1 -0
  472. data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/data.js +1 -0
  473. data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/render.jsx +45 -0
  474. data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/config.json +1 -0
  475. data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/data.js +1 -0
  476. data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/render.jsx +55 -0
  477. data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/config.json +1 -0
  478. data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/data.js +1 -0
  479. data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/render.jsx +29 -0
  480. data/app/javascript/seeds/blocks/marketing/pricing-table-1/config.json +1 -0
  481. data/app/javascript/seeds/blocks/marketing/pricing-table-1/data.js +1 -0
  482. data/app/javascript/seeds/blocks/marketing/pricing-table-1/render.jsx +110 -0
  483. data/app/javascript/seeds/blocks/marketing/pricing-table-2/config.json +1 -0
  484. data/app/javascript/seeds/blocks/marketing/pricing-table-2/data.js +1 -0
  485. data/app/javascript/seeds/blocks/marketing/pricing-table-2/render.jsx +71 -0
  486. data/app/javascript/seeds/blocks/marketing/pricing-table-3/config.json +1 -0
  487. data/app/javascript/seeds/blocks/marketing/pricing-table-3/data.js +1 -0
  488. data/app/javascript/seeds/blocks/marketing/pricing-table-3/render.jsx +124 -0
  489. data/app/javascript/seeds/blocks/marketing/pricing-table-4/config.json +1 -0
  490. data/app/javascript/seeds/blocks/marketing/pricing-table-4/data.js +1 -0
  491. data/app/javascript/seeds/blocks/marketing/pricing-table-4/render.jsx +205 -0
  492. data/app/javascript/seeds/blocks/marketing/pricing-table-5/config.json +1 -0
  493. data/app/javascript/seeds/blocks/marketing/pricing-table-5/data.js +1 -0
  494. data/app/javascript/seeds/blocks/marketing/pricing-table-5/render.jsx +143 -0
  495. data/app/javascript/seeds/blocks/marketing/pricing-table-6/config.json +1 -0
  496. data/app/javascript/seeds/blocks/marketing/pricing-table-6/data.js +1 -0
  497. data/app/javascript/seeds/blocks/marketing/pricing-table-6/render.jsx +195 -0
  498. data/app/javascript/seeds/blocks/marketing/pricing-table-7/config.json +1 -0
  499. data/app/javascript/seeds/blocks/marketing/pricing-table-7/data.js +1 -0
  500. data/app/javascript/seeds/blocks/marketing/pricing-table-7/render.jsx +351 -0
  501. data/app/javascript/seeds/blocks/marketing/team-sections-1/config.json +1 -0
  502. data/app/javascript/seeds/blocks/marketing/team-sections-1/data.js +1 -0
  503. data/app/javascript/seeds/blocks/marketing/team-sections-1/render.jsx +71 -0
  504. data/app/javascript/seeds/blocks/marketing/team-sections-2/config.json +1 -0
  505. data/app/javascript/seeds/blocks/marketing/team-sections-2/data.js +1 -0
  506. data/app/javascript/seeds/blocks/marketing/team-sections-2/render.jsx +125 -0
  507. data/app/javascript/seeds/blocks/marketing/team-sections-3/config.json +1 -0
  508. data/app/javascript/seeds/blocks/marketing/team-sections-3/data.js +1 -0
  509. data/app/javascript/seeds/blocks/marketing/team-sections-3/render.jsx +136 -0
  510. data/app/javascript/seeds/blocks/marketing/team-sections-4/config.json +1 -0
  511. data/app/javascript/seeds/blocks/marketing/team-sections-4/data.js +1 -0
  512. data/app/javascript/seeds/blocks/marketing/team-sections-4/render.jsx +107 -0
  513. data/app/javascript/seeds/blocks/marketing/team-sections-5/config.json +1 -0
  514. data/app/javascript/seeds/blocks/marketing/team-sections-5/data.js +1 -0
  515. data/app/javascript/seeds/blocks/marketing/team-sections-5/render.jsx +124 -0
  516. data/app/javascript/seeds/blocks/marketing/testimonials-1/config.json +1 -0
  517. data/app/javascript/seeds/blocks/marketing/testimonials-1/data.js +1 -0
  518. data/app/javascript/seeds/blocks/marketing/testimonials-1/render.jsx +112 -0
  519. data/app/javascript/seeds/blocks/marketing/testimonials-10/config.json +1 -0
  520. data/app/javascript/seeds/blocks/marketing/testimonials-10/data.js +1 -0
  521. data/app/javascript/seeds/blocks/marketing/testimonials-10/render.jsx +106 -0
  522. data/app/javascript/seeds/blocks/marketing/testimonials-11/config.json +1 -0
  523. data/app/javascript/seeds/blocks/marketing/testimonials-11/data.js +1 -0
  524. data/app/javascript/seeds/blocks/marketing/testimonials-11/render.jsx +79 -0
  525. data/app/javascript/seeds/blocks/marketing/testimonials-12/config.json +1 -0
  526. data/app/javascript/seeds/blocks/marketing/testimonials-12/data.js +1 -0
  527. data/app/javascript/seeds/blocks/marketing/testimonials-12/render.jsx +173 -0
  528. data/app/javascript/seeds/blocks/marketing/testimonials-13/config.json +1 -0
  529. data/app/javascript/seeds/blocks/marketing/testimonials-13/data.js +1 -0
  530. data/app/javascript/seeds/blocks/marketing/testimonials-13/render.jsx +121 -0
  531. data/app/javascript/seeds/blocks/marketing/testimonials-14/config.json +1 -0
  532. data/app/javascript/seeds/blocks/marketing/testimonials-14/data.js +1 -0
  533. data/app/javascript/seeds/blocks/marketing/testimonials-14/render.jsx +158 -0
  534. data/app/javascript/seeds/blocks/marketing/testimonials-15/config.json +1 -0
  535. data/app/javascript/seeds/blocks/marketing/testimonials-15/data.js +1 -0
  536. data/app/javascript/seeds/blocks/marketing/testimonials-15/render.jsx +109 -0
  537. data/app/javascript/seeds/blocks/marketing/testimonials-2/config.json +1 -0
  538. data/app/javascript/seeds/blocks/marketing/testimonials-2/data.js +1 -0
  539. data/app/javascript/seeds/blocks/marketing/testimonials-2/render.jsx +81 -0
  540. data/app/javascript/seeds/blocks/marketing/testimonials-3/config.json +1 -0
  541. data/app/javascript/seeds/blocks/marketing/testimonials-3/data.js +1 -0
  542. data/app/javascript/seeds/blocks/marketing/testimonials-3/render.jsx +149 -0
  543. data/app/javascript/seeds/blocks/marketing/testimonials-4/config.json +1 -0
  544. data/app/javascript/seeds/blocks/marketing/testimonials-4/data.js +1 -0
  545. data/app/javascript/seeds/blocks/marketing/testimonials-4/render.jsx +148 -0
  546. data/app/javascript/seeds/blocks/marketing/testimonials-5/config.json +1 -0
  547. data/app/javascript/seeds/blocks/marketing/testimonials-5/data.js +1 -0
  548. data/app/javascript/seeds/blocks/marketing/testimonials-5/render.jsx +153 -0
  549. data/app/javascript/seeds/blocks/marketing/testimonials-6/config.json +1 -0
  550. data/app/javascript/seeds/blocks/marketing/testimonials-6/data.js +1 -0
  551. data/app/javascript/seeds/blocks/marketing/testimonials-6/render.jsx +155 -0
  552. data/app/javascript/seeds/blocks/marketing/testimonials-7/config.json +1 -0
  553. data/app/javascript/seeds/blocks/marketing/testimonials-7/data.js +1 -0
  554. data/app/javascript/seeds/blocks/marketing/testimonials-7/render.jsx +102 -0
  555. data/app/javascript/seeds/blocks/marketing/testimonials-8/config.json +1 -0
  556. data/app/javascript/seeds/blocks/marketing/testimonials-8/data.js +1 -0
  557. data/app/javascript/seeds/blocks/marketing/testimonials-8/render.jsx +161 -0
  558. data/app/javascript/seeds/blocks/marketing/testimonials-9/config.json +1 -0
  559. data/app/javascript/seeds/blocks/marketing/testimonials-9/data.js +1 -0
  560. data/app/javascript/seeds/blocks/marketing/testimonials-9/render.jsx +195 -0
  561. data/app/javascript/seeds/blocks/project-management-charts-1/config.json +1 -0
  562. data/app/javascript/seeds/blocks/project-management-charts-1/data.js +1 -0
  563. data/app/javascript/seeds/blocks/project-management-charts-1/render.jsx +172 -0
  564. data/app/javascript/seeds/blocks/project-management-charts-2/config.json +1 -0
  565. data/app/javascript/seeds/blocks/project-management-charts-2/data.js +1 -0
  566. data/app/javascript/seeds/blocks/project-management-charts-2/render.jsx +147 -0
  567. data/app/javascript/seeds/blocks/switch-cards-1/config.json +1 -0
  568. data/app/javascript/seeds/blocks/switch-cards-1/data.js +1 -0
  569. data/app/javascript/seeds/blocks/switch-cards-1/render.jsx +116 -0
  570. data/app/javascript/seeds/blocks/theme-switchers-1/config.json +1 -0
  571. data/app/javascript/seeds/blocks/theme-switchers-1/data.js +1 -0
  572. data/app/javascript/seeds/blocks/theme-switchers-1/render.jsx +22 -0
  573. data/app/javascript/seeds/blocks/theme-switchers-2/config.json +1 -0
  574. data/app/javascript/seeds/blocks/theme-switchers-2/data.js +1 -0
  575. data/app/javascript/seeds/blocks/theme-switchers-2/render.jsx +51 -0
  576. data/app/javascript/seeds/blocks/theme-switchers-3/config.json +1 -0
  577. data/app/javascript/seeds/blocks/theme-switchers-3/data.js +1 -0
  578. data/app/javascript/seeds/blocks/theme-switchers-3/render.jsx +37 -0
  579. data/app/javascript/seeds/examples/blog-cards-1/config.json +1 -0
  580. data/app/javascript/seeds/examples/blog-cards-1/data.js +1 -0
  581. data/app/javascript/seeds/examples/blog-cards-1/render.jsx +81 -0
  582. data/app/javascript/seeds/examples/blog-cards-2/config.json +1 -0
  583. data/app/javascript/seeds/examples/blog-cards-2/data.js +1 -0
  584. data/app/javascript/seeds/examples/blog-cards-2/render.jsx +78 -0
  585. data/app/javascript/seeds/examples/blog-cards-3/config.json +1 -0
  586. data/app/javascript/seeds/examples/blog-cards-3/data.js +1 -0
  587. data/app/javascript/seeds/examples/blog-cards-3/render.jsx +80 -0
  588. data/app/javascript/seeds/examples/blog-cards-4/config.json +1 -0
  589. data/app/javascript/seeds/examples/blog-cards-4/data.js +1 -0
  590. data/app/javascript/seeds/examples/blog-cards-4/render.jsx +32 -0
  591. data/app/javascript/seeds/examples/chat-bubbles-1/config.json +1 -0
  592. data/app/javascript/seeds/examples/chat-bubbles-1/data.js +1 -0
  593. data/app/javascript/seeds/examples/chat-bubbles-1/render.jsx +154 -0
  594. data/app/javascript/seeds/examples/chat-bubbles-2/config.json +1 -0
  595. data/app/javascript/seeds/examples/chat-bubbles-2/data.js +1 -0
  596. data/app/javascript/seeds/examples/chat-bubbles-2/render.jsx +88 -0
  597. data/app/javascript/seeds/examples/chat-bubbles-3/config.json +1 -0
  598. data/app/javascript/seeds/examples/chat-bubbles-3/data.js +1 -0
  599. data/app/javascript/seeds/examples/chat-bubbles-3/render.jsx +90 -0
  600. data/app/javascript/seeds/examples/chat-bubbles-4/config.json +1 -0
  601. data/app/javascript/seeds/examples/chat-bubbles-4/data.js +1 -0
  602. data/app/javascript/seeds/examples/chat-bubbles-4/render.jsx +169 -0
  603. data/app/javascript/seeds/examples/payment-methods-1/config.json +1 -0
  604. data/app/javascript/seeds/examples/payment-methods-1/data.js +1 -0
  605. data/app/javascript/seeds/examples/payment-methods-1/render.jsx +128 -0
  606. data/app/javascript/seeds/examples/payment-methods-2/config.json +1 -0
  607. data/app/javascript/seeds/examples/payment-methods-2/data.js +1 -0
  608. data/app/javascript/seeds/examples/payment-methods-2/render.jsx +80 -0
  609. data/app/javascript/seeds/examples/payment-methods-3/config.json +1 -0
  610. data/app/javascript/seeds/examples/payment-methods-3/data.js +1 -0
  611. data/app/javascript/seeds/examples/payment-methods-3/render.jsx +1 -0
  612. data/app/javascript/seeds/examples/product-cards-1/config.json +1 -0
  613. data/app/javascript/seeds/examples/product-cards-1/data.js +1 -0
  614. data/app/javascript/seeds/examples/product-cards-1/render.jsx +48 -0
  615. data/app/javascript/seeds/examples/product-cards-2/config.json +1 -0
  616. data/app/javascript/seeds/examples/product-cards-2/data.js +1 -0
  617. data/app/javascript/seeds/examples/product-cards-2/render.jsx +53 -0
  618. data/app/javascript/seeds/examples/product-cards-3/config.json +1 -0
  619. data/app/javascript/seeds/examples/product-cards-3/data.js +1 -0
  620. data/app/javascript/seeds/examples/product-cards-3/render.jsx +102 -0
  621. data/app/javascript/seeds/examples/product-cards-4/config.json +1 -0
  622. data/app/javascript/seeds/examples/product-cards-4/data.js +1 -0
  623. data/app/javascript/seeds/examples/product-cards-4/render.jsx +40 -0
  624. data/app/javascript/seeds/examples/product-cards-5/config.json +1 -0
  625. data/app/javascript/seeds/examples/product-cards-5/data.js +1 -0
  626. data/app/javascript/seeds/examples/product-cards-5/render.jsx +79 -0
  627. data/app/javascript/seeds/examples/product-cards-6/config.json +1 -0
  628. data/app/javascript/seeds/examples/product-cards-6/data.js +1 -0
  629. data/app/javascript/seeds/examples/product-cards-6/render.jsx +180 -0
  630. data/app/javascript/seeds/examples/product-cards-7/config.json +1 -0
  631. data/app/javascript/seeds/examples/product-cards-7/data.js +1 -0
  632. data/app/javascript/seeds/examples/product-cards-7/render.jsx +181 -0
  633. data/app/javascript/seeds/examples/product-list-1/config.json +1 -0
  634. data/app/javascript/seeds/examples/product-list-1/data.js +1 -0
  635. data/app/javascript/seeds/examples/product-list-1/render.jsx +114 -0
  636. data/app/javascript/seeds/examples/review-cards-1/config.json +1 -0
  637. data/app/javascript/seeds/examples/review-cards-1/data.js +1 -0
  638. data/app/javascript/seeds/examples/review-cards-1/render.jsx +54 -0
  639. data/app/javascript/seeds/examples/review-cards-2/config.json +1 -0
  640. data/app/javascript/seeds/examples/review-cards-2/data.js +1 -0
  641. data/app/javascript/seeds/examples/review-cards-2/render.jsx +68 -0
  642. data/app/javascript/seeds/examples/review-cards-3/config.json +1 -0
  643. data/app/javascript/seeds/examples/review-cards-3/data.js +1 -0
  644. data/app/javascript/seeds/examples/review-cards-3/render.jsx +101 -0
  645. data/app/javascript/seeds/examples/social-media-post-1/config.json +1 -0
  646. data/app/javascript/seeds/examples/social-media-post-1/data.js +1 -0
  647. data/app/javascript/seeds/examples/social-media-post-1/render.jsx +162 -0
  648. data/app/javascript/seeds/examples/social-media-post-2/config.json +1 -0
  649. data/app/javascript/seeds/examples/social-media-post-2/data.js +1 -0
  650. data/app/javascript/seeds/examples/social-media-post-2/render.jsx +172 -0
  651. data/app/javascript/seeds/examples/social-media-post-3/config.json +1 -0
  652. data/app/javascript/seeds/examples/social-media-post-3/data.js +1 -0
  653. data/app/javascript/seeds/examples/social-media-post-3/render.jsx +270 -0
  654. data/app/javascript/seeds/examples/social-media-post-4/config.json +1 -0
  655. data/app/javascript/seeds/examples/social-media-post-4/data.js +1 -0
  656. data/app/javascript/seeds/examples/social-media-post-4/render.jsx +188 -0
  657. data/app/javascript/seeds/examples/stat-cards-1/config.json +1 -0
  658. data/app/javascript/seeds/examples/stat-cards-1/data.js +1 -0
  659. data/app/javascript/seeds/examples/stat-cards-1/render.jsx +31 -0
  660. data/app/javascript/seeds/examples/stat-cards-2/config.json +1 -0
  661. data/app/javascript/seeds/examples/stat-cards-2/data.js +1 -0
  662. data/app/javascript/seeds/examples/stat-cards-2/render.jsx +42 -0
  663. data/app/javascript/seeds/examples/stat-cards-3/config.json +1 -0
  664. data/app/javascript/seeds/examples/stat-cards-3/data.js +1 -0
  665. data/app/javascript/seeds/examples/stat-cards-3/render.jsx +114 -0
  666. data/app/javascript/seeds/examples/stat-cards-4/config.json +1 -0
  667. data/app/javascript/seeds/examples/stat-cards-4/data.js +1 -0
  668. data/app/javascript/seeds/examples/stat-cards-4/render.jsx +117 -0
  669. data/app/javascript/seeds/examples/task-cards-1/config.json +1 -0
  670. data/app/javascript/seeds/examples/task-cards-1/data.js +1 -0
  671. data/app/javascript/seeds/examples/task-cards-1/render.jsx +133 -0
  672. data/app/javascript/seeds/examples/task-cards-2/config.json +1 -0
  673. data/app/javascript/seeds/examples/task-cards-2/data.js +1 -0
  674. data/app/javascript/seeds/examples/task-cards-2/render.jsx +122 -0
  675. data/app/javascript/seeds/examples/welcome-cards-1/config.json +1 -0
  676. data/app/javascript/seeds/examples/welcome-cards-1/data.js +1 -0
  677. data/app/javascript/seeds/examples/welcome-cards-1/render.jsx +40 -0
  678. data/app/javascript/seeds/examples/welcome-cards-2/config.json +1 -0
  679. data/app/javascript/seeds/examples/welcome-cards-2/data.js +1 -0
  680. data/app/javascript/seeds/examples/welcome-cards-2/render.jsx +58 -0
  681. data/app/javascript/seeds/examples/welcome-cards-3/config.json +1 -0
  682. data/app/javascript/seeds/examples/welcome-cards-3/data.js +1 -0
  683. data/app/javascript/seeds/examples/welcome-cards-3/render.jsx +91 -0
  684. data/app/javascript/seeds/ide-editor/config.json +4 -0
  685. data/app/javascript/seeds/ide-editor/data.js +16 -0
  686. data/app/javascript/seeds/ide-editor/render.jsx +132 -0
  687. data/app/javascript/seeds/ide-file-tree/config.json +4 -0
  688. data/app/javascript/seeds/ide-file-tree/data.js +50 -0
  689. data/app/javascript/seeds/ide-file-tree/render.jsx +426 -0
  690. data/app/javascript/seeds/ide-preview/config.json +4 -0
  691. data/app/javascript/seeds/ide-preview/data.js +4 -0
  692. data/app/javascript/seeds/ide-preview/render.jsx +49 -0
  693. data/app/javascript/seeds/ide-terminal/config.json +4 -0
  694. data/app/javascript/seeds/ide-terminal/data.js +4 -0
  695. data/app/javascript/seeds/ide-terminal/render.jsx +247 -0
  696. data/app/javascript/seeds/main-menu/config.json +9 -0
  697. data/app/javascript/seeds/main-menu/data.js +6 -0
  698. data/app/javascript/seeds/main-menu/render.jsx +70 -0
  699. data/app/models/concerns/jigsaw/grid_configurable.rb +89 -0
  700. data/app/models/concerns/jigsaw/slot_compilable.rb +69 -0
  701. data/app/models/jigsaw/application_record.rb +5 -0
  702. data/app/models/jigsaw/layout.rb +61 -0
  703. data/app/models/jigsaw/layout_template.rb +16 -0
  704. data/app/models/jigsaw/page.rb +35 -0
  705. data/app/models/jigsaw/schemas/layout_config.json +54 -0
  706. data/app/models/jigsaw/slot.rb +109 -0
  707. data/app/models/jigsaw/slot_template.rb +29 -0
  708. data/app/views/jigsaw/dashboard/index.html.ruby +23 -0
  709. data/app/views/jigsaw/layout_templates/_form.html.ruby +69 -0
  710. data/app/views/jigsaw/layout_templates/edit.html.ruby +72 -0
  711. data/app/views/jigsaw/layout_templates/index.html.ruby +48 -0
  712. data/app/views/jigsaw/layout_templates/new.html.ruby +19 -0
  713. data/app/views/jigsaw/pages/_form.html.ruby +75 -0
  714. data/app/views/jigsaw/pages/edit.html.ruby +104 -0
  715. data/app/views/jigsaw/pages/index.html.ruby +65 -0
  716. data/app/views/jigsaw/pages/new.html.ruby +34 -0
  717. data/app/views/jigsaw/pages/show.html.ruby +28 -0
  718. data/app/views/jigsaw/slot_templates/edit.html.ruby +42 -0
  719. data/app/views/jigsaw/slot_templates/index.html.ruby +73 -0
  720. data/app/views/jigsaw/slot_templates/new.html.ruby +21 -0
  721. data/app/views/jigsaw/slot_templates/show.html.ruby +38 -0
  722. data/app/views/jigsaw/slots/_shared/_menu.html.ruby +7 -0
  723. data/app/views/jigsaw/slots/edit.html.ruby +52 -0
  724. data/app/views/jigsaw/slots/index.html.ruby +17 -0
  725. data/app/views/layouts/jigsaw/application.html.ruby +31 -0
  726. data/config/importmap.rb +35 -0
  727. data/config/routes.rb +27 -0
  728. data/db/migrate/20260505185636_create_jigsaw_custom_pages.rb +12 -0
  729. data/db/migrate/20260505185637_create_jigsaw_data_functions.rb +15 -0
  730. data/db/migrate/20260505185638_create_jigsaw_render_functions.rb +15 -0
  731. data/db/migrate/20260505185639_create_jigsaw_page_modules.rb +15 -0
  732. data/db/migrate/20260505185640_create_jigsaw_layouts.rb +14 -0
  733. data/db/migrate/20260506000001_remove_slot_from_jigsaw_page_modules.rb +5 -0
  734. data/db/migrate/20260506000002_make_page_module_functions_optional.rb +6 -0
  735. data/db/migrate/20260506000003_inline_functions_on_page_modules.rb +55 -0
  736. data/db/migrate/20260507000001_move_layout_fk_to_layouts_table.rb +30 -0
  737. data/db/migrate/20260507000002_move_page_modules_to_layouts.rb +30 -0
  738. data/db/migrate/20260508000001_rename_custom_pages_to_pages.rb +18 -0
  739. data/db/migrate/20260508000002_rename_page_modules_to_slots.rb +7 -0
  740. data/db/migrate/20260509000001_create_jigsaw_templates.rb +13 -0
  741. data/db/migrate/20260509000002_create_jigsaw_template_layouts.rb +12 -0
  742. data/db/migrate/20260509000003_create_jigsaw_template_slots.rb +22 -0
  743. data/db/migrate/20260509000004_add_template_linking_to_layouts.rb +6 -0
  744. data/db/migrate/20260509000005_add_linked_to_template_to_slots.rb +5 -0
  745. data/db/migrate/20260510000001_refactor_templates_to_layout_and_slot_templates.rb +104 -0
  746. data/db/seeds/01_pages.rb +69 -0
  747. data/db/seeds/02_main_menu_slot.rb +15 -0
  748. data/db/seeds/03_webcontainer_ide.rb +51 -0
  749. data/db/seeds.rb +120 -0
  750. data/lib/jigsaw/engine.rb +29 -0
  751. data/lib/jigsaw/grid_layout_generator.rb +55 -0
  752. data/lib/jigsaw/jsx_compiler.rb +21 -0
  753. data/lib/jigsaw/version.rb +3 -0
  754. data/lib/jigsaw/version.rb.erb +3 -0
  755. data/lib/jigsaw.rb +11 -0
  756. data/lib/jigsaw_engine.rb +4 -0
  757. data/lib/tasks/kube_tasks.rake +4 -0
  758. data/lib/tasks/shadcn.rake +171 -0
  759. metadata +1033 -0
@@ -0,0 +1,218 @@
1
+ "use client";
2
+
3
+ import { motion } from "motion/react";
4
+ import { Button } from "@/components/ui/button";
5
+ import { Badge } from "@/components/ui/badge";
6
+ import {
7
+ Sheet,
8
+ SheetContent,
9
+ SheetHeader,
10
+ SheetTitle,
11
+ SheetTrigger,
12
+ } from "@/components/ui/sheet";
13
+ import { ArrowRight, Menu } from "lucide-react";
14
+ import Image from "next/image";
15
+ import Link from "next/link";
16
+
17
+ const IMAGES = [
18
+ "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=600&auto=format&fit=crop",
19
+ "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?q=80&w=600&auto=format&fit=crop",
20
+ "https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?q=80&w=600&auto=format&fit=crop",
21
+ "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?q=80&w=600&auto=format&fit=crop",
22
+ "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?q=80&w=600&auto=format&fit=crop",
23
+ "https://images.unsplash.com/photo-1534528741775-53994a69daeb?q=80&w=600&auto=format&fit=crop",
24
+ "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=600&auto=format&fit=crop",
25
+ "https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?q=80&w=600&auto=format&fit=crop",
26
+ ];
27
+
28
+ const COPIES = 4;
29
+
30
+ const NAV_ITEMS = [
31
+ { label: "Products", href: "#" },
32
+ { label: "Stories", href: "#" },
33
+ { label: "Pricing", href: "#" },
34
+ { label: "Docs", href: "#" },
35
+ ];
36
+
37
+ export default function HeroSection() {
38
+ return (
39
+ <main
40
+ className="relative w-full overflow-hidden"
41
+ style={
42
+ {
43
+ "--_accent": "#523f71",
44
+ "--_base": "color-mix(in srgb, var(--_accent) 25%, black)",
45
+ "--_gradient-blend-mode": "normal",
46
+ "--_gradient-blur": "30px",
47
+ background:
48
+ "radial-gradient(at 88.9% 55.5%, var(--_accent) 0px, transparent 50%), radial-gradient(at 19.3% 21.6%, var(--_accent) 0px, transparent 50%) var(--_base)",
49
+ mixBlendMode:
50
+ "var(--_gradient-blend-mode)" as React.CSSProperties["mixBlendMode"],
51
+ } as React.CSSProperties
52
+ }
53
+ >
54
+ <header className="p-4">
55
+ <div
56
+ className="relative z-10 mx-auto grid max-w-7xl grid-cols-2 items-center justify-between rounded-2xl border border-white/10 bg-white/5 px-4 py-3 lg:grid-cols-3"
57
+ style={{
58
+ backdropFilter:
59
+ "blur(var(--_gradient-blur)) contrast(100%) brightness(100%)",
60
+ WebkitBackdropFilter:
61
+ "blur(var(--_gradient-blur)) contrast(100%) brightness(100%)",
62
+ }}
63
+ >
64
+ <Link href="#" className="flex shrink-0 items-center gap-2">
65
+ <Image
66
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgd2lkdGg9IjMwMC4wMDAwMDBwdCIgaGVpZ2h0PSIzMDAuMDAwMDAwcHQiIHZpZXdCb3g9IjAgMCAzMDAuMDAwMDAwIDMwMC4wMDAwMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMzAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTAgMTUwMCBsMCAtMTUwMCAxNTAwIDAgMTUwMCAwIDAgMTUwMCAwIDE1MDAgLTE1MDAgMCAtMTUwMCAwIDAgLTE1MDB6IG02NDcgMTA2MCBjMzEgLTEyIDE4ODIgLTE4NTYgMTkxNCAtMTkwOCA1NCAtODUgMSAtMjA5IC05NyAtMjI4IC05MSAtMTcgLTMwIC03MSAtMTA1NyA5NTQgLTUzNyA1MzcgLTk1NCA5NjIgLTk2MyA5ODEgLTU2IDExNyA3NiAyNDggMjAzIDIwMXogbTg0NSAtMyBjMTUgLTcgMjYzIC0yNDcgNTUyIC01MzQgNDUxIC00NDkgNTI3IC01MjggNTM2IC01NjMgMTYgLTU4IC0xIC0xMTAgLTUwIC0xNTQgLTM1IC0zMSAtNDcgLTM2IC05MSAtMzYgLTI3IDAgLTYyIDYgLTc3IDE0IC0xNSA4IC0yNjMgMjUxIC01NTEgNTQwIGwtNTI1IDUyNSAtNCA1OCBjLTMgNDkgMCA2NCAyMCA5MyA0MSA2MiAxMjQgODYgMTkwIDU3eiBtODU2IC0xIGMxNSAtOCA3MCAtNTkgMTIzIC0xMTMgMTE2IC0xMTggMTMzIC0xNTQgMTA0IC0yMjkgLTMxIC04MCAtMTM2IC0xMjggLTIwMyAtOTEgLTQ5IDI4IC0yMTIgMTkxIC0yMzMgMjMzIC0zNCA3MiAtOCAxNTEgNjUgMTk1IDM3IDIyIDEwNiAyNSAxNDQgNXogbS0xNjgzIC04NTcgYzE3IC0xMCAyNjIgLTI1MSA1NDcgLTUzNiA1NDggLTU1MCA1MzkgLTUzOSA1MjQgLTYxOCAtMTggLTk2IC0xNDEgLTE1NSAtMjIxIC0xMDcgLTE2IDExIC0yNjUgMjUyIC01NTIgNTM4IC00NjUgNDYxIC01MjMgNTIzIC01MjkgNTU3IC0xNCA4MiAyNyAxNTYgMTAxIDE4MiA0NSAxNiA4NiAxMSAxMzAgLTE2eiBtLTI4IC04MzAgYzMyIC0xMiAyMTggLTE5MSAyMzkgLTIzMSAzMSAtNTkgOSAtMTQ2IC00NyAtMTg3IC0zNSAtMjYgLTkzIC0zNyAtMTM2IC0yNiAtMzAgNyAtMjI2IDE5NCAtMjQ5IDIzNyAtNjAgMTE1IDY5IDI1NCAxOTMgMjA3eiIvPgo8L2c+Cjwvc3ZnPg=="
67
+ alt="Logo"
68
+ className="rounded-sm invert"
69
+ width={28}
70
+ height={28}
71
+ />
72
+ </Link>
73
+
74
+ <nav className="hidden items-center gap-8 lg:flex">
75
+ {NAV_ITEMS.map((item) => (
76
+ <Link
77
+ key={item.label}
78
+ href={item.href}
79
+ className="text-sm font-medium text-white/80 transition-colors hover:text-white"
80
+ >
81
+ {item.label}
82
+ </Link>
83
+ ))}
84
+ </nav>
85
+
86
+ <div className="flex items-center justify-end gap-3">
87
+ <Button
88
+ variant="ghost"
89
+ size="lg"
90
+ className="dark rounded-full border border-white/20 text-white hover:bg-white/10"
91
+ >
92
+ Contact
93
+ </Button>
94
+ <Button
95
+ size="lg"
96
+ className="rounded-full bg-white text-black"
97
+ variant="secondary"
98
+ >
99
+ Get Started
100
+ </Button>
101
+ <Sheet>
102
+ <SheetTrigger asChild>
103
+ <Button
104
+ variant="ghost"
105
+ size="icon"
106
+ className="text-white lg:hidden"
107
+ >
108
+ <Menu className="size-5" />
109
+ </Button>
110
+ </SheetTrigger>
111
+ <SheetContent
112
+ side="right"
113
+ className="flex h-full flex-col border-white/10"
114
+ >
115
+ <SheetContent>
116
+ <SheetHeader>
117
+ <SheetTitle className="font-normal">Menu</SheetTitle>
118
+ </SheetHeader>
119
+ <nav className="mt-auto flex flex-col gap-1 p-4">
120
+ {NAV_ITEMS.map((item) => (
121
+ <Link
122
+ key={item.label}
123
+ href={item.href}
124
+ className="rounded-md py-2.5 text-center"
125
+ >
126
+ {item.label}
127
+ </Link>
128
+ ))}
129
+ </nav>
130
+ <div className="mt-auto flex flex-col gap-2 p-4">
131
+ <Button variant="outline">Contact</Button>
132
+ <Button>Get Started</Button>
133
+ </div>
134
+ </SheetContent>
135
+ </SheetContent>
136
+ </Sheet>
137
+ </div>
138
+ </div>
139
+ </header>
140
+
141
+ {/* Hero Content */}
142
+ <div className="relative z-10 container mx-auto flex flex-col items-center px-4 pt-20 text-center md:pt-32">
143
+ <div className="max-w-4xl">
144
+ <Link
145
+ href="#"
146
+ className="group mb-4 inline-flex items-center md:mb-6"
147
+ >
148
+ <Badge
149
+ variant="outline"
150
+ className="inline-flex items-center gap-2 rounded-full border-white/10 bg-white/5 px-4 py-1.5 font-medium text-white/80 transition-colors hover:bg-white/10 hover:text-white md:text-sm"
151
+ >
152
+ Explore how we help grow brands.{" "}
153
+ <span className="underline">Read more</span>
154
+ <ArrowRight className="size-4 transition-transform group-hover:translate-x-0.5" />
155
+ </Badge>
156
+ </Link>
157
+
158
+ <h1 className="mb-4 text-4xl leading-tight font-bold text-balance text-white lg:text-5xl">
159
+ Solutions to Elevate Your Business Growth
160
+ </h1>
161
+
162
+ <p className="mb-10 leading-relaxed text-balance text-white/80 lg:text-xl">
163
+ Unlock potential with tailored strategies designed for success.
164
+ Simplify challenges, maximize results, and stay ahead in the
165
+ competitive market.
166
+ </p>
167
+
168
+ <div className="mb-24 flex items-center justify-center gap-3">
169
+ <Button size="lg" className="dark rounded-full bg-white text-black">
170
+ Get Started
171
+ </Button>
172
+ <Button
173
+ variant="ghost"
174
+ size="lg"
175
+ className="dark flex rounded-full border border-white/20 text-white hover:bg-white/10"
176
+ >
177
+ Learn More
178
+ <ArrowRight className="size-4" />
179
+ </Button>
180
+ </div>
181
+ </div>
182
+
183
+ <div
184
+ className="w-full overflow-hidden"
185
+ style={{
186
+ maskImage:
187
+ "linear-gradient(to right, transparent, black 15%, black 85%, transparent)",
188
+ WebkitMaskImage:
189
+ "linear-gradient(to right, transparent, black 15%, black 85%, transparent)",
190
+ }}
191
+ >
192
+ <motion.div
193
+ className="flex gap-4"
194
+ style={{ width: "fit-content" }}
195
+ animate={{ x: `-${100 / COPIES}%` }}
196
+ transition={{ duration: 10, ease: "linear", repeat: Infinity }}
197
+ >
198
+ {Array.from({ length: COPIES })
199
+ .flatMap(() => IMAGES)
200
+ .map((src, index) => (
201
+ <div
202
+ key={index}
203
+ className="relative aspect-square max-w-36 shrink-0 overflow-hidden rounded-2xl md:max-w-xs"
204
+ >
205
+ <img
206
+ src={src}
207
+ alt={`Team member ${(index % IMAGES.length) + 1}`}
208
+ className="h-full w-full object-cover opacity-80 transition-opacity hover:opacity-100"
209
+ />
210
+ <div className="absolute inset-0 bg-linear-to-t from-black/60 to-transparent" />
211
+ </div>
212
+ ))}
213
+ </motion.div>
214
+ </div>
215
+ </div>
216
+ </main>
217
+ );
218
+ }
@@ -0,0 +1 @@
1
+ export default function(shared, config) { return config }
@@ -0,0 +1,287 @@
1
+ "use client";
2
+
3
+ import { useState } from "react";
4
+ import { Menu, Play, Star } from "lucide-react";
5
+ import { VisuallyHidden } from "radix-ui";
6
+ import Link from "next/link";
7
+ import Image from "next/image";
8
+
9
+ import { Button } from "@/components/ui/button";
10
+ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
11
+ import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog";
12
+ import {
13
+ Sheet,
14
+ SheetContent,
15
+ SheetHeader,
16
+ SheetTitle,
17
+ SheetTrigger,
18
+ } from "@/components/ui/sheet";
19
+
20
+ const NAV_ITEMS = [
21
+ { label: "Shop", href: "#" },
22
+ { label: "Collections", href: "#" },
23
+ { label: "Deals", href: "#" },
24
+ { label: "About", href: "#" },
25
+ ];
26
+
27
+ export default function HeroSection() {
28
+ const [videoOpen, setVideoOpen] = useState(false);
29
+
30
+ return (
31
+ <div className="relative min-h-screen w-full">
32
+ <nav className="container mx-auto flex items-center justify-between px-4 py-6">
33
+ <Link href="#" className="flex items-center gap-2">
34
+ <Image
35
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgd2lkdGg9IjMwMC4wMDAwMDBwdCIgaGVpZ2h0PSIzMDAuMDAwMDAwcHQiIHZpZXdCb3g9IjAgMCAzMDAuMDAwMDAwIDMwMC4wMDAwMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMzAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTAgMTUwMCBsMCAtMTUwMCAxNTAwIDAgMTUwMCAwIDAgMTUwMCAwIDE1MDAgLTE1MDAgMCAtMTUwMCAwIDAgLTE1MDB6IG02NDcgMTA2MCBjMzEgLTEyIDE4ODIgLTE4NTYgMTkxNCAtMTkwOCA1NCAtODUgMSAtMjA5IC05NyAtMjI4IC05MSAtMTcgLTMwIC03MSAtMTA1NyA5NTQgLTUzNyA1MzcgLTk1NCA5NjIgLTk2MyA5ODEgLTU2IDExNyA3NiAyNDggMjAzIDIwMXogbTg0NSAtMyBjMTUgLTcgMjYzIC0yNDcgNTUyIC01MzQgNDUxIC00NDkgNTI3IC01MjggNTM2IC01NjMgMTYgLTU4IC0xIC0xMTAgLTUwIC0xNTQgLTM1IC0zMSAtNDcgLTM2IC05MSAtMzYgLTI3IDAgLTYyIDYgLTc3IDE0IC0xNSA4IC0yNjMgMjUxIC01NTEgNTQwIGwtNTI1IDUyNSAtNCA1OCBjLTMgNDkgMCA2NCAyMCA5MyA0MSA2MiAxMjQgODYgMTkwIDU3eiBtODU2IC0xIGMxNSAtOCA3MCAtNTkgMTIzIC0xMTMgMTE2IC0xMTggMTMzIC0xNTQgMTA0IC0yMjkgLTMxIC04MCAtMTM2IC0xMjggLTIwMyAtOTEgLTQ5IDI4IC0yMTIgMTkxIC0yMzMgMjMzIC0zNCA3MiAtOCAxNTEgNjUgMTk1IDM3IDIyIDEwNiAyNSAxNDQgNXogbS0xNjgzIC04NTcgYzE3IC0xMCAyNjIgLTI1MSA1NDcgLTUzNiA1NDggLTU1MCA1MzkgLTUzOSA1MjQgLTYxOCAtMTggLTk2IC0xNDEgLTE1NSAtMjIxIC0xMDcgLTE2IDExIC0yNjUgMjUyIC01NTIgNTM4IC00NjUgNDYxIC01MjMgNTIzIC01MjkgNTU3IC0xNCA4MiAyNyAxNTYgMTAxIDE4MiA0NSAxNiA4NiAxMSAxMzAgLTE2eiBtLTI4IC04MzAgYzMyIC0xMiAyMTggLTE5MSAyMzkgLTIzMSAzMSAtNTkgOSAtMTQ2IC00NyAtMTg3IC0zNSAtMjYgLTkzIC0zNyAtMTM2IC0yNiAtMzAgNyAtMjI2IDE5NCAtMjQ5IDIzNyAtNjAgMTE1IDY5IDI1NCAxOTMgMjA3eiIvPgo8L2c+Cjwvc3ZnPg=="
36
+ alt="Logo"
37
+ className="rounded-sm dark:invert"
38
+ width={24}
39
+ height={24}
40
+ />
41
+ <span className="text-lg font-bold">shadcnuikit</span>
42
+ </Link>
43
+
44
+ <div className="hidden items-center gap-8 md:flex">
45
+ {NAV_ITEMS.map((item) => (
46
+ <Link
47
+ key={item.label}
48
+ href={item.href}
49
+ className="text-muted-foreground hover:text-accent-foreground text-sm font-medium transition-colors"
50
+ >
51
+ {item.label}
52
+ </Link>
53
+ ))}
54
+ </div>
55
+
56
+ <div className="flex items-center gap-3">
57
+ <Button className="rounded-full">Get started</Button>
58
+ <Button variant="outline" className="rounded-full">
59
+ Login
60
+ </Button>
61
+ <Sheet>
62
+ <SheetTrigger asChild>
63
+ <Button variant="ghost" size="icon" className="md:hidden">
64
+ <Menu className="size-5" />
65
+ </Button>
66
+ </SheetTrigger>
67
+ <SheetContent
68
+ side="right"
69
+ className="flex h-full flex-col px-4 py-6 sm:max-w-xs"
70
+ >
71
+ <SheetHeader className="p-0">
72
+ <SheetTitle className="text-left font-medium">Menu</SheetTitle>
73
+ </SheetHeader>
74
+ <nav className="mt-6 flex flex-col gap-1 text-sm font-medium">
75
+ {NAV_ITEMS.map((item) => (
76
+ <Link
77
+ key={item.label}
78
+ href={item.href}
79
+ className="text-accent-foreground hover:bg-accent rounded-md px-3 py-2.5 text-left"
80
+ >
81
+ {item.label}
82
+ </Link>
83
+ ))}
84
+ </nav>
85
+ <div className="mt-auto flex flex-col gap-2">
86
+ <Button variant="outline" className="w-full rounded-full">
87
+ Login
88
+ </Button>
89
+ <Button className="w-full rounded-full">Get started</Button>
90
+ </div>
91
+ </SheetContent>
92
+ </Sheet>
93
+ </div>
94
+ </nav>
95
+
96
+ {/* Hero Content */}
97
+ <div className="container mx-auto flex flex-col items-center px-4 py-20 text-center md:py-32">
98
+ <div className="mb-4 flex flex-col items-center gap-3 sm:flex-row">
99
+ <div className="flex -space-x-3">
100
+ {[1, 2, 3, 4, 5].map((i) => (
101
+ <Avatar key={i} className="border-background size-8 border-2">
102
+ <AvatarImage src={`https://i.pravatar.cc/100?img=${i + 10}`} />
103
+ <AvatarFallback>U{i}</AvatarFallback>
104
+ </Avatar>
105
+ ))}
106
+ </div>
107
+ <div className="flex flex-col items-start gap-0.5">
108
+ <div className="flex gap-1 text-amber-600">
109
+ {[1, 2, 3, 4, 5].map((i) => (
110
+ <Star key={i} className="size-4 fill-current" />
111
+ ))}
112
+ </div>
113
+ <span className="text-muted-foreground text-xs">
114
+ Loved by 10,000+ shoppers
115
+ </span>
116
+ </div>
117
+ </div>
118
+
119
+ <h1 className="mb-4 max-w-4xl text-4xl leading-tight font-bold text-balance lg:text-5xl">
120
+ Discover products you will
121
+ <span className="text-indigo-600"> actually love.</span>
122
+ </h1>
123
+
124
+ <p className="text-muted-foreground mb-10 max-w-2xl text-lg leading-relaxed text-balance md:text-xl">
125
+ Shop thousands of curated products with fast delivery, easy returns,
126
+ and unbeatable prices. Your next favorite find is one click away.
127
+ </p>
128
+
129
+ <div className="mb-24 flex items-center gap-3">
130
+ <Button size="lg" className="rounded-full md:h-12">
131
+ Shop Now
132
+ </Button>
133
+ <Button
134
+ variant="outline"
135
+ size="lg"
136
+ className="rounded-full md:h-12"
137
+ onClick={() => setVideoOpen(true)}
138
+ >
139
+ <Play /> Watch our story
140
+ </Button>
141
+
142
+ <Dialog open={videoOpen} onOpenChange={setVideoOpen}>
143
+ <DialogContent className="w-full max-w-5xl border-0 bg-black p-0 shadow-2xl">
144
+ <VisuallyHidden.Root>
145
+ <DialogTitle>Demo video</DialogTitle>
146
+ </VisuallyHidden.Root>
147
+ {videoOpen && (
148
+ <iframe
149
+ src="https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1"
150
+ className="aspect-video w-full rounded-lg"
151
+ />
152
+ )}
153
+ </DialogContent>
154
+ </Dialog>
155
+ </div>
156
+
157
+ <div className="flex flex-col items-center gap-8">
158
+ <p className="text-muted-foreground text-sm">
159
+ Featuring top brands you already know
160
+ </p>
161
+ <div className="flex flex-wrap justify-center gap-8 opacity-50 grayscale md:gap-16 dark:invert">
162
+ <Logo1 />
163
+ <Logo2 />
164
+ <Logo3 />
165
+ <Logo4 />
166
+ <Logo5 />
167
+ </div>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ );
172
+ }
173
+
174
+ const Logo1 = () => (
175
+ <svg xmlns="http://www.w3.org/2000/svg" width="120" height="60">
176
+ <g transform="matrix(.173865 0 0 .173865 7.501548 18.78565)">
177
+ <path
178
+ d="M213.2 74.3l-3.6 10.2h-.3c-.6-2.3-1.7-5.8-3.5-10L186.5 26h-18.9v77.3h12.5V55.6L180 45c-.1-2.1-.3-3.7-.4-4.9h.3c.6 3 1.3 5.2 1.8 6.6l23.2 56.4h8.8l23-56.9c.5-1.3 1-3.9 1.5-6.1h.3l-.6 13.9v49h13.3V25.8H233zm50.6-26.7h13V103h-13zm6.6-23.4c-2.2 0-4 .8-5.5 2.2s-2.3 3.2-2.3 5.4a7.03 7.03 0 0 0 2.3 5.3c1.5 1.4 3.3 2.1 5.5 2.1s4.1-.8 5.5-2.1a7.03 7.03 0 0 0 2.3-5.3c0-2.1-.8-3.9-2.3-5.4-1.3-1.4-3.2-2.2-5.5-2.2m52.5 22.9c-2.4-.5-4.9-.8-7.3-.8-5.9 0-11.3 1.3-15.8 3.9s-8.1 6.2-10.4 10.7c-2.4 4.6-3.6 9.9-3.6 16 0 5.3 1.2 10 3.5 14.3 2.3 4.2 5.5 7.6 9.8 9.9 4.1 2.3 8.9 3.5 14.3 3.5 6.2 0 11.5-1.3 15.7-3.7l.1-.1v-12l-.5.4c-1.9 1.4-4.1 2.6-6.3 3.3-2.3.8-4.4 1.2-6.2 1.2-5.2 0-9.3-1.5-12.2-4.8-3-3.2-4.5-7.6-4.5-13.1 0-5.7 1.5-10.2 4.6-13.5s7.2-5 12.2-5c4.2 0 8.5 1.4 12.4 4.2l.5.4V49.2l-.1-.1c-1.7-.7-3.6-1.5-6.2-2m42.9-.4c-3.2 0-6.2 1-8.8 3.1-2.2 1.8-3.7 4.4-5 7.5h-.1v-9.7h-13V103h13V74.7c0-4.8 1-8.8 3.2-11.7 2.2-3 5-4.5 8.4-4.5 1.2 0 2.4.3 3.9.5 1.4.4 2.4.8 3.1 1.3l.5.4v-13l-.3-.1c-.9-.6-2.7-.9-4.9-.9m35.4-.3c-9.1 0-16.4 2.7-21.5 8-5.2 5.3-7.7 12.6-7.7 21.8 0 8.6 2.6 15.6 7.6 20.7 5 5 11.8 7.6 20.3 7.6 8.9 0 16-2.7 21.1-8.1 5.2-5.4 7.7-12.6 7.7-21.5 0-8.8-2.4-15.8-7.3-20.9-4.7-5.1-11.6-7.6-20.2-7.6M411.6 89c-2.4 3.1-6.2 4.6-10.9 4.6s-8.5-1.5-11.2-4.8c-2.7-3.1-4-7.6-4-13.3 0-5.9 1.4-10.4 4-13.6 2.7-3.2 6.4-4.8 11.1-4.8 4.6 0 8.2 1.5 10.8 4.6s4 7.6 4 13.5c-.2 6-1.3 10.7-3.8 13.8m46.1-18.4c-4.1-1.7-6.7-3-7.9-4.1-1-1-1.5-2.4-1.5-4.2 0-1.5.6-3 2.1-4s3.2-1.5 5.7-1.5c2.2 0 4.5.4 6.7 1s4.2 1.5 5.8 2.7l.5.4V48.7l-.3-.1c-1.5-.6-3.5-1.2-5.9-1.7-2.4-.4-4.6-.6-6.4-.6-6.2 0-11.3 1.5-15.3 4.8-4 3.1-5.9 7.3-5.9 12.2 0 2.6.4 4.9 1.3 6.8s2.2 3.7 4 5.2c1.8 1.4 4.4 3 8 4.5 3 1.3 5.3 2.3 6.7 3.1s2.3 1.7 3 2.4c.5.8.8 1.8.8 3.1 0 3.7-2.8 5.5-8.5 5.5-2.2 0-4.5-.4-7.2-1.3s-5.2-2.2-7.3-3.7l-.5-.4v12.7l.3.1c1.9.9 4.2 1.5 7 2.2 2.8.5 5.3.9 7.5.9 6.7 0 12.2-1.5 16.1-4.8 4-3.2 6.1-7.3 6.1-12.6 0-3.7-1-7-3.2-9.5-2.9-2.4-6.5-4.9-11.7-6.9m49.2-24.2c-9.1 0-16.4 2.7-21.5 8s-7.7 12.6-7.7 21.8c0 8.6 2.6 15.6 7.6 20.7 5 5 11.8 7.6 20.3 7.6 8.9 0 16-2.7 21.1-8.1 5.2-5.4 7.7-12.6 7.7-21.5 0-8.8-2.4-15.8-7.3-20.9-4.7-5.1-11.6-7.6-20.2-7.6M517.2 89c-2.4 3.1-6.2 4.6-10.9 4.6-4.8 0-8.5-1.5-11.2-4.8-2.7-3.1-4-7.6-4-13.3 0-5.9 1.4-10.4 4-13.6 2.7-3.2 6.4-4.8 11.1-4.8 4.5 0 8.2 1.5 10.8 4.6s4 7.6 4 13.5c0 6-1.3 10.7-3.8 13.8m86.7-30.7V47.6h-13.1V31.2l-.4.1L578 35l-.3.1v12.5h-19.6v-7c0-3.2.8-5.7 2.2-7.3s3.5-2.4 6.1-2.4c1.8 0 3.7.4 5.8 1.3l.5.3V21.2l-.3-.1c-1.8-.6-4.2-1-7.3-1-3.9 0-7.3.9-10.4 2.4-3.1 1.7-5.4 4-7.1 7.1-1.7 3-2.6 6.4-2.6 10.3v7.7h-9.1v10.6h9.1V103h13.1V58.3h19.6v28.5c0 11.7 5.5 17.6 16.5 17.6 1.8 0 3.7-.3 5.5-.6 1.9-.4 3.3-.9 4.1-1.3l.1-.1V91.7l-.5.4c-.8.5-1.5.9-2.7 1.2-1 .3-1.9.4-2.6.4-2.6 0-4.4-.6-5.7-2.1-1.2-1.4-1.8-3.7-1.8-7.1V58.3z"
179
+ fill="#737373"
180
+ />
181
+ <path d="M0 0h61.3v61.3H0z" fill="#f25022" />
182
+ <path d="M67.7 0H129v61.3H67.7z" fill="#7fba00" />
183
+ <path d="M0 67.7h61.3V129H0z" fill="#00a4ef" />
184
+ <path d="M67.7 67.7H129V129H67.7z" fill="#ffb900" />
185
+ </g>
186
+ </svg>
187
+ );
188
+
189
+ const Logo2 = () => (
190
+ <svg
191
+ xmlns="http://www.w3.org/2000/svg"
192
+ xmlnsXlink="http://www.w3.org/1999/xlink"
193
+ id="Layer_1"
194
+ x="0px"
195
+ y="0px"
196
+ viewBox="0 0 120 60"
197
+ width={120}
198
+ height={60}
199
+ xmlSpace="preserve"
200
+ >
201
+ <style type="text/css">
202
+ {
203
+ "\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#67DBFF;}\n\t.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#01A3FF;}\n\t.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#0162FF;}\n\t.st3{fill:#191D26;}\n"
204
+ }
205
+ </style>
206
+ <g>
207
+ <path className="st0" d="M24.2,26.1h10v-9.8H14.4v0.1L24.2,26.1z" />
208
+ <path
209
+ className="st1"
210
+ d="M24.2,26.1h-10v9.8H34v-0.1L24.2,26.1L24.2,26.1z"
211
+ />
212
+ <path className="st2" d="M14.3,35.8h9.9v9.9L14.3,35.8z" />
213
+ <path
214
+ className="st3"
215
+ d="M47.8,35.8v-5.4h5.9v-2.5h-5.9v-3.6h6.4v-2.6h-9.3v14H47.8z"
216
+ />
217
+ <path
218
+ className="st3"
219
+ d="M61.6,25.6c-0.2-0.1-0.6-0.2-1.1-0.2c-1,0-1.8,0.5-2.3,1.2v-1h-2.8v10.2h2.8v-6.3c0.2-0.9,1-1.4,1.9-1.4 c0.5,0,1,0.1,1.4,0.3V25.6z"
220
+ />
221
+ <path
222
+ className="st3"
223
+ d="M71,35.8v-6.5c0-2.4-1.6-3.9-4.3-3.9c-2.3,0-4,1.4-4.3,3.3h2.7c0.2-0.6,0.7-1,1.5-1c1.1,0,1.7,0.7,1.7,1.6V30 c-0.4-0.3-1.4-0.6-2.3-0.6c-2.2,0-3.9,1.3-3.9,3.3c0,2.1,1.7,3.3,3.8,3.3c1.1,0,2.1-0.4,2.5-0.7v0.5H71z M68.3,33 c-0.3,0.5-1,0.9-1.8,0.9c-0.9,0-1.8-0.4-1.8-1.3c0-0.9,0.9-1.3,1.8-1.3c0.8,0,1.6,0.3,1.8,0.9V33z"
224
+ />
225
+ <path
226
+ className="st3"
227
+ d="M81,26.7c-0.6-0.8-1.5-1.3-2.7-1.3c-1.1,0-2.1,0.4-2.6,1.1v-0.8h-2.8v10.2h2.8v-6.6c0.2-0.9,0.9-1.3,1.6-1.3 c1,0,1.4,0.7,1.4,1.8v6.1h2.8v-6.6c0.2-0.9,0.8-1.3,1.6-1.3c1,0,1.5,0.7,1.5,1.8v6.1h2.8v-6.7c0-2.3-1.3-3.8-3.4-3.8 C82.7,25.4,81.7,26,81,26.7z"
228
+ />
229
+ <path
230
+ className="st3"
231
+ d="M95.5,32.5c-0.2,0.9-0.9,1.3-1.9,1.3c-1.3,0-2.1-0.9-2.2-2.4h6.8v-0.9c0-3-1.6-5.1-4.6-5.1 c-2.8,0-4.9,2.3-4.9,5.3c0,3.1,2,5.3,4.9,5.3c2.6,0,4.1-1.4,4.5-3.6H95.5z M93.6,27.7c1.2,0,1.8,0.8,1.8,1.9h-3.9 C91.8,28.4,92.5,27.7,93.6,27.7z"
232
+ />
233
+ <path
234
+ className="st3"
235
+ d="M105.7,25.6c-0.2-0.1-0.6-0.2-1.1-0.2c-1,0-1.8,0.5-2.3,1.2v-1h-2.8v10.2h2.8v-6.3c0.2-0.9,1-1.4,1.9-1.4 c0.5,0,1,0.1,1.4,0.3V25.6z"
236
+ />
237
+ </g>
238
+ </svg>
239
+ );
240
+
241
+ const Logo3 = () => (
242
+ <svg
243
+ xmlns="http://www.w3.org/2000/svg"
244
+ width="120"
245
+ height="60"
246
+ preserveAspectRatio="xMidYMid"
247
+ >
248
+ <path d="M40.554 27.4c1.144 0 2.072-.928 2.072-2.073s-.928-2.073-2.072-2.073-2.072.928-2.072 2.073.928 2.073 2.072 2.073zm68.4 7.082c-.315-.222-.56-.258-.76.172-3.48 7.538-9.346 3.777-8.763 4.108 1.3-.595 4.722-3.34 4.205-7.128-.314-2.316-2.302-3.343-4.4-2.975-3.682.642-5.037 4.614-4.347 8.13.12.604.336 1.102.552 1.6-4.16 3.384-5.814-3.03-6-3.796-.007-.04 3.213-2.725 4.1-9.122.94-6.704-1.2-7.925-3.387-7.887-4.047.07-5.14 8.526-3.67 15.573-.123.032-.696.35-1.616.385-.662-2.083-3.5-3.9-4.232-3.206-1.853 1.76.45 5.202 2.07 5.472-.973 5.994-7.06 4.5-5.927-3 1.982-3.68 3.5-9.153 3.22-12.457-.095-1.17-.96-2.737-2.916-2.66-3.762.15-4.17 8.607-3.73 14.6-.022-.148-.23.73-1.773 1.166-.365-2.024-3.624-4.056-4.4-3.08-1.436 1.828 1.053 5.088 2.232 5.315-.973 5.994-7.06 4.5-5.926-3 1.982-3.68 3.5-9.153 3.22-12.457-.095-1.17-.96-2.737-2.916-2.66-3.762.15-4.17 8.607-3.73 14.6-.022-.15-.236.756-1.84 1.185-.054-2.626-3.325-3.83-4.1-2.992-1.4 1.493.32 4.558 1.913 5.315-.973 5.994-7.06 4.5-5.926-3 1.982-3.68 3.5-9.153 3.22-12.457-.095-1.17-.96-2.737-2.916-2.66-3.762.15-4.064 9.032-3.623 15.035-1.24 5.3-5.394 11.94-4.855-1.342.053-.932.112-1.285-.353-1.634-.348-.27-1.14-.14-1.572-.13-.526.02-.658.33-.774.794-.27 1.2-.32 2.365-.358 3.953-.025.743-.085 1.1-.37 2.103s-1.916 2.864-2.8 2.555c-1.238-.426-.832-3.922-.6-6.323.193-1.898-.426-2.75-2.012-3.06-.93-.194-1.493-.164-2.46-.47-.915-.288-1.122-2.02-3.072-1.442-1.067.316-.38 2.576-.638 4.252-1.26 8.242-3.884 8.47-5.1 4.465 5.48-13.424 1.586-18.716-.694-18.716-2.375 0-5.1 1.636-3.94 12.103-.56-.163-.73-.25-1.343-.25-3.46 0-5.82 2.798-5.82 6.25s2.358 6.25 5.82 6.25c2.043 0 3.477-.93 4.564-2.366.7 1.015 1.572 2.382 3.15 2.32 4.704-.183 6.073-9.834 6.234-10.372.503.077.98.224 1.443.302.774.116.83.423.813 1.2-.205 6.563 1.006 8.86 3.753 8.86 1.53 0 2.895-1.504 3.835-2.58.702 1.45 1.82 2.535 3.32 2.58 3.636.1 5.028-5.705 4.9-4.942-.1.598 1.18 4.9 4.923 4.925 4.637.02 5.5-5.08 5.602-5.934.013-.17.018-.152 0 0l-.004.052c1.472-.274 2.232-1.063 2.232-1.063s1.182 7.025 5.56 6.945c4.547-.082 5.404-4.692 5.517-5.6.015-.213.024-.188 0 0l-.002.026c1.75-.636 2.208-1.275 2.208-1.275S74.8 41.94 79.43 42c4.118.054 5.644-4.163 5.653-5.928.695.007 1.98-.412 1.95-.436 0 0 1.508 6.02 5.72 6.33 1.978.145 3.46-1.113 4.307-1.687 1.988 1.6 8.606 3.665 12.785-3.42.6-1.017-.678-2.218-.9-2.375zM15.65 39.626c-2.02 0-3.314-1.867-3.314-3.88s1.188-3.88 3.208-3.88c.9 0 1.414.1 2.122.716a44.69 44.69 0 0 0 .669 2.202c.237.7.52 1.312.803 1.97-.406 1.684-1.738 2.874-3.488 2.874zm4.92-6.985c-.084-.134-.066-.052-.16-.178-.37-1.007-1.083-3.254-1.166-5.807-.093-2.887.388-6.272 1.807-6.272.96 0 1.983 6.86-.48 12.257zM49 29.633c-.228-1.714-.24-9.352 1.594-9.142 1.012.4-.642 7.618-1.594 9.142zm13.4 0c-.228-1.714-.24-9.352 1.594-9.142 1.012.4-.642 7.618-1.594 9.142zm13.284.106c-.228-1.714-.24-9.352 1.594-9.142 1.013.4-.642 7.618-1.594 9.142zm14.666-9.695c1.677-.174 1.607 7.148-1.758 11.77-.434-1.67-1.1-11.196 1.758-11.77zM97.398 35.8c-.54-2.72.853-4.507 2.287-4.703.5-.08 1.228.245 1.373.852.238 1.144-.035 2.842-3.245 4.996a4.46 4.46 0 0 1-.415-1.145z" />
249
+ </svg>
250
+ );
251
+
252
+ const Logo4 = () => (
253
+ <svg
254
+ xmlns="http://www.w3.org/2000/svg"
255
+ xmlnsXlink="http://www.w3.org/1999/xlink"
256
+ height={60}
257
+ width={120}
258
+ >
259
+ <path
260
+ d="M32.377 26.446h-12.52v3.715h8.88c-.44 5.2-4.773 7.432-8.865 7.432a9.76 9.76 0 0 1-9.802-9.891c0-5.624 4.354-9.954 9.814-9.954 4.212 0 6.694 2.685 6.694 2.685l2.6-2.694s-3.34-3.717-9.43-3.717c-7.755 0-13.754 6.545-13.754 13.614 0 6.927 5.643 13.682 13.95 13.682 7.307 0 12.656-5.006 12.656-12.408 0-1.562-.227-2.464-.227-2.464z"
261
+ fill="#4885ed"
262
+ />
263
+ <use xlinkHref="#A" fill="#db3236" />
264
+ <use xlinkHref="#A" x={19.181} fill="#f4c20d" />
265
+ <path
266
+ d="M80.628 23.765c-4.716 0-8.422 4.13-8.422 8.766 0 5.28 4.297 8.782 8.34 8.782 2.5 0 3.83-.993 4.8-2.132v1.73c0 3.027-1.838 4.84-4.612 4.84-2.68 0-4.024-1.993-4.5-3.123l-3.372 1.4c1.196 2.53 3.604 5.167 7.9 5.167 4.7 0 8.262-2.953 8.262-9.147V24.292H85.36v1.486c-1.13-1.22-2.678-2.013-4.73-2.013zm.34 3.44c2.312 0 4.686 1.974 4.686 5.345 0 3.427-2.37 5.315-4.737 5.315-2.514 0-4.853-2.04-4.853-5.283 0-3.368 2.43-5.378 4.904-5.378z"
267
+ fill="#4885ed"
268
+ />
269
+ <path
270
+ d="M105.4 23.744c-4.448 0-8.183 3.54-8.183 8.76 0 5.526 4.163 8.803 8.6 8.803 3.712 0 6-2.03 7.35-3.85l-3.033-2.018c-.787 1.22-2.103 2.415-4.298 2.415-2.466 0-3.6-1.35-4.303-2.66l11.763-4.88-.6-1.43c-1.136-2.8-3.787-5.14-7.295-5.14zm.153 3.374c1.603 0 2.756.852 3.246 1.874l-7.856 3.283c-.34-2.542 2.07-5.157 4.6-5.157z"
271
+ fill="#db3236"
272
+ />
273
+ <path d="M91.6 40.787h3.864V14.93H91.6z" fill="#3cba54" />
274
+ <defs>
275
+ <path
276
+ id="A"
277
+ d="M42.634 23.755c-5.138 0-8.82 4.017-8.82 8.7 0 4.754 3.57 8.845 8.88 8.845 4.806 0 8.743-3.673 8.743-8.743 0-5.8-4.58-8.803-8.803-8.803zm.05 3.446c2.526 0 4.92 2.043 4.92 5.334 0 3.22-2.384 5.322-4.932 5.322-2.8 0-5-2.242-5-5.348 0-3.04 2.18-5.308 5.02-5.308z"
278
+ />
279
+ </defs>
280
+ </svg>
281
+ );
282
+
283
+ const Logo5 = () => (
284
+ <svg xmlns="http://www.w3.org/2000/svg" width="120" height="60">
285
+ <path d="M12.005 40.177c-2.275-.565-4.078-2.536-4.442-4.857-.077-.493-.136-3.465-.136-6.936l-.001-6.073h3.45v6.89l.515-.27c1.68-.876 4.123-.546 5.826.787.778.6 1.603 1.833 1.904 2.825.227.747.27 1.168.225 2.2-.047 1.1-.113 1.408-.48 2.168-1.224 2.54-4.14 3.92-6.863 3.245zm2.493-3.3c.6-.252 1.4-1.17 1.498-1.745.163-.87-.002-1.76-.43-2.295-1.02-1.284-2.774-1.426-3.94-.32-.565.537-.792 1.073-.804 1.897-.026 1.866 1.944 3.187 3.674 2.463zm10.064 3.287c-1.06-.285-1.918-.803-2.718-1.642-.813-.852-1.193-1.526-1.478-2.62-1.08-4.143 2.5-8.057 6.713-7.36 4.643.767 6.616 6.42 3.447 9.872-1.523 1.66-3.806 2.328-5.964 1.748zm3.058-3.58c1.524-1.077 1.503-3.32-.04-4.4-.474-.328-.676-.382-1.447-.382-.78 0-.97.05-1.472.4-1.7 1.188-1.526 3.604.353 4.63.65.355 1.918.23 2.607-.258zm9.685 3.58c-1.06-.285-1.918-.803-2.718-1.642-.813-.852-1.193-1.526-1.478-2.62-1.08-4.143 2.5-8.057 6.713-7.36 4.643.767 6.616 6.42 3.447 9.872-1.523 1.66-3.806 2.328-5.964 1.748zm3.058-3.58c1.524-1.077 1.503-3.32-.04-4.4-.474-.328-.676-.382-1.447-.382-.78 0-.97.05-1.472.4-1.7 1.188-1.526 3.604.353 4.63.65.355 1.918.23 2.607-.258zm13.852 3.6a10.02 10.02 0 0 1-1.294-.454l-.63-.282v-3.172l1.072.548c.914.467 1.22.555 2.064.598 1.1.056 1.5-.14 1.5-.727 0-.397-.385-.64-1.452-.912-1.1-.285-1.688-.6-2.3-1.216-.664-.688-.927-1.376-.934-2.442-.01-1.48.8-2.642 2.348-3.32 1.165-.515 3.18-.47 4.613.104l.503.2v1.526c0 1.17-.04 1.5-.166 1.453-1.218-.536-1.934-.766-2.578-.826-.988-.092-1.422.113-1.48.7-.036.372.02.452.465.678a4.96 4.96 0 0 0 .965.355c1.865.403 3.022 1.622 3.16 3.33.13 1.62-.646 2.898-2.2 3.604-.886.406-2.64.527-3.686.255zm9.52-.095c-.93-.474-1.088-.894-2.342-6.224l-1.138-5c0-.133.38-.173 1.64-.173h1.64l.495 2.5c.67 3.368.758 3.775.806 3.726.023-.023.288-1.205.6-2.627s.652-2.765.78-2.987c.486-.842 1.852-1.132 2.68-.568.76.518.898.85 1.478 3.584.306 1.442.584 2.594.617 2.56.053-.053 1.084-5.813 1.088-6.078.001-.055.748-.1 1.66-.1s1.66.05 1.66.113c0 .223-1.998 9.52-2.137 9.945-.46 1.4-2.422 2.098-3.553 1.26-.696-.515-.873-.97-1.33-3.404-.243-1.295-.466-2.33-.494-2.303s-.258 1.075-.5 2.326-.55 2.45-.662 2.666c-.496.96-1.907 1.342-2.964.803zm15.902.07c-.97-.272-1.718-.727-2.496-1.517-2.412-2.45-2.32-6.32.203-8.637 3.403-3.124 8.988-1.248 9.853 3.3.075.393.135 2.08.135 3.75V40.1h-1.66c-1.555 0-1.66-.016-1.66-.258s-.035-.242-.743.082c-.947.433-2.56.54-3.635.237zm3.205-3.587c1.52-1.074 1.498-3.32-.045-4.388-.474-.328-.676-.382-1.447-.382-.78 0-.97.05-1.472.4-1.394.968-1.57 3.007-.356 4.14.875.816 2.346.918 3.32.23zM49.54 39.96c-1.975-.4-3.32-1.875-3.627-4-.066-.456-.12-3.442-.122-6.636l-.003-5.807h3.45v5.177h2.124v3.186h-2.124v1.87c0 2.564.22 2.982 1.653 3.157l.67.082.075 3.12-.767-.015c-.422-.01-1.02-.064-1.33-.125zm42.6 0c-1.975-.4-3.32-1.875-3.627-4-.066-.456-.12-3.442-.123-6.636l-.003-5.807h3.45v5.177h2.124v3.186h-2.124v1.87c0 2.564.22 2.982 1.653 3.157l.67.082.075 3.12-.767-.015c-.422-.01-1.02-.064-1.33-.125zm6.933.01c-3.1-.616-4.932-3.012-4.675-6.078.148-1.76.94-3.176 2.278-4.064 1.088-.722 2.053-1.015 3.625-1.102l1.36-.075v3.224h-.954c-1.256 0-1.982.34-2.522 1.18-.352.55-.388.7-.347 1.5.083 1.58 1.03 2.366 2.86 2.372h.962V40.1l-1.03-.014c-.566-.01-1.268-.062-1.56-.12zm3.65-8.76v-8.893h3.45v3.266c0 3.06.015 3.26.232 3.17 1.07-.442 2.7-.394 3.808.113 1.426.653 2.333 1.963 2.6 3.742.073.5.135 2.403.136 4.2l.003 3.285h-3.45l-.003-3.352c-.002-1.843-.058-3.6-.126-3.883-.247-1.07-1.387-1.582-2.382-1.068-.747.386-.808.74-.808 4.705v3.597h-3.45V31.2z" />
286
+ </svg>
287
+ );
@@ -0,0 +1 @@
1
+ export default function(shared, config) { return config }
@@ -0,0 +1,113 @@
1
+ import { Button } from "@/components/ui/button";
2
+ import { ArrowRight, Phone, Menu } from "lucide-react";
3
+ import Image from "next/image";
4
+ import Link from "next/link";
5
+ import {
6
+ DropdownMenu,
7
+ DropdownMenuContent,
8
+ DropdownMenuItem,
9
+ DropdownMenuTrigger,
10
+ } from "@/components/ui/dropdown-menu";
11
+
12
+ const NAV_ITEMS = [
13
+ {
14
+ label: "Home",
15
+ href: "#",
16
+ },
17
+ {
18
+ label: "About",
19
+ href: "#",
20
+ },
21
+ {
22
+ label: "Product",
23
+ href: "#",
24
+ },
25
+ {
26
+ label: "Services",
27
+ href: "#",
28
+ },
29
+ {
30
+ label: "Appointment",
31
+ href: "#",
32
+ },
33
+ ];
34
+
35
+ export default function HeroSection() {
36
+ return (
37
+ <div className="relative h-screen w-full bg-[url('https://images.unsplash.com/photo-1588776814546-1ffcf47267a5?q=80&w=3000&auto=format&fit=crop')] bg-cover bg-center bg-no-repeat">
38
+ <div className="pointer-events-none absolute inset-0 bg-linear-to-r from-black/90 to-transparent"></div>
39
+
40
+ <nav className="absolute top-0 right-0 left-0 z-50 grid grid-cols-2 items-center justify-between px-6 py-6 lg:grid-cols-3">
41
+ <Link href="#" className="flex items-center gap-2 text-white">
42
+ <Image
43
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgd2lkdGg9IjMwMC4wMDAwMDBwdCIgaGVpZ2h0PSIzMDAuMDAwMDAwcHQiIHZpZXdCb3g9IjAgMCAzMDAuMDAwMDAwIDMwMC4wMDAwMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMzAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTAgMTUwMCBsMCAtMTUwMCAxNTAwIDAgMTUwMCAwIDAgMTUwMCAwIDE1MDAgLTE1MDAgMCAtMTUwMCAwIDAgLTE1MDB6IG02NDcgMTA2MCBjMzEgLTEyIDE4ODIgLTE4NTYgMTkxNCAtMTkwOCA1NCAtODUgMSAtMjA5IC05NyAtMjI4IC05MSAtMTcgLTMwIC03MSAtMTA1NyA5NTQgLTUzNyA1MzcgLTk1NCA5NjIgLTk2MyA5ODEgLTU2IDExNyA3NiAyNDggMjAzIDIwMXogbTg0NSAtMyBjMTUgLTcgMjYzIC0yNDcgNTUyIC01MzQgNDUxIC00NDkgNTI3IC01MjggNTM2IC01NjMgMTYgLTU4IC0xIC0xMTAgLTUwIC0xNTQgLTM1IC0zMSAtNDcgLTM2IC05MSAtMzYgLTI3IDAgLTYyIDYgLTc3IDE0IC0xNSA4IC0yNjMgMjUxIC01NTEgNTQwIGwtNTI1IDUyNSAtNCA1OCBjLTMgNDkgMCA2NCAyMCA5MyA0MSA2MiAxMjQgODYgMTkwIDU3eiBtODU2IC0xIGMxNSAtOCA3MCAtNTkgMTIzIC0xMTMgMTE2IC0xMTggMTMzIC0xNTQgMTA0IC0yMjkgLTMxIC04MCAtMTM2IC0xMjggLTIwMyAtOTEgLTQ5IDI4IC0yMTIgMTkxIC0yMzMgMjMzIC0zNCA3MiAtOCAxNTEgNjUgMTk1IDM3IDIyIDEwNiAyNSAxNDQgNXogbS0xNjgzIC04NTcgYzE3IC0xMCAyNjIgLTI1MSA1NDcgLTUzNiA1NDggLTU1MCA1MzkgLTUzOSA1MjQgLTYxOCAtMTggLTk2IC0xNDEgLTE1NSAtMjIxIC0xMDcgLTE2IDExIC0yNjUgMjUyIC01NTIgNTM4IC00NjUgNDYxIC01MjMgNTIzIC01MjkgNTU3IC0xNCA4MiAyNyAxNTYgMTAxIDE4MiA0NSAxNiA4NiAxMSAxMzAgLTE2eiBtLTI4IC04MzAgYzMyIC0xMiAyMTggLTE5MSAyMzkgLTIzMSAzMSAtNTkgOSAtMTQ2IC00NyAtMTg3IC0zNSAtMjYgLTkzIC0zNyAtMTM2IC0yNiAtMzAgNyAtMjI2IDE5NCAtMjQ5IDIzNyAtNjAgMTE1IDY5IDI1NCAxOTMgMjA3eiIvPgo8L2c+Cjwvc3ZnPg=="
44
+ alt="Logo"
45
+ className="rounded-sm invert"
46
+ width={24}
47
+ height={24}
48
+ />
49
+ <span className="text-lg font-bold">dental</span>
50
+ </Link>
51
+
52
+ <div className="hidden items-center justify-center gap-8 rounded-full bg-white/50 px-8 py-4 backdrop-blur-md lg:flex">
53
+ {NAV_ITEMS.map((item) => (
54
+ <Link
55
+ key={item.label}
56
+ href={item.href}
57
+ className="text-sm font-medium text-black hover:opacity-70"
58
+ >
59
+ {item.label}
60
+ </Link>
61
+ ))}
62
+ </div>
63
+
64
+ <div className="flex items-center justify-end gap-2">
65
+ <Button variant="outline" className="rounded-full md:h-12 md:px-6!">
66
+ <Phone /> Call Now
67
+ </Button>
68
+ <DropdownMenu>
69
+ <DropdownMenuTrigger asChild>
70
+ <Button
71
+ variant="outline"
72
+ size="icon"
73
+ className="md:size-12 rounded-full lg:hidden flex"
74
+ >
75
+ <Menu />
76
+ </Button>
77
+ </DropdownMenuTrigger>
78
+ <DropdownMenuContent
79
+ align="end"
80
+ sideOffset={8}
81
+ className="mt-1 w-44 rounded-2xl bg-white/95 px-1 py-1 text-sm shadow-lg backdrop-blur-md"
82
+ >
83
+ {NAV_ITEMS.map((item) => (
84
+ <DropdownMenuItem
85
+ key={item.label}
86
+ asChild
87
+ className="cursor-pointer rounded-xl px-3 py-2 font-medium text-gray-800 focus:bg-gray-100"
88
+ >
89
+ <Link href={item.href}>{item.label}</Link>
90
+ </DropdownMenuItem>
91
+ ))}
92
+ </DropdownMenuContent>
93
+ </DropdownMenu>
94
+ </div>
95
+ </nav>
96
+
97
+ <div className="relative z-10 flex h-full flex-col justify-end px-6 pb-20 md:px-12 md:pb-32">
98
+ <div className="max-w-2xl space-y-6">
99
+ <h1 className="text-4xl leading-tight font-bold text-balance text-white md:text-5xl">
100
+ Smart Dental Solutions You Trust
101
+ </h1>
102
+ <p className="max-w-lg text-lg text-white/80">
103
+ Whether it's a routine check-up or a major dental procedure, our
104
+ experienced professionals are just a call away.
105
+ </p>
106
+ <Button className="rounded-full md:h-12 md:px-6!" variant="outline">
107
+ Book Appointment <ArrowRight />
108
+ </Button>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ );
113
+ }
@@ -0,0 +1 @@
1
+ export default function(shared, config) { return config }