@indico-data/design-system 2.58.2 → 2.59.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.
Files changed (50) hide show
  1. package/lib/components/index.d.ts +1 -0
  2. package/lib/components/stepper/Stepper.d.ts +2 -0
  3. package/lib/components/stepper/Stepper.stories.d.ts +9 -0
  4. package/lib/components/stepper/__tests__/Stepper.tests.d.ts +1 -0
  5. package/lib/components/stepper/components/BackNavigation.d.ts +6 -0
  6. package/lib/components/stepper/components/Legend.d.ts +2 -0
  7. package/lib/components/stepper/components/NextNavigation.d.ts +8 -0
  8. package/lib/components/stepper/examples/MixedExample.d.ts +1 -0
  9. package/lib/components/stepper/examples/OptionalStepsExample.d.ts +1 -0
  10. package/lib/components/stepper/examples/RequiredStepsExample.d.ts +1 -0
  11. package/lib/components/stepper/examples/commonExample/CommonExample.d.ts +1 -0
  12. package/lib/components/stepper/examples/commonExample/steps/StepOne.d.ts +3 -0
  13. package/lib/components/stepper/examples/commonExample/steps/StepThree.d.ts +3 -0
  14. package/lib/components/stepper/examples/commonExample/steps/StepTwo.d.ts +3 -0
  15. package/lib/components/stepper/examples/constants.d.ts +61 -0
  16. package/lib/components/stepper/index.d.ts +1 -0
  17. package/lib/components/stepper/types.d.ts +24 -0
  18. package/lib/index.css +100 -2
  19. package/lib/index.d.ts +23 -2
  20. package/lib/index.esm.css +100 -2
  21. package/lib/index.esm.js +95 -29
  22. package/lib/index.esm.js.map +1 -1
  23. package/lib/index.js +94 -27
  24. package/lib/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/components/index.ts +1 -0
  27. package/src/components/stepper/Stepper.mdx +140 -0
  28. package/src/components/stepper/Stepper.stories.tsx +196 -0
  29. package/src/components/stepper/Stepper.tsx +85 -0
  30. package/src/components/stepper/__tests__/Stepper.tests.tsx +213 -0
  31. package/src/components/stepper/components/BackNavigation.tsx +22 -0
  32. package/src/components/stepper/components/Legend.tsx +66 -0
  33. package/src/components/stepper/components/NextNavigation.tsx +38 -0
  34. package/src/components/stepper/examples/MixedExample.tsx +140 -0
  35. package/src/components/stepper/examples/OptionalStepsExample.tsx +139 -0
  36. package/src/components/stepper/examples/RequiredStepsExample.tsx +158 -0
  37. package/src/components/stepper/examples/commonExample/CommonExample.tsx +115 -0
  38. package/src/components/stepper/examples/commonExample/steps/StepOne.tsx +57 -0
  39. package/src/components/stepper/examples/commonExample/steps/StepThree.tsx +56 -0
  40. package/src/components/stepper/examples/commonExample/steps/StepTwo.tsx +52 -0
  41. package/src/components/stepper/examples/constants.ts +168 -0
  42. package/src/components/stepper/index.ts +1 -0
  43. package/src/components/stepper/styles/Stepper.scss +131 -0
  44. package/src/components/stepper/types.ts +27 -0
  45. package/src/components/tanstackTable/components/TableBody/TableBody.tsx +2 -1
  46. package/src/components/tanstackTable/styles/table.scss +2 -2
  47. package/src/components/toast/Toast.mdx +1 -1
  48. package/src/components/toast/Toast.stories.tsx +1 -1
  49. package/src/index.ts +4 -2
  50. package/src/styles/index.scss +1 -0
@@ -27,3 +27,4 @@ export { BarSpinner } from './loading-indicators/BarSpinner/BarSpinner';
27
27
  export { CirclePulse } from './loading-indicators/CirclePulse/CirclePulse';
