@zakkster/lite-ui-fx 1.1.0 → 1.3.0
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/CHANGELOG.md +91 -1
- package/README.md +24 -32
- package/UIFXController.js +12 -2
- package/UIFXRecipes.d.ts +253 -0
- package/UIFXRecipes.js +2797 -0
- package/llms.txt +16 -9
- package/package.json +12 -5
- /package/{recipes/UIFX-RECIPE-GUIDE.md → UIFX-RECIPE-GUIDE.md} +0 -0
package/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @zakkster/lite-ui-fx
|
|
2
2
|
> Canvas-hijacked UI components with pluggable recipe system. 50 built-in recipes.
|
|
3
3
|
|
|
4
|
-
VERSION 1.
|
|
4
|
+
VERSION 1.3.0
|
|
5
5
|
|
|
6
6
|
## Install
|
|
7
7
|
npm i @zakkster/lite-ui-fx
|
|
@@ -14,10 +14,15 @@ Recipe = { tick(), init?(), onHover?(), onClick?(), onToggle?(), onDrag?(), dest
|
|
|
14
14
|
## Import -- Controller
|
|
15
15
|
import { mountUIFX, UIType } from '@zakkster/lite-ui-fx';
|
|
16
16
|
|
|
17
|
-
## Import -- Recipes (
|
|
18
|
-
import { SwarmToggle, MagneticButton, SparkSlider } from '
|
|
19
|
-
import { PendulumToggle, HeartbeatButton, AuroraSlider } from '
|
|
20
|
-
import { VolumeKnob, WaterLevel, TimerCountdown } from '
|
|
17
|
+
## Import -- Recipes (one ./recipes subpath, 50 total, tree-shakeable)
|
|
18
|
+
import { SwarmToggle, MagneticButton, SparkSlider } from '@zakkster/lite-ui-fx/recipes';
|
|
19
|
+
import { PendulumToggle, HeartbeatButton, AuroraSlider } from '@zakkster/lite-ui-fx/recipes';
|
|
20
|
+
import { VolumeKnob, WaterLevel, TimerCountdown } from '@zakkster/lite-ui-fx/recipes';
|
|
21
|
+
|
|
22
|
+
## Import -- Recipe registry (data-driven pickers)
|
|
23
|
+
import { RECIPES, RECIPE_META, RECIPE_NAMES, registerRecipe, mountRecipe } from '@zakkster/lite-ui-fx/recipes';
|
|
24
|
+
// RECIPES id->factory (null-proto); RECIPE_META { id, name, type, family, themeable, motionSafe }; RECIPE_NAMES frozen.
|
|
25
|
+
// mountRecipe(container, id, options?): resolves id fail-closed (did-you-mean), asserts META.type, mounts.
|
|
21
26
|
|
|
22
27
|
## Mount
|
|
23
28
|
const instance = mountUIFX(container, UIType.TOGGLE, SwarmToggle, { label: 'Sound' });
|
|
@@ -39,12 +44,12 @@ UIType.SLIDER -> <input type="range"> -> state.val (0-1), onDrag(val, velocity)
|
|
|
39
44
|
|
|
40
45
|
## 50 Built-in Recipes
|
|
41
46
|
|
|
42
|
-
### Vol. 1
|
|
47
|
+
### Vol. 1 -- 10 recipes
|
|
43
48
|
Toggles: SwarmToggle, LiquidToggle, NeonPulseToggle
|
|
44
49
|
Buttons: MagneticButton, ShatterButton, ConfettiButton, GlitchButton
|
|
45
50
|
Sliders: SparkSlider, CosmicSlider, LaserSlider
|
|
46
51
|
|
|
47
|
-
### Vol. 2
|
|
52
|
+
### Vol. 2 -- 20 recipes
|
|
48
53
|
Toggles: PendulumToggle, CircuitToggle, LightningToggle, DNAToggle
|
|
49
54
|
Buttons: HeartbeatButton, BreathingButton, InkSplashButton, PixelDissolveButton, FireworkButton
|
|
50
55
|
Sliders: AuroraSlider, WaveSlider, ElasticBandSlider, GravitySlider
|
|
@@ -53,7 +58,7 @@ Checkboxes: RippleCheck, MorphCheck
|
|
|
53
58
|
Counters: FlameCounter, GlitchCounter
|
|
54
59
|
Rating: BubbleRating
|
|
55
60
|
|
|
56
|
-
### Vol. 3
|
|
61
|
+
### Vol. 3 -- 20 recipes
|
|
57
62
|
Knobs: VolumeKnob, CompassKnob
|
|
58
63
|
Progress: RingProgress, BatteryGauge, SignalMeter
|
|
59
64
|
Controls: PillTabs, Stepper, RadioOrbit
|
|
@@ -74,4 +79,6 @@ See UIFX-RECIPE-GUIDE.md (included in package).
|
|
|
74
79
|
- Ref-counted shared Ticker (one RAF for all components)
|
|
75
80
|
- Safari-safe roundRect polyfill in recipes
|
|
76
81
|
- Accessibility: role=switch, aria-label, keyboard focus tracking
|
|
77
|
-
- Zero-GC in all built-in recipes
|
|
82
|
+
- Zero-GC in all built-in recipes: const colors + globalAlpha, precomputed
|
|
83
|
+
color/label LUTs, fixed preallocated particle pools, gradients built in init.
|
|
84
|
+
Gated per recipe by the t3-frame-alloc torture tier.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zakkster/lite-ui-fx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Canvas-hijacked UI components with a pluggable recipe system. 50 built-in recipes across toggles, buttons, sliders, knobs, loaders, checkboxes, counters, and ratings.",
|
|
5
5
|
"author": "Zahary Shinikchiev <shinikchiev@yahoo.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,13 +12,19 @@
|
|
|
12
12
|
".": {
|
|
13
13
|
"import": "./UIFXController.js",
|
|
14
14
|
"types": "./UIFXController.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./recipes": {
|
|
17
|
+
"import": "./UIFXRecipes.js",
|
|
18
|
+
"types": "./UIFXRecipes.d.ts"
|
|
15
19
|
}
|
|
16
20
|
},
|
|
17
21
|
"files": [
|
|
18
22
|
"UIFXController.js",
|
|
19
23
|
"UIFXController.d.ts",
|
|
24
|
+
"UIFXRecipes.js",
|
|
25
|
+
"UIFXRecipes.d.ts",
|
|
26
|
+
"UIFX-RECIPE-GUIDE.md",
|
|
20
27
|
"llms.txt",
|
|
21
|
-
"recipes/UIFX-RECIPE-GUIDE.md",
|
|
22
28
|
"CHANGELOG.md",
|
|
23
29
|
"README.md",
|
|
24
30
|
"LICENSE"
|
|
@@ -41,14 +47,15 @@
|
|
|
41
47
|
"node": ">=18"
|
|
42
48
|
},
|
|
43
49
|
"dependencies": {
|
|
44
|
-
"@zakkster/lite-ticker": "^1.0.0",
|
|
45
50
|
"@zakkster/lite-lerp": "^1.0.0",
|
|
46
|
-
"@zakkster/lite-random": "^1.0.0"
|
|
51
|
+
"@zakkster/lite-random": "^1.0.0",
|
|
52
|
+
"@zakkster/lite-ticker": "^1.0.0"
|
|
47
53
|
},
|
|
48
54
|
"devDependencies": {
|
|
49
55
|
"@zakkster/lite-gc-profiler": "^1.16.0",
|
|
50
56
|
"@zakkster/lite-leak": "^1.10.0",
|
|
51
|
-
"@zakkster/lite-signal": "^1.5.1"
|
|
57
|
+
"@zakkster/lite-signal": "^1.5.1",
|
|
58
|
+
"esbuild": "^0.28.2"
|
|
52
59
|
},
|
|
53
60
|
"scripts": {
|
|
54
61
|
"test": "node --test test/*.test.mjs",
|
|
File without changes
|