
Oxygen 6 – Changes Everything
Oxygen 6 – Changes Everything
Oxygen 6 – Changes Everything
Undoubtedly, Oxygen Builder is one of the most influential WordPress page builders. It was the first builder to introduce the Webflow vibe to the WordPress ecosystem, making page building an enjoyable experience. Everyone on the Headspin UI team uses Oxygen Builder, and it subsequently inspired other great tools like Bricks to follow its lead.
Oxygen vs Breakdance
Oxygen is like fine canvas to draw. It is slower to make sites, but for developer oriented person it makes and does not put any limit on you. Tradeoff of this approach is that if we are not that tech savvy we could make some small mistakes which causes layout problems, overflow and things like that.
On another hand Breakdance take much more guided approach and does not let you make some silly mistakes, which is nice to have for 90% of designs, but can be a little bit limited for really custom stuff.
Both Oxygen and Breakdance are powerful, high-performance builders that outshine traditional WordPress page builders by focusing on clean code, efficiency, and flexibility. However, the way you build a site in each tool is completely different.
Source: Oxygen Builder site
- Oxygen is for developers who want complete creative freedom, a stripped-down environment, and full control over every aspect of their site’s structure and styling. It is a class-based, fundamentals-first builder that assumes the user has technical knowledge.
- Breakdance is for users who want speed, efficiency, and ease of use. It includes everything needed to build a professional site right out of the box, with built-in forms, popups, WooCommerce styling, and 140+ elements—all without requiring any code.
New UI
From previews, we could see completely revamped UI which looks awesome at first. Oxygen went route of Webflow, they are using gray clean flat interface which really looks close to Webflow at first.
On another look, we could notice that this tool shares engine with Breakdance so some UI components looks exactly the same as in Breakdance which you could notice in Interactions
Components
Right away Oxygen 6 embraces Component workflow. In prior versions it had global blocks where you could design blocks and change content of multiple instances in many places.
That was awesome things, but limited because sometimes we want to repeat exact same design, while having different content inside design.
Oxygen Components let you define which properties can be edited while ensuring the core design stays consistent. Make global updates that apply everywhere, while still allowing overrides for individual instances when needed—so you get both efficiency and flexibility in one system.
Interactions

Another great feature included in the new Oxygen 6 is interactions. From the initial previews on the Oxygen website, we noticed a visual panel for creating interactions by simply clicking instead of having to write JavaScript code.
In the past there were some 3rd party plugins for that, but with new version they won’t be needed anymore and Oxygen Builder supports creating interaction in core.
This is also great opportunity for community creators to create cool things which could be shared with other users.
Variables

Another big update in version 6 is related to how could you manage your styles. In new version I would say this seems like on of the best CSS variable manager implementations on the market and punches even above implementation in Webflow.
From previews we could see that we have collections for variables, and we there are around 6 supported types. And when you hover over input you will have nice variable picker to pick one appropriate for that field.
In this are, once again Oxygen team really nailed it again.
Insanely Powerful Engine
Oxygen Builder is built on top of engine that also powers Breakdance Builder. If you ever inspected Breakdance architecture, it is one of the most beautiful code architecture that you could find in any plugin.
UI Engine in builder is clicky, there aren’t any lags, dragging around in Breakdance is one of the most satisfying experiences that could be found in any builder. This was long time weakness of Oxygen, but based on announcement details that it shares same engine as Breakdance this area we could assume will match experience from Breakdance.
Dynamic Data
Anyone used Oxygen or Breakdance know that they are dynamic data powerhouses. This was always strong point of the Oxygen Builder and kinda trademark.
With that in mind, and as user of both old Oxygen and Breakdance, this will be still Dynamic Data Powerhouse for WordPress. Oxygen was always strong, and with new UI engine it will be just more joy-able overall UX for connecting dynamic data.
Elements Studio
Another mentioned detail was related to Elements Studio. Anyone used Breakdance is probably aware of the easiest way to build own custom elements almost without any code (low-code tool). As they share code this will probably supported in Oxygen too.
Elements studio enables developers to use any existing element as boilerplate and make own from it. You have access to repeaters, conditional logic which comes from API. Under the hood it uses TWIG which you will need connect to HTML and CSS, but for every created UI option, Elements Studio brings TWIG code sample which acts as boilerplate and in the most of the cases you place that in proper tab.
Awesome thing about this is that you do all of this in-builder so you have live preview of both element and GUI which you are creating.
Match Made in Heaven
Oxygen was one of the life changing tools for me. I’ve learned web development in Oxygen, learned crazy things by reading legacy Oxygen code and reverse engineering while creating Recoda. Oxygen was always powerhouse to create and draw on the canvas for advanced users, but Oxygen lacking part was that it was painful for simple tasks like tabs, mega menu, and that some of these things are not great user experience to create when you have 100 nested elements in panel. On another hand Breakdance Builder is probably the best tool in these areas and have tons of high-quality elements which make these basic stuff just few clicks to configure and customize.
As these tools share engine, it seems that there will be Breakdance addons for Oxygen. By having Breakdance elements, menu builder, comprehensive WooCommerce integration., and the most powerful form builder seen in page builder is perfectly complementary addon pack for Oxygen users that they could move quickly building while having full flexibility of Oxygen.
I have wished like 100 times, how awesome would be fully unleashed with tool like Oxygen while having 120+ well coded elements for repetitive tasks like tabs, forms, menus.
And here we are, and by looking in my calendar it is not 1st April, we’re witnessing breakthrough in WordPress page building.

