Type aliases
Index
ui/action-button/action-button.ts
Visual variant for the action button - maps to a CSS class.
"primary" | "secondary" | "ghost"feedback/alert/alert.ts
Severity level for the alert - determines visual style, icon, and ARIA role.
"info" | "success" | "warning" | "error"Visibility phase for enter/exit CSS animations.
"hidden" | "entering" | "visible" | "exiting"common/popover/popover.types.ts
ArrowEdgeOpen detail pagePopoverHaspopupOpen detail pagePopoverModeOpen detail pagePopoverPanelRoleOpen detail pagePopoverPlacementOpen detail pagePopoverPositionTryFallbackOpen detail pagePopoverStateOpen detail pageTooltipTriggerModeOpen detail page
Primary edge of the popover panel that faces the trigger after browser-
driven shift / flip recovery. Driven by CngxPopover.resolvedEdge;
consumers projecting a cngxPopoverArrow template receive this value in
the slot context so they can rotate or position their glyph accordingly.
"top" | "bottom" | "left" | "right"Permitted values for aria-haspopup on a popover trigger. Mirrors the
W3C-spec union for popup-container roles plus the bare 'true'
compatibility value. Composers (such as CngxPopoverPanel) write the
popover's haspopup signal to hint the trigger toward the right value
without forcing the consumer to repeat it.
"dialog" | "listbox" | "menu" | "tree" | "true"ARIA roles applicable to a CngxPopoverPanel host element.
"dialog" | "alertdialog" | "tooltip" | "menu" | "group" | "region"Anchor-relative placement of a popover.
"top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end"CSS <try-tactic> keywords for the position-try-fallbacks property
(CSS Anchor Positioning Level 1). Each entry is written verbatim into
the host's position-try-fallbacks style; entries are not resolved
through any cngx mapping table.
The union enumerates both orderings of two-keyword composites
(flip-block flip-inline vs flip-inline flip-block) so consumers
can match the canonical ordering Chrome resolves to when it normalises
the cascaded value. Three-keyword composites are commutative enough
that one form suffices.
Mirrors the precedent in projects/forms/select/shared/select-base.css
which already ships position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline; on select panels.
"flip-block" | "flip-inline" | "flip-start" | "flip-block flip-inline" | "flip-inline flip-block" | "flip-block flip-start" | "flip-start flip-block" | "flip-inline flip-start" | "flip-start flip-inline" | "flip-block flip-inline flip-start"Which event sources may open CngxTooltip.
'auto'(default) - hover and focus open the tooltip with the configuredtooltipDelay/closeDelay.show()andhide()remain available for programmatic overrides.'manual'- hover and focus are inert. Onlyshow()/hide()open or close the tooltip. Escape still dismisses an open tooltip for keyboard accessibility.
"auto" | "manual"interactive/async-click/async-click.directive.ts
core/utils/async-state.ts
Discriminated status of an async operation lifecycle.
"idle" | "loading" | "pending" | "refreshing" | "success" | "error"data/async-state/resolve-view.ts
Possible view states for async content rendering.
"none" | "skeleton" | "content" | "empty" | "error" | "content+error"audio/engine/audio-engine.ts
Lifecycle state of the shared AudioContext, surfaced for debug panels and
headless e2e. Mute is a separate muted signal — this tracks the context,
not the play gate.
"idle" | "suspended" | "running" | "closed" | "unsupported"chart/layers/bar.component.ts
accordion/config/provide-accordion-config.ts
Discriminated-union shape returned by withAccordionLabels /
withDefaultHeadingLevel. The reducer in provideAccordionConfig /
provideAccordionConfigAt matches on kind and writes payload onto the
corresponding config key. Mirrors CngxBreadcrumbConfigFeature from
@cngx/ui/breadcrumb so the consumer's mental model is one across feature
areas.
literal type | literal type | literal type | literal typeaccordion/config/accordion.config.ts
Per-item semantic severity, reflected onto the [data-severity] host
attribute for skins that visualise it (the severity-spine skin maps it to
the --cngx-color-danger / -warning / -info tokens). Structural only - it
changes no ARIA and no behaviour, and unset items simply carry no severity.
"error" | "warning" | "info"Selectable visual skin for <cngx-accordion-group>.
The skin is a pure thematic concern - every value renders the identical
heading / region / marker structure, slots, ARIA, and keyboard behaviour, and
only redirects CSS via the [data-skin] host attribute. Typed class-sugar
(mirrors CngxTabsSkin), not a behaviour-branching mode flag.
'editorial' mono index + hairlines; 'categorized' bordered surface cards;
'plus-minus' one framed surface with a boxed +/- marker; 'lux' generous
whitespace, large type; 'bento' container-query card grid; 'section-bands'
inverted full-width header bands; 'timeline' a rail with per-item nodes;
'severity-spine' a full-height priority spine; 'primary-frame' a solid
primary border + glow on open.
"editorial" | "categorized" | "plus-minus" | "lux" | "bento" | "section-bands" | "timeline" | "severity-spine" | "primary-frame"select/shared/action-select-config.ts
Focus-trap policy for the action-slot workflow:
'dirty'(default) - trap on whileactionDirty()istrue.'always'- trap on whenever the panel is open.'never'- shell never engages the trap; consumer owns focus.
"always" | "dirty" | "never"Slot position inside the panel frame. Default 'bottom'.
"top" | "bottom" | "both" | "none"select/shared/action-host-bridge.ts
select/shared/array-commit-handler.ts
interactive/async-status/async-status.directive.ts
Display bucket a reflector collapses an CngxAsyncState into.
The loading / refreshing busy variants fold into pending for the
visible status, while isBusy carries the full busy set for ARIA.
"idle" | "pending" | "success" | "error"interop/signals/with-cngx-async-state.ts
Store members contributed by withCngxAsyncState(key).
<key>State- the read-onlyCngxAsyncState<T>view, for[state]bindings and theCngxToastOn/CngxAlertOn/CngxBannerOnbridges.<key>Sink- the writableManualAsyncState<T>thattapAsyncStatedrives.
unknownaudio/event-mode/parse-bindings.ts
common/audio/inject-audio.ts
The public audio handle — what injectCngxAudio returns.
An alias for CngxAudioEngine rather than a second interface: the two
contracts were member-for-member identical, so a separate declaration was
duplication, not indirection. The name is kept because it reads better at
call sites (const audio: CngxAudioHandle = injectCngxAudio()), and because
the engine contract is the one an override implements.
audio/tone-generator/tone-generator.ts
chart/axis/axis.component.ts
Axis position. Top/bottom are X-axes; left/right are Y-axes. The
parent <cngx-chart> collects content-child axes and routes their
inputs to its xScale / yScale signals based on this discriminator.
"top" | "right" | "bottom" | "left"Axis scale type. The chart's scale-builder picks the matching
create*Scale factory at the boundary; the axis itself stays
scale-implementation-agnostic.
"linear" | "time" | "band"display/badge/badge.directive.ts
Positioning anchors relative to the host element.
"inline" | "above-start" | "above-end" | "below-start" | "below-end"interactive/breadcrumb/breadcrumb-collapse.ts
A collapse strategy decides which crumb indices fold into the overflow menu.
Pure and synchronous: given the total crumb count and the maxVisible cap it
returns the set of indices to hide. Swap it via
CNGX_BREADCRUMB_COLLAPSE_STRATEGY to change the rule (width-aware,
keep-first-N, mobile parent-only, ...) without forking CngxBreadcrumb.
breadcrumb/config/provide-breadcrumb-config.ts
Discriminated-union shape returned by the breadcrumb config features -
withBreadcrumbAriaLabels, withBreadcrumbDataKey, withBreadcrumbIconKey,
and withBreadcrumbSkin. The reducer in provideBreadcrumbConfig /
provideBreadcrumbConfigAt matches on kind and merges payload into the
corresponding config sub-tree (dataKey and iconKey both land under the
router sub-tree). Mirrors CngxTagConfigFeature from
@cngx/common/display so the consumer's mental model is one across feature
areas.
literal type | literal type | literal typebreadcrumb/config/breadcrumb.config.ts
Selectable visual skin for CngxBreadcrumbBar. Every skin keeps the same
nav / list / crumb / separator structure with identical ARIA and collapse
behaviour, and the [data-skin] host attribute redirects which @scope
paint block applies. Pure paint skins (plain, contained, pill,
ribbon, editorial, header, metro, toolbar, chips) render
identical DOM. The content skins (iconlabel, path, and the content-
structural icononly / shell / record) additionally consume the
projected *cngxBreadcrumbIcon slot - and record the trailing accessory
slot - for per-crumb icon/content markup the consumer supplies; the bar still
carries no skin-conditional template branch, so the slot is inert until
projected (Pillar 3). 'classic' is the bare default (plain link + slash
separator). Mirrors CngxTabsSkin.
"classic" | "plain" | "contained" | "pill" | "ribbon" | "editorial" | "header" | "metro" | "toolbar" | "chips" | "path" | "iconlabel" | "icononly" | "shell" | "record"select/shared/chip-removal-handler.ts
interactive/reorder/chip-strip-roving.ts
data/commit/commit-controller.token.ts
Factory signature for producing CngxCommitController instances. Consumers override the DI token CNGX_COMMIT_CONTROLLER_FACTORY with a custom factory to inject retry-with-backoff, offline queues, telemetry, or any other enterprise-specific commit lifecycle - without forking the features that consume it (select family, stepper, future wizards).
select/shared/commit-error-announcer.ts
Scalar-commit failure announce policy.
verbose- error text verbatim into the live-region at the supplied severity.CngxSelectusesassertive.soft- generic "removed" via the configured announcer format, polite.CngxTypeaheaduses this so the free-text flow isn't interrupted.
literal type | literal typedata/commit/commit-controller.ts
Action runner contract. Receives the controller's success/error routes and returns a cancel handle. The runner is opaque to the controller — it can wrap any async source (Observable, Promise, sync value) and any cancellation primitive.
Variants supply their own runner adapter (e.g. select's
runCommitAction invokes a CngxSelectCommitAction<T>; stepper's
runner adapts a CngxStepperCommitAction); the controller has no
knowledge of the variant-specific action shape.
select/shared/create-commit-handler.ts
Signature of the factory behind CNGX_CREATE_COMMIT_HANDLER_FACTORY.
chart/path/curve.ts
Curve interpolators for line / area path builders. Each function
returns the interior path commands that connect a series of
points; the caller is responsible for the leading M and any
trailing close commands.
Pure TS, no DOM dependency, no Angular dep.
"linear" | "monotone"data-grid-accordion/config/data-grid-accordion.config.ts
Per-row semantic severity, reflected onto the [data-severity] host attribute
for skins that visualise it (the log-stream skin maps it to a coloured left
edge via the --cngx-color-danger / -warning / -info tokens). Structural
only - it changes no ARIA and no behaviour, and unset rows simply carry no
severity.
Re-declared locally as an identical union rather than imported from the
accordion entry, so this entry pulls in nothing from a sibling @cngx/ui
entry. The duplication is a tracked decision, re-evaluated if a shared severity
union lands in @cngx/core.
"error" | "warning" | "info"Selectable visual skin for <cngx-data-grid-accordion>.
The skin is a pure thematic concern - every value renders the identical
header / row / region structure, cells, ARIA, and keyboard behaviour, and only
redirects CSS via the [data-skin] host attribute. Typed class-sugar (mirrors
CngxAccordionSkin), not a behaviour-branching mode flag.
'ledger' zebra rows + sum footer; 'spreadsheet' cell hairlines + row-number
gutter; 'log-stream' mono grid with a severity edge; 'master-detail'
primary-tinted open row + sub-table detail; 'report' frameless double rules;
'density' compact/standard/spacious token hooks.
"ledger" | "spreadsheet" | "log-stream" | "master-detail" | "report" | "density"core/theming/density.ts
The three density rungs the [data-density] scale swap ships
(density-tokens.css). comfortable is the library default;
compact and spacious re-scale --cngx-space-* for the subtree.
"comfortable" | "compact" | "spacious"ui/data-grid-accordion/data-grid-cell.directive.ts
Inline alignment of a data-grid cell within its column track.
"start" | "center" | "end"Column-sizing intent for a data-grid track, authored on the cngxDgaCells of the
CngxDataGridHeader (the single column source). The group derives the
shared grid-template-columns from these:
grow- the flexible column,minmax(0, 1fr); shares the remaining width.fit- content-sized,auto; as wide as its content needs.sm/md/lg- fixed tracks from the--cngx-dga-col-sm|-md|-lgtokens (mirrors thesizevocabulary ofCngxTag/CngxIcon/CngxAvatar).
Unset falls back to the derived default: the primary column grows, every other
column fits.
"grow" | "fit" | "sm" | "md" | "lg"tabs/registry/directive-by-id-map.ts
select/shared/dismiss-handler.ts
select/shared/display-binding.ts
tabs/overflow/dom-anchor-retry.ts
Factory signature for CNGX_DOM_ANCHOR_RETRY_FACTORY - matches createDomAnchorRetry for drop-in overrides.
Outcome reported by an attempt callback. true halts the loop
(success); false or null schedules another tick.
unknown | unknown | nullforms/field/models.ts
A callable that returns a CngxFieldRef - matches the shape of Angular Signal Forms' Field<T>.
// Signal Forms field is already a callable:
const emailField: Field<string> = schema(...);
// Pass directly:
<cngx-form-field [field]="emailField">forms/filter-builder/filter-builder-announcer.ts
forms/filter-builder/filter-builder.glyphs.ts
forms/filter-builder/filter-builder-state.ts
Signature alias for createFilterBuilderState. Allows enterprise
consumers to wrap the default factory with telemetry, persistence, undo
stacks, or other cross-cutting concerns via CNGX_FILTER_BUILDER_STATE_FACTORY
without forking CngxFilterBuilderPresenter. Mirrors the select-family
Cngx*ControllerFactory precedents (e.g. createCommitController +
CNGX_SELECT_COMMIT_CONTROLLER_FACTORY).
Plain-TS state factory for <cngx-filter-builder>. Wraps a single
writable signal as the canonical tree source-of-truth, derives
read-only signals (tree, fieldMap, isEmpty),
exposes path-keyed mutators, and emits a structural lastMutation
event slot the presenter watches to drive announcements. No
inject() calls - the factory is testable without TestBed and
decompose-safe (DI abstraction).
Two-way binding contract - pass the presenter's
model<FilterGroup>() as source. Mutators write through it, so
consumer [(value)] bindings emit on every user-initiated change.
Uncontrolled callers omit source; the factory creates its own
WritableSignal from initial ?? EMPTY_ROOT.
Identity & equality - tree is wrapped with equal: filterTreeEqual
so consumer computeds short-circuit on structural equality. Mutators
are no-op when the requested write would not change the tree.
"add-filter" | "remove-filter" | "add-group" | "remove-group" | "set-logic" | "toggle-negated" | "set-field" | "set-operator" | "set-value" | "clear"forms/filter-builder/filter-builder-template-registry.ts
Factory signature carried by CNGX_FILTER_BUILDER_TEMPLATE_REGISTRY_FACTORY.
unknownforms/filter-builder/filter-builder.config.ts
Editor-registry value type. Either one of the three native sentinels, or
a consumer-supplied component class implementing
CngxFilterEditorComponent (e.g. CngxInput, CngxNumericInput,
CngxDatepickerInput, or any structured custom editor).
Native-input sentinel union. When CNGX_FILTER_BUILDER_CONFIG.editors
maps a key to one of these strings, the filter-builder component (Phase
5) renders the corresponding bare HTML input inline instead of mounting
a custom editor component - keeps the bundle lean for the three builtin
scalar types.
"native:string" | "native:number" | "native:date" | "native:boolean"ui/collection/incremental-list-config.ts
A single configuration override produced by a with* feature factory. The
reducer in provideIncrementalListConfig matches on kind and
shallow-merges payload into the matching sub-tree.
literal type | literal typeui/collection/incremental-list.component.ts
Visual skin. Paint-only - structure, ARIA, and keyboard behaviour are
identical across values; each is reflected onto [data-skin].
plain(default): browser-native list, no chrome.divided: hairline separators between rows.card: the list sits on an elevated, rounded surface.
"plain" | "divided" | "card"select/shared/local-items-buffer.ts
mat-stepper/material-bridge/handle.ts
Factory signature for createMatStepHandle. The DI token CNGX_MAT_STEP_HANDLE_FACTORY resolves to a function with this exact shape - overrides match it identically.
unknownmat-tabs/decorations/half-wired-slot-sink.ts
Sink callback invoked by [cngxMatTabs]'s aggregator-decoration
projector when a consumer wires exactly one of
*cngxMatTabAggregatorContent (the slot template) or
ViewContainerRef (the embedded-view host) — the half-wired-slot
misconfiguration. The projector silently falls back to the
imperative textContent path when this happens; the sink is the
only deliberate signal that the consumer's slot template will not
render.
Override via provideMatTabsConfig(withHalfWiredSlotSink(fn)) to
wire production telemetry (Sentry breadcrumbs, custom logger, CI
fail-fast). The library default is a dev-mode console.warn; the
exported CNGX_DEFAULT_HALF_WIRED_SLOT_SINK value lets test
doubles compose against a stable reference.
mat-tabs/material-bridge/handle.ts
Factory signature for createMatTabHandle. The DI token CNGX_MAT_TAB_HANDLE_FACTORY resolves to a function with this exact shape - overrides match it identically.
unknowninteractive/menu/menu-announcer.ts
Factory shape consumed by CNGX_MENU_ANNOUNCER_FACTORY. The default
factory is createMenuAnnouncer; override returns any object
that satisfies CngxMenuAnnouncerLike.
interactive/menu/menu-config.ts
Single feature-flag function consumed by provideMenuConfig and
provideCngxMenu. Carries a hidden _target discriminator so
future config surfaces (e.g. submenu-only or announcer overrides) can
compose through the same provideCngxMenu aggregator without breaking
the public API of existing with* features.
unknowninteractive/menu/dismiss-handler.ts
Identifier for the dismissal path that fired most recently.
outside-click- pointerdown outside both the popover and the trigger host.scroll- window scroll while the menu is open.blur- window blur (system notification, OS-native context menu overlaying the cngx menu).pointer-cancel- document pointercancel originating OUTSIDE the popover and host (palm rejection from outside the menu, gesture cancelled by the browser). In-menu palm rejections do not dismiss.escape- documentkeydownmatching theEscapekey while the popover is visible. Detected by the factory's capture-phase keydown listener so the source is recorded regardless of where DOM focus sits (trigger button, menu container, or elsewhere).Intent, not effect. The factory records
'escape'synchronously on the keystroke and does NOT callpopover.hide(). Whether the menu actually closes is owned byCngxPopover.closeOnEscape: consumers who set[closeOnEscape]="false"keep their menu open even thoughlastSourcereports'escape'. The other sources (outside-click,scroll,blur,pointer-cancel) callpopover.hide()themselves and so always coincide with an actual close -'escape'is the one source where intent and effect can diverge.
"outside-click" | "scroll" | "blur" | "pointer-cancel" | "escape"interactive/menu/provide-cngx-menu.ts
Union of every feature kind the menu family aggregator accepts. Today
that is only CngxMenuConfigFeature (target 'config'); future surfaces
(e.g. submenu-only or announcer overrides) will widen this union and
provideCngxMenu will dispatch to the matching provide*Config based on
each feature's hidden _target discriminator.
interactive/menu/menu-radio-controller.ts
interactive/listbox/option-container.ts
Discriminated union describing one direct child of a hierarchy-aware
option projection root (e.g. CngxSelectShell).
CngxOption registers as { kind: 'option' }, CngxOptionGroup as
{ kind: 'group' }. Both providers expose useExisting so consumers
can inject(CNGX_OPTION_CONTAINER) and reach the directive instance
through the discriminator.
unknown | unknowntabs/scroll-sync/organism-scroll-sync.ts
tabs/overflow/overflow-template-cascade.ts
Factory signature for CNGX_OVERFLOW_POPOVER_HIGHLIGHT_FACTORY.
ui/overlay/overlay.service.ts
Config accepted by CngxOverlay.open. Partial alias of CDK's OverlayConfig - every field is optional and falls back to the CDK overlay default.
Partialui/paginator/paginator-announcer.ts
ui/paginator/paginator-config.ts
A single configuration override produced by a with* feature factory.
The reducer in provideCngxPaginatorConfig matches on kind and
shallow-merges payload into the matching sub-tree - except
pageSizeOptions, whose payload replaces the list wholesale.
literal type | literal type | literal type | literal type | literal typeui/paginator/paginator.component.ts
Density preset. Shifts spacing/hit-target tokens; orthogonal to skin.
"compact" | "default" | "comfortable"Visual skin. Paint-only - structure, ARIA, and keyboard behaviour are identical across values.
"numbered" | "minimal" | "pill" | "segmented" | "rail" | "dots" | "bar"paginator/segments/paginator-page-window.token.ts
The shape an override must match to swap the page-window computation.
The page-window computation cngx-pgn-pages calls per recompute: given the
current 0-based page, the total page count, and the per-instance
siblingCount / boundaryCount, return the rendered PageWindow.
An override implements a different truncation algorithm while still honouring the consumer's sibling / boundary intent.
select/shared/panel-lifecycle-emitter.ts
Factory signature for CNGX_PANEL_LIFECYCLE_EMITTER_FACTORY.
select/shared/panel-renderer.ts
forms/input/password-strength.factory.ts
Pure estimator signature: maps a raw password to a PasswordStrengthResult.
Swap the default app-wide through CNGX_PASSWORD_STRENGTH_FACTORY (e.g.
a zxcvbn-backed estimator) without touching CngxPasswordStrength.
Coarse password-strength label paired with the 0..4 score. The four labels
map onto the five scores so a score of 0 and 1 both read as 'weak'.
"weak" | "fair" | "good" | "strong"select/shared/projected-option-model.ts
select/shared/reorder-commit-handler.ts
Signature of the factory behind CNGX_REORDER_COMMIT_HANDLER_FACTORY.
interactive/reorder/reorder.directive.ts
Modifier key that arms the keyboard-reorder handler. Plain arrow keys keep their default meaning (focus navigation) - only the configured modifier + arrow produces a move.
"ctrl" | "alt" | "meta"select/shared/scalar-commit-handler.ts
select/shared/search-effects.ts
select/shared/provide-cngx-select.ts
Feature union for provideCngxSelect / provideCngxSelectAt.
The hidden _target discriminator routes each feature to its
underlying provider (select/action/reorderable).
select/shared/template-slots.ts
Selection-indicator slot context. Discriminated on variant - radio
has no indeterminate; narrow on variant before reading.
select/shared/commit-action.types.ts
CngxSelectCommitActionOpen detail pageCngxSelectCommitErrorDisplayOpen detail pageCngxSelectCommitModeOpen detail page
Async write handler invoked on a pick when [commitAction] is bound.
Receives the intended value (undefined on clear). Resolves to the
committed value - typically the intended value, or a server-normalised
variant.
Default error UI when no *cngxSelectCommitError slot is projected.
'banner'(default) - top-of-panel banner.'inline'- indicator next to the offending option row.'none'- no built-in UI; bridge viaCngxToastOnetc.
"inline" | "banner" | "none"Panel UX during an in-flight commit. Consecutive picks supersede.
'optimistic'(default) - panel closes, trigger shows intended value, rolls back on error.'pessimistic'- panel stays open, option-row spinner, trigger disabled. Closes on success; stays open on error with inline UI.
select/shared/commit-controller.token.ts
Factory signature for CngxCommitController instances scoped to the select family. Override this token (retry-with-backoff, offline queues, telemetry) without touching call sites.
shared/internal/select-core.ts
select/shared/create-action.types.ts
core/utils/selection-controller.ts
Factory signature for SelectionController — the exact shape of createSelectionController, carried as a DI-overridable symbol so consumers can swap the selection engine app-wide (telemetry wrappers, audit logging, server-synced selections, …) without forking any component that depends on it.
select/shared/config.ts
CngxSelectLoadingVariantOpen detail pageCngxSelectRefreshingVariantOpen detail pageCngxSelectSelectionIndicatorPositionOpen detail pageCngxSelectSelectionIndicatorVariantOpen detail page
First-load async view variant. Per-instance *cngxSelectLoading wins.
"skeleton" | "spinner" | "bar" | "text"Subsequent-load indicator overlaying visible options. Per-instance
*cngxSelectRefreshing wins. 'none' suppresses.
"bar" | "spinner" | "dots" | "none"Selection-indicator position relative to the option label.
"before" | "after"Selection-indicator glyph.
'auto'-'checkbox'for multi/combobox,'checkmark'for single.'checkbox'- bordered checkbox.'checkmark'- bare checkmark.'radio'- dot-in-circle. Single-select intent; multi panels render it but the exclusive-selection visual is misleading there.
"auto" | "checkbox" | "checkmark" | "radio"select/shared/option.model.ts
Mixed flat-or-grouped options accepted by [options] in data-driven mode.
unknowninteractive/slider/range-slider.token.ts
display/stat/stat.token.ts
common/stepper/presenter.directive.ts
common/stepper/commit-handler.ts
Factory signature for CngxStepperCommitHandler. Override CNGX_STEPPER_COMMIT_HANDLER_FACTORY for retry-with-backoff, telemetry, or offline queues.
common/stepper/stepper-config.ts
CngxStepperConfigFeatureOpen detail pageCngxStepperDensityOpen detail pageCngxStepperGroupCollapseOpen detail pageCngxStepperGroupSummaryOpen detail pageCngxStepperHeaderNavigationOpen detail pageCngxStepperMobileCollapseOpen detail pageCngxStepperMobileIndicatorPositionOpen detail pageCngxStepperSkinOpen detail page
Feature signature - each with* builder reduces over the config.
Hidden _target: 'config' discriminator routes through the family
aggregator provideCngxStepper.
unknownSpace-driven density policy for the classic <cngx-stepper> strip.
'auto' degrades the strip on its own container width
(full labels -> ellipsis-truncated -> indicators-only with the active
label kept); 'comfortable' (default) keeps full labels at every
width. Orthogonal to mobileCollapse and groupCollapse; the
Material twin ignores this setting.
"comfortable" | "auto"Focus-driven group-collapse policy for grouped <cngx-stepper> flows.
'expand-active' collapses every non-active cngxStepGroup branch to
its header node and expands only the group holding the active step;
'off' (default) keeps every group's children rendered in the strip -
the browser-native baseline. Orthogonal to the mobileCollapse axis;
the two never edit each other. The Material twin ([cngxMatStepper])
ignores this setting.
"expand-active" | "off"What a collapsed cngxStepGroup header shows next to its label under
groupCollapse: 'expand-active'. 'progress' (default) shows
completed/total steps; 'count' shows the step count; 'status'
shows a status dot coloured by the group's rolled-up state; 'off'
shows the bare label. Only ever rendered on a collapsed group header.
"progress" | "count" | "status" | "off"Mobile auto-collapse target. Under a narrow viewport
(max-width: 480px), <cngx-stepper> falls back to one of the
compact variants instead of rendering the full strip. Set to
'off' to retain the classic strip on every viewport.
"text" | "dots" | "off"Where the mobile auto-collapse indicator (text caption or dot row)
sits relative to the active step's panel content under narrow
viewports. 'top' (default) keeps the indicator above the panel;
'bottom' flips it below so the user reads content first and the
navigation cue sits at the thumb zone. Ignored when the classic
strip is on screen (displayMode === 'classic').
"top" | "bottom"Selectable visual skin for the cngx-standard stepper. The skin is a
pure thematic concern - every value renders the same structure, same
slots, same ARIA, same keyboard behaviour, and only redirects CSS via
the [data-skin] host attribute. The Material twin
(<cngx-mat-stepper>) ignores this setting.
"classic" | "linear-minimal" | "stripe-status-rich" | "path-chevron" | "pill-segment" | "chips" | "breadcrumb"common/stepper/provide-cngx-stepper.ts
Union of every feature kind provideCngxStepper accepts. Today:
config (CNGX_STEPPER_CONFIG) and i18n (CNGX_STEPPER_I18N). Future
surfaces widen this union and dispatch via the hidden _target
discriminator.
stepper/i18n/stepper-i18n.ts
Feature shape consumed by provideStepperI18n and provideCngxStepper.
Hidden _target: 'i18n' discriminator routes through the family aggregator.
Sibling of CngxTabsI18nFeature.
unknownPartial-override shape for withStepperI18nLabels. Behaves as
Partial<CngxStepperI18n> for top-level keys, plus a nested partial
for CngxStepperStatusLabels so consumers can override one
pill label without restating the full status-label bundle.
unknowncommon/stepper/stepper-host.token.ts
Status enum for a single step. Driven by the presenter's commit-controller
lifecycle plus the optional errorAggregator.
"idle" | "pending" | "success" | "error" | "disabled" | "busy"common/stepper/strip-density.ts
Resolved density rung for the classic <cngx-stepper> strip.
'full' shows every label; 'compact' ellipsis-truncates labels;
'minimal' drops to indicators-only (the active step keeps its
label). Orthogonal to the mobileCollapse display-mode union.
"full" | "compact" | "minimal"common/tabs/tabs-config.ts
CngxTabAlignOpen detail pageCngxTabIconLayoutOpen detail pageCngxTabsConfigFeatureOpen detail pageCngxTabsPanelModeOpen detail pageCngxTabsSkinOpen detail page
Horizontal alignment of the tab cluster along the strip, set via the
[tabAlign] Input and reflected onto [data-tab-align]. 'start'
(default), 'center', or 'end'. Horizontal only - ignored under
orientation="vertical" (tabs fill the column) and when [fitted]
stretches them to the full width.
"start" | "center" | "end"Icon-layout axis for <cngx-tab-group>, orthogonal to both skin and
orientation.
Positions the *cngxTabIcon slot relative to the tab
label: 'start' (default) places the icon before the label in a row;
'end' places it after the label in a row; 'top' stacks the icon
above the label in a column; 'only' hides the label visually while
keeping it in the DOM as the accessible name.
Redirected purely via
the [data-icon-layout] host attribute.
"start" | "end" | "top" | "only"Feature signature for with* config builders.
The hidden _target discriminator lets provideCngxTabs dispatch
config features to provideTabsConfig while i18n features
route to provideTabsI18n.
unknownPanel render strategy for <cngx-tab-group>.
The panel <div> (the aria-controls target) always stays in the DOM; only its content is
rendered per mode. 'eager' (default) renders every panel's content
up front and toggles visibility via [hidden] - today's behaviour,
byte-identical. 'lazy' renders a panel's content the first time it
is activated and keeps it (keep-alive). 'lazy-destroy' renders only
the active panel's content and destroys it on leave.
"eager" | "lazy" | "lazy-destroy"Selectable visual skin for <cngx-tab-group>.
The skin is a pure thematic concern - every value renders the same tablist / tab /
tabpanel structure, slots, ARIA, and keyboard behaviour, and only
redirects CSS via the [data-skin] host attribute. 'line'
(default) is the underline indicator; 'contained' fuses the active
tab with the panel surface; 'segmented' sits the tabs in a muted
track and lifts the active tab onto a raised surface; 'pill'
renders rounded solid fills; 'pill-outline' renders the same pill
geometry with a tinted, outlined active state instead of a solid
fill.
Sized to the tab use cases - not a 1:1 copy of the stepper's
seven skins. The Material twin ([cngxMatTabs]) ignores this setting.
"line" | "contained" | "segmented" | "pill" | "pill-outline"tabs/overflow/dom-adapter.ts
Factory signature for CNGX_TAB_OVERFLOW_DOM_ADAPTER_FACTORY.
common/tabs/presenter.directive.ts
common/tabs/commit-handler.ts
Factory signature for CNGX_TABS_COMMIT_HANDLER_FACTORY. Override to wrap the default with retry-with-backoff, telemetry, or offline queues.
common/tabs/provide-cngx-tabs.ts
Union of feature kinds the tabs aggregator accepts.
Today: config and i18n; future surfaces widen the union and dispatch via the
hidden _target discriminator.
tabs/i18n/tabs-i18n.ts
Branded feature-fn for provideTabsI18n and
provideCngxTabs. The hidden _target discriminator routes
i18n features to provideTabsI18n and config features to
provideTabsConfig from the unified aggregator.
unknowndisplay/tag/tag.directive.ts
Semantic colour key. The five named values cascade through the
matching --cngx-tag-{name}-bg/-color/-border custom properties
with English-readable fallback hex values (see tag.css).
Open-ended (string & {}) accepts any consumer-defined palette
key (e.g. 'my-brand'); the directive emits it as a data-color
attribute so consumers can author [data-color="my-brand"]
styles against their own design tokens. Re-evaluation trigger
toward a withTagColors() cascade is tracked in
display-accepted-debt.md §1.
"neutral" | "success" | "warning" | "error" | "info" | unknownDensity. md is the default. Each step scales padding + font-size
via the --cngx-tag-{sm|lg|xl}-padding and matching font-size
custom properties (see tag.css). Sizing of nested atoms
(cngx-icon, cngx-avatar) is the consumer's call - Tag does not
cascade a sub-token contract.
"sm" | "md" | "lg" | "xl"Visual variant. filled is the default solid pill; outline swaps fill for border; subtle softens both.
"filled" | "outline" | "subtle"tag/config/provide-tag-config.ts
Discriminated-union shape returned by withTagDefaults /
withTagGroupDefaults / withTagColors / withTagSlots. The
reducer in provideTagConfig / provideTagConfigAt matches on
kind and merges payload into the corresponding config sub-tree.
Mirrors the CngxSelectConfigFeature discriminated-union shape
from @cngx/forms/select so the consumer's mental model is one
across feature areas.
literal type | literal type | literal type | literal typedisplay/tag-group/tag-group.component.ts
Cross-axis distribution of projected tags within the flex-wrap row.
Resolves to a justify-content value:
start(default) →flex-startcenter→centerend→flex-endbetween→space-between
Only meaningful when the group has more horizontal room than its intrinsic content; otherwise the row hugs its tags.
"start" | "center" | "end" | "between"Spacing between projected tags. Maps to the
--cngx-tag-group-gap{,-xs,-md} CSS custom property cascade with
fallback defaults (see tag-group.component.css). sm is the
default - matches the tag's own padding rhythm.
xs→ 0.25rem (tight chip strips)sm→ 0.5rem (default)md→ 0.75rem (roomy taxonomy clusters)
"xs" | "sm" | "md"select/shared/template-registry.ts
interactive/tree-controller/tree-controller.ts
select/tree-select/tree-select.model.ts
Action reported on CngxTreeSelectChange.action. Split out for
switch-style narrowing without importing the change interface.
'toggle'- single node flipped.'cascade-toggle'- parent toggle propagated to all descendants atomically (requires[cascadeChildren]="true").'clear'- full selection cleared.
"toggle" | "cascade-toggle" | "clear"select/shared/trigger-focus.ts
common/popover/floating-fallback.ts
display/shared/delta-format.ts
Pure, framework-agnostic helpers that turn a signed delta value into the three orthogonal signals a KPI atom renders: direction (which way the arrow points), sentiment (whether the change is good or bad, which drives colour and the SR word), and the formatted magnitude.
Direction and sentiment are deliberately separate. CngxTrend colours by
direction (up = green); CngxDelta colours by sentiment, so a value that
dropped can still read as an improvement (churn down, latency down). Both
consume these helpers so the direction / glyph / format logic has a single
source of truth (Pillar 1) with no Angular dependency.
"up" | "down" | "flat"Percent (default, one fraction digit + %) or a locale-formatted absolute number.
"percent" | "absolute"How to read the sign of a delta. neutral disables sentiment entirely
(direction still renders, colour stays neutral).
"higher-is-better" | "lower-is-better" | "neutral"Good / bad / indifferent, derived from direction × polarity.
"positive" | "negative" | "neutral"dialog/dialog/dialog-ref.ts
paginator/segments/paginator-dots.component.ts
Resting size tier of a rendered dot. Edge dots shrink (iOS page-control).
"full" | "medium" | "small"layout/drawer/drawer-panel.directive.ts
layout/drawer/drawer.directive.ts
common/card/card.types.ts
Reason why a card grid is empty — drives empty-state template selection.
"first-use" | "no-results" | "cleared"forms/field/form-field.token.ts
Custom error visibility strategy. Returns true when errors should be
visible to the user.
Built-in error visibility strategies used by withErrorStrategy.
"onTouched" | "onDirty" | "onSubmit" | "onTouchedOrSubmit" | "always"forms/filter-builder/filter-builder.types.ts
Editor-type discriminator. Used as the key into CNGX_FILTER_EDITORS.
The library ships defaults for the four
builtin keys ('string', 'number', 'date', 'boolean');
consumers add custom editor types freely.
"and" | "or" | "xor"Discriminated union - every node in the tree is either a group or an expression.
FilterGroup | FilterExpressionforms/input/input-format.directive.ts
audio/autoplay-gate/autoplay-gate.ts
A minimal EventTarget surface — only what the gate installs. Accepting
this narrow shape (rather than a concrete Document) keeps the factory
inject-free and trivially fakeable in a spec.
Pickforms/input/input-config.ts
forms/input/input-filter.directive.ts
Allowed-character pattern for CngxInputFilter. The three string
presets cover the common cases; a RegExp must match a single allowed
character (it is tested per code point, not against the whole string).
"digits" | "alpha" | "alphanumeric" | RegExpchart/path/path-builder.ts
Reads the X value of a data row at index i. Default behaviour
(when omitted on a builder) is the row's positional index.
interactive/listbox/listbox-search.directive.ts
feedback/loading/loading-indicator.ts
input/mask-presets/registry.ts
Built-in mask-preset table keys. date covers both the long and short date
tables (they ship in one module).
"phone" | "date" | "iban" | "zip"forms/input/input-mask.directive.ts
paginator/segments/paginator-nav.component.ts
paginator/segments/page-model.ts
One slot in the rendered page row: a page button or a truncation gap.
literal type | literal typeinteractive/button-toggle/button-toggle.directive.ts
SingleResolution | MultiResolution forms/input/phone-metadata.ts
Per-region map of the national-number prefixes that identify each line type. This carries the consumer's own numbering data only - cngx ships none, in line with CngxPhoneMetadata keeping numbering metadata out of the library.
A single national-prefix rule: a literal prefix matched with startsWith
('0664' minus the trunk 0 is '664'), or a RegExp matched against the
start of the national digits (/^1[567]/). Only start-anchored matches count
as a prefix; a RegExp that matches mid-number is ignored.
string | RegExpcommon/popover/popover-action.component.ts
Visual variant for the action button.
"primary" | "secondary" | "danger" | "ghost"common/popover/popover-panel.types.ts
feedback/loading/progress.ts
chart/chart/chart-context.ts
Generic scale function shape. Maps a domain value of type TIn to a
range value (typically a pixel coordinate). Mirrors the result type
of every create*Scale factory in @cngx/common/chart.
Numeric input shape every concrete scale accepts. Linear scales take
number, time scales take Date | number, band scales take string
or arbitrary references via createBandScale's generic. The
union narrows at the layer atom ([cngxLine], [cngxBar], ...);
the chart context surface stays scale-agnostic.
number | Date | stringchart/layers/scatter.component.ts
display/segmented-progress/segmented-progress.component.ts
State of a single segment in a CngxSegmentedProgress.
"done" | "active" | "todo" | "error"ui/layout/stack.component.ts
display/status/status.component.ts
interactive/gestures/swipe-direction.ts
Axis a swipe gesture is allowed to register on. 'x' accepts
left/right, 'y' accepts up/down, 'both' accepts any dominant axis.
"x" | "y" | "both"Swipe direction - matches drawer positions for natural composition.
"left" | "right" | "up" | "down"feedback/toast/toast-outlet.ts
Position for the toast stack.
"top-start" | "top-center" | "top-end" | "bottom-start" | "bottom-center" | "bottom-end"