@snack-uikit/toaster 0.8.13 → 0.8.14-preview-b5e187d5.0

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 (102) hide show
  1. package/dist/cjs/components/ToastSystemEvent/styles.module.css +3 -3
  2. package/dist/cjs/components/ToastUpload/ToastUpload.d.ts +19 -0
  3. package/dist/cjs/components/ToastUpload/ToastUpload.js +109 -0
  4. package/dist/cjs/components/ToastUpload/ToastUploadToaster.d.ts +3 -0
  5. package/dist/cjs/components/ToastUpload/ToastUploadToaster.js +16 -0
  6. package/dist/cjs/components/ToastUpload/components/ButtonAction/ButtonAction.d.ts +3 -0
  7. package/dist/cjs/components/ToastUpload/components/ButtonAction/ButtonAction.js +32 -0
  8. package/dist/cjs/components/ToastUpload/components/ButtonAction/index.d.ts +1 -0
  9. package/dist/cjs/components/ToastUpload/components/ButtonAction/index.js +25 -0
  10. package/dist/cjs/components/ToastUpload/components/ButtonAction/styles.module.css +30 -0
  11. package/dist/cjs/components/ToastUpload/components/FileItem/FileItem.d.ts +5 -0
  12. package/dist/cjs/components/ToastUpload/components/FileItem/FileItem.js +81 -0
  13. package/dist/cjs/components/ToastUpload/components/FileItem/index.d.ts +1 -0
  14. package/dist/cjs/components/ToastUpload/components/FileItem/index.js +25 -0
  15. package/dist/cjs/components/ToastUpload/components/FileItem/styles.module.css +85 -0
  16. package/dist/cjs/components/ToastUpload/components/LoadingStatus/LoadingStatus.d.ts +6 -0
  17. package/dist/cjs/components/ToastUpload/components/LoadingStatus/LoadingStatus.js +42 -0
  18. package/dist/cjs/components/ToastUpload/components/LoadingStatus/index.d.ts +1 -0
  19. package/dist/cjs/components/ToastUpload/components/LoadingStatus/index.js +25 -0
  20. package/dist/cjs/components/ToastUpload/components/LoadingStatus/styles.module.css +3 -0
  21. package/dist/cjs/components/ToastUpload/constants.d.ts +16 -0
  22. package/dist/cjs/components/ToastUpload/constants.js +26 -0
  23. package/dist/cjs/components/ToastUpload/index.d.ts +1 -0
  24. package/dist/cjs/components/ToastUpload/index.js +25 -0
  25. package/dist/cjs/components/ToastUpload/styles.module.css +103 -0
  26. package/dist/cjs/components/ToastUpload/types.d.ts +31 -0
  27. package/dist/cjs/components/ToastUpload/types.js +5 -0
  28. package/dist/cjs/components/ToastUpload/utils/formatPercent.d.ts +1 -0
  29. package/dist/cjs/components/ToastUpload/utils/formatPercent.js +8 -0
  30. package/dist/cjs/components/ToastUpload/utils/index.d.ts +1 -0
  31. package/dist/cjs/components/ToastUpload/utils/index.js +25 -0
  32. package/dist/cjs/components/ToasterContainer/styles.module.css +9 -9
  33. package/dist/cjs/components/index.d.ts +1 -0
  34. package/dist/cjs/components/index.js +2 -1
  35. package/dist/cjs/constants.d.ts +2 -4
  36. package/dist/cjs/constants.js +10 -2
  37. package/dist/cjs/helperComponents/ButtonAction/styles.module.css +2 -2
  38. package/dist/cjs/helpers.js +41 -1
  39. package/dist/cjs/types.d.ts +9 -1
  40. package/dist/esm/components/ToastSystemEvent/styles.module.css +3 -3
  41. package/dist/esm/components/ToastUpload/ToastUpload.d.ts +19 -0
  42. package/dist/esm/components/ToastUpload/ToastUpload.js +34 -0
  43. package/dist/esm/components/ToastUpload/ToastUploadToaster.d.ts +3 -0
  44. package/dist/esm/components/ToastUpload/ToastUploadToaster.js +7 -0
  45. package/dist/esm/components/ToastUpload/components/ButtonAction/ButtonAction.d.ts +3 -0
  46. package/dist/esm/components/ToastUpload/components/ButtonAction/ButtonAction.js +18 -0
  47. package/dist/esm/components/ToastUpload/components/ButtonAction/index.d.ts +1 -0
  48. package/dist/esm/components/ToastUpload/components/ButtonAction/index.js +1 -0
  49. package/dist/esm/components/ToastUpload/components/ButtonAction/styles.module.css +30 -0
  50. package/dist/esm/components/ToastUpload/components/FileItem/FileItem.d.ts +5 -0
  51. package/dist/esm/components/ToastUpload/components/FileItem/FileItem.js +22 -0
  52. package/dist/esm/components/ToastUpload/components/FileItem/index.d.ts +1 -0
  53. package/dist/esm/components/ToastUpload/components/FileItem/index.js +1 -0
  54. package/dist/esm/components/ToastUpload/components/FileItem/styles.module.css +85 -0
  55. package/dist/esm/components/ToastUpload/components/LoadingStatus/LoadingStatus.d.ts +6 -0
  56. package/dist/esm/components/ToastUpload/components/LoadingStatus/LoadingStatus.js +16 -0
  57. package/dist/esm/components/ToastUpload/components/LoadingStatus/index.d.ts +1 -0
  58. package/dist/esm/components/ToastUpload/components/LoadingStatus/index.js +1 -0
  59. package/dist/esm/components/ToastUpload/components/LoadingStatus/styles.module.css +3 -0
  60. package/dist/esm/components/ToastUpload/constants.d.ts +16 -0
  61. package/dist/esm/components/ToastUpload/constants.js +20 -0
  62. package/dist/esm/components/ToastUpload/index.d.ts +1 -0
  63. package/dist/esm/components/ToastUpload/index.js +1 -0
  64. package/dist/esm/components/ToastUpload/styles.module.css +103 -0
  65. package/dist/esm/components/ToastUpload/types.d.ts +31 -0
  66. package/dist/esm/components/ToastUpload/types.js +1 -0
  67. package/dist/esm/components/ToastUpload/utils/formatPercent.d.ts +1 -0
  68. package/dist/esm/components/ToastUpload/utils/formatPercent.js +1 -0
  69. package/dist/esm/components/ToastUpload/utils/index.d.ts +1 -0
  70. package/dist/esm/components/ToastUpload/utils/index.js +1 -0
  71. package/dist/esm/components/ToasterContainer/styles.module.css +9 -9
  72. package/dist/esm/components/index.d.ts +1 -0
  73. package/dist/esm/components/index.js +1 -0
  74. package/dist/esm/constants.d.ts +2 -4
  75. package/dist/esm/constants.js +8 -0
  76. package/dist/esm/helperComponents/ButtonAction/styles.module.css +2 -2
  77. package/dist/esm/helpers.js +38 -0
  78. package/dist/esm/types.d.ts +9 -1
  79. package/package.json +6 -5
  80. package/src/components/ToastSystemEvent/styles.module.scss +2 -2
  81. package/src/components/ToastUpload/ToastUpload.tsx +108 -0
  82. package/src/components/ToastUpload/ToastUploadToaster.tsx +11 -0
  83. package/src/components/ToastUpload/components/ButtonAction/ButtonAction.tsx +10 -0
  84. package/src/components/ToastUpload/components/ButtonAction/index.ts +1 -0
  85. package/src/components/ToastUpload/components/ButtonAction/styles.module.scss +45 -0
  86. package/src/components/ToastUpload/components/FileItem/FileItem.tsx +74 -0
  87. package/src/components/ToastUpload/components/FileItem/index.ts +1 -0
  88. package/src/components/ToastUpload/components/FileItem/styles.module.scss +93 -0
  89. package/src/components/ToastUpload/components/LoadingStatus/LoadingStatus.tsx +38 -0
  90. package/src/components/ToastUpload/components/LoadingStatus/index.ts +1 -0
  91. package/src/components/ToastUpload/components/LoadingStatus/styles.module.scss +8 -0
  92. package/src/components/ToastUpload/constants.ts +26 -0
  93. package/src/components/ToastUpload/index.ts +1 -0
  94. package/src/components/ToastUpload/styles.module.scss +113 -0
  95. package/src/components/ToastUpload/types.ts +39 -0
  96. package/src/components/ToastUpload/utils/formatPercent.ts +1 -0
  97. package/src/components/ToastUpload/utils/index.ts +1 -0
  98. package/src/components/ToasterContainer/styles.module.scss +1 -1
  99. package/src/components/index.ts +1 -0
  100. package/src/constants.ts +9 -1
  101. package/src/helpers.tsx +35 -0
  102. package/src/types.ts +7 -1
