Lowcoder Documentation
  • Lowcoder overview
    • The "Hello World" walk
  • 🆕Setup and run
    • Cloud & Private Cloud
    • Self-hosting
      • Google Cloud Platform
      • Easypanel
      • Heroku
      • Raspberry Pi
      • Access local database or API
      • Update MongoDB Versions
      • Lowcoder Version Update
      • Traefik loadbalancer
      • SMTP Server
      • Migration from Openblocks
    • Security
  • 🏨Workspaces & Teamwork
    • Workspaces
      • SAAS Mode
      • Enterprise Mode
    • Members and Groups
    • Permissions for Resources
    • OAuth
      • KeyCloak
      • Google
      • GitHub
      • Generic OAuth Provider
    • Query library
    • Lowcoder Marketplace
  • ✨Build Applications
    • Create a new App
      • App(s) Navigation
      • Modules
      • Version and Release Management
    • App Editor
      • Query & Editing Roundtrips
      • Bulk Editing
      • Keyboard shortcuts
      • Data selection & Javascript
      • Layers
      • Visual Components
        • Common Component Settings
        • Messages / Toast
        • Dashboard & Reporting
          • Table
          • Charts and graphs
            • Bar Chart
            • Line Chart
            • Pie Chart
            • Scatter Chart
            • CandleStick Chart
            • Funnel Chart
            • Gauge Chart
            • Graph Chart
            • Heatmap Chart
            • Radar Chart
            • Sankey Chart
            • Suburst Chart
            • Theme River Chart
            • Tree Chart
            • Treemap Chart
            • Mermaid Chart
          • Google Maps
        • Layout & Navigation
          • List View
          • Drawer
          • Modal
          • Navigation
          • Cascader
          • Tree / Tree Select
          • Link
          • Floating Button
          • Text
          • Step Control
          • Page Layout
          • Content Card
          • Tabbed Container
        • Data Collection & Forms
          • Form
          • Input Field Types
          • JSON Schema Form
        • Meeting & Collaboration
        • Project Management
        • Calendar & Scheduling
          • Calendar
          • Date & Date Range
          • Time & Time Range
        • Document & File Management
          • File upload
        • Item & Signature Handling
        • Multimedia & Animation
          • Image
        • Integration & Extension
        • Legacy & Deprecated
      • Option lists
      • Date handling
      • Use Markdown
    • App Interaction
      • Event handlers
    • Themes & Styling
      • Design an efficient and user-friendly form
      • Customize Styles
      • Component Styling Possibilities
    • Video Calls in Lowcoder
  • 🚀Connect your Data
    • Data source basics
      • Configure IP allowlists
    • Data sources in Lowcoder
      • APIs as Datasource
        • REST API
        • GraphQL
        • Google Sheets
      • SQL Databases
        • MySQL
        • MariaDB
        • Supabase
          • Supabase PostgreSQL
          • Supabase Assets API
          • Supabase RealTime
          • Supabase OAuth
        • PostgreSQL
        • Microsoft SQL Server
        • Oracle
      • NoSQL Databases
        • MongoDB
        • CouchDB
        • DynamoDB
      • InMemory Databases
        • Redis
      • File Storages
        • S3 File Storage
      • BigData & OLAP
        • Big Query
        • Snowflake
        • ClickHouse
        • Elasticsearch
      • Websocket Datasource
    • Query basics
      • Bind Query Data to Components
      • Query library
  • 🪄Workflows
    • n8n Integration
  • 💫Business Logic in Apps
    • Write JavaScript
      • JavaScript query
      • Temporary state
      • Transformers
      • Data responder
      • Built-in JS functions
  • 🙌Publish Apps
    • Share an App
    • Publish an App
    • Embed an App
      • Embed App in HTML Pages
      • Embed App in WordPress Pages
      • Embed Apps in React
      • Embed Apps in NEXT.JS
      • Native embed SDK
        • Build the SDK from Source
  • 🔥Lowcoder Extension
    • Opensource Contribution
      • Develop UI components for Apps
      • Develop Data Source Plugins
    • Use third-party libraries in Apps
      • Day.js Date handling
      • Import your own JavaScript Library
    • Custom component
    • Lowcoder Open REST API
  • Lowcoder for Enterprise
    • Custom branding
