@snack-uikit/toaster 0.8.14-preview-abb5f7dc.0 → 0.8.14
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.
- package/CHANGELOG.md +13 -0
- package/README.md +3 -37
- package/dist/cjs/components/ToastSystemEvent/styles.module.css +3 -2
- package/dist/cjs/components/ToasterContainer/styles.module.css +9 -9
- package/dist/cjs/components/index.d.ts +0 -1
- package/dist/cjs/components/index.js +1 -2
- package/dist/cjs/constants.d.ts +4 -2
- package/dist/cjs/constants.js +2 -10
- package/dist/cjs/helperComponents/ButtonAction/styles.module.css +2 -2
- package/dist/cjs/helpers.js +1 -41
- package/dist/cjs/types.d.ts +1 -9
- package/dist/esm/components/ToastSystemEvent/styles.module.css +3 -2
- package/dist/esm/components/ToasterContainer/styles.module.css +9 -9
- package/dist/esm/components/index.d.ts +0 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/constants.d.ts +4 -2
- package/dist/esm/constants.js +0 -8
- package/dist/esm/helperComponents/ButtonAction/styles.module.css +2 -2
- package/dist/esm/helpers.js +0 -38
- package/dist/esm/types.d.ts +1 -9
- package/package.json +7 -8
- package/src/components/ToastSystemEvent/styles.module.scss +2 -2
- package/src/components/ToasterContainer/styles.module.scss +1 -1
- package/src/components/index.ts +0 -1
- package/src/constants.ts +1 -9
- package/src/helpers.tsx +0 -35
- package/src/types.ts +1 -7
- package/dist/cjs/components/ToastUpload/ToastUpload.d.ts +0 -21
- package/dist/cjs/components/ToastUpload/ToastUpload.js +0 -113
- package/dist/cjs/components/ToastUpload/ToastUploadToaster.d.ts +0 -3
- package/dist/cjs/components/ToastUpload/ToastUploadToaster.js +0 -16
- package/dist/cjs/components/ToastUpload/components/ButtonIcon/ButtonIcon.d.ts +0 -3
- package/dist/cjs/components/ToastUpload/components/ButtonIcon/ButtonIcon.js +0 -32
- package/dist/cjs/components/ToastUpload/components/ButtonIcon/index.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/components/ButtonIcon/index.js +0 -25
- package/dist/cjs/components/ToastUpload/components/ButtonIcon/styles.module.css +0 -30
- package/dist/cjs/components/ToastUpload/components/FileItem/FileItem.d.ts +0 -5
- package/dist/cjs/components/ToastUpload/components/FileItem/FileItem.js +0 -81
- package/dist/cjs/components/ToastUpload/components/FileItem/index.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/components/FileItem/index.js +0 -25
- package/dist/cjs/components/ToastUpload/components/FileItem/styles.module.css +0 -85
- package/dist/cjs/components/ToastUpload/components/LoadingStatus/LoadingStatus.d.ts +0 -6
- package/dist/cjs/components/ToastUpload/components/LoadingStatus/LoadingStatus.js +0 -42
- package/dist/cjs/components/ToastUpload/components/LoadingStatus/index.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/components/LoadingStatus/index.js +0 -25
- package/dist/cjs/components/ToastUpload/components/LoadingStatus/styles.module.css +0 -3
- package/dist/cjs/components/ToastUpload/constants.d.ts +0 -16
- package/dist/cjs/components/ToastUpload/constants.js +0 -26
- package/dist/cjs/components/ToastUpload/index.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/index.js +0 -25
- package/dist/cjs/components/ToastUpload/styles.module.css +0 -110
- package/dist/cjs/components/ToastUpload/types.d.ts +0 -31
- package/dist/cjs/components/ToastUpload/types.js +0 -5
- package/dist/cjs/components/ToastUpload/utils/formatPercent.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/utils/formatPercent.js +0 -8
- package/dist/cjs/components/ToastUpload/utils/index.d.ts +0 -1
- package/dist/cjs/components/ToastUpload/utils/index.js +0 -25
- package/dist/cjs/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
- package/dist/cjs/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -28
- package/dist/cjs/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
- package/dist/cjs/helperComponents/ButtonTextNeutral/index.js +0 -25
- package/dist/cjs/helperComponents/ButtonTextNeutral/styles.module.css +0 -32
- package/dist/esm/components/ToastUpload/ToastUpload.d.ts +0 -21
- package/dist/esm/components/ToastUpload/ToastUpload.js +0 -35
- package/dist/esm/components/ToastUpload/ToastUploadToaster.d.ts +0 -3
- package/dist/esm/components/ToastUpload/ToastUploadToaster.js +0 -7
- package/dist/esm/components/ToastUpload/components/ButtonIcon/ButtonIcon.d.ts +0 -3
- package/dist/esm/components/ToastUpload/components/ButtonIcon/ButtonIcon.js +0 -18
- package/dist/esm/components/ToastUpload/components/ButtonIcon/index.d.ts +0 -1
- package/dist/esm/components/ToastUpload/components/ButtonIcon/index.js +0 -1
- package/dist/esm/components/ToastUpload/components/ButtonIcon/styles.module.css +0 -30
- package/dist/esm/components/ToastUpload/components/FileItem/FileItem.d.ts +0 -5
- package/dist/esm/components/ToastUpload/components/FileItem/FileItem.js +0 -22
- package/dist/esm/components/ToastUpload/components/FileItem/index.d.ts +0 -1
- package/dist/esm/components/ToastUpload/components/FileItem/index.js +0 -1
- package/dist/esm/components/ToastUpload/components/FileItem/styles.module.css +0 -85
- package/dist/esm/components/ToastUpload/components/LoadingStatus/LoadingStatus.d.ts +0 -6
- package/dist/esm/components/ToastUpload/components/LoadingStatus/LoadingStatus.js +0 -16
- package/dist/esm/components/ToastUpload/components/LoadingStatus/index.d.ts +0 -1
- package/dist/esm/components/ToastUpload/components/LoadingStatus/index.js +0 -1
- package/dist/esm/components/ToastUpload/components/LoadingStatus/styles.module.css +0 -3
- package/dist/esm/components/ToastUpload/constants.d.ts +0 -16
- package/dist/esm/components/ToastUpload/constants.js +0 -20
- package/dist/esm/components/ToastUpload/index.d.ts +0 -1
- package/dist/esm/components/ToastUpload/index.js +0 -1
- package/dist/esm/components/ToastUpload/styles.module.css +0 -110
- package/dist/esm/components/ToastUpload/types.d.ts +0 -31
- package/dist/esm/components/ToastUpload/types.js +0 -1
- package/dist/esm/components/ToastUpload/utils/formatPercent.d.ts +0 -1
- package/dist/esm/components/ToastUpload/utils/formatPercent.js +0 -1
- package/dist/esm/components/ToastUpload/utils/index.d.ts +0 -1
- package/dist/esm/components/ToastUpload/utils/index.js +0 -1
- package/dist/esm/helperComponents/ButtonTextNeutral/ButtonTextNeutral.d.ts +0 -7
- package/dist/esm/helperComponents/ButtonTextNeutral/ButtonTextNeutral.js +0 -5
- package/dist/esm/helperComponents/ButtonTextNeutral/index.d.ts +0 -1
- package/dist/esm/helperComponents/ButtonTextNeutral/index.js +0 -1
- package/dist/esm/helperComponents/ButtonTextNeutral/styles.module.css +0 -32
- package/src/components/ToastUpload/ToastUpload.tsx +0 -111
- package/src/components/ToastUpload/ToastUploadToaster.tsx +0 -11
- package/src/components/ToastUpload/components/ButtonIcon/ButtonIcon.tsx +0 -10
- package/src/components/ToastUpload/components/ButtonIcon/index.ts +0 -1
- package/src/components/ToastUpload/components/ButtonIcon/styles.module.scss +0 -45
- package/src/components/ToastUpload/components/FileItem/FileItem.tsx +0 -74
- package/src/components/ToastUpload/components/FileItem/index.ts +0 -1
- package/src/components/ToastUpload/components/FileItem/styles.module.scss +0 -93
- package/src/components/ToastUpload/components/LoadingStatus/LoadingStatus.tsx +0 -38
- package/src/components/ToastUpload/components/LoadingStatus/index.ts +0 -1
- package/src/components/ToastUpload/components/LoadingStatus/styles.module.scss +0 -8
- package/src/components/ToastUpload/constants.ts +0 -26
- package/src/components/ToastUpload/index.ts +0 -1
- package/src/components/ToastUpload/styles.module.scss +0 -123
- package/src/components/ToastUpload/types.ts +0 -39
- package/src/components/ToastUpload/utils/formatPercent.ts +0 -1
- package/src/components/ToastUpload/utils/index.ts +0 -1
- package/src/helperComponents/ButtonTextNeutral/ButtonTextNeutral.tsx +0 -23
- package/src/helperComponents/ButtonTextNeutral/index.ts +0 -1
- package/src/helperComponents/ButtonTextNeutral/styles.module.scss +0 -42
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 0.8.14 (2025-03-04)
|
|
7
|
+
|
|
8
|
+
### Only dependencies have been changed
|
|
9
|
+
* [@snack-uikit/icons@0.24.3](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/icons/CHANGELOG.md)
|
|
10
|
+
* [@snack-uikit/link@0.15.10](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/link/CHANGELOG.md)
|
|
11
|
+
* [@snack-uikit/loaders@0.9.2](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/loaders/CHANGELOG.md)
|
|
12
|
+
* [@snack-uikit/truncate-string@0.6.10](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/truncate-string/CHANGELOG.md)
|
|
13
|
+
* [@snack-uikit/utils@3.8.0](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/utils/CHANGELOG.md)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## 0.8.13 (2025-02-10)
|
|
7
20
|
|
|
8
21
|
### Only dependencies have been changed
|
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Toaster
|
|
2
2
|
|
|
3
3
|
## Installation
|
|
4
|
-
|
|
5
4
|
`npm i @snack-uikit/toaster`
|
|
6
5
|
|
|
7
6
|
[Changelog](./CHANGELOG.md)
|
|
@@ -22,8 +21,8 @@ toaster.userAction.update.error(userActionId, { label: 'new text' });
|
|
|
22
21
|
|
|
23
22
|
// update systemEvent toast
|
|
24
23
|
toaster.systemEvent.update.error(systemEventId, {
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
title: 'new text',
|
|
25
|
+
description: 'new description',
|
|
27
26
|
});
|
|
28
27
|
|
|
29
28
|
// dismiss userAction toast
|
|
@@ -33,6 +32,7 @@ toaster.userAction.dismiss(userActionId);
|
|
|
33
32
|
toaster.systemEvent.dismiss(systemEventId);
|
|
34
33
|
```
|
|
35
34
|
|
|
35
|
+
|
|
36
36
|
## Props
|
|
37
37
|
|
|
38
38
|
```typescript jsx
|
|
@@ -69,40 +69,6 @@ type ToastSystemEventProps = Partial<RtToastContentProps> &
|
|
|
69
69
|
}>;
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
## ToastUpload
|
|
73
|
-
|
|
74
|
-
### Options
|
|
75
|
-
|
|
76
|
-
| name | type | default value | description |
|
|
77
|
-
| ------------------------- | ---------------------------------------------------------------- | ------------- | ---------------------------------- |
|
|
78
|
-
| status\* | `ToastUploadStatus` | - | Общий статус загрузки |
|
|
79
|
-
| title\* | `string` | - | Заголовок тостера |
|
|
80
|
-
| description\* | `string` | - | Описание статуса загрузки |
|
|
81
|
-
| totalProgressCounter\* | `string` | - | Каунтер общего прогресса |
|
|
82
|
-
| totalProgressPercentage\* | `string` | - | Процент прогресса |
|
|
83
|
-
| onCloseClick | `(e: MouseEvent<HTMLButtonElement>, close?: () => void) => void` | - | Закрыть тостер |
|
|
84
|
-
| closable | `boolean` | - | Показывать кнопку закрытия тостера |
|
|
85
|
-
| className | `string` | - | CSS-класс контейнера |
|
|
86
|
-
| items\* | `UploadItem[]` | - | Загружаемые элементы |
|
|
87
|
-
| collapsed\* | `boolean` | - | Развернут/свернут тостер |
|
|
88
|
-
| onCollapsed\* | `boolean` | - | Свренуть/развернуть тостер |
|
|
89
|
-
| generalActions\* | `UploadActions` | - | Экшены для управления загрузкой |
|
|
90
|
-
| cancelButton | `ButtonTextNeutralProps` | - | Отмена всей загрузки |
|
|
91
|
-
|
|
92
|
-
### UploadItem
|
|
93
|
-
|
|
94
|
-
| name | type | default value | description |
|
|
95
|
-
| ---------------- | ------------------------------------------ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
96
|
-
| id\* | `string` | - | Уникальный id элемента |
|
|
97
|
-
| title\* | `string` | - | Название элемента |
|
|
98
|
-
| statusLabel\* | `string` | - | Описание статуса загрузки |
|
|
99
|
-
| status\* | `ToastUploadItemStatus` | - | текущий статус |
|
|
100
|
-
| progress\* | `string` | - | Процент прогресса |
|
|
101
|
-
| size\* | `string` | - | Размер файла |
|
|
102
|
-
| generalActions\* | `UploadActions` | - | Экшены для управления загрузкой |
|
|
103
|
-
| link | `ToastUploadItemLink` | - | Ссылка на файл |
|
|
104
|
-
| subscribeToState | `ToastUploadStateSubscription<Partial<T>>` | - | Позволяет подписываться на изменения процесса загрузки файла внутри конпонента, тем самым обновляет элементы не зависимо от всего списка (можно использовать для улучшения производительности из-за частых обновлений) |
|
|
105
|
-
|
|
106
72
|
### TODO
|
|
107
73
|
|
|
108
74
|
- Translations
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.buttonClose{
|
|
7
|
+
width:var(--size-toaster-toast-system-event-button-close, 24px);
|
|
8
|
+
height:var(--size-toaster-toast-system-event-button-close, 24px);
|
|
7
9
|
border-radius:var(--radius-toaster-toast-system-event-button, 8px);
|
|
8
|
-
height:var(--size-toaster-toast-system-event-button-neutral, 24px);
|
|
9
10
|
cursor:pointer;
|
|
10
11
|
display:flex;
|
|
11
12
|
align-items:center;
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
display:flex;
|
|
108
109
|
flex-direction:column;
|
|
109
110
|
box-sizing:border-box;
|
|
110
|
-
width:calc(var(--size-toaster-toast-system-event-container, 320px) - 2 * var(--space-toaster-
|
|
111
|
+
width:calc(var(--size-toaster-toast-system-event-container, 320px) - 2 * var(--space-toaster-system-event-padding, 8px));
|
|
111
112
|
max-width:100%;
|
|
112
113
|
}
|
|
113
114
|
.container:hover .progress{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.buttonCloseColumnWrapper{
|
|
2
|
-
gap:var(--space-toaster-
|
|
3
|
-
padding:var(--space-toaster-
|
|
2
|
+
gap:var(--space-toaster-system-event-gap, 8px);
|
|
3
|
+
padding:var(--space-toaster-system-event-padding, 8px);
|
|
4
4
|
width:var(--size-toaster-toast-system-event-container, 320px);
|
|
5
5
|
position:fixed;
|
|
6
6
|
box-sizing:border-box;
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.containerWithCloseAllButton{
|
|
59
|
-
margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-
|
|
59
|
+
margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-system-event-gap, 8px));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
@media only screen and (max-width: 480px){
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
max-width:100%;
|
|
96
96
|
}
|
|
97
97
|
:global .osThemeSnack.Toastify__toast-container .container-user-action{
|
|
98
|
-
padding-bottom:var(--space-toaster-
|
|
99
|
-
gap:var(--space-toaster-
|
|
98
|
+
padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
|
|
99
|
+
gap:var(--space-toaster-user-action-gap, 8px);
|
|
100
100
|
display:flex;
|
|
101
101
|
flex-direction:column;
|
|
102
102
|
align-items:center;
|
|
@@ -138,16 +138,16 @@
|
|
|
138
138
|
animation-name:osSnackTheme__toast__bounceOutDown;
|
|
139
139
|
}
|
|
140
140
|
:global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__system-event{
|
|
141
|
-
gap:var(--space-toaster-
|
|
142
|
-
padding:var(--space-toaster-
|
|
141
|
+
gap:var(--space-toaster-system-event-gap, 8px);
|
|
142
|
+
padding:var(--space-toaster-system-event-padding, 8px);
|
|
143
143
|
width:var(--size-toaster-toast-system-event-container, 320px);
|
|
144
144
|
display:flex;
|
|
145
145
|
flex-direction:column;
|
|
146
146
|
max-width:calc(100vw - 2 * var(--space-toaster-toast-system-event-container-padding, 16px));
|
|
147
147
|
}
|
|
148
148
|
:global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__user-action{
|
|
149
|
-
padding-bottom:var(--space-toaster-
|
|
150
|
-
gap:var(--space-toaster-
|
|
149
|
+
padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
|
|
150
|
+
gap:var(--space-toaster-user-action-gap, 8px);
|
|
151
151
|
display:flex;
|
|
152
152
|
flex-direction:column;
|
|
153
153
|
align-items:center;
|
|
@@ -24,5 +24,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
24
24
|
});
|
|
25
25
|
__exportStar(require("./ToastSystemEvent"), exports);
|
|
26
26
|
__exportStar(require("./ToastUserAction"), exports);
|
|
27
|
-
__exportStar(require("./ToasterContainer"), exports);
|
|
28
|
-
__exportStar(require("./ToastUpload"), exports);
|
|
27
|
+
__exportStar(require("./ToasterContainer"), exports);
|
package/dist/cjs/constants.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ import { ToasterType } from './types';
|
|
|
3
3
|
export declare const TOASTER_TYPE: {
|
|
4
4
|
readonly SystemEvent: "system-event";
|
|
5
5
|
readonly UserAction: "user-action";
|
|
6
|
-
readonly Upload: "upload";
|
|
7
6
|
};
|
|
8
7
|
export declare const TOASTER_CONTAINER_DEFAULT_PROPS: Record<ToasterType, ToasterContainerProps>;
|
|
9
|
-
export declare const AUTO_CLOSE_TIME:
|
|
8
|
+
export declare const AUTO_CLOSE_TIME: {
|
|
9
|
+
"system-event": number;
|
|
10
|
+
"user-action": number;
|
|
11
|
+
};
|
|
10
12
|
export declare const TOASTER_ROOT_ID = "toaster-root";
|
|
11
13
|
export declare const TOASTER_CONTAINER_PREFIX = "toaster-container__";
|
package/dist/cjs/constants.js
CHANGED
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.TOASTER_CONTAINER_PREFIX = exports.TOASTER_ROOT_ID = exports.AUTO_CLOSE_TIME = exports.TOASTER_CONTAINER_DEFAULT_PROPS = exports.TOASTER_TYPE = void 0;
|
|
7
7
|
exports.TOASTER_TYPE = {
|
|
8
8
|
SystemEvent: 'system-event',
|
|
9
|
-
UserAction: 'user-action'
|
|
10
|
-
Upload: 'upload'
|
|
9
|
+
UserAction: 'user-action'
|
|
11
10
|
};
|
|
12
11
|
exports.TOASTER_CONTAINER_DEFAULT_PROPS = {
|
|
13
12
|
[exports.TOASTER_TYPE.SystemEvent]: {
|
|
@@ -21,18 +20,11 @@ exports.TOASTER_CONTAINER_DEFAULT_PROPS = {
|
|
|
21
20
|
position: 'bottom-center',
|
|
22
21
|
displayCloseAllButton: false,
|
|
23
22
|
type: exports.TOASTER_TYPE.UserAction
|
|
24
|
-
},
|
|
25
|
-
[exports.TOASTER_TYPE.Upload]: {
|
|
26
|
-
limit: 5,
|
|
27
|
-
position: 'bottom-right',
|
|
28
|
-
displayCloseAllButton: true,
|
|
29
|
-
type: exports.TOASTER_TYPE.SystemEvent
|
|
30
23
|
}
|
|
31
24
|
};
|
|
32
25
|
exports.AUTO_CLOSE_TIME = {
|
|
33
26
|
[exports.TOASTER_TYPE.SystemEvent]: 5000,
|
|
34
|
-
[exports.TOASTER_TYPE.UserAction]: 2000
|
|
35
|
-
[exports.TOASTER_TYPE.Upload]: false
|
|
27
|
+
[exports.TOASTER_TYPE.UserAction]: 2000
|
|
36
28
|
};
|
|
37
29
|
exports.TOASTER_ROOT_ID = 'toaster-root';
|
|
38
30
|
exports.TOASTER_CONTAINER_PREFIX = 'toaster-container__';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.buttonAction{
|
|
2
2
|
border-radius:var(--radius-toaster-toast-system-event-button, 8px);
|
|
3
3
|
height:var(--size-toaster-toast-system-event-button, 32px);
|
|
4
|
-
padding-left:var(--space-toaster-
|
|
5
|
-
padding-right:var(--space-toaster-
|
|
4
|
+
padding-left:var(--space-toaster-system-event-padding, 8px);
|
|
5
|
+
padding-right:var(--space-toaster-system-event-padding, 8px);
|
|
6
6
|
font-family:var(--sans-body-m-font-family, SB Sans Interface);
|
|
7
7
|
font-weight:var(--sans-body-m-font-weight, Regular);
|
|
8
8
|
line-height:var(--sans-body-m-line-height, 20px);
|
package/dist/cjs/helpers.js
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
-
var t = {};
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function") 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])) t[p[i]] = s[p[i]];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
3
|
Object.defineProperty(exports, "__esModule", {
|
|
12
4
|
value: true
|
|
13
5
|
});
|
|
@@ -18,7 +10,6 @@ const react_dom_1 = require("react-dom");
|
|
|
18
10
|
const react_toastify_1 = require("react-toastify");
|
|
19
11
|
const utils_1 = require("@snack-uikit/utils");
|
|
20
12
|
const components_1 = require("./components");
|
|
21
|
-
const ToastUploadToaster_1 = require("./components/ToastUpload/ToastUploadToaster");
|
|
22
13
|
const constants_1 = require("./constants");
|
|
23
14
|
function getToasterContainer(_ref) {
|
|
24
15
|
let {
|
|
@@ -69,8 +60,6 @@ function getToastComponent(_ref3) {
|
|
|
69
60
|
return (0, jsx_runtime_1.jsx)(components_1.ToastUserAction, Object.assign({}, toasterProps));
|
|
70
61
|
case constants_1.TOASTER_TYPE.SystemEvent:
|
|
71
62
|
return (0, jsx_runtime_1.jsx)(components_1.ToastSystemEvent, Object.assign({}, toasterProps));
|
|
72
|
-
case constants_1.TOASTER_TYPE.Upload:
|
|
73
|
-
return (0, jsx_runtime_1.jsx)(ToastUploadToaster_1.ToastUploadForToaster, Object.assign({}, toasterProps));
|
|
74
63
|
default:
|
|
75
64
|
return undefined;
|
|
76
65
|
}
|
|
@@ -329,36 +318,7 @@ const systemEvent = {
|
|
|
329
318
|
return react_toastify_1.toast.dismiss(id);
|
|
330
319
|
}
|
|
331
320
|
};
|
|
332
|
-
const upload = {
|
|
333
|
-
startOrUpdate(_a) {
|
|
334
|
-
var {
|
|
335
|
-
id
|
|
336
|
-
} = _a,
|
|
337
|
-
options = __rest(_a, ["id"]);
|
|
338
|
-
const toastId = id || constants_1.TOASTER_TYPE.Upload;
|
|
339
|
-
if (react_toastify_1.toast.isActive(toastId)) {
|
|
340
|
-
return (0, exports.updateToast)(toastId, {
|
|
341
|
-
type: constants_1.TOASTER_TYPE.SystemEvent,
|
|
342
|
-
toasterProps: Object.assign({}, options)
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
return (0, exports.openToast)({
|
|
346
|
-
type: constants_1.TOASTER_TYPE.Upload,
|
|
347
|
-
toasterProps: Object.assign(Object.assign({}, options), {
|
|
348
|
-
loading: true
|
|
349
|
-
}),
|
|
350
|
-
toastOptions: {
|
|
351
|
-
id: toastId,
|
|
352
|
-
onClose: options.onClose
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
},
|
|
356
|
-
dismiss(id) {
|
|
357
|
-
return react_toastify_1.toast.dismiss(id);
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
321
|
exports.toaster = {
|
|
361
322
|
userAction,
|
|
362
|
-
systemEvent
|
|
363
|
-
upload
|
|
323
|
+
systemEvent
|
|
364
324
|
};
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Id, ToastOptions as RtToastOptions } from 'react-toastify';
|
|
2
2
|
import { ValueOf } from '@snack-uikit/utils';
|
|
3
|
-
import { ToasterContainerProps, ToastSystemEventProps,
|
|
3
|
+
import { ToasterContainerProps, ToastSystemEventProps, ToastUserActionProps } from './components';
|
|
4
4
|
import { TOASTER_TYPE } from './constants';
|
|
5
5
|
export type ToasterId = Id;
|
|
6
6
|
export type PromisedId = Promise<ToasterId>;
|
|
@@ -13,9 +13,6 @@ export type ToasterType = ValueOf<typeof TOASTER_TYPE>;
|
|
|
13
13
|
export type ToasterPropsMap = {
|
|
14
14
|
[TOASTER_TYPE.UserAction]: ToastUserActionProps;
|
|
15
15
|
[TOASTER_TYPE.SystemEvent]: ToastSystemEventProps;
|
|
16
|
-
[TOASTER_TYPE.Upload]: ToastUploadProps & {
|
|
17
|
-
loading: boolean;
|
|
18
|
-
};
|
|
19
16
|
};
|
|
20
17
|
type OpenNotificationProps<T extends keyof ToasterPropsMap> = {
|
|
21
18
|
type: T;
|
|
@@ -36,7 +33,6 @@ export type UpdateToast = <T extends keyof ToasterPropsMap>(id: string | number,
|
|
|
36
33
|
}) => void;
|
|
37
34
|
export type UserActionOptions = Omit<ToastUserActionProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
38
35
|
export type SystemEventOptions = Omit<ToastSystemEventProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
39
|
-
export type UploadOptions = ToastUploadProps & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
40
36
|
export type Toaster = {
|
|
41
37
|
userAction: {
|
|
42
38
|
success(options: UserActionOptions): PromisedId;
|
|
@@ -66,9 +62,5 @@ export type Toaster = {
|
|
|
66
62
|
};
|
|
67
63
|
dismiss(id?: ToasterId): void;
|
|
68
64
|
};
|
|
69
|
-
upload: {
|
|
70
|
-
startOrUpdate(options: UploadOptions): void;
|
|
71
|
-
dismiss(id?: ToasterId): void;
|
|
72
|
-
};
|
|
73
65
|
};
|
|
74
66
|
export {};
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.buttonClose{
|
|
7
|
+
width:var(--size-toaster-toast-system-event-button-close, 24px);
|
|
8
|
+
height:var(--size-toaster-toast-system-event-button-close, 24px);
|
|
7
9
|
border-radius:var(--radius-toaster-toast-system-event-button, 8px);
|
|
8
|
-
height:var(--size-toaster-toast-system-event-button-neutral, 24px);
|
|
9
10
|
cursor:pointer;
|
|
10
11
|
display:flex;
|
|
11
12
|
align-items:center;
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
display:flex;
|
|
108
109
|
flex-direction:column;
|
|
109
110
|
box-sizing:border-box;
|
|
110
|
-
width:calc(var(--size-toaster-toast-system-event-container, 320px) - 2 * var(--space-toaster-
|
|
111
|
+
width:calc(var(--size-toaster-toast-system-event-container, 320px) - 2 * var(--space-toaster-system-event-padding, 8px));
|
|
111
112
|
max-width:100%;
|
|
112
113
|
}
|
|
113
114
|
.container:hover .progress{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.buttonCloseColumnWrapper{
|
|
2
|
-
gap:var(--space-toaster-
|
|
3
|
-
padding:var(--space-toaster-
|
|
2
|
+
gap:var(--space-toaster-system-event-gap, 8px);
|
|
3
|
+
padding:var(--space-toaster-system-event-padding, 8px);
|
|
4
4
|
width:var(--size-toaster-toast-system-event-container, 320px);
|
|
5
5
|
position:fixed;
|
|
6
6
|
box-sizing:border-box;
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.containerWithCloseAllButton{
|
|
59
|
-
margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-
|
|
59
|
+
margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-system-event-gap, 8px));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
@media only screen and (max-width: 480px){
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
max-width:100%;
|
|
96
96
|
}
|
|
97
97
|
:global .osThemeSnack.Toastify__toast-container .container-user-action{
|
|
98
|
-
padding-bottom:var(--space-toaster-
|
|
99
|
-
gap:var(--space-toaster-
|
|
98
|
+
padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
|
|
99
|
+
gap:var(--space-toaster-user-action-gap, 8px);
|
|
100
100
|
display:flex;
|
|
101
101
|
flex-direction:column;
|
|
102
102
|
align-items:center;
|
|
@@ -138,16 +138,16 @@
|
|
|
138
138
|
animation-name:osSnackTheme__toast__bounceOutDown;
|
|
139
139
|
}
|
|
140
140
|
:global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__system-event{
|
|
141
|
-
gap:var(--space-toaster-
|
|
142
|
-
padding:var(--space-toaster-
|
|
141
|
+
gap:var(--space-toaster-system-event-gap, 8px);
|
|
142
|
+
padding:var(--space-toaster-system-event-padding, 8px);
|
|
143
143
|
width:var(--size-toaster-toast-system-event-container, 320px);
|
|
144
144
|
display:flex;
|
|
145
145
|
flex-direction:column;
|
|
146
146
|
max-width:calc(100vw - 2 * var(--space-toaster-toast-system-event-container-padding, 16px));
|
|
147
147
|
}
|
|
148
148
|
:global .osThemeSnack.Toastify__toast-container.osThemeSnack__toast-container__user-action{
|
|
149
|
-
padding-bottom:var(--space-toaster-
|
|
150
|
-
gap:var(--space-toaster-
|
|
149
|
+
padding-bottom:var(--space-toaster-user-action-padding-bottom, 8px);
|
|
150
|
+
gap:var(--space-toaster-user-action-gap, 8px);
|
|
151
151
|
display:flex;
|
|
152
152
|
flex-direction:column;
|
|
153
153
|
align-items:center;
|
package/dist/esm/constants.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ import { ToasterType } from './types';
|
|
|
3
3
|
export declare const TOASTER_TYPE: {
|
|
4
4
|
readonly SystemEvent: "system-event";
|
|
5
5
|
readonly UserAction: "user-action";
|
|
6
|
-
readonly Upload: "upload";
|
|
7
6
|
};
|
|
8
7
|
export declare const TOASTER_CONTAINER_DEFAULT_PROPS: Record<ToasterType, ToasterContainerProps>;
|
|
9
|
-
export declare const AUTO_CLOSE_TIME:
|
|
8
|
+
export declare const AUTO_CLOSE_TIME: {
|
|
9
|
+
"system-event": number;
|
|
10
|
+
"user-action": number;
|
|
11
|
+
};
|
|
10
12
|
export declare const TOASTER_ROOT_ID = "toaster-root";
|
|
11
13
|
export declare const TOASTER_CONTAINER_PREFIX = "toaster-container__";
|
package/dist/esm/constants.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export const TOASTER_TYPE = {
|
|
2
2
|
SystemEvent: 'system-event',
|
|
3
3
|
UserAction: 'user-action',
|
|
4
|
-
Upload: 'upload',
|
|
5
4
|
};
|
|
6
5
|
export const TOASTER_CONTAINER_DEFAULT_PROPS = {
|
|
7
6
|
[TOASTER_TYPE.SystemEvent]: {
|
|
@@ -16,17 +15,10 @@ export const TOASTER_CONTAINER_DEFAULT_PROPS = {
|
|
|
16
15
|
displayCloseAllButton: false,
|
|
17
16
|
type: TOASTER_TYPE.UserAction,
|
|
18
17
|
},
|
|
19
|
-
[TOASTER_TYPE.Upload]: {
|
|
20
|
-
limit: 5,
|
|
21
|
-
position: 'bottom-right',
|
|
22
|
-
displayCloseAllButton: true,
|
|
23
|
-
type: TOASTER_TYPE.SystemEvent,
|
|
24
|
-
},
|
|
25
18
|
};
|
|
26
19
|
export const AUTO_CLOSE_TIME = {
|
|
27
20
|
[TOASTER_TYPE.SystemEvent]: 5000,
|
|
28
21
|
[TOASTER_TYPE.UserAction]: 2000,
|
|
29
|
-
[TOASTER_TYPE.Upload]: false,
|
|
30
22
|
};
|
|
31
23
|
export const TOASTER_ROOT_ID = 'toaster-root';
|
|
32
24
|
export const TOASTER_CONTAINER_PREFIX = 'toaster-container__';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.buttonAction{
|
|
2
2
|
border-radius:var(--radius-toaster-toast-system-event-button, 8px);
|
|
3
3
|
height:var(--size-toaster-toast-system-event-button, 32px);
|
|
4
|
-
padding-left:var(--space-toaster-
|
|
5
|
-
padding-right:var(--space-toaster-
|
|
4
|
+
padding-left:var(--space-toaster-system-event-padding, 8px);
|
|
5
|
+
padding-right:var(--space-toaster-system-event-padding, 8px);
|
|
6
6
|
font-family:var(--sans-body-m-font-family, SB Sans Interface);
|
|
7
7
|
font-weight:var(--sans-body-m-font-weight, Regular);
|
|
8
8
|
line-height:var(--sans-body-m-line-height, 20px);
|
package/dist/esm/helpers.js
CHANGED
|
@@ -1,21 +1,9 @@
|
|
|
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
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
2
|
// eslint-disable-next-line react/no-deprecated
|
|
14
3
|
import { render } from 'react-dom';
|
|
15
4
|
import { toast } from 'react-toastify';
|
|
16
5
|
import { isBrowser } from '@snack-uikit/utils';
|
|
17
6
|
import { ToasterContainer, ToastSystemEvent, ToastUserAction, } from './components';
|
|
18
|
-
import { ToastUploadForToaster } from './components/ToastUpload/ToastUploadToaster';
|
|
19
7
|
import { AUTO_CLOSE_TIME, TOASTER_CONTAINER_DEFAULT_PROPS, TOASTER_CONTAINER_PREFIX, TOASTER_ROOT_ID, TOASTER_TYPE, } from './constants';
|
|
20
8
|
function getToasterContainer({ type, toasterParent, containerProps, }) {
|
|
21
9
|
const containerId = (containerProps === null || containerProps === void 0 ? void 0 : containerProps.containerId) || `${TOASTER_CONTAINER_PREFIX}${type}`;
|
|
@@ -49,8 +37,6 @@ function getToastComponent({ type, toasterProps, }) {
|
|
|
49
37
|
return _jsx(ToastUserAction, Object.assign({}, toasterProps));
|
|
50
38
|
case TOASTER_TYPE.SystemEvent:
|
|
51
39
|
return _jsx(ToastSystemEvent, Object.assign({}, toasterProps));
|
|
52
|
-
case TOASTER_TYPE.Upload:
|
|
53
|
-
return _jsx(ToastUploadForToaster, Object.assign({}, toasterProps));
|
|
54
40
|
default:
|
|
55
41
|
return undefined;
|
|
56
42
|
}
|
|
@@ -247,31 +233,7 @@ const systemEvent = {
|
|
|
247
233
|
return toast.dismiss(id);
|
|
248
234
|
},
|
|
249
235
|
};
|
|
250
|
-
const upload = {
|
|
251
|
-
startOrUpdate(_a) {
|
|
252
|
-
var { id } = _a, options = __rest(_a, ["id"]);
|
|
253
|
-
const toastId = id || TOASTER_TYPE.Upload;
|
|
254
|
-
if (toast.isActive(toastId)) {
|
|
255
|
-
return updateToast(toastId, {
|
|
256
|
-
type: TOASTER_TYPE.SystemEvent,
|
|
257
|
-
toasterProps: Object.assign({}, options),
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
return openToast({
|
|
261
|
-
type: TOASTER_TYPE.Upload,
|
|
262
|
-
toasterProps: Object.assign(Object.assign({}, options), { loading: true }),
|
|
263
|
-
toastOptions: {
|
|
264
|
-
id: toastId,
|
|
265
|
-
onClose: options.onClose,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
|
-
},
|
|
269
|
-
dismiss(id) {
|
|
270
|
-
return toast.dismiss(id);
|
|
271
|
-
},
|
|
272
|
-
};
|
|
273
236
|
export const toaster = {
|
|
274
237
|
userAction,
|
|
275
238
|
systemEvent,
|
|
276
|
-
upload,
|
|
277
239
|
};
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Id, ToastOptions as RtToastOptions } from 'react-toastify';
|
|
2
2
|
import { ValueOf } from '@snack-uikit/utils';
|
|
3
|
-
import { ToasterContainerProps, ToastSystemEventProps,
|
|
3
|
+
import { ToasterContainerProps, ToastSystemEventProps, ToastUserActionProps } from './components';
|
|
4
4
|
import { TOASTER_TYPE } from './constants';
|
|
5
5
|
export type ToasterId = Id;
|
|
6
6
|
export type PromisedId = Promise<ToasterId>;
|
|
@@ -13,9 +13,6 @@ export type ToasterType = ValueOf<typeof TOASTER_TYPE>;
|
|
|
13
13
|
export type ToasterPropsMap = {
|
|
14
14
|
[TOASTER_TYPE.UserAction]: ToastUserActionProps;
|
|
15
15
|
[TOASTER_TYPE.SystemEvent]: ToastSystemEventProps;
|
|
16
|
-
[TOASTER_TYPE.Upload]: ToastUploadProps & {
|
|
17
|
-
loading: boolean;
|
|
18
|
-
};
|
|
19
16
|
};
|
|
20
17
|
type OpenNotificationProps<T extends keyof ToasterPropsMap> = {
|
|
21
18
|
type: T;
|
|
@@ -36,7 +33,6 @@ export type UpdateToast = <T extends keyof ToasterPropsMap>(id: string | number,
|
|
|
36
33
|
}) => void;
|
|
37
34
|
export type UserActionOptions = Omit<ToastUserActionProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
38
35
|
export type SystemEventOptions = Omit<ToastSystemEventProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
39
|
-
export type UploadOptions = ToastUploadProps & Pick<ToastOptions, 'id' | 'onClose'>;
|
|
40
36
|
export type Toaster = {
|
|
41
37
|
userAction: {
|
|
42
38
|
success(options: UserActionOptions): PromisedId;
|
|
@@ -66,9 +62,5 @@ export type Toaster = {
|
|
|
66
62
|
};
|
|
67
63
|
dismiss(id?: ToasterId): void;
|
|
68
64
|
};
|
|
69
|
-
upload: {
|
|
70
|
-
startOrUpdate(options: UploadOptions): void;
|
|
71
|
-
dismiss(id?: ToasterId): void;
|
|
72
|
-
};
|
|
73
65
|
};
|
|
74
66
|
export {};
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Toaster",
|
|
7
|
-
"version": "0.8.14
|
|
7
|
+
"version": "0.8.14",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -36,14 +36,13 @@
|
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
37
|
"scripts": {},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@snack-uikit/icons": "0.24.3
|
|
40
|
-
"@snack-uikit/link": "0.15.10
|
|
41
|
-
"@snack-uikit/loaders": "0.9.
|
|
42
|
-
"@snack-uikit/
|
|
43
|
-
"@snack-uikit/
|
|
44
|
-
"@snack-uikit/utils": "3.7.0",
|
|
39
|
+
"@snack-uikit/icons": "0.24.3",
|
|
40
|
+
"@snack-uikit/link": "0.15.10",
|
|
41
|
+
"@snack-uikit/loaders": "0.9.2",
|
|
42
|
+
"@snack-uikit/truncate-string": "0.6.10",
|
|
43
|
+
"@snack-uikit/utils": "3.8.0",
|
|
45
44
|
"classnames": "2.5.1",
|
|
46
45
|
"react-toastify": "10.0.5"
|
|
47
46
|
},
|
|
48
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "ec4e54b1ea5c4455ca404632e1f205e22b881f98"
|
|
49
48
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
.buttonClose {
|
|
35
35
|
@include styles-theme-variables.composite-var(
|
|
36
|
-
styles-tokens-toaster-toasterSystemEvent.$toaster-system-event-toast-button-button-
|
|
36
|
+
styles-tokens-toaster-toasterSystemEvent.$toaster-system-event-toast-button-button-close
|
|
37
37
|
);
|
|
38
38
|
|
|
39
39
|
cursor: pointer;
|
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
box-sizing: border-box;
|
|
160
160
|
width: calc(
|
|
161
161
|
styles-tokens-toaster-toasterSystemEvent.$size-toaster-toast-system-event-container -
|
|
162
|
-
(2 * styles-tokens-toaster-toasterSystemEvent.$space-toaster-
|
|
162
|
+
(2 * styles-tokens-toaster-toasterSystemEvent.$space-toaster-system-event-padding)
|
|
163
163
|
);
|
|
164
164
|
max-width: 100%;
|
|
165
165
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
.containerWithCloseAllButton {
|
|
64
|
-
margin-bottom: calc(styles-theme-variables.$size-toaster-button-close-column + styles-theme-variables.$space-toaster-
|
|
64
|
+
margin-bottom: calc(styles-theme-variables.$size-toaster-button-close-column + styles-theme-variables.$space-toaster-system-event-gap);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
@media only screen and (max-width: 480px) {
|
package/src/components/index.ts
CHANGED