@invoicebox/ui 0.1.0-alpha.21 → 0.1.0-alpha.22

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.
@@ -0,0 +1,9 @@
1
+ import { ButtonHTMLAttributes, FC } from 'react';
2
+ import { TProps as TInvoiceboxSpinnerProps } from '../InvoiceboxSpinner';
3
+ import { TSecondaryButtonPalette } from './palette';
4
+ export type TProps = {
5
+ isLoading?: boolean;
6
+ palette?: Partial<TSecondaryButtonPalette>;
7
+ invoiceboxSpinnerProps?: Pick<TInvoiceboxSpinnerProps, 'palette'>;
8
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
9
+ export declare const SecondaryButton: FC<TProps>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SecondaryButton = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var S = _interopRequireWildcard(require("./styles"));
10
+ var _InvoiceboxSpinner = require("../InvoiceboxSpinner");
11
+ var _palette = require("../../../palette");
12
+ var _excluded = ["isLoading", "palette", "invoiceboxSpinnerProps", "children", "disabled"];
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
18
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
19
+ var SecondaryButton = exports.SecondaryButton = function SecondaryButton(_ref) {
20
+ var isLoading = _ref.isLoading,
21
+ palette = _ref.palette,
22
+ invoiceboxSpinnerProps = _ref.invoiceboxSpinnerProps,
23
+ children = _ref.children,
24
+ disabled = _ref.disabled,
25
+ rest = _objectWithoutProperties(_ref, _excluded);
26
+ var mergedPalette = (0, _palette.useComponentPalette)('secondaryButton', palette);
27
+ return /*#__PURE__*/_react["default"].createElement(S.Wrapper, _extends({
28
+ disabled: disabled || isLoading,
29
+ $palette: mergedPalette
30
+ }, rest), isLoading && /*#__PURE__*/_react["default"].createElement(S.LoaderWrapper, null, /*#__PURE__*/_react["default"].createElement(_InvoiceboxSpinner.InvoiceboxSpinner, _extends({}, invoiceboxSpinnerProps, {
31
+ isSecondary: true,
32
+ width: "32px"
33
+ }))), /*#__PURE__*/_react["default"].createElement(S.Inner, {
34
+ htmlElement: "span",
35
+ variant: "buttonM",
36
+ $isLoading: isLoading
37
+ }, children));
38
+ };
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { StoryObj } from '@storybook/react';
3
+ import { SecondaryButton } from '.';
4
+ declare const meta: {
5
+ title: string;
6
+ component: import("react").FC<import(".").TProps>;
7
+ tags: string[];
8
+ };
9
+ export default meta;
10
+ export declare const Default: StoryObj<typeof SecondaryButton>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.Default = void 0;
7
+ var _ = require(".");
8
+ var _addonActions = require("@storybook/addon-actions");
9
+ var meta = {
10
+ title: 'common/SecondaryButton',
11
+ component: _.SecondaryButton,
12
+ tags: ['autodocs']
13
+ };
14
+ var _default = exports["default"] = meta;
15
+ var Default = exports.Default = {
16
+ args: {
17
+ disabled: false,
18
+ isLoading: false,
19
+ onClick: (0, _addonActions.action)('click'),
20
+ children: 'Button'
21
+ }
22
+ };
@@ -0,0 +1,8 @@
1
+ import { TAbstractPalette } from '../../../palette';
2
+ export type TSecondaryButtonPalette = {
3
+ text: string;
4
+ bg: string;
5
+ bgHover: string;
6
+ bgActive: string;
7
+ };
8
+ export declare const generateSecondaryButtonPalette: (abstractPalette: TAbstractPalette) => TSecondaryButtonPalette;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateSecondaryButtonPalette = void 0;
7
+ var generateSecondaryButtonPalette = exports.generateSecondaryButtonPalette = function generateSecondaryButtonPalette(abstractPalette) {
8
+ return {
9
+ text: abstractPalette.primary,
10
+ bg: abstractPalette.neutralUsual,
11
+ bgHover: abstractPalette.neutralHeavy,
12
+ bgActive: abstractPalette.neutralMassive
13
+ };
14
+ };
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { TSecondaryButtonPalette } from './palette';
3
+ export declare const Inner: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("../Typography").TProps, {
4
+ $isLoading?: boolean | undefined;
5
+ }>> & Omit<import("react").FC<import("../Typography").TProps>, keyof import("react").Component<any, {}, any>>;
6
+ export declare const Wrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
7
+ $palette: TSecondaryButtonPalette;
8
+ }>>;
9
+ export declare const LoaderWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Wrapper = exports.LoaderWrapper = exports.Inner = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _Typography = require("../Typography");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ var Inner = exports.Inner = (0, _styledComponents["default"])(_Typography.Typography).withConfig({
11
+ displayName: "styles__Inner",
12
+ componentId: "sc-ln4oiu-0"
13
+ })(["visibility:", ";"], function (_ref) {
14
+ var $isLoading = _ref.$isLoading;
15
+ return $isLoading ? 'hidden' : 'visible';
16
+ });
17
+ var Wrapper = exports.Wrapper = _styledComponents["default"].button.withConfig({
18
+ displayName: "styles__Wrapper",
19
+ componentId: "sc-ln4oiu-1"
20
+ })(["position:relative;border:none;border-radius:10px;cursor:pointer;padding:13px 24px;color:", ";background-color:", ";transition:background-color 0.2s ease-in-out 0s;&:hover:not(:disabled){background-color:", ";}&:active:not(:disabled){background-color:", ";}&:disabled{cursor:not-allowed;", "{opacity:0.5;}}"], function (_ref2) {
21
+ var $palette = _ref2.$palette;
22
+ return $palette.text;
23
+ }, function (_ref3) {
24
+ var $palette = _ref3.$palette;
25
+ return $palette.bg;
26
+ }, function (_ref4) {
27
+ var $palette = _ref4.$palette;
28
+ return $palette.bgHover;
29
+ }, function (_ref5) {
30
+ var $palette = _ref5.$palette;
31
+ return $palette.bgActive;
32
+ }, Inner);
33
+ var LoaderWrapper = exports.LoaderWrapper = _styledComponents["default"].div.withConfig({
34
+ displayName: "styles__LoaderWrapper",
35
+ componentId: "sc-ln4oiu-2"
36
+ })(["position:absolute;top:0;left:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;"]);
@@ -1,23 +1,26 @@
1
- import { FC, HTMLProps } from 'react';
1
+ import { ButtonHTMLAttributes, FC, HTMLAttributes } from 'react';
2
2
  import { typography } from './typography';
