mcpField
M
makepad-2.0-widgets

makepad-2.0-widgets

github.com/zhanghandongデザイン・UI75254 回インストール29 週間前に更新
リポジトリ

makepad-2.0-widgets について

Makepad 2.0 の UI 開発者向けウィジェットカタログスキルです。組み込みウィジェットやプロパティ、レイアウト例、実装上の注意点をまとめ、回答前に関連するローカル資料を参照するよう定めています。

主な機能

  1. 01組み込みウィジェットを分類
  2. 02各ウィジェットの用途とプロパティ
  3. 03高度なウィジェット資料への案内
  4. 04レイアウトと描画の注意点
  5. 05一般的な実装例と指針

活用シーン

  1. 01ウィジェット名やプロパティの確認
  2. 02フォーム、カード、スクロールリストの構築
  3. 03大規模リストでの仮想化表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zhanghandong/makepad-skills --skill makepad-2.0-widgets

インストール後、Claude Code で/makepad-2.0-widgetsを入力して読み込まれたか確認します。

同梱ファイルreferences/widget-advanced.mdreferences/widget-catalog.md

詳細

Makepad 2.0 ウィジェットカタログスキル

バージョン: makepad-widgets(dev ブランチ) | 最終更新日: 2026-03-03

概要

Makepad 2.0 には、UI の構築に使える豊富な組み込みウィジェットが用意されています。すべてのウィジェットは Splash 構文で定義され、script_mod! を使って登録されます。

ドキュメント

詳細については、ローカルファイルを参照してください。

  • ./references/widget-catalog.md - プロパティを含むウィジェット一覧
  • ./references/widget-advanced.md - PortalList、Dock、カスタムウィジェット、MapView などの高度なパターン

重要:ドキュメントの完全性チェック

質問に回答する前に、Claude は必ず次のことを行ってください。

  1. 上記に記載された関連するリファレンスファイルを読む
  2. リファレンスの内容を回答に反映する

ウィジェットカテゴリのクイックリファレンス

コンテナー(レイアウト)
ウィジェット説明主なプロパティ
View基本コンテナー(透明)width, height, flow, spacing, padding, align
SolidView単色の背景を持つ View+ show_bg: true, draw_bg.color
RoundedView角丸の View+ draw_bg.border_radius
RoundedAllViewすべての角の半径が同じ View+ border_radius shorthand
GradientXView水平方向のグラデーション背景+ draw_bg colors
GradientYView垂直方向のグラデーション背景+ draw_bg colors
ScrollXView水平方向にスクロールscroll property
ScrollYView垂直方向にスクロールscroll property
ScrollXYView縦横両方向にスクロールscroll property
テキストウィジェット
ウィジェット説明主なプロパティ
Label単行/複数行のテキストtext, draw_text.color, draw_text.text_style.font_size
H1 - H4見出しレベルtext(スタイル設定済み)
P段落テキストtext
TextInput編集可能なテキストフィールドtext, empty_text, password, read_only, numeric_only
MarkdownMarkdown レンダラーbody
HtmlHTML レンダラーbody
LinkLabelクリック可能なリンクテキストtext, url
ボタン
ウィジェット説明主なプロパティ
Button標準ボタンtext
ButtonFlatフラットスタイルのボタンtext
ButtonFlatter最小限のスタイルのボタンtext
トグル
ウィジェット説明主なプロパティ
CheckBoxチェックボックスtext, active
Toggleトグルスイッチtext, active
RadioButtonラジオボタンtext, active
入力ウィジェット
ウィジェット説明主なプロパティ
Slider水平スライダーmin, max, step, default, precision
DropDownドロップダウン選択labels: ["a", "b", "c"]
メディア
ウィジェット説明主なプロパティ
Image画像表示source, fit (Stretch/Horizontal/Vertical/Smallest/Biggest/Size)
Svg外部 SVG ファイルのレンダラーdraw_svg.svg (crate_resource/http_resource), animating, draw_svg.color
IconSVG アイコン(色付き)draw_icon.svg, draw_icon.color, icon_walk
Vectorインラインのベクターグラフィックスviewbox, Path{d: "..."}
LoadingSpinner読み込みインジケーターcolor, rotation_speed
MapViewマップウィジェットcenter_lon, center_lat, zoom(高さは必ず固定値を指定してください!)
レイアウトヘルパー
ウィジェット説明用途
Hr水平線区切り線
Vr垂直線縦方向の区切り線
Filler可変スペース隣接する要素を押し離す(Fit の兄弟要素の間でのみ使用してください!)
Splitterサイズ変更可能な分割axis: Horizontal/Vertical, a/b の子要素
FoldHeader折りたたみ可能なセクションheader + body の子要素
リスト
ウィジェット説明用途
PortalList仮想化リスト大きなリスト(100 項目以上)向け。表示中の項目のみを描画します
FlatListシンプルなリスト小さなリスト向け。すべての項目を描画します
ナビゲーション
ウィジェット説明操作
ModalモーダルダイアログRust から .open(cx) / .close(cx)
Tooltipツールチップのポップアップホバーで表示
PopupNotificationトースト通知一定時間表示
SlidePanelスライドパネルslide_from
ExpandablePanel展開可能な領域開く/閉じる
PageFlipページ切り替えactive_page: page_name
StackNavigationスタックナビゲーションページを push/pop
ドックシステム
ウィジェット説明
Dockタブコンテナーシステム
DockSplitterドック分割パネル
DockTabsタブバー
DockTab個別のタブ

