@presage-kit/core
v0.1.3
Published
Framework-agnostic adaptive UI engine — rules, tracking, and behavioral optimization
Readme
@presage-kit/core
Framework-agnostic adaptive UI engine. Rules, tracking, behavioral signals, and persistence — all in pure TypeScript with zero dependencies.
Install
pnpm add @presage-kit/coreQuick Start
import { createAdaptiveClient, createLocalStorageDriver } from '@presage-kit/core'
const client = createAdaptiveClient({
rules: [
{
id: 'power-user-nav',
adaptationId: 'main-nav',
priority: 10,
conditions: {
all: [
{ field: 'maturity', operator: 'eq', value: 'power' },
{ field: 'traits.role', operator: 'in', value: ['admin', 'editor'] },
],
},
action: { type: 'reorder', order: ['analytics', 'settings', 'users', 'dashboard'] },
},
],
persistence: {
driver: createLocalStorageDriver('myapp'),
},
})
// Identify the user after auth
client.identify('user_123', { role: 'admin', plan: 'enterprise' })
// Track behavior — feeds signals and triggers rule re-evaluation
client.track('feature_used', { featureId: 'export' })Core Concepts
User Context
Every adaptation decision is based on three pillars:
- Traits — static info set via
identify()(role, plan, company) - Signals — computed from tracked events (session count, feature usage, clicks)
- Maturity — auto-segmentation:
new|onboarding|active|power|dormant
Rules Engine
Declarative JSON rules with 14 operators (eq, gt, in, between, matches, ...) and boolean logic (all, any, not). Actions: show, hide, reorder, modify.
Persistence
Built-in drivers for localStorage and in-memory (SSR/testing).
Tracking
Lightweight built-in event store + pluggable external adapters (PostHog, Amplitude, etc.).
Ordering
reorderItems(items, order) — shared utility used by all framework adapters to reorder items based on a priority list.
import { reorderItems } from '@presage-kit/core'
const ordered = reorderItems(items, ['analytics', 'dashboard', 'settings'])Use with a Framework
- React —
@presage-kit/react - Vue —
@presage-kit/vue - Svelte —
@presage-kit/svelte
Docs
License
Proprietary. See LICENSE.
