@onetype/framework 2.0.40 → 2.0.42
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/addons/ai/agents/addon.js +23 -0
- package/addons/ai/agents/functions/parse.js +129 -0
- package/addons/ai/agents/item/functions/run.js +218 -0
- package/addons/ai/agents/load.js +8 -0
- package/addons/ai/orchestrator/addon.js +25 -0
- package/addons/ai/orchestrator/item/functions/run.js +277 -0
- package/addons/ai/orchestrator/item/functions/state/agent.js +41 -0
- package/addons/ai/orchestrator/item/functions/state/conclusion.js +27 -0
- package/addons/ai/orchestrator/item/functions/state/done.js +40 -0
- package/addons/ai/orchestrator/item/functions/state/execute.js +16 -0
- package/addons/ai/orchestrator/item/functions/state/goal.js +34 -0
- package/addons/ai/orchestrator/item/functions/state/input.js +55 -0
- package/addons/ai/orchestrator/item/functions/state/summary.js +26 -0
- package/addons/ai/orchestrator/items/agents/achievable.js +37 -0
- package/addons/ai/orchestrator/items/agents/agent.js +46 -0
- package/addons/ai/orchestrator/items/agents/conclusion.js +41 -0
- package/addons/ai/orchestrator/items/agents/done.js +40 -0
- package/addons/ai/orchestrator/items/agents/goal.js +58 -0
- package/addons/ai/orchestrator/items/agents/input.js +34 -0
- package/addons/ai/orchestrator/items/agents/planner.js +30 -0
- package/addons/ai/orchestrator/items/agents/summary.js +29 -0
- package/addons/ai/orchestrator/items/chat.js +10 -0
- package/addons/ai/orchestrator/load.js +25 -0
- package/addons/ai/providers/addon.js +16 -0
- package/addons/ai/providers/functions/default.js +14 -0
- package/addons/ai/providers/item/functions/request.js +62 -0
- package/addons/ai/providers/items/nue.js +98 -0
- package/addons/ai/providers/load.js +10 -0
- package/addons/render/elements/front/functions/runtime.js +25 -0
- package/addons/render/transforms/item/functions/run.js +6 -2
- package/lib/browser.js +1 -24
- package/lib/items/directives/160-slot.js +1 -1
- package/lib/items/directives/500-click-outside.js +43 -43
- package/lib/items/elements/ai/chat/chat.css +710 -0
- package/lib/items/elements/ai/chat/chat.js +429 -0
- package/lib/items/elements/cards/pricing/pricing.css +174 -0
- package/lib/items/elements/{sections → cards}/pricing/pricing.js +30 -11
- package/lib/items/elements/form/button/button.css +250 -0
- package/lib/items/elements/form/button/button.js +15 -20
- package/lib/items/elements/form/checkbox/checkbox.css +109 -0
- package/lib/items/elements/form/checkbox/checkbox.js +58 -54
- package/lib/items/elements/form/color/color.css +128 -0
- package/lib/items/elements/form/color/color.js +100 -0
- package/lib/items/elements/form/date/date.css +84 -0
- package/lib/items/elements/form/date/date.js +69 -0
- package/lib/items/elements/form/field/field.css +33 -57
- package/lib/items/elements/form/field/field.js +4 -4
- package/lib/items/elements/form/input/input.css +59 -84
- package/lib/items/elements/form/input/input.js +84 -75
- package/lib/items/elements/form/radio/radio.css +118 -0
- package/lib/items/elements/form/radio/radio.js +58 -54
- package/lib/items/elements/form/rating/rating.css +28 -66
- package/lib/items/elements/form/rating/rating.js +17 -21
- package/lib/items/elements/form/section/section.css +30 -73
- package/lib/items/elements/form/section/section.js +5 -5
- package/lib/items/elements/form/select/select.css +186 -0
- package/lib/items/elements/form/select/select.js +165 -0
- package/lib/items/elements/form/slider/slider.css +55 -176
- package/lib/items/elements/form/slider/slider.js +14 -10
- package/lib/items/elements/form/tags/tags.css +152 -0
- package/lib/items/elements/form/tags/tags.js +166 -0
- package/lib/items/elements/form/textarea/textarea.css +55 -92
- package/lib/items/elements/form/textarea/textarea.js +74 -66
- package/lib/items/elements/form/toggle/toggle.css +101 -0
- package/lib/items/elements/form/toggle/toggle.js +67 -0
- package/lib/items/elements/global/code/code.css +39 -8
- package/lib/items/elements/global/code/code.js +7 -2
- package/lib/items/elements/global/faq/faq.css +38 -16
- package/lib/items/elements/global/faq/faq.js +14 -2
- package/lib/items/elements/global/heading/heading.css +37 -14
- package/lib/items/elements/global/heading/heading.js +9 -4
- package/lib/items/elements/global/markdown/markdown.css +22 -15
- package/lib/items/elements/global/markdown/markdown.js +4 -4
- package/lib/items/elements/global/menu/menu.css +173 -0
- package/lib/items/elements/global/menu/menu.js +103 -0
- package/lib/items/elements/global/notice/notice.css +27 -61
- package/lib/items/elements/global/notice/notice.js +4 -4
- package/lib/items/elements/global/parameters/parameters.css +33 -14
- package/lib/items/elements/global/parameters/parameters.js +15 -6
- package/lib/items/elements/global/tags/tags.css +18 -5
- package/lib/items/elements/global/tags/tags.js +10 -2
- package/lib/items/elements/navigation/navbar/navbar.css +39 -17
- package/lib/items/elements/navigation/navbar/navbar.js +19 -9
- package/lib/items/elements/navigation/sidebar/sidebar.css +25 -39
- package/lib/items/elements/navigation/sidebar/sidebar.js +28 -6
- package/lib/items/elements/navigation/tabs/tabs.css +35 -16
- package/lib/items/elements/navigation/tabs/tabs.js +16 -2
- package/lib/items/elements/status/code/code.css +21 -12
- package/lib/items/elements/status/empty/empty.css +22 -17
- package/lib/items/elements/status/empty/empty.js +1 -1
- package/lib/items/elements/status/error/error.css +22 -12
- package/lib/items/elements/status/error/error.js +1 -1
- package/lib/items/elements/status/loading/loading.css +24 -14
- package/lib/items/elements/status/loading/loading.js +4 -4
- package/lib/load.js +14 -6
- package/lib/styles/reset.css +1 -1
- package/lists.md +586 -0
- package/orchestrator.md +288 -0
- package/package.json +9 -3
- package/lib/items/elements/form/button/styles/base.css +0 -176
- package/lib/items/elements/form/button/styles/sizes.css +0 -78
- package/lib/items/elements/form/button/styles/variants.css +0 -421
- package/lib/items/elements/form/checkbox/styles/base.css +0 -52
- package/lib/items/elements/form/checkbox/styles/sizes.css +0 -39
- package/lib/items/elements/form/checkbox/styles/variants.css +0 -121
- package/lib/items/elements/form/input/styles/base.css +0 -26
- package/lib/items/elements/form/input/styles/sizes.css +0 -15
- package/lib/items/elements/form/input/styles/variants.css +0 -98
- package/lib/items/elements/form/radio/styles/base.css +0 -48
- package/lib/items/elements/form/radio/styles/sizes.css +0 -36
- package/lib/items/elements/form/radio/styles/variants.css +0 -121
- package/lib/items/elements/global/card/card.css +0 -57
- package/lib/items/elements/global/card/card.js +0 -48
- package/lib/items/elements/sections/footer/footer.css +0 -205
- package/lib/items/elements/sections/footer/footer.js +0 -109
- package/lib/items/elements/sections/hero/hero.css +0 -100
- package/lib/items/elements/sections/hero/hero.js +0 -54
- package/lib/items/elements/sections/pricing/pricing.css +0 -148
- package/lib/items/elements/sections/stats/stats.css +0 -34
- package/lib/items/elements/sections/stats/stats.js +0 -74
package/lib/load.js
CHANGED
|
@@ -29,38 +29,46 @@ onetype.Assets('elements', import.meta.url, { js: '../addons/render/elements/fro
|
|
|
29
29
|
/* Float */
|
|
30
30
|
onetype.Assets('float', import.meta.url, { js: '../addons/float', css: '../addons/float' });
|
|
31
31
|
|
|
32
|
+
/* AI */
|
|
33
|
+
onetype.Assets('ai', import.meta.url, { js: '../addons/ai' });
|
|
34
|
+
|
|
32
35
|
/* Elements — Form */
|
|
33
36
|
onetype.Assets('elements/form/button', import.meta.url, { js: 'items/elements/form/button', css: 'items/elements/form/button' });
|
|
34
37
|
onetype.Assets('elements/form/checkbox', import.meta.url, { js: 'items/elements/form/checkbox', css: 'items/elements/form/checkbox' });
|
|
38
|
+
onetype.Assets('elements/form/color', import.meta.url, { js: 'items/elements/form/color', css: 'items/elements/form/color' });
|
|
39
|
+
onetype.Assets('elements/form/date', import.meta.url, { js: 'items/elements/form/date', css: 'items/elements/form/date' });
|
|
35
40
|
onetype.Assets('elements/form/field', import.meta.url, { js: 'items/elements/form/field', css: 'items/elements/form/field' });
|
|
36
41
|
onetype.Assets('elements/form/input', import.meta.url, { js: 'items/elements/form/input', css: 'items/elements/form/input' });
|
|
37
42
|
onetype.Assets('elements/form/radio', import.meta.url, { js: 'items/elements/form/radio', css: 'items/elements/form/radio' });
|
|
38
43
|
onetype.Assets('elements/form/rating', import.meta.url, { js: 'items/elements/form/rating', css: 'items/elements/form/rating' });
|
|
39
44
|
onetype.Assets('elements/form/section', import.meta.url, { js: 'items/elements/form/section', css: 'items/elements/form/section' });
|
|
45
|
+
onetype.Assets('elements/form/select', import.meta.url, { js: 'items/elements/form/select', css: 'items/elements/form/select' });
|
|
40
46
|
onetype.Assets('elements/form/slider', import.meta.url, { js: 'items/elements/form/slider', css: 'items/elements/form/slider' });
|
|
47
|
+
onetype.Assets('elements/form/tags', import.meta.url, { js: 'items/elements/form/tags', css: 'items/elements/form/tags' });
|
|
41
48
|
onetype.Assets('elements/form/textarea', import.meta.url, { js: 'items/elements/form/textarea', css: 'items/elements/form/textarea' });
|
|
49
|
+
onetype.Assets('elements/form/toggle', import.meta.url, { js: 'items/elements/form/toggle', css: 'items/elements/form/toggle' });
|
|
42
50
|
|
|
43
51
|
/* Elements — Global */
|
|
44
|
-
onetype.Assets('elements/global/card', import.meta.url, { js: 'items/elements/global/card', css: 'items/elements/global/card' });
|
|
45
52
|
onetype.Assets('elements/global/code', import.meta.url, { js: 'items/elements/global/code', css: 'items/elements/global/code' });
|
|
46
53
|
onetype.Assets('elements/global/faq', import.meta.url, { js: 'items/elements/global/faq', css: 'items/elements/global/faq' });
|
|
47
54
|
onetype.Assets('elements/global/heading', import.meta.url, { js: 'items/elements/global/heading', css: 'items/elements/global/heading' });
|
|
48
55
|
onetype.Assets('elements/global/markdown', import.meta.url, { js: 'items/elements/global/markdown', css: 'items/elements/global/markdown' });
|
|
56
|
+
onetype.Assets('elements/global/menu', import.meta.url, { js: 'items/elements/global/menu', css: 'items/elements/global/menu' });
|
|
49
57
|
onetype.Assets('elements/global/notice', import.meta.url, { js: 'items/elements/global/notice', css: 'items/elements/global/notice' });
|
|
50
58
|
onetype.Assets('elements/global/parameters', import.meta.url, { js: 'items/elements/global/parameters', css: 'items/elements/global/parameters' });
|
|
51
59
|
onetype.Assets('elements/global/tags', import.meta.url, { js: 'items/elements/global/tags', css: 'items/elements/global/tags' });
|
|
52
60
|
|
|
53
|
-
/* Elements —
|
|
54
|
-
onetype.Assets('elements/
|
|
55
|
-
onetype.Assets('elements/sections/hero', import.meta.url, { js: 'items/elements/sections/hero', css: 'items/elements/sections/hero' });
|
|
56
|
-
onetype.Assets('elements/sections/stats', import.meta.url, { js: 'items/elements/sections/stats', css: 'items/elements/sections/stats' });
|
|
57
|
-
onetype.Assets('elements/sections/pricing', import.meta.url, { js: 'items/elements/sections/pricing', css: 'items/elements/sections/pricing' });
|
|
61
|
+
/* Elements — Cards */
|
|
62
|
+
onetype.Assets('elements/cards/pricing', import.meta.url, { js: 'items/elements/cards/pricing', css: 'items/elements/cards/pricing' });
|
|
58
63
|
|
|
59
64
|
/* Elements — Navigation */
|
|
60
65
|
onetype.Assets('elements/navigation/navbar', import.meta.url, { js: 'items/elements/navigation/navbar', css: 'items/elements/navigation/navbar' });
|
|
61
66
|
onetype.Assets('elements/navigation/sidebar', import.meta.url, { js: 'items/elements/navigation/sidebar', css: 'items/elements/navigation/sidebar' });
|
|
62
67
|
onetype.Assets('elements/navigation/tabs', import.meta.url, { js: 'items/elements/navigation/tabs', css: 'items/elements/navigation/tabs' });
|
|
63
68
|
|
|
69
|
+
/* Elements — AI */
|
|
70
|
+
onetype.Assets('elements/ai/chat', import.meta.url, { js: 'items/elements/ai/chat', css: 'items/elements/ai/chat' });
|
|
71
|
+
|
|
64
72
|
/* Elements — Status */
|
|
65
73
|
onetype.Assets('elements/status/loading', import.meta.url, { js: 'items/elements/status/loading', css: 'items/elements/status/loading' });
|
|
66
74
|
onetype.Assets('elements/status/empty', import.meta.url, { js: 'items/elements/status/empty', css: 'items/elements/status/empty' });
|
package/lib/styles/reset.css
CHANGED
|
@@ -142,7 +142,7 @@ i
|
|
|
142
142
|
white-space: nowrap;
|
|
143
143
|
word-wrap: normal;
|
|
144
144
|
direction: ltr;
|
|
145
|
-
color:
|
|
145
|
+
color: inherit;
|
|
146
146
|
-webkit-font-feature-settings: 'liga';
|
|
147
147
|
-webkit-font-smoothing: antialiased;
|
|
148
148
|
font-variation-settings: "FILL" 0, "wght" 100, "GRAD" 0, "opsz" 20;
|
package/lists.md
ADDED
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
# OneType Transforms - Master List
|
|
2
|
+
|
|
3
|
+
Total: 74 transforms (24 completed, 50 planned)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Completed
|
|
8
|
+
|
|
9
|
+
| # | ID | Category | Tier | Deps |
|
|
10
|
+
|---|-----|----------|------|------|
|
|
11
|
+
| 1 | accordion | Navigation | Free | - |
|
|
12
|
+
| 2 | anime | Animation | Pro | anime.js |
|
|
13
|
+
| 3 | before-after | Interaction | Free | - |
|
|
14
|
+
| 4 | count-up | Animation | Pro | countup.js |
|
|
15
|
+
| 5 | cursor | Interaction | Pro | - |
|
|
16
|
+
| 6 | horizontal-scroll | Layout | Pro | - |
|
|
17
|
+
| 7 | leaflet | Data | Pro | leaflet |
|
|
18
|
+
| 8 | lightbox | Media | Pro | - |
|
|
19
|
+
| 9 | lottie | Media | Pro | lottie-web |
|
|
20
|
+
| 10 | magnetic | Interaction | Free | - |
|
|
21
|
+
| 11 | marquee | Animation | Free | - |
|
|
22
|
+
| 12 | morph | Animation | Free | flubber |
|
|
23
|
+
| 13 | orbit | Animation | Free | - |
|
|
24
|
+
| 14 | particles | Animation | Pro | particles.js |
|
|
25
|
+
| 15 | ripple | Interaction | Free | - |
|
|
26
|
+
| 16 | scramble | Text | Free | - |
|
|
27
|
+
| 17 | signature | Media | Pro | signature_pad |
|
|
28
|
+
| 18 | split | Text | Free | - |
|
|
29
|
+
| 19 | spotlight | Interaction | Free | - |
|
|
30
|
+
| 20 | swiper | Layout | Pro | swiper |
|
|
31
|
+
| 21 | tabs | Navigation | Free | - |
|
|
32
|
+
| 22 | tilt | Interaction | Free | - |
|
|
33
|
+
| 23 | toc | Navigation | Free | - |
|
|
34
|
+
| 24 | typewriter | Text | Free | - |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Planned
|
|
39
|
+
|
|
40
|
+
### 1. scroll-reveal
|
|
41
|
+
|
|
42
|
+
- **Category:** Animation
|
|
43
|
+
- **Tier:** Free
|
|
44
|
+
- **Deps:** None
|
|
45
|
+
- **Completed:** No
|
|
46
|
+
|
|
47
|
+
Elements animate into view on scroll - fade, slide, zoom, or flip - with optional stagger for groups of children. Uses IntersectionObserver for zero-cost idle performance. Supports per-element animation type via attribute, per-group stagger via parent, and once-only or repeat triggers. The single most requested effect across all no-code platforms. Covers the most common scroll animation patterns: cards fading up, stats sliding in, hero sections zooming. CSS classes drive animations keeping JS minimal and everything GPU-accelerated via transform and opacity.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### 2. text-reveal
|
|
52
|
+
|
|
53
|
+
- **Category:** Text
|
|
54
|
+
- **Tier:** Pro
|
|
55
|
+
- **Deps:** None
|
|
56
|
+
- **Completed:** No
|
|
57
|
+
|
|
58
|
+
Scroll-driven text reveal where content starts dim and fills with color as it enters the viewport. Each word, character, or line progressively transitions from muted to full opacity/color as the user scrolls - the signature Apple-style reading experience. Uses IntersectionObserver with scroll progress tracking to map scroll position to individual element opacity. Splits text into spans (word, character, or line mode), calculates scroll progress through the element, and maps that to each span's index with stagger offset. Word-level splitting is the default for the classic Apple feel.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### 3. parallax
|
|
63
|
+
|
|
64
|
+
- **Category:** Animation
|
|
65
|
+
- **Tier:** Free
|
|
66
|
+
- **Deps:** None
|
|
67
|
+
- **Completed:** No
|
|
68
|
+
|
|
69
|
+
Multi-layer depth effect where elements scroll at different speeds relative to the viewport. Each element gets a speed multiplier - negative values scroll slower (background feel), positive values scroll faster (foreground feel). Uses transform translate3d on a requestAnimationFrame loop for GPU-accelerated 60fps rendering. Respects prefers-reduced-motion and disables on mobile by default where parallax causes vestibular issues. The timeless scroll effect used on nearly every award-winning website. Simple to configure, dramatic visual impact.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### 4. stack
|
|
74
|
+
|
|
75
|
+
- **Category:** Animation
|
|
76
|
+
- **Tier:** Pro
|
|
77
|
+
- **Deps:** None
|
|
78
|
+
- **Completed:** No
|
|
79
|
+
|
|
80
|
+
Cards stack on top of each other as the user scrolls using CSS position sticky. Each card pins to the viewport and overlaps the previous one. As a card becomes covered it scales down slightly and gains shadow depth, creating a layered deck effect. Pure CSS sticky handles the pinning while a lightweight scroll listener applies progressive scale and shadow to buried cards. Works with 3-8 cards practically. One of the most cloned effects on Webflow with 343+ clones on the top cloneable alone.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### 5. smooth-scroll
|
|
85
|
+
|
|
86
|
+
- **Category:** Utility
|
|
87
|
+
- **Tier:** Free
|
|
88
|
+
- **Deps:** lenis
|
|
89
|
+
- **Completed:** No
|
|
90
|
+
|
|
91
|
+
Applies Lenis-style momentum-based smooth scrolling to the page. Intercepts native wheel and touch events, applies linear interpolation between current and target scroll positions on each frame, producing a buttery deceleration curve. Works with native scroll position so IntersectionObserver, anchor links, and scroll-based animations remain compatible. Lenis is the industry standard at ~2KB gzipped, MIT license, actively maintained. Does not create a virtual scroll container. Nearly every award-winning website uses this effect as the foundation for all other scroll animations.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### 6. page-transition
|
|
96
|
+
|
|
97
|
+
- **Category:** Navigation
|
|
98
|
+
- **Tier:** Pro
|
|
99
|
+
- **Deps:** None
|
|
100
|
+
- **Completed:** No
|
|
101
|
+
|
|
102
|
+
Smooth animated transitions between pages without full browser reloads. Intercepts link clicks, fetches the target page in the background, plays an exit animation on current content, swaps the DOM, then plays an entry animation while updating browser history. Supports fade crossfade, directional slide, curtain wipe, circle reveal, and pixel dissolve. Handles back/forward, scroll position restoration, and link prefetching on hover. Excludes external links and anchors automatically. The biggest feature request on the Webflow wishlist and a defining trait of Awwwards-winning sites.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### 7. pricing-toggle
|
|
107
|
+
|
|
108
|
+
- **Category:** Utility
|
|
109
|
+
- **Tier:** Free
|
|
110
|
+
- **Deps:** None
|
|
111
|
+
- **Completed:** No
|
|
112
|
+
|
|
113
|
+
Pricing toggle that switches displayed prices between billing intervals like monthly and yearly. Users place a toggle control alongside pricing cards containing price elements with data attributes for each interval. Clicking the toggle animates between values, updates visible prices, and optionally shows a discount badge. Works with any HTML structure - the toggle and price elements are linked through data attributes, not DOM hierarchy. Every SaaS website needs this. 42 pricing cloneables exist on Webflow just for this pattern.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### 8. countdown
|
|
118
|
+
|
|
119
|
+
- **Category:** Data
|
|
120
|
+
- **Tier:** Pro
|
|
121
|
+
- **Deps:** None
|
|
122
|
+
- **Completed:** No
|
|
123
|
+
|
|
124
|
+
Countdown timer displaying remaining time until a target date. Supports simple digit display and optional flip-clock animation where cards physically flip to reveal new numbers. Handles timezone differences via UTC calculation and fires a configurable action at zero - hide the element, show a message, or redirect. Displays days, hours, minutes, and seconds with customizable labels. Always computes remaining time from live Date diff to avoid drift. Multiple paid Webflow apps exist just for this functionality. High commercial value for launches and sales.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### 9. scroll-progress
|
|
129
|
+
|
|
130
|
+
- **Category:** Utility
|
|
131
|
+
- **Tier:** Free
|
|
132
|
+
- **Deps:** None
|
|
133
|
+
- **Completed:** No
|
|
134
|
+
|
|
135
|
+
Visual reading progress indicator that fills as the user scrolls. Supports a horizontal bar fixed to top or bottom of the page, or a circular SVG indicator fixed in a corner. Uses a scroll event listener with requestAnimationFrame throttling for smooth updates. The bar variant uses transform scaleX for GPU-accelerated rendering. The circle variant uses the classic stroke-dasharray/dashoffset technique. Perfect for blog posts, documentation, and long-form content. Mentioned by 10+ research agents as a universally requested feature.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 10. gradient
|
|
140
|
+
|
|
141
|
+
- **Category:** Animation
|
|
142
|
+
- **Tier:** Pro
|
|
143
|
+
- **Deps:** None
|
|
144
|
+
- **Completed:** No
|
|
145
|
+
|
|
146
|
+
Animated gradient backgrounds with three variants - mesh (Stripe-style flowing color blend), aurora (soft blurred orbs with hue shifts), and orbs (distinct glowing circles that float and pulse). Pure CSS approach using absolutely-positioned blurred div elements with keyframe animations. No WebGL needed. Colors applied as background on each orb with filter blur for soft blending. Mesh variant stacks radial-gradient layers and animates background-position. Aurora adds hue-rotate per layer. Matches how Stripe and Linear implement their famous gradient effects.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### 11. noise
|
|
151
|
+
|
|
152
|
+
- **Category:** Utility
|
|
153
|
+
- **Tier:** Free
|
|
154
|
+
- **Deps:** None
|
|
155
|
+
- **Completed:** No
|
|
156
|
+
|
|
157
|
+
Film grain and noise texture overlay using SVG feTurbulence filter. Adds organic texture to any element - static grain for subtle depth or animated grain that cycles through random seeds for a film-camera feel. Renders as a pseudo-element overlay with pointer-events none so it never blocks interaction. Supports CSS blend modes for creative layering. The filter uses fractalNoise type with configurable baseFrequency for grain fineness. Animated mode cycles the seed attribute at 12fps for film cadence. Premium aesthetic used by Apple, Linear, and Raycast.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### 12. draw-svg
|
|
162
|
+
|
|
163
|
+
- **Category:** Animation
|
|
164
|
+
- **Tier:** Pro
|
|
165
|
+
- **Deps:** None
|
|
166
|
+
- **Completed:** No
|
|
167
|
+
|
|
168
|
+
Animates SVG stroke paths using the stroke-dasharray/dashoffset technique. Each path, line, circle, polyline, polygon, rect, and ellipse's total length is measured via getTotalLength(), then the stroke animates from fully hidden to fully drawn. Supports scroll-triggered drawing synced to scroll position or load-triggered one-shot animation. Multiple paths stagger for sequential reveal. Perfect for logo animations, illustrations, diagrams, and decorative line work. 5,487 views on the Framer marketplace for SVG reveal components alone.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### 13. masonry
|
|
173
|
+
|
|
174
|
+
- **Category:** Layout
|
|
175
|
+
- **Tier:** Pro
|
|
176
|
+
- **Deps:** minimasonry
|
|
177
|
+
- **Completed:** No
|
|
178
|
+
|
|
179
|
+
Pinterest-style cascading grid layout that positions variable-height items into columns with no vertical gaps. Items fill the shortest column first creating a dense, visually balanced layout. Uses MiniMasonry.js (~3KB) for GPU-accelerated CSS transform positioning with automatic responsive column counts based on container width. On Webflow's official wishlist with no native solution available. Handles responsive breakpoints automatically, repositions on resize, and supports dynamic content via layout() method. Essential for image galleries, card grids, and portfolios.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### 14. tooltip
|
|
184
|
+
|
|
185
|
+
- **Category:** Utility
|
|
186
|
+
- **Tier:** Free
|
|
187
|
+
- **Deps:** @floating-ui/dom
|
|
188
|
+
- **Completed:** No
|
|
189
|
+
|
|
190
|
+
Positioned tooltip that appears on hover or click, auto-repositioning to stay within the viewport. Uses Floating UI (~2.5KB gzipped) for collision-aware positioning with arrow support. Handles all 12 placements, flips when clipped, shifts along edges, and animates in/out with CSS transitions. Accessible via aria-describedby and keyboard focus/blur. No native tooltip solution exists in Webflow or Framer. Universally needed across every type of website for help text, definitions, and supplementary information.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### 15. modal
|
|
195
|
+
|
|
196
|
+
- **Category:** Utility
|
|
197
|
+
- **Tier:** Free
|
|
198
|
+
- **Deps:** None
|
|
199
|
+
- **Completed:** No
|
|
200
|
+
|
|
201
|
+
Accessible popup dialog built on the native HTML dialog element with showModal(). Gets focus management, backdrop, ESC key, and inert background for free from the browser. Adds scroll locking, CSS enter/exit animations (fade, scale, slide), close-on-backdrop click, and proper focus restoration. Finsweet built a dedicated modal attribute for Webflow because it's such a common need. No heavy library required - the native dialog API handles the hard accessibility work while the transform adds polish and animation.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### 16. glitch
|
|
206
|
+
|
|
207
|
+
- **Category:** Animation
|
|
208
|
+
- **Tier:** Free
|
|
209
|
+
- **Deps:** None
|
|
210
|
+
- **Completed:** No
|
|
211
|
+
|
|
212
|
+
RGB channel splitting, scan lines, and noise distortion applied to text or images. Uses CSS-only pseudo-elements with animated clip-path for zero-dependency performance. Two before/after layers duplicate the content with opposing color shifts and random horizontal band clipping creating chromatic aberration and digital corruption. For text, content attr(data-text) clones into pseudo-layers. Trigger modes control constant, hover, or interval playback. Dynamically generated clip-path keyframes provide randomized distortion patterns. Trending cyberpunk aesthetic popular on tech and creative sites.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
### 17. circular-text
|
|
217
|
+
|
|
218
|
+
- **Category:** Text
|
|
219
|
+
- **Tier:** Free
|
|
220
|
+
- **Deps:** None
|
|
221
|
+
- **Completed:** No
|
|
222
|
+
|
|
223
|
+
Arranges text characters in a circular path with optional continuous rotation. Uses SVG textPath approach - an invisible circular path is generated, text is placed on it via textPath, and CSS animation handles rotation. Scales responsively via viewBox. Speed of zero produces static text, any value sets seconds per revolution. Direction controls clockwise vs counter-clockwise. Trending heavily for badges, decorative elements, CTAs, and hero sections. No native support in any no-code builder makes this a unique offering.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### 18. confetti
|
|
228
|
+
|
|
229
|
+
- **Category:** Animation
|
|
230
|
+
- **Tier:** Free
|
|
231
|
+
- **Deps:** canvas-confetti
|
|
232
|
+
- **Completed:** No
|
|
233
|
+
|
|
234
|
+
Celebration particle burst with configurable physics. Uses canvas-confetti (~6KB gzipped) - the industry standard with 6M+ weekly npm downloads. Supports square, circle, and star particle shapes, custom colors, gravity, spread angle, velocity decay, and drift. Trigger modes: click, scroll into view, or auto on load. The library handles its own canvas creation and cleanup, returns promises for chaining, and supports disableForReducedMotion for accessibility. Perfect for success states, form completions, product launches, and celebratory CTAs.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### 19. image-trail
|
|
239
|
+
|
|
240
|
+
- **Category:** Interaction
|
|
241
|
+
- **Tier:** Pro
|
|
242
|
+
- **Deps:** None
|
|
243
|
+
- **Completed:** No
|
|
244
|
+
|
|
245
|
+
Images follow the cursor leaving a fading trail as you move across a container. Child img elements form a pool that cycles through on mouse movement. Each image activates at the cursor position, scales in, then fades and scales out after a configurable lifespan. Uses a circular index and distance threshold to avoid flooding. Random rotation scales with cursor speed for dynamic feel. GPU-composited via will-change transform. The signature portfolio-site effect seen on creative agencies and Awwwards winners. High wow factor.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
### 20. shimmer
|
|
250
|
+
|
|
251
|
+
- **Category:** Text
|
|
252
|
+
- **Tier:** Free
|
|
253
|
+
- **Deps:** None
|
|
254
|
+
- **Completed:** No
|
|
255
|
+
|
|
256
|
+
Animated light sweep across text creating a metallic shine or glint effect. A gradient highlight moves across the text surface on a continuous loop or on hover. Achieved entirely with CSS using background-clip text and animated background-position on a linear gradient containing a bright highlight band. Pure CSS approach - no JS needed beyond initial setup. The angle is controlled by gradient direction. GPU-composited, no repaints, no layout thrashing. Perfect for hero headlines, CTAs, and premium text treatments on SaaS landing pages.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
### 21. scroll-snap
|
|
261
|
+
|
|
262
|
+
- **Category:** Utility
|
|
263
|
+
- **Tier:** Pro
|
|
264
|
+
- **Deps:** None
|
|
265
|
+
- **Completed:** No
|
|
266
|
+
|
|
267
|
+
Full-page section snapping that turns a container into a smooth section-by-section scroll experience. Built on CSS scroll-snap-type for native 60fps performance with a thin JS layer for dot navigation and active section tracking. Optional keyboard arrow support and programmatic scroll-to-section. Uses scrollsnapchange event with IntersectionObserver fallback for older browsers. A replacement for fullpage.js without the 50KB+ weight, commercial license, or scroll hijacking. Ideal for landing pages, portfolios, and presentations.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
### 22. flip
|
|
272
|
+
|
|
273
|
+
- **Category:** Interaction
|
|
274
|
+
- **Tier:** Free
|
|
275
|
+
- **Deps:** None
|
|
276
|
+
- **Completed:** No
|
|
277
|
+
|
|
278
|
+
3D card flip revealing back-face content on hover or click. Uses CSS perspective on the container, transform-style preserve-3d on the card wrapper, and backface-visibility hidden on both faces. Front and back are absolutely positioned children - the back is pre-rotated 180deg. Toggling a class applies rotateY or rotateX depending on direction config. Pure CSS transitions handle the animation. The transform automatically parses existing children as front/back content and wraps them in the 3D structure. Perennially popular on CodePen and Webflow.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
### 23. scroll-video
|
|
283
|
+
|
|
284
|
+
- **Category:** Media
|
|
285
|
+
- **Tier:** Pro
|
|
286
|
+
- **Deps:** None
|
|
287
|
+
- **Completed:** No
|
|
288
|
+
|
|
289
|
+
Ties video playback to scroll position using image sequence on canvas. Users provide a URL pattern with frame index placeholder and total count. Pre-loaded frames are drawn to canvas based on scroll progress through a sticky container. Frame-perfect accuracy with consistent cross-browser behavior - no codec seeking issues. Bidirectional scrubbing works equally smooth forward and reverse. This is how Apple builds their product pages (AirPods, MacBook). The element pins in viewport while a tall scroll container controls playback. 157 Webflow wishlist votes.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
### 24. sticky-section
|
|
294
|
+
|
|
295
|
+
- **Category:** Layout
|
|
296
|
+
- **Tier:** Pro
|
|
297
|
+
- **Deps:** None
|
|
298
|
+
- **Completed:** No
|
|
299
|
+
|
|
300
|
+
Two-column layout where one side stays pinned while the other scrolls through content steps. As each step enters the viewport, the pinned side swaps its media with crossfade, scale, or slide transitions. Uses CSS position sticky for the pinning and IntersectionObserver for step detection - no scroll event listeners. The classic scrollytelling pattern used by Apple, Stripe, and The Pudding for product feature showcases. Collapses to stacked layout on mobile automatically. High-value storytelling component for SaaS landing pages.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### 25. filter
|
|
305
|
+
|
|
306
|
+
- **Category:** Utility
|
|
307
|
+
- **Tier:** Pro
|
|
308
|
+
- **Deps:** mixitup
|
|
309
|
+
- **Completed:** No
|
|
310
|
+
|
|
311
|
+
Filterable and sortable grid with animated transitions between states. Users click category buttons to show/hide items with smooth fade, scale, and transform animations. Uses MixItUp 3 (~7KB gzipped, Apache 2.0 license). Items animate out, reposition, and new items animate in - all GPU-accelerated. Supports single/toggle filter modes, custom sort orders, and configurable animation effects. Filter buttons use data-filter attributes with CSS selectors. Finsweet's most popular attribute and the most-discussed feature in Webflow forums.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
### 26. holo-card
|
|
316
|
+
|
|
317
|
+
- **Category:** Interaction
|
|
318
|
+
- **Tier:** Pro
|
|
319
|
+
- **Deps:** None
|
|
320
|
+
- **Completed:** No
|
|
321
|
+
|
|
322
|
+
Holographic card combining tilt with an iridescent rainbow gradient that shifts with mouse position. A rainbow gradient layer with spectral color stops uses mix-blend-mode color-dodge and is repositioned via CSS custom properties on mousemove. A separate glare layer with radial gradient white highlight follows the cursor for light-reflection shine. Tilt applied via perspective rotateX rotateY. The most-hearted effect on CodePen of all time. Self-contained with built-in tilt, no dependency on the tilt transform.
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
### 27. glow
|
|
327
|
+
|
|
328
|
+
- **Category:** Interaction
|
|
329
|
+
- **Tier:** Free
|
|
330
|
+
- **Deps:** None
|
|
331
|
+
- **Completed:** No
|
|
332
|
+
|
|
333
|
+
Animated gradient border and neon glow effect on hover or constant. A pseudo-element border renders an animated conic or linear gradient that rotates around the element creating a glowing, electric border. On hover, the glow intensifies with increased blur and opacity. Uses CSS conic-gradient plus filter blur for the glow aura. Supports configurable colors, animation speed, and glow radius. Peak 2025 web design trend seen on pricing cards, feature sections, and CTAs. Stripe-inspired flashlight border variant follows cursor position.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### 28. dark-mode
|
|
338
|
+
|
|
339
|
+
- **Category:** Utility
|
|
340
|
+
- **Tier:** Free
|
|
341
|
+
- **Deps:** None
|
|
342
|
+
- **Completed:** No
|
|
343
|
+
|
|
344
|
+
Theme toggle switching between light and dark modes with localStorage persistence and system preference detection. Sets data-theme attribute on html enabling CSS custom property overrides. Includes flash prevention via inline blocking script that reads localStorage synchronously before paint. Smooth CSS transitions on theme change. Listens for prefers-color-scheme changes in real time. Toggle button with sun/moon icons rendered automatically. The established pattern used by Vercel, Next.js, and every serious dark mode implementation. Universal need across all websites.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### 29. toast
|
|
349
|
+
|
|
350
|
+
- **Category:** Utility
|
|
351
|
+
- **Tier:** Free
|
|
352
|
+
- **Deps:** None
|
|
353
|
+
- **Completed:** No
|
|
354
|
+
|
|
355
|
+
Non-blocking notification popup that slides in from a screen edge and auto-dismisses after configurable duration. Supports success, error, info, and warning types with distinct styling. Multiple toasts stack vertically with smooth CSS transitions. Timer pauses on hover. Swipe-to-dismiss on touch devices via pointer tracking with velocity threshold. Max-visible config caps simultaneous toasts with FIFO removal. No native notification component exists in Webflow or Framer. Triggered via a global API or click elements with data attributes.
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### 30. back-to-top
|
|
360
|
+
|
|
361
|
+
- **Category:** Utility
|
|
362
|
+
- **Tier:** Free
|
|
363
|
+
- **Deps:** None
|
|
364
|
+
- **Completed:** No
|
|
365
|
+
|
|
366
|
+
Floating button fixed to a screen corner that appears after scrolling past a configurable threshold. Clicking smooth-scrolls to top. Optionally renders an SVG circular progress ring around the button showing scroll percentage using stroke-dasharray/dashoffset technique. Entrance/exit uses fade or slide animation. Uses Material Symbols icon inheriting the site's icon system. Detects if Lenis smooth-scroll is active and uses lenis.scrollTo(0) for consistency. Simple universal utility that every long-page website needs.
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
### 31. donut-chart
|
|
371
|
+
|
|
372
|
+
- **Category:** Data
|
|
373
|
+
- **Tier:** Free
|
|
374
|
+
- **Deps:** None
|
|
375
|
+
- **Completed:** No
|
|
376
|
+
|
|
377
|
+
Animated SVG donut/pie chart rendering data segments as colored arcs around a central hole. Each segment animates its stroke from zero to target length on scroll into view. Child elements define segments via data attributes - each child becomes one arc. Uses SVG circle elements with stroke-dasharray/dashoffset math. Supports configurable thickness, gap between segments, center label, and custom colors per segment. IntersectionObserver triggers animation with staggered reveal per segment. Perfect for market share breakdowns, feature usage stats, and plan distributions on SaaS pages.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
### 32. bar-chart
|
|
382
|
+
|
|
383
|
+
- **Category:** Data
|
|
384
|
+
- **Tier:** Free
|
|
385
|
+
- **Deps:** None
|
|
386
|
+
- **Completed:** No
|
|
387
|
+
|
|
388
|
+
Animated horizontal or vertical bar chart. Each bar grows from zero to its target value when scrolled into view. Child elements define bars via value, label, and color attributes. Pure CSS-based bars using width/height transitions for maximum compatibility. Supports value labels on each bar, auto-scaling to max value, and staggered entry animations. The container uses flexbox with configurable direction. IntersectionObserver triggers the fill animation. Second most requested chart type after donut. Essential for skill bars, comparison stats, and metrics displays.
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
### 33. timeline
|
|
393
|
+
|
|
394
|
+
- **Category:** Data
|
|
395
|
+
- **Tier:** Free
|
|
396
|
+
- **Deps:** None
|
|
397
|
+
- **Completed:** No
|
|
398
|
+
|
|
399
|
+
Vertical or horizontal timeline with animated entry points on scroll. Each entry has a date marker and content block connected by a line running through dot indicators. Vertical layout supports alternating left/right sides. Pure CSS line and dots with IntersectionObserver for scroll-triggered staggered reveal. User provides pairs of children - date/label and content. The transform wraps each pair in the structured layout with markers, dots, and connecting line. Ideal for company history, product roadmaps, changelogs, and project milestones.
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
### 34. skeleton
|
|
404
|
+
|
|
405
|
+
- **Category:** Utility
|
|
406
|
+
- **Tier:** Free
|
|
407
|
+
- **Deps:** None
|
|
408
|
+
- **Completed:** No
|
|
409
|
+
|
|
410
|
+
Shimmer or pulse placeholder animation for loading content. Overlays skeleton shapes on child elements auto-detecting dimensions. Shimmer uses an animated linear-gradient sweeping across elements. Pulse uses opacity fading. Background-attachment fixed syncs all bones shimmering together. Remove skeleton state by adding a loaded attribute or dispatching custom event - watched via MutationObserver. Auto-reads border-radius from computed styles. Aria-busy true set during loading. The Facebook/YouTube loading pattern adopted by every modern web application for perceived performance.
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
### 35. progress-bar
|
|
415
|
+
|
|
416
|
+
- **Category:** Data
|
|
417
|
+
- **Tier:** Free
|
|
418
|
+
- **Deps:** None
|
|
419
|
+
- **Completed:** No
|
|
420
|
+
|
|
421
|
+
Horizontal animated progress bar that fills to a target percentage when scrolled into view. A single track with a fill element that transitions its width via CSS. Optional label shows percentage with counting animation synchronized to fill duration. IntersectionObserver triggers at configurable threshold. The fill uses transform scaleX for GPU-accelerated rendering. Configurable colors, height, border radius, and easing. The simplest data visualization component - universally useful for skill bars, loading indicators, completion metrics, and stat displays across every type of website.
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
### 36. number-ticker
|
|
426
|
+
|
|
427
|
+
- **Category:** Animation
|
|
428
|
+
- **Tier:** Pro
|
|
429
|
+
- **Deps:** None
|
|
430
|
+
- **Completed:** No
|
|
431
|
+
|
|
432
|
+
Odometer/slot-machine style digit animation where each digit rolls independently through a vertical column of numbers 0-9. Unlike count-up which interpolates values, number-ticker physically scrolls digit columns using CSS translateY transitions. Each column is a strip of stacked 0-9 digits inside an overflow hidden container. Supports thousands separators, decimal places, prefix and suffix formatting. Per-column duration stagger creates a wave effect. Different from count-up in the visual mechanic - digits physically roll rather than interpolating. Premium dashboard feel.
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
### 37. avatar-stack
|
|
437
|
+
|
|
438
|
+
- **Category:** Social
|
|
439
|
+
- **Tier:** Free
|
|
440
|
+
- **Deps:** None
|
|
441
|
+
- **Completed:** No
|
|
442
|
+
|
|
443
|
+
Overlapping circular avatars in a horizontal row with an optional counter badge showing overflow count like "+2,400 users". Child img elements become circular, stacked via negative margins. Hover expands the stack to reveal obscured avatars with smooth transition. Each avatar gets a border matching the page background for clean separation. Max-visible config hides excess avatars behind the counter. The fastest-growing micro-pattern in modern web design - appears in nearly every hero section next to CTAs on SaaS landing pages.
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
### 38. social-proof
|
|
448
|
+
|
|
449
|
+
- **Category:** Social
|
|
450
|
+
- **Tier:** Pro
|
|
451
|
+
- **Deps:** None
|
|
452
|
+
- **Completed:** No
|
|
453
|
+
|
|
454
|
+
Auto-cycling toast notification displaying social proof messages like "John from Austin just purchased Product X." Items defined as child elements in HTML - each child becomes one notification. The transform cycles through them with configurable interval and duration, sliding in/out with CSS transitions. Fixed-position container in any corner. Closes on click. An entire SaaS category (ProveSource, WiserNotify, Nudgify) charges $30-50/month just for this widget. Building it as a simple transform undercuts all of them dramatically.
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
### 39. star-rating
|
|
459
|
+
|
|
460
|
+
- **Category:** Forms
|
|
461
|
+
- **Tier:** Free
|
|
462
|
+
- **Deps:** None
|
|
463
|
+
- **Completed:** No
|
|
464
|
+
|
|
465
|
+
Star rating component for both display and interactive input. Renders filled, half-filled, and empty stars using inline SVG with linear gradient technique for fractional fill. Interactive mode uses hidden radio inputs for form integration and accessibility with keyboard navigation and ARIA labeling. Display mode renders read-only from a value attribute. CSS-only hover fill using flex-direction row-reverse and sibling selectors. Supports configurable max stars, colors, sizes, and half-star precision. Essential for reviews, feedback forms, and product ratings.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
### 40. testimonial-wall
|
|
470
|
+
|
|
471
|
+
- **Category:** Layout
|
|
472
|
+
- **Tier:** Pro
|
|
473
|
+
- **Deps:** None
|
|
474
|
+
- **Completed:** No
|
|
475
|
+
|
|
476
|
+
Masonry-style grid of testimonial cards with automatic variable-height packing. Uses CSS column-count for true masonry without JavaScript layout calculations. Each child becomes a card with optional avatar, star rating, and source attribution pulled from data attributes. Staggered fade-in animation per card via IntersectionObserver. Responsive columns adapt to container width. Services like Famewall, Senja, and Testimonial.to built entire businesses around this single pattern charging monthly fees. A high-value social proof display component.
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
### 41. multi-step
|
|
481
|
+
|
|
482
|
+
- **Category:** Forms
|
|
483
|
+
- **Tier:** Free
|
|
484
|
+
- **Deps:** None
|
|
485
|
+
- **Completed:** No
|
|
486
|
+
|
|
487
|
+
Converts an existing form into a Typeform-style one-question-at-a-time experience. Wraps each direct child as a step, shows one at a time with slide or fade transitions. Includes progress bar, step counter, keyboard navigation (Enter advances, Escape goes back), and per-step validation via native HTML constraint validation. On final step, clicking next triggers form submit. The transform finds the closest parent form. Destroys cleanly restoring original DOM. 78 form cloneables on Webflow - most are multi-step patterns.
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
### 42. underline
|
|
492
|
+
|
|
493
|
+
- **Category:** Text
|
|
494
|
+
- **Tier:** Free
|
|
495
|
+
- **Deps:** None
|
|
496
|
+
- **Completed:** No
|
|
497
|
+
|
|
498
|
+
Creative animated underlines for text elements with multiple style variants. Slide variant uses pseudo-element with scaleX transform from left. Expand variant scales from center. Draw variant injects inline SVG path with stroke-dashoffset animation for hand-drawn feel. Marker variant uses linear gradient background positioned at bottom for highlighter effect. Each works on hover or viewport trigger. Multi-line support via box-decoration-break clone. Lightweight, no dependencies, CSS-driven animations with JS orchestrating variant setup. A navigation menu staple across modern websites.
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
### 43. image-distortion
|
|
503
|
+
|
|
504
|
+
- **Category:** Interaction
|
|
505
|
+
- **Tier:** Pro
|
|
506
|
+
- **Deps:** None
|
|
507
|
+
- **Completed:** No
|
|
508
|
+
|
|
509
|
+
WebGL displacement and ripple effect on image hover. A canvas overlays the image, rendering through a fragment shader that distorts UV coordinates based on mouse position. Three distortion types: liquid (simplex noise), ripple (sine wave radial), and noise (perlin displacement). Custom raw WebGL implementation at ~3-5KB - no Three.js or OGL needed. On hover, distortion animates in; on leave, settles back. The signature Awwwards agency-site effect. Mouse position drives distortion center with configurable radius and intensity.
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
### 44. mega-menu
|
|
514
|
+
|
|
515
|
+
- **Category:** Navigation
|
|
516
|
+
- **Tier:** Pro
|
|
517
|
+
- **Deps:** None
|
|
518
|
+
- **Completed:** No
|
|
519
|
+
|
|
520
|
+
Multi-column dropdown navigation with smooth animations. Each top-level item becomes a trigger, nested content becomes the dropdown panel rendered as CSS grid. Supports hover or click trigger with configurable open/close delays to prevent accidental triggering. Panels animate with fade, slide-down, or grow effects. Auto-closes when cursor leaves. On mobile, switches to click-based interaction. Accessible with aria-expanded, aria-haspopup, Escape key close, and arrow key navigation. Complex to build from scratch, extremely high demand in no-code communities.
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
### 45. range-slider
|
|
525
|
+
|
|
526
|
+
- **Category:** Forms
|
|
527
|
+
- **Tier:** Free
|
|
528
|
+
- **Deps:** None
|
|
529
|
+
- **Completed:** No
|
|
530
|
+
|
|
531
|
+
Custom styled range input with value tooltip and labels. Built on native input type range for accessibility with CSS pseudo-elements for cross-browser styling. Supports single-handle and dual-handle modes for min/max range selection. Dual mode uses two overlapping range inputs with pointer-events control. Tooltip follows the thumb showing current value. Filled track via linear-gradient with CSS variables. Configurable min, max, step, prefix, suffix. Finsweet built a dedicated attribute for this - consistently requested for pricing calculators, filters, and configurators.
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
### 46. drawer
|
|
536
|
+
|
|
537
|
+
- **Category:** Utility
|
|
538
|
+
- **Tier:** Free
|
|
539
|
+
- **Deps:** None
|
|
540
|
+
- **Completed:** No
|
|
541
|
+
|
|
542
|
+
Slide-in side panel from any viewport edge. Built on native dialog element for accessibility. Supports overlay mode (slides over content with backdrop) and push mode (pushes page content via CSS transform). Touch swipe-to-close on mobile via pointer tracking with velocity threshold. Scroll locks body while open. Direction determines initial off-screen transform. Configurable width/height, backdrop, and close behaviors. Essential for mobile menus, cart panels, filter sidebars, and settings panels. A standard navigation pattern missing from no-code builders.
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
### 47. color-shift
|
|
547
|
+
|
|
548
|
+
- **Category:** Animation
|
|
549
|
+
- **Tier:** Free
|
|
550
|
+
- **Deps:** None
|
|
551
|
+
- **Completed:** No
|
|
552
|
+
|
|
553
|
+
Smoothly transitions the background color of a container as the user scrolls through sections. Each child section declares its target color via data attribute. The transform interpolates between colors in real time using RGB channel lerp based on scroll position. The background at any scroll position is the exact mathematical blend between the two nearest section colors. No jarring snaps, no discrete class swaps. Uses scroll listener with requestAnimationFrame throttling. Popular on modern landing pages for creating distinct section atmospheres.
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
### 48. copy-to-clipboard
|
|
558
|
+
|
|
559
|
+
- **Category:** Utility
|
|
560
|
+
- **Tier:** Free
|
|
561
|
+
- **Deps:** None
|
|
562
|
+
- **Completed:** No
|
|
563
|
+
|
|
564
|
+
One-click copy with visual feedback. Uses navigator.clipboard.writeText with document.execCommand fallback for older browsers. On success, adds a CSS class to the element for custom styling feedback, optionally swapping icon/text for configurable duration before reverting. Target text comes from element itself, a data attribute, or a CSS selector pointing to another element. Finsweet built a dedicated attribute for this. Universally needed for code blocks, referral links, share URLs, email addresses, and any copyable content across all website types.
|
|
565
|
+
|
|
566
|
+
---
|
|
567
|
+
|
|
568
|
+
### 49. preloader
|
|
569
|
+
|
|
570
|
+
- **Category:** Animation
|
|
571
|
+
- **Tier:** Free
|
|
572
|
+
- **Deps:** None
|
|
573
|
+
- **Completed:** No
|
|
574
|
+
|
|
575
|
+
Full-screen loading overlay covering the page until content is ready. Three styles: counter (animated 0-100% number), fade (simple opacity transition), and curtain (multi-column staggered wipe). Listens to window load to detect when all resources complete. Counter style simulates progress via lerp toward 90%, jumping to 100 on actual load. Curtain style uses N equal-width vertical columns translating upward with staggered delays. Includes minimum display duration so fast-loading pages still show the animation. Removes overlay from DOM after completion.
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
### 50. dot-grid
|
|
580
|
+
|
|
581
|
+
- **Category:** Interaction
|
|
582
|
+
- **Tier:** Free
|
|
583
|
+
- **Deps:** None
|
|
584
|
+
- **Completed:** No
|
|
585
|
+
|
|
586
|
+
Repeating dot matrix background with optional mouse reactivity. Static mode uses pure CSS radial-gradient for zero runtime cost. Interactive mode upgrades to canvas where dots near the cursor respond with glow, expand, or ripple effects. At 20px gap on 1920x1080, that's ~5000 dots - distance calculations are trivial at 60fps. Bounding-box optimization processes only dots within cursor radius. Canvas loop pauses on mouseleave. Resolution-independent, responsive via ResizeObserver. Trending on Magic UI and Aceternity UI as a premium background pattern.
|