@snack-uikit/toaster 0.8.19-preview-27ae78ba.0 → 0.8.19

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 (124) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +37 -74
  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 +4 -2
  8. package/dist/cjs/constants.js +2 -10
  9. package/dist/cjs/helperComponents/ButtonAction/styles.module.css +2 -2
  10. package/dist/cjs/helpers.d.ts +0 -4
  11. package/dist/cjs/helpers.js +1 -42
  12. package/dist/cjs/index.d.ts +2 -2
  13. package/dist/cjs/index.js +0 -20
  14. package/dist/cjs/testIds.d.ts +0 -14
  15. package/dist/cjs/testIds.js +1 -16
  16. package/dist/cjs/types.d.ts +1 -9
  17. package/dist/esm/components/ToastSystemEvent/styles.module.css +3 -2
  18. package/dist/esm/components/ToasterContainer/styles.module.css +9 -9
  19. package/dist/esm/components/index.d.ts +0 -1
  20. package/dist/esm/components/index.js +0 -1
  21. package/dist/esm/constants.d.ts +4 -2
  22. package/dist/esm/constants.js +0 -8
  23. package/dist/esm/helperComponents/ButtonAction/styles.module.css +2 -2
  24. package/dist/esm/helpers.d.ts +0 -4
  25. package/dist/esm/helpers.js +1 -42
  26. package/dist/esm/index.d.ts +2 -2
  27. package/dist/esm/index.js +0 -1
  28. package/dist/esm/testIds.d.ts +0 -14
  29. package/dist/esm/testIds.js +0 -15
  30. package/dist/esm/types.d.ts +1 -9
  31. package/package.json +6 -10
  32. package/src/components/ToastSystemEvent/styles.module.scss +2 -2
  33. package/src/components/ToasterContainer/styles.module.scss +1 -1
  34. package/src/components/index.ts +0 -1
  35. package/src/constants.ts +1 -9
  36. package/src/helpers.tsx +0 -38
  37. package/src/index.ts +10 -2
  38. package/src/testIds.ts +0 -17
  39. package/src/types.ts +1 -7
  40. package/dist/cjs/components/ToastUpload/ToastUpload.d.ts +0 -59
  41. package/dist/cjs/components/ToastUpload/ToastUpload.js +0 -132
  42. package/dist/cjs/components/ToastUpload/constants.d.ts +0 -16
  43. package/dist/cjs/components/ToastUpload/constants.js +0 -26
  44. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.d.ts +0 -3
  45. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.js +0 -32
  46. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.d.ts +0 -1
  47. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/index.js +0 -25
  48. package/dist/cjs/components/ToastUpload/helperComponents/ButtonIcon/styles.module.css +0 -32
  49. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
  50. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -28
  51. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
  52. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/index.js +0 -25
  53. package/dist/cjs/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.css +0 -33
  54. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +0 -5
  55. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/FileItem.js +0 -90
  56. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.d.ts +0 -1
  57. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/index.js +0 -25
  58. package/dist/cjs/components/ToastUpload/helperComponents/FileItem/styles.module.css +0 -87
  59. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +0 -7
  60. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +0 -43
  61. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +0 -1
  62. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/index.js +0 -25
  63. package/dist/cjs/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +0 -3
  64. package/dist/cjs/components/ToastUpload/index.d.ts +0 -1
  65. package/dist/cjs/components/ToastUpload/index.js +0 -25
  66. package/dist/cjs/components/ToastUpload/styles.module.css +0 -111
  67. package/dist/cjs/components/ToastUpload/types.d.ts +0 -55
  68. package/dist/cjs/components/ToastUpload/types.js +0 -5
  69. package/dist/cjs/components/ToastUpload/utils/formatPercent.d.ts +0 -1
  70. package/dist/cjs/components/ToastUpload/utils/formatPercent.js +0 -8
  71. package/dist/cjs/components/ToastUpload/utils/index.d.ts +0 -1
  72. package/dist/cjs/components/ToastUpload/utils/index.js +0 -25
  73. package/dist/esm/components/ToastUpload/ToastUpload.d.ts +0 -59
  74. package/dist/esm/components/ToastUpload/ToastUpload.js +0 -45
  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 -32
  82. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
  83. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -5
  84. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
  85. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/index.js +0 -1
  86. package/dist/esm/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.css +0 -33
  87. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.d.ts +0 -5
  88. package/dist/esm/components/ToastUpload/helperComponents/FileItem/FileItem.js +0 -26
  89. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.d.ts +0 -1
  90. package/dist/esm/components/ToastUpload/helperComponents/FileItem/index.js +0 -1
  91. package/dist/esm/components/ToastUpload/helperComponents/FileItem/styles.module.css +0 -87
  92. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.d.ts +0 -7
  93. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.js +0 -16
  94. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.d.ts +0 -1
  95. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/index.js +0 -1
  96. package/dist/esm/components/ToastUpload/helperComponents/LoadingStatus/styles.module.css +0 -3
  97. package/dist/esm/components/ToastUpload/index.d.ts +0 -1
  98. package/dist/esm/components/ToastUpload/index.js +0 -1
  99. package/dist/esm/components/ToastUpload/styles.module.css +0 -111
  100. package/dist/esm/components/ToastUpload/types.d.ts +0 -55
  101. package/dist/esm/components/ToastUpload/types.js +0 -1
  102. package/dist/esm/components/ToastUpload/utils/formatPercent.d.ts +0 -1
  103. package/dist/esm/components/ToastUpload/utils/formatPercent.js +0 -1
  104. package/dist/esm/components/ToastUpload/utils/index.d.ts +0 -1
  105. package/dist/esm/components/ToastUpload/utils/index.js +0 -1
  106. package/src/components/ToastUpload/ToastUpload.tsx +0 -182
  107. package/src/components/ToastUpload/constants.ts +0 -26
  108. package/src/components/ToastUpload/helperComponents/ButtonIcon/ButtonIcon.tsx +0 -10
  109. package/src/components/ToastUpload/helperComponents/ButtonIcon/index.ts +0 -1
  110. package/src/components/ToastUpload/helperComponents/ButtonIcon/styles.module.scss +0 -43
  111. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/ButtonTextNeutral.tsx +0 -23
  112. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/index.ts +0 -1
  113. package/src/components/ToastUpload/helperComponents/ButtonTextNeutral/styles.module.scss +0 -38
  114. package/src/components/ToastUpload/helperComponents/FileItem/FileItem.tsx +0 -87
  115. package/src/components/ToastUpload/helperComponents/FileItem/index.ts +0 -1
  116. package/src/components/ToastUpload/helperComponents/FileItem/styles.module.scss +0 -91
  117. package/src/components/ToastUpload/helperComponents/LoadingStatus/LoadingStatus.tsx +0 -39
  118. package/src/components/ToastUpload/helperComponents/LoadingStatus/index.ts +0 -1
  119. package/src/components/ToastUpload/helperComponents/LoadingStatus/styles.module.scss +0 -5
  120. package/src/components/ToastUpload/index.ts +0 -1
  121. package/src/components/ToastUpload/styles.module.scss +0 -121
  122. package/src/components/ToastUpload/types.ts +0 -62
  123. package/src/components/ToastUpload/utils/formatPercent.ts +0 -1
  124. package/src/components/ToastUpload/utils/index.ts +0 -1
