Astro
Action menu
Declarative items · event helpers
Native TypeScript · Astro · Vue 3
Practical menus and form controls built on one isolated SVG liquid engine.
No framework runtime
Real controls using the package components directly
Declarative items · event helpers
Real input · submit state
Button semantics
Native range · styled
Separated liquid actions
Tune the engine
Every option updates the Astro components in real time
Start here
npm install @danixts/liquid-gooey
import { LiquidGroup, LiquidItem } from '@danixts/liquid-gooey/astro'
import { updateLiquidItem } from '@danixts/liquid-gooey/astro/client'
<LiquidGroup class="menu" blur={7} contrast={19} fill="#fff">
<LiquidItem as="button" id="action" transition="bouncy">Add</LiquidItem>
</LiquidGroup>
<script>
const action = document.querySelector('#action')
if (action) updateLiquidItem(action, { x: 72, y: -48 })
</script>npm install @danixts/liquid-gooey vue
<script setup lang="ts">
import { ref } from 'vue'
import { LiquidGroup, LiquidItem } from '@danixts/liquid-gooey/vue'
const open = ref(false)
</script>
<LiquidGroup :blur="7" :contrast="19" fill="#fff">
<LiquidItem as="button" :x="open ? 72 : 0" transition="bouncy">
Add
</LiquidItem>
</LiquidGroup>Reactive props
A small client island only for the Vue comparison
Designed for reuse
Every group owns its SVG filter, observer and item registry.
Morph, move and dissolve values share the same TypeScript contract.
Astro navigation and Vue unmounts clean controllers and listeners.