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.
- checksums.yaml +7 -0
- data/README.md +18 -0
- data/Rakefile +6 -0
- data/app/assets/stylesheets/jigsaw/grid_resize.css +21 -0
- data/app/assets/stylesheets/jigsaw/layout_editor.css +356 -0
- data/app/components/custom_module_component.rb +38 -0
- data/app/controllers/jigsaw/application_controller.rb +5 -0
- data/app/controllers/jigsaw/dashboard_controller.rb +8 -0
- data/app/controllers/jigsaw/layout_templates_controller.rb +73 -0
- data/app/controllers/jigsaw/pages_controller.rb +114 -0
- data/app/controllers/jigsaw/slot_templates_controller.rb +71 -0
- data/app/controllers/jigsaw/slots_controller.rb +54 -0
- data/app/helpers/jigsaw/custom_module_helper.rb +7 -0
- data/app/helpers/jigsaw/pages_helper.rb +7 -0
- data/app/javascript/jigsaw/components/ui/button.js +53 -0
- data/app/javascript/jigsaw/components/ui/dropdown-menu.js +157 -0
- data/app/javascript/jigsaw/components/ui/sheet.js +122 -0
- data/app/javascript/jigsaw/components/ui/utils.js +8 -0
- data/app/javascript/jigsaw/controllers/custom_module_controller.js +75 -0
- data/app/javascript/jigsaw/controllers/custom_page_controller.js +23 -0
- data/app/javascript/jigsaw/controllers/flyout_resize_controller.js +60 -0
- data/app/javascript/jigsaw/controllers/grid_resize_controller.js +228 -0
- data/app/javascript/jigsaw/controllers/layout_editor_controller.js +502 -0
- data/app/javascript/jigsaw/controllers/module_editor_controller.js +146 -0
- data/app/javascript/jigsaw/controllers/monaco_editor_controller.js +49 -0
- data/app/javascript/jigsaw/lib/generate_layout_css.js +52 -0
- data/app/javascript/seeds/blocks/authentication-forms-1/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-1/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-1/render.jsx +80 -0
- data/app/javascript/seeds/blocks/authentication-forms-2/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-2/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-2/render.jsx +90 -0
- data/app/javascript/seeds/blocks/authentication-forms-3/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-3/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-3/render.jsx +94 -0
- data/app/javascript/seeds/blocks/authentication-forms-4/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-4/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-4/render.jsx +97 -0
- data/app/javascript/seeds/blocks/authentication-forms-5/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-5/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-5/render.jsx +82 -0
- data/app/javascript/seeds/blocks/authentication-forms-6/config.json +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-6/data.js +1 -0
- data/app/javascript/seeds/blocks/authentication-forms-6/render.jsx +34 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-1/render.jsx +98 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-10/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-10/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-10/render.jsx +181 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-11/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-11/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-11/render.jsx +184 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-12/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-12/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-12/render.jsx +180 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-13/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-13/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-13/render.jsx +151 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-14/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-14/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-14/render.jsx +169 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-15/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-15/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-15/render.jsx +115 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-16/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-16/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-16/render.jsx +128 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-17/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-17/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-17/render.jsx +84 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-18/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-18/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-18/render.jsx +139 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-19/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-19/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-19/render.jsx +146 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-2/render.jsx +163 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-20/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-20/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-20/render.jsx +71 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-3/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-3/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-3/render.jsx +122 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-4/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-4/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-4/render.jsx +136 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-5/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-5/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-5/render.jsx +294 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-6/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-6/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-6/render.jsx +139 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-7/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-7/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-7/render.jsx +219 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-8/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-8/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-8/render.jsx +249 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-9/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-9/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/charts-9/render.jsx +213 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-1/render.jsx +434 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/form-layouts-2/render.jsx +332 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-1/render.jsx +121 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-2/render.jsx +99 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/modal-dialogs-3/render.jsx +176 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-1/render.jsx +20 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-2/render.jsx +22 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/page-layouts-3/render.jsx +22 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sidebar-layouts-1/render.jsx +20 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-1/render.jsx +98 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-2/render.jsx +116 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/sign-in-forms-3/render.jsx +104 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-1/render.jsx +147 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-2/render.jsx +120 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-3/render.jsx +62 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-4/render.jsx +49 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-5/render.jsx +106 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-6/render.jsx +79 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-7/render.jsx +57 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/stat-cards-8/render.jsx +234 -0
- data/app/javascript/seeds/blocks/dashboard-ui/tables-1/config.json +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/tables-1/data.js +1 -0
- data/app/javascript/seeds/blocks/dashboard-ui/tables-1/render.jsx +295 -0
- data/app/javascript/seeds/blocks/datepicker-1/config.json +1 -0
- data/app/javascript/seeds/blocks/datepicker-1/data.js +1 -0
- data/app/javascript/seeds/blocks/datepicker-1/render.jsx +14 -0
- data/app/javascript/seeds/blocks/datepicker-2/config.json +1 -0
- data/app/javascript/seeds/blocks/datepicker-2/data.js +1 -0
- data/app/javascript/seeds/blocks/datepicker-2/render.jsx +29 -0
- data/app/javascript/seeds/blocks/datepicker-3/config.json +1 -0
- data/app/javascript/seeds/blocks/datepicker-3/data.js +1 -0
- data/app/javascript/seeds/blocks/datepicker-3/render.jsx +163 -0
- data/app/javascript/seeds/blocks/datepicker-4/config.json +1 -0
- data/app/javascript/seeds/blocks/datepicker-4/data.js +1 -0
- data/app/javascript/seeds/blocks/datepicker-4/render.jsx +192 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-1/render.jsx +723 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-2/render.jsx +508 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-3/render.jsx +632 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-4/render.jsx +1013 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/checkout-page-5/render.jsx +520 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-1/render.jsx +121 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-2/render.jsx +126 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-3/render.jsx +81 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-category-4/render.jsx +85 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-1/render.jsx +80 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-2/render.jsx +226 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-3/render.jsx +315 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-4/render.jsx +269 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-5/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-5/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-5/render.jsx +265 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-6/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-6/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-6/render.jsx +477 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-7/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-7/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-detail-7/render.jsx +405 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-1/render.jsx +71 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-features-2/render.jsx +135 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-1/render.jsx +87 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-2/render.jsx +151 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-3/render.jsx +313 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-4/render.jsx +223 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-5/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-5/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-5/render.jsx +200 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-6/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-6/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-6/render.jsx +177 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-7/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-7/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-7/render.jsx +175 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-8/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-8/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-list-8/render.jsx +231 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-1/render.jsx +64 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/product-quickview-2/render.jsx +62 -0
- data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/promo-sections-1/render.jsx +75 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-1/render.jsx +197 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-2/render.jsx +143 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-3/render.jsx +225 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/shopping-cart-4/render.jsx +93 -0
- data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce/store-navigation-1/render.jsx +290 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-1/render.jsx +86 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-2/render.jsx +119 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-3/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-3/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-3/render.jsx +97 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-4/config.json +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-4/data.js +1 -0
- data/app/javascript/seeds/blocks/ecommerce-charts-4/render.jsx +108 -0
- data/app/javascript/seeds/blocks/line-charts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/line-charts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/line-charts-1/render.jsx +230 -0
- data/app/javascript/seeds/blocks/line-charts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/line-charts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/line-charts-2/render.jsx +118 -0
- data/app/javascript/seeds/blocks/line-charts-3/config.json +1 -0
- data/app/javascript/seeds/blocks/line-charts-3/data.js +1 -0
- data/app/javascript/seeds/blocks/line-charts-3/render.jsx +134 -0
- data/app/javascript/seeds/blocks/line-charts-4/config.json +1 -0
- data/app/javascript/seeds/blocks/line-charts-4/data.js +1 -0
- data/app/javascript/seeds/blocks/line-charts-4/render.jsx +115 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-1/render.jsx +31 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-10/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-10/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-10/render.jsx +76 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-2/render.jsx +78 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-3/render.jsx +50 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-4/render.jsx +24 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-5/render.jsx +66 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-6/render.jsx +69 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-7/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-7/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-7/render.jsx +43 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-8/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-8/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-8/render.jsx +63 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-9/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-9/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/call-to-action-9/render.jsx +27 -0
- data/app/javascript/seeds/blocks/marketing/changelog-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-1/render.jsx +106 -0
- data/app/javascript/seeds/blocks/marketing/changelog-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-2/render.jsx +157 -0
- data/app/javascript/seeds/blocks/marketing/changelog-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-3/render.jsx +204 -0
- data/app/javascript/seeds/blocks/marketing/changelog-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/changelog-4/render.jsx +199 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-1/render.jsx +155 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-10/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-10/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-10/render.jsx +83 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-11/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-11/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-11/render.jsx +338 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-12/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-12/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-12/render.jsx +96 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-13/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-13/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-13/render.jsx +77 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-2/render.jsx +117 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-3/render.jsx +105 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-4/render.jsx +127 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-5/render.jsx +78 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-6/render.jsx +79 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-7/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-7/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-7/render.jsx +138 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-8/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-8/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-8/render.jsx +215 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-9/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-9/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/feature-section-9/render.jsx +81 -0
- data/app/javascript/seeds/blocks/marketing/footers-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-1/render.jsx +106 -0
- data/app/javascript/seeds/blocks/marketing/footers-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-2/render.jsx +76 -0
- data/app/javascript/seeds/blocks/marketing/footers-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-3/render.jsx +160 -0
- data/app/javascript/seeds/blocks/marketing/footers-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-4/render.jsx +167 -0
- data/app/javascript/seeds/blocks/marketing/footers-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/footers-5/render.jsx +223 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-1/render.jsx +49 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-10/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-10/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-10/render.jsx +147 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-11/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-11/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-11/render.jsx +218 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-12/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-12/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-12/render.jsx +287 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-13/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-13/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-13/render.jsx +113 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-14/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-14/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-14/render.jsx +249 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-2/render.jsx +94 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-3/render.jsx +51 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-4/render.jsx +153 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-5/render.jsx +210 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-6/render.jsx +191 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-7/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-7/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-7/render.jsx +306 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-8/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-8/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-8/render.jsx +103 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-9/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-9/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/hero-section-9/render.jsx +354 -0
- data/app/javascript/seeds/blocks/marketing/integrations-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-1/render.jsx +483 -0
- data/app/javascript/seeds/blocks/marketing/integrations-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-2/render.jsx +468 -0
- data/app/javascript/seeds/blocks/marketing/integrations-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-3/render.jsx +441 -0
- data/app/javascript/seeds/blocks/marketing/integrations-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-4/render.jsx +433 -0
- data/app/javascript/seeds/blocks/marketing/integrations-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-5/render.jsx +477 -0
- data/app/javascript/seeds/blocks/marketing/integrations-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/integrations-6/render.jsx +468 -0
- data/app/javascript/seeds/blocks/marketing/navbars-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-1/render.jsx +133 -0
- data/app/javascript/seeds/blocks/marketing/navbars-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-2/render.jsx +95 -0
- data/app/javascript/seeds/blocks/marketing/navbars-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/navbars-3/render.jsx +246 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-1/render.jsx +45 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-2/render.jsx +55 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/newsletter-sections-3/render.jsx +29 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-1/render.jsx +110 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-2/render.jsx +71 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-3/render.jsx +124 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-4/render.jsx +205 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-5/render.jsx +143 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-6/render.jsx +195 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-7/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-7/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/pricing-table-7/render.jsx +351 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-1/render.jsx +71 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-2/render.jsx +125 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-3/render.jsx +136 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-4/render.jsx +107 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/team-sections-5/render.jsx +124 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-1/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-1/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-1/render.jsx +112 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-10/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-10/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-10/render.jsx +106 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-11/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-11/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-11/render.jsx +79 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-12/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-12/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-12/render.jsx +173 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-13/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-13/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-13/render.jsx +121 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-14/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-14/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-14/render.jsx +158 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-15/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-15/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-15/render.jsx +109 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-2/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-2/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-2/render.jsx +81 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-3/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-3/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-3/render.jsx +149 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-4/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-4/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-4/render.jsx +148 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-5/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-5/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-5/render.jsx +153 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-6/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-6/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-6/render.jsx +155 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-7/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-7/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-7/render.jsx +102 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-8/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-8/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-8/render.jsx +161 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-9/config.json +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-9/data.js +1 -0
- data/app/javascript/seeds/blocks/marketing/testimonials-9/render.jsx +195 -0
- data/app/javascript/seeds/blocks/project-management-charts-1/config.json +1 -0
- data/app/javascript/seeds/blocks/project-management-charts-1/data.js +1 -0
- data/app/javascript/seeds/blocks/project-management-charts-1/render.jsx +172 -0
- data/app/javascript/seeds/blocks/project-management-charts-2/config.json +1 -0
- data/app/javascript/seeds/blocks/project-management-charts-2/data.js +1 -0
- data/app/javascript/seeds/blocks/project-management-charts-2/render.jsx +147 -0
- data/app/javascript/seeds/blocks/switch-cards-1/config.json +1 -0
- data/app/javascript/seeds/blocks/switch-cards-1/data.js +1 -0
- data/app/javascript/seeds/blocks/switch-cards-1/render.jsx +116 -0
- data/app/javascript/seeds/blocks/theme-switchers-1/config.json +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-1/data.js +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-1/render.jsx +22 -0
- data/app/javascript/seeds/blocks/theme-switchers-2/config.json +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-2/data.js +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-2/render.jsx +51 -0
- data/app/javascript/seeds/blocks/theme-switchers-3/config.json +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-3/data.js +1 -0
- data/app/javascript/seeds/blocks/theme-switchers-3/render.jsx +37 -0
- data/app/javascript/seeds/examples/blog-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/blog-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/blog-cards-1/render.jsx +81 -0
- data/app/javascript/seeds/examples/blog-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/blog-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/blog-cards-2/render.jsx +78 -0
- data/app/javascript/seeds/examples/blog-cards-3/config.json +1 -0
- data/app/javascript/seeds/examples/blog-cards-3/data.js +1 -0
- data/app/javascript/seeds/examples/blog-cards-3/render.jsx +80 -0
- data/app/javascript/seeds/examples/blog-cards-4/config.json +1 -0
- data/app/javascript/seeds/examples/blog-cards-4/data.js +1 -0
- data/app/javascript/seeds/examples/blog-cards-4/render.jsx +32 -0
- data/app/javascript/seeds/examples/chat-bubbles-1/config.json +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-1/data.js +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-1/render.jsx +154 -0
- data/app/javascript/seeds/examples/chat-bubbles-2/config.json +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-2/data.js +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-2/render.jsx +88 -0
- data/app/javascript/seeds/examples/chat-bubbles-3/config.json +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-3/data.js +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-3/render.jsx +90 -0
- data/app/javascript/seeds/examples/chat-bubbles-4/config.json +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-4/data.js +1 -0
- data/app/javascript/seeds/examples/chat-bubbles-4/render.jsx +169 -0
- data/app/javascript/seeds/examples/payment-methods-1/config.json +1 -0
- data/app/javascript/seeds/examples/payment-methods-1/data.js +1 -0
- data/app/javascript/seeds/examples/payment-methods-1/render.jsx +128 -0
- data/app/javascript/seeds/examples/payment-methods-2/config.json +1 -0
- data/app/javascript/seeds/examples/payment-methods-2/data.js +1 -0
- data/app/javascript/seeds/examples/payment-methods-2/render.jsx +80 -0
- data/app/javascript/seeds/examples/payment-methods-3/config.json +1 -0
- data/app/javascript/seeds/examples/payment-methods-3/data.js +1 -0
- data/app/javascript/seeds/examples/payment-methods-3/render.jsx +1 -0
- data/app/javascript/seeds/examples/product-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-1/render.jsx +48 -0
- data/app/javascript/seeds/examples/product-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-2/render.jsx +53 -0
- data/app/javascript/seeds/examples/product-cards-3/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-3/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-3/render.jsx +102 -0
- data/app/javascript/seeds/examples/product-cards-4/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-4/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-4/render.jsx +40 -0
- data/app/javascript/seeds/examples/product-cards-5/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-5/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-5/render.jsx +79 -0
- data/app/javascript/seeds/examples/product-cards-6/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-6/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-6/render.jsx +180 -0
- data/app/javascript/seeds/examples/product-cards-7/config.json +1 -0
- data/app/javascript/seeds/examples/product-cards-7/data.js +1 -0
- data/app/javascript/seeds/examples/product-cards-7/render.jsx +181 -0
- data/app/javascript/seeds/examples/product-list-1/config.json +1 -0
- data/app/javascript/seeds/examples/product-list-1/data.js +1 -0
- data/app/javascript/seeds/examples/product-list-1/render.jsx +114 -0
- data/app/javascript/seeds/examples/review-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/review-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/review-cards-1/render.jsx +54 -0
- data/app/javascript/seeds/examples/review-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/review-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/review-cards-2/render.jsx +68 -0
- data/app/javascript/seeds/examples/review-cards-3/config.json +1 -0
- data/app/javascript/seeds/examples/review-cards-3/data.js +1 -0
- data/app/javascript/seeds/examples/review-cards-3/render.jsx +101 -0
- data/app/javascript/seeds/examples/social-media-post-1/config.json +1 -0
- data/app/javascript/seeds/examples/social-media-post-1/data.js +1 -0
- data/app/javascript/seeds/examples/social-media-post-1/render.jsx +162 -0
- data/app/javascript/seeds/examples/social-media-post-2/config.json +1 -0
- data/app/javascript/seeds/examples/social-media-post-2/data.js +1 -0
- data/app/javascript/seeds/examples/social-media-post-2/render.jsx +172 -0
- data/app/javascript/seeds/examples/social-media-post-3/config.json +1 -0
- data/app/javascript/seeds/examples/social-media-post-3/data.js +1 -0
- data/app/javascript/seeds/examples/social-media-post-3/render.jsx +270 -0
- data/app/javascript/seeds/examples/social-media-post-4/config.json +1 -0
- data/app/javascript/seeds/examples/social-media-post-4/data.js +1 -0
- data/app/javascript/seeds/examples/social-media-post-4/render.jsx +188 -0
- data/app/javascript/seeds/examples/stat-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/stat-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/stat-cards-1/render.jsx +31 -0
- data/app/javascript/seeds/examples/stat-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/stat-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/stat-cards-2/render.jsx +42 -0
- data/app/javascript/seeds/examples/stat-cards-3/config.json +1 -0
- data/app/javascript/seeds/examples/stat-cards-3/data.js +1 -0
- data/app/javascript/seeds/examples/stat-cards-3/render.jsx +114 -0
- data/app/javascript/seeds/examples/stat-cards-4/config.json +1 -0
- data/app/javascript/seeds/examples/stat-cards-4/data.js +1 -0
- data/app/javascript/seeds/examples/stat-cards-4/render.jsx +117 -0
- data/app/javascript/seeds/examples/task-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/task-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/task-cards-1/render.jsx +133 -0
- data/app/javascript/seeds/examples/task-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/task-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/task-cards-2/render.jsx +122 -0
- data/app/javascript/seeds/examples/welcome-cards-1/config.json +1 -0
- data/app/javascript/seeds/examples/welcome-cards-1/data.js +1 -0
- data/app/javascript/seeds/examples/welcome-cards-1/render.jsx +40 -0
- data/app/javascript/seeds/examples/welcome-cards-2/config.json +1 -0
- data/app/javascript/seeds/examples/welcome-cards-2/data.js +1 -0
- data/app/javascript/seeds/examples/welcome-cards-2/render.jsx +58 -0
- data/app/javascript/seeds/examples/welcome-cards-3/config.json +1 -0
- data/app/javascript/seeds/examples/welcome-cards-3/data.js +1 -0
- data/app/javascript/seeds/examples/welcome-cards-3/render.jsx +91 -0
- data/app/javascript/seeds/ide-editor/config.json +4 -0
- data/app/javascript/seeds/ide-editor/data.js +16 -0
- data/app/javascript/seeds/ide-editor/render.jsx +132 -0
- data/app/javascript/seeds/ide-file-tree/config.json +4 -0
- data/app/javascript/seeds/ide-file-tree/data.js +50 -0
- data/app/javascript/seeds/ide-file-tree/render.jsx +426 -0
- data/app/javascript/seeds/ide-preview/config.json +4 -0
- data/app/javascript/seeds/ide-preview/data.js +4 -0
- data/app/javascript/seeds/ide-preview/render.jsx +49 -0
- data/app/javascript/seeds/ide-terminal/config.json +4 -0
- data/app/javascript/seeds/ide-terminal/data.js +4 -0
- data/app/javascript/seeds/ide-terminal/render.jsx +247 -0
- data/app/javascript/seeds/main-menu/config.json +9 -0
- data/app/javascript/seeds/main-menu/data.js +6 -0
- data/app/javascript/seeds/main-menu/render.jsx +70 -0
- data/app/models/concerns/jigsaw/grid_configurable.rb +89 -0
- data/app/models/concerns/jigsaw/slot_compilable.rb +69 -0
- data/app/models/jigsaw/application_record.rb +5 -0
- data/app/models/jigsaw/layout.rb +61 -0
- data/app/models/jigsaw/layout_template.rb +16 -0
- data/app/models/jigsaw/page.rb +35 -0
- data/app/models/jigsaw/schemas/layout_config.json +54 -0
- data/app/models/jigsaw/slot.rb +109 -0
- data/app/models/jigsaw/slot_template.rb +29 -0
- data/app/views/jigsaw/dashboard/index.html.ruby +23 -0
- data/app/views/jigsaw/layout_templates/_form.html.ruby +69 -0
- data/app/views/jigsaw/layout_templates/edit.html.ruby +72 -0
- data/app/views/jigsaw/layout_templates/index.html.ruby +48 -0
- data/app/views/jigsaw/layout_templates/new.html.ruby +19 -0
- data/app/views/jigsaw/pages/_form.html.ruby +75 -0
- data/app/views/jigsaw/pages/edit.html.ruby +104 -0
- data/app/views/jigsaw/pages/index.html.ruby +65 -0
- data/app/views/jigsaw/pages/new.html.ruby +34 -0
- data/app/views/jigsaw/pages/show.html.ruby +28 -0
- data/app/views/jigsaw/slot_templates/edit.html.ruby +42 -0
- data/app/views/jigsaw/slot_templates/index.html.ruby +73 -0
- data/app/views/jigsaw/slot_templates/new.html.ruby +21 -0
- data/app/views/jigsaw/slot_templates/show.html.ruby +38 -0
- data/app/views/jigsaw/slots/_shared/_menu.html.ruby +7 -0
- data/app/views/jigsaw/slots/edit.html.ruby +52 -0
- data/app/views/jigsaw/slots/index.html.ruby +17 -0
- data/app/views/layouts/jigsaw/application.html.ruby +31 -0
- data/config/importmap.rb +35 -0
- data/config/routes.rb +27 -0
- data/db/migrate/20260505185636_create_jigsaw_custom_pages.rb +12 -0
- data/db/migrate/20260505185637_create_jigsaw_data_functions.rb +15 -0
- data/db/migrate/20260505185638_create_jigsaw_render_functions.rb +15 -0
- data/db/migrate/20260505185639_create_jigsaw_page_modules.rb +15 -0
- data/db/migrate/20260505185640_create_jigsaw_layouts.rb +14 -0
- data/db/migrate/20260506000001_remove_slot_from_jigsaw_page_modules.rb +5 -0
- data/db/migrate/20260506000002_make_page_module_functions_optional.rb +6 -0
- data/db/migrate/20260506000003_inline_functions_on_page_modules.rb +55 -0
- data/db/migrate/20260507000001_move_layout_fk_to_layouts_table.rb +30 -0
- data/db/migrate/20260507000002_move_page_modules_to_layouts.rb +30 -0
- data/db/migrate/20260508000001_rename_custom_pages_to_pages.rb +18 -0
- data/db/migrate/20260508000002_rename_page_modules_to_slots.rb +7 -0
- data/db/migrate/20260509000001_create_jigsaw_templates.rb +13 -0
- data/db/migrate/20260509000002_create_jigsaw_template_layouts.rb +12 -0
- data/db/migrate/20260509000003_create_jigsaw_template_slots.rb +22 -0
- data/db/migrate/20260509000004_add_template_linking_to_layouts.rb +6 -0
- data/db/migrate/20260509000005_add_linked_to_template_to_slots.rb +5 -0
- data/db/migrate/20260510000001_refactor_templates_to_layout_and_slot_templates.rb +104 -0
- data/db/seeds/01_pages.rb +69 -0
- data/db/seeds/02_main_menu_slot.rb +15 -0
- data/db/seeds/03_webcontainer_ide.rb +51 -0
- data/db/seeds.rb +120 -0
- data/lib/jigsaw/engine.rb +29 -0
- data/lib/jigsaw/grid_layout_generator.rb +55 -0
- data/lib/jigsaw/jsx_compiler.rb +21 -0
- data/lib/jigsaw/version.rb +3 -0
- data/lib/jigsaw/version.rb.erb +3 -0
- data/lib/jigsaw.rb +11 -0
- data/lib/jigsaw_engine.rb +4 -0
- data/lib/tasks/kube_tasks.rake +4 -0
- data/lib/tasks/shadcn.rake +171 -0
- metadata +1033 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
module Jigsaw
|
|
2
|
+
class Slot < ApplicationRecord
|
|
3
|
+
belongs_to :layout
|
|
4
|
+
belongs_to :slot_template, optional: true
|
|
5
|
+
|
|
6
|
+
def self.slot_list_scope
|
|
7
|
+
:layout
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.slot_uniqueness_scope
|
|
11
|
+
:layout_id
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
include SlotCompilable
|
|
15
|
+
|
|
16
|
+
# --- Template Linking ---
|
|
17
|
+
|
|
18
|
+
def effective_data_source
|
|
19
|
+
if linked_to_template? && slot_template
|
|
20
|
+
slot_template.data_source
|
|
21
|
+
else
|
|
22
|
+
data_source
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def effective_data_compiled_source
|
|
27
|
+
if linked_to_template? && slot_template
|
|
28
|
+
slot_template.data_compiled_source
|
|
29
|
+
else
|
|
30
|
+
data_compiled_source
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def effective_data_compiled_digest
|
|
35
|
+
if linked_to_template? && slot_template
|
|
36
|
+
slot_template.data_compiled_digest
|
|
37
|
+
else
|
|
38
|
+
data_compiled_digest
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def effective_render_source
|
|
43
|
+
if linked_to_template? && slot_template
|
|
44
|
+
slot_template.render_source
|
|
45
|
+
else
|
|
46
|
+
render_source
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def effective_render_compiled_source
|
|
51
|
+
if linked_to_template? && slot_template
|
|
52
|
+
slot_template.render_compiled_source
|
|
53
|
+
else
|
|
54
|
+
render_compiled_source
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def effective_render_compiled_digest
|
|
59
|
+
if linked_to_template? && slot_template
|
|
60
|
+
slot_template.render_compiled_digest
|
|
61
|
+
else
|
|
62
|
+
render_compiled_digest
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def effective_config
|
|
67
|
+
if linked_to_template? && slot_template
|
|
68
|
+
slot_template.config
|
|
69
|
+
else
|
|
70
|
+
config
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def effective_shares
|
|
75
|
+
if linked_to_template? && slot_template
|
|
76
|
+
slot_template.shares
|
|
77
|
+
else
|
|
78
|
+
shares
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def effective_render_language
|
|
83
|
+
if linked_to_template? && slot_template
|
|
84
|
+
slot_template.render_language
|
|
85
|
+
else
|
|
86
|
+
render_language
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def unlink_from_template!
|
|
91
|
+
return unless linked_to_template? && slot_template
|
|
92
|
+
|
|
93
|
+
self.data_source = slot_template.data_source
|
|
94
|
+
self.render_source = slot_template.render_source
|
|
95
|
+
self.render_language = slot_template.render_language
|
|
96
|
+
self.config = slot_template.config.deep_dup
|
|
97
|
+
self.shares = slot_template.shares.deep_dup
|
|
98
|
+
self.linked_to_template = false
|
|
99
|
+
self.slot_template = nil
|
|
100
|
+
save!
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def link_to_template!(tmpl)
|
|
104
|
+
self.slot_template = tmpl
|
|
105
|
+
self.linked_to_template = true
|
|
106
|
+
save!
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Jigsaw
|
|
2
|
+
class SlotTemplate < ApplicationRecord
|
|
3
|
+
acts_as_taggable_on :tags
|
|
4
|
+
|
|
5
|
+
has_many :slots, foreign_key: :slot_template_id, dependent: :nullify
|
|
6
|
+
|
|
7
|
+
validates :name, presence: true, uniqueness: true
|
|
8
|
+
|
|
9
|
+
before_save :compile_sources
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def compile_sources
|
|
14
|
+
if data_source_changed? && data_source.present?
|
|
15
|
+
self.data_compiled_source = data_source
|
|
16
|
+
self.data_compiled_digest = Digest::SHA256.hexdigest(data_source)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
if render_source_changed? && render_source.present?
|
|
20
|
+
if render_language == "jsx"
|
|
21
|
+
self.render_compiled_source = JsxCompiler.compile(render_source)
|
|
22
|
+
else
|
|
23
|
+
self.render_compiled_source = render_source
|
|
24
|
+
end
|
|
25
|
+
self.render_compiled_digest = Digest::SHA256.hexdigest(render_source)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Container {
|
|
2
|
+
Header(size: :h1) { text "Jigsaw Engine" }
|
|
3
|
+
|
|
4
|
+
Wrapper(html_class: "ui cards") {
|
|
5
|
+
Card(href: pages_path, link: true) { |c|
|
|
6
|
+
c.header { "Pages" }
|
|
7
|
+
c.description { "Build and manage pages, layouts, and slot content" }
|
|
8
|
+
nil
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
Card(href: layout_templates_path, link: true) { |c|
|
|
12
|
+
c.header { "Layout Templates" }
|
|
13
|
+
c.description { "Reusable grid layout structures" }
|
|
14
|
+
nil
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
Card(href: slot_templates_path, link: true) { |c|
|
|
18
|
+
c.header { "Slot Templates" }
|
|
19
|
+
c.description { "Reusable slot content blocks with tags" }
|
|
20
|
+
nil
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Form(model: @layout_template, id: "layout-template-form") {
|
|
2
|
+
|
|
3
|
+
Wrapper(class: "sidebar-field") {
|
|
4
|
+
Label(:name) { "Name" }
|
|
5
|
+
Wrapper(class: "sidebar-input-row") {
|
|
6
|
+
TextField(:name)
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
Wrapper(class: "sidebar-field") {
|
|
11
|
+
Label(:description) { "Description" }
|
|
12
|
+
Wrapper(class: "sidebar-input-row") {
|
|
13
|
+
TextArea(:description, rows: 2)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
text hidden_field_tag(
|
|
18
|
+
"layout_template[config]",
|
|
19
|
+
@layout_template.config.to_json,
|
|
20
|
+
id: "configHidden",
|
|
21
|
+
data: { "layout-editor-target": "configHidden" }
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
Wrapper(class: "sidebar-field") {
|
|
25
|
+
Label(:gridWidth) { "Width" }
|
|
26
|
+
Wrapper(class: "sidebar-input-row") {
|
|
27
|
+
TextField(:gridWidth, id: "gridWidth")
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
Wrapper(class: "sidebar-field") {
|
|
32
|
+
Label(:gridHeight) { "Height" }
|
|
33
|
+
Wrapper(class: "sidebar-input-row") {
|
|
34
|
+
TextField(:gridHeight, id: "gridHeight")
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Wrapper(class: "sidebar-field") {
|
|
39
|
+
Label(:rowGap) { "Row Gap" }
|
|
40
|
+
Wrapper(class: "sidebar-input-row") {
|
|
41
|
+
NumberField(:rowGap, id: "rowGap", min: 0, step: 1)
|
|
42
|
+
Button(
|
|
43
|
+
type: "button",
|
|
44
|
+
id: "rowGapUnit",
|
|
45
|
+
class: "unit-btn",
|
|
46
|
+
data: {
|
|
47
|
+
action: "click->layout-editor#cycleUnit",
|
|
48
|
+
units: "px,rem,%"
|
|
49
|
+
}
|
|
50
|
+
) { @layout_template.rowGapUnit || "px" }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Wrapper(class: "sidebar-field") {
|
|
55
|
+
Label(:colGap) { "Column Gap" }
|
|
56
|
+
Wrapper(class: "sidebar-input-row") {
|
|
57
|
+
NumberField(:colGap, id: "colGap", min: 0, step: 1)
|
|
58
|
+
Button(
|
|
59
|
+
type: "button",
|
|
60
|
+
id: "colGapUnit",
|
|
61
|
+
class: "unit-btn",
|
|
62
|
+
data: {
|
|
63
|
+
action: "click->layout-editor#cycleUnit",
|
|
64
|
+
units: "px,rem,%"
|
|
65
|
+
}
|
|
66
|
+
) { @layout_template.colGapUnit || "px" }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
StylesheetLink("jigsaw/layout_editor.css")
|
|
2
|
+
|
|
3
|
+
Wrapper(
|
|
4
|
+
data: {
|
|
5
|
+
controller: "layout-editor",
|
|
6
|
+
"layout-editor-slots-by-area-value": "{}",
|
|
7
|
+
"layout-editor-slot-edit-paths-value": "{}"
|
|
8
|
+
}
|
|
9
|
+
) {
|
|
10
|
+
|
|
11
|
+
Menu(attached: "top") {
|
|
12
|
+
BackButton(href: layout_templates_path, icon: "arrow left")
|
|
13
|
+
|
|
14
|
+
SubMenu(position: "right") {
|
|
15
|
+
MenuItem {
|
|
16
|
+
Button(
|
|
17
|
+
type: "button",
|
|
18
|
+
icon: "sidebar",
|
|
19
|
+
size: "tiny",
|
|
20
|
+
data: { action: "click->layout-editor#togglePanel" }
|
|
21
|
+
) { "Panel" }
|
|
22
|
+
}
|
|
23
|
+
MenuItem {
|
|
24
|
+
ButtonTo(
|
|
25
|
+
url: layout_template_path(@layout_template),
|
|
26
|
+
method: :delete,
|
|
27
|
+
color: "red",
|
|
28
|
+
size: "tiny",
|
|
29
|
+
confirm: "Delete this layout template?",
|
|
30
|
+
icon: "trash"
|
|
31
|
+
) { "Delete" }
|
|
32
|
+
}
|
|
33
|
+
MenuItem {
|
|
34
|
+
Button(
|
|
35
|
+
type: "submit",
|
|
36
|
+
form: "layout-template-form",
|
|
37
|
+
color: "green",
|
|
38
|
+
size: "tiny"
|
|
39
|
+
) { "Save" }
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
Wrapper(class: "editor-page") {
|
|
45
|
+
Wrapper(
|
|
46
|
+
class: "editor-center",
|
|
47
|
+
data: { "layout-editor-target": "preview" }
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
Wrapper(
|
|
51
|
+
class: "editor-output",
|
|
52
|
+
data: {
|
|
53
|
+
"layout-editor-target": "panel",
|
|
54
|
+
action: "input->layout-editor#rebuild"
|
|
55
|
+
}
|
|
56
|
+
) {
|
|
57
|
+
|
|
58
|
+
Partial("form")
|
|
59
|
+
|
|
60
|
+
Wrapper(html_class: "panel-divider")
|
|
61
|
+
|
|
62
|
+
Header(size: 5) { "CSS" }
|
|
63
|
+
Pre(data: { "layout-editor-target": "cssOutput" }, class: "code-output")
|
|
64
|
+
|
|
65
|
+
Header(size: 5) { "HTML" }
|
|
66
|
+
Pre(data: { "layout-editor-target": "htmlOutput" }, class: "code-output")
|
|
67
|
+
|
|
68
|
+
Header(size: 5) { "JSON" }
|
|
69
|
+
Pre(data: { "layout-editor-target": "jsonOutput" }, class: "code-output")
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Menu(attached: "top") {
|
|
2
|
+
BackButton(href: root_path, icon: "arrow left")
|
|
3
|
+
MenuItem(header: true) { text "Layout Templates" }
|
|
4
|
+
|
|
5
|
+
SubMenu(position: "right") {
|
|
6
|
+
MenuItem(href: new_layout_template_path, icon: "plus") { text "New Layout Template" }
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
Container(style: "padding: 1rem;") {
|
|
11
|
+
Header(size: :h2, dividing: true) { "Layout Templates" }
|
|
12
|
+
|
|
13
|
+
if @layout_templates.empty?
|
|
14
|
+
Message(info: true) {
|
|
15
|
+
text "No layout templates yet. "
|
|
16
|
+
LinkTo(href: new_layout_template_path) { text "Create your first layout template" }
|
|
17
|
+
text "."
|
|
18
|
+
}
|
|
19
|
+
else
|
|
20
|
+
Table() { |c|
|
|
21
|
+
c.header {
|
|
22
|
+
TableRow {
|
|
23
|
+
TableCell(heading: true) { "Name" }
|
|
24
|
+
TableCell(heading: true) { "Description" }
|
|
25
|
+
TableCell(heading: true) { "Actions" }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@layout_templates.each do |lt|
|
|
30
|
+
TableRow {
|
|
31
|
+
TableCell {
|
|
32
|
+
LinkTo(href: edit_layout_template_path(lt)) { text lt.name }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
TableCell {
|
|
36
|
+
text lt.description || "—"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
TableCell {
|
|
40
|
+
LinkTo(href: edit_layout_template_path(lt), css_class: "ui mini blue button") { "Edit" }
|
|
41
|
+
ButtonTo(url: layout_template_path(lt), method: :delete, color: "red mini",
|
|
42
|
+
confirm: "Delete this layout template?") { text "Delete" }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Menu(attached: "top") {
|
|
2
|
+
BackButton(href: layout_templates_path, icon: "arrow left")
|
|
3
|
+
MenuItem(header: true) { text "New Layout Template" }
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
Container(style: "padding: 1rem; max-width: 600px;") {
|
|
7
|
+
Header(size: :h2, dividing: true) { text "Create a Layout Template" }
|
|
8
|
+
|
|
9
|
+
Form(model: @layout_template, url: layout_templates_path, method: :post) {
|
|
10
|
+
TextField(:name, required: true, placeholder: "My Layout Template", field: true)
|
|
11
|
+
TextArea(:description, placeholder: "Optional description", field: true)
|
|
12
|
+
TextField(:thumbnail, placeholder: "URL or path to thumbnail (optional)", field: true)
|
|
13
|
+
|
|
14
|
+
Wrapper(style: "margin-top: 1rem;") {
|
|
15
|
+
Submit("Create", color: "green")
|
|
16
|
+
LinkTo(href: layout_templates_path, css_class: "ui button") { text "Cancel" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Form(model: @page, id: "page-form") {
|
|
2
|
+
|
|
3
|
+
Wrapper(class: "sidebar-field") {
|
|
4
|
+
Label(:title) { "Title" }
|
|
5
|
+
Wrapper(class: "sidebar-input-row") {
|
|
6
|
+
TextField(:title)
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
Wrapper(class: "sidebar-field") {
|
|
11
|
+
Label(:path) { "Path" }
|
|
12
|
+
Wrapper(class: "sidebar-input-row") {
|
|
13
|
+
TextField(:path)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
text hidden_field_tag("page[layout_attributes][id]", @layout.id)
|
|
18
|
+
text hidden_field_tag(
|
|
19
|
+
"page[layout_attributes][config]",
|
|
20
|
+
@layout.config.to_json,
|
|
21
|
+
id: "configHidden",
|
|
22
|
+
data: { "layout-editor-target": "configHidden" }
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
FieldsFor(:layout) { |f|
|
|
26
|
+
previous_form_builder = @_form_builder
|
|
27
|
+
@_form_builder = f
|
|
28
|
+
|
|
29
|
+
Wrapper(class: "sidebar-field") {
|
|
30
|
+
Label(:gridWidth) { "Width" }
|
|
31
|
+
Wrapper(class: "sidebar-input-row") {
|
|
32
|
+
TextField(:gridWidth, id: "gridWidth")
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
Wrapper(class: "sidebar-field") {
|
|
37
|
+
Label(:gridHeight) { "Height" }
|
|
38
|
+
Wrapper(class: "sidebar-input-row") {
|
|
39
|
+
TextField(:gridHeight, id: "gridHeight")
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Wrapper(class: "sidebar-field") {
|
|
44
|
+
Label(:rowGap) { "Row Gap" }
|
|
45
|
+
Wrapper(class: "sidebar-input-row") {
|
|
46
|
+
NumberField(:rowGap, id: "rowGap", min: 0, step: 1)
|
|
47
|
+
Button(
|
|
48
|
+
type: "button",
|
|
49
|
+
id: "rowGapUnit",
|
|
50
|
+
class: "unit-btn",
|
|
51
|
+
data: {
|
|
52
|
+
action: "click->layout-editor#cycleUnit",
|
|
53
|
+
units: "px,rem,%"
|
|
54
|
+
}
|
|
55
|
+
) { @layout.rowGapUnit || "px" }
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Wrapper(class: "sidebar-field") {
|
|
60
|
+
Label(:colGap) { "Column Gap" }
|
|
61
|
+
Wrapper(class: "sidebar-input-row") {
|
|
62
|
+
NumberField(:colGap, id: "colGap", min: 0, step: 1)
|
|
63
|
+
Button(
|
|
64
|
+
type: "button",
|
|
65
|
+
id: "colGapUnit",
|
|
66
|
+
class: "unit-btn",
|
|
67
|
+
data: {
|
|
68
|
+
action: "click->layout-editor#cycleUnit",
|
|
69
|
+
units: "px,rem,%"
|
|
70
|
+
}
|
|
71
|
+
) { @layout.colGapUnit || "px" }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
StylesheetLink("jigsaw/layout_editor.css")
|
|
2
|
+
|
|
3
|
+
slot_id_by_area = @slots.each_with_object({}) { |s, h| h[s.area_name] = s.id }
|
|
4
|
+
slot_edit_paths = @slots.each_with_object({}) { |s, h| h[s.area_name] = edit_slot_path(s) }
|
|
5
|
+
|
|
6
|
+
Wrapper(
|
|
7
|
+
data: {
|
|
8
|
+
controller: "layout-editor",
|
|
9
|
+
"layout-editor-slots-by-area-value": slot_id_by_area.to_json,
|
|
10
|
+
"layout-editor-slot-edit-paths-value": slot_edit_paths.to_json
|
|
11
|
+
}
|
|
12
|
+
) {
|
|
13
|
+
|
|
14
|
+
Menu(attached: "top") {
|
|
15
|
+
BackButton(href: pages_path, icon: "arrow left")
|
|
16
|
+
|
|
17
|
+
SubMenu(position: "right") {
|
|
18
|
+
if @layout&.linked_to_template?
|
|
19
|
+
MenuItem {
|
|
20
|
+
ButtonTo(
|
|
21
|
+
url: unlink_template_page_path(@page),
|
|
22
|
+
method: :post,
|
|
23
|
+
color: "orange",
|
|
24
|
+
size: "tiny",
|
|
25
|
+
confirm: "Unlink from layout template? Grid config will be copied locally.",
|
|
26
|
+
icon: "unlinkify"
|
|
27
|
+
) { "Unlink Layout" }
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
MenuItem {
|
|
32
|
+
Button(
|
|
33
|
+
type: "button",
|
|
34
|
+
icon: "sidebar",
|
|
35
|
+
size: "tiny",
|
|
36
|
+
data: { action: "click->layout-editor#togglePanel" }
|
|
37
|
+
) { "Panel" }
|
|
38
|
+
}
|
|
39
|
+
MenuItem {
|
|
40
|
+
ButtonTo(
|
|
41
|
+
url: page_path(@page),
|
|
42
|
+
method: :delete,
|
|
43
|
+
color: "red",
|
|
44
|
+
size: "tiny",
|
|
45
|
+
confirm: "Delete this page?",
|
|
46
|
+
icon: "trash"
|
|
47
|
+
) { "Delete" }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
unless @layout&.linked_to_template?
|
|
51
|
+
MenuItem {
|
|
52
|
+
Button(
|
|
53
|
+
type: "submit",
|
|
54
|
+
form: "page-form",
|
|
55
|
+
color: "green",
|
|
56
|
+
size: "tiny"
|
|
57
|
+
) { "Save" }
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if @layout&.linked_to_template?
|
|
64
|
+
Message(info: true, style: "margin: 0.5rem 1rem;") {
|
|
65
|
+
Wrapper(style: "display: flex; align-items: center; gap: 0.5em;") {
|
|
66
|
+
text tag.i(class: "linkify icon")
|
|
67
|
+
text "Layout linked to template: "
|
|
68
|
+
text tag.strong(@layout.layout_template.name)
|
|
69
|
+
text ". Grid editing is disabled."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
Wrapper(class: "editor-page") {
|
|
75
|
+
Wrapper(
|
|
76
|
+
class: "editor-center",
|
|
77
|
+
data: { "layout-editor-target": "preview" }
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
Wrapper(
|
|
81
|
+
class: "editor-output",
|
|
82
|
+
data: {
|
|
83
|
+
"layout-editor-target": "panel",
|
|
84
|
+
action: "input->layout-editor#rebuild"
|
|
85
|
+
}
|
|
86
|
+
) {
|
|
87
|
+
|
|
88
|
+
unless @layout&.linked_to_template?
|
|
89
|
+
Partial("form")
|
|
90
|
+
|
|
91
|
+
Wrapper(html_class: "panel-divider")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
Header(size: 5) { "CSS" }
|
|
95
|
+
Pre(data: { "layout-editor-target": "cssOutput" }, class: "code-output")
|
|
96
|
+
|
|
97
|
+
Header(size: 5) { "HTML" }
|
|
98
|
+
Pre(data: { "layout-editor-target": "htmlOutput" }, class: "code-output")
|
|
99
|
+
|
|
100
|
+
Header(size: 5) { "JSON" }
|
|
101
|
+
Pre(data: { "layout-editor-target": "jsonOutput" }, class: "code-output")
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Menu(attached: "top") {
|
|
2
|
+
BackButton(href: root_path, icon: "arrow left")
|
|
3
|
+
MenuItem(header: true) { text "Pages" }
|
|
4
|
+
|
|
5
|
+
SubMenu(position: "right") {
|
|
6
|
+
MenuItem(href: new_page_path, icon: "plus") { text "New Page" }
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
Container(style: "padding: 1rem;") {
|
|
11
|
+
Header(size: :h2, dividing: true) { "Pages" }
|
|
12
|
+
|
|
13
|
+
if @pages.empty?
|
|
14
|
+
Message(info: true) {
|
|
15
|
+
text "No pages yet. "
|
|
16
|
+
LinkTo(href: new_page_path) { text "Create your first page" }
|
|
17
|
+
text "."
|
|
18
|
+
}
|
|
19
|
+
else
|
|
20
|
+
Table() { |c|
|
|
21
|
+
c.header {
|
|
22
|
+
TableRow {
|
|
23
|
+
TableCell(heading: true) { "Title" }
|
|
24
|
+
TableCell(heading: true) { "Route" }
|
|
25
|
+
TableCell(heading: true) { "Layout" }
|
|
26
|
+
TableCell(heading: true) { "Layout Template" }
|
|
27
|
+
TableCell(heading: true) { "Actions" }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@pages.each do |page|
|
|
32
|
+
TableRow {
|
|
33
|
+
TableCell {
|
|
34
|
+
LinkTo(href: edit_page_path(page)) { text page.title }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
TableCell {
|
|
38
|
+
LinkTo(href: custom_page_path(page), target: "_blank") { text "/#{page.path}" }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
TableCell {
|
|
42
|
+
text page.layout ? page.layout.name : "—"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
TableCell {
|
|
46
|
+
if page.layout&.linked_to_template? && page.layout.layout_template
|
|
47
|
+
Wrapper(style: "display: flex; align-items: center; gap: 0.3em;") {
|
|
48
|
+
text tag.i(class: "linkify icon")
|
|
49
|
+
text page.layout.layout_template.name
|
|
50
|
+
}
|
|
51
|
+
else
|
|
52
|
+
text "—"
|
|
53
|
+
end
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
TableCell {
|
|
57
|
+
LinkTo(href: edit_page_path(page), css_class: "ui mini blue button") { "Edit" }
|
|
58
|
+
ButtonTo(url: page_path(page), method: :delete, color: "red mini",
|
|
59
|
+
confirm: "Delete this page?") { text "Delete" }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
end
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Menu(attached: "top") {
|
|
2
|
+
BackButton(href: pages_path, icon: "arrow left")
|
|
3
|
+
MenuItem(header: true) { text "New Page" }
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
Container(style: "padding: 1rem; max-width: 600px;") {
|
|
7
|
+
Header(size: :h2, dividing: true) { text "Create a Page" }
|
|
8
|
+
|
|
9
|
+
Form(model: @page, url: pages_path, method: :post) {
|
|
10
|
+
TextField(:title, required: true, placeholder: "My New Page", field: true)
|
|
11
|
+
TextField(:path, required: true, placeholder: "blog/hello-world",
|
|
12
|
+
hint: "URL path under /jigsaw/ (no leading slash)", field: true)
|
|
13
|
+
|
|
14
|
+
if @layout_templates.any?
|
|
15
|
+
Wrapper(class: "field") {
|
|
16
|
+
text label_tag("page_layout_template_id", "Layout Template (optional)")
|
|
17
|
+
text select_tag(
|
|
18
|
+
"page[layout_template_id]",
|
|
19
|
+
options_from_collection_for_select(@layout_templates, :id, :name),
|
|
20
|
+
include_blank: "— No template (blank layout) —",
|
|
21
|
+
class: "ui dropdown"
|
|
22
|
+
)
|
|
23
|
+
Wrapper(style: "margin-top: 0.25em; font-size: 0.85em; color: #666;") {
|
|
24
|
+
text "Selecting a layout template links this page's grid structure to the template."
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Wrapper(style: "margin-top: 1rem;") {
|
|
30
|
+
Submit("Create", color: "green")
|
|
31
|
+
LinkTo(href: pages_path, css_class: "ui button") { text "Cancel" }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
StylesheetLink("jigsaw/grid_resize.css")
|
|
2
|
+
|
|
3
|
+
Wrapper(data: { controller: "custom-page", "custom-page-page-id-value": @page.id }) {
|
|
4
|
+
Style(@layout.effective_compiled_css)
|
|
5
|
+
|
|
6
|
+
Div(
|
|
7
|
+
class: "jigsaw-layout-#{@layout.id}",
|
|
8
|
+
data: {
|
|
9
|
+
controller: "grid-resize",
|
|
10
|
+
"grid-resize-layout-id-value": @layout.id,
|
|
11
|
+
"grid-resize-areas-value": @layout.effective_config["areas"].to_json,
|
|
12
|
+
}
|
|
13
|
+
) {
|
|
14
|
+
@slots.each do |slot|
|
|
15
|
+
slot_data = slot.effective_config["resizable"] ? { resizable: "true" } : {}
|
|
16
|
+
Div(class: slot.area_name, data: slot_data) {
|
|
17
|
+
CustomModule(
|
|
18
|
+
module_id: slot.id,
|
|
19
|
+
edit_url: edit_slot_path(slot),
|
|
20
|
+
data_function_url: slot.effective_data_source.present? ? data_source_slot_path(slot, digest: slot.effective_data_compiled_digest) : "",
|
|
21
|
+
render_function_url: slot.effective_render_source.present? ? render_source_slot_path(slot, digest: slot.effective_render_compiled_digest) : "",
|
|
22
|
+
config: slot.effective_config.to_json,
|
|
23
|
+
shares: slot.effective_shares.to_json
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
}
|
|
28
|
+
}
|