@joanroucoux/cairn-ui 0.5.1 → 0.6.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.
- package/fesm2022/joanroucoux-cairn-ui.mjs +1281 -467
- package/fesm2022/joanroucoux-cairn-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/tokens.css +18 -6
- package/types/joanroucoux-cairn-ui.d.ts +274 -56
|
@@ -41,6 +41,22 @@ type AmountFormatOptions = {
|
|
|
41
41
|
/** Formats a number or an amount for the locale, with a missing value as an em dash and masking behind four bullets. */
|
|
42
42
|
declare function formatAmount(value: number | null | undefined, options: AmountFormatOptions, masked?: boolean): string;
|
|
43
43
|
|
|
44
|
+
declare const ALERT_VARIANTS: readonly ["error", "warning"];
|
|
45
|
+
type AlertVariant = (typeof ALERT_VARIANTS)[number];
|
|
46
|
+
/**
|
|
47
|
+
* Inline message explaining a failure or a consequence: an icon, an optional heading and a text.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* <ui-alert heading="Sign-in failed">Try again.</ui-alert>
|
|
51
|
+
*/
|
|
52
|
+
declare class UiAlert {
|
|
53
|
+
readonly variant: _angular_core.InputSignal<"error" | "warning">;
|
|
54
|
+
readonly heading: _angular_core.InputSignal<string | undefined>;
|
|
55
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
56
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiAlert, never>;
|
|
57
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiAlert, "ui-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
58
|
+
}
|
|
59
|
+
|
|
44
60
|
/** Available async block states. `AsyncState` is derived from this tuple. */
|
|
45
61
|
declare const ASYNC_STATES: readonly ["loading", "error", "empty", "ready"];
|
|
46
62
|
type AsyncState = (typeof ASYNC_STATES)[number];
|
|
@@ -55,18 +71,18 @@ type AsyncState = (typeof ASYNC_STATES)[number];
|
|
|
55
71
|
* </ui-async>
|
|
56
72
|
*/
|
|
57
73
|
declare class UiAsync {
|
|
58
|
-
readonly state: _angular_core.InputSignal<"
|
|
74
|
+
readonly state: _angular_core.InputSignal<"error" | "loading" | "empty" | "ready">;
|
|
59
75
|
readonly errorTitle: _angular_core.InputSignal<string | undefined>;
|
|
60
76
|
readonly errorMessage: _angular_core.InputSignal<string | undefined>;
|
|
61
77
|
readonly retryLabel: _angular_core.InputSignal<string | undefined>;
|
|
62
78
|
readonly retry: _angular_core.OutputEmitterRef<void>;
|
|
63
|
-
protected readonly retryButtonClasses = "mt-2 relative inline-flex items-center justify-center gap-2 rounded-control font-medium whitespace-nowrap cursor-pointer select-none touch-manipulation transition-[transform,background-color,opacity] duration-(--duration-press) ease-out active:scale-(--press-scale) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) min-h-(--row-min)
|
|
79
|
+
protected readonly retryButtonClasses = "mt-2 relative inline-flex items-center justify-center gap-2 rounded-control font-medium whitespace-nowrap cursor-pointer select-none touch-manipulation transition-[transform,background-color,opacity] duration-(--duration-press) ease-out active:scale-(--press-scale) focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) min-h-(--row-min) pl-3 pr-4 text-label bg-(--card) text-(--foreground) shadow-[inset_0_0_0_1px_var(--border)] hover:bg-(--glow)";
|
|
64
80
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiAsync, never>;
|
|
65
81
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiAsync, "ui-async", never, { "state": { "alias": "state"; "required": true; "isSignal": true; }; "errorTitle": { "alias": "errorTitle"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; }, { "retry": "retry"; }, never, ["[asyncLoading]", "[asyncEmpty]", "*"], true, never>;
|
|
66
82
|
}
|
|
67
83
|
|
|
68
84
|
/** Available avatar sizes. `AvatarSize` is derived from this tuple. */
|
|
69
|
-
declare const AVATAR_SIZES: readonly ["sm", "md"];
|
|
85
|
+
declare const AVATAR_SIZES: readonly ["sm", "md", "lg"];
|
|
70
86
|
type AvatarSize = (typeof AVATAR_SIZES)[number];
|
|
71
87
|
/**
|
|
72
88
|
* Initials in a disc, standing in for a person. Single-user application: there is exactly one.
|
|
@@ -77,7 +93,7 @@ type AvatarSize = (typeof AVATAR_SIZES)[number];
|
|
|
77
93
|
declare class UiAvatar {
|
|
78
94
|
readonly initials: _angular_core.InputSignal<string>;
|
|
79
95
|
readonly label: _angular_core.InputSignal<string>;
|
|
80
|
-
readonly size: _angular_core.InputSignal<"sm" | "md">;
|
|
96
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
81
97
|
protected readonly classes: _angular_core.Signal<string>;
|
|
82
98
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiAvatar, never>;
|
|
83
99
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiAvatar, "ui-avatar", never, { "initials": { "alias": "initials"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -86,6 +102,8 @@ declare class UiAvatar {
|
|
|
86
102
|
/** Available badge variants. `BadgeVariant` is derived from this tuple. */
|
|
87
103
|
declare const BADGE_VARIANTS: readonly ["neutral", "outline"];
|
|
88
104
|
type BadgeVariant = (typeof BADGE_VARIANTS)[number];
|
|
105
|
+
declare const BADGE_SIZES: readonly ["md", "sm"];
|
|
106
|
+
type BadgeSize = (typeof BADGE_SIZES)[number];
|
|
89
107
|
/**
|
|
90
108
|
* Small status descriptor for counts, states or labels, such as an instrument's asset class.
|
|
91
109
|
*
|
|
@@ -94,16 +112,17 @@ type BadgeVariant = (typeof BADGE_VARIANTS)[number];
|
|
|
94
112
|
*/
|
|
95
113
|
declare class UiBadge {
|
|
96
114
|
readonly variant: _angular_core.InputSignal<"neutral" | "outline">;
|
|
115
|
+
readonly size: _angular_core.InputSignal<"sm" | "md">;
|
|
97
116
|
protected readonly classes: _angular_core.Signal<string>;
|
|
98
117
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiBadge, never>;
|
|
99
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiBadge, "ui-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
118
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiBadge, "ui-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
100
119
|
}
|
|
101
120
|
|
|
102
121
|
/** Available button variants. `ButtonVariant` is derived from this tuple. */
|
|
103
122
|
declare const BUTTON_VARIANTS: readonly ["primary", "outline", "ghost", "destructive"];
|
|
104
123
|
type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
|
|
105
|
-
/** Available button sizes.
|
|
106
|
-
declare const BUTTON_SIZES: readonly ["md", "lg", "xl", "icon"];
|
|
124
|
+
/** Available button sizes. */
|
|
125
|
+
declare const BUTTON_SIZES: readonly ["md", "lg", "xl", "xxl", "icon"];
|
|
107
126
|
type ButtonSize = (typeof BUTTON_SIZES)[number];
|
|
108
127
|
/**
|
|
109
128
|
* Styled native button or anchor, applied as an attribute so the host keeps every native behavior.
|
|
@@ -114,7 +133,7 @@ type ButtonSize = (typeof BUTTON_SIZES)[number];
|
|
|
114
133
|
*/
|
|
115
134
|
declare class UiButton {
|
|
116
135
|
readonly variant: _angular_core.InputSignal<"outline" | "primary" | "ghost" | "destructive">;
|
|
117
|
-
readonly size: _angular_core.InputSignal<"md" | "lg" | "xl" | "icon">;
|
|
136
|
+
readonly size: _angular_core.InputSignal<"md" | "lg" | "xl" | "xxl" | "icon">;
|
|
118
137
|
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
119
138
|
protected readonly classes: _angular_core.Signal<string>;
|
|
120
139
|
constructor();
|
|
@@ -126,7 +145,7 @@ declare class UiButton {
|
|
|
126
145
|
declare const CARD_VARIANTS: readonly ["default", "elevated"];
|
|
127
146
|
type CardVariant = (typeof CARD_VARIANTS)[number];
|
|
128
147
|
/** Available card paddings. `CardPadding` is derived from this tuple. */
|
|
129
|
-
declare const CARD_PADDINGS: readonly ["none", "sm", "md"];
|
|
148
|
+
declare const CARD_PADDINGS: readonly ["none", "sm", "md", "list"];
|
|
130
149
|
type CardPadding = (typeof CARD_PADDINGS)[number];
|
|
131
150
|
/**
|
|
132
151
|
* Surface that groups related content: a summary block, a table, a side panel.
|
|
@@ -136,7 +155,7 @@ type CardPadding = (typeof CARD_PADDINGS)[number];
|
|
|
136
155
|
*/
|
|
137
156
|
declare class UiCard {
|
|
138
157
|
readonly variant: _angular_core.InputSignal<"default" | "elevated">;
|
|
139
|
-
readonly padding: _angular_core.InputSignal<"sm" | "md" | "none">;
|
|
158
|
+
readonly padding: _angular_core.InputSignal<"sm" | "md" | "none" | "list">;
|
|
140
159
|
protected readonly classes: _angular_core.Signal<string>;
|
|
141
160
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiCard, never>;
|
|
142
161
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiCard, "ui-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
@@ -156,6 +175,46 @@ type UiControl = {
|
|
|
156
175
|
readonly touched: Signal<boolean>;
|
|
157
176
|
};
|
|
158
177
|
|
|
178
|
+
type ChoiceChipOption = {
|
|
179
|
+
value: string;
|
|
180
|
+
label: string;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Exclusive choice among a handful of named options, shown as wrapping pills: an account envelope,
|
|
184
|
+
* a category, a frequency. Binds to Signal Forms with `[formField]`.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* <ui-choice-chips label="Envelope" [options]="envelopes" [(value)]="envelope" />
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* <ui-choice-chips label="Envelope" [options]="envelopes" [formField]="form.envelope" />
|
|
191
|
+
*/
|
|
192
|
+
declare class UiChoiceChips implements UiControl {
|
|
193
|
+
#private;
|
|
194
|
+
readonly options: _angular_core.InputSignal<ChoiceChipOption[]>;
|
|
195
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
196
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
197
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
198
|
+
readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
|
|
199
|
+
readonly surface: _angular_core.InputSignal<"background" | "card">;
|
|
200
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
201
|
+
readonly errors: _angular_core.InputSignal<readonly UiControlError[]>;
|
|
202
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
203
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
204
|
+
readonly touched: _angular_core.InputSignal<boolean>;
|
|
205
|
+
readonly touch: _angular_core.OutputEmitterRef<void>;
|
|
206
|
+
protected readonly labelId: string;
|
|
207
|
+
protected readonly radios: _angular_core.Signal<readonly ElementRef<HTMLButtonElement>[]>;
|
|
208
|
+
protected readonly labelledBy: _angular_core.Signal<string | null>;
|
|
209
|
+
protected chipClasses(optionValue: string): string;
|
|
210
|
+
protected tabIndexFor(optionValue: string): number;
|
|
211
|
+
protected select(optionValue: string): void;
|
|
212
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
213
|
+
protected onKeydown(event: KeyboardEvent, index: number): void;
|
|
214
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiChoiceChips, never>;
|
|
215
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiChoiceChips, "ui-choice-chips", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
216
|
+
}
|
|
217
|
+
|
|
159
218
|
/** Available delta emphases. `DeltaEmphasis` is derived from this tuple. */
|
|
160
219
|
declare const DELTA_EMPHASES: readonly ["text", "pill"];
|
|
161
220
|
type DeltaEmphasis = (typeof DELTA_EMPHASES)[number];
|
|
@@ -182,33 +241,58 @@ declare class UiDelta {
|
|
|
182
241
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiDelta, "ui-delta", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "unknownLabel": { "alias": "unknownLabel"; "required": true; "isSignal": true; }; "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
183
242
|
}
|
|
184
243
|
|
|
185
|
-
/**
|
|
244
|
+
/** Named dialog widths; any other CSS length is accepted as is. `DialogWidth` is derived from this tuple. */
|
|
186
245
|
declare const DIALOG_WIDTHS: readonly ["md", "lg"];
|
|
187
246
|
type DialogWidth = (typeof DIALOG_WIDTHS)[number];
|
|
247
|
+
/** Spacing presets. `DialogLayout` is derived from this tuple. */
|
|
248
|
+
declare const DIALOG_LAYOUTS: readonly ["trade", "form", "list", "confirm"];
|
|
249
|
+
type DialogLayout = (typeof DIALOG_LAYOUTS)[number];
|
|
250
|
+
type LayoutClasses = {
|
|
251
|
+
dialog: string;
|
|
252
|
+
header: string;
|
|
253
|
+
title: string;
|
|
254
|
+
cross: string;
|
|
255
|
+
icon: string;
|
|
256
|
+
handle: string;
|
|
257
|
+
body: string;
|
|
258
|
+
footer: string;
|
|
259
|
+
};
|
|
188
260
|
/**
|
|
189
|
-
* Modal dialog on the native <dialog>: a sheet
|
|
190
|
-
* above it. Two projection slots - the body, and [dialogActions] for the footer.
|
|
261
|
+
* Modal dialog on the native <dialog>: a bottom sheet under `64rem`, centered above it.
|
|
191
262
|
*
|
|
192
263
|
* @example
|
|
193
|
-
* <ui-dialog heading="
|
|
194
|
-
* <p>
|
|
195
|
-
* <button dialogActions ui-button variant="outline" (click)="
|
|
264
|
+
* <ui-dialog heading="Buy" description="Ferrari" closeLabel="Close" width="528px" [open]="buying()" (dismissed)="buying.set(false)">
|
|
265
|
+
* <p>Body</p>
|
|
266
|
+
* <button dialogActions ui-button variant="outline" class="max-lg:hidden" (click)="buying.set(false)">Cancel</button>
|
|
267
|
+
* <button dialogActions ui-button>Buy 40 shares</button>
|
|
196
268
|
* </ui-dialog>
|
|
197
269
|
*/
|
|
198
270
|
declare class UiDialog {
|
|
199
271
|
#private;
|
|
200
272
|
readonly heading: _angular_core.InputSignal<string>;
|
|
201
273
|
readonly description: _angular_core.InputSignal<string | undefined>;
|
|
202
|
-
readonly
|
|
274
|
+
readonly closeLabel: _angular_core.InputSignal<string | undefined>;
|
|
275
|
+
readonly layout: _angular_core.InputSignal<"list" | "trade" | "form" | "confirm">;
|
|
276
|
+
readonly truncateDescription: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
277
|
+
readonly width: _angular_core.InputSignal<"md" | "lg" | (string & {})>;
|
|
203
278
|
readonly open: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
204
279
|
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
205
280
|
protected readonly headingId: string;
|
|
206
281
|
protected readonly descriptionId: string;
|
|
282
|
+
protected readonly widthValue: _angular_core.Signal<string>;
|
|
283
|
+
protected readonly spec: _angular_core.Signal<LayoutClasses>;
|
|
284
|
+
protected readonly headerClasses: _angular_core.Signal<string>;
|
|
285
|
+
protected readonly titleClasses: _angular_core.Signal<string>;
|
|
286
|
+
protected readonly crossClasses: _angular_core.Signal<string>;
|
|
287
|
+
protected readonly iconClasses: _angular_core.Signal<string>;
|
|
288
|
+
protected readonly footerClasses: _angular_core.Signal<string>;
|
|
207
289
|
protected readonly classes: _angular_core.Signal<string>;
|
|
208
290
|
constructor();
|
|
291
|
+
protected onPointerDown(event: MouseEvent): void;
|
|
292
|
+
protected onClick(event: MouseEvent): void;
|
|
209
293
|
protected onNativeClose(): void;
|
|
210
294
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiDialog, never>;
|
|
211
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiDialog, "ui-dialog", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[dialogActions]"], true, never>;
|
|
295
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiDialog, "ui-dialog", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "truncateDescription": { "alias": "truncateDescription"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[dialogActions]"], true, never>;
|
|
212
296
|
}
|
|
213
297
|
|
|
214
298
|
type DonutSlice = {
|
|
@@ -225,7 +309,8 @@ type RankedSlice = DonutSlice & {
|
|
|
225
309
|
};
|
|
226
310
|
|
|
227
311
|
type PositionedSlice = RankedSlice & {
|
|
228
|
-
|
|
312
|
+
dash: string;
|
|
313
|
+
offset: string;
|
|
229
314
|
};
|
|
230
315
|
|
|
231
316
|
/**
|
|
@@ -247,11 +332,13 @@ declare class UiDonut {
|
|
|
247
332
|
protected readonly positioned: _angular_core.Signal<PositionedSlice[]>;
|
|
248
333
|
protected readonly active: _angular_core.Signal<RankedSlice | null>;
|
|
249
334
|
protected readonly ariaLabel: _angular_core.Signal<string>;
|
|
250
|
-
protected
|
|
335
|
+
protected readonly radius = 78;
|
|
336
|
+
protected readonly ringWidth = 30;
|
|
337
|
+
protected strokeColor(slice: RankedSlice): string;
|
|
338
|
+
protected strokeWidth(slice: RankedSlice): number;
|
|
251
339
|
protected dotClasses(slice: RankedSlice): string;
|
|
252
340
|
protected rowClasses(slice: RankedSlice): string;
|
|
253
341
|
protected subLabel(slice: RankedSlice): string;
|
|
254
|
-
protected arcTransform(slice: RankedSlice): string;
|
|
255
342
|
protected isActive(slice: RankedSlice): boolean;
|
|
256
343
|
protected highlight(id: string): void;
|
|
257
344
|
protected clearHighlight(id: string): void;
|
|
@@ -260,6 +347,21 @@ declare class UiDonut {
|
|
|
260
347
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiDonut, "ui-donut", never, { "slices": { "alias": "slices"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "othersLabel": { "alias": "othersLabel"; "required": true; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "shareFormat": { "alias": "shareFormat"; "required": false; "isSignal": true; }; }, { "sliceSelect": "sliceSelect"; }, never, never, true, never>;
|
|
261
348
|
}
|
|
262
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Marks an element, typically an 18px svg icon, as the leading content of a `ui-field`: it sits
|
|
352
|
+
* inside the control's left edge and the control's text is inset to clear it. Decorative, so hidden
|
|
353
|
+
* from assistive technologies.
|
|
354
|
+
*
|
|
355
|
+
* @example
|
|
356
|
+
* <ui-field label="Search" labelHidden>
|
|
357
|
+
* <svg uiFieldLeading width="18" height="18" viewBox="0 0 24 24">...</svg>
|
|
358
|
+
* <input uiInput type="search" />
|
|
359
|
+
* </ui-field>
|
|
360
|
+
*/
|
|
361
|
+
declare class UiFieldLeading {
|
|
362
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiFieldLeading, never>;
|
|
363
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiFieldLeading, "[uiFieldLeading]", never, {}, {}, never, never, true, never>;
|
|
364
|
+
}
|
|
263
365
|
/**
|
|
264
366
|
* Label, control, hint and error as one unit. The control stays a plain native element:
|
|
265
367
|
* the field finds it in its own projected content and wires the ARIA attributes onto it.
|
|
@@ -292,7 +394,9 @@ declare class UiField {
|
|
|
292
394
|
protected readonly hintId: string;
|
|
293
395
|
protected readonly errorId: string;
|
|
294
396
|
protected readonly control: _angular_core.Signal<UiControl | undefined>;
|
|
295
|
-
protected readonly
|
|
397
|
+
protected readonly leading: _angular_core.Signal<UiFieldLeading | undefined>;
|
|
398
|
+
protected readonly rowClasses: _angular_core.Signal<"relative flex items-center [&>input]:pl-[38px]" | "relative flex items-center">;
|
|
399
|
+
protected readonly labelClasses: _angular_core.Signal<"sr-only" | "text-label leading-[17px] font-medium text-(--muted-foreground)">;
|
|
296
400
|
/**
|
|
297
401
|
* The caller's own `error` wins: it is the only way to report something the control does not
|
|
298
402
|
* know about, such as a search box refusing an empty query.
|
|
@@ -300,12 +404,14 @@ declare class UiField {
|
|
|
300
404
|
protected readonly message: _angular_core.Signal<string | undefined>;
|
|
301
405
|
constructor();
|
|
302
406
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiField, never>;
|
|
303
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiField, "ui-field", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "labelHidden": { "alias": "labelHidden"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; }, {}, ["control"], ["*"], true, never>;
|
|
407
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiField, "ui-field", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "labelHidden": { "alias": "labelHidden"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; }, {}, ["control", "leading"], ["[uiFieldLeading]", "*"], true, never>;
|
|
304
408
|
}
|
|
305
409
|
|
|
306
410
|
/** Available control sizes. `md` is the 44/40px touch target. */
|
|
307
411
|
declare const CONTROL_SIZES: readonly ["sm", "md"];
|
|
308
412
|
type ControlSize = (typeof CONTROL_SIZES)[number];
|
|
413
|
+
declare const CONTROL_SURFACES: readonly ["background", "card"];
|
|
414
|
+
type ControlSurface = (typeof CONTROL_SURFACES)[number];
|
|
309
415
|
/**
|
|
310
416
|
* Styled native text input. A directive (not a wrapper component) so the host
|
|
311
417
|
* stays a plain <input>: every forms flavor (ngModel, reactive, signal forms)
|
|
@@ -319,11 +425,12 @@ type ControlSize = (typeof CONTROL_SIZES)[number];
|
|
|
319
425
|
*/
|
|
320
426
|
declare class UiInput implements UiControl {
|
|
321
427
|
readonly size: _angular_core.InputSignal<"sm" | "md">;
|
|
428
|
+
readonly surface: _angular_core.InputSignal<"background" | "card">;
|
|
322
429
|
readonly errors: _angular_core.InputSignal<readonly UiControlError[]>;
|
|
323
430
|
readonly touched: _angular_core.InputSignal<boolean>;
|
|
324
431
|
protected readonly classes: _angular_core.Signal<string>;
|
|
325
432
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiInput, never>;
|
|
326
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiInput, "input[uiInput]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
433
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiInput, "input[uiInput]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
327
434
|
}
|
|
328
435
|
/**
|
|
329
436
|
* Styled native textarea. Lives beside the input because it shares every one of its
|
|
@@ -343,6 +450,10 @@ declare class UiTextarea implements UiControl {
|
|
|
343
450
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTextarea, "textarea[uiTextarea]", never, { "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
344
451
|
}
|
|
345
452
|
|
|
453
|
+
declare const TOOLTIP_SIZES: readonly ["compact", "large"];
|
|
454
|
+
type TooltipSize = (typeof TOOLTIP_SIZES)[number];
|
|
455
|
+
type AxisTicks = 3 | 5 | 'auto';
|
|
456
|
+
|
|
346
457
|
type ChartPoint = {
|
|
347
458
|
t: number;
|
|
348
459
|
v: number;
|
|
@@ -365,12 +476,6 @@ type ChartGeometry = {
|
|
|
365
476
|
plotTop: number;
|
|
366
477
|
};
|
|
367
478
|
|
|
368
|
-
type StartLabelPlacement = {
|
|
369
|
-
x: number;
|
|
370
|
-
y: number;
|
|
371
|
-
anchor: 'start' | 'end';
|
|
372
|
-
};
|
|
373
|
-
|
|
374
479
|
type PlotRef = ElementRef<SVGSVGElement>;
|
|
375
480
|
/**
|
|
376
481
|
* Value over time: a monotone curve with a dashed line at the starting value and a tooltip.
|
|
@@ -389,6 +494,12 @@ declare class UiLineChart {
|
|
|
389
494
|
readonly startLabel: _angular_core.InputSignal<string>;
|
|
390
495
|
readonly timeColumnLabel: _angular_core.InputSignal<string>;
|
|
391
496
|
readonly valueColumnLabel: _angular_core.InputSignal<string>;
|
|
497
|
+
readonly sparkline: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
498
|
+
readonly tooltip: _angular_core.InputSignal<"compact" | "large" | "auto">;
|
|
499
|
+
readonly tooltipDelta: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
500
|
+
readonly axisGap: _angular_core.InputSignal<number | "auto">;
|
|
501
|
+
readonly axisTicks: _angular_core.InputSignalWithTransform<AxisTicks, string | 3 | 5>;
|
|
502
|
+
protected readonly isCoreTick: (index: number, count: number) => boolean;
|
|
392
503
|
protected readonly svgRef: _angular_core.Signal<PlotRef>;
|
|
393
504
|
protected readonly activeIndex: _angular_core.WritableSignal<number | null>;
|
|
394
505
|
protected readonly animatedLine: _angular_core.WritableSignal<string | null>;
|
|
@@ -398,24 +509,33 @@ declare class UiLineChart {
|
|
|
398
509
|
} | null>;
|
|
399
510
|
protected readonly effectiveWidth: _angular_core.Signal<number>;
|
|
400
511
|
protected readonly effectiveHeight: _angular_core.Signal<number>;
|
|
512
|
+
protected readonly plotHeight: _angular_core.Signal<number>;
|
|
513
|
+
protected readonly tooltipStyle: (point: PlottedPoint) => string;
|
|
514
|
+
protected readonly tooltipClasses: _angular_core.Signal<{
|
|
515
|
+
box: string;
|
|
516
|
+
value: string;
|
|
517
|
+
delta: string;
|
|
518
|
+
}>;
|
|
401
519
|
protected readonly geometry: _angular_core.Signal<ChartGeometry | null>;
|
|
402
520
|
protected readonly displayLine: _angular_core.Signal<string>;
|
|
403
521
|
protected readonly ticks: _angular_core.Signal<PlottedPoint[]>;
|
|
404
522
|
protected readonly active: _angular_core.Signal<PlottedPoint | null>;
|
|
405
523
|
protected readonly startLabelInfo: _angular_core.Signal<{
|
|
406
524
|
label: string;
|
|
407
|
-
placement:
|
|
525
|
+
placement: {
|
|
526
|
+
y: number;
|
|
527
|
+
x: number;
|
|
528
|
+
anchor: "start" | "end";
|
|
529
|
+
};
|
|
408
530
|
} | null>;
|
|
409
531
|
constructor();
|
|
410
|
-
protected coreTick(index: number, count: number): boolean;
|
|
411
532
|
protected deltaFor(point: PlottedPoint): number;
|
|
412
533
|
protected deltaClasses(point: PlottedPoint): string;
|
|
413
|
-
protected tooltipStyle(point: PlottedPoint): string;
|
|
414
534
|
protected onPointerMove(event: PointerEvent): void;
|
|
415
535
|
protected onPointerLeave(): void;
|
|
416
536
|
protected onKeydown(event: KeyboardEvent): void;
|
|
417
537
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiLineChart, never>;
|
|
418
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiLineChart, "ui-line-chart", never, { "points": { "alias": "points"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "deltaFormat": { "alias": "deltaFormat"; "required": false; "isSignal": true; }; "timeFormat": { "alias": "timeFormat"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "timeColumnLabel": { "alias": "timeColumnLabel"; "required": false; "isSignal": true; }; "valueColumnLabel": { "alias": "valueColumnLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
538
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiLineChart, "ui-line-chart", never, { "points": { "alias": "points"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "deltaFormat": { "alias": "deltaFormat"; "required": false; "isSignal": true; }; "timeFormat": { "alias": "timeFormat"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "timeColumnLabel": { "alias": "timeColumnLabel"; "required": false; "isSignal": true; }; "valueColumnLabel": { "alias": "valueColumnLabel"; "required": false; "isSignal": true; }; "sparkline": { "alias": "sparkline"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipDelta": { "alias": "tooltipDelta"; "required": false; "isSignal": true; }; "axisGap": { "alias": "axisGap"; "required": false; "isSignal": true; }; "axisTicks": { "alias": "axisTicks"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
419
539
|
}
|
|
420
540
|
|
|
421
541
|
/**
|
|
@@ -449,7 +569,7 @@ declare class UiMenu {
|
|
|
449
569
|
readonly label: _angular_core.InputSignal<string>;
|
|
450
570
|
readonly menuId: string;
|
|
451
571
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
452
|
-
protected readonly classes = "m-0 min-w-44 p-1 rounded-container bg-(--elevated) shadow-[0_8px_24px_rgb(0_0_0/0.16)] text-(--foreground) transition-[opacity,transform,overlay,display] transition-discrete duration-(--duration-fast) ease-out starting:open:opacity-0 starting:open:scale-(--enter-scale) opacity-0 scale-(--enter-scale) open:opacity-100 open:scale-100";
|
|
572
|
+
protected readonly classes = "m-0 min-w-44 p-1 rounded-container bg-(--elevated) shadow-[0_8px_24px_rgb(0_0_0/0.16),inset_0_0_0_1px_var(--border)] text-(--foreground) transition-[opacity,transform,overlay,display] transition-discrete duration-(--duration-fast) ease-out starting:open:opacity-0 starting:open:scale-(--enter-scale) opacity-0 scale-(--enter-scale) open:opacity-100 open:scale-100";
|
|
453
573
|
protected readonly items: _angular_core.Signal<readonly UiMenuItem[]>;
|
|
454
574
|
open(trigger: HTMLElement): void;
|
|
455
575
|
close(): void;
|
|
@@ -487,7 +607,7 @@ declare class UiMeter {
|
|
|
487
607
|
readonly value: _angular_core.InputSignal<number>;
|
|
488
608
|
readonly label: _angular_core.InputSignal<string>;
|
|
489
609
|
readonly valueText: _angular_core.InputSignal<string>;
|
|
490
|
-
readonly tone: _angular_core.InputSignal<3 |
|
|
610
|
+
readonly tone: _angular_core.InputSignal<3 | 5 | 2 | 1 | 4 | 6>;
|
|
491
611
|
protected readonly percent: _angular_core.Signal<number>;
|
|
492
612
|
protected readonly fillClasses: _angular_core.Signal<string>;
|
|
493
613
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiMeter, never>;
|
|
@@ -510,6 +630,10 @@ declare class UiNavItem {
|
|
|
510
630
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiNavItem, "a[ui-nav-item]", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; }, {}, never, ["[navIcon]", "*"], true, never>;
|
|
511
631
|
}
|
|
512
632
|
|
|
633
|
+
declare const ROW_SIZES: readonly ["md", "lg", "xl"];
|
|
634
|
+
type RowSize = (typeof ROW_SIZES)[number];
|
|
635
|
+
declare const ROW_PADDINGS: readonly ["md", "sm", "none"];
|
|
636
|
+
type RowPadding = (typeof ROW_PADDINGS)[number];
|
|
513
637
|
/**
|
|
514
638
|
* Clickable row of a list: a holding, an envelope, an account.
|
|
515
639
|
*
|
|
@@ -520,9 +644,11 @@ declare class UiNavItem {
|
|
|
520
644
|
*/
|
|
521
645
|
declare class UiRow {
|
|
522
646
|
readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
647
|
+
readonly size: _angular_core.InputSignal<"md" | "lg" | "xl">;
|
|
648
|
+
readonly padding: _angular_core.InputSignal<"sm" | "md" | "none">;
|
|
523
649
|
protected readonly classes: _angular_core.Signal<string>;
|
|
524
650
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiRow, never>;
|
|
525
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiRow, "a[ui-row], button[ui-row]", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
651
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiRow, "a[ui-row], button[ui-row]", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
526
652
|
}
|
|
527
653
|
|
|
528
654
|
type SegmentedOption = {
|
|
@@ -581,10 +707,11 @@ declare class UiSkeleton {
|
|
|
581
707
|
readonly shape: _angular_core.InputSignal<"text" | "figure" | "row" | "chart" | "ring">;
|
|
582
708
|
readonly lines: _angular_core.InputSignal<number>;
|
|
583
709
|
readonly height: _angular_core.InputSignal<number>;
|
|
710
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
584
711
|
protected readonly animation = "cairn-pulse var(--pulse-duration) var(--ease-out) infinite alternate";
|
|
585
712
|
protected readonly bars: _angular_core.Signal<("62%" | "100%")[]>;
|
|
586
713
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiSkeleton, never>;
|
|
587
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiSkeleton, "ui-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
714
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiSkeleton, "ui-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
588
715
|
}
|
|
589
716
|
|
|
590
717
|
/** Available stat sizes. `StatSize` is derived from this tuple. */
|
|
@@ -608,7 +735,8 @@ type StatSize = (typeof STAT_SIZES)[number];
|
|
|
608
735
|
declare class UiStat {
|
|
609
736
|
readonly label: _angular_core.InputSignal<string>;
|
|
610
737
|
readonly size: _angular_core.InputSignal<"hero" | "tile">;
|
|
611
|
-
protected readonly labelClasses
|
|
738
|
+
protected readonly labelClasses: _angular_core.Signal<string>;
|
|
739
|
+
protected readonly stackClasses: _angular_core.Signal<string>;
|
|
612
740
|
protected readonly valueClasses: _angular_core.Signal<string>;
|
|
613
741
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiStat, never>;
|
|
614
742
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiStat, "ui-stat", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["[uiStatValue]", "[uiStatDelta]", "[uiStatCaption]", "[uiStatAside]"], true, never>;
|
|
@@ -616,12 +744,13 @@ declare class UiStat {
|
|
|
616
744
|
|
|
617
745
|
/**
|
|
618
746
|
* Native checkbox styled as an iOS-style switch, exposed to assistive technology as `role="switch"`.
|
|
747
|
+
* 51 by 31 on touch, 40 by 24 with a mouse.
|
|
619
748
|
*
|
|
620
749
|
* @example
|
|
621
750
|
* <input type="checkbox" uiSwitch [checked]="hidden()" (change)="toggle()" aria-label="Hide amounts" />
|
|
622
751
|
*/
|
|
623
752
|
declare class UiSwitch {
|
|
624
|
-
protected readonly classes = "relative shrink-0 w-[51px] h-[31px] appearance-none cursor-pointer rounded-pill bg-(--muted) checked:bg-(--primary) transition-colors duration-(--duration-fast) ease-out disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:h-(--row-min) before:content-[''] after:absolute after:top-0.5 after:left-0.5 after:size-[27px] after:rounded-pill after:bg-(--card) after:shadow-[0_1px_3px_rgb(0_0_0/0.2)] after:transition-transform after:duration-(--duration-fast) after:ease-out after:content-[''] checked:after:translate-x-[20px]";
|
|
753
|
+
protected readonly classes = "relative shrink-0 w-[51px] h-[31px] pointer-fine:w-10 pointer-fine:h-6 appearance-none cursor-pointer rounded-pill bg-(--muted) checked:bg-(--primary) transition-colors duration-(--duration-fast) ease-out disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:h-(--row-min) before:content-[''] after:absolute after:top-0.5 after:left-0.5 after:size-[27px] pointer-fine:after:size-5 after:rounded-pill after:bg-(--card) after:shadow-[0_1px_3px_rgb(0_0_0/0.2)] after:transition-transform after:duration-(--duration-fast) after:ease-out after:content-[''] checked:after:translate-x-[20px] pointer-fine:checked:after:translate-x-4";
|
|
625
754
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiSwitch, never>;
|
|
626
755
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiSwitch, "input[type=checkbox][uiSwitch]", never, {}, {}, never, never, true, never>;
|
|
627
756
|
}
|
|
@@ -629,46 +758,135 @@ declare class UiSwitch {
|
|
|
629
758
|
/** Breakpoints a secondary column can be held back until. */
|
|
630
759
|
declare const CELL_BREAKPOINTS: readonly ["md", "lg"];
|
|
631
760
|
type CellBreakpoint = (typeof CELL_BREAKPOINTS)[number];
|
|
632
|
-
/**
|
|
761
|
+
/** Body row heights. */
|
|
762
|
+
declare const TABLE_ROWS: readonly ["48", "52", "60"];
|
|
763
|
+
type TableRow = (typeof TABLE_ROWS)[number];
|
|
764
|
+
/**
|
|
765
|
+
* Styled native table. The rows and cells stay plain <tr> and <td>. `row` sets the height of every
|
|
766
|
+
* body row, `rule` draws or drops the hairline under the header, `spaced` leaves 4px between the
|
|
767
|
+
* header and the first row.
|
|
768
|
+
*
|
|
769
|
+
* @example
|
|
770
|
+
* <table uiTable row="60" [rule]="false">
|
|
771
|
+
*/
|
|
633
772
|
declare class UiTable {
|
|
773
|
+
readonly row: _angular_core.InputSignal<"48" | "52" | "60">;
|
|
774
|
+
readonly rule: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
775
|
+
readonly spaced: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
776
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
634
777
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiTable, never>;
|
|
635
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTable, "table[uiTable]", never, {}, {}, never, never, true, never>;
|
|
778
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTable, "table[uiTable]", never, { "row": { "alias": "row"; "required": false; "isSignal": true; }; "rule": { "alias": "rule"; "required": false; "isSignal": true; }; "spaced": { "alias": "spaced"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
779
|
+
}
|
|
780
|
+
/** Body of one group of rows: leaves a 4px tail after its last row. */
|
|
781
|
+
declare class UiGroup {
|
|
782
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiGroup, never>;
|
|
783
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiGroup, "tbody[uiGroup]", never, {}, {}, never, never, true, never>;
|
|
636
784
|
}
|
|
637
785
|
/**
|
|
638
|
-
* Body or group row.
|
|
639
|
-
*
|
|
786
|
+
* Body or group row. An ordinary row glows on hover and takes the soft fill when `selected`; an
|
|
787
|
+
* `interactive` row (one that opens something) also presses to the soft fill. A row with no action keeps a
|
|
788
|
+
* plain name: `<td uiTd primary class="truncate font-medium">`.
|
|
789
|
+
* `group` marks the row that holds a group band: it carries no hover state.
|
|
640
790
|
*
|
|
641
791
|
* @example
|
|
642
|
-
* <tr uiTr>...
|
|
643
|
-
* <tr uiTr group>...
|
|
792
|
+
* <tr uiTr [selected]="open">...
|
|
793
|
+
* <tr uiTr group><td ui-group-cell name="Brokerage">...
|
|
644
794
|
*/
|
|
645
795
|
declare class UiTr {
|
|
646
796
|
readonly group: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
647
|
-
|
|
797
|
+
readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
798
|
+
readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
799
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
648
800
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiTr, never>;
|
|
649
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTr, "tr[uiTr]", never, { "group": { "alias": "group"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
801
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTr, "tr[uiTr]", never, { "group": { "alias": "group"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
650
802
|
}
|
|
651
803
|
/**
|
|
652
|
-
* Column header. `numeric` right-aligns and lines the digits up; `
|
|
653
|
-
*
|
|
804
|
+
* Column header, centred in its 36px. `numeric` right-aligns and lines the digits up; `secondary`
|
|
805
|
+
* (or `from`) holds a column back until the viewport is wide enough for it; `primary` makes it
|
|
806
|
+
* the column that absorbs the free width and truncates; `tall` is a 40px header; `width` fixes the column width and keeps it from shrinking.
|
|
654
807
|
*
|
|
655
808
|
* @example
|
|
656
|
-
* <th uiTh numeric
|
|
809
|
+
* <th uiTh numeric secondary width="108px">Quantity</th>
|
|
657
810
|
*/
|
|
658
811
|
declare class UiTh {
|
|
812
|
+
readonly width: _angular_core.InputSignal<string | null>;
|
|
659
813
|
readonly numeric: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
814
|
+
readonly primary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
815
|
+
readonly secondary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
816
|
+
readonly tall: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
660
817
|
readonly from: _angular_core.InputSignal<"md" | "lg" | null>;
|
|
661
818
|
protected readonly classes: _angular_core.Signal<string>;
|
|
662
819
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiTh, never>;
|
|
663
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTh, "th[uiTh]", never, { "numeric": { "alias": "numeric"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
820
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTh, "th[uiTh]", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "numeric": { "alias": "numeric"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; "tall": { "alias": "tall"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
664
821
|
}
|
|
665
|
-
/** Body cell. Same
|
|
822
|
+
/** Body cell. Same inputs as `UiTh` (bar `tall` and `width`), and they must be set on both to match. */
|
|
666
823
|
declare class UiTd {
|
|
667
824
|
readonly numeric: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
825
|
+
readonly primary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
826
|
+
readonly secondary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
668
827
|
readonly from: _angular_core.InputSignal<"md" | "lg" | null>;
|
|
669
828
|
protected readonly classes: _angular_core.Signal<string>;
|
|
670
829
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiTd, never>;
|
|
671
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTd, "td[uiTd]", never, { "numeric": { "alias": "numeric"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
830
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiTd, "td[uiTd]", never, { "numeric": { "alias": "numeric"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
831
|
+
}
|
|
832
|
+
/** Group band sizes. */
|
|
833
|
+
declare const GROUP_SIZES: readonly ["md", "lg"];
|
|
834
|
+
type GroupSize = (typeof GROUP_SIZES)[number];
|
|
835
|
+
/**
|
|
836
|
+
* The band that opens a group of rows: name in 600 (a heading), meta beside it, the projected
|
|
837
|
+
* total pinned to the right. Spans the whole row through `colspan`.
|
|
838
|
+
*
|
|
839
|
+
* @example
|
|
840
|
+
* <tr uiTr group><td ui-group-cell colspan="4" name="Brokerage" meta="Savings plan">...total...</td></tr>
|
|
841
|
+
*/
|
|
842
|
+
declare class UiGroupCell {
|
|
843
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
844
|
+
readonly meta: _angular_core.InputSignal<string | undefined>;
|
|
845
|
+
readonly size: _angular_core.InputSignal<"md" | "lg">;
|
|
846
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
847
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiGroupCell, never>;
|
|
848
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiGroupCell, "td[ui-group-cell]", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "meta": { "alias": "meta"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
849
|
+
}
|
|
850
|
+
/**
|
|
851
|
+
* Makes a link or button the way into its row. By default an invisible layer stretches over the
|
|
852
|
+
* whole row, so the row is one target for the pointer, the keyboard and a screen reader, and its
|
|
853
|
+
* focus ring wraps the row. With `[stretch]="false"` only the name is the
|
|
854
|
+
* target: it underlines on hover and takes its own ring. `current` marks the open line.
|
|
855
|
+
*
|
|
856
|
+
* @example
|
|
857
|
+
* <td uiTd primary><a uiRowLink href="/lines/42">Ferrari</a></td>
|
|
858
|
+
* <td uiTd primary><a uiRowLink [stretch]="false" href="/accounts/3">Brokerage</a></td>
|
|
859
|
+
*/
|
|
860
|
+
declare class UiRowLink {
|
|
861
|
+
readonly stretch: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
862
|
+
readonly current: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
863
|
+
protected readonly classes: _angular_core.Signal<"block max-w-full truncate rounded-control text-left font-medium outline-none after:absolute after:inset-0 after:rounded-control after:content-[\"\"] focus-visible:after:outline-2 focus-visible:after:-outline-offset-2 focus-visible:after:outline-(--ring)" | "block max-w-full truncate rounded-sm text-left font-medium underline-offset-[3px] outline-none hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring)">;
|
|
864
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiRowLink, never>;
|
|
865
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiRowLink, "a[uiRowLink], button[uiRowLink]", never, { "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
866
|
+
}
|
|
867
|
+
/** A control in another cell of a stretched-link row: lifts it above the layer that covers the row. */
|
|
868
|
+
declare class UiRowAction {
|
|
869
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiRowAction, never>;
|
|
870
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiRowAction, "[uiRowAction]", never, {}, {}, never, never, true, never>;
|
|
871
|
+
}
|
|
872
|
+
/** Tones of a subtitle: subtle (default), `--stale` at 500, or the color of the cell. */
|
|
873
|
+
declare const SUB_TONES: readonly ["subtle", "stale", "inherit"];
|
|
874
|
+
type SubTone = (typeof SUB_TONES)[number];
|
|
875
|
+
/**
|
|
876
|
+
* A second line under a cell's main text. `narrow` shows it only under 1024px, where it carries
|
|
877
|
+
* the quantity, average cost and quote that were held back. Its amounts go through `ui-amount`
|
|
878
|
+
* so they mask.
|
|
879
|
+
*
|
|
880
|
+
* @example
|
|
881
|
+
* <span uiCellSub narrow>10 × 421.26 € · cost 388.10 €</span>
|
|
882
|
+
* <span uiCellSub tone="stale">Quote of 24/09</span>
|
|
883
|
+
*/
|
|
884
|
+
declare class UiCellSub {
|
|
885
|
+
readonly narrow: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
886
|
+
readonly tone: _angular_core.InputSignal<"subtle" | "stale" | "inherit">;
|
|
887
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
888
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiCellSub, never>;
|
|
889
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UiCellSub, "[uiCellSub]", never, { "narrow": { "alias": "narrow"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
672
890
|
}
|
|
673
891
|
|
|
674
892
|
/**
|
|
@@ -696,5 +914,5 @@ declare class UiTab {
|
|
|
696
914
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiTab, "a[ui-tab]", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; }, {}, never, ["[tabIcon]", "*"], true, never>;
|
|
697
915
|
}
|
|
698
916
|
|
|
699
|
-
export { AMOUNT_MASKINGS, AMOUNT_NUMERICS, ASYNC_STATES, AVATAR_SIZES, BADGE_VARIANTS, BUTTON_SIZES, BUTTON_VARIANTS, CARD_PADDINGS, CARD_VARIANTS, CELL_BREAKPOINTS, CONTROL_SIZES, DELTA_EMPHASES, DIALOG_WIDTHS, METER_TONES, STAT_SIZES, UI_AMOUNT_MASKED, UiAmount, UiAsync, UiAvatar, UiBadge, UiButton, UiCard, UiDelta, UiDialog, UiDonut, UiField, UiInput, UiLineChart, UiMenu, UiMenuItem, UiMenuTrigger, UiMeter, UiNavItem, UiRow, UiSegmented, UiSelect, UiSkeleton, UiStat, UiSwitch, UiTab, UiTabBar, UiTable, UiTd, UiTextarea, UiTh, UiTr, formatAmount };
|
|
700
|
-
export type { AmountFormatOptions, AmountMasking, AmountNumeric, AsyncState, AvatarSize, BadgeVariant, ButtonSize, ButtonVariant, CardPadding, CardVariant, CellBreakpoint, ChartPoint, ControlSize, DeltaEmphasis, DialogWidth, DonutSlice, MeterTone, SegmentedOption, StatSize, UiControlError };
|
|
917
|
+
export { ALERT_VARIANTS, AMOUNT_MASKINGS, AMOUNT_NUMERICS, ASYNC_STATES, AVATAR_SIZES, BADGE_SIZES, BADGE_VARIANTS, BUTTON_SIZES, BUTTON_VARIANTS, CARD_PADDINGS, CARD_VARIANTS, CELL_BREAKPOINTS, CONTROL_SIZES, CONTROL_SURFACES, DELTA_EMPHASES, DIALOG_LAYOUTS, DIALOG_WIDTHS, GROUP_SIZES, METER_TONES, ROW_PADDINGS, ROW_SIZES, STAT_SIZES, SUB_TONES, TABLE_ROWS, UI_AMOUNT_MASKED, UiAlert, UiAmount, UiAsync, UiAvatar, UiBadge, UiButton, UiCard, UiCellSub, UiChoiceChips, UiDelta, UiDialog, UiDonut, UiField, UiFieldLeading, UiGroup, UiGroupCell, UiInput, UiLineChart, UiMenu, UiMenuItem, UiMenuTrigger, UiMeter, UiNavItem, UiRow, UiRowAction, UiRowLink, UiSegmented, UiSelect, UiSkeleton, UiStat, UiSwitch, UiTab, UiTabBar, UiTable, UiTd, UiTextarea, UiTh, UiTr, formatAmount };
|
|
918
|
+
export type { AlertVariant, AmountFormatOptions, AmountMasking, AmountNumeric, AsyncState, AvatarSize, AxisTicks, BadgeSize, BadgeVariant, ButtonSize, ButtonVariant, CardPadding, CardVariant, CellBreakpoint, ChartPoint, ChoiceChipOption, ControlSize, ControlSurface, DeltaEmphasis, DialogLayout, DialogWidth, DonutSlice, GroupSize, MeterTone, RowPadding, RowSize, SegmentedOption, StatSize, SubTone, TableRow, TooltipSize, UiControlError };
|