@baguette-studios/kernl-ui-core
v0.2.0
Published
Framework-neutral UI model, theme tokens, and shared styles for kernl.
Readme
@baguette-studios/kernl-ui-core
Framework-neutral assistant UI state, theme tokens, icons, and shared styles for Kernl framework adapters.
npm install @baguette-studios/kernl-ui-coreReact applications should normally install @baguette-studios/kernl-ui. Use this package directly when building a framework adapter or applying the shared CSS variable contract.
Available styles include @baguette-studios/kernl-ui-core/styles.css, @baguette-studios/kernl-ui-core/theme.css, and @baguette-studios/kernl-ui-core/tailwind.css.
Cross-framework rich content
The package root intentionally stays dependency-light for Jest and other
tooling that does not transform ESM-only dependencies. Controller behavior is
available from @baguette-studios/kernl-ui-core/controller, while React, Vue,
Svelte, and Web Component adapters consume rich-content helpers from
@baguette-studios/kernl-ui-core/rich-content. The rich-content entry point
defines the public behavior for safe GFM Markdown,
navigation and asset tokens, message attachments, upload policy filtering,
browser File conversion, draft ordering/removal, and asset-only prompts.
Raw Markdown HTML is omitted and executable link protocols are rejected.
The rich-content entry point also owns composer serialization: inline asset tokens
render as canonical non-editable chips and serialize back to their portable
token form in React, Vue, and Svelte.
AgentFileUploadPolicy is exported by @baguette-studios/kernl-core so every
framework provider and nested boundary accepts the same policy shape. Uploads
are enabled by default; use fileUpload={false} (or the framework equivalent)
on a provider or boundary to disable them.
UI preference stores
createLocalAgentUiPreferencesStore() wraps the existing synchronous
loadAgentUiPreferences() and saveAgentUiPreferences() helpers in a small
async/subscribable contract. The storage key and version 1 document remain
unchanged.
import {
createLocalAgentUiPreferencesStore,
type AgentUiPreferencesStore,
} from "@baguette-studios/kernl-ui-core/preferences";
const store: AgentUiPreferencesStore = createLocalAgentUiPreferencesStore();Use createEnforcedAgentUiPreferencesStore(store, overrides) when a host must
lock a user-owned field. The wrapper applies the host value for that app but
preserves the user's underlying shared value instead of writing host policy
into the cross-origin profile.
Only closeOnOutsideClick, toggleShortcut, and newThreadShortcut are user
preferences in v1. Branding, placement, policy, approvals, identity, messages,
context, and application data are outside this document.
The extension protocol is intentionally isolated in the
@baguette-studios/kernl-ui-core/preferences-extension entry point. Default
imports do not include extension bridge code.
Each framework UI package exposes the same opt-in ./preferences-extension
subpath. Those files are thin re-exports of this package's store and bridge;
there is no framework-specific extension protocol.
