bank20baht-ui-angular 0.0.0-stage → 0.1.0

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.
@@ -0,0 +1,2058 @@
1
+ import type { ApprovalDecision, BahtAccordion, BahtAlert, BahtAppShell, BahtApprovalChain, BahtAvatar, BahtBadge, BahtBarChart, BahtBreadcrumbs, BahtButton, BahtCard, BahtCatalogCard, BahtCheckbox, BahtCode, BahtColumnPicker, BahtComments, BahtCurrency, BahtDatepicker, BahtDonutChart, BahtEditTable, BahtEmptyState, BahtErrorState, BahtFieldset, BahtFile, BahtFilter, BahtFilterBuilder, BahtForm, BahtHeatmap, BahtInput, BahtKeyvalueEditor, BahtLineChart, BahtLink, BahtList, BahtLoadingOverlay, BahtMarkdown, BahtMarkdownView, BahtMenu, BahtMeter, BahtModal, BahtMultiselect, BahtNotificationBell, BahtNumber, BahtOrderBox, BahtOtp, BahtPageHeader, BahtPagination, BahtPopover, BahtProgress, BahtProgressRing, BahtRadio, BahtRange, BahtRating, BahtRecordBar, BahtReferenceDialog, BahtReferencePicker, BahtRepeater, BahtRuleBuilder, BahtSavedFilters, BahtSection, BahtSelect, BahtSkeleton, BahtSparkline, BahtSpinner, BahtSplitButton, BahtStat, BahtStatChart, BahtSteps, BahtSwipeRow, BahtTable, BahtTabs, BahtTags, BahtText, BahtTextarea, BahtThemeToggle, BahtTimeline, BahtToast, BahtToggle, BahtTooltip, BahtTypeahead, BahtUpload, BahtWizard, BahtWorkflow, ColumnsChangeDetail, Crumb, EditRow, FilterValue, GroupToggleDetail, ListItem, MenuItem, NestedData, Rule, SavedFilter, SortDirection, ThemeName, TypeaheadOption, UploadChangeDetail, UploadErrorDetail, UploadProgressDetail, ValidationError } from 'bank20baht-ui';
2
+ import * as i0 from "@angular/core";
3
+ /** `<baht-accordion>`: Accordion */
4
+ export declare class BahtAccordionDirective {
5
+ /** The element itself, for its methods. */
6
+ readonly element: BahtAccordion;
7
+ set items(v: BahtAccordion['items']);
8
+ set multiple(v: BahtAccordion['multiple']);
9
+ /** A section opened or closed. */
10
+ readonly bahtToggle: import("@angular/core").OutputEmitterRef<{
11
+ index: number;
12
+ open: boolean;
13
+ }>;
14
+ constructor();
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtAccordionDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtAccordionDirective, "baht-accordion", ["bahtAccordion"], { "items": { "alias": "items"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; }, { "bahtToggle": "bahtToggle"; }, never, never, true, never>;
17
+ static ngAcceptInputType_multiple: unknown;
18
+ }
19
+ /** `<baht-alert>`: Inline alert / callout */
20
+ export declare class BahtAlertDirective {
21
+ /** The element itself, for its methods. */
22
+ readonly element: BahtAlert;
23
+ set tone(v: BahtAlert['tone']);
24
+ set heading(v: BahtAlert['heading']);
25
+ set message(v: BahtAlert['message']);
26
+ set dismissible(v: BahtAlert['dismissible']);
27
+ /** The close button was pressed. */
28
+ readonly bahtDismiss: import("@angular/core").OutputEmitterRef<void>;
29
+ constructor();
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtAlertDirective, never>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtAlertDirective, "baht-alert", ["bahtAlert"], { "tone": { "alias": "tone"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "message": { "alias": "message"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; }, { "bahtDismiss": "bahtDismiss"; }, never, never, true, never>;
32
+ static ngAcceptInputType_dismissible: unknown;
33
+ }
34
+ /** `<baht-app-shell>`: An application's frame: a header band, a navigator on the left and the page */
35
+ export declare class BahtAppShellDirective {
36
+ /** The element itself, for its methods. */
37
+ readonly element: BahtAppShell;
38
+ set brand(v: BahtAppShell['brand']);
39
+ set brandSub(v: BahtAppShell['brandSub']);
40
+ set brandHref(v: BahtAppShell['brandHref']);
41
+ /** A further line in the header, naming the part of the application. */
42
+ set context(v: BahtAppShell['context']);
43
+ set items(v: BahtAppShell['items']);
44
+ /** Key of the current entry. */
45
+ set value(v: BahtAppShell['value']);
46
+ /** Show a box that narrows the navigator as you type. */
47
+ set filterable(v: BahtAppShell['filterable']);
48
+ /** Accessible name of the navigator. */
49
+ set label(v: BahtAppShell['label']);
50
+ /** Groups folded away; the shell keeps it in step as headings are pressed. */
51
+ set collapsedGroups(v: BahtAppShell['collapsedGroups']);
52
+ /** An entry was pressed. `detail: { key, href }`. Cancelable: `preventDefault()` to route yourself. Clicks with a modifier key are left to the browser. */
53
+ readonly bahtNav: import("@angular/core").OutputEmitterRef<{
54
+ key: string;
55
+ href: string | undefined;
56
+ }>;
57
+ /** A group heading was pressed. `detail: { group, collapsed }`. */
58
+ readonly bahtNavGroup: import("@angular/core").OutputEmitterRef<{
59
+ group: string;
60
+ collapsed: boolean;
61
+ }>;
62
+ constructor();
63
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtAppShellDirective, never>;
64
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtAppShellDirective, "baht-app-shell", ["bahtAppShell"], { "brand": { "alias": "brand"; "required": false; }; "brandSub": { "alias": "brandSub"; "required": false; }; "brandHref": { "alias": "brandHref"; "required": false; }; "context": { "alias": "context"; "required": false; }; "items": { "alias": "items"; "required": false; }; "value": { "alias": "value"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "label": { "alias": "label"; "required": false; }; "collapsedGroups": { "alias": "collapsedGroups"; "required": false; }; }, { "bahtNav": "bahtNav"; "bahtNavGroup": "bahtNavGroup"; }, never, never, true, never>;
65
+ static ngAcceptInputType_filterable: unknown;
66
+ }
67
+ /** `<baht-approval-chain>`: An approval route: each step in order, who it is with and how far it got */
68
+ export declare class BahtApprovalChainDirective {
69
+ /** The element itself, for its methods. */
70
+ readonly element: BahtApprovalChain;
71
+ set heading(v: BahtApprovalChain['heading']);
72
+ set steps(v: BahtApprovalChain['steps']);
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtApprovalChainDirective, never>;
74
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtApprovalChainDirective, "baht-approval-chain", ["bahtApprovalChain"], { "heading": { "alias": "heading"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; }, {}, never, never, true, never>;
75
+ }
76
+ /** `<baht-avatar>`: Small circular identity chip — initials derived from `label`, or an explicit `initials` override */
77
+ export declare class BahtAvatarDirective {
78
+ /** The element itself, for its methods. */
79
+ readonly element: BahtAvatar;
80
+ /** Full name; initials are derived from it when `initials` isn't set. */
81
+ set label(v: BahtAvatar['label']);
82
+ /** Explicit override — first 1-2 characters are shown as-is. */
83
+ set initials(v: BahtAvatar['initials']);
84
+ set size(v: BahtAvatar['size']);
85
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtAvatarDirective, never>;
86
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtAvatarDirective, "baht-avatar", ["bahtAvatar"], { "label": { "alias": "label"; "required": false; }; "initials": { "alias": "initials"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
87
+ }
88
+ /** `<baht-badge>`: Status pill / tag / counter (20baht badges) */
89
+ export declare class BahtBadgeDirective {
90
+ /** The element itself, for its methods. */
91
+ readonly element: BahtBadge;
92
+ set tone(v: BahtBadge['tone']);
93
+ set label(v: BahtBadge['label']);
94
+ /** Force the dot on/off; defaults to on for status tones. */
95
+ set dot(v: BahtBadge['dot']);
96
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtBadgeDirective, never>;
97
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtBadgeDirective, "baht-badge", ["bahtBadge"], { "tone": { "alias": "tone"; "required": false; }; "label": { "alias": "label"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; }, {}, never, never, true, never>;
98
+ }
99
+ /** `<baht-bar-chart>` */
100
+ export declare class BahtBarChartDirective {
101
+ /** The element itself, for its methods. */
102
+ readonly element: BahtBarChart;
103
+ /** Original API: `{ label, count }[]`, one bar each. */
104
+ set groups(v: BahtBarChart['groups']);
105
+ /** Series API: one entry per series, one value per category. */
106
+ set series(v: BahtBarChart['series']);
107
+ /** Category names, one per value index. */
108
+ set categories(v: BahtBarChart['categories']);
109
+ /** Bars across (default) or columns up. */
110
+ set orientation(v: BahtBarChart['orientation']);
111
+ /** Stack the series inside one band instead of grouping them side by side. */
112
+ set stacked(v: BahtBarChart['stacked']);
113
+ /** Previous-period values, drawn as a muted bar under each current bar. */
114
+ set compare(v: BahtBarChart['compare']);
115
+ /** Names the muted `compare` bar in the key and the table twin. */
116
+ set compareLabel(v: BahtBarChart['compareLabel']);
117
+ /** Budget / target lines drawn over the bars. */
118
+ set markers(v: BahtBarChart['markers']);
119
+ /** `ends` prints the value at the bar tip; `none` leaves it to the tooltip. */
120
+ set labelValues(v: BahtBarChart['labelValues']);
121
+ /** Index of the series (2+ series) or category (one series) to highlight. */
122
+ set emphasis(v: BahtBarChart['emphasis']);
123
+ /** Single color for every bar; per-series palette otherwise. */
124
+ set color(v: BahtBarChart['color']);
125
+ /** Accessible summary used by the vertical (graphics-only) rendering. */
126
+ set label(v: BahtBarChart['label']);
127
+ /** Shown instead of the marks when there is nothing to plot. */
128
+ set emptyMessage(v: BahtBarChart['emptyMessage']);
129
+ /** Hold the previous render at reduced opacity while new data loads. */
130
+ set loading(v: BahtBarChart['loading']);
131
+ /** Render the "View as table" twin under the chart. */
132
+ set showTable(v: BahtBarChart['showTable']);
133
+ /** How values are rendered in labels, ticks, tooltips and the table twin. */
134
+ set format(v: BahtBarChart['format']);
135
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
136
+ set currency(v: BahtBarChart['currency']);
137
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtBarChartDirective, never>;
138
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtBarChartDirective, "baht-bar-chart", ["bahtBarChart"], { "groups": { "alias": "groups"; "required": false; }; "series": { "alias": "series"; "required": false; }; "categories": { "alias": "categories"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "stacked": { "alias": "stacked"; "required": false; }; "compare": { "alias": "compare"; "required": false; }; "compareLabel": { "alias": "compareLabel"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; "labelValues": { "alias": "labelValues"; "required": false; }; "emphasis": { "alias": "emphasis"; "required": false; }; "color": { "alias": "color"; "required": false; }; "label": { "alias": "label"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; }, {}, never, never, true, never>;
139
+ static ngAcceptInputType_stacked: unknown;
140
+ static ngAcceptInputType_loading: unknown;
141
+ static ngAcceptInputType_showTable: unknown;
142
+ }
143
+ /** `<baht-breadcrumbs>`: Breadcrumb trail */
144
+ export declare class BahtBreadcrumbsDirective {
145
+ /** The element itself, for its methods. */
146
+ readonly element: BahtBreadcrumbs;
147
+ set items(v: BahtBreadcrumbs['items']);
148
+ set separator(v: BahtBreadcrumbs['separator']);
149
+ /** A crumb was pressed. */
150
+ readonly bahtNavigate: import("@angular/core").OutputEmitterRef<{
151
+ item: Crumb;
152
+ index: number;
153
+ }>;
154
+ constructor();
155
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtBreadcrumbsDirective, never>;
156
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtBreadcrumbsDirective, "baht-breadcrumbs", ["bahtBreadcrumbs"], { "items": { "alias": "items"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; }, { "bahtNavigate": "bahtNavigate"; }, never, never, true, never>;
157
+ }
158
+ /** `<baht-button>`: Design-system button (20baht: no scale, no shadow change — color does the work) */
159
+ export declare class BahtButtonDirective {
160
+ /** The element itself, for its methods. */
161
+ readonly element: BahtButton;
162
+ set variant(v: BahtButton['variant']);
163
+ set size(v: BahtButton['size']);
164
+ set disabled(v: BahtButton['disabled']);
165
+ /** Forwarded to the native button — 'button' (default) or 'submit'. */
166
+ set type(v: BahtButton['type']);
167
+ /** Alternative to children for setting the label programmatically. */
168
+ set label(v: BahtButton['label']);
169
+ /** Optional leading icon from the curated set (copy/check/download/…). */
170
+ set icon(v: BahtButton['icon']);
171
+ /** Square icon-only button. Requires `label` for the accessible name. */
172
+ set iconOnly(v: BahtButton['iconOnly']);
173
+ /** A host `aria-label` never reaches assistive tech on its own — light DOM has no implicit ARIA relationship between a custom element and its rendered children, so an `aria-label` written on `<baht-button>` stays on the host and the inner native `<button>` keeps whatever text (or none) is inside it. Mirroring the attribute into this property forwards it to the inner button's `aria-label`, taking priority over `label`/icon-only fallback — this is how a glyph-only child (e.g. `‹`) gets a real accessible name without `icon-only`. Mapped to the plain `aria-label` attribute so hosts write it the way they naturally would; kept off the `ariaLabel` IDL accessor to avoid shadowing the platform's own ARIAMixin. */
174
+ set hostAriaLabel(v: BahtButton['hostAriaLabel']);
175
+ /** Keyboard shortcut that clicks this button from anywhere on the page, e.g. `alt+q`, `shift+alt+s`, `mod+enter` (`mod` = ⌘ on Mac, Ctrl elsewhere). Also shown in a hover/focus tooltip and announced through `aria-keyshortcuts`. */
176
+ set shortcut(v: BahtButton['shortcut']);
177
+ /** Where the shortcut tooltip sits. */
178
+ set tooltipPosition(v: BahtButton['tooltipPosition']);
179
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtButtonDirective, never>;
180
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtButtonDirective, "baht-button", ["bahtButton"], { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconOnly": { "alias": "iconOnly"; "required": false; }; "hostAriaLabel": { "alias": "hostAriaLabel"; "required": false; }; "shortcut": { "alias": "shortcut"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; }, {}, never, never, true, never>;
181
+ static ngAcceptInputType_disabled: unknown;
182
+ static ngAcceptInputType_iconOnly: unknown;
183
+ }
184
+ /** `<baht-card>`: Surface card (20baht: white on cream, 1px border, no shadow at rest — the border carries the separation) */
185
+ export declare class BahtCardDirective {
186
+ /** The element itself, for its methods. */
187
+ readonly element: BahtCard;
188
+ set heading(v: BahtCard['heading']);
189
+ set subtitle(v: BahtCard['subtitle']);
190
+ /** hero = 20px radius + roomier padding (large/feature cards). */
191
+ set hero(v: BahtCard['hero']);
192
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCardDirective, never>;
193
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCardDirective, "baht-card", ["bahtCard"], { "heading": { "alias": "heading"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "hero": { "alias": "hero"; "required": false; }; }, {}, never, never, true, never>;
194
+ static ngAcceptInputType_hero: unknown;
195
+ }
196
+ /** `<baht-catalog-card>`: A card that opens something: picture, name, one line about it */
197
+ export declare class BahtCatalogCardDirective {
198
+ /** The element itself, for its methods. */
199
+ readonly element: BahtCatalogCard;
200
+ set heading(v: BahtCatalogCard['heading']);
201
+ set description(v: BahtCatalogCard['description']);
202
+ set image(v: BahtCatalogCard['image']);
203
+ set href(v: BahtCatalogCard['href']);
204
+ /** The link was pressed. `detail: { href }`. Cancelable: `preventDefault()` to route yourself. */
205
+ readonly bahtOpen: import("@angular/core").OutputEmitterRef<{
206
+ href: string;
207
+ }>;
208
+ constructor();
209
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCatalogCardDirective, never>;
210
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCatalogCardDirective, "baht-catalog-card", ["bahtCatalogCard"], { "heading": { "alias": "heading"; "required": false; }; "description": { "alias": "description"; "required": false; }; "image": { "alias": "image"; "required": false; }; "href": { "alias": "href"; "required": false; }; }, { "bahtOpen": "bahtOpen"; }, never, never, true, never>;
211
+ }
212
+ /** `<baht-checkbox>` */
213
+ export declare class BahtCheckboxDirective {
214
+ /** The element itself, for its methods. */
215
+ readonly element: BahtCheckbox;
216
+ set field(v: BahtCheckbox['field']);
217
+ set value(v: BahtCheckbox['value']);
218
+ set disabled(v: BahtCheckbox['disabled']);
219
+ set readonly(v: BahtCheckbox['readonly']);
220
+ set required(v: BahtCheckbox['required']);
221
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
222
+ set showOptional(v: BahtCheckbox['showOptional']);
223
+ set error(v: BahtCheckbox['error']);
224
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
225
+ set debounce(v: BahtCheckbox['debounce']);
226
+ /** Field mode: the user edited the value. */
227
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
228
+ key: string;
229
+ value: unknown;
230
+ }>;
231
+ /** The value the user picked or typed, for `[(value)]`. */
232
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
233
+ constructor();
234
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCheckboxDirective, never>;
235
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCheckboxDirective, "baht-checkbox", ["bahtCheckbox"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
236
+ static ngAcceptInputType_disabled: unknown;
237
+ static ngAcceptInputType_readonly: unknown;
238
+ static ngAcceptInputType_required: unknown;
239
+ static ngAcceptInputType_showOptional: unknown;
240
+ static ngAcceptInputType_debounce: unknown;
241
+ }
242
+ /** `<baht-code>`: Monospace code (20baht): an inline chip or a block */
243
+ export declare class BahtCodeDirective {
244
+ /** The element itself, for its methods. */
245
+ readonly element: BahtCode;
246
+ set variant(v: BahtCode['variant']);
247
+ /** Alternative to children for setting the code text programmatically. */
248
+ set code(v: BahtCode['code']);
249
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCodeDirective, never>;
250
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCodeDirective, "baht-code", ["bahtCode"], { "variant": { "alias": "variant"; "required": false; }; "code": { "alias": "code"; "required": false; }; }, {}, never, never, true, never>;
251
+ }
252
+ /** `<baht-column-picker>`: The Available / Selected dialog behind a table's Columns button: add, remove and reorder columns, and expand a reference column to dot-walk into its fields. */
253
+ export declare class BahtColumnPickerDirective {
254
+ /** The element itself, for its methods. */
255
+ readonly element: BahtColumnPicker;
256
+ set open(v: BahtColumnPicker['open']);
257
+ set columns(v: BahtColumnPicker['columns']);
258
+ /** The columns showing now, in order. */
259
+ set selected(v: BahtColumnPicker['selected']);
260
+ /** OK was pressed. `detail: ColumnsChangeDetail`. */
261
+ readonly bahtColumnsChange: import("@angular/core").OutputEmitterRef<ColumnsChangeDetail>;
262
+ /** The dialog was dismissed, or OK was pressed. */
263
+ readonly bahtClose: import("@angular/core").OutputEmitterRef<void>;
264
+ constructor();
265
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtColumnPickerDirective, never>;
266
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtColumnPickerDirective, "baht-column-picker", ["bahtColumnPicker"], { "open": { "alias": "open"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; }, { "bahtColumnsChange": "bahtColumnsChange"; "bahtClose": "bahtClose"; }, never, never, true, never>;
267
+ static ngAcceptInputType_open: unknown;
268
+ }
269
+ /** `<baht-comments>`: A conversation on a record: the thread, oldest first, and a composer */
270
+ export declare class BahtCommentsDirective {
271
+ /** The element itself, for its methods. */
272
+ readonly element: BahtComments;
273
+ set entries(v: BahtComments['entries']);
274
+ set allowInternal(v: BahtComments['allowInternal']);
275
+ set placeholder(v: BahtComments['placeholder']);
276
+ set internalLabel(v: BahtComments['internalLabel']);
277
+ set emptyMessage(v: BahtComments['emptyMessage']);
278
+ set busy(v: BahtComments['busy']);
279
+ /** The composer was submitted; the box clears. */
280
+ readonly bahtSubmit: import("@angular/core").OutputEmitterRef<{
281
+ body: string;
282
+ internal: boolean;
283
+ }>;
284
+ constructor();
285
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCommentsDirective, never>;
286
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCommentsDirective, "baht-comments", ["bahtComments"], { "entries": { "alias": "entries"; "required": false; }; "allowInternal": { "alias": "allowInternal"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "internalLabel": { "alias": "internalLabel"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "busy": { "alias": "busy"; "required": false; }; }, { "bahtSubmit": "bahtSubmit"; }, never, never, true, never>;
287
+ static ngAcceptInputType_allowInternal: unknown;
288
+ static ngAcceptInputType_busy: unknown;
289
+ }
290
+ /** `<baht-currency>`: Money input: plain digits while typing, thousands-separated on blur */
291
+ export declare class BahtCurrencyDirective {
292
+ /** The element itself, for its methods. */
293
+ readonly element: BahtCurrency;
294
+ set field(v: BahtCurrency['field']);
295
+ set value(v: BahtCurrency['value']);
296
+ set disabled(v: BahtCurrency['disabled']);
297
+ set readonly(v: BahtCurrency['readonly']);
298
+ set required(v: BahtCurrency['required']);
299
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
300
+ set showOptional(v: BahtCurrency['showOptional']);
301
+ set error(v: BahtCurrency['error']);
302
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
303
+ set debounce(v: BahtCurrency['debounce']);
304
+ /** Field mode: the user edited the value. */
305
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
306
+ key: string;
307
+ value: unknown;
308
+ }>;
309
+ /** The value the user picked or typed, for `[(value)]`. */
310
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
311
+ constructor();
312
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtCurrencyDirective, never>;
313
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtCurrencyDirective, "baht-currency", ["bahtCurrency"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
314
+ static ngAcceptInputType_disabled: unknown;
315
+ static ngAcceptInputType_readonly: unknown;
316
+ static ngAcceptInputType_required: unknown;
317
+ static ngAcceptInputType_showOptional: unknown;
318
+ static ngAcceptInputType_debounce: unknown;
319
+ }
320
+ /** `<baht-datepicker>`: Calendar field on top of flatpickr */
321
+ export declare class BahtDatepickerDirective {
322
+ /** The element itself, for its methods. */
323
+ readonly element: BahtDatepicker;
324
+ set field(v: BahtDatepicker['field']);
325
+ set value(v: BahtDatepicker['value']);
326
+ set disabled(v: BahtDatepicker['disabled']);
327
+ set readonly(v: BahtDatepicker['readonly']);
328
+ set required(v: BahtDatepicker['required']);
329
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
330
+ set showOptional(v: BahtDatepicker['showOptional']);
331
+ set error(v: BahtDatepicker['error']);
332
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
333
+ set debounce(v: BahtDatepicker['debounce']);
334
+ /** Field mode: the user edited the value. */
335
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
336
+ key: string;
337
+ value: unknown;
338
+ }>;
339
+ /** The value the user picked or typed, for `[(value)]`. */
340
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
341
+ constructor();
342
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtDatepickerDirective, never>;
343
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtDatepickerDirective, "baht-datepicker", ["bahtDatepicker"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
344
+ static ngAcceptInputType_disabled: unknown;
345
+ static ngAcceptInputType_readonly: unknown;
346
+ static ngAcceptInputType_required: unknown;
347
+ static ngAcceptInputType_showOptional: unknown;
348
+ static ngAcceptInputType_debounce: unknown;
349
+ }
350
+ /** `<baht-donut-chart>`: Pure-SVG donut with a legend that carries value and share */
351
+ export declare class BahtDonutChartDirective {
352
+ /** The element itself, for its methods. */
353
+ readonly element: BahtDonutChart;
354
+ set groups(v: BahtDonutChart['groups']);
355
+ set total(v: BahtDonutChart['total']);
356
+ /** Single-series color override (first segment). */
357
+ set color(v: BahtDonutChart['color']);
358
+ set centerLabel(v: BahtDonutChart['centerLabel']);
359
+ /** Label of the folded tail bucket. */
360
+ set otherLabel(v: BahtDonutChart['otherLabel']);
361
+ /** Shown instead of the marks when there is nothing to plot. */
362
+ set emptyMessage(v: BahtDonutChart['emptyMessage']);
363
+ /** Hold the previous render at reduced opacity while new data loads. */
364
+ set loading(v: BahtDonutChart['loading']);
365
+ /** Render the "View as table" twin under the chart. */
366
+ set showTable(v: BahtDonutChart['showTable']);
367
+ /** How values are rendered in labels, ticks, tooltips and the table twin. */
368
+ set format(v: BahtDonutChart['format']);
369
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
370
+ set currency(v: BahtDonutChart['currency']);
371
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtDonutChartDirective, never>;
372
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtDonutChartDirective, "baht-donut-chart", ["bahtDonutChart"], { "groups": { "alias": "groups"; "required": false; }; "total": { "alias": "total"; "required": false; }; "color": { "alias": "color"; "required": false; }; "centerLabel": { "alias": "centerLabel"; "required": false; }; "otherLabel": { "alias": "otherLabel"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; }, {}, never, never, true, never>;
373
+ static ngAcceptInputType_loading: unknown;
374
+ static ngAcceptInputType_showTable: unknown;
375
+ }
376
+ /** `<baht-edit-table>`: A table whose cells are edited in place (reference lists, catalog items, groups) */
377
+ export declare class BahtEditTableDirective {
378
+ /** The element itself, for its methods. */
379
+ readonly element: BahtEditTable;
380
+ set columns(v: BahtEditTable['columns']);
381
+ set rows(v: BahtEditTable['rows']);
382
+ set rowKey(v: BahtEditTable['rowKey']);
383
+ set addable(v: BahtEditTable['addable']);
384
+ set removable(v: BahtEditTable['removable']);
385
+ set label(v: BahtEditTable['label']);
386
+ /** The blank first row was added (`addable`). */
387
+ readonly bahtRowAdd: import("@angular/core").OutputEmitterRef<{
388
+ row: EditRow;
389
+ }>;
390
+ /** A changed row's Save was pressed. */
391
+ readonly bahtRowSave: import("@angular/core").OutputEmitterRef<{
392
+ key: string;
393
+ row: EditRow;
394
+ }>;
395
+ /** Remove was pressed (`removable`). */
396
+ readonly bahtRowDelete: import("@angular/core").OutputEmitterRef<{
397
+ key: string;
398
+ row: EditRow;
399
+ }>;
400
+ constructor();
401
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtEditTableDirective, never>;
402
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtEditTableDirective, "baht-edit-table", ["bahtEditTable"], { "columns": { "alias": "columns"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "rowKey": { "alias": "rowKey"; "required": false; }; "addable": { "alias": "addable"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "bahtRowAdd": "bahtRowAdd"; "bahtRowSave": "bahtRowSave"; "bahtRowDelete": "bahtRowDelete"; }, never, never, true, never>;
403
+ static ngAcceptInputType_addable: unknown;
404
+ static ngAcceptInputType_removable: unknown;
405
+ }
406
+ /** `<baht-empty-state>`: Centered "nothing here" placeholder for lists, tables, and searches */
407
+ export declare class BahtEmptyStateDirective {
408
+ /** The element itself, for its methods. */
409
+ readonly element: BahtEmptyState;
410
+ /** Illustration name (`empty-box`, `search-slash`, `folder`, …), or any emoji / short text. Empty string hides it. */
411
+ set icon(v: BahtEmptyState['icon']);
412
+ set message(v: BahtEmptyState['message']);
413
+ set hint(v: BahtEmptyState['hint']);
414
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtEmptyStateDirective, never>;
415
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtEmptyStateDirective, "baht-empty-state", ["bahtEmptyState"], { "icon": { "alias": "icon"; "required": false; }; "message": { "alias": "message"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; }, {}, never, never, true, never>;
416
+ }
417
+ /** `<baht-error-state>`: Centered failure placeholder with an optional retry action */
418
+ export declare class BahtErrorStateDirective {
419
+ /** The element itself, for its methods. */
420
+ readonly element: BahtErrorState;
421
+ /** Illustration name (`error` by default), or any emoji / short text. Empty string hides it. */
422
+ set icon(v: BahtErrorState['icon']);
423
+ set heading(v: BahtErrorState['heading']);
424
+ set message(v: BahtErrorState['message']);
425
+ /** Renders a retry button with this label; omit for no action. */
426
+ set retryLabel(v: BahtErrorState['retryLabel']);
427
+ /** Retry was pressed. */
428
+ readonly bahtRetry: import("@angular/core").OutputEmitterRef<void>;
429
+ constructor();
430
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtErrorStateDirective, never>;
431
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtErrorStateDirective, "baht-error-state", ["bahtErrorState"], { "icon": { "alias": "icon"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "message": { "alias": "message"; "required": false; }; "retryLabel": { "alias": "retryLabel"; "required": false; }; }, { "bahtRetry": "bahtRetry"; }, never, never, true, never>;
432
+ }
433
+ /** `<baht-fieldset>`: Semantic group wrapper (native <fieldset>/<legend>) */
434
+ export declare class BahtFieldsetDirective {
435
+ /** The element itself, for its methods. */
436
+ readonly element: BahtFieldset;
437
+ set legend(v: BahtFieldset['legend']);
438
+ /** Muted help line under the group (e.g. "Fill both languages for accurate reading"). */
439
+ set help(v: BahtFieldset['help']);
440
+ set disabled(v: BahtFieldset['disabled']);
441
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtFieldsetDirective, never>;
442
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtFieldsetDirective, "baht-fieldset", ["bahtFieldset"], { "legend": { "alias": "legend"; "required": false; }; "help": { "alias": "help"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
443
+ static ngAcceptInputType_disabled: unknown;
444
+ }
445
+ /** `<baht-file>`: File field (spec 01 §2 + §13) */
446
+ export declare class BahtFileDirective {
447
+ /** The element itself, for its methods. */
448
+ readonly element: BahtFile;
449
+ /** Resolved registry uploader — <baht-form> injects it when `field.uploader` is set. */
450
+ set uploader(v: BahtFile['uploader']);
451
+ set field(v: BahtFile['field']);
452
+ set value(v: BahtFile['value']);
453
+ set disabled(v: BahtFile['disabled']);
454
+ set readonly(v: BahtFile['readonly']);
455
+ set required(v: BahtFile['required']);
456
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
457
+ set showOptional(v: BahtFile['showOptional']);
458
+ set error(v: BahtFile['error']);
459
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
460
+ set debounce(v: BahtFile['debounce']);
461
+ /** Field mode: the user edited the value. */
462
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
463
+ key: string;
464
+ value: unknown;
465
+ }>;
466
+ /** The value the user picked or typed, for `[(value)]`. */
467
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
468
+ constructor();
469
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtFileDirective, never>;
470
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtFileDirective, "baht-file", ["bahtFile"], { "uploader": { "alias": "uploader"; "required": false; }; "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
471
+ static ngAcceptInputType_disabled: unknown;
472
+ static ngAcceptInputType_readonly: unknown;
473
+ static ngAcceptInputType_required: unknown;
474
+ static ngAcceptInputType_showOptional: unknown;
475
+ static ngAcceptInputType_debounce: unknown;
476
+ }
477
+ /** `<baht-filter>`: Filter chip group */
478
+ export declare class BahtFilterDirective {
479
+ /** The element itself, for its methods. */
480
+ readonly element: BahtFilter;
481
+ set options(v: BahtFilter['options']);
482
+ set selected(v: BahtFilter['selected']);
483
+ /** Look: `'chips'` (default) = separate pill chips; `'segmented'` = one joined segmented control. With `multiple=false` a segmented control never clears. */
484
+ set variant(v: BahtFilter['variant']);
485
+ /** false = radio behavior (max one active; clicking it again clears — except with `variant="segmented"`, where the active segment stays selected). */
486
+ set multiple(v: BahtFilter['multiple']);
487
+ set disabled(v: BahtFilter['disabled']);
488
+ /** Accessible name for the chip group. */
489
+ set label(v: BahtFilter['label']);
490
+ /** The selection changed. */
491
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
492
+ selected: string[];
493
+ }>;
494
+ constructor();
495
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtFilterDirective, never>;
496
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtFilterDirective, "baht-filter", ["bahtFilter"], { "options": { "alias": "options"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "bahtChange": "bahtChange"; }, never, never, true, never>;
497
+ static ngAcceptInputType_multiple: unknown;
498
+ static ngAcceptInputType_disabled: unknown;
499
+ }
500
+ /** `<baht-filter-builder>`: Builds a filter for a list: rows of column, comparison and value, all or any of them */
501
+ export declare class BahtFilterBuilderDirective {
502
+ /** The element itself, for its methods. */
503
+ readonly element: BahtFilterBuilder;
504
+ set fields(v: BahtFilterBuilder['fields']);
505
+ set value(v: BahtFilterBuilder['value']);
506
+ /** The filter changed. `detail: { value }`. */
507
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
508
+ value: FilterValue;
509
+ }>;
510
+ /** The value the user picked or typed, for `[(value)]`. */
511
+ readonly valueChange: import("@angular/core").OutputEmitterRef<FilterValue>;
512
+ constructor();
513
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtFilterBuilderDirective, never>;
514
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtFilterBuilderDirective, "baht-filter-builder", ["bahtFilterBuilder"], { "fields": { "alias": "fields"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "bahtChange": "bahtChange"; "valueChange": "valueChange"; }, never, never, true, never>;
515
+ }
516
+ /** `<baht-form>`: <baht-form> — dumb controlled form renderer (spec 01) */
517
+ export declare class BahtFormDirective {
518
+ /** The element itself, for its methods. */
519
+ readonly element: BahtForm;
520
+ set form(v: BahtForm['form']);
521
+ set value(v: BahtForm['value']);
522
+ set registry(v: BahtForm['registry']);
523
+ /** Label every non-required field "(optional)" (localized) instead of relying on asterisks alone. */
524
+ set showOptional(v: BahtForm['showOptional']);
525
+ set options(v: BahtForm['options']);
526
+ /** L2 (workflow) derived per-field UI state, keyed by field key. Optional. */
527
+ set fieldStates(v: BahtForm['fieldStates']);
528
+ /** Name of a view from `form.views`. Display-only: when set, only that view's fields are rendered and validated (the user can only fix what they see), but getData() still returns the FULL form — the server always validates the complete schema, views never change the submit payload. */
529
+ set view(v: BahtForm['view']);
530
+ /** Feature-flag values (spec 01 §12) — fields whose `flag` is off behave as if they were never in the schema: no render, no validation, no payload. */
531
+ set flags(v: BahtForm['flags']);
532
+ /** Key of the open tab section; the first one showing when unset or gone. */
533
+ set tab(v: BahtForm['tab']);
534
+ /** Force every field readonly — a display-only render of this form's own layout/widths. */
535
+ set readonly(v: BahtForm['readonly']);
536
+ /** A tab of a tabbed layout was picked. */
537
+ readonly bahtTabChange: import("@angular/core").OutputEmitterRef<{
538
+ value: string;
539
+ }>;
540
+ /** `validate()` ran. */
541
+ readonly bahtValidity: import("@angular/core").OutputEmitterRef<{
542
+ valid: boolean;
543
+ errors: ValidationError[];
544
+ }>;
545
+ /** A field changed (an edit or a script); `data` is the whole form. */
546
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
547
+ form_name: string;
548
+ key: string;
549
+ value: unknown;
550
+ data: Record<string, unknown>;
551
+ }>;
552
+ constructor();
553
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtFormDirective, never>;
554
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtFormDirective, "baht-form", ["bahtForm"], { "form": { "alias": "form"; "required": false; }; "value": { "alias": "value"; "required": false; }; "registry": { "alias": "registry"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "options": { "alias": "options"; "required": false; }; "fieldStates": { "alias": "fieldStates"; "required": false; }; "view": { "alias": "view"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "tab": { "alias": "tab"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "bahtTabChange": "bahtTabChange"; "bahtValidity": "bahtValidity"; "bahtChange": "bahtChange"; }, never, never, true, never>;
555
+ static ngAcceptInputType_showOptional: unknown;
556
+ static ngAcceptInputType_readonly: unknown;
557
+ }
558
+ /** `<baht-heatmap>`: Calendar heat for one month or N weeks: one cell per day, colored on the sequential ramp, with a weekday header, a per-cell tooltip and a "less / more" scale legend */
559
+ export declare class BahtHeatmapDirective {
560
+ /** The element itself, for its methods. */
561
+ readonly element: BahtHeatmap;
562
+ /** `{ date: 'YYYY-MM-DD', value }[]`; days with no entry render as empty. */
563
+ set values(v: BahtHeatmap['values']);
564
+ /** First day (inclusive), `YYYY-MM-DD`. Defaults to the earliest value. */
565
+ set from(v: BahtHeatmap['from']);
566
+ /** Last day (inclusive), `YYYY-MM-DD`. Defaults to the latest value. */
567
+ set to(v: BahtHeatmap['to']);
568
+ /** Caption on the low end of the scale legend. */
569
+ set lessLabel(v: BahtHeatmap['lessLabel']);
570
+ /** Caption on the high end of the scale legend. */
571
+ set moreLabel(v: BahtHeatmap['moreLabel']);
572
+ /** Text shown in a zero/empty cell in `show-values` mode. */
573
+ set zeroLabel(v: BahtHeatmap['zeroLabel']);
574
+ /** Roomier month-grid layout with the day number and value printed in each cell. */
575
+ set showValues(v: BahtHeatmap['showValues']);
576
+ /** Accessible summary; falls back to a generated sentence. */
577
+ set label(v: BahtHeatmap['label']);
578
+ /** Shown instead of the marks when there is nothing to plot. */
579
+ set emptyMessage(v: BahtHeatmap['emptyMessage']);
580
+ /** Hold the previous render at reduced opacity while new data loads. */
581
+ set loading(v: BahtHeatmap['loading']);
582
+ /** Render the "View as table" twin under the chart. */
583
+ set showTable(v: BahtHeatmap['showTable']);
584
+ /** How values are rendered in labels, ticks, tooltips and the table twin. */
585
+ set format(v: BahtHeatmap['format']);
586
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
587
+ set currency(v: BahtHeatmap['currency']);
588
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtHeatmapDirective, never>;
589
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtHeatmapDirective, "baht-heatmap", ["bahtHeatmap"], { "values": { "alias": "values"; "required": false; }; "from": { "alias": "from"; "required": false; }; "to": { "alias": "to"; "required": false; }; "lessLabel": { "alias": "lessLabel"; "required": false; }; "moreLabel": { "alias": "moreLabel"; "required": false; }; "zeroLabel": { "alias": "zeroLabel"; "required": false; }; "showValues": { "alias": "showValues"; "required": false; }; "label": { "alias": "label"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; }, {}, never, never, true, never>;
590
+ static ngAcceptInputType_showValues: unknown;
591
+ static ngAcceptInputType_loading: unknown;
592
+ static ngAcceptInputType_showTable: unknown;
593
+ }
594
+ /** `<baht-input>`: text + email + password share one control; email differs only in input type + validator, password only in input type (masked, never formatted or logged). */
595
+ export declare class BahtInputDirective {
596
+ /** The element itself, for its methods. */
597
+ readonly element: BahtInput;
598
+ set field(v: BahtInput['field']);
599
+ set value(v: BahtInput['value']);
600
+ set disabled(v: BahtInput['disabled']);
601
+ set readonly(v: BahtInput['readonly']);
602
+ set required(v: BahtInput['required']);
603
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
604
+ set showOptional(v: BahtInput['showOptional']);
605
+ set error(v: BahtInput['error']);
606
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
607
+ set debounce(v: BahtInput['debounce']);
608
+ /** Field mode: the user edited the value. */
609
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
610
+ key: string;
611
+ value: unknown;
612
+ }>;
613
+ /** The value the user picked or typed, for `[(value)]`. */
614
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
615
+ constructor();
616
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtInputDirective, never>;
617
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtInputDirective, "baht-input", ["bahtInput"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
618
+ static ngAcceptInputType_disabled: unknown;
619
+ static ngAcceptInputType_readonly: unknown;
620
+ static ngAcceptInputType_required: unknown;
621
+ static ngAcceptInputType_showOptional: unknown;
622
+ static ngAcceptInputType_debounce: unknown;
623
+ }
624
+ /** `<baht-keyvalue-editor>`: Inline key = value row editor (field maps, config objects, …) */
625
+ export declare class BahtKeyvalueEditorDirective {
626
+ /** The element itself, for its methods. */
627
+ readonly element: BahtKeyvalueEditor;
628
+ set value(v: BahtKeyvalueEditor['value']);
629
+ set keyPlaceholder(v: BahtKeyvalueEditor['keyPlaceholder']);
630
+ set valuePlaceholder(v: BahtKeyvalueEditor['valuePlaceholder']);
631
+ set add_label(v: BahtKeyvalueEditor['add_label']);
632
+ set disabled(v: BahtKeyvalueEditor['disabled']);
633
+ /** A pair was added, edited or removed. */
634
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
635
+ value: Record<string, string>;
636
+ }>;
637
+ /** The value the user picked or typed, for `[(value)]`. */
638
+ readonly valueChange: import("@angular/core").OutputEmitterRef<Record<string, unknown>>;
639
+ constructor();
640
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtKeyvalueEditorDirective, never>;
641
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtKeyvalueEditorDirective, "baht-keyvalue-editor", ["bahtKeyvalueEditor"], { "value": { "alias": "value"; "required": false; }; "keyPlaceholder": { "alias": "keyPlaceholder"; "required": false; }; "valuePlaceholder": { "alias": "valuePlaceholder"; "required": false; }; "add_label": { "alias": "add_label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "bahtChange": "bahtChange"; "valueChange": "valueChange"; }, never, never, true, never>;
642
+ static ngAcceptInputType_disabled: unknown;
643
+ }
644
+ /** `<baht-line-chart>`: Multi-series line chart with a crosshair tooltip that lists every series at the hovered x */
645
+ export declare class BahtLineChartDirective {
646
+ /** The element itself, for its methods. */
647
+ readonly element: BahtLineChart;
648
+ /** One entry per line: `{ name, values, color? }`. */
649
+ set series(v: BahtLineChart['series']);
650
+ /** X labels, one per value index. */
651
+ set categories(v: BahtLineChart['categories']);
652
+ /** Fill under the line at 10% opacity. Single series only. */
653
+ set area(v: BahtLineChart['area']);
654
+ /** Reference lines (targets, averages) drawn across the plot. */
655
+ set markers(v: BahtLineChart['markers']);
656
+ /** Draw the last N points dashed — a projection, not measured data. */
657
+ set forecast(v: BahtLineChart['forecast']);
658
+ /** Hairline at this value (0, a target). `null` draws none. */
659
+ set baseline(v: BahtLineChart['baseline']);
660
+ /** `ends` labels the last point of each line when the labels do not collide. */
661
+ set labelValues(v: BahtLineChart['labelValues']);
662
+ /** Accessible summary; falls back to a generated sentence. */
663
+ set label(v: BahtLineChart['label']);
664
+ /** Shown instead of the marks when there is nothing to plot. */
665
+ set emptyMessage(v: BahtLineChart['emptyMessage']);
666
+ /** Hold the previous render at reduced opacity while new data loads. */
667
+ set loading(v: BahtLineChart['loading']);
668
+ /** Render the "View as table" twin under the chart. */
669
+ set showTable(v: BahtLineChart['showTable']);
670
+ /** How values are rendered in labels, ticks, tooltips and the table twin. */
671
+ set format(v: BahtLineChart['format']);
672
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
673
+ set currency(v: BahtLineChart['currency']);
674
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtLineChartDirective, never>;
675
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtLineChartDirective, "baht-line-chart", ["bahtLineChart"], { "series": { "alias": "series"; "required": false; }; "categories": { "alias": "categories"; "required": false; }; "area": { "alias": "area"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; "forecast": { "alias": "forecast"; "required": false; }; "baseline": { "alias": "baseline"; "required": false; }; "labelValues": { "alias": "labelValues"; "required": false; }; "label": { "alias": "label"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; }, {}, never, never, true, never>;
676
+ static ngAcceptInputType_area: unknown;
677
+ static ngAcceptInputType_forecast: unknown;
678
+ static ngAcceptInputType_loading: unknown;
679
+ static ngAcceptInputType_showTable: unknown;
680
+ }
681
+ /** `<baht-link>`: Styled anchor (20baht underline treatment) */
682
+ export declare class BahtLinkDirective {
683
+ /** The element itself, for its methods. */
684
+ readonly element: BahtLink;
685
+ set href(v: BahtLink['href']);
686
+ set label(v: BahtLink['label']);
687
+ set external(v: BahtLink['external']);
688
+ /** Screen-reader suffix for external links (override to localize). */
689
+ set externalHint(v: BahtLink['externalHint']);
690
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtLinkDirective, never>;
691
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtLinkDirective, "baht-link", ["bahtLink"], { "href": { "alias": "href"; "required": false; }; "label": { "alias": "label"; "required": false; }; "external": { "alias": "external"; "required": false; }; "externalHint": { "alias": "externalHint"; "required": false; }; }, {}, never, never, true, never>;
692
+ static ngAcceptInputType_external: unknown;
693
+ }
694
+ /** `<baht-list>`: Display list — same server-side contract as <baht-table>: `items` is the current page, `loading` shows skeleton rows, the host fetches on `baht-page-change` (pair with <baht-pagination>). */
695
+ export declare class BahtListDirective {
696
+ /** The element itself, for its methods. */
697
+ readonly element: BahtList;
698
+ set items(v: BahtList['items']);
699
+ set loading(v: BahtList['loading']);
700
+ set error(v: BahtList['error']);
701
+ set errorMessage(v: BahtList['errorMessage']);
702
+ set emptyMessage(v: BahtList['emptyMessage']);
703
+ set skeletonRows(v: BahtList['skeletonRows']);
704
+ set clickable(v: BahtList['clickable']);
705
+ /** An item was pressed. */
706
+ readonly bahtItemClick: import("@angular/core").OutputEmitterRef<{
707
+ item: ListItem;
708
+ index: number;
709
+ id: string | number | undefined;
710
+ }>;
711
+ constructor();
712
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtListDirective, never>;
713
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtListDirective, "baht-list", ["bahtList"], { "items": { "alias": "items"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; }, { "bahtItemClick": "bahtItemClick"; }, never, never, true, never>;
714
+ static ngAcceptInputType_loading: unknown;
715
+ static ngAcceptInputType_error: unknown;
716
+ static ngAcceptInputType_skeletonRows: unknown;
717
+ static ngAcceptInputType_clickable: unknown;
718
+ }
719
+ /** `<baht-loading-overlay>`: Full-viewport loading scrim with a centered spinner (0.4 ink scrim, same as `<baht-modal>`'s) */
720
+ export declare class BahtLoadingOverlayDirective {
721
+ /** The element itself, for its methods. */
722
+ readonly element: BahtLoadingOverlay;
723
+ set open(v: BahtLoadingOverlay['open']);
724
+ set label(v: BahtLoadingOverlay['label']);
725
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtLoadingOverlayDirective, never>;
726
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtLoadingOverlayDirective, "baht-loading-overlay", ["bahtLoadingOverlay"], { "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
727
+ static ngAcceptInputType_open: unknown;
728
+ }
729
+ /** `<baht-markdown>`: `type: 'markdown'` — GitHub's comment box: Write and Preview tabs over a plain string of markdown */
730
+ export declare class BahtMarkdownDirective {
731
+ /** The element itself, for its methods. */
732
+ readonly element: BahtMarkdown;
733
+ /** Resolved registry uploader — <baht-form> injects it when `field.uploader` is set. */
734
+ set uploader(v: BahtMarkdown['uploader']);
735
+ /** Which image URLs may embed — <baht-form> injects `registry.markdownImage`. */
736
+ set allowImage(v: BahtMarkdown['allowImage']);
737
+ set field(v: BahtMarkdown['field']);
738
+ set value(v: BahtMarkdown['value']);
739
+ set disabled(v: BahtMarkdown['disabled']);
740
+ set readonly(v: BahtMarkdown['readonly']);
741
+ set required(v: BahtMarkdown['required']);
742
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
743
+ set showOptional(v: BahtMarkdown['showOptional']);
744
+ set error(v: BahtMarkdown['error']);
745
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
746
+ set debounce(v: BahtMarkdown['debounce']);
747
+ /** Field mode: the user edited the value. */
748
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
749
+ key: string;
750
+ value: unknown;
751
+ }>;
752
+ /** The value the user picked or typed, for `[(value)]`. */
753
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
754
+ constructor();
755
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtMarkdownDirective, never>;
756
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtMarkdownDirective, "baht-markdown", ["bahtMarkdown"], { "uploader": { "alias": "uploader"; "required": false; }; "allowImage": { "alias": "allowImage"; "required": false; }; "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
757
+ static ngAcceptInputType_disabled: unknown;
758
+ static ngAcceptInputType_readonly: unknown;
759
+ static ngAcceptInputType_required: unknown;
760
+ static ngAcceptInputType_showOptional: unknown;
761
+ static ngAcceptInputType_debounce: unknown;
762
+ }
763
+ /** `<baht-markdown-view>`: markdown source as sanitized HTML: GitHub-flavoured, raw HTML shown as text, and images only where `allowImage` says (same origin by default) */
764
+ export declare class BahtMarkdownViewDirective {
765
+ /** The element itself, for its methods. */
766
+ readonly element: BahtMarkdownView;
767
+ /** The markdown source. */
768
+ set source(v: BahtMarkdownView['source']);
769
+ /** Which image URLs may embed; any other image renders as a link. */
770
+ set allowImage(v: BahtMarkdownView['allowImage']);
771
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtMarkdownViewDirective, never>;
772
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtMarkdownViewDirective, "baht-markdown-view", ["bahtMarkdownView"], { "source": { "alias": "source"; "required": false; }; "allowImage": { "alias": "allowImage"; "required": false; }; }, {}, never, never, true, never>;
773
+ }
774
+ /** `<baht-menu>`: Action menu behind a button: the ⋯ "more" menu on a table row or card, or a labelled "Export ▾" menu */
775
+ export declare class BahtMenuDirective {
776
+ /** The element itself, for its methods. */
777
+ readonly element: BahtMenu;
778
+ /** Menu entries. Set as a property: `el.items = [...]`. */
779
+ set items(v: BahtMenu['items']);
780
+ /** Visible trigger text; empty = an icon-only trigger. */
781
+ set triggerLabel(v: BahtMenu['triggerLabel']);
782
+ /** Trigger icon from the curated set (default `more`, the ⋯). Ignored when `trigger-label` is set. */
783
+ set icon(v: BahtMenu['icon']);
784
+ /** Accessible name of the trigger (and the menu). Defaults to the trigger text, else "More actions". */
785
+ set label(v: BahtMenu['label']);
786
+ /** Trigger look: `ghost` (default) or `secondary`. */
787
+ set variant(v: BahtMenu['variant']);
788
+ set size(v: BahtMenu['size']);
789
+ /** Menu edge aligned with the trigger: `'end'` (default) or `'start'`. */
790
+ set align(v: BahtMenu['align']);
791
+ set disabled(v: BahtMenu['disabled']);
792
+ /** Non-item first line of the menu ("Signed in as …"). */
793
+ set heading(v: BahtMenu['heading']);
794
+ /** An item was picked (click, keyboard or its shortcut). `detail: { value, item }`. */
795
+ readonly bahtSelect: import("@angular/core").OutputEmitterRef<{
796
+ value: string;
797
+ item: MenuItem;
798
+ }>;
799
+ constructor();
800
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtMenuDirective, never>;
801
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtMenuDirective, "baht-menu", ["bahtMenu"], { "items": { "alias": "items"; "required": false; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "align": { "alias": "align"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; }, { "bahtSelect": "bahtSelect"; }, never, never, true, never>;
802
+ static ngAcceptInputType_disabled: unknown;
803
+ }
804
+ /** `<baht-meter>`: Spent-against-budget meter */
805
+ export declare class BahtMeterDirective {
806
+ /** The element itself, for its methods. */
807
+ readonly element: BahtMeter;
808
+ /** Amount used so far. */
809
+ set value(v: BahtMeter['value']);
810
+ /** The budget / capacity the value is measured against. */
811
+ set max(v: BahtMeter['max']);
812
+ /** Sentence-case caption. */
813
+ set label(v: BahtMeter['label']);
814
+ /** How value and max read: number | currency | percent | compact. */
815
+ set format(v: BahtMeter['format']);
816
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
817
+ set currency(v: BahtMeter['currency']);
818
+ /** Fractions of `max` where the fill turns warning / danger. */
819
+ set thresholds(v: BahtMeter['thresholds']);
820
+ /** Pace marker: where the value *should* be by now. `null` hides the tick. */
821
+ set expected(v: BahtMeter['expected']);
822
+ /** Word shown after the numbers when the meter is over budget. */
823
+ set overLabel(v: BahtMeter['overLabel']);
824
+ /** Word shown when the value has reached the budget exactly, but not passed it. */
825
+ set atLabel(v: BahtMeter['atLabel']);
826
+ /** Word shown after the numbers when the meter is near its limit. */
827
+ set nearLabel(v: BahtMeter['nearLabel']);
828
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtMeterDirective, never>;
829
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtMeterDirective, "baht-meter", ["bahtMeter"], { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "label": { "alias": "label"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "thresholds": { "alias": "thresholds"; "required": false; }; "expected": { "alias": "expected"; "required": false; }; "overLabel": { "alias": "overLabel"; "required": false; }; "atLabel": { "alias": "atLabel"; "required": false; }; "nearLabel": { "alias": "nearLabel"; "required": false; }; }, {}, never, never, true, never>;
830
+ static ngAcceptInputType_value: unknown;
831
+ static ngAcceptInputType_max: unknown;
832
+ }
833
+ /** `<baht-modal>`: Modal dialog (20baht: 0.4 ink scrim, no blur; float shadow; 20px radius) */
834
+ export declare class BahtModalDirective {
835
+ /** The element itself, for its methods. */
836
+ readonly element: BahtModal;
837
+ set open(v: BahtModal['open']);
838
+ set heading(v: BahtModal['heading']);
839
+ /** One muted line under the heading; also becomes the dialog's aria-describedby. */
840
+ set description(v: BahtModal['description']);
841
+ set showClose(v: BahtModal['showClose']);
842
+ /** `'center'` (default) dialog, `'sheet'` bottom sheet below 600px (centered from 600px up), or `'side'` full-height drawer at the inline end. */
843
+ set placement(v: BahtModal['placement']);
844
+ /** Scrim click requests close. Off by default: a stray click outside the panel must not throw away what the user typed — close via ×, Escape or your buttons. */
845
+ set closeOnScrim(v: BahtModal['closeOnScrim']);
846
+ /** Asked to close; the host sets `open` to false. */
847
+ readonly bahtClose: import("@angular/core").OutputEmitterRef<{
848
+ reason: "escape" | "scrim" | "button";
849
+ }>;
850
+ constructor();
851
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtModalDirective, never>;
852
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtModalDirective, "baht-modal", ["bahtModal"], { "open": { "alias": "open"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "description": { "alias": "description"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "closeOnScrim": { "alias": "closeOnScrim"; "required": false; }; }, { "bahtClose": "bahtClose"; }, never, never, true, never>;
853
+ static ngAcceptInputType_open: unknown;
854
+ static ngAcceptInputType_showClose: unknown;
855
+ static ngAcceptInputType_closeOnScrim: unknown;
856
+ }
857
+ /** `<baht-multiselect>`: Multi-pick rendered as a checkbox group; value = array of option keys. */
858
+ export declare class BahtMultiselectDirective {
859
+ /** The element itself, for its methods. */
860
+ readonly element: BahtMultiselect;
861
+ set field(v: BahtMultiselect['field']);
862
+ set value(v: BahtMultiselect['value']);
863
+ set disabled(v: BahtMultiselect['disabled']);
864
+ set readonly(v: BahtMultiselect['readonly']);
865
+ set required(v: BahtMultiselect['required']);
866
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
867
+ set showOptional(v: BahtMultiselect['showOptional']);
868
+ set error(v: BahtMultiselect['error']);
869
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
870
+ set debounce(v: BahtMultiselect['debounce']);
871
+ /** Field mode: the user edited the value. */
872
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
873
+ key: string;
874
+ value: unknown;
875
+ }>;
876
+ /** The value the user picked or typed, for `[(value)]`. */
877
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
878
+ constructor();
879
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtMultiselectDirective, never>;
880
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtMultiselectDirective, "baht-multiselect", ["bahtMultiselect"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
881
+ static ngAcceptInputType_disabled: unknown;
882
+ static ngAcceptInputType_readonly: unknown;
883
+ static ngAcceptInputType_required: unknown;
884
+ static ngAcceptInputType_showOptional: unknown;
885
+ static ngAcceptInputType_debounce: unknown;
886
+ }
887
+ /** `<baht-notification-bell>`: Header bell: an icon button with the unread count and a panel listing the notifications */
888
+ export declare class BahtNotificationBellDirective {
889
+ /** The element itself, for its methods. */
890
+ readonly element: BahtNotificationBell;
891
+ set items(v: BahtNotificationBell['items']);
892
+ /** Unread count on the badge; defaults to the unread items. */
893
+ set count(v: BahtNotificationBell['count']);
894
+ set label(v: BahtNotificationBell['label']);
895
+ set emptyMessage(v: BahtNotificationBell['emptyMessage']);
896
+ /** The panel opened (refresh the items then). */
897
+ readonly bahtOpen: import("@angular/core").OutputEmitterRef<void>;
898
+ /** A notification was picked; the panel closes. */
899
+ readonly bahtSelect: import("@angular/core").OutputEmitterRef<{
900
+ id: string | number;
901
+ }>;
902
+ /** "Mark all read" was pressed. */
903
+ readonly bahtMarkAll: import("@angular/core").OutputEmitterRef<void>;
904
+ constructor();
905
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtNotificationBellDirective, never>;
906
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtNotificationBellDirective, "baht-notification-bell", ["bahtNotificationBell"], { "items": { "alias": "items"; "required": false; }; "count": { "alias": "count"; "required": false; }; "label": { "alias": "label"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; }, { "bahtOpen": "bahtOpen"; "bahtSelect": "bahtSelect"; "bahtMarkAll": "bahtMarkAll"; }, never, never, true, never>;
907
+ }
908
+ /** `<baht-number>` */
909
+ export declare class BahtNumberDirective {
910
+ /** The element itself, for its methods. */
911
+ readonly element: BahtNumber;
912
+ set field(v: BahtNumber['field']);
913
+ set value(v: BahtNumber['value']);
914
+ set disabled(v: BahtNumber['disabled']);
915
+ set readonly(v: BahtNumber['readonly']);
916
+ set required(v: BahtNumber['required']);
917
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
918
+ set showOptional(v: BahtNumber['showOptional']);
919
+ set error(v: BahtNumber['error']);
920
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
921
+ set debounce(v: BahtNumber['debounce']);
922
+ /** Field mode: the user edited the value. */
923
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
924
+ key: string;
925
+ value: unknown;
926
+ }>;
927
+ /** The value the user picked or typed, for `[(value)]`. */
928
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
929
+ constructor();
930
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtNumberDirective, never>;
931
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtNumberDirective, "baht-number", ["bahtNumber"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
932
+ static ngAcceptInputType_disabled: unknown;
933
+ static ngAcceptInputType_readonly: unknown;
934
+ static ngAcceptInputType_required: unknown;
935
+ static ngAcceptInputType_showOptional: unknown;
936
+ static ngAcceptInputType_debounce: unknown;
937
+ }
938
+ /** `<baht-order-box>`: The box beside a catalog item that orders it */
939
+ export declare class BahtOrderBoxDirective {
940
+ /** The element itself, for its methods. */
941
+ readonly element: BahtOrderBox;
942
+ set heading(v: BahtOrderBox['heading']);
943
+ /** The button's text. */
944
+ set label(v: BahtOrderBox['label']);
945
+ set disabled(v: BahtOrderBox['disabled']);
946
+ /** The button was pressed. */
947
+ readonly bahtOrder: import("@angular/core").OutputEmitterRef<void>;
948
+ constructor();
949
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtOrderBoxDirective, never>;
950
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtOrderBoxDirective, "baht-order-box", ["bahtOrderBox"], { "heading": { "alias": "heading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "bahtOrder": "bahtOrder"; }, never, never, true, never>;
951
+ static ngAcceptInputType_disabled: unknown;
952
+ }
953
+ /** `<baht-otp>`: One-time-code input: N boxes, auto-advance, backspace steps back, paste distributes */
954
+ export declare class BahtOtpDirective {
955
+ /** The element itself, for its methods. */
956
+ readonly element: BahtOtp;
957
+ set length(v: BahtOtp['length']);
958
+ set value(v: BahtOtp['value']);
959
+ set disabled(v: BahtOtp['disabled']);
960
+ /** 'numeric' restricts to digits; 'text' allows anything. */
961
+ set mode(v: BahtOtp['mode']);
962
+ /** Accessible name for the group of boxes. */
963
+ set label(v: BahtOtp['label']);
964
+ /** A digit changed. */
965
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
966
+ value: string;
967
+ }>;
968
+ /** Every box is filled. */
969
+ readonly bahtOtpComplete: import("@angular/core").OutputEmitterRef<{
970
+ value: string;
971
+ }>;
972
+ /** The value the user picked or typed, for `[(value)]`. */
973
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
974
+ constructor();
975
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtOtpDirective, never>;
976
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtOtpDirective, "baht-otp", ["bahtOtp"], { "length": { "alias": "length"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtOtpComplete": "bahtOtpComplete"; "valueChange": "valueChange"; }, never, never, true, never>;
977
+ static ngAcceptInputType_length: unknown;
978
+ static ngAcceptInputType_disabled: unknown;
979
+ }
980
+ /** `<baht-page-header>`: The top of a page: a way back, the title, what the page is for and its actions */
981
+ export declare class BahtPageHeaderDirective {
982
+ /** The element itself, for its methods. */
983
+ readonly element: BahtPageHeader;
984
+ set heading(v: BahtPageHeader['heading']);
985
+ set description(v: BahtPageHeader['description']);
986
+ /** Small line above the title. */
987
+ set eyebrow(v: BahtPageHeader['eyebrow']);
988
+ set backLabel(v: BahtPageHeader['backLabel']);
989
+ set backHref(v: BahtPageHeader['backHref']);
990
+ /** The back link was pressed. Cancelable: `preventDefault()` to route yourself. */
991
+ readonly bahtBack: import("@angular/core").OutputEmitterRef<{
992
+ href: string;
993
+ }>;
994
+ constructor();
995
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtPageHeaderDirective, never>;
996
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtPageHeaderDirective, "baht-page-header", ["bahtPageHeader"], { "heading": { "alias": "heading"; "required": false; }; "description": { "alias": "description"; "required": false; }; "eyebrow": { "alias": "eyebrow"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "backHref": { "alias": "backHref"; "required": false; }; }, { "bahtBack": "bahtBack"; }, never, never, true, never>;
997
+ }
998
+ /** `<baht-pagination>`: Server-side pagination control: it never slices data — it only reports the page the user asked for via `baht-page-change`; the host fetches that page */
999
+ export declare class BahtPaginationDirective {
1000
+ /** The element itself, for its methods. */
1001
+ readonly element: BahtPagination;
1002
+ set page(v: BahtPagination['page']);
1003
+ set totalPages(v: BahtPagination['totalPages']);
1004
+ /** 'numbered' = 1 … 4 5 6 … 20 · 'compact' = « Page 4 of 20 · 'cursor' = « Prev / Next » */
1005
+ set variant(v: BahtPagination['variant']);
1006
+ /** Numbered pages shown on each side of the current page. */
1007
+ set siblings(v: BahtPagination['siblings']);
1008
+ /** cursor variant only — whether a next/previous page is available. */
1009
+ set hasNext(v: BahtPagination['hasNext']);
1010
+ set hasPrev(v: BahtPagination['hasPrev']);
1011
+ /** A page was picked. */
1012
+ readonly bahtPageChange: import("@angular/core").OutputEmitterRef<{
1013
+ page: number;
1014
+ }>;
1015
+ /** Cursor mode: next or previous was pressed. */
1016
+ readonly bahtCursorChange: import("@angular/core").OutputEmitterRef<{
1017
+ direction: "next" | "prev";
1018
+ }>;
1019
+ constructor();
1020
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtPaginationDirective, never>;
1021
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtPaginationDirective, "baht-pagination", ["bahtPagination"], { "page": { "alias": "page"; "required": false; }; "totalPages": { "alias": "totalPages"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "siblings": { "alias": "siblings"; "required": false; }; "hasNext": { "alias": "hasNext"; "required": false; }; "hasPrev": { "alias": "hasPrev"; "required": false; }; }, { "bahtPageChange": "bahtPageChange"; "bahtCursorChange": "bahtCursorChange"; }, never, never, true, never>;
1022
+ static ngAcceptInputType_page: unknown;
1023
+ static ngAcceptInputType_totalPages: unknown;
1024
+ static ngAcceptInputType_siblings: unknown;
1025
+ static ngAcceptInputType_hasNext: unknown;
1026
+ static ngAcceptInputType_hasPrev: unknown;
1027
+ }
1028
+ /** `<baht-popover>`: A floating panel anchored to a trigger — filters, a quick-edit form, a hover card you click open */
1029
+ export declare class BahtPopoverDirective {
1030
+ /** The element itself, for its methods. */
1031
+ readonly element: BahtPopover;
1032
+ set open(v: BahtPopover['open']);
1033
+ /** Accessible name of the panel. */
1034
+ set label(v: BahtPopover['label']);
1035
+ /** Where the panel sits relative to the trigger. */
1036
+ set placement(v: BahtPopover['placement']);
1037
+ /** The user opened or closed it. `detail: { open }`. */
1038
+ readonly bahtToggle: import("@angular/core").OutputEmitterRef<{
1039
+ open: boolean;
1040
+ }>;
1041
+ constructor();
1042
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtPopoverDirective, never>;
1043
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtPopoverDirective, "baht-popover", ["bahtPopover"], { "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; }, { "bahtToggle": "bahtToggle"; }, never, never, true, never>;
1044
+ static ngAcceptInputType_open: unknown;
1045
+ }
1046
+ /** `<baht-progress>`: Progress bar */
1047
+ export declare class BahtProgressDirective {
1048
+ /** The element itself, for its methods. */
1049
+ readonly element: BahtProgress;
1050
+ set value(v: BahtProgress['value']);
1051
+ set tone(v: BahtProgress['tone']);
1052
+ set showLabel(v: BahtProgress['showLabel']);
1053
+ /** Accessible name for the progressbar. */
1054
+ set label(v: BahtProgress['label']);
1055
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtProgressDirective, never>;
1056
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtProgressDirective, "baht-progress", ["bahtProgress"], { "value": { "alias": "value"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1057
+ static ngAcceptInputType_showLabel: unknown;
1058
+ }
1059
+ /** `<baht-progress-ring>`: Circular single-value "percent used" ring — the round counterpart to `<baht-progress>`'s linear bar */
1060
+ export declare class BahtProgressRingDirective {
1061
+ /** The element itself, for its methods. */
1062
+ readonly element: BahtProgressRing;
1063
+ /** 0-100, clamped. */
1064
+ set value(v: BahtProgressRing['value']);
1065
+ set tone(v: BahtProgressRing['tone']);
1066
+ /** Caption under the percentage, e.g. "of budget used". */
1067
+ set label(v: BahtProgressRing['label']);
1068
+ /** Rendered pixel size (square). */
1069
+ set size(v: BahtProgressRing['size']);
1070
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtProgressRingDirective, never>;
1071
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtProgressRingDirective, "baht-progress-ring", ["bahtProgressRing"], { "value": { "alias": "value"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "label": { "alias": "label"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
1072
+ static ngAcceptInputType_value: unknown;
1073
+ static ngAcceptInputType_size: unknown;
1074
+ }
1075
+ /** `<baht-radio>` */
1076
+ export declare class BahtRadioDirective {
1077
+ /** The element itself, for its methods. */
1078
+ readonly element: BahtRadio;
1079
+ set field(v: BahtRadio['field']);
1080
+ set value(v: BahtRadio['value']);
1081
+ set disabled(v: BahtRadio['disabled']);
1082
+ set readonly(v: BahtRadio['readonly']);
1083
+ set required(v: BahtRadio['required']);
1084
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1085
+ set showOptional(v: BahtRadio['showOptional']);
1086
+ set error(v: BahtRadio['error']);
1087
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1088
+ set debounce(v: BahtRadio['debounce']);
1089
+ /** Field mode: the user edited the value. */
1090
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1091
+ key: string;
1092
+ value: unknown;
1093
+ }>;
1094
+ /** The value the user picked or typed, for `[(value)]`. */
1095
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1096
+ constructor();
1097
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRadioDirective, never>;
1098
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRadioDirective, "baht-radio", ["bahtRadio"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1099
+ static ngAcceptInputType_disabled: unknown;
1100
+ static ngAcceptInputType_readonly: unknown;
1101
+ static ngAcceptInputType_required: unknown;
1102
+ static ngAcceptInputType_showOptional: unknown;
1103
+ static ngAcceptInputType_debounce: unknown;
1104
+ }
1105
+ /** `<baht-range>`: Range slider */
1106
+ export declare class BahtRangeDirective {
1107
+ /** The element itself, for its methods. */
1108
+ readonly element: BahtRange;
1109
+ /** Current value. Standalone: a number. Field mode: `number | null` (null = untouched). */
1110
+ set value(v: BahtRange['value']);
1111
+ /** Standalone lower bound; a field uses `field.min`. */
1112
+ set min(v: BahtRange['min']);
1113
+ /** Standalone upper bound; a field uses `field.max`. */
1114
+ set max(v: BahtRange['max']);
1115
+ /** Standalone step; a field uses `field.step`. */
1116
+ set step(v: BahtRange['step']);
1117
+ /** Standalone visible label; a field uses its label. */
1118
+ set label(v: BahtRange['label']);
1119
+ /** Show the current value next to the slider. */
1120
+ set showValue(v: BahtRange['showValue']);
1121
+ set field(v: BahtRange['field']);
1122
+ set disabled(v: BahtRange['disabled']);
1123
+ set readonly(v: BahtRange['readonly']);
1124
+ set required(v: BahtRange['required']);
1125
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1126
+ set showOptional(v: BahtRange['showOptional']);
1127
+ set error(v: BahtRange['error']);
1128
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1129
+ set debounce(v: BahtRange['debounce']);
1130
+ /** Standalone mode: the slider moved. `detail: { value }`. */
1131
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1132
+ value: number;
1133
+ }>;
1134
+ /** Field mode: the slider moved. `detail: { key, value }`. */
1135
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1136
+ key: string;
1137
+ value: number | null;
1138
+ }>;
1139
+ /** The value the user picked or typed, for `[(value)]`. */
1140
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1141
+ constructor();
1142
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRangeDirective, never>;
1143
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRangeDirective, "baht-range", ["bahtRange"], { "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showValue": { "alias": "showValue"; "required": false; }; "field": { "alias": "field"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1144
+ static ngAcceptInputType_min: unknown;
1145
+ static ngAcceptInputType_max: unknown;
1146
+ static ngAcceptInputType_step: unknown;
1147
+ static ngAcceptInputType_showValue: unknown;
1148
+ static ngAcceptInputType_disabled: unknown;
1149
+ static ngAcceptInputType_readonly: unknown;
1150
+ static ngAcceptInputType_required: unknown;
1151
+ static ngAcceptInputType_showOptional: unknown;
1152
+ static ngAcceptInputType_debounce: unknown;
1153
+ }
1154
+ /** `<baht-rating>`: Star rating */
1155
+ export declare class BahtRatingDirective {
1156
+ /** The element itself, for its methods. */
1157
+ readonly element: BahtRating;
1158
+ /** Picked star count. Standalone: a number (`0` = none). Field mode: `number | null`. */
1159
+ set value(v: BahtRating['value']);
1160
+ /** Standalone star count; a field uses `field.max` instead. */
1161
+ set max(v: BahtRating['max']);
1162
+ /** Standalone accessible name for the radiogroup; a field uses its label. */
1163
+ set label(v: BahtRating['label']);
1164
+ set field(v: BahtRating['field']);
1165
+ set disabled(v: BahtRating['disabled']);
1166
+ set readonly(v: BahtRating['readonly']);
1167
+ set required(v: BahtRating['required']);
1168
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1169
+ set showOptional(v: BahtRating['showOptional']);
1170
+ set error(v: BahtRating['error']);
1171
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1172
+ set debounce(v: BahtRating['debounce']);
1173
+ /** Standalone mode: a star was picked. `detail: { value }` (0 = cleared). */
1174
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1175
+ value: number;
1176
+ }>;
1177
+ /** Field mode: a star was picked. `detail: { key, value }` (null = cleared). */
1178
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1179
+ key: string;
1180
+ value: number | null;
1181
+ }>;
1182
+ /** The value the user picked or typed, for `[(value)]`. */
1183
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1184
+ constructor();
1185
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRatingDirective, never>;
1186
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRatingDirective, "baht-rating", ["bahtRating"], { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "label": { "alias": "label"; "required": false; }; "field": { "alias": "field"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1187
+ static ngAcceptInputType_max: unknown;
1188
+ static ngAcceptInputType_disabled: unknown;
1189
+ static ngAcceptInputType_readonly: unknown;
1190
+ static ngAcceptInputType_required: unknown;
1191
+ static ngAcceptInputType_showOptional: unknown;
1192
+ static ngAcceptInputType_debounce: unknown;
1193
+ }
1194
+ /** `<baht-record-bar>`: The bar over a record: what it is, and what can be done to it, kept in sight while the form below scrolls */
1195
+ export declare class BahtRecordBarDirective {
1196
+ /** The element itself, for its methods. */
1197
+ readonly element: BahtRecordBar;
1198
+ /** The lines naming the record, first one strongest. */
1199
+ set lines(v: BahtRecordBar['lines']);
1200
+ set backHref(v: BahtRecordBar['backHref']);
1201
+ set backLabel(v: BahtRecordBar['backLabel']);
1202
+ /** `false` lets it scroll away with the page. */
1203
+ set sticky(v: BahtRecordBar['sticky']);
1204
+ /** The back link was pressed. Cancelable: `preventDefault()` to route yourself. */
1205
+ readonly bahtBack: import("@angular/core").OutputEmitterRef<{
1206
+ href: string;
1207
+ }>;
1208
+ constructor();
1209
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRecordBarDirective, never>;
1210
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRecordBarDirective, "baht-record-bar", ["bahtRecordBar"], { "lines": { "alias": "lines"; "required": false; }; "backHref": { "alias": "backHref"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; }, { "bahtBack": "bahtBack"; }, never, never, true, never>;
1211
+ static ngAcceptInputType_sticky: unknown;
1212
+ }
1213
+ /** `<baht-reference-dialog>`: A reference's records as a table in a modal: search one column or every column, build a filter, sort by a header, add, remove and reorder columns, page through, and press a row's first cell to pick it */
1214
+ export declare class BahtReferenceDialogDirective {
1215
+ /** The element itself, for its methods. */
1216
+ readonly element: BahtReferenceDialog;
1217
+ set open(v: BahtReferenceDialog['open']);
1218
+ set heading(v: BahtReferenceDialog['heading']);
1219
+ set columns(v: BahtReferenceDialog['columns']);
1220
+ set lister(v: BahtReferenceDialog['lister']);
1221
+ /** The record the field holds now, marked in the table. */
1222
+ set selected(v: BahtReferenceDialog['selected']);
1223
+ /** Every column on offer; without it, only `columns`. */
1224
+ set walk(v: BahtReferenceDialog['walk']);
1225
+ /** The columns this person chose last time. Keys no longer on offer are dropped. */
1226
+ set savedColumns(v: BahtReferenceDialog['savedColumns']);
1227
+ /** The filters this person saved; null hides saving. The host keeps them. */
1228
+ set savedFilters(v: BahtReferenceDialog['savedFilters']);
1229
+ /** A record was picked. `detail: { key, label }`. */
1230
+ readonly bahtPick: import("@angular/core").OutputEmitterRef<{
1231
+ key: string;
1232
+ label: string;
1233
+ }>;
1234
+ /** The modal was dismissed. */
1235
+ readonly bahtClose: import("@angular/core").OutputEmitterRef<void>;
1236
+ /** The columns were chosen. `detail: ColumnsChangeDetail`. */
1237
+ readonly bahtColumnsChange: import("@angular/core").OutputEmitterRef<ColumnsChangeDetail>;
1238
+ /** A filter was saved or deleted. `detail: { filters }`. */
1239
+ readonly bahtSavedFiltersChange: import("@angular/core").OutputEmitterRef<{
1240
+ filters: SavedFilter[];
1241
+ }>;
1242
+ constructor();
1243
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtReferenceDialogDirective, never>;
1244
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtReferenceDialogDirective, "baht-reference-dialog", ["bahtReferenceDialog"], { "open": { "alias": "open"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "lister": { "alias": "lister"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "walk": { "alias": "walk"; "required": false; }; "savedColumns": { "alias": "savedColumns"; "required": false; }; "savedFilters": { "alias": "savedFilters"; "required": false; }; }, { "bahtPick": "bahtPick"; "bahtClose": "bahtClose"; "bahtColumnsChange": "bahtColumnsChange"; "bahtSavedFiltersChange": "bahtSavedFiltersChange"; }, never, never, true, never>;
1245
+ static ngAcceptInputType_open: unknown;
1246
+ }
1247
+ /** `<baht-reference-picker>`: Reference lookup: read-only input + magnifier opening a typeahead dropdown */
1248
+ export declare class BahtReferencePickerDirective {
1249
+ /** The element itself, for its methods. */
1250
+ readonly element: BahtReferencePicker;
1251
+ /** Accessible name for the combobox + its option list (standalone; a field uses its label). */
1252
+ set label(v: BahtReferencePicker['label']);
1253
+ /** Selected id (the reference's key). Field mode: `string | null`. */
1254
+ set value(v: BahtReferencePicker['value']);
1255
+ /** Human-readable label for `value`; falls back to showing the raw id. */
1256
+ set display(v: BahtReferencePicker['display']);
1257
+ set placeholder(v: BahtReferencePicker['placeholder']);
1258
+ /** Marks the control invalid (styles + aria-invalid). */
1259
+ set invalid(v: BahtReferencePicker['invalid']);
1260
+ /** Optional link to the selected record, rendered as an external-link button. */
1261
+ set href(v: BahtReferencePicker['href']);
1262
+ /** Accessible name for the lookup button. */
1263
+ set lookupLabel(v: BahtReferencePicker['lookupLabel']);
1264
+ /** Debounce for search calls, ms (default 200). */
1265
+ set debounce(v: BahtReferencePicker['debounce']);
1266
+ /** Async search: term in, options out. Required for the dropdown to work (standalone). */
1267
+ set fetcher(v: BahtReferencePicker['fetcher']);
1268
+ /** Field mode: the record lookup (set by `<baht-form>` from `registry.references`). */
1269
+ set lookup(v: BahtReferencePicker['lookup']);
1270
+ set field(v: BahtReferencePicker['field']);
1271
+ set disabled(v: BahtReferencePicker['disabled']);
1272
+ set readonly(v: BahtReferencePicker['readonly']);
1273
+ set required(v: BahtReferencePicker['required']);
1274
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1275
+ set showOptional(v: BahtReferencePicker['showOptional']);
1276
+ set error(v: BahtReferencePicker['error']);
1277
+ /** Standalone mode: a record was picked or cleared. `detail: { value, label }`. */
1278
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1279
+ value: string;
1280
+ label: string;
1281
+ }>;
1282
+ /** Field mode: a record was picked or cleared. `detail: { key, value }`. */
1283
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1284
+ key: string;
1285
+ value: string | null;
1286
+ }>;
1287
+ /** The value the user picked or typed, for `[(value)]`. */
1288
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1289
+ constructor();
1290
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtReferencePickerDirective, never>;
1291
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtReferencePickerDirective, "baht-reference-picker", ["bahtReferencePicker"], { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "display": { "alias": "display"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "href": { "alias": "href"; "required": false; }; "lookupLabel": { "alias": "lookupLabel"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; "fetcher": { "alias": "fetcher"; "required": false; }; "lookup": { "alias": "lookup"; "required": false; }; "field": { "alias": "field"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1292
+ static ngAcceptInputType_invalid: unknown;
1293
+ static ngAcceptInputType_debounce: unknown;
1294
+ static ngAcceptInputType_disabled: unknown;
1295
+ static ngAcceptInputType_readonly: unknown;
1296
+ static ngAcceptInputType_required: unknown;
1297
+ static ngAcceptInputType_showOptional: unknown;
1298
+ }
1299
+ /** `<baht-repeater>`: <baht-repeater> — array-of-rows control (spec 01 §10) */
1300
+ export declare class BahtRepeaterDirective {
1301
+ /** The element itself, for its methods. */
1302
+ readonly element: BahtRepeater;
1303
+ /** Row-scoped errors from the host form, keyed `key[i].subKey`. */
1304
+ set rowErrors(v: BahtRepeater['rowErrors']);
1305
+ /** Rule-derived states of the row sub-fields, keyed `key[i].sub` (spec 02 §2a). Absent = every sub-field visible with its descriptor defaults. */
1306
+ set rowStates(v: BahtRepeater['rowStates']);
1307
+ /** Set by the host form: what makes a `reference` column searchable. */
1308
+ set rowLookup(v: BahtRepeater['rowLookup']);
1309
+ set field(v: BahtRepeater['field']);
1310
+ set value(v: BahtRepeater['value']);
1311
+ set disabled(v: BahtRepeater['disabled']);
1312
+ set readonly(v: BahtRepeater['readonly']);
1313
+ set required(v: BahtRepeater['required']);
1314
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1315
+ set showOptional(v: BahtRepeater['showOptional']);
1316
+ set error(v: BahtRepeater['error']);
1317
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1318
+ set debounce(v: BahtRepeater['debounce']);
1319
+ /** Field mode: the user edited the value. */
1320
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1321
+ key: string;
1322
+ value: unknown;
1323
+ }>;
1324
+ /** The value the user picked or typed, for `[(value)]`. */
1325
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1326
+ constructor();
1327
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRepeaterDirective, never>;
1328
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRepeaterDirective, "baht-repeater", ["bahtRepeater"], { "rowErrors": { "alias": "rowErrors"; "required": false; }; "rowStates": { "alias": "rowStates"; "required": false; }; "rowLookup": { "alias": "rowLookup"; "required": false; }; "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1329
+ static ngAcceptInputType_disabled: unknown;
1330
+ static ngAcceptInputType_readonly: unknown;
1331
+ static ngAcceptInputType_required: unknown;
1332
+ static ngAcceptInputType_showOptional: unknown;
1333
+ static ngAcceptInputType_debounce: unknown;
1334
+ }
1335
+ /** `<baht-rule-builder>`: Edits a workflow's `rules` without code: "when all / any of <field> <is> <value>, then show / hide / make mandatory / set value / skip step" */
1336
+ export declare class BahtRuleBuilderDirective {
1337
+ /** The element itself, for its methods. */
1338
+ readonly element: BahtRuleBuilder;
1339
+ set workflow(v: BahtRuleBuilder['workflow']);
1340
+ /** A rule was edited. */
1341
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1342
+ rules: Rule[];
1343
+ }>;
1344
+ constructor();
1345
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtRuleBuilderDirective, never>;
1346
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtRuleBuilderDirective, "baht-rule-builder", ["bahtRuleBuilder"], { "workflow": { "alias": "workflow"; "required": false; }; }, { "bahtChange": "bahtChange"; }, never, never, true, never>;
1347
+ }
1348
+ /** `<baht-saved-filters>`: ServiceNow's Save Filters: name the filter being built, apply a saved one, delete one */
1349
+ export declare class BahtSavedFiltersDirective {
1350
+ /** The element itself, for its methods. */
1351
+ readonly element: BahtSavedFilters;
1352
+ set filters(v: BahtSavedFilters['filters']);
1353
+ /** The filter Save would keep. */
1354
+ set current(v: BahtSavedFilters['current']);
1355
+ /** What can be filtered on now. */
1356
+ set fields(v: BahtSavedFilters['fields']);
1357
+ /** A saved filter was chosen. `detail: { value }`. */
1358
+ readonly bahtFilterPick: import("@angular/core").OutputEmitterRef<{
1359
+ value: FilterValue;
1360
+ }>;
1361
+ /** One was saved or deleted. `detail: { filters }`. */
1362
+ readonly bahtSavedFiltersChange: import("@angular/core").OutputEmitterRef<{
1363
+ filters: SavedFilter[];
1364
+ }>;
1365
+ constructor();
1366
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSavedFiltersDirective, never>;
1367
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSavedFiltersDirective, "baht-saved-filters", ["bahtSavedFilters"], { "filters": { "alias": "filters"; "required": false; }; "current": { "alias": "current"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; }, { "bahtFilterPick": "bahtFilterPick"; "bahtSavedFiltersChange": "bahtSavedFiltersChange"; }, never, never, true, never>;
1368
+ }
1369
+ /** `<baht-section>`: Section divider (`type: "section"`): heading + rule, no value */
1370
+ export declare class BahtSectionDirective {
1371
+ /** The element itself, for its methods. */
1372
+ readonly element: BahtSection;
1373
+ set field(v: BahtSection['field']);
1374
+ /** Folded right now. */
1375
+ set collapsed(v: BahtSection['collapsed']);
1376
+ /** The user folded or unfolded it. `detail: { collapsed }`. */
1377
+ readonly bahtSectionToggle: import("@angular/core").OutputEmitterRef<{
1378
+ collapsed: boolean;
1379
+ }>;
1380
+ constructor();
1381
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSectionDirective, never>;
1382
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSectionDirective, "baht-section", ["bahtSection"], { "field": { "alias": "field"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; }, { "bahtSectionToggle": "bahtSectionToggle"; }, never, never, true, never>;
1383
+ static ngAcceptInputType_collapsed: unknown;
1384
+ }
1385
+ /** `<baht-select>`: Single-choice dropdown */
1386
+ export declare class BahtSelectDirective {
1387
+ /** The element itself, for its methods. */
1388
+ readonly element: BahtSelect;
1389
+ set field(v: BahtSelect['field']);
1390
+ set value(v: BahtSelect['value']);
1391
+ set disabled(v: BahtSelect['disabled']);
1392
+ set readonly(v: BahtSelect['readonly']);
1393
+ set required(v: BahtSelect['required']);
1394
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1395
+ set showOptional(v: BahtSelect['showOptional']);
1396
+ set error(v: BahtSelect['error']);
1397
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1398
+ set debounce(v: BahtSelect['debounce']);
1399
+ /** Field mode: the user edited the value. */
1400
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1401
+ key: string;
1402
+ value: unknown;
1403
+ }>;
1404
+ /** The value the user picked or typed, for `[(value)]`. */
1405
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1406
+ constructor();
1407
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSelectDirective, never>;
1408
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSelectDirective, "baht-select", ["bahtSelect"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1409
+ static ngAcceptInputType_disabled: unknown;
1410
+ static ngAcceptInputType_readonly: unknown;
1411
+ static ngAcceptInputType_required: unknown;
1412
+ static ngAcceptInputType_showOptional: unknown;
1413
+ static ngAcceptInputType_debounce: unknown;
1414
+ }
1415
+ /** `<baht-skeleton>`: Loading placeholder (opacity pulse — the 20baht system bans gradients in core UI, so no shimmer) */
1416
+ export declare class BahtSkeletonDirective {
1417
+ /** The element itself, for its methods. */
1418
+ readonly element: BahtSkeleton;
1419
+ set variant(v: BahtSkeleton['variant']);
1420
+ set width(v: BahtSkeleton['width']);
1421
+ set height(v: BahtSkeleton['height']);
1422
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSkeletonDirective, never>;
1423
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSkeletonDirective, "baht-skeleton", ["bahtSkeleton"], { "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, {}, never, never, true, never>;
1424
+ }
1425
+ /** `<baht-sparkline>`: Micro trend line — no axes, no ticks, no tooltip */
1426
+ export declare class BahtSparklineDirective {
1427
+ /** The element itself, for its methods. */
1428
+ readonly element: BahtSparkline;
1429
+ /** The points, oldest first. Fewer than two points renders nothing. */
1430
+ set values(v: BahtSparkline['values']);
1431
+ /** Drawing width in px. */
1432
+ set width(v: BahtSparkline['width']);
1433
+ /** Drawing height in px. */
1434
+ set height(v: BahtSparkline['height']);
1435
+ /** Mark the newest point with an accent dot. */
1436
+ set accentLast(v: BahtSparkline['accentLast']);
1437
+ /** Line color; defaults to the de-emphasis chart token. */
1438
+ set color(v: BahtSparkline['color']);
1439
+ /** Accessible name; falls back to a plain "Trend of N points" sentence. */
1440
+ set label(v: BahtSparkline['label']);
1441
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSparklineDirective, never>;
1442
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSparklineDirective, "baht-sparkline", ["bahtSparkline"], { "values": { "alias": "values"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "accentLast": { "alias": "accentLast"; "required": false; }; "color": { "alias": "color"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1443
+ static ngAcceptInputType_width: unknown;
1444
+ static ngAcceptInputType_height: unknown;
1445
+ static ngAcceptInputType_accentLast: unknown;
1446
+ }
1447
+ /** `<baht-spinner>`: Loading spinner — the single animated icon the 20baht system allows */
1448
+ export declare class BahtSpinnerDirective {
1449
+ /** The element itself, for its methods. */
1450
+ readonly element: BahtSpinner;
1451
+ set size(v: BahtSpinner['size']);
1452
+ set label(v: BahtSpinner['label']);
1453
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSpinnerDirective, never>;
1454
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSpinnerDirective, "baht-spinner", ["bahtSpinner"], { "size": { "alias": "size"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1455
+ }
1456
+ /** `<baht-split-button>`: Split button: a main action plus a ▾ toggle that opens a menu of related actions (NOTES 2026-10-31) */
1457
+ export declare class BahtSplitButtonDirective {
1458
+ /** The element itself, for its methods. */
1459
+ readonly element: BahtSplitButton;
1460
+ /** Main action label. */
1461
+ set label(v: BahtSplitButton['label']);
1462
+ set variant(v: BahtSplitButton['variant']);
1463
+ set size(v: BahtSplitButton['size']);
1464
+ set disabled(v: BahtSplitButton['disabled']);
1465
+ /** Shortcut for the main action, e.g. `alt+s` (see `<baht-button shortcut>`). */
1466
+ set shortcut(v: BahtSplitButton['shortcut']);
1467
+ /** Menu entries. Set as a property: `el.items = [...]`. */
1468
+ set items(v: BahtSplitButton['items']);
1469
+ /** Menu edge aligned with the button: `'end'` (default, right in LTR) or `'start'`. */
1470
+ set align(v: BahtSplitButton['align']);
1471
+ /** Accessible name of the ▾ toggle. Defaults to the localized "More actions". */
1472
+ set menuLabel(v: BahtSplitButton['menuLabel']);
1473
+ /** The main action was activated (click or its shortcut). */
1474
+ readonly bahtClick: import("@angular/core").OutputEmitterRef<void>;
1475
+ /** A menu item was picked. `detail: { value, item }`. */
1476
+ readonly bahtSelect: import("@angular/core").OutputEmitterRef<{
1477
+ value: string;
1478
+ item: MenuItem;
1479
+ }>;
1480
+ constructor();
1481
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSplitButtonDirective, never>;
1482
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSplitButtonDirective, "baht-split-button", ["bahtSplitButton"], { "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "shortcut": { "alias": "shortcut"; "required": false; }; "items": { "alias": "items"; "required": false; }; "align": { "alias": "align"; "required": false; }; "menuLabel": { "alias": "menuLabel"; "required": false; }; }, { "bahtClick": "bahtClick"; "bahtSelect": "bahtSelect"; }, never, never, true, never>;
1483
+ static ngAcceptInputType_disabled: unknown;
1484
+ }
1485
+ /** `<baht-stat>`: Stat tile: label, one figure, an optional delta against a named period and an optional sparkline */
1486
+ export declare class BahtStatDirective {
1487
+ /** The element itself, for its methods. */
1488
+ readonly element: BahtStat;
1489
+ /** Sentence-case caption above the figure, no trailing colon. */
1490
+ set label(v: BahtStat['label']);
1491
+ /** The figure. */
1492
+ set value(v: BahtStat['value']);
1493
+ /** How the figure reads: number | currency | percent | compact. */
1494
+ set format(v: BahtStat['format']);
1495
+ /** ISO currency code for `format="currency"` (THB renders `฿`). */
1496
+ set currency(v: BahtStat['currency']);
1497
+ /** Change against the previous period. `null` hides the delta row. With `delta-kind="pct"` it is a percentage (18 → "18%"); with `"abs"` it is a raw amount rendered with this tile's `format`. */
1498
+ set delta(v: BahtStat['delta']);
1499
+ /** Whether `delta` is a percentage or an absolute amount. */
1500
+ set deltaKind(v: BahtStat['deltaKind']);
1501
+ /** What the delta is measured against, e.g. "vs August". With no `delta` it is still rendered on its own as a muted caption, so a figure can name its period. */
1502
+ set deltaLabel(v: BahtStat['deltaLabel']);
1503
+ /** Is a rise good news? Spending tiles set `up-is-good="false"`. */
1504
+ set upIsGood(v: BahtStat['upIsGood']);
1505
+ /** Recent points drawn as a muted sparkline with an accent on the newest. */
1506
+ set trend(v: BahtStat['trend']);
1507
+ /** `hero` is the one 48px+ figure a view leads with. */
1508
+ set size(v: BahtStat['size']);
1509
+ /** Icon name from the curated set (see icons.ts), shown in a chip before the label. */
1510
+ set icon(v: BahtStat['icon']);
1511
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtStatDirective, never>;
1512
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtStatDirective, "baht-stat", ["bahtStat"], { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "format": { "alias": "format"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "delta": { "alias": "delta"; "required": false; }; "deltaKind": { "alias": "deltaKind"; "required": false; }; "deltaLabel": { "alias": "deltaLabel"; "required": false; }; "upIsGood": { "alias": "upIsGood"; "required": false; }; "trend": { "alias": "trend"; "required": false; }; "size": { "alias": "size"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, {}, never, never, true, never>;
1513
+ static ngAcceptInputType_value: unknown;
1514
+ static ngAcceptInputType_upIsGood: unknown;
1515
+ }
1516
+ /** `<baht-stat-chart>`: Big single-number stat (report type "count") */
1517
+ export declare class BahtStatChartDirective {
1518
+ /** The element itself, for its methods. */
1519
+ readonly element: BahtStatChart;
1520
+ set total(v: BahtStatChart['total']);
1521
+ set label(v: BahtStatChart['label']);
1522
+ /** Overrides the number color (defaults to the primary token). */
1523
+ set color(v: BahtStatChart['color']);
1524
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtStatChartDirective, never>;
1525
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtStatChartDirective, "baht-stat-chart", ["bahtStatChart"], { "total": { "alias": "total"; "required": false; }; "label": { "alias": "label"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, {}, never, never, true, never>;
1526
+ static ngAcceptInputType_total: unknown;
1527
+ }
1528
+ /** `<baht-steps>`: <baht-steps> — wizard progress indicator (spec 03) */
1529
+ export declare class BahtStepsDirective {
1530
+ /** The element itself, for its methods. */
1531
+ readonly element: BahtSteps;
1532
+ /** Step labels in order. */
1533
+ set steps(v: BahtSteps['steps']);
1534
+ /** 0-based index of the current step. */
1535
+ set current(v: BahtSteps['current']);
1536
+ /** 'default' = horizontal numbered markers; 'sidebar' = vertical nav list, current pilled; 'chevron' = a joined strip of states, scrolling sideways when it does not fit. */
1537
+ set variant(v: BahtSteps['variant']);
1538
+ /** chevron: tick the steps before the current one. Off when the strip lists states, not progress. */
1539
+ set showDone(v: BahtSteps['showDone']);
1540
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtStepsDirective, never>;
1541
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtStepsDirective, "baht-steps", ["bahtSteps"], { "steps": { "alias": "steps"; "required": false; }; "current": { "alias": "current"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "showDone": { "alias": "showDone"; "required": false; }; }, {}, never, never, true, never>;
1542
+ static ngAcceptInputType_current: unknown;
1543
+ static ngAcceptInputType_showDone: unknown;
1544
+ }
1545
+ /** `<baht-swipe-row>`: Row container for touch lists: the children are the row, `actions` sit behind it on the right and are revealed by swiping the row left */
1546
+ export declare class BahtSwipeRowDirective {
1547
+ /** The element itself, for its methods. */
1548
+ readonly element: BahtSwipeRow;
1549
+ /** Actions revealed by the swipe, in order: `{ key, label, tone? }`. */
1550
+ set actions(v: BahtSwipeRow['actions']);
1551
+ /** Revealed state. Reflected; set it to open or close the row from the host. */
1552
+ set open(v: BahtSwipeRow['open']);
1553
+ /** Accessible name of the action group (default: the i18n `rowActions` string). */
1554
+ set label(v: BahtSwipeRow['label']);
1555
+ /** A revealed action was pressed. */
1556
+ readonly bahtAction: import("@angular/core").OutputEmitterRef<{
1557
+ key: string;
1558
+ }>;
1559
+ constructor();
1560
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtSwipeRowDirective, never>;
1561
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtSwipeRowDirective, "baht-swipe-row", ["bahtSwipeRow"], { "actions": { "alias": "actions"; "required": false; }; "open": { "alias": "open"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "bahtAction": "bahtAction"; }, never, never, true, never>;
1562
+ static ngAcceptInputType_open: unknown;
1563
+ }
1564
+ /** `<baht-table>`: Server-side data table */
1565
+ export declare class BahtTableDirective {
1566
+ /** The element itself, for its methods. */
1567
+ readonly element: BahtTable;
1568
+ /** Rows of the CURRENT page. */
1569
+ set items(v: BahtTable['items']);
1570
+ /** column key -> display name, or a reference column with `fields` (property); empty = derive keys from the first row (`snake_case` -> `Title Case`). */
1571
+ set columns(v: BahtTable['columns']);
1572
+ set loading(v: BahtTable['loading']);
1573
+ set error(v: BahtTable['error']);
1574
+ set errorMessage(v: BahtTable['errorMessage']);
1575
+ set emptyMessage(v: BahtTable['emptyMessage']);
1576
+ /** Row-number column (No.). Offset lets numbering continue across pages. */
1577
+ set showIndex(v: BahtTable['showIndex']);
1578
+ set indexOffset(v: BahtTable['indexOffset']);
1579
+ set skeletonRows(v: BahtTable['skeletonRows']);
1580
+ /** Which row key identifies a row in baht-row-click detail.id (e.g. 'group_id'). */
1581
+ set rowKey(v: BahtTable['rowKey']);
1582
+ /** Rows emit baht-row-click + get hover/keyboard affordances. */
1583
+ set clickable(v: BahtTable['clickable']);
1584
+ /** Custom cell renderers by column key, dotted keys included (functions — a property, never JSON). */
1585
+ set renderers(v: BahtTable['renderers']);
1586
+ /** Subset + order of columns to render (dotted keys allowed); empty/omitted = show all top-level columns. */
1587
+ set visibleColumns(v: BahtTable['visibleColumns']);
1588
+ /** Group the page's rows by this (dotted) column key — or a function of the row (property). Unset = no grouping. */
1589
+ set groupBy(v: BahtTable['groupBy']);
1590
+ /** Group header content (property); default is "Column: value (n)". */
1591
+ set groupLabel(v: BahtTable['groupLabel']);
1592
+ /** Group headers are disclosures (click to collapse). Set the JS property to `false` for static headers. */
1593
+ set groupCollapsible(v: BahtTable['groupCollapsible']);
1594
+ /** Start every group collapsed (per page — resets when `items`/`page` change). */
1595
+ set groupCollapsed(v: BahtTable['groupCollapsed']);
1596
+ /** Drop the column header row (list-style tables, e.g. grouped ledgers). */
1597
+ set hideHeader(v: BahtTable['hideHeader']);
1598
+ /** Built-in "Columns" toggle — derives its options from `columns`/rows. Set `column-picker="false"` to hide it. */
1599
+ set columnPicker(v: BahtTable['columnPicker']);
1600
+ /** Total matching rows across all pages — renders "{n} results" in the toolbar. Unset = no count. */
1601
+ set total(v: BahtTable['total']);
1602
+ set selectable(v: BahtTable['selectable']);
1603
+ set selected(v: BahtTable['selected']);
1604
+ /** Make every column sortable (or set `sortable` per column in `columns`). */
1605
+ set sortable(v: BahtTable['sortable']);
1606
+ /** Current sort, mirrored in the header (`aria-sort`); the host keeps it in sync with the fetch. */
1607
+ set sort(v: BahtTable['sort']);
1608
+ /** A Filter button: a condition builder over every column, and the applied conditions as breadcrumbs. */
1609
+ set filterable(v: BahtTable['filterable']);
1610
+ /** The applied filter; the host applies it and keeps it in sync. */
1611
+ set filter(v: BahtTable['filter']);
1612
+ /** The filters this person saved; null hides saving. The host keeps them. */
1613
+ set savedFilters(v: BahtTable['savedFilters']);
1614
+ /** Trailing "..." button per row; emits `baht-row-actions { row, index, id }`. */
1615
+ set rowActions(v: BahtTable['rowActions']);
1616
+ set page(v: BahtTable['page']);
1617
+ set totalPages(v: BahtTable['totalPages']);
1618
+ /** Keep the footer with one page too, so a list always shows where the pages are. */
1619
+ set alwaysPaginate(v: BahtTable['alwaysPaginate']);
1620
+ /** Switch the footer to Prev/Next (cursor-based API, no total count). */
1621
+ set cursorMode(v: BahtTable['cursorMode']);
1622
+ set hasNext(v: BahtTable['hasNext']);
1623
+ set hasPrev(v: BahtTable['hasPrev']);
1624
+ /** A row was pressed. */
1625
+ readonly bahtRowClick: import("@angular/core").OutputEmitterRef<{
1626
+ row: Record<string, unknown>;
1627
+ index: number;
1628
+ id: unknown;
1629
+ }>;
1630
+ /** The selection changed. */
1631
+ readonly bahtSelectionChange: import("@angular/core").OutputEmitterRef<{
1632
+ selected: unknown[];
1633
+ rows: Record<string, unknown>[];
1634
+ }>;
1635
+ /** A sortable header was pressed. */
1636
+ readonly bahtSortChange: import("@angular/core").OutputEmitterRef<{
1637
+ key: string;
1638
+ direction: SortDirection;
1639
+ }>;
1640
+ /** The column picker was confirmed. */
1641
+ readonly bahtColumnsChange: import("@angular/core").OutputEmitterRef<ColumnsChangeDetail>;
1642
+ /** The filter changed. */
1643
+ readonly bahtFilterChange: import("@angular/core").OutputEmitterRef<{
1644
+ value: FilterValue;
1645
+ }>;
1646
+ /** A group was collapsed or expanded. */
1647
+ readonly bahtGroupToggle: import("@angular/core").OutputEmitterRef<GroupToggleDetail>;
1648
+ /** A row's actions button was pressed. */
1649
+ readonly bahtRowActions: import("@angular/core").OutputEmitterRef<{
1650
+ row: Record<string, unknown>;
1651
+ index: number;
1652
+ id: unknown;
1653
+ }>;
1654
+ constructor();
1655
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTableDirective, never>;
1656
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTableDirective, "baht-table", ["bahtTable"], { "items": { "alias": "items"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "showIndex": { "alias": "showIndex"; "required": false; }; "indexOffset": { "alias": "indexOffset"; "required": false; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; }; "rowKey": { "alias": "rowKey"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "renderers": { "alias": "renderers"; "required": false; }; "visibleColumns": { "alias": "visibleColumns"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; "groupLabel": { "alias": "groupLabel"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupCollapsed": { "alias": "groupCollapsed"; "required": false; }; "hideHeader": { "alias": "hideHeader"; "required": false; }; "columnPicker": { "alias": "columnPicker"; "required": false; }; "total": { "alias": "total"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "savedFilters": { "alias": "savedFilters"; "required": false; }; "rowActions": { "alias": "rowActions"; "required": false; }; "page": { "alias": "page"; "required": false; }; "totalPages": { "alias": "totalPages"; "required": false; }; "alwaysPaginate": { "alias": "alwaysPaginate"; "required": false; }; "cursorMode": { "alias": "cursorMode"; "required": false; }; "hasNext": { "alias": "hasNext"; "required": false; }; "hasPrev": { "alias": "hasPrev"; "required": false; }; }, { "bahtRowClick": "bahtRowClick"; "bahtSelectionChange": "bahtSelectionChange"; "bahtSortChange": "bahtSortChange"; "bahtColumnsChange": "bahtColumnsChange"; "bahtFilterChange": "bahtFilterChange"; "bahtGroupToggle": "bahtGroupToggle"; "bahtRowActions": "bahtRowActions"; }, never, never, true, never>;
1657
+ static ngAcceptInputType_loading: unknown;
1658
+ static ngAcceptInputType_error: unknown;
1659
+ static ngAcceptInputType_showIndex: unknown;
1660
+ static ngAcceptInputType_indexOffset: unknown;
1661
+ static ngAcceptInputType_skeletonRows: unknown;
1662
+ static ngAcceptInputType_clickable: unknown;
1663
+ static ngAcceptInputType_groupCollapsible: unknown;
1664
+ static ngAcceptInputType_groupCollapsed: unknown;
1665
+ static ngAcceptInputType_hideHeader: unknown;
1666
+ static ngAcceptInputType_columnPicker: unknown;
1667
+ static ngAcceptInputType_total: unknown;
1668
+ static ngAcceptInputType_selectable: unknown;
1669
+ static ngAcceptInputType_sortable: unknown;
1670
+ static ngAcceptInputType_filterable: unknown;
1671
+ static ngAcceptInputType_rowActions: unknown;
1672
+ static ngAcceptInputType_page: unknown;
1673
+ static ngAcceptInputType_totalPages: unknown;
1674
+ static ngAcceptInputType_alwaysPaginate: unknown;
1675
+ static ngAcceptInputType_cursorMode: unknown;
1676
+ static ngAcceptInputType_hasNext: unknown;
1677
+ static ngAcceptInputType_hasPrev: unknown;
1678
+ }
1679
+ /** `<baht-tabs>`: Tabs (APG tab pattern) */
1680
+ export declare class BahtTabsDirective {
1681
+ /** The element itself, for its methods. */
1682
+ readonly element: BahtTabs;
1683
+ /** The tab strip. Set as a property: `el.tabs = [...]`. */
1684
+ set tabs(v: BahtTabs['tabs']);
1685
+ /** Selected tab key. */
1686
+ set value(v: BahtTabs['value']);
1687
+ /** Accessible name of the tab list. */
1688
+ set label(v: BahtTabs['label']);
1689
+ /** `automatic` (default): arrows select. `manual`: arrows focus, Enter/Space selects. */
1690
+ set activation(v: BahtTabs['activation']);
1691
+ /** `line` (default): an underline strip. `pill`: rounded chips; the active fill is `--baht-tabs-pill-active`. */
1692
+ set variant(v: BahtTabs['variant']);
1693
+ /** The user selected a tab. `detail: { value }`. Setting `value` does not fire it. */
1694
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1695
+ value: string;
1696
+ }>;
1697
+ /** The value the user picked or typed, for `[(value)]`. */
1698
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
1699
+ constructor();
1700
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTabsDirective, never>;
1701
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTabsDirective, "baht-tabs", ["bahtTabs"], { "tabs": { "alias": "tabs"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "activation": { "alias": "activation"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "bahtChange": "bahtChange"; "valueChange": "valueChange"; }, never, never, true, never>;
1702
+ }
1703
+ /** `<baht-tags>`: Creatable chip input: value is `string[]` (unique, trimmed, in entry order) */
1704
+ export declare class BahtTagsDirective {
1705
+ /** The element itself, for its methods. */
1706
+ readonly element: BahtTags;
1707
+ set field(v: BahtTags['field']);
1708
+ set value(v: BahtTags['value']);
1709
+ set disabled(v: BahtTags['disabled']);
1710
+ set readonly(v: BahtTags['readonly']);
1711
+ set required(v: BahtTags['required']);
1712
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1713
+ set showOptional(v: BahtTags['showOptional']);
1714
+ set error(v: BahtTags['error']);
1715
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1716
+ set debounce(v: BahtTags['debounce']);
1717
+ /** Field mode: the user edited the value. */
1718
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1719
+ key: string;
1720
+ value: unknown;
1721
+ }>;
1722
+ /** The value the user picked or typed, for `[(value)]`. */
1723
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1724
+ constructor();
1725
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTagsDirective, never>;
1726
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTagsDirective, "baht-tags", ["bahtTags"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1727
+ static ngAcceptInputType_disabled: unknown;
1728
+ static ngAcceptInputType_readonly: unknown;
1729
+ static ngAcceptInputType_required: unknown;
1730
+ static ngAcceptInputType_showOptional: unknown;
1731
+ static ngAcceptInputType_debounce: unknown;
1732
+ }
1733
+ /** `<baht-text>`: Static text block (`type: "label"`): no value, no emits. */
1734
+ export declare class BahtTextDirective {
1735
+ /** The element itself, for its methods. */
1736
+ readonly element: BahtText;
1737
+ set field(v: BahtText['field']);
1738
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTextDirective, never>;
1739
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTextDirective, "baht-text", ["bahtText"], { "field": { "alias": "field"; "required": false; }; }, {}, never, never, true, never>;
1740
+ }
1741
+ /** `<baht-textarea>` */
1742
+ export declare class BahtTextareaDirective {
1743
+ /** The element itself, for its methods. */
1744
+ readonly element: BahtTextarea;
1745
+ set field(v: BahtTextarea['field']);
1746
+ set value(v: BahtTextarea['value']);
1747
+ set disabled(v: BahtTextarea['disabled']);
1748
+ set readonly(v: BahtTextarea['readonly']);
1749
+ set required(v: BahtTextarea['required']);
1750
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1751
+ set showOptional(v: BahtTextarea['showOptional']);
1752
+ set error(v: BahtTextarea['error']);
1753
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1754
+ set debounce(v: BahtTextarea['debounce']);
1755
+ /** Field mode: the user edited the value. */
1756
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1757
+ key: string;
1758
+ value: unknown;
1759
+ }>;
1760
+ /** The value the user picked or typed, for `[(value)]`. */
1761
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1762
+ constructor();
1763
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTextareaDirective, never>;
1764
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTextareaDirective, "baht-textarea", ["bahtTextarea"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1765
+ static ngAcceptInputType_disabled: unknown;
1766
+ static ngAcceptInputType_readonly: unknown;
1767
+ static ngAcceptInputType_required: unknown;
1768
+ static ngAcceptInputType_showOptional: unknown;
1769
+ static ngAcceptInputType_debounce: unknown;
1770
+ }
1771
+ /** `<baht-theme-toggle>`: Light / dark switch for the 20baht themes */
1772
+ export declare class BahtThemeToggleDirective {
1773
+ /** The element itself, for its methods. */
1774
+ readonly element: BahtThemeToggle;
1775
+ /** Current theme. Setting it applies it to the target (not saved, no event). */
1776
+ set theme(v: BahtThemeToggle['theme']);
1777
+ /** Theme when nothing is saved and the target has none: `light`, `dark`, or `system`. */
1778
+ set default(v: BahtThemeToggle['default']);
1779
+ /** CSS selector of the element that carries `data-baht-theme`. Default: `<html>`. */
1780
+ set target(v: BahtThemeToggle['target']);
1781
+ /** localStorage key for the user's choice; `""` turns persistence off. */
1782
+ set storageKey(v: BahtThemeToggle['storageKey']);
1783
+ /** The user switched theme. `detail: { theme: 'light' | 'dark' }`. */
1784
+ readonly bahtThemeChange: import("@angular/core").OutputEmitterRef<{
1785
+ theme: ThemeName;
1786
+ }>;
1787
+ constructor();
1788
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtThemeToggleDirective, never>;
1789
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtThemeToggleDirective, "baht-theme-toggle", ["bahtThemeToggle"], { "theme": { "alias": "theme"; "required": false; }; "default": { "alias": "default"; "required": false; }; "target": { "alias": "target"; "required": false; }; "storageKey": { "alias": "storageKey"; "required": false; }; }, { "bahtThemeChange": "bahtThemeChange"; }, never, never, true, never>;
1790
+ }
1791
+ /** `<baht-timeline>`: Vertical timeline (run history, audit log) */
1792
+ export declare class BahtTimelineDirective {
1793
+ /** The element itself, for its methods. */
1794
+ readonly element: BahtTimeline;
1795
+ set items(v: BahtTimeline['items']);
1796
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTimelineDirective, never>;
1797
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTimelineDirective, "baht-timeline", ["bahtTimeline"], { "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
1798
+ }
1799
+ /** `<baht-toast>`: Toast host — put ONE <baht-toast> on the page and call show(): const toast = document.querySelector('baht-toast'); toast.show({ message: 'Saved.', tone: 'success' }); Copy: short and dry ("Saved.", not "Successfully saved your changes!"). */
1800
+ export declare class BahtToastDirective {
1801
+ /** The element itself, for its methods. */
1802
+ readonly element: BahtToast;
1803
+ /** Default auto-dismiss (ms) when show() gets no duration. */
1804
+ set duration(v: BahtToast['duration']);
1805
+ /** A toast was dismissed. */
1806
+ readonly bahtDismiss: import("@angular/core").OutputEmitterRef<{
1807
+ id: number;
1808
+ message: string;
1809
+ }>;
1810
+ constructor();
1811
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtToastDirective, never>;
1812
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtToastDirective, "baht-toast", ["bahtToast"], { "duration": { "alias": "duration"; "required": false; }; }, { "bahtDismiss": "bahtDismiss"; }, never, never, true, never>;
1813
+ static ngAcceptInputType_duration: unknown;
1814
+ }
1815
+ /** `<baht-toggle>` */
1816
+ export declare class BahtToggleDirective {
1817
+ /** The element itself, for its methods. */
1818
+ readonly element: BahtToggle;
1819
+ set field(v: BahtToggle['field']);
1820
+ set value(v: BahtToggle['value']);
1821
+ set disabled(v: BahtToggle['disabled']);
1822
+ set readonly(v: BahtToggle['readonly']);
1823
+ set required(v: BahtToggle['required']);
1824
+ /** Append the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>). */
1825
+ set showOptional(v: BahtToggle['showOptional']);
1826
+ set error(v: BahtToggle['error']);
1827
+ /** Debounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce. */
1828
+ set debounce(v: BahtToggle['debounce']);
1829
+ /** Field mode: the user edited the value. */
1830
+ readonly bahtInput: import("@angular/core").OutputEmitterRef<{
1831
+ key: string;
1832
+ value: unknown;
1833
+ }>;
1834
+ /** The value the user picked or typed, for `[(value)]`. */
1835
+ readonly valueChange: import("@angular/core").OutputEmitterRef<unknown>;
1836
+ constructor();
1837
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtToggleDirective, never>;
1838
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtToggleDirective, "baht-toggle", ["bahtToggle"], { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showOptional": { "alias": "showOptional"; "required": false; }; "error": { "alias": "error"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; }, { "bahtInput": "bahtInput"; "valueChange": "valueChange"; }, never, never, true, never>;
1839
+ static ngAcceptInputType_disabled: unknown;
1840
+ static ngAcceptInputType_readonly: unknown;
1841
+ static ngAcceptInputType_required: unknown;
1842
+ static ngAcceptInputType_showOptional: unknown;
1843
+ static ngAcceptInputType_debounce: unknown;
1844
+ }
1845
+ /** `<baht-tooltip>`: Hover/focus tooltip */
1846
+ export declare class BahtTooltipDirective {
1847
+ /** The element itself, for its methods. */
1848
+ readonly element: BahtTooltip;
1849
+ set text(v: BahtTooltip['text']);
1850
+ set position(v: BahtTooltip['position']);
1851
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTooltipDirective, never>;
1852
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTooltipDirective, "baht-tooltip", ["bahtTooltip"], { "text": { "alias": "text"; "required": false; }; "position": { "alias": "position"; "required": false; }; }, {}, never, never, true, never>;
1853
+ }
1854
+ /** `<baht-typeahead>`: Text input with suggestions (autocomplete) */
1855
+ export declare class BahtTypeaheadDirective {
1856
+ /** The element itself, for its methods. */
1857
+ readonly element: BahtTypeahead;
1858
+ /** Accessible name (also the listbox name). */
1859
+ set label(v: BahtTypeahead['label']);
1860
+ /** The text. Controlled: re-feed after `baht-change` (or don't — the input keeps what was typed). */
1861
+ set value(v: BahtTypeahead['value']);
1862
+ set placeholder(v: BahtTypeahead['placeholder']);
1863
+ set disabled(v: BahtTypeahead['disabled']);
1864
+ /** Marks the control invalid (styles + aria-invalid). */
1865
+ set invalid(v: BahtTypeahead['invalid']);
1866
+ /** Static suggestion list, filtered client-side. Ignored when `fetcher` is set. */
1867
+ set options(v: BahtTypeahead['options']);
1868
+ /** Async suggestions: term in, options out. Errors show as "no matches". */
1869
+ set fetcher(v: BahtTypeahead['fetcher']);
1870
+ /** Quiet time (ms) before the host hears the text and suggestions are (re)computed. */
1871
+ set debounce(v: BahtTypeahead['debounce']);
1872
+ /** Characters typed before suggestions appear (0 = suggest on focus/arrow too). */
1873
+ set minChars(v: BahtTypeahead['minChars']);
1874
+ /** Cap on suggestions shown. */
1875
+ set maxItems(v: BahtTypeahead['maxItems']);
1876
+ /** false = the text must be a picked option; blur reverts otherwise. */
1877
+ set freeText(v: BahtTypeahead['freeText']);
1878
+ /** HTML autocomplete token forwarded to the input ('off' keeps the browser's own list away). */
1879
+ set autocomplete(v: BahtTypeahead['autocomplete']);
1880
+ /** The text or the picked option changed. */
1881
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1882
+ value: string;
1883
+ option: TypeaheadOption | null;
1884
+ }>;
1885
+ /** An option was picked. */
1886
+ readonly bahtSelect: import("@angular/core").OutputEmitterRef<{
1887
+ option: TypeaheadOption;
1888
+ }>;
1889
+ /** The value the user picked or typed, for `[(value)]`. */
1890
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
1891
+ constructor();
1892
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtTypeaheadDirective, never>;
1893
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtTypeaheadDirective, "baht-typeahead", ["bahtTypeahead"], { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "options": { "alias": "options"; "required": false; }; "fetcher": { "alias": "fetcher"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; "minChars": { "alias": "minChars"; "required": false; }; "maxItems": { "alias": "maxItems"; "required": false; }; "freeText": { "alias": "freeText"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtSelect": "bahtSelect"; "valueChange": "valueChange"; }, never, never, true, never>;
1894
+ static ngAcceptInputType_disabled: unknown;
1895
+ static ngAcceptInputType_invalid: unknown;
1896
+ static ngAcceptInputType_debounce: unknown;
1897
+ static ngAcceptInputType_minChars: unknown;
1898
+ static ngAcceptInputType_maxItems: unknown;
1899
+ static ngAcceptInputType_freeText: unknown;
1900
+ }
1901
+ /** `<baht-upload>`: File upload against an HTTP endpoint */
1902
+ export declare class BahtUploadDirective {
1903
+ /** The element itself, for its methods. */
1904
+ readonly element: BahtUpload;
1905
+ /** Endpoint that receives the file and returns its stored URL. Required. */
1906
+ set url(v: BahtUpload['url']);
1907
+ /** HTTP method for the upload request. */
1908
+ set method(v: BahtUpload['method']);
1909
+ /** Form-data key the file is sent under. */
1910
+ set fieldName(v: BahtUpload['fieldName']);
1911
+ /** Where the stored URL lives in a JSON response (dotted path). Empty = the body itself. */
1912
+ set responseKey(v: BahtUpload['responseKey']);
1913
+ /** Extra request headers (e.g. Authorization). Property only. */
1914
+ set headers(v: BahtUpload['headers']);
1915
+ /** Send cookies on cross-origin requests. */
1916
+ set withCredentials(v: BahtUpload['withCredentials']);
1917
+ /** Stored URL(s). `string`, `string[]` when `multiple`, or `null`. Property only. */
1918
+ set value(v: BahtUpload['value']);
1919
+ /** Visible label. */
1920
+ set label(v: BahtUpload['label']);
1921
+ /** Helper text under the control. Defaults to the accept / size limits when set. */
1922
+ set hint(v: BahtUpload['hint']);
1923
+ /** Native `accept` filter (`.pdf,image/*`). */
1924
+ set accept(v: BahtUpload['accept']);
1925
+ /** Allow several files; the value becomes an array. */
1926
+ set multiple(v: BahtUpload['multiple']);
1927
+ /** Reject files over this many bytes before sending. */
1928
+ set maxSize(v: BahtUpload['maxSize']);
1929
+ set disabled(v: BahtUpload['disabled']);
1930
+ set required(v: BahtUpload['required']);
1931
+ /** Validation message to display (marks the control invalid). */
1932
+ set error(v: BahtUpload['error']);
1933
+ /** The uploaded files changed. */
1934
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<UploadChangeDetail>;
1935
+ /** A file started uploading. */
1936
+ readonly bahtUploadStart: import("@angular/core").OutputEmitterRef<{
1937
+ file: File;
1938
+ }>;
1939
+ /** Upload progress. */
1940
+ readonly bahtUploadProgress: import("@angular/core").OutputEmitterRef<UploadProgressDetail>;
1941
+ /** An upload failed. */
1942
+ readonly bahtUploadError: import("@angular/core").OutputEmitterRef<UploadErrorDetail>;
1943
+ constructor();
1944
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtUploadDirective, never>;
1945
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtUploadDirective, "baht-upload", ["bahtUpload"], { "url": { "alias": "url"; "required": false; }; "method": { "alias": "method"; "required": false; }; "fieldName": { "alias": "fieldName"; "required": false; }; "responseKey": { "alias": "responseKey"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "withCredentials": { "alias": "withCredentials"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtUploadStart": "bahtUploadStart"; "bahtUploadProgress": "bahtUploadProgress"; "bahtUploadError": "bahtUploadError"; }, never, never, true, never>;
1946
+ static ngAcceptInputType_withCredentials: unknown;
1947
+ static ngAcceptInputType_multiple: unknown;
1948
+ static ngAcceptInputType_maxSize: unknown;
1949
+ static ngAcceptInputType_disabled: unknown;
1950
+ static ngAcceptInputType_required: unknown;
1951
+ }
1952
+ /** `<baht-wizard>`: Pages filled in order, checked as you go */
1953
+ export declare class BahtWizardDirective {
1954
+ /** The element itself, for its methods. */
1955
+ readonly element: BahtWizard;
1956
+ set steps(v: BahtWizard['steps']);
1957
+ /** Key of the open page; the first when unset or unknown. */
1958
+ set value(v: BahtWizard['value']);
1959
+ /** `chevron` shows a progress strip you read; `tabs` a strip you can click to go anywhere. */
1960
+ set variant(v: BahtWizard['variant']);
1961
+ /** May this page be left? Unset: every page passes. */
1962
+ set validateStep(v: BahtWizard['validateStep']);
1963
+ set backLabel(v: BahtWizard['backLabel']);
1964
+ set nextLabel(v: BahtWizard['nextLabel']);
1965
+ set finishLabel(v: BahtWizard['finishLabel']);
1966
+ /** Keeps the buttons from running twice while the host is working. */
1967
+ set busy(v: BahtWizard['busy']);
1968
+ /** The page changed. `detail: { value }`. */
1969
+ readonly bahtChange: import("@angular/core").OutputEmitterRef<{
1970
+ value: string;
1971
+ }>;
1972
+ /** Every page passed. */
1973
+ readonly bahtFinish: import("@angular/core").OutputEmitterRef<void>;
1974
+ /** The value the user picked or typed, for `[(value)]`. */
1975
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
1976
+ constructor();
1977
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtWizardDirective, never>;
1978
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtWizardDirective, "baht-wizard", ["bahtWizard"], { "steps": { "alias": "steps"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "validateStep": { "alias": "validateStep"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "nextLabel": { "alias": "nextLabel"; "required": false; }; "finishLabel": { "alias": "finishLabel"; "required": false; }; "busy": { "alias": "busy"; "required": false; }; }, { "bahtChange": "bahtChange"; "bahtFinish": "bahtFinish"; "valueChange": "valueChange"; }, never, never, true, never>;
1979
+ static ngAcceptInputType_busy: unknown;
1980
+ }
1981
+ /** `<baht-workflow>`: <baht-workflow> — the optional brain (spec 03) */
1982
+ export declare class BahtWorkflowDirective {
1983
+ /** The element itself, for its methods. */
1984
+ readonly element: BahtWorkflow;
1985
+ set workflow(v: BahtWorkflow['workflow']);
1986
+ set value(v: BahtWorkflow['value']);
1987
+ set registry(v: BahtWorkflow['registry']);
1988
+ set validateGate(v: BahtWorkflow['validateGate']);
1989
+ /** Label attributes beat the i18n catalog; unset = t('next')/t('submit')/t('back'). */
1990
+ set nextLabel(v: BahtWorkflow['nextLabel']);
1991
+ set submitLabel(v: BahtWorkflow['submitLabel']);
1992
+ set backLabel(v: BahtWorkflow['backLabel']);
1993
+ set showBack(v: BahtWorkflow['showBack']);
1994
+ /** Feature-flag values (spec 01 §12): flag-off steps/fields/rules vanish. */
1995
+ set flags(v: BahtWorkflow['flags']);
1996
+ /** Render a <baht-steps> progress indicator above the current form. */
1997
+ set showSteps(v: BahtWorkflow['showSteps']);
1998
+ /** 'default' horizontal markers, or 'sidebar' vertical nav list — forwarded to <baht-steps>. */
1999
+ set stepsVariant(v: BahtWorkflow['stepsVariant']);
2000
+ /** Any value changed. */
2001
+ readonly bahtDataChange: import("@angular/core").OutputEmitterRef<{
2002
+ data: NestedData;
2003
+ }>;
2004
+ /** Moved forward to `form_name`. */
2005
+ readonly bahtNext: import("@angular/core").OutputEmitterRef<{
2006
+ form_name: string;
2007
+ order: number;
2008
+ data: NestedData;
2009
+ decision?: ApprovalDecision;
2010
+ comment?: string;
2011
+ }>;
2012
+ /** The visible step changed. */
2013
+ readonly bahtStepChange: import("@angular/core").OutputEmitterRef<{
2014
+ form_name: string;
2015
+ order: number;
2016
+ direction: "forward" | "back";
2017
+ }>;
2018
+ /** Next resolved to no visible step. */
2019
+ readonly bahtNavBlocked: import("@angular/core").OutputEmitterRef<{
2020
+ form_name: string | null;
2021
+ target: string;
2022
+ reason: "self-transition" | "target-hidden";
2023
+ data: NestedData;
2024
+ }>;
2025
+ /** The last step was submitted. */
2026
+ readonly bahtSubmit: import("@angular/core").OutputEmitterRef<{
2027
+ data: NestedData;
2028
+ decision?: ApprovalDecision;
2029
+ comment?: string;
2030
+ }>;
2031
+ /** The workflow ended. */
2032
+ readonly bahtComplete: import("@angular/core").OutputEmitterRef<{
2033
+ data: NestedData;
2034
+ status: "completed" | "rejected";
2035
+ }>;
2036
+ /** An approval step was approved. */
2037
+ readonly bahtApprove: import("@angular/core").OutputEmitterRef<{
2038
+ form_name: string;
2039
+ decision: ApprovalDecision;
2040
+ comment: string;
2041
+ data: NestedData;
2042
+ }>;
2043
+ /** An approval step was rejected. */
2044
+ readonly bahtReject: import("@angular/core").OutputEmitterRef<{
2045
+ form_name: string;
2046
+ decision: ApprovalDecision;
2047
+ comment: string;
2048
+ data: NestedData;
2049
+ }>;
2050
+ constructor();
2051
+ static ɵfac: i0.ɵɵFactoryDeclaration<BahtWorkflowDirective, never>;
2052
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BahtWorkflowDirective, "baht-workflow", ["bahtWorkflow"], { "workflow": { "alias": "workflow"; "required": false; }; "value": { "alias": "value"; "required": false; }; "registry": { "alias": "registry"; "required": false; }; "validateGate": { "alias": "validateGate"; "required": false; }; "nextLabel": { "alias": "nextLabel"; "required": false; }; "submitLabel": { "alias": "submitLabel"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "showSteps": { "alias": "showSteps"; "required": false; }; "stepsVariant": { "alias": "stepsVariant"; "required": false; }; }, { "bahtDataChange": "bahtDataChange"; "bahtNext": "bahtNext"; "bahtStepChange": "bahtStepChange"; "bahtNavBlocked": "bahtNavBlocked"; "bahtSubmit": "bahtSubmit"; "bahtComplete": "bahtComplete"; "bahtApprove": "bahtApprove"; "bahtReject": "bahtReject"; }, never, never, true, never>;
2053
+ static ngAcceptInputType_validateGate: unknown;
2054
+ static ngAcceptInputType_showBack: unknown;
2055
+ static ngAcceptInputType_showSteps: unknown;
2056
+ }
2057
+ /** Every directive: `imports: [BAHT_UI]` in a standalone component. */
2058
+ export declare const BAHT_UI: readonly [typeof BahtAccordionDirective, typeof BahtAlertDirective, typeof BahtAppShellDirective, typeof BahtApprovalChainDirective, typeof BahtAvatarDirective, typeof BahtBadgeDirective, typeof BahtBarChartDirective, typeof BahtBreadcrumbsDirective, typeof BahtButtonDirective, typeof BahtCardDirective, typeof BahtCatalogCardDirective, typeof BahtCheckboxDirective, typeof BahtCodeDirective, typeof BahtColumnPickerDirective, typeof BahtCommentsDirective, typeof BahtCurrencyDirective, typeof BahtDatepickerDirective, typeof BahtDonutChartDirective, typeof BahtEditTableDirective, typeof BahtEmptyStateDirective, typeof BahtErrorStateDirective, typeof BahtFieldsetDirective, typeof BahtFileDirective, typeof BahtFilterDirective, typeof BahtFilterBuilderDirective, typeof BahtFormDirective, typeof BahtHeatmapDirective, typeof BahtInputDirective, typeof BahtKeyvalueEditorDirective, typeof BahtLineChartDirective, typeof BahtLinkDirective, typeof BahtListDirective, typeof BahtLoadingOverlayDirective, typeof BahtMarkdownDirective, typeof BahtMarkdownViewDirective, typeof BahtMenuDirective, typeof BahtMeterDirective, typeof BahtModalDirective, typeof BahtMultiselectDirective, typeof BahtNotificationBellDirective, typeof BahtNumberDirective, typeof BahtOrderBoxDirective, typeof BahtOtpDirective, typeof BahtPageHeaderDirective, typeof BahtPaginationDirective, typeof BahtPopoverDirective, typeof BahtProgressDirective, typeof BahtProgressRingDirective, typeof BahtRadioDirective, typeof BahtRangeDirective, typeof BahtRatingDirective, typeof BahtRecordBarDirective, typeof BahtReferenceDialogDirective, typeof BahtReferencePickerDirective, typeof BahtRepeaterDirective, typeof BahtRuleBuilderDirective, typeof BahtSavedFiltersDirective, typeof BahtSectionDirective, typeof BahtSelectDirective, typeof BahtSkeletonDirective, typeof BahtSparklineDirective, typeof BahtSpinnerDirective, typeof BahtSplitButtonDirective, typeof BahtStatDirective, typeof BahtStatChartDirective, typeof BahtStepsDirective, typeof BahtSwipeRowDirective, typeof BahtTableDirective, typeof BahtTabsDirective, typeof BahtTagsDirective, typeof BahtTextDirective, typeof BahtTextareaDirective, typeof BahtThemeToggleDirective, typeof BahtTimelineDirective, typeof BahtToastDirective, typeof BahtToggleDirective, typeof BahtTooltipDirective, typeof BahtTypeaheadDirective, typeof BahtUploadDirective, typeof BahtWizardDirective, typeof BahtWorkflowDirective];