@snack-uikit/toaster 0.8.17-preview-bc9ca5dd.0 → 0.8.17

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 (125) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +3 -9
  3. package/dist/cjs/components/ToastSystemEvent/styles.module.css +3 -2
  4. package/dist/cjs/components/ToasterContainer/styles.module.css +9 -9
  5. package/dist/cjs/components/index.d.ts +0 -1
  6. package/dist/cjs/components/index.js +1 -2
  7. package/dist/cjs/constants.d.ts +5 -10
  8. package/dist/cjs/constants.js +4 -77
  9. package/dist/cjs/helperComponents/ButtonAction/styles.module.css +2 -2
  10. package/dist/cjs/helpers.js +1 -43
  11. package/dist/cjs/index.d.ts +2 -2
  12. package/dist/cjs/testIds.d.ts +0 -14
  13. package/dist/cjs/testIds.js +1 -16
  14. package/dist/cjs/types.d.ts +1 -9
  15. package/dist/esm/components/ToastSystemEvent/styles.module.css +3 -2
  16. package/dist/esm/components/ToasterContainer/styles.module.css +9 -9
  17. package/dist/esm/components/index.d.ts +0 -1
  18. package/dist/esm/components/index.js +0 -1
  19. package/dist/esm/constants.d.ts +5 -10
  20. package/dist/esm/constants.js +0 -76
  21. package/dist/esm/helperComponents/ButtonAction/styles.module.css +2 -2
  22. package/dist/esm/helpers.js +0 -38
  23. package/dist/esm/index.d.ts +2 -2
  24. package/dist/esm/testIds.d.ts +0 -14
  25. package/dist/esm/testIds.js +0 -15
  26. package/dist/esm/types.d.ts +1 -9
  27. package/package.json +5 -6
  28. package/src/components/ToastSystemEvent/styles.module.scss +2 -2
  29. package/src/components/ToasterContainer/styles.module.scss +1 -1
  30. package/src/components/index.ts +0 -1
  31. package/src/constants.ts +2 -91
  32. package/src/helpers.tsx +0 -35
  33. package/src/index.ts +1 -7
  34. package/src/testIds.ts +0 -17
  35. package/src/types.ts +1 -7
  36. package/dist/cjs/components/ToastUpload/ToastUpload.d.ts +0 -60
  37. package/dist/cjs/components/ToastUpload/ToastUpload.js +0 -122
  38. package/dist/cjs/components/ToastUpload/ToastUploadToaster.d.ts +0 -3
  39. package/dist/cjs/components/ToastUpload/ToastUploadToaster.js +0 -16
  40. package/dist/cjs/components/ToastUpload/constants.d.ts +0 -16
  41. package/dist/cjs/components/ToastUpload/constants.js +0 -26
  42. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.d.ts +0 -3
  43. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.js +0 -32
  44. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.d.ts +0 -1
  45. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.js +0 -25
  46. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/styles.module.css +0 -30
  47. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +0 -5
  48. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.js +0 -85
  49. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.d.ts +0 -1
  50. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.js +0 -25
  51. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/styles.module.css +0 -85
  52. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +0 -6
  53. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +0 -42
  54. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +0 -1
  55. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.js +0 -25
  56. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +0 -3
  57. package/dist/cjs/components/ToastUpload/index.d.ts +0 -1
  58. package/dist/cjs/components/ToastUpload/index.js +0 -25
  59. package/dist/cjs/components/ToastUpload/styles.module.css +0 -110
  60. package/dist/cjs/components/ToastUpload/types.d.ts +0 -59
  61. package/dist/cjs/components/ToastUpload/types.js +0 -5
  62. package/dist/cjs/components/ToastUpload/utils/formatPercent.d.ts +0 -1
  63. package/dist/cjs/components/ToastUpload/utils/formatPercent.js +0 -8
  64. package/dist/cjs/components/ToastUpload/utils/index.d.ts +0 -1
  65. package/dist/cjs/components/ToastUpload/utils/index.js +0 -25
  66. package/dist/cjs/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
  67. package/dist/cjs/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -28
  68. package/dist/cjs/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
  69. package/dist/cjs/helperComponents/ButtonTextNeutral/index.js +0 -25
  70. package/dist/cjs/helperComponents/ButtonTextNeutral/styles.module.css +0 -32
  71. package/dist/esm/components/ToastUpload/ToastUpload.d.ts +0 -60
  72. package/dist/esm/components/ToastUpload/ToastUpload.js +0 -36
  73. package/dist/esm/components/ToastUpload/ToastUploadToaster.d.ts +0 -3
  74. package/dist/esm/components/ToastUpload/ToastUploadToaster.js +0 -7
  75. package/dist/esm/components/ToastUpload/constants.d.ts +0 -16
  76. package/dist/esm/components/ToastUpload/constants.js +0 -20
  77. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.d.ts +0 -3
  78. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.js +0 -18
  79. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/index.d.ts +0 -1
  80. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/index.js +0 -1
  81. package/dist/esm/components/ToastUpload/helperComponents/ButtonIcon/styles.module.css +0 -30
  82. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +0 -5
  83. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.js +0 -23
  84. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.d.ts +0 -1
  85. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.js +0 -1
  86. package/dist/esm/components/ToastUpload/helperComponents/FileItem/styles.module.css +0 -85
  87. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +0 -6
  88. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +0 -16
  89. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +0 -1
  90. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.js +0 -1
  91. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +0 -3
  92. package/dist/esm/components/ToastUpload/index.d.ts +0 -1
  93. package/dist/esm/components/ToastUpload/index.js +0 -1
  94. package/dist/esm/components/ToastUpload/styles.module.css +0 -110
  95. package/dist/esm/components/ToastUpload/types.d.ts +0 -59
  96. package/dist/esm/components/ToastUpload/types.js +0 -1
  97. package/dist/esm/components/ToastUpload/utils/formatPercent.d.ts +0 -1
  98. package/dist/esm/components/ToastUpload/utils/formatPercent.js +0 -1
  99. package/dist/esm/components/ToastUpload/utils/index.d.ts +0 -1
  100. package/dist/esm/components/ToastUpload/utils/index.js +0 -1
  101. package/dist/esm/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
  102. package/dist/esm/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -5
  103. package/dist/esm/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
  104. package/dist/esm/helperComponents/ButtonTextNeutral/index.js +0 -1
  105. package/dist/esm/helperComponents/ButtonTextNeutral/styles.module.css +0 -32
  106. package/src/components/ToastUpload/ToastUpload.tsx +0 -169
  107. package/src/components/ToastUpload/ToastUploadToaster.tsx +0 -11
  108. package/src/components/ToastUpload/constants.ts +0 -26
  109. package/src/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.tsx +0 -10
  110. package/src/components/ToastUpload/helperComponents/ButtonIcon/index.ts +0 -1
  111. package/src/components/ToastUpload/helperComponents/ButtonIcon/styles.module.scss +0 -45
  112. package/src/components/ToastUpload/helperComponents/FileItem/FileItem.tsx +0 -76
  113. package/src/components/ToastUpload/helperComponents/FileItem/index.ts +0 -1
  114. package/src/components/ToastUpload/helperComponents/FileItem/styles.module.scss +0 -93
  115. package/src/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.tsx +0 -38
  116. package/src/components/ToastUpload/helperComponents/LoadingStatus/index.ts +0 -1
  117. package/src/components/ToastUpload/helperComponents/LoadingStatus/styles.module.scss +0 -8
  118. package/src/components/ToastUpload/index.ts +0 -1
  119. package/src/components/ToastUpload/styles.module.scss +0 -123
  120. package/src/components/ToastUpload/types.ts +0 -67
  121. package/src/components/ToastUpload/utils/formatPercent.ts +0 -1
  122. package/src/components/ToastUpload/utils/index.ts +0 -1
  123. package/src/helperComponents/ButtonTextNeutral/ButtonTextNeutral.tsx +0 -23
  124. package/src/helperComponents/ButtonTextNeutral/index.ts +0 -1
  125. package/src/helperComponents/ButtonTextNeutral/styles.module.scss +0 -42
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = {
8
- enumerable: true,
9
- get: function () {
10
- return m[k];
11
- }
12
- };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- } : function (o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- });
19
- var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", {
23
- value: true
24
- });
25
- __exportStar(require("./formatPercent"), exports);
@@ -1,7 +0,0 @@
1
- import { MouseEvent } from 'react';
2
- export type ButtonTextNeutralProps = {
3
- label: string;
4
- onClick(e: MouseEvent<HTMLButtonElement>): void;
5
- critical?: boolean;
6
- };
7
- export declare function ButtonTextNeutral({ label, onClick, critical }: ButtonTextNeutralProps): import("react/jsx-runtime").JSX.Element;
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
- return mod && mod.__esModule ? mod : {
5
- "default": mod
6
- };
7
- };
8
- Object.defineProperty(exports, "__esModule", {
9
- value: true
10
- });
11
- exports.ButtonTextNeutral = ButtonTextNeutral;
12
- const jsx_runtime_1 = require("react/jsx-runtime");
13
- const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
14
- function ButtonTextNeutral(_ref) {
15
- let {
16
- label,
17
- onClick,
18
- critical
19
- } = _ref;
20
- return (0, jsx_runtime_1.jsx)("button", {
21
- type: 'button',
22
- className: styles_module_scss_1.default.buttonTextNeutral,
23
- onClick: onClick,
24
- "aria-label": 'action',
25
- "data-critical": critical || undefined,
26
- children: label
27
- });
28
- }
@@ -1 +0,0 @@
1
- export * from './ButtonTextNeutral';
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = {
8
- enumerable: true,
9
- get: function () {
10
- return m[k];
11
- }
12
- };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- } : function (o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- });
19
- var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", {
23
- value: true
24
- });
25
- __exportStar(require("./ButtonTextNeutral"), exports);
@@ -1,32 +0,0 @@
1
- .buttonTextNeutral{
2
- font-family:var(--sans-body-m-font-family, SB Sans Interface);
3
- font-weight:var(--sans-body-m-font-weight, Regular);
4
- line-height:var(--sans-body-m-line-height, 20px);
5
- font-size:var(--sans-body-m-font-size, 14px);
6
- letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
7
- paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
8
- cursor:pointer;
9
- display:flex;
10
- align-items:center;
11
- justify-content:center;
12
- box-sizing:border-box;
13
- margin:0;
14
- padding:0;
15
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
16
- background-color:transparent;
17
- border:none;
18
- }
19
- .buttonTextNeutral:hover{
20
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
21
- }
22
- .buttonTextNeutral:focus, .buttonTextNeutral:active{
23
- color:var(--sys-invert-neutral-accent-pressed, #aaaebd);
24
- }
25
- .buttonTextNeutral:focus-visible{
26
- outline-width:var(--border-state-focus-s-border-width, 2px);
27
- outline-style:var(--border-state-focus-s-border-style, solid);
28
- outline-color:var(--border-state-focus-s-border-color, );
29
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
30
- outline-color:var(--sys-available-on-complementary, #ffffff);
31
- outline-offset:var(--spacing-state-focus-offset, 2px);
32
- }
@@ -1,60 +0,0 @@
1
- import { MouseEvent } from 'react';
2
- import { ToastContentProps as RtToastContentProps } from 'react-toastify';
3
- import { WithSupportProps } from '@snack-uikit/utils';
4
- import { ButtonTextNeutralProps } from '../../helperComponents/ButtonTextNeutral';
5
- import { ToastUploadStatus, UploadActions, UploadItem } from './types';
6
- export type ToastUploadProps = Partial<RtToastContentProps> & WithSupportProps<{
7
- /**
8
- * Общий статус загрузки
9
- */
10
- status: ToastUploadStatus;
11
- /**
12
- * Заголовок тостера
13
- */
14
- title: string;
15
- /**
16
- * Описание статуса загрузки
17
- */
18
- description: string;
19
- /**
20
- * Каунтер общего прогресса
21
- */
22
- totalProgressCounter: string;
23
- /**
24
- * Процент прогресса
25
- */
26
- totalProgressPercentage: number;
27
- /**
28
- * Закрыть тостер
29
- */
30
- onCloseClick?(e: MouseEvent<HTMLButtonElement>, close?: () => void): void;
31
- /**
32
- * Показывать кнопку закрытия тостера
33
- */
34
- closable?: boolean;
35
- /**
36
- * CSS-класс контейнера
37
- */
38
- className?: string;
39
- /**
40
- * Загружаемые элементы
41
- */
42
- items: UploadItem[];
43
- /**
44
- * Тостер свернут/развернут
45
- */
46
- collapsed: boolean;
47
- /**
48
- * Развернуть/свернуть тостер
49
- */
50
- onCollapsed: (collapsed: boolean) => void;
51
- /**
52
- * Экшены для управления загрузкой
53
- */
54
- generalActions: UploadActions;
55
- /**
56
- * Отмена всей загрузки
57
- */
58
- cancelButton?: ButtonTextNeutralProps;
59
- }>;
60
- export declare function ToastUpload({ status, title, description, totalProgressCounter, totalProgressPercentage, closeToast, onCloseClick, closable, className, items, collapsed, onCollapsed, generalActions, cancelButton, ...rest }: ToastUploadProps): import("react/jsx-runtime").JSX.Element;
@@ -1,36 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import cn from 'classnames';
14
- import { ChevronDownSVG, ChevronUpSVG, CrossSVG } from '@snack-uikit/icons';
15
- import { ProgressBar } from '@snack-uikit/progress-bar';
16
- import { extractSupportProps } from '@snack-uikit/utils';
17
- import { ButtonTextNeutral } from '../../helperComponents/ButtonTextNeutral';
18
- import { TOAST_UPLOAD_TEST_IDS } from '../../testIds';
19
- import { progressBarAppearanceByStatus } from './constants';
20
- import { ButtonIcon } from './helperComponents/ButtonIcon';
21
- import { FileItem } from './helperComponents/FileItem';
22
- import { LoadingStatus } from './helperComponents/LoadingStatus';
23
- import styles from './styles.module.css';
24
- import { formatPercent } from './utils';
25
- export function ToastUpload(_a) {
26
- var { status, title, description, totalProgressCounter, totalProgressPercentage, closeToast, onCloseClick, closable, className, items, collapsed, onCollapsed, generalActions, cancelButton } = _a, rest = __rest(_a, ["status", "title", "description", "totalProgressCounter", "totalProgressPercentage", "closeToast", "onCloseClick", "closable", "className", "items", "collapsed", "onCollapsed", "generalActions", "cancelButton"]);
27
- const handleCloseClick = (e) => {
28
- e.stopPropagation();
29
- onCloseClick ? onCloseClick(e, closeToast) : closeToast === null || closeToast === void 0 ? void 0 : closeToast();
30
- };
31
- const handleCollapseClick = (e) => {
32
- e.stopPropagation();
33
- onCollapsed(!collapsed);
34
- };
35
- return (_jsxs("div", Object.assign({ className: cn(styles.container, className) }, extractSupportProps(rest), { "data-collapsed": collapsed, children: [_jsxs("div", { className: styles.titleLine, children: [_jsxs("div", { className: styles.titleLineBody, children: [_jsx("div", { className: styles.title, "data-test-id": TOAST_UPLOAD_TEST_IDS.title, children: title }), cancelButton && _jsx(ButtonTextNeutral, Object.assign({}, cancelButton)), _jsx(ButtonIcon, { onClick: handleCollapseClick, "data-test-id": TOAST_UPLOAD_TEST_IDS.collapseButton, children: collapsed ? _jsx(ChevronUpSVG, {}) : _jsx(ChevronDownSVG, {}) }), closable && (_jsx(ButtonIcon, { type: 'button', className: styles.buttonAction, onClick: handleCloseClick, "data-test-id": TOAST_UPLOAD_TEST_IDS.close, children: _jsx(CrossSVG, {}) }))] }), _jsxs("div", { className: styles.generalProgress, children: [_jsxs("div", { className: styles.statusLine, children: [_jsxs("div", { className: styles.statusWrap, children: [_jsx(LoadingStatus, { status: status, actions: generalActions }), _jsx("span", { className: styles.description, "data-status": status, "data-test-id": TOAST_UPLOAD_TEST_IDS.description, children: description })] }), _jsx("span", { className: styles.totalCounter, "data-test-id": TOAST_UPLOAD_TEST_IDS.counter, children: totalProgressCounter }), _jsx("span", { className: styles.totalPercentage, "data-test-id": TOAST_UPLOAD_TEST_IDS.progress, children: formatPercent(totalProgressPercentage) })] }), !collapsed && (_jsx(ProgressBar, { progress: totalProgressPercentage, size: 'xs', appearance: progressBarAppearanceByStatus[status], "data-test-id": TOAST_UPLOAD_TEST_IDS.progressBar }))] })] }), _jsx("div", { className: styles.list, "data-collapsed": collapsed, "data-test-id": TOAST_UPLOAD_TEST_IDS.list, children: items.map(item => (_jsx(FileItem, { item: item }, item.id))) })] })));
36
- }
@@ -1,3 +0,0 @@
1
- import { ToastUploadProps } from './ToastUpload';
2
- export type ToastUploadToasterProps = Omit<ToastUploadProps, 'collapsed' | 'onCollapsed'>;
3
- export declare function ToastUploadForToaster(props: ToastUploadToasterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { ToastUpload } from './ToastUpload';
4
- export function ToastUploadForToaster(props) {
5
- const [collapsed, setCollapsed] = useState(true);
6
- return _jsx(ToastUpload, Object.assign({}, props, { collapsed: collapsed, onCollapsed: setCollapsed }));
7
- }
@@ -1,16 +0,0 @@
1
- import { ProgressBarProps } from '@snack-uikit/progress-bar';
2
- import { ToastUploadStatus } from './types';
3
- export declare const TOAST_UPLOAD_STATUS: {
4
- readonly Loading: "loading";
5
- readonly Pause: "pause";
6
- readonly Error: "error";
7
- readonly Uploaded: "uploaded";
8
- readonly ErrorUploaded: "errorUploaded";
9
- };
10
- export declare const TOAST_UPLOAD_ITEM_STATUS: {
11
- readonly Loading: "loading";
12
- readonly Pause: "pause";
13
- readonly Error: "error";
14
- readonly Uploaded: "uploaded";
15
- };
16
- export declare const progressBarAppearanceByStatus: Record<ToastUploadStatus, ProgressBarProps['appearance']>;
@@ -1,20 +0,0 @@
1
- export const TOAST_UPLOAD_STATUS = {
2
- Loading: 'loading',
3
- Pause: 'pause',
4
- Error: 'error',
5
- Uploaded: 'uploaded',
6
- ErrorUploaded: 'errorUploaded',
7
- };
8
- export const TOAST_UPLOAD_ITEM_STATUS = {
9
- Loading: 'loading',
10
- Pause: 'pause',
11
- Error: 'error',
12
- Uploaded: 'uploaded',
13
- };
14
- export const progressBarAppearanceByStatus = {
15
- pause: 'neutral',
16
- loading: 'green',
17
- uploaded: 'green',
18
- errorUploaded: 'red',
19
- error: 'red',
20
- };
@@ -1,3 +0,0 @@
1
- import { ButtonHTMLAttributes } from 'react';
2
- export type ButtonIconProps = ButtonHTMLAttributes<HTMLButtonElement>;
3
- export declare function ButtonIcon({ className, ...props }: ButtonIconProps): import("react/jsx-runtime").JSX.Element;
@@ -1,18 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import cn from 'classnames';
14
- import styles from './styles.module.css';
15
- export function ButtonIcon(_a) {
16
- var { className } = _a, props = __rest(_a, ["className"]);
17
- return _jsx("button", Object.assign({ type: 'button', className: cn(styles.buttonIcon, className) }, props));
18
- }
@@ -1 +0,0 @@
1
- export * from './ButtonIcon';
@@ -1 +0,0 @@
1
- export * from './ButtonIcon';
@@ -1,30 +0,0 @@
1
- .buttonIcon{
2
- cursor:pointer;
3
- display:flex;
4
- align-items:center;
5
- justify-content:center;
6
- box-sizing:border-box;
7
- margin:0;
8
- padding:0;
9
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
10
- background-color:transparent;
11
- border:none;
12
- }
13
- .buttonIcon svg{
14
- width:var(--size-icon-container-s, 24px) !important;
15
- height:var(--size-icon-container-s, 24px) !important;
16
- }
17
- .buttonIcon:hover{
18
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
19
- }
20
- .buttonIcon:focus, .buttonIcon:active{
21
- color:var(--sys-invert-neutral-accent-pressed, #aaaebd);
22
- }
23
- .buttonIcon:focus-visible{
24
- outline-width:var(--border-state-focus-s-border-width, 2px);
25
- outline-style:var(--border-state-focus-s-border-style, solid);
26
- outline-color:var(--border-state-focus-s-border-color, );
27
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
28
- outline-color:var(--sys-available-on-complementary, #ffffff);
29
- outline-offset:var(--spacing-state-focus-offset, 2px);
30
- }
@@ -1,5 +0,0 @@
1
- import { UploadItem } from '../../types';
2
- export type FileItemProps = {
3
- item: UploadItem;
4
- };
5
- export declare function FileItem({ item: initItem }: FileItemProps): import("react/jsx-runtime").JSX.Element;
@@ -1,23 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { CrossSVG } from '@snack-uikit/icons';
4
- import { Link } from '@snack-uikit/link';
5
- import { ProgressBar } from '@snack-uikit/progress-bar';
6
- import { TOAST_UPLOAD_TEST_IDS } from '../../../../testIds';
7
- import { progressBarAppearanceByStatus } from '../../constants';
8
- import { formatPercent } from '../../utils';
9
- import { ButtonIcon } from '../ButtonIcon';
10
- import { LoadingStatus } from '../LoadingStatus';
11
- import styles from './styles.module.css';
12
- export function FileItem({ item: initItem }) {
13
- var _a, _b, _c;
14
- const [item, setItem] = useState(initItem);
15
- const showLink = item.status === 'uploaded' && item.link;
16
- useEffect(() => {
17
- if (initItem.subscribeToState) {
18
- return initItem.subscribeToState(newValue => setItem(prev => (Object.assign(Object.assign({}, prev), newValue))));
19
- }
20
- return setItem(initItem);
21
- }, [initItem]);
22
- return (_jsxs("div", { className: styles.fileLine, "data-test-id": TOAST_UPLOAD_TEST_IDS.uploadItem, children: [_jsxs("div", { className: styles.fileHeadLine, children: [_jsx("span", { className: styles.fileTitle, children: item.title }), showLink && (_jsx(Link, { text: (_a = item.link) === null || _a === void 0 ? void 0 : _a.text, href: (_b = item.link) === null || _b === void 0 ? void 0 : _b.href, size: 'm', truncateVariant: 'end', onClick: (_c = item.link) === null || _c === void 0 ? void 0 : _c.onClick, appearance: 'invert-neutral', textMode: 'accent', "data-test-id": TOAST_UPLOAD_TEST_IDS.uploadItemLink })), !showLink && (_jsx(ButtonIcon, { onClick: item.actions.onCancel, "data-test-id": TOAST_UPLOAD_TEST_IDS.uploadItemCancel, children: _jsx(CrossSVG, {}) }))] }), _jsx(ProgressBar, { progress: item.progress, size: 'xs', appearance: progressBarAppearanceByStatus[item.status] }), _jsxs("div", { className: styles.fileStatusLine, children: [_jsxs("div", { className: styles.fileStatusWrap, children: [_jsx(LoadingStatus, { status: item.status, actions: item.actions }), _jsx("span", { className: styles.fileStatusDescription, "data-status": item.status, children: item.statusLabel })] }), _jsx("span", { className: styles.fileSize, "data-status": item.status, children: item.size }), _jsx("span", { className: styles.fileStatusPercentage, "data-status": item.status, children: formatPercent(item.progress) })] })] }, item.id));
23
- }
@@ -1 +0,0 @@
1
- export * from './FileItem';
@@ -1 +0,0 @@
1
- export * from './FileItem';
@@ -1,85 +0,0 @@
1
- .fileLine{
2
- padding-top:var(--space-toaster-toast-upload-file-line-vertical-padding, 4px);
3
- padding-bottom:var(--space-toaster-toast-upload-file-line-vertical-padding, 4px);
4
- display:flex;
5
- flex-direction:column;
6
- }
7
-
8
- .fileHeadLine{
9
- gap:var(--space-toaster-toast-upload-headline-gap, 16px);
10
- min-height:var(--size-toaster-toast-upload-file-line-headline-height, 24px);
11
- display:flex;
12
- align-items:center;
13
- }
14
-
15
- .fileTitle{
16
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
17
- font-weight:var(--sans-body-s-font-weight, Regular);
18
- line-height:var(--sans-body-s-line-height, 16px);
19
- font-size:var(--sans-body-s-font-size, 12px);
20
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
21
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
22
- flex-grow:1;
23
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
24
- }
25
-
26
- .fileStatusLine{
27
- gap:var(--space-toaster-toast-upload-status-line-gap, 8px);
28
- display:flex;
29
- align-items:center;
30
- }
31
-
32
- .fileStatusWrap{
33
- gap:var(--space-toaster-toast-upload-status-wrap-gap, 4px);
34
- display:flex;
35
- flex-grow:1;
36
- align-items:center;
37
- }
38
-
39
- .fileStatusDescription{
40
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
41
- font-weight:var(--sans-body-s-font-weight, Regular);
42
- line-height:var(--sans-body-s-line-height, 16px);
43
- font-size:var(--sans-body-s-font-size, 12px);
44
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
45
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
46
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
47
- }
48
- .fileStatusDescription[data-status=loading]{
49
- color:var(--sys-invert-neutral-text-disabled, #656774);
50
- }
51
- .fileStatusDescription[data-status=uploaded]{
52
- color:var(--sys-invert-neutral-text-disabled, #656774);
53
- }
54
-
55
- .fileSize{
56
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
57
- font-weight:var(--sans-body-s-font-weight, Regular);
58
- line-height:var(--sans-body-s-line-height, 16px);
59
- font-size:var(--sans-body-s-font-size, 12px);
60
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
61
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
62
- color:var(--sys-invert-neutral-text-disabled, #656774);
63
- }
64
- .fileSize[data-status=loading]{
65
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
66
- }
67
- .fileSize[data-status=uploaded]{
68
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
69
- }
70
-
71
- .fileStatusPercentage{
72
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
73
- font-weight:var(--sans-body-s-font-weight, Regular);
74
- line-height:var(--sans-body-s-line-height, 16px);
75
- font-size:var(--sans-body-s-font-size, 12px);
76
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
77
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
78
- color:var(--sys-invert-neutral-text-disabled, #656774);
79
- }
80
- .fileStatusPercentage[data-status=loading]{
81
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
82
- }
83
- .fileStatusPercentage[data-status=uploaded]{
84
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
85
- }
@@ -1,6 +0,0 @@
1
- import { ToastUploadStatus, UploadActions } from '../../types';
2
- export type LoadingStatusProps = {
3
- status: ToastUploadStatus;
4
- actions: UploadActions;
5
- };
6
- export declare function LoadingStatus({ status, actions }: LoadingStatusProps): import("react/jsx-runtime").JSX.Element;
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { CheckFilledSVG, PauseSVG, PlaySVG, UpdateSVG } from '@snack-uikit/icons';
3
- import { ButtonIcon } from '../ButtonIcon';
4
- import styles from './styles.module.css';
5
- export function LoadingStatus({ status, actions }) {
6
- if (status === 'loading') {
7
- return (_jsx(ButtonIcon, { onClick: actions.onPause, children: _jsx(PauseSVG, {}) }));
8
- }
9
- if (status === 'pause') {
10
- return (_jsx(ButtonIcon, { onClick: actions.onContinue, children: _jsx(PlaySVG, {}) }));
11
- }
12
- if (status === 'uploaded') {
13
- return _jsx(CheckFilledSVG, { className: styles.successIcon });
14
- }
15
- return (_jsx(ButtonIcon, { onClick: actions.onRetry, children: _jsx(UpdateSVG, {}) }));
16
- }
@@ -1 +0,0 @@
1
- export * from './LoadingStatus';
@@ -1 +0,0 @@
1
- export * from './LoadingStatus';
@@ -1,3 +0,0 @@
1
- .successIcon{
2
- color:var(--sys-green-accent-default, #57b762);
3
- }
@@ -1 +0,0 @@
1
- export * from './ToastUpload';
@@ -1 +0,0 @@
1
- export * from './ToastUpload';
@@ -1,110 +0,0 @@
1
- .container{
2
- padding:var(--space-toaster-toast-system-event-container-padding, 16px);
3
- border-radius:var(--radius-toaster-toast-system-event-container, 16px);
4
- gap:var(--space-toaster-toast-system-event-container-gap, 16px);
5
- cursor:default;
6
- position:relative;
7
- overflow:hidden;
8
- display:flex;
9
- flex-direction:column;
10
- box-sizing:border-box;
11
- width:calc(var(--size-toaster-toast-system-event-container, 320px) - 2 * var(--space-toaster-toast-system-event-container-padding, 16px));
12
- max-width:100%;
13
- max-height:386px;
14
- padding:var(--space-toaster-toast-system-event-container-padding, 16px) 0;
15
- background-color:var(--sys-invert-neutral-background, #30303c);
16
- }
17
- .container[data-collapsed=false]{
18
- gap:0;
19
- }
20
-
21
- .titleLine{
22
- display:flex;
23
- flex-direction:column;
24
- padding:0 var(--space-toaster-toast-system-event-container-padding, 16px);
25
- }
26
-
27
- .titleLineBody{
28
- gap:var(--space-toaster-toast-upload-body-gap, 16px);
29
- display:flex;
30
- align-items:center;
31
- }
32
-
33
- .title{
34
- font-family:var(--sans-title-s-font-family, SB Sans Interface);
35
- font-weight:var(--sans-title-s-font-weight, Semibold);
36
- line-height:var(--sans-title-s-line-height, 20px);
37
- font-size:var(--sans-title-s-font-size, 14px);
38
- letter-spacing:var(--sans-title-s-letter-spacing, 0.15px);
39
- paragraph-spacing:var(--sans-title-s-paragraph-spacing, 7.7px);
40
- flex-grow:1;
41
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
42
- }
43
-
44
- .generalProgress{
45
- gap:var(--space-toaster-toast-upload-general-progress-gap, 4px);
46
- display:flex;
47
- flex-direction:column;
48
- align-self:stretch;
49
- }
50
-
51
- .statusLine{
52
- gap:var(--space-toaster-toast-upload-status-line-gap, 8px);
53
- display:flex;
54
- align-items:center;
55
- }
56
-
57
- .statusWrap{
58
- gap:var(--space-toaster-toast-upload-status-wrap-gap, 4px);
59
- display:flex;
60
- flex-grow:1;
61
- align-items:center;
62
- }
63
-
64
- .description{
65
- font-family:var(--sans-body-m-font-family, SB Sans Interface);
66
- font-weight:var(--sans-body-m-font-weight, Regular);
67
- line-height:var(--sans-body-m-line-height, 20px);
68
- font-size:var(--sans-body-m-font-size, 14px);
69
- letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
70
- paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
71
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
72
- }
73
- .description[data-status=loading]{
74
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
75
- }
76
- .description[data-status=uploaded]{
77
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
78
- }
79
-
80
- .totalCounter{
81
- font-family:var(--sans-body-m-font-family, SB Sans Interface);
82
- font-weight:var(--sans-body-m-font-weight, Regular);
83
- line-height:var(--sans-body-m-line-height, 20px);
84
- font-size:var(--sans-body-m-font-size, 14px);
85
- letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
86
- paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
87
- color:var(--sys-invert-neutral-text-support, #bec2cf);
88
- }
89
-
90
- .totalPercentage{
91
- font-family:var(--sans-body-m-font-family, SB Sans Interface);
92
- font-weight:var(--sans-body-m-font-weight, Regular);
93
- line-height:var(--sans-body-m-line-height, 20px);
94
- font-size:var(--sans-body-m-font-size, 14px);
95
- letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
96
- paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
97
- color:var(--sys-invert-neutral-text-support, #bec2cf);
98
- }
99
-
100
- .list{
101
- overflow:scroll;
102
- display:flex;
103
- flex-direction:column;
104
- max-height:280px;
105
- padding:0 var(--space-toaster-toast-system-event-container-padding, 16px);
106
- transition:all 0.1s;
107
- }
108
- .list[data-collapsed=false]{
109
- max-height:0;
110
- }