28
28
  export { Truncate } from './truncate';
29
29
  export { toast, ToastContainer } from 'react-toastify';
30
+ export { Stepper } from './stepper';
@@ -0,0 +1,2 @@
1
+ import { StepperProps } from './types';
2
+ export declare const Stepper: ({ currentStep: externalCurrentStep, legendHeader, legendFooter, steps, onBackClick, onNextClick, onFinishClick, children, onStepClick, }: StepperProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Stepper } from './Stepper';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Stepper>;
6
+ export declare const CommonExampleStory: Story;
7
+ export declare const MixedExampleStory: Story;
8
+ export declare const RequiredStepsStory: Story;
9
+ export declare const OptionalStepsStory: Story;
@@ -0,0 +1,6 @@
1
+ type Props = {
2
+ isDisabled: boolean;
3
+ onBackClick: () => void;
4
+ };
5
+ export declare const BackNavigation: ({ isDisabled, onBackClick }: Props) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ import { StepperLegendProps } from '../types';
2
+ export declare const Legend: ({ currentStep, steps, onStepClick }: StepperLegendProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ type Props = {
2
+ isLastStep: boolean;
3
+ onNextClick: () => void;
4
+ onFinishClick: () => void;
5
+ isDisabled: boolean;
6
+ };
7
+ export declare const NextNavigation: ({ isLastStep, onNextClick, onFinishClick, isDisabled }: Props) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1 @@
1
+ export declare const MixedExample: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const OptionalStepsExample: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const RequiredStepsExample: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const CommonExample: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare const StepOne: ({ onCompletion }: {
2
+ onCompletion: () => void;
3
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare const StepThree: ({ onCompletion }: {
2
+ onCompletion: () => void;
3
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare const StepTwo: ({ onCompletion }: {
2
+ onCompletion: () => void;
3
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,61 @@
1
+ export declare const INFO_BOX_STYLE: {
2
+ padding: string;
3
+ color: string;
4
+ marginBottom: string;
5
+ borderRadius: string;
6
+ border: string;
7
+ };
8
+ export declare const STATUS_INDICATOR_STYLE: (color: string) => {
9
+ width: string;
10
+ height: string;
11
+ borderRadius: string;
12
+ backgroundColor: string;
13
+ display: string;
14
+ marginRight: string;
15
+ };
16
+ export declare const MIXED_EXAMPLE_STEPS: {
17
+ id: string;
18
+ title: string;
19
+ isCompleted: boolean;
20
+ isOptional: boolean;
21
+ isSidebarEnabled: boolean;
22
+ isNextDisabled: boolean;
23
+ }[];
24
+ export declare const REQUIRED_STEPS: {
25
+ id: string;
26
+ title: string;
27
+ isCompleted: boolean;
28
+ isOptional: boolean;
29
+ isSidebarEnabled: boolean;
30
+ isNextDisabled: boolean;
31
+ }[];
32
+ export declare const OPTIONAL_STEPS: {
33
+ id: string;
34
+ title: string;
35
+ isCompleted: boolean;
36
+ isOptional: boolean;
37
+ isSidebarEnabled: boolean;
38
+ isNextDisabled: boolean;
39
+ }[];
40
+ export declare const STEP_CONTENT_DATA: {
41
+ step1: {
42
+ title: string;
43
+ content: string;
44
+ };
45
+ step2: {
46
+ title: string;
47
+ content: string;
48
+ };
49
+ step3: {
50
+ title: string;
51
+ content: string;
52
+ };
53
+ step4: {
54
+ title: string;
55
+ content: string;
56
+ };
57
+ step5: {
58
+ title: string;
59
+ content: string;
60
+ };
61
+ };
@@ -0,0 +1 @@
1
+ export { Stepper } from './Stepper';
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ export interface StepperProps {
3
+ steps: Step[];
4
+ currentStep?: number;
5
+ legendHeader?: ReactNode;
6
+ legendFooter?: ReactNode;
7
+ onBackClick: () => void;
8
+ onNextClick: () => void;
9
+ onFinishClick: () => void;
10
+ children: React.ReactNode;
11
+ onStepClick: (step: number) => void;
12
+ }
13
+ export interface StepperLegendProps {
14
+ currentStep: number;
15
+ steps?: Step[];
16
+ onStepClick: (step: number) => void;
17
+ }
18
+ export interface Step {
19
+ label: string;
20
+ isCompleted?: boolean;
21
+ isNextDisabled?: boolean;
22
+ isOptional?: boolean;
23
+ isSidebarEnabled?: boolean;
24
+ }
package/lib/index.css CHANGED
@@ -2269,9 +2269,9 @@ form {
2269
2269
  border-radius: var(--pf-rounded-lg);
2270
2270
  width: 100%;
2271
2271
  }
2272
- .tanstack-table.is-loading {
2272
+ .tanstack-table .is-loading {
2273
2273
  border: var(--pf-border-thin) solid var(--pf-border-color);
2274
- height: 100%;
2274
+ height: 350px;
2275
2275
  width: 100%;
2276
2276
  }
2277
2277
  .tanstack-table__thead {
@@ -2674,6 +2674,104 @@ form {
2674
2674
  --toastify-color-progress-bgo: 0.2;
2675
2675
  }
2676
2676
 
2677
+ :root [data-theme=dark] {
2678
+ --pf-stepper-background-color: var(--pf-primary-color-600);
2679
+ --pf-stepper-legend-background-color: var(--pf-tertiary-color-600);
2680
+ --pf-stepper-legend-circle-background-color: var(--pf-tertiary-color-450);
2681
+ --pf-stepper-legend-circle-text-color: var(--pf-white-color);
2682
+ --pf-stepper-legend-line-background-color: var(--pf-tertiary-color-450);
2683
+ --pf-stepper-legend-step-text-color: var(--pf-white-color);
2684
+ --pf-stepper-legend-step-disabled-text-color: var(--pf-tertiary-color-450);
2685
+ --pf-stepper-legend-circle-completed-background-color: var(--pf-secondary-color);
2686
+ --pf-stepper-legend-circle-completed-text-color: var(--pf-white-color);
2687
+ --pf-stepper-legend-line-completed-background-color: var(--pf-secondary-color);
2688
+ --pf-stepper-legend-circle-current-background-color: var(--pf-secondary-color);
2689
+ --pf-stepper-legend-circle-current-border-color: var(--pf-white-color);
2690
+ --pf-stepper-legend-step-current-text-color: var(--pf-white-color);
2691
+ --pf-stepper-legend-step-current-text-color: var(--pf-secondary-color);
2692
+ }
2693
+
2694
+ .stepper {
2695
+ padding: var(--pf-padding-8);
2696
+ height: 100%;
2697
+ display: grid;
2698
+ grid-template-columns: auto 5fr;
2699
+ gap: var(--pf-margin-8);
2700
+ }
2701
+ .stepper .stepper-body {
2702
+ display: flex;
2703
+ flex-direction: column;
2704
+ justify-content: space-between;
2705
+ height: 100%;
2706
+ }
2707
+ .stepper .stepper-body .stepper-actions {
2708
+ display: flex;
2709
+ justify-content: end;
2710
+ align-items: center;
2711
+ padding-top: var(--pf-padding-8);
2712
+ border-top: solid 1px var(--pf-tertiary-color-800);
2713
+ margin-top: var(--pf-margin-8);
2714
+ margin-bottom: var(--pf-margin-8);
2715
+ }
2716
+ .stepper .stepper-navigation-back {
2717
+ margin-right: var(--pf-margin-2);
2718
+ }
2719
+ .stepper .legend {
2720
+ background-color: var(--pf-stepper-legend-background-color);
2721
+ padding: var(--pf-padding-12) var(--pf-padding-8);
2722
+ border-radius: var(--pf-rounded-xl);
2723
+ width: 250px;
2724
+ }
2725
+ .stepper .legend-header {
2726
+ margin-bottom: var(--pf-margin-4);
2727
+ }
2728
+ .stepper .legend-body {
2729
+ margin-bottom: var(--pf-margin-4);
2730
+ }
2731
+ .stepper .stepper-legend-circle {
2732
+ width: 28px;
2733
+ height: 28px;
2734
+ border-radius: 50%;
2735
+ background-color: var(--pf-stepper-legend-circle-background-color);
2736
+ display: flex;
2737
+ align-items: center;
2738
+ justify-content: center;
2739
+ }
2740
+ .stepper .stepper-legend-circle.completed {
2741
+ background-color: var(--pf-stepper-legend-circle-completed-background-color);
2742
+ border-color: var(--pf-stepper-legend-circle-completed-background-color);
2743
+ color: var(--pf-stepper-legend-circle-completed-text-color);
2744
+ }
2745
+ .stepper .stepper-legend-circle.current {
2746
+ background-color: var(--pf-stepper-legend-circle-current-background-color);
2747
+ }
2748
+ .stepper .stepper-legend-line {
2749
+ width: 1px;
2750
+ height: 30px;
2751
+ min-height: 100%;
2752
+ background-color: var(--pf-stepper-legend-line-background-color);
2753
+ margin-left: 12px;
2754
+ }
2755
+ .stepper .stepper-legend-line--completed {
2756
+ background-color: var(--pf-stepper-legend-line-completed-background-color);
2757
+ }
2758
+ .stepper .stepper-legend-step {
2759
+ display: flex;
2760
+ align-items: center;
2761
+ }
2762
+ .stepper .stepper-legend-step .btn {
2763
+ padding: 0;
2764
+ margin-left: var(--pf-margin-2);
2765
+ color: var(--pf-stepper-legend-step-text-color);
2766
+ }
2767
+ .stepper .stepper-legend-step--current-step .btn {
2768
+ color: var(--pf-stepper-legend-step-current-text-color);
2769
+ text-decoration: underline;
2770
+ }
2771
+ .stepper .stepper-legend-step--disabled-step .btn {
2772
+ color: var(--pf-stepper-legend-step-disabled-text-color);
2773
+ }
2774
+
2677
2775
  :root [data-theme=light] {
2678
2776
  --sheets-background-color: var(--pf-gray-color-100);
2679
2777
  }
package/lib/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { UseFloatingOptions } from '@floating-ui/react-dom';
3
3
  export * from '@floating-ui/react-dom';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import { ContainerProps, RowProps, ColProps } from 'react-grid-system';
6
- import React$1, { CSSProperties, MouseEventHandler, ReactElement } from 'react';
6
+ import React$1, { CSSProperties, MouseEventHandler, ReactElement, ReactNode } from 'react';
7
7
  import { IDataTableProps, Direction as Direction$1, TableColumn as TableColumn$1 } from 'react-data-table-component';
8
8
  import { CSSObject } from 'styled-components';
9
9
  import { Props as Props$4 } from 'react-select';
@@ -618,6 +618,27 @@ declare function BarSpinner({ width, id, height, className, ...rest }: {
618
618
  [key: string]: any;
619
619
  }): react_jsx_runtime.JSX.Element;
620
620
 
621
+ interface StepperProps {
622
+ steps: Step[];
623
+ currentStep?: number;
624
+ legendHeader?: ReactNode;
625
+ legendFooter?: ReactNode;
626
+ onBackClick: () => void;
627
+ onNextClick: () => void;
628
+ onFinishClick: () => void;
629
+ children: React.ReactNode;
630
+ onStepClick: (step: number) => void;
631
+ }
632
+ interface Step {
633
+ label: string;
634
+ isCompleted?: boolean;
635
+ isNextDisabled?: boolean;
636
+ isOptional?: boolean;
637
+ isSidebarEnabled?: boolean;
638
+ }
639
+
640
+ declare const Stepper: ({ currentStep: externalCurrentStep, legendHeader, legendFooter, steps, onBackClick, onNextClick, onFinishClick, children, onStepClick, }: StepperProps) => react_jsx_runtime.JSX.Element;
641
+
621
642
  interface TruncateProps {
622
643
  lineClamp?: number;
623
644
  truncateString: string;
@@ -628,4 +649,4 @@ interface TruncateProps {
628
649
 
629
650
  declare const Truncate: ({ lineClamp, truncateString, hasTooltip, tooltipId, ...rest }: TruncateProps) => react_jsx_runtime.JSX.Element;
630
651
 
631
- export { Badge, BarSpinner, Button, Card, Checkbox, CirclePulse, Col, Container, DatePicker, FloatUI, Form, Icon, IconTriggerDatePicker, LabeledInput as Input, Menu, Modal, Pagination, LabeledPasswordInput as PasswordInput, Pill, Radio as RadioInput, Row, Select as SelectInput, SingleInputDatePicker, Skeleton, Table, TanstackTable, LabeledTextarea as Textarea, TimePicker, Toggle as ToggleInput, Tooltip, Truncate, registerFontAwesomeIcons };
652
+ export { Badge, BarSpinner, Button, Card, Checkbox, CirclePulse, Col, Container, DatePicker, FloatUI, Form, Icon, IconTriggerDatePicker, LabeledInput as Input, Menu, Modal, Pagination, LabeledPasswordInput as PasswordInput, Pill, Radio as RadioInput, Row, Select as SelectInput, SingleInputDatePicker, Skeleton, Stepper, Table, TanstackTable, LabeledTextarea as Textarea, TimePicker, Toggle as ToggleInput, Tooltip, Truncate, registerFontAwesomeIcons };
package/lib/index.esm.css CHANGED
@@ -2269,9 +2269,9 @@ form {
2269
2269
  border-radius: var(--pf-rounded-lg);
2270
2270
  width: 100%;
2271
2271
  }
2272
- .tanstack-table.is-loading {
2272
+ .tanstack-table .is-loading {
2273
2273
  border: var(--pf-border-thin) solid var(--pf-border-color);
2274
- height: 100%;
2274
+ height: 350px;
2275
2275
  width: 100%;
2276
2276
  }
2277
2277
  .tanstack-table__thead {
@@ -2674,6 +2674,104 @@ form {
2674
2674
  --toastify-color-progress-bgo: 0.2;
2675
2675
  }
2676
2676
 
2677
+ :root [data-theme=dark] {
2678
+ --pf-stepper-background-color: var(--pf-primary-color-600);
2679
+ --pf-stepper-legend-background-color: var(--pf-tertiary-color-600);
2680
+ --pf-stepper-legend-circle-background-color: var(--pf-tertiary-color-450);
2681
+ --pf-stepper-legend-circle-text-color: var(--pf-white-color);
2682
+ --pf-stepper-legend-line-background-color: var(--pf-tertiary-color-450);
2683
+ --pf-stepper-legend-step-text-color: var(--pf-white-color);
2684
+ --pf-stepper-legend-step-disabled-text-color: var(--pf-tertiary-color-450);
2685
+ --pf-stepper-legend-circle-completed-background-color: var(--pf-secondary-color);
2686
+ --pf-stepper-legend-circle-completed-text-color: var(--pf-white-color);
2687
+ --pf-stepper-legend-line-completed-background-color: var(--pf-secondary-color);
2688
+ --pf-stepper-legend-circle-current-background-color: var(--pf-secondary-color);
2689
+ --pf-stepper-legend-circle-current-border-color: var(--pf-white-color);
2690
+ --pf-stepper-legend-step-current-text-color: var(--pf-white-color);
2691
+ --pf-stepper-legend-step-current-text-color: var(--pf-secondary-color);
2692
+ }
2693
+
2694
+ .stepper {
2695
+ padding: var(--pf-padding-8);
2696
+ height: 100%;
2697
+ display: grid;
2698
+ grid-template-columns: auto 5fr;
2699
+ gap: var(--pf-margin-8);
2700
+ }
2701
+ .stepper .stepper-body {
2702
+ display: flex;
2703
+ flex-direction: column;
2704
+ justify-content: space-between;
2705
+ height: 100%;
2706
+ }
2707
+ .stepper .stepper-body .stepper-actions {
2708
+ display: flex;
2709
+ justify-content: end;
2710
+ align-items: center;
2711
+ padding-top: var(--pf-padding-8);
2712
+ border-top: solid 1px var(--pf-tertiary-color-800);
2713
+ margin-top: var(--pf-margin-8);
2714
+ margin-bottom: var(--pf-margin-8);
2715
+ }
2716
+ .stepper .stepper-navigation-back {
2717
+ margin-right: var(--pf-margin-2);
2718
+ }
2719
+ .stepper .legend {
2720
+ background-color: var(--pf-stepper-legend-background-color);
2721
+ padding: var(--pf-padding-12) var(--pf-padding-8);
2722
+ border-radius: var(--pf-rounded-xl);
2723
+ width: 250px;
2724
+ }
2725
+ .stepper .legend-header {
2726
+ margin-bottom: var(--pf-margin-4);
2727
+ }
2728
+ .stepper .legend-body {
2729
+ margin-bottom: var(--pf-margin-4);
2730
+ }
2731
+ .stepper .stepper-legend-circle {
2732
+ width: 28px;
2733
+ height: 28px;
2734
+ border-radius: 50%;
2735
+ background-color: var(--pf-stepper-legend-circle-background-color);
2736
+ display: flex;
2737
+ align-items: center;
2738
+ justify-content: center;
2739
+ }
2740
+ .stepper .stepper-legend-circle.completed {
2741
+ background-color: var(--pf-stepper-legend-circle-completed-background-color);
2742
+ border-color: var(--pf-stepper-legend-circle-completed-background-color);
2743
+ color: var(--pf-stepper-legend-circle-completed-text-color);
2744
+ }
2745
+ .stepper .stepper-legend-circle.current {
2746
+ background-color: var(--pf-stepper-legend-circle-current-background-color);
2747
+ }
2748
+ .stepper .stepper-legend-line {
2749
+ width: 1px;
2750
+ height: 30px;
2751
+ min-height: 100%;
2752
+ background-color: var(--pf-stepper-legend-line-background-color);
2753
+ margin-left: 12px;
2754
+ }
2755
+ .stepper .stepper-legend-line--completed {
2756
+ background-color: var(--pf-stepper-legend-line-completed-background-color);
2757
+ }
2758
+ .stepper .stepper-legend-step {
2759
+ display: flex;
2760
+ align-items: center;
2761
+ }
2762
+ .stepper .stepper-legend-step .btn {
2763
+ padding: 0;
2764
+ margin-left: var(--pf-margin-2);
2765
+ color: var(--pf-stepper-legend-step-text-color);
2766
+ }
2767
+ .stepper .stepper-legend-step--current-step .btn {
2768
+ color: var(--pf-stepper-legend-step-current-text-color);
2769
+ text-decoration: underline;
2770
+ }
2771
+ .stepper .stepper-legend-step--disabled-step .btn {
2772
+ color: var(--pf-stepper-legend-step-disabled-text-color);
2773
+ }
2774
+
2677
2775
  :root [data-theme=light] {
2678
2776
  --sheets-background-color: var(--pf-gray-color-100);
2679
2777
  }