Headspin Copilot v1.4.0
Headspin Copilot v1.4.0
Headspin Copilot v1.4.0
We’re excited to introduce completely re-invented concept of the Context Menu or better to say Context Menu v2. Initial version served us and our users really well, but with recent new features in the Copilot, initial version was limited and could not support all things were present in Copilot like custom tokens.
Features overview
- Organize in Collections, Groups and Tokens
- Support for colors (solid and transparent)
- Light/dark mode switcher
- Support for Custom CSS
- Context aware color representation
- Real-time updates
- Smart suggestions
Following Collection, Group, Token standard as organizational units.

Just like in the main application, we have incorporated the same organizational units here, called Collections (icons on the left). Groups are represented in an accordion fashion, and tokens are presented in button form.
Smart suggestions

In order to provide the best experience, we have implemented suggestion filtering. So instead showing everything we’ll try to find exactly values which you may want to use for example if you do right click on color input, we’re going to suggest colors, if you want to edit gap, margin, padding we’ll suggest spacing variables. So while we have added bunch more data in one-click fashion via context menu, it will be even more intuitive to use than previous v1 because it won’t just show everything.
Full support for colors
Every color that is handled via Headspin will be available via context menu. This includes color palettes, but also color tokens.
Supporting custom CSS

Many users, including ourselves, like to use custom CSS from time to time. Writing out all of our variables can sometimes be frustrating, as you also need to remember naming conventions and other details like that. With the new version of the context menu, you will have the option to simply right-click and change any text there as well.
Support for transparent variants

Color palettes that support transparent variants will have shift key symbol indicating that by pressing shift it will show transparent shades.
Furthermore, we have taken an additional step by incorporating a context-aware transparent shading technique. The challenge with transparent colors is that they rely on the background and how they blend with it. To address this issue, we have integrated a dynamic site background calculation technique to blend them accurately, providing you with the best possible preview when selecting your shades.
Real-time updates

As you work in the Copilot app all changes will be reflected to every opened fronted tab and editor tab. So any changes done in main application will be instantly reflected:
- Frontend
- Page Builder
- Context Menu data
The devil is in the detail
While all of these alone take effort to make, we strongly believe in pushing boundaries how tools could be made. For example CSS variables are dynamic by nature and their value could be redefined (examples of this are dark/light mode, theming, local scoping). We’ve implemented mechanism to find their value at the moment when you apply them so they are fully context aware and will give 100% accurate preview of the values.
We took it a step further by incorporating a context-aware transparent shading technique. The issue with transparent colors is that they depend on the background and how they blend with it. We have implemented a dynamic site background calculation technique to blend them accurately, ensuring you have the best possible preview when choosing your shades.

