@life-cockpit/angular-ui-kit 1.3.1 → 1.5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@life-cockpit/angular-ui-kit",
3
- "version": "1.3.1",
3
+ "version": "1.5.0",
4
4
  "description": "Life Cockpit Design System - Angular UI component library",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -208,6 +208,26 @@ interface NavigationItem {
208
208
  * Children are displayed beneath it with the label as a group title.
209
209
  */
210
210
  isSection?: boolean;
211
+ /**
212
+ * Optional action button displayed on the right side of the item.
213
+ * Emits `itemAction` when clicked (e.g. to open a modal or context menu).
214
+ */
215
+ action?: {
216
+ /** Icon name from lc-icons library (e.g., 'plus', 'ellipsis-horizontal') */
217
+ icon: string;
218
+ /** Accessible label for the action button */
219
+ ariaLabel?: string;
220
+ };
221
+ /**
222
+ * Optional badge displayed on the right side of the item (e.g. count).
223
+ * Rendered as a small pill badge.
224
+ */
225
+ badge?: {
226
+ /** Text or number to display inside the badge */
227
+ value: string | number;
228
+ /** Badge color variant */
229
+ variant?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
230
+ };
211
231
  }
212
232
 
213
233
  /**
@@ -310,7 +330,7 @@ declare class CardComponent {
310
330
  * Badge color variant.
311
331
  * @default 'default'
312
332
  */
313
- badgeVariant: _angular_core.InputSignal<"error" | "primary" | "warning" | "default" | "success">;
333
+ badgeVariant: _angular_core.InputSignal<"default" | "primary" | "success" | "warning" | "error">;
314
334
  /**
315
335
  * Visual variant of the card
316
336
  * - elevated: Box shadow (default)
@@ -902,7 +922,7 @@ declare class TypographyComponent {
902
922
  * Text color using semantic color tokens
903
923
  * @default 'primary'
904
924
  */
905
- color: _angular_core.InputSignal<"error" | "primary" | "secondary" | "warning" | "info" | "success" | "disabled">;
925
+ color: _angular_core.InputSignal<"primary" | "success" | "warning" | "error" | "info" | "secondary" | "disabled">;
906
926
  /**
907
927
  * Font weight
908
928
  * @default 'regular'
@@ -2858,6 +2878,16 @@ declare class HeaderComponent {
2858
2878
  * Whether to show theme toggle button in header
2859
2879
  */
2860
2880
  showThemeButton: boolean;
2881
+ /**
2882
+ * Contextual name displayed in the header (e.g. tenant, organization, project)
2883
+ * @example 'Acme Corp'
2884
+ */
2885
+ contextName: string;
2886
+ /**
2887
+ * Label displayed above the context name (e.g. 'Tenant', 'Organization', 'Project')
2888
+ * @example 'Tenant'
2889
+ */
2890
+ contextLabel: string;
2861
2891
  /**
2862
2892
  * Size of the profile dropdown menu
2863
2893
  * @default 'sm'
@@ -2884,6 +2914,10 @@ declare class HeaderComponent {
2884
2914
  * Emitted when Profile menu item is clicked
2885
2915
  */
2886
2916
  readonly profileClick: EventEmitter<void>;
2917
+ /**
2918
+ * Emitted when the context info area is clicked
2919
+ */
2920
+ readonly contextClick: EventEmitter<void>;
2887
2921
  protected readonly themeService: ThemeService;
2888
2922
  /**
2889
2923
  * Get menu items for profile dropdown
@@ -2926,7 +2960,7 @@ declare class HeaderComponent {
2926
2960
  */
2927
2961
  onMenuItemClick(item: MenuItem): void;
