@lifecorner/angular-ui-kit 3.13.1 → 3.15.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/lifecorner-angular-ui-kit-app-shell.mjs +64 -11
- package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +2 -1
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +23 -5
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs +39 -6
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +42 -5
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs +21 -3
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +20 -3
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-sidenav-placeholder.mjs +9 -3
- package/fesm2022/lifecorner-angular-ui-kit-sidenav-placeholder.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +115 -6
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +62 -4
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -1
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles/theme-contrast.spec.ts +52 -0
- package/types/lifecorner-angular-ui-kit-app-shell.d.ts +100 -0
- package/types/lifecorner-angular-ui-kit-avatar.d.ts +24 -0
- package/types/lifecorner-angular-ui-kit-button.d.ts +31 -0
- package/types/lifecorner-angular-ui-kit-empty-state.d.ts +38 -0
- package/types/lifecorner-angular-ui-kit-header.d.ts +15 -2
- package/types/lifecorner-angular-ui-kit-page-header.d.ts +20 -0
- package/types/lifecorner-angular-ui-kit-sidenav-placeholder.d.ts +4 -2
- package/types/lifecorner-angular-ui-kit-sidenav.d.ts +100 -2
- package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +46 -0
|
@@ -16,6 +16,13 @@ export type AvatarLoading = 'eager' | 'lazy';
|
|
|
16
16
|
* the name or initials beside the colour — colour is never the only cue.
|
|
17
17
|
*/
|
|
18
18
|
export type AvatarColor = 'default' | 'member-1' | 'member-2' | 'member-3' | 'member-4' | 'member-5' | 'member-6';
|
|
19
|
+
/**
|
|
20
|
+
* What `lc-avatar` shows with no image and no name (3.15).
|
|
21
|
+
* - `initials`: "?"
|
|
22
|
+
* - `person`: a person symbol on a neutral disc (`--color-neutral-300`, glyph
|
|
23
|
+
* `--color-neutral-700`; `color` is ignored while it shows)
|
|
24
|
+
*/
|
|
25
|
+
export type AvatarFallback = 'initials' | 'person';
|
|
19
26
|
/** The six member colours in their order (`AvatarColor` without `default`). */
|
|
20
27
|
export declare const AVATAR_MEMBER_COLORS: readonly AvatarColor[];
|
|
21
28
|
/**
|
|
@@ -37,6 +44,8 @@ export declare function ɵavatarInitials(name: string | undefined): string;
|
|
|
37
44
|
* - `ring`: a gap in the page colour around the avatar, for stacks and for
|
|
38
45
|
* avatars on images or tints
|
|
39
46
|
* - Accessible with alt text support
|
|
47
|
+
* - `fallback="person"`: a person symbol on a neutral disc instead of "?"
|
|
48
|
+
* when there is no name (3.15)
|
|
40
49
|
*
|
|
41
50
|
* @example
|
|
42
51
|
* ```html
|
|
@@ -86,10 +95,20 @@ export declare class AvatarComponent {
|
|
|
86
95
|
* button labelled "Menu for Tom Ek".
|
|
87
96
|
*/
|
|
88
97
|
decorative: import("@angular/core").InputSignal<boolean>;
|
|
98
|
+
/**
|
|
99
|
+
* What shows with no image and no name: `'initials'` shows "?"; `'person'`
|
|
100
|
+
* shows a person symbol on a neutral disc (`color` is ignored while it
|
|
101
|
+
* shows). With a `name`, both show the initials. The accessible name stays
|
|
102
|
+
* `alt`, then `name`, then "Avatar".
|
|
103
|
+
* @default 'initials'
|
|
104
|
+
*/
|
|
105
|
+
fallback: import("@angular/core").InputSignal<AvatarFallback>;
|
|
89
106
|
/**
|
|
90
107
|
* Computed initials from name
|
|
91
108
|
*/
|
|
92
109
|
initials: import("@angular/core").Signal<string>;
|
|
110
|
+
/** The person symbol: `fallback="person"`, no image (or a broken one) and no name. */
|
|
111
|
+
protected readonly showPerson: import("@angular/core").Signal<boolean>;
|
|
93
112
|
/**
|
|
94
113
|
* Computed CSS classes for the avatar
|
|
95
114
|
*/
|
|
@@ -160,5 +179,10 @@ export declare class AvatarComponent {
|
|
|
160
179
|
"required": false;
|
|
161
180
|
"isSignal": true;
|
|
162
181
|
};
|
|
182
|
+
"fallback": {
|
|
183
|
+
"alias": "fallback";
|
|
184
|
+
"required": false;
|
|
185
|
+
"isSignal": true;
|
|
186
|
+
};
|
|
163
187
|
}, {}, never, never, true, never>;
|
|
164
188
|
}
|
|
@@ -3,6 +3,11 @@ import { ElementRef } from "@angular/core";
|
|
|
3
3
|
export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'danger' | 'warning' | 'info' | 'inverse';
|
|
4
4
|
export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
5
5
|
export type ButtonType = 'button' | 'submit' | 'reset';
|
|
6
|
+
/**
|
|
7
|
+
* Colour tone of `variant="outline"` (3.15). `primary`: text and border in the
|
|
8
|
+
* primary colour. Other variants ignore it.
|
|
9
|
+
*/
|
|
10
|
+
export type ButtonTone = 'neutral' | 'primary';
|
|
6
11
|
export declare class ButtonComponent {
|
|
7
12
|
/**
|
|
8
13
|
* Visual variant. `inverse` is a white pill with dark ink and a white focus
|
|
@@ -14,6 +19,14 @@ export declare class ButtonComponent {
|
|
|
14
19
|
* @default 'primary'
|
|
15
20
|
*/
|
|
16
21
|
readonly variant: import("@angular/core").InputSignal<ButtonVariant>;
|
|
22
|
+
/**
|
|
23
|
+
* Colour tone of `variant="outline"`: `'primary'` sets text and border to
|
|
24
|
+
* the primary colour (`--color-primary-700` / `-600`; hover
|
|
25
|
+
* `--color-surface-selected`, active `--color-primary-200`). Other variants
|
|
26
|
+
* ignore it.
|
|
27
|
+
* @default 'neutral'
|
|
28
|
+
*/
|
|
29
|
+
readonly tone: import("@angular/core").InputSignal<ButtonTone>;
|
|
17
30
|
readonly size: import("@angular/core").InputSignal<ButtonSize>;
|
|
18
31
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
19
32
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
@@ -71,6 +84,11 @@ export declare class ButtonComponent {
|
|
|
71
84
|
"required": false;
|
|
72
85
|
"isSignal": true;
|
|
73
86
|
};
|
|
87
|
+
"tone": {
|
|
88
|
+
"alias": "tone";
|
|
89
|
+
"required": false;
|
|
90
|
+
"isSignal": true;
|
|
91
|
+
};
|
|
74
92
|
"size": {
|
|
75
93
|
"alias": "size";
|
|
76
94
|
"required": false;
|
|
@@ -178,6 +196,14 @@ export declare class ButtonLinkComponent {
|
|
|
178
196
|
* @default 'primary'
|
|
179
197
|
*/
|
|
180
198
|
readonly variant: import("@angular/core").InputSignal<ButtonVariant>;
|
|
199
|
+
/**
|
|
200
|
+
* Colour tone of `variant="outline"`, as on `lc-button`: `'primary'` sets
|
|
201
|
+
* text and border to the primary colour (`--color-primary-700` / `-600`;
|
|
202
|
+
* hover `--color-surface-selected`, active `--color-primary-200`). Other
|
|
203
|
+
* variants ignore it.
|
|
204
|
+
* @default 'neutral'
|
|
205
|
+
*/
|
|
206
|
+
readonly tone: import("@angular/core").InputSignal<ButtonTone>;
|
|
181
207
|
/** Size, as on `lc-button`. `lg` (48.5 px high) meets the 44 px touch target. */
|
|
182
208
|
readonly size: import("@angular/core").InputSignal<ButtonSize>;
|
|
183
209
|
/** Stretch the link to the full width of its container. */
|
|
@@ -208,6 +234,11 @@ export declare class ButtonLinkComponent {
|
|
|
208
234
|
"required": false;
|
|
209
235
|
"isSignal": true;
|
|
210
236
|
};
|
|
237
|
+
"tone": {
|
|
238
|
+
"alias": "tone";
|
|
239
|
+
"required": false;
|
|
240
|
+
"isSignal": true;
|
|
241
|
+
};
|
|
211
242
|
"size": {
|
|
212
243
|
"alias": "size";
|
|
213
244
|
"required": false;
|
|
@@ -2,6 +2,20 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
export type EmptyStateSize = 'sm' | 'md' | 'lg';
|
|
3
3
|
/** Heading level of `lc-empty-state`'s heading (3.3, G-9). */
|
|
4
4
|
export type EmptyStateHeadingLevel = 2 | 3 | 4 | 5 | 6;
|
|
5
|
+
/**
|
|
6
|
+
* Look of `lc-empty-state`'s icon (3.15).
|
|
7
|
+
* - `neutral`: the bare 40 px icon in `--color-text-tertiary`
|
|
8
|
+
* - `primary`: a 24 px icon in `--color-primary-700` on a 48 px
|
|
9
|
+
* `--color-primary-100` circle
|
|
10
|
+
*/
|
|
11
|
+
export type EmptyStateIconTone = 'neutral' | 'primary';
|
|
12
|
+
/**
|
|
13
|
+
* Text scale of `lc-empty-state` (3.15), beside `size` (the padding).
|
|
14
|
+
* - `sm`: 14 px message
|
|
15
|
+
* - `md`: the state-page scale — 16/24 px message, 20 px heading, 16 px below
|
|
16
|
+
* the icon and 24 px before the projected action
|
|
17
|
+
*/
|
|
18
|
+
export type EmptyStateMessageSize = 'sm' | 'md';
|
|
5
19
|
/**
|
|
6
20
|
* Empty state component for "no data" placeholder displays.
|
|
7
21
|
*
|
|
@@ -49,6 +63,20 @@ export declare class EmptyStateComponent {
|
|
|
49
63
|
* Description text
|
|
50
64
|
*/
|
|
51
65
|
readonly message: import("@angular/core").InputSignal<string | undefined>;
|
|
66
|
+
/**
|
|
67
|
+
* `'neutral'`: the bare 40 px icon in `--color-text-tertiary`. `'primary'`:
|
|
68
|
+
* a 24 px icon in `--color-primary-700` on a 48 px `--color-primary-100`
|
|
69
|
+
* circle. Decorative in both tones.
|
|
70
|
+
* @default 'neutral'
|
|
71
|
+
*/
|
|
72
|
+
readonly iconTone: import("@angular/core").InputSignal<EmptyStateIconTone>;
|
|
73
|
+
/**
|
|
74
|
+
* `'sm'`: 14 px message. `'md'`, for a state page: 16/24 px message, 20 px
|
|
75
|
+
* heading, 16 px below the icon and 24 px before the projected action.
|
|
76
|
+
* Wrap several actions in one row element.
|
|
77
|
+
* @default 'sm'
|
|
78
|
+
*/
|
|
79
|
+
readonly messageSize: import("@angular/core").InputSignal<EmptyStateMessageSize>;
|
|
52
80
|
protected readonly hostClasses: import("@angular/core").Signal<string>;
|
|
53
81
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
|
|
54
82
|
static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateComponent, "lc-empty-state", never, {
|
|
@@ -77,5 +105,15 @@ export declare class EmptyStateComponent {
|
|
|
77
105
|
"required": false;
|
|
78
106
|
"isSignal": true;
|
|
79
107
|
};
|
|
108
|
+
"iconTone": {
|
|
109
|
+
"alias": "iconTone";
|
|
110
|
+
"required": false;
|
|
111
|
+
"isSignal": true;
|
|
112
|
+
};
|
|
113
|
+
"messageSize": {
|
|
114
|
+
"alias": "messageSize";
|
|
115
|
+
"required": false;
|
|
116
|
+
"isSignal": true;
|
|
117
|
+
};
|
|
80
118
|
}, {}, never, ["*"], true, never>;
|
|
81
119
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AvatarColor } from "@lifecorner/angular-ui-kit/avatar";
|
|
1
|
+
import { AvatarColor, AvatarFallback } from "@lifecorner/angular-ui-kit/avatar";
|
|
2
2
|
import { MenuItem } from "@lifecorner/angular-ui-kit/menu";
|
|
3
3
|
import { ThemeService } from "@lifecorner/angular-ui-kit/theme";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -59,7 +59,8 @@ export type HeaderUserMenuTrigger = 'icon' | 'avatar';
|
|
|
59
59
|
* cannot stay over scrolling text).
|
|
60
60
|
* - `userMenuTrigger="avatar"`: the account button is the person's initials
|
|
61
61
|
* avatar (`userAvatarColor` for the member colour, `userAvatarSrc` for a
|
|
62
|
-
* photo
|
|
62
|
+
* photo, `userAvatarFallback="person"` for a person symbol while there is
|
|
63
|
+
* no name) in a 48 px round button; the icon trigger is 44 px high in every
|
|
63
64
|
* density.
|
|
64
65
|
* - The subtitle (e.g. a household name) stays on one line and ends with "…";
|
|
65
66
|
* the full text is its `title` and stays in the accessible text. It is shown
|
|
@@ -174,6 +175,13 @@ export declare class HeaderComponent {
|
|
|
174
175
|
readonly userAvatarSrc: import("@angular/core").InputSignal<string>;
|
|
175
176
|
/** Colour of the account avatar's initials: `default` or a member colour `member-1` … `member-6`. */
|
|
176
177
|
readonly userAvatarColor: import("@angular/core").InputSignal<AvatarColor>;
|
|
178
|
+
/**
|
|
179
|
+
* Passed to the trigger avatar and the menu avatar as `fallback` (3.15):
|
|
180
|
+
* `person` shows a person symbol on a neutral disc instead of "?" while
|
|
181
|
+
* `userName` is empty.
|
|
182
|
+
* @default 'initials'
|
|
183
|
+
*/
|
|
184
|
+
readonly userAvatarFallback: import("@angular/core").InputSignal<AvatarFallback>;
|
|
177
185
|
readonly showHamburger: import("@angular/core").InputSignal<boolean>;
|
|
178
186
|
/**
|
|
179
187
|
* Open state of the sidenav the hamburger controls. When bound, the toggle
|
|
@@ -411,6 +419,11 @@ export declare class HeaderComponent {
|
|
|
411
419
|
"required": false;
|
|
412
420
|
"isSignal": true;
|
|
413
421
|
};
|
|
422
|
+
"userAvatarFallback": {
|
|
423
|
+
"alias": "userAvatarFallback";
|
|
424
|
+
"required": false;
|
|
425
|
+
"isSignal": true;
|
|
426
|
+
};
|
|
414
427
|
"showHamburger": {
|
|
415
428
|
"alias": "showHamburger";
|
|
416
429
|
"required": false;
|
|
@@ -15,6 +15,13 @@ import * as i0 from "@angular/core";
|
|
|
15
15
|
* 1024 px (`--font-size-auth-title`)
|
|
16
16
|
*/
|
|
17
17
|
export type PageHeaderSize = 'compact' | 'secondary' | 'default' | 'comfortable' | 'title' | 'display' | 'auth';
|
|
18
|
+
/**
|
|
19
|
+
* Space above the page header's content (3.15).
|
|
20
|
+
* - `default` — the size's block padding (24 px; `comfortable` 40, `compact`
|
|
21
|
+
* and `secondary` 12)
|
|
22
|
+
* - `none` 0 · `sm` 8 px · `md` 16 px
|
|
23
|
+
*/
|
|
24
|
+
export type PageHeaderPaddingTop = 'default' | 'none' | 'sm' | 'md';
|
|
18
25
|
/**
|
|
19
26
|
* Page header — top-of-page title block with optional subtitle,
|
|
20
27
|
* breadcrumbs, badge, description and an actions area.
|
|
@@ -116,6 +123,14 @@ export declare class PageHeaderComponent {
|
|
|
116
123
|
* @default false
|
|
117
124
|
*/
|
|
118
125
|
noPaddingX: import("@angular/core").InputSignal<boolean>;
|
|
126
|
+
/**
|
|
127
|
+
* Space above the header content. `'default'`: the size's block padding
|
|
128
|
+
* (24, comfortable 40, compact/secondary 12). `'none'` 0, `'sm'` 8 px,
|
|
129
|
+
* `'md'` 16 px. The bottom padding is unchanged. Use `'none'` with
|
|
130
|
+
* `lc-app-page` `paddingTop="md"` to put the `h1` 16 px below `lc-header`.
|
|
131
|
+
* @default 'default'
|
|
132
|
+
*/
|
|
133
|
+
paddingTop: import("@angular/core").InputSignal<PageHeaderPaddingTop>;
|
|
119
134
|
/**
|
|
120
135
|
* Classes of the heading: the global type-scale class (`lc-title`,
|
|
121
136
|
* `lc-display`, `lc-auth-title`) joins the component class for the 3.3 sizes.
|
|
@@ -179,5 +194,10 @@ export declare class PageHeaderComponent {
|
|
|
179
194
|
"required": false;
|
|
180
195
|
"isSignal": true;
|
|
181
196
|
};
|
|
197
|
+
"paddingTop": {
|
|
198
|
+
"alias": "paddingTop";
|
|
199
|
+
"required": false;
|
|
200
|
+
"isSignal": true;
|
|
201
|
+
};
|
|
182
202
|
}, {}, never, ["[slot='breadcrumbs']", "[slot='title-suffix']", "[slot='actions']", "[slot='meta']", "*"], true, never>;
|
|
183
203
|
}
|
|
@@ -34,8 +34,10 @@ import * as i0 from "@angular/core";
|
|
|
34
34
|
* it when it is swapped. The navigation landmark, the current item
|
|
35
35
|
* (`aria-current`) and the tab order arrive with `lc-sidenav`. Static, no
|
|
36
36
|
* shimmer. The skeleton shapes are filled with
|
|
37
|
-
* `--lc-sidenav-placeholder-fill`; the `--lc-sidenav-*` hooks apply as
|
|
38
|
-
* `lc-sidenav
|
|
37
|
+
* `--lc-sidenav-placeholder-fill`; the `--lc-sidenav-*` colour hooks apply as
|
|
38
|
+
* on `lc-sidenav`: set them on the element or any ancestor (3.15), e.g. one
|
|
39
|
+
* rule on an ancestor of both. A value on the element wins over an
|
|
40
|
+
* ancestor's, and both win over `theme`.
|
|
39
41
|
*/
|
|
40
42
|
export declare class SidenavPlaceholderComponent {
|
|
41
43
|
private readonly router;
|
|
@@ -18,6 +18,10 @@ export type SidenavVariant = 'default' | 'transparent';
|
|
|
18
18
|
* - Responsive mobile mode — docked automatically switches to drawer below a configurable breakpoint
|
|
19
19
|
* - Collapsed icon-rail mode (narrow 56px sidebar with icons only and hover tooltips)
|
|
20
20
|
* - Integrated logo area with collapse-toggle (sidebar-first layouts)
|
|
21
|
+
* - Text brand (`brandName`, `brandIcon`): an icon tile and the product name,
|
|
22
|
+
* one link to home (`brandHref`, else `routerLink="/"`), as high as the
|
|
23
|
+
* `lc-header` next to it; the rail shows only the tile. It never toggles:
|
|
24
|
+
* `showCollapseToggle` adds a collapse button at the bottom of the rail
|
|
21
25
|
* - Hierarchical navigation with collapsible groups (up to 3 levels)
|
|
22
26
|
* - Section headlines for item grouping with optional action buttons
|
|
23
27
|
* - Action buttons on any item (hover-reveal)
|
|
@@ -29,7 +33,18 @@ export type SidenavVariant = 'default' | 'transparent';
|
|
|
29
33
|
* - Keyboard navigation support (Escape closes drawer)
|
|
30
34
|
* - Configurable width and position (left/right)
|
|
31
35
|
* - Optional backdrop overlay
|
|
32
|
-
* - Theme variants: auto, light, dark (with teal accent for dark mode)
|
|
36
|
+
* - Theme variants: auto, light, dark (with teal accent for dark mode). The
|
|
37
|
+
* theming hooks (`--lc-sidenav-bg`, `-fg`, `-fg-active`, `-border`,
|
|
38
|
+
* `-hover-bg`, `-section-fg`, `-active-bg`, `-active-fg`, `-active-icon`,
|
|
39
|
+
* `-badge-ring`) can be set on `lc-sidenav` or any ancestor (3.15); a value
|
|
40
|
+
* on the element wins over an ancestor's, and both win over `theme` (3.14).
|
|
41
|
+
* Set the same ones for `lc-sidenav-placeholder`, e.g. on a shared ancestor;
|
|
42
|
+
* `--lc-sidenav-active-indicator`
|
|
43
|
+
* (the current item's 2 px bar, default `--color-primary-500`; on a
|
|
44
|
+
* `theme="light"` rail #208497 on any page, like its focus rings),
|
|
45
|
+
* `--lc-sidenav-brand-tile-bg` (default `--color-primary-fill`) and
|
|
46
|
+
* `--lc-sidenav-brand-tile-fg` (default `--color-on-primary`) can be set on
|
|
47
|
+
* any ancestor
|
|
33
48
|
* - `variant="transparent"`: no rail background or border, items as 48 px
|
|
34
49
|
* pills with 16 px labels, the current one on `--color-surface-selected`
|
|
35
50
|
* - Items are at least 44 px high in every density; the current item's ink is
|
|
@@ -77,8 +92,51 @@ export declare class SidenavComponent implements OnDestroy {
|
|
|
77
92
|
readonly logoDarkEmblemSrc: import("@angular/core").InputSignal<string>;
|
|
78
93
|
/** Alt text for the brand logo. */
|
|
79
94
|
readonly logoAlt: import("@angular/core").InputSignal<string>;
|
|
80
|
-
/** Size of the brand logo (forwarded to inner `<lc-logo>`). Defaults to `md` for a prominent brand block aligned with `<lc-header size="md">` (both 64px). */
|
|
95
|
+
/** Size of the brand logo (forwarded to inner `<lc-logo>`). Defaults to `md` for a prominent brand block aligned with `<lc-header size="md">` (both 64px). Also sets the height of the text brand (`brandName`). */
|
|
81
96
|
readonly logoSize: import("@angular/core").InputSignal<"xs" | "sm" | "md" | "lg" | "xl">;
|
|
97
|
+
/**
|
|
98
|
+
* Product name shown as a text brand at the top: an icon tile and the name,
|
|
99
|
+
* one link to home. Replaces the image logo (`showLogo`). The block is as
|
|
100
|
+
* high as the image logo (`logoSize`: 64 px for `md`, matching
|
|
101
|
+
* `lc-header size="md"`); the name wraps to two lines at most, and the full
|
|
102
|
+
* name stays the link's accessible name. Collapsed, only the tile shows.
|
|
103
|
+
* The brand never toggles the rail (see `showCollapseToggle`). Under
|
|
104
|
+
* `@defer`, give the `lc-sidenav-placeholder` `[showLogo]="true"` and the
|
|
105
|
+
* same `logoSize` to reserve the block. Empty: no text brand.
|
|
106
|
+
* @default ''
|
|
107
|
+
*/
|
|
108
|
+
readonly brandName: import("@angular/core").InputSignal<string>;
|
|
109
|
+
/**
|
|
110
|
+
* `lc-icon` name in the brand tile (decorative). Empty: the tile shows the
|
|
111
|
+
* name's first letter. Renders nothing without `brandName`.
|
|
112
|
+
* @default ''
|
|
113
|
+
*/
|
|
114
|
+
readonly brandIcon: import("@angular/core").InputSignal<string>;
|
|
115
|
+
/**
|
|
116
|
+
* Plain URL of the brand link (a native `<a href>`, works without the
|
|
117
|
+
* router). Empty: `routerLink="/"`, as `lc-header`'s `homeHref`.
|
|
118
|
+
* @default ''
|
|
119
|
+
*/
|
|
120
|
+
readonly brandHref: import("@angular/core").InputSignal<string>;
|
|
121
|
+
/**
|
|
122
|
+
* Accessible name of the brand link. Empty: the brand name. Start it with
|
|
123
|
+
* the visible name, e.g. `'Finance Intelligence – home'`.
|
|
124
|
+
* @default ''
|
|
125
|
+
*/
|
|
126
|
+
readonly brandAriaLabel: import("@angular/core").InputSignal<string>;
|
|
127
|
+
/**
|
|
128
|
+
* Docked mode: a button at the bottom of the rail collapses and expands it
|
|
129
|
+
* (`collapsed`). Independent of the brand. With `showLogo` the image logo
|
|
130
|
+
* toggles already, so use one of the two.
|
|
131
|
+
* @default false
|
|
132
|
+
*/
|
|
133
|
+
readonly showCollapseToggle: import("@angular/core").InputSignal<boolean>;
|
|
134
|
+
/**
|
|
135
|
+
* Accessible name of the collapse button (`showCollapseToggle`) while the
|
|
136
|
+
* rail is collapsed. Expanded, it uses `collapseAriaLabel`.
|
|
137
|
+
* @default 'Expand navigation'
|
|
138
|
+
*/
|
|
139
|
+
readonly expandAriaLabel: import("@angular/core").InputSignal<string>;
|
|
82
140
|
/** Whether the sidenav is open */
|
|
83
141
|
readonly isOpen: import("@angular/core").InputSignal<boolean>;
|
|
84
142
|
/** Display mode: 'drawer' (overlay) or 'docked' (persistent sidebar) */
|
|
@@ -203,10 +261,20 @@ export declare class SidenavComponent implements OnDestroy {
|
|
|
203
261
|
sidenavStyles: import("@angular/core").Signal<{
|
|
204
262
|
width: string;
|
|
205
263
|
}>;
|
|
264
|
+
/** The brand tile's letter when there is no `brandIcon`: the name's first character, upper-cased. */
|
|
265
|
+
protected readonly brandInitial: import("@angular/core").Signal<string>;
|
|
266
|
+
/** Whether the rail shows only icons (as `lc-sidenav--collapsed`). */
|
|
267
|
+
protected readonly isRail: import("@angular/core").Signal<boolean>;
|
|
268
|
+
/** The collapse button's accessible name: what a press does. */
|
|
269
|
+
protected readonly collapseToggleLabel: import("@angular/core").Signal<string>;
|
|
270
|
+
/** The collapse button's chevron points where the rail moves: ⟨ to collapse a left rail, ⟩ to expand it (mirrored on the right). */
|
|
271
|
+
protected readonly collapseToggleIcon: import("@angular/core").Signal<"chevron-left" | "chevron-right">;
|
|
206
272
|
/**
|
|
207
273
|
* Toggle collapsed state
|
|
208
274
|
*/
|
|
209
275
|
toggleCollapsed(): void;
|
|
276
|
+
/** The brand link closes the drawer on a phone, as the items do. */
|
|
277
|
+
handleBrandClick(): void;
|
|
210
278
|
/**
|
|
211
279
|
* Handle close action
|
|
212
280
|
*/
|
|
@@ -285,6 +353,36 @@ export declare class SidenavComponent implements OnDestroy {
|
|
|
285
353
|
"required": false;
|
|
286
354
|
"isSignal": true;
|
|
287
355
|
};
|
|
356
|
+
"brandName": {
|
|
357
|
+
"alias": "brandName";
|
|
358
|
+
"required": false;
|
|
359
|
+
"isSignal": true;
|
|
360
|
+
};
|
|
361
|
+
"brandIcon": {
|
|
362
|
+
"alias": "brandIcon";
|
|
363
|
+
"required": false;
|
|
364
|
+
"isSignal": true;
|
|
365
|
+
};
|
|
366
|
+
"brandHref": {
|
|
367
|
+
"alias": "brandHref";
|
|
368
|
+
"required": false;
|
|
369
|
+
"isSignal": true;
|
|
370
|
+
};
|
|
371
|
+
"brandAriaLabel": {
|
|
372
|
+
"alias": "brandAriaLabel";
|
|
373
|
+
"required": false;
|
|
374
|
+
"isSignal": true;
|
|
375
|
+
};
|
|
376
|
+
"showCollapseToggle": {
|
|
377
|
+
"alias": "showCollapseToggle";
|
|
378
|
+
"required": false;
|
|
379
|
+
"isSignal": true;
|
|
380
|
+
};
|
|
381
|
+
"expandAriaLabel": {
|
|
382
|
+
"alias": "expandAriaLabel";
|
|
383
|
+
"required": false;
|
|
384
|
+
"isSignal": true;
|
|
385
|
+
};
|
|
288
386
|
"isOpen": {
|
|
289
387
|
"alias": "isOpen";
|
|
290
388
|
"required": false;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { SparklineColor } from "@lifecorner/angular-ui-kit/sparkline";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export type StatTrendDirection = 'up' | 'down' | 'neutral';
|
|
4
|
+
/** Whether a change is good or bad for the reader, independent of its direction. */
|
|
5
|
+
export type StatTrendSentiment = 'positive' | 'negative' | 'neutral';
|
|
6
|
+
/**
|
|
7
|
+
* Words of the screen-reader text that `lc-stat-trend` adds to the change when
|
|
8
|
+
* `sentiment` is set (", up, unfavourable"). Override single keys via `labels`.
|
|
9
|
+
*/
|
|
10
|
+
export interface StatTrendLabels {
|
|
11
|
+
/** Direction up. EN "up", DE "gestiegen". */
|
|
12
|
+
up: string;
|
|
13
|
+
/** Direction down. EN "down", DE "gesunken". */
|
|
14
|
+
down: string;
|
|
15
|
+
/** Direction neutral. EN "unchanged", DE "unverändert". */
|
|
16
|
+
unchanged: string;
|
|
17
|
+
/** Sentiment positive. EN "favourable", DE "günstig". */
|
|
18
|
+
positive: string;
|
|
19
|
+
/** Sentiment negative. EN "unfavourable", DE "ungünstig". */
|
|
20
|
+
negative: string;
|
|
21
|
+
/** Sentiment neutral. EN "neutral", DE "neutral". */
|
|
22
|
+
neutral: string;
|
|
23
|
+
}
|
|
4
24
|
export declare class StatTrendComponent {
|
|
5
25
|
/** Main KPI label. */
|
|
6
26
|
label: import("@angular/core").InputSignal<string>;
|
|
@@ -10,6 +30,20 @@ export declare class StatTrendComponent {
|
|
|
10
30
|
change: import("@angular/core").InputSignal<string>;
|
|
11
31
|
/** Trend direction for color coding. Auto-detected from change if not set. */
|
|
12
32
|
direction: import("@angular/core").InputSignal<StatTrendDirection | undefined>;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the change is good or bad, independent of its direction (a rise in
|
|
35
|
+
* costs is negative). Colours the change and the default sparkline; the arrow
|
|
36
|
+
* keeps the direction. Unset: derived from the direction.
|
|
37
|
+
* @default undefined
|
|
38
|
+
*/
|
|
39
|
+
sentiment: import("@angular/core").InputSignal<StatTrendSentiment | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* Words of the screen-reader text added to the change when `sentiment` is set.
|
|
42
|
+
* Missing keys fall back to the English defaults (up, down, unchanged,
|
|
43
|
+
* favourable, unfavourable, neutral).
|
|
44
|
+
* @default {}
|
|
45
|
+
*/
|
|
46
|
+
labels: import("@angular/core").InputSignal<Partial<StatTrendLabels>>;
|
|
13
47
|
/** Sparkline data points. If empty, no sparkline is shown. */
|
|
14
48
|
sparklineData: import("@angular/core").InputSignal<number[]>;
|
|
15
49
|
/** Color of the sparkline. Auto-matched to trend direction if not set. */
|
|
@@ -20,6 +54,8 @@ export declare class StatTrendComponent {
|
|
|
20
54
|
protected readonly trendColorClass: import("@angular/core").Signal<string>;
|
|
21
55
|
protected readonly resolvedSparklineColor: import("@angular/core").Signal<SparklineColor>;
|
|
22
56
|
protected readonly trendIcon: import("@angular/core").Signal<string>;
|
|
57
|
+
/** ", up, unfavourable": rendered only when `sentiment` is set. */
|
|
58
|
+
protected readonly srText: import("@angular/core").Signal<string>;
|
|
23
59
|
protected readonly hasSparkline: import("@angular/core").Signal<boolean>;
|
|
24
60
|
static ɵfac: i0.ɵɵFactoryDeclaration<StatTrendComponent, never>;
|
|
25
61
|
static ɵcmp: i0.ɵɵComponentDeclaration<StatTrendComponent, "lc-stat-trend", never, {
|
|
@@ -43,6 +79,16 @@ export declare class StatTrendComponent {
|
|
|
43
79
|
"required": false;
|
|
44
80
|
"isSignal": true;
|
|
45
81
|
};
|
|
82
|
+
"sentiment": {
|
|
83
|
+
"alias": "sentiment";
|
|
84
|
+
"required": false;
|
|
85
|
+
"isSignal": true;
|
|
86
|
+
};
|
|
87
|
+
"labels": {
|
|
88
|
+
"alias": "labels";
|
|
89
|
+
"required": false;
|
|
90
|
+
"isSignal": true;
|
|
91
|
+
};
|
|
46
92
|
"sparklineData": {
|
|
47
93
|
"alias": "sparklineData";
|
|
48
94
|
"required": false;
|