@spaced-out/ui-design-system 0.1.25 → 0.1.27

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 (74) hide show
  1. package/.cspell/custom-words.txt +3 -0
  2. package/.storybook/main.js +40 -28
  3. package/.storybook/manager.js +0 -4
  4. package/.storybook/preview-head.html +15 -6
  5. package/.storybook/preview.js +0 -5
  6. package/CHANGELOG.md +31 -0
  7. package/babel.config.js +1 -0
  8. package/lib/components/Badge/Badge.module.css +1 -0
  9. package/lib/components/ButtonDropdown/ButtonDropdown.js +10 -9
  10. package/lib/components/ButtonDropdown/ButtonDropdown.js.flow +6 -4
  11. package/lib/components/ButtonTabs/ButtonTabs.js +4 -1
  12. package/lib/components/ButtonTabs/ButtonTabs.js.flow +2 -1
  13. package/lib/components/Chip/Chip.js +1 -1
  14. package/lib/components/Chip/Chip.js.flow +2 -2
  15. package/lib/components/CollapsibleCard/CollapsibleCard.js +3 -0
  16. package/lib/components/CollapsibleCard/CollapsibleCard.js.flow +4 -0
  17. package/lib/components/Dialog/Dialog.js +23 -2
  18. package/lib/components/Dialog/Dialog.js.flow +38 -0
  19. package/lib/components/Dropdown/Dropdown.js +10 -9
  20. package/lib/components/Dropdown/Dropdown.js.flow +6 -4
  21. package/lib/components/FocusManager/FocusManager.js +7 -5
  22. package/lib/components/FocusManager/FocusManager.js.flow +3 -3
  23. package/lib/components/InlineDropdown/InlineDropdown.js +10 -9
  24. package/lib/components/InlineDropdown/InlineDropdown.js.flow +6 -4
  25. package/lib/components/Menu/Menu.js +48 -12
  26. package/lib/components/Menu/Menu.js.flow +102 -9
  27. package/lib/components/Menu/Menu.module.css +10 -0
  28. package/lib/components/Menu/MenuOptionButton.js +21 -4
  29. package/lib/components/Menu/MenuOptionButton.js.flow +21 -0
  30. package/lib/components/Modal/Modal.js +35 -8
  31. package/lib/components/Modal/Modal.js.flow +52 -7
  32. package/lib/components/Modal/Modal.module.css +1 -3
  33. package/lib/components/Panel/Panel.js +21 -1
  34. package/lib/components/Panel/Panel.js.flow +30 -1
  35. package/lib/components/Panel/Panel.module.css +0 -1
  36. package/lib/components/Table/DefaultRow.js +5 -5
  37. package/lib/components/Table/DefaultRow.js.flow +14 -11
  38. package/lib/components/Table/StaticTable.js +5 -1
  39. package/lib/components/Table/StaticTable.js.flow +4 -0
  40. package/lib/components/Table/Table.js.flow +2 -0
  41. package/lib/components/Tabs/TabList/TabDropdown.js +10 -9
  42. package/lib/components/Tabs/TabList/TabDropdown.js.flow +6 -4
  43. package/lib/components/Toast/Toast.js +7 -5
  44. package/lib/components/Toast/Toast.js.flow +5 -3
  45. package/lib/components/Toggle/Toggle.js +2 -1
  46. package/lib/components/Toggle/Toggle.js.flow +2 -1
  47. package/lib/components/Tooltip/Tooltip.js +22 -25
  48. package/lib/components/Tooltip/Tooltip.js.flow +25 -22
  49. package/lib/components/Typeahead/Typeahead.js +10 -9
  50. package/lib/components/Typeahead/Typeahead.js.flow +6 -4
  51. package/lib/hooks/index.js +55 -0
  52. package/lib/hooks/index.js.flow +5 -0
  53. package/lib/hooks/useCopyToClipboard.js +31 -0
  54. package/lib/hooks/useCopyToClipboard.js.flow +31 -0
  55. package/lib/hooks/useInputState.js +23 -0
  56. package/lib/hooks/useInputState.js.flow +28 -0
  57. package/lib/hooks/useLockedBody.js +54 -0
  58. package/lib/hooks/useLockedBody.js.flow +55 -0
  59. package/lib/hooks/useToggle.js +18 -0
  60. package/lib/hooks/useToggle.js.flow +17 -0
  61. package/lib/hooks/useWindowSize.js +32 -0
  62. package/lib/hooks/useWindowSize.js.flow +37 -0
  63. package/lib/styles/typography.module.css +1 -0
  64. package/lib/types/common.js +0 -1
  65. package/lib/utils/index.js +11 -0
  66. package/lib/utils/index.js.flow +1 -0
  67. package/lib/utils/menu.js +57 -2
  68. package/lib/utils/menu.js.flow +109 -1
  69. package/lib/utils/string.js +4 -2
  70. package/lib/utils/string.js.flow +3 -0
  71. package/lib/utils/tokens.js +74 -0
  72. package/lib/utils/tokens.js.flow +82 -0
  73. package/package.json +18 -16
  74. package/.storybook/public/favicon.svg +0 -6