@@ -0,0 +1,85 @@
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
+ }
@@ -0,0 +1,6 @@
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;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CheckFilledSVG, PauseSVG, PlaySVG, UpdateSVG } from '@snack-uikit/icons';
3
+ import { ButtonAction } from '../ButtonAction';
4
+ import styles from './styles.module.css';
5
+ export function LoadingStatus({ status, actions }) {
6
+ if (status === 'loading') {
7
+ return (_jsx(ButtonAction, { onClick: actions.onPause, children: _jsx(PauseSVG, {}) }));
8
+ }
9
+ if (status === 'pause') {
10
+ return (_jsx(ButtonAction, { onClick: actions.onContinue, children: _jsx(PlaySVG, {}) }));
11
+ }
12
+ if (status === 'uploaded') {
13
+ return _jsx(CheckFilledSVG, { className: styles.successIcon });
14
+ }
15
+ return (_jsx(ButtonAction, { onClick: actions.onRetry, children: _jsx(UpdateSVG, {}) }));
16
+ }
@@ -0,0 +1 @@
1
+ export * from './LoadingStatus';
@@ -0,0 +1 @@
1
+ export * from './LoadingStatus';
@@ -0,0 +1,3 @@
1
+ .successIcon{
2
+ color:var(--sys-green-accent-default, #57b762);
3
+ }
@@ -0,0 +1,16 @@
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']>;
@@ -0,0 +1,20 @@
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
+ };
@@ -0,0 +1 @@
1
+ export * from './ToastUpload';
@@ -0,0 +1 @@
1
+ export * from './ToastUpload';
@@ -0,0 +1,103 @@
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
+
18
+ .titleLine{
19
+ display:flex;
20
+ flex-direction:column;
21
+ padding:0 var(--space-toaster-toast-system-event-container-padding, 16px);
22
+ }
23
+
24
+ .titleLineBody{
25
+ gap:var(--space-toaster-toast-upload-body-gap, 16px);
26
+ display:flex;
27
+ align-items:center;
28
+ }
29
+
30
+ .title{
31
+ font-family:var(--sans-title-s-font-family, SB Sans Interface);
32
+ font-weight:var(--sans-title-s-font-weight, Semibold);
33
+ line-height:var(--sans-title-s-line-height, 20px);
34
+ font-size:var(--sans-title-s-font-size, 14px);
35
+ letter-spacing:var(--sans-title-s-letter-spacing, 0.15px);
36
+ paragraph-spacing:var(--sans-title-s-paragraph-spacing, 7.7px);
37
+ flex-grow:1;
38
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
39
+ }
40
+
41
+ .generalProgress{
42
+ gap:var(--space-toaster-toast-upload-general-progress-gap, 4px);
43
+ display:flex;
44
+ flex-direction:column;
45
+ align-self:stretch;
46
+ }
47
+
48
+ .statusLine{
49
+ gap:var(--space-toaster-toast-upload-status-line-gap, 8px);
50
+ display:flex;
51
+ align-items:center;
52
+ }
53
+
54
+ .statusWrap{
55
+ gap:var(--space-toaster-toast-upload-status-wrap-gap, 4px);
56
+ display:flex;
57
+ flex-grow:1;
58
+ align-items:center;
59
+ }
60
+
61
+ .description{
62
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
63
+ font-weight:var(--sans-body-m-font-weight, Regular);
64
+ line-height:var(--sans-body-m-line-height, 20px);
65
+ font-size:var(--sans-body-m-font-size, 14px);
66
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
67
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
68
+ color:var(--sys-invert-neutral-text-main, #e6e8ef);
69
+ }
70
+ .description[data-status=loading]{
71
+ color:var(--sys-invert-neutral-text-light, #8b8e9b);
72
+ }
73
+ .description[data-status=uploaded]{
74
+ color:var(--sys-invert-neutral-text-light, #8b8e9b);
75
+ }
76
+
77
+ .totalCounter{
78
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
79
+ font-weight:var(--sans-body-m-font-weight, Regular);
80
+ line-height:var(--sans-body-m-line-height, 20px);
81
+ font-size:var(--sans-body-m-font-size, 14px);
82
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
83
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
84
+ color:var(--sys-invert-neutral-text-support, #bec2cf);
85
+ }
86
+
87
+ .totalPercentage{
88
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
89
+ font-weight:var(--sans-body-m-font-weight, Regular);
90
+ line-height:var(--sans-body-m-line-height, 20px);
91
+ font-size:var(--sans-body-m-font-size, 14px);
92
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
93
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
94
+ color:var(--sys-invert-neutral-text-support, #bec2cf);
95
+ }
96
+
97
+ .list{
98
+ overflow:scroll;
99
+ display:flex;
100
+ flex-direction:column;
101
+ max-height:280px;
102
+ padding:0 var(--space-toaster-toast-system-event-container-padding, 16px);
103
+ }
@@ -0,0 +1,31 @@
1
+ import { MouseEvent } from 'react';
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
+ subscribeToState?: ToastUploadStateSubscription<Partial<T>>;
10
+ } & T;
11
+ export type ToastUploadItemLink = {
12
+ text: string;
13
+ href: string;
14
+ onClick?(e: MouseEvent<HTMLAnchorElement>): void;
15
+ };
16
+ export type UploadActions = {
17
+ onCancel?: () => void;
18
+ onPause?: () => void;
19
+ onRetry?: () => void;
20
+ onContinue?: () => void;
21
+ };
22
+ export type UploadItem = WithStateSubscription<{
23
+ id: string;
24
+ title: string;
25
+ status: ToastUploadItemStatus;
26
+ statusLabel: string;
27
+ progress: ProgressBarProps['progress'];
28
+ size: string;
29
+ actions: UploadActions;
30
+ link?: ToastUploadItemLink;
31
+ }>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const formatPercent: (value: number) => string;
@@ -0,0 +1 @@
1
+ export const formatPercent = (value) => `${value}%`;
@@ -0,0 +1 @@
1
+ export * from './formatPercent';
@@ -0,0 +1 @@
1
+ export * from './formatPercent';
@@ -1,6 +1,6 @@
1
1
  .buttonCloseColumnWrapper{
2
- gap:var(--space-toaster-system-event-gap, 8px);
3
- padding:var(--space-toaster-system-event-padding, 8px);
2
+ gap:var(--space-toaster-toast-system-event-gap, 8px);
3
+ padding:var(--space-toaster-toast-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-system-event-gap, 8px));
59
+ margin-bottom:calc(var(--size-toaster-button-close-column, 40px) + var(--space-toaster-toast-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-user-action-padding-bottom, 8px);
99
- gap:var(--space-toaster-user-action-gap, 8px);
98
+ padding-bottom:var(--space-toaster-toast-user-action-padding-bottom, 8px);
99
+ gap:var(--space-toaster-toast-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-system-event-gap, 8px);
142
- padding:var(--space-toaster-system-event-padding, 8px);
141
+ gap:var(--space-toaster-toast-system-event-gap, 8px);
142
+ padding:var(--space-toaster-toast-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-user-action-padding-bottom, 8px);
150
- gap:var(--space-toaster-user-action-gap, 8px);
149
+ padding-bottom:var(--space-toaster-toast-user-action-padding-bottom, 8px);
150
+ gap:var(--space-toaster-toast-user-action-gap, 8px);
151
151
  display:flex;
152
152
  flex-direction:column;
153
153
  align-items:center;
@@ -1,3 +1,4 @@
1
1
  export * from './ToastSystemEvent';
2
2
  export * from './ToastUserAction';
3
3
  export * from './ToasterContainer';
4
+ export * from './ToastUpload';
@@ -1,3 +1,4 @@
1
1
  export * from './ToastSystemEvent';
2
2
  export * from './ToastUserAction';
3
3
  export * from './ToasterContainer';
4
+ export * from './ToastUpload';
@@ -3,11 +3,9 @@ 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";
6
7
  };
7
8
  export declare const TOASTER_CONTAINER_DEFAULT_PROPS: Record<ToasterType, ToasterContainerProps>;
8
- export declare const AUTO_CLOSE_TIME: {
9
- "system-event": number;
10
- "user-action": number;
11
- };
9
+ export declare const AUTO_CLOSE_TIME: Record<ToasterType, number | false>;
12
10
  export declare const TOASTER_ROOT_ID = "toaster-root";
13
11
  export declare const TOASTER_CONTAINER_PREFIX = "toaster-container__";
@@ -1,6 +1,7 @@
1
1
  export const TOASTER_TYPE = {
2
2
  SystemEvent: 'system-event',
3
3
  UserAction: 'user-action',
4
+ Upload: 'upload',
4
5
  };
5
6
  export const TOASTER_CONTAINER_DEFAULT_PROPS = {
6
7
  [TOASTER_TYPE.SystemEvent]: {
@@ -15,10 +16,17 @@ export const TOASTER_CONTAINER_DEFAULT_PROPS = {
15
16
  displayCloseAllButton: false,
16
17
  type: TOASTER_TYPE.UserAction,
17
18
  },
19
+ [TOASTER_TYPE.Upload]: {
20
+ limit: 5,
21
+ position: 'bottom-right',
22
+ displayCloseAllButton: true,
23
+ type: TOASTER_TYPE.SystemEvent,
24
+ },
18
25
  };
19
26
  export const AUTO_CLOSE_TIME = {
20
27
  [TOASTER_TYPE.SystemEvent]: 5000,
21
28
  [TOASTER_TYPE.UserAction]: 2000,
29
+ [TOASTER_TYPE.Upload]: false,
22
30
  };
23
31
  export const TOASTER_ROOT_ID = 'toaster-root';
24
32
  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-system-event-padding, 8px);
5
- padding-right:var(--space-toaster-system-event-padding, 8px);
4
+ padding-left:var(--space-toaster-toast-system-event-padding, 8px);
5
+ padding-right:var(--space-toaster-toast-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);
@@ -1,9 +1,21 @@
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
+ };
1
12
  import { jsx as _jsx } from "react/jsx-runtime";
2
13
  // eslint-disable-next-line react/no-deprecated
3
14
  import { render } from 'react-dom';
4
15
  import { toast } from 'react-toastify';
5
16
  import { isBrowser } from '@snack-uikit/utils';
6
17
  import { ToasterContainer, ToastSystemEvent, ToastUserAction, } from './components';
18
+ import { ToastUploadForToaster } from './components/ToastUpload/ToastUploadToaster';
7
19
  import { AUTO_CLOSE_TIME, TOASTER_CONTAINER_DEFAULT_PROPS, TOASTER_CONTAINER_PREFIX, TOASTER_ROOT_ID, TOASTER_TYPE, } from './constants';
8
20
  function getToasterContainer({ type, toasterParent, containerProps, }) {
9
21
  const containerId = (containerProps === null || containerProps === void 0 ? void 0 : containerProps.containerId) || `${TOASTER_CONTAINER_PREFIX}${type}`;
@@ -37,6 +49,8 @@ function getToastComponent({ type, toasterProps, }) {
37
49
  return _jsx(ToastUserAction, Object.assign({}, toasterProps));
38
50
  case TOASTER_TYPE.SystemEvent:
39
51
  return _jsx(ToastSystemEvent, Object.assign({}, toasterProps));
52
+ case TOASTER_TYPE.Upload:
53
+ return _jsx(ToastUploadForToaster, Object.assign({}, toasterProps));
40
54
  default:
41
55
  return undefined;
42
56
  }
@@ -233,7 +247,31 @@ const systemEvent = {
233
247
  return toast.dismiss(id);
234
248
  },
235
249
  };
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
+ };
236
273
  export const toaster = {
237
274
  userAction,
238
275
  systemEvent,
276
+ upload,
239
277
  };
@@ -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, ToastUserActionProps } from './components';
3
+ import { ToasterContainerProps, ToastSystemEventProps, ToastUploadProps, ToastUserActionProps } from './components';
4
4
  import { TOASTER_TYPE } from './constants';
5
5
  export type ToasterId = Id;
6
6
  export type PromisedId = Promise<ToasterId>;
@@ -13,6 +13,9 @@ 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
+ };
16
19
  };
