@wise/dynamic-flow-types 2.24.1 → 2.26.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 (44) hide show
  1. package/build/main.js +1 -0
  2. package/build/main.min.js +1 -1
  3. package/build/main.mjs +1 -0
  4. package/build/next/layout/ReviewLayoutField.d.ts +4 -0
  5. package/build/renderers/AlertRendererProps.d.ts +21 -0
  6. package/build/renderers/BaseInputRendererProps.d.ts +30 -0
  7. package/build/renderers/BooleanRendererProps.d.ts +6 -0
  8. package/build/renderers/BoxRendererProps.d.ts +10 -0
  9. package/build/renderers/ButtonRendererProps.d.ts +15 -0
  10. package/build/renderers/ColumnsRendererProps.d.ts +11 -0
  11. package/build/renderers/CoreContainerRendererProps.d.ts +5 -0
  12. package/build/renderers/DateInputRendererProps.d.ts +8 -0
  13. package/build/renderers/DecisionRendererProps.d.ts +18 -0
  14. package/build/renderers/DividerRendererProps.d.ts +6 -0
  15. package/build/renderers/FormRendererProps.d.ts +8 -0
  16. package/build/renderers/FormSectionRendererProps.d.ts +13 -0
  17. package/build/renderers/HeadingRendererProps.d.ts +12 -0
  18. package/build/renderers/HiddenRendererProps.d.ts +4 -0
  19. package/build/renderers/Icon.d.ts +1 -0
  20. package/build/renderers/Image.d.ts +1 -0
  21. package/build/renderers/ImageRendererProps.d.ts +9 -0
  22. package/build/renderers/InstructionsRendererProps.d.ts +12 -0
  23. package/build/renderers/IntegerInputRendererProps.d.ts +10 -0
  24. package/build/renderers/LoadingIndicatorRendererProps.d.ts +7 -0
  25. package/build/renderers/MarkdownRendererProps.d.ts +8 -0
  26. package/build/renderers/ModalRendererProps.d.ts +14 -0
  27. package/build/renderers/MultiSelectInputRendererProps.d.ts +14 -0
  28. package/build/renderers/MultiUploadInputRendererProps.d.ts +19 -0
  29. package/build/renderers/NumberInputRendererProps.d.ts +10 -0
  30. package/build/renderers/ParagraphRendererProps.d.ts +11 -0
  31. package/build/renderers/RendererProps.d.ts +38 -0
  32. package/build/renderers/RepeatableRendererProps.d.ts +38 -0
  33. package/build/renderers/ReviewRendererProps.d.ts +18 -0
  34. package/build/renderers/SearchRendererProps.d.ts +33 -0
  35. package/build/renderers/SelectInputRendererProps.d.ts +19 -0
  36. package/build/renderers/StatusListRendererProps.d.ts +23 -0
  37. package/build/renderers/StepRendererProps.d.ts +25 -0
  38. package/build/renderers/TextInputRendererProps.d.ts +14 -0
  39. package/build/renderers/UploadInputRendererProps.d.ts +8 -0
  40. package/build/renderers/constants.d.ts +3 -0
  41. package/build/renderers/index.d.ts +36 -424
  42. package/build/zod/schemas.d.ts +8 -0
  43. package/build/zod/schemas.ts +1 -0
  44. package/package.json +3 -3
