Navigation resources
Store navigation resources underportal/navigations/. A navigation contains ordered entries for a supported web or mobile context. Entries that target authored screens use screen file slugs.
Portal navigation is separate from the other two kinds of navigation in Fluid. A storefront’s website navigation menus are the site’s navigation bars and footers. The Fluid mobile app has its own mobile app navigation. In the API reference, portal navigation is under Portal navigation, and each navigation’s
platform is web, for browsers, or mobile.Navigation items
Each file has aname, a platform of web or mobile, and a navigation_items array. Copy a sibling item from a pulled file and change its values. An item that opens one of your screens looks like this:
screenis the slug of the screen file,portal/screens/rewards.json.slugis the route, so this item opens/rewards.- Don’t write
screen_id. That’s the server’s format. Pull turns it intoscreen, and push turnsscreenback into the server’s ID. The schema rejects a hand-writtenscreen_id. - Leave out
idon a new item. Fluid assigns it when you push. Keep theidon items you pulled. - Put items in
childrento make a group that opens and closes. - A profile shows only the navigations it points to. Add the item to the navigation of every profile that should see the page, and to the profile’s
mobile_navigationtoo if it should appear on phones.
System screens with extra rules
Most system screens appear wherever a navigation item points to them. A few follow extra rules:
A custom page in your portal’s code can replace a system screen at its slug. A custom page for a member type can’t get past the rep-only rule. See Custom pages and route order.
Profile resources
Store profile resources underportal/profiles/. A profile connects matching or permission rules to navigation and theme selections.
A profile file names its web navigation and its mobile_navigation by slug, lists its themes, and says whether it’s the default. Its permissions object needs all four arrays, even when they’re empty:
countriesholds country IDs andranksholds rank IDs.rolesholds member type slugs, such asreporcustomer, plusadminfor company admins.platformis part of the file format, but the Portal Builder doesn’t set it. Leave it empty.
How the portal picks a profile
The deployed portal asks Fluid for the live version of your active portal. Fluid picks one profile for the signed-in viewer:- It checks each profile’s ranks, member types and countries against the viewer: their rank, their member type (or
adminfor a company admin) and their country. Without a country on the viewer, it uses the company’s default country. - An empty list matches everyone. A list that doesn’t include the viewer’s value rules the profile out.
- Of the profiles left, the most specific one wins. A list with one value beats a list with several, and both beat an empty list.
- If no profile matches, the viewer gets the default profile.
- If no profile matches and none is the default, the viewer gets no screens and Fluid’s built-in sidebar.
Which profile local preview shows
fluid portal dev doesn’t check permissions. It always shows the profile marked as default. If no profile is the default, it shows the first profile file. Edits to any other profile never show locally, whoever is signed in. The signed-in member still counts for rep-only screens. Verify profile rules on the deployed portal.
Theme resources
Store theme resources underportal/themes/. A theme file contains the complete structured theme configuration. A partial theme is invalid.
When you need the current full shape, pull an existing theme and edit the required values. Use the theme schema for color modes, semantic tokens, typography, spacing, borders, radii, focus, and chart configuration.
A theme file has a name, an active flag and a config. Never create a theme with only a name. Copy a pulled theme and change its id, name and tokens. The config needs all of these:
Check cross-resource links
Before push:- Confirm each navigation target matches a screen slug.
- Confirm each profile points to existing navigation and theme slugs.
- Confirm the intended default profile is explicit.
- Validate every theme as a complete resource.
- Preview representative routes under the intended profile and theme.
PortalNavigation, PortalProfile, and PortalTheme for the current resource contracts.