Component Madness 2024
Component Madness 2024
Component Madness 2024
What is Component Madness? Component Madness is once in a year event from HeadspinUI team. It features 7-day in row releasing various solutions in form of the Components.
2024 Lineup
Day 1 | Age Verification | Variant 1 Variant 2 Variant 3 |
Day 2 | Skip Link | Variant 1 |
Day 3 | Hotspot | Variant 1 |
Day 4 | Grid Switcher | Variant 1 |
Day 5 | Morphing Tabs | Variant 1 |
Day 6 | Animated Stacking Cards | Variant 1 |
Day 7 | Sub-navigation | Variant 1 Variant 2 |
Day #7: Sub-navigation
Take your navigation game to the next level with the Sub-navigation Component! This powerful tool brings animated secondary navigation to your Breakdance Builder projects, highlighting the active section in view for a smooth and engaging user experience.
Variant 1: Magnetic Sub-navigation
Variant 2: Island Sub-navigation
Day #6: Animated Stacking Cards
Discover the power of the Animated Stacking Cards component in Breakdance Builder! Create visually stunning card layouts with smooth stacking and scaling animations that bring your designs to life. Perfect for showcasing portfolios, testimonials, and feature proposition.
Day #5: Morphing Tabs
Explore the innovative Morphing Tabs component in Breakdance Builder! This feature-rich component transforms traditional tabs into dynamic, interactive elements with smooth morphing animations. Perfect for showcasing content in a sleek and organized manner, Morphing Tabs enhance user experience and visual appeal.
Day #4: Grid Switcher
Discover the powerful Grid Switcher component in Breakdance Builder! This dynamic button group allows users to effortlessly toggle between grid view and list view, making it perfect for showcasing products, portfolios, blog posts, or any content that benefits from multiple layout options.
In this video, we’ll guide you through setting up and customizing the Grid Switcher component to fit your design needs, ensuring seamless functionality and a polished user experience.
Day #3: Hotspot
Add interactive, customizable hotspots to your web designs with the Hotspot component in Breakdance Builder! Perfect for creating engaging product showcases.
Whether you’re highlighting product features, guiding users through a visual journey, or adding a creative touch to your designs, the Hotspot component gives you endless possibilities!
Day #2: Skip Link
Skip links are hidden navigation links that allow users, especially those using keyboards or assistive technologies, to bypass repetitive content (like headers or menus) and jump directly to the main content of a webpage. They improve accessibility and streamline navigation for better user experiences. You could use this component to implement skip to main content, and skip to footer links.
Day #1: Age Verification
Opening Component for this year is Age Verification. Solution seen on many adult, alcohol and tobacco sites which requires user to verify their age before seeing site content. It comes in three variants which are common to see, it uses native Breakdance elements, and Popup template to achieve goals.
Before release we had beta testing with some members, and we have found that cache could make problems with popups and server side cookie check. Because of that we’ve iterated to perform checking logic client side so it could be fully cached.
Variant 1: Year input
Component you could find here, and video below explains setup in Breakdance Builder.
Variant 2: Date inputs
Component you could find here, and video below explains setup in Breakdance Builder.
Variant 3: Yes/No buttons
Component you could find here, and video below explains setup in Breakdance Builder.