package/lib/utils/menu.js CHANGED
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getTextLabelFromSelectedKeys = exports.getSelectedKeysFromSelectedOption = exports.getOptionsFromKeys = exports.getOptionFromKey = exports.getButtonLabelFromSelectedKeys = void 0;
6
+ exports.getTextLabelFromSelectedKeys = exports.getSelectedKeysFromSelectedOption = exports.getOptionsFromKeys = exports.getOptionFromKey = exports.getFilteredOptionsResultText = exports.getFilteredOptionsFromSearchText = exports.getFilteredGroupTitleOptionsResultText = exports.getFilteredGroupTitleOptionsFromSearchText = exports.getFilteredComposeOptionsResultText = exports.getFilteredComposeOptionsFromSearchText = exports.getButtonLabelFromSelectedKeys = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
+ var _string = require("./string");
8
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
11
 
@@ -49,4 +50,58 @@ const getOptionsFromKeys = (options, keys) => {
49
50
  }
50
51
  return options.filter(option => keys.includes(option.key));
51
52
  };
52
- exports.getOptionsFromKeys = getOptionsFromKeys;
53
+ exports.getOptionsFromKeys = getOptionsFromKeys;
54
+ const getFilteredOptionsFromSearchText = (options, searchText) => {
55
+ if (!Array.isArray(options) || !options.length || !searchText) {
56
+ return options;
57
+ }
58
+ return options.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()));
59
+ };
60
+ exports.getFilteredOptionsFromSearchText = getFilteredOptionsFromSearchText;
61
+ const getFilteredOptionsResultText = function (options) {
62
+ let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
63
+ let resultCount = 0;
64
+ resultCount += options.length;
65
+ const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
66
+ return generatedResultText;
67
+ };
68
+ exports.getFilteredOptionsResultText = getFilteredOptionsResultText;
69
+ const getFilteredComposeOptionsFromSearchText = (composeOptions, searchText) => {
70
+ if (!Array.isArray(composeOptions) || !composeOptions.length || !searchText) {
71
+ return composeOptions;
72
+ }
73
+ return composeOptions.map(optionGroup => optionGroup.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()))).filter(group => group.length > 0);
74
+ };
75
+ exports.getFilteredComposeOptionsFromSearchText = getFilteredComposeOptionsFromSearchText;
76
+ const getFilteredComposeOptionsResultText = function (composeOptions) {
77
+ let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
78
+ let resultCount = 0;
79
+ composeOptions.forEach(optionGroup => {
80
+ resultCount += optionGroup.length;
81
+ });
82
+ const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
83
+ return generatedResultText;
84
+ };
85
+ exports.getFilteredComposeOptionsResultText = getFilteredComposeOptionsResultText;
86
+ const getFilteredGroupTitleOptionsFromSearchText = (groupTitleOptions, searchText) => {
87
+ if (!Array.isArray(groupTitleOptions) || !groupTitleOptions.length || !searchText) {
88
+ return groupTitleOptions;
89
+ }
90
+ return groupTitleOptions.map(group => ({
91
+ ...group,
92
+ options: group.options?.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()))
93
+ })).filter(group => group.options && group.options.length > 0);
94
+ };
95
+ exports.getFilteredGroupTitleOptionsFromSearchText = getFilteredGroupTitleOptionsFromSearchText;
96
+ const getFilteredGroupTitleOptionsResultText = function (groupTitleOptions) {
97
+ let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
98
+ let resultCount = 0;
99
+ groupTitleOptions.forEach(group => {
100
+ if (group.options) {
101
+ resultCount += group.options.length;
102
+ }
103
+ });
104
+ const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
105
+ return generatedResultText;
106
+ };
107
+ exports.getFilteredGroupTitleOptionsResultText = getFilteredGroupTitleOptionsResultText;
@@ -1,7 +1,9 @@
1
1
  // @flow strict
