Iframe
Embeds an external web page inside your portal page using a standard HTML<iframe>.
Properties
Usage
- Drag the Iframe component onto the canvas.
- Set the Source URL to the page you want to embed.
- Set Width and Height to control the visible area.
- Add a Title for accessibility.
border: none by default. Use the className field to add Bootstrap utility classes for additional styling.
Script
Loads an external JavaScript file into the page. The script tag is appended to<head> when the component mounts and removed when it unmounts.
Properties
Usage
- Drag the Script component onto the canvas.
- Set the Script Source URL to the URL of the JavaScript file.
- Choose whether to load it asynchronously.
Behaviour details
- The component checks if a
<script>tag with the samesrcalready exists before adding a new one, preventing duplicate loads. - When the component is removed from the page (or the page navigates away), the script tag is cleaned up from
<head>. - In the editor, the script is not executed to prevent interference with the editing experience.
CustomerType
A wrapper component that conditionally shows or hides its children based on the current viewer’s customer type. Use it to create audience-targeted content — for example, showing a special offer only to members or a sign-up prompt only to anonymous visitors.Properties
Visibility options
Usage
- Drag the CustomerType component onto the canvas.
- Set the desired visibility option.
- Drag one or more child components into the
itemsslot. - At runtime, the content only renders if the current viewer matches the selected audience.
Editor behaviour
In the editor, the CustomerType component always renders its children so you can edit them regardless of the visibility setting. When the content would be hidden for the current user type, the editor shows a semi-transparent dashed border with the text “Hidden for current user type” to indicate the content is conditionally hidden.Examples
Show a welcome banner only to members:- Add a CustomerType component.
- Set visibility to Only for members.
- Drop an Alert component inside with a welcome message.
- Add a CustomerType component with visibility Everyone.
- Inside it, add a Container, Heading and Button linking to sign-up.
- Add a second CustomerType component with visibility Logged in users.
- Leave it empty or add different content.
Resources Provider
A wrapper component that provides resources context (bookable resources and floor plans) to its child components. Certain booking-related components require this context to function — if they are placed on a page that does not already include it, they will fail to render.When do you need it?
The following pages already include resources context automatically:- Booking pages (resource list, resource calendar, checkout)
- Admin / editor pages
- Home page
- Dashboard and personal pages
- Events, courses and articles pages
- Settings and team pages
- Directory and community pages
Which components require it?
If you want to place any of these components on a page that does not have resources context (for example, adding a resource list to the Home page), you must wrap them inside a Resources Provider component.
Usage
- Drag the Resources Provider from the Layout category onto the canvas.
- Drop one or more booking components (ResourceList, ResourceCalendar, or BookingEdit) into its slot.
- The child components will now have access to the resources data they need.
Properties
Editor behaviour
In the editor, the Resources Provider renders as a plain container — no API calls are made. Child components display their own mock data as usual. At runtime, the provider fetches resources and floor plans so that nested components can access them.Using Bootstrap classes
All editor components support an Advanced group with aclassName (or classNames) field. You can enter any valid Bootstrap 5 utility class here to fine-tune spacing, colours, borders, visibility and more.
Common examples
Spacing scale
Bootstrap spacing utilities follow the pattern{property}{side}-{size}:
- Property:
m(margin) orp(padding) - Side:
t(top),b(bottom),s(start/left),e(end/right),x(horizontal),y(vertical), or blank (all) - Size:
0through5, orauto
px-3 py-5 gives horizontal padding of 1 rem and vertical padding of 3 rem.
Responsive prefixes
Add a breakpoint prefix to apply a class only from a certain screen width:
Example:
d-none d-lg-block hides content on small screens and shows it on large screens.