Age Verification in Breakdance
Age Verification in Breakdance
Age Verification in Breakdance
We’ve release 3 components which you could user to verify users before showing sensitive content. While it is pretty easy to this in Breakdance and could be done in 20mins, some users may struggle with logic and making small code to check and set cookie.
Variation | Verfication type | Video | Link to solution |
---|---|---|---|
1 | Year input | Link | LINK TO COMPONENT |
2 | Date input (day, month and year inputs) | Link | LINK TO COMPONENT |
3 | Button (Yes/No) | Link | LINK TO COMPONENT |
Setup instructions
Breakdance popup template setup
Please navigate: WP Admin > Breakdance > Popups
In top left corner click add new popup.
Click on newly created popup settings. Now we need to set where it applies. In this demo we’ll apply it Everywhere to lock whole site access before visitor verifies age. Mostly this is what you want, but you may want exclude login pages, or apply to certain page. So this may depend on yours particular case.
After doing this, we need to make our popup design.
Breakdance age verification configuration
To recap, we’ve created popup, added Location rule. Now we need to open created popup, and style it. We need to style it to cover whole screen, and disable closing options because only if user verified age popup should close.
Age Verification – Year setup (VIDEO)
Open code block and you will code at the top like this. You only need to edit these values to own needs. Code below these lines is functionality code which you should leave as it is.
// Configuration
const COOKIE_DURATION_IN_DAYS = 30;
const REQUIRED_AGE = 18;
const INVALID_AGE_MESSAGE = "Please enter a valid age.";
const INSUFFICENT_AGE_MESSAGE = `You must be over ${REQUIRED_AGE}`;
Variable | Desc |
---|---|
COOKIE_DURATION_IN_DAYS | Sets how long should cookie last in days. |
REQUIRED_AGE | Sets how old user should be to pass verification in years. |
INVALID_AGE_MESSAGE | Message which appears when user tries invalid value inside input field which could not be translated to age. |
INSUFFICENT_AGE_MESSAGE | Message which appears when user is younger than required age settings |
Age Verification – Date setup (VIDEO)
Open code block and you will code at the top like this. You only need to edit these values to own needs. Code below these lines is functionality code which you should leave as it is.
// Configuration
const COOKIE_DURATION_IN_DAYS = 30;
const REQUIRED_AGE = 18;
const INVALID_AGE_MESSAGE = "Please enter a valid age.";
const INSUFFICENT_AGE_MESSAGE = `You must be over ${REQUIRED_AGE}`;
Variable | Desc |
---|---|
COOKIE_DURATION_IN_DAYS | Sets how long should cookie last in days. |
REQUIRED_AGE | Sets how old user should be to pass verification in years. |
INVALID_AGE_MESSAGE | Message which appears when user tries invalid value inside input field which could not be translated to age. |
INSUFFICENT_AGE_MESSAGE | Message which appears when user is younger than required age settings |
Age Verification – Yes/No setup (VIDEO)
Open code block and you will code at the top like this. You only need to edit these values to own needs. Code below these lines is functionality code which you should leave as it is.
// Configuration
const COOKIE_DURATION_IN_DAYS = 30;
const REQUIRED_AGE = 18;
const INSUFFICENT_AGE_MESSAGE = `You must be over ${REQUIRED_AGE}`;
Variable | Desc |
---|---|
COOKIE_DURATION_IN_DAYS | Sets how long should cookie last in days. |
REQUIRED_AGE | Sets how old user should be to pass verification in years. |
INSUFFICENT_AGE_MESSAGE | Message which appears when user is younger than required age settings |
Testing tips
While you are playing with this you should know how to remove cookie. Because you may want multiple times to test, and because your login also relies on cookie so if you remove all of them you will be logged out each time.
Method 1: Please just use browser dev tools it is easy. You could open them with right click + inspect. When they open find Storage tab and click on it. There you will see Cookie section, click on it and find “age_verification_passed_hsx” cookie. Right click on that cookie and it will delete just that cookie.
After doing this reload browser tab to see changes.
Method 2: Another way is to open browser console and drop this small code:
document.cookie = "age_verification_passed_hsx=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
window.location.reload();
Client vs Server side protection
These examples demonstrates client side popup implementation. As these are not the some big security measures and easiest way to cheat this is entering just wrong age. Because this alone is not some rocket science protection so keep in mind that technical user could just go to inspector tools and remove this lock. But we think it is easier for 99% visitor to enter wrong age and bypass this than going to developer tools.
Slightly stronger protection would be setting up this as templates, but you may need also hide header and footer templates. Also we advise you to turn off caching fully if you are using server side approach as caching will break template logic because verified user could cache page which will bypass PHP conditions completely.
Do it on your own (server side setup)
If you opt for this below we are giving below setup instructions how you could do it like described below (NOTE: we don’t provide support for this as it will be tons of tickets related to cache problems as user would still want to cache, and page caching should be fully off)
Template type | Content | Priority | Location | Condition |
---|---|---|---|---|
Header | Blank | 2000 | Everywhere | Custom PHP – (1) |
Template | Component code | 2000 | Everywhere | Custom PHP – (1) |
Footer | Blank | 2000 | Everywhere | Custom PHP – (1) |
Custom PHP condition code (1)
return !isset($_COOKIE['age_verification_passed_hsx']);
Make new custom template, set location to Everywhere. For condition we’re going to check cookie by custom PHP so add that condition and click Open PHP Editor.
In PHP Editor paste code that we’ve provided.
For priority there isn’t some magical number, it should be greater than any other templates so we’ve used 2000. Only important note here it should be higher than any other template. In Template paste just component code which will set cookie.

