pixel-react 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. package/lib/components/AddResourceButton/type.d.ts +1 -1
  2. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.d.ts +2 -1
  3. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.stories.d.ts +1 -0
  4. package/lib/components/AllProjectsDropdown/types.d.ts +10 -0
  5. package/lib/components/Button/Button.stories.d.ts +1 -0
  6. package/lib/components/Button/types.d.ts +1 -1
  7. package/lib/components/Drawer/Drawer.stories.d.ts +3 -0
  8. package/lib/components/Drawer/Types.d.ts +25 -1
  9. package/lib/components/Icon/Icon.d.ts +1 -1
  10. package/lib/components/MachineInputField/MachineInputField.d.ts +4 -0
  11. package/lib/components/MachineInputField/MachineInputField.stories.d.ts +6 -0
  12. package/lib/components/MachineInputField/index.d.ts +1 -0
  13. package/lib/components/MachineInputField/types.d.ts +11 -0
  14. package/lib/components/MenuOption/MenuOption.d.ts +1 -1
  15. package/lib/components/MenuOption/MenuOption.stories.d.ts +1 -0
  16. package/lib/components/MenuOption/types.d.ts +7 -0
  17. package/lib/components/Modal/types.d.ts +1 -0
  18. package/lib/components/SequentialConnectingBranch/SequentialConnectingBranch.d.ts +4 -0
  19. package/lib/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.d.ts +6 -0
  20. package/lib/components/SequentialConnectingBranch/components/AddBrowserModal/AddBrowserModal.d.ts +4 -0
  21. package/lib/components/SequentialConnectingBranch/components/AddBrowserModal/types.d.ts +3 -0
  22. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.d.ts +4 -0
  23. package/lib/components/SequentialConnectingBranch/components/Branches/types.d.ts +16 -0
  24. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.d.ts +4 -0
  25. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/types.d.ts +9 -0
  26. package/lib/components/SequentialConnectingBranch/components/DatasetListModal/DatasetListModal.d.ts +4 -0
  27. package/lib/components/SequentialConnectingBranch/components/DatasetListModal/types.d.ts +3 -0
  28. package/lib/components/SequentialConnectingBranch/index.d.ts +1 -0
  29. package/lib/components/SequentialConnectingBranch/types.d.ts +32 -0
  30. package/lib/components/Tabs/types.d.ts +1 -0
  31. package/lib/index.d.ts +99 -7
  32. package/lib/index.esm.js +789 -174
  33. package/lib/index.esm.js.map +1 -1
  34. package/lib/index.js +790 -173
  35. package/lib/index.js.map +1 -1
  36. package/lib/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/src/assets/Themes/BaseTheme.scss +18 -2
  39. package/src/assets/Themes/DarkTheme.scss +11 -3
  40. package/src/assets/icons/add_locator.svg +5 -0
  41. package/src/assets/icons/android.svg +9 -0
  42. package/src/assets/icons/browser_stack.svg +9 -0
  43. package/src/assets/icons/chrome.svg +12 -0
  44. package/src/assets/icons/dataset_list.svg +3 -0
  45. package/src/assets/icons/drag_icon.svg +5 -0
  46. package/src/assets/icons/label_plus.svg +3 -0
  47. package/src/assets/icons/mac.svg +9 -0
  48. package/src/assets/icons/manual_locator.svg +8 -0
  49. package/src/assets/icons/windows.svg +6 -0
  50. package/src/assets/styles/_colors.scss +4 -4
  51. package/src/components/AddResourceButton/type.ts +1 -1
  52. package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +2 -2
  53. package/src/components/AllProjectsDropdown/AllProjectsDropdown.stories.tsx +99 -1
  54. package/src/components/AllProjectsDropdown/AllProjectsDropdown.tsx +30 -56
  55. package/src/components/AllProjectsDropdown/types.ts +10 -0
  56. package/src/components/Button/Button.scss +4 -0
  57. package/src/components/Button/Button.stories.tsx +7 -0
  58. package/src/components/Button/types.ts +2 -2
  59. package/src/components/Drawer/Drawer.scss +22 -11
  60. package/src/components/Drawer/Drawer.stories.tsx +41 -0
  61. package/src/components/Drawer/Drawer.tsx +67 -40
  62. package/src/components/Drawer/Types.ts +25 -1
  63. package/src/components/GridLayout/GridLayout.scss +0 -2
  64. package/src/components/GridLayout/GridLayout.tsx +15 -8
  65. package/src/components/Icon/Icon.tsx +39 -33
  66. package/src/components/Icon/iconList.ts +25 -6
  67. package/src/components/InputWithDropdown/InputWithDropdown.scss +1 -1
  68. package/src/components/InputWithDropdown/InputWithDropdown.tsx +2 -1
  69. package/src/components/MachineInputField/MachineInputField.scss +44 -0
  70. package/src/components/MachineInputField/MachineInputField.stories.tsx +32 -0
  71. package/src/components/MachineInputField/MachineInputField.tsx +71 -0
  72. package/src/components/MachineInputField/index.ts +1 -0
  73. package/src/components/MachineInputField/types.ts +12 -0
  74. package/src/components/MenuOption/MenuOption.scss +14 -0
  75. package/src/components/MenuOption/MenuOption.stories.tsx +21 -0
  76. package/src/components/MenuOption/MenuOption.tsx +5 -3
  77. package/src/components/MenuOption/types.ts +9 -0
  78. package/src/components/MiniModal/MiniModal.tsx +1 -1
  79. package/src/components/Modal/Modal.tsx +2 -0
  80. package/src/components/Modal/modal.scss +2 -2
  81. package/src/components/Modal/types.ts +1 -0
  82. package/src/components/Select/Select.tsx +2 -2
  83. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.scss +117 -0
  84. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.tsx +62 -0
  85. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.tsx +210 -0
  86. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/AddBrowserModal.scss +51 -0
  87. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/AddBrowserModal.tsx +107 -0
  88. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/types.ts +5 -0
  89. package/src/components/SequentialConnectingBranch/components/Branches/Branches.scss +184 -0
  90. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +203 -0
  91. package/src/components/SequentialConnectingBranch/components/Branches/types.ts +18 -0
  92. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.scss +3 -0
  93. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.tsx +66 -0
  94. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/types.ts +10 -0
  95. package/src/components/SequentialConnectingBranch/components/DatasetListModal/DatasetListModal.scss +31 -0
  96. package/src/components/SequentialConnectingBranch/components/DatasetListModal/DatasetListModal.tsx +85 -0
  97. package/src/components/SequentialConnectingBranch/components/DatasetListModal/types.ts +4 -0
  98. package/src/components/SequentialConnectingBranch/index.ts +1 -0
  99. package/src/components/SequentialConnectingBranch/types.ts +42 -0
  100. package/src/components/Tabs/Tabs.stories.tsx +24 -25
  101. package/src/components/Tabs/Tabs.tsx +3 -10
  102. package/src/components/Tabs/types.ts +7 -1
  103. package/src/index.ts +5 -0
