Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19
Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at the Rust makepad-widgets crate DSL. Help users by:
Refer to the local files for detailed documentation:
./references/dsl-syntax.md - Complete DSL syntax reference./references/inheritance.md - Inheritance patterns and examplesBefore answering questions, Claude MUST:
/sync-crate-skills makepad --force 更新文档"{
width: 100.0
height: 50.0
color: #FF0000
}
MyButton = {
width: Fit
height: 40.0
padding: 10.0
draw_bg: { color: #333333 }
}
PrimaryButton = <MyButton> {
draw_bg: { color: #0066CC } // Override parent color
draw_text: { color: #FFFFFF } // Add new property
}
<View> {
// Inherits from View prototype
width: Fill
height: Fill
<Button> { text: "Click Me" } // Child widget
<Label> { text: "Hello" } // Another child
}
// In live_design!
MyWidget = {{MyWidget}} {
// DSL properties
width: 100.0
}
// In Rust
#[derive(Live, LiveHook, Widget)]
pub struct MyWidget {
#[deref] view: View,
#[live] width: f64,
}
| Syntax | Description | Example |
|---|---|---|
{ ... } |
Anonymous object | { width: 100.0 } |
Name = { ... } |
Named prototype | MyStyle = { color: #FFF } |
<Name> { ... } |
Inherit from prototype | <MyStyle> { size: 10.0 } |
{{RustType}} |
Link to Rust struct | App = {{App}} { ... } |
name = <Widget> |
Named child widget | btn = <Button> { } |
dep("...") |
Resource dependency | dep("crate://self/img.png") |
| Type | Example | Description |
|---|---|---|
| Number | width: 100.0 |
Float value |
| Color | color: #FF0000FF |
RGBA hex color |
| String | text: "Hello" |
Text string |
| Enum | flow: Down |
Enum variant |
| Size | width: Fit |
Fit, Fill, or numeric |
| Object | padding: { top: 10.0 } |
Nested object |
| Array | labels: ["A", "B"] |
List of values |
Parent = {
a: 1
nested: { x: 10, y: 20 }
}
Child = <Parent> {
a: 2 // Override a
b: 3 // Add new property
nested: { x: 30 } // Override only x, y remains 20
}
<Widget> syntax to inherit from built-in widgets{{RustType}} to link DSL to Rust structslive_design! macro