3
3
  type TDefaultElementProps = {
4
- as?: never;
5
- } & HTMLProps<HTMLDivElement>;
4
+ htmlElement?: never;
5
+ } & HTMLAttributes<HTMLDivElement>;
6
6
  type TDivProps = {
7
- as: 'div';
8
- } & HTMLProps<HTMLDivElement>;
7
+ htmlElement: 'div';
8
+ } & HTMLAttributes<HTMLDivElement>;
9
9
  type TParagraphProps = {
10
- as: 'p';
11
- } & HTMLProps<HTMLParagraphElement>;
10
+ htmlElement: 'p';
11
+ } & HTMLAttributes<HTMLParagraphElement>;
12
12
  type TSpanProps = {
13
- as: 'span';
14
- } & HTMLProps<HTMLSpanElement>;
13
+ htmlElement: 'span';
14
+ } & HTMLAttributes<HTMLSpanElement>;
15
15
  type THeadingProps = {
16
- as: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
17
- } & HTMLProps<HTMLHeadingElement>;
16
+ htmlElement: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
17
+ } & HTMLAttributes<HTMLHeadingElement>;
18
+ type TButtonProps = {
19
+ htmlElement: 'button';
20
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
18
21
  export type TProps = {
19
22
  variant: keyof typeof typography;
20
- } & ((TDefaultElementProps | TDivProps) | TParagraphProps | TSpanProps | THeadingProps);
23
+ } & ((TDefaultElementProps | TDivProps) | TParagraphProps | TSpanProps | THeadingProps | TButtonProps);
21
24
  export declare const Typography: FC<TProps>;
22
25
  export declare const TypographyGlobalStyle: FC;
23
26
  export {};
@@ -8,7 +8,7 @@ exports.TypographyGlobalStyle = exports.Typography = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var S = _interopRequireWildcard(require("./styles"));
10
10
  var _reactHelmet = require("react-helmet");
