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.
Files changed (185) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +39 -1
  2. package/bundled-skills/api-integration-architect/SKILL.md +241 -0
  3. package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
  4. package/bundled-skills/apify-integration-development/SKILL.md +168 -0
  5. package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
  6. package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
  7. package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
  8. package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
  9. package/bundled-skills/architecture-review/README.md +42 -0
  10. package/bundled-skills/architecture-review/SKILL.md +77 -0
  11. package/bundled-skills/architecture-review/examples.md +11 -0
  12. package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
  13. package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
  14. package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
  15. package/bundled-skills/architecture-review/reference/graph.md +15 -0
  16. package/bundled-skills/architecture-review/reference/mcp.md +14 -0
  17. package/bundled-skills/architecture-review/reference/workflow.md +15 -0
  18. package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
  19. package/bundled-skills/code-review-sensei/SKILL.md +177 -0
  20. package/bundled-skills/codebase-onboarding/README.md +42 -0
  21. package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
  22. package/bundled-skills/codebase-onboarding/examples.md +11 -0
  23. package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
  24. package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
  25. package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
  26. package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
  27. package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
  28. package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
  29. package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
  30. package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
  31. package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
  32. package/bundled-skills/dependency-analysis/README.md +42 -0
  33. package/bundled-skills/dependency-analysis/SKILL.md +76 -0
  34. package/bundled-skills/dependency-analysis/examples.md +11 -0
  35. package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
  36. package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
  37. package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
  38. package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
  39. package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
  40. package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
  41. package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
  42. package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
  43. package/bundled-skills/eas-app-stores/SKILL.md +197 -0
  44. package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
  45. package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
  46. package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
  47. package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
  48. package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
  49. package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
  50. package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
  51. package/bundled-skills/eas-hosting/SKILL.md +448 -0
  52. package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
  53. package/bundled-skills/eas-observe/SKILL.md +75 -0
  54. package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
  55. package/bundled-skills/eas-observe/references/metrics.md +98 -0
  56. package/bundled-skills/eas-observe/references/queries.md +403 -0
  57. package/bundled-skills/eas-observe/references/setup.md +476 -0
  58. package/bundled-skills/eas-observe/references/third-party.md +136 -0
  59. package/bundled-skills/eas-simulator/SKILL.md +251 -0
  60. package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
  61. package/bundled-skills/eas-simulator/references/controllers.md +135 -0
  62. package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
  63. package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
  64. package/bundled-skills/eas-workflows/SKILL.md +119 -0
  65. package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
  66. package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
  67. package/bundled-skills/expo-animation/LICENSE +21 -0
  68. package/bundled-skills/expo-animation/RECIPES.md +385 -0
  69. package/bundled-skills/expo-animation/SKILL.md +295 -0
  70. package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
  71. package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
  72. package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
  73. package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
  74. package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
  75. package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
  76. package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
  77. package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
  78. package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
  79. package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
  80. package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
  81. package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
  82. package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
  83. package/bundled-skills/gpt-taste/SKILL.md +8 -1
  84. package/bundled-skills/hf-cli/SKILL.md +263 -0
  85. package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
  86. package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
  87. package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  88. package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  89. package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  90. package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  91. package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
  92. package/bundled-skills/jev-social/SKILL.md +182 -0
  93. package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
  94. package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
  95. package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
  96. package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
  97. package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
  98. package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
  99. package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
  100. package/bundled-skills/longbridge-quant/SKILL.md +151 -0
  101. package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
  102. package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
  103. package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
  104. package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
  105. package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
  106. package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
  107. package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
  108. package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
  109. package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
  110. package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
  111. package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
  112. package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
  113. package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
  114. package/bundled-skills/longbridge-research/SKILL.md +187 -0
  115. package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
  116. package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
  117. package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
  118. package/bundled-skills/longbridge-research/references/consensus.md +92 -0
  119. package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
  120. package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
  121. package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
  122. package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
  123. package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
  124. package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
  125. package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
  126. package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
  127. package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
  128. package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
  129. package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
  130. package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
  131. package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
  132. package/bundled-skills/longbridge-research/references/investors.md +87 -0
  133. package/bundled-skills/longbridge-research/references/onchain.md +70 -0
  134. package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
  135. package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
  136. package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
  137. package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
  138. package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
  139. package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
  140. package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
  141. package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
  142. package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
  143. package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
  144. package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
  145. package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
  146. package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
  147. package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
  148. package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
  149. package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
  150. package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
  151. package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
  152. package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
  153. package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
  154. package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
  155. package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
  156. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
  157. package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
  158. package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
  159. package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
  160. package/bundled-skills/remotion-captions/SKILL.md +57 -0
  161. package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
  162. package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
  163. package/bundled-skills/remotion-captions/display-captions.md +190 -0
  164. package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
  165. package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
  166. package/bundled-skills/remotion-create/SKILL.md +106 -0
  167. package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
  168. package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
  169. package/bundled-skills/remotion-create/tailwind.md +11 -0
  170. package/bundled-skills/remotion-create/video-layout.md +9 -0
  171. package/bundled-skills/remotion-docs/SKILL.md +67 -0
  172. package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
  173. package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
  174. package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
  175. package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
  176. package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
  177. package/bundled-skills/remotion-render/SKILL.md +48 -0
  178. package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
  179. package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
  180. package/bundled-skills/remotion-render/transparent-videos.md +106 -0
  181. package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
  182. package/bundled-skills/score-eval/SKILL.md +35 -0
  183. package/bundled-skills/writing-guidelines/SKILL.md +60 -0
  184. package/package.json +1 -1
  185. package/skills_index.json +980 -3
