Inference Logoinference.sh

Checkbox

Binary selection control for boolean values.

Preview

code
1 Subscribe to updates

Usage

go
1node := models.WidgetNode{2    Type:  models.WidgetNodeTypeCheckbox,3    Name:  "accept_terms",4    Label: "I accept the terms and conditions",5}

Props

NameTypeDescriptionDefault
type"checkbox"Node typerequired
namestringForm field name (key in form data)required
labelstringLabel text displayed next to checkbox-
defaultCheckedbooleanInitial checked statefalse
onCheckedChangeActionWidgetActionAction triggered when checkbox is toggled-

Examples

Basic Checkbox

go
1{2    Type:  models.WidgetNodeTypeCheckbox,3    Name:  "newsletter",4    Label: "Subscribe to newsletter",5}

Pre-checked

go
1{2    Type:           models.WidgetNodeTypeCheckbox,3    Name:           "notifications",4    Label:          "Enable notifications",5    DefaultChecked: true,6}

Checkbox with Action

Trigger an action immediately when the checkbox is toggled:

go
1{2    Type:           models.WidgetNodeTypeCheckbox,3    Name:           "task_completed",4    Label:          "Mark task as complete",5    DefaultChecked: false,6    OnCheckedChangeAction: &models.WidgetAction{7        Type:    "toggle_task",8        Payload: map[string]interface{}{"task_id": "123"},9    },10}

Task List Example

go
1{2    Type: models.WidgetNodeTypeCol,3    Gap:  2,4    Children: []models.WidgetNode{5        {Type: models.WidgetNodeTypeTitle, Value: "Today's Tasks", Size: "lg"},6        {7            Type:           models.WidgetNodeTypeCheckbox,8            Name:           "task1",9            Label:          "Review pull requests",10            DefaultChecked: true,11            OnCheckedChangeAction: &models.WidgetAction{12                Type:    "toggle_task",13                Payload: map[string]interface{}{"task_id": 1},14            },15        },16        {17            Type:           models.WidgetNodeTypeCheckbox,18            Name:           "task2",19            Label:          "Deploy to staging",20            OnCheckedChangeAction: &models.WidgetAction{21                Type:    "toggle_task",22                Payload: map[string]interface{}{"task_id": 2},23            },24        },25        {26            Type:           models.WidgetNodeTypeCheckbox,27            Name:           "task3",28            Label:          "Write documentation",29            OnCheckedChangeAction: &models.WidgetAction{30                Type:    "toggle_task",31                Payload: map[string]interface{}{"task_id": 3},32            },33        },34    },35}

Terms Acceptance (with Form Submit)

go
1widget := &models.Widget{2    Type:  models.WidgetTypeUI,3    Title: "Complete Registration",4    Children: []models.WidgetNode{5        {6            Type: models.WidgetNodeTypeCol,7            Gap:  3,8            Children: []models.WidgetNode{9                {Type: models.WidgetNodeTypeInput, Name: "email", Placeholder: "Email"},10                {Type: models.WidgetNodeTypeCheckbox, Name: "accept_terms", Label: "I accept the terms of service"},11                {Type: models.WidgetNodeTypeCheckbox, Name: "accept_privacy", Label: "I accept the privacy policy"},12                {13                    Type:    models.WidgetNodeTypeRow,14                    Gap:     2,15                    Justify: "end",16                    Children: []models.WidgetNode{17                        {18                            Type:    models.WidgetNodeTypeButton,19                            Label:   "Register",20                            Variant: "default",21                            OnClickAction: &models.WidgetAction{22                                Type:            "register",23                                LoadingBehavior: "self",24                            },25                        },26                    },27                },28            },29        },30    },31}

Form Data

When the widget is submitted, checkbox values are included as booleans:

json
1{2  "email": "[email protected]",3  "accept_terms": true,4  "accept_privacy": false5}

TypeScript

typescript
1const node: WidgetNode = {2  type: "checkbox",3  name: "accept_terms",4  label: "I accept the terms",5  defaultChecked: false,6  onCheckedChangeAction: {7    type: "terms_changed",8    payload: { field: "terms" },9  },10}

Best Practices

  1. Use clear labels - Describe what checking the box means
  2. Positive phrasing - "Enable X" instead of "Disable X"
  3. Group related checkboxes - Use Col with gap for visual grouping
  4. Set reasonable defaults - Pre-check common preferences
  5. Use onCheckedChangeAction for immediate feedback - Useful for task lists or toggles

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.