2
2
  import * as React from 'react';
3
3
 
4
- import type {MenuOption} from '../components/Menu';
4
+ import type {MenuGroupTitleOption, MenuOption} from '../components/Menu';
5
+
6
+ import {formatWord} from './string';
5
7
 
6
8
 
7
9
  export const getSelectedKeysFromSelectedOption = (
@@ -79,3 +81,109 @@ export const getOptionsFromKeys = (
79
81
 
80
82
  return options.filter((option) => keys.includes(option.key));
81
83
  };
84
+
85
+ export const getFilteredOptionsFromSearchText = (
86
+ options: MenuOption[],
87
+ searchText: string,
88
+ ): MenuOption[] => {
89
+ if (!Array.isArray(options) || !options.length || !searchText) {
90
+ return options;
91
+ }
92
+
93
+ return options.filter((option) =>
94
+ option.label?.toLowerCase().includes(searchText.toLowerCase()),
95
+ );
96
+ };
97
+
98
+ export const getFilteredOptionsResultText = (
99
+ options: MenuOption[],
100
+ resultText: string = 'result',
101
+ ): string => {
102
+ let resultCount = 0;
103
+
104
+ resultCount += options.length;
105
+
106
+ const generatedResultText = `${resultCount} ${formatWord(
107
+ resultText,
108
+ resultCount,
109
+ )}`;
110
+
111
+ return generatedResultText;
112
+ };
113
+
114
+ export const getFilteredComposeOptionsFromSearchText = (
115
+ composeOptions: Array<Array<MenuOption>>,
116
+ searchText: string,
117
+ ): Array<Array<MenuOption>> => {
118
+ if (!Array.isArray(composeOptions) || !composeOptions.length || !searchText) {
119
+ return composeOptions;
120
+ }
121
+
122
+ return composeOptions
123
+ .map((optionGroup) =>
124
+ optionGroup.filter((option) =>
125
+ option.label?.toLowerCase().includes(searchText.toLowerCase()),
126
+ ),
127
+ )
128
+ .filter((group) => group.length > 0);
129
+ };
130
+
131
+ export const getFilteredComposeOptionsResultText = (
132
+ composeOptions: Array<Array<MenuOption>>,
133
+ resultText: string = 'result',
134
+ ): string => {
135
+ let resultCount = 0;
136
+
137
+ composeOptions.forEach((optionGroup) => {
138
+ resultCount += optionGroup.length;
139
+ });
140
+
141
+ const generatedResultText = `${resultCount} ${formatWord(
142
+ resultText,
143
+ resultCount,
144
+ )}`;
145
+
146
+ return generatedResultText;
147
+ };
148
+
149
+ export const getFilteredGroupTitleOptionsFromSearchText = (
150
+ groupTitleOptions: Array<MenuGroupTitleOption>,
151
+ searchText: string,
152
+ ): Array<MenuGroupTitleOption> => {
153
+ if (
154
+ !Array.isArray(groupTitleOptions) ||
155
+ !groupTitleOptions.length ||
156
+ !searchText
157
+ ) {
158
+ return groupTitleOptions;
159
+ }
160
+
161
+ return groupTitleOptions
162
+ .map((group) => ({
163
+ ...group,
164
+ options: group.options?.filter((option) =>
165
+ option.label?.toLowerCase().includes(searchText.toLowerCase()),
166
+ ),
167
+ }))
168
+ .filter((group) => group.options && group.options.length > 0);
169
+ };
170
+
171
+ export const getFilteredGroupTitleOptionsResultText = (
172
+ groupTitleOptions: Array<MenuGroupTitleOption>,
173
+ resultText: string = 'result',
174
+ ): string => {
175
+ let resultCount = 0;
176
+
177
+ groupTitleOptions.forEach((group) => {
178
+ if (group.options) {
179
+ resultCount += group.options.length;
180
+ }
181
+ });
182
+
183
+ const generatedResultText = `${resultCount} ${formatWord(
184
+ resultText,
185
+ resultCount,
186
+ )}`;
187
+
188
+ return generatedResultText;
189
+ };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.escapeRegExp = exports.capitalize = void 0;
6
+ exports.formatWord = exports.escapeRegExp = exports.capitalize = void 0;
7
7
 
8
8
  const capitalize = word => {
9
9
  if (!word) {
@@ -13,4 +13,6 @@ const capitalize = word => {
13
13
  };
14
14
  exports.capitalize = capitalize;
15
15
  const escapeRegExp = str => str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
16
- exports.escapeRegExp = escapeRegExp;
16
+ exports.escapeRegExp = escapeRegExp;
17
+ const formatWord = (word, count) => count === 1 ? word : word + 's';
18
+ exports.formatWord = formatWord;
@@ -11,3 +11,6 @@ export const capitalize = (word: string): string => {
11
11
 
12
12
  export const escapeRegExp = (str: string): string =>
13
13
  str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
14
+
15
+ export const formatWord = (word: string, count: number): string =>
16
+ count === 1 ? word : word + 's';
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSortedTokenNames = void 0;
7
+
8
+ /**
9
+ *
10
+ * This function takes in an object containing key-value pairs of tokens,
11
+ * where values are strings representing numerical
12
+ * values with optional percentage or viewport units. It also takes in an optional
13
+ * sort order ('asc' or 'desc') and an optional sort by parameter ('name' or 'value').
14
+ *
15
+ * The function sorts the tokens by either their key names (if sortBy='name') or their
16
+ * numerical values (if sortBy='value'). The sort order can be specified as
17
+ * ascending (order='asc') or descending (order='desc').
18
+ *
19
+ * The function handles values with different units by comparing their numerical values.
20
+ * If both values have the same unit, their numerical values are compared directly.
21
+ * If their units are different, tokens with percentage values are considered greater than
22
+ * those with viewport units, and tokens without a percentage or viewport unit are compared
23
+ * based on their numerical values.
24
+ *
25
+ */
26
+ const getSortedTokenNames = function (obj) {
27
+ let order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'asc';
28
+ let sortBy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value';
29
+ // Create an array from the object keys and sort the array
30
+ const sortedTokens = Object.keys(obj).sort((token1, token2) => {
31
+ const value1 = obj[token1];
32
+ const value2 = obj[token2];
33
+
34
+ // Convert value1 to a number
35
+ const numValue1 = parseFloat(value1);
36
+ // Convert value2 to a number
37
+ const numValue2 = parseFloat(value2);
38
+ if (sortBy === 'name') {
39
+ // Sorting by name
40
+ return order === 'asc' ? token1.localeCompare(token2) // Compare key names directly
41
+ : token2.localeCompare(token1);
42
+ } else {
43
+ const isPercentage1 = value1.endsWith('%');
44
+ const isPercentage2 = value2.endsWith('%');
45
+ const isViewport1 = value1.endsWith('vw') || value1.endsWith('vh');
46
+ const isViewport2 = value2.endsWith('vw') || value2.endsWith('vh');
47
+ if (isPercentage1 && isPercentage2 || isViewport1 && isViewport2) {
48
+ // If both tokens have the same unit (percentage or viewport), compare their numerical values
49
+ return order === 'asc' ? numValue1 - numValue2 : numValue2 - numValue1;
50
+ }
51
+ if (isPercentage1 && !isPercentage2) {
52
+ // Only token1 has a percentage value, consider it greater than token2
53
+ return order === 'asc' ? 1 : -1;
54
+ }
55
+ if (!isPercentage1 && isPercentage2) {
56
+ // Only token2 has a percentage value, consider it greater than token1
57
+ return order === 'asc' ? -1 : 1;
58
+ }
59
+ if (isViewport1 && !isViewport2) {
60
+ // Only token1 has a viewport unit value, consider it greater than token2
61
+ return order === 'asc' ? 1 : -1;
62
+ }
63
+ if (!isViewport1 && isViewport2) {
64
+ // Only token2 has a viewport unit value, consider it greater than token1
65
+ return order === 'asc' ? -1 : 1;
66
+ }
67
+
68
+ // Neither token has a percentage or viewport unit value, compare their numerical values
69
+ return order === 'asc' ? numValue1 - numValue2 : numValue2 - numValue1;
70
+ }
71
+ });
72
+ return sortedTokens;
73
+ };
74
+ exports.getSortedTokenNames = getSortedTokenNames;
@@ -0,0 +1,82 @@
1
+ // @flow strict
2
+
3
+ type TokenObject = {[key: string]: string};
4
+ export type SortOrder = 'asc' | 'desc';
5
+ export type SortBy = 'name' | 'value';
6
+
7
+ /**
8
+ *
9
+ * This function takes in an object containing key-value pairs of tokens,
10
+ * where values are strings representing numerical
11
+ * values with optional percentage or viewport units. It also takes in an optional
12
+ * sort order ('asc' or 'desc') and an optional sort by parameter ('name' or 'value').
13
+ *
14
+ * The function sorts the tokens by either their key names (if sortBy='name') or their
15
+ * numerical values (if sortBy='value'). The sort order can be specified as
16
+ * ascending (order='asc') or descending (order='desc').
17
+ *
18
+ * The function handles values with different units by comparing their numerical values.
19
+ * If both values have the same unit, their numerical values are compared directly.
20
+ * If their units are different, tokens with percentage values are considered greater than
21
+ * those with viewport units, and tokens without a percentage or viewport unit are compared
22
+ * based on their numerical values.
23
+ *
24
+ */
25
+ export const getSortedTokenNames = (
26
+ obj: TokenObject,
27
+ order?: SortOrder = 'asc',
28
+ sortBy?: SortBy = 'value',
29
+ ): Array<string> => {
30
+ // Create an array from the object keys and sort the array
31
+ const sortedTokens = Object.keys(obj).sort((token1, token2) => {
32
+ const value1 = obj[token1];
33
+ const value2 = obj[token2];
34
+
35
+ // Convert value1 to a number
36
+ const numValue1 = parseFloat(value1);
37
+ // Convert value2 to a number
38
+ const numValue2 = parseFloat(value2);
39
+
40
+ if (sortBy === 'name') {
41
+ // Sorting by name
42
+ return order === 'asc'
43
+ ? token1.localeCompare(token2) // Compare key names directly
44
+ : token2.localeCompare(token1);
45
+ } else {
46
+ const isPercentage1 = value1.endsWith('%');
47
+ const isPercentage2 = value2.endsWith('%');
48
+ const isViewport1 = value1.endsWith('vw') || value1.endsWith('vh');
49
+ const isViewport2 = value2.endsWith('vw') || value2.endsWith('vh');
50
+
51
+ if ((isPercentage1 && isPercentage2) || (isViewport1 && isViewport2)) {
52
+ // If both tokens have the same unit (percentage or viewport), compare their numerical values
53
+ return order === 'asc' ? numValue1 - numValue2 : numValue2 - numValue1;
54
+ }
55
+
56
+ if (isPercentage1 && !isPercentage2) {
57
+ // Only token1 has a percentage value, consider it greater than token2
58
+ return order === 'asc' ? 1 : -1;
59
+ }
60
+
61
+ if (!isPercentage1 && isPercentage2) {
62
+ // Only token2 has a percentage value, consider it greater than token1
63
+ return order === 'asc' ? -1 : 1;
64
+ }
65
+
66
+ if (isViewport1 && !isViewport2) {
67
+ // Only token1 has a viewport unit value, consider it greater than token2
68
+ return order === 'asc' ? 1 : -1;
69
+ }
70
+
71
+ if (!isViewport1 && isViewport2) {
72
+ // Only token2 has a viewport unit value, consider it greater than token1
73
+ return order === 'asc' ? -1 : 1;
74
+ }
75
+
76
+ // Neither token has a percentage or viewport unit value, compare their numerical values
77
+ return order === 'asc' ? numValue1 - numValue2 : numValue2 - numValue1;
78
+ }
79
+ });
80
+
81
+ return sortedTokens;
82
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/ui-design-system",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
4
4
  "main": "index.js",
5
5
  "description": "Sense UI components library",
6
6
  "author": {
@@ -10,9 +10,9 @@
10
10
  "scripts": {
11
11
  "build": "rimraf lib && yarn build:style-variables && gulp build",
12
12
  "build:style-variables": "rimraf src/styles/variables && style-dictionary build --config ./config.js",
13
- "storybook": "yarn build:style-variables && start-storybook -p 6006",
14
- "storybook:export": "yarn build:style-variables && rimraf storybook-static && build-storybook",
15
- "build-storybook": "yarn build:style-variables && rimraf storybook-static && build-storybook",
13
+ "storybook": "yarn build:style-variables && storybook dev -p 6006",
14
+ "storybook:export": "yarn build:style-variables && rimraf storybook-static && storybook build",
15
+ "build-storybook": "yarn build:style-variables && rimraf storybook-static && storybook build",
16
16
  "generate": "node ./scripts/create-component",
17
17
  "generateHook": "node ./scripts/create-hook",
18
18
  "prepublishOnly": "yarn build",
@@ -44,8 +44,7 @@
44
44
  "react-dom": ">=16.8.0"
45
45
  },
46
46
  "dependencies": {
47
- "@floating-ui/react-dom": "^1.0.0",
48
- "@floating-ui/react-dom-interactions": "^0.10.1",
47
+ "@floating-ui/react": "^0.24.0",
49
48
  "date-fns": "^2.29.3",
50
49
  "lodash": "^4.17.21"
51
50
  },
@@ -59,14 +58,15 @@
59
58
  "@babel/preset-react": "^7.18.6",
60
59
  "@commitlint/cli": "^17.1.2",
61
60
  "@commitlint/config-conventional": "^17.1.0",
62
- "@storybook/addon-a11y": "^6.5.13",
63
- "@storybook/addon-essentials": "^6.5.13",
64
- "@storybook/addon-postcss": "^2.0.0",
65
- "@storybook/addons": "^6.5.13",
66
- "@storybook/react": "^6.5.13",
67
- "@storybook/test-runner": "^0.9.0",
68
- "@storybook/testing-react": "^1.3.0",
69
- "@storybook/theming": "^6.5.13",
61
+ "@storybook/addon-a11y": "^7.0.8",
62
+ "@storybook/addon-essentials": "^7.0.8",
63
+ "@storybook/addon-mdx-gfm": "^7.0.8",
64
+ "@storybook/addons": "^7.0.8",
65
+ "@storybook/react": "^7.0.8",
66
+ "@storybook/react-webpack5": "^7.0.8",
67
+ "@storybook/test-runner": "^0.10.0",
68
+ "@storybook/testing-react": "^2.0.0",
69
+ "@storybook/theming": "^7.0.8",
70
70
  "@testing-library/react": "^11.2.7",
71
71
  "all-contributors-cli": "^6.20.0",
72
72
  "babel-eslint": "^10.1.0",
@@ -84,7 +84,7 @@
84
84
  "eslint-plugin-react": "^7.30.1",
85
85
  "eslint-plugin-react-hooks": "^4.6.0",
86
86
  "eslint-plugin-simple-import-sort": "^8.0.0",
87
- "eslint-plugin-storybook": "^0.6.7",
87
+ "eslint-plugin-storybook": "^0.6.12",
88
88
  "eslint-plugin-unused-imports": "^2.0.0",
89
89
  "flow-bin": "^0.184.0",
90
90
  "gulp": "^4.0.2",
@@ -92,6 +92,7 @@
92
92
  "gulp-rename": "^2.0.0",
93
93
  "gulp-replace": "^1.1.3",
94
94
  "husky": "2.1.0",
95
+ "invariant": "^2.2.4",
95
96
  "jest": "^29.3.1",
96
97
  "lint-staged": "^10.5.1",
97
98
  "node-sass": "^7.0.0",
@@ -103,8 +104,9 @@
103
104
  "rimraf": "^3.0.2",
104
105
  "simple-git": "^3.12.0",
105
106
  "standard-version": "^9.5.0",
107
+ "storybook": "^7.0.8",
106
108
  "storybook-css-modules": "^1.0.8",
107
- "storybook-vscode-component": "^1.0.8",
109
+ "storybook-vscode-component": "^1.0.9",
108
110
  "style-dictionary": "^3.7.1"
109
111
  },
110
112
  "homepage": "https://spaced-out.github.io/ui-design-system",
@@ -1,6 +0,0 @@
1
- <svg width="137" height="137" viewBox="0 0 137 137" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M46.5 76C56.7173 76 65 67.7173 65 57.5C65 47.2827 56.7173 39 46.5 39C36.2827 39 28 47.2827 28 57.5C28 67.7173 36.2827 76 46.5 76Z" fill="#FFD252"/>
3
- <path d="M90.5 47C100.717 47 109 38.4934 109 28C109 17.5066 100.717 9 90.5 9C80.2827 9 72 17.5066 72 28C72 38.4934 80.2827 47 90.5 47Z" fill="#F05A28"/>
4
- <path d="M46.5 128C56.7173 128 65 119.717 65 109.5C65 99.2827 56.7173 91 46.5 91C36.2827 91 28 99.2827 28 109.5C28 119.717 36.2827 128 46.5 128Z" fill="#7461E5"/>
5
- <path d="M90.5 98C100.717 98 109 89.9411 109 80C109 70.0589 100.717 62 90.5 62C80.2827 62 72 70.0589 72 80C72 89.9411 80.2827 98 90.5 98Z" fill="#33A30F"/>
6
- </svg>