@abstraks-dev/ui-library 1.1.26 → 1.1.29

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 (109) hide show
  1. package/dist/__tests__/AccountBox.test.js +61 -0
  2. package/dist/__tests__/AccountCircle.test.js +69 -0
  3. package/dist/__tests__/Alert.test.js +144 -0
  4. package/dist/__tests__/ArrowIcon.test.js +61 -0
  5. package/dist/__tests__/ArrowRight.test.js +12 -7
  6. package/dist/__tests__/BookOpen.test.js +61 -0
  7. package/dist/__tests__/Camera.test.js +69 -0
  8. package/dist/__tests__/CaretDown.test.js +69 -0
  9. package/dist/__tests__/ChevronDown.test.js +13 -8
  10. package/dist/__tests__/Comment.test.js +69 -0
  11. package/dist/__tests__/Ellipses.test.js +61 -0
  12. package/dist/__tests__/Explore.test.js +61 -0
  13. package/dist/__tests__/FileInput.test.js +148 -0
  14. package/dist/__tests__/Filter.test.js +69 -0
  15. package/dist/__tests__/Form.test.js +471 -0
  16. package/dist/__tests__/Group.test.js +61 -0
  17. package/dist/__tests__/GroupReview.test.js +61 -0
  18. package/dist/__tests__/Hamburger.test.js +69 -0
  19. package/dist/__tests__/Header.test.js +211 -0
  20. package/dist/__tests__/Heart.test.js +69 -0
  21. package/dist/__tests__/Home.test.js +69 -0
  22. package/dist/__tests__/LoadingSpinner.test.js +78 -0
  23. package/dist/__tests__/LogOut.test.js +69 -0
  24. package/dist/__tests__/Magnify.test.js +69 -0
  25. package/dist/__tests__/News.test.js +61 -0
  26. package/dist/__tests__/Review.test.js +61 -0
  27. package/dist/__tests__/SaveIcon.test.js +61 -0
  28. package/dist/__tests__/Search.test.js +101 -0
  29. package/dist/__tests__/utils/accessibility.test.js +361 -0
  30. package/dist/__tests__/utils/inputValidation-core.test.js +80 -0
  31. package/dist/__tests__/utils/validation-core.test.js +123 -0
  32. package/dist/__tests__/utils/validation.test.js +362 -0
  33. package/dist/components/Alert.js +104 -0
  34. package/dist/components/FileInput.js +96 -0
  35. package/dist/components/Form.js +27 -3
  36. package/dist/components/Header.js +1 -1
  37. package/dist/components/Search.js +238 -0
  38. package/dist/icons/AccountBox.js +33 -0
  39. package/dist/icons/AccountCircle.js +33 -0
  40. package/dist/icons/ArrowIcon.js +3 -2
  41. package/dist/icons/ArrowRight.js +23 -12
  42. package/dist/icons/BookOpen.js +33 -0
  43. package/dist/icons/Camera.js +33 -0
  44. package/dist/icons/CaretDown.js +33 -0
  45. package/dist/icons/ChevronDown.js +19 -9
  46. package/dist/icons/Comment.js +33 -0
  47. package/dist/icons/Explore.js +33 -0
  48. package/dist/icons/Filter.js +33 -0
  49. package/dist/icons/Group.js +33 -0
  50. package/dist/icons/GroupReview.js +33 -0
  51. package/dist/icons/Hamburger.js +14 -20
  52. package/dist/icons/Heart.js +33 -0
  53. package/dist/icons/Home.js +33 -0
  54. package/dist/icons/LoadingSpinner.js +3 -2
  55. package/dist/icons/LogOut.js +33 -0
  56. package/dist/icons/Magnify.js +33 -0
  57. package/dist/icons/News.js +33 -0
  58. package/dist/icons/Review.js +35 -0
  59. package/dist/icons/SaveIcon.js +3 -2
  60. package/dist/icons/index.js +112 -0
  61. package/dist/index.js +41 -1
  62. package/dist/styles/_variables.scss +5 -0
  63. package/dist/styles/alert.css +218 -0
  64. package/dist/styles/alert.css.map +1 -0
  65. package/dist/styles/alert.scss +128 -0
  66. package/dist/styles/anchor.css.map +1 -1
  67. package/dist/styles/avatar.css.map +1 -1
  68. package/dist/styles/button.css.map +1 -1
  69. package/dist/styles/card.css.map +1 -1
  70. package/dist/styles/checkbox.css.map +1 -1
  71. package/dist/styles/crud.css.map +1 -1
  72. package/dist/styles/dragAndDrop.css.map +1 -1
  73. package/dist/styles/error.css.map +1 -1
  74. package/dist/styles/file-input.css +165 -0
  75. package/dist/styles/file-input.css.map +1 -0
  76. package/dist/styles/file-input.scss +69 -0
  77. package/dist/styles/footer.css.map +1 -1
  78. package/dist/styles/form.css.map +1 -1
  79. package/dist/styles/header.css.map +1 -1
  80. package/dist/styles/heading.css.map +1 -1
  81. package/dist/styles/hero.css.map +1 -1
  82. package/dist/styles/htmlElements.css.map +1 -1
  83. package/dist/styles/label.css.map +1 -1
  84. package/dist/styles/loader.css.map +1 -1
  85. package/dist/styles/main.css +344 -11
  86. package/dist/styles/main.css.map +1 -1
  87. package/dist/styles/menu-hover.css.map +1 -1
  88. package/dist/styles/paragraph.css.map +1 -1
  89. package/dist/styles/prompt.css.map +1 -1
  90. package/dist/styles/radio.css.map +1 -1
  91. package/dist/styles/search.css +302 -0
  92. package/dist/styles/search.css.map +1 -0
  93. package/dist/styles/search.scss +260 -0
  94. package/dist/styles/select.css.map +1 -1
  95. package/dist/styles/side-menu.css.map +1 -1
  96. package/dist/styles/tabs.css.map +1 -1
  97. package/dist/styles/text-area.css.map +1 -1
  98. package/dist/styles/text-input.css +0 -11
  99. package/dist/styles/text-input.css.map +1 -1
  100. package/dist/styles/text-input.scss +0 -14
  101. package/dist/utils/utils/validation.js +2 -2
  102. package/dist/utils/validation.js +2 -2
  103. package/package.json +1 -1
  104. package/dist/icons/__tests__/CheckCircle.test.js +0 -9
  105. package/dist/icons/__tests__/ChevronDown.test.js +0 -9
  106. package/dist/icons/__tests__/Close.test.js +0 -9
  107. package/dist/icons/__tests__/EditSquare.test.js +0 -9
  108. package/dist/icons/__tests__/PlusCircle.test.js +0 -9
  109. package/dist/icons/__tests__/TrashX.test.js +0 -9
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.FileInput = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ var _ssrSafeId = require("../utils/ssrSafeId");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
12
+ /**
13
+ * FileInput - A stateless, accessible file input component
14
+ *
15
+ * Features:
16
+ * - Multiple file types support via accept prop
17
+ * - Custom label content (text, images, or components)
18
+ * - Accessible with proper ARIA labels
19
+ * - Multiple file selection support
20
+ * - Drag and drop styling ready
21
+ * - Hidden native input with custom styling
22
+ *
23
+ * @component
24
+ * @example
25
+ * <FileInput
26
+ * accept="image/*"
27
+ * onChange={(event) => handleFileChange(event)}
28
+ * label="📷 Upload Image"
29
+ * multiple={false}
30
+ * />
31
+ */
32
+ const FileInput = exports.FileInput = /*#__PURE__*/(0, _react.forwardRef)(({
33
+ // Core props
34
+ id,
35
+ className = '',
36
+ // Functionality props
37
+ accept = '*/*',
38
+ multiple = false,
39
+ onChange,
40
+ disabled = false,
41
+ // Content props
42
+ label = 'Choose File',
43
+ // Accessibility props
44
+ ariaLabel,
45
+ ariaDescribedBy,
46
+ // Additional props
47
+ ...rest
48
+ }, ref) => {
49
+ const stableId = (0, _ssrSafeId.useStableId)(id);
50
+ const inputRef = (0, _react.useRef)(null);
51
+
52
+ // Handle click on label to trigger file input
53
+ const handleLabelClick = () => {
54
+ if (!disabled && inputRef.current) {
55
+ inputRef.current.click();
56
+ }
57
+ };
58
+ const combinedClassName = ['ui-file-input', disabled && 'ui-file-input--disabled', className].filter(Boolean).join(' ');
59
+ return /*#__PURE__*/_react.default.createElement("div", {
60
+ className: combinedClassName
61
+ }, /*#__PURE__*/_react.default.createElement("label", {
62
+ htmlFor: stableId,
63
+ className: "ui-file-input__label",
64
+ onClick: handleLabelClick,
65
+ "aria-label": ariaLabel,
66
+ "aria-describedby": ariaDescribedBy
67
+ }, label), /*#__PURE__*/_react.default.createElement("input", _extends({
68
+ ref: ref || inputRef,
69
+ id: stableId,
70
+ type: "file",
71
+ accept: accept,
72
+ multiple: multiple,
73
+ onChange: onChange,
74
+ disabled: disabled,
75
+ className: "ui-file-input__input",
76
+ "aria-label": ariaLabel || 'File input',
77
+ "aria-describedby": ariaDescribedBy
78
+ }, rest)));
79
+ });
80
+ FileInput.displayName = 'FileInput';
81
+ FileInput.propTypes = {
82
+ // Core props
83
+ id: _propTypes.string,
84
+ className: _propTypes.string,
85
+ // Functionality props
86
+ accept: _propTypes.string,
87
+ multiple: _propTypes.bool,
88
+ onChange: _propTypes.func,
89
+ disabled: _propTypes.bool,
90
+ // Content props
91
+ label: _propTypes.node,
92
+ // Accessibility props
93
+ ariaLabel: _propTypes.string,
94
+ ariaDescribedBy: _propTypes.string
95
+ };
96
+ var _default = exports.default = FileInput;
@@ -141,6 +141,28 @@ const Form = exports.Form = /*#__PURE__*/(0, _react.forwardRef)(({
141
141
  }
142
142
  }, [validationMode, validateField, announceErrors]);