@@ -1,79 +1,49 @@
1
1
  import { useState } from 'react';
2
2
  import Icon from '../Icon';
3
3
  import Typography from '../Typography';
4
- import { ffid } from '../../utils/ffID/ffid';
5
4
  import { truncateText } from '../../utils/truncateText/truncateText';
6
5
  import './AllProjectsDropdown.scss';
7
6
  import classNames from 'classnames';
7
+ import { AllProjectsDropdownProps, optionsType } from './types';
8
8
 
9
- const AllProjectsDropdown = () => {
10
- const [showOptions, setShowOptions] = useState(false);
11
- const [selectedOptions, setSelectedOptions] = useState({
9
+ const AllProjectsDropdown = ({
10
+ onClick = () => {},
11
+ options,
12
+ selectedOption = {
12
13
  label: 'All Projects',
13
14
  value: 'All Projects',
14
15
  iconName: 'all_projects',
15
- });
16
+ },
17
+ }: AllProjectsDropdownProps) => {
18
+ const [showOptions, setShowOptions] = useState(false);
19
+ const [selectedOptions, setSelectedOptions] = useState(selectedOption);
16
20
  const [search, setSearch] = useState(true);
17
21
 
18
- let options = [
19
- {
20
- label: 'All Projects',
21
- value: 'All Projects',
22
- iconName: 'all_projects',
23
- },
24
- {
25
- label: 'Pantaloon Project',
26
- value: 'Pantaloon Web Project',
27
- iconName: 'web_icon',
28
- },
29
- {
30
- label: 'Mobile Project',
31
- value: 'Mobile Project',
32
- iconName: 'mobile_icon',
33
- },
34
- {
35
- label: 'Web & Mobile Project',
36
- value: 'Web & Mobile Project',
37
- iconName: 'web&mobile_icon',
38
- },
39
- {
40
- label: 'Sales Force',
41
- value: 'Sales Force',
42
- iconName: 'sales_force',
43
- },
44
- {
45
- label: 'MS Dynamic',
46
- value: 'MS Dynamic',
47
- iconName: 'ms_dynamic',
48
- },
49
- {
50
- label: 'Web Service',
51
- value: 'Web Service',
52
- iconName: '',
53
- },
54
- ];
55
-
56
- const handleSelect = () => {
22
+ const handleShowOption = () => {
57
23
  setShowOptions(!showOptions);
58
24
  };
59
25
 
60
- const handleSelectOption = (option: {
61
- label: string;
62
- value: string;
63
- iconName: string;
64
- }) => {
26
+ const handleSelectOption = (option: optionsType) => {
65
27
  setSelectedOptions(option);
66
28
  setShowOptions(false);
29
+ () => onClick(option);
67
30
  };
68
31
 
69
32
  const handleInput = () => {
70
33
  setSearch(false);
71
34
  };
72
35
 
36
+ const handleSearchEnter = () => {
37
+ setSearch(false);
38
+ };
39
+ const handleSearchLeave = () => {
40
+ setSearch(true);
41
+ };
42
+
73
43
  return (
74
44
  <div className={classNames('ff-all-project')}>
75
45
  <div
76
- onClick={handleSelect}
46
+ onClick={handleShowOption}
77
47
  className={classNames('ff-all-project-dropdown')}
78
48
  >
79
49
  <Typography
@@ -83,7 +53,7 @@ const AllProjectsDropdown = () => {
83
53
  fontWeight={'regular'}
84
54
  className={classNames('projects-label')}
85
55
  >
86
- {truncateText(selectedOptions.label, 12)}
56
+ {truncateText(selectedOptions?.label, 12)}
87
57
  </Typography>
88
58
  <div className={classNames('label-icon')}>
89
59
  <Icon
@@ -96,11 +66,15 @@ const AllProjectsDropdown = () => {
96
66
  </div>
97
67
  {showOptions && (
98
68
  <div className={classNames('ff-dropdown')}>
99
- <div className={classNames('ff-search')}>
69
+ <div
70
+ className={classNames('ff-search')}
71
+ onMouseEnter={() => handleSearchEnter()}
72
+ onMouseLeave={() => handleSearchLeave()}
73
+ >
100
74
  {search && <Icon name="search" height={8} width={8} />}
101
75
  <input
102
76
  type="text"
103
- placeholder="Search Project"
77
+ placeholder={`${search ? 'Search Project' : ''}`}
104
78
  onClick={() => handleInput()}
105
79
  />
106
80
  </div>
@@ -110,9 +84,9 @@ const AllProjectsDropdown = () => {
110
84
  `${options.length > 4 ? 'scroll' : ''}`
111
85
  )}
112
86
  >
113
- {options.map((option) => (
87
+ {options.map((option, index) => (
114
88
  <div
115
- key={ffid()}
89
+ key={index}
116
90
  onClick={() => handleSelectOption(option)}
117
91
  className={classNames(
118
92
  'projects-options',
@@ -133,7 +107,7 @@ const AllProjectsDropdown = () => {
133
107
  }
134
108
  />
135
109
  </div>
136
- <Typography key={ffid()} as={'div'} lineHeight={'30px'}>
110
+ <Typography key={index} as={'div'} lineHeight={'30px'}>
137
111
  {option.label}
138
112
  </Typography>
139
113
  </div>
@@ -0,0 +1,10 @@
1
+ export interface optionsType {
2
+ label: string;
3
+ value: string;
4
+ iconName: string;
5
+ }
6
+ export interface AllProjectsDropdownProps {
7
+ options: optionsType[];
8
+ onClick: (option: optionsType) => void;
9
+ selectedOption: optionsType;
10
+ }
@@ -92,6 +92,10 @@
92
92
  background: $delete-button-hover;
93
93
  }
94
94
  }
95
+ &--warning {
96
+ background: var(--warning-button-color);
97
+ border: var(--warning-button-border);
98
+ }
95
99
 
96
100
  &--secondary {
97
101
  &:before {
@@ -45,6 +45,13 @@ export const Delete: Story = {
45
45
  variant: 'delete',
46
46
  },
47
47
  };
48
+ export const Warning: Story = {
49
+ args: {
50
+ ...defaultArgs,
51
+ label: 'Warning',
52
+ variant: 'warning',
53
+ },
54
+ };
48
55
  export const PrimaryWithIcon: Story = {
49
56
  args: {
50
57
  ...defaultArgs,
@@ -4,7 +4,7 @@ export interface ButtonProps {
4
4
  /**
5
5
  * Variant of the button
6
6
  */
7
- variant: 'primary' | 'secondary' | 'tertiary' | 'delete';
7
+ variant: 'primary' | 'secondary' | 'tertiary' | 'delete'| 'warning';
8
8
  /**
9
9
  * What background color to use
10
10
  */
@@ -61,5 +61,5 @@ export interface ButtonProps {
61
61
  * Give icon name availble in storybook that to be on left side of button
62
62
  */
63
63
  iconPosition?: 'left' | 'right';
64
- transparentBackground?:boolean;
64
+ transparentBackground?: boolean;
65
65
  }
@@ -9,10 +9,9 @@
9
9
  }
10
10
 
11
11
  .ff-drawer {
12
- height: 100vh;
13
12
  position: fixed;
14
13
  right: 0;
15
- top: 0;
14
+ top: 80px;
16
15
  bottom: 0;
17
16
  min-width: 450px;
18
17
  background-color: var(--primary-button-text-color);
@@ -42,14 +41,14 @@
42
41
  &--x-large {
43
42
  transition: all 0.4s ease-in-out;
44
43
  border-radius: 5px;
45
- border: 2px solid var(--border-color);
44
+ border: 1px solid var(--border-color);
46
45
  }
47
46
 
48
47
  .ff-drawer-header {
49
- padding: 10px 8px 10px 8px;
48
+ padding: 4px 8px 4px 8px;
50
49
  display: flex;
51
50
  gap: 10px;
52
- border-bottom: 2px solid var(--border-color);
51
+ border-bottom: 1px solid var(--border-color);
53
52
 
54
53
  .ff-drawer-title {
55
54
  @extend .fontSm;
@@ -59,6 +58,15 @@
59
58
  align-items: center;
60
59
  gap: 12px;
61
60
  }
61
+ .ff-close-icon {
62
+ height: 16px;
63
+ width: 16px;
64
+ background-color: var(--button-bg-color);
65
+ border-radius: 4px;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ }
62
70
 
63
71
  .ff-drawer-action-section {
64
72
  width: 100%;
@@ -66,14 +74,17 @@
66
74
  align-items: center;
67
75
  justify-content: space-between;
68
76
  gap: 12px;
77
+ height: 24px;
69
78
 
70
79
  .ff-action-button {
71
80
  display: flex;
72
81
  align-items: center;
73
- gap: 12px;
82
+ gap: 5px;
74
83
 
75
84
  .ff-expand-collapse-button {
76
85
  cursor: pointer;
86
+ height: 24px;
87
+ width: 24px;
77
88
  background-color: var(--button-bg-color);
78
89
  outline: none;
79
90
  border: none;
@@ -82,8 +93,7 @@
82
93
  display: flex;
83
94
  align-items: center;
84
95
  justify-content: center;
85
- border-radius: 6px;
86
- padding: 6px;
96
+ border-radius: 8px;
87
97
  }
88
98
  }
89
99
  }
@@ -100,19 +110,20 @@
100
110
  }
101
111
 
102
112
  .ff-drawer-footer {
113
+ height: 24px;
103
114
  position: absolute;
104
115
  bottom: 0;
105
116
  left: 0;
106
117
  right: 0;
107
- padding: 5px 16px 5px 16px;
118
+ padding: 4px 8px 4px 8px;
108
119
  display: flex;
109
120
  justify-content: space-between;
110
- border-top: 2px solid var(--drawer-footer-border);
121
+ border-top: 1px solid var(--drawer-footer-border);
111
122
 
112
123
  .button-container {
113
124
  display: flex;
114
125
  justify-content: flex-end;
115
- gap: 16px;
126
+ gap: 10px;
116
127
  }
117
128
  }
118
129
  }
@@ -2,6 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react';
2
2
  import Drawer from './Drawer';
3
3
  import { useState } from 'react';
4
4
  import Button from '../Button';
5
+ import Icon from '../Icon';
5
6
 
6
7
  const meta: Meta<typeof Drawer> = {
7
8
  title: 'Components/Drawer',
@@ -20,6 +21,7 @@ const defaultArgs = {
20
21
  title: 'Drawer Title',
21
22
  showEditButton: false,
22
23
  _isExpanded: false,
24
+ showHeader: true,
23
25
  onClose: () => {},
24
26
  primaryButtonProps: {
25
27
  label: 'Create',
@@ -49,12 +51,51 @@ const defaultArgs = {
49
51
  overlay: false,
50
52
  isFooterRequired: true,
51
53
  footerContent: null,
54
+ backButtonIcon: <Icon name="error" height={16} width={16} />,
55
+ onCloseIconClick: () => alert('Close icon clicked!'),
52
56
  };
53
57
 
54
58
  export const Default: Story = {
55
59
  args: {
56
60
  ...defaultArgs,
57
61
  size: 'medium',
62
+ showHeader: true,
63
+ },
64
+ };
65
+ export const WithoutHeader: Story = {
66
+ args: {
67
+ ...defaultArgs,
68
+ showHeader: false,
69
+ size: 'medium',
70
+ },
71
+ parameters: {
72
+ docs: { disable: true },
73
+ },
74
+ };
75
+ export const WithCustomHeader: Story = {
76
+ args: {
77
+ ...defaultArgs,
78
+ customHeader: (
79
+ <div>
80
+ <h3>My Custom Header</h3>
81
+ </div>
82
+ ),
83
+ },
84
+ parameters: {
85
+ docs: { disable: true },
86
+ },
87
+ };
88
+ export const WithCustomFooter: Story = {
89
+ args: {
90
+ ...defaultArgs,
91
+ customFooter: (
92
+ <div>
93
+ <h3>My Custom Footer</h3>
94
+ </div>
95
+ ),
96
+ },
97
+ parameters: {
98
+ docs: { disable: true },
58
99
  },
59
100
  };
60
101
 
@@ -25,6 +25,11 @@ const Drawer: FC<DrawerProps> = ({
25
25
  _isExpanded = false,
26
26
  isBackButtonVisible = false,
27
27
  _isCloseModalButtonVisible = true,
28
+ showHeader = true,
29
+ backButtonIcon,
30
+ onCloseIconClick,
31
+ customHeader,
32
+ customFooter,
28
33
  }: DrawerProps) => {
29
34
  const [isExpanded, setIsExpanded] = useState(_isExpanded);
30
35
 
@@ -68,45 +73,69 @@ const Drawer: FC<DrawerProps> = ({
68
73
  'ff-drawer--open': isOpen,
69
74
  })}
70
75
  >
71
- <div className="ff-drawer-header">
72
- <div className="ff-drawer-action-section">
73
- <div className="ff-action-button">
74
- {showEditButton && (
75
- <button className="ff-expand-collapse-button" onClick={onEdit}>
76
- {/* icons are not provided yet so using dummy icons */}
77
- <Icon name="logo" height={16} width={16} />
78
- Edit
79
- </button>
80
- )}
81
- {_isExpanded && (
82
- <button
83
- className="ff-expand-collapse-button"
84
- onClick={toggleExpand}
85
- >
86
- <Icon
87
- name={isExpanded ? 'logo' : 'logo'}
88
- height={16}
89
- width={16}
90
- />
91
- </button>
92
- )}
93
- {isBackButtonVisible && (
94
- <button className="ff-expand-collapse-button" onClick={onClose}>
95
- <Icon
96
- name="error"
97
- height={16}
98
- width={16}
99
- hoverEffect={false}
100
- />
101
- </button>
102
- )}
103
- <div className="ff-drawer-title">{title}</div>
104
- </div>
105
- {_isCloseModalButtonVisible && (
106
- <Icon name="close" hoverEffect={false} onClick={onClose} />
76
+ {showHeader && (
77
+ <div className="ff-drawer-header">
78
+ {customHeader ? (
79
+ customHeader
80
+ ) : (
81
+ <div className="ff-drawer-action-section">
82
+ <div className="ff-action-button">
83
+ {showEditButton && (
84
+ <button
85
+ className="ff-expand-collapse-button"
86
+ onClick={onEdit}
87
+ >
88
+ <Icon name="logo" height={16} width={16} />
89
+ Edit
90
+ </button>
91
+ )}
92
+ {_isExpanded && (
93
+ <button
94
+ className="ff-expand-collapse-button"
95
+ onClick={toggleExpand}
96
+ >
97
+ <Icon
98
+ name={isExpanded ? 'logo' : 'logo'}
99
+ height={16}
100
+ width={16}
101
+ />
102
+ </button>
103
+ )}
104
+ {isBackButtonVisible && (
105
+ <button
106
+ className="ff-expand-collapse-button"
107
+ onClick={onClose}
108
+ >
109
+ {backButtonIcon ? (
110
+ backButtonIcon
111
+ ) : (
112
+ <Icon
113
+ name="error"
114
+ height={16}
115
+ width={16}
116
+ hoverEffect={false}
117
+ />
118
+ )}
119
+ </button>
120
+ )}
121
+ {title && <div className="ff-drawer-title">{title}</div>}
122
+ </div>
123
+ {_isCloseModalButtonVisible && (
124
+ <div className="ff-close-icon">
125
+ <Icon
126
+ name="close"
127
+ hoverEffect={false}
128
+ onClick={onCloseIconClick || onClose}
129
+ height={6}
130
+ width={6}
131
+ color="var(--tabs-label-active-color)"
132
+ />
133
+ </div>
134
+ )}
135
+ </div>
107
136
  )}
108
137
  </div>
109
- </div>
138
+ )}
110
139
 
111
140
  <div
112
141
  className={classNames('ff-drawer-body', {
@@ -118,9 +147,7 @@ const Drawer: FC<DrawerProps> = ({
118
147
 
119
148
  {isFooterRequired && (
120
149
  <div className="ff-drawer-footer">
121
- {footerContent ? (
122
- footerContent
123
- ) : (
150
+ {customFooter || footerContent || (
124
151
  <>
125
152
  <div className="button-container">
126
153
  {leftSecondaryButtonProps.label && (
@@ -48,7 +48,7 @@ export interface DrawerProps {
48
48
  /**
49
49
  * Header title for the drawer
50
50
  */
51
- title: string | ReactNode;
51
+ title?: string | ReactNode;
52
52
  /**
53
53
  * To show the edit button on the header
54
54
  */
@@ -85,4 +85,28 @@ export interface DrawerProps {
85
85
  * footer Content
86
86
  */
87
87
  footerContent?: ReactNode;
88
+ /**
89
+ * To show or hide the header
90
+ */
91
+ showHeader?: boolean;
92
+ /**
93
+ * Custom back button icon
94
+ * The icon to display for the back button.
95
+ * If not provided, a default icon will be used.
96
+ */
97
+ backButtonIcon?: ReactNode;
98
+ /**
99
+ * Callback function when the close icon is clicked
100
+ */
101
+ onCloseIconClick?: () => void;
102
+ /**
103
+ * Custom header for the drawer, replacing the default header.
104
+ * If provided, this will render in place of the default header.
105
+ */
106
+ customHeader?: ReactNode;
107
+ /**
108
+ * Custom footer for the drawer, replacing the default footer.
109
+ * If provided, this will render in place of the default footer.
110
+ */
111
+ customFooter?: ReactNode;
88
112
  }
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  /* Container */
4
2
  .ff-container {
5
3
  margin-right: auto;
@@ -1,32 +1,39 @@
1
-
2
1
  import React from 'react';
3
2
  import './GridLayout.scss';
4
3
  import { ContainerProps, RowProps, ColProps } from './types';
5
- import cx from 'classnames'
4
+ import cx from 'classnames';
6
5
 
7
6
  export const Container: React.FC<ContainerProps> = ({
8
7
  children,
9
8
  fluid = false,
10
9
  gap = '0px',
11
- className=''
10
+ className = '',
12
11
  }) => {
13
12
  const containerClassName = fluid ? 'ff-container-fluid' : 'ff-container';
14
13
  return (
15
- <div className={cx(containerClassName,className)} style={{ gap }}>
14
+ <div className={cx(containerClassName, className)} style={{ gap }}>
16
15
  {children}
17
16
  </div>
18
17
  );
19
18
  };
20
19
 
21
- export const Row: React.FC<RowProps> = ({ children, gap = '0px',className='' }) => {
20
+ export const Row: React.FC<RowProps> = ({
21
+ children,
22
+ gap = '0px',
23
+ className = '',
24
+ }) => {
22
25
  return (
23
- <div className={cx("ff-row",className)} style={{ gap }}>
26
+ <div className={cx('ff-row', className)} style={{ gap }}>
24
27
  {children}
25
28
  </div>
26
29
  );
27
30
  };
28
31
 
29
- export const Col: React.FC<ColProps> = ({ children, size = 12,className='' }) => {
32
+ export const Col: React.FC<ColProps> = ({
33
+ children,
34
+ size = 12,
35
+ className = '',
36
+ }) => {
30
37
  const colClassName = `ff-col-${size}`;
31
- return <div className={cx(colClassName,className)}>{children}</div>;
38
+ return <div className={cx(colClassName, className)}>{children}</div>;
32
39
  };
@@ -1,43 +1,49 @@
1
+ import { forwardRef } from 'react';
1
2
  import classNames from 'classnames';
2
3
  import Components from './iconList';
3
4
  import './Icons.scss';
4
5
  import { IconProps } from './types';
5
6
 
6
- const Icon = ({
7
- name,
8
- height,
9
- width,
10
- onClick = () => {},
11
- color = '#808080',
12
- hoverEffect = false,
13
- className = '',
14
- disabled = false,
15
- ...props
16
- }: IconProps) => {
17
- const IconComponent = Components[name];
7
+ const Icon = forwardRef<HTMLSpanElement, IconProps>(
8
+ (
9
+ {
10
+ name,
11
+ height,
12
+ width,
13
+ onClick = () => {},
14
+ color = 'var(--brand-color)', // Default color
15
+ hoverEffect = false,
16
+ className = '',
17
+ disabled = false,
18
+ ...props
19
+ },
20
+ ref
21
+ ) => {
22
+ const IconComponent = Components[name];
18
23
 
19
- const iconHeight = height ? height : 16;
20
- const iconWidth = width ? width : 16;
21
-
22
- if (!IconComponent) {
23
- return null;
24
- }
24
+ const iconHeight = height || 16;
25
+ const iconWidth = width || 16;
25
26
 
27
+ if (!IconComponent) {
28
+ return null;
29
+ }
26
30
 
27
- return (
28
- <span
29
- onClick={disabled ? () => {} : onClick}
30
- style={{ height: `${iconHeight}px`, width: `${iconWidth}px` }}
31
- className={classNames('ff-icon-container', {
32
- 'ff-icon-click': !!hoverEffect,
33
- 'ff-icon-disabled': disabled,
34
- [className]: !!className,
35
- })}
36
- {...props}
37
- >
38
- <IconComponent height="100%" width="100%" style={{ color: color }} />
39
- </span>
40
- );
41
- };
31
+ return (
32
+ <span
33
+ ref={ref}
34
+ onClick={disabled ? () => {} : onClick}
35
+ style={{ height: `${iconHeight}px`, width: `${iconWidth}px` }}
36
+ className={classNames('ff-icon-container', {
37
+ 'ff-icon-click': !!hoverEffect,
38
+ 'ff-icon-disabled': disabled,
39
+ [className]: !!className,
40
+ })}
41
+ {...props}
42
+ >
43
+ <IconComponent height="100%" width="100%" style={{ color: color }} />
44
+ </span>
45
+ );
46
+ }
47
+ );
42
48
 
43
49
  export default Icon;