@@ -0,0 +1,433 @@
1
+ # Makepad 2.0 Animator Reference
2
+
3
+ ## Overview
4
+
5
+ The Animator system drives `instance()` variables on draw shaders over time, enabling hover effects, transitions, and looping animations. It operates on independent animation tracks called "groups" that run simultaneously without interfering.
6
+
7
+ ---
8
+
9
+ ## Animator Structure
10
+
11
+ ```
12
+ animator: Animator{
13
+ <group_name>: {
14
+ default: @<state_name> // initial state (@ prefix required)
15
+ <state_name>: AnimatorState{
16
+ from: { ... } // transition timing
17
+ ease: <EaseFunction> // optional ease override
18
+ redraw: true // optional: force redraw each frame
19
+ apply: { ... } // target values
20
+ }
21
+ <state_name>: AnimatorState{ ... }
22
+ }
23
+ <group_name>: { ... } // multiple groups allowed
24
+ }
25
+ ```
26
+
27
+ ---
28
+
29
+ ## CRITICAL: Widget Animator Support
30
+
31
+ NOT all widgets have an `animator` field. If you add `animator: Animator{...}` to a widget that doesn't support it, the definition is **silently ignored** -- no error, no hover, nothing happens.
32
+
33
+ ### Widgets that SUPPORT Animator
34
+ `View`, `SolidView`, `RoundedView`, `ScrollXView`, `ScrollYView`, `ScrollXYView`, `Button`, `ButtonFlat`, `ButtonFlatter`, `CheckBox`, `Toggle`, `RadioButton`, `LinkLabel`, `TextInput`
35
+
36
+ ### Widgets that DO NOT Support Animator
37
+ `Label`, `H1`-`H4`, `P`, `TextBox`, `Image`, `Icon`, `Markdown`, `Html`, `Slider`, `DropDown`, `Splitter`, `Hr`, `Filler`
38
+
39
+ ---
40
+
41
+ ## Groups
42
+
43
+ Each group is an independent animation track. Common groups:
44
+ - `hover` -- mouse hover in/out
45
+ - `focus` -- keyboard focus
46
+ - `active` -- toggled/checked state (CheckBox, Toggle, RadioButton)
47
+ - `disabled` -- disabled state
48
+ - `time` -- continuous/looping time-based animation
49
+
50
+ Multiple groups animate simultaneously without interfering with each other.
51
+
52
+ ---
53
+
54
+ ## The `from` Block
55
+
56
+ Controls when and how the transition plays. Keys are state names being transitioned FROM, or `all` as a catch-all.
57
+
58
+ ```
59
+ // From any state, animate over 0.2 seconds
60
+ from: {all: Forward {duration: 0.2}}
61
+
62
+ // Instant from any state
63
+ from: {all: Snap}
64
+
65
+ // Different timing depending on origin state
66
+ from: {
67
+ all: Forward {duration: 0.1} // default
68
+ down: Forward {duration: 0.01} // faster when coming from "down"
69
+ }
70
+ ```
71
+
72
+ ---
73
+
74
+ ## The `apply` Block
75
+
76
+ Target values to animate TO. The structure mirrors the widget's property tree. Keys are the widget's sub-objects (like `draw_bg`, `draw_text`), values are the shader instance variables to animate.
77
+
78
+ ```
79
+ // Animate single properties
80
+ apply: {
81
+ draw_bg: {hover: 1.0}
82
+ draw_text: {hover: 1.0}
83
+ }
84
+
85
+ // Multiple properties in one block
86
+ apply: {
87
+ draw_bg: {down: 1.0, hover: 0.5}
88
+ draw_text: {down: 1.0, hover: 0.5}
89
+ }
90
+
91
+ // Non-draw properties (widget's own fields)
92
+ apply: {
93
+ opened: 1.0
94
+ active: 0.0
95
+ }
96
+ ```
97
+
98
+ ---
99
+
100
+ ## snap() -- Instant Jump
101
+
102
+ Wrapping a value in `snap()` makes it jump instantly instead of interpolating:
103
+
104
+ ```
105
+ apply: {
106
+ draw_bg: {down: snap(1.0), hover: 1.0} // down jumps, hover interpolates
107
+ }
108
+ ```
109
+
110
+ ---
111
+
112
+ ## timeline() -- Keyframes
113
+
114
+ Animate through multiple values over the duration using time/value pairs (times 0.0-1.0):
115
+
116
+ ```
117
+ apply: {
118
+ draw_bg: {anim_time: timeline(0.0 0.0 1.0 1.0)} // linear 0 to 1
119
+ }
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Play Types (Transition Modes)
125
+
126
+ | Type | Syntax | Description |
127
+ |------|--------|-------------|
128
+ | Forward | `Forward {duration: 0.2}` | Play once forward |
129
+ | Snap | `Snap` | Instant, no interpolation |
130
+ | Reverse | `Reverse {duration: 0.2, end: 1.0}` | Play in reverse |
131
+ | Loop | `Loop {duration: 1.0, end: 1000000000.0}` | Repeat forward |
132
+ | ReverseLoop | `ReverseLoop {duration: 1.0, end: 1.0}` | Repeat in reverse |
133
+ | BounceLoop | `BounceLoop {duration: 1.0, end: 1.0}` | Bounce back and forth |
134
+
135
+ ---
136
+
137
+ ## Ease Functions
138
+
139
+ ### Standard Easing
140
+ ```
141
+ Linear // default
142
+ InQuad OutQuad InOutQuad
143
+ InCubic OutCubic InOutCubic
144
+ InQuart OutQuart InOutQuart
145
+ InQuint OutQuint InOutQuint
146
+ InSine OutSine InOutSine
147
+ InExp OutExp InOutExp
148
+ InCirc OutCirc InOutCirc
149
+ InElastic OutElastic InOutElastic
150
+ InBack OutBack InOutBack
151
+ InBounce OutBounce InOutBounce
152
+ ```
153
+
154
+ ### Parametric Easing
155
+ ```
156
+ ExpDecay {d1: 0.82, d2: 0.97, max: 100}
157
+ Pow {begin: 0.0, end: 1.0}
158
+ Bezier {cp0: 0.0, cp1: 0.0, cp2: 1.0, cp3: 1.0}
159
+ ```
160
+
161
+ Usage:
162
+ ```
163
+ off: AnimatorState{
164
+ from: {all: Forward {duration: 0.3}}
165
+ ease: OutCubic
166
+ apply: {draw_bg: {hover: 0.0}}
167
+ }
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Hoverable Label Pattern
173
+
174
+ Label does NOT support Animator. To make hoverable/clickable text, wrap a Label inside a View with animator + cursor.
175
+
176
+ CRITICAL: Always set `new_batch: true` on any View that has `show_bg: true` AND contains text children. Without it, when the hover activates and the background becomes opaque, it covers the text -- making text disappear on hover.
177
+
178
+ ```
179
+ View{
180
+ width: Fill height: Fit
181
+ cursor: MouseCursor.Hand
182
+ new_batch: true
183
+ show_bg: true
184
+ draw_bg +: {
185
+ color: uniform(#0000)
186
+ color_hover: uniform(#fff2)
187
+ hover: instance(0.0)
188
+ pixel: fn(){
189
+ return Pal.premul(self.color.mix(self.color_hover, self.hover))
190
+ }
191
+ }
192
+ animator: Animator{
193
+ hover: {
194
+ default: @off
195
+ off: AnimatorState{
196
+ from: {all: Forward {duration: 0.15}}
197
+ apply: {draw_bg: {hover: 0.0}}
198
+ }
199
+ on: AnimatorState{
200
+ from: {all: Forward {duration: 0.15}}
201
+ apply: {draw_bg: {hover: 1.0}}
202
+ }
203
+ }
204
+ }
205
+ label := Label{text: "hoverable item" draw_text.color: #fff}
206
+ }
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Hoverable List Item Pattern
212
+
213
+ For list items, use `label :=` to declare the inner Label so each instance can override its text:
214
+
215
+ ```
216
+ let HoverItem = View{
217
+ width: Fill height: Fit
218
+ padding: theme.mspace_2
219
+ cursor: MouseCursor.Hand
220
+ new_batch: true
221
+ show_bg: true
222
+ draw_bg +: {
223
+ color: uniform(#0000)
224
+ color_hover: uniform(#fff2)
225
+ hover: instance(0.0)
226
+ pixel: fn(){
227
+ return self.color.mix(self.color_hover, self.hover)
228
+ }
229
+ }
230
+ animator: Animator{
231
+ hover: {
232
+ default: @off
233
+ off: AnimatorState{
234
+ from: {all: Forward {duration: 0.15}}
235
+ apply: {draw_bg: {hover: 0.0}}
236
+ }
237
+ on: AnimatorState{
238
+ from: {all: Forward {duration: 0.15}}
239
+ apply: {draw_bg: {hover: 1.0}}
240
+ }
241
+ }
242
+ }
243
+ label := Label{text: "item" draw_text.color: #fff}
244
+ }
245
+ ```
246
+
247
+ ---
248
+
249
+ ## Complete Button Animator Example
250
+
251
+ This example shows all four standard animation groups (disabled, hover, focus, time) plus a three-state hover group (off/on/down):
252
+
253
+ ```
254
+ animator: Animator{
255
+ disabled: {
256
+ default: @off
257
+ off: AnimatorState{
258
+ from: {all: Forward {duration: 0.}}
259
+ apply: {
260
+ draw_bg: {disabled: 0.0}
261
+ draw_text: {disabled: 0.0}
262
+ }
263
+ }
264
+ on: AnimatorState{
265
+ from: {all: Forward {duration: 0.2}}
266
+ apply: {
267
+ draw_bg: {disabled: 1.0}
268
+ draw_text: {disabled: 1.0}
269
+ }
270
+ }
271
+ }
272
+ hover: {
273
+ default: @off
274
+ off: AnimatorState{
275
+ from: {all: Forward {duration: 0.1}}
276
+ apply: {
277
+ draw_bg: {down: 0.0, hover: 0.0}
278
+ draw_text: {down: 0.0, hover: 0.0}
279
+ }
280
+ }
281
+ on: AnimatorState{
282
+ from: {
283
+ all: Forward {duration: 0.1}
284
+ down: Forward {duration: 0.01}
285
+ }
286
+ apply: {
287
+ draw_bg: {down: 0.0, hover: snap(1.0)}
288
+ draw_text: {down: 0.0, hover: snap(1.0)}
289
+ }
290
+ }
291
+ down: AnimatorState{
292
+ from: {all: Forward {duration: 0.2}}
293
+ apply: {
294
+ draw_bg: {down: snap(1.0), hover: 1.0}
295
+ draw_text: {down: snap(1.0), hover: 1.0}
296
+ }
297
+ }
298
+ }
299
+ focus: {
300
+ default: @off
301
+ off: AnimatorState{
302
+ from: {all: Snap}
303
+ apply: {
304
+ draw_bg: {focus: 0.0}
305
+ draw_text: {focus: 0.0}
306
+ }
307
+ }
308
+ on: AnimatorState{
309
+ from: {all: Snap}
310
+ apply: {
311
+ draw_bg: {focus: 1.0}
312
+ draw_text: {focus: 1.0}
313
+ }
314
+ }
315
+ }
316
+ time: {
317
+ default: @off
318
+ off: AnimatorState{
319
+ from: {all: Forward {duration: 0.}}
320
+ apply: {}
321
+ }
322
+ on: AnimatorState{
323
+ from: {all: Loop {duration: 1.0, end: 1000000000.0}}
324
+ apply: {
325
+ draw_bg: {anim_time: timeline(0.0 0.0 1.0 1.0)}
326
+ }
327
+ }
328
+ }
329
+ }
330
+ ```
331
+
332
+ ---
333
+
334
+ ## Button draw_bg Instance Variables
335
+
336
+ These are per-instance floats driven by the Animator:
337
+ - `hover`, `down`, `focus`, `disabled`
338
+
339
+ Color uniforms (each with `_hover`, `_down`, `_focus`, `_disabled` variants):
340
+ - `color`, `border_color`, `icon_color`
341
+
342
+ ---
343
+
344
+ ## CheckBox/Toggle draw_bg Instance Variables
345
+
346
+ Animator-driven: `hover`, `down`, `focus`, `active`, `disabled`
347
+
348
+ Uniforms: `size`, `border_size`, `border_radius`
349
+
350
+ Color uniforms (each with `_hover`, `_down`, `_active`, `_focus`, `_disabled` variants):
351
+ - `color`, `border_color`, `mark_color`
352
+ - Also: `mark_size`
353
+
354
+ ---
355
+
356
+ ## Rust Struct Setup for Animated Widgets
357
+
358
+ ```rust
359
+ // The widget struct needs Animator derive
360
+ #[derive(Script, ScriptHook, Widget, Animator)]
361
+ pub struct MyAnimatedWidget {
362
+ #[source] source: ScriptObjectRef,
363
+ #[apply_default] animator: Animator,
364
+ #[walk] walk: Walk,
365
+ #[layout] layout: Layout,
366
+ #[redraw] #[live] draw_bg: DrawQuad,
367
+ #[live] draw_text: DrawText,
368
+ }
369
+ ```
370
+
371
+ ---
372
+
373
+ ## Continuous Time Animation
374
+
375
+ Use the `time` group with `Loop` play type for continuous shader animations. Access the animated value in shaders via `self.draw_pass.time` for elapsed time, or use the `anim_time` instance variable driven by `timeline()`.
376
+
377
+ ```
378
+ time: {
379
+ default: @off
380
+ off: AnimatorState{
381
+ from: {all: Forward {duration: 0.}}
382
+ apply: {}
383
+ }
384
+ on: AnimatorState{
385
+ from: {all: Loop {duration: 1.0, end: 1000000000.0}}
386
+ apply: {
387
+ draw_bg: {anim_time: timeline(0.0 0.0 1.0 1.0)}
388
+ }
389
+ }
390
+ }
391
+ ```
392
+
393
+ ---
394
+
395
+ ## Instance vs Uniform for Animation
396
+
397
+ - `instance()` -- per-draw-call value, varies per widget instance, animatable by Animator. Use for: hover, down, focus, active, disabled, per-widget colors, scale/pan.
398
+ - `uniform()` -- shared across all instances of the same shader variant. Cannot be animated. Use for: theme constants, border_size, border_radius, base theme colors.
399
+
400
+ ```
401
+ draw_bg +: {
402
+ hover: instance(0.0) // each button has its own hover state
403
+ color: uniform(theme.color_x) // shared base color for all instances
404
+ color_hover: instance(theme.color_y) // per-instance if color varies
405
+ }
406
+ ```
407
+
408
+ ---
409
+
410
+ ## FoldHeader Animation
411
+
412
+ FoldHeader has a built-in `active` animation group that drives an `opened` float:
413
+
414
+ ```
415
+ FoldHeader{
416
+ body_walk: Walk{...}
417
+ animator: Animator{
418
+ active: {
419
+ default: @on
420
+ off: AnimatorState{
421
+ from: {all: Forward {duration: 0.2}}
422
+ apply: {opened: 0.0}
423
+ }
424
+ on: AnimatorState{
425
+ from: {all: Forward {duration: 0.2}}
426
+ apply: {opened: 1.0}
427
+ }
428
+ }
429
+ }
430
+ header: View{ height: Fit ... }
431
+ body: View{ ... }
432
+ }
433
+ ```