@xqmsg/ui-core 0.18.8 → 0.19.1

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 (31) hide show
  1. package/dist/components/icons/neutral/index.d.ts +1 -0
  2. package/dist/components/toast/Toast.stories.d.ts +5 -0
  3. package/dist/components/toast/index.d.ts +12 -0
  4. package/dist/hooks/useToast.d.ts +6 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/theme/provider/index.d.ts +1 -1
  7. package/dist/ui-core.cjs.development.js +122 -19
  8. package/dist/ui-core.cjs.development.js.map +1 -1
  9. package/dist/ui-core.cjs.production.min.js +1 -1
  10. package/dist/ui-core.cjs.production.min.js.map +1 -1
  11. package/dist/ui-core.esm.js +122 -20
  12. package/dist/ui-core.esm.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/components/breadcrumbs/index.tsx +1 -0
  15. package/src/components/form/section/index.tsx +1 -0
  16. package/src/components/icons/neutral/index.tsx +3 -2
  17. package/src/components/icons/neutral/neutral.svg +1 -1
  18. package/src/components/input/StackedMultiSelect/index.tsx +8 -2
  19. package/src/components/input/StackedPilledInput/index.tsx +1 -0
  20. package/src/components/input/components/dropdown/index.tsx +3 -3
  21. package/src/components/navigation/index.tsx +4 -3
  22. package/src/components/table/empty/index.tsx +1 -1
  23. package/src/components/table/index.tsx +6 -6
  24. package/src/components/tabs/index.tsx +2 -2
  25. package/src/components/toast/Toast.stories.tsx +52 -0
  26. package/src/components/toast/index.tsx +78 -0
  27. package/src/components/toolbar/components/breadcrumbs/index.tsx +1 -1
  28. package/src/components/toolbar/components/dropdown/index.tsx +2 -2
  29. package/src/hooks/useToast.tsx +13 -0
  30. package/src/index.tsx +1 -0
  31. package/src/theme/provider/index.tsx +1 -1
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export interface NeutralProps {
3
3
  boxSize: number | string;
4
+ color?: string;
4
5
  }
5
6
  /**
6
7
  * A functional React component utilized to render the `Neutral` icon component
@@ -0,0 +1,5 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { ToastProps } from '.';
3
+ declare const meta: Meta<ToastProps>;
4
+ export default meta;
5
+ export declare const Default: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactFramework, ToastProps>;
@@ -0,0 +1,12 @@
1
+ import React, { ReactNode } from 'react';
2
+ export declare type ToastVariant = 'positive' | 'warning' | 'error' | 'neutral';
3
+ export interface ToastProps {
4
+ variant: ToastVariant;
5
+ message: ReactNode;
6
+ buttonText?: string;
7
+ onClick?: () => void;
8
+ }
9
+ /**
10
+ * A functional React component utilized to render the `Toast` component
11
+ */
12
+ export declare const Toast: React.FC<ToastProps>;
@@ -0,0 +1,6 @@
1
+ import { ToastPosition } from '@chakra-ui/react';
2
+ import React from 'react';
3
+ import { ToastProps } from '../components/toast';
4
+ export declare const useToast: (props: ToastProps & {
5
+ position: ToastPosition;
6
+ }) => () => React.Key;
package/dist/index.d.ts CHANGED
@@ -16,5 +16,6 @@ export * from './components/tabs';
16
16
  export * from './components/text';
17
17
  export * from './theme/provider';
18
18
  export * from './components/toolbar';
19
+ export * from './hooks/useToast';
19
20
  export * from './components/form/utils/formErrors';
20
21
  export * from './theme/foundations/colors';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ChakraProviderProps } from '@chakra-ui/provider';
2
+ import { ChakraProviderProps } from '@chakra-ui/react';
3
3
  /**
4
4
  * A functional React wrapper component utilized to consume the custom XQ theme via `ChakraProvider`
5
5
  */
