shirkasoft-ui-components 1.0.26 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shirkasoft-ui-components",
3
- "version": "1.0.26",
3
+ "version": "1.1.0",
4
4
  "description": "Angular UI Components Library — themeable via CSS custom properties",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit } from '@angular/core';
2
+ import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit, TemplateRef } from '@angular/core';
3
3
  import { ControlValueAccessor, FormGroup, FormControl } from '@angular/forms';
4
4
 
5
5
  declare class TextFieldComponent implements ControlValueAccessor {
@@ -456,7 +456,7 @@ declare class FileUploadComponent {
456
456
  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
457
  }
458
458
 
459
- declare function getIcon$2(name: string): any;
459
+ declare function getIcon$5(name: string): any;
460
460
  interface Column {
461
461
  field: string;
462
462
  header: string;
@@ -509,7 +509,7 @@ declare class TableComponent {
509
509
  private fb;
510
510
  private cdr;
511
511
  private transloco;
512
- protected getIcon: typeof getIcon$2;
512
+ protected getIcon: typeof getIcon$5;
513
513
  private actionsHeaderLabel;
514
514
  data: _angular_core.InputSignal<any[]>;
515
515
  columns: _angular_core.InputSignal<Column[]>;
@@ -612,7 +612,7 @@ declare class TooltipComponent {
612
612
  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>;
613
613
  }
614
614
 
615
- declare function getIcon$1(name?: string): any;
615
+ declare function getIcon$4(name?: string): any;
616
616
  interface SidebarItem {
617
617
  id: string;
618
618
  label: string;
@@ -653,7 +653,7 @@ declare class SidebarComponent {
653
653
  mobileOpen: _angular_core.ModelSignal<boolean>;
654
654
  itemClick: _angular_core.OutputEmitterRef<SidebarItem>;
655
655
  toggle: _angular_core.OutputEmitterRef<boolean>;
656
- protected getIcon: typeof getIcon$1;
656
+ protected getIcon: typeof getIcon$4;
657
657
  protected selectedId: _angular_core.WritableSignal<string>;
658
658
  protected expandedGroups: _angular_core.WritableSignal<Set<string>>;
659
659
  private isBrowser;
@@ -672,7 +672,7 @@ declare class SidebarComponent {
672
672
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "shk-sidebar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "activeItemId": { "alias": "activeItemId"; "required": false; "isSignal": true; }; "userRole": { "alias": "userRole"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "fixed": { "alias": "fixed"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "labelPipe": { "alias": "labelPipe"; "required": false; "isSignal": true; }; "expandTooltip": { "alias": "expandTooltip"; "required": false; "isSignal": true; }; "collapseTooltip": { "alias": "collapseTooltip"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "mobileOpen": { "alias": "mobileOpen"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "mobileOpen": "mobileOpenChange"; "itemClick": "itemClick"; "toggle": "toggle"; }, never, ["[sidebarHeader]", "[sidebarContent]", "[sidebarFooter]"], true, never>;
673
673
  }
674
674
 
675
- declare function getIcon(name?: string): any;
675
+ declare function getIcon$3(name?: string): any;
676
676
  interface RailSidebarItem {
677
677
  id: string;
678
678
  label: string;
@@ -719,7 +719,7 @@ declare class RailSidebarComponent {
719
719
  logoutRequested: _angular_core.OutputEmitterRef<void>;
720
720
  toggleSidebar: _angular_core.OutputEmitterRef<boolean>;
721
721
  workspaceClick: _angular_core.OutputEmitterRef<void>;
722
- protected getIcon: typeof getIcon;
722
+ protected getIcon: typeof getIcon$3;
723
723
  protected expandedGroups: _angular_core.WritableSignal<Set<string>>;
724
724
  constructor();
725
725
  protected width: _angular_core.Signal<string>;
@@ -771,5 +771,314 @@ declare function readThemeColors(): {
771
771
  border: string;
772
772
  };
773
773
 
774
- export { COLOR_PALETTE, ChartComponent, ConfirmDialogComponent, ConfirmDialogService, DatePickerComponent, FileUploadComponent, ModalComponent, ModalService, NotificationComponent, NotificationService, PriceInputComponent, RailSidebarComponent, SelectComponent, SidebarComponent, TableComponent, TextFieldComponent, ToggleComponent, TooltipComponent, readThemeColors };
775
- export type { Column, ConfirmConfig, DatePickerView, FileUploadError, FilterChangeEvent, ModalConfig, Notification, NotificationPosition, PageChangeEvent, RailSidebarItem, RailSidebarSection, RailSidebarSectionEvent, RowAction, SidebarGroup, SidebarItem, TableAction };
774
+ declare function getIcon$2(name: string): any;
775
+ /** A chip shown under a sub item (time, pricing model, quantity, etc). */
776
+ interface TimelineMeta {
777
+ icon: string;
778
+ label?: string;
779
+ value: string;
780
+ }
781
+ /** A row inside a timeline item (e.g. an activity of a tour day). */
782
+ interface TimelineSubItem {
783
+ id: string | number;
784
+ title: string;
785
+ subtitle?: string;
786
+ /** Used to look up icon / color in `iconMap` and `iconColors`. */
787
+ type?: string;
788
+ /** Overrides the resolved icon name. */
789
+ icon?: string;
790
+ /** Hex background for the icon box (fallback). */
791
+ color?: string;
792
+ /** Hex text color for the icon (fallback). */
793
+ colorText?: string;
794
+ /** Custom CSS classes for the icon box (takes precedence over inline colors). */
795
+ iconClass?: string;
796
+ optional?: boolean;
797
+ optionalLabel?: string;
798
+ meta?: TimelineMeta[];
799
+ price?: string | number;
800
+ }
801
+ /** A single event in the timeline (e.g. a tour day). */
802
+ interface TimelineItem {
803
+ id: string | number;
804
+ /** Text shown inside the marker (falls back to the auto index). */
805
+ markerText?: string | number;
806
+ title?: string;
807
+ subtitle?: string;
808
+ description?: string;
809
+ /** Small pill shown above the title (e.g. "Día 1"). */
810
+ badge?: string | number;
811
+ badgeIcon?: string;
812
+ /** CSS classes for the marker (falls back to the cycled gradient palette). */
813
+ color?: string;
814
+ subItems?: TimelineSubItem[];
815
+ }
816
+ /** A button rendered in the header. */
817
+ interface TimelineAction {
818
+ label: string;
819
+ icon: string;
820
+ onClick: () => void;
821
+ class?: string;
822
+ isVisible?: () => boolean;
823
+ isDisabled?: () => boolean;
824
+ }
825
+ /** An action rendered in the item card footer. */
826
+ interface TimelineItemAction {
827
+ label: string | ((item: TimelineItem) => string);
828
+ icon: string | ((item: TimelineItem) => string);
829
+ onClick: (item: TimelineItem) => void;
830
+ class?: string | ((item: TimelineItem) => string);
831
+ isVisible?: (item: TimelineItem) => boolean;
832
+ isDisabled?: (item: TimelineItem) => boolean;
833
+ }
834
+ /** An action rendered on hover over a sub item. */
835
+ interface TimelineSubItemAction {
836
+ label: string | ((item: TimelineItem, subItem: TimelineSubItem) => string);
837
+ icon: string | ((item: TimelineItem, subItem: TimelineSubItem) => string);
838
+ onClick: (item: TimelineItem, subItem: TimelineSubItem) => void;
839
+ isVisible?: (item: TimelineItem, subItem: TimelineSubItem) => boolean;
840
+ isDisabled?: (item: TimelineItem, subItem: TimelineSubItem) => boolean;
841
+ }
842
+ type TimelineAlignment = 'left' | 'alternate';
843
+ type TimelineMarkerSize = 'sm' | 'md' | 'lg';
844
+ declare const DEFAULT_MARKER_GRADIENTS: string[];
845
+ /** Supplier-type style palette used by the original wac-app timeline. */
846
+ declare const DEFAULT_SUPPLIER_ICON_COLORS: Record<string, {
847
+ bg: string;
848
+ text: string;
849
+ }>;
850
+ /** Maps a sub-item `type` to a lucide icon name. */
851
+ declare const DEFAULT_SUPPLIER_TYPE_ICONS: Record<string, string>;
852
+ declare class TimelineComponent {
853
+ protected getIcon: typeof getIcon$2;
854
+ /** Timeline data. */
855
+ items: _angular_core.InputSignal<TimelineItem[]>;
856
+ /** 'left' = line and markers on the left; 'alternate' = cards alternate around a centered line on lg+. */
857
+ alignment: _angular_core.InputSignal<TimelineAlignment>;
858
+ /** Shows/hides the vertical connector line. */
859
+ showLine: _angular_core.InputSignal<boolean>;
860
+ /** Marker diameter. */
861
+ markerSize: _angular_core.InputSignal<TimelineMarkerSize>;
862
+ /** Gradient classes cycled across markers when the item has no `color`. */
863
+ markerGradients: _angular_core.InputSignal<string[]>;
864
+ /** Shows the info column on the opposite side of the card (alternate mode, lg+). */
865
+ showOpposite: _angular_core.InputSignal<boolean>;
866
+ /** Shows the item description. */
867
+ showDescription: _angular_core.InputSignal<boolean>;
868
+ /** Shows meta chips inside sub items. */
869
+ showSubItemMeta: _angular_core.InputSignal<boolean>;
870
+ /** Shows the price of each sub item. */
871
+ showSubItemPrice: _angular_core.InputSignal<boolean>;
872
+ /** Auto-append "N {subItemCountLabel}" under the title when the item has no subtitle. */
873
+ showSubItemCount: _angular_core.InputSignal<boolean>;
874
+ subItemCountLabel: _angular_core.InputSignal<string>;
875
+ showHeader: _angular_core.InputSignal<boolean>;
876
+ headerTitle: _angular_core.InputSignal<string>;
877
+ /** Convenience "add" button in the header. */
878
+ showAddItem: _angular_core.InputSignal<boolean>;
879
+ addItemLabel: _angular_core.InputSignal<string>;
880
+ addItemIcon: _angular_core.InputSignal<string>;
881
+ addItemTooltip: _angular_core.InputSignal<string>;
882
+ headerActions: _angular_core.InputSignal<TimelineAction[]>;
883
+ /** Renders "+ Añadir sub-elemento" in each card footer. */
884
+ showAddSubItem: _angular_core.InputSignal<boolean>;
885
+ addSubItemLabel: _angular_core.InputSignal<string>;
886
+ addSubItemTooltip: _angular_core.InputSignal<string>;
887
+ itemActions: _angular_core.InputSignal<TimelineItemAction[]>;
888
+ subItemActions: _angular_core.InputSignal<TimelineSubItemAction[]>;
889
+ /** Maps a sub-item `type` to a lucide icon name. */
890
+ iconMap: _angular_core.InputSignal<{
891
+ [type: string]: string;
892
+ }>;
893
+ /** Maps a sub-item `type` to its icon-box colors. */
894
+ iconColors: _angular_core.InputSignal<{
895
+ [type: string]: {
896
+ bg: string;
897
+ text: string;
898
+ };
899
+ }>;
900
+ /** Icon used when nothing matches. */
901
+ fallbackIcon: _angular_core.InputSignal<string>;
902
+ showEmptyState: _angular_core.InputSignal<boolean>;
903
+ emptyMessage: _angular_core.InputSignal<string>;
904
+ emptyIcon: _angular_core.InputSignal<string>;
905
+ editTooltip: _angular_core.InputSignal<string>;
906
+ deleteTooltip: _angular_core.InputSignal<string>;
907
+ optionalLabel: _angular_core.InputSignal<string>;
908
+ noSubItemsMessage: _angular_core.InputSignal<string>;
909
+ /** Custom content templates: keys 'marker', 'opposite', 'content', 'description', 'subItem', 'empty'. */
910
+ customTemplates: _angular_core.InputSignal<{
911
+ [key: string]: any;
912
+ }>;
913
+ addItem: _angular_core.OutputEmitterRef<void>;
914
+ addSubItem: _angular_core.OutputEmitterRef<TimelineItem>;
915
+ itemClick: _angular_core.OutputEmitterRef<TimelineItem>;
916
+ subItemClick: _angular_core.OutputEmitterRef<{
917
+ item: TimelineItem;
918
+ subItem: TimelineSubItem;
919
+ }>;
920
+ markerText(item: TimelineItem, index: number): string | number;
921
+ markerClass(item: TimelineItem, index: number): string;
922
+ markerColumnClass(): string;
923
+ alternateMarkerColumnClass(): string;
924
+ lineClass(): string;
925
+ subItemIconName(sub: TimelineSubItem): string;
926
+ subItemStyle(sub: TimelineSubItem): {
927
+ [key: string]: string;
928
+ } | undefined;
929
+ isHeaderActionVisible(action: TimelineAction): boolean;
930
+ isHeaderActionDisabled(action: TimelineAction): boolean;
931
+ getItemActionLabel(action: TimelineItemAction, item: TimelineItem): string;
932
+ getItemActionIconName(action: TimelineItemAction, item: TimelineItem): string;
933
+ getItemActionClass(action: TimelineItemAction, item: TimelineItem): string;
934
+ isItemActionVisible(action: TimelineItemAction, item: TimelineItem): boolean;
935
+ isItemActionDisabled(action: TimelineItemAction, item: TimelineItem): boolean;
936
+ getSubItemActionLabel(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): string;
937
+ getSubItemActionIconName(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): string;
938
+ isSubItemActionVisible(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): boolean;
939
+ isSubItemActionDisabled(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): boolean;
940
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineComponent, never>;
941
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "shk-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; "markerGradients": { "alias": "markerGradients"; "required": false; "isSignal": true; }; "showOpposite": { "alias": "showOpposite"; "required": false; "isSignal": true; }; "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; "showSubItemMeta": { "alias": "showSubItemMeta"; "required": false; "isSignal": true; }; "showSubItemPrice": { "alias": "showSubItemPrice"; "required": false; "isSignal": true; }; "showSubItemCount": { "alias": "showSubItemCount"; "required": false; "isSignal": true; }; "subItemCountLabel": { "alias": "subItemCountLabel"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "showAddItem": { "alias": "showAddItem"; "required": false; "isSignal": true; }; "addItemLabel": { "alias": "addItemLabel"; "required": false; "isSignal": true; }; "addItemIcon": { "alias": "addItemIcon"; "required": false; "isSignal": true; }; "addItemTooltip": { "alias": "addItemTooltip"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "showAddSubItem": { "alias": "showAddSubItem"; "required": false; "isSignal": true; }; "addSubItemLabel": { "alias": "addSubItemLabel"; "required": false; "isSignal": true; }; "addSubItemTooltip": { "alias": "addSubItemTooltip"; "required": false; "isSignal": true; }; "itemActions": { "alias": "itemActions"; "required": false; "isSignal": true; }; "subItemActions": { "alias": "subItemActions"; "required": false; "isSignal": true; }; "iconMap": { "alias": "iconMap"; "required": false; "isSignal": true; }; "iconColors": { "alias": "iconColors"; "required": false; "isSignal": true; }; "fallbackIcon": { "alias": "fallbackIcon"; "required": false; "isSignal": true; }; "showEmptyState": { "alias": "showEmptyState"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "editTooltip": { "alias": "editTooltip"; "required": false; "isSignal": true; }; "deleteTooltip": { "alias": "deleteTooltip"; "required": false; "isSignal": true; }; "optionalLabel": { "alias": "optionalLabel"; "required": false; "isSignal": true; }; "noSubItemsMessage": { "alias": "noSubItemsMessage"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; }, { "addItem": "addItem"; "addSubItem": "addSubItem"; "itemClick": "itemClick"; "subItemClick": "subItemClick"; }, never, never, true, never>;
942
+ }
943
+
944
+ declare function getIcon$1(name: string): any;
945
+ /** An action button rendered on the right side of the fieldset header. */
946
+ interface FieldsetHeaderAction {
947
+ label: string;
948
+ icon: string;
949
+ onClick: () => void;
950
+ class?: string;
951
+ isVisible?: () => boolean;
952
+ isDisabled?: () => boolean;
953
+ }
954
+ declare class FieldsetComponent {
955
+ protected getIcon: typeof getIcon$1;
956
+ /** Title shown in the header. */
957
+ legend: _angular_core.InputSignal<string>;
958
+ /** Collapsed state (default: collapsed). Two-way bindable with [(collapsed)]. */
959
+ collapsed: _angular_core.ModelSignal<boolean>;
960
+ /** Whether the header toggles the content. */
961
+ toggleable: _angular_core.InputSignal<boolean>;
962
+ /** Shows the expand/collapse icon button. */
963
+ showToggleIcon: _angular_core.InputSignal<boolean>;
964
+ /** Optional leading icon shown next to the legend. */
965
+ icon: _angular_core.InputSignal<string>;
966
+ /** Optional badge/count shown after the legend. */
967
+ badge: _angular_core.InputSignal<string | number>;
968
+ /** CSS classes for the badge (override). */
969
+ badgeClass: _angular_core.InputSignal<string>;
970
+ /** Icon shown when collapsed. */
971
+ collapsedIcon: _angular_core.InputSignal<string>;
972
+ /** Icon shown when expanded. */
973
+ expandedIcon: _angular_core.InputSignal<string>;
974
+ /** Action buttons rendered on the right side of the header. */
975
+ headerActions: _angular_core.InputSignal<FieldsetHeaderAction[]>;
976
+ /** Custom content templates: key 'legend' (context: $implicit collapsed, expanded). */
977
+ customTemplates: _angular_core.InputSignal<{
978
+ [key: string]: any;
979
+ }>;
980
+ hasShadow: _angular_core.InputSignal<boolean>;
981
+ expandLabel: _angular_core.InputSignal<string>;
982
+ collapseLabel: _angular_core.InputSignal<string>;
983
+ /** Emits the new expanded state when toggled. */
984
+ toggle: _angular_core.OutputEmitterRef<boolean>;
985
+ expand: _angular_core.OutputEmitterRef<void>;
986
+ collapse: _angular_core.OutputEmitterRef<void>;
987
+ contentId: string;
988
+ onToggle(): void;
989
+ isHeaderActionVisible(action: FieldsetHeaderAction): boolean;
990
+ isHeaderActionDisabled(action: FieldsetHeaderAction): boolean;
991
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldsetComponent, never>;
992
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldsetComponent, "shk-fieldset", never, { "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; "showToggleIcon": { "alias": "showToggleIcon"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeClass": { "alias": "badgeClass"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "toggle": "toggle"; "expand": "expand"; "collapse": "collapse"; }, never, ["*"], true, never>;
993
+ }
994
+
995
+ declare function getIcon(name: string): any;
996
+ /** A step of the wizard shown in the stepper. */
997
+ interface WizardStep {
998
+ id: string | number;
999
+ label: string;
1000
+ /** Optional lucide icon rendered inside the step circle. */
1001
+ icon?: string;
1002
+ /** Overrides the primary footer button label for this step. */
1003
+ primaryLabel?: string;
1004
+ /** Overrides the primary footer button icon for this step. */
1005
+ primaryIcon?: string;
1006
+ }
1007
+ /** Declares a step's content template: <ng-template shkWizardStepContent="stepId">…</ng-template>. */
1008
+ declare class ShkWizardStepContent {
1009
+ templateRef: TemplateRef<unknown>;
1010
+ stepId: _angular_core.InputSignal<string | number>;
1011
+ constructor(templateRef: TemplateRef<unknown>);
1012
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShkWizardStepContent, never>;
1013
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShkWizardStepContent, "ng-template[shkWizardStepContent]", never, { "stepId": { "alias": "shkWizardStepContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1014
+ }
1015
+ declare class WizardComponent {
1016
+ protected getIcon: typeof getIcon;
1017
+ /** Steps definition shown in the stepper and used to resolve step content. */
1018
+ steps: _angular_core.InputSignal<WizardStep[]>;
1019
+ /** Active step id. Two-way bindable with [(currentStep)]. Null resolves to the first step. */
1020
+ currentStep: _angular_core.ModelSignal<string | number | null>;
1021
+ /** Shows the sticky header (back button + title). */
1022
+ showHeader: _angular_core.InputSignal<boolean>;
1023
+ headerTitle: _angular_core.InputSignal<string>;
1024
+ headerSubtitle: _angular_core.InputSignal<string>;
1025
+ /** Shows the round back button in the header. */
1026
+ showBackButton: _angular_core.InputSignal<boolean>;
1027
+ backTooltip: _angular_core.InputSignal<string>;
1028
+ /** Optional lucide icon shown before the title. */
1029
+ headerIcon: _angular_core.InputSignal<string>;
1030
+ /** Shows the progress stepper (hide it for edit mode, like wac-app does). */
1031
+ showStepper: _angular_core.InputSignal<boolean>;
1032
+ /** Lets the user click on previous steps to jump back. */
1033
+ stepperClickable: _angular_core.InputSignal<boolean>;
1034
+ showFooter: _angular_core.InputSignal<boolean>;
1035
+ /** Shows a "Paso X / N" counter on the left of the footer. */
1036
+ showStepCounter: _angular_core.InputSignal<boolean>;
1037
+ stepCounterPrefix: _angular_core.InputSignal<string>;
1038
+ /** Shows the Cancel button on the first step (instead of a back button). */
1039
+ showCancel: _angular_core.InputSignal<boolean>;
1040
+ /** Auto-advances to the next step on the primary button when it is not the last step. */
1041
+ advanceOnNext: _angular_core.InputSignal<boolean>;
1042
+ prevLabel: _angular_core.InputSignal<string>;
1043
+ prevIcon: _angular_core.InputSignal<string>;
1044
+ cancelLabel: _angular_core.InputSignal<string>;
1045
+ cancelIcon: _angular_core.InputSignal<string>;
1046
+ nextLabel: _angular_core.InputSignal<string>;
1047
+ nextIcon: _angular_core.InputSignal<string>;
1048
+ finishLabel: _angular_core.InputSignal<string>;
1049
+ finishIcon: _angular_core.InputSignal<string>;
1050
+ /** Overrides the primary footer button label for every step. */
1051
+ primaryLabel: _angular_core.InputSignal<string | null>;
1052
+ /** Overrides the primary footer button icon for every step. */
1053
+ primaryIcon: _angular_core.InputSignal<string | null>;
1054
+ /** Shows a loading spinner on the primary button and disables it. */
1055
+ primaryLoading: _angular_core.InputSignal<boolean>;
1056
+ /** Disables the primary footer button (e.g. while the step form is invalid). */
1057
+ primaryDisabled: _angular_core.InputSignal<boolean>;
1058
+ back: _angular_core.OutputEmitterRef<void>;
1059
+ cancel: _angular_core.OutputEmitterRef<void>;
1060
+ prev: _angular_core.OutputEmitterRef<void>;
1061
+ next: _angular_core.OutputEmitterRef<void>;
1062
+ finish: _angular_core.OutputEmitterRef<void>;
1063
+ stepChange: _angular_core.OutputEmitterRef<{
1064
+ step: WizardStep | null;
1065
+ index: number;
1066
+ }>;
1067
+ readonly stepContents: _angular_core.Signal<readonly ShkWizardStepContent[]>;
1068
+ currentIndex: _angular_core.Signal<number>;
1069
+ currentStepObj: _angular_core.Signal<WizardStep>;
1070
+ isFirstStep: _angular_core.Signal<boolean>;
1071
+ isLastStep: _angular_core.Signal<boolean>;
1072
+ primaryActionLabel: _angular_core.Signal<string>;
1073
+ primaryActionIcon: _angular_core.Signal<string>;
1074
+ getStepTemplate(id: string | number): TemplateRef<unknown> | undefined;
1075
+ goTo(stepId: string | number): void;
1076
+ onPrev(): void;
1077
+ onNext(): void;
1078
+ onPrimary(): void;
1079
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardComponent, never>;
1080
+ 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>;
1081
+ }
1082
+
1083
+ 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 };
1084
+ 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 };