11
- var _excluded = ["variant", "as"];
11
+ var _excluded = ["variant", "htmlElement"];
12
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -17,11 +17,11 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
17
17
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
18
18
  var Typography = exports.Typography = function Typography(_ref) {
19
19
  var variant = _ref.variant,
20
- _ref$as = _ref.as,
21
- as = _ref$as === void 0 ? 'div' : _ref$as,
20
+ _ref$htmlElement = _ref.htmlElement,
21
+ htmlElement = _ref$htmlElement === void 0 ? 'div' : _ref$htmlElement,
22
22
  rest = _objectWithoutProperties(_ref, _excluded);
23
23
  return /*#__PURE__*/_react["default"].createElement(S.Wrapper, _extends({
24
- as: as,
24
+ as: htmlElement,
25
25
  $variant: variant
26
26
  }, rest));
27
27
  };
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export { Skeleton } from './components/common/Skeleton';
2
2
  export { InvoiceboxLoader } from './components/common/InvoiceboxLoader';
3
3
  export { Typography, TypographyGlobalStyle } from './components/common/Typography';
4
4
  export { InvoiceboxSpinner } from './components/common/InvoiceboxSpinner';
5
+ export { SecondaryButton } from './components/common/SecondaryButton';
5
6
  export { PaletteProvider } from './palette';
