@app-studio/web 0.9.7 → 0.9.8

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 (35) hide show
  1. package/dist/components/ChatInput/ChatInput/ChatInput.props.d.ts +24 -0
  2. package/dist/components/ChatInput/ChatInput/ChatInput.type.d.ts +1 -1
  3. package/dist/components/ChatInput/EditableInput.d.ts +24 -1
  4. package/dist/components/ChatInput/examples/EnhancedEditableInput.d.ts +2 -0
  5. package/dist/components/ChatInput/examples/MentionEditableInput.d.ts +2 -0
  6. package/dist/components/ContextMenu/ContextMenu/ContextMenu.style.d.ts +1 -5
  7. package/dist/components/DropdownMenu/DropdownMenu/DropdownMenu.type.d.ts +1 -0
  8. package/dist/components/Form/TagInput/TagInput/TagInput.props.d.ts +190 -0
  9. package/dist/components/Form/TagInput/TagInput/TagInput.state.d.ts +26 -0
  10. package/dist/components/Form/TagInput/TagInput/TagInput.type.d.ts +79 -0
  11. package/dist/components/Form/TagInput/TagInput/TagInput.view.d.ts +13 -0
  12. package/dist/components/Form/TagInput/TagInput/index.d.ts +4 -0
  13. package/dist/components/Form/TagInput/TagInput.d.ts +3 -0
  14. package/dist/components/Form/TagInput/examples/Default.d.ts +25 -0
  15. package/dist/components/Form/TagInput/examples/index.d.ts +1 -0
  16. package/dist/components/Form/TagInput/index.d.ts +2 -0
  17. package/dist/components/Formik/Formik.TagInput.d.ts +7 -0
  18. package/dist/components/Formik/examples/FormikTagInput.d.ts +9 -0
  19. package/dist/components/Formik/examples/index.d.ts +1 -0
  20. package/dist/components/Input/FieldContainer/FieldContainer.d.ts +1 -1
  21. package/dist/components/Menubar/Menubar/Menubar.type.d.ts +1 -0
  22. package/dist/components/index.d.ts +1 -0
  23. package/dist/pages/positioning-test.page.d.ts +3 -0
  24. package/dist/pages/tags.page.d.ts +3 -0
  25. package/dist/web.cjs.development.js +1655 -600
  26. package/dist/web.cjs.development.js.map +1 -1
  27. package/dist/web.cjs.production.min.js +1 -1
  28. package/dist/web.cjs.production.min.js.map +1 -1
  29. package/dist/web.esm.js +1657 -603
  30. package/dist/web.esm.js.map +1 -1
  31. package/dist/web.umd.development.js +1544 -489
  32. package/dist/web.umd.development.js.map +1 -1
  33. package/dist/web.umd.production.min.js +1 -1
  34. package/dist/web.umd.production.min.js.map +1 -1
  35. package/package.json +2 -2
