├── .github └── workflows │ └── build-and-deploy.yml ├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── LICENSE.txt ├── assets ├── css │ ├── animation.css │ ├── font-awesome.min.css │ ├── magnific-popup.css │ └── qubely.animatedheadline.css ├── fonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── img │ ├── admin │ │ ├── cta-1.png │ │ ├── cta-2.png │ │ ├── pointer@1x.png │ │ ├── pointer@2x.png │ │ ├── thumbs-up@1x.png │ │ └── thumbs-up@2x.png │ ├── blocks │ │ ├── accordion │ │ │ ├── classic.svg │ │ │ └── fill.svg │ │ ├── block-accordion.svg │ │ ├── block-advanced-list.svg │ │ ├── block-animatedheadline.svg │ │ ├── block-button-group.svg │ │ ├── block-button.svg │ │ ├── block-column.svg │ │ ├── block-contact-form.svg │ │ ├── block-counter.svg │ │ ├── block-divider.svg │ │ ├── block-form.svg │ │ ├── block-heading.svg │ │ ├── block-icon-list.svg │ │ ├── block-icon.svg │ │ ├── block-image.svg │ │ ├── block-imagecomparison.svg │ │ ├── block-info-box.svg │ │ ├── block-map.svg │ │ ├── block-pie-progress.svg │ │ ├── block-post-grid.svg │ │ ├── block-pricing.svg │ │ ├── block-progressbar.svg │ │ ├── block-qubely.svg │ │ ├── block-row.svg │ │ ├── block-social-icons.svg │ │ ├── block-tabs.svg │ │ ├── block-team.svg │ │ ├── block-testimonial-carousel.svg │ │ ├── block-testimonial.svg │ │ ├── block-text.svg │ │ ├── block-timeline.svg │ │ ├── block-toc.svg │ │ ├── block-videopopup.svg │ │ ├── block-wrapper.svg │ │ ├── button │ │ │ ├── fill.svg │ │ │ ├── fill_xs.svg │ │ │ ├── outline.svg │ │ │ └── outline_xs.svg │ │ ├── form │ │ │ ├── classic.svg │ │ │ └── material.svg │ │ ├── icon │ │ │ ├── classic.svg │ │ │ ├── fill.svg │ │ │ └── outline.svg │ │ ├── image │ │ │ ├── blurb.svg │ │ │ └── simple.svg │ │ ├── infobox │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ └── 4.svg │ │ ├── list │ │ │ ├── 1.svg │ │ │ └── 2.svg │ │ ├── map │ │ │ ├── aqua-light.jpg │ │ │ ├── greyscale.jpg │ │ │ ├── inturlam.jpg │ │ │ ├── lunar.jpg │ │ │ ├── midnight.jpg │ │ │ ├── multi-brand.jpg │ │ │ ├── purple.jpg │ │ │ ├── purple.png │ │ │ ├── shadow-grey.jpg │ │ │ ├── style-default.jpg │ │ │ └── ultra-light.jpg │ │ ├── pieprogress │ │ │ ├── fill.svg │ │ │ ├── outline-fill.svg │ │ │ └── outline.svg │ │ ├── postgrid │ │ │ ├── 1.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── pro1.svg │ │ │ ├── pro2.svg │ │ │ └── pro3.svg │ │ ├── pricing │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ └── badges │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ ├── 4.svg │ │ │ │ ├── 5.svg │ │ │ │ └── 6.svg │ │ ├── socialicon │ │ │ ├── fill.svg │ │ │ └── normal.svg │ │ ├── tab │ │ │ ├── pills.svg │ │ │ ├── tabs.svg │ │ │ └── underline.svg │ │ ├── team │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ └── 3.svg │ │ ├── testimonial │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ └── avatars │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ └── 4.svg │ │ └── videopopup │ │ │ ├── classic.svg │ │ │ └── fill.svg │ ├── disable-pattern.png │ ├── image-loader.gif │ ├── options-logo.png │ ├── qubely-logo-white.svg │ ├── qubely-logo.svg │ └── qubely-medium.jpg ├── js │ ├── blocks │ │ ├── contactform.js │ │ ├── image-comparison.js │ │ └── map.js │ ├── common-script.js │ ├── interaction.js │ ├── jquery.animatedheadline.js │ └── qubely.magnific-popup.js ├── reactjs │ ├── .babelrc │ ├── .eslintrc │ ├── .npmrc │ ├── gulpfile.js │ ├── package.json │ ├── src │ │ ├── blocks │ │ │ ├── accordion │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ ├── innerItem │ │ │ │ │ ├── Edit.js │ │ │ │ │ ├── Save.js │ │ │ │ │ └── index.js │ │ │ │ └── style.scss │ │ │ ├── advancedlist │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── animatedheadline │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── button │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── buttongroup │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── contactform │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── counter │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ └── index.js │ │ │ ├── divider │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── editor.scss │ │ │ │ ├── icon.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── heading │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ ├── separators.js │ │ │ │ └── style.scss │ │ │ ├── icon │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── iconlist │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── image-comparison │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── image │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── infobox │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── map │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ ├── mapStyles.js │ │ │ │ └── style.scss │ │ │ ├── pagesettings │ │ │ │ └── index.js │ │ │ ├── pieprogress │ │ │ │ ├── Edit.js │ │ │ │ ├── Progress.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── postgrid │ │ │ │ ├── Edit.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── pricing │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── progressbar │ │ │ │ ├── Edit.js │ │ │ │ ├── index.js │ │ │ │ ├── save.js │ │ │ │ └── style.scss │ │ │ ├── row │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── column │ │ │ │ │ ├── Edit.js │ │ │ │ │ ├── Save.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── scss │ │ │ │ └── style.scss │ │ │ ├── socialicons │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── table-of-contents │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── components.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── tabs │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ ├── style.scss │ │ │ │ └── tab │ │ │ │ │ ├── Edit.js │ │ │ │ │ ├── Save.js │ │ │ │ │ └── index.js │ │ │ ├── team │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── testimonial │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── attributes.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── text │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── timeline │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ ├── videopopup │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ │ └── wrapper │ │ │ │ ├── Edit.js │ │ │ │ ├── Save.js │ │ │ │ ├── index.js │ │ │ │ └── style.scss │ │ ├── components │ │ │ ├── CssGenerator.js │ │ │ ├── CssHelper.js │ │ │ ├── FieldRender.js │ │ │ ├── HelperFunction.js │ │ │ ├── InspectorTab.js │ │ │ ├── InspectorTabs.js │ │ │ ├── InteractionFields │ │ │ │ ├── InteractionData.js │ │ │ │ ├── InteractionParser.js │ │ │ │ ├── RenderFields.js │ │ │ │ └── Timeline.js │ │ │ ├── css │ │ │ │ ├── InnerPanel.scss │ │ │ │ ├── alignment.scss │ │ │ │ ├── animation.scss │ │ │ │ ├── border.scss │ │ │ │ ├── buttonGroup.scss │ │ │ │ ├── color.scss │ │ │ │ ├── contextmenu.scss │ │ │ │ ├── dimension.scss │ │ │ │ ├── dragdimension.scss │ │ │ │ ├── dropdown.scss │ │ │ │ ├── editorinline.scss │ │ │ │ ├── gradient.scss │ │ │ │ ├── iconlist.scss │ │ │ │ ├── inline_toolbar.scss │ │ │ │ ├── inspectorTabs.scss │ │ │ │ ├── interaction.scss │ │ │ │ ├── media.scss │ │ │ │ ├── panelTabs.scss │ │ │ │ ├── range.scss │ │ │ │ ├── select.scss │ │ │ │ ├── selector.scss │ │ │ │ ├── separator.scss │ │ │ │ ├── shape.scss │ │ │ │ ├── styles.scss │ │ │ │ ├── template.scss │ │ │ │ ├── toggle.scss │ │ │ │ ├── typography.scss │ │ │ │ ├── url.scss │ │ │ │ └── wrapper.scss │ │ │ ├── fields │ │ │ │ ├── Alignment.js │ │ │ │ ├── Animation.js │ │ │ │ ├── Background.js │ │ │ │ ├── Border.js │ │ │ │ ├── BorderRadius.js │ │ │ │ ├── BoxShadow.js │ │ │ │ ├── ButtonGroup.js │ │ │ │ ├── ButtonSettings.js │ │ │ │ ├── Carousel │ │ │ │ │ ├── index.js │ │ │ │ │ ├── qubelyCarousel.js │ │ │ │ │ └── utils.js │ │ │ │ ├── Color.js │ │ │ │ ├── ColorAdvanced.js │ │ │ │ ├── ContextMenu.js │ │ │ │ ├── Counter.js │ │ │ │ ├── Device.js │ │ │ │ ├── Dimension.js │ │ │ │ ├── DragDimension.js │ │ │ │ ├── DropDown.js │ │ │ │ ├── GlobalSettings.js │ │ │ │ ├── Gradient.js │ │ │ │ ├── Headings.js │ │ │ │ ├── IconList.js │ │ │ │ ├── IconSelector.js │ │ │ │ ├── InnerPanel.js │ │ │ │ ├── Interaction.js │ │ │ │ ├── ListSettings.js │ │ │ │ ├── Margin.js │ │ │ │ ├── Media.js │ │ │ │ ├── Padding.js │ │ │ │ ├── QubelyButton.js │ │ │ │ ├── QubelyIconList.js │ │ │ │ ├── RadioAdvanced.js │ │ │ │ ├── Range.js │ │ │ │ ├── Select.js │ │ │ │ ├── Selector.js │ │ │ │ ├── Separator.js │ │ │ │ ├── Shape.js │ │ │ │ ├── Styles.js │ │ │ │ ├── Tab.js │ │ │ │ ├── Tabs.js │ │ │ │ ├── Templates.js │ │ │ │ ├── Toggle.js │ │ │ │ ├── Typography.js │ │ │ │ ├── Url.js │ │ │ │ ├── Wrapper.js │ │ │ │ ├── assets │ │ │ │ │ ├── FontList.js │ │ │ │ │ ├── IconListData.js │ │ │ │ │ └── IconSocialData.js │ │ │ │ ├── headingToolbar │ │ │ │ │ ├── headingIcon.js │ │ │ │ │ └── index.js │ │ │ │ └── inline │ │ │ │ │ ├── InlineSpacer.js │ │ │ │ │ ├── InlineToolbar.js │ │ │ │ │ ├── Selector.js │ │ │ │ │ └── index.js │ │ │ ├── format-library │ │ │ │ ├── background-color │ │ │ │ │ └── index.js │ │ │ │ ├── color │ │ │ │ │ └── index.js │ │ │ │ ├── custom-formats.js │ │ │ │ ├── font-size │ │ │ │ │ ├── index.js │ │ │ │ │ └── inline.js │ │ │ │ ├── index.js │ │ │ │ ├── tooltip │ │ │ │ │ ├── index.js │ │ │ │ │ └── inline.js │ │ │ │ └── upper-case │ │ │ │ │ └── index.js │ │ │ └── others │ │ │ │ ├── index.js │ │ │ │ └── pagination │ │ │ │ ├── index.js │ │ │ │ └── page.js │ │ ├── editor.scss │ │ ├── helpers │ │ │ ├── ParseCss.js │ │ │ ├── globalCSS.js │ │ │ ├── icons.js │ │ │ └── utils.js │ │ ├── hooks │ │ │ ├── index.js │ │ │ └── with-css-generator │ │ │ │ ├── cssHelpers.js │ │ │ │ ├── generateCSS.js │ │ │ │ └── index.js │ │ ├── index.js │ │ └── plugins │ │ │ ├── global-settings │ │ │ ├── components │ │ │ │ ├── color.js │ │ │ │ └── index.js │ │ │ ├── constants.js │ │ │ ├── index.js │ │ │ └── style.scss │ │ │ └── index.js │ ├── webpack.config.js │ └── webpack.production.config.js └── shape │ ├── clouds-flat.svg │ ├── clouds-opacity.svg │ ├── drip.svg │ ├── hill-invert.svg │ ├── hill-wave.svg │ ├── hill.svg │ ├── line-wave.svg │ ├── paper-torn.svg │ ├── pointy-wave.svg │ ├── rocky-mountain.svg │ ├── single-wave.svg │ ├── slope-opacity.svg │ ├── slope.svg │ ├── swirl.svg │ ├── turning-slope.svg │ ├── waves3-opacity.svg │ ├── wavy-opacity.svg │ └── zigzag-shark.svg ├── build └── qubely │ ├── assets │ ├── css │ │ ├── font-awesome.min.css │ │ ├── qubely.bundle.min.css │ │ └── style.min.css │ ├── fonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 │ ├── img │ │ ├── admin │ │ │ ├── cta-1.png │ │ │ ├── cta-2.png │ │ │ ├── pointer@1x.png │ │ │ ├── pointer@2x.png │ │ │ ├── thumbs-up@1x.png │ │ │ └── thumbs-up@2x.png │ │ ├── blocks │ │ │ ├── accordion │ │ │ │ ├── classic.svg │ │ │ │ └── fill.svg │ │ │ ├── block-accordion.svg │ │ │ ├── block-advanced-list.svg │ │ │ ├── block-animatedheadline.svg │ │ │ ├── block-button-group.svg │ │ │ ├── block-button.svg │ │ │ ├── block-column.svg │ │ │ ├── block-contact-form.svg │ │ │ ├── block-counter.svg │ │ │ ├── block-divider.svg │ │ │ ├── block-form.svg │ │ │ ├── block-heading.svg │ │ │ ├── block-icon-list.svg │ │ │ ├── block-icon.svg │ │ │ ├── block-image.svg │ │ │ ├── block-imagecomparison.svg │ │ │ ├── block-info-box.svg │ │ │ ├── block-map.svg │ │ │ ├── block-pie-progress.svg │ │ │ ├── block-post-grid.svg │ │ │ ├── block-pricing.svg │ │ │ ├── block-progressbar.svg │ │ │ ├── block-qubely.svg │ │ │ ├── block-row.svg │ │ │ ├── block-social-icons.svg │ │ │ ├── block-tabs.svg │ │ │ ├── block-team.svg │ │ │ ├── block-testimonial-carousel.svg │ │ │ ├── block-testimonial.svg │ │ │ ├── block-text.svg │ │ │ ├── block-timeline.svg │ │ │ ├── block-toc.svg │ │ │ ├── block-videopopup.svg │ │ │ ├── block-wrapper.svg │ │ │ ├── button │ │ │ │ ├── fill.svg │ │ │ │ ├── fill_xs.svg │ │ │ │ ├── outline.svg │ │ │ │ └── outline_xs.svg │ │ │ ├── form │ │ │ │ ├── classic.svg │ │ │ │ └── material.svg │ │ │ ├── icon │ │ │ │ ├── classic.svg │ │ │ │ ├── fill.svg │ │ │ │ └── outline.svg │ │ │ ├── image │ │ │ │ ├── blurb.svg │ │ │ │ └── simple.svg │ │ │ ├── infobox │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ └── 4.svg │ │ │ ├── list │ │ │ │ ├── 1.svg │ │ │ │ └── 2.svg │ │ │ ├── map │ │ │ │ ├── aqua-light.jpg │ │ │ │ ├── greyscale.jpg │ │ │ │ ├── inturlam.jpg │ │ │ │ ├── lunar.jpg │ │ │ │ ├── midnight.jpg │ │ │ │ ├── multi-brand.jpg │ │ │ │ ├── purple.jpg │ │ │ │ ├── purple.png │ │ │ │ ├── shadow-grey.jpg │ │ │ │ ├── style-default.jpg │ │ │ │ └── ultra-light.jpg │ │ │ ├── pieprogress │ │ │ │ ├── fill.svg │ │ │ │ ├── outline-fill.svg │ │ │ │ └── outline.svg │ │ │ ├── postgrid │ │ │ │ ├── 1.svg │ │ │ │ ├── 11.svg │ │ │ │ ├── 12.svg │ │ │ │ ├── 13.svg │ │ │ │ ├── 14.svg │ │ │ │ ├── 15.svg │ │ │ │ ├── 16.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ ├── 4.svg │ │ │ │ ├── 5.svg │ │ │ │ ├── pro1.svg │ │ │ │ ├── pro2.svg │ │ │ │ └── pro3.svg │ │ │ ├── pricing │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ ├── 4.svg │ │ │ │ ├── 5.svg │ │ │ │ └── badges │ │ │ │ │ ├── 1.svg │ │ │ │ │ ├── 2.svg │ │ │ │ │ ├── 3.svg │ │ │ │ │ ├── 4.svg │ │ │ │ │ ├── 5.svg │ │ │ │ │ └── 6.svg │ │ │ ├── socialicon │ │ │ │ ├── fill.svg │ │ │ │ └── normal.svg │ │ │ ├── tab │ │ │ │ ├── pills.svg │ │ │ │ ├── tabs.svg │ │ │ │ └── underline.svg │ │ │ ├── team │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ └── 3.svg │ │ │ ├── testimonial │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ └── avatars │ │ │ │ │ ├── 1.svg │ │ │ │ │ ├── 2.svg │ │ │ │ │ ├── 3.svg │ │ │ │ │ └── 4.svg │ │ │ └── videopopup │ │ │ │ ├── classic.svg │ │ │ │ └── fill.svg │ │ ├── disable-pattern.png │ │ ├── image-loader.gif │ │ ├── options-logo.png │ │ ├── qubely-logo-white.svg │ │ ├── qubely-logo.svg │ │ └── qubely-medium.jpg │ ├── js │ │ ├── blocks │ │ │ ├── contactform.min.js │ │ │ ├── image-comparison.min.js │ │ │ └── map.min.js │ │ ├── common-script.min.js │ │ ├── interaction.min.js │ │ ├── jquery.animatedheadline.min.js │ │ ├── qubely.magnific-popup.min.js │ │ └── qubely.min.js │ └── shape │ │ ├── clouds-flat.svg │ │ ├── clouds-opacity.svg │ │ ├── drip.svg │ │ ├── hill-invert.svg │ │ ├── hill-wave.svg │ │ ├── hill.svg │ │ ├── line-wave.svg │ │ ├── paper-torn.svg │ │ ├── pointy-wave.svg │ │ ├── rocky-mountain.svg │ │ ├── single-wave.svg │ │ ├── slope-opacity.svg │ │ ├── slope.svg │ │ ├── swirl.svg │ │ ├── turning-slope.svg │ │ ├── waves3-opacity.svg │ │ ├── wavy-opacity.svg │ │ └── zigzag-shark.svg │ ├── core │ ├── Options.php │ ├── QUBELY.php │ ├── Template.php │ ├── admin-views │ │ ├── Fields.php │ │ └── Settings.php │ ├── blocks │ │ └── postgrid.php │ ├── initial-setup.php │ ├── template-canvas.php │ └── template-full-width.php │ ├── index.php │ ├── languages │ └── qubely.pot │ ├── qubely.php │ ├── readme.txt │ └── wpml-config.xml ├── core ├── Options.php ├── QUBELY.php ├── Template.php ├── admin-views │ ├── Fields.php │ └── Settings.php ├── blocks │ └── postgrid.php ├── initial-setup.php ├── template-canvas.php └── template-full-width.php ├── docs ├── fields │ ├── alignment.md │ └── background.md ├── hooks │ ├── active-theme-preset.md │ └── row-container-width.md └── readme.md ├── gulpfile.js ├── index.php ├── languages └── qubely.pot ├── package.json ├── qubely.php ├── readme.md ├── readme.txt └── wpml-config.xml /.github/workflows/build-and-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy to SVN 2 | on: 3 | push: 4 | tags: 5 | - "*" 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout repository 11 | uses: actions/checkout@v4 12 | 13 | - name: Set up Node.js 14 | uses: actions/setup-node@v2 15 | with: 16 | node-version: '14.17.5' 17 | 18 | - name: Install dependencies 19 | run: npm install 20 | 21 | - name: Build Plugin 22 | run: npm run build 23 | 24 | - name: Extract version number 25 | id: get_version 26 | run: | 27 | version=$(grep -Po 'Version:\s*\K[\d.]+' qubely.php) 28 | echo "VERSION_NUMBER=$version" >> $GITHUB_ENV 29 | 30 | - name: WordPress Plugin Deploy 31 | id: deploy 32 | uses: 10up/action-wordpress-plugin-deploy@stable 33 | with: 34 | generate-zip: true 35 | env: 36 | SVN_USERNAME: ${{ secrets.SVN_USERNAME }} 37 | SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} 38 | BUILD_DIR: build/qubely 39 | 40 | - name: Create GitHub release 41 | uses: softprops/action-gh-release@v1 42 | with: 43 | files: ${{ github.event.repository.name }}-${{ env.VERSION_NUMBER }}.zip 44 | env: 45 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 46 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "useTabs": true, 4 | "printWidth": 120 5 | } 6 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "emmet.includeLanguages": { 3 | "javascript": "javascriptreact" 4 | }, 5 | "editor.defaultFormatter": "esbenp.prettier-vscode", 6 | "editor.formatOnType": true, 7 | "editor.formatOnSave": true, 8 | "editor.tabSize": 4, 9 | "prettier.singleQuote": true, 10 | "prettier.printWidth": 120, 11 | "emmet.triggerExpansionOnTab": true, 12 | "prettier.useTabs": true, 13 | "prettier.trailingComma": "all", 14 | "editor.codeActionsOnSave": { 15 | "source.fixAll.eslint": "explicit" 16 | }, 17 | "[php]": { 18 | "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /assets/fonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-brands-400.eot -------------------------------------------------------------------------------- /assets/fonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /assets/fonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-brands-400.woff -------------------------------------------------------------------------------- /assets/fonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /assets/fonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-regular-400.eot -------------------------------------------------------------------------------- /assets/fonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /assets/fonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-regular-400.woff -------------------------------------------------------------------------------- /assets/fonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /assets/fonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-solid-900.eot -------------------------------------------------------------------------------- /assets/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /assets/fonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-solid-900.woff -------------------------------------------------------------------------------- /assets/fonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/fonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /assets/img/admin/cta-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/cta-1.png -------------------------------------------------------------------------------- /assets/img/admin/cta-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/cta-2.png -------------------------------------------------------------------------------- /assets/img/admin/pointer@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/pointer@1x.png -------------------------------------------------------------------------------- /assets/img/admin/pointer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/pointer@2x.png -------------------------------------------------------------------------------- /assets/img/admin/thumbs-up@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/thumbs-up@1x.png -------------------------------------------------------------------------------- /assets/img/admin/thumbs-up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/admin/thumbs-up@2x.png -------------------------------------------------------------------------------- /assets/img/blocks/accordion/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/accordion/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/block-column.svg: -------------------------------------------------------------------------------- 1 | column -------------------------------------------------------------------------------- /assets/img/blocks/block-counter.svg: -------------------------------------------------------------------------------- 1 | counter -------------------------------------------------------------------------------- /assets/img/blocks/block-divider.svg: -------------------------------------------------------------------------------- 1 | divider -------------------------------------------------------------------------------- /assets/img/blocks/block-heading.svg: -------------------------------------------------------------------------------- 1 | heading -------------------------------------------------------------------------------- /assets/img/blocks/block-info-box.svg: -------------------------------------------------------------------------------- 1 | team -------------------------------------------------------------------------------- /assets/img/blocks/block-row.svg: -------------------------------------------------------------------------------- 1 | row -------------------------------------------------------------------------------- /assets/img/blocks/block-team.svg: -------------------------------------------------------------------------------- 1 | Team -------------------------------------------------------------------------------- /assets/img/blocks/block-wrapper.svg: -------------------------------------------------------------------------------- 1 | wrapper -------------------------------------------------------------------------------- /assets/img/blocks/button/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/button/fill_xs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/img/blocks/button/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/button/outline_xs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/img/blocks/form/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/form/material.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/icon/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/icon/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/icon/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/image/blurb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/image/simple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/infobox/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/infobox/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/infobox/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/infobox/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/list/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/list/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/map/aqua-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/aqua-light.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/greyscale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/greyscale.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/inturlam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/inturlam.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/lunar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/lunar.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/midnight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/midnight.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/multi-brand.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/multi-brand.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/purple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/purple.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/purple.png -------------------------------------------------------------------------------- /assets/img/blocks/map/shadow-grey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/shadow-grey.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/style-default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/style-default.jpg -------------------------------------------------------------------------------- /assets/img/blocks/map/ultra-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/blocks/map/ultra-light.jpg -------------------------------------------------------------------------------- /assets/img/blocks/pieprogress/fill.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /assets/img/blocks/pieprogress/outline-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /assets/img/blocks/pieprogress/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/14.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/15.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/pro1.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /assets/img/blocks/postgrid/pro2.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/1.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /assets/img/blocks/pricing/2.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /assets/img/blocks/pricing/3.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /assets/img/blocks/pricing/4.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /assets/img/blocks/pricing/5.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/pricing/badges/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/tab/pills.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/tab/tabs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/tab/underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/team/1.svg: -------------------------------------------------------------------------------- 1 | Group 9Created with Sketch. -------------------------------------------------------------------------------- /assets/img/blocks/team/2.svg: -------------------------------------------------------------------------------- 1 | Group 11Created with Sketch. -------------------------------------------------------------------------------- /assets/img/blocks/team/3.svg: -------------------------------------------------------------------------------- 1 | Group 3Created with Sketch. -------------------------------------------------------------------------------- /assets/img/blocks/testimonial/avatars/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/testimonial/avatars/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/testimonial/avatars/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/testimonial/avatars/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/videopopup/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/blocks/videopopup/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/disable-pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/disable-pattern.png -------------------------------------------------------------------------------- /assets/img/image-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/image-loader.gif -------------------------------------------------------------------------------- /assets/img/options-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/options-logo.png -------------------------------------------------------------------------------- /assets/img/qubely-logo-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/img/qubely-medium.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/assets/img/qubely-medium.jpg -------------------------------------------------------------------------------- /assets/reactjs/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "es2015", 5 | { 6 | "modules": false 7 | } 8 | ], 9 | "react", 10 | "stage-2" 11 | ], 12 | "plugins": [ 13 | "syntax-dynamic-import", 14 | "transform-decorators-legacy", 15 | "transform-object-rest-spread", 16 | ["transform-runtime", { 17 | "helpers": false, 18 | "polyfill": false, 19 | "regenerator": true 20 | }] 21 | ], 22 | "env": { 23 | "test": { 24 | "plugins": [ 25 | "transform-decorators-legacy", 26 | "transform-object-rest-spread", 27 | "istanbul" 28 | ] 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /assets/reactjs/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "ecmaFeatures": { 3 | "jsx": true, 4 | "modules": true 5 | }, 6 | "env": { 7 | "browser": true, 8 | "node": true 9 | }, 10 | "parser": "babel-eslint", 11 | "rules": { 12 | "quotes": [ 13 | 2, 14 | "single" 15 | ], 16 | "strict": [ 17 | 2, 18 | "never" 19 | ], 20 | "react/jsx-uses-react": 2, 21 | "react/jsx-uses-vars": 2, 22 | "react/react-in-jsx-scope": 2 23 | }, 24 | "plugins": [ 25 | "react" 26 | ] 27 | } -------------------------------------------------------------------------------- /assets/reactjs/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true -------------------------------------------------------------------------------- /assets/reactjs/gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulp = require("gulp"); 2 | const sass = require("gulp-sass"); 3 | const concat = require("gulp-concat"); 4 | const minifyCSS = require("gulp-minify-css"); 5 | const autoprefixer = require("gulp-autoprefixer"); 6 | 7 | gulp.task("sass", function () { 8 | return gulp 9 | .src(["./src/blocks/**/style.scss", "./src/blocks/scss/style.scss"]) 10 | .pipe(sass()) 11 | .pipe( 12 | autoprefixer({ 13 | overrideBrowserslist: ["last 2 versions"], 14 | cascade: false, 15 | }) 16 | ) 17 | .pipe(minifyCSS()) 18 | .pipe(concat("style.min.css")) 19 | .pipe(gulp.dest("../css")); 20 | }); 21 | 22 | gulp.task("watch", function () { 23 | gulp.watch("src/blocks/**/*.scss", gulp.series("sass")); 24 | }); 25 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/accordion/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { InnerBlocks } = wp.blockEditor; 3 | const { 4 | HelperFunction: { animationAttr, IsInteraction }, 5 | } = wp.qubelyComponents; 6 | class Save extends Component { 7 | render() { 8 | const { animation, uniqueId, itemToggle, interaction } = this.props.attributes; 9 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 10 | const className = `qubely-block-accordion ${interactionClass} qubely-block-${uniqueId}`; 11 | return ( 12 |
13 | 14 |
15 | ); 16 | } 17 | } 18 | export default Save; 19 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/accordion/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | const { __ } = wp.i18n; 5 | const { registerBlockType } = wp.blocks; 6 | const { 7 | gloalSettings: { globalAttributes }, 8 | } = wp.qubelyComponents; 9 | 10 | registerBlockType("qubely/accordion", { 11 | title: __("Accordion"), 12 | description: "Display creative collapsible texts with Qubely Accordion.", 13 | category: "qubely", 14 | icon: {__("Accordion, 15 | keywords: [__("accordion"), __("collapsible"), __("collapse")], 16 | supports: { 17 | html: false, 18 | className: false, 19 | align: ["center", "wide", "full"], 20 | }, 21 | example: { 22 | attributes: {}, 23 | innerBlocks: [ 24 | { 25 | name: "qubely/accordion-item", 26 | innerBlocks: [ 27 | { 28 | name: "qubely/heading", 29 | attributes: { 30 | content: "Qubely - A Full-fledged Gutenberg Builder", 31 | alignment: { md: "center" }, 32 | }, 33 | }, 34 | ], 35 | }, 36 | ], 37 | }, 38 | attributes: { 39 | uniqueId: { type: "string", default: "" }, 40 | defaultItems: { type: "number", default: 2 }, 41 | itemToggle: { type: "boolean", default: true }, 42 | ...globalAttributes, 43 | }, 44 | 45 | edit: Edit, 46 | save: Save, 47 | }); 48 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/advancedlist/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { 3 | HelperFunction: { animationAttr, IsInteraction }, 4 | } = wp.qubelyComponents; 5 | 6 | class Save extends Component { 7 | renderListItems = () => { 8 | const { 9 | attributes: { listItems }, 10 | } = this.props; 11 | 12 | return listItems.map((item, i) =>
  • {item}
  • ); 13 | }; 14 | render() { 15 | const { 16 | attributes: { uniqueId, alignment, bulletStyle, listType, animation, interaction }, 17 | } = this.props; 18 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 19 | const ListTag = listType == "ordered" ? "ol" : "ul"; 20 | return ( 21 |
    22 |
    23 | 26 | {this.renderListItems()} 27 | 28 |
    29 |
    30 | ); 31 | } 32 | } 33 | 34 | export default Save; 35 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/advancedlist/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import attributes from "./attributes"; 5 | const { __ } = wp.i18n; 6 | const { registerBlockType } = wp.blocks; 7 | 8 | registerBlockType("qubely/advancedlist", { 9 | title: __("Advanced List"), 10 | description: __("Include stylish lists to display in your site with Qubely Advanced List."), 11 | category: "qubely", 12 | icon: ( 13 | {__("Advanced 18 | ), 19 | keywords: [ 20 | __("Advanced", "qubely"), 21 | __("list", "qubely"), 22 | __("advanced list", "qubely"), 23 | __("Advanced List", "qubely"), 24 | ], 25 | supports: { 26 | align: ["center", "wide", "full"], 27 | }, 28 | example: { 29 | attributes: { 30 | background: "#fff", 31 | }, 32 | }, 33 | attributes, 34 | edit: Edit, 35 | save: Save, 36 | }); 37 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/animatedheadline/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import { attributes } from "./attributes"; 5 | 6 | const { registerBlockType } = wp.blocks; 7 | const { __ } = wp.i18n; 8 | 9 | registerBlockType("qubely/animatedheadline", { 10 | title: __("Animated Headline"), 11 | description: "Grab the attention of your users with animating texts in headlines", 12 | category: "qubely", 13 | icon: ( 14 | {__("Animated 15 | ), 16 | keywords: [__("headline"), __("animated"), __("heading"), __("title")], 17 | example: { 18 | attributes: {}, 19 | }, 20 | attributes, 21 | edit: Edit, 22 | save: Save, 23 | }); 24 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/animatedheadline/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-animated-heading { 2 | .animated-heading-text { 3 | &.has-text-align-left { 4 | justify-content: flex-start; 5 | } 6 | &.has-text-align-right { 7 | justify-content: flex-end; 8 | } 9 | &.has-text-align-center { 10 | justify-content: center; 11 | } 12 | &::before { 13 | display: none; 14 | } 15 | .qubely-animated-text { 16 | padding-left: 5px; 17 | padding-right: 5px; 18 | line-height: inherit; 19 | } 20 | } 21 | &.qubely-block-animated-heading-backend .animated-heading-text { 22 | display: flex; 23 | flex-wrap: wrap; 24 | align-items: center; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/button/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import attributes from "./attributes"; 5 | 6 | const { __ } = wp.i18n; 7 | const { registerBlockType } = wp.blocks; 8 | 9 | registerBlockType("qubely/button", { 10 | title: __("Button"), 11 | description: __("Create stylish call-to-action buttons with Qubely Buttons."), 12 | category: "qubely", 13 | icon: {__("Button, 14 | supports: { 15 | align: ["full", "wide", "center"], 16 | }, 17 | keywords: [__("link"), __("button")], 18 | example: { 19 | attributes: {}, 20 | }, 21 | attributes, 22 | // getEditWrapperProps(attributes) { 23 | // if (attributes.customClassName != "") { 24 | // return { 25 | // className: `wp-block block-editor-block-list__block ${attributes.customClassName}`, 26 | // }; 27 | // } 28 | // }, 29 | edit: Edit, 30 | save: Save, 31 | }); 32 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/buttongroup/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { InnerBlocks } = wp.blockEditor; 3 | const { 4 | HelperFunction: { IsInteraction, animationAttr }, 5 | } = wp.qubelyComponents; 6 | 7 | class Save extends Component { 8 | render() { 9 | const { uniqueId, interaction, animation } = this.props.attributes; 10 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 11 | return ( 12 |
    13 |
    14 | 15 |
    16 |
    17 | ); 18 | } 19 | } 20 | export default Save; 21 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/buttongroup/attributes.js: -------------------------------------------------------------------------------- 1 | const { 2 | gloalSettings: { globalAttributes }, 3 | HelperFunction: { IsInteraction }, 4 | } = wp.qubelyComponents; 5 | 6 | const attributes = { 7 | uniqueId: { type: "string", default: "" }, 8 | ...globalAttributes, 9 | buttons: { type: "number", default: 2 }, 10 | alignment: { 11 | type: "object", 12 | default: { md: "flex-start" }, 13 | style: [{ selector: "{{QUBELY}} .qubely-block-button-group {justify-content: {{alignment}}; }" }], 14 | }, 15 | spacing: { 16 | type: "object", 17 | default: { 18 | unit: "px", 19 | md: "10", 20 | }, 21 | style: [ 22 | { 23 | selector: 24 | '{{QUBELY}} .qubely-block-button-group {margin-right: -{{spacing}};} {{QUBELY}} .qubely-block-button-group.qubely-backend .block-editor-block-list__layout > div[data-type="qubely/button"]:not(:nth-last-child(2)), {{QUBELY}} .qubely-block-button-group .wp-block-qubely-button:not(:last-child){margin-right: {{spacing}};}', 25 | }, 26 | ], 27 | }, 28 | }; 29 | export default attributes; 30 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/buttongroup/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-button-group { 2 | display: flex; 3 | flex-wrap: wrap; 4 | .block-editor-inner-blocks { 5 | width: auto !important; 6 | .block-editor-block-list__layout { 7 | display: block; 8 | width: fit-content; 9 | > div { 10 | display: inline-block; 11 | width: auto; 12 | .qubely-block-btn { 13 | margin: 4px; 14 | } 15 | &:last-child { 16 | margin: 10px; 17 | } 18 | } 19 | .block-list-appender { 20 | display: inline-block !important; 21 | } 22 | } 23 | } 24 | .qubely-add-new { 25 | display: flex; 26 | align-items: center; 27 | justify-content: center; 28 | width: fit-content; 29 | z-index: 100; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/counter/Save.js: -------------------------------------------------------------------------------- 1 | const { Component, Fragment } = wp.element; 2 | const { 3 | HelperFunction: { animationAttr, IsInteraction }, 4 | } = wp.qubelyComponents; 5 | class Save extends Component { 6 | render() { 7 | const { uniqueId, counterLimit, counterDuration, postfix, prefix, animation, interaction } = 8 | this.props.attributes; 9 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 10 | return ( 11 |
    12 |
    13 |
    14 | {counterLimit > 0 && ( 15 | 16 | {prefix && {prefix}} 17 | 23 | {0} 24 | 25 | {postfix && {postfix}} 26 | 27 | )} 28 |
    29 |
    30 |
    31 | ); 32 | } 33 | } 34 | export default Save; 35 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/divider/Save.js: -------------------------------------------------------------------------------- 1 | import icons from "../divider/icon"; 2 | const { Component } = wp.element; 3 | const { 4 | HelperFunction: { animationAttr, IsInteraction }, 5 | } = wp.qubelyComponents; 6 | 7 | class Save extends Component { 8 | render() { 9 | const { uniqueId, style, animation, interaction } = this.props.attributes; 10 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 11 | return ( 12 |
    13 |
    14 | {style == "fill" || style == "dot" || style == "dash" ? ( 15 |
    16 | ) : ( 17 | icons[style] 18 | )} 19 |
    20 |
    21 | ); 22 | } 23 | } 24 | export default Save; 25 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/divider/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-divider { 2 | display: inline-block; 3 | .qubely-block-divider-style-fill { 4 | border-top-style: solid; 5 | } 6 | .qubely-block-divider-style-dot { 7 | border-top-style: dotted; 8 | } 9 | .qubely-block-divider-style-dash { 10 | border-top-style: dashed; 11 | } 12 | > div { 13 | margin: 0 auto; 14 | display: inline-block; 15 | } 16 | .divider-options-trigger { 17 | display: block; 18 | width: 100%; 19 | margin: 0px; 20 | padding: 0px; 21 | color: inherit; 22 | background: none; 23 | box-shadow: none; 24 | border: none; 25 | outline: none; 26 | cursor: pointer; 27 | font: inherit; 28 | &:focus { 29 | outline: none !important; 30 | } 31 | } 32 | } 33 | .qubely-divider-picker-options { 34 | max-height: 300px; 35 | } 36 | 37 | .qubely-divider-picker-option:hover { 38 | background: #e8eaeb; 39 | border-radius: 5px; 40 | } 41 | .qubely-divider-picker.backend { 42 | display: inline-block; 43 | } 44 | .components-panel__body { 45 | .qubely-divider-picker { 46 | width: 100%; 47 | button { 48 | cursor: pointer; 49 | color: inherit; 50 | } 51 | } 52 | } 53 | 54 | .qubely-divider-picker-content .components-popover__content > div { 55 | width: 250px; 56 | } 57 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/heading/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-heading { 2 | transition: color 200ms ease-in-out, background-color 200ms ease-in-out, border-color 200ms ease-in-out, 3 | box-shadow 200ms ease-in-out; 4 | position: relative; 5 | h1, 6 | h2, 7 | h3, 8 | h4, 9 | h5, 10 | h6 { 11 | padding: 0; 12 | margin: 0; 13 | line-height: 1; 14 | position: relative; 15 | &::before, 16 | &::after { 17 | display: none !important; 18 | } 19 | } 20 | 21 | .qubely-text-has-bgcolor { 22 | padding-left: 10px; 23 | padding-right: 10px; 24 | } 25 | 26 | .qubely-separator { 27 | font-size: 0; 28 | .qubely-separator-type-css, 29 | .qubely-separator-type-svg { 30 | display: inline-block; 31 | } 32 | } 33 | 34 | &.qubely-separator-position-left, 35 | &.qubely-separator-position-right, 36 | &.qubely-separator-position-leftright { 37 | .qubely-heading-container { 38 | display: inline-flex; 39 | align-items: center; 40 | 41 | .qubely-heading-selector, 42 | .qubely-separator { 43 | display: inline-flex; 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/icon/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { 3 | HelperFunction: { animationAttr, IsInteraction }, 4 | } = wp.qubelyComponents; 5 | 6 | class Save extends Component { 7 | render() { 8 | const { uniqueId, name, qubelyIconUrl:url, animation, interaction } = this.props.attributes; 9 | 10 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 11 | return ( 12 |
    13 |
    14 |
    15 | {url.url ? ( 16 | 22 | 23 | 24 | ) : ( 25 | 26 | )} 27 |
    28 |
    29 |
    30 | ); 31 | } 32 | } 33 | export default Save; 34 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/icon/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-icon-wrapper { 2 | .qubely-block-icon { 3 | display: inline-block; 4 | line-height: 1; 5 | font-size: 36px; 6 | text-align: center; 7 | transition: color 400ms, border-color 400ms, background-color 400ms, box-shadow 400ms; 8 | i { 9 | font-style: normal; 10 | width: 1em; 11 | height: 1em; 12 | position: relative; 13 | display: block; 14 | transition: 400ms; 15 | &:before { 16 | position: absolute; 17 | left: 50%; 18 | transform: translateX(-50%); 19 | } 20 | } 21 | .qubely-icon-block-anchor { 22 | text-decoration: none !important; 23 | a { 24 | text-decoration: none !important; 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/iconlist/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { RichText } = wp.blockEditor; 3 | const { 4 | HelperFunction: { IsInteraction, animationAttr }, 5 | } = wp.qubelyComponents; 6 | 7 | class Save extends Component { 8 | renderListItems = () => { 9 | const { 10 | attributes: { listItems, iconPosition }, 11 | } = this.props; 12 | return listItems.map((item, index) => { 13 | return ( 14 |
  • 15 | {iconPosition == "left" && } 16 | 17 | {iconPosition == "right" && } 18 |
  • 19 | ); 20 | }); 21 | }; 22 | 23 | render() { 24 | const { 25 | attributes: { uniqueId, interaction, animation }, 26 | } = this.props; 27 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 28 | return ( 29 |
    30 |
    31 |
      {this.renderListItems()}
    32 |
    33 |
    34 | ); 35 | } 36 | } 37 | 38 | export default Save; 39 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/image-comparison/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import { attributes } from "./attributes"; 5 | const { __ } = wp.i18n; 6 | const { registerBlockType } = wp.blocks; 7 | 8 | registerBlockType("qubely/imagecomparison", { 9 | title: __("Image Comparison"), 10 | description: __("Compare Images with Qubely"), 11 | category: "qubely", 12 | icon: ( 13 | {__("Image 14 | ), 15 | keywords: [__("image"), __("image comparison"), __("comparison")], 16 | supports: { 17 | align: ["center", "wide", "full"], 18 | }, 19 | example: { 20 | attributes: {}, 21 | }, 22 | attributes, 23 | edit: Edit, 24 | save: Save, 25 | }); 26 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/infobox/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import attributes from "./attributes"; 5 | const { __ } = wp.i18n; 6 | const { registerBlockType } = wp.blocks; 7 | 8 | registerBlockType("qubely/infobox", { 9 | title: __("Info Box", "qubely"), 10 | description: "Be creatively informative with Qubely Info Box.", 11 | icon: {__("Info, 12 | category: "qubely", 13 | supports: { 14 | align: ["center", "wide", "full"], 15 | }, 16 | keywords: [__("service", "qubely"), __("feature", "qubely"), __("info", "qubely")], 17 | example: { 18 | attributes: {}, 19 | }, 20 | attributes, 21 | edit: Edit, 22 | save: Save, 23 | }); 24 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/postgrid/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | const { __ } = wp.i18n; 4 | const { registerBlockType } = wp.blocks; 5 | 6 | if (!qubely_admin.pro_enable) { 7 | registerBlockType("qubely/postgrid", { 8 | title: __("Post Grid"), 9 | description: "Fetch blog posts and display them beautifully in grid or list views with Qubely Postgrid Block.", 10 | icon: {__("Postgrid, 11 | category: "qubely", 12 | supports: { 13 | align: ["center", "wide", "full"], 14 | }, 15 | keywords: [__("Post"), __("Post Grid"), __("Grid")], 16 | example: { 17 | attributes: { 18 | layout: 2, 19 | column: { 20 | md: 1, 21 | }, 22 | showExcerpt: false, 23 | postsToShow: 1, 24 | }, 25 | }, 26 | edit: Edit, 27 | save: function (props) { 28 | return null; 29 | }, 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/progressbar/save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { 3 | HelperFunction: { animationAttr, IsInteraction }, 4 | } = wp.qubelyComponents; 5 | class Save extends Component { 6 | render() { 7 | const { uniqueId, animation, title, labelPosition, striped, progress, showProgress, interaction } = 8 | this.props.attributes; 9 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 10 | const labelsContent = 11 | title != "" ? ( 12 |
    13 |
    {title}
    14 | {showProgress && ( 15 |
    16 | {progress}% 17 |
    18 | )} 19 |
    20 | ) : ( 21 | "" 22 | ); 23 | return ( 24 |
    25 |
    26 | {labelPosition == "outside" && labelsContent} 27 |
    28 |
    29 | {striped &&
    } 30 | {labelPosition == "inside" && labelsContent} 31 |
    32 |
    33 |
    34 |
    35 | ); 36 | } 37 | } 38 | 39 | export default Save; 40 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/progressbar/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-progress-bar { 2 | .qubely-block-progress-labels { 3 | display: -ms-flexbox; 4 | display: flex; 5 | justify-content: space-between; 6 | } 7 | 8 | .qubely-progress { 9 | .qubely-progress-bar { 10 | position: relative; 11 | transition: 300ms; 12 | height: 100%; 13 | overflow: hidden; 14 | .qubely-progress-striped { 15 | height: 100%; 16 | width: 100%; 17 | background-image: linear-gradient( 18 | 45deg, 19 | rgba(255, 255, 255, 0.15) 25%, 20 | transparent 25%, 21 | transparent 50%, 22 | rgba(255, 255, 255, 0.15) 50%, 23 | rgba(255, 255, 255, 0.15) 75%, 24 | transparent 75%, 25 | transparent 26 | ); 27 | background-size: 40px 40px; 28 | transition: 300ms; 29 | } 30 | } 31 | 32 | .qubely-block-progress-labels { 33 | position: absolute; 34 | top: 0; 35 | left: 0; 36 | right: 0; 37 | bottom: 0; 38 | padding: 0 10px; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/row/column/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { InnerBlocks } = wp.blockEditor; 3 | const { 4 | HelperFunction: { animationAttr }, 5 | } = wp.qubelyComponents; 6 | 7 | class Save extends Component { 8 | render() { 9 | const { 10 | attributes: { uniqueId, animation }, 11 | } = this.props; 12 | return ( 13 |
    14 |
    15 | 16 |
    17 |
    18 | ); 19 | } 20 | } 21 | export default Save; 22 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/socialicons/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { 3 | HelperFunction: { animationAttr, IsInteraction }, 4 | } = wp.qubelyComponents; 5 | class Save extends Component { 6 | render() { 7 | const { uniqueId, socialIcons, iconLabel, layout, useDefaultStyle, animation, interaction } = 8 | this.props.attributes; 9 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 10 | return ( 11 |
    12 |
    17 | 33 |
    34 |
    35 | ); 36 | } 37 | } 38 | export default Save; 39 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/table-of-contents/index.js: -------------------------------------------------------------------------------- 1 | import "./style.scss"; 2 | import Edit from "./Edit"; 3 | import Save from "./Save"; 4 | import attributes from "./attributes"; 5 | const { __ } = wp.i18n; 6 | const { registerBlockType } = wp.blocks; 7 | 8 | registerBlockType("qubely/table-of-contents", { 9 | title: __("Table of Contents"), 10 | description: "Organize page/post contents with Qubely Table of Contents", 11 | icon: {__("Table, 12 | category: "qubely", 13 | supports: {}, 14 | keywords: [__("Table of Contents"), __("Table"), __("Contents"), __("Qubely")], 15 | example: {}, 16 | attributes, 17 | edit: Edit, 18 | save: Save, 19 | }); 20 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/tabs/tab/Edit.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { InnerBlocks } = wp.blockEditor; 3 | class Edit extends Component { 4 | render() { 5 | return ( 6 |
    7 | } 11 | /> 12 |
    13 | ); 14 | } 15 | } 16 | export default Edit; 17 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/tabs/tab/Save.js: -------------------------------------------------------------------------------- 1 | import classnames from "classnames"; 2 | const { Component } = wp.element; 3 | const { InnerBlocks } = wp.blockEditor; 4 | class Save extends Component { 5 | render() { 6 | const { 7 | attributes: { id }, 8 | } = this.props; 9 | 10 | const wrapperClasses = classnames("qubely-tab-content", { ["qubely-active"]: id == 1 }); 11 | return ( 12 |
    13 | 14 |
    15 | ); 16 | } 17 | } 18 | export default Save; 19 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/tabs/tab/index.js: -------------------------------------------------------------------------------- 1 | import Save from "./Save"; 2 | import Edit from "./Edit"; 3 | const { __ } = wp.i18n; 4 | const { registerBlockType } = wp.blocks; 5 | 6 | registerBlockType("qubely/tab", { 7 | title: __("Tab"), 8 | category: "qubely", 9 | parent: ["qubely/tabs"], 10 | supports: { 11 | html: false, 12 | inserter: false, 13 | reusable: false, 14 | }, 15 | icon: {__("Tabs, 16 | attributes: { 17 | uniqueId: { 18 | type: "string", 19 | default: "", 20 | }, 21 | id: { 22 | type: "number", 23 | default: 1, 24 | }, 25 | customClassName: { 26 | type: "string", 27 | default: "", 28 | }, 29 | }, 30 | getEditWrapperProps(attributes) { 31 | return { 32 | "data-tab": attributes.id, 33 | className: `wp-block editor-block-list__block block-editor-block-list__block qubely-tab-content`, 34 | }; 35 | }, 36 | edit: Edit, 37 | save: Save, 38 | }); 39 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/wrapper/Save.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { InnerBlocks } = wp.blockEditor; 3 | const { 4 | HelperFunction: { animationAttr, IsInteraction }, 5 | } = wp.qubelyComponents; 6 | class Save extends Component { 7 | render() { 8 | const { uniqueId, animation, interaction } = this.props.attributes; 9 | const interactionClass = IsInteraction(interaction) ? "qubley-block-interaction" : ""; 10 | return ( 11 |
    12 |
    13 | 14 |
    15 |
    16 | ); 17 | } 18 | } 19 | export default Save; 20 | -------------------------------------------------------------------------------- /assets/reactjs/src/blocks/wrapper/style.scss: -------------------------------------------------------------------------------- 1 | .qubely-block-wrapper-block { 2 | transition: border-color 400ms, background-color 400ms, box-shadow 400ms; 3 | } 4 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/InspectorTab.js: -------------------------------------------------------------------------------- 1 | const { Fragment } = wp.element; 2 | 3 | const InspectorTab = (props) => { 4 | const { children, isActive, key } = props; 5 | return ( 6 |
    12 | {Array.isArray(children) ? children.map((item) => item) : children} 13 |
    14 | ); 15 | }; 16 | 17 | export default InspectorTab; 18 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/InnerPanel.scss: -------------------------------------------------------------------------------- 1 | .qubely-field { 2 | &.qubely-field-inner-panel { 3 | border: 1px solid #e2e4e7; 4 | margin: -1px 0 0 0; 5 | .qubely-field-inner-panel-title { 6 | background: #f8f9f9; 7 | padding: 12px 10px; 8 | display: flex; 9 | align-items: center; 10 | justify-content: space-between; 11 | -webkit-user-select: none; 12 | -moz-user-select: none; 13 | -ms-user-select: none; 14 | user-select: none; 15 | cursor: pointer; 16 | &:hover { 17 | background: #f0f1f1; 18 | } 19 | } 20 | 21 | .qubely-field-inner-panel-body { 22 | border-top: 1px solid #e2e4e7; 23 | padding: 10px 16px; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/alignment.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-button-list { 2 | &.qubely-field-button-list-fluid { 3 | display: flex; 4 | justify-content: space-between; 5 | .qubely-button { 6 | width: 100%; 7 | justify-content: center; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/animation.scss: -------------------------------------------------------------------------------- 1 | .qubely-animation-popup { 2 | padding: 15px; 3 | } 4 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/border.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-border-type { 2 | width: 16px; 3 | display: block; 4 | height: 0; 5 | &.qubely-field-border-type-solid { 6 | border-top: 3px solid #8d96a0; 7 | } 8 | &.qubely-field-border-type-dotted { 9 | border-top: 3px dotted #8d96a0; 10 | } 11 | &.qubely-field-border-type-dashed { 12 | border-top: 3px dashed #8d96a0; 13 | } 14 | &.qubely-field-border-type-double { 15 | border-top: 6px double #8d96a0; 16 | } 17 | } 18 | 19 | .active { 20 | .qubely-field-border-type { 21 | &.qubely-field-border-type-solid { 22 | border-top-color: #2184f9; 23 | } 24 | &.qubely-field-border-type-dotted { 25 | border-top-color: #2184f9; 26 | } 27 | &.qubely-field-border-type-dashed { 28 | border-top-color: #2184f9; 29 | } 30 | &.qubely-field-border-type-double { 31 | border-top-color: #2184f9; 32 | } 33 | } 34 | } 35 | 36 | .qubely-svg-fill { 37 | fill: #8d96a0; 38 | } 39 | 40 | .qubely-svg-stroke { 41 | stroke: #8d96a0; 42 | } 43 | .active { 44 | .qubely-svg-fill { 45 | fill: #2184f9; 46 | } 47 | .qubely-svg-stroke { 48 | stroke: #2184f9; 49 | } 50 | } 51 | 52 | .qubely-border-clear { 53 | font-size: 12px; 54 | color: #8d96a0; 55 | &:hover { 56 | color: #2184f9; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/buttonGroup.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-group-btn { 2 | align-items: center; 3 | label { 4 | margin-bottom: 0; 5 | } 6 | .qubely-field-child { 7 | display: flex; 8 | justify-content: end; 9 | align-items: center; 10 | .qubley-group-button { 11 | display: inline-block; 12 | white-space: nowrap; 13 | padding: 0px 9px; 14 | color: #8d96a0; 15 | font-size: 12px; 16 | border-top: 1px solid #d6d9dd; 17 | border-bottom: 1px solid #d6d9dd; 18 | border-left: 1px solid #d6d9dd; 19 | text-transform: capitalize; 20 | cursor: pointer; 21 | box-shadow: none; 22 | line-height: 26px; 23 | height: 26px; 24 | &.extra-padding { 25 | padding: 0px 10px; 26 | font-weight: bold; 27 | font-size: 15px; 28 | } 29 | &:last-child { 30 | border-bottom-right-radius: 3px; 31 | border-top-right-radius: 3px; 32 | border-right: 1px solid #d6d9dd; 33 | } 34 | &:first-child { 35 | border-top-left-radius: 3px; 36 | border-bottom-left-radius: 3px; 37 | } 38 | &.qubley-active-group-btn { 39 | color: #2184f9; 40 | background: #d2e7ff; 41 | border-color: #a9d0ff; 42 | & + .qubley-group-button { 43 | border-left-color: #a9d0ff; 44 | } 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/dimension.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-dimension { 2 | .qubely-dimension-input-group { 3 | overflow: hidden; 4 | > span { 5 | float: left; 6 | width: 20%; 7 | input { 8 | text-align: center; 9 | max-width: 100%; 10 | border: 1px solid #e5e7ea !important; 11 | } 12 | &:not(:last-child) input { 13 | border-radius: 0; 14 | border-right: 0 !important; 15 | } 16 | input + span { 17 | display: block; 18 | font-size: 10px; 19 | text-transform: capitalize; 20 | text-align: center; 21 | } 22 | &:first-child input { 23 | border-radius: 4px 0 0 4px; 24 | } 25 | } 26 | > button { 27 | width: 20%; 28 | justify-content: center; 29 | border-radius: 0 4px 4px 0; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/editorinline.scss: -------------------------------------------------------------------------------- 1 | .components-toolbar.components-toolbar { 2 | div { 3 | button { 4 | width: auto; 5 | .qubely-color-picker-icon-wraper { 6 | border-radius: 3px; 7 | border: none; 8 | outline: none; 9 | padding: 0px 5px 0px 5px; 10 | } 11 | } 12 | } 13 | } 14 | .components-toolbar { 15 | button { 16 | img { 17 | &.qubely-block-icon { 18 | &.small { 19 | width: 50%; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | 26 | .qubely-toolber-popup { 27 | .qubely-field-alignment { 28 | margin-bottom: 15px; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/inline_toolbar.scss: -------------------------------------------------------------------------------- 1 | .qubely-toolber-field { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | min-width: 48px; 6 | button { 7 | padding: 3px; 8 | height: 36px; 9 | width: 36px; 10 | background: none; 11 | text-align: center; 12 | display: block; 13 | border: none; 14 | i { 15 | display: block; 16 | padding: 5px; 17 | border-radius: 4px; 18 | height: 30px; 19 | width: 30px; 20 | line-height: 20px; 21 | font-size: 14px; 22 | font-style: normal !important; 23 | cursor: pointer; 24 | } 25 | &:focus i, 26 | &:hover i { 27 | box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; 28 | color: #555d66; 29 | } 30 | } 31 | } 32 | 33 | .qubely-toolber-popup { 34 | padding: 15px; 35 | min-width: 220px; 36 | } 37 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/media.scss: -------------------------------------------------------------------------------- 1 | .qubely-media { 2 | margin-bottom: 15px; 3 | label { 4 | margin-bottom: 10px; 5 | display: block; 6 | } 7 | .qubely-media-actions { 8 | position: absolute; 9 | top: 10px; 10 | right: 10px; 11 | } 12 | .qubely-single-img { 13 | .qubely-media-image-parent { 14 | position: relative; 15 | display: inline-block; 16 | min-height: 140px; 17 | min-width: 140px; 18 | img { 19 | margin: 0; 20 | } 21 | } 22 | } 23 | .qubely-placeholder-image { 24 | border: 1px dashed #dddd; 25 | padding: 20px 20px 25px; 26 | text-align: center; 27 | background: #ffffff; 28 | cursor: copy; 29 | border-radius: 5px; 30 | div { 31 | margin: 8px 0px; 32 | text-align: center; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/select.scss: -------------------------------------------------------------------------------- 1 | .qubely-popup-select { 2 | position: relative; 3 | select { 4 | width: 100%; 5 | } 6 | .qubely-clear { 7 | position: absolute; 8 | right: 10px; 9 | top: 50%; 10 | transform: translateY(-50%); 11 | background: #fff; 12 | color: #8d96a0; 13 | padding: 2px 6px; 14 | cursor: pointer; 15 | &:hover { 16 | color: #717982; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/selector.scss: -------------------------------------------------------------------------------- 1 | .qubely-toolber-field { 2 | button:focus { 3 | outline: none; 4 | } 5 | } 6 | .qubely-selector-popup-toolbar { 7 | & .components-popover__content { 8 | display: flex; 9 | align-items: center; 10 | justify-content: center; 11 | min-width: 150px !important; 12 | padding-bottom: 8px; 13 | padding-top: 8px; 14 | border-radius: 5px; 15 | } 16 | } 17 | .qubely-selector-toolber-popup { 18 | width: 100%; 19 | } 20 | .qubely-field-selector { 21 | .qubely-field-child { 22 | display: flex; 23 | flex-wrap: wrap; 24 | flex-basis: auto; 25 | .qubely-selector-button-group { 26 | display: flex; 27 | flex-direction: column; 28 | width: 100%; 29 | padding-left: 2%; 30 | padding-right: 2%; 31 | .qubely-button { 32 | display: flex; 33 | padding: 5px 0px 5px 0px; 34 | margin: 0px 0px 2px 0px; 35 | justify-content: space-evenly; 36 | background: transparent; 37 | border: none; 38 | } 39 | .qubely-button.active { 40 | background: #007eb1; 41 | border-color: #00435d; 42 | border-radius: 3px; 43 | color: #fff; 44 | box-shadow: inset 0 -1px 0 #00435d; 45 | border: none; 46 | } 47 | .qubely-button:focus { 48 | outline: none; 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/separator.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-separator { 2 | width: 100%; 3 | height: 1px; 4 | background: #e5e7ea; 5 | &:not(:first-child-child) { 6 | margin-top: 20px; 7 | } 8 | 9 | &.qubely-has-label { 10 | position: relative; 11 | label { 12 | position: absolute; 13 | top: -8px; 14 | display: inline-block; 15 | width: auto; 16 | background: #fff; 17 | padding-right: 10px; 18 | margin: 0; 19 | } 20 | } 21 | } 22 | .qubely-field-separator.qubely-separtor-extra-margin { 23 | margin: 20px 0px 30px 0px; 24 | } 25 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/template.scss: -------------------------------------------------------------------------------- 1 | .qubely-design-templates { 2 | column-count: 2; 3 | .qubely-design-template { 4 | display: inline-block; 5 | position: relative; 6 | margin-bottom: 8px; 7 | cursor: pointer; 8 | //border: 1.5px solid transparent; 9 | border-radius: 4px; 10 | box-sizing: border-box; 11 | overflow: hidden; 12 | transition: 300ms; 13 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); 14 | &.active, 15 | &:hover { 16 | box-shadow: 0 0 0 2px #2184f9; 17 | } 18 | img { 19 | display: block; 20 | width: 100%; 21 | height: auto; 22 | object-fit: contain; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/toggle.scss: -------------------------------------------------------------------------------- 1 | .qubely-field { 2 | &.qubely-field-toggle { 3 | display: flex; 4 | flex-wrap: wrap; 5 | align-items: center; 6 | justify-content: space-between; 7 | > label { 8 | width: auto; 9 | margin-bottom: 0; 10 | } 11 | .components-toggle-control, 12 | .components-toggle-control .components-base-control__field { 13 | margin-bottom: 0 !important; 14 | } 15 | .components-toggle-control .components-base-control__field .components-form-toggle { 16 | margin-right: 0; 17 | } 18 | .components-form-toggle.is-checked .components-form-toggle__track { 19 | background-color: #2184f9; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/url.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-url { 2 | .qubely-url-input-group { 3 | display: flex; 4 | input { 5 | flex-grow: 1; 6 | margin: 0 6px 0 0; 7 | } 8 | button { 9 | height: 30px; 10 | line-height: 28px; 11 | } 12 | } 13 | .qubely-url-advance-options { 14 | margin-top: 15px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/css/wrapper.scss: -------------------------------------------------------------------------------- 1 | .qubely-field-wrapper { 2 | margin: 25px -15px 15px -15px; 3 | padding: 25px 15px 15px; 4 | border-top: 1px solid #ebecee; 5 | border-bottom: 1px solid #ebecee; 6 | background: #fafafa; 7 | position: relative; 8 | z-index: 1; 9 | &.qubely-field-wrapper-inline { 10 | position: absolute; 11 | top: 100%; 12 | left: 0; 13 | width: 300px; 14 | z-index: 99; 15 | margin: 0; 16 | padding: 20px; 17 | background: #fff; 18 | border: 1px solid #e5e5e5; 19 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); 20 | .qubely-field-wrapper-content { 21 | position: relative; 22 | } 23 | &.quebly-position-bottom { 24 | } 25 | &.quebly-position-top { 26 | top: auto; 27 | bottom: 100%; 28 | } 29 | &.quebly-position-middle { 30 | left: 100%; 31 | } 32 | } 33 | &.qubely-padding-0 { 34 | padding: 0; 35 | .qubely-icon-list-wrapper { 36 | border: 0; 37 | border-radius: 0; 38 | } 39 | } 40 | .qubely-field-wrapper-label { 41 | margin: 0; 42 | position: absolute; 43 | top: 0; 44 | left: 15px; 45 | display: inline-block; 46 | width: auto; 47 | background: #fff; 48 | border: 1px solid #e2e4e7; 49 | padding: 5px 10px; 50 | line-height: 1; 51 | transform: translateY(-50%); 52 | overflow: hidden; 53 | } 54 | 55 | .qubely-field-separator { 56 | margin-bottom: 15px; 57 | label { 58 | background: #fafafa; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/Headings.js: -------------------------------------------------------------------------------- 1 | import icons from '../../helpers/icons'; 2 | 3 | function Headings(props) { 4 | const { selectedLevel, onChange, label = '' } = props; 5 | return ( 6 |
    7 | {label && } 8 |
    9 | {[1, 2, 3, 4, 5, 6].map((data, index) => { 10 | return ( 11 | 20 | ); 21 | })} 22 |
    23 |
    24 | ); 25 | } 26 | export default Headings; 27 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/InnerPanel.js: -------------------------------------------------------------------------------- 1 | import "../css/InnerPanel.scss"; 2 | const { Component } = wp.element; 3 | class InnerPanel extends Component { 4 | constructor(props) { 5 | super(props); 6 | this.state = { show: false }; 7 | } 8 | 9 | render() { 10 | const { children, onTabChange } = this.props; 11 | 12 | return ( 13 |
    14 | {this.props.title && ( 15 |
    this.setState({ show: !this.state.show })} 18 | role="button" 19 | > 20 | {this.props.title} 21 | 22 |
    23 | )} 24 | {this.state.show && ( 25 |
    26 | {Array.isArray(children) ? children.map((item) => item) : children} 27 |
    28 | )} 29 |
    30 | ); 31 | } 32 | } 33 | export default InnerPanel; 34 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/RadioAdvanced.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | const { Tooltip } = wp.components; 3 | 4 | class RadioAdvanced extends Component { 5 | setSettings(val) { 6 | this.props.onChange(val); 7 | } 8 | 9 | render() { 10 | const { value, label, options } = this.props; 11 | return ( 12 |
    13 | {label && {label}} 14 |
    15 | {options.map((data, index) => { 16 | return ( 17 | 18 | 31 | 32 | ); 33 | })} 34 |
    35 |
    36 | ); 37 | } 38 | } 39 | export default RadioAdvanced; 40 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/Separator.js: -------------------------------------------------------------------------------- 1 | import "../css/separator.scss"; 2 | const { Component } = wp.element; 3 | class Separator extends Component { 4 | render() { 5 | const { label, customClassName } = this.props; 6 | return ( 7 |
    12 | {label && } 13 |
    14 | ); 15 | } 16 | } 17 | 18 | export default Separator; 19 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/Tab.js: -------------------------------------------------------------------------------- 1 | const { Component, Fragment } = wp.element; 2 | 3 | class Tab extends Component { 4 | render() { 5 | const { children, onTabChange } = this.props; 6 | onTabChange && onTabChange(); 7 | return {Array.isArray(children) ? children.map((item) => item) : children} ; 8 | } 9 | } 10 | export default Tab; 11 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/headingToolbar/index.js: -------------------------------------------------------------------------------- 1 | const { __ } = wp.i18n; 2 | const { Component } = wp.element; 3 | const { Toolbar } = wp.components; 4 | 5 | import HeadingLevelIcon from "./headingIcon"; 6 | 7 | class HeadingToolbar extends Component { 8 | createLevelControl(targetLevel, selectedLevel, onChange) { 9 | const isActive = targetLevel === selectedLevel; 10 | return { 11 | icon: , 12 | title: __(`Heading ${targetLevel}`), 13 | isActive, 14 | onClick: () => onChange(targetLevel), 15 | }; 16 | } 17 | 18 | headingLevels(minLevel, maxLevel) { 19 | let headingLevels = []; 20 | 21 | for (let level = minLevel; level <= maxLevel; level++) { 22 | headingLevels.push(level); 23 | } 24 | return headingLevels; 25 | } 26 | 27 | render() { 28 | const { isCollapsed = true, minLevel, maxLevel, selectedLevel, onChange } = this.props; 29 | 30 | return ( 31 | } 35 | controls={this.headingLevels(minLevel, maxLevel).map((index) => 36 | this.createLevelControl(index, selectedLevel, onChange) 37 | )} 38 | /> 39 | ); 40 | } 41 | } 42 | 43 | export default HeadingToolbar; 44 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/inline/InlineToolbar.js: -------------------------------------------------------------------------------- 1 | const { Component } = wp.element; 2 | import "../../css/inline_toolbar.scss"; 3 | import InlineSpacer from "./InlineSpacer"; 4 | 5 | class InlineToolbar extends Component { 6 | render() { 7 | let html = []; 8 | this.props.data.forEach((val, i) => { 9 | if (val.name == "InlineSpacer" && this.props.prevState[val.key]) { 10 | html.push( 11 | this.props.setAttributes({ [val.key]: value })} 17 | /> 18 | ); 19 | } 20 | }); 21 | return html; 22 | } 23 | } 24 | export default InlineToolbar; 25 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/inline/Selector.js: -------------------------------------------------------------------------------- 1 | const { __ } = wp.i18n; 2 | const { Component } = wp.element; 3 | const { Toolbar } = wp.components; 4 | import icons from "../../../helpers/icons"; 5 | const defaultOptions = [ 6 | ["h1", "Heading 1"], 7 | ["h2", "Heading 2"], 8 | ["h3", "Heading 3"], 9 | ["h4", "Heading 4"], 10 | ["h5", "Heading 5"], 11 | ["h6", "Heading 6"], 12 | ["p", "Paragraph"], 13 | ["span", "span"], 14 | ["div", "div"], 15 | ]; 16 | 17 | class InlineSelector extends Component { 18 | headingController = (newSelector) => { 19 | const { selector, setAttributes } = this.props 20 | const [tag, description] = newSelector 21 | return [{ 22 | icon: icons[tag], 23 | title: sprintf(__(description)), 24 | isActive: tag === selector, 25 | onClick: () => setAttributes({ selector: tag }), 26 | subscript: String(tag), 27 | }]; 28 | }; 29 | render() { 30 | const { selector, options } = this.props 31 | return ( 32 | this.headingController(newSelector))} 37 | /> 38 | ) 39 | } 40 | } 41 | export default InlineSelector; 42 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/fields/inline/index.js: -------------------------------------------------------------------------------- 1 | import InlineToolbar from "./InlineToolbar"; 2 | import InlineSpacer from "./InlineSpacer"; 3 | import InlineSelector from "./Selector"; 4 | 5 | export { InlineToolbar, InlineSpacer, InlineSelector }; 6 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/format-library/custom-formats.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Internal dependencies 3 | */ 4 | import { color } from "./color"; 5 | import { tooltip } from "./tooltip"; 6 | import { fontsize } from "./font-size"; 7 | import { uppercase } from "./upper-case"; 8 | import { backgroundColor } from "./background-color"; 9 | 10 | export default [color, tooltip, fontsize, uppercase, backgroundColor]; 11 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/format-library/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * WordPress dependencies 3 | */ 4 | const { registerFormatType } = wp.richText; 5 | 6 | /** 7 | * Internal dependencies 8 | */ 9 | import formats from "./custom-formats"; 10 | 11 | formats.forEach(({ name, ...settings }) => registerFormatType(name, settings)); 12 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/format-library/upper-case/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * WordPress dependencies 3 | */ 4 | const { __ } = wp.i18n; 5 | const { Fragment } = wp.element; 6 | const { toggleFormat } = wp.richText; 7 | 8 | const { RichTextToolbarButton } = wp.blockEditor; 9 | 10 | /** 11 | * Internal dependencies 12 | */ 13 | import icons from "../../../helpers/icons"; 14 | import "../../css/editorinline.scss"; 15 | 16 | const name = "qubely/uppercase"; 17 | const title = __("Qubely Uppercase"); 18 | 19 | export const uppercase = { 20 | name, 21 | title, 22 | tagName: "span", 23 | className: "qubely-text-uppercase", 24 | attributes: { 25 | style: "style", 26 | }, 27 | edit(props) { 28 | const { isActive, value, onChange } = props; 29 | 30 | const onToggle = () => 31 | onChange( 32 | toggleFormat(value, { 33 | type: name, 34 | attributes: { 35 | style: "text-transform: uppercase;", 36 | }, 37 | }) 38 | ); 39 | let isSelected = value.end - value.start > 0 ? true : false; 40 | return ( 41 | 42 | {(isSelected || isActive) && ( 43 | 49 | )} 50 | 51 | ); 52 | }, 53 | }; 54 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/others/index.js: -------------------------------------------------------------------------------- 1 | export { default as Pagination } from "./pagination"; 2 | 3 | -------------------------------------------------------------------------------- /assets/reactjs/src/components/others/pagination/page.js: -------------------------------------------------------------------------------- 1 | import PropTypes from "prop-types"; 2 | import classnames from "classnames"; 3 | const { Component } = wp.element; 4 | const { __ } = wp.i18n; 5 | class Page extends Component { 6 | render() { 7 | const { className, isCurrent, isDots, children, pageKey, onClick } = this.props; 8 | 9 | const classes = classnames(className, { current: isCurrent }, { dots: isDots }); 10 | return ( 11 | 16 | ); 17 | } 18 | } 19 | 20 | Page.defaultProps = { 21 | isCurrent: false, 22 | isDots: false, 23 | className: "", 24 | }; 25 | Page.propTypes = { 26 | isCurrent: PropTypes.bool, 27 | className: PropTypes.string, 28 | key: PropTypes.string, 29 | isDots: PropTypes.bool, 30 | onClick: PropTypes.func, 31 | }; 32 | export default Page; 33 | -------------------------------------------------------------------------------- /assets/reactjs/src/helpers/utils.js: -------------------------------------------------------------------------------- 1 | export const placeCaretAtEnd = (el) => { 2 | el.focus(); 3 | if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { 4 | var range = document.createRange(); 5 | range.selectNodeContents(el); 6 | range.collapse(false); 7 | var sel = window.getSelection(); 8 | sel.removeAllRanges(); 9 | sel.addRange(range); 10 | } else if (typeof document.body.createTextRange != "undefined") { 11 | var textRange = document.body.createTextRange(); 12 | textRange.moveToElementText(el); 13 | textRange.collapse(false); 14 | textRange.select(); 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /assets/reactjs/src/hooks/index.js: -------------------------------------------------------------------------------- 1 | export { default as withCSSGenerator } from "./with-css-generator"; 2 | -------------------------------------------------------------------------------- /assets/reactjs/src/plugins/global-settings/components/index.js: -------------------------------------------------------------------------------- 1 | export { default } from "./color"; 2 | -------------------------------------------------------------------------------- /assets/reactjs/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | import GlobalSettings from "./global-settings"; 2 | 3 | const { registerPlugin } = wp.plugins; 4 | 5 | registerPlugin("qubely-global-settings", { 6 | render() { 7 | return ; 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /assets/reactjs/webpack.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var path = require('path'); 3 | 4 | module.exports = { 5 | mode: 'development', 6 | entry: [ 7 | path.join(__dirname, 'src/index.js') 8 | ], 9 | output: { 10 | path: path.join(__dirname, '../js/'), 11 | filename: 'qubely.dev.js' 12 | }, 13 | module: { 14 | rules: [ 15 | { 16 | test: /\.js$/, 17 | exclude: /(node_modules|bower_components)/, 18 | use: { loader: 'babel-loader' } 19 | }, 20 | { 21 | test: /\.scss$/, 22 | use: [ 'style-loader', 'css-loader', 'sass-loader' ], 23 | } 24 | ] 25 | }, 26 | devtool: "source-map" 27 | }; -------------------------------------------------------------------------------- /assets/reactjs/webpack.production.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var path = require('path'); 4 | var webpack = require('webpack'); 5 | 6 | module.exports = { 7 | mode: 'production', 8 | entry: { 9 | 'qubely': path.join( __dirname, 'src/index.js') 10 | }, 11 | output: { 12 | path: path.join( __dirname, '../js'), 13 | filename: '[name].min.js' 14 | }, 15 | module: { 16 | rules: [ 17 | { 18 | test: /\.js$/, 19 | exclude: /(node_modules|bower_components)/, 20 | use: { loader: 'babel-loader' } 21 | }, 22 | { 23 | test: /\.scss$/, 24 | use: [ 'style-loader', 'css-loader', 'sass-loader' ], 25 | } 26 | ] 27 | } 28 | }; -------------------------------------------------------------------------------- /assets/shape/drip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/shape/hill-invert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/shape/hill-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /assets/shape/hill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/shape/pointy-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/shape/single-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/shape/slope-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/shape/slope.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/shape/turning-slope.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/shape/waves3-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/shape/wavy-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/shape/zigzag-shark.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-brands-400.eot -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-brands-400.woff -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-regular-400.eot -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-regular-400.woff -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-solid-900.eot -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-solid-900.woff -------------------------------------------------------------------------------- /build/qubely/assets/fonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/fonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/cta-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/cta-1.png -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/cta-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/cta-2.png -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/pointer@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/pointer@1x.png -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/pointer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/pointer@2x.png -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/thumbs-up@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/thumbs-up@1x.png -------------------------------------------------------------------------------- /build/qubely/assets/img/admin/thumbs-up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/admin/thumbs-up@2x.png -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/accordion/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/accordion/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-counter.svg: -------------------------------------------------------------------------------- 1 | counter -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-divider.svg: -------------------------------------------------------------------------------- 1 | divider -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-heading.svg: -------------------------------------------------------------------------------- 1 | heading -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-info-box.svg: -------------------------------------------------------------------------------- 1 | team -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-row.svg: -------------------------------------------------------------------------------- 1 | row -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-team.svg: -------------------------------------------------------------------------------- 1 | Team -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/block-wrapper.svg: -------------------------------------------------------------------------------- 1 | wrapper -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/button/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/button/fill_xs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/button/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/button/outline_xs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/form/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/form/material.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/icon/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/icon/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/icon/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/image/blurb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/image/simple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/infobox/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/infobox/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/infobox/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/infobox/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/list/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/list/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/aqua-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/aqua-light.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/greyscale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/greyscale.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/inturlam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/inturlam.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/lunar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/lunar.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/midnight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/midnight.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/multi-brand.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/multi-brand.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/purple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/purple.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/purple.png -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/shadow-grey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/shadow-grey.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/style-default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/style-default.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/map/ultra-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/blocks/map/ultra-light.jpg -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pieprogress/fill.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pieprogress/outline-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pieprogress/outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/14.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/15.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/pro1.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/postgrid/pro2.svg: -------------------------------------------------------------------------------- 1 | 2 | PRO 3 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/1.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/2.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/3.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/4.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/5.svg: -------------------------------------------------------------------------------- 1 | 00$ -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/pricing/badges/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/tab/pills.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/tab/tabs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/tab/underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/team/1.svg: -------------------------------------------------------------------------------- 1 | Group 9Created with Sketch. -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/team/2.svg: -------------------------------------------------------------------------------- 1 | Group 11Created with Sketch. -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/team/3.svg: -------------------------------------------------------------------------------- 1 | Group 3Created with Sketch. -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/testimonial/avatars/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/testimonial/avatars/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/testimonial/avatars/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/testimonial/avatars/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/videopopup/classic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/blocks/videopopup/fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/disable-pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/disable-pattern.png -------------------------------------------------------------------------------- /build/qubely/assets/img/image-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/image-loader.gif -------------------------------------------------------------------------------- /build/qubely/assets/img/options-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/options-logo.png -------------------------------------------------------------------------------- /build/qubely/assets/img/qubely-logo-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /build/qubely/assets/img/qubely-medium.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themeum/qubely/ea7fa36554e568de09246c0eada381f63acf8d56/build/qubely/assets/img/qubely-medium.jpg -------------------------------------------------------------------------------- /build/qubely/assets/js/blocks/image-comparison.min.js: -------------------------------------------------------------------------------- 1 | const imageComparison=function(){const e=document.querySelectorAll(".comparison-scrollCircle"),t=document.querySelector(".qubely-block-image-comparison");document.querySelectorAll(".qubely-block-image-comparison img").forEach(e=>{e.style.width=t.offsetWidth+"px"}),e.forEach(e=>{const t=e.parentNode,o=t.querySelector(".resizable-img");function n(){let n=((event.pageX?event.pageX:event.touches[0].clientX)-t.getBoundingClientRect().left)/(t.offsetWidth/100);n<5?n=5:n>95&&(n=95),e.style.left=n+"%",o.style.width=n+"%"}function i(){t.removeEventListener("mousemove",n)}e.addEventListener("mousedown",function o(c){3!=c.which&&2!=c.which?(t.addEventListener("mousemove",n),t.addEventListener("mouseup",i),window.addEventListener("mouseup",i)):e.removeEventListener("mousedown",o)}),e.addEventListener("touchmove",n)})};"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?imageComparison():document.addEventListener("DOMContentLoaded",imageComparison); -------------------------------------------------------------------------------- /build/qubely/assets/shape/drip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/hill-invert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/hill-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/hill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/pointy-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/single-wave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/slope-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/slope.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/turning-slope.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/waves3-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/wavy-opacity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/qubely/assets/shape/zigzag-shark.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/qubely/core/template-canvas.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | > 15 | 16 | 17 | 18 | 19 | 20 | <?php echo wp_get_document_title(); ?> 21 | 22 | 23 | 24 | > 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /build/qubely/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | //span[@class="qubely-accordion-panel-handler-label"] 5 | 6 | 7 | //span[@class="qubely-tab-title-text"] 8 | //div[@class="image-type-nav-title"] 9 | 10 | 11 | 12 | _qubely_css 13 | _qubely_interaction_json 14 | __qubely_available_blocks 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /core/template-canvas.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | > 15 | 16 | 17 | 18 | 19 | 20 | <?php echo wp_get_document_title(); ?> 21 | 22 | 23 | 24 | > 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/hooks/active-theme-preset.md: -------------------------------------------------------------------------------- 1 | # Active Theme Preset 2 | 3 | Use following hook to active `Theme preset` of Qubely Global Settings from themes. 4 | 5 | 6 | ## Code 7 | 8 | ```php 9 | 10 | add_action('after_switch_theme', 'active_theme_preset'); 11 | 12 | function active_theme_preset () { 13 | do_action('qubely_active_theme_preset'); 14 | } 15 | 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/hooks/row-container-width.md: -------------------------------------------------------------------------------- 1 | # Row Container width 2 | 3 | Row Container width specifies the max-width of `qubely-container` class. 4 | 5 | ### default values 6 | |Device |Width (px)| 7 | |:---|:---| 8 | |`Landscape Mobile`|540| 9 | |`Tablet`|720| 10 | |`Desktop`|960| 11 | |`Large Desktop`|1140| 12 | 13 | 14 | ## Update 15 | Using following filter hooks default values of `qubely-container` can be updated. 16 | 17 | ## Update container widths for all devices 18 | 19 | ```php 20 | 21 | add_filter('qubely_container_width', 'update_qubely_container_width'); 22 | 23 | function update_qubely_container_width() { 24 | return array( 25 | 'sm' => 300, 26 | 'md' => 700, 27 | 'lg' => 900, 28 | 'xl' => 1100 29 | ); 30 | } 31 | ``` 32 | ### Use following filter hooks to update width for specific device 33 | * Mobile - `qubely_container_sm` 34 | * Tablet - `qubely_container_md` 35 | * Desktop - `qubely_container_lg` 36 | * Large Desktop - `qubely_container_xl` 37 | 38 | #### example 39 | ```php 40 | 41 | add_filter('qubely_container_xs', 'update_qubely_container_xs'); 42 | 43 | function update_qubely_container_xs() { 44 | return 320; 45 | } 46 | 47 | ``` 48 | -------------------------------------------------------------------------------- /docs/readme.md: -------------------------------------------------------------------------------- 1 | ## Qubely Developer Docs 2 | Developer Documentation of Qubely 3 | 4 | 5 | ## Hooks: 6 | 1. [Row-container width](./hooks/row-container-width.md) 7 | 2. [Active Theme preset](./hooks/active-theme-preset.md) 8 | 9 | ## Field Types: 10 | 11 | 1. [Alignment](./fields/alignment.md) 12 | 2. [Background](./fields/background.md) 13 | 3. Border 14 | 4. Border Radius 15 | 5. Box Shadow 16 | 6. Button Group 17 | 7. Color 18 | 8. Color Advanced 19 | 9. Dimension 20 | 10. Drag Dimension 21 | 11. Dropdown 22 | 12. Gradient 23 | 13. Headings 24 | 14. Icon List 25 | 15. Icon Selector 26 | 16. Margin 27 | 17. Media 28 | 18. Padding 29 | 19. Radio Advanced 30 | 20. Range 31 | 21. Select 32 | 22. Separator 33 | 23. Tabs 34 | 24. Tab 35 | 25. Toggle 36 | 26. Typography 37 | 27. URL -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | //span[@class="qubely-accordion-panel-handler-label"] 5 | 6 | 7 | //span[@class="qubely-tab-title-text"] 8 | //div[@class="image-type-nav-title"] 9 | 10 | 11 | 12 | _qubely_css 13 | _qubely_interaction_json 14 | __qubely_available_blocks 15 | 16 | 17 | 18 | 19 | --------------------------------------------------------------------------------