- TypeScript 54.3%
- Vue 41.2%
- CSS 3.8%
- HTML 0.7%
Each data source's params were evaluated against only the parent context, so a source whose arguments reference an earlier source by name (e.g. `prompt(prompt: async () => (await catCareSource)[0].text) -> catCareBody`) compiled an evaluator that never destructured the referenced name. The arrow closure then threw `ReferenceError` the moment it was awaited. Merge `dataSources.value` into the context for each iteration so subsequent sources can see ones declared above. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .vscode | ||
| e2e | ||
| public | ||
| src | ||
| test | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .prettierrc.json | ||
| AGENTS.md | ||
| components.json | ||
| env.d.ts | ||
| eslint.config.ts | ||
| index.html | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| tsconfig.vitest.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Adaptive UIs with Vue and AI: What If Your UI Could Build Itself?
- Slides: https://talk-adaptive-uis-madvue-2026.oberlehner.work
- Slides source: https://code.oberlehner.work/markus/talk-adaptive-uis-madvue-2026
We carefully craft the design of current-day apps and websites tailored to a specific use case. Yet the needs of our users often don’t fit neatly into the boxes we put them in when we imagine how they use our applications. What if we could take it a step further and build interfaces that adapt on demand to the specific needs of our users? With the power of modern, state-of-the-art LLMs, we can dynamically generate and adapt the UI of our application to meet the exact needs of our users in real-time. In this talk, we explore how to build a single AI-powered component that automatically responds to all UI requirements in a fast and reliable way.
In this talk you'll learn:
- What the “adaptive UI” pattern is and how it differs from vibe coding.
- How to implement a minimal adaptive renderer in Vue that consumes a YAML UI spec and a whitelisted component registry.
- How to apply guardrails to keep it fast and reliable with a constrained schema and caching/latency tricks.
Running the app
Warning: this application is not meant to be live deployed as is! The code exposes secrets to the frontend!
- Add your API keys in a local
.envfile:VITE_EXA_API_KEY(required for research)VITE_GOOGLE_API_KEY(required when any speed slot insrc/config.tsuses providergoogle)VITE_ANTHROPIC_API_KEY(required when any speed slot uses provideranthropic)VITE_OPENAI_API_KEY(required when any speed slot uses provideropenai)VITE_GROQ_API_KEY(required when any speed slot uses providergroq)
- Start the dev server:
pnpm dev
Use the bottom prompt bar to describe the UI you want. The AI uses the layout-generator system prompt to produce YAML, which is then rendered live.