@@ -12,7 +12,6 @@ var lodash = require('lodash');
12
12
  var icons = require('@chakra-ui/icons');
13
13
  var reactRouterDom = require('react-router-dom');
14
14
  var hi = require('react-icons/hi');
15
- var provider = require('@chakra-ui/provider');
16
15
  var themeTools = require('@chakra-ui/theme-tools');
17
16
  var system = require('@chakra-ui/system');
18
17
 
@@ -91,7 +90,7 @@ var SvgNeutral = function SvgNeutral(props, ref) {
91
90
  ref: ref
92
91
  }, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
93
92
  d: "M7 4.5V4a.5.5 0 0 0-.5.5H7Zm.005 0h.5a.5.5 0 0 0-.5-.5v.5Zm0 .005v.5a.5.5 0 0 0 .5-.5h-.5Zm-.005 0h-.5a.5.5 0 0 0 .5.5v-.5Zm-.724 1.548a.5.5 0 1 0 .448.894l-.448-.894Zm.252.433-.224-.447.224.447Zm.708.569.485.12-.485-.12Zm-.472 1.89-.485-.12.485.12Zm.708.569.224.447-.224-.447Zm.252.433a.5.5 0 1 0-.448-.894l.448.894ZM12.5 7A5.5 5.5 0 0 1 7 12.5v1A6.5 6.5 0 0 0 13.5 7h-1ZM7 12.5A5.5 5.5 0 0 1 1.5 7h-1A6.5 6.5 0 0 0 7 13.5v-1ZM1.5 7A5.5 5.5 0 0 1 7 1.5v-1A6.5 6.5 0 0 0 .5 7h1ZM7 1.5A5.5 5.5 0 0 1 12.5 7h1A6.5 6.5 0 0 0 7 .5v1ZM7 5h.005V4H7v1Zm-.495-.5v.005h1V4.5h-1Zm.5-.495H7v1h.005v-1Zm.495.5V4.5h-1v.005h1Zm-.776 2.442.027-.014-.447-.894-.028.014.448.894Zm.027-.014L6.28 8.824l.97.243.472-1.891-.97-.243Zm.945 3.028.028-.014-.448-.894-.027.014.447.894ZM6.279 8.824a1 1 0 0 0 1.417 1.137l-.447-.894-.97-.243Zm.472-1.89.97.242a1 1 0 0 0-1.417-1.137l.447.894Z",
94
- fill: "#3C3C43",
93
+ fill: "current",
95
94
  fillOpacity: 0.6
96
95
  })));
97
96
  };
@@ -103,9 +102,11 @@ var Memo$1 = /*#__PURE__*/React.memo(ForwardRef$1);
103
102
  */
104
103
 
105
104
  var Neutral = function Neutral(_ref) {
106
- var boxSize = _ref.boxSize;
105
+ var color = _ref.color,
106
+ boxSize = _ref.boxSize;
107
107
  return /*#__PURE__*/React__default.createElement(Memo$1, {
108
- boxSize: boxSize
108
+ boxSize: boxSize,
109
+ fill: color || '#3C3C43'
109
110
  });
110
111
  };
111
112
 
@@ -440,6 +441,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
440
441
  flexDir: orientation === 'horizontal' ? 'row' : 'column'
