@licklist/design 0.78.5-dev.54 → 0.78.5-dev.56

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 (73) hide show
  1. package/dist/index.js +2 -7
  2. package/dist/v2/components/ActionMenu/ActionMenu.d.ts +1 -0
  3. package/dist/v2/components/ActionMenu/ActionMenu.d.ts.map +1 -1
  4. package/dist/v2/components/ActionMenu/ActionMenu.js +10 -3
  5. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
  6. package/dist/v2/components/Button/Button.d.ts +3 -2
  7. package/dist/v2/components/Button/Button.d.ts.map +1 -1
  8. package/dist/v2/components/Button/Button.js +12 -6
  9. package/dist/v2/components/Button/Button.scss.js +1 -1
  10. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts +2 -1
  11. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts.map +1 -1
  12. package/dist/v2/components/NewPageHeader/NewPageHeader.js +2 -2
  13. package/dist/v2/components/NewTable/NewTable.d.ts +1 -0
  14. package/dist/v2/components/NewTable/NewTable.d.ts.map +1 -1
  15. package/dist/v2/components/NewTable/NewTable.js +5 -0
  16. package/dist/v2/components/Pagination/Pagination.scss.js +1 -1
  17. package/dist/v2/components/index.d.ts +3 -10
  18. package/dist/v2/components/index.d.ts.map +1 -1
  19. package/dist/v2/icons/index.d.ts +18 -3
  20. package/dist/v2/icons/index.d.ts.map +1 -1
  21. package/dist/v2/icons/index.js +150 -7
  22. package/dist/v2/pages/Settings/components/SidebarCustomisation.js +7 -11
  23. package/dist/v2/pages/Settings/components/SidebarNavItem.js +6 -11
  24. package/dist/v2/styles/components/Button.scss +34 -2
  25. package/package.json +1 -1
  26. package/src/v2/components/ActionMenu/ActionMenu.scss +16 -5
  27. package/src/v2/components/ActionMenu/ActionMenu.tsx +6 -3
  28. package/src/v2/components/Button/Button.tsx +6 -3
  29. package/src/v2/components/Customer/{CustomerDetail/CustomerDetail.scss → CustomerDetail.scss} +7 -3
  30. package/src/v2/components/Customer/CustomersList.scss +308 -36
  31. package/src/v2/components/NewPageHeader/NewPageHeader.tsx +6 -4
  32. package/src/v2/components/NewTable/NewTable.tsx +6 -0
  33. package/src/v2/components/Pagination/Pagination.scss +24 -24
  34. package/src/v2/components/index.ts +19 -13
  35. package/src/v2/icons/index.tsx +35 -6
  36. package/src/v2/styles/components/Button.scss +34 -2
  37. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts +0 -11
  38. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts.map +0 -1
  39. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.js +0 -32
  40. package/dist/v2/components/Customer/CustomerCreate/index.d.ts +0 -2
  41. package/dist/v2/components/Customer/CustomerCreate/index.d.ts.map +0 -1
  42. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts +0 -35
  43. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts.map +0 -1
  44. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.js +0 -235
  45. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.scss.js +0 -6
  46. package/dist/v2/components/Customer/CustomerDetail/index.d.ts +0 -2
  47. package/dist/v2/components/Customer/CustomerDetail/index.d.ts.map +0 -1
  48. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts +0 -11
  49. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts.map +0 -1
  50. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.js +0 -32
  51. package/dist/v2/components/Customer/CustomerEdit/index.d.ts +0 -2
  52. package/dist/v2/components/Customer/CustomerEdit/index.d.ts.map +0 -1
  53. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts +0 -22
  54. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts.map +0 -1
  55. package/dist/v2/components/Customer/CustomerForm/CustomerForm.js +0 -535
  56. package/dist/v2/components/Customer/CustomerForm/index.d.ts +0 -2
  57. package/dist/v2/components/Customer/CustomerForm/index.d.ts.map +0 -1
  58. package/dist/v2/components/Customer/CustomersList.d.ts +0 -37
  59. package/dist/v2/components/Customer/CustomersList.d.ts.map +0 -1
  60. package/dist/v2/components/Customer/CustomersList.js +0 -204
  61. package/dist/v2/components/Customer/CustomersList.scss.js +0 -6
  62. package/dist/v2/components/Customer/index.d.ts +0 -6
  63. package/dist/v2/components/Customer/index.d.ts.map +0 -1
  64. package/src/v2/components/Customer/CustomerCreate/CustomerCreate.tsx +0 -36
  65. package/src/v2/components/Customer/CustomerCreate/index.ts +0 -1
  66. package/src/v2/components/Customer/CustomerDetail/CustomerDetail.tsx +0 -161
  67. package/src/v2/components/Customer/CustomerDetail/index.ts +0 -1
  68. package/src/v2/components/Customer/CustomerEdit/CustomerEdit.tsx +0 -37
  69. package/src/v2/components/Customer/CustomerEdit/index.ts +0 -1
  70. package/src/v2/components/Customer/CustomerForm/CustomerForm.tsx +0 -434
  71. package/src/v2/components/Customer/CustomerForm/index.ts +0 -1
  72. package/src/v2/components/Customer/CustomersList.tsx +0 -193
  73. package/src/v2/components/Customer/index.ts +0 -5