143
143
 
144
+ /**
145
+ * Extract all field names from form children
146
+ * @returns {Array} Array of field names
147
+ */
148
+ const getAllFieldNames = (0, _react.useCallback)(() => {
149
+ const fieldNames = [];
150
+ const extractFieldNames = childrenToExtract => {
151
+ _react.Children.forEach(childrenToExtract, child => {
152
+ if (! /*#__PURE__*/(0, _react.isValidElement)(child)) return;
153
+ const fieldName = child.props?.name || child.props?.setName;
154
+ if (fieldName && !fieldNames.includes(fieldName)) {
155
+ fieldNames.push(fieldName);
156
+ }
157
+ if (child.props?.children) {
158
+ extractFieldNames(child.props.children);
159
+ }
160
+ });
161
+ };
162
+ extractFieldNames(children);
163
+ return fieldNames;
164
+ }, [children]);
165
+
144
166
  /**
145
167
  * Validates all form fields
146
168
  * @returns {Object} Object containing all field errors
@@ -148,14 +170,16 @@ const Form = exports.Form = /*#__PURE__*/(0, _react.forwardRef)(({
148
170
  const validateAllFields = (0, _react.useCallback)(() => {
149
171
  if (!onValidate) return {};
150
172
  const newErrors = {};
151
- Object.keys(formData).forEach(fieldName => {
152
- const error = validateField(fieldName, formData[fieldName]);
173
+ const allFieldNames = getAllFieldNames();
174
+ allFieldNames.forEach(fieldName => {
175
+ const value = formData[fieldName];
176
+ const error = validateField(fieldName, value);
153
177
  if (error) {
154
178
  newErrors[fieldName] = error;
155
179
  }
156
180
  });
157
181
  return newErrors;
158
- }, [formData, validateField, onValidate]);
182
+ }, [getAllFieldNames, formData, validateField, onValidate]);
159
183
 
160
184
  /**
161
185
  * Handles form submission
@@ -208,7 +208,7 @@ const Header = exports.Header = /*#__PURE__*/(0, _react.forwardRef)(({
208
208
  onKeyDown: handleKeyDown
209
209
  }, restProps), /*#__PURE__*/_react.default.createElement("div", {
210
210
  className: isMobile ? 'container-mobile' : 'container-large'
211
- }, logo, search, isMobile ? /*#__PURE__*/_react.default.createElement(_SideMenu.SideMenu, {
211
+ }, logo, hasAuth && search, isMobile ? /*#__PURE__*/_react.default.createElement(_SideMenu.SideMenu, {
212
212
  direction: "vertical",
213
213
  position: "top",
214
214
  isOpen: isMenuOpen,
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Search = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ var _TextInput = require("./TextInput");
10
+ var _Button = require("./Button");
11
+ var _icons = require("../icons");
12
+ var _ssrSafeId = require("../utils/ssrSafeId");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // components
15
+ /**
16
+ * Search Component
17
+ *
18
+ * A flexible search component that can filter various types of data with real-time updates.
19
+ * Supports filtering by multiple fields and customizable result rendering.
20
+ *
21
+ * This is a stateless component - state management should be handled externally.
22
+ *
23
+ * @component
24
+ * @example
25
+ * <Search
26
+ * placeholder="Search users..."
27
+ * searchValue={searchValue}
28
+ * onSearchChange={handleSearchChange}
29
+ * data={users}
30
+ * searchFields={['name', 'email']}
31
+ * renderResult={({ item, highlightMatch }) => (
32
+ * <div className="search-result-item">
33
+ * <h4>{highlightMatch(item.name)}</h4>
34
+ * <p>{item.email}</p>
35
+ * </div>
36
+ * )}
37
+ * />
38
+ */
39
+ const Search = exports.Search = /*#__PURE__*/(0, _react.forwardRef)(({
40
+ // Core props
41
+ id,
42
+ className = '',
43
+ placeholder = 'Search...',
44
+ searchValue = '',
45
+ onSearchChange,
46
+ // Data props
47
+ data = [],
48
+ searchFields = [],
49
+ filterFunction,
50
+ // Rendering props
51
+ renderResult,
52
+ renderEmptyState,
53
+ renderNoResults,
54
+ // Appearance props
55
+ variant = 'default',
56
+ size = 'medium',
57
+ disabled = false,
58
+ hideResultsWhenEmpty = false,
59
+ maxResults,
60
+ // Loading state
61
+ isLoading = false,
62
+ loadingText = 'Searching...',
63
+ // Result container props
64
+ resultContainerClassName = '',
65
+ resultItemClassName = '',
66
+ // Advanced props
67
+ caseSensitive = false,
68
+ highlightMatches = true,
69
+ // Icon and button props
70
+ showIcon = true,
71
+ iconSize = 20,
72
+ iconColor = '#6c757d',
73
+ showButton = false,
74
+ buttonText = 'Search',
75
+ buttonVariant = 'primary',
76
+ onButtonClick,
77
+ ...rest
78
+ }, ref) => {
79
+ const stableId = (0, _ssrSafeId.useStableId)(id);
80
+
81
+ // Filter data based on search value
82
+ const getFilteredData = () => {
83
+ if (!searchValue.trim()) {
84
+ return [];
85
+ }
86
+ if (filterFunction) {
87
+ return filterFunction(data, searchValue);
88
+ }
89
+ if (!searchFields.length) {
90
+ return data;
91
+ }
92
+ const searchTerm = caseSensitive ? searchValue : searchValue.toLowerCase();
93
+ const filtered = data.filter(item => {
94
+ return searchFields.some(field => {
95
+ const fieldValue = getNestedValue(item, field);
96
+ if (fieldValue == null) return false;
97
+ const stringValue = String(fieldValue);
98
+ const compareValue = caseSensitive ? stringValue : stringValue.toLowerCase();
99
+ return compareValue.includes(searchTerm);
100
+ });
101
+ });
102
+ return maxResults ? filtered.slice(0, maxResults) : filtered;
103
+ };
104
+
105
+ // Helper function to get nested object values
106
+ const getNestedValue = (obj, path) => {
107
+ return path.split('.').reduce((current, key) => current?.[key], obj);
108
+ };
109
+
110
+ // Highlight matching text
111
+ const highlightMatch = (text, field = null) => {
112
+ if (!highlightMatches || !searchValue.trim() || !text) {
113
+ return text;
114
+ }
115
+ const textStr = String(text);
116
+ const searchTerm = caseSensitive ? searchValue : searchValue.toLowerCase();
117
+ const compareText = caseSensitive ? textStr : textStr.toLowerCase();
118
+ if (!compareText.includes(searchTerm)) {
119
+ return textStr;
120
+ }
121
+ const regex = new RegExp(`(${searchTerm.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, caseSensitive ? 'g' : 'gi');
122
+ const parts = textStr.split(regex);
123
+ return parts.map((part, index) => {
124
+ const isMatch = caseSensitive ? part === searchTerm : part.toLowerCase() === searchTerm.toLowerCase();
125
+ return isMatch ? /*#__PURE__*/_react.default.createElement("mark", {
126
+ key: index,
127
+ className: "search-highlight"
128
+ }, part) : part;
129
+ });
130
+ };
131
+ const filteredData = getFilteredData();
132
+ const hasResults = filteredData.length > 0;
133
+ const showResults = searchValue.trim().length > 0;
134
+
135
+ // Default render functions
136
+ const defaultRenderResult = ({
137
+ item,
138
+ index
139
+ }) => /*#__PURE__*/_react.default.createElement("div", {
140
+ key: index,
141
+ className: `search-result-item ${resultItemClassName}`.trim()
142
+ }, typeof item === 'string' ? item : JSON.stringify(item));
143
+ const defaultRenderEmptyState = () => /*#__PURE__*/_react.default.createElement("div", {
144
+ className: "search-empty-state"
145
+ }, /*#__PURE__*/_react.default.createElement("p", null, "Start typing to search..."));
146
+ const defaultRenderNoResults = () => /*#__PURE__*/_react.default.createElement("div", {
147
+ className: "search-no-results"
148
+ }, /*#__PURE__*/_react.default.createElement("p", null, "No results found for \"", searchValue, "\""));
149
+
150
+ // Component classes
151
+ const searchClasses = ['search-component', `search-component--${variant}`, `search-component--${size}`, disabled && 'search-component--disabled', className].filter(Boolean).join(' ');
152
+ const resultsClasses = ['search-results', `search-results--${variant}`, resultContainerClassName].filter(Boolean).join(' ');
153
+ return /*#__PURE__*/_react.default.createElement("div", _extends({
154
+ className: searchClasses
155
+ }, rest), /*#__PURE__*/_react.default.createElement("div", {
156
+ className: "search-input-container"
157
+ }, /*#__PURE__*/_react.default.createElement("div", {
158
+ className: "search-input-wrapper"
159
+ }, showIcon && /*#__PURE__*/_react.default.createElement("div", {
160
+ className: "search-icon search-icon--inside"
161
+ }, /*#__PURE__*/_react.default.createElement(_icons.Magnify, {
162
+ dimensions: iconSize,
163
+ fill: iconColor,
164
+ additionalClassName: "search-magnify-icon"
165
+ })), /*#__PURE__*/_react.default.createElement(_TextInput.TextInput, {
166
+ ref: ref,
167
+ id: stableId,
168
+ type: "text",
169
+ placeholder: placeholder,
170
+ value: searchValue,
171
+ onChange: onSearchChange,
172
+ disabled: disabled,
173
+ size: size,
174
+ className: `search-input ${showIcon ? 'search-input--with-icon' : ''}`
175
+ })), showButton && /*#__PURE__*/_react.default.createElement(_Button.Button, {
176
+ variant: buttonVariant,
177
+ size: size,
178
+ onClick: onButtonClick,
179
+ disabled: disabled,
180
+ className: "search-button"
181
+ }, buttonText)), showResults && /*#__PURE__*/_react.default.createElement("div", {
182
+ className: resultsClasses
183
+ }, isLoading ? /*#__PURE__*/_react.default.createElement("div", {
184
+ className: "search-loading"
185
+ }, /*#__PURE__*/_react.default.createElement("p", null, loadingText)) : hasResults ? /*#__PURE__*/_react.default.createElement("div", {
186
+ className: "search-results-list"
187
+ }, filteredData.map((item, index) => {
188
+ const ResultComponent = renderResult || defaultRenderResult;
189
+ return /*#__PURE__*/_react.default.createElement(ResultComponent, {
190
+ key: item.id || item._id || index,
191
+ item: item,
192
+ index: index,
193
+ highlightMatch: highlightMatch,
194
+ searchValue: searchValue
195
+ });
196
+ })) : searchValue.trim() ? renderNoResults ? renderNoResults() : defaultRenderNoResults() : renderEmptyState ? renderEmptyState() : defaultRenderEmptyState()));
197
+ });
198
+ Search.displayName = 'Search';
199
+ Search.propTypes = {
200
+ // Core props
201
+ id: _propTypes.string,
202
+ className: _propTypes.string,
203
+ placeholder: _propTypes.string,
204
+ searchValue: _propTypes.string,
205
+ onSearchChange: _propTypes.func,
206
+ // Data props
207
+ data: _propTypes.array,
208
+ searchFields: _propTypes.array,
209
+ filterFunction: _propTypes.func,
210
+ // Rendering props
211
+ renderResult: _propTypes.func,
212
+ renderEmptyState: _propTypes.func,
213
+ renderNoResults: _propTypes.func,
214
+ // Appearance props
215
+ variant: (0, _propTypes.oneOf)(['default', 'bordered', 'minimal']),
216
+ size: (0, _propTypes.oneOf)(['small', 'medium', 'large']),
217
+ disabled: _propTypes.bool,
218
+ hideResultsWhenEmpty: _propTypes.bool,
219
+ maxResults: _propTypes.number,
220
+ // Loading state
221
+ isLoading: _propTypes.bool,
222
+ loadingText: _propTypes.string,
223
+ // Result container props
224
+ resultContainerClassName: _propTypes.string,
225
+ resultItemClassName: _propTypes.string,
226
+ // Advanced props
227
+ caseSensitive: _propTypes.bool,
228
+ highlightMatches: _propTypes.bool,
229
+ // Icon and button props
230
+ showIcon: _propTypes.bool,
231
+ iconSize: _propTypes.number,
232
+ iconColor: _propTypes.string,
233
+ showButton: _propTypes.bool,
234
+ buttonText: _propTypes.string,
235
+ buttonVariant: (0, _propTypes.oneOf)(['primary', 'secondary', 'success', 'error', 'warning']),
236
+ onButtonClick: _propTypes.func
237
+ };
238
+ var _default = exports.default = Search;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.AccountBox = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const AccountBox = ({
11
+ componentName = 'account-box',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 -960 960 960',
15
+ fill = '#adb5bd'
16
+ }) => /*#__PURE__*/_react.default.createElement("svg", {
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
21
+ fill: fill
22
+ }, /*#__PURE__*/_react.default.createElement("path", {
23
+ d: "M200-246q54-53 125.5-83.5T480-360q83 0 154.5 30.5T760-246v-514H200v514Zm280-194q58 0 99-41t41-99q0-58-41-99t-99-41q-58 0-99 41t-41 99q0 58 41 99t99 41ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm69-80h422q-44-39-99.5-59.5T480-280q-56 0-112.5 20.5T269-200Zm211-320q-25 0-42.5-17.5T420-580q0-25 17.5-42.5T480-640q25 0 42.5 17.5T540-580q0 25-17.5 42.5T480-520Zm0 17Z"
24
+ }));
25
+ exports.AccountBox = AccountBox;
26
+ AccountBox.propTypes = {
27
+ componentName: _propTypes.string,
28
+ additionalClassName: _propTypes.string,
29
+ dimensions: _propTypes.number,
30
+ viewBox: _propTypes.string,
31
+ fill: _propTypes.string
32
+ };
33
+ var _default = exports.default = AccountBox;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.AccountCircle = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const AccountCircle = ({
11
+ componentName = 'account-circle',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 -960 960 960',
15
+ fill = '#adb5bd'
16
+ }) => /*#__PURE__*/_react.default.createElement("svg", {
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
21
+ fill: fill
22
+ }, /*#__PURE__*/_react.default.createElement("path", {
23
+ d: "M234-276q51-39 114-61.5T480-360q69 0 132 22.5T726-276q35-41 54.5-93T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 59 19.5 111t54.5 93Zm246-164q-59 0-99.5-40.5T340-580q0-59 40.5-99.5T480-720q59 0 99.5 40.5T620-580q0 59-40.5 99.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q53 0 100-15.5t86-44.5q-39-29-86-44.5T480-280q-53 0-100 15.5T294-220q39 29 86 44.5T480-160Zm0-360q26 0 43-17t17-43q0-26-17-43t-43-17q-26 0-43 17t-17 43q0 26 17 43t43 17Zm0-60Zm0 360Z"
24
+ }));
25
+ exports.AccountCircle = AccountCircle;
26
+ AccountCircle.propTypes = {
27
+ componentName: _propTypes.string,
28
+ additionalClassName: _propTypes.string,
29
+ dimensions: _propTypes.number,
30
+ viewBox: _propTypes.string,
31
+ fill: _propTypes.string
32
+ };
33
+ var _default = exports.default = AccountCircle;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ArrowIcon = void 0;
6
+ exports.default = exports.ArrowIcon = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = require("prop-types");
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -29,4 +29,5 @@ ArrowIcon.propTypes = {
29
29
  dimensions: _propTypes.number,
30
30
  viewBox: _propTypes.string,
31
31
  fill: _propTypes.string
32
- };
32
+ };
33
+ var _default = exports.default = ArrowIcon;
@@ -3,31 +3,42 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ArrowRight = void 0;
6
+ exports.default = exports.ArrowRight = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
8
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
10
  const ArrowRight = ({
10
- className = '',
11
- size = 24,
12
- color = 'currentColor'
11
+ componentName = 'arrow-right',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 0 24 24',
15
+ fill = 'currentColor'
13
16
  }) => /*#__PURE__*/_react.default.createElement("svg", {
14
- width: size,
15
- height: size,
16
- viewBox: "0 0 24 24",
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
17
21
  fill: "none",
18
- xmlns: "http://www.w3.org/2000/svg",
19
- className: className
22
+ xmlns: "http://www.w3.org/2000/svg"
20
23
  }, /*#__PURE__*/_react.default.createElement("path", {
21
24
  d: "M5 12H19",
22
- stroke: color,
25
+ stroke: fill,
23
26
  strokeWidth: "2",
24
27
  strokeLinecap: "round",
25
28
  strokeLinejoin: "round"
26
29
  }), /*#__PURE__*/_react.default.createElement("path", {
27
30
  d: "M12 5L19 12L12 19",
28
- stroke: color,
31
+ stroke: fill,
29
32
  strokeWidth: "2",
30
33
  strokeLinecap: "round",
31
34
  strokeLinejoin: "round"
32
35
  }));
33
- exports.ArrowRight = ArrowRight;
36
+ exports.ArrowRight = ArrowRight;
37
+ ArrowRight.propTypes = {
38
+ componentName: _propTypes.string,
39
+ additionalClassName: _propTypes.string,
40
+ dimensions: _propTypes.number,
41
+ viewBox: _propTypes.string,
42
+ fill: _propTypes.string
43
+ };
44
+ var _default = exports.default = ArrowRight;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.BookOpen = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const BookOpen = ({
11
+ componentName = 'book-open',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 -960 960 960',
15
+ fill = '#adb5bd'
16
+ }) => /*#__PURE__*/_react.default.createElement("svg", {
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
21
+ fill: fill
22
+ }, /*#__PURE__*/_react.default.createElement("path", {
23
+ d: "M560-564v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-600q-38 0-73 9.5T560-564Zm0 220v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-380q-38 0-73 9t-67 27Zm0-110v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-490q-38 0-73 9.5T560-454ZM260-320q47 0 91.5 10.5T440-278v-394q-41-24-87-36t-93-12q-36 0-71.5 7T120-692v396q35-12 69.5-18t70.5-6Zm260 42q44-21 88.5-31.5T700-320q36 0 70.5 6t69.5 18v-396q-33-14-68.5-21t-71.5-7q-47 0-93 12t-87 36v394Zm-40 118q-48-38-104-59t-116-21q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740q51-30 106.5-45T700-800q52 0 102 12t96 36q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-60 0-116 21t-104 59ZM280-494Z"
24
+ }));
25
+ exports.BookOpen = BookOpen;
26
+ BookOpen.propTypes = {
27
+ componentName: _propTypes.string,
28
+ additionalClassName: _propTypes.string,
29
+ dimensions: _propTypes.number,
30
+ viewBox: _propTypes.string,
31
+ fill: _propTypes.string
32
+ };
33
+ var _default = exports.default = BookOpen;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CameraIcon = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const CameraIcon = ({
11
+ componentName = 'camera-icon',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 0 24 24',
15
+ fill = '#333333'
16
+ }) => /*#__PURE__*/_react.default.createElement("svg", {
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
21
+ fill: fill
22
+ }, /*#__PURE__*/_react.default.createElement("path", {
23
+ d: "M480-260q75 0 127.5-52.5T660-440q0-75-52.5-127.5T480-620q-75 0-127.5 52.5T300-440q0 75 52.5 127.5T480-260Zm0-80q-42 0-71-29t-29-71q0-42 29-71t71-29q42 0 71 29t29 71q0 42-29 71t-71 29ZM160-120q-33 0-56.5-23.5T80-200v-480q0-33 23.5-56.5T160-760h126l74-80h240l74 80h126q33 0 56.5 23.5T880-680v480q0 33-23.5 56.5T800-120H160Zm0-80h640v-480H638l-73-80H395l-73 80H160v480Zm320-240Z"
24
+ }));
25
+ exports.CameraIcon = CameraIcon;
26
+ CameraIcon.propTypes = {
27
+ componentName: _propTypes.string,
28
+ additionalClassName: _propTypes.string,
29
+ dimensions: _propTypes.number,
30
+ viewBox: _propTypes.string,
31
+ fill: _propTypes.string
32
+ };
33
+ var _default = exports.default = CameraIcon;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CaretDown = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const CaretDown = ({
11
+ componentName = 'caret-down',
12
+ additionalClassName = '',
13
+ dimensions = 24,
14
+ viewBox = '0 96 960 960',
15
+ fill = '#adb5bd'
16
+ }) => /*#__PURE__*/_react.default.createElement("svg", {
17
+ className: `icon ${componentName} ${additionalClassName}`,
18
+ width: dimensions,
19
+ height: dimensions,
20
+ viewBox: viewBox,
21
+ fill: fill
22
+ }, /*#__PURE__*/_react.default.createElement("path", {
23
+ d: "M480 711 240 471l43-43 197 198 197-197 43 43-240 239Z"
24
+ }));
25
+ exports.CaretDown = CaretDown;
26
+ CaretDown.propTypes = {
27
+ componentName: _propTypes.string,
28
+ additionalClassName: _propTypes.string,
29
+ dimensions: _propTypes.number,
30
+ viewBox: _propTypes.string,
31
+ fill: _propTypes.string
32
+ };
33
+ var _default = exports.default = CaretDown;