@@ -1,55 +0,0 @@
1
- import { LinkProps } from '@snack-uikit/link';
2
- import { ProgressBarProps } from '@snack-uikit/progress-bar';
3
- import { ValueOf } from '@snack-uikit/utils';
4
- import { TOAST_UPLOAD_ITEM_STATUS, TOAST_UPLOAD_STATUS } from './constants';
5
- export type ToastUploadStatus = ValueOf<typeof TOAST_UPLOAD_STATUS>;
6
- export type ToastUploadItemStatus = ValueOf<typeof TOAST_UPLOAD_ITEM_STATUS>;
7
- export type ToastUploadStateSubscription<T> = (subscription: (newValue: T) => void) => () => void;
8
- export type WithStateSubscription<T> = {
9
- /**Позволяет подписываться на изменения процесса загрузки файла внутри конпонента,
10
- * тем самым обновляет элементы не зависимо от всего списка
11
- * (можно использовать для улучшения производительности из-за частых обновлений)
12
- */
13
- subscribeToState?: ToastUploadStateSubscription<Partial<T>>;
14
- } & T;
15
- export type ToastUploadItemLink = Pick<LinkProps, 'target' | 'href' | 'onClick' | 'text'>;
16
- export type UploadActions = {
17
- onCancel?: () => void;
18
- onPause?: () => void;
19
- onRetry?: () => void;
20
- onContinue?: () => void;
21
- };
22
- export type UploadItem = WithStateSubscription<{
23
- /**
24
- * Уникальный id элемента
25
- */
26
- id?: string;
27
- /**
28
- * Название элемента
29
- */
30
- title: string;
31
- /**
32
- * Статус загрузки
33
- */
34
- status: ToastUploadItemStatus;
35
- /**
36
- * Описание статуса загрузки
37
- */
38
- statusLabel: string;
39
- /**
40
- * Процент прогресса
41
- */
42
- progress: ProgressBarProps['progress'];
43
- /**
44
- * Отображаемый размер файла
45
- */
46
- formattedSize: string;
47
- /**
48
- * Экшены для управления загрузкой
49
- */
50
- actions: UploadActions;
51
- /**
52
- * Ссылка на файл
53
- */
54
- link?: ToastUploadItemLink;
55
- }>;
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1 +0,0 @@
1
- export declare const formatPercent: (value: number) => string;
@@ -1,8 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.formatPercent = void 0;
7
- const formatPercent = value => `${value}%`;
8
- exports.formatPercent = formatPercent;
@@ -1 +0,0 @@
1
- export * from './formatPercent';
@@ -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,59 +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
- progress: {
23
- current: number;
24
- total: number;
25
- };
26
- /**
27
- * Закрыть тостер
28
- */
29
- onCloseClick?(e: MouseEvent<HTMLButtonElement>, close?: () => void): void;
30
- /**
31
- * Показывать кнопку закрытия тостера
32
- */
33
- closable?: boolean;
34
- /**
35
- * CSS-класс контейнера
36
- */
37
- className?: string;
38
- /**
39
- * Загружаемые элементы
40
- */
41
- files: UploadItem[];
42
- /**
43
- * Тостер свернут/развернут
44
- */
45
- collapsed?: boolean;
46
- /**
47
- * Развернуть/свернуть тостер
48
- */
49
- onCollapsed?: (collapsed: boolean) => void;
50
- /**
51
- * Экшены для управления загрузкой
52
- */
53
- generalActions: Omit<UploadActions, 'onCancel'>;
54
- /**
55
- * Отмена всей загрузки
56
- */
57
- cancelButton?: ButtonTextNeutralProps;
58
- }>;
59
- export declare function ToastUpload({ status, title, description, closeToast, onCloseClick, closable, className, files, collapsed, onCollapsed, generalActions, cancelButton, progress, ...rest }: ToastUploadProps): import("react/jsx-runtime").JSX.Element;
@@ -1,45 +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 { useUncontrolledProp } from 'uncontrollable';
15
- import { ChevronDownSVG, ChevronUpSVG, CrossSVG } from '@snack-uikit/icons';
16
- import { useLocale } from '@snack-uikit/locale';
17
- import { ProgressBar } from '@snack-uikit/progress-bar';
18
- import { Scroll } from '@snack-uikit/scroll';
19
- import { TruncateString } from '@snack-uikit/truncate-string';
20
- import { extractSupportProps } from '@snack-uikit/utils';
21
- import { TOAST_UPLOAD_TEST_IDS } from '../../testIds';
22
- import { progressBarAppearanceByStatus } from './constants';
23
- import { ButtonIcon } from './helperComponents/ButtonIcon';
24
- import { ButtonTextNeutral } from './helperComponents/ButtonTextNeutral';
25
- import { FileItem } from './helperComponents/FileItem';
26
- import { LoadingStatus } from './helperComponents/LoadingStatus';
27
- import styles from './styles.module.css';
28
- import { formatPercent } from './utils';
29
- export function ToastUpload(_a) {
30
- var { status, title, description, closeToast, onCloseClick, closable, className, files, collapsed, onCollapsed, generalActions, cancelButton, progress } = _a, rest = __rest(_a, ["status", "title", "description", "closeToast", "onCloseClick", "closable", "className", "files", "collapsed", "onCollapsed", "generalActions", "cancelButton", "progress"]);
31
- const [isCollapsed, setIsCollapsed] = useUncontrolledProp(collapsed, false, onCollapsed);
32
- const { t } = useLocale('ToastUpload');
33
- const showingTitle = title || t(`title.${status}`);
34
- const handleCloseClick = (e) => {
35
- e.stopPropagation();
36
- onCloseClick ? onCloseClick(e, closeToast) : closeToast === null || closeToast === void 0 ? void 0 : closeToast();
37
- };
38
- const handleCollapseClick = (e) => {
39
- e.stopPropagation();
40
- setIsCollapsed(!isCollapsed);
41
- };
42
- const progressPercent = Math.round((progress.current / progress.total) * 100);
43
- const isErrorUploaded = status === 'errorUploaded';
44
- return (_jsxs("div", Object.assign({ className: cn(styles.container, className) }, extractSupportProps(rest), { "data-collapsed": isCollapsed || undefined, 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: showingTitle }), cancelButton && _jsx(ButtonTextNeutral, Object.assign({}, cancelButton)), _jsx(ButtonIcon, { onClick: handleCollapseClick, "data-test-id": TOAST_UPLOAD_TEST_IDS.collapseButton, children: !isCollapsed ? _jsx(ChevronUpSVG, {}) : _jsx(ChevronDownSVG, {}) }), closable && (_jsx(ButtonIcon, { 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(TruncateString, { className: styles.description, "data-status": status, text: description, "data-test-id": TOAST_UPLOAD_TEST_IDS.description })] }), _jsx("span", { className: styles.totalCounter, "data-test-id": TOAST_UPLOAD_TEST_IDS.counter, children: `${progress.current}/${progress.total}` }), _jsx("span", { className: styles.totalPercentage, "data-test-id": TOAST_UPLOAD_TEST_IDS.progress, children: formatPercent(isErrorUploaded ? 0 : progressPercent) })] }), isCollapsed && (_jsx(ProgressBar, { progress: isErrorUploaded ? 100 : progressPercent, size: 'xs', appearance: progressBarAppearanceByStatus[status], "data-test-id": TOAST_UPLOAD_TEST_IDS.progressBar }))] })] }), _jsx(Scroll, { className: styles.list, size: 's', "data-test-id": TOAST_UPLOAD_TEST_IDS.list, barHideStrategy: 'never', children: files.map(item => (_jsx(FileItem, { item: item }, item.id || item.title))) })] })));
45
- }
@@ -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,32 +0,0 @@
1
- .buttonIcon{
2
- border-radius:var(--radius-toaster-toast-system-event-button, 8px);
3
- height:var(--size-toaster-toast-system-event-button-neutral, 24px);
4
- cursor:pointer;
5
- display:flex;
6
- align-items:center;
7
- justify-content:center;
8
- box-sizing:border-box;
9
- margin:0;
10
- padding:0;
11
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
12
- background-color:transparent;
13
- border:none;
14
- }
15
- .buttonIcon svg{
16
- width:var(--size-icon-container-s, 24px) !important;
17
- height:var(--size-icon-container-s, 24px) !important;
18
- }
19
- .buttonIcon:hover{
20
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
21
- }
22
- .buttonIcon:active{
23
- color:var(--sys-invert-neutral-accent-pressed, #aaaebd);
24
- }
25
- .buttonIcon: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,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,5 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import styles from './styles.module.css';
3
- export function ButtonTextNeutral({ label, onClick, critical }) {
4
- return (_jsx("button", { type: 'button', className: styles.buttonTextNeutral, onClick: onClick, "aria-label": 'action', "data-critical": critical || undefined, children: label }));
5
- }
@@ -1 +0,0 @@
1
- export * from './ButtonTextNeutral';
@@ -1 +0,0 @@
1
- export * from './ButtonTextNeutral';
@@ -1,33 +0,0 @@
1
- .buttonTextNeutral{
2
- border-radius:var(--radius-toaster-toast-system-event-button, 8px);
3
- height:var(--size-toaster-toast-system-event-button-neutral, 24px);
4
- font-family:var(--sans-body-m-font-family, SB Sans Interface);
5
- font-weight:var(--sans-body-m-font-weight, Regular);
6
- line-height:var(--sans-body-m-line-height, 20px);
7
- font-size:var(--sans-body-m-font-size, 14px);
8
- letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
9
- paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
10
- cursor:pointer;
11
- display:flex;
12
- align-items:center;
13
- justify-content:center;
14
- box-sizing:border-box;
15
- margin:0;
16
- padding:0;
17
- color:var(--sys-invert-neutral-text-light, #8b8e9b);
18
- background-color:transparent;
19
- border:none;
20
- }
21
- .buttonTextNeutral:hover{
22
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
23
- }
24
- .buttonTextNeutral:active{
25
- color:var(--sys-invert-neutral-accent-pressed, #aaaebd);
26
- }
27
- .buttonTextNeutral:focus-visible{
28
- outline-width:var(--border-state-focus-s-border-width, 2px);
29
- outline-style:var(--border-state-focus-s-border-style, solid);
30
- outline-color:var(--border-state-focus-s-border-color, );
31
- outline-color:var(--sys-available-on-complementary, #ffffff);
32
- outline-offset:var(--spacing-state-focus-offset, 2px);
33
- }
@@ -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,26 +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 { TruncateString } from '@snack-uikit/truncate-string';
7
- import { TOAST_UPLOAD_TEST_IDS } from '../../../../testIds';
8
- import { progressBarAppearanceByStatus } from '../../constants';
9
- import { formatPercent } from '../../utils';
10
- import { ButtonIcon } from '../ButtonIcon';
11
- import { LoadingStatus } from '../LoadingStatus';
12
- import styles from './styles.module.css';
13
- export function FileItem({ item: initItem }) {
14
- var _a, _b, _c;
15
- const [item, setItem] = useState(initItem);
16
- const showLink = item.status === 'uploaded' && item.link;
17
- const showCancelButton = !showLink;
18
- useEffect(() => {
19
- if (initItem.subscribeToState) {
20
- initItem.subscribeToState(newValue => setItem(prev => (Object.assign(Object.assign({}, prev), newValue))));
21
- }
22
- return setItem(initItem);
23
- }, [initItem]);
24
- const isError = item.status === 'error';
25
- return (_jsxs("div", { className: styles.fileLine, "data-test-id": TOAST_UPLOAD_TEST_IDS.uploadItem, children: [_jsxs("div", { className: styles.fileHeadLine, children: [_jsx(TruncateString, { text: item.title, className: styles.fileTitle, maxLines: 1 }), 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: 's', 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 })), showCancelButton && (_jsx(ButtonIcon, { onClick: item.actions.onCancel, "data-test-id": TOAST_UPLOAD_TEST_IDS.uploadItemCancel, children: _jsx(CrossSVG, {}) }))] }), _jsx(ProgressBar, { progress: isError ? 100 : 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, isFileItem: true }), _jsx(TruncateString, { className: styles.fileStatusDescription, "data-status": item.status, text: 'dfkkdfma;slkdfmna;lksdmf;laksmdf;lkams' })] }), _jsx("span", { className: styles.fileSize, "data-status": item.status, children: item.formattedSize }), _jsx("span", { className: styles.fileStatusPercentage, "data-status": item.status, children: formatPercent(isError ? 0 : item.progress) })] })] }));
26
- }
@@ -1 +0,0 @@
1
- export * from './FileItem';
@@ -1 +0,0 @@
1
- export * from './FileItem';
@@ -1,87 +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
- overflow:hidden;
35
- display:flex;
36
- flex-grow:1;
37
- align-items:center;
38
- }
39
-
40
- .fileStatusDescription{
41
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
42
- font-weight:var(--sans-body-s-font-weight, Regular);
43
- line-height:var(--sans-body-s-line-height, 16px);
44
- font-size:var(--sans-body-s-font-size, 12px);
45
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
46
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
47
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
48
- }
49
- .fileStatusDescription[data-status=loading]{
50
- color:var(--sys-invert-neutral-text-disabled, #656774);
51
- }
52
- .fileStatusDescription[data-status=uploaded]{
53
- color:var(--sys-invert-neutral-text-disabled, #656774);
54
- }
55
-
56
- .fileSize{
57
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
58
- font-weight:var(--sans-body-s-font-weight, Regular);
59
- line-height:var(--sans-body-s-line-height, 16px);
60
- font-size:var(--sans-body-s-font-size, 12px);
61
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
62
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
63
- color:var(--sys-invert-neutral-text-disabled, #656774);
64
- text-wrap:nowrap;
65
- }
66
- .fileSize[data-status=loading]{
67
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
68
- }
69
- .fileSize[data-status=uploaded]{
70
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
71
- }
72
-
73
- .fileStatusPercentage{
74
- font-family:var(--sans-body-s-font-family, SB Sans Interface);
75
- font-weight:var(--sans-body-s-font-weight, Regular);
76
- line-height:var(--sans-body-s-line-height, 16px);
77
- font-size:var(--sans-body-s-font-size, 12px);
78
- letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
79
- paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
80
- color:var(--sys-invert-neutral-text-disabled, #656774);
81
- }
82
- .fileStatusPercentage[data-status=loading]{
83
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
84
- }
85
- .fileStatusPercentage[data-status=uploaded]{
86
- color:var(--sys-invert-neutral-text-main, #e6e8ef);
87
- }
@@ -1,7 +0,0 @@
1
- import { ToastUploadStatus, UploadActions } from '../../types';
2
- export type LoadingStatusProps = {
3
- status: ToastUploadStatus;
4
- actions: UploadActions;
5
- isFileItem?: boolean;
6
- };
7
- export declare function LoadingStatus({ status, actions, isFileItem }: 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, isFileItem }) {
6
- if (status === 'loading' || (status === 'error' && !isFileItem)) {
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';