2928
2962
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderComponent, never>;
2929
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderComponent, "lc-header", never, { "theme": { "alias": "theme"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "userEmail": { "alias": "userEmail"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "showHamburger": { "alias": "showHamburger"; "required": false; }; "showThemeButton": { "alias": "showThemeButton"; "required": false; }; "menuSize": { "alias": "menuSize"; "required": false; }; "showProfileMenuItem": { "alias": "showProfileMenuItem"; "required": false; }; }, { "hamburgerClick": "hamburgerClick"; "themeToggleClick": "themeToggleClick"; "logoutClick": "logoutClick"; "profileClick": "profileClick"; }, never, never, true, never>;
2963
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderComponent, "lc-header", never, { "theme": { "alias": "theme"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "userEmail": { "alias": "userEmail"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "showHamburger": { "alias": "showHamburger"; "required": false; }; "showThemeButton": { "alias": "showThemeButton"; "required": false; }; "contextName": { "alias": "contextName"; "required": false; }; "contextLabel": { "alias": "contextLabel"; "required": false; }; "menuSize": { "alias": "menuSize"; "required": false; }; "showProfileMenuItem": { "alias": "showProfileMenuItem"; "required": false; }; }, { "hamburgerClick": "hamburgerClick"; "themeToggleClick": "themeToggleClick"; "logoutClick": "logoutClick"; "profileClick": "profileClick"; "contextClick": "contextClick"; }, never, never, true, never>;
2930
2964
  }
2931
2965
 
2932
2966
  type PaginationSize = 'sm' | 'md' | 'lg';
@@ -3086,6 +3120,10 @@ declare class SidenavComponent {
3086
3120
  * Event emitted when a navigation item is clicked
3087
3121
  */
3088
3122
  readonly itemClicked: EventEmitter<NavigationItem>;
3123
+ /**
3124
+ * Event emitted when an item's action button is clicked
3125
+ */
3126
+ readonly itemAction: EventEmitter<NavigationItem>;
3089
3127
  /**
3090
3128
  * Computed CSS classes for the sidenav
3091
3129
  */
@@ -3108,6 +3146,10 @@ declare class SidenavComponent {
3108
3146
  * Handle navigation item click
3109
3147
  */
3110
3148
  handleItemClick(item: NavigationItem): void;
3149
+ /**
3150
+ * Handle action button click on a navigation item
3151
+ */
3152
+ handleItemAction(event: Event, item: NavigationItem): void;
3111
3153
  /**
3112
3154
  * Check if an item is active
3113
3155
  */
@@ -3129,7 +3171,7 @@ declare class SidenavComponent {
3129
3171
  */
3130
3172
  handleKeydown(event: KeyboardEvent): void;
3131
3173
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidenavComponent, never>;
3132
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidenavComponent, "lc-sidenav", never, { "isOpenInput": { "alias": "isOpenInput"; "required": false; }; "modeInput": { "alias": "modeInput"; "required": false; }; "positionInput": { "alias": "positionInput"; "required": false; }; "widthInput": { "alias": "widthInput"; "required": false; }; "ariaLabelInput": { "alias": "ariaLabelInput"; "required": false; }; "hasOverlayInput": { "alias": "hasOverlayInput"; "required": false; }; "itemsInput": { "alias": "itemsInput"; "required": false; }; "activeRouteInput": { "alias": "activeRouteInput"; "required": false; }; "collapsedInput": { "alias": "collapsedInput"; "required": false; }; "themeInput": { "alias": "theme"; "required": false; }; }, { "closed": "closed"; "itemClicked": "itemClicked"; }, never, ["*"], true, never>;
3174
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidenavComponent, "lc-sidenav", never, { "isOpenInput": { "alias": "isOpenInput"; "required": false; }; "modeInput": { "alias": "modeInput"; "required": false; }; "positionInput": { "alias": "positionInput"; "required": false; }; "widthInput": { "alias": "widthInput"; "required": false; }; "ariaLabelInput": { "alias": "ariaLabelInput"; "required": false; }; "hasOverlayInput": { "alias": "hasOverlayInput"; "required": false; }; "itemsInput": { "alias": "itemsInput"; "required": false; }; "activeRouteInput": { "alias": "activeRouteInput"; "required": false; }; "collapsedInput": { "alias": "collapsedInput"; "required": false; }; "themeInput": { "alias": "theme"; "required": false; }; }, { "closed": "closed"; "itemClicked": "itemClicked"; "itemAction": "itemAction"; }, never, ["*"], true, never>;
3133
3175
  }
3134
3176
 
3135
3177
  type TabOrientation = 'horizontal' | 'vertical';
@@ -6258,7 +6300,7 @@ declare class ConfirmDialogComponent {
6258
6300
  /** Resolved icon color */
6259
6301
  protected iconColor: _angular_core.Signal<"var(--color-error-default, #ef4444)" | "var(--color-warning-default, #f59e0b)" | "var(--color-primary-600, #2563eb)">;
6260
6302
  /** Confirm button variant */
6261
- protected confirmButtonVariant: _angular_core.Signal<"primary" | "danger" | "warning">;
6303
+ protected confirmButtonVariant: _angular_core.Signal<"primary" | "warning" | "danger">;
6262
6304
  /** Whether confirm is allowed (text match check) */
6263
6305
  protected confirmAllowed: _angular_core.Signal<boolean>;
6264
6306
  constructor();