Powered by GitBook
LogoLogo

More to try...

  • Lowcoder Website
  • Free Cloud Platform
  • Github
  • Discord

© Lowcoder Software LTD

On this page
  • Component styles
  • Themes
  • Create a theme
  • Apply a theme
  • Switching themes dynamically
  • Demo :
  • Custom CSS
  • App-level CSS
  • Preload CSS
  • Demo 1: Line break in table header
  • Demo 2: Custom font family
  • User-friendly interaction
  • Hide UI components
  • Icon configuration
  • Placeholder and tooltip
  • Notifications
  • Loading effect

Was this helpful?

  1. Build Applications

Themes & Styling

PreviousEvent handlersNextDesign an efficient and user-friendly form

Last updated 9 months ago

Was this helpful?

Good user interface (UI) improves user experience (UX) and increases user involvement. You can customize the style of each component in Lowcoder and use the theme feature to design the interface on a per-app or workspace basis. Features such as icon configuration and hint messages make the app interaction more user-friendly.

Component styles

You can modify the style of all components in the Properties tab.

Click the color picker to select a color or write CSS color code in the text box.

You can also write JavaScript in the text box to conditionally control the style setting of the component.

Themes

The helps you quickly set the styles of all your apps within a workspace, such as the primary color of the apps and the default background color of containers. Created Themes are available and in each app you would need to apply a Theme.

Create a theme

Workspace admins have access to theme settings. On Lowcoder homepage, go to Settings > Themes, and click + Create theme. Enter the theme name, and select one of the preset default themes as the starting point.

Preview the real-time theme effect on the right.

For charts you can insert or modify the ECharts style JSON. Find a good way to create and preview these styles with the

Apply a theme

In the app editor, switch the theme by clicking ⚙️ on the left side-bar. Select a theme from Theme setting.

You can also set the default theme for all your apps within a workspace in Settings > Themes on Lowcoder homepage.

Switching themes dynamically

You can access the global variable theme and call the method theme.switchTo() to allow the end users to switch the theme of the apps on their side using JavaScript.The global variable theme has three fields. You can view them in the data browser.

  • id and name are strings, indicating the ID and name of the current theme. When their values are empty, then the default theme is applied.

  • allThemes is an array, including all information of available themes in the current workspace.

theme.switchTo() method switches the theme at the end user's side, and requires only a theme ID. When the passed value is an empty string "", then the default theme is applied.Once the end user switches the theme, it will be saved to the user browser's local storage. And this theme will override the default theme and apply to all apps that are used in the same browser.

Demo :

Follow the steps below to include this function in your app.

  1. Drag and drop a Select component onto your canvas. Set the data value as follows.

{{[{ id: "", name: "Default" }, ...theme.allThemes]}}
  1. Set the labels and values as {{item.name}} and {{item.id}} respectively. Then, you can view the default theme and all other available themes in the current workspace.

  2. Insert a Button component onto your canvas to switch theme. Add an event to the button, select "Run JavaScript" as the action, and run theme.switchTo() method which takes the value of the Select component.

Custom CSS

Lowcoder provides a custom CSS feature for more flexible and customized UI styling.

App-level CSS

In the app editor, click ⚙️ on the left side-bar, select Scripts and style > CSS, and then write CSS code for the current app.

For example, insert text component text1. Then use .text1 as the element name and modify its CSS style.

It is recommended to modify the component styles in Properties > Style because the DOM of an adjusted CSS style may change as the system iterates.

Preload CSS

In Lowcoder, workspace admins can also set pre-loaded CSS styles for all apps within the workspace. Open the Settings, and click Advanced > Preload CSS.

It is highly recommended to use CSS selectors as follows:

Class name
Description

top-header

Top navigation bar

root-container

Root container of the app

The name of each component functions as the class name. For example, for the text1 component, you can use .text1 as its class name and write CSS code for it. And the class names share the same form: ui-comp-{COMP_TYPE}—for example, you can use .ui-comp-select to define CSS style of all select components. All the components' class names are listed as follows.