441
442
  }, steps.map(function (step, idx) {
442
443
  return /*#__PURE__*/React__default.createElement(react.Flex, {
444
+ key: idx,
443
445
  alignItems: "center",
444
446
  pr: orientation === 'horizontal' ? '16px' : 0,
445
447
  py: "4px"
@@ -741,10 +743,13 @@ var Dropdown = function Dropdown(_ref) {
741
743
  optionIndex = _ref.optionIndex;
742
744
  var DropdownContent = React.useMemo(function () {
743
745
  return options.map(function (option, idx) {
744
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, option.value === 'section_header' && options[idx + 1] && options[idx + 1].value !== 'section_header' && /*#__PURE__*/React__default.createElement(react.Box, {
746
+ return /*#__PURE__*/React__default.createElement(react.Box, {
747
+ key: idx,
748
+ width: "100%"
749
+ }, option.value === 'section_header' && options[idx + 1] && options[idx + 1].value !== 'section_header' && /*#__PURE__*/React__default.createElement(react.Box, {
745
750
  color: colors.label.secondary.light,
746
751
  fontSize: "13px",
747
- width: "fit-content",
752
+ width: "100%",
748
753
  fontWeight: "bold",
749
754
  px: "8px",
750
755
  bg: "inherit",
@@ -1428,8 +1433,9 @@ var StackedMultiSelect = /*#__PURE__*/React__default.forwardRef(function (_ref2,
1428
1433
  }
1429
1434
  },
1430
1435
  ref: scrollRef
1431
- }, localValues.length ? localValues.map(function (option) {
1436
+ }, localValues.length ? localValues.map(function (option, idx) {
1432
1437
  return /*#__PURE__*/React__default.createElement(react.Box, {
1438
+ key: idx,
1433
1439
  mr: "4px",
1434
1440
  width: "fit-content",
1435
1441
  h: "16px",
@@ -1687,6 +1693,7 @@ var StackedPilledInput = /*#__PURE__*/React__default.forwardRef(function (_ref2,
1687
1693
  ref: scrollRef
1688
1694
  }, lastestFormValueToArray.length ? lastestFormValueToArray.map(function (label, index) {
1689
1695
  return /*#__PURE__*/React__default.createElement(react.Box, {
1696
+ key: index,
1690
1697
  mr: "4px",
1691
1698
  border: tokenIndex === index ? "1px solid " + colors.border.focus : 'none',
1692
1699
  borderRadius: "full",
@@ -2017,6 +2024,7 @@ function FormSection(_ref) {
2017
2024
  disabled = _ref2.disabled,
2018
2025
  defaultValue = _ref2.defaultValue;
2019
2026
  return /*#__PURE__*/React__default.createElement(Input, {
2027
+ key: name,
2020
2028
  control: form.control,
2021
2029
  label: label,
2022
2030
  inputType: inputType,
@@ -2937,15 +2945,17 @@ var NavigationMenu = function NavigationMenu(_ref) {
2937
2945
  height: "100%",
2938
2946
  overflowY: "auto",
2939
2947
  width: "220px"
2940
- }, sortedGroupedMenuItems == null ? void 0 : sortedGroupedMenuItems.map(function (menuItemGroup) {
2948
+ }, sortedGroupedMenuItems == null ? void 0 : sortedGroupedMenuItems.map(function (menuItemGroup, idx) {
2941
2949
  return /*#__PURE__*/React__default.createElement(react.Box, {
2950
+ key: idx,
2942
2951
  _notLast: {
2943
2952
  paddingBottom: '8px'
2944
2953
  }
2945
2954
  }, menuItemGroup.groupHeader && /*#__PURE__*/React__default.createElement(NavigationMenuHeader, {
2946
2955
  label: menuItemGroup.groupHeader
2947
- }), menuItemGroup.groupMenuItems.map(function (item) {
2956
+ }), menuItemGroup.groupMenuItems.map(function (item, idx) {
2948
2957
  return /*#__PURE__*/React__default.createElement(NavigationMenuItem, Object.assign({}, item, {
2958
+ key: idx,
2949
2959
  isSelected: selectedMenuItem === item.label,
2950
2960
  onClick: function onClick() {
2951
2961
  return setSelectedMenuItem(item.label);
@@ -3093,7 +3103,9 @@ var EmptyTable = function EmptyTable() {
3093
3103
  }, function (_, i) {
3094
3104
  return i + 1;
3095
3105
  }).map(function (i) {
3096
- return /*#__PURE__*/React__default.createElement(react.Tr, null, /*#__PURE__*/React__default.createElement(react.Td, {
3106
+ return /*#__PURE__*/React__default.createElement(react.Tr, {
3107
+ key: i
3108
+ }, /*#__PURE__*/React__default.createElement(react.Td, {
3097
3109
  height: "26px",
3098
3110
  opacity: getOpacity(i)
3099
3111
  }));
@@ -3127,18 +3139,24 @@ function Table(_ref) {
3127
3139
  _odd: {
3128
3140
  bg: colors.label.primary.dark
3129
3141
  }
3130
- }, columnsAsConst.map(function (column) {
3142
+ }, columnsAsConst.map(function (column, idx) {
3131
3143
  return (
3132
3144
  /*#__PURE__*/
3133
3145
  // @ts-ignore
3134
- React__default.createElement(react.Th, null, headers[column])
3146
+ React__default.createElement(react.Th, {
3147
+ key: idx
3148
+ }, headers[column])
3135
3149
  );
3136
- }))), /*#__PURE__*/React__default.createElement(react.Tbody, null, body.map(function (row) {
3137
- return /*#__PURE__*/React__default.createElement(react.Tr, null, columnsAsConst.map(function (column) {
3150
+ }))), /*#__PURE__*/React__default.createElement(react.Tbody, null, body.map(function (row, idx) {
3151
+ return /*#__PURE__*/React__default.createElement(react.Tr, {
3152
+ key: idx
3153
+ }, columnsAsConst.map(function (column, idx) {
3138
3154
  return (
3139
3155
  /*#__PURE__*/
3140
3156
  // @ts-ignore
3141
- React__default.createElement(react.Td, null, row[column])
3157
+ React__default.createElement(react.Td, {
3158
+ key: idx
3159
+ }, row[column])
3142
3160
  );
3143
3161
  }));
3144
3162
  }))) : /*#__PURE__*/React__default.createElement(EmptyTable, null), loadMore && loading !== undefined && body.length ? /*#__PURE__*/React__default.createElement(TableLoadingRows, {
@@ -3173,8 +3191,10 @@ var TabsWrapper = function TabsWrapper(_ref) {
3173
3191
  borderBottom: 0,
3174
3192
  borderBottomLeftRadius: 0,
3175
3193
  borderBottomRightRadius: 0
3176
- }, navItems.map(function (navItem) {
3177
- return /*#__PURE__*/React__default.createElement(react.Tab, null, navItem);
3194
+ }, navItems.map(function (navItem, idx) {
3195
+ return /*#__PURE__*/React__default.createElement(react.Tab, {
3196
+ key: idx
3197
+ }, navItem);
3178
3198
  })), children);
3179
3199
  };
3180
3200
 
@@ -4177,7 +4197,7 @@ var customXQChakraTheme = /*#__PURE__*/react.extendTheme( /*#__PURE__*/_extends$
4177
4197
  var XQThemeProvider = function XQThemeProvider(_ref) {
4178
4198
  var children = _ref.children,
4179
4199
  cssVarsRoot = _ref.cssVarsRoot;
4180
- return /*#__PURE__*/React__default.createElement(provider.ChakraProvider, {
4200
+ return /*#__PURE__*/React__default.createElement(react.ChakraProvider, {
4181
4201
  theme: customXQChakraTheme,
4182
4202
  resetCSS: true,
4183
4203
  cssVarsRoot: cssVarsRoot
@@ -4279,7 +4299,8 @@ var ToolbarBreadcrumbs = function ToolbarBreadcrumbs(_ref) {
4279
4299
  height: "26px"
4280
4300
  }, filteredPageList.map(function (page, i) {
4281
4301
  return /*#__PURE__*/React__default.createElement(react.Flex, {
4282
- alignItems: "center"
4302
+ alignItems: "center",
4303
+ key: i
4283
4304
  }, /*#__PURE__*/React__default.createElement(ToolbarBreadcrumbItem, {
4284
4305
  page: getPageType(i),
4285
4306
  pageLabel: page.label,
@@ -4317,6 +4338,87 @@ var Toolbar = function Toolbar(_ref) {
4317
4338
  }, children, " ")));
4318
4339
  };
4319
4340
 
4341
+ /**
4342
+ * A functional React component utilized to render the `Toast` component
4343
+ */
4344
+
4345
+ var Toast = function Toast(_ref) {
4346
+ var variant = _ref.variant,
4347
+ message = _ref.message,
4348
+ buttonText = _ref.buttonText,
4349
+ onClick = _ref.onClick;
4350
+ var Icon = React.useMemo(function () {
4351
+ switch (variant) {
4352
+ case 'error':
4353
+ return /*#__PURE__*/React__default.createElement(Error$1, {
4354
+ boxSize: "16px"
4355
+ });
4356
+
4357
+ case 'neutral':
4358
+ return /*#__PURE__*/React__default.createElement(Neutral, {
4359
+ boxSize: "16px",
4360
+ color: "white"
4361
+ });
4362
+
4363
+ case 'positive':
4364
+ return /*#__PURE__*/React__default.createElement(Positive, {
4365
+ boxSize: "16px"
4366
+ });
4367
+
4368
+ case 'warning':
4369
+ return /*#__PURE__*/React__default.createElement(Warning, {
4370
+ boxSize: "16px"
4371
+ });
4372
+
4373
+ default:
4374
+ return null;
4375
+ }
4376
+ }, [variant]);
4377
+ return /*#__PURE__*/React__default.createElement(react.Flex, {
4378
+ alignItems: "center",
4379
+ width: "fit-content",
4380
+ height: "32px",
4381
+ p: "8px",
4382
+ bg: "#151515D9",
4383
+ borderColor: "#9999991A",
4384
+ borderRadius: "8px"
4385
+ }, /*#__PURE__*/React__default.createElement(react.Box, {
4386
+ pr: "8px"
4387
+ }, Icon), /*#__PURE__*/React__default.createElement(react.Text, {
4388
+ pr: "16px",
4389
+ fontSize: "13px",
4390
+ color: colors.label.primary.dark
4391
+ }, message), onClick && buttonText && /*#__PURE__*/React__default.createElement(react.Flex, {
4392
+ ml: "auto",
4393
+ justifyContent: "flex-end"
4394
+ }, /*#__PURE__*/React__default.createElement(react.Button, {
4395
+ color: colors.fill.action,
4396
+ style: {
4397
+ background: 'transparent',
4398
+ border: 'transparent',
4399
+ boxShadow: 'none'
4400
+ },
4401
+ _hover: {
4402
+ bg: 'transparent',
4403
+ border: 'transparent',
4404
+ boxShadow: 'none'
4405
+ },
4406
+ onClick: onClick
4407
+ }, buttonText)));
4408
+ };
4409
+
4410
+ var useToast = function useToast(props) {
4411
+ var toast = react.useToast();
4412
+ return function () {
4413
+ return toast({
4414
+ position: props.position,
4415
+ render: function render() {
4416
+ return /*#__PURE__*/React__default.createElement(Toast, Object.assign({}, props));
4417
+ }
4418
+ });
4419
+ };
4420
+ };
4421
+
4320
4422
  function formatErrorResponse(error) {
4321
4423
  var _error$response, _error$response$data;
4322
4424
 
@@ -4392,4 +4494,5 @@ exports.Warning = Warning;
4392
4494
  exports.XQThemeProvider = XQThemeProvider;
4393
4495
  exports.colors = colors;
4394
4496
  exports.formatErrorResponse = formatErrorResponse;
4497
+ exports.useToast = useToast;
4395
4498
  //# sourceMappingURL=ui-core.cjs.development.js.map