@@ -1,5 +1,84 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
 
3
+ function _define_property(obj, key, value) {
4
+ if (key in obj) {
5
+ Object.defineProperty(obj, key, {
6
+ value: value,
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true
10
+ });
11
+ } else {
12
+ obj[key] = value;
13
+ }
14
+ return obj;
15
+ }
16
+ function _object_spread(target) {
17
+ for(var i = 1; i < arguments.length; i++){
18
+ var source = arguments[i] != null ? arguments[i] : {};
19
+ var ownKeys = Object.keys(source);
20
+ if (typeof Object.getOwnPropertySymbols === "function") {
21
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
22
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
23
+ }));
24
+ }
25
+ ownKeys.forEach(function(key) {
26
+ _define_property(target, key, source[key]);
27
+ });
28
+ }
29
+ return target;
30
+ }
31
+ function ownKeys(object, enumerableOnly) {
32
+ var keys = Object.keys(object);
33
+ if (Object.getOwnPropertySymbols) {
34
+ var symbols = Object.getOwnPropertySymbols(object);
35
+ if (enumerableOnly) {
36
+ symbols = symbols.filter(function(sym) {
37
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
38
+ });
39
+ }
40
+ keys.push.apply(keys, symbols);
41
+ }
42
+ return keys;
43
+ }
44
+ function _object_spread_props(target, source) {
45
+ source = source != null ? source : {};
46
+ if (Object.getOwnPropertyDescriptors) {
47
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
48
+ } else {
49
+ ownKeys(Object(source)).forEach(function(key) {
50
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
51
+ });
52
+ }
53
+ return target;
54
+ }
55
+ function _object_without_properties(source, excluded) {
56
+ if (source == null) return {};
57
+ var target = _object_without_properties_loose(source, excluded);
58
+ var key, i;
59
+ if (Object.getOwnPropertySymbols) {
60
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
61
+ for(i = 0; i < sourceSymbolKeys.length; i++){
62
+ key = sourceSymbolKeys[i];
63
+ if (excluded.indexOf(key) >= 0) continue;
64
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
65
+ target[key] = source[key];
66
+ }
67
+ }
68
+ return target;
69
+ }
70
+ function _object_without_properties_loose(source, excluded) {
71
+ if (source == null) return {};
72
+ var target = {};
73
+ var sourceKeys = Object.keys(source);
74
+ var key, i;
75
+ for(i = 0; i < sourceKeys.length; i++){
76
+ key = sourceKeys[i];
77
+ if (excluded.indexOf(key) >= 0) continue;
78
+ target[key] = source[key];
79
+ }
80
+ return target;
81
+ }
3
82
  var MarketingIcon = function() {
4
83
  return /*#__PURE__*/ jsx("svg", {
5
84
  width: "24",
@@ -139,10 +218,11 @@ var SearchIcon = function() {
139
218
  });
140
219
  };
141
220
  var RefreshIcon = function() {
221
+ var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_width = _ref.width, width = _ref_width === void 0 ? 24 : _ref_width, _ref_height = _ref.height, height = _ref_height === void 0 ? 24 : _ref_height;
142
222
  return /*#__PURE__*/ jsx("svg", {
143
223
  xmlns: "http://www.w3.org/2000/svg",
144
- width: "24",
145
- height: "24",
224
+ width: width,
225
+ height: height,
146
226
  viewBox: "0 0 24 24",
147
227
  fill: "none",
148
228
  children: /*#__PURE__*/ jsx("path", {
@@ -152,10 +232,11 @@ var RefreshIcon = function() {
152
232
  });
153
233
  };
154
234
  var SendIcon = function() {
235
+ var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_width = _ref.width, width = _ref_width === void 0 ? 24 : _ref_width, _ref_height = _ref.height, height = _ref_height === void 0 ? 24 : _ref_height;
155
236
  return /*#__PURE__*/ jsx("svg", {
156
237
  xmlns: "http://www.w3.org/2000/svg",
157
- width: "24",
158
- height: "24",
238
+ width: width,
239
+ height: height,
159
240
  viewBox: "0 0 24 24",
160
241
  fill: "none",
161
242
  children: /*#__PURE__*/ jsx("path", {
@@ -178,9 +259,10 @@ var ExternalLinkIcon = function() {
178
259
  });
179
260
  };
180
261
  var ExportIcon = function() {
262
+ var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_width = _ref.width, width = _ref_width === void 0 ? 24 : _ref_width, _ref_height = _ref.height, height = _ref_height === void 0 ? 24 : _ref_height;
181
263
  return /*#__PURE__*/ jsx("svg", {
182
- width: "24",
183
- height: "24",
264
+ width: width,
265
+ height: height,
184
266
  viewBox: "0 0 32 32",
185
267
  fill: "none",
186
268
  xmlns: "http://www.w3.org/2000/svg",
@@ -260,5 +342,66 @@ var InfoIcon = function() {
260
342
  })
261
343
  });
262
344
  };
345
+ var ArrowUpIcon = function() {
346
+ return /*#__PURE__*/ jsx("svg", {
347
+ width: "11",
348
+ height: "6",
349
+ viewBox: "0 0 11 6",
350
+ fill: "none",
351
+ xmlns: "http://www.w3.org/2000/svg",
352
+ children: /*#__PURE__*/ jsx("path", {
353
+ d: "M10 5L5.5 1L1 5",
354
+ stroke: "currentColor",
355
+ strokeWidth: "2",
356
+ strokeLinecap: "round",
357
+ strokeLinejoin: "round"
358
+ })
359
+ });
360
+ };
361
+ var ArrowDownIcon = function() {
362
+ return /*#__PURE__*/ jsx("svg", {
363
+ width: "11",
364
+ height: "6",
365
+ viewBox: "0 0 11 6",
366
+ fill: "none",
367
+ xmlns: "http://www.w3.org/2000/svg",
368
+ children: /*#__PURE__*/ jsx("path", {
369
+ d: "M1 1L5.5 5L10 1",
370
+ stroke: "currentColor",
371
+ strokeWidth: "2",
372
+ strokeLinecap: "round",
373
+ strokeLinejoin: "round"
374
+ })
375
+ });
376
+ };
377
+ var CloseIcon = function(_param) {
378
+ var _param_width = _param.width, width = _param_width === void 0 ? 24 : _param_width, _param_height = _param.height, height = _param_height === void 0 ? 24 : _param_height, props = _object_without_properties(_param, [
379
+ "width",
380
+ "height"
381
+ ]);
382
+ return /*#__PURE__*/ jsxs("svg", _object_spread_props(_object_spread({
383
+ width: width,
384
+ height: height,
385
+ viewBox: "0 0 24 24",
386
+ xmlns: "http://www.w3.org/2000/svg"
387
+ }, props), {
388
+ children: [
389
+ /*#__PURE__*/ jsx("path", {
390
+ d: "M18 6L6 18",
391
+ stroke: "currentColor",
392
+ strokeWidth: "2",
393
+ strokeLinecap: "round",
394
+ strokeLinejoin: "round"
395
+ }),
396
+ /*#__PURE__*/ jsx("path", {
397
+ d: "M6 6L18 18",
398
+ stroke: "currentColor",
399
+ strokeWidth: "2",
400
+ strokeLinecap: "round",
401
+ strokeLinejoin: "round"
402
+ })
403
+ ]
404
+ }));
405
+ };
263
406
 
264
- export { ArrowLeftIcon, ArrowRightIcon, BookingTypesIcon, BookingsIcon, CalendarIcon, ClearIcon, CustomersIcon, EditIcon, ExportIcon, ExternalLinkIcon, InfoIcon, LoyaltyIcon, MarketingIcon, RefreshIcon, SearchIcon, SendIcon, SettingsIcon, WaiversIcon };
407
+ export { ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BookingTypesIcon, BookingsIcon, CalendarIcon, ClearIcon, CloseIcon, CustomersIcon, EditIcon, ExportIcon, ExternalLinkIcon, InfoIcon, LoyaltyIcon, MarketingIcon, RefreshIcon, SearchIcon, SendIcon, SettingsIcon, WaiversIcon };
@@ -6,29 +6,25 @@ import { CalendarIcon, BookingsIcon, BookingTypesIcon, LoyaltyIcon, CustomersIco
6
6
  import '../../../components/Badge/Badge.scss.js';
7
7
  import '../../../components/QuickFilter/QuickFilter.scss.js';
8
8
  import '../../../components/NewTable/NewTable.scss.js';
9
- import '../../../components/NewInput/NewInput.js';
10
- import '../../../components/Pagination/Pagination.scss.js';
11
- import '../../../components/Customer/CustomersList.scss.js';
12
- import { Button } from '../../../components/Button/Button.js';
13
- import '../../../components/NewPageHeader/NewPageHeader.scss.js';
14
- import '@licklist/plugins/dist/context/app/AlertContext';
15
- import '../../../components/Select/Select.scss.js';
16
- import '../../../components/Checkbox/Checkbox.js';
17
- import 'react-i18next';
18
- import '../../../components/Customer/CustomerDetail/CustomerDetail.scss.js';
19
9
  import 'react-icons/fa';
20
10
  import '../../../components/ActionMenu/ActionMenu.scss.js';
21
11
  import '../../../components/Modal/DeleteModal.scss.js';
12
+ import '../../../components/NewInput/NewInput.js';
22
13
  import '../../../components/FormField/FormField.js';
14
+ import '../../../components/Checkbox/Checkbox.js';
23
15
  import '../../../components/WYSIWYGEditor/WYSIWYGEditor.scss.js';
16
+ import { Button } from '../../../components/Button/Button.js';
17
+ import '../../../components/NewPageHeader/NewPageHeader.scss.js';
24
18
  import '../../../components/SectionHeader/SectionHeader.scss.js';
25
- import { GhostButton } from '../../../components/Button/GhostButton.js';
19
+ import '../../../components/Select/Select.scss.js';
26
20
  import '../../../components/Tooltip/Tooltip.js';
27
21
  import '../../../components/UserAvatar/UserAvatar.scss.js';
28
22
  import '../../../components/UserPanel/UserPanel.scss.js';
29
23
  import '../../../components/EntityHeader/EntityHeader.scss.js';
30
24
  import '../../../components/Alert/Alert.scss.js';
31
25
  import '../../../components/NPSScore/NPSScore.scss.js';
26
+ import '../../../components/Pagination/Pagination.scss.js';
27
+ import { GhostButton } from '../../../components/Button/GhostButton.js';
32
28
 
33
29
  function _array_like_to_array(arr, len) {
34
30
  if (len == null || len > arr.length) len = arr.length;
@@ -3,29 +3,24 @@ import 'react';
3
3
  import '../../../components/Badge/Badge.scss.js';
4
4
  import '../../../components/QuickFilter/QuickFilter.scss.js';
5
5
  import '../../../components/NewTable/NewTable.scss.js';
6
- import '../../../components/NewInput/NewInput.js';
7
- import '../../../components/Pagination/Pagination.scss.js';
8
- import '../../../components/Customer/CustomersList.scss.js';
9
- import '../../../components/Button/Button.scss.js';
10
- import '../../../components/NewPageHeader/NewPageHeader.scss.js';
11
- import '@licklist/plugins/dist/context/app/AlertContext';
12
- import '../../../components/Select/Select.scss.js';
13
- import '../../../components/Checkbox/Checkbox.js';
14
- import 'react-i18next';
15
- import '../../../components/Customer/CustomerDetail/CustomerDetail.scss.js';
16
6
  import 'react-icons/fa';
17
7
  import '../../../components/ActionMenu/ActionMenu.scss.js';
18
8
  import '../../../components/Modal/DeleteModal.scss.js';
9
+ import '../../../components/NewInput/NewInput.js';
19
10
  import { FormField } from '../../../components/FormField/FormField.js';
11
+ import '../../../components/Checkbox/Checkbox.js';
20
12
  import '../../../components/WYSIWYGEditor/WYSIWYGEditor.scss.js';
13
+ import '../../../components/Button/Button.scss.js';
14
+ import '../../../components/NewPageHeader/NewPageHeader.scss.js';
21
15
  import '../../../components/SectionHeader/SectionHeader.scss.js';
22
- import '../../../components/Button/GhostButton.scss.js';
16
+ import '../../../components/Select/Select.scss.js';
23
17
  import '../../../components/Tooltip/Tooltip.js';
24
18
  import '../../../components/UserAvatar/UserAvatar.scss.js';
25
19
  import '../../../components/UserPanel/UserPanel.scss.js';
26
20
  import '../../../components/EntityHeader/EntityHeader.scss.js';
27
21
  import '../../../components/Alert/Alert.scss.js';
28
22
  import '../../../components/NPSScore/NPSScore.scss.js';
23
+ import '../../../components/Pagination/Pagination.scss.js';
29
24
  import './SidebarNavItem.scss.js';
30
25
 
31
26
  var SidebarNavItem = function(param) {
@@ -8,7 +8,7 @@
8
8
  align-self: flex-start;
9
9
  text-align: center;
10
10
  align-items: center;
11
- font-family: var(--font-family-sans, 'Geist', sans-serif), serif;
11
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
12
12
  font-weight: 600;
13
13
  line-height: 20px;
14
14
  min-height: 44px;
@@ -79,6 +79,28 @@
79
79
  }
80
80
  }
81
81
 
82
+ // Secondary - Soft
83
+ &--secondary-soft {
84
+ background: var(--surface-action-soft, #EFE6FD);
85
+ color: var(--label-action, #6200EE);
86
+
87
+ &:hover {
88
+ background: var(--surface-tertiary, #F0F0F5);
89
+ }
90
+ }
91
+
92
+
93
+ // Tertiary - Soft
94
+ &--tertiary-soft {
95
+ background: #FFFFFF;
96
+ color: var(--label-primary, #121E52);
97
+ border: 1px solid var(--border-primary, #E8E9EF);
98
+
99
+ &:hover {
100
+ background: var(--surface-tertiary, #F0F0F5);
101
+ }
102
+ }
103
+
82
104
  // Destructive - Soft
83
105
  &--destructive-soft {
84
106
  border-radius: var(--radius-reg, 8px);
@@ -138,8 +160,18 @@
138
160
  }
139
161
 
140
162
  /* Button text styling */
163
+ &__spinner {
164
+ width: 16px;
165
+ height: 16px;
166
+ border: 2px solid rgba(0, 0, 0, 0.1);
167
+ border-top: 2px solid currentColor;
168
+ border-radius: 50%;
169
+ animation: spin 1s linear infinite;
170
+ flex-shrink: 0;
171
+ }
172
+
141
173
  &__text {
142
- font-family: 'Geist', sans-serif;
174
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
143
175
  font-size: 15px;
144
176
  font-style: normal;
145
177
  font-weight: 600;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.78.5-dev.54",
3
+ "version": "0.78.5-dev.56",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/bookedit-licklist/licklist_design.git"
@@ -12,15 +12,25 @@
12
12
  padding: 8px;
13
13
  justify-content: center;
14
14
  align-items: center;
15
- border-radius: 8px;
15
+ border-radius: 50%;
16
16
  border: 1px solid var(--border-primary, #E8E9EF);
17
- background: var(--surface-primary, #FFF);
17
+ background: var(--surface-action-soft);
18
18
  color: var(--actions-regular, #5D5BF4);
19
19
  cursor: pointer;
20
20
  transition: all 0.2s ease;
21
21
 
22
22
  &:hover {
23
- background: var(--surface-primary-hover, #F8F8FA);
23
+ background: var(--surface-action-soft);
24
+ }
25
+
26
+ &--close {
27
+ border-radius: 50%;
28
+ background: #F4F4FE;
29
+ border: 1px solid #F4F4FE;
30
+
31
+ &:hover {
32
+ background: #E8E8FD;
33
+ }
24
34
  }
25
35
 
26
36
  svg {
@@ -31,7 +41,7 @@
31
41
 
32
42
  &__dropdown {
33
43
  position: absolute;
34
- top: calc(100% + 4px);
44
+ bottom: calc(100% + 4px);
35
45
  right: 0;
36
46
  z-index: 1000;
37
47
  display: flex;
@@ -40,11 +50,12 @@
40
50
  align-items: flex-start;
41
51
  border-radius: 12px;
42
52
  background: var(--surface-primary, #FFF);
43
- box-shadow: 0px 4px 20px 0px rgba(18, 30, 82, 0.15);
53
+ box-shadow: 0 4px 20px 0 rgba(18, 30, 82, 0.15);
44
54
  overflow: hidden;
45
55
  border: 1px solid var(--border-primary, #E8E9EF);
46
56
  }
47
57
 
58
+
48
59
  &__item {
49
60
  display: flex;
50
61
  padding: 12px 16px;
@@ -1,5 +1,6 @@
1
1
  import React, { useState, useRef, useEffect } from 'react'
2
2
  import { FaEllipsisH } from 'react-icons/fa'
3
+ import { CloseIcon } from '../../icons'
3
4
  import './ActionMenu.scss'
4
5
 
5
6
  export interface ActionMenuItem {
@@ -11,9 +12,10 @@ export interface ActionMenuItem {
11
12
  export interface ActionMenuProps {
12
13
  items: ActionMenuItem[]
13
14
  className?: string
15
+ iconColour?: string
14
16
  }
15
17
 
16
- export const ActionMenu: React.FC<ActionMenuProps> = ({ items, className = '' }) => {
18
+ export const ActionMenu: React.FC<ActionMenuProps> = ({ items, className = '', iconColour = '' }) => {
17
19
  const [isOpen, setIsOpen] = useState(false)
18
20
  const menuRef = useRef<HTMLDivElement>(null)
19
21
 
@@ -36,11 +38,12 @@ export const ActionMenu: React.FC<ActionMenuProps> = ({ items, className = '' })
36
38
  return (
37
39
  <div className={`action-menu ${className}`} ref={menuRef}>
38
40
  <button
39
- className="action-menu__trigger"
41
+ className={`action-menu__trigger ${isOpen ? 'action-menu__trigger--close' : ''}`}
40
42
  onClick={() => setIsOpen(!isOpen)}
41
43
  aria-expanded={isOpen}
44
+ style={{ color: iconColour }}
42
45
  >
43
- <FaEllipsisH />
46
+ {isOpen ? <CloseIcon width={16} height={16} /> : <FaEllipsisH />}
44
47
  </button>
45
48
 
46
49
  {isOpen && (
@@ -2,14 +2,16 @@ import { ButtonHTMLAttributes } from 'react'
2
2
  import './Button.scss'
3
3
 
4
4
  export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
- variant?: 'primary' | 'primary-soft' | 'primary-outline' | 'secondary' | 'destructive-soft' | 'destructive-strong' | 'info' | 'disabled'
5
+ variant?: 'primary' | 'primary-soft' | 'secondary-soft' | 'tertiary-soft' | 'primary-outline' | 'secondary' | 'destructive-soft' | 'destructive-strong' | 'info' | 'disabled'
6
6
  size?: 'sm' | 'md' | 'lg'
7
+ isLoading?: boolean
7
8
  }
8
9
 
9
10
  export function Button({
10
11
  variant = 'primary',
11
12
  size = 'md',
12
13
  disabled = false,
14
+ isLoading = false,
13
15
  className = '',
14
16
  children,
15
17
  ...props
@@ -17,7 +19,7 @@ export function Button({
17
19
  const classes = [
18
20
  'new-button',
19
21
  `new-button--${variant}`,
20
- disabled ? 'new-button--disabled' : '',
22
+ disabled || isLoading ? 'new-button--disabled' : '',
21
23
  className
22
24
  ].filter(Boolean).join(' ')
23
25
 
@@ -28,9 +30,10 @@ export function Button({
28
30
  return (
29
31
  <button
30
32
  className={classes}
31
- disabled={disabled}
33
+ disabled={disabled || isLoading}
32
34
  {...props}
33
35
  >
36
+ {isLoading && <div className="new-button__spinner" />}
34
37
  {content}
35
38
  </button>
36
39
  )
@@ -199,13 +199,16 @@
199
199
  }
200
200
 
201
201
  &__badges-row {
202
- flex-direction: column;
203
- align-items: flex-start;
202
+ flex-direction: row;
203
+ justify-content: space-between;
204
+ align-items: center;
204
205
  gap: 12px;
206
+ width: 100%;
205
207
  }
206
208
 
207
209
  &__badges {
208
210
  flex-wrap: wrap;
211
+ flex: 1;
209
212
  }
210
213
 
211
214
  &__id-badge {
@@ -216,7 +219,8 @@
216
219
  &__edit {
217
220
  font-size: 13px;
218
221
  padding: 6px 12px;
219
- align-self: flex-start;
222
+ align-self: center;
223
+ margin-left: auto;
220
224
  }
221
225
 
222
226
  &__grid {