package/dist/index.js CHANGED
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "PaletteProvider", {
21
21
  return _palette.PaletteProvider;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "SecondaryButton", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _SecondaryButton.SecondaryButton;
28
+ }
29
+ });
24
30
  Object.defineProperty(exports, "Skeleton", {
25
31
  enumerable: true,
26
32
  get: function get() {
@@ -43,4 +49,5 @@ var _Skeleton = require("./components/common/Skeleton");
43
49
  var _InvoiceboxLoader = require("./components/common/InvoiceboxLoader");
44
50
  var _Typography = require("./components/common/Typography");
45
51
  var _InvoiceboxSpinner = require("./components/common/InvoiceboxSpinner");
52
+ var _SecondaryButton = require("./components/common/SecondaryButton");
46
53
  var _palette = require("./palette");
@@ -9,5 +9,7 @@ var defaultAbstractPalette = exports.defaultAbstractPalette = {
9
9
  secondary: '#FAD247',
10
10
  base: '#FFFFFF',
11
11
  neutralUsual: '#f1f2f6',
12
- neutralLight: '#f9f9f9'
12
+ neutralLight: '#f9f9f9',
13
+ neutralHeavy: '#ececf0',
14
+ neutralMassive: '#dee0e7'
13
15
  };
@@ -1,9 +1,11 @@
1
1
  /// <reference types="react" />
2
2
  import { TSkeletonPalette } from '../components/common/Skeleton/palette';
3
3
  import { TInvoiceboxSpinnerPalette } from '../components/common/InvoiceboxSpinner/palette';
4
+ import { TSecondaryButtonPalette } from '../components/common/SecondaryButton/palette';
4
5
  type TContext = {
5
6
  skeleton: TSkeletonPalette;
6
7
  invoiceboxSpinner: TInvoiceboxSpinnerPalette;
8
+ secondaryButton: TSecondaryButtonPalette;
7
9
  };
8
10
  export declare const PaletteContext: import("react").Context<TContext>;
9
11
  export {};
@@ -8,7 +8,9 @@ var _react = require("react");
8
8
  var _constants = require("./constants");
9
9
  var _palette = require("../components/common/Skeleton/palette");
10
10
  var _palette2 = require("../components/common/InvoiceboxSpinner/palette");
11
+ var _palette3 = require("../components/common/SecondaryButton/palette");
11
12
  var PaletteContext = exports.PaletteContext = /*#__PURE__*/(0, _react.createContext)({
12
13
  skeleton: (0, _palette.generateSkeletonPalette)(_constants.defaultAbstractPalette),
13
- invoiceboxSpinner: (0, _palette2.generateInvoiceboxSpinnerPalette)(_constants.defaultAbstractPalette)
14
+ invoiceboxSpinner: (0, _palette2.generateInvoiceboxSpinnerPalette)(_constants.defaultAbstractPalette),
15
+ secondaryButton: (0, _palette3.generateSecondaryButtonPalette)(_constants.defaultAbstractPalette)
14
16
  });
@@ -2,11 +2,13 @@ import { FC, ReactNode } from 'react';
2
2
  import { TSkeletonPalette } from '../components/common/Skeleton/palette';
3
3
  import { TAbstractPalette } from './types';
4
4
  import { TInvoiceboxSpinnerPalette } from '../components/common/InvoiceboxSpinner/palette';
5
+ import { TSecondaryButtonPalette } from '../components/common/SecondaryButton/palette';
5
6
  type TProps = {
6
7
  children: ReactNode;
7
8
  abstract?: Partial<TAbstractPalette>;
8
9
  skeleton?: Partial<TSkeletonPalette>;
9
10
  invoiceboxSpinner?: Partial<TInvoiceboxSpinnerPalette>;
11
+ secondaryButton?: Partial<TSecondaryButtonPalette>;
10
12
  };
11
13
  export declare const PaletteProvider: FC<TProps>;
12
14
  export {};
@@ -9,6 +9,7 @@ var _palette = require("../components/common/Skeleton/palette");
9
9
  var _constants = require("./constants");
10
10
  var _context = require("./context");
11
11
  var _palette2 = require("../components/common/InvoiceboxSpinner/palette");
12
+ var _palette3 = require("../components/common/SecondaryButton/palette");
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
14
15
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
@@ -21,7 +22,8 @@ var PaletteProvider = exports.PaletteProvider = function PaletteProvider(_ref) {
21
22
  var children = _ref.children,
22
23
  _abstract = _ref["abstract"],
23
24
  skeleton = _ref.skeleton,
24
- invoiceboxSpinner = _ref.invoiceboxSpinner;
25
+ invoiceboxSpinner = _ref.invoiceboxSpinner,
26
+ secondaryButton = _ref.secondaryButton;
25
27
  var mergedAbstractPalette = (0, _react.useMemo)(function () {
26
28
  return _objectSpread(_objectSpread({}, _constants.defaultAbstractPalette), _abstract);
27
29
  }, [_abstract]);
@@ -31,12 +33,16 @@ var PaletteProvider = exports.PaletteProvider = function PaletteProvider(_ref) {
31
33
  var mergedInvoiceboxSpinnerPalette = (0, _react.useMemo)(function () {
32
34
  return _objectSpread(_objectSpread({}, (0, _palette2.generateInvoiceboxSpinnerPalette)(mergedAbstractPalette)), invoiceboxSpinner);
33
35
  }, [mergedAbstractPalette, invoiceboxSpinner]);
36
+ var mergedSecondaryButtonPalette = (0, _react.useMemo)(function () {
37
+ return _objectSpread(_objectSpread({}, (0, _palette3.generateSecondaryButtonPalette)(mergedAbstractPalette)), secondaryButton);
38
+ }, [mergedAbstractPalette, secondaryButton]);
34
39
  var value = (0, _react.useMemo)(function () {
35
40
  return {
36
41
  skeleton: mergedSkeletonPalette,
37
- invoiceboxSpinner: mergedInvoiceboxSpinnerPalette
42
+ invoiceboxSpinner: mergedInvoiceboxSpinnerPalette,
43
+ secondaryButton: mergedSecondaryButtonPalette
38
44
  };
39
- }, [mergedSkeletonPalette, mergedInvoiceboxSpinnerPalette]);
45
+ }, [mergedSkeletonPalette, mergedInvoiceboxSpinnerPalette, mergedSecondaryButtonPalette]);
40
46
  return /*#__PURE__*/_react["default"].createElement(_context.PaletteContext.Provider, {
41
47
  value: value
42
48
  }, children);
@@ -1,7 +1,9 @@
1
1
  export type TAbstractPalette = {
2
- neutralUsual: string;
3
- neutralLight: string;
4
2
  primary: string;
5
3
  secondary: string;
6
4
  base: string;
5
+ neutralUsual: string;
6
+ neutralLight: string;
7
+ neutralHeavy: string;
8
+ neutralMassive: string;
7
9
  };
@@ -1,4 +1,5 @@
1
1
  export declare const usePalette: () => {
2
2
  skeleton: import("../components/common/Skeleton/palette").TSkeletonPalette;
3
3
  invoiceboxSpinner: import("../components/common/InvoiceboxSpinner/palette").TInvoiceboxSpinnerPalette;
4
+ secondaryButton: import("../components/common/SecondaryButton/palette").TSecondaryButtonPalette;
4
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invoicebox/ui",
3
- "version": "0.1.0-alpha.21",
3
+ "version": "0.1.0-alpha.22",
4
4
  "description": "Invoicebox UI",
5
5
  "license": "Apache License 2.0",
6
6
  "scripts": {