@@ -88,6 +88,28 @@ export interface ChatInputProps extends ViewProps {
88
88
  * Callback function when a prompt example is selected
89
89
  */
90
90
  onPromptExampleSelect?: (example: PromptExample) => void;
91
+ /**
92
+ * Data for mention auto-completion
93
+ */
94
+ mentionData?: Array<{
95
+ id: string;
96
+ name: string;
97
+ avatar?: string;
98
+ description?: string;
99
+ }>;
100
+ /**
101
+ * Trigger character for mentions (default: '@')
102
+ */
103
+ mentionTrigger?: string;
104
+ /**
105
+ * Callback function when a mention is selected
106
+ */
107
+ onMentionSelect?: (mention: {
108
+ id: string;
109
+ name: string;
110
+ avatar?: string;
111
+ description?: string;
112
+ }) => void;
91
113
  /**
92
114
  * Whether to show the reference image button
93
115
  */
@@ -145,6 +167,8 @@ export interface ChatInputViewProps extends ChatInputProps {
145
167
  * Whether files are being uploaded
146
168
  */
147
169
  isUploading: boolean;
170
+ leftButtons?: React.ReactNode;
171
+ rightButtons?: React.ReactNode;
148
172
  /**
149
173
  * Whether the user is dragging files over the input
150
174
  */
@@ -6,7 +6,7 @@ export declare type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
6
  /**
7
7
  * Shape options for the ChatInput component
8
8
  */
9
- export declare type Shape = 'default' | 'sharp' | 'rounded' | 'pillShaped';
9
+ export declare type Shape = 'default' | 'sharp' | 'rounded';
10
10
  /**
11
11
  * Variant options for the ChatInput component
12
12
  */
@@ -1,14 +1,37 @@
1
1
  import React from 'react';
2
+ interface Suggestion {
3
+ id: string;
4
+ text: string;
5
+ description?: string;
6
+ }
7
+ interface MentionData {
8
+ id: string;
9
+ name: string;
10
+ avatar?: string;
11
+ description?: string;
12
+ }
2
13
  interface EditableInputProps {
3
14
  value: string;
4
15
  onChange: (value: string) => void;
5
- onSubmit: (e: React.FormEvent) => void;
6
16
  placeholder?: string;
7
17
  disabled?: boolean;
8
18
  autoFocus?: boolean;
19
+ suggestions?: Suggestion[];
20
+ onSuggestionSelect?: (suggestion: Suggestion) => void;
21
+ showSuggestions?: boolean;
22
+ mentionData?: MentionData[];
23
+ mentionTrigger?: string;
24
+ onMentionSelect?: (mention: MentionData) => void;
25
+ maxHeight?: string;
26
+ minHeight?: string;
9
27
  views?: {
10
28
  container?: any;
11
29
  input?: any;
30
+ placeholder?: any;
31
+ suggestionsContainer?: any;
32
+ suggestionItem?: any;
33
+ mentionContainer?: any;
34
+ mentionItem?: any;
12
35
  };
13
36
  }
14
37
  export declare const EditableInput: React.ForwardRefExoticComponent<EditableInputProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const EnhancedEditableInputDemo: () => React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const MentionEditableInputDemo: () => React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { ViewProps } from 'app-studio';
2
- import { Size, Variant, Position, Alignment } from './ContextMenu.type';
2
+ import { Size, Variant } from './ContextMenu.type';
3
3
  export declare const ContextMenuSizes: Record<Size, ViewProps>;
4
4
  export declare const ContextMenuVariants: Record<Variant, ViewProps>;
5
5
  export declare const ContextMenuItemStates: {
@@ -14,7 +14,3 @@ export declare const ContextMenuItemStates: {
14
14
  cursor: string;
15
15
  };
16
16
  };
17
- export declare const calculateMenuPosition: (x: number, y: number, menuWidth: number, menuHeight: number, windowWidth: number, windowHeight: number, side?: Position, align?: Alignment) => {
18
- x: number;
19
- y: number;
20
- };
@@ -20,6 +20,7 @@ export interface DropdownMenuContextType {
20
20
  setActiveSubmenuId: (id: string | null) => void;
21
21
  size: Size;
22
22
  variant: Variant;
23
+ triggerRef: React.RefObject<HTMLElement>;
23
24
  }
24
25
  export interface DropdownMenuStyles {
25
26
  container?: ViewProps;
@@ -0,0 +1,190 @@
1
+ import React from 'react';
2
+ import { InputProps, Shadow, ViewProps } from 'app-studio';
3
+ import { Elevation } from '../../../../utils/elevation';
4
+ import { Shape, Size, TagInputStyles, Variant, Tag, TagSeparator } from './TagInput.type';
5
+ /**
6
+ * Props interface for the TagInput component
7
+ */
8
+ export interface TagInputProps extends Omit<InputProps, 'size' | 'value' | 'onChange'> {
9
+ /**
10
+ * Unique identifier for the TagInput
11
+ */
12
+ id?: string;
13
+ /**
14
+ * Name attribute for form submission
15
+ */
16
+ name?: string;
17
+ /**
18
+ * Label text for the input field
19
+ */
20
+ label?: string;
21
+ /**
22
+ * Helper text displayed below the input
23
+ */
24
+ helperText?: string;
25
+ /**
26
+ * Error message or boolean indicating error state
27
+ */
28
+ error?: string | boolean;
29
+ /**
30
+ * Placeholder text shown when input is empty
31
+ */
32
+ placeholder?: string;
33
+ /**
34
+ * Array of tags
35
+ */
36
+ tags?: string[];
37
+ /**
38
+ * Default tags for uncontrolled component
39
+ */
40
+ defaultTags?: string[];
41
+ /**
42
+ * Callback fired when tags change
43
+ */
44
+ onTagsChange?: (tags: string[]) => void;
45
+ /**
46
+ * Callback fired when a tag is added
47
+ */
48
+ onTagAdd?: (tag: string) => void;
49
+ /**
50
+ * Callback fired when a tag is removed
51
+ */
52
+ onTagRemove?: (tag: string, index: number) => void;
53
+ /**
54
+ * Maximum number of tags allowed
55
+ */
56
+ maxTags?: number;
57
+ /**
58
+ * Minimum length for each tag
59
+ */
60
+ minTagLength?: number;
61
+ /**
62
+ * Maximum length for each tag
63
+ */
64
+ maxTagLength?: number;
65
+ /**
66
+ * Whether to allow duplicate tags
67
+ */
68
+ allowDuplicates?: boolean;
69
+ /**
70
+ * Characters that trigger tag creation
71
+ */
72
+ separators?: TagSeparator[];
73
+ /**
74
+ * Whether the input is disabled
75
+ */
76
+ isDisabled?: boolean;
77
+ /**
78
+ * Whether the input is read-only
79
+ */
80
+ isReadOnly?: boolean;
81
+ /**
82
+ * Whether to auto-focus the input
83
+ */
84
+ isAutoFocus?: boolean;
85
+ /**
86
+ * Whether tags can be removed
87
+ */
88
+ isRemovable?: boolean;
89
+ /**
90
+ * Size of the component
91
+ */
92
+ size?: Size;
93
+ /**
94
+ * Shape/border radius of the component
95
+ */
96
+ shape?: Shape;
97
+ /**
98
+ * Visual variant of the component
99
+ */
100
+ variant?: Variant;
101
+ /**
102
+ * Shadow properties
103
+ */
104
+ shadow?: Shadow | Elevation | ViewProps;
105
+ /**
106
+ * Custom styling for different parts of the component
107
+ */
108
+ views?: TagInputStyles;
109
+ /**
110
+ * React node to render on the left side
111
+ */
112
+ left?: React.ReactNode;
113
+ /**
114
+ * React node to render on the right side
115
+ */
116
+ right?: React.ReactNode;
117
+ /**
118
+ * Callback fired when input gains focus
119
+ */
120
+ onFocus?: () => void;
121
+ /**
122
+ * Callback fired when input loses focus
123
+ */
124
+ onBlur?: () => void;
125
+ /**
126
+ * Callback fired when input is clicked
127
+ */
128
+ onClick?: () => void;
129
+ }
130
+ /**
131
+ * Props interface for the TagInput view component
132
+ */
133
+ export interface TagInputViewProps extends Omit<TagInputProps, 'tags'> {
134
+ /**
135
+ * Current input value for new tag
136
+ */
137
+ inputValue?: string;
138
+ /**
139
+ * Function to set input value
140
+ */
141
+ setInputValue?: (value: string) => void;
142
+ /**
143
+ * Array of tag objects (internal representation)
144
+ */
145
+ tags?: Tag[];
146
+ /**
147
+ * Function to set tags
148
+ */
149
+ setTags?: (tags: Tag[]) => void;
150
+ /**
151
+ * Whether the input is currently focused
152
+ */
153
+ isFocused?: boolean;
154
+ /**
155
+ * Function to set focus state
156
+ */
157
+ setIsFocused?: (focused: boolean) => void;
158
+ /**
159
+ * Whether the input is currently hovered
160
+ */
161
+ isHovered?: boolean;
162
+ /**
163
+ * Function to set hover state
164
+ */
165
+ setIsHovered?: (hovered: boolean) => void;
166
+ /**
167
+ * Function to add a tag
168
+ */
169
+ addTag?: (tag: string) => void;
170
+ /**
171
+ * Function to remove a tag
172
+ */
173
+ removeTag?: (index: number) => void;
174
+ /**
175
+ * Function to handle input key events
176
+ */
177
+ handleKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
178
+ /**
179
+ * Function to handle input change
180
+ */
181
+ handleInputChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
182
+ /**
183
+ * Function to handle input focus
184
+ */
185
+ handleFocus?: () => void;
186
+ /**
187
+ * Function to handle input blur
188
+ */
189
+ handleBlur?: () => void;
190
+ }
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import { TagInputProps } from './TagInput.props';
3
+ import { Tag } from './TagInput.type';
4
+ /**
5
+ * Custom hook for managing TagInput state
6
+ */
7
+ export declare const useTagInputState: (props: TagInputProps) => {
8
+ inputValue: string;
9
+ setInputValue: import("react").Dispatch<import("react").SetStateAction<string>>;
10
+ tags: {
11
+ id: string;
12
+ value: string;
13
+ }[];
14
+ setTags: import("react").Dispatch<import("react").SetStateAction<Tag[]>>;
15
+ isFocused: boolean;
16
+ setIsFocused: import("react").Dispatch<import("react").SetStateAction<boolean>>;
17
+ isHovered: boolean;
18
+ setIsHovered: import("react").Dispatch<import("react").SetStateAction<boolean>>;
19
+ addTag: (tag: string) => void;
20
+ removeTag: (index: number) => void;
21
+ handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
22
+ handleKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
23
+ handleFocus: () => void;
24
+ handleBlur: () => void;
25
+ validateTag: (tag: string) => boolean;
26
+ };
@@ -0,0 +1,79 @@
1
+ import { ViewProps } from 'app-studio';
2
+ /**
3
+ * Size options for the TagInput component
4
+ */
5
+ export declare type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
+ /**
7
+ * Shape options for the TagInput component
8
+ */
9
+ export declare type Shape = 'default' | 'sharp' | 'rounded' | 'pillShaped';
10
+ /**
11
+ * Variant options for the TagInput component
12
+ */
13
+ export declare type Variant = 'outline' | 'default' | 'none';
14
+ /**
15
+ * Tag separator options
16
+ */
17
+ export declare type TagSeparator = 'enter' | 'comma' | 'space' | 'tab';
18
+ /**
19
+ * Individual tag object
20
+ */
21
+ export interface Tag {
22
+ /**
23
+ * Unique identifier for the tag
24
+ */
25
+ id: string;
26
+ /**
27
+ * The tag value/text
28
+ */
29
+ value: string;
30
+ }
31
+ /**
32
+ * Styles for different parts of the TagInput component
33
+ */
34
+ export declare type TagInputStyles = {
35
+ /**
36
+ * Styles for the main input container
37
+ */
38
+ inputContainer?: ViewProps;
39
+ /**
40
+ * Styles for the tags container
41
+ */
42
+ tagsContainer?: ViewProps;
43
+ /**
44
+ * Styles for individual tag chips
45
+ */
46
+ tag?: ViewProps;
47
+ /**
48
+ * Styles for tag text
49
+ */
50
+ tagText?: ViewProps;
51
+ /**
52
+ * Styles for tag remove button
53
+ */
54
+ tagRemove?: ViewProps;
55
+ /**
56
+ * Styles for the input field
57
+ */
58
+ input?: ViewProps;
59
+ /**
60
+ * Styles for the label
61
+ */
62
+ label?: ViewProps;
63
+ /**
64
+ * Styles for helper text
65
+ */
66
+ helperText?: ViewProps;
67
+ /**
68
+ * Styles for error text
69
+ */
70
+ error?: ViewProps;
71
+ /**
72
+ * Styles for the container
73
+ */
74
+ container?: ViewProps;
75
+ /**
76
+ * Styles for placeholder text
77
+ */
78
+ placeholder?: ViewProps;
79
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TagInput View Component
3
+ *
4
+ * Renders a tags input field with chips for each tag
5
+ * according to the design guidelines.
6
+ */
7
+ import React from 'react';
8
+ import { TagInputViewProps } from './TagInput.props';
9
+ /**
10
+ * Main TagInput view component
11
+ */
12
+ declare const TagInputView: React.FC<TagInputViewProps>;
13
+ export default TagInputView;
@@ -0,0 +1,4 @@
1
+ export * from './TagInput.props';
2
+ export * from './TagInput.type';
3
+ export * from './TagInput.state';
4
+ export { default as TagInputView } from './TagInput.view';
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { TagInputProps } from './TagInput/TagInput.props';
3
+ export declare const TagInput: React.FC<TagInputProps>;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ /**
3
+ * Default TagInput example
4
+ */
5
+ export declare const DefaultTagInput: () => React.JSX.Element;
6
+ /**
7
+ * TagInput with custom separators
8
+ */
9
+ export declare const CustomSeparatorsTagInput: () => React.JSX.Element;
10
+ /**
11
+ * TagInput with maximum limit
12
+ */
13
+ export declare const LimitedTagInput: () => React.JSX.Element;
14
+ /**
15
+ * TagInput with validation
16
+ */
17
+ export declare const ValidatedTagInput: () => React.JSX.Element;
18
+ /**
19
+ * Disabled and ReadOnly states
20
+ */
21
+ export declare const DisabledTagInput: () => React.JSX.Element;
22
+ /**
23
+ * Custom styled TagInput
24
+ */
25
+ export declare const StyledTagInput: () => React.JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './Default';
@@ -0,0 +1,2 @@
1
+ export { TagInput } from './TagInput';
2
+ export type { TagInputProps } from './TagInput/TagInput.props';
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { TagInputProps } from '../Form/TagInput/TagInput/TagInput.props';
3
+ /**
4
+ * TagInput allows users to add and manage a list of tags.
5
+ * Integrated with Formik for form validation and state management.
6
+ */
7
+ export declare const FormikTagInput: React.FC<TagInputProps>;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ /**
3
+ * Basic Formik TagInput example
4
+ */
5
+ export declare const FormikTagInputExample: () => React.JSX.Element;
6
+ /**
7
+ * Advanced Formik TagInput example with custom styling
8
+ */
9
+ export declare const FormikTagInputAdvanced: () => React.JSX.Element;
@@ -3,6 +3,7 @@ export * from './FormikColorInput';
3
3
  export * from './FormikComboBox';
4
4
  export * from './FormikCountryPicker';
5
5
  export * from './FormikDatePicker';
6
+ export * from './FormikTagInput';
6
7
  export * from './FormikOTPInput';
7
8
  export * from './FormikPassword';
8
9
  export * from './FormikSelect';
@@ -6,4 +6,4 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import { ContainerProps } from './FieldContainer/FieldContainer.props';
9
- export declare const FieldContainer: React.FC<ContainerProps>;
9
+ export declare const FieldContainer: React.ForwardRefExoticComponent<Pick<ContainerProps, string | number> & React.RefAttributes<HTMLDivElement>>;
@@ -22,6 +22,7 @@ export interface MenubarContextType {
22
22
  orientation: Orientation;
23
23
  size: Size;
24
24
  variant: Variant;
25
+ triggerRefs: React.MutableRefObject<Record<string, HTMLElement | null>>;
25
26
  }
26
27
  export interface MenubarStyles {
27
28
  container?: ViewProps;
@@ -21,6 +21,7 @@ export * from './Form/CountryPicker/CountryPicker';
21
21
  export * from './Form/DatePicker/DatePicker';
22
22
  export * from './Form/Password/Password';
23
23
  export * from './Form/ComboBox/ComboBox';
24
+ export * from './Form/TagInput/TagInput';
24
25
  export * from './OTPInput/OTPInput';
25
26
  export * from './Formik';
26
27
  export * from './Slider';
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const PositioningTestPage: () => React.JSX.Element;
3
+ export default PositioningTestPage;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const TagsInputPage: () => React.JSX.Element;
3
+ export default TagsInputPage;