input
textArea
password
richTextEditor
numberInput
slider
rangeSlider
rating
switch
select
multiSelect
cascader
checkbox
radio
segmentedControl
file
date
dateRange
time
timeRange
button
link
dropdown
toggleButton
text
table
image
progress
progressCircle
fileViewer
divider
qrCode
form
jsonSchemaForm
container
tabbedContainer
modal
listView
navigation
iframe
custom
module
jsonExplorer
jsonEditor
tree
treeSelect
audio
video
drawer
carousel
collapsibleContainer
chart
imageEditor
scanner
.text1 {
    span {
        color: red;
        font-weight: bold;
    }
}

All the custom CSS for apps is saved into the space named #app-{APP_ID}, and the CSS for modules is saved into the space named #module-{MODULE_ID}.If your preload CSS does not work properly, it might be overridden by the theme or component styles with higher priority. Open the browser Inspect to check.

Demo 1: Line break in table header

To allow line break in table header, insert the following code in Script and style > CSS.

.table1 {
  th div {
    white-space: pre-wrap;
    word-break: break-word;
    max-height: unset;
  } 
}

Demo 2: Custom font family

To use custom font family, you need to define it first and then apply it. Insert the following code in Script and style > CSS to apply the font "Fredoka One" to all text components using Markdown mode within the app.

@font-face {
  font-family: 'Fredoka One';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/fredokaone/v13/k3kUo8kEI-tA1RRcTZGmTlHGCaen8wf-.woff2) format('woff2');
}

.ui-comp-text .markdown-body {
  font-family: 'Fredoka One';
  font-size: 30px;
}

User-friendly interaction

Lowcoder always lives up to efficiency, security, and easy-to-use design.

Hide UI components

Set the hidden properties of components when necessary to avoid information overload. For example, when creating a suggestion collection form, you can set the input box as visible or hidden depending on the user's selection.

To achieve this effect, set the hidden property of the component textArea1 with the code:

{{Number(radio1.value) === 1 ? 'false' : 'true'}} 

When the value of the component radio1 is "1", the value of the hidden property is "false"; otherwise, the value is "true". The component layout is automatically adjusted.

Icon configuration

Icons are intuitive, and can be alternatives to text in some cases. The proper use of icons gives users a better visual experience, and helps them use the app more easily.

Prefix and suffix icons are available for some components, such as Button. Add icons in Properties > Layout.

You can select from preset icons or write JS code to insert icons, for example, {{ "/icon:solid/Users" }}.

Placeholder and tooltip

Tips improve app usability–for example, showing the tips for the input helps users better interact with the app.

  • Placeholder: It displays in the empty input field to prompt the user what to type.

  • Tooltip: It adds an underline to the label. Users can see the tooltip via a mouse hover.

Notifications

Notifications are messages directly sent to your users to remind them of the status of their operations, confirm their success, or help them to proceed.

Global notifications

Global notifications for certain user interactions give users timely feedback. Lowcoder offers four types of global notificaitons: Information, Success, Warning and Error.

You can set global notifications in three ways:

  1. Set in Event handlers > Action > Show notification. See Show notification (Event handlers).

  2. Set in JavaScript queries with built-in functions.

  3. Set in Notification tab in query settings. See Notification tab.

Loading effect

When a query takes time to run, you can set the loading effect to inform your users that the query is running and avoid them from performing frequent operations.

For example, the loading effect of the Submit button is {{form1SubmitToHrmsEn1.isFetching}}. Clicking the button triggers query form1SubmitToHrmsEn1 to run, and during this process, the button is displayed with the loading effect.

Confirmation modal

You can set a confirmation modal for a double check for your users when they perform operations such as adding, modifying or deleting data. In the Advanced tab of the query, toggle Show a confirmation modal before running, and enter a confirmation message.

Form design

Forms are frequently used to collect information. For more details on building easy-to-follow and productive forms, see Design an efficient and user-friendly form.

Combining Option lists and Events, end users can switch the theme within the app. For details, see .

Avoid using class names that may change with iterations, such as sc-dkiQaF bfTYCO.Lowcoder supports , you can use CSS nesting to improve efficiency, for example:

✨
theme feature
ECharts style Editor.
Change theme by code demo
CSS pre-processor