opencode-skills-collection 4.0.69 → 4.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +39 -1
- package/bundled-skills/api-integration-architect/SKILL.md +241 -0
- package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
- package/bundled-skills/apify-integration-development/SKILL.md +168 -0
- package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
- package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
- package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
- package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
- package/bundled-skills/architecture-review/README.md +42 -0
- package/bundled-skills/architecture-review/SKILL.md +77 -0
- package/bundled-skills/architecture-review/examples.md +11 -0
- package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
- package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
- package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
- package/bundled-skills/architecture-review/reference/graph.md +15 -0
- package/bundled-skills/architecture-review/reference/mcp.md +14 -0
- package/bundled-skills/architecture-review/reference/workflow.md +15 -0
- package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
- package/bundled-skills/code-review-sensei/SKILL.md +177 -0
- package/bundled-skills/codebase-onboarding/README.md +42 -0
- package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
- package/bundled-skills/codebase-onboarding/examples.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
- package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
- package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
- package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
- package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
- package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
- package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
- package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
- package/bundled-skills/dependency-analysis/README.md +42 -0
- package/bundled-skills/dependency-analysis/SKILL.md +76 -0
- package/bundled-skills/dependency-analysis/examples.md +11 -0
- package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
- package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
- package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
- package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
- package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
- package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
- package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
- package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
- package/bundled-skills/eas-app-stores/SKILL.md +197 -0
- package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
- package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
- package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
- package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
- package/bundled-skills/eas-hosting/SKILL.md +448 -0
- package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/SKILL.md +75 -0
- package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/references/metrics.md +98 -0
- package/bundled-skills/eas-observe/references/queries.md +403 -0
- package/bundled-skills/eas-observe/references/setup.md +476 -0
- package/bundled-skills/eas-observe/references/third-party.md +136 -0
- package/bundled-skills/eas-simulator/SKILL.md +251 -0
- package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
- package/bundled-skills/eas-simulator/references/controllers.md +135 -0
- package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
- package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
- package/bundled-skills/eas-workflows/SKILL.md +119 -0
- package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
- package/bundled-skills/expo-animation/LICENSE +21 -0
- package/bundled-skills/expo-animation/RECIPES.md +385 -0
- package/bundled-skills/expo-animation/SKILL.md +295 -0
- package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
- package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
- package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
- package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
- package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
- package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
- package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
- package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
- package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
- package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
- package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
- package/bundled-skills/gpt-taste/SKILL.md +8 -1
- package/bundled-skills/hf-cli/SKILL.md +263 -0
- package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
- package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
- package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
- package/bundled-skills/jev-social/SKILL.md +182 -0
- package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
- package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
- package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
- package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
- package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
- package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
- package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
- package/bundled-skills/longbridge-quant/SKILL.md +151 -0
- package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
- package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
- package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
- package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
- package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
- package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
- package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
- package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
- package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
- package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
- package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
- package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
- package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
- package/bundled-skills/longbridge-research/SKILL.md +187 -0
- package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
- package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
- package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
- package/bundled-skills/longbridge-research/references/consensus.md +92 -0
- package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
- package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
- package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
- package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
- package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
- package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
- package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
- package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
- package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
- package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
- package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
- package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
- package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
- package/bundled-skills/longbridge-research/references/investors.md +87 -0
- package/bundled-skills/longbridge-research/references/onchain.md +70 -0
- package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
- package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
- package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
- package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
- package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
- package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
- package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
- package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
- package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
- package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
- package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
- package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
- package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
- package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
- package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
- package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
- package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
- package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
- package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
- package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
- package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
- package/bundled-skills/remotion-captions/SKILL.md +57 -0
- package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-captions/display-captions.md +190 -0
- package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
- package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
- package/bundled-skills/remotion-create/SKILL.md +106 -0
- package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-create/tailwind.md +11 -0
- package/bundled-skills/remotion-create/video-layout.md +9 -0
- package/bundled-skills/remotion-docs/SKILL.md +67 -0
- package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
- package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/SKILL.md +48 -0
- package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/transparent-videos.md +106 -0
- package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
- package/bundled-skills/score-eval/SKILL.md +35 -0
- package/bundled-skills/writing-guidelines/SKILL.md +60 -0
- package/package.json +1 -1
- package/skills_index.json +980 -3
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: makepad-2-0-animation
|
|
3
|
+
description: Makepad 2.0 guidance for animation; use when building or debugging Makepad UI code.
|
|
4
|
+
source_repo: zhanghandong/makepad-skills
|
|
5
|
+
source_type: community
|
|
6
|
+
source: community
|
|
7
|
+
date_added: '2026-09-21'
|
|
8
|
+
risk: unknown
|
|
9
|
+
---
|
|
10
|
+
## When to Use
|
|
11
|
+
- Use when this upstream workflow matches the user's stated goal.
|
|
12
|
+
- Use when the task requires the procedures documented in this skill.
|
|
13
|
+
|
|
14
|
+
# Makepad 2.0 Animation Skill
|
|
15
|
+
|
|
16
|
+
> **Version:** makepad-widgets (dev branch) | **Last Updated:** 2026-03-03
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
The Animator system drives `instance()` shader variables over time, enabling hover effects, transitions, and looping animations. It uses independent animation tracks called "groups" that run simultaneously.
|
|
21
|
+
|
|
22
|
+
## Documentation
|
|
23
|
+
|
|
24
|
+
Refer to the local files for detailed documentation:
|
|
25
|
+
- `./references/animator-reference.md` - Complete Animator API, play types, ease functions, examples
|
|
26
|
+
|
|
27
|
+
## IMPORTANT: Documentation Completeness Check
|
|
28
|
+
|
|
29
|
+
**Before answering questions, Claude MUST:**
|
|
30
|
+
|
|
31
|
+
1. Read the relevant reference file(s) listed above
|
|
32
|
+
2. If file read fails or file is empty:
|
|
33
|
+
- Inform user: "Reference docs incomplete. Still answering based on SKILL.md patterns."
|
|
34
|
+
- Still answer based on SKILL.md patterns + built-in knowledge
|
|
35
|
+
3. If reference file exists, incorporate its content into the answer
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Critical: Widget Animator Support
|
|
40
|
+
|
|
41
|
+
**NOT all widgets support `animator`!** Adding `animator: Animator{...}` to an unsupported widget is **silently ignored** - no error, no animation, nothing happens.
|
|
42
|
+
|
|
43
|
+
### Widgets that SUPPORT Animator
|
|
44
|
+
`View`, `SolidView`, `RoundedView`, `ScrollXView`, `ScrollYView`, `ScrollXYView`, `Button`, `ButtonFlat`, `ButtonFlatter`, `CheckBox`, `Toggle`, `RadioButton`, `LinkLabel`, `TextInput`
|
|
45
|
+
|
|
46
|
+
### Widgets that DO NOT Support Animator
|
|
47
|
+
`Label`, `H1`-`H4`, `P`, `TextBox`, `Image`, `Icon`, `Markdown`, `Html`, `Slider`, `DropDown`, `Splitter`, `Hr`, `Filler`
|
|
48
|
+
|
|
49
|
+
**To animate a Label:** Wrap it in a View with the animator:
|
|
50
|
+
```
|
|
51
|
+
View{
|
|
52
|
+
width: Fit height: Fit
|
|
53
|
+
animator: Animator{
|
|
54
|
+
hover: {
|
|
55
|
+
default: @off
|
|
56
|
+
off: AnimatorState{ from: {all: Forward {duration: 0.15}} apply: {draw_bg: {hover: 0.0}} }
|
|
57
|
+
on: AnimatorState{ from: {all: Forward {duration: 0.15}} apply: {draw_bg: {hover: 1.0}} }
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
label := Label{text: "Animated via parent"}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Animator Structure
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
animator: Animator{
|
|
70
|
+
<group_name>: {
|
|
71
|
+
default: @<state_name>
|
|
72
|
+
<state_name>: AnimatorState{
|
|
73
|
+
from: { ... }
|
|
74
|
+
ease: <EaseFunction>
|
|
75
|
+
redraw: true
|
|
76
|
+
apply: { ... }
|
|
77
|
+
}
|
|
78
|
+
<state_name>: AnimatorState{ ... }
|
|
79
|
+
}
|
|
80
|
+
<group_name>: { ... }
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Groups
|
|
87
|
+
|
|
88
|
+
Each group is an independent animation track. Common groups:
|
|
89
|
+
|
|
90
|
+
| Group | Purpose | Typical States |
|
|
91
|
+
|-------|---------|----------------|
|
|
92
|
+
| `hover` | Mouse hover in/out | `off`, `on` |
|
|
93
|
+
| `focus` | Keyboard focus | `off`, `on` |
|
|
94
|
+
| `active` | Toggled/checked state | `off`, `on` |
|
|
95
|
+
| `disabled` | Disabled state | `off`, `on` |
|
|
96
|
+
| `time` | Continuous looping | `off`, `on` |
|
|
97
|
+
|
|
98
|
+
Multiple groups animate simultaneously without interfering.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## The `from` Block
|
|
103
|
+
|
|
104
|
+
Controls transition timing. Keys are states being transitioned FROM, or `all` as catch-all.
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
// From any state, animate over 0.2 seconds
|
|
108
|
+
from: {all: Forward {duration: 0.2}}
|
|
109
|
+
|
|
110
|
+
// Instant from any state
|
|
111
|
+
from: {all: Snap}
|
|
112
|
+
|
|
113
|
+
// Different timing depending on origin
|
|
114
|
+
from: {
|
|
115
|
+
all: Forward {duration: 0.1}
|
|
116
|
+
down: Forward {duration: 0.01}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Play Types
|
|
123
|
+
|
|
124
|
+
| Type | Description | Example |
|
|
125
|
+
|------|-------------|---------|
|
|
126
|
+
| `Forward {duration: 0.2}` | One-shot forward | Hover transitions |
|
|
127
|
+
| `Snap` | Instant jump, no animation | Default state initialization |
|
|
128
|
+
| `Loop {duration: 1.0}` | Looping animation | Loading spinners |
|
|
129
|
+
| `ReverseLoop {duration: 1.0}` | Ping-pong loop | Pulsing effects |
|
|
130
|
+
| `BounceLoop {duration: 1.0}` | Bounce back and forth | Bouncing animations |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Ease Functions
|
|
135
|
+
|
|
136
|
+
| Function | Description |
|
|
137
|
+
|----------|-------------|
|
|
138
|
+
| `Linear` | Constant speed |
|
|
139
|
+
| `InQuad` / `OutQuad` / `InOutQuad` | Quadratic easing |
|
|
140
|
+
| `InCubic` / `OutCubic` / `InOutCubic` | Cubic easing |
|
|
141
|
+
| `InQuart` / `OutQuart` / `InOutQuart` | Quartic easing |
|
|
142
|
+
| `InQuint` / `OutQuint` / `InOutQuint` | Quintic easing |
|
|
143
|
+
| `InSine` / `OutSine` / `InOutSine` | Sine easing |
|
|
144
|
+
| `InExp` / `OutExp` / `InOutExp` | Exponential easing |
|
|
145
|
+
| `InCirc` / `OutCirc` / `InOutCirc` | Circular easing |
|
|
146
|
+
| `InElastic` / `OutElastic` / `InOutElastic` | Elastic spring |
|
|
147
|
+
| `InBack` / `OutBack` / `InOutBack` | Overshoot |
|
|
148
|
+
| `InBounce` / `OutBounce` / `InOutBounce` | Bounce |
|
|
149
|
+
|
|
150
|
+
Usage: `ease: OutCubic` in the AnimatorState (optional, defaults to Linear).
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## The `apply` Block
|
|
155
|
+
|
|
156
|
+
Target values to animate TO. Structure mirrors the widget's shader properties.
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
// Animate single properties
|
|
160
|
+
apply: {
|
|
161
|
+
draw_bg: {hover: 1.0}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Animate multiple properties
|
|
165
|
+
apply: {
|
|
166
|
+
draw_bg: {hover: 1.0 color: #f00}
|
|
167
|
+
draw_text: {color: #fff}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**CRITICAL:** Only `instance()` shader variables can be animated. `uniform()` variables cannot.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Complete Hover Button Example
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
use mod.prelude.widgets.*
|
|
179
|
+
|
|
180
|
+
let HoverCard = RoundedView{
|
|
181
|
+
width: Fill height: Fit
|
|
182
|
+
padding: 16
|
|
183
|
+
new_batch: true
|
|
184
|
+
cursor: Hand
|
|
185
|
+
draw_bg +: {
|
|
186
|
+
instance hover: 0.0
|
|
187
|
+
color: mix(#2a2a3d, #3a3a5d, self.hover)
|
|
188
|
+
border_radius: 8.0
|
|
189
|
+
}
|
|
190
|
+
animator: Animator{
|
|
191
|
+
hover: {
|
|
192
|
+
default: @off
|
|
193
|
+
off: AnimatorState{
|
|
194
|
+
from: {all: Forward {duration: 0.15}}
|
|
195
|
+
apply: {draw_bg: {hover: 0.0}}
|
|
196
|
+
}
|
|
197
|
+
on: AnimatorState{
|
|
198
|
+
from: {all: Forward {duration: 0.15}}
|
|
199
|
+
apply: {draw_bg: {hover: 1.0}}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
title := Label{text: "Hover me" draw_text.color: #fff}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Key points:**
|
|
208
|
+
- `new_batch: true` is REQUIRED for hoverable items with backgrounds
|
|
209
|
+
- `cursor: Hand` shows pointer cursor on hover
|
|
210
|
+
- `instance hover: 0.0` declares the animatable variable
|
|
211
|
+
- `mix(color1, color2, self.hover)` interpolates between colors
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Timeline Animation (Keyframes)
|
|
216
|
+
|
|
217
|
+
For multi-step animations use `timeline()`:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
animator: Animator{
|
|
221
|
+
time: {
|
|
222
|
+
default: @off
|
|
223
|
+
on: AnimatorState{
|
|
224
|
+
from: {all: Loop {duration: 2.0}}
|
|
225
|
+
apply: {
|
|
226
|
+
draw_bg: {
|
|
227
|
+
rotation: timeline(){
|
|
228
|
+
snap(0.0)
|
|
229
|
+
snap(6.28)
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Loading Spinner Pattern
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
let Spinner = View{
|
|
244
|
+
width: 40 height: 40
|
|
245
|
+
draw_bg +: {
|
|
246
|
+
instance rotation: 0.0
|
|
247
|
+
pixel: fn() {
|
|
248
|
+
let sdf = Sdf2d.viewport(self.pos * self.rect_size)
|
|
249
|
+
let cx = self.rect_size.x * 0.5
|
|
250
|
+
let cy = self.rect_size.y * 0.5
|
|
251
|
+
let r = min(cx, cy) * 0.8
|
|
252
|
+
sdf.arc(cx, cy, r, self.rotation, self.rotation + 4.5, 3.0)
|
|
253
|
+
sdf.stroke(#4488ff, 2.5)
|
|
254
|
+
return sdf.result
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
animator: Animator{
|
|
258
|
+
time: {
|
|
259
|
+
default: @on
|
|
260
|
+
on: AnimatorState{
|
|
261
|
+
from: {all: Loop {duration: 1.0}}
|
|
262
|
+
apply: {
|
|
263
|
+
draw_bg: {
|
|
264
|
+
rotation: timeline(){
|
|
265
|
+
snap(0.0)
|
|
266
|
+
snap(6.28318)
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Animator vs Vector Tween
|
|
279
|
+
|
|
280
|
+
Makepad has **two separate animation systems**:
|
|
281
|
+
|
|
282
|
+
| Feature | `Animator` (this skill) | `Tween` (see makepad-2.0-vector) |
|
|
283
|
+
|---------|------------------------|----------------------------------|
|
|
284
|
+
| Target | Widget shader `instance` vars | SVG shape properties (fill, cx, opacity...) |
|
|
285
|
+
| Syntax | `animator: Animator{...}` block | Property value: `opacity:Tween{...}` |
|
|
286
|
+
| Triggers | State transitions (hover, focus) | Automatic on render |
|
|
287
|
+
| Loop | `Loop {duration: 1.0}` in `from` | `loop_:true` (bool, NOT string!) |
|
|
288
|
+
| Use for | UI interactions (hover, click) | SVG/Vector graphic animations |
|
|
289
|
+
|
|
290
|
+
**Use Animator for:** Button hover effects, toggle states, loading spinners (shader-based)
|
|
291
|
+
**Use Vector Tween for:** SVG path animations, pulsing indicators, moving dots, color transitions
|
|
292
|
+
|
|
293
|
+
See the `makepad-2.0-vector` skill for Tween details.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Best Practices
|
|
298
|
+
|
|
299
|
+
1. **Always add `new_batch: true`** to Views with backgrounds that have hover animations
|
|
300
|
+
2. **Use `instance` variables** for anything you want to animate
|
|
301
|
+
3. **Match group names** to semantic purposes (hover, focus, active)
|
|
302
|
+
4. **Use Forward for transitions**, Snap for instant state changes
|
|
303
|
+
5. **Set `default: @off`** for states that start inactive
|
|
304
|
+
6. **Label cannot animate** - wrap in View if you need animation on text
|
|
305
|
+
7. **Keep durations short** (0.1-0.3s) for hover, longer (0.5-2.0s) for time-based
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
## Examples
|
|
309
|
+
|
|
310
|
+
```text
|
|
311
|
+
User: Apply this skill to my current task.
|
|
312
|
+
Assistant: Follow the workflow in this skill, cite limitations, and ask before risky steps.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Limitations
|
|
316
|
+
|
|
317
|
+
- Imported upstream skill; verify credentials, permissions, and safety boundaries before execution.
|
|
318
|
+
- Does not replace environment-specific validation, testing, or maintainer review.
|