shirkasoft-ui-components 1.1.2 → 1.1.3

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.
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit, TemplateRef } from '@angular/core';
2
+ import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit, TemplateRef, OnInit } from '@angular/core';
3
3
  import { ControlValueAccessor, FormGroup, FormControl } from '@angular/forms';
4
+ import { Observable } from 'rxjs';
4
5
 
5
6
  declare class TextFieldComponent implements ControlValueAccessor {
6
7
  private cdr;
@@ -456,6 +457,30 @@ declare class FileUploadComponent {
456
457
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "shk-file-upload", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "fileUploadText": { "alias": "fileUploadText"; "required": false; "isSignal": true; }; "fileRecommendation": { "alias": "fileRecommendation"; "required": false; "isSignal": true; }; "changeFilesText": { "alias": "changeFilesText"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "fileSelected": "fileSelected"; "fileRemoved": "fileRemoved"; "fileError": "fileError"; "fileWarning": "fileWarning"; }, never, never, true, never>;
457
458
  }
458
459
 
460
+ /** Resolves a lucide icon name to its component. Falls back to a help circle. */
461
+ declare function getIcon$6(name?: string): any;
462
+
463
+ type TagSeverity = 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'contrast';
464
+ /** Small label used to highlight a value, status or category. */
465
+ declare class TagComponent {
466
+ /** Text shown inside the tag. */
467
+ value: _angular_core.InputSignal<string | number>;
468
+ /** Color variant. Defaults to 'secondary'. */
469
+ severity: _angular_core.InputSignal<TagSeverity>;
470
+ /** Renders the tag with fully rounded corners (pill). */
471
+ rounded: _angular_core.InputSignal<boolean>;
472
+ /** Optional leading lucide icon name. */
473
+ icon: _angular_core.InputSignal<string>;
474
+ /** Inline styles applied to the tag. */
475
+ style: _angular_core.InputSignal<Record<string, string | number>>;
476
+ /** Extra CSS classes. */
477
+ styleClass: _angular_core.InputSignal<string>;
478
+ protected getIcon: typeof getIcon$6;
479
+ protected tagClass: _angular_core.Signal<string>;
480
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
481
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "shk-tag", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
482
+ }
483
+
459
484
  declare function getIcon$5(name: string): any;
460
485
  interface Column {
461
486
  field: string;
@@ -473,10 +498,10 @@ interface Column {
473
498
  template?: 'text' | 'tag';
474
499
  format?: (row: any) => string;
475
500
  tagValue?: (row: any) => string;
476
- tagSeverity?: (row: any) => 'success' | 'danger' | 'warn' | 'info' | undefined;
477
- tagStyle?: (row: any) => {
478
- [key: string]: string;
479
- } | undefined;
501
+ tagSeverity?: (row: any) => TagSeverity | undefined;
502
+ tagRounded?: boolean | ((row: any) => boolean);
503
+ tagIcon?: string | ((row: any) => string);
504
+ tagStyle?: (row: any) => Record<string, string | number> | undefined;
480
505
  }
481
506
  interface TableAction {
482
507
  label: string;
@@ -630,7 +655,11 @@ declare class TableComponent {
630
655
  isRowActionDisabled(action: RowAction, rowData: any): boolean;
631
656
  isRowActionVisible(action: RowAction, rowData: any): boolean;
632
657
  truncate(value: any, limit?: number): string;
633
- getTagClass(severity?: string): string;
658
+ getTagValue(col: Column, rowData: any): string;
659
+ getTagSeverity(col: Column, rowData: any): TagSeverity;
660
+ getTagRounded(col: Column, rowData: any): boolean;
661
+ getTagIcon(col: Column, rowData: any): string;
662
+ getTagStyle(col: Column, rowData: any): Record<string, string | number>;
634
663
  /**
635
664
  * FIX #7 (medio): trackBy real por identidad de fila en vez de `$index`.
636
665
  * Si tu dato no tiene `id`/`_id`, cae de vuelta al índice (comportamiento
@@ -645,15 +674,28 @@ declare class TableComponent {
645
674
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "shk-table", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showActionRow": { "alias": "showActionRow"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "defaultSortField": { "alias": "defaultSortField"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "activeFilter": { "alias": "activeFilter"; "required": false; "isSignal": true; }; }, { "refresh": "refresh"; "pageChange": "pageChange"; "filterChange": "filterChange"; "searchChange": "searchChange"; "filterClick": "filterClick"; }, never, never, true, never>;
646
675
  }
647
676
 
648
- declare class TooltipComponent {
677
+ /**
678
+ * Tooltip que se renderiza en `document.body` con `position: fixed`, de modo
679
+ * que siempre flota por encima de cualquier contenedor (tablas con
680
+ * `overflow: hidden`, modales, scroll wrappers, etc.) y nunca queda
681
+ * recortado ni pasa por debajo de su elemento ancla.
682
+ */
683
+ declare class TooltipComponent implements OnDestroy {
649
684
  readonly text: _angular_core.InputSignal<string>;
650
685
  readonly position: _angular_core.InputSignal<"top" | "bottom" | "right">;
651
686
  readonly mode: _angular_core.InputSignal<"fixed" | "hover">;
652
687
  readonly offset: _angular_core.InputSignal<number>;
653
- private elementRef;
654
- tooltipX: _angular_core.WritableSignal<number>;
655
- tooltipY: _angular_core.WritableSignal<number>;
688
+ private readonly host;
689
+ private readonly document;
690
+ private tooltipEl;
691
+ private cleanup;
656
692
  onMouseEnter(): void;
693
+ onMouseLeave(): void;
694
+ private show;
695
+ private computePosition;
696
+ private hide;
697
+ private removeTooltip;
698
+ ngOnDestroy(): void;
657
699
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
658
700
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "shk-tooltip", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
659
701
  }
@@ -1126,5 +1168,298 @@ declare class WizardComponent {
1126
1168
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "shk-wizard", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "currentStep": { "alias": "currentStep"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "backTooltip": { "alias": "backTooltip"; "required": false; "isSignal": true; }; "headerIcon": { "alias": "headerIcon"; "required": false; "isSignal": true; }; "showStepper": { "alias": "showStepper"; "required": false; "isSignal": true; }; "stepperClickable": { "alias": "stepperClickable"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showStepCounter": { "alias": "showStepCounter"; "required": false; "isSignal": true; }; "stepCounterPrefix": { "alias": "stepCounterPrefix"; "required": false; "isSignal": true; }; "showCancel": { "alias": "showCancel"; "required": false; "isSignal": true; }; "advanceOnNext": { "alias": "advanceOnNext"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "prevIcon": { "alias": "prevIcon"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "cancelIcon": { "alias": "cancelIcon"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "nextIcon": { "alias": "nextIcon"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "finishIcon": { "alias": "finishIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLoading": { "alias": "primaryLoading"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; }, { "currentStep": "currentStepChange"; "back": "back"; "cancel": "cancel"; "prev": "prev"; "next": "next"; "finish": "finish"; "stepChange": "stepChange"; }, ["stepContents"], ["[shkWizardHeaderActions]"], true, never>;
1127
1169
  }
1128
1170
 
1129
- export { COLOR_PALETTE, ChartComponent, ConfirmDialogComponent, ConfirmDialogService, DEFAULT_MARKER_GRADIENTS, DEFAULT_SUPPLIER_ICON_COLORS, DEFAULT_SUPPLIER_TYPE_ICONS, DatePickerComponent, FieldsetComponent, FileUploadComponent, ModalComponent, ModalService, NotificationComponent, NotificationService, PriceInputComponent, RailSidebarComponent, SelectComponent, ShkWizardStepContent, SidebarComponent, TableComponent, TextFieldComponent, TimelineComponent, ToggleComponent, TooltipComponent, WizardComponent, readThemeColors };
1130
- export type { Column, ConfirmConfig, DatePickerView, FieldsetHeaderAction, FileUploadError, FilterChangeEvent, ModalConfig, Notification, NotificationPosition, PageChangeEvent, RailSidebarItem, RailSidebarSection, RailSidebarSectionEvent, RowAction, SelectOption, SidebarGroup, SidebarItem, TableAction, TimelineAction, TimelineAlignment, TimelineItem, TimelineItemAction, TimelineMarkerSize, TimelineMeta, TimelineSubItem, TimelineSubItemAction, WizardStep };
1171
+ type SkeletonShape = 'rectangle' | 'circle';
1172
+ type SkeletonAnimation = 'wave' | 'pulse' | 'none';
1173
+ /** Placeholder block shown while content is loading. */
1174
+ declare class SkeletonComponent {
1175
+ /** Shape of the skeleton: rectangle (default) or circle. */
1176
+ shape: _angular_core.InputSignal<SkeletonShape>;
1177
+ /** When shape is circle, sets both width and height. */
1178
+ size: _angular_core.InputSignal<string>;
1179
+ /** Width of the rectangle skeleton. */
1180
+ width: _angular_core.InputSignal<string>;
1181
+ /** Height of the rectangle skeleton. */
1182
+ height: _angular_core.InputSignal<string>;
1183
+ /** Custom border radius (rectangle only). */
1184
+ borderRadius: _angular_core.InputSignal<string>;
1185
+ /** Animation effect: 'wave' (default), 'pulse' or 'none'. */
1186
+ animation: _angular_core.InputSignal<SkeletonAnimation>;
1187
+ /** Inline styles applied to the skeleton block. */
1188
+ style: _angular_core.InputSignal<Record<string, string | number>>;
1189
+ /** Extra CSS classes. */
1190
+ styleClass: _angular_core.InputSignal<string>;
1191
+ protected rootStyle: _angular_core.Signal<{
1192
+ [x: string]: string | number;
1193
+ }>;
1194
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonComponent, never>;
1195
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "shk-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1196
+ }
1197
+
1198
+ type ButtonSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'help' | 'contrast';
1199
+ type ButtonSize = 'small' | 'large';
1200
+ type ButtonIconPosition = 'left' | 'right' | 'top' | 'bottom';
1201
+ /** Generic button with icon, severity variants, loading state and sizes. */
1202
+ declare class ButtonComponent {
1203
+ /** Text shown inside the button. */
1204
+ label: _angular_core.InputSignal<string>;
1205
+ /** Optional leading lucide icon name. */
1206
+ icon: _angular_core.InputSignal<string>;
1207
+ /** Position of the icon relative to the label. */
1208
+ iconPos: _angular_core.InputSignal<ButtonIconPosition>;
1209
+ /** Color variant. Defaults to 'primary'. */
1210
+ severity: _angular_core.InputSignal<ButtonSeverity>;
1211
+ /** Transparent background with a colored border. */
1212
+ outlined: _angular_core.InputSignal<boolean>;
1213
+ /** Borderless button with a colored label. */
1214
+ text: _angular_core.InputSignal<boolean>;
1215
+ /** Adds a soft shadow. */
1216
+ raised: _angular_core.InputSignal<boolean>;
1217
+ /** Fully rounded corners (pill). */
1218
+ rounded: _angular_core.InputSignal<boolean>;
1219
+ /** Size variant. */
1220
+ size: _angular_core.InputSignal<ButtonSize | undefined>;
1221
+ /** Disables the button. */
1222
+ disabled: _angular_core.InputSignal<boolean>;
1223
+ /** Shows a spinner and disables the button. */
1224
+ loading: _angular_core.InputSignal<boolean>;
1225
+ /** Icon shown while loading. Defaults to 'refresh'. */
1226
+ loadingIcon: _angular_core.InputSignal<string>;
1227
+ /** Optional text shown instead of the label while loading. */
1228
+ loadingText: _angular_core.InputSignal<string>;
1229
+ /** Native button type. */
1230
+ type: _angular_core.InputSignal<"submit" | "button" | "reset">;
1231
+ /** Accessible label when the button is icon-only. */
1232
+ ariaLabel: _angular_core.InputSignal<string>;
1233
+ /** Native title tooltip. */
1234
+ title: _angular_core.InputSignal<string>;
1235
+ /** Inline styles applied to the button. */
1236
+ style: _angular_core.InputSignal<Record<string, string | number>>;
1237
+ /** Extra CSS classes. */
1238
+ styleClass: _angular_core.InputSignal<string>;
1239
+ /** Emitted on click with the original MouseEvent. */
1240
+ onClick: _angular_core.OutputEmitterRef<MouseEvent>;
1241
+ protected getIcon: typeof getIcon$6;
1242
+ protected iconOnly: _angular_core.Signal<boolean>;
1243
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
1244
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "shk-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "outlined": { "alias": "outlined"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "raised": { "alias": "raised"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
1245
+ }
1246
+
1247
+ /** SVG radial knob with drag and keyboard support. Implements ControlValueAccessor. */
1248
+ declare class KnobComponent implements ControlValueAccessor {
1249
+ /** Current value. Two-way bindable with [(value)]. */
1250
+ value: _angular_core.ModelSignal<number>;
1251
+ /** Minimum value. */
1252
+ min: _angular_core.InputSignal<number>;
1253
+ /** Maximum value. */
1254
+ max: _angular_core.InputSignal<number>;
1255
+ /** Increment used by arrows and pointer drag rounding. */
1256
+ step: _angular_core.InputSignal<number>;
1257
+ /** Diameter of the knob in px. */
1258
+ size: _angular_core.InputSignal<number>;
1259
+ /** Thickness of the arc stroke. */
1260
+ strokeWidth: _angular_core.InputSignal<number>;
1261
+ /** Color of the filled arc. */
1262
+ valueColor: _angular_core.InputSignal<string>;
1263
+ /** Color of the track arc. */
1264
+ rangeColor: _angular_core.InputSignal<string>;
1265
+ /** Whether the current value is shown in the center. */
1266
+ showValue: _angular_core.InputSignal<boolean>;
1267
+ /** Disables user interaction. */
1268
+ disabled: _angular_core.InputSignal<boolean>;
1269
+ /** Blocks editing but keeps the control styled as enabled. */
1270
+ readonly: _angular_core.InputSignal<boolean>;
1271
+ /** Accessible label. */
1272
+ ariaLabel: _angular_core.InputSignal<string>;
1273
+ /** Emitted when the knob value changes. */
1274
+ change: _angular_core.OutputEmitterRef<number>;
1275
+ /** Emitted when the user releases the pointer. */
1276
+ end: _angular_core.OutputEmitterRef<number>;
1277
+ protected knobSvg: _angular_core.Signal<ElementRef<SVGElement> | undefined>;
1278
+ private onChange;
1279
+ private onTouched;
1280
+ private dragging;
1281
+ private formDisabled;
1282
+ /** Effective disabled state combining the `disabled` input and the form binding. */
1283
+ protected effectiveDisabled: _angular_core.Signal<boolean>;
1284
+ protected r: _angular_core.Signal<number>;
1285
+ protected center: _angular_core.Signal<number>;
1286
+ protected fraction: _angular_core.Signal<number>;
1287
+ protected rangeArc: _angular_core.Signal<string>;
1288
+ protected valueArc: _angular_core.Signal<string>;
1289
+ writeValue(value: any): void;
1290
+ registerOnChange(fn: any): void;
1291
+ registerOnTouched(fn: any): void;
1292
+ setDisabledState(isDisabled: boolean): void;
1293
+ onPointerDown(event: PointerEvent): void;
1294
+ onPointerMove(event: PointerEvent): void;
1295
+ onPointerUp(event: PointerEvent): void;
1296
+ updateByKey(step: number): void;
1297
+ private applyEvent;
1298
+ private setValue;
1299
+ private clamp;
1300
+ private getArcPath;
1301
+ private anglePoint;
1302
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KnobComponent, never>;
1303
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KnobComponent, "shk-knob", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "rangeColor": { "alias": "rangeColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "change": "change"; "end": "end"; }, never, never, true, never>;
1304
+ }
1305
+
1306
+ /** Circular indeterminate spinner. */
1307
+ declare class LoadingSpinnerComponent {
1308
+ /** Diameter of the spinner. */
1309
+ size: _angular_core.InputSignal<string>;
1310
+ /** Border thickness in px. */
1311
+ thickness: _angular_core.InputSignal<number>;
1312
+ /** Color of the moving arc. Defaults to the primary token. */
1313
+ color: _angular_core.InputSignal<string>;
1314
+ /** Optional text shown under the spinner. */
1315
+ label: _angular_core.InputSignal<string>;
1316
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingSpinnerComponent, never>;
1317
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingSpinnerComponent, "shk-loading-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1318
+ }
1319
+
1320
+ /** Progress bar with an indeterminate sweep or a determinate percentage. */
1321
+ declare class LoadingBarComponent {
1322
+ /** Height of the bar. */
1323
+ height: _angular_core.InputSignal<string>;
1324
+ /** When true the bar animates without a known percentage. */
1325
+ indeterminate: _angular_core.InputSignal<boolean>;
1326
+ /** Current progress 0-100 when `indeterminate` is false. */
1327
+ progress: _angular_core.InputSignal<number>;
1328
+ /** Fill color. Defaults to the primary token. */
1329
+ color: _angular_core.InputSignal<string>;
1330
+ /** Renders fully rounded ends. */
1331
+ rounded: _angular_core.InputSignal<boolean>;
1332
+ protected fillStyle: _angular_core.Signal<{
1333
+ width?: undefined;
1334
+ } | {
1335
+ width: string;
1336
+ }>;
1337
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingBarComponent, never>;
1338
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingBarComponent, "shk-loading-bar", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1339
+ }
1340
+
1341
+ type LoadingOverlayBackdrop = 'transparent' | 'light' | 'dark';
1342
+ /** Wraps content and shows a centered spinner over it while `visible` is true. */
1343
+ declare class LoadingOverlayComponent {
1344
+ /** Controls whether the spinner layer is shown. */
1345
+ visible: _angular_core.InputSignal<boolean>;
1346
+ /** Optional text under the spinner. */
1347
+ message: _angular_core.InputSignal<string>;
1348
+ /** Diameter of the spinner. */
1349
+ spinnerSize: _angular_core.InputSignal<string>;
1350
+ /** Spinner color. Defaults to the primary token. */
1351
+ color: _angular_core.InputSignal<string>;
1352
+ /** Backdrop behind the spinner. */
1353
+ backdrop: _angular_core.InputSignal<LoadingOverlayBackdrop>;
1354
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingOverlayComponent, never>;
1355
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingOverlayComponent, "shk-loading-overlay", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "spinnerSize": { "alias": "spinnerSize"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1356
+ }
1357
+
1358
+ /** Bouncing dots loading indicator. */
1359
+ declare class LoadingDotsComponent {
1360
+ /** Diameter of each dot. */
1361
+ size: _angular_core.InputSignal<string>;
1362
+ /** Dot color. Defaults to the primary token. */
1363
+ color: _angular_core.InputSignal<string>;
1364
+ /** Number of dots. */
1365
+ count: _angular_core.InputSignal<number>;
1366
+ /** Optional text shown next to the dots. */
1367
+ label: _angular_core.InputSignal<string>;
1368
+ protected dots: _angular_core.Signal<unknown[]>;
1369
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingDotsComponent, never>;
1370
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingDotsComponent, "shk-loading-dots", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1371
+ }
1372
+
1373
+ /** Shared state between shk-tabs and its projected tab/tabpanel children. */
1374
+ declare class TabsService {
1375
+ readonly active: _angular_core.WritableSignal<any>;
1376
+ select(value: any): void;
1377
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsService, never>;
1378
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<TabsService>;
1379
+ }
1380
+
1381
+ /** Container for tab panels. Renders its projected shk-tablist/shh-tab content. */
1382
+ declare class TabsComponent {
1383
+ /** Currently active tab value. Two-way bindable with [(value)]. */
1384
+ value: _angular_core.ModelSignal<any>;
1385
+ /** Allows the tab header to scroll horizontally when it overflows. */
1386
+ scrollable: _angular_core.InputSignal<boolean>;
1387
+ protected tabsSvc: TabsService;
1388
+ constructor();
1389
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
1390
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "shk-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["*"], true, never>;
1391
+ }
1392
+
1393
+ /** Horizontal bar that contains the shk-tab headers. */
1394
+ declare class TablistComponent {
1395
+ /** Allows the header to scroll horizontally when it overflows. */
1396
+ scrollable: _angular_core.InputSignal<boolean>;
1397
+ /** Extra CSS classes. */
1398
+ styleClass: _angular_core.InputSignal<string>;
1399
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TablistComponent, never>;
1400
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TablistComponent, "shk-tablist", never, { "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1401
+ }
1402
+
1403
+ /** A single tab header. Clicking it activates the matching panel. */
1404
+ declare class TabComponent {
1405
+ /** Value that links this tab to its panel. */
1406
+ value: _angular_core.InputSignal<any>;
1407
+ /** Disables the tab. */
1408
+ disabled: _angular_core.InputSignal<boolean>;
1409
+ /** Extra CSS classes. */
1410
+ styleClass: _angular_core.InputSignal<string>;
1411
+ protected tabsSvc: TabsService;
1412
+ protected active: _angular_core.Signal<boolean>;
1413
+ select(): void;
1414
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
1415
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "shk-tab", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1416
+ }
1417
+
1418
+ /** Container that groups the shk-tabpanel content sections. */
1419
+ declare class TabpanelsComponent {
1420
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabpanelsComponent, never>;
1421
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabpanelsComponent, "shk-tabpanels", never, {}, {}, never, ["*"], true, never>;
1422
+ }
1423
+
1424
+ /** Content section shown only while its value is the active tab. */
1425
+ declare class TabPanelComponent {
1426
+ /** Value that links this panel to its tab. */
1427
+ value: _angular_core.InputSignal<any>;
1428
+ protected tabsSvc: TabsService;
1429
+ protected active: _angular_core.Signal<boolean>;
1430
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabPanelComponent, never>;
1431
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabPanelComponent, "shk-tabpanel", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1432
+ }
1433
+
1434
+ interface BreadcrumbItem {
1435
+ label: string;
1436
+ route?: string;
1437
+ }
1438
+ declare class BreadcrumbService {
1439
+ private breadcrumbsSubject;
1440
+ breadcrumbs$: Observable<BreadcrumbItem[]>;
1441
+ set(items: BreadcrumbItem[]): void;
1442
+ clear(): void;
1443
+ getCurrent(): BreadcrumbItem[];
1444
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbService, never>;
1445
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<BreadcrumbService>;
1446
+ }
1447
+
1448
+ type BreadcrumbSeparator = 'chevron' | 'slash' | 'arrow';
1449
+ declare class BreadcrumbComponent implements OnInit, OnDestroy {
1450
+ private readonly breadcrumbService;
1451
+ items: _angular_core.InputSignal<BreadcrumbItem[]>;
1452
+ separator: _angular_core.InputSignal<BreadcrumbSeparator>;
1453
+ useService: _angular_core.InputSignal<boolean>;
1454
+ protected serviceItems: _angular_core.WritableSignal<BreadcrumbItem[]>;
1455
+ protected resolvedItems: _angular_core.Signal<BreadcrumbItem[]>;
1456
+ private serviceSub;
1457
+ constructor();
1458
+ ngOnInit(): void;
1459
+ ngOnDestroy(): void;
1460
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
1461
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbComponent, "shk-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "useService": { "alias": "useService"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1462
+ }
1463
+
1464
+ export { BreadcrumbComponent, BreadcrumbService, ButtonComponent, COLOR_PALETTE, ChartComponent, ConfirmDialogComponent, ConfirmDialogService, DEFAULT_MARKER_GRADIENTS, DEFAULT_SUPPLIER_ICON_COLORS, DEFAULT_SUPPLIER_TYPE_ICONS, DatePickerComponent, FieldsetComponent, FileUploadComponent, KnobComponent, LoadingBarComponent, LoadingDotsComponent, LoadingOverlayComponent, LoadingSpinnerComponent, ModalComponent, ModalService, NotificationComponent, NotificationService, PriceInputComponent, RailSidebarComponent, SelectComponent, ShkWizardStepContent, SidebarComponent, SkeletonComponent, TabComponent, TabPanelComponent, TableComponent, TablistComponent, TabpanelsComponent, TabsComponent, TagComponent, TextFieldComponent, TimelineComponent, ToggleComponent, TooltipComponent, WizardComponent, readThemeColors };
1465
+ export type { BreadcrumbItem, BreadcrumbSeparator, ButtonIconPosition, ButtonSeverity, ButtonSize, Column, ConfirmConfig, DatePickerView, FieldsetHeaderAction, FileUploadError, FilterChangeEvent, LoadingOverlayBackdrop, ModalConfig, Notification, NotificationPosition, PageChangeEvent, RailSidebarItem, RailSidebarSection, RailSidebarSectionEvent, RowAction, SelectOption, SidebarGroup, SidebarItem, SkeletonAnimation, SkeletonShape, TableAction, TagSeverity, TimelineAction, TimelineAlignment, TimelineItem, TimelineItemAction, TimelineMarkerSize, TimelineMeta, TimelineSubItem, TimelineSubItemAction, WizardStep };