# Option sets

## OS - App locations

A list of locations in the app where menus are shown. This is used with the OS - 🍔 All Menu Tabs to determine which tabs to show in which location throughout the app.

For example, if you want to add a new dashboard you would need to add as a location in this OS, and then in the menu repeating group you can update the filter to only show menu tabs relevant to that location in the app.&#x20;

## OS - App settings ⚙️&#x20;

This saves app-wide information to make it easier for app admin (you) to update and prevent the need for hard-coding information in the Bubble editor. It's up to you whether you keep this or prefer to hard code the information.

* **App description** (text) - this is used in page meta data for SEO.
* **App name** (text) - this is used in the logo reusable element and in emails and page meta data.
* **Default dashboard tab** (OS - Dashboard Tabs) - this is the default tab you want the dashboard to load on. Usually this is the Home tab.
* **Email platform** (OS - Email platform) - this is the email platform you have chosen to integrate. This is used in backend workflows to determine which API call to use when sending emails. If left blank, it will use the standard Bubble send email action.
* **Legal entity name** (text) - the name of your company/legal entity. This is used in your privacy policy, terms and conditions, and in the copyright notice in the footer.
* **Logo image** (image) - this is used in the logo reusable element and will replace any text/icons there.
* **Payment platform** (OS - Payment providers) - this is the payment platform you have chosen to integrate. It is used in the Pricing table reusable UI to determine which workflow to run when a user tries to subscribe.
* **Support email** (text) - this is used as the sender address for all outbound email, as well as in your  terms & conditions and privacy policy.
* **Support sender name** (text) - this is used as the sender name for any support emails. You can have it as a person's name or something generic like "Support".

## OS - Content Options

These are placeholder content options for the **create content** UI reusable element. You can rename, edit, or delete this option set.

## OS - Payment Providers

These are the payment providers integrated with BL. The choice of payment provider is set in the App Settings datatype and used in conditionals where payments are involved.

## OS - Multi Part Form

These are the names for the different stages of a multi-part form. They are used in the example onboarding page. You can rename, edit, or delete this option set.

## OS - Rainbow Colors

These are a set of HEX colour codes which are used in the **Coloured Grid** UI reusable element.&#x20;

## OS - Sort By

These are two example sorting options which are used in the **Marketplace** page to sort the repeating group.

## OS - Onboarding Steps

These are the names for the different stages of a multi-part onboarding form. They are used in the example onboarding page. You can rename, edit, or delete this option set.

## OS - Subscription Statuses

Stripe and Lemon Squeezy have some differences in the subscription statuses they send through from their APIs, including in the spelling of words (canceled vs cancelled). This OS converts the plain text status from either provider into an equivalent option, so your app can rely on the options rather than the complexities of the different plain text statuses.

* Active - subscription is paid and active.
* Active until period end - subscription has been cancelled by the user but remains active until the end of this period i.e. the date of their next payment. The user should still have access to premium features.
* Cancelled - subscription is completely cancelled. The user should no longer have access to premium features.
* Paused - the user has paused their subscription. It's up to you whether you allow them to access premium features.
* Past due - the user's subscription payment failed. Both payment providers will continue retrying for payment. It's up to you how you handle this within your app.
* Unpaid - the user's subscription payment failed repeatedly and payment providers have given up trying again. It's up to you how you handle this within your app.

## OS - Upgrade Reasons

These are call-to-action reasons to upgrade which are shown in the CTA box on the dashboard. You can rename, edit, or delete this option set.

## OS - Welcome Popup

These are the different swipeable slides a new user will see in their welcome/onboarding popup. You can rename, edit, or delete this option set.

## OS - ✨ AI Generator Types

These are the different types of AI generations built in to BL and used in the **Create Content** UI reusable. They are written in lowercase because this looks better in the URL, but they are capitalised in the UI itself. You can rename, edit, or delete this option set.

## OS - ✨ GPT Models

