Element types — core API
Generated reference for @aparte/core. The data and event types the elements take and send. The elements themselves are on their catalogue pages.
On this page
- Overview
- Functions
-
Interfaces
- SyncableBubble
- AparteComposerEventMap
- AparteComposerState
- AparteComposerChangeEventDetail
- AparteContextThresholdEventDetail
- AparteConversationListItem
- AparteConversationSelectDetail
- AparteConversationDeleteDetail
- AparteConversationArchiveDetail
- AparteConversationPinDetail
- AparteConversationRenameDetail
- AparteScrollRailJumpDetail
- AparteSidebarToggleDetail
- AparteSplitResizeDetail
- AparteSuggestionEventDetail
- AparteChatAttributes
- AparteChatBubbleAttributes
- AparteChatStatusAttributes
- AparteChatViewportAttributes
- AparteComposerAttributes
- AparteComposerActionAttributes
- AparteComposerAddAttachmentAttributes
- AparteComposerInputAttributes
- AparteComposerToolbarAttributes
- AparteContextAttributes
- AparteConversationListAttributes
- AparteIconAttributes
- AparteOptgroupAttributes
- AparteOptionAttributes
- AparteProgressSpinnerAttributes
- AparteScrollRailAttributes
- AparteSelectAttributes
- AparteSidebarAttributes
- AparteSplitAttributes
- AparteSuggestionsAttributes
- AparteElementAttributes
- AparteSelectChangeDetail
- Type Aliases
- Event details
Functions
Section titled “Functions”populateBubbleFromMessage()
Section titled “populateBubbleFromMessage()”function populateBubbleFromMessage(
bubble,
message,
siblingInfo?): void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:52
Reconcile a bubble element with a message and optional sibling metadata.
For framework wrappers (Angular, React, Vue, Svelte) that own bubble creation through their own template engine. After the framework has mounted/diffed its bubbles, call this helper for each (bubble, message, siblingInfo) tuple to push the imperative state — segments, attachments, and the sibling-picker — that cannot travel via attribute bindings.
The default vanilla viewport (AparteChatViewport with _frameworkManagedDOM === false) uses this helper internally, so the contract stays in lockstep
across the core and every wrapper.
Idempotent. Safe to call on every render. Segment count drives the strategy:
- same count → reconcile content per segment (cheap, preserves user-toggled
<details>open/closed state on thinking blocks, etc.) - count changed (new segment streamed, branch switched, etc.) → full rebuild via setSegments
Plain content is only pushed when no segments are present — segments take
precedence in the bubble’s render logic.
Sibling-picker is only shown when siblingInfo.count > 1; below that, the
bubble hides the picker on its own.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
bubble | SyncableBubble |
message | AparteMessage |
siblingInfo? | AparteSiblingInfo |
Returns
Section titled “Returns”void
Interfaces
Section titled “Interfaces”SyncableBubble
Section titled “SyncableBubble”Defined in: packages/core/src/components/bubble/bubble-sync.ts:17
Minimal structural type representing the imperative slice of AparteChatBubble
needed to reconcile a message into a bubble. Declared loosely so framework
wrappers can pass any element that exposes the same surface (custom element
registered cross-context, mocked test double, etc.) without dragging the
concrete AparteChatBubble class through every wrapper’s typing.
Properties
Section titled “Properties”getSegments?
Section titled “getSegments?”optional getSegments?: () => AparteSegment[];Defined in: packages/core/src/components/bubble/bubble-sync.ts:18
Returns
Section titled “Returns”setSegments?
Section titled “setSegments?”optional setSegments?: (segments) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:19
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
segments | AparteSegment[] |
Returns
Section titled “Returns”void
updateSegment?
Section titled “updateSegment?”optional updateSegment?: (segmentId, updates) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:20
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
segmentId | string |
updates | Partial<AparteSegment> |
Returns
Section titled “Returns”void
setContent?
Section titled “setContent?”optional setContent?: (content) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:21
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
content | string |
Returns
Section titled “Returns”void
setAttachments?
Section titled “setAttachments?”optional setAttachments?: (attachments) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:22
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
attachments | AparteAttachment[] |
Returns
Section titled “Returns”void
setSiblings?
Section titled “setSiblings?”optional setSiblings?: (count, index) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:23
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
count | number |
index | number |
Returns
Section titled “Returns”void
setUsage?
Section titled “setUsage?”optional setUsage?: (usage) => void;Defined in: packages/core/src/components/bubble/bubble-sync.ts:24
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
usage | AparteUsage | null | undefined |
Returns
Section titled “Returns”void
AparteComposerEventMap
Section titled “AparteComposerEventMap”Defined in: packages/core/src/components/composer/aparte-composer.ts:31
Properties
Section titled “Properties”value-change
Section titled “value-change”value-change: {
value: string;
};Defined in: packages/core/src/components/composer/aparte-composer.ts:32
value: string;streaming-change
Section titled “streaming-change”streaming-change: {
streaming: boolean;
};Defined in: packages/core/src/components/composer/aparte-composer.ts:33
streaming
Section titled “streaming”streaming: boolean;disabled-change
Section titled “disabled-change”disabled-change: {
disabled: boolean;
};Defined in: packages/core/src/components/composer/aparte-composer.ts:34
disabled
Section titled “disabled”disabled: boolean;attachments-change
Section titled “attachments-change”attachments-change: {
attachments: File[];
};Defined in: packages/core/src/components/composer/aparte-composer.ts:35
attachments
Section titled “attachments”attachments: File[];submit
Section titled “submit”submit: {
value: string;
attachments: File[];
};Defined in: packages/core/src/components/composer/aparte-composer.ts:36
value: string;attachments
Section titled “attachments”attachments: File[];cancel
Section titled “cancel”cancel: Record<string, never>;Defined in: packages/core/src/components/composer/aparte-composer.ts:37
panel-change
Section titled “panel-change”panel-change: {
active: boolean;
submitEnabled: boolean;
mode: AparteComposerPanelMode;
};Defined in: packages/core/src/components/composer/aparte-composer.ts:38
active
Section titled “active”active: boolean;submitEnabled
Section titled “submitEnabled”submitEnabled: boolean;mode: AparteComposerPanelMode;AparteComposerState
Section titled “AparteComposerState”Defined in: packages/core/src/components/composer/aparte-composer.ts:50
Public snapshot of the composer’s observable state. Delivered on every
aparte-composer-change DOM event and available synchronously via
AparteComposer.getState. Lets an element OUTSIDE the composer package
(a custom send button, a footer control) mirror the composer’s live state
without the internal _on/_emit bus.
Properties
Section titled “Properties”value: string;Defined in: packages/core/src/components/composer/aparte-composer.ts:51
streaming
Section titled “streaming”streaming: boolean;Defined in: packages/core/src/components/composer/aparte-composer.ts:52
disabled
Section titled “disabled”disabled: boolean;Defined in: packages/core/src/components/composer/aparte-composer.ts:53
attachments
Section titled “attachments”attachments: File[];Defined in: packages/core/src/components/composer/aparte-composer.ts:54
panelActive
Section titled “panelActive”panelActive: boolean;Defined in: packages/core/src/components/composer/aparte-composer.ts:56
A panel (e.g. an elicitation form) is showing in place of the input.
submitEnabled
Section titled “submitEnabled”submitEnabled: boolean;Defined in: packages/core/src/components/composer/aparte-composer.ts:58
Whether the send button should act as “submit” while a panel is active.
AparteComposerChangeEventDetail
Section titled “AparteComposerChangeEventDetail”Defined in: packages/core/src/components/composer/aparte-composer.ts:62
Detail of the public aparte-composer-change DOM event.
Properties
Section titled “Properties”state: AparteComposerState;Defined in: packages/core/src/components/composer/aparte-composer.ts:63
composer
Section titled “composer”composer: AparteComposer;Defined in: packages/core/src/components/composer/aparte-composer.ts:64
AparteContextThresholdEventDetail
Section titled “AparteContextThresholdEventDetail”Defined in: packages/core/src/components/context/aparte-context.ts:8
Detail of aparte-context-threshold: the level just entered, and the numbers behind it.
Properties
Section titled “Properties”level: AparteContextLevel;Defined in: packages/core/src/components/context/aparte-context.ts:9
used: number;Defined in: packages/core/src/components/context/aparte-context.ts:11
Tokens the last turn reported as used — the prompt sent plus the reply.
window
Section titled “window”window: number;Defined in: packages/core/src/components/context/aparte-context.ts:13
The window those tokens are measured against.
ratio: number;Defined in: packages/core/src/components/context/aparte-context.ts:15
used / window, capped at 1.
targetId?
Section titled “targetId?”optional targetId?: string;Defined in: packages/core/src/components/context/aparte-context.ts:17
The chat this gauge watches, when it has an id.
AparteConversationListItem
Section titled “AparteConversationListItem”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:9
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:10
title: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:11
updatedAt?
Section titled “updatedAt?”optional updatedAt?: number;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:13
Drives the date groups. A list where no item carries one renders flat.
archivedAt?
Section titled “archivedAt?”optional archivedAt?: number;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:15
When set, the row is italic and its menu offers unarchive instead of archive.
pinnedAt?
Section titled “pinnedAt?”optional pinnedAt?: number;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:17
When set, the row sits in the “Pinned” group first, and its menu offers unpin.
AparteConversationSelectDetail
Section titled “AparteConversationSelectDetail”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:20
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:21
AparteConversationDeleteDetail
Section titled “AparteConversationDeleteDetail”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:24
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:25
AparteConversationArchiveDetail
Section titled “AparteConversationArchiveDetail”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:28
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:29
AparteConversationPinDetail
Section titled “AparteConversationPinDetail”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:32
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:33
AparteConversationRenameDetail
Section titled “AparteConversationRenameDetail”Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:36
Properties
Section titled “Properties”id: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:37
title: string;Defined in: packages/core/src/components/conversation-list/aparte-conversation-list.ts:39
The new title, trimmed and non-empty — an unchanged or emptied title fires nothing.
AparteScrollRailJumpDetail
Section titled “AparteScrollRailJumpDetail”Defined in: packages/core/src/components/scroll-rail/aparte-scroll-rail.ts:6
Detail of aparte-scroll-rail-jump: the message a tick points at.
Properties
Section titled “Properties”messageId
Section titled “messageId”messageId: string;Defined in: packages/core/src/components/scroll-rail/aparte-scroll-rail.ts:7
AparteSidebarToggleDetail
Section titled “AparteSidebarToggleDetail”Defined in: packages/core/src/components/sidebar/aparte-sidebar.ts:6
Detail of aparte-sidebar-toggle: the state just entered.
Properties
Section titled “Properties”collapsed
Section titled “collapsed”collapsed: boolean;Defined in: packages/core/src/components/sidebar/aparte-sidebar.ts:7
drawer
Section titled “drawer”drawer: boolean;Defined in: packages/core/src/components/sidebar/aparte-sidebar.ts:9
True while the sidebar is a drawer — the window is under the breakpoint.
AparteSplitResizeDetail
Section titled “AparteSplitResizeDetail”Defined in: packages/core/src/components/split/aparte-split.ts:7
Detail of aparte-split-resize: the position that settled, and what settled it.
Properties
Section titled “Properties”position
Section titled “position”position: number;Defined in: packages/core/src/components/split/aparte-split.ts:9
The achieved size of the primary pane, as a percentage of the container.
collapsed
Section titled “collapsed”collapsed: boolean;Defined in: packages/core/src/components/split/aparte-split.ts:11
The primary pane is folded to its minimum.
stacked
Section titled “stacked”stacked: boolean;Defined in: packages/core/src/components/split/aparte-split.ts:13
The split is showing one pane — under its breakpoint, or told to by single.
pane: "start" | "end";Defined in: packages/core/src/components/split/aparte-split.ts:15
Which pane is shown while stacked.
orientation
Section titled “orientation”orientation: "horizontal" | "vertical";Defined in: packages/core/src/components/split/aparte-split.ts:17
The container’s axis, as the orientation attribute names it.
source
Section titled “source”source: "pointer" | "keyboard" | "api";Defined in: packages/core/src/components/split/aparte-split.ts:19
What moved it: a drag, a key, or the host setting the property.
AparteSuggestionEventDetail
Section titled “AparteSuggestionEventDetail”Defined in: packages/core/src/components/suggestions/aparte-suggestions.ts:15
Detail of aparte-suggestion: what was shown and what will be sent.
Properties
Section titled “Properties”label: string;Defined in: packages/core/src/components/suggestions/aparte-suggestions.ts:16
prompt
Section titled “prompt”prompt: string;Defined in: packages/core/src/components/suggestions/aparte-suggestions.ts:17
AparteChatAttributes
Section titled “AparteChatAttributes”Defined in: packages/core/src/generated/element-attributes.ts:6
<aparte-chat> — AparteChat - The Shell
Properties
Section titled “Properties”placeholder?
Section titled “placeholder?”optional placeholder?: string;Defined in: packages/core/src/generated/element-attributes.ts:8
Placeholder for the composer input (default composition)
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:10
Disables the composer
submit-on-enter?
Section titled “submit-on-enter?”optional submit-on-enter?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:12
Forwarded to the composer by value: submit-on-enter="false" makes Enter break the line and Shift+Enter send (the bare attribute, or none, keeps the default — Enter sends). The four wrappers expose the same switch as submitOnEnter.
attachments?
Section titled “attachments?”optional attachments?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:14
Add the file picker + chips strip to the default composition (opt-in: the host must consume the files — an AparteClient does, a hand-rolled loop must read event.detail.files)
center-empty?
Section titled “center-empty?”optional center-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:16
Center the composer as a welcome state until the first message, then slide to the normal layout
data-empty?
Section titled “data-empty?”optional data-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:18
Reflected BY the element while its viewport holds no <aparte-chat-bubble> and is not loading — set again when the conversation is cleared. With or without center-empty: the stylesheet centers the composer through aparte-chat[center-empty][data-empty], and an app styles or scripts its own empty state against aparte-chat[data-empty]. Read-only.
overlay-composer?
Section titled “overlay-composer?”optional overlay-composer?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:20
The ChatGPT anatomy, opt-in: the transcript’s scroll surface spans the whole column and the composer (with the rest of the bottom stack) floats over it, so the scrollbar runs edge to edge instead of stopping at the composer’s top. The viewport measures the stack and publishes --aparte-bottom-inset; content, spacer and the scroll button clear it. Read when the viewport wires its observers — set it in the initial markup. Also honoured on a wrapper’s [data-aparte-chat] root.
framework-managed?
Section titled “framework-managed?”optional framework-managed?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:22
The wrapper’s explicit hands-off signal: set it and this element composes none of its own children, because the framework owns them. Read once at connect (it is not observed), so it has to be in the initial markup. Angular’s wrapper sets it on this element — its component selector IS aparte-chat; React/Vue/Svelte render a [data-aparte-chat] div and never create this element at all.
AparteChatBubbleAttributes
Section titled “AparteChatBubbleAttributes”Defined in: packages/core/src/generated/element-attributes.ts:26
<aparte-chat-bubble> — One message: plain content or a list of rich segments, in light DOM.
Properties
Section titled “Properties”data-role?
Section titled “data-role?”optional data-role?: string;Defined in: packages/core/src/generated/element-attributes.ts:28
The message role, user or assistant — the one channel for it, and what the CSS keys off. (role is ARIA’s attribute; this element sets it to article itself and no longer reads a message role from it.)
content?
Section titled “content?”optional content?: string;Defined in: packages/core/src/generated/element-attributes.ts:30
Plain text content, for a bubble with no segments.
timestamp?
Section titled “timestamp?”optional timestamp?: string | number;Defined in: packages/core/src/generated/element-attributes.ts:32
Epoch milliseconds or a date string; a numeric string is read as milliseconds.
message-id?
Section titled “message-id?”optional message-id?: string;Defined in: packages/core/src/generated/element-attributes.ts:34
How streaming and the action bar address this bubble.
streaming?
Section titled “streaming?”optional streaming?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:36
Hides the action bar and shows the caret while a reply is in flight.
optional name?: string;Defined in: packages/core/src/generated/element-attributes.ts:38
The display name in the header.
AparteChatStatusAttributes
Section titled “AparteChatStatusAttributes”Defined in: packages/core/src/generated/element-attributes.ts:42
<aparte-chat-status> — A standalone status line — a light-DOM indicator the APP owns. Nothing in core turns it on: the framework host only ever flips it back OFF (on the first streamed token), and the four wrappers render one inside the viewport driven by their own isTyping prop.
Properties
Section titled “Properties”visible?
Section titled “visible?”optional visible?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:44
Shows or hides the indicator.
optional text?: string;Defined in: packages/core/src/generated/element-attributes.ts:46
The line to show. Absent, the line is dots-only and the accessible name falls back to the locale’s typing word (“Typing” in English).
AparteChatViewportAttributes
Section titled “AparteChatViewportAttributes”Defined in: packages/core/src/generated/element-attributes.ts:50
<aparte-chat-viewport> — The transcript surface: a light-DOM container with sticky scrolling, token streaming and segment-aware rendering.
Properties
Section titled “Properties”scroll-threshold?
Section titled “scroll-threshold?”optional scroll-threshold?: number;Defined in: packages/core/src/generated/element-attributes.ts:52
How close to the bottom still counts as “at the bottom”.
max-rendered-bubbles?
Section titled “max-rendered-bubbles?”optional max-rendered-bubbles?: number;Defined in: packages/core/src/generated/element-attributes.ts:54
Caps how many bubbles stay in the DOM; older ones are released.
loading?
Section titled “loading?”optional loading?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:56
The transcript is on its way: a conversation was chosen and its messages are being fetched. The element draws two skeleton turns, marks its scroll surface aria-busy and names the wait for a screen reader; aparte-chat[center-empty] does not count a loading viewport as empty. Set by AparteConversationController through its binding, or by hand from a loop of your own (setLoading(true)).
framework-managed?
Section titled “framework-managed?”optional framework-managed?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:58
The wrapper’s explicit hands-off signal: set it and this element builds no wrapper of its own and relocates none of the nodes the FRAMEWORK renders into it, because the framework owns them. Not “none of its children”: core’s own scroll-to-bottom button is re-appended whenever it stops being last, and that path runs in this mode only. All four wrappers set it.
data-busy?
Section titled “data-busy?”optional data-busy?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:60
Reflected BY the element while a turn streams: the transcript is read-only meanwhile, and every bubble inside reads it (at connect, and when it changes). The vanilla path derives it from the repository; a framework host sets it through setTranscriptBusy(). Read-only from the outside.
AparteComposerAttributes
Section titled “AparteComposerAttributes”Defined in: packages/core/src/generated/element-attributes.ts:64
<aparte-composer> — The root context for every aparte-composer-* primitive. It imposes no visual layout — the consumer owns the structure — and holds the shared state the parts read: the value, the streaming flag, pending attachments, whether a panel is up.
Properties
Section titled “Properties”placeholder?
Section titled “placeholder?”optional placeholder?: string;Defined in: packages/core/src/generated/element-attributes.ts:66
Fallback placeholder for <aparte-composer-input>, which reads it off this element when it carries none of its own. Changing it here reaches the inputs already on the page too.
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:68
Disables the composer’s own controls — the input, send, add-attachment and <aparte-composer-action> buttons each read it. What you put in the toolbar is yours to disable.
target?
Section titled “target?”optional target?: string;Defined in: packages/core/src/generated/element-attributes.ts:70
The id of the <aparte-chat> this composer drives.
submit-on-enter?
Section titled “submit-on-enter?”optional submit-on-enter?: boolean | "false";Defined in: packages/core/src/generated/element-attributes.ts:72
Enter sends and Shift+Enter breaks the line (the default); set it to the string "false" to swap them. Read lazily by the submitOnEnter getter rather than observed, which is why it was missing from the manifest — and so from every typed surface — while all four wrappers wrote it.
data-panel-active?
Section titled “data-panel-active?”optional data-panel-active?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:74
Reflected BY the element while a panel (an elicitation, an approval) is mounted inside it; the shipped stylesheet keys off it. Read-only.
data-panel-mode?
Section titled “data-panel-mode?”optional data-panel-mode?: string;Defined in: packages/core/src/generated/element-attributes.ts:76
Reflected BY the element while a panel is active: what the send button does meanwhile ('none' removes it — through this attribute, not by reaching into the button). Read-only.
data-model-gated?
Section titled “data-model-gated?”optional data-model-gated?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:78
Reflected BY the element when requireModelSelection is on and no model is selected: sending is blocked and the shipped stylesheet greys the composer. Read-only.
AparteComposerActionAttributes
Section titled “AparteComposerActionAttributes”Defined in: packages/core/src/generated/element-attributes.ts:82
<aparte-composer-action> — Generic action button primitive for <aparte-composer>.
Properties
Section titled “Properties”optional icon?: string;Defined in: packages/core/src/generated/element-attributes.ts:84
Icon key for aparteGlobalConfig.getIcon(), or raw SVG/HTML starting with <. A key core’s glyph set does not hold renders AS TEXT (icon="star" draws the word star), so bring your own set through setIconProvider or pass the SVG.
label?
Section titled “label?”optional label?: string;Defined in: packages/core/src/generated/element-attributes.ts:86
Accessible label (also used as tooltip)
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:88
Disables the button
action-id?
Section titled “action-id?”optional action-id?: string;Defined in: packages/core/src/generated/element-attributes.ts:90
Identifies WHICH button fired; carried as AparteActionClickEventDetail.actionId. Read lazily at dispatch time rather than observed, so changing it takes effect on the next click.
AparteComposerAddAttachmentAttributes
Section titled “AparteComposerAddAttachmentAttributes”Defined in: packages/core/src/generated/element-attributes.ts:94
<aparte-composer-add-attachment> — File picker button for <aparte-composer>.
Properties
Section titled “Properties”accept?
Section titled “accept?”optional accept?: string;Defined in: packages/core/src/generated/element-attributes.ts:96
MIME types / extensions passed to the file input (e.g. “image/*,.pdf”)
multiple?
Section titled “multiple?”optional multiple?: boolean | "false";Defined in: packages/core/src/generated/element-attributes.ts:98
Allow multiple file selection (default: true)
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:100
Greys out the picker. Drops are gated by the composer root’s disabled, not by this one.
AparteComposerInputAttributes
Section titled “AparteComposerInputAttributes”Defined in: packages/core/src/generated/element-attributes.ts:104
<aparte-composer-input> — Contenteditable text input primitive.
Properties
Section titled “Properties”placeholder?
Section titled “placeholder?”optional placeholder?: string;Defined in: packages/core/src/generated/element-attributes.ts:106
Placeholder text (fallback: reads from aparte-composer)
max-height?
Section titled “max-height?”optional max-height?: number;Defined in: packages/core/src/generated/element-attributes.ts:108
Max height in px before scroll (default: 200)
min-height?
Section titled “min-height?”optional min-height?: number;Defined in: packages/core/src/generated/element-attributes.ts:110
Min height in px. When omitted, the stylesheet’s min-height governs (44px in aparte.css) — so themes can resize the editor in pure CSS without being fought by an inline height.
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:112
Makes the field non-editable; the composer’s own disabled also reaches it.
AparteComposerToolbarAttributes
Section titled “AparteComposerToolbarAttributes”Defined in: packages/core/src/generated/element-attributes.ts:116
<aparte-composer-toolbar> — The composer’s bottom row — the strip a mode picker, a model selector or a token counter belongs in, rather than a bar of your own floating below the chat. Purely structural: it lays its children out in a row and gets out of the way.
Properties
Section titled “Properties”data-empty?
Section titled “data-empty?”optional data-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:118
Reflected BY the element while it holds neither a visible element child nor non-whitespace text; the stylesheet hides it then. A child that hides itself — hidden, or its own data-empty the way <aparte-context> does before its first usage — does not count: a row whose only child shows nothing is an empty band with a border. Read-only, do not set it yourself.
AparteContextAttributes
Section titled “AparteContextAttributes”Defined in: packages/core/src/generated/element-attributes.ts:122
<aparte-context> — A gauge of the model’s context window: how much of it the conversation uses.
Properties
Section titled “Properties”window?
Section titled “window?”optional window?: number;Defined in: packages/core/src/generated/element-attributes.ts:124
The context window, in tokens. Overrides the current model’s contextWindow.
optional warn?: number;Defined in: packages/core/src/generated/element-attributes.ts:126
Fraction of the window at which the level turns warn. Default 0.75.
danger?
Section titled “danger?”optional danger?: number;Defined in: packages/core/src/generated/element-attributes.ts:128
Fraction at which it turns danger. Default 0.9.
target?
Section titled “target?”optional target?: string;Defined in: packages/core/src/generated/element-attributes.ts:130
The id of the <aparte-chat> to watch, when the element is not under it.
variant?
Section titled “variant?”optional variant?: string;Defined in: packages/core/src/generated/element-attributes.ts:132
bar (default) or ring: a progress bar with the reading beside it, or a ring with the percentage.
auto-compact?
Section titled “auto-compact?”optional auto-compact?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:134
Dispatch aparte-compact on each turn that ends in danger, one request at a time.
data-level?
Section titled “data-level?”optional data-level?: string;Defined in: packages/core/src/generated/element-attributes.ts:136
Reflected BY the element: ok, warn or danger. Read-only.
data-empty?
Section titled “data-empty?”optional data-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:138
Reflected BY the element while it has nothing to show. Read-only.
AparteConversationListAttributes
Section titled “AparteConversationListAttributes”Defined in: packages/core/src/generated/element-attributes.ts:142
<aparte-conversation-list> — Conversation-history sidebar — a framework-agnostic web component. The host sets the conversations JS property and the active-id attribute; this renders the rows and fires the user’s intent. Acting on it is the host’s, unless manage hands the row menu’s writes to the registered conversation manager.
Properties
Section titled “Properties”active-id?
Section titled “active-id?”optional active-id?: string;Defined in: packages/core/src/generated/element-attributes.ts:144
The id of the conversation to render as selected.
optional flat?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:146
Render the rows flat, in host order, with no date headings.
loading?
Section titled “loading?”optional loading?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:148
The list is on its way: six skeleton rows stand where the rows will be, the element is aria-busy and a visually hidden line names the wait. A list that is not there yet is not an empty list. Set it while your store answers, clear it when you assign conversations.
manage?
Section titled “manage?”optional manage?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:150
Let the list finish the gesture: rename, pin, unpin, archive, unarchive and delete are performed on the conversation manager registered with setConversationManager(), instead of leaving you six listeners to write. The event still fires first, and preventDefault() on it takes the gesture back. Off by default, and selecting stays yours either way.
AparteIconAttributes
Section titled “AparteIconAttributes”Defined in: packages/core/src/generated/element-attributes.ts:154
<aparte-icon> — AparteIcon
Properties
Section titled “Properties”optional name?: string;Defined in: packages/core/src/generated/element-attributes.ts:156
Which glyph to draw. One of the names setIconProvider accepts; an unknown name draws nothing rather than a broken-image box.
AparteOptgroupAttributes
Section titled “AparteOptgroupAttributes”Defined in: packages/core/src/generated/element-attributes.ts:160
<aparte-optgroup> — AparteOptgroup
Properties
Section titled “Properties”label?
Section titled “label?”optional label?: string;Defined in: packages/core/src/generated/element-attributes.ts:162
Group label
collapsible?
Section titled “collapsible?”optional collapsible?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:164
Adds the chevron and the click handler to the header — so it needs a label, and it is read only when that header is first built.
collapsed?
Section titled “collapsed?”optional collapsed?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:166
Collapsed state
loading?
Section titled “loading?”optional loading?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:168
Appends a spinner row to the group; the options stay visible.
AparteOptionAttributes
Section titled “AparteOptionAttributes”Defined in: packages/core/src/generated/element-attributes.ts:172
<aparte-option> — AparteOption
Properties
Section titled “Properties”value?
Section titled “value?”optional value?: string;Defined in: packages/core/src/generated/element-attributes.ts:174
Option value
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:176
Disabled state
selected?
Section titled “selected?”optional selected?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:178
Selected state
data-status?
Section titled “data-status?”optional data-status?: string;Defined in: packages/core/src/generated/element-attributes.ts:180
Free-form status the host sets; styled, never read by core.
AparteProgressSpinnerAttributes
Section titled “AparteProgressSpinnerAttributes”Defined in: packages/core/src/generated/element-attributes.ts:184
<aparte-progress-spinner> — AparteProgressSpinner
Properties
Section titled “Properties”value?
Section titled “value?”optional value?: number;Defined in: packages/core/src/generated/element-attributes.ts:186
Progress percentage 0–100 (omit for indeterminate)
AparteScrollRailAttributes
Section titled “AparteScrollRailAttributes”Defined in: packages/core/src/generated/element-attributes.ts:190
<aparte-scroll-rail> — A rail of ticks beside the transcript — one per turn — that shows where you are in a long conversation and jumps back to any message on a click.
Properties
Section titled “Properties”target?
Section titled “target?”optional target?: string;Defined in: packages/core/src/generated/element-attributes.ts:192
The id of the <aparte-chat> to follow, when the element is not inside it.
every?
Section titled “every?”optional every?: string;Defined in: packages/core/src/generated/element-attributes.ts:194
user (default): one tick per user turn. message: one per message.
data-empty?
Section titled “data-empty?”optional data-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:196
Reflected BY the element while it has fewer than two ticks. Read-only.
AparteSelectAttributes
Section titled “AparteSelectAttributes”Defined in: packages/core/src/generated/element-attributes.ts:200
<aparte-select> — Dropdown select for aparté — a vanilla web component with optional grouping, a search filter and a keyboard-driven listbox.
Properties
Section titled “Properties”value?
Section titled “value?”optional value?: string;Defined in: packages/core/src/generated/element-attributes.ts:202
The selected option’s value.
placeholder?
Section titled “placeholder?”optional placeholder?: string;Defined in: packages/core/src/generated/element-attributes.ts:204
Shown while nothing is selected.
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:206
Blocks opening the dropdown.
searchable?
Section titled “searchable?”optional searchable?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:208
Adds a filter field above the options. Read on the first render only.
optional open?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:210
Reflects (and controls) whether the dropdown is open.
AparteSidebarAttributes
Section titled “AparteSidebarAttributes”Defined in: packages/core/src/generated/element-attributes.ts:214
<aparte-sidebar> — The column beside the chat — conversations, a new-chat button, a search field, an account row — as an element, because it has behaviour: it collapses, it becomes a drawer on a narrow window, and its search field filters the conversation list.
Properties
Section titled “Properties”collapsed?
Section titled “collapsed?”optional collapsed?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:216
Hidden (in the flow) or closed (as a drawer). Reflected; set it to start closed.
breakpoint?
Section titled “breakpoint?”optional breakpoint?: string;Defined in: packages/core/src/generated/element-attributes.ts:218
The window width under which the sidebar becomes a drawer: a length (default 48rem), or none for a column that never does.
data-drawer?
Section titled “data-drawer?”optional data-drawer?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:220
Reflected BY the element while the window is narrower than breakpoint (48rem unless you set it). Read-only.
AparteSplitAttributes
Section titled “AparteSplitAttributes”Defined in: packages/core/src/generated/element-attributes.ts:224
<aparte-split> — Two panes and a draggable seam — a chat beside a preview, an editor, an artifact card.
Properties
Section titled “Properties”position?
Section titled “position?”optional position?: number;Defined in: packages/core/src/generated/element-attributes.ts:226
The primary pane’s size, as a percentage of the container. Reflected on commit, never per drag frame.
orientation?
Section titled “orientation?”optional orientation?: string;Defined in: packages/core/src/generated/element-attributes.ts:228
horizontal (panes side by side, the default) or vertical (stacked). Names the CONTAINER’s axis.
primary?
Section titled “primary?”optional primary?: string;Defined in: packages/core/src/generated/element-attributes.ts:230
start (default) or end: which pane position sizes.
collapsed?
Section titled “collapsed?”optional collapsed?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:232
The primary pane folded to its minimum. Enter on the seam toggles it; a second Enter restores the size it had.
breakpoint?
Section titled “breakpoint?”optional breakpoint?: string;Defined in: packages/core/src/generated/element-attributes.ts:234
Below this width the split shows one pane at a time. A length (default 48rem), or none to never stack.
optional pane?: string;Defined in: packages/core/src/generated/element-attributes.ts:236
start (default) or end: which pane is shown while stacked.
disabled?
Section titled “disabled?”optional disabled?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:238
No drag, no keys, no tab stop; the seam stays drawn.
label?
Section titled “label?”optional label?: string;Defined in: packages/core/src/generated/element-attributes.ts:240
The seam’s accessible name. Defaults to the locale’s splitHandleLabel.
single?
Section titled “single?”optional single?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:242
Show one pane — the one pane names — whatever the width: the seam and the other pane are gone, as under the breakpoint. For a host that decides itself when a second pane exists (a preview with nothing to preview yet). collapsed is not this: it folds the primary pane to --aparte-split-min and keeps the seam. The CSS route, .aparte-split--only-start / --only-end, is the same state for a host that owns its breakpoints.
data-stacked?
Section titled “data-stacked?”optional data-stacked?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:244
Written BY the element while one pane is shown. Read-only; style against it.
AparteSuggestionsAttributes
Section titled “AparteSuggestionsAttributes”Defined in: packages/core/src/generated/element-attributes.ts:248
<aparte-suggestions> — Prompt starters — a row of suggested prompts a reader clicks instead of typing.
Properties
Section titled “Properties”suggestions?
Section titled “suggestions?”optional suggestions?: string;Defined in: packages/core/src/generated/element-attributes.ts:250
The starters, as a JSON array: strings, or { "label", "prompt" } objects when the visible label and the sent text differ. The suggestions PROPERTY takes the same shape without the JSON.
target?
Section titled “target?”optional target?: string;Defined in: packages/core/src/generated/element-attributes.ts:252
The id of the <aparte-chat> whose composer should receive the click, when the element is not inside that composer.
empty-only?
Section titled “empty-only?”optional empty-only?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:254
Shows the row only while the conversation it serves is empty: hidden (hidden) once a message is in its transcript or on its way — a thread being loaded counts — and shown again when the transcript is cleared, by a new chat for instance. The composer’s send hides it at once, before its message lands. The element sets and lifts hidden itself and never lifts one you set. With no transcript to read — a composer outside any chat — the first send hides it until the attribute is removed.
optional mode?: string;Defined in: packages/core/src/generated/element-attributes.ts:256
send (default): the click fills the composer and submits. fill: the click fills the composer and focuses it, so the reader edits first.
data-empty?
Section titled “data-empty?”optional data-empty?: boolean;Defined in: packages/core/src/generated/element-attributes.ts:258
Reflected BY the element while it has no suggestion to show; the stylesheet hides it then. Read-only, do not set it yourself.
AparteElementAttributes
Section titled “AparteElementAttributes”Defined in: packages/core/src/generated/element-attributes.ts:274
Tag name to its attribute surface — the registry every wrapper maps over.
Total by construction: it is generated from the manifest, so an element cannot be missing from it, which is the property a hand-written list could not have.
Properties
Section titled “Properties”aparte-chat
Section titled “aparte-chat”aparte-chat: AparteChatAttributes;Defined in: packages/core/src/generated/element-attributes.ts:275
aparte-chat-bubble
Section titled “aparte-chat-bubble”aparte-chat-bubble: AparteChatBubbleAttributes;Defined in: packages/core/src/generated/element-attributes.ts:276
aparte-chat-status
Section titled “aparte-chat-status”aparte-chat-status: AparteChatStatusAttributes;Defined in: packages/core/src/generated/element-attributes.ts:277
aparte-chat-viewport
Section titled “aparte-chat-viewport”aparte-chat-viewport: AparteChatViewportAttributes;Defined in: packages/core/src/generated/element-attributes.ts:278
aparte-composer
Section titled “aparte-composer”aparte-composer: AparteComposerAttributes;Defined in: packages/core/src/generated/element-attributes.ts:279
aparte-composer-action
Section titled “aparte-composer-action”aparte-composer-action: AparteComposerActionAttributes;Defined in: packages/core/src/generated/element-attributes.ts:280
aparte-composer-add-attachment
Section titled “aparte-composer-add-attachment”aparte-composer-add-attachment: AparteComposerAddAttachmentAttributes;Defined in: packages/core/src/generated/element-attributes.ts:281
aparte-composer-attachments
Section titled “aparte-composer-attachments”aparte-composer-attachments: AparteNoAttributes;Defined in: packages/core/src/generated/element-attributes.ts:282
aparte-composer-cancel
Section titled “aparte-composer-cancel”aparte-composer-cancel: AparteNoAttributes;Defined in: packages/core/src/generated/element-attributes.ts:283
aparte-composer-input
Section titled “aparte-composer-input”aparte-composer-input: AparteComposerInputAttributes;Defined in: packages/core/src/generated/element-attributes.ts:284
aparte-composer-send
Section titled “aparte-composer-send”aparte-composer-send: AparteNoAttributes;Defined in: packages/core/src/generated/element-attributes.ts:285
aparte-composer-toolbar
Section titled “aparte-composer-toolbar”aparte-composer-toolbar: AparteComposerToolbarAttributes;Defined in: packages/core/src/generated/element-attributes.ts:286
aparte-context
Section titled “aparte-context”aparte-context: AparteContextAttributes;Defined in: packages/core/src/generated/element-attributes.ts:287
aparte-conversation-list
Section titled “aparte-conversation-list”aparte-conversation-list: AparteConversationListAttributes;Defined in: packages/core/src/generated/element-attributes.ts:288
aparte-elicitation
Section titled “aparte-elicitation”aparte-elicitation: AparteNoAttributes;Defined in: packages/core/src/generated/element-attributes.ts:289
aparte-icon
Section titled “aparte-icon”aparte-icon: AparteIconAttributes;Defined in: packages/core/src/generated/element-attributes.ts:290
aparte-optgroup
Section titled “aparte-optgroup”aparte-optgroup: AparteOptgroupAttributes;Defined in: packages/core/src/generated/element-attributes.ts:291
aparte-option
Section titled “aparte-option”aparte-option: AparteOptionAttributes;Defined in: packages/core/src/generated/element-attributes.ts:292
aparte-progress-spinner
Section titled “aparte-progress-spinner”aparte-progress-spinner: AparteProgressSpinnerAttributes;Defined in: packages/core/src/generated/element-attributes.ts:293
aparte-scroll-rail
Section titled “aparte-scroll-rail”aparte-scroll-rail: AparteScrollRailAttributes;Defined in: packages/core/src/generated/element-attributes.ts:294
aparte-select
Section titled “aparte-select”aparte-select: AparteSelectAttributes;Defined in: packages/core/src/generated/element-attributes.ts:295
aparte-sidebar
Section titled “aparte-sidebar”aparte-sidebar: AparteSidebarAttributes;Defined in: packages/core/src/generated/element-attributes.ts:296
aparte-split
Section titled “aparte-split”aparte-split: AparteSplitAttributes;Defined in: packages/core/src/generated/element-attributes.ts:297
aparte-suggestions
Section titled “aparte-suggestions”aparte-suggestions: AparteSuggestionsAttributes;Defined in: packages/core/src/generated/element-attributes.ts:298
AparteSelectChangeDetail
Section titled “AparteSelectChangeDetail”Defined in: packages/core/src/primitives/select/aparte-select.ts:7
Properties
Section titled “Properties”value: string;Defined in: packages/core/src/primitives/select/aparte-select.ts:8
label: string;Defined in: packages/core/src/primitives/select/aparte-select.ts:9
previousValue
Section titled “previousValue”previousValue: string;Defined in: packages/core/src/primitives/select/aparte-select.ts:10
Type Aliases
Section titled “Type Aliases”AparteComposerPanelMode
Section titled “AparteComposerPanelMode”type AparteComposerPanelMode = "submit" | "none";Defined in: packages/core/src/components/composer/aparte-composer.ts:26
What the composer’s one button means while a panel is up — and whether it is there at all.
'submit' answers, and 'none' says this panel has NO act left for that button,
so it is not drawn. ('advance' — the button as a “next” through a form — is gone:
the chips are the navigation, and a button that changes meaning under the pointer
was one more thing to explain.)
'none' exists because a panel could not previously say it. The composer’s panel
mode was one fixed policy — hide the input and the attachment picker, keep the
strip and the toolbar, and ALWAYS keep the send button — and the approval panel
showed what that costs: its options settle on the first click by design, so the
button beside them sat permanently disabled, meaning nothing, until the optional
instruction field was opened. A control that is never the way forward is not
disabled, it is absent (ratified decision #8).
Named rather than inlined at each of its six readers: this union is exactly the kind of list this repo has watched drift when every reader kept its own copy.
AparteComposerEventType
Section titled “AparteComposerEventType”type AparteComposerEventType = keyof AparteComposerEventMap;Defined in: packages/core/src/components/composer/aparte-composer.ts:41
AparteContextLevel
Section titled “AparteContextLevel”type AparteContextLevel = "ok" | "warn" | "danger";Defined in: packages/core/src/components/context/aparte-context.ts:5
How full the window is, against the two thresholds.
AparteScrollRailEvery
Section titled “AparteScrollRailEvery”type AparteScrollRailEvery = "user" | "message";Defined in: packages/core/src/components/scroll-rail/aparte-scroll-rail.ts:11
What a tick is drawn for: one per user turn (the default), or one per message.
AparteSuggestion
Section titled “AparteSuggestion”type AparteSuggestion =
| string
| {
label: string;
prompt?: string;
};Defined in: packages/core/src/components/suggestions/aparte-suggestions.ts:12
One prompt starter: the text sent, or a visible label over a longer prompt.
A string is both. The object form is for the case every welcome screen has — “Write a haiku” on the chip, “Write a haiku about web components.” in the request.
AparteNoAttributes
Section titled “AparteNoAttributes”type AparteNoAttributes = Record<never, never>;Defined in: packages/core/src/generated/element-attributes.ts:266
The elements that observe no attribute at all. An empty surface is the honest
declaration — it says “checked, there are none”, where an absent entry would only
say “not looked at”: <aparte-composer-attachments>, <aparte-composer-cancel>, <aparte-composer-send>, <aparte-elicitation>.
AparteElementTagName
Section titled “AparteElementTagName”type AparteElementTagName = keyof AparteElementAttributes;Defined in: packages/core/src/generated/element-attributes.ts:302
Every tag this package defines, derived from the registry so the two cannot diverge.
Event details
Section titled “Event details”AparteActionClickEventDetail
Section titled “AparteActionClickEventDetail”Defined in: packages/core/src/components/composer/aparte-composer-action.ts:197
Detail payload for aparte-action-click.
<aparte-composer-action> is a publicly exported element whose only purpose is
to emit this event, and nothing in core listens for it — so the app IS the
consumer, and it had no type to read e.detail with. The shape was already
published in prose in the generated API reference; this makes it compile.
aparte-action-click
Properties
Section titled “Properties”actionId
Section titled “actionId”actionId: string;Defined in: packages/core/src/components/composer/aparte-composer-action.ts:199
The action-id attribute of the button that was clicked, or ''.
composer
Section titled “composer”composer: AparteComposer | null;Defined in: packages/core/src/components/composer/aparte-composer-action.ts:201
The owning composer, or null when the button is used outside one.
AparteOptgroupToggleEventDetail
Section titled “AparteOptgroupToggleEventDetail”Defined in: packages/core/src/primitives/select/aparte-optgroup.ts:216
Detail payload for aparte-optgroup-toggle.
types/event-map.ts types aparte-optgroup-toggle with this detail, and
@aparte/plugin-model-selector reads both of its fields, from another package,
through an untyped cast — while the event is published in the generated CEM event
table. It is a contract.
aparte-optgroup-toggle
Properties
Section titled “Properties”label: string;Defined in: packages/core/src/primitives/select/aparte-optgroup.ts:218
The group’s label.
collapsed
Section titled “collapsed”collapsed: boolean;Defined in: packages/core/src/primitives/select/aparte-optgroup.ts:220
true when the group just collapsed.