For Header/Footer we may also want to hide them as they could have some data which should not be shown to user so create just Header, Footer with no content and do the same settings for them. This will just load empty Header/Footer for non-verified users.
Legal disclaimer
This solution let’s you set age and cookie duration. It is pretty simple solution which is seen on many sites. But before implementing keep in mind to obey laws and rules of the countries where sites needs to operate. We provide this solution as it is. If you are not sure is this verification enough, we kindly advise you to check and consult around these compliance things with legal experts.

Lean. Clean. Machine.
Lean. Clean. Machine.
Lean. Clean. Machine.
This dropped on my mind when it comes to Copilot plugin. We could use it as slogan. Keep reading to find why.
Lean
Plugin produces lean code. We’ve strategic parts that we don’t give options to disable because some things need to work, if you ever drop some our design, you should not have ability to broke configuration. We’ve spent hours to make this bundle minimal, and if you are not happy we give dedicated panel to extend them, place custom values.
That strategic part is lean investment for the future, because any designer could make some designs based on this configuration and with over 600 our designs and every other made on using this default configuration could use them, everything could be globally controlled and only small strategic fraction of styles ensure this. That is why we call it Lean.
Clean
Code produced by our plugin is equal or better 99% of developers would write on their own. I’m doing personally silly things with CSS variables for years, and trust me it writes better code than I would. Sometimes I wish to spend some time and make plugin architecture that it could write own code.
Machine
We keep your back. As we have all data in the system we are try to find mistakes that you could make. We validate tons of data and give you feedback if we are pretty sure that you have made some mistake. When you are doing some misconfiguration we try to auto-heal and predict all mistakes that could be make. For example you want to override palette which has transparent shades with palette which does not have, this may result in broken interface, we do background check and heal configuration. We couldn’t catch all mistakes, but we’ve tried to predict every user mistake and place some sort of the strategy to help fix mistakes.
We care about doing fallback to improve browser compatibility.
We care that fonts should be defined in REM and respect user zoom settings. While pixel values kill that that we provide interface that let users to work in pixel as we know it is much more intuitive to many, and we do all the boring math behind so you don’t need to do that.
Making complex themes without checking contrast every time? Covered.
We try to care about boring stuff and put that on autopilot (better to say on Copilot) so you could do fun stuff. We’re lazy and we automate boring things.
We theme, like no other
Instead of explaining technical details. We’ll look real world scenario. We are building modern news site, and we want to theme it based categories. Let’s say we have news, sports, magazine, tech, and misc. Also we want to provide users dark and light mode so they could pick depending on the mood or their browser preference.
In order to do we could approach from two sides:
- Creating complex CSS rules
- Creating template for each
If we go with the first route, we’ll spend tons of resources to tweak all of that and keep up with accessibility as we have 10 color combinations to keep track.
Another approach would be to break that to 5 templates and each would support dark and light mode. By breaking this it will be initially easier to do, as it is much easier to think about styling in 2 dimensions than cover all 10 in one go. But this approach is mess in long run as we need to change 5 templates each time, and it works until it falls apart. If someone thinks that this second approach is stupid, we agree, but you would be astonished how many project are made on solutions like this and keep just making it as initially it was easier to develop and logic behind is crap. We all do that, probably this site that you are reading this article has some solutions like that also.
Or, or child could do it?
And final piece of the one more article that is up-selling you miracle. Of course we have made solution that could do it easily that is point. But see we have solution that we could explain this to child and let him create in 10 minutes.
Bonus
Imagine you want to give your client the option to add a page or pages to their site for a special occasion, such as a promotion, to enhance their site. Before taking any action, consider how you would approach this task and estimate how long it would take to complete.
Please watch this video and compare results. Lean. Clean. Machine

Headspin UI Copilot v1.3
Headspin UI Copilot v1.3
Headspin UI Copilot v1.3
We’re proud to announce new version of our Headspin UI Copilot plugin. Release video covers new Dynamic Theming feature with real world use-case demo.
Improved Fluid Workflow

