Modes
Theme Designer supports three modes, Developer Mode, Preview Mode and Presentation Mode.
Demo Mode
Overview: Demo mode is used to present theme options to clients. The demo mode is based off the "Clean" theme which reflects a Peak Resort branded site with minimal configurations preset. In this mode, the theme will implement the various style mixins dynamically by using the design control. It is important to note that when in this mode, there should be no mixins implemented in the clients theme file other than the three defalut mixins (@include theme-vouchers-css(), @include theme-rewards-css(), @include fix-header-for-td()) that are required to provide base styles for presenting various plugins.
Developer Mode
Developer mode is activated by toggling on developer mode. Doing so enables additional developer features including proving access to "Preview Mode", and revealing the mixin export options. This is the standard mode that you should be in while developing a new theme.
Presentation Mode
Presentation Mode provides a way to preview your theme with the mixins implemented on the client stylesheet. Enabling Preview Mode disables the Theme Designer styling controls as well as the styles being applied via the UI. This allows you to preview how the theme will look when running in Commerce.
IMPORTANT: It is very important to not include style mixins in the client _theme.scss file when not in preview mode as this will cause CSS conflicts in the theme. When viewing a theme in Presentation Mode, you should comment out any mixins you have added to the stylesheet. DO NOT comment out these plugin mixins until the theme is ready to deploy ((@include theme-vouchers-css(), @include theme-rewards-css(), @include fix-header-for-td())
How to Demo
Demo mode is the default state for Theme Designer. There is no configuration necessary to start using it. The controls on the left panel are used to select between the pages you want to view. The controls in the right panel provide the theme options.
Theme options
Theme options are broken into different categories. Global options are applied site wide. Page specific options are applied only to the loaded page. Developer options should not be used in Demo mode.
Caveats
There are several caveats to be aware of when using theme Designer in Presentation Mode. First is important to be aware that not all theme options that are available can be configured in theme designer. Some options are configurable only by developers and are not necessarily options available for clients to pick from. The second caveat is that not all theme options are exportable as mixins. A prime example is color options. These are configured by the developer separately, so it is important to note what colors will be applied to the primary, secondary, tertiary, page background, card container background, simple header background, and simply footer background in the JIRA card. The 3rd caveat is that you will not be able to preview the color applications on the Checkout Page at this time due to technical limitations in theme designer and loading the Checkout Page will clear any theme options you have already set. It is best to not load the Checkout Page after setting your theme options during a demo.
How To Develop Themes
Using Mixins
Theme Designer uses SASS Mixins to implement theme options. The mixins provide all the CSS necessary to implement the chosen option as well as limited arguments to extend the configuration capabilities [when doing advanced theming]. This means you no longer have to manually write or copy various CSS to apply styles. The mixins ensure consistency in how theme elements are styled for all clients.
Using Preview Mode
The Theme Designer UI works by wrapping the various mixins in implementation classes and then toggling those classes on and off in the page root element. When you app ply mixins to the client theme file, those mixins will conflict with the mixins the UI is selecting. To avoid these conflicts, it is important to enable Preview Mode while developing. If you want to return to demo mode, you most comment out the mixins in the client stylesheet and toggle Preview Mode back off.
Step-By-Step Theming Process
Create a duplicate of the Clean Theme directory and rename it to the current client.
Update the _colors.scss file in the client theme directory with all of the client color options.
Update the _variables.scss file in the client theme directory with the paths to the correct image files.
Update the _typography.scss file in the client theme directory with the clients font information.
Pull a copy of the theme designer branch with
git clone git@bitbucket.org:aspenwareunity/commerce-theme-builder.git
Run Theme Designer with the
yarn dev
command in terminalIn the Theme Designer source files, open layouts.vue and checkout.vue. Locate the scss import statement that targets the client theme. Change the path in both files to point at the client theme directory you are working on. This will make Theme Designer load that clients SCSS into the Design window.
Make sure that all but the following 3 mixins are commented out in the clients _theme.scss file : @include theme-vouchers-css(), @include theme-rewards-css(), @include fix-header-for-td(). These 3 mixins need to be available during the design process.
In Theme Designer, in Presentation Mode, set all of the theme option controls to match the client choices.
Enable Developer mode, and click the "Export All Mixins" button.
Copy the mixins from the dialog box and paste them into the clients _theme.scss file. Make sure they are uncommented and save the file.
In Theme Designer, enable Preview Mode. You should now see the mixins from the clients _theme.scss file being applied.
While still in Preview Mode, make any additional configurations necessary to the mixins in the clients _theme.scss file and ensure they appear correct in the Theme Designer preview.
IMPORTANT: Once the theme looks how you want it, remove the following 3 mixins from the clients _theme.scss file. The CSS being provided by these mixins will already be available in Commerce so if you forget to remove them from the _theme.scss file you will have two instances of this same CSS in the live site.
Copy the clients entire theme directory from Theme Designer over to the Theme directory in commerce.
Fire up a local instance of Commerce, set the environment to the client and QA the entire theme.
If it looks good, commit the theme to Commerce source.