widenarrow-ui 2.1.3 → 2.3.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/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import react__default, { CSSProperties, MouseEvent, RefObject, ReactNode, ChangeEvent, KeyboardEvent, FocusEvent, FC } from 'react';
2
+ import react__default, { CSSProperties, MouseEvent, RefObject, ReactNode, ChangeEvent, KeyboardEvent, FocusEvent, FC, AriaAttributes } from 'react';
3
3
  import { Placement, PositioningStrategy } from '@popperjs/core';
4
4
 
5
5
  declare enum IconTypes {
@@ -66,7 +66,6 @@ declare enum IconTypes {
66
66
  CROSS = "iconCross",
67
67
  CROSS_CIRCLE_200 = "iconCrossCircle200",
68
68
  CROSS_CIRCLE_300 = "iconCrossCircle300",
69
- DOCUMENT = "iconDocument",
70
69
  DASHBOARD_200 = "iconDashboard200",
71
70
  DASHBOARD_300 = "iconDashboard300",
72
71
  DASHBOARD_FILLED = "iconDashboardFilled",
@@ -281,6 +280,15 @@ declare enum HierarchyTypes {
281
280
  TERTIARY = "tertiary",
282
281
  QUATERNARY = "quaternary"
283
282
  }
283
+ declare enum LinkTypes {
284
+ PRIMARY = "colorPrimary",
285
+ SECONDARY = "colorSecondary",
286
+ WHITE = "colorWhite"
287
+ }
288
+ declare enum TableTypes {
289
+ RULED = "ruled",
290
+ CARDS = "cards"
291
+ }
284
292
  declare enum AspectRatioTypes {
285
293
  ar4_1 = "ar4_1",// 25 %
286
294
  ar3_1 = "ar3_1",// 33 %
@@ -453,10 +461,12 @@ declare const borderClassNames: ({ borderColor, border, borderTop, borderLeft, b
453
461
 
454
462
  interface BoxProps extends MarginInterface, PaddingInterface, BorderInterface, FlexStylingInterface {
455
463
  children?: react__default.ReactNode;
464
+ id?: string;
456
465
  className?: string;
457
466
  position?: string;
458
467
  backgroundColor?: Partial<ColorTypes>;
459
468
  showOnBreakpoint?: string;
469
+ /** @default false */
460
470
  withBorderRadius?: boolean;
461
471
  width?: string;
462
472
  minWidth?: string;
@@ -473,7 +483,9 @@ declare const Box: react.ForwardRefExoticComponent<BoxProps & react.RefAttribute
473
483
  interface ButtonProps {
474
484
  text?: string;
475
485
  onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
486
+ /** @default HierarchyTypes.PRIMARY */
476
487
  type?: Partial<HierarchyTypes>;
488
+ /** @default SizeTypes.MEDIUM */
477
489
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
478
490
  sizeMd?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
479
491
  sizeLg?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
@@ -481,30 +493,41 @@ interface ButtonProps {
481
493
  icon?: Partial<IconTypes>;
482
494
  iconColor?: Partial<ColorTypes>;
483
495
  iconSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE | SizeTypes.AUTO;
496
+ /** @default false */
484
497
  withIconRight?: boolean;
485
498
  leftIcon?: Partial<IconTypes>;
486
499
  rightIcon?: Partial<IconTypes>;
500
+ /** @default false */
487
501
  disabled?: boolean;
488
502
  className?: string;
489
503
  style?: CSSProperties;
504
+ /** @default false */
490
505
  withEllipsis?: boolean;
491
506
  buttonRef?: RefObject<HTMLButtonElement>;
492
507
  rotateIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
493
- id?: string | number;
508
+ id?: string;
509
+ /** @default false */
494
510
  loading?: boolean;
511
+ /** @default false */
495
512
  autoFocus?: boolean;
496
513
  ariaLabel?: string;
514
+ /** ARIA role for the rendered button, when it stands for something other than a plain button. */
515
+ role?: string;
516
+ /** Selected state, for roles that carry one such as 'tab'. */
517
+ ariaSelected?: boolean;
518
+ /** Id of the element this button controls, for roles such as 'tab' that own a panel. */
519
+ ariaControls?: string;
497
520
  children?: ReactNode;
498
521
  toolTip?: string;
499
522
  toolTipComponent?: ReactNode;
500
523
  tabIndex?: number;
501
524
  }
502
525
 
503
- declare const Button: react.MemoExoticComponent<({ className, id, style, type, size, sizeMd, sizeLg, sizeXl, text, toolTip, toolTipComponent, icon, buttonRef, iconSize, iconColor, leftIcon, rightIcon, withIconRight, rotateIconByDegree, withEllipsis, onClickCallback, loading, disabled, children, autoFocus, ariaLabel, tabIndex }: ButtonProps) => JSX.Element>;
526
+ declare const Button: react.MemoExoticComponent<({ className, id, style, type, size, sizeMd, sizeLg, sizeXl, text, toolTip, toolTipComponent, icon, buttonRef, iconSize, iconColor, leftIcon, rightIcon, withIconRight, rotateIconByDegree, withEllipsis, onClickCallback, loading, disabled, children, autoFocus, ariaLabel, role, ariaSelected, ariaControls, tabIndex }: ButtonProps) => JSX.Element>;
504
527
 
505
528
  interface CheckboxProps {
506
529
  label: string;
507
- id?: string | number;
530
+ id?: string;
508
531
  value?: string;
509
532
  name?: string;
510
533
  onChange?: (val: string, event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLInputElement>) => void;
@@ -515,28 +538,40 @@ interface CheckboxProps {
515
538
  ariaLabel?: string;
516
539
  inputRef?: RefObject<HTMLInputElement>;
517
540
  helperText?: string;
541
+ /** @default false */
518
542
  checked?: boolean;
543
+ /** @default false */
519
544
  blocked?: boolean;
545
+ /** @default false */
520
546
  autoFocus?: boolean;
547
+ /** @default false */
521
548
  withEllipsis?: boolean;
549
+ /** @default true */
522
550
  withLabel?: boolean;
551
+ /** @default false */
523
552
  indeterminate?: boolean;
553
+ /** @default false */
524
554
  disabled?: boolean;
555
+ /** @default false */
525
556
  isFake?: boolean;
526
557
  }
527
558
 
528
559
  declare const Checkbox: FC<CheckboxProps>;
529
560
 
530
561
  interface CardProps extends PaddingInterface, MarginInterface, FlexStylingInterface {
562
+ id?: string;
531
563
  onClickCallback?: () => void;
564
+ /** @default AspectRatioTypes.ar16_9 */
532
565
  imageAspectRatio?: Partial<AspectRatioTypes>;
533
566
  imageIcon?: Partial<IconTypes>;
534
567
  imageIconSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE | SizeTypes.AUTO | undefined;
568
+ /** @default false */
535
569
  withEllipsis?: boolean;
536
570
  imageSrc?: string;
537
571
  imageAlt?: string;
538
572
  description?: string;
539
573
  wrapperElement?: 'div' | 'li' | 'section' | 'link';
574
+ /** @default false */
540
575
  withHoverEffect?: boolean;
541
576
  className?: string;
542
577
  title?: string;
@@ -549,21 +584,25 @@ interface CardProps extends PaddingInterface, MarginInterface, FlexStylingInterf
549
584
  }
550
585
 
551
586
  declare const Card: {
552
- ({ className, onClickCallback, withHoverEffect, imageSrc, imageAlt, imageIcon, imageIconSize, imageAspectRatio, title, withEllipsis, description, children, topCustomComponent, imageCustomComponent, descriptionComponent, leftFooterComponent, rightFooterComponent, padding, paddingX, paddingY, paddingTop, paddingBottom, paddingRight, paddingLeft, displayFlex, displayFlexCenter, displayFlexCenterSpaceBetween, alignSelf, justifyContent, flexDirection, flexGrow, flexWrap, alignItems }: CardProps): JSX.Element;
587
+ ({ id, className, onClickCallback, withHoverEffect, imageSrc, imageAlt, imageIcon, imageIconSize, imageAspectRatio, title, withEllipsis, description, children, topCustomComponent, imageCustomComponent, descriptionComponent, leftFooterComponent, rightFooterComponent, padding, paddingX, paddingY, paddingTop, paddingBottom, paddingRight, paddingLeft, displayFlex, displayFlexCenter, displayFlexCenterSpaceBetween, alignSelf, justifyContent, flexDirection, flexGrow, flexWrap, alignItems }: CardProps): JSX.Element;
553
588
  displayName: string;
554
589
  };
555
590
 
556
591
  interface RadioButtonProps {
557
592
  className?: string;
558
593
  name?: string;
559
- id?: string | number;
594
+ id?: string;
560
595
  label: string;
596
+ /** @default true */
561
597
  withLabel?: boolean;
562
598
  ariaLabel?: string;
563
599
  value?: string | number;
600
+ /** @default false */
564
601
  disabled?: boolean;
565
602
  helperText?: string;
603
+ /** @default false */
566
604
  withEllipsis?: boolean;
605
+ /** @default false */
567
606
  autoFocus?: boolean;
568
607
  checked: boolean;
569
608
  toolTip?: string;
@@ -579,29 +618,41 @@ declare const RadioButton: {
579
618
  };
580
619
 
581
620
  interface DropDownProps {
621
+ id?: string;
582
622
  children: ReactNode[] | ReactNode;
583
623
  buttonComponent?: ReactNode;
584
624
  triggerComponent?: ReactNode;
625
+ /** @default 'onClickCallback' */
585
626
  buttonCallbackName?: string;
586
627
  footerComponent?: ReactNode;
587
628
  title?: string;
588
629
  className?: string;
589
630
  dropDownClassName?: string;
590
631
  childrenClassName?: string;
632
+ /** @default true */
591
633
  withArrow?: boolean;
634
+ /** @default false */
592
635
  loading?: boolean;
636
+ /** @default true */
593
637
  childrenIsList?: boolean;
638
+ /** @default true */
594
639
  closeOnEscape?: boolean;
595
640
  isOpen?: boolean;
641
+ /** @default false */
596
642
  withVisibleOverflow?: boolean;
597
643
  rotateIconByDegree?: number;
598
644
  rotateLeftIconByDegree?: number;
599
645
  rotateMiddleIconByDegree?: number;
600
646
  rotateRightIconByDegree?: number;
647
+ /** @default false */
601
648
  withPortal?: boolean;
649
+ /** @default true */
602
650
  withShadow?: boolean;
651
+ /** @default 'auto' */
603
652
  placement?: Placement;
653
+ /** @default 'absolute' */
604
654
  strategy?: PositioningStrategy;
655
+ /** @default { horizontal: 8, vertical: 12 } */
605
656
  offset?: {
606
657
  horizontal: number;
607
658
  vertical: number;
@@ -616,14 +667,60 @@ interface DropDownRef {
616
667
 
617
668
  declare const DropDown: react.ForwardRefExoticComponent<DropDownProps & react.RefAttributes<DropDownRef>>;
618
669
 
670
+ type TypographyFontWeight = '300' | '400' | '600' | '700';
671
+ type TypographyFontSize = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';
672
+ type TypographyFontStyle = 'italic';
673
+ type TypographyTextAlign = 'left' | 'center' | 'right';
674
+ interface TypographyBaseProps extends ColorStyleInterface, MarginInterface, PaddingInterface {
675
+ id?: string;
676
+ className?: string;
677
+ textAlign?: TypographyTextAlign;
678
+ fontWeight?: TypographyFontWeight;
679
+ fontSize?: TypographyFontSize;
680
+ fontStyle?: TypographyFontStyle;
681
+ /** @default false */
682
+ meta?: boolean;
683
+ /** @default false */
684
+ withBorderBottom?: boolean;
685
+ /** @default false */
686
+ withEllipsis?: boolean;
687
+ /** @default false */
688
+ withNoWordBreak?: boolean;
689
+ /** @default false */
690
+ withWordBreak?: boolean;
691
+ /** @default false */
692
+ disabled?: boolean;
693
+ }
694
+ interface HeadingProps extends TypographyBaseProps {
695
+ children: ReactNode;
696
+ type: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
697
+ style?: CSSProperties;
698
+ }
699
+ interface LabelProps extends TypographyBaseProps {
700
+ children: ReactNode | string;
701
+ htmlFor?: string;
702
+ style?: CSSProperties;
703
+ }
704
+ interface ParagraphProps extends TypographyBaseProps {
705
+ children: ReactNode;
706
+ }
707
+ interface SpanProps extends TypographyBaseProps {
708
+ children: ReactNode;
709
+ }
710
+
619
711
  interface DropDownItemProps {
712
+ id?: string;
620
713
  text?: string;
621
714
  description?: string;
622
715
  onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
716
+ /** @default SizeTypes.MEDIUM */
623
717
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
624
718
  active?: boolean;
719
+ /** @default false */
625
720
  withEllipsis?: boolean;
721
+ /** @default false */
626
722
  disabled?: boolean;
723
+ /** @default 'li' */
627
724
  wrapperElement?: 'div' | 'li';
628
725
  className?: string;
629
726
  leftIcon?: Partial<IconTypes>;
@@ -633,21 +730,24 @@ interface DropDownItemProps {
633
730
  iconSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
634
731
  iconColor?: Partial<ColorTypes>;
635
732
  textColor?: Partial<ColorTypes>;
636
- fontSize?: string;
637
- textAlign?: string;
638
- fontWeight?: string;
733
+ /** @default 'm' */
734
+ fontSize?: TypographyFontSize;
735
+ /** @default 'left' */
736
+ textAlign?: TypographyTextAlign;
737
+ fontWeight?: TypographyFontWeight;
639
738
  iconClassName?: string;
739
+ /** @default true */
640
740
  closeDropDownOnClick?: boolean;
641
741
  descriptionColor?: Partial<ColorTypes>;
642
- descriptionTextAlign?: string;
643
- descriptionFontSize?: string;
644
- descriptionFontWeight?: string;
742
+ descriptionTextAlign?: TypographyTextAlign;
743
+ descriptionFontSize?: TypographyFontSize;
744
+ descriptionFontWeight?: TypographyFontWeight;
645
745
  descriptionClassName?: string;
646
746
  descriptionContainerClassName?: string;
647
747
  }
648
748
 
649
749
  declare const DropDownItem: {
650
- ({ text, description, onClickCallback, size, textAlign, fontSize, fontWeight, descriptionClassName, descriptionContainerClassName, textColor, active, disabled, className, iconColor, leftIcon, rightIcon, rightComponent, children, iconSize, withEllipsis, iconClassName, wrapperElement, closeDropDownOnClick }: DropDownItemProps): JSX.Element;
750
+ ({ id, text, description, onClickCallback, size, textAlign, fontSize, fontWeight, descriptionClassName, descriptionContainerClassName, textColor, active, disabled, className, iconColor, leftIcon, rightIcon, rightComponent, children, iconSize, withEllipsis, iconClassName, wrapperElement, closeDropDownOnClick }: DropDownItemProps): JSX.Element;
651
751
  defaultProps: {
652
752
  closeDropDownOnClick: boolean;
653
753
  };
@@ -657,11 +757,14 @@ declare const DropDownItem: {
657
757
  interface FacetButtonProps {
658
758
  text?: string;
659
759
  component?: ReactNode;
660
- id?: string | number;
760
+ id?: string;
661
761
  onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
662
762
  onRightClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
763
+ /** @default false */
663
764
  disabled?: boolean;
765
+ /** @default false */
664
766
  selected?: boolean;
767
+ /** @default false */
665
768
  blocked?: boolean;
666
769
  icon?: Partial<IconTypes>;
667
770
  rightIcon?: Partial<IconTypes>;
@@ -690,13 +793,20 @@ interface SearchResultInterface {
690
793
  }
691
794
 
692
795
  interface PaginationProps {
796
+ id?: string;
693
797
  pagination: SearchResultInterface;
694
798
  onChange: (searchResult: SearchResultInterface) => void;
799
+ /** @default false */
695
800
  slim?: boolean;
801
+ /** @default false */
696
802
  withPageSizeChange?: boolean;
803
+ /** @default false */
697
804
  withTablePagination?: boolean;
805
+ /** @default false */
698
806
  withFastForwardButtons?: boolean;
807
+ /** @default [10, 20, 30, 40, 50, 80, 100] */
699
808
  pageSizeOptions?: Array<number>;
809
+ /** @default HierarchyTypes.SECONDARY */
700
810
  buttonType?: HierarchyTypes.PRIMARY | HierarchyTypes.SECONDARY;
701
811
  className?: string;
702
812
  nextPageTitle?: string;
@@ -718,17 +828,20 @@ interface Block {
718
828
  col: number;
719
829
  }
720
830
  interface FormSkeletonProps {
831
+ id?: string;
721
832
  className?: string;
722
833
  blocks: Array<Block>;
834
+ /** @default ColorTypes.GREY_2 */
723
835
  color?: Partial<ColorTypes>;
724
836
  }
725
837
 
726
838
  declare const FormSkeleton: {
727
- ({ className, blocks, color }: FormSkeletonProps): JSX.Element;
839
+ ({ id, className, blocks, color }: FormSkeletonProps): JSX.Element;
728
840
  displayName: string;
729
841
  };
730
842
 
731
843
  interface GridProps extends MarginInterface, PaddingInterface, FlexStylingInterface {
844
+ id?: string;
732
845
  /**
733
846
  * Number of columns on viewports < 576px
734
847
  */
@@ -753,12 +866,9 @@ interface GridProps extends MarginInterface, PaddingInterface, FlexStylingInterf
753
866
  * Number of columns on viewports < 2000px
754
867
  */
755
868
  xxl?: number;
756
- /**
757
- * Optionally provide the number of columns in the grid.
758
- * @default 12
759
- */
760
869
  /**
761
870
  * If the component is a grid container
871
+ * @default false
762
872
  */
763
873
  container?: boolean;
764
874
  /**
@@ -769,6 +879,10 @@ interface GridProps extends MarginInterface, PaddingInterface, FlexStylingInterf
769
879
  * @default '4'
770
880
  */
771
881
  spacing?: string | Array<string> | Record<never, string | string[]>;
882
+ /**
883
+ * Optionally provide the number of columns in the grid.
884
+ * @default 12
885
+ */
772
886
  columns?: number;
773
887
  className?: string;
774
888
  children?: ReactNode;
@@ -778,9 +892,18 @@ interface GridProps extends MarginInterface, PaddingInterface, FlexStylingInterf
778
892
  declare const Grid: FC<GridProps>;
779
893
 
780
894
  interface IconProps extends ColorStyleInterface, IconStyleInterface {
895
+ /** @default SizeTypes.MEDIUM */
781
896
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE | SizeTypes.AUTO | undefined;
897
+ /**
898
+ * Set to true to rotate the icon 180 deg
899
+ * @default false
900
+ */
782
901
  rotateIcon?: boolean | undefined;
783
902
  rotateIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315 | undefined;
903
+ /**
904
+ * Set to true to set disabled state ($disabled color)
905
+ * @default false
906
+ */
784
907
  disabled?: boolean | undefined;
785
908
  className?: string | undefined;
786
909
  toolTip?: string | undefined;
@@ -794,19 +917,24 @@ declare const Icon: {
794
917
  interface IconButtonProps extends IconStyleInterface {
795
918
  className?: string;
796
919
  text?: string;
920
+ /** @default false */
797
921
  rotateIcon?: boolean;
798
- id?: string | number;
922
+ id?: string;
799
923
  rotateIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
800
924
  iconClassName?: string;
925
+ /** @default HierarchyTypes.SECONDARY */
801
926
  type?: HierarchyTypes.PRIMARY | HierarchyTypes.SECONDARY | HierarchyTypes.TERTIARY;
802
927
  onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
803
928
  style?: CSSProperties;
804
929
  iconSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
930
+ /** @default SizeTypes.MEDIUM */
805
931
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
806
932
  iconColor?: Partial<ColorTypes>;
807
933
  href?: string;
934
+ /** @default false */
808
935
  disabled?: boolean;
809
936
  buttonRef?: RefObject<HTMLButtonElement>;
937
+ /** @default false */
810
938
  autoFocus?: boolean;
811
939
  tabIndex?: number;
812
940
  toolTip?: string;
@@ -827,26 +955,36 @@ interface IconInterface$1 {
827
955
  }
828
956
  interface InputProps {
829
957
  value: string | number;
958
+ /** @default 'off' */
830
959
  autoComplete?: string;
960
+ /** @default false */
831
961
  autoFocus?: boolean;
832
962
  className?: string;
833
963
  name?: string;
964
+ /** @default false */
834
965
  disabled?: boolean;
966
+ /** @default false */
835
967
  readOnly?: boolean;
836
968
  error?: string;
837
- id?: string | number;
969
+ id?: string;
838
970
  iconClassName?: string;
839
971
  inputClassName?: string;
840
972
  label?: string;
841
973
  ariaLabel?: string;
974
+ /** @default false */
842
975
  required?: boolean;
976
+ /** @default true */
843
977
  withLabel?: boolean;
978
+ /** @default false */
844
979
  marginBottom?: boolean;
980
+ /** @default '' */
845
981
  placeholder?: string;
846
982
  inputRef?: RefObject<HTMLInputElement>;
983
+ /** @default SizeTypes.MEDIUM */
847
984
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
848
985
  helperText?: string;
849
986
  characterLimit?: number;
987
+ /** @default 'text' */
850
988
  type?: 'text' | 'number' | 'password' | 'time' | 'email';
851
989
  iconRight?: IconInterface$1;
852
990
  iconLeft?: IconInterface$1;
@@ -863,6 +1001,7 @@ declare const Input: {
863
1001
  };
864
1002
 
865
1003
  interface ImageProps {
1004
+ id?: string;
866
1005
  src: string;
867
1006
  alt?: string;
868
1007
  className?: string;
@@ -870,6 +1009,7 @@ interface ImageProps {
870
1009
  customCellComponent?: ReactNode;
871
1010
  aspectRatio?: Partial<AspectRatioTypes>;
872
1011
  hoverOverlayColor?: Partial<ColorTypes>;
1012
+ /** @default false */
873
1013
  bgImage?: boolean;
874
1014
  bgImageProps?: {
875
1015
  size: 'cover' | 'contain';
@@ -877,17 +1017,19 @@ interface ImageProps {
877
1017
  };
878
1018
  placeHolderColor?: string;
879
1019
  customComponent?: ReactNode;
1020
+ /** @default false */
880
1021
  withContainer?: boolean;
881
1022
  }
882
1023
 
883
1024
  declare const Image: {
884
- ({ src, alt, className, imageClassName, withContainer, placeHolderColor, hoverOverlayColor, bgImage, bgImageProps, aspectRatio, customComponent }: ImageProps): JSX.Element;
1025
+ ({ id, src, alt, className, imageClassName, withContainer, placeHolderColor, hoverOverlayColor, bgImage, bgImageProps, aspectRatio, customComponent }: ImageProps): JSX.Element;
885
1026
  displayName: string;
886
1027
  };
887
1028
 
888
1029
  interface InlineButtonProps {
889
1030
  text: string;
890
- id?: string | number;
1031
+ id?: string;
1032
+ /** @default false */
891
1033
  loading?: boolean;
892
1034
  ariaLabel?: string;
893
1035
  onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
@@ -895,25 +1037,36 @@ interface InlineButtonProps {
895
1037
  children?: ReactNode;
896
1038
  icon?: Partial<IconTypes>;
897
1039
  iconSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1040
+ /** @default false */
898
1041
  rotateIcon?: boolean;
899
1042
  rotateIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
900
1043
  iconClassName?: string;
1044
+ /** @default false */
901
1045
  withIconRight?: boolean;
1046
+ /** @default HierarchyTypes.PRIMARY */
902
1047
  type?: HierarchyTypes.PRIMARY | HierarchyTypes.SECONDARY | HierarchyTypes.TERTIARY;
1048
+ /** @default SizeTypes.MEDIUM */
903
1049
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM;
904
1050
  sizeMd?: SizeTypes.SMALL | SizeTypes.MEDIUM;
905
1051
  sizeLg?: SizeTypes.SMALL | SizeTypes.MEDIUM;
906
1052
  sizeXl?: SizeTypes.SMALL | SizeTypes.MEDIUM;
907
1053
  textClassName?: string;
1054
+ /** @default false */
908
1055
  withEllipsis?: boolean;
1056
+ /** @default false */
909
1057
  withoutHoverEffect?: boolean;
1058
+ /** @default false */
910
1059
  withPrimaryHoverEffect?: boolean;
1060
+ /** @default false */
911
1061
  withSecondaryHoverEffect?: boolean;
1062
+ /** @default false */
912
1063
  withTertiaryHoverEffect?: boolean;
1064
+ /** @default false */
913
1065
  disabled?: boolean | undefined;
914
1066
  style?: CSSProperties;
915
1067
  buttonRef?: RefObject<HTMLButtonElement>;
916
1068
  tabIndex?: number;
1069
+ /** @default false */
917
1070
  autoFocus?: boolean;
918
1071
  toolTip?: string;
919
1072
  toolTipComponent?: ReactNode;
@@ -921,6 +1074,51 @@ interface InlineButtonProps {
921
1074
 
922
1075
  declare const InlineButton: react.MemoExoticComponent<({ className, id, loading, ariaLabel, text, buttonRef, style, size, sizeMd, sizeLg, sizeXl, type, textClassName, children, icon, withIconRight, withoutHoverEffect, withPrimaryHoverEffect, withSecondaryHoverEffect, withTertiaryHoverEffect, iconSize, autoFocus, iconClassName, tabIndex, rotateIcon, rotateIconByDegree, onClickCallback, withEllipsis, disabled, toolTip, toolTipComponent }: InlineButtonProps) => JSX.Element>;
923
1076
 
1077
+ interface LinkProps {
1078
+ href?: string;
1079
+ /** Renders a react-router Link instead of an anchor. Requires a surrounding Router. */
1080
+ to?: string;
1081
+ text?: string;
1082
+ icon?: Partial<IconTypes>;
1083
+ /** @default ColorTypes.CURRENT */
1084
+ iconColor?: Partial<ColorTypes>;
1085
+ /** @default '_blank' */
1086
+ target?: '_blank' | '_self';
1087
+ children?: ReactNode;
1088
+ onClickCallback?: (event: MouseEvent<HTMLAnchorElement>) => void;
1089
+ /** The link leads to a site outside the domain */
1090
+ external?: boolean;
1091
+ /** @default LinkTypes.SECONDARY */
1092
+ color?: LinkTypes.SECONDARY | LinkTypes.PRIMARY | LinkTypes.WHITE;
1093
+ /** @default '600' */
1094
+ fontWeight?: '300' | '400' | '600' | '700';
1095
+ /** @default 'm' */
1096
+ fontSize?: 's' | 'm' | 'l';
1097
+ className?: string;
1098
+ iconClassName?: string;
1099
+ /** Applied to the element wrapping the link's text, for callers that need to style the label itself. */
1100
+ textClassName?: string;
1101
+ ariaLabel?: string;
1102
+ /**
1103
+ * Marks this link as the one matching the current view, e.g. 'page' for the open item in a
1104
+ * navigation list. Set it yourself rather than relying on route matching, so callers that decide
1105
+ * "current" their own way stay authoritative.
1106
+ */
1107
+ ariaCurrent?: AriaAttributes['aria-current'];
1108
+ /** @default false */
1109
+ disabled?: boolean;
1110
+ /** @default true */
1111
+ withIconRight?: boolean;
1112
+ /** @default false */
1113
+ displayAsButton?: boolean;
1114
+ /** @default false */
1115
+ withEllipsis?: boolean;
1116
+ /** @default false */
1117
+ withWordBreak?: boolean;
1118
+ }
1119
+
1120
+ declare const Link: FC<LinkProps>;
1121
+
924
1122
  interface IconInterface {
925
1123
  loading?: boolean;
926
1124
  disabled?: boolean;
@@ -938,10 +1136,13 @@ interface TextAreaInputProps {
938
1136
  onBlur?: () => void;
939
1137
  iconRight?: IconInterface;
940
1138
  iconLeft?: IconInterface;
1139
+ /** @default 5 */
941
1140
  rows?: number;
1141
+ /** @default '' */
942
1142
  placeholder?: string;
943
- id?: number | string;
1143
+ id?: string;
944
1144
  label?: string;
1145
+ /** @default true */
945
1146
  withLabel?: boolean;
946
1147
  name?: string;
947
1148
  ariaLabel?: string;
@@ -950,11 +1151,15 @@ interface TextAreaInputProps {
950
1151
  inputClassName?: string;
951
1152
  iconClassName?: string;
952
1153
  className?: string;
1154
+ /** @default false */
953
1155
  disabled?: boolean;
1156
+ /** @default false */
954
1157
  marginBottom?: boolean;
1158
+ /** @default false */
955
1159
  autoFocus?: boolean;
956
1160
  inputRef?: RefObject<HTMLTextAreaElement>;
957
1161
  style?: CSSProperties;
1162
+ /** @default false */
958
1163
  readonly?: boolean;
959
1164
  }
960
1165
 
@@ -963,19 +1168,86 @@ declare const TextAreaInput: {
963
1168
  displayName: string;
964
1169
  };
965
1170
 
1171
+ interface ListButtonProps {
1172
+ /** Label of the row. Fades out under a gradient when it is too long to fit. */
1173
+ text: string;
1174
+ /**
1175
+ * Renders the row as a react-router link rather than a button, so that middle click and
1176
+ * open-in-new-tab keep working. Requires a surrounding Router.
1177
+ */
1178
+ to?: string;
1179
+ /** Applied to the row, for spacing and for restyling the row itself. */
1180
+ className?: string;
1181
+ /** Applied to the clickable area holding the icon and the label. */
1182
+ buttonClassName?: string;
1183
+ /**
1184
+ * Applied to the label. A caller that gives the row its own background needs this to match the
1185
+ * fadeout to it, since the gradient has to end in the colour behind the text.
1186
+ */
1187
+ labelClassName?: string;
1188
+ iconClassName?: string;
1189
+ icon?: Partial<IconTypes>;
1190
+ /** Shown at the end of the row at all times, for badges, spinners or status dots. */
1191
+ rightComponent?: ReactNode;
1192
+ /**
1193
+ * Shown at the end of the row on hover and on keyboard focus. Replaces `rightComponent` while
1194
+ * visible; neither reserves space while hidden, so the label keeps the full width until then.
1195
+ */
1196
+ hoverComponent?: ReactNode;
1197
+ /** Renders the row in its selected colours. */
1198
+ selected?: boolean;
1199
+ /** @default false */
1200
+ disabled?: boolean;
1201
+ /** @default SizeTypes.SMALL */
1202
+ size?: SizeTypes.SMALL | SizeTypes.MEDIUM;
1203
+ id?: string;
1204
+ /** Use when `text` alone does not describe the action. */
1205
+ ariaLabel?: string;
1206
+ /** Button variant only. */
1207
+ toolTip?: string;
1208
+ /** Button variant only. */
1209
+ tabIndex?: number;
1210
+ /** Button variant only. @default false */
1211
+ autoFocus?: boolean;
1212
+ /** Button variant only. */
1213
+ buttonRef?: RefObject<HTMLButtonElement>;
1214
+ onClickCallback?: () => void;
1215
+ }
1216
+
1217
+ /**
1218
+ * A full width row that reads as a single button: an optional icon, a label that fades out rather
1219
+ * than ellipsises when it overflows, and an end slot whose contents swap on hover.
1220
+ *
1221
+ * The row and the clickable area are separate elements so that `rightComponent` and `hoverComponent`
1222
+ * can hold their own buttons without nesting them inside this one. Without `to` the clickable area
1223
+ * is an InlineButton and its props carry through; with `to` it is a link.
1224
+ */
1225
+ declare const ListButton: {
1226
+ ({ text, to, className, buttonClassName, labelClassName, iconClassName, icon, rightComponent, hoverComponent, selected, disabled, size, id, ariaLabel, toolTip, tabIndex, autoFocus, buttonRef, onClickCallback }: ListButtonProps): JSX.Element;
1227
+ displayName: string;
1228
+ };
1229
+
966
1230
  interface ListItemProps extends MarginInterface, PaddingInterface {
1231
+ id?: string;
967
1232
  buttonsComponent?: ReactNode;
968
1233
  contentComponent?: ReactNode;
969
1234
  className?: string;
970
1235
  imageSrc?: string;
1236
+ /** @default true */
971
1237
  withBorderRadius?: boolean;
1238
+ /** @default false */
972
1239
  withHoverEffect?: boolean;
1240
+ /** @default true */
973
1241
  withEllipsis?: boolean;
974
1242
  imageIcon?: Partial<IconTypes>;
1243
+ /** @default SizeTypes.MEDIUM */
975
1244
  size: Partial<SizeTypes>;
1245
+ /** @default AspectRatioTypes.ar1_1 */
976
1246
  imageAspectRatio?: Partial<AspectRatioTypes>;
977
1247
  borderColor?: Partial<ColorTypes>;
1248
+ /** @default ColorTypes.WHITE */
978
1249
  backgroundColor?: Partial<ColorTypes>;
1250
+ /** @default 'li' */
979
1251
  wrapperElement?: 'div' | 'li' | 'section' | 'link';
980
1252
  border?: '1' | '2' | '3';
981
1253
  borderTop?: '1' | '2' | '3';
@@ -988,34 +1260,45 @@ interface ListItemProps extends MarginInterface, PaddingInterface {
988
1260
  }
989
1261
 
990
1262
  declare const ListItem: {
991
- ({ wrapperElement, backgroundColor, size, padding, imageAspectRatio, withBorderRadius, withEllipsis, withHoverEffect, onClickCallback, linkTo, borderColor, border, title, imageContainerClassName, imageIcon, imageSrc, description, borderTop, borderBottom, marginBottom, paddingX, paddingY, paddingTop, paddingBottom, paddingRight, paddingLeft, className, buttonsComponent, contentComponent }: ListItemProps): JSX.Element;
1263
+ ({ id, wrapperElement, backgroundColor, size, padding, imageAspectRatio, withBorderRadius, withEllipsis, withHoverEffect, onClickCallback, linkTo, borderColor, border, title, imageContainerClassName, imageIcon, imageSrc, description, borderTop, borderBottom, marginBottom, paddingX, paddingY, paddingTop, paddingBottom, paddingRight, paddingLeft, className, buttonsComponent, contentComponent }: ListItemProps): JSX.Element;
992
1264
  displayName: string;
993
1265
  };
994
1266
 
995
1267
  interface ListSkeletonProps extends MarginInterface, PaddingInterface {
1268
+ id?: string;
996
1269
  items: number;
1270
+ /** @default '60px' */
997
1271
  itemHeight?: string;
998
1272
  className?: string;
999
1273
  itemClassName?: string;
1274
+ /** @default false */
1000
1275
  withBorderRadius?: boolean;
1276
+ /** @default false */
1001
1277
  withContent?: boolean;
1278
+ /** @default false */
1002
1279
  withImage?: boolean;
1280
+ /** @default false */
1003
1281
  withImageRadius?: boolean;
1282
+ /** @default false */
1004
1283
  withLoadingAnimation?: boolean;
1284
+ /** @default 2 */
1005
1285
  itemContentRows?: number;
1286
+ /** @default ColorTypes.WHITE */
1006
1287
  backgroundColor?: Partial<ColorTypes>;
1007
1288
  borderColor?: Partial<ColorTypes>;
1289
+ /** @default ColorTypes.GREY_1 */
1008
1290
  imageColor?: Partial<ColorTypes>;
1009
1291
  border?: '1' | '2' | '3';
1010
1292
  borderTop?: '1' | '2' | '3';
1011
1293
  borderBottom?: '1' | '2' | '3';
1012
1294
  borderRight?: '1' | '2' | '3';
1013
1295
  borderLeft?: '1' | '2' | '3';
1296
+ /** @default ColorTypes.GREY_1 */
1014
1297
  contentColor?: Partial<ColorTypes>;
1015
1298
  }
1016
1299
 
1017
1300
  declare const ListSkeleton: {
1018
- ({ items, className, itemClassName, backgroundColor, contentColor, imageColor, withImage, withImageRadius, withLoadingAnimation, itemContentRows, itemHeight, marginBottom, padding, borderColor, border, borderTop, borderLeft, borderBottom, borderRight, withBorderRadius }: ListSkeletonProps): JSX.Element;
1301
+ ({ id, items, className, itemClassName, backgroundColor, contentColor, imageColor, withImage, withImageRadius, withLoadingAnimation, itemContentRows, itemHeight, marginBottom, padding, borderColor, border, borderTop, borderLeft, borderBottom, borderRight, withBorderRadius }: ListSkeletonProps): JSX.Element;
1019
1302
  displayName: string;
1020
1303
  };
1021
1304
 
@@ -1023,7 +1306,9 @@ interface MultiActionButtonProps {
1023
1306
  text?: string;
1024
1307
  onLeftClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
1025
1308
  onRightClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
1309
+ /** @default HierarchyTypes.PRIMARY */
1026
1310
  type?: HierarchyTypes.PRIMARY | HierarchyTypes.SECONDARY | HierarchyTypes.TERTIARY | HierarchyTypes.QUATERNARY;
1311
+ /** @default SizeTypes.MEDIUM */
1027
1312
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1028
1313
  sizeMd?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1029
1314
  sizeLg?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
@@ -1035,16 +1320,21 @@ interface MultiActionButtonProps {
1035
1320
  rotateLeftIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
1036
1321
  rotateMiddleIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
1037
1322
  rotateRightIconByDegree?: 0 | 45 | 90 | 135 | 180 | 225 | 270 | 315;
1323
+ /** @default false */
1038
1324
  disabled?: boolean;
1039
1325
  className?: string;
1040
1326
  innerClassName?: string;
1041
1327
  iconClassName?: string;
1042
1328
  toolTip?: string;
1043
1329
  toolTipComponent?: ReactNode;
1044
- id?: string | number;
1330
+ id?: string;
1331
+ /** @default false */
1045
1332
  loading?: boolean;
1333
+ /** @default false */
1046
1334
  withEllipsis?: boolean;
1335
+ /** @default 'left' */
1047
1336
  textPosition?: 'center' | 'left' | 'right';
1337
+ /** @default false */
1048
1338
  autoFocus?: boolean;
1049
1339
  leftAriaLabel?: string;
1050
1340
  rightAriaLabel?: string;
@@ -1057,79 +1347,113 @@ declare const MultiActionButton: {
1057
1347
  };
1058
1348
 
1059
1349
  interface SeparatorProps extends MarginInterface, PaddingInterface {
1350
+ id?: string;
1060
1351
  className?: string;
1352
+ /** @default ColorTypes.GREY_3 */
1061
1353
  color?: Partial<ColorTypes>;
1354
+ /** @default 'vertical' */
1062
1355
  orientation?: 'vertical' | 'horizontal';
1356
+ /** @default SizeTypes.MEDIUM */
1063
1357
  size?: SizeTypes.AUTO | SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1064
1358
  }
1065
1359
 
1066
1360
  declare const Separator: {
1067
- ({ className, margin, marginY, marginBottom, marginTop, marginLeft, marginRight, marginX, padding, paddingY, paddingRight, paddingTop, paddingBottom, paddingLeft, paddingX, orientation, size, color }: SeparatorProps): JSX.Element;
1361
+ ({ id, className, margin, marginY, marginBottom, marginTop, marginLeft, marginRight, marginX, padding, paddingY, paddingRight, paddingTop, paddingBottom, paddingLeft, paddingX, orientation, size, color }: SeparatorProps): JSX.Element;
1068
1362
  displayName: string;
1069
1363
  };
1070
1364
 
1071
1365
  interface SolidSpinnerProps {
1366
+ id?: string;
1367
+ /** @default HierarchyTypes.PRIMARY */
1072
1368
  type?: HierarchyTypes.PRIMARY | HierarchyTypes.SECONDARY | HierarchyTypes.TERTIARY | HierarchyTypes.QUATERNARY;
1369
+ /** @default SizeTypes.MEDIUM */
1073
1370
  size?: SizeTypes.EXTRA_SMALL | SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1371
+ /** @default false */
1074
1372
  disabled?: boolean;
1075
1373
  className?: string;
1076
1374
  label?: string;
1077
1375
  labelClassName?: string;
1376
+ /** @default false */
1078
1377
  absoluteCenter?: boolean;
1079
1378
  }
1080
1379
 
1081
1380
  declare const SolidSpinner: {
1082
- ({ className, disabled, type, size, label, labelClassName, absoluteCenter }: SolidSpinnerProps): JSX.Element;
1381
+ ({ id, className, disabled, type, size, label, labelClassName, absoluteCenter }: SolidSpinnerProps): JSX.Element;
1083
1382
  displayName: string;
1084
1383
  };
1085
1384
 
1086
- interface CellInterface {
1385
+ interface SortableTableCellInterface {
1386
+ /** Key on each `data` row whose value fills this column. Also the key handed to `onSortCallback` and matched against `sortBy`. */
1087
1387
  key: string;
1388
+ /** Visible column heading. */
1088
1389
  title: string;
1390
+ /** Column width, as a percentage (`'25%'`) or a fixed value (`'120px'`). Applied inline to both the header and body cells. */
1089
1391
  width: string;
1090
- icon?: Partial<IconTypes>;
1392
+ /** Renders the heading as static text with no sort button. @default false */
1091
1393
  disableSort?: boolean;
1394
+ /** Right-aligns the cell contents, and moves the sort chevron to the left of the heading. @default false */
1092
1395
  alignRight?: boolean;
1396
+ /** Centres the cell contents. @default false */
1093
1397
  alignCenter?: boolean;
1398
+ /** Truncates overflowing cell content with an ellipsis instead of wrapping. @default false */
1094
1399
  withEllipsis?: boolean;
1400
+ /** Tooltip on the heading. Falls back to `title` when omitted. */
1095
1401
  toolTip?: string;
1402
+ /** Applied to the content span inside every body cell of this column, not to the cell itself. */
1096
1403
  className?: string;
1097
- customHeaderCellComponent?: (cell: CellInterface) => ReactNode | JSX.Element;
1404
+ /** Replaces the whole heading, including the sort button. Receives the cell config. */
1405
+ customHeaderCellComponent?: (cell: SortableTableCellInterface) => ReactNode | JSX.Element;
1406
+ /** Replaces the cell value. Receives the whole row, so it can read keys other than `key`. */
1098
1407
  customCellComponent?: (row: any) => ReactNode | JSX.Element;
1099
1408
  }
1100
1409
  interface SortableTableProps {
1101
- cells: Array<{
1102
- key: string;
1103
- title: string;
1104
- width: string;
1105
- icon?: Partial<IconTypes>;
1106
- disableSort?: boolean;
1107
- alignRight?: boolean;
1108
- alignCenter?: boolean;
1109
- withEllipsis?: boolean;
1110
- toolTip?: string;
1111
- className?: string;
1112
- customHeaderCellComponent?: (cell: CellInterface) => ReactNode | JSX.Element;
1113
- customCellComponent?: (row: any) => ReactNode | JSX.Element;
1114
- }>;
1410
+ /** Applied to the outer container element. */
1411
+ id?: string;
1412
+ /**
1413
+ * Visual treatment. `RULED` separates rows with a hairline. `CARDS` gives each row a white
1414
+ * background, rounded corners and a gap, which only reads as separate rows against a tinted
1415
+ * page — put it on `$application-background`, not inside a white card.
1416
+ * @default TableTypes.RULED
1417
+ */
1418
+ type?: TableTypes.RULED | TableTypes.CARDS;
1419
+ /** Column configuration, in render order. */
1420
+ cells: Array<SortableTableCellInterface>;
1421
+ /** Row objects. Each is passed to `customCellComponent`, and indexed by `cell.key` otherwise. */
1115
1422
  data: Array<any>;
1423
+ /**
1424
+ * Active sort. Without `onSortCallback` the table sorts `data` itself and treats this as the initial
1425
+ * state only; with `onSortCallback` the table is controlled and this must reflect the current sort.
1426
+ * @default [{ keyName: 'name', ascending: true }]
1427
+ */
1116
1428
  sortBy: Array<{
1117
1429
  keyName: string;
1118
1430
  ascending: boolean;
1119
1431
  }>;
1432
+ /** Applied to the outer container element. */
1120
1433
  className?: string;
1434
+ /** Applied to every body row. */
1121
1435
  rowClassName?: string;
1436
+ /** Applied to the header row. */
1122
1437
  headerClassName?: string;
1438
+ /** Applied to the `tbody`. */
1123
1439
  bodyClassName?: string;
1440
+ /** Applied to the loading spinner. */
1124
1441
  spinnerClassName?: string;
1442
+ /** Accessible table description. Visually hidden, so it is for screen readers only. */
1125
1443
  caption?: string;
1444
+ /** Replaces rows with skeleton placeholders and shows a spinner. Sorting is disabled while true. @default false */
1126
1445
  loading?: boolean;
1446
+ /** Number of skeleton rows to render while `loading`. @default 6 */
1127
1447
  skeletonRows?: number;
1448
+ /** Pins the header to the top of the nearest scroll container. @default false */
1128
1449
  withStickyHeader?: boolean;
1450
+ /** Defers rendering each row until it scrolls into view. For long lists. @default false */
1129
1451
  withIntersectionObserver?: boolean;
1452
+ /** Minimum table width, e.g. `'900px'`. Makes the container scroll horizontally below it. */
1130
1453
  minWidth?: string;
1454
+ /** Takes over sorting. When given, the table stops sorting `data` and becomes controlled by `sortBy`. */
1131
1455
  onSortCallback?: (keyName: string, ascending: boolean) => void;
1132
- pagination?: SearchResultInterface;
1456
+ /** Shown in place of the rows when `data` is empty and `loading` is false. */
1133
1457
  noDataMessage?: {
1134
1458
  title?: string;
1135
1459
  icon?: Partial<IconTypes>;
@@ -1138,23 +1462,110 @@ interface SortableTableProps {
1138
1462
  }
1139
1463
 
1140
1464
  declare const SortableTable: {
1141
- ({ cells, data, sortBy, skeletonRows, loading, caption, className, headerClassName, rowClassName, bodyClassName, spinnerClassName, withStickyHeader, withIntersectionObserver, noDataMessage, minWidth, onSortCallback }: SortableTableProps): JSX.Element;
1465
+ ({ id, cells, data, sortBy, skeletonRows, loading, caption, className, headerClassName, rowClassName, bodyClassName, spinnerClassName, withStickyHeader, withIntersectionObserver, noDataMessage, minWidth, onSortCallback, type }: SortableTableProps): JSX.Element;
1142
1466
  displayName: string;
1143
1467
  };
1144
1468
 
1469
+ interface TableAction {
1470
+ icon: Partial<IconTypes>;
1471
+ /** Tooltip, and the accessible name of the button. Required, because the button has no visible text. */
1472
+ toolTip: string;
1473
+ onClickCallback: (event: MouseEvent<HTMLButtonElement>) => void;
1474
+ /** @default false */
1475
+ disabled?: boolean;
1476
+ id?: string;
1477
+ }
1478
+ interface TableActionsCellProps {
1479
+ /** Buttons to render, in order. */
1480
+ actions: Array<TableAction>;
1481
+ /** Size of every button in the group. @default SizeTypes.SMALL */
1482
+ size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1483
+ /** Text shown before the buttons. For bulk headers, e.g. "3 selected". */
1484
+ label?: string;
1485
+ className?: string;
1486
+ }
1487
+
1488
+ declare const TableActionsCell: FC<TableActionsCellProps>;
1489
+
1490
+ interface TableSelectionCellProps {
1491
+ /** Whether this row is selected. */
1492
+ checked: boolean;
1493
+ /** Fired with the next selected state. */
1494
+ onChangeCallback: (checked: boolean) => void;
1495
+ /** Accessible name for the checkbox, e.g. `Select ${row.name}`. Never rendered visibly. */
1496
+ label: string;
1497
+ /** @default false */
1498
+ disabled?: boolean;
1499
+ className?: string;
1500
+ }
1501
+
1502
+ declare const TableSelectionCell: FC<TableSelectionCellProps>;
1503
+
1504
+ interface TableSelectionHeaderCellProps {
1505
+ /** How many rows are currently selected. Drives both the checked and indeterminate states. */
1506
+ selectedCount: number;
1507
+ /** How many rows are selectable in total. Usually the full result count, not just the loaded page. */
1508
+ totalCount: number;
1509
+ /** Fired with the next selected state: true to select every row, false to clear the selection. */
1510
+ onChangeCallback: (selectAll: boolean) => void;
1511
+ /** Accessible name for the checkbox. Never rendered visibly. */
1512
+ label: string;
1513
+ /**
1514
+ * Bulk actions revealed once at least one row is selected. Supply already-translated tooltips.
1515
+ * Omit to keep the header as a plain select-all checkbox.
1516
+ */
1517
+ actions?: Array<TableAction>;
1518
+ /** Text beside the bulk actions, e.g. `${selectedCount} selected`. Only shown when `actions` are present. */
1519
+ selectedLabel?: string;
1520
+ /** @default false */
1521
+ disabled?: boolean;
1522
+ className?: string;
1523
+ }
1524
+
1525
+ declare const TableSelectionHeaderCell: FC<TableSelectionHeaderCellProps>;
1526
+
1527
+ interface TableTextCellProps {
1528
+ /** Primary value. */
1529
+ text: string | number;
1530
+ /** Second line below `text`, rendered smaller and muted. For the common "name over email" cell. */
1531
+ secondaryText?: string | number;
1532
+ /** Colour of the primary line. Use for status values such as an inactive row. */
1533
+ color?: Partial<ColorTypes>;
1534
+ /** Weight of the primary line. @default '400' */
1535
+ fontWeight?: TypographyFontWeight;
1536
+ /**
1537
+ * Truncates both lines with an ellipsis. A tooltip carrying the full text is added automatically,
1538
+ * so truncated values stay readable.
1539
+ * @default false
1540
+ */
1541
+ withEllipsis?: boolean;
1542
+ /** Overrides the tooltip that `withEllipsis` derives from `text`. Set on its own to add a tooltip without truncating. */
1543
+ toolTip?: string;
1544
+ className?: string;
1545
+ }
1546
+
1547
+ declare const TableTextCell: FC<TableTextCellProps>;
1548
+
1145
1549
  interface SwitchButtonProps {
1146
1550
  checked: boolean;
1147
- id?: string | number;
1551
+ id?: string;
1148
1552
  label?: string;
1149
1553
  name?: string;
1554
+ /** @default false */
1150
1555
  withLabel?: boolean;
1556
+ /** @default false */
1151
1557
  withInlineLabel?: boolean;
1558
+ /** @default false */
1152
1559
  withEllipsis?: boolean;
1153
1560
  ariaLabel?: string;
1561
+ /** @default false */
1154
1562
  disabled?: boolean;
1563
+ /** @default false */
1155
1564
  autoFocus?: boolean;
1565
+ /** @default false */
1156
1566
  alignCenter?: boolean;
1157
1567
  className?: string;
1568
+ /** @default false */
1158
1569
  marginBottom?: boolean;
1159
1570
  buttonRef?: RefObject<HTMLInputElement>;
1160
1571
  onClickCallback: () => void;
@@ -1167,6 +1578,115 @@ declare const SwitchButton: {
1167
1578
  displayName: string;
1168
1579
  };
1169
1580
 
1581
+ /**
1582
+ * Identifies a tab within its group. Numbers and strings are both supported so a group can be driven
1583
+ * by an index, an id or a route segment.
1584
+ */
1585
+ type TabValue = string | number;
1586
+ interface TabProps {
1587
+ /**
1588
+ * Identifies the tab. Defaults to the tab's position within its TabGroup, so it only needs to be
1589
+ * set when the group is driven by something other than an index.
1590
+ */
1591
+ value?: TabValue;
1592
+ /** Label of the tab. Rendered after `children`. */
1593
+ text?: string;
1594
+ /** Rendered before `text`, for badges, avatars or icon lists alongside the label. */
1595
+ children?: ReactNode;
1596
+ className?: string;
1597
+ id?: string;
1598
+ /** @default false */
1599
+ disabled?: boolean;
1600
+ /** @default false */
1601
+ autoFocus?: boolean;
1602
+ /** @default SizeTypes.MEDIUM */
1603
+ tabSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1604
+ /** Share the group's width equally with its siblings. Normally set by TabGroup. @default false */
1605
+ fullWidth?: boolean;
1606
+ /** Remove the tab's horizontal padding. Normally set by TabGroup. @default false */
1607
+ noPadding?: boolean;
1608
+ /**
1609
+ * Ellipsis the label instead of wrapping it, shrinking the tab to fit rather than letting the group
1610
+ * scroll. Normally set by TabGroup.
1611
+ * @default false
1612
+ */
1613
+ truncateText?: boolean;
1614
+ /** Normally set by TabGroup from its `value`. @default false */
1615
+ selected?: boolean;
1616
+ /** Render a chevron before the tab. Normally set by TabGroup's `withArrows`. @default false */
1617
+ withArrow?: boolean;
1618
+ /** Accessible name for the chevron rendered by `withArrow`. @default 'Arrow' */
1619
+ arrowAriaLabel?: string;
1620
+ /**
1621
+ * Id of the panel this tab controls. Set it, give that panel `role="tabpanel"`, and point the
1622
+ * panel's `aria-labelledby` back at this tab's `id`, and the two are announced as a pair.
1623
+ */
1624
+ ariaControls?: string;
1625
+ /**
1626
+ * Whether this tab is the one reachable with the Tab key. A tab list is a single stop in the tab
1627
+ * order and the arrow keys move within it, so only one tab carries it. Set by TabGroup.
1628
+ * @default false
1629
+ */
1630
+ tabbable?: boolean;
1631
+ toolTip?: string;
1632
+ /** Called with the tab's `value` when it is activated. Normally set by TabGroup. */
1633
+ onChange?: (value: TabValue) => void;
1634
+ /** Called with the tab's `value` when it is activated, after `onChange`. */
1635
+ onClickCallback?: (value: TabValue) => void;
1636
+ }
1637
+
1638
+ declare const Tab: {
1639
+ ({ children, className, id, disabled, fullWidth, noPadding, truncateText, autoFocus, selected, withArrow, arrowAriaLabel, ariaControls, tabbable, text, toolTip, onChange, onClickCallback, value, tabSize }: TabProps): JSX.Element;
1640
+ displayName: string;
1641
+ };
1642
+
1643
+ interface TabIndicatorProps {
1644
+ className?: string;
1645
+ /** Renders the indicator in the disabled colour. @default false */
1646
+ disabled?: boolean;
1647
+ style?: CSSProperties;
1648
+ }
1649
+ interface TabGroupProps {
1650
+ /**
1651
+ * Value of the selected Tab, matched against each Tab's `value`. Pass `false` for no selection at
1652
+ * all, which hides the indicator rather than animating it away.
1653
+ */
1654
+ value: TabValue | false;
1655
+ /** Tab elements. Falsy entries are skipped, so tabs can be rendered conditionally. */
1656
+ children: ReactNode;
1657
+ /** Called with the selected Tab's `value`. Tabs may also carry their own `onClickCallback`. */
1658
+ onChange?: (value: TabValue) => void;
1659
+ className?: string;
1660
+ id?: string;
1661
+ /** Accessible name for the tab list. */
1662
+ ariaLabel?: string;
1663
+ /** Centre the tabs within the group. @default false */
1664
+ centered?: boolean;
1665
+ /** Let the tabs share the group's width equally. @default false */
1666
+ fullWidth?: boolean;
1667
+ /** Remove the tabs' horizontal padding. @default false */
1668
+ noPadding?: boolean;
1669
+ /**
1670
+ * Ellipsis tab labels instead of wrapping them, shrinking the tabs to fit rather than letting the
1671
+ * group scroll.
1672
+ * @default false
1673
+ */
1674
+ truncateText?: boolean;
1675
+ /** Render a chevron before every tab except the first, for wizard style navigation. @default false */
1676
+ withArrows?: boolean;
1677
+ /** Accessible name for the chevrons rendered by `withArrows`. @default 'Arrow' */
1678
+ arrowAriaLabel?: string;
1679
+ /** Applied to every Tab. @default SizeTypes.MEDIUM */
1680
+ tabSize?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1681
+ /** Styling overrides for the underline that tracks the selected tab. */
1682
+ tabIndicatorProps?: TabIndicatorProps;
1683
+ }
1684
+
1685
+ declare const TabGroup: {
1686
+ ({ children: childrenProp, className, id, ariaLabel, onChange, tabIndicatorProps, value, tabSize, noPadding, truncateText, centered, fullWidth, withArrows, arrowAriaLabel }: TabGroupProps): JSX.Element;
1687
+ displayName: string;
1688
+ };
1689
+
1170
1690
  interface OptionItem {
1171
1691
  text: string;
1172
1692
  value: string | number;
@@ -1174,21 +1694,27 @@ interface OptionItem {
1174
1694
  }
1175
1695
  interface SelectInputProps {
1176
1696
  inputRef?: RefObject<HTMLSelectElement>;
1177
- id?: string | number;
1697
+ id?: string;
1178
1698
  className?: string;
1179
1699
  inputClassName?: string;
1180
1700
  defaultOption?: string;
1701
+ /** @default SizeTypes.MEDIUM */
1181
1702
  size?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1182
1703
  sizeMd?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1183
1704
  sizeLg?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1184
1705
  sizeXl?: SizeTypes.SMALL | SizeTypes.MEDIUM | SizeTypes.LARGE;
1706
+ /** @default false */
1185
1707
  disabled?: boolean;
1708
+ /** @default true */
1186
1709
  withLabel?: boolean;
1187
1710
  error?: string;
1188
1711
  helperText?: string;
1189
1712
  text?: string;
1713
+ /** @default false */
1190
1714
  marginBottom?: boolean;
1715
+ /** @default false */
1191
1716
  autoFocus?: boolean;
1717
+ /** @default false */
1192
1718
  loading?: boolean;
1193
1719
  ariaLabel?: string;
1194
1720
  label?: string;
@@ -1196,6 +1722,7 @@ interface SelectInputProps {
1196
1722
  onChange: (value: string | number) => void;
1197
1723
  options: Array<OptionItem>;
1198
1724
  value: string | number;
1725
+ /** @default true */
1199
1726
  nativeHtmlComponent?: boolean;
1200
1727
  }
1201
1728
 
@@ -1231,38 +1758,8 @@ declare const ToolTip: {
1231
1758
  displayName: string;
1232
1759
  };
1233
1760
 
1234
- interface TypographyBaseProps extends ColorStyleInterface, MarginInterface, PaddingInterface {
1235
- className?: string;
1236
- textAlign?: string;
1237
- fontWeight?: string;
1238
- fontSize?: string;
1239
- fontStyle?: string;
1240
- meta?: boolean;
1241
- withBorderBottom?: boolean;
1242
- withEllipsis?: boolean;
1243
- withNoWordBreak?: boolean;
1244
- withWordBreak?: boolean;
1245
- disabled?: boolean;
1246
- }
1247
- interface HeadingProps extends TypographyBaseProps {
1248
- children: ReactNode;
1249
- type: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
1250
- style?: CSSProperties;
1251
- }
1252
- interface LabelProps extends TypographyBaseProps {
1253
- children: ReactNode | string;
1254
- htmlFor?: string;
1255
- style?: CSSProperties;
1256
- }
1257
- interface ParagraphProps extends TypographyBaseProps {
1258
- children: ReactNode;
1259
- }
1260
- interface SpanProps extends TypographyBaseProps {
1261
- children: ReactNode;
1262
- }
1263
-
1264
1761
  declare const Heading: {
1265
- ({ children, type, style, ...props }: HeadingProps): JSX.Element;
1762
+ ({ children, type, style, id, ...props }: HeadingProps): JSX.Element;
1266
1763
  displayName: string;
1267
1764
  defaultProps: {
1268
1765
  marginTop: string;
@@ -1271,52 +1768,62 @@ declare const Heading: {
1271
1768
  };
1272
1769
  };
1273
1770
  declare const Label: {
1274
- ({ children, htmlFor, style, ...props }: LabelProps): JSX.Element;
1771
+ ({ children, htmlFor, style, id, ...props }: LabelProps): JSX.Element;
1275
1772
  displayName: string;
1276
1773
  defaultProps: {
1277
1774
  marginBottom: string;
1278
1775
  };
1279
1776
  };
1280
1777
  declare const Paragraph: {
1281
- ({ children, ...props }: ParagraphProps): JSX.Element;
1778
+ ({ children, id, ...props }: ParagraphProps): JSX.Element;
1282
1779
  displayName: string;
1283
1780
  };
1284
1781
  declare const Span: {
1285
- ({ children, ...props }: SpanProps): JSX.Element;
1782
+ ({ children, id, ...props }: SpanProps): JSX.Element;
1286
1783
  displayName: string;
1287
1784
  };
1288
1785
 
1289
1786
  interface SkeletonItemProps extends MarginInterface, PaddingInterface {
1787
+ id?: string;
1290
1788
  className?: string;
1789
+ /** @default true */
1291
1790
  withBorderRadius?: boolean;
1791
+ /** @default 'div' */
1292
1792
  wrapperElement?: 'div' | 'li';
1293
1793
  height: string;
1294
1794
  width: string;
1295
1795
  contentRows?: number;
1796
+ /** @default ColorTypes.WHITE */
1296
1797
  backgroundColor?: Partial<ColorTypes>;
1297
1798
  borderColor?: Partial<ColorTypes>;
1298
1799
  imageColor?: Partial<ColorTypes>;
1800
+ /** @default ColorTypes.GREY_1 */
1299
1801
  contentColor?: Partial<ColorTypes>;
1300
1802
  border?: '1' | '2' | '3';
1301
1803
  borderTop?: '1' | '2' | '3';
1302
1804
  borderBottom?: '1' | '2' | '3';
1303
1805
  borderRight?: '1' | '2' | '3';
1304
1806
  borderLeft?: '1' | '2' | '3';
1807
+ /** @default false */
1305
1808
  withImage?: boolean;
1809
+ /** @default false */
1306
1810
  withImageRadius?: boolean;
1811
+ /** @default false */
1307
1812
  withLoadingAnimation?: boolean;
1308
1813
  }
1309
1814
 
1310
1815
  declare const SkeletonItem: {
1311
- ({ className, margin, marginY, marginTop, marginLeft, marginBottom, marginRight, marginX, paddingY, paddingBottom, paddingTop, paddingRight, paddingLeft, paddingX, height, width, contentRows, withImage, withImageRadius, withLoadingAnimation, imageColor, borderColor, border, borderTop, borderLeft, borderBottom, borderRight, contentColor, wrapperElement, padding, backgroundColor, withBorderRadius }: SkeletonItemProps): JSX.Element;
1816
+ ({ id, className, margin, marginY, marginTop, marginLeft, marginBottom, marginRight, marginX, paddingY, paddingBottom, paddingTop, paddingRight, paddingLeft, paddingX, height, width, contentRows, withImage, withImageRadius, withLoadingAnimation, imageColor, borderColor, border, borderTop, borderLeft, borderBottom, borderRight, contentColor, wrapperElement, padding, backgroundColor, withBorderRadius }: SkeletonItemProps): JSX.Element;
1312
1817
  displayName: string;
1313
1818
  };
1314
1819
 
1315
1820
  interface NoDataMessageProps {
1821
+ id?: string;
1316
1822
  className?: string;
1317
1823
  icon?: Partial<IconTypes>;
1318
1824
  title?: string;
1319
1825
  message?: string;
1826
+ /** @default false */
1320
1827
  absoluteCenter?: boolean;
1321
1828
  customLink?: ReactNode;
1322
1829
  button?: {
@@ -1327,8 +1834,8 @@ interface NoDataMessageProps {
1327
1834
  }
1328
1835
 
1329
1836
  declare const NoDataMessage: {
1330
- ({ icon, title, message, className, absoluteCenter, customLink, button }: NoDataMessageProps): JSX.Element;
1837
+ ({ id, icon, title, message, className, absoluteCenter, customLink, button }: NoDataMessageProps): JSX.Element;
1331
1838
  displayName: string;
1332
1839
  };
1333
1840
 
1334
- export { AppColors, AspectRatioTypes, BorderInterface, Box, Button, Card, Checkbox, ColorStyleInterface, ColorTypes, DropDown, DropDownItem, DropDownRef, FacetButton, FlexStylingInterface, FontFamilyTypes, FormSkeleton, Grid, Heading, HierarchyInterface, HierarchyTypes, Icon, IconButton, IconStyleInterface, IconTypes, Image, InlineButton, Input, Label, ListItem, ListSkeleton, MarginInterface, MultiActionButton, NoDataMessage, PaddingInterface, Pagination, Paragraph, RadioButton, SelectInput, Separator, SizeStyleInterface, SizeTypes, SkeletonItem, SolidSpinner, SortableTable, Span, SwitchButton, TextAreaInput, ToolTip, borderClassNames, flexClassNames, marginClassNames, paddingClassNames };
1841
+ export { AppColors, AspectRatioTypes, BorderInterface, Box, Button, Card, Checkbox, ColorStyleInterface, ColorTypes, DropDown, DropDownItem, DropDownRef, FacetButton, FlexStylingInterface, FontFamilyTypes, FormSkeleton, Grid, Heading, HierarchyInterface, HierarchyTypes, Icon, IconButton, IconStyleInterface, IconTypes, Image, InlineButton, Input, Label, Link, LinkTypes, ListButton, ListButtonProps, ListItem, ListSkeleton, MarginInterface, MultiActionButton, NoDataMessage, PaddingInterface, Pagination, Paragraph, RadioButton, SelectInput, Separator, SizeStyleInterface, SizeTypes, SkeletonItem, SolidSpinner, SortableTable, SortableTableCellInterface, SortableTableProps, Span, SwitchButton, Tab, TabGroup, TabGroupProps, TabIndicatorProps, TabProps, TabValue, TableAction, TableActionsCell, TableActionsCellProps, TableSelectionCell, TableSelectionCellProps, TableSelectionHeaderCell, TableSelectionHeaderCellProps, TableTextCell, TableTextCellProps, TableTypes, TextAreaInput, ToolTip, borderClassNames, flexClassNames, marginClassNames, paddingClassNames };