17
20
  type OpenNotificationProps<T extends keyof ToasterPropsMap> = {
18
21
  type: T;
@@ -33,6 +36,7 @@ export type UpdateToast = <T extends keyof ToasterPropsMap>(id: string | number,
33
36
  }) => void;
34
37
  export type UserActionOptions = Omit<ToastUserActionProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
35
38
  export type SystemEventOptions = Omit<ToastSystemEventProps, 'appearance'> & Pick<ToastOptions, 'id' | 'onClose'>;
39
+ export type UploadOptions = ToastUploadProps & Pick<ToastOptions, 'id' | 'onClose'>;
36
40
  export type Toaster = {
37
41
  userAction: {
38
42
  success(options: UserActionOptions): PromisedId;
@@ -62,5 +66,9 @@ export type Toaster = {
62
66
  };
63
67
  dismiss(id?: ToasterId): void;
64
68
  };
69
+ upload: {
70
+ startOrUpdate(options: UploadOptions): void;
71
+ dismiss(id?: ToasterId): void;
72
+ };
65
73
  };
66
74
  export {};
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Toaster",
7
- "version": "0.8.13",
7
+ "version": "0.8.14-preview-b5e187d5.0",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -36,13 +36,14 @@
36
36
  "license": "Apache-2.0",