重要なルール

1. コンテナーでは height: Fit を使用する
// WRONG - View defaults to 0px height
View{ flow: Down Label{text: "Invisible"} }

// CORRECT
View{ height: Fit flow: Down Label{text: "Visible"} }
2. テキストを含む色付きコンテナーでは new_batch を使用する
// WRONG - text behind background
RoundedView{ draw_bg.color: #333 Label{text: "Invisible"} }

// CORRECT
RoundedView{ new_batch: true draw_bg.color: #333 Label{text: "Visible"} }
3. := を使って子要素に名前を付ける
// Named (addressable, overridable)
title := Label{text: "Hello"}

// Static (not addressable)
Label{text: "Hello"}
4. Label のデフォルトの色は白
// Default text is white (#fff) - set color for light backgrounds
Label{text: "Dark text" draw_text.color: #333}
5. MapView には必ず固定の高さを指定する
// WRONG
MapView{ width: Fill height: Fill }

// CORRECT
View{ new_batch: true width: Fill height: 400
    MapView{ width: Fill height: 400 center_lat: 40.7 center_lon: -73.9 zoom: 14.0 }
}
6. Label は Animator をサポートしない
// WRONG (silently ignored)
Label{ animator: Animator{...} }

// CORRECT - wrap in View
View{ animator: Animator{...} Label{text: "Animated"} }

よく使うウィジェットのパターン

カード
RoundedView{
    width: Fill height: Fit
    padding: 16
    new_batch: true
    draw_bg.color: #2a2a3d
    draw_bg.border_radius: 8.0
    flow: Down spacing: 8
    title := Label{text: "Title" draw_text.color: #fff draw_text.text_style.font_size: 16}
    body := Label{text: "Content" draw_text.color: #aaa}
}
フォーム入力
View{
    width: Fill height: Fit
    flow: Down spacing: 4
    Label{text: "Email" draw_text.color: #aaa draw_text.text_style.font_size: 11}
    email_input := TextInput{
        width: Fill height: 36
        empty_text: "Enter email..."
    }
}
スクロール可能なリスト
ScrollYView{
    width: Fill height: Fill
    flow: Down spacing: 4
    new_batch: true
    on_render: || {
        for i, item in items {
            ItemTemplate{label.text: item.name}
        }
    }
}

ベストプラクティス

  1. Fill または固定ピクセルを指定する場合を除き、すべてのコンテナーで height: Fit を使用します
  2. 背景色とテキストの子要素がある View には、new_batch: true を使用します
  3. 参照またはオーバーライドする必要がある子要素には、:= を使用します
  4. ハードコードした色ではなく、テーマカラー(theme.color_*)を使用します
  5. 大きなリストには PortalList を使用します(描画を仮想化します)
  6. スクロール可能なコンテンツ領域には ScrollYView を使用します
  7. カードやコンテナーには RoundedView を使用します(border_radius を備えています)

コメント