Skip to content

Widgets

Widgets are reusable UI building blocks that you can use across pages and apps. Build them once, use them everywhere.

A widget is a self-contained UI component with:

  • Visual design - Layout and appearance
  • Customization options - Properties you can configure per-use
  • Data bindings - Connections to your flow data
┌─────────────────────────────────────────────────────────────┐
│ Widget: Metric Card │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ │
│ │ 📈 │ Revenue │
│ └─────────┘ $124,500 │
│ ▲ 12.5% from last month │
│ │
├─────────────────────────────────────────────────────────────┤
│ Customization Options: │
│ • Title → "Revenue" │
│ • Icon → "chart" │
│ • Value binding → /sales/total │
│ • Trend binding → /sales/trend │
└─────────────────────────────────────────────────────────────┘
ConceptDescriptionScope
ComponentsBasic building blocks (Text, Button)Built-in
WidgetsComposed from componentsYour organization

Think of components as LEGO bricks and widgets as the custom structures you build with them.

  1. Open a page in the Page Builder
  2. Look in the Components panel
  3. Find Widgets section (or search)
  4. Drag the widget onto your canvas
  5. Configure its properties

Each widget instance can have different values:

Page: Dashboard
├── Metric Card Widget
│ └── Title: "Revenue" / Value: /sales/revenue
├── Metric Card Widget
│ └── Title: "Orders" / Value: /orders/count
└── Metric Card Widget
└── Title: "Users" / Value: /users/active

Same widget, three different configurations.

Flow-Like provides a visual Widget Builder for creating your own widgets.

┌─────────────────────────────────────────────────────────────────────┐
│ Widget Builder: KPI Card [Test] [Save] │
├─────────────┬───────────────────────────────────┬───────────────────┤
│ │ │ │
│ COMPONENTS │ CANVAS │ CUSTOMIZATIONS │
│ │ │ │
│ ┌───────┐ │ ┌─────────────────────────┐ │ Title │
│ │ Text │ │ │ ┌──────┐ │ │ ☑ Customizable │
│ └───────┘ │ │ │ Icon │ Title │ │ Default: "KPI" │
│ ┌───────┐ │ │ └──────┘ │ │ │
│ │ Icon │ │ │ ┌──────────────────┐ │ │ Icon │
│ └───────┘ │ │ │ Value │ │ │ ☑ Customizable │
│ ┌───────┐ │ │ │ $124,500 │ │ │ Default: "chart"│
│ │ Card │ │ │ └──────────────────┘ │ │ │
│ └───────┘ │ │ Trend: ▲ 12.5% │ │ Value │
│ │ └─────────────────────────┘ │ ☑ Customizable │
│ │ │ Binding path... │
├─────────────┴───────────────────────────────────┴───────────────────┤
│ Test Data: { title: "Revenue", value: 124500, trend: 12.5 } │
└─────────────────────────────────────────────────────────────────────┘
  1. Open Widget Builder from Studio > Widgets
  2. Add components to build your layout
  3. Mark customization options for configurable properties
  4. Define data bindings for dynamic content
  5. Test with sample data to verify behavior
  6. Save and publish your widget

When building a widget, you can mark certain properties as customizable:

Option TypeDescriptionExample
TextEditable textTitles, labels
NumberNumeric valueSizes, limits
ColorColor pickerAccent colors
BooleanOn/off toggleShow/hide elements
BindingData pathDynamic content
SelectDropdown optionsVariants, sizes

For advanced widgets, you can expose component properties to allow deeper customization:

{
"widget": "metric-card",
"customizations": {
"title": "Revenue",
"showTrend": true
},
"exposedProps": {
"card.borderRadius": "8px",
"icon.color": "#3b82f6"
}
}

Flow-Like includes common widgets out of the box:

WidgetDescription
Metric CardDisplay a single metric with trend
Data TableSortable, filterable table
Line ChartTime series visualization
Bar ChartCategorical comparisons
Form CardInput form in a card
Navigation BarApp navigation menu
FooterPage footer with links

Create widgets for your organization:

  • Branded components - Company colors and styles
  • Common patterns - Frequently used layouts
  • Team templates - Shared starting points

Widgets support versioning for safe updates:

VersionStatusDescription
v1.0.0StableOriginal release
v1.1.0StableAdded trend indicator
v2.0.0LatestNew layout, breaking changes

Pages can pin to a specific version or follow the latest.

When using a widget:

  1. Choose the widget
  2. Select version:
    • Latest - Always use newest
    • Stable - Use latest stable
    • Specific - Pin to exact version

Provide good default values so widgets look good immediately:

  • Default title: “Metric” (not empty)
  • Default color: Theme primary (not hard-coded)
  • Default size: Medium (not tiny or huge)

Add descriptions to help others understand:

  • Widget description - What it does
  • Option descriptions - What each customization controls
  • Usage examples - Common configurations

Test your widgets with:

  • Empty data
  • Very long text
  • Very short text
  • Many items
  • No items
  • Different screen sizes