37
37
  "scripts": {},
38
38
  "dependencies": {
39
- "@snack-uikit/icons": "0.24.2",
40
- "@snack-uikit/link": "0.15.9",
39
+ "@snack-uikit/icons": "0.24.3-preview-b5e187d5.0",
40
+ "@snack-uikit/link": "0.15.10-preview-b5e187d5.0",
41
41
  "@snack-uikit/loaders": "0.9.1",
42
- "@snack-uikit/truncate-string": "0.6.9",
42
+ "@snack-uikit/progress-bar": "0.1.3",
43
+ "@snack-uikit/truncate-string": "0.6.10-preview-b5e187d5.0",
43
44
  "@snack-uikit/utils": "3.7.0",
44
45
  "classnames": "2.5.1",
45
46
  "react-toastify": "10.0.5"
46
47
  },
47
- "gitHead": "44591f943a79171320e8db3523ec38953ff101d8"
48
+ "gitHead": "d381a21a923d774fb3c32ece1fcc68cfa35b06a4"
48
49
  }
@@ -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-close
36
+ styles-tokens-toaster-toasterSystemEvent.$toaster-system-event-toast-button-button-neutral
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-system-event-padding)
162
+ (2 * styles-tokens-toaster-toasterSystemEvent.$space-toaster-toast-system-event-padding)
163
163
  );
164
164
  max-width: 100%;
165
165