This is a list of different GPT models which can be selected when adding new OpenAI calls in your backend workflows. You could also make it possible for a user to choose from these if you wanted. You can rename, edit, or delete this option set.

## OS - 🍔 Menu - Admin Dash Subtabs (deprecated)

{% hint style="info" %}
In the 10th June 2024 release this option set was removed. Instead all sidebar menu tabs come from the OS - 🍔 All Menu Tabs option set and use the new option set OS - App location to determine where they are shown within the app.
{% endhint %}

These are all the subtabs for the Admin Dash page.

## OS - 🍔 Menu - Admin Dash Tabs (deprecated)

{% hint style="info" %}
In the 10th June 2024 release this option set was removed. Instead all sidebar menu tabs come from the OS - 🍔 All Menu Tabs option set and use the new option set OS - App location to determine where they are shown within the app.
{% endhint %}

These are the names of the sidebar menu options on the **Admin dashboard page**. They are written in lowercase because this looks better in the URL, but they are capitalised in the UI itself. You can rename or edit this option set. **90**

## OS - 🍔 All Menu Subtabs

These are the names of all the subtab options throughout the app. They are referenced from the **All subtabs** attribute in the OS - All Menu Tabs option set. They are written in lowercase because this looks better in the URL, but they are capitalised in the UI itself. You can rename or edit this option set.&#x20;

* Only visible to (list of OS - User Roles) - this is a list of user roles which are allowed to see this subtab. If this list is empty, the subtab will be visible to all users.
* Display - this is the text displayed in the menu.

## OS - 🍔 All Menu Tabs

These are the names of the sidebar menu options throughout the app. They are written in lowercase because this looks better in the URL, but they are capitalised in the UI itself. You can rename or edit this option set.&#x20;