@@ -0,0 +1,9 @@
1
+ import { Margin, Size } from './constants';
2
+ export type ImageRendererProps = {
3
+ type: 'image';
4
+ control?: string;
5
+ accessibilityDescription?: string;
6
+ size: Size;
7
+ margin: Margin;
8
+ url: string;
9
+ };
@@ -0,0 +1,12 @@
1
+ import { Context, Margin } from './constants';
2
+ export type InstructionsRendererProps = {
3
+ type: 'instructions';
4
+ control?: string;
5
+ items: InstructionItem[];
6
+ margin: Margin;
7
+ title?: string;
8
+ };
9
+ export type InstructionItem = {
10
+ context: Context;
11
+ text: string;
12
+ };
@@ -0,0 +1,10 @@
1
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
2
+ export type IntegerInputRendererProps = BaseInputRendererProps & {
3
+ type: 'input-integer';
4
+ value: number | null;
5
+ /** @experimental */
6
+ maximum?: number;
7
+ /** @experimental */
8
+ minimum?: number;
9
+ onChange: (value: number | null) => void;
10
+ };
@@ -0,0 +1,7 @@
1
+ import { Margin, Size } from './constants';
2
+ export type LoadingIndicatorRendererProps = {
3
+ type: 'loading-indicator';
4
+ control?: string;
5
+ margin: Margin;
6
+ size: Size;
7
+ };
@@ -0,0 +1,8 @@
1
+ import { Align, Margin } from './constants';
2
+ export type MarkdownRendererProps = {
3
+ type: 'markdown';
4
+ control?: string;
5
+ align: Align;
6
+ margin: Margin;
7
+ content: string;
8
+ };
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { Margin } from './constants';
3
+ export type ModalRendererProps = {
4
+ type: 'modal';
5
+ control?: string;
6
+ content: {
7
+ components: ReactNode;
8
+ title?: string;
9
+ };
10
+ margin: Margin;
11
+ trigger: {
12
+ title: string;
13
+ };
14
+ };
@@ -0,0 +1,14 @@
1
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
2
+ import { SelectInputRendererOption } from './SelectInputRendererProps';
3
+ export type MultiSelectInputRendererProps = Omit<BaseInputRendererProps, 'required'> & {
4
+ type: 'input-multi-select';
5
+ label?: string;
6
+ description?: string;
7
+ /** @experimental */
8
+ maxItems?: number;
9
+ /** @experimental */
10
+ minItems?: number;
11
+ selectedIndices: number[];
12
+ options: SelectInputRendererOption[];
13
+ onSelect: (indices: number[]) => void;
14
+ };
@@ -0,0 +1,19 @@
1
+ import { BaseInputRendererProps, ValidationResult } from './BaseInputRendererProps';
2
+ export type MultiUploadInputRendererProps = BaseInputRendererProps & {
3
+ type: 'input-upload-multi';
4
+ maxSize?: number;
5
+ minItems?: number;
6
+ maxItems?: number;
7
+ accepts?: string[];
8
+ uploadLabel?: string;
9
+ value: FileWithId[];
10
+ onUpload: (file: File, fileId: string) => Promise<void>;
11
+ onDelete: (fileId: string) => Promise<void>;
12
+ };
13
+ type FileWithId = {
14
+ id: string;
15
+ file: File;
16
+ /** @experimental */
17
+ validationState?: ValidationResult;
18
+ };
19
+ export {};
@@ -0,0 +1,10 @@
1
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
2
+ export type NumberInputRendererProps = BaseInputRendererProps & {
3
+ type: 'input-number';
4
+ value: number | null;
5
+ /** @experimental */
6
+ maximum?: number;
7
+ /** @experimental */
8
+ minimum?: number;
9
+ onChange: (value: number | null) => void;
10
+ };
@@ -0,0 +1,11 @@
1
+ import { Align, Margin } from './constants';
2
+ /**
3
+ * Known values for "control" are: 'copyable'.
4
+ */
5
+ export type ParagraphRendererProps = {
6
+ type: 'paragraph';
7
+ control?: string;
8
+ align: Align;
9
+ margin: Margin;
10
+ text: string;
11
+ };
@@ -0,0 +1,38 @@
1
+ import { AlertRendererProps } from './AlertRendererProps';
2
+ import { BooleanInputRendererProps } from './BooleanRendererProps';
3
+ import { BoxRendererProps } from './BoxRendererProps';
4
+ import { ButtonRendererProps } from './ButtonRendererProps';
5
+ import { ColumnsRendererProps } from './ColumnsRendererProps';
6
+ import { CoreContainerRendererProps } from './CoreContainerRendererProps';
7
+ import { DateInputRendererProps } from './DateInputRendererProps';
8
+ import { DecisionRendererProps } from './DecisionRendererProps';
9
+ import { DividerRendererProps } from './DividerRendererProps';
10
+ import { FormRendererProps } from './FormRendererProps';
11
+ import { FormSectionRendererProps } from './FormSectionRendererProps';
12
+ import { HeadingRendererProps } from './HeadingRendererProps';
13
+ import { HiddenRendererProps } from './HiddenRendererProps';
14
+ import { ImageRendererProps } from './ImageRendererProps';
15
+ import { InstructionsRendererProps } from './InstructionsRendererProps';
16
+ import { IntegerInputRendererProps } from './IntegerInputRendererProps';
17
+ import { LoadingIndicatorRendererProps } from './LoadingIndicatorRendererProps';
18
+ import { MarkdownRendererProps } from './MarkdownRendererProps';
19
+ import { ModalRendererProps } from './ModalRendererProps';
20
+ import { MultiSelectInputRendererProps } from './MultiSelectInputRendererProps';
21
+ import { MultiUploadInputRendererProps } from './MultiUploadInputRendererProps';
22
+ import { NumberInputRendererProps } from './NumberInputRendererProps';
23
+ import { ParagraphRendererProps } from './ParagraphRendererProps';
24
+ import { RepeatableRendererProps } from './RepeatableRendererProps';
25
+ import { ReviewRendererProps } from './ReviewRendererProps';
26
+ import { SearchRendererProps } from './SearchRendererProps';
27
+ import { SelectInputRendererProps } from './SelectInputRendererProps';
28
+ import { StatusListRendererProps } from './StatusListRendererProps';
29
+ import { StepRendererProps } from './StepRendererProps';
30
+ import { TextInputRendererProps } from './TextInputRendererProps';
31
+ import { UploadInputRendererProps } from './UploadInputRendererProps';
32
+ export type RendererProps = AlertRendererProps | BooleanInputRendererProps | BoxRendererProps | ButtonRendererProps | ColumnsRendererProps | CoreContainerRendererProps | DateInputRendererProps | DecisionRendererProps | DividerRendererProps | FormRendererProps | FormSectionRendererProps | HeadingRendererProps | HiddenRendererProps | ImageRendererProps | InstructionsRendererProps | IntegerInputRendererProps | LoadingIndicatorRendererProps | MarkdownRendererProps | ModalRendererProps | MultiSelectInputRendererProps | MultiUploadInputRendererProps | NumberInputRendererProps | ParagraphRendererProps | RepeatableRendererProps | ReviewRendererProps | SearchRendererProps | SelectInputRendererProps | StatusListRendererProps | StepRendererProps | TextInputRendererProps | UploadInputRendererProps;
33
+ export type Renderer<P extends RendererProps> = {
34
+ canRenderType: P['type'];
35
+ canRender?: (props: P) => boolean;
36
+ render: (props: P) => JSX.Element;
37
+ };
38
+ export type Renderers = readonly (Renderer<StepRendererProps> | Renderer<CoreContainerRendererProps> | Renderer<AlertRendererProps> | Renderer<BoxRendererProps> | Renderer<ColumnsRendererProps> | Renderer<DecisionRendererProps> | Renderer<DividerRendererProps> | Renderer<FormRendererProps> | Renderer<HeadingRendererProps> | Renderer<InstructionsRendererProps> | Renderer<LoadingIndicatorRendererProps> | Renderer<MarkdownRendererProps> | Renderer<ImageRendererProps> | Renderer<ModalRendererProps> | Renderer<ParagraphRendererProps> | Renderer<ReviewRendererProps> | Renderer<SearchRendererProps> | Renderer<StatusListRendererProps> | Renderer<FormSectionRendererProps> | Renderer<BooleanInputRendererProps> | Renderer<ButtonRendererProps> | Renderer<DateInputRendererProps> | Renderer<HiddenRendererProps> | Renderer<IntegerInputRendererProps> | Renderer<NumberInputRendererProps> | Renderer<RepeatableRendererProps> | Renderer<SelectInputRendererProps> | Renderer<MultiSelectInputRendererProps> | Renderer<TextInputRendererProps> | Renderer<UploadInputRendererProps> | Renderer<MultiUploadInputRendererProps>)[];
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ import { Icon } from './Icon';
3
+ import { Image } from './Image';
4
+ import { ValidationResult } from './BaseInputRendererProps';
5
+ export type RepeatableRendererProps = {
6
+ type: 'repeatable';
7
+ control?: string;
8
+ addItemTitle: string;
9
+ description?: string;
10
+ children: ReactNode[];
11
+ editableItem: ReactNode;
12
+ editItemTitle: string;
13
+ /**
14
+ * @deprecated please use the `validationState` property instead
15
+ */
16
+ error?: string;
17
+ /** @experimental */
18
+ validationState: ValidationResult | undefined;
19
+ items: RepeatableItemRendererProps[];
20
+ title: string;
21
+ /** @experimental */
22
+ maxItems?: number;
23
+ /** @experimental */
24
+ minItems?: number;
25
+ icon?: Icon;
26
+ image?: Image;
27
+ onAdd: () => void;
28
+ onEdit: (itemIndex: number) => void;
29
+ onSave: () => boolean;
30
+ onRemove: () => void;
31
+ };
32
+ export type RepeatableItemRendererProps = {
33
+ id: string;
34
+ description?: string;
35
+ icon?: Icon;
36
+ image?: Image;
37
+ title?: string;
38
+ };
@@ -0,0 +1,18 @@
1
+ import { Margin } from './constants';
2
+ export type ReviewRendererProps = {
3
+ type: 'review';
4
+ control?: string;
5
+ fields: ReviewField[];
6
+ margin: Margin;
7
+ title?: string;
8
+ callToAction?: ReviewCallToAction;
9
+ };
10
+ export type ReviewField = {
11
+ help?: string;
12
+ label: string;
13
+ value: string;
14
+ };
15
+ export type ReviewCallToAction = {
16
+ title: string;
17
+ onClick: () => void;
18
+ };
@@ -0,0 +1,33 @@
1
+ import type { SearchResult as SearchResultSpec } from '../next';
2
+ import { Margin } from './constants';
3
+ export type SearchRendererProps = {
4
+ type: 'search';
5
+ control?: string;
6
+ id: string;
7
+ isLoading: boolean;
8
+ margin: Margin;
9
+ query: string;
10
+ onChange: (query: string) => void;
11
+ state: SearchState;
12
+ title: string;
13
+ };
14
+ export type SearchState = PendingSearchState | NoResultsSearchState | ResultsSearchState | ErrorSearchState;
15
+ export type PendingSearchState = {
16
+ type: 'pending';
17
+ };
18
+ export type NoResultsSearchState = {
19
+ type: 'noResults';
20
+ message: string;
21
+ };
22
+ export type ErrorSearchState = {
23
+ type: 'error';
24
+ onRetry: () => void;
25
+ };
26
+ export type ResultsSearchState = {
27
+ type: 'results';
28
+ results: SearchResult[];
29
+ };
30
+ export type SearchResult = Pick<SearchResultSpec, 'description' | 'icon' | 'image' | 'title' | 'type'> & {
31
+ id?: string;
32
+ onClick: () => void;
33
+ };
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
3
+ import { Icon } from './Icon';
4
+ import { Image } from './Image';
5
+ export type SelectInputRendererProps = BaseInputRendererProps & {
6
+ type: 'input-select';
7
+ children: ReactNode;
8
+ options: SelectInputRendererOption[];
9
+ selectedIndex: number | null;
10
+ onSelect: (index: number | null) => void;
11
+ };
12
+ export type SelectInputRendererOption = {
13
+ description?: string;
14
+ disabled: boolean;
15
+ icon?: Icon;
16
+ image?: Image;
17
+ keywords?: string[];
18
+ title: string;
19
+ };
@@ -0,0 +1,23 @@
1
+ import { Icon } from './Icon';
2
+ import { Margin } from './constants';
3
+ export type StatusListRendererProps = {
4
+ type: 'status-list';
5
+ control?: string;
6
+ items: StatusListItem[];
7
+ margin: Margin;
8
+ title?: string;
9
+ };
10
+ export type StatusListItem = {
11
+ description?: string;
12
+ icon: Icon;
13
+ status?: 'done' | 'not-done' | 'pending';
14
+ title: string;
15
+ callToAction?: StatusListItemCallToAction;
16
+ };
17
+ export type StatusListItemCallToAction = {
18
+ accessibilityDescription?: string;
19
+ href?: string;
20
+ title: string;
21
+ onClick: () => void;
22
+ };
23
+ export type StatusListItemStatus = 'done' | 'not-done' | 'pending';
@@ -0,0 +1,25 @@
1
+ import type { Action, Step } from '../next';
2
+ import type { ReactNode } from 'react';
3
+ export type AnalyticsEventDispatcher = (eventName: string, properties?: Record<string, unknown>) => void;
4
+ export type LoadingState = 'idle' | 'submitting' | 'refreshing';
5
+ export type StepRendererProps = {
6
+ type: 'step';
7
+ control?: string;
8
+ back?: {
9
+ title?: string;
10
+ onClick: () => void;
11
+ };
12
+ description?: string;
13
+ error?: string;
14
+ external?: {
15
+ url: string;
16
+ };
17
+ loadingState: LoadingState;
18
+ title?: string;
19
+ trackEvent: AnalyticsEventDispatcher;
20
+ /** @experimental Please do not use this property. It is only here to support a legacy camera step. */
21
+ step?: Step;
22
+ /** @experimental Please do not use this function. Calling onAction from a step renderer completely bypasses the core logic and may result in unexpected behavior. It is only here to support a legacy camera step. */
23
+ onAction?: (action: Action) => void | Promise<void>;
24
+ children: ReactNode;
25
+ };
@@ -0,0 +1,14 @@
1
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
2
+ /**
3
+ * Known values for "control" are: 'password' | 'textarea' | 'email' | 'numeric' | 'phone-number'.
4
+ */
5
+ export type TextInputRendererProps = BaseInputRendererProps & {
6
+ type: 'input-text';
7
+ displayFormat?: string;
8
+ value: string | null;
9
+ /** @experimental */
10
+ maxLength?: number;
11
+ /** @experimental */
12
+ minLength?: number;
13
+ onChange: (value: string | null) => void;
14
+ };
@@ -0,0 +1,8 @@
1
+ import { BaseInputRendererProps } from './BaseInputRendererProps';
2
+ export type UploadInputRendererProps = BaseInputRendererProps & {
3
+ type: 'input-upload';
4
+ maxSize?: number;
5
+ accepts?: string[];
6
+ value: File | null;
7
+ onUpload: (file: File | null) => Promise<void>;
8
+ };
@@ -0,0 +1,3 @@
1
+ export type Align = 'start' | 'center' | 'end';
2
+ export type Context = 'positive' | 'negative' | 'warning' | 'neutral';
3
+ export type { Margin, Size } from '../next';