Headless components for Vue-Lynx — coming soon
Heads up: most things below are aspirational. Vue-Lynx itself is pre-alpha and Vy UI is too. APIs will change. Things will break. Don’t ship this to production yet.
Two layers, one ecosystem
- 47 primitives — Dialog, Sheet, Popover, Combobox, Slider, Swiper, Sortable, …
- Native-first for Lynx’s <view> / <text> rendering model
- Zero styling opinions — compose your own design system on top
- 44 styled components — VyButton, VyDrawer, VyModal, VyToast, VyIsland, …
- Themeable via Tailwind Variants (createTv) and an app config object
- Re-exports keyboard-aware + icon primitives from core for convenience
Get started in two minutes
Install the primitives layer and write your own styles.
pnpm add @vyui/coreUse a primitive
<script setup>
import { SliderRoot, SliderTrack, SliderRange, SliderThumb } from '@vyui/core'
import { ref } from 'vue'
const value = ref(50)
</script>
<template>
<SliderRoot v-model="value" :max="100">
<SliderTrack>
<SliderRange />
</SliderTrack>
<SliderThumb />
</SliderRoot>
</template>Tailwind Variants, not opinions
- Per-component themesEach Vy* component reads a theme file under packages/kit/src/theme. Override slots, variants, and defaults without forking the source.
- createTv + tv()Re-exported from @vyui/kit so you can compose your own variants on top, with the same DX as Nuxt UI or shadcn.
- Runtime app configPass overrides to the VyUI plugin at mount time. No build step. Theme keys are deep-merged into the defaults.
Bring your own, via Iconify
pnpm add @iconify-json/lucide<script setup>
import { Icon } from '@vyui/core'
</script>
<template>
<Icon name="i-lucide-sparkles" :size="20" color="#6366f1" />
</template> Names work in either form — i-lucide-folder or lucide:folder. Browse 200,000+ icons across collections at icones.js.org.
Lynx's native <svg> rasterizes the XML and can't inherit currentColor from a surrounding <text>, so the color prop is required to tint an icon.
One codebase, three targets
- iOSNative UIView rendering via Lynx Explorer or your own LynxView host.
- AndroidNative View rendering; ship inside your Android app via the Lynx runtime.
- WebLynx Web target compiles to a browser bundle for previews and progressive rollouts.
What’s next
- @vyui/core primitivesIn progress
Published as ^0.0.2 with a known MT-loader regression awaiting an upstream fix.
- @vyui/kit on npmPlanned
Styled-component package, currently workspace-only.
- @vyui/cliPlanned
shadcn-style CLI for adding individual styled components — npx @vyui add button.
- Hosted registryPlanned
vyui.dev/registry/* JSON manifests with source, dependencies, file destinations.
- Component documentationPlanned
Per-component reference, props, examples, demos — generated from real source so it stays in sync.
- Starter templatesPlanned
- Cross-target testing (iOS / Android / Web)Planned