* **All subtabs**: A list of all the subtabs associated with a particular menu tab, derived from "OS - 🍔 All Menu Subtabs".
* **App location**: Specifies the location within the app where the menu tab is displayed, based on the "OS - App Locations" option set.
* **Bottom menu? (deprecated)**: A yes/no attribute indicating whether the menu tab should appear in the bottom menu of the app. Since 10th of June 2024 this is now determined using the **App location** attribute.
* **Default subtab**: The default subtab that is selected when the menu tab is accessed, linked to "OS - 🍔 All Menu Subtabs".
* **Default tab?**: A yes/no attribute indicating whether this tab is the default tab when the app is first loaded.
* **Description**: A text field providing a description of the menu tab. This is optional.
* **Hide header?**: A yes/no attribute indicating whether the header should be hidden when this menu tab is active.
* **Icon**: This determines the icon that appears next to the menu item name in the sidebar. For a full list see [Hero Icons](https://heroicons.com/).
* **Only visible to**: A list specifying which user roles can see this menu tab, based on the "OS - 👫 User Roles" option set. If the list is empty, the menu item will be visible to all users.
* **Display**: This is the text displayed in the menu. It is lowercase because this looks better when used in URL parameters.

## OS - 🍔 Menu - Item Page Subtabs (deprecated)

{% hint style="info" %}
In the 10th June 2024 release this option set was removed. Instead all menu subtabs come from the OS - 🍔 All Menu Subtabs option set.
{% endhint %}

These are the names of the tabs on the **p** page. They are example tabs or sections you may wish to have. You can rename or edit this option set.&#x20;

## OS - 🍔 Header Menu

These are the names of the top menu options in the **Header - Marketing Site** reusable. They each contain the information to tell the app where to redirect the user if they're clicked. You can rename or edit this option set.&#x20;

* Accounts subtab - If the menu item is linking to somewhere within the **Accounts** section in the dashboard (e.g. billing, profile), this will be added to the URL to direct the user correctly.
* Dashboard tab - If the menu item is linking to a section of the dashboard e.g. **Accounts**, this will be added to the URL to direct the user correctly.
* Icon - this determines the icon that appears next to the menu item name in mobile view or dropdown menu only. For a full list see [Hero Icons](https://heroicons.com/).
* Must be logged in? - this determines whether this item should be visible only to logged in users e.g. Dashboard should only be visible to logged in users.
* Page name - this is the name of the page to direct the user to.

## OS - 👯 User Roles

These are the user roles within the app. The **User** data type has a User Role field which you can set when a user signs up for the app, or when they're invited to join a team. This is used to determine what functionality they are allowed to access. For example, you can prevent certain user roles from accessing pages, from seeing menu items, or from clicking buttons. You can (and must) also refer to user roles in your privacy rules to protect data from the wrong users. You can rename or edit this option set.

The three default user roles are:

* App admin - this is you or someone from your team. Users with this role can see most data, and access the **admin** dashboard.
* Entity admin - this role is for users who have created an entity within the system (e.g. a company or organisation) and are in charge of billing and team management for that entity.
* Entity user - this is a team member who has been invited to join an entity by the entity admin. They are not responsible for billing or team management.

You can add as many user roles as you need to build the functionality of your app.

## OS - 💳 Pricing - Billing Frequency

These are the two billing frequency options - monthly or annual.

## OS - 💳 Pricing - Plan Features

This is a list of features your app has and is used in the **Marketing - Pricing Table** and **Popup - Upgrade** reusables. All plans will show all features, but those plans that do not have a certain feature can be listed within the **Plans without this feature** field of each option, in which case they will show an X rather than a tick next to that feature.

## OS - 💳 Pricing - Plans

This is a list of your price plans and should match the ones you've set up in Stripe or Lemon Squeezy. The BL boilerplate is set up to use test credentials when you are on version-test, and live credentials when you are on version-live.&#x20;

* Description - this is a brief description of the plan which is shown in the price plan table.
* Feature tier - this is a numeric value which gives you a simple way to block off features in a cascading way. For example, instead of needing to list all the features each plan can access, or list all the plans with access to a feature, you simple assign a feature tier number to a plan. Then on the feature you wish to restrict you put a conditional which says something like "If this user's plan's feature tier is less than 2, do not run this workflow or do not show this page". This way more expensive plans can access the features of lower plans.
* Frequency - Monthly or Annual.
* Icon - The icon to show in the pricing table.
* LS slug LIVE - this is the slug from Lemon Squeezy for this plan in LIVE mode. Watch [this video ](https://www.loom.com/share/08959f00257346a7956c1cbe6a2cd7f8?sid=b5f77741-ad33-4cae-97d8-50375aa8a82f)to see where to get it.
* LS slug TEST - this is the slug from Lemon Squeezy for this plan in TEST mode. Watch [this video ](https://www.loom.com/share/08959f00257346a7956c1cbe6a2cd7f8?sid=b5f77741-ad33-4cae-97d8-50375aa8a82f)to see where to get it.
* LS Variant ID LIVE - this is the variant ID from Lemon Squeezy for this plan in LIVE mode. Watch [this video](https://www.loom.com/share/4014c57705d64b7f9ed76f743cdcb98b?sid=14c41a5f-fad1-47bd-8939-eeb515dc363e) to see where to get it.
* LS Variant ID TEST -  this is the variant ID from Lemon Squeezy for this plan in TEST mode. Watch [this video](https://www.loom.com/share/4014c57705d64b7f9ed76f743cdcb98b?sid=14c41a5f-fad1-47bd-8939-eeb515dc363e) to see where to get it.
* Max users - if your app plans are based on limiting the number of users on a team, use this numeric value to prevent the entity admin from inviting new users once they've reached their limit. Alternatively you could rename this and use it in a different way, for example max number of AI generations per plan.
* Plan Name - This is the plan name as it's shown on the pricing plan table.
* Price USD - The price of the plan in USD.
* Stripe Price ID LIVE - This ID is found on the Stripe dashboard in LIVE mode.
* Stripe Price ID TEST - This ID is found on the Stripe dashboard in TEST mode.
* Display - This is for you to identify the plans, it is not shown within the app UI itself.