We are stepping up the CSS fluid variables game by introducing Fluid Charts. With our initial version, we are exploring ways to illustrate fluid values so that users have a better understanding when tuning fluid settings. Our latest solution introduces Charts for data visualization. With this latest addition, you will see exactly how fluid values scale across various screen sizes.
And the best part is that Charts are integrated in every single fluid workflow inside plugin like:
- View-port settings
- Fluid Typography
- Fluid Spacing
- Fluid tokens
Improved Custom Palette Creation

We’ve done tons of tweaking to our custom color algorithm. Because of the our unique approach to colors we are unable to use equidistant color making as this would break our core color principles of the semantic color usage. In this round of polishing because of that we have created boundaries which will suggest you which starting colors are optimal for usage with our algorithm and will produce good results.
On other side we our algorithm logic is remade from ground up, we are doing three channel analysis in HSB color space and comparing that with all the colors inside Radix color system. After that we are generating color profile and blending custom palette based on profile and desired main color.
Inner working of algorithm is finding the closest color to Hue, the closest color based on Saturation and the closest Brightness. Once we have that we are calculation applying Hue rotation based rotation of the matching Hue color. And for Saturation and Brightness we use values from matching profiles.
Dynamic Theming (PRO)

We’re introducing unseen approach for site theming. Our unique approach to colors and architecture of the color system enabled us creating accessible color themes which could be swapped on the fly. This could be used to dynamic themes.
Imagine that you and your could style certain page based on custom field value, theme based on post category, tags and any CMS value. This could be used also from client side if you want provide them way to theme site, or you could define as static data attribute.
Best of all, it require zero coding. Works with dark and light mode. It takes one minute to setup.
Imagine scenario that you have five categories like news, sports, magazine, tech, misc and you want to theme posts based on dynamic category, and you want to support light and dark mode. You would need to be CSS mastermind to write that code, if you invent own system there is great chance that you would mess up contrast, and you would lose one day just to create this scenario. Compare that to 10 clicks one minute setup. This feature is aimed for advanced site theming, and it will pay for itself in one project.
Improve, Polish, Flourish
Aside from these main improvements and new features, we have been refining nearly every aspect that users have requested updates on. We fixed bugs related to copying custom color variables on double click and improved the custom typescale dropdown by transitioning it from an HTML select field to a custom dropdown component. In-app modals will now offer better focus as we have adjusted the backdrop with a subtle glass effect.
We made small organizational tweaks, placing viewport settings inside the Fluid folder under the Project panel. Additionally, we relocated the contrast algorithm settings to the Accessibility folder within the Project panel.
The appearance of the app should be more consistent now that we have unified the button group component within Advanced Typography and Advanced Spacing, replacing the older components.
We’ve noticed that often misstep when going from local to production happens resulting in leaving http as site URL and forcing https with server configuration. This results with broken looking website until this configuration is fixed. To solve this once for all, we’ve made special check which will compare URL from site configuration and URL from page that is loaded and catch this misconfiguration. If you make this mistake, you will get big error modal inside the plugin with detailed instructions where to go and fix issue.

Brandy template documentation
Brandy template documentation
Brandy template documentation
Requirements:
- Breakdance builder 2.1 and higher.
Go to Breakdance > Settings > Design library and add shareable URL that you got after downloading the file in your account

Now you have 2 options:
Import via Breakdance editor:

In Breakdance editor > Add > Library > Select Brandy template. Here you’ll find all the pages. But there aren’t templates so this method is INCOMPLETE.
Import via Full site import
Go to Breakdance > Design Library > Click on Brandy and import everything (pages, templates, posts..).

Important
Make sure to import Headspin copilot settings as well to everything is matching the demo.


How to get started real quick with Headspin
How to get started real quick with Headspin
How to get started real quick with Headspin
As Headspin offers CSS variables, you can use it in many ways. So far this is my favorite and fastest way how to get started.
- install and set colors I need in Copilot plugin
- sync colors so they will appear in Breakdance palette
- set font weights for text, headings via Global settings (BD)
- set font family via Global settings
-> start building website. In case I need some repetitive styles -> I will use presets and apply headspin css variables (e.g. –hfs-h3).
If I feel like the font sizes and spacings are too small -> I will go to Copilot plugin dashboard and change the ratio there.
Works in 95% cases, I am building mostly simple sites.