@kouji-ui/components 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/kouji-ui-components.mjs +2773 -267
- package/fesm2022/kouji-ui-components.mjs.map +1 -1
- package/package.json +40 -2
- package/types/kouji-ui-components.d.ts +947 -29
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import * as i1 from '@kouji-ui/core';
|
|
2
|
-
import { KjAlertMode, KjAvatarShape, KjBadgeVariant, KjButtonGroupOrientation, KjCarousel, KjLiveRegion, KjCarouselSlide, KjCarouselAlign, KjColorFormat, KjColorPreset, KjColorValue, KjColorPicker, KjCombobox, KjOverlayTriggerLike, KjDatePicker, KjFileRejection, KjUploadableFile, KjFileUpload, KjInput, KjDividerOrientation, KjDividerAlign, KjListAs, KjListOrientation, KjPasswordAutocomplete, KjPasswordScore, KjSkeletonShape, KjSkeletonAnimation, KjSpinnerAnimation, KjResourceResult, KjStorageAdapter, KjTableState, KjTable, KjNumberFilterType, KjTabPanel, KjTextareaResize, KjTextareaAutoresize, KjHourCycle, TimeParts, KjToastVariant, KjCascadeSelectOption, KjTreeSelect, KjTreeNode } from '@kouji-ui/core';
|
|
3
|
-
export { KJ_DROPDOWN_MENU, KjAvatarGroupAriaLabelFormat, KjBlockquote, KjCarouselAlign, KjCarouselControlPattern, KjCarouselOrientation, KjChatRole, KjChatSide, KjChatState, KjCode, KjColorFormat, KjColorPreset, KjColorValue, KjDialog, KjDialogOpenOptions, KjDialogRef, KjDialogService, KjDrawer, KjDrawerOpenOptions, KjDrawerRef, KjDrawerService, KjDrawerSide, KjDropdownMenuCloseReason, KjDropdownMenuContent, KjDropdownMenuContext, KjDropdownMenuGroup, KjDropdownMenuItem, KjDropdownMenuLabel, KjDropdownMenuMount, KjDropdownMenuSeparator, KjDropdownMenuTrigger, KjDropdownMenuTriggerKind, KjLead, KjMuted, KjPopoverArrow, KjPopoverClose, KjPopoverContent, KjPopoverTitle, KjPopoverTrigger, KjSpeedDialDirection, KjTooltipArrow, KjTooltipContent, KjTooltipGroup, KjTooltipTrigger, KjTruncate } from '@kouji-ui/core';
|
|
2
|
+
import { KjAlertMode, KjAvatarShape, KjBadgeVariant, KjButtonGroupOrientation, KjCarousel, KjLiveRegion, KjCarouselSlide, KjCarouselAlign, KjChatStore, KjChatAnnouncer, KjChatMessageData, KjSlashCommand, KjColorFormat, KjColorPreset, KjColorValue, KjColorPicker, KjCombobox, KjOverlayTriggerLike, KjDatePicker, KjDateRange as KjDateRange$1, KjDateRangePreset, KjEditorLanguage, KjEditorLineNumbers, KjEditorWordWrap, KjEditorInstance, KjFileRejection, KjUploadableFile, KjFileUpload, KjInput, KjDividerOrientation, KjDividerAlign, KjListAs, KjListOrientation, KjPasswordAutocomplete, KjPasswordScore, KjRichTextFeature, KjRichTextEditor, KjRteToolbarItem, KjActiveOverlay, KjSkeletonShape, KjSkeletonAnimation, KjSpinnerAnimation, KjResourceResult, KjStorageAdapter, KjTableState, KjTable, KjNumberFilterType, KjTabPanel, KjTextareaResize, KjTextareaAutoresize, KjHourCycle, TimeParts, KjToastVariant, KjCascadeSelectOption, KjTreeSelect, KjTreeNode } from '@kouji-ui/core';
|
|
3
|
+
export { KJ_DROPDOWN_MENU, KjAvatarGroupAriaLabelFormat, KjBlockquote, KjCarouselAlign, KjCarouselControlPattern, KjCarouselOrientation, KjChatRole, KjChatSide, KjChatState, KjCode, KjColorFormat, KjColorPreset, KjColorValue, KjDialog, KjDialogOpenOptions, KjDialogRef, KjDialogService, KjDrawer, KjDrawerOpenOptions, KjDrawerRef, KjDrawerService, KjDrawerSide, KjDropdownMenuCloseReason, KjDropdownMenuContent, KjDropdownMenuContext, KjDropdownMenuGroup, KjDropdownMenuItem, KjDropdownMenuLabel, KjDropdownMenuMount, KjDropdownMenuSeparator, KjDropdownMenuTrigger, KjDropdownMenuTriggerKind, KjLead, KjMuted, KjOverlayPanel, KjOverlayTriggerLike, KjPopoverArrow, KjPopoverClose, KjPopoverContent, KjPopoverTitle, KjPopoverTrigger, KjSheet, KjSheetDetent, KjSheetOpenOptions, KjSheetRef, KjSheetService, KjSpeedDialDirection, KjTooltipArrow, KjTooltipContent, KjTooltipGroup, KjTooltipTrigger, KjTruncate, SHEET_ARIA_LABEL, SHEET_DATA, SHEET_DETENT, SHEET_DISMISSIBLE } from '@kouji-ui/core';
|
|
4
4
|
import * as _angular_core from '@angular/core';
|
|
5
|
-
import { TemplateRef, ModelSignal, AfterViewInit, OnDestroy, EventEmitter, EnvironmentProviders,
|
|
5
|
+
import { TemplateRef, ModelSignal, AfterViewInit, ElementRef, OnDestroy, EventEmitter, EnvironmentProviders, OnInit, Injector, ResourceRef, Type, InjectionToken } from '@angular/core';
|
|
6
6
|
import { ControlValueAccessor, FormControl } from '@angular/forms';
|
|
7
7
|
import * as _tanstack_angular_table from '@tanstack/angular-table';
|
|
8
8
|
import { RowData, Cell, Row, Header, Column, Table } from '@tanstack/angular-table';
|
|
9
|
+
import { Observable } from 'rxjs';
|
|
10
|
+
import { EChartsOption } from 'echarts';
|
|
11
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
12
|
+
import * as monaco_editor from 'monaco-editor';
|
|
9
13
|
import { VirtualItem } from '@tanstack/virtual-core';
|
|
10
14
|
|
|
11
15
|
/**
|
|
@@ -116,6 +120,142 @@ declare class KjAccordionContentComponent {
|
|
|
116
120
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjAccordionContentComponent, "kj-accordion-content", never, {}, {}, never, ["*"], true, never>;
|
|
117
121
|
}
|
|
118
122
|
|
|
123
|
+
/** Presentation role of an action-sheet row. */
|
|
124
|
+
type KjActionSheetRole = 'default' | 'destructive';
|
|
125
|
+
/** A single selectable action in an action sheet. */
|
|
126
|
+
interface KjActionSheetAction<V = unknown> {
|
|
127
|
+
/** Visible label. */
|
|
128
|
+
label: string;
|
|
129
|
+
/** Value resolved through the ref when this action is chosen. */
|
|
130
|
+
value: V;
|
|
131
|
+
/** Optional leading lucide icon name. */
|
|
132
|
+
icon?: string;
|
|
133
|
+
/** `'destructive'` renders danger styling. Defaults to `'default'`. */
|
|
134
|
+
role?: KjActionSheetRole;
|
|
135
|
+
/** Whether the row is non-interactive. */
|
|
136
|
+
disabled?: boolean;
|
|
137
|
+
}
|
|
138
|
+
/** Configuration for {@link KjActionSheetService.open}. */
|
|
139
|
+
interface KjActionSheetOptions<V = unknown> {
|
|
140
|
+
/** Optional heading shown above the actions. */
|
|
141
|
+
title?: string;
|
|
142
|
+
/** Optional supporting text below the title. */
|
|
143
|
+
description?: string;
|
|
144
|
+
/** The selectable actions, top to bottom. */
|
|
145
|
+
actions: KjActionSheetAction<V>[];
|
|
146
|
+
/** Label for the separated cancel row. Defaults to `'Cancel'`. Pass `null` to omit. */
|
|
147
|
+
cancelLabel?: string | null;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Reference returned by {@link KjActionSheetService.open}. Resolves the chosen
|
|
151
|
+
* action's `value`, or `undefined` when dismissed (Escape / backdrop / cancel).
|
|
152
|
+
*
|
|
153
|
+
* @doc-category Library/Overlay
|
|
154
|
+
*/
|
|
155
|
+
declare class KjActionSheetRef<V = unknown> {
|
|
156
|
+
private readonly sheetRef;
|
|
157
|
+
/** Emits the selected value (or `undefined`) once the sheet has closed. */
|
|
158
|
+
readonly afterClosed$: Observable<V | undefined>;
|
|
159
|
+
/** Promise resolving with the selected value (or `undefined`). */
|
|
160
|
+
readonly result: Promise<V | undefined>;
|
|
161
|
+
constructor(sheetRef: {
|
|
162
|
+
afterClosed$: Observable<V | undefined>;
|
|
163
|
+
result: Promise<V | undefined>;
|
|
164
|
+
close(result?: V): void;
|
|
165
|
+
});
|
|
166
|
+
/** Dismiss the action sheet programmatically. */
|
|
167
|
+
close(result?: V): void;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Programmatic service for opening an **action sheet** — a data-driven,
|
|
171
|
+
* iOS-style list of actions presented in a bottom sheet. Built on
|
|
172
|
+
* {@link KjSheetService}; it adds no new overlay surface, only a styled
|
|
173
|
+
* `role="menu"` action list on top of the bottom-sheet primitive.
|
|
174
|
+
*
|
|
175
|
+
* @doc-category Library/Overlay
|
|
176
|
+
*/
|
|
177
|
+
declare class KjActionSheetService {
|
|
178
|
+
private readonly sheet;
|
|
179
|
+
/**
|
|
180
|
+
* Open an action sheet.
|
|
181
|
+
*
|
|
182
|
+
* @param opts - Title, description, actions, and cancel label.
|
|
183
|
+
* @returns A {@link KjActionSheetRef} resolving the selected value.
|
|
184
|
+
*/
|
|
185
|
+
open<V = unknown>(opts: KjActionSheetOptions<V>): KjActionSheetRef<V>;
|
|
186
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjActionSheetService, never>;
|
|
187
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<KjActionSheetService>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Render body for an action sheet. Rendered programmatically by
|
|
192
|
+
* {@link import('./action-sheet.service').KjActionSheetService} inside the
|
|
193
|
+
* bottom-sheet primitive; reads its config from `SHEET_DATA` and resolves the
|
|
194
|
+
* chosen action's `value` through the {@link KjSheetRef}.
|
|
195
|
+
*
|
|
196
|
+
* The action list is `role="menu"` with `role="menuitem"` rows; each row is a
|
|
197
|
+
* ≥ 44px touch target.
|
|
198
|
+
*
|
|
199
|
+
* @internal
|
|
200
|
+
*/
|
|
201
|
+
declare class KjActionSheet<V = unknown> {
|
|
202
|
+
/** Config injected via `SHEET_DATA` by the action-sheet service. */
|
|
203
|
+
protected readonly config: KjActionSheetOptions<V>;
|
|
204
|
+
private readonly ref;
|
|
205
|
+
protected get cancelLabel(): string | null;
|
|
206
|
+
/** Resolve the chosen action's value and close. */
|
|
207
|
+
protected select(action: KjActionSheetAction<V>): void;
|
|
208
|
+
/** Dismiss with `undefined`. */
|
|
209
|
+
protected cancel(): void;
|
|
210
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjActionSheet<any>, never>;
|
|
211
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjActionSheet<any>, "kj-action-sheet", never, {}, {}, never, never, true, never>;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Service-launched **action sheet** — a data-driven, iOS-style list of actions
|
|
215
|
+
* presented in a bottom sheet. Inject `KjActionSheetService` and call `open()`
|
|
216
|
+
* with a list of actions; selecting one resolves its `value`. Built entirely
|
|
217
|
+
* on the bottom-sheet primitive, so it inherits the same focus trap, scroll
|
|
218
|
+
* lock, drag-to-dismiss, and Escape handling. The wrapper component exists to
|
|
219
|
+
* host this documentation page.
|
|
220
|
+
*
|
|
221
|
+
* @doc
|
|
222
|
+
* @doc-name action-sheet
|
|
223
|
+
* @doc-is-main
|
|
224
|
+
* @doc-example Default
|
|
225
|
+
* A titled action sheet with a destructive action and a cancel row.
|
|
226
|
+
* @doc-file action-sheet.example.ts
|
|
227
|
+
* @doc-example With icons
|
|
228
|
+
* Actions with leading icons; the selected value resolves through the ref.
|
|
229
|
+
* @doc-file action-sheet.icons.example.ts
|
|
230
|
+
*
|
|
231
|
+
* @doc-keyboard
|
|
232
|
+
* Escape — Dismisses the sheet (resolves undefined)
|
|
233
|
+
* Tab / Shift+Tab — Cycles focus across the action rows (focus trap)
|
|
234
|
+
* Enter / Space — Activates the focused action row
|
|
235
|
+
*
|
|
236
|
+
* @doc-aria
|
|
237
|
+
* role — Panel is "dialog"; the action list is "menu" with "menuitem" rows
|
|
238
|
+
* aria-label — The sheet is named by its title (or "Actions" fallback)
|
|
239
|
+
*
|
|
240
|
+
* @doc-touch
|
|
241
|
+
* Every action row and the cancel row is a ≥ 44px touch target (WCAG 2.5.5).
|
|
242
|
+
* The bottom sheet's grab handle dismisses via drag.
|
|
243
|
+
*
|
|
244
|
+
* @doc-a11y
|
|
245
|
+
* Inherits the bottom sheet's a11y contract: focus trapped and restored to
|
|
246
|
+
* the trigger on close, siblings inert while open, only the topmost overlay
|
|
247
|
+
* receives Escape and outside-click. Destructive rows use `--kj-danger-*`
|
|
248
|
+
* tokens which meet AAA contrast in both themes.
|
|
249
|
+
*
|
|
250
|
+
* @doc-related sheet,dialog,dropdown-menu
|
|
251
|
+
*
|
|
252
|
+
* @doc-category Library/Overlay
|
|
253
|
+
*/
|
|
254
|
+
declare class KjActionSheetComponent {
|
|
255
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjActionSheetComponent, never>;
|
|
256
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjActionSheetComponent, "kj-action-sheet-shell", never, {}, {}, never, ["*"], true, never>;
|
|
257
|
+
}
|
|
258
|
+
|
|
119
259
|
/**
|
|
120
260
|
* Styled wrapper around the `KjAlert` directive family. Provides the
|
|
121
261
|
* persistent in-flow notification surface (severity-aware chrome, severity
|
|
@@ -1326,6 +1466,92 @@ declare class KjCarouselPauseComponent {
|
|
|
1326
1466
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjCarouselPauseComponent, "kj-carousel-pause", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1327
1467
|
}
|
|
1328
1468
|
|
|
1469
|
+
/**
|
|
1470
|
+
* Reusable charting surface wrapping Apache ECharts.
|
|
1471
|
+
*
|
|
1472
|
+
* SSR-safe: the ECharts instance is created lazily in the browser only, after
|
|
1473
|
+
* the host element has rendered. `option` changes are pushed through
|
|
1474
|
+
* `setOption`, and a `ResizeObserver` keeps the chart sized to its container.
|
|
1475
|
+
*
|
|
1476
|
+
* ECharts paints into an opaque `<canvas>` that assistive technology cannot
|
|
1477
|
+
* read. The host therefore carries `role="img"` plus a required-in-practice
|
|
1478
|
+
* `ariaLabel`, giving screen readers a one-line description. Pass `caption`
|
|
1479
|
+
* for a longer summary — it renders in a visually-hidden `<span>` wired to the
|
|
1480
|
+
* host via `aria-describedby`, so it is announced even though the host is an
|
|
1481
|
+
* image (a leaf) to AT.
|
|
1482
|
+
*
|
|
1483
|
+
* @example
|
|
1484
|
+
* ```html
|
|
1485
|
+
* <kj-chart [option]="chartOption" height="320px" ariaLabel="Revenue by month" />
|
|
1486
|
+
* ```
|
|
1487
|
+
*
|
|
1488
|
+
* @doc-example Default
|
|
1489
|
+
* The default playground — a labelled bar chart with auto-resize.
|
|
1490
|
+
* @doc-file chart.example.ts
|
|
1491
|
+
* @doc-example Usage
|
|
1492
|
+
* A bar chart and a donut, side by side, each with an accessible name and
|
|
1493
|
+
* summary. Use this as the copy-paste starting point.
|
|
1494
|
+
* @doc-file chart.usage.example.ts
|
|
1495
|
+
* @doc-example Donut
|
|
1496
|
+
* A pie series with an inner radius for part-to-whole breakdowns.
|
|
1497
|
+
* @doc-file chart.donut.example.ts
|
|
1498
|
+
*
|
|
1499
|
+
* @doc-aria
|
|
1500
|
+
* role — Always `img`; the canvas is decorative-with-label
|
|
1501
|
+
* aria-label — Bound from `ariaLabel`; the chart's accessible name
|
|
1502
|
+
* aria-describedby — Present only when `caption` is set; points at the sr-only summary
|
|
1503
|
+
*
|
|
1504
|
+
* @doc-a11y
|
|
1505
|
+
* Screen readers get the `ariaLabel` as the accessible name and, when set,
|
|
1506
|
+
* the `caption` as the accessible description. The host is never focusable
|
|
1507
|
+
* and the canvas takes no tab stop, so keyboard users are not trapped. For
|
|
1508
|
+
* dense data, mirror the series in an adjacent `<table>` or export link.
|
|
1509
|
+
*
|
|
1510
|
+
* @doc-related card,table
|
|
1511
|
+
*
|
|
1512
|
+
* @doc-css-var
|
|
1513
|
+
* --kj-chart-height — Container height. Bound from the `height` input.
|
|
1514
|
+
*
|
|
1515
|
+
* @doc-category Library/Data display
|
|
1516
|
+
* @doc
|
|
1517
|
+
* @doc-name chart
|
|
1518
|
+
* @doc-description Accessible Apache ECharts wrapper with reactive options, auto-resize, and SSR-safe lazy init.
|
|
1519
|
+
* @doc-is-main
|
|
1520
|
+
*/
|
|
1521
|
+
declare class KjChartComponent {
|
|
1522
|
+
/** The ECharts option object driving the chart. */
|
|
1523
|
+
readonly option: _angular_core.InputSignal<EChartsOption | undefined>;
|
|
1524
|
+
/** Container height — number is treated as pixels. Default `'280px'`. */
|
|
1525
|
+
readonly height: _angular_core.InputSignal<string | number>;
|
|
1526
|
+
/** Optional registered ECharts theme name. */
|
|
1527
|
+
readonly theme: _angular_core.InputSignal<string | undefined>;
|
|
1528
|
+
/**
|
|
1529
|
+
* Accessible name for the chart — required in practice. Surfaced via
|
|
1530
|
+
* `role="img"` + `aria-label` so screen readers describe the opaque canvas.
|
|
1531
|
+
* Keep it to a short phrase, e.g. `"Revenue by month"`.
|
|
1532
|
+
*/
|
|
1533
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1534
|
+
/**
|
|
1535
|
+
* Optional longer summary read to screen readers. Rendered in a
|
|
1536
|
+
* visually-hidden `<span>` and linked via `aria-describedby`. Use it to
|
|
1537
|
+
* spell out the takeaway a sighted user gets from the shape of the data.
|
|
1538
|
+
*/
|
|
1539
|
+
readonly caption: _angular_core.InputSignal<string>;
|
|
1540
|
+
/** Stable id linking the sr-only caption span to `aria-describedby`. */
|
|
1541
|
+
protected readonly captionId: string;
|
|
1542
|
+
private readonly host;
|
|
1543
|
+
private readonly platformId;
|
|
1544
|
+
private readonly destroyRef;
|
|
1545
|
+
private chart;
|
|
1546
|
+
private observer;
|
|
1547
|
+
protected readonly resolvedHeight: () => string;
|
|
1548
|
+
constructor();
|
|
1549
|
+
private init;
|
|
1550
|
+
private dispose;
|
|
1551
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjChartComponent, never>;
|
|
1552
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjChartComponent, "kj-chart", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1329
1555
|
/**
|
|
1330
1556
|
* Typed bubble variant set. Mirrors the analysis preset list so consumer
|
|
1331
1557
|
* templates get IDE autocomplete; the underlying `KjVariant` widens to
|
|
@@ -1495,6 +1721,186 @@ declare class KjChatFooterComponent {
|
|
|
1495
1721
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjChatFooterComponent, "kj-chat-footer", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.KjChatFooter; inputs: { "kjState": "kjState"; }; outputs: {}; }]>;
|
|
1496
1722
|
}
|
|
1497
1723
|
|
|
1724
|
+
/**
|
|
1725
|
+
* The AI thread surface: a scrollable message log driven by a {@link KjChatStore}.
|
|
1726
|
+
*
|
|
1727
|
+
* **Reuses `KjChatLog`** (core) for the `role="log"` message-log container, but
|
|
1728
|
+
* sets `kjChatLogLive="off"` because streamed tokens mutate an *existing*
|
|
1729
|
+
* message node — announcing every mutation would spam AT. Instead a single
|
|
1730
|
+
* dedicated **visually-hidden `aria-live="polite"` region** carries
|
|
1731
|
+
* announcements, fed by {@link KjChatAnnouncer}'s **coalescer** so the reply is
|
|
1732
|
+
* announced as whole sentences (never char-by-char, never duplicated). This is
|
|
1733
|
+
* the kit's accessibility differentiator.
|
|
1734
|
+
*
|
|
1735
|
+
* Provider-agnostic: pair with `KjPromptInput` and drive `KjChatStore` from any
|
|
1736
|
+
* model / stream — the kit ships **no** LLM SDK or backend.
|
|
1737
|
+
*
|
|
1738
|
+
* @doc-example Streaming (simulated)
|
|
1739
|
+
* A full send → simulated-stream → reply loop with slash commands, a Stop
|
|
1740
|
+
* button, tool-call cards and citations. No backend — a fake token generator
|
|
1741
|
+
* feeds the store on a timer.
|
|
1742
|
+
* @doc-file ai-chat.example.ts
|
|
1743
|
+
*
|
|
1744
|
+
* @doc-keyboard
|
|
1745
|
+
* Enter — Send the message
|
|
1746
|
+
* Shift+Enter — Insert a newline
|
|
1747
|
+
* Esc — Stop generating (while streaming) / close the slash menu
|
|
1748
|
+
* ArrowUp/Down — Move the slash-command selection
|
|
1749
|
+
*
|
|
1750
|
+
* @doc-aria
|
|
1751
|
+
* role — `log` on the thread container (reuses `KjChatLog`)
|
|
1752
|
+
* aria-live — `off` on the visible log; a dedicated visually-hidden
|
|
1753
|
+
* `polite` region carries coalesced sentence announcements
|
|
1754
|
+
* article — each message is an `article` (via `KjChat`) named by its role
|
|
1755
|
+
*
|
|
1756
|
+
* @doc-a11y
|
|
1757
|
+
* Streaming replies are announced by a coalesced polite live region on
|
|
1758
|
+
* sentence boundaries — never char-by-char — so screen-reader users hear
|
|
1759
|
+
* whole sentences once each. Keyboard send/stop, reduced-motion typing dots,
|
|
1760
|
+
* and ≥44px controls complete the AAA story.
|
|
1761
|
+
*
|
|
1762
|
+
* @doc-related chat,command-palette,textarea
|
|
1763
|
+
*
|
|
1764
|
+
* @doc-category Library/AI
|
|
1765
|
+
* @doc
|
|
1766
|
+
* @doc-name ai-chat
|
|
1767
|
+
* @doc-is-main
|
|
1768
|
+
* @doc-description Provider-agnostic AI chat thread with streaming append, coalesced live-region announcements, slash commands, tool-call cards, and citations.
|
|
1769
|
+
*/
|
|
1770
|
+
declare class KjChatThread {
|
|
1771
|
+
/** The store driving this thread. */
|
|
1772
|
+
readonly store: _angular_core.InputSignal<KjChatStore>;
|
|
1773
|
+
/** Accessible label for the log landmark. */
|
|
1774
|
+
readonly kjLabel: _angular_core.InputSignal<string | undefined>;
|
|
1775
|
+
/** @internal — the coalescing announcer for the polite live region. */
|
|
1776
|
+
readonly announcer: KjChatAnnouncer;
|
|
1777
|
+
private readonly injector;
|
|
1778
|
+
private readonly logEl;
|
|
1779
|
+
private lastId;
|
|
1780
|
+
private lastLen;
|
|
1781
|
+
private prevStatus;
|
|
1782
|
+
constructor();
|
|
1783
|
+
private scrollToBottom;
|
|
1784
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjChatThread, never>;
|
|
1785
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjChatThread, "kj-chat-thread", never, { "store": { "alias": "store"; "required": true; "isSignal": true; }; "kjLabel": { "alias": "kjLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
/**
|
|
1789
|
+
* A parsed markdown block. Prose blocks carry a **pre-sanitised** HTML string
|
|
1790
|
+
* (escaped first, then a whitelist of inline tags applied); code blocks are
|
|
1791
|
+
* kept structural so the view can render a `<pre><code>` with a copy button.
|
|
1792
|
+
*/
|
|
1793
|
+
type KjMdBlock = {
|
|
1794
|
+
readonly kind: 'prose';
|
|
1795
|
+
readonly html: string;
|
|
1796
|
+
} | {
|
|
1797
|
+
readonly kind: 'code';
|
|
1798
|
+
readonly lang: string;
|
|
1799
|
+
readonly code: string;
|
|
1800
|
+
};
|
|
1801
|
+
/**
|
|
1802
|
+
* Parse a lightweight markdown subset into blocks: fenced code blocks
|
|
1803
|
+
* (```lang) become structural `code` blocks; everything else becomes `prose`
|
|
1804
|
+
* blocks with sanitised inline HTML.
|
|
1805
|
+
*
|
|
1806
|
+
* Deliberately minimal (no tables / nested lists) and **self-contained** — the
|
|
1807
|
+
* repo ships no markdown engine on `main`. Swap in a full parser later without
|
|
1808
|
+
* touching the view.
|
|
1809
|
+
*/
|
|
1810
|
+
declare function renderMarkdown(src: string): KjMdBlock[];
|
|
1811
|
+
|
|
1812
|
+
/**
|
|
1813
|
+
* Renders a single AI-thread message. Reuses the core `KjChat` row directive
|
|
1814
|
+
* for `role="article"` + side semantics, and renders the body per role:
|
|
1815
|
+
* user/assistant get a bubble with **safe markdown** (code blocks carry a copy
|
|
1816
|
+
* button), system gets a centered note, tool gets a tool-call card. Assistant
|
|
1817
|
+
* turns also surface tool-call cards, citations, and a reduced-motion typing
|
|
1818
|
+
* indicator while streaming.
|
|
1819
|
+
*
|
|
1820
|
+
* The message is given an `aria-label` (its role name) so AT announces
|
|
1821
|
+
* "Assistant, article" rather than an anonymous region — the visible content is
|
|
1822
|
+
* the message text itself.
|
|
1823
|
+
*
|
|
1824
|
+
* @doc
|
|
1825
|
+
* @doc-name ai-chat
|
|
1826
|
+
*/
|
|
1827
|
+
declare class KjChatMessage {
|
|
1828
|
+
private readonly sanitizer;
|
|
1829
|
+
/** The message to render. */
|
|
1830
|
+
readonly message: _angular_core.InputSignal<KjChatMessageData>;
|
|
1831
|
+
/** User messages sit on the `end` side; everyone else on `start`. */
|
|
1832
|
+
readonly side: _angular_core.Signal<"start" | "end">;
|
|
1833
|
+
readonly roleLabel: _angular_core.Signal<string>;
|
|
1834
|
+
readonly avatarGlyph: _angular_core.Signal<string>;
|
|
1835
|
+
readonly showAvatar: _angular_core.Signal<boolean>;
|
|
1836
|
+
/** Parsed markdown blocks for the body. */
|
|
1837
|
+
readonly blocks: _angular_core.Signal<KjMdBlock[]>;
|
|
1838
|
+
private readonly _copied;
|
|
1839
|
+
readonly copiedIndex: _angular_core.Signal<number | null>;
|
|
1840
|
+
safe(html: string): SafeHtml;
|
|
1841
|
+
copy(code: string, index: number): Promise<void>;
|
|
1842
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjChatMessage, never>;
|
|
1843
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjChatMessage, "kj-chat-message", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1844
|
+
}
|
|
1845
|
+
|
|
1846
|
+
/**
|
|
1847
|
+
* Prompt composer for an AI thread: an auto-growing textarea with send / stop
|
|
1848
|
+
* controls, an optional attachment slot (`[kjPromptAttachments]`), and a
|
|
1849
|
+
* slash-command menu.
|
|
1850
|
+
*
|
|
1851
|
+
* **Keyboard:** `Enter` sends, `Shift+Enter` inserts a newline, `Esc` stops the
|
|
1852
|
+
* stream (when streaming) or closes the slash menu; `↑/↓` move the slash
|
|
1853
|
+
* selection and `Enter` picks it. The menu is a `role="listbox"`; the textarea
|
|
1854
|
+
* keeps DOM focus and points `aria-activedescendant` at the active option.
|
|
1855
|
+
*
|
|
1856
|
+
* **Slash matching reuses the command-palette engine** via
|
|
1857
|
+
* `matchSlashCommands` (backed by the palette's `kjSubstringFilter`).
|
|
1858
|
+
*
|
|
1859
|
+
* @doc
|
|
1860
|
+
* @doc-name ai-chat
|
|
1861
|
+
*/
|
|
1862
|
+
declare class KjPromptInput {
|
|
1863
|
+
private readonly uid;
|
|
1864
|
+
readonly textareaId: string;
|
|
1865
|
+
readonly listboxId: string;
|
|
1866
|
+
/** Two-way bound draft text. */
|
|
1867
|
+
readonly kjValue: _angular_core.ModelSignal<string>;
|
|
1868
|
+
/** Placeholder text. */
|
|
1869
|
+
readonly kjPlaceholder: _angular_core.InputSignal<string>;
|
|
1870
|
+
/** Accessible label for the textarea. */
|
|
1871
|
+
readonly kjLabel: _angular_core.InputSignal<string>;
|
|
1872
|
+
/** When true, show the Stop button instead of Send. */
|
|
1873
|
+
readonly kjStreaming: _angular_core.InputSignal<boolean>;
|
|
1874
|
+
/** Disable the composer entirely. */
|
|
1875
|
+
readonly kjDisabled: _angular_core.InputSignal<boolean>;
|
|
1876
|
+
/** Available slash commands. */
|
|
1877
|
+
readonly kjSlashCommands: _angular_core.InputSignal<readonly KjSlashCommand[]>;
|
|
1878
|
+
/** Emits the trimmed message text on send. */
|
|
1879
|
+
readonly kjSend: _angular_core.OutputEmitterRef<string>;
|
|
1880
|
+
/** Emits when the user requests a stop. */
|
|
1881
|
+
readonly kjStop: _angular_core.OutputEmitterRef<void>;
|
|
1882
|
+
/** Emits the picked slash command. */
|
|
1883
|
+
readonly kjSlashSelect: _angular_core.OutputEmitterRef<KjSlashCommand>;
|
|
1884
|
+
private readonly ta;
|
|
1885
|
+
private readonly _active;
|
|
1886
|
+
readonly activeIndex: _angular_core.Signal<number>;
|
|
1887
|
+
private readonly slash;
|
|
1888
|
+
readonly slashMatches: _angular_core.Signal<KjSlashCommand[]>;
|
|
1889
|
+
readonly slashOpen: _angular_core.Signal<boolean>;
|
|
1890
|
+
constructor();
|
|
1891
|
+
optionId(i: number): string;
|
|
1892
|
+
onInput(ev: Event): void;
|
|
1893
|
+
onKeydown(ev: KeyboardEvent): void;
|
|
1894
|
+
onSubmit(ev: Event): void;
|
|
1895
|
+
onStop(): void;
|
|
1896
|
+
pickSlash(ev: Event, cmd: KjSlashCommand): void;
|
|
1897
|
+
private commitSlash;
|
|
1898
|
+
private send;
|
|
1899
|
+
private autogrow;
|
|
1900
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjPromptInput, never>;
|
|
1901
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjPromptInput, "kj-prompt-input", never, { "kjValue": { "alias": "kjValue"; "required": false; "isSignal": true; }; "kjPlaceholder": { "alias": "kjPlaceholder"; "required": false; "isSignal": true; }; "kjLabel": { "alias": "kjLabel"; "required": false; "isSignal": true; }; "kjStreaming": { "alias": "kjStreaming"; "required": false; "isSignal": true; }; "kjDisabled": { "alias": "kjDisabled"; "required": false; "isSignal": true; }; "kjSlashCommands": { "alias": "kjSlashCommands"; "required": false; "isSignal": true; }; }, { "kjValue": "kjValueChange"; "kjSend": "kjSend"; "kjStop": "kjStop"; "kjSlashSelect": "kjSlashSelect"; }, never, ["[kjPromptAttachments]"], true, never>;
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1498
1904
|
/**
|
|
1499
1905
|
* Styled wrapper around the headless `KjCheckbox` directive.
|
|
1500
1906
|
*
|
|
@@ -2077,6 +2483,70 @@ declare class KjDatePickerComponent {
|
|
|
2077
2483
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjDatePickerComponent, "kj-date-picker", never, { "kjValue": { "alias": "kjValue"; "required": false; "isSignal": true; }; "kjOpen": { "alias": "kjOpen"; "required": false; "isSignal": true; }; "kjMin": { "alias": "kjMin"; "required": false; "isSignal": true; }; "kjMax": { "alias": "kjMax"; "required": false; "isSignal": true; }; "kjDisabledDates": { "alias": "kjDisabledDates"; "required": false; "isSignal": true; }; "kjLocale": { "alias": "kjLocale"; "required": false; "isSignal": true; }; "kjFirstDayOfWeek": { "alias": "kjFirstDayOfWeek"; "required": false; "isSignal": true; }; "kjPlaceholder": { "alias": "kjPlaceholder"; "required": false; "isSignal": true; }; "kjReadonly": { "alias": "kjReadonly"; "required": false; "isSignal": true; }; "kjDisabled": { "alias": "kjDisabled"; "required": false; "isSignal": true; }; "kjSize": { "alias": "kjSize"; "required": false; "isSignal": true; }; }, { "kjValue": "kjValueChange"; "kjOpen": "kjOpenChange"; }, never, never, true, never>;
|
|
2078
2484
|
}
|
|
2079
2485
|
|
|
2486
|
+
/**
|
|
2487
|
+
* Styled Date Range Presets — a compact, keyboard-navigable list of named
|
|
2488
|
+
* quick-selects ("Today", "Last 7 days", "This quarter", …). Picking one
|
|
2489
|
+
* resolves its inclusive `{ start, end }` range and commits the two-way
|
|
2490
|
+
* `kjValue`.
|
|
2491
|
+
*
|
|
2492
|
+
* Built as the reusable presets primitive from the date/time roadmap slice:
|
|
2493
|
+
* it slots beside a range calendar, but works standalone against any
|
|
2494
|
+
* `signal<KjDateRange | null>`.
|
|
2495
|
+
*
|
|
2496
|
+
* **Accessibility (WCAG 2.1 AAA):**
|
|
2497
|
+
* - the list is `role="listbox"` with an accessible name; each preset is a
|
|
2498
|
+
* `role="option"` `<button>` carrying `aria-selected`.
|
|
2499
|
+
* - roving tabindex — one tab stop; Up/Down (and Home/End) move between
|
|
2500
|
+
* options; Enter / Space select (native button activation).
|
|
2501
|
+
* - the selected preset is conveyed by `aria-selected`, not color alone.
|
|
2502
|
+
*
|
|
2503
|
+
* @doc-example Default
|
|
2504
|
+
* The ten built-in presets bound to a `signal<KjDateRange | null>`.
|
|
2505
|
+
* @doc-file date-range-presets.example.ts
|
|
2506
|
+
* @doc-example Custom presets
|
|
2507
|
+
* Spread `defaultDateRangePresets()` and append your own `getRange`.
|
|
2508
|
+
* @doc-file date-range-presets.custom.example.ts
|
|
2509
|
+
*
|
|
2510
|
+
* @doc-keyboard
|
|
2511
|
+
* ArrowDown|ArrowUp — Moves between presets
|
|
2512
|
+
* Home|End — Jumps to the first / last preset
|
|
2513
|
+
* Enter|Space — Selects the focused preset
|
|
2514
|
+
*
|
|
2515
|
+
* @doc-aria
|
|
2516
|
+
* role="listbox" — On the container; `aria-orientation="vertical"`
|
|
2517
|
+
* aria-label — Names the list ("Date range presets" by default)
|
|
2518
|
+
* role="option" — On each preset button
|
|
2519
|
+
* aria-selected — Reflects the chosen preset
|
|
2520
|
+
*
|
|
2521
|
+
* @doc-css-var
|
|
2522
|
+
* --kj-date-range-presets-min-width — Min width of the list. Default 12rem.
|
|
2523
|
+
*
|
|
2524
|
+
* @doc-touch
|
|
2525
|
+
* Preset rows are 44px tall to meet the WCAG 2.5.5 target size.
|
|
2526
|
+
*
|
|
2527
|
+
* @doc-related date-picker,calendar
|
|
2528
|
+
*
|
|
2529
|
+
* @doc-category Library/Data input
|
|
2530
|
+
* @doc
|
|
2531
|
+
* @doc-name date-range-presets
|
|
2532
|
+
* @doc-description Themed listbox of date-range quick-selects that resolve to an inclusive start/end range.
|
|
2533
|
+
* @doc-is-main
|
|
2534
|
+
*/
|
|
2535
|
+
declare class KjDateRangePresetsComponent {
|
|
2536
|
+
/** Selected range. Two-way bindable — `[(kjValue)]`. `null` clears. */
|
|
2537
|
+
readonly kjValue: _angular_core.ModelSignal<KjDateRange$1 | null>;
|
|
2538
|
+
/** Presets to render. Defaults to the ten built-ins. */
|
|
2539
|
+
readonly kjPresets: _angular_core.InputSignal<readonly KjDateRangePreset[]>;
|
|
2540
|
+
/** Accessible name for the list. */
|
|
2541
|
+
readonly kjLabel: _angular_core.InputSignal<string>;
|
|
2542
|
+
/** Injectable "now" for the preset math. Defaults to the current instant. */
|
|
2543
|
+
readonly kjNow: _angular_core.InputSignal<Date | null>;
|
|
2544
|
+
/** Disable the whole list. */
|
|
2545
|
+
readonly kjDisabled: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
|
|
2546
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjDateRangePresetsComponent, never>;
|
|
2547
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjDateRangePresetsComponent, "kj-date-range-presets", never, { "kjValue": { "alias": "kjValue"; "required": false; "isSignal": true; }; "kjPresets": { "alias": "kjPresets"; "required": false; "isSignal": true; }; "kjLabel": { "alias": "kjLabel"; "required": false; "isSignal": true; }; "kjNow": { "alias": "kjNow"; "required": false; "isSignal": true; }; "kjDisabled": { "alias": "kjDisabled"; "required": false; "isSignal": true; }; }, { "kjValue": "kjValueChange"; }, never, never, true, never>;
|
|
2548
|
+
}
|
|
2549
|
+
|
|
2080
2550
|
/** Format a Date as a locale short date + HH:mm time. */
|
|
2081
2551
|
declare function formatDateTime(d: Date, locale: string): string;
|
|
2082
2552
|
/**
|
|
@@ -2210,6 +2680,79 @@ declare class KjDialogComponent {
|
|
|
2210
2680
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjDialogComponent, "kj-dialog-shell", never, {}, {}, never, ["*"], true, never>;
|
|
2211
2681
|
}
|
|
2212
2682
|
|
|
2683
|
+
/**
|
|
2684
|
+
* A visible, keyboard-native control that flips the application's logical text
|
|
2685
|
+
* direction between `ltr` and `rtl`.
|
|
2686
|
+
*
|
|
2687
|
+
* It is the concrete UI the locale provider pointed at: it reads
|
|
2688
|
+
* `KjLocale.isRtl()` and calls `KjLocale.setDirection(...)`. Paired with
|
|
2689
|
+
* `provideKjDocumentDirection()`, one click mirrors the whole page —
|
|
2690
|
+
* `<html dir>` flips and every logical-property layout follows.
|
|
2691
|
+
*
|
|
2692
|
+
* Renders a real `<button type="button">` so it is reachable by Tab and
|
|
2693
|
+
* operable with Enter / Space for free. `aria-pressed` reflects the RTL state
|
|
2694
|
+
* (pressed = RTL), and an accessible name is always present via
|
|
2695
|
+
* `[kjAriaLabel]`. Project custom content to replace the default `LTR` / `RTL`
|
|
2696
|
+
* text label.
|
|
2697
|
+
*
|
|
2698
|
+
* @example
|
|
2699
|
+
* ```html
|
|
2700
|
+
* <kj-direction-toggle />
|
|
2701
|
+
* <kj-direction-toggle kjAriaLabel="Toggle Arabic layout">اتجاه</kj-direction-toggle>
|
|
2702
|
+
* ```
|
|
2703
|
+
*
|
|
2704
|
+
* @doc-example Default
|
|
2705
|
+
* The toggle wired to `KjLocale` — click to flip `<html dir>` and mirror the page.
|
|
2706
|
+
* @doc-file direction-toggle.example.ts
|
|
2707
|
+
*
|
|
2708
|
+
* @doc-keyboard
|
|
2709
|
+
* Enter — Toggles the direction (native button activation)
|
|
2710
|
+
* Space — Toggles the direction (native button activation)
|
|
2711
|
+
* Tab — Moves focus to / from the toggle
|
|
2712
|
+
*
|
|
2713
|
+
* @doc-aria
|
|
2714
|
+
* aria-pressed — Reflects the RTL state (true when direction is rtl)
|
|
2715
|
+
* aria-label — Accessible name; defaults to "Toggle right-to-left layout"
|
|
2716
|
+
* data-direction — Mirrors the resolved direction (ltr | rtl) for theme CSS
|
|
2717
|
+
*
|
|
2718
|
+
* @doc-touch
|
|
2719
|
+
* The button reserves a 44×44px hit area (WCAG 2.5.5) regardless of label size.
|
|
2720
|
+
*
|
|
2721
|
+
* @doc-a11y
|
|
2722
|
+
* A native `<button>` with `aria-pressed` — AT announces "toggle button,
|
|
2723
|
+
* pressed/not pressed". Because mirroring is CSS-logical only, DOM and tab
|
|
2724
|
+
* order are unchanged in both directions (WCAG 1.3.2).
|
|
2725
|
+
*
|
|
2726
|
+
* @doc-related locale
|
|
2727
|
+
*
|
|
2728
|
+
* @doc-css-var
|
|
2729
|
+
* --kj-direction-toggle-bg — Background at rest.
|
|
2730
|
+
* --kj-direction-toggle-fg — Text color.
|
|
2731
|
+
* --kj-direction-toggle-border-color — Border color.
|
|
2732
|
+
* --kj-direction-toggle-radius — Corner radius.
|
|
2733
|
+
* --kj-direction-toggle-padding-x — Inline padding.
|
|
2734
|
+
* --kj-direction-toggle-padding-y — Block padding.
|
|
2735
|
+
*
|
|
2736
|
+
* @doc-category Library/Navigation
|
|
2737
|
+
* @doc
|
|
2738
|
+
* @doc-name direction-toggle
|
|
2739
|
+
* @doc-description Accessible LTR/RTL toggle button that drives KjLocale.direction and mirrors the page.
|
|
2740
|
+
* @doc-is-main
|
|
2741
|
+
*/
|
|
2742
|
+
declare class KjDirectionToggle {
|
|
2743
|
+
private readonly locale;
|
|
2744
|
+
/** Resolved logical direction from the shared `KjLocale`. */
|
|
2745
|
+
readonly direction: _angular_core.Signal<i1.KjDirection>;
|
|
2746
|
+
/** `true` when the resolved direction is `rtl`. Drives `aria-pressed`. */
|
|
2747
|
+
readonly isRtl: _angular_core.Signal<boolean>;
|
|
2748
|
+
/** Accessible name for the toggle button. */
|
|
2749
|
+
readonly kjAriaLabel: _angular_core.InputSignal<string>;
|
|
2750
|
+
/** Flip the direction: `ltr` ⇄ `rtl`. */
|
|
2751
|
+
toggle(): void;
|
|
2752
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjDirectionToggle, never>;
|
|
2753
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjDirectionToggle, "kj-direction-toggle", never, { "kjAriaLabel": { "alias": "kjAriaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2213
2756
|
/**
|
|
2214
2757
|
* Service-launched drawer (edge-anchored panel). Inject `KjDrawerService` and
|
|
2215
2758
|
* call `open()` with a template; the drawer absorbs the bottom-sheet pattern
|
|
@@ -2368,6 +2911,109 @@ declare class KjDropdownMenuComponent {
|
|
|
2368
2911
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjDropdownMenuComponent, "kj-dropdown-menu", never, {}, {}, never, ["*"], true, never>;
|
|
2369
2912
|
}
|
|
2370
2913
|
|
|
2914
|
+
/**
|
|
2915
|
+
* Styled code editor — a themed `<kj-editor>` wrapping the headless `KjEditor`
|
|
2916
|
+
* directive (which wraps Monaco). Adds a kj-token-synced Monaco theme that
|
|
2917
|
+
* re-applies on theme switch, an optional toolbar (language badge + copy) and
|
|
2918
|
+
* status bar (cursor position + a keyboard-escape hint), reduced-motion, and a
|
|
2919
|
+
* loading region.
|
|
2920
|
+
*
|
|
2921
|
+
* Monaco is browser-only and heavy; it loads lazily after first render via
|
|
2922
|
+
* `KjEditorLoader`. Configure the source app-wide with `provideMonaco()`
|
|
2923
|
+
* (defaults to a CDN loader so the base bundle stays lean).
|
|
2924
|
+
*
|
|
2925
|
+
* @example
|
|
2926
|
+
* ```html
|
|
2927
|
+
* <kj-editor [(kjValue)]="code" kjLanguage="typescript" style="height:340px" />
|
|
2928
|
+
* ```
|
|
2929
|
+
* @doc-category Components/Data
|
|
2930
|
+
* @doc
|
|
2931
|
+
* @doc-name editor
|
|
2932
|
+
* @doc-is-main
|
|
2933
|
+
* @doc-description Themed Monaco code editor — syntax highlighting, two-way value, kj-theme sync, and AAA keyboard access.
|
|
2934
|
+
* @doc-example Default [full]
|
|
2935
|
+
* A TypeScript editor with the toolbar and status bar, two-way bound to a signal.
|
|
2936
|
+
* @doc-file editor.example.ts
|
|
2937
|
+
* @doc-example Languages [full]
|
|
2938
|
+
* Switch the `kjLanguage` to re-tokenise the same buffer across TS / HTML / CSS / JSON.
|
|
2939
|
+
* @doc-file editor.languages.example.ts
|
|
2940
|
+
* @doc-example Read-only [full]
|
|
2941
|
+
* A read-only viewer with the minimap enabled and line numbers on.
|
|
2942
|
+
* @doc-file editor.readonly.example.ts
|
|
2943
|
+
* @doc-example Options [full]
|
|
2944
|
+
* Toggle readonly, minimap, word wrap, line numbers and font size live.
|
|
2945
|
+
* @doc-file editor.options.example.ts
|
|
2946
|
+
*
|
|
2947
|
+
* @doc-keyboard
|
|
2948
|
+
* Tab Inserts a tab / indents (Monaco default)
|
|
2949
|
+
* Ctrl+M Toggles Tab-trapping — flips Tab to move focus in/out (no keyboard trap)
|
|
2950
|
+
* Alt+F1 Opens Monaco's accessibility help
|
|
2951
|
+
* Standard editing keys Arrow / Home / End / PageUp-Down / selection / undo-redo
|
|
2952
|
+
*
|
|
2953
|
+
* @doc-aria
|
|
2954
|
+
* aria-label Monaco's textarea is labelled from kjAriaLabel (defaults to "Code editor")
|
|
2955
|
+
* role=status The loading region announces the editor is loading
|
|
2956
|
+
*/
|
|
2957
|
+
declare class KjEditorComponent {
|
|
2958
|
+
private readonly hostRef;
|
|
2959
|
+
private readonly destroyRef;
|
|
2960
|
+
private readonly loader;
|
|
2961
|
+
readonly editorHost: _angular_core.Signal<ElementRef<HTMLDivElement>>;
|
|
2962
|
+
/** Two-way editor text. */
|
|
2963
|
+
readonly kjValue: _angular_core.ModelSignal<string>;
|
|
2964
|
+
/** Code language — friendly name or Monaco id; short aliases (`ts`, `md`) normalised. */
|
|
2965
|
+
readonly kjLanguage: _angular_core.InputSignal<KjEditorLanguage>;
|
|
2966
|
+
/** Read-only mode. */
|
|
2967
|
+
readonly kjReadonly: _angular_core.InputSignal<boolean>;
|
|
2968
|
+
/** Show the minimap. */
|
|
2969
|
+
readonly kjMinimap: _angular_core.InputSignal<boolean>;
|
|
2970
|
+
/** Gutter line-number mode. */
|
|
2971
|
+
readonly kjLineNumbers: _angular_core.InputSignal<KjEditorLineNumbers>;
|
|
2972
|
+
/** Soft wrap. */
|
|
2973
|
+
readonly kjWordWrap: _angular_core.InputSignal<KjEditorWordWrap>;
|
|
2974
|
+
/** Font size in px. */
|
|
2975
|
+
readonly kjFontSize: _angular_core.InputSignal<number>;
|
|
2976
|
+
/** Grow to fit content instead of filling the container (great for code snippets). */
|
|
2977
|
+
readonly kjAutoHeight: _angular_core.InputSignal<boolean>;
|
|
2978
|
+
/** Cap for `kjAutoHeight` in px (content scrolls past it). Uncapped when unset. */
|
|
2979
|
+
readonly kjMaxHeight: _angular_core.InputSignal<number | undefined>;
|
|
2980
|
+
/** Accessible name for the editor. */
|
|
2981
|
+
readonly kjAriaLabel: _angular_core.InputSignal<string>;
|
|
2982
|
+
/** Start with Tab moving focus out instead of indenting. */
|
|
2983
|
+
readonly kjTabFocusMode: _angular_core.InputSignal<boolean>;
|
|
2984
|
+
/** Escape hatch — merged last into Monaco's construction options. */
|
|
2985
|
+
readonly kjOptions: _angular_core.InputSignal<monaco_editor.editor.IStandaloneEditorConstructionOptions>;
|
|
2986
|
+
/** Show the toolbar (language badge + copy button). */
|
|
2987
|
+
readonly kjShowToolbar: _angular_core.InputSignal<boolean>;
|
|
2988
|
+
/** Show the status bar (cursor position + keyboard hint). */
|
|
2989
|
+
readonly kjShowStatusBar: _angular_core.InputSignal<boolean>;
|
|
2990
|
+
/** True until Monaco has mounted. */
|
|
2991
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
2992
|
+
/** Cursor position for the status bar. */
|
|
2993
|
+
readonly line: _angular_core.WritableSignal<number>;
|
|
2994
|
+
readonly column: _angular_core.WritableSignal<number>;
|
|
2995
|
+
readonly copied: _angular_core.WritableSignal<boolean>;
|
|
2996
|
+
/** Current kj-derived Monaco theme id, bound onto the directive. */
|
|
2997
|
+
readonly themeId: _angular_core.WritableSignal<string>;
|
|
2998
|
+
/** Human label for the platform-appropriate tab-escape shortcut. */
|
|
2999
|
+
readonly escapeHint: _angular_core.Signal<string>;
|
|
3000
|
+
private monaco;
|
|
3001
|
+
constructor();
|
|
3002
|
+
/** Wired from the directive's `kjReady` output. */
|
|
3003
|
+
onReady(editor: KjEditorInstance): void;
|
|
3004
|
+
copy(): Promise<void>;
|
|
3005
|
+
/**
|
|
3006
|
+
* Read the resolved `--kj-*` surface tokens off the host, derive the scheme
|
|
3007
|
+
* from background luminance (theme-agnostic — works for any kj theme), define
|
|
3008
|
+
* a Monaco theme tinted with those tokens, and apply it globally.
|
|
3009
|
+
*/
|
|
3010
|
+
private syncTheme;
|
|
3011
|
+
/** Resolve a CSS custom property to [r,g,b] via a probe element. */
|
|
3012
|
+
private resolveColor;
|
|
3013
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjEditorComponent, never>;
|
|
3014
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjEditorComponent, "kj-editor", never, { "kjValue": { "alias": "kjValue"; "required": false; "isSignal": true; }; "kjLanguage": { "alias": "kjLanguage"; "required": false; "isSignal": true; }; "kjReadonly": { "alias": "kjReadonly"; "required": false; "isSignal": true; }; "kjMinimap": { "alias": "kjMinimap"; "required": false; "isSignal": true; }; "kjLineNumbers": { "alias": "kjLineNumbers"; "required": false; "isSignal": true; }; "kjWordWrap": { "alias": "kjWordWrap"; "required": false; "isSignal": true; }; "kjFontSize": { "alias": "kjFontSize"; "required": false; "isSignal": true; }; "kjAutoHeight": { "alias": "kjAutoHeight"; "required": false; "isSignal": true; }; "kjMaxHeight": { "alias": "kjMaxHeight"; "required": false; "isSignal": true; }; "kjAriaLabel": { "alias": "kjAriaLabel"; "required": false; "isSignal": true; }; "kjTabFocusMode": { "alias": "kjTabFocusMode"; "required": false; "isSignal": true; }; "kjOptions": { "alias": "kjOptions"; "required": false; "isSignal": true; }; "kjShowToolbar": { "alias": "kjShowToolbar"; "required": false; "isSignal": true; }; "kjShowStatusBar": { "alias": "kjShowStatusBar"; "required": false; "isSignal": true; }; }, { "kjValue": "kjValueChange"; }, never, never, true, never>;
|
|
3015
|
+
}
|
|
3016
|
+
|
|
2371
3017
|
/** Tonal variant for the empty state. */
|
|
2372
3018
|
type KjEmptyStateVariant = 'neutral' | 'error';
|
|
2373
3019
|
/** Live-region politeness setting. `false` opts out entirely. */
|
|
@@ -2981,7 +3627,7 @@ declare class KjFormSummaryComponent {
|
|
|
2981
3627
|
* ```
|
|
2982
3628
|
*
|
|
2983
3629
|
* @doc-example Gallery
|
|
2984
|
-
* @doc-file ../icon.gallery.example.ts
|
|
3630
|
+
* @doc-file ../_examples/icon.gallery.example.ts
|
|
2985
3631
|
*
|
|
2986
3632
|
* @doc-css-var
|
|
2987
3633
|
* --kj-icon — Resolved icon value (url("...") or "glyph"). Set by the directive — read by the rendered .kj-icon.
|
|
@@ -5069,6 +5715,150 @@ declare class KjRadioComponent {
|
|
|
5069
5715
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjRadioComponent, "kj-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5070
5716
|
}
|
|
5071
5717
|
|
|
5718
|
+
/**
|
|
5719
|
+
* Styled, accessible rich-text editor composing the headless
|
|
5720
|
+
* {@link KjRichTextEditor} core directive with a **dynamic** `role="toolbar"`
|
|
5721
|
+
* that renders whatever the active features contribute (sorted by group then
|
|
5722
|
+
* order) — no hardcoded buttons. Feature overlays (link/image editors) render in
|
|
5723
|
+
* an accessible `role="dialog"` popover.
|
|
5724
|
+
*
|
|
5725
|
+
* Zero-config gives the full editor via {@link defaultFeatures}; pass a subset to
|
|
5726
|
+
* `kjFeatures` (or `provideKjRichText(...)`) to load only the packages you need.
|
|
5727
|
+
*
|
|
5728
|
+
* @example
|
|
5729
|
+
* ```html
|
|
5730
|
+
* <kj-rich-text-editor kjLabel="Message" [(kjValue)]="html" />
|
|
5731
|
+
* <kj-rich-text-editor [kjFeatures]="[bold(), italic(), link()]" />
|
|
5732
|
+
* ```
|
|
5733
|
+
* @doc-category Library/Forms
|
|
5734
|
+
* @doc
|
|
5735
|
+
* @doc-name rich-text-editor
|
|
5736
|
+
* @doc-is-main
|
|
5737
|
+
* @doc-description Accessible, feature-composed rich-text editor wrapping Lexical with a dynamic toolbar.
|
|
5738
|
+
* @doc-example Default [full]
|
|
5739
|
+
* The full editor: the toolbar renders every default feature's contribution.
|
|
5740
|
+
* @doc-file rich-text-editor.example.ts
|
|
5741
|
+
* @doc-example Minimal (subset of features) [full]
|
|
5742
|
+
* Only bold, italic and link — the toolbar and loaded packages shrink to match.
|
|
5743
|
+
* @doc-file rich-text-editor.minimal.example.ts
|
|
5744
|
+
* @doc-example Custom feature [full]
|
|
5745
|
+
* A feature contributing its own toolbar button + node in a few lines.
|
|
5746
|
+
* @doc-file rich-text-editor.custom-node.example.ts
|
|
5747
|
+
* @doc-example Readonly [full]
|
|
5748
|
+
* Renders existing content without editing affordances.
|
|
5749
|
+
* @doc-file rich-text-editor.readonly.example.ts
|
|
5750
|
+
* @doc-aria role="textbox" — the editable surface, with aria-multiline="true".
|
|
5751
|
+
* @doc-aria role="toolbar" — the formatting controls, arrow-key navigable.
|
|
5752
|
+
* @doc-a11y Toggle items expose aria-pressed; feature actions announce via an aria-live region.
|
|
5753
|
+
* @doc-css-var --kj-rte-bg — Editor background.
|
|
5754
|
+
* @doc-css-var --kj-rte-border-color — Border colour.
|
|
5755
|
+
* @doc-css-var --kj-rte-radius — Corner radius.
|
|
5756
|
+
* @doc-css-var --kj-rte-min-height — Minimum height of the editable area.
|
|
5757
|
+
* @doc-related input,form,field
|
|
5758
|
+
*/
|
|
5759
|
+
declare class KjRichTextEditorComponent {
|
|
5760
|
+
private readonly env;
|
|
5761
|
+
/** Active features. Defaults to the full {@link defaultFeatures} bundle. */
|
|
5762
|
+
readonly kjFeatures: _angular_core.InputSignal<readonly KjRichTextFeature[]>;
|
|
5763
|
+
/** Initial HTML content. */
|
|
5764
|
+
readonly kjValue: _angular_core.InputSignal<string>;
|
|
5765
|
+
/** Accessible label for the editable region (ignored when `kjLabelledBy` is set). */
|
|
5766
|
+
readonly kjLabel: _angular_core.InputSignal<string>;
|
|
5767
|
+
/** ID of an external element that labels the editable region. */
|
|
5768
|
+
readonly kjLabelledBy: _angular_core.InputSignal<string>;
|
|
5769
|
+
/** Placeholder shown while the editor is empty. */
|
|
5770
|
+
readonly kjPlaceholder: _angular_core.InputSignal<string>;
|
|
5771
|
+
/** Render read-only (non-editable) content. */
|
|
5772
|
+
readonly kjReadonly: _angular_core.InputSignal<boolean>;
|
|
5773
|
+
/** Accessible label for the toolbar. */
|
|
5774
|
+
readonly kjToolbarLabel: _angular_core.InputSignal<string>;
|
|
5775
|
+
/** Whether the formatting toolbar is shown. */
|
|
5776
|
+
readonly kjShowToolbar: _angular_core.InputSignal<boolean>;
|
|
5777
|
+
/** Emits the serialized HTML whenever the content changes. */
|
|
5778
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
5779
|
+
/** Emits the plain text whenever the content changes. */
|
|
5780
|
+
readonly textChange: _angular_core.OutputEmitterRef<string>;
|
|
5781
|
+
/** Emits the Lexical serialized state whenever the content changes. */
|
|
5782
|
+
readonly jsonChange: _angular_core.OutputEmitterRef<unknown>;
|
|
5783
|
+
/** @internal Stable id used for aria-controls / labelledby wiring. */
|
|
5784
|
+
protected readonly contentId: string;
|
|
5785
|
+
private readonly live;
|
|
5786
|
+
private readonly overlayInjectors;
|
|
5787
|
+
/** Run a toolbar item and announce toggle state changes to AT. */
|
|
5788
|
+
protected onRun(ed: KjRichTextEditor, item: KjRteToolbarItem): void;
|
|
5789
|
+
/** Announce a message via the live region (also handles feature announcements). */
|
|
5790
|
+
protected announce(message: string): void;
|
|
5791
|
+
/** Injector that exposes the overlay's data via KJ_RTE_OVERLAY_DATA. */
|
|
5792
|
+
protected overlayInjector(active: KjActiveOverlay): Injector;
|
|
5793
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjRichTextEditorComponent, never>;
|
|
5794
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjRichTextEditorComponent, "kj-rich-text-editor", never, { "kjFeatures": { "alias": "kjFeatures"; "required": false; "isSignal": true; }; "kjValue": { "alias": "kjValue"; "required": false; "isSignal": true; }; "kjLabel": { "alias": "kjLabel"; "required": false; "isSignal": true; }; "kjLabelledBy": { "alias": "kjLabelledBy"; "required": false; "isSignal": true; }; "kjPlaceholder": { "alias": "kjPlaceholder"; "required": false; "isSignal": true; }; "kjReadonly": { "alias": "kjReadonly"; "required": false; "isSignal": true; }; "kjToolbarLabel": { "alias": "kjToolbarLabel"; "required": false; "isSignal": true; }; "kjShowToolbar": { "alias": "kjShowToolbar"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "textChange": "textChange"; "jsonChange": "jsonChange"; }, never, never, true, never>;
|
|
5795
|
+
}
|
|
5796
|
+
|
|
5797
|
+
/** Bold (Ctrl/Cmd+B). */
|
|
5798
|
+
declare function bold(): KjRichTextFeature;
|
|
5799
|
+
/** Italic (Ctrl/Cmd+I). */
|
|
5800
|
+
declare function italic(): KjRichTextFeature;
|
|
5801
|
+
/** Underline (Ctrl/Cmd+U). */
|
|
5802
|
+
declare function underline(): KjRichTextFeature;
|
|
5803
|
+
/** Strikethrough. */
|
|
5804
|
+
declare function strike(): KjRichTextFeature;
|
|
5805
|
+
/** Inline code. */
|
|
5806
|
+
declare function inlineCode(): KjRichTextFeature;
|
|
5807
|
+
|
|
5808
|
+
/** Heading levels this feature can contribute. */
|
|
5809
|
+
type KjHeadingLevel = 1 | 2 | 3;
|
|
5810
|
+
/**
|
|
5811
|
+
* Heading feature. Lazily loads `@lexical/rich-text` for the heading node +
|
|
5812
|
+
* creator, and contributes one toolbar toggle per configured level.
|
|
5813
|
+
*/
|
|
5814
|
+
declare function heading(options?: {
|
|
5815
|
+
levels?: readonly KjHeadingLevel[];
|
|
5816
|
+
}): KjRichTextFeature;
|
|
5817
|
+
|
|
5818
|
+
/** Bullet (unordered) list. Lazily loads `@lexical/list`. */
|
|
5819
|
+
declare function bulletList(): KjRichTextFeature;
|
|
5820
|
+
/** Ordered (numbered) list. Lazily loads `@lexical/list`. */
|
|
5821
|
+
declare function orderedList(): KjRichTextFeature;
|
|
5822
|
+
|
|
5823
|
+
/** Blockquote feature. Lazily loads `@lexical/rich-text` for the quote node. */
|
|
5824
|
+
declare function quote(): KjRichTextFeature;
|
|
5825
|
+
|
|
5826
|
+
/** Code block feature. Lazily loads `@lexical/code` (and its Prism grammars). */
|
|
5827
|
+
declare function codeBlock(): KjRichTextFeature;
|
|
5828
|
+
|
|
5829
|
+
/**
|
|
5830
|
+
* Link feature. Lazily loads core `lexical` (for selection reads) and
|
|
5831
|
+
* `@lexical/link`. Contributes the link node, a Ctrl/Cmd+K shortcut, a toolbar
|
|
5832
|
+
* toggle, and the link-editor overlay.
|
|
5833
|
+
*/
|
|
5834
|
+
declare function link(): KjRichTextFeature;
|
|
5835
|
+
|
|
5836
|
+
/**
|
|
5837
|
+
* Image feature. Lazily loads core `lexical` and builds a self-rendering image
|
|
5838
|
+
* node via `createKjImageNode`. Contributes a toolbar button + the image-editor
|
|
5839
|
+
* overlay (which collects URL + alt text).
|
|
5840
|
+
*/
|
|
5841
|
+
declare function image(): KjRichTextFeature;
|
|
5842
|
+
|
|
5843
|
+
/**
|
|
5844
|
+
* Markdown shortcuts (`# `, `- `, `1. `, `> `, `` ``` ``, `**bold**`, …). Lazily
|
|
5845
|
+
* loads `@lexical/markdown`. No toolbar UI — it's a typing behaviour.
|
|
5846
|
+
*/
|
|
5847
|
+
declare function markdownShortcuts(): KjRichTextFeature;
|
|
5848
|
+
|
|
5849
|
+
/**
|
|
5850
|
+
* Undo/redo history. Lazily loads `@lexical/history` and contributes undo/redo
|
|
5851
|
+
* toolbar buttons (disabled until the respective action is available).
|
|
5852
|
+
*/
|
|
5853
|
+
declare function history(): KjRichTextFeature;
|
|
5854
|
+
|
|
5855
|
+
/**
|
|
5856
|
+
* The full default feature bundle, so a zero-config `<kj-rich-text-editor>`
|
|
5857
|
+
* still gives a complete editor. Compose your own subset with the individual
|
|
5858
|
+
* factories to load only the packages you need.
|
|
5859
|
+
*/
|
|
5860
|
+
declare function defaultFeatures(): KjRichTextFeature[];
|
|
5861
|
+
|
|
5072
5862
|
/**
|
|
5073
5863
|
* Select root. Two-way bind via `[(value)]`.
|
|
5074
5864
|
*
|
|
@@ -5183,6 +5973,73 @@ declare class KjOptionComponent {
|
|
|
5183
5973
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjOptionComponent, "kj-option", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "kjLabel": { "alias": "kjLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5184
5974
|
}
|
|
5185
5975
|
|
|
5976
|
+
/**
|
|
5977
|
+
* Service-launched **bottom sheet** — a mobile-first, bottom-anchored modal
|
|
5978
|
+
* surface with a grab handle and drag-to-dismiss. Inject `KjSheetService` and
|
|
5979
|
+
* call `open()` with a body component; the sheet slides up from the bottom
|
|
5980
|
+
* edge, traps focus, and locks background scroll. It reuses the same overlay
|
|
5981
|
+
* primitive stack as the drawer and dialog — bottom sheet is the mobile
|
|
5982
|
+
* composition of that engine, not a new one. The wrapper component exists to
|
|
5983
|
+
* host this documentation page.
|
|
5984
|
+
*
|
|
5985
|
+
* @doc
|
|
5986
|
+
* @doc-name sheet
|
|
5987
|
+
* @doc-is-main
|
|
5988
|
+
* @doc-example Default
|
|
5989
|
+
* A service-launched bottom sheet with a grab handle and drag-to-dismiss.
|
|
5990
|
+
* @doc-file sheet.example.ts
|
|
5991
|
+
* @doc-example Detents
|
|
5992
|
+
* `detent` sets the initial resting height — auto / half / full.
|
|
5993
|
+
* @doc-file sheet.detents.example.ts
|
|
5994
|
+
* @doc-example Scrollable
|
|
5995
|
+
* A tall body scrolls inside the sheet while the grab handle stays pinned.
|
|
5996
|
+
* @doc-file sheet.scrollable.example.ts
|
|
5997
|
+
*
|
|
5998
|
+
* @doc-keyboard
|
|
5999
|
+
* Escape — Closes the sheet (only the topmost overlay when stacked)
|
|
6000
|
+
* Enter / Space — Dismisses when the grab handle is focused
|
|
6001
|
+
* Tab — Cycles focus within the sheet (focus trap via `tabCycle({ returnFocus: true })`)
|
|
6002
|
+
* Shift+Tab — Cycles backward
|
|
6003
|
+
*
|
|
6004
|
+
* @doc-aria
|
|
6005
|
+
* role — "dialog"; `aria-modal="true"` while the backdrop is active
|
|
6006
|
+
* aria-label — Set via the `ariaLabel` option when no heading is projected
|
|
6007
|
+
* aria-labelledby — Wire to the id of your sheet heading for the accessible name
|
|
6008
|
+
* data-state — "open" / "closed" — drives the slide-up transform
|
|
6009
|
+
* data-kj-detent — Mirrors the resolved initial height for theming hooks
|
|
6010
|
+
*
|
|
6011
|
+
* @doc-css-var
|
|
6012
|
+
* --kj-sheet-bg — Panel background fill. Defaults to --kj-bg-elevated.
|
|
6013
|
+
* --kj-sheet-fg — Foreground text color. Defaults to --kj-fg-default.
|
|
6014
|
+
* --kj-sheet-shadow — Box shadow off the panel. Defaults to --kj-shadow-lg.
|
|
6015
|
+
* --kj-sheet-radius — Top corner radius. Defaults to --kj-radius-box.
|
|
6016
|
+
* --kj-sheet-max-height — Cap on the sheet height. Defaults to 92vh.
|
|
6017
|
+
* --kj-sheet-grip-color — Grab-handle pill color. Defaults to --kj-border-strong.
|
|
6018
|
+
*
|
|
6019
|
+
* @doc-touch
|
|
6020
|
+
* The grab handle is a ≥ 44px-tall touch target (WCAG 2.5.5) even though the
|
|
6021
|
+
* visible grip pill is small. Downward drag past 40% of the sheet height (or
|
|
6022
|
+
* 600 px/s) dismisses. Footer action buttons should use `kj-button`
|
|
6023
|
+
* `size="lg"` (≥ 44px).
|
|
6024
|
+
*
|
|
6025
|
+
* @doc-a11y
|
|
6026
|
+
* Focus is trapped inside the sheet while open and returned to the triggering
|
|
6027
|
+
* element on close (`returnFocus: true`). Siblings outside the sheet are
|
|
6028
|
+
* marked `inert` while it is open. Stacking is safe — only the topmost overlay
|
|
6029
|
+
* receives Escape and outside-click. The wrapper does not generate an
|
|
6030
|
+
* accessible name; provide one via `aria-labelledby` (a visible heading) or
|
|
6031
|
+
* the `ariaLabel` option. Slide transitions respect
|
|
6032
|
+
* `prefers-reduced-motion`, falling back to an opacity fade.
|
|
6033
|
+
*
|
|
6034
|
+
* @doc-related drawer,dialog,action-sheet
|
|
6035
|
+
*
|
|
6036
|
+
* @doc-category Library/Overlay
|
|
6037
|
+
*/
|
|
6038
|
+
declare class KjSheetComponent {
|
|
6039
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjSheetComponent, never>;
|
|
6040
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjSheetComponent, "kj-sheet-shell", never, {}, {}, never, ["*"], true, never>;
|
|
6041
|
+
}
|
|
6042
|
+
|
|
5186
6043
|
/**
|
|
5187
6044
|
* Styled wrapper around the headless `KjSkeleton` directive.
|
|
5188
6045
|
*
|
|
@@ -5293,6 +6150,74 @@ declare class KjSkeletonComponent {
|
|
|
5293
6150
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjSkeletonComponent, "kj-skeleton", never, { "kjSkeletonShape": { "alias": "kjSkeletonShape"; "required": false; "isSignal": true; }; "kjSkeletonAnimation": { "alias": "kjSkeletonAnimation"; "required": false; "isSignal": true; }; "kjWidth": { "alias": "kjWidth"; "required": false; "isSignal": true; }; "kjHeight": { "alias": "kjHeight"; "required": false; "isSignal": true; }; "kjLines": { "alias": "kjLines"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.KjSkeleton; inputs: { "kjSkeletonShape": "kjSkeletonShape"; "kjSkeletonAnimation": "kjSkeletonAnimation"; }; outputs: {}; }]>;
|
|
5294
6151
|
}
|
|
5295
6152
|
|
|
6153
|
+
/**
|
|
6154
|
+
* Themed "skip to content" link — the styled wrapper around the headless
|
|
6155
|
+
* `KjSkipLink` directive. Implements [WCAG 2.4.1 Bypass
|
|
6156
|
+
* Blocks](https://www.w3.org/TR/WCAG21/#bypass-blocks): a keyboard user's first
|
|
6157
|
+
* Tab reveals it, and Enter jumps focus past the navbar / sidebar to the main
|
|
6158
|
+
* content landmark.
|
|
6159
|
+
*
|
|
6160
|
+
* Place it as the **first focusable element** of the app shell and give the main
|
|
6161
|
+
* landmark a matching `id` (default `main-content`):
|
|
6162
|
+
*
|
|
6163
|
+
* ```html
|
|
6164
|
+
* <kj-skip-link />
|
|
6165
|
+
* <kj-navbar />
|
|
6166
|
+
* <main id="main-content" tabindex="-1"><router-outlet /></main>
|
|
6167
|
+
* ```
|
|
6168
|
+
*
|
|
6169
|
+
* The visible label is projected content and defaults to "Skip to main content".
|
|
6170
|
+
* The link is visually hidden (parked above the viewport) until focused, then
|
|
6171
|
+
* slides into view with a solid high-contrast background so it is legible over
|
|
6172
|
+
* any page chrome.
|
|
6173
|
+
*
|
|
6174
|
+
* @example
|
|
6175
|
+
* ```html
|
|
6176
|
+
* <kj-skip-link />
|
|
6177
|
+
* <kj-skip-link kjTarget="page-body">Skip to article</kj-skip-link>
|
|
6178
|
+
* ```
|
|
6179
|
+
*
|
|
6180
|
+
* @doc-example Default
|
|
6181
|
+
* The shell-level skip link. Tab into the demo frame to reveal it, then
|
|
6182
|
+
* activate it to move focus to the demo's main region.
|
|
6183
|
+
* @doc-file skip-link.example.ts
|
|
6184
|
+
*
|
|
6185
|
+
* @doc-keyboard
|
|
6186
|
+
* Tab — Reveals the link when it receives focus (it is the first focusable element)
|
|
6187
|
+
* Enter — Activates it; keyboard focus moves to the target landmark
|
|
6188
|
+
*
|
|
6189
|
+
* @doc-aria
|
|
6190
|
+
* role=link — Native `<a>` semantics; accessible name from the projected label
|
|
6191
|
+
* href — Reflects `#<target>` so it works before hydration and is bookmarkable
|
|
6192
|
+
* tabindex=-1 — Applied to the target on activation so `focus()` lands and the
|
|
6193
|
+
* next Tab continues from the content, not the navigation
|
|
6194
|
+
*
|
|
6195
|
+
* @doc-a11y
|
|
6196
|
+
* Satisfies WCAG 2.4.1 Bypass Blocks. Hidden-until-focused (not
|
|
6197
|
+
* `display:none`, so it stays in the tab order), fully on-screen and
|
|
6198
|
+
* high-contrast when focused, and moves real keyboard focus — not just scroll.
|
|
6199
|
+
*
|
|
6200
|
+
* @doc-css-var
|
|
6201
|
+
* --kj-skip-link-bg — Background when focused. Defaults to the theme's primary surface.
|
|
6202
|
+
* --kj-skip-link-fg — Text color when focused. Pairs with the background for AAA contrast.
|
|
6203
|
+
* --kj-skip-link-radius — Corner radius of the focused pill.
|
|
6204
|
+
* --kj-skip-link-shadow — Elevation shadow when focused.
|
|
6205
|
+
* --kj-skip-link-offset — Inset from the top-left corner when focused.
|
|
6206
|
+
* --kj-skip-link-z — Stacking order. Must sit above the navbar and overlays.
|
|
6207
|
+
*
|
|
6208
|
+
* @doc-category Library/Navigation
|
|
6209
|
+
* @doc
|
|
6210
|
+
* @doc-name skip-link
|
|
6211
|
+
* @doc-description Themed, focus-moving "skip to main content" link for the app shell (WCAG 2.4.1).
|
|
6212
|
+
* @doc-is-main
|
|
6213
|
+
*/
|
|
6214
|
+
declare class KjSkipLinkComponent {
|
|
6215
|
+
/** `id` of the main-content landmark to move focus to. Defaults to `'main-content'`. */
|
|
6216
|
+
readonly kjTarget: _angular_core.InputSignal<string>;
|
|
6217
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjSkipLinkComponent, never>;
|
|
6218
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjSkipLinkComponent, "kj-skip-link", never, { "kjTarget": { "alias": "kjTarget"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
6219
|
+
}
|
|
6220
|
+
|
|
5296
6221
|
/**
|
|
5297
6222
|
* Styled wrapper around the headless `KjSlider` directive family.
|
|
5298
6223
|
*
|
|
@@ -5378,11 +6303,11 @@ declare class KjSliderComponent {
|
|
|
5378
6303
|
readonly kjPageStep: _angular_core.InputSignal<number>;
|
|
5379
6304
|
readonly kjStepBase: _angular_core.InputSignal<number>;
|
|
5380
6305
|
readonly kjOrientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
5381
|
-
readonly kjDirection: _angular_core.InputSignal<"
|
|
6306
|
+
readonly kjDirection: _angular_core.InputSignal<"auto" | "ltr" | "rtl">;
|
|
5382
6307
|
readonly kjInverted: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
5383
6308
|
readonly kjMinDistance: _angular_core.InputSignal<number>;
|
|
5384
6309
|
readonly kjAllowThumbCross: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
5385
|
-
readonly kjTicks: _angular_core.InputSignal<false | readonly number[]
|
|
6310
|
+
readonly kjTicks: _angular_core.InputSignal<false | "auto" | readonly number[]>;
|
|
5386
6311
|
readonly kjDisplayWith: _angular_core.InputSignal<(value: number, thumbIndex: number) => string>;
|
|
5387
6312
|
readonly kjReadonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
5388
6313
|
readonly kjDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -6167,10 +7092,8 @@ declare class KjBulkAction {
|
|
|
6167
7092
|
* The toolbar must sit inside a `<kj-table>` (or any element hosting
|
|
6168
7093
|
* the `KJ_TABLE` token) so it can resolve the table instance via DI.
|
|
6169
7094
|
*
|
|
6170
|
-
*
|
|
6171
|
-
*
|
|
6172
|
-
* @doc-name table-toolbar
|
|
6173
|
-
* @doc-description Toolbar chrome above the data table — quick filter, density, column visibility, export, and bulk-action slot.
|
|
7095
|
+
* Documented as part of the data table on the `table` page — not a standalone
|
|
7096
|
+
* docs entry.
|
|
6174
7097
|
*/
|
|
6175
7098
|
declare class KjTableToolbarComponent {
|
|
6176
7099
|
/** The host table — resolved through `KJ_TABLE` injected from any ancestor. */
|
|
@@ -6222,10 +7145,8 @@ declare class KjTableToolbarComponent {
|
|
|
6222
7145
|
* </kj-table>
|
|
6223
7146
|
* ```
|
|
6224
7147
|
*
|
|
6225
|
-
*
|
|
6226
|
-
*
|
|
6227
|
-
* @doc-name table-pagination
|
|
6228
|
-
* @doc-description Page-size selector, First/Prev/Next/Last nav, and "Showing N–M of total" summary bound to the parent table.
|
|
7148
|
+
* Documented as part of the data table on the `table` page — not a standalone
|
|
7149
|
+
* docs entry.
|
|
6229
7150
|
*/
|
|
6230
7151
|
declare class KjTablePaginationComponent {
|
|
6231
7152
|
/** Available page sizes for the selector. */
|
|
@@ -6308,10 +7229,8 @@ declare class KjTableSidePanelContent {
|
|
|
6308
7229
|
* </kj-table>
|
|
6309
7230
|
* ```
|
|
6310
7231
|
*
|
|
6311
|
-
*
|
|
6312
|
-
*
|
|
6313
|
-
* @doc-name table-side-panel
|
|
6314
|
-
* @doc-description Service-launched drawer listing every column with visibility, pin, and group controls.
|
|
7232
|
+
* Documented as part of the data table on the `table` page — not a standalone
|
|
7233
|
+
* docs entry.
|
|
6315
7234
|
*/
|
|
6316
7235
|
declare class KjTableSidePanelComponent {
|
|
6317
7236
|
/** Whether the side panel is visible. Two-way bindable. */
|
|
@@ -6343,10 +7262,8 @@ declare class KjTableSidePanelComponent {
|
|
|
6343
7262
|
* </table>
|
|
6344
7263
|
* ```
|
|
6345
7264
|
*
|
|
6346
|
-
*
|
|
6347
|
-
*
|
|
6348
|
-
* @doc-name table-status-bar
|
|
6349
|
-
* @doc-description Counts strip showing row count, selected count, and filtered indicator.
|
|
7265
|
+
* Documented as part of the data table on the `table` page — not a standalone
|
|
7266
|
+
* docs entry.
|
|
6350
7267
|
*/
|
|
6351
7268
|
declare class KjTableStatusBarComponent {
|
|
6352
7269
|
private readonly table;
|
|
@@ -6406,10 +7323,8 @@ declare function copyToClipboard(text: string): Promise<void>;
|
|
|
6406
7323
|
* </div>
|
|
6407
7324
|
* ```
|
|
6408
7325
|
*
|
|
6409
|
-
*
|
|
6410
|
-
*
|
|
6411
|
-
* @doc-name table-virtual
|
|
6412
|
-
* @doc-description Row virtualization adapter on @tanstack/virtual-core. Exposes virtualRows / paddingTop / paddingBottom / totalSize signals for the styled data table.
|
|
7326
|
+
* Documented as part of the data table on the `table` page — not a standalone
|
|
7327
|
+
* docs entry.
|
|
6413
7328
|
*/
|
|
6414
7329
|
declare class KjTableVirtual {
|
|
6415
7330
|
/** Total number of rows in the underlying dataset. */
|
|
@@ -7801,10 +8716,10 @@ declare class KjCascadeSubPanelComponent {
|
|
|
7801
8716
|
* --kj-command-item-align — Cross-axis alignment of row contents. Defaults to `center`.
|
|
7802
8717
|
* --kj-command-item-gap — Gap between icon and label inside a row. Defaults to --kj-space-md.
|
|
7803
8718
|
*
|
|
8719
|
+
* @doc-category Library/Actions
|
|
7804
8720
|
* @doc
|
|
7805
8721
|
* @doc-name command-palette
|
|
7806
8722
|
* @doc-description Themed Cmd-K modal command palette with fuzzy filtering, grouped results, and keyboard navigation.
|
|
7807
|
-
* @doc-is-main
|
|
7808
8723
|
*/
|
|
7809
8724
|
declare class KjCommandPaletteFooter {
|
|
7810
8725
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjCommandPaletteFooter, never>;
|
|
@@ -7895,6 +8810,7 @@ declare class KjCommandPaletteItemTemplate<T = unknown> {
|
|
|
7895
8810
|
* @doc-category Library/Actions
|
|
7896
8811
|
* @doc
|
|
7897
8812
|
* @doc-name command-palette
|
|
8813
|
+
* @doc-is-main
|
|
7898
8814
|
*/
|
|
7899
8815
|
declare class KjCommandPaletteComponent {
|
|
7900
8816
|
/** Input placeholder text. */
|
|
@@ -7919,6 +8835,8 @@ declare class KjCommandPaletteComponent {
|
|
|
7919
8835
|
protected readonly customFooter: _angular_core.Signal<KjCommandPaletteFooter | undefined>;
|
|
7920
8836
|
private readonly destroyRef;
|
|
7921
8837
|
private readonly platformId;
|
|
8838
|
+
/** The composed headless palette (host directive) — owns query + active state. */
|
|
8839
|
+
private readonly palette;
|
|
7922
8840
|
constructor();
|
|
7923
8841
|
/** Programmatically close the palette. */
|
|
7924
8842
|
close(): void;
|
|
@@ -8159,5 +9077,5 @@ declare class KjTreeSelectComponent {
|
|
|
8159
9077
|
|
|
8160
9078
|
declare const KJ_COMPONENTS_VERSION = "0.0.1";
|
|
8161
9079
|
|
|
8162
|
-
export { KJ_COMPONENTS_VERSION, KJ_EDITOR_CONTRACT, KJ_FILTER_CONTEXT, KjAccordionComponent, KjAccordionContentComponent, KjAccordionItemComponent, KjAccordionTriggerComponent, KjAlertActionsComponent, KjAlertComponent, KjAlertDescriptionComponent, KjAlertDismissComponent, KjAlertIconComponent, KjAlertTitleComponent, KjAvatarComponent, KjAvatarGroupComponent, KjBadgeComponent, KjBooleanEditor, KjBreadcrumbComponent, KjBreadcrumbCurrentComponent, KjBreadcrumbEllipsisComponent, KjBreadcrumbItemComponent, KjBreadcrumbLinkComponent, KjBreadcrumbListComponent, KjBreadcrumbSeparatorComponent, KjBulkAction, KjButtonComponent, KjButtonGroupComponent, KjCalendarComponent, KjCardComponent, KjCardContentComponent, KjCardCoverComponent, KjCardFooterComponent, KjCardHeaderComponent, KjCardSubtitleComponent, KjCardTitleComponent, KjCarouselAutoplayComponent, KjCarouselComponent, KjCarouselIndicatorsComponent, KjCarouselNextComponent, KjCarouselPauseComponent, KjCarouselPreviousComponent, KjCarouselSlideComponent, KjCarouselViewportComponent, KjCascadeOptionComponent, KjCascadeSelectComponent, KjCascadeSubPanelComponent, KjCellEditorOutlet, KjCellTemplateDirective, KjChatAvatarComponent, KjChatBubbleComponent, KjChatComponent, KjChatFooterComponent, KjChatHeaderComponent, KjChatLogComponent, KjCheckboxComponent, KjColorPickerComponent, KjComboboxComponent, KjComboboxEmptyComponent, KjComboboxLoadingComponent, KjComboboxOptionComponent, KjCommandEmptyComponent, KjCommandGroupComponent, KjCommandInputComponent, KjCommandItemComponent, KjCommandPaletteComponent, KjCommandPaletteFooter, KjCommandPaletteItemTemplate, KjCommandSeparatorComponent, KjConfirmPopupActionComponent, KjConfirmPopupActionsComponent, KjConfirmPopupCancelComponent, KjConfirmPopupComponent, KjConfirmPopupContentComponent, KjConfirmPopupMessageComponent, KjConfirmPopupTriggerComponent, KjDateEditor, KjDateFilter, KjDatePickerComponent, KjDatetimePickerComponent, KjDialogComponent, KjDividerComponent, KjDrawerComponent, KjDropdownMenuComponent, KjEmptyStateActionsComponent, KjEmptyStateComponent, KjEmptyStateDescriptionComponent, KjEmptyStateIconComponent, KjEmptyStateTitleComponent, KjFieldComponent, KjFieldErrorComponent, KjFieldGroupComponent, KjFieldHelpComponent, KjFieldLabelComponent, KjFileUploadComponent, KjFilterCellOutlet, KjFormActionsComponent, KjFormComponent, KjFormSummaryComponent, KjIconGalleryExample, KjIconUsageExample, KjInputComponent, KjInputGroupAddonComponent, KjInputGroupComponent, KjInputMaskComponent, KjInputMaskCreditCardExample, KjInputMaskCustomTokensExample, KjInputMaskDateExample, KjInputMaskExample, KjInputMaskUsageExample, KjInputMaskValidationExample, KjInputOtpComponent, KjKbdComponent, KjLinkComponent, KjListComponent, KjListItemComponent, KjMenubarComponent, KjMenubarItemComponent, KjNumberEditor, KjNumberFilter, KjNumberInputComponent, KjOptionComponent, KjOverlayBadgeComponent, KjOverlayBadgeContentComponent, KjPaginationComponent, KjPaginationDefaultComponent, KjPaginationEllipsisComponent, KjPaginationFirstComponent, KjPaginationInfoComponent, KjPaginationItemComponent, KjPaginationLastComponent, KjPaginationNextComponent, KjPaginationPreviousComponent, KjPasswordInputComponent, KjPopoverComponent, KjProgressBarComponent, KjRadioComponent, KjRadioGroupComponent, KjSelectComponent, KjSelectEditor, KjSelectFilter, KjSkeletonComponent, KjSliderComponent, KjSpeedDialActionComponent, KjSpeedDialActionsComponent, KjSpeedDialComponent, KjSpeedDialTriggerComponent, KjSpinnerComponent, KjStepComponent, KjStepContentComponent, KjStepLabelComponent, KjStepperComponent, KjStepperNextComponent, KjStepperPreviousComponent, KjStepperResetComponent, KjTabComponent, KjTabListComponent, KjTabPanelComponent, KjTableComponent, KjTablePaginationComponent, KjTableSidePanelComponent, KjTableSidePanelContent, KjTableStatusBarComponent, KjTableToolbarComponent, KjTableVirtual, KjTabsComponent, KjTagComponent, KjTagListComponent, KjTagRemoveComponent, KjTextEditor, KjTextFilter, KjTextareaComponent, KjTimePickerComponent, KjToastCloseComponent, KjToastComponent, KjToastViewportComponent, KjToastWrapperComponent, KjToggleComponent, KjTooltipComponent, KjTreeSelectComponent, KjTreeSelectNodeComponent, LUCIDE_ICON_NAMES, copyToClipboard, downloadString, exportCsv, exportJson, provideLucideIcons, toTsv };
|
|
8163
|
-
export type { ExportOptions, KjCellEditEvent, KjCellTemplateContext, KjChatBubbleSize, KjChatBubbleVariant, KjDateRange, KjEditorContract, KjEmptyStateLevel, KjEmptyStateLive, KjEmptyStateVariant, KjFilterContext, KjInputSize, KjInputType, KjInputVariant, KjNumberRange, KjRowClickEvent, KjSelectEditorOption, KjSelectFilterOption, KjSpeedDialPosition, KjTableDensity, KjTableExportFormat };
|
|
9080
|
+
export { KJ_COMPONENTS_VERSION, KJ_EDITOR_CONTRACT, KJ_FILTER_CONTEXT, KjAccordionComponent, KjAccordionContentComponent, KjAccordionItemComponent, KjAccordionTriggerComponent, KjActionSheet, KjActionSheetComponent, KjActionSheetRef, KjActionSheetService, KjAlertActionsComponent, KjAlertComponent, KjAlertDescriptionComponent, KjAlertDismissComponent, KjAlertIconComponent, KjAlertTitleComponent, KjAvatarComponent, KjAvatarGroupComponent, KjBadgeComponent, KjBooleanEditor, KjBreadcrumbComponent, KjBreadcrumbCurrentComponent, KjBreadcrumbEllipsisComponent, KjBreadcrumbItemComponent, KjBreadcrumbLinkComponent, KjBreadcrumbListComponent, KjBreadcrumbSeparatorComponent, KjBulkAction, KjButtonComponent, KjButtonGroupComponent, KjCalendarComponent, KjCardComponent, KjCardContentComponent, KjCardCoverComponent, KjCardFooterComponent, KjCardHeaderComponent, KjCardSubtitleComponent, KjCardTitleComponent, KjCarouselAutoplayComponent, KjCarouselComponent, KjCarouselIndicatorsComponent, KjCarouselNextComponent, KjCarouselPauseComponent, KjCarouselPreviousComponent, KjCarouselSlideComponent, KjCarouselViewportComponent, KjCascadeOptionComponent, KjCascadeSelectComponent, KjCascadeSubPanelComponent, KjCellEditorOutlet, KjCellTemplateDirective, KjChartComponent, KjChatAvatarComponent, KjChatBubbleComponent, KjChatComponent, KjChatFooterComponent, KjChatHeaderComponent, KjChatLogComponent, KjChatMessage, KjChatThread, KjCheckboxComponent, KjColorPickerComponent, KjComboboxComponent, KjComboboxEmptyComponent, KjComboboxLoadingComponent, KjComboboxOptionComponent, KjCommandEmptyComponent, KjCommandGroupComponent, KjCommandInputComponent, KjCommandItemComponent, KjCommandPaletteComponent, KjCommandPaletteFooter, KjCommandPaletteItemTemplate, KjCommandSeparatorComponent, KjConfirmPopupActionComponent, KjConfirmPopupActionsComponent, KjConfirmPopupCancelComponent, KjConfirmPopupComponent, KjConfirmPopupContentComponent, KjConfirmPopupMessageComponent, KjConfirmPopupTriggerComponent, KjDateEditor, KjDateFilter, KjDatePickerComponent, KjDateRangePresetsComponent, KjDatetimePickerComponent, KjDialogComponent, KjDirectionToggle, KjDividerComponent, KjDrawerComponent, KjDropdownMenuComponent, KjEditorComponent, KjEmptyStateActionsComponent, KjEmptyStateComponent, KjEmptyStateDescriptionComponent, KjEmptyStateIconComponent, KjEmptyStateTitleComponent, KjFieldComponent, KjFieldErrorComponent, KjFieldGroupComponent, KjFieldHelpComponent, KjFieldLabelComponent, KjFileUploadComponent, KjFilterCellOutlet, KjFormActionsComponent, KjFormComponent, KjFormSummaryComponent, KjIconGalleryExample, KjIconUsageExample, KjInputComponent, KjInputGroupAddonComponent, KjInputGroupComponent, KjInputMaskComponent, KjInputMaskCreditCardExample, KjInputMaskCustomTokensExample, KjInputMaskDateExample, KjInputMaskExample, KjInputMaskUsageExample, KjInputMaskValidationExample, KjInputOtpComponent, KjKbdComponent, KjLinkComponent, KjListComponent, KjListItemComponent, KjMenubarComponent, KjMenubarItemComponent, KjNumberEditor, KjNumberFilter, KjNumberInputComponent, KjOptionComponent, KjOverlayBadgeComponent, KjOverlayBadgeContentComponent, KjPaginationComponent, KjPaginationDefaultComponent, KjPaginationEllipsisComponent, KjPaginationFirstComponent, KjPaginationInfoComponent, KjPaginationItemComponent, KjPaginationLastComponent, KjPaginationNextComponent, KjPaginationPreviousComponent, KjPasswordInputComponent, KjPopoverComponent, KjProgressBarComponent, KjPromptInput, KjRadioComponent, KjRadioGroupComponent, KjRichTextEditorComponent, KjSelectComponent, KjSelectEditor, KjSelectFilter, KjSheetComponent, KjSkeletonComponent, KjSkipLinkComponent, KjSliderComponent, KjSpeedDialActionComponent, KjSpeedDialActionsComponent, KjSpeedDialComponent, KjSpeedDialTriggerComponent, KjSpinnerComponent, KjStepComponent, KjStepContentComponent, KjStepLabelComponent, KjStepperComponent, KjStepperNextComponent, KjStepperPreviousComponent, KjStepperResetComponent, KjTabComponent, KjTabListComponent, KjTabPanelComponent, KjTableComponent, KjTablePaginationComponent, KjTableSidePanelComponent, KjTableSidePanelContent, KjTableStatusBarComponent, KjTableToolbarComponent, KjTableVirtual, KjTabsComponent, KjTagComponent, KjTagListComponent, KjTagRemoveComponent, KjTextEditor, KjTextFilter, KjTextareaComponent, KjTimePickerComponent, KjToastCloseComponent, KjToastComponent, KjToastViewportComponent, KjToastWrapperComponent, KjToggleComponent, KjTooltipComponent, KjTreeSelectComponent, KjTreeSelectNodeComponent, LUCIDE_ICON_NAMES, bold, bulletList, codeBlock, copyToClipboard, defaultFeatures, downloadString, exportCsv, exportJson, heading, history, image, inlineCode, italic, link, markdownShortcuts, orderedList, provideLucideIcons, quote, renderMarkdown, strike, toTsv, underline };
|
|
9081
|
+
export type { ExportOptions, KjActionSheetAction, KjActionSheetOptions, KjActionSheetRole, KjCellEditEvent, KjCellTemplateContext, KjChatBubbleSize, KjChatBubbleVariant, KjDateRange, KjEditorContract, KjEmptyStateLevel, KjEmptyStateLive, KjEmptyStateVariant, KjFilterContext, KjHeadingLevel, KjInputSize, KjInputType, KjInputVariant, KjMdBlock, KjNumberRange, KjRowClickEvent, KjSelectEditorOption, KjSelectFilterOption, KjSpeedDialPosition, KjTableDensity, KjTableExportFormat };
|