@pushwoosh/dumb-components 1.0.1 → 1.0.2

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 (237) hide show
  1. package/DropdownMenu/components/DropdownMenu/DropdownMenu.d.ts +3 -0
  2. package/DropdownMenu/components/DropdownMenu/DropdownMenu.js +27 -0
  3. package/DropdownMenu/components/DropdownMenu/hooks.d.ts +4 -0
  4. package/DropdownMenu/components/DropdownMenu/hooks.js +10 -0
  5. package/DropdownMenu/components/DropdownMenu/index.d.ts +2 -0
  6. package/DropdownMenu/components/DropdownMenu/index.js +2 -0
  7. package/DropdownMenu/components/DropdownMenu/types.d.ts +23 -0
  8. package/DropdownMenu/components/DropdownMenu/types.js +1 -0
  9. package/DropdownMenu/components/DropdownMenuContainer/DropdownMenuContainer.d.ts +3 -0
  10. package/DropdownMenu/components/DropdownMenuContainer/DropdownMenuContainer.js +79 -0
  11. package/DropdownMenu/components/DropdownMenuContainer/index.d.ts +1 -0
  12. package/DropdownMenu/components/DropdownMenuContainer/index.js +1 -0
  13. package/DropdownMenu/components/DropdownMenuContainer/maps.d.ts +26 -0
  14. package/DropdownMenu/components/DropdownMenuContainer/maps.js +11 -0
  15. package/DropdownMenu/components/DropdownMenuContainer/styles.d.ts +35 -0
  16. package/DropdownMenu/components/DropdownMenuContainer/styles.js +109 -0
  17. package/DropdownMenu/components/DropdownMenuContainer/types.d.ts +19 -0
  18. package/DropdownMenu/components/DropdownMenuContainer/types.js +1 -0
  19. package/DropdownMenu/components/DropdownMenuGroup/DropdownMenuGroup.d.ts +3 -0
  20. package/DropdownMenu/components/DropdownMenuGroup/DropdownMenuGroup.js +12 -0
  21. package/DropdownMenu/components/DropdownMenuGroup/index.d.ts +1 -0
  22. package/DropdownMenu/components/DropdownMenuGroup/index.js +1 -0
  23. package/DropdownMenu/components/DropdownMenuGroup/styles.d.ts +1 -0
  24. package/DropdownMenu/components/DropdownMenuGroup/styles.js +7 -0
  25. package/DropdownMenu/components/DropdownMenuGroup/types.d.ts +5 -0
  26. package/DropdownMenu/components/DropdownMenuGroup/types.js +1 -0
  27. package/DropdownMenu/components/DropdownMenuItem/DropdownMenuItem.d.ts +5 -0
  28. package/DropdownMenu/components/DropdownMenuItem/DropdownMenuItem.js +38 -0
  29. package/DropdownMenu/components/DropdownMenuItem/index.d.ts +2 -0
  30. package/DropdownMenu/components/DropdownMenuItem/index.js +2 -0
  31. package/DropdownMenu/components/DropdownMenuItem/styles.d.ts +5 -0
  32. package/DropdownMenu/components/DropdownMenuItem/styles.js +73 -0
  33. package/DropdownMenu/components/DropdownMenuItem/types.d.ts +24 -0
  34. package/DropdownMenu/components/DropdownMenuItem/types.js +1 -0
  35. package/DropdownMenu/components/DropdownMenuItemCheckbox/DropdownMenuItemCheckbox.d.ts +3 -0
  36. package/DropdownMenu/components/DropdownMenuItemCheckbox/DropdownMenuItemCheckbox.js +9 -0
  37. package/DropdownMenu/components/DropdownMenuItemCheckbox/index.d.ts +1 -0
  38. package/DropdownMenu/components/DropdownMenuItemCheckbox/index.js +1 -0
  39. package/DropdownMenu/components/DropdownMenuItemCheckbox/styles.d.ts +1 -0
  40. package/DropdownMenu/components/DropdownMenuItemCheckbox/styles.js +8 -0
  41. package/DropdownMenu/components/DropdownMenuItemPick/DropdownMenuItemPick.d.ts +3 -0
  42. package/DropdownMenu/components/DropdownMenuItemPick/DropdownMenuItemPick.js +16 -0
  43. package/DropdownMenu/components/DropdownMenuItemPick/index.d.ts +1 -0
  44. package/DropdownMenu/components/DropdownMenuItemPick/index.js +1 -0
  45. package/DropdownMenu/components/DropdownMenuItemPick/styles.d.ts +3 -0
  46. package/DropdownMenu/components/DropdownMenuItemPick/styles.js +8 -0
  47. package/DropdownMenu/components/DropdownMenuItemPick/types.d.ts +2 -0
  48. package/DropdownMenu/components/DropdownMenuItemPick/types.js +1 -0
  49. package/DropdownMenu/components/DropdownMenuItemRadio/DropdownMenuItemRadio.d.ts +3 -0
  50. package/DropdownMenu/components/DropdownMenuItemRadio/DropdownMenuItemRadio.js +9 -0
  51. package/DropdownMenu/components/DropdownMenuItemRadio/index.d.ts +1 -0
  52. package/DropdownMenu/components/DropdownMenuItemRadio/index.js +1 -0
  53. package/DropdownMenu/components/DropdownMenuItemRadio/styles.d.ts +1 -0
  54. package/DropdownMenu/components/DropdownMenuItemRadio/styles.js +8 -0
  55. package/DropdownMenu/components/DropdownMenuNested/DropdownMenuNested.d.ts +3 -0
  56. package/DropdownMenu/components/DropdownMenuNested/DropdownMenuNested.js +69 -0
  57. package/DropdownMenu/components/DropdownMenuNested/index.d.ts +1 -0
  58. package/DropdownMenu/components/DropdownMenuNested/index.js +1 -0
  59. package/DropdownMenu/components/DropdownMenuNested/styles.d.ts +8 -0
  60. package/DropdownMenu/components/DropdownMenuNested/styles.js +35 -0
  61. package/DropdownMenu/components/DropdownMenuNested/types.d.ts +6 -0
  62. package/DropdownMenu/components/DropdownMenuNested/types.js +1 -0
  63. package/DropdownMenu/components/DropdownMenuWindow/DropdownMenuWindow.d.ts +3 -0
  64. package/DropdownMenu/components/DropdownMenuWindow/DropdownMenuWindow.js +12 -0
  65. package/DropdownMenu/components/DropdownMenuWindow/index.d.ts +1 -0
  66. package/DropdownMenu/components/DropdownMenuWindow/index.js +1 -0
  67. package/DropdownMenu/components/DropdownMenuWindow/styles.d.ts +1 -0
  68. package/DropdownMenu/components/DropdownMenuWindow/styles.js +7 -0
  69. package/DropdownMenu/components/DropdownMenuWindow/types.d.ts +5 -0
  70. package/DropdownMenu/components/DropdownMenuWindow/types.js +1 -0
  71. package/DropdownMenu/index.d.ts +9 -0
  72. package/DropdownMenu/index.js +9 -0
  73. package/ExportResult/ExportResult.js +1 -1
  74. package/InputFile/InputFile.d.ts +3 -0
  75. package/InputFile/InputFile.js +88 -0
  76. package/InputFile/index.d.ts +1 -0
  77. package/InputFile/index.js +1 -0
  78. package/InputFile/styles.d.ts +5 -0
  79. package/InputFile/styles.js +29 -0
  80. package/InputFile/types.d.ts +25 -0
  81. package/InputFile/types.js +1 -0
  82. package/Link/Link.d.ts +5 -0
  83. package/Link/Link.js +12 -0
  84. package/Link/index.d.ts +1 -0
  85. package/Link/index.js +1 -0
  86. package/Link/styles.d.ts +1 -0
  87. package/Link/styles.js +7 -0
  88. package/Link/types.d.ts +21 -0
  89. package/Link/types.js +1 -0
  90. package/Modal/components/Modal/Modal.d.ts +3 -0
  91. package/Modal/components/Modal/Modal.js +51 -0
  92. package/Modal/components/Modal/index.d.ts +1 -0
  93. package/Modal/components/Modal/index.js +1 -0
  94. package/Modal/components/Modal/maps.d.ts +6 -0
  95. package/Modal/components/Modal/maps.js +6 -0
  96. package/Modal/components/Modal/styles.d.ts +13 -0
  97. package/Modal/components/Modal/styles.js +45 -0
  98. package/Modal/components/Modal/types.d.ts +13 -0
  99. package/Modal/components/Modal/types.js +1 -0
  100. package/Modal/components/ModalConfirm/ModalConfirm.d.ts +3 -0
  101. package/Modal/components/ModalConfirm/ModalConfirm.js +54 -0
  102. package/Modal/components/ModalConfirm/ModalConfirmProvider.d.ts +4 -0
  103. package/Modal/components/ModalConfirm/ModalConfirmProvider.js +35 -0
  104. package/Modal/components/ModalConfirm/hooks.d.ts +2 -0
  105. package/Modal/components/ModalConfirm/hooks.js +9 -0
  106. package/Modal/components/ModalConfirm/index.d.ts +3 -0
  107. package/Modal/components/ModalConfirm/index.js +3 -0
  108. package/Modal/components/ModalConfirm/types.d.ts +20 -0
  109. package/Modal/components/ModalConfirm/types.js +1 -0
  110. package/Modal/components/ModalContent/index.d.ts +1 -0
  111. package/Modal/components/ModalContent/index.js +1 -0
  112. package/Modal/components/ModalContent/styled.d.ts +19 -0
  113. package/Modal/components/ModalContent/styled.js +29 -0
  114. package/Modal/components/ModalTitle/ModalTitle.d.ts +3 -0
  115. package/Modal/components/ModalTitle/ModalTitle.js +18 -0
  116. package/Modal/components/ModalTitle/index.d.ts +1 -0
  117. package/Modal/components/ModalTitle/index.js +1 -0
  118. package/Modal/components/ModalTitle/styles.d.ts +1 -0
  119. package/Modal/components/ModalTitle/styles.js +8 -0
  120. package/Modal/components/ModalTitle/types.d.ts +5 -0
  121. package/Modal/components/ModalTitle/types.js +1 -0
  122. package/Modal/index.d.ts +4 -0
  123. package/Modal/index.js +4 -0
  124. package/PageHeader/components/AutosizeInput/AutosizeInput.d.ts +3 -0
  125. package/PageHeader/components/AutosizeInput/AutosizeInput.js +80 -0
  126. package/PageHeader/components/AutosizeInput/constants.d.ts +2 -0
  127. package/PageHeader/components/AutosizeInput/constants.js +2 -0
  128. package/PageHeader/components/AutosizeInput/index.d.ts +1 -0
  129. package/PageHeader/components/AutosizeInput/index.js +1 -0
  130. package/PageHeader/components/AutosizeInput/styles.d.ts +5 -0
  131. package/PageHeader/components/AutosizeInput/styles.js +20 -0
  132. package/PageHeader/components/AutosizeInput/types.d.ts +10 -0
  133. package/PageHeader/components/AutosizeInput/types.js +1 -0
  134. package/PageHeader/components/PageHeader/PageHeader.d.ts +3 -0
  135. package/PageHeader/components/PageHeader/PageHeader.js +51 -0
  136. package/PageHeader/components/PageHeader/index.d.ts +1 -0
  137. package/PageHeader/components/PageHeader/index.js +1 -0
  138. package/PageHeader/components/PageHeader/styles.d.ts +9 -0
  139. package/PageHeader/components/PageHeader/styles.js +29 -0
  140. package/PageHeader/components/PageHeader/types.d.ts +15 -0
  141. package/PageHeader/components/PageHeader/types.js +1 -0
  142. package/PageHeader/components/PageHeaderEditable/PageHeaderEditable.d.ts +3 -0
  143. package/PageHeader/components/PageHeaderEditable/PageHeaderEditable.js +67 -0
  144. package/PageHeader/components/PageHeaderEditable/index.d.ts +1 -0
  145. package/PageHeader/components/PageHeaderEditable/index.js +1 -0
  146. package/PageHeader/components/PageHeaderEditable/styles.d.ts +10 -0
  147. package/PageHeader/components/PageHeaderEditable/styles.js +33 -0
  148. package/PageHeader/components/PageHeaderEditable/types.d.ts +21 -0
  149. package/PageHeader/components/PageHeaderEditable/types.js +1 -0
  150. package/PageHeader/components/PageHeaderError/PageHeaderError.d.ts +3 -0
  151. package/PageHeader/components/PageHeaderError/PageHeaderError.js +19 -0
  152. package/PageHeader/components/PageHeaderError/index.d.ts +1 -0
  153. package/PageHeader/components/PageHeaderError/index.js +1 -0
  154. package/PageHeader/components/PageHeaderError/styles.d.ts +6 -0
  155. package/PageHeader/components/PageHeaderError/styles.js +20 -0
  156. package/PageHeader/components/PageHeaderError/types.d.ts +5 -0
  157. package/PageHeader/components/PageHeaderError/types.js +1 -0
  158. package/PageHeader/components/PageHeaderSkeleton/PageHeaderSkeleton.d.ts +2 -0
  159. package/PageHeader/components/PageHeaderSkeleton/PageHeaderSkeleton.js +20 -0
  160. package/PageHeader/components/PageHeaderSkeleton/index.d.ts +1 -0
  161. package/PageHeader/components/PageHeaderSkeleton/index.js +1 -0
  162. package/PageHeader/components/PageHeaderSkeleton/styles.d.ts +5 -0
  163. package/PageHeader/components/PageHeaderSkeleton/styles.js +15 -0
  164. package/PageHeader/index.d.ts +3 -0
  165. package/PageHeader/index.js +3 -0
  166. package/Pagination/Pagination.d.ts +3 -0
  167. package/Pagination/Pagination.js +85 -0
  168. package/Pagination/helpers.d.ts +1 -0
  169. package/Pagination/helpers.js +4 -0
  170. package/Pagination/index.d.ts +1 -0
  171. package/Pagination/index.js +1 -0
  172. package/Pagination/styles.d.ts +8 -0
  173. package/Pagination/styles.js +35 -0
  174. package/Pagination/types.d.ts +9 -0
  175. package/Pagination/types.js +1 -0
  176. package/ProgressBar/ProgressBar.js +1 -1
  177. package/PushPreview/PushPreview.js +1 -1
  178. package/ReCaptcha/ReCaptcha.d.ts +2 -0
  179. package/ReCaptcha/ReCaptcha.js +8 -0
  180. package/ReCaptcha/constants.d.ts +3 -0
  181. package/ReCaptcha/constants.js +4 -0
  182. package/ReCaptcha/helpers.d.ts +1 -0
  183. package/ReCaptcha/helpers.js +15 -0
  184. package/ReCaptcha/hooks.d.ts +2 -0
  185. package/ReCaptcha/hooks.js +66 -0
  186. package/ReCaptcha/index.d.ts +3 -0
  187. package/ReCaptcha/index.js +3 -0
  188. package/ReCaptcha/styles.d.ts +1 -0
  189. package/ReCaptcha/styles.js +5 -0
  190. package/ReCaptcha/types.d.ts +8 -0
  191. package/ReCaptcha/types.js +1 -0
  192. package/Skeleton/TextSkeleton.d.ts +3 -0
  193. package/Skeleton/TextSkeleton.js +16 -0
  194. package/Skeleton/index.d.ts +2 -0
  195. package/Skeleton/index.js +2 -0
  196. package/Skeleton/styles.d.ts +4 -0
  197. package/Skeleton/styles.js +33 -0
  198. package/Skeleton/types.d.ts +16 -0
  199. package/Skeleton/types.js +1 -0
  200. package/SortButton/SortButton.d.ts +6 -0
  201. package/SortButton/SortButton.js +33 -0
  202. package/SortButton/constants.d.ts +2 -0
  203. package/SortButton/constants.js +1 -0
  204. package/SortButton/index.d.ts +1 -0
  205. package/SortButton/index.js +1 -0
  206. package/SortButton/maps.d.ts +10 -0
  207. package/SortButton/maps.js +15 -0
  208. package/SortButton/styles.d.ts +3 -0
  209. package/SortButton/styles.js +9 -0
  210. package/SortButton/types.d.ts +14 -0
  211. package/SortButton/types.js +1 -0
  212. package/StatisticCard/StatisticCard.js +1 -1
  213. package/Switch/Switch.d.ts +3 -0
  214. package/Switch/Switch.js +23 -0
  215. package/Switch/index.d.ts +1 -0
  216. package/Switch/index.js +1 -0
  217. package/Switch/styles.d.ts +5 -0
  218. package/Switch/styles.js +62 -0
  219. package/Switch/types.d.ts +15 -0
  220. package/Switch/types.js +1 -0
  221. package/Toast/Toast.d.ts +3 -0
  222. package/Toast/Toast.js +62 -0
  223. package/Toast/ToastProvider.d.ts +4 -0
  224. package/Toast/ToastProvider.js +45 -0
  225. package/Toast/constants.d.ts +8 -0
  226. package/Toast/constants.js +8 -0
  227. package/Toast/hooks.d.ts +2 -0
  228. package/Toast/hooks.js +9 -0
  229. package/Toast/index.d.ts +3 -0
  230. package/Toast/index.js +3 -0
  231. package/Toast/styles.d.ts +8 -0
  232. package/Toast/styles.js +23 -0
  233. package/Toast/types.d.ts +28 -0
  234. package/Toast/types.js +1 -0
  235. package/index.d.ts +10 -0
  236. package/index.js +10 -0
  237. package/package.json +1 -3
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { TextSkeletonTag } from './styles';
3
+ export function TextSkeleton(props) {
4
+ const {
5
+ children,
6
+ width,
7
+ ...rest
8
+ } = props;
9
+ return React.createElement(TextSkeletonTag, {
10
+ as: width ? 'div' : 'span',
11
+ style: width ? {
12
+ width
13
+ } : undefined,
14
+ ...rest
15
+ }, children || '-');
16
+ }
@@ -0,0 +1,2 @@
1
+ export { TextSkeleton } from './TextSkeleton';
2
+ export { RectangularSkeleton, CircularSkeleton } from './styles';
@@ -0,0 +1,2 @@
1
+ export { TextSkeleton } from './TextSkeleton';
2
+ export { RectangularSkeleton, CircularSkeleton } from './styles';
@@ -0,0 +1,4 @@
1
+ import type { CircularSkeletonProps, RectangularSkeletonProps, TextSkeletonProps } from './types';
2
+ export declare const RectangularSkeleton: import("styled-components").StyledComponent<"div", any, RectangularSkeletonProps, never>;
3
+ export declare const CircularSkeleton: import("styled-components").StyledComponent<"div", any, CircularSkeletonProps, never>;
4
+ export declare const TextSkeletonTag: import("styled-components").StyledComponent<"div", any, TextSkeletonProps, never>;
@@ -0,0 +1,33 @@
1
+ import styled, { keyframes, css } from 'styled-components';
2
+ import { toCssValue } from '@pushwoosh/kit-helpers';
3
+ const pulseKeyframe = keyframes(["0%{opacity:1;}50%{opacity:0.4;}100%{opacity:1;}"]);
4
+ const borderRadiusCss = css(["border-radius:", ";"], ({
5
+ borderRadius
6
+ }) => typeof borderRadius === 'undefined' ? 'initial' : toCssValue(borderRadius));
7
+ const skeletonCommonCss = css(["background-color:", ";animation:", " 1.5s ease-in-out 0.5s infinite;"], ({
8
+ color
9
+ }) => color || '#ddd', pulseKeyframe);
10
+ export const RectangularSkeleton = styled.div.withConfig({
11
+ displayName: "RectangularSkeleton",
12
+ componentId: "sc-mdyfd6-0"
13
+ })(["width:", ";height:", ";", " ", ""], ({
14
+ width
15
+ }) => toCssValue(width), ({
16
+ height
17
+ }) => toCssValue(height), skeletonCommonCss, borderRadiusCss);
18
+ export const CircularSkeleton = styled.div.withConfig({
19
+ displayName: "CircularSkeleton",
20
+ componentId: "sc-mdyfd6-1"
21
+ })(["width:", ";height:", ";border-radius:100%;", ""], ({
22
+ diameter
23
+ }) => toCssValue(diameter), ({
24
+ diameter
25
+ }) => toCssValue(diameter), skeletonCommonCss);
26
+ export const TextSkeletonTag = styled.div.withConfig({
27
+ displayName: "TextSkeletonTag",
28
+ componentId: "sc-mdyfd6-2"
29
+ })(["", " color:", ";border-radius:4px;", ""], ({
30
+ width
31
+ }) => width ? `width: ${toCssValue(width)};` : '', ({
32
+ color
33
+ }) => color || '#ddd', skeletonCommonCss);
@@ -0,0 +1,16 @@
1
+ export type SkeletonBorderRadiusProps = {
2
+ borderRadius?: number | string;
3
+ };
4
+ export type SkeletonCommonProps = {
5
+ color?: string;
6
+ };
7
+ export type RectangularSkeletonProps = SkeletonCommonProps & SkeletonBorderRadiusProps & {
8
+ width: number | string;
9
+ height: number | string;
10
+ };
11
+ export type CircularSkeletonProps = SkeletonCommonProps & {
12
+ diameter: number | string;
13
+ };
14
+ export type TextSkeletonProps = SkeletonCommonProps & SkeletonBorderRadiusProps & {
15
+ width?: number | string;
16
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { SortButtonProps } from './types';
3
+ export declare function SortButton(props: SortButtonProps): ReactElement;
4
+ export declare namespace SortButton {
5
+ var displayName: string;
6
+ }
@@ -0,0 +1,33 @@
1
+ import React, { useCallback } from 'react';
2
+ import { SortIcon } from '@pushwoosh/kit-icons';
3
+ import { AVAILABLE_ACTIVE_ORDERS } from './constants';
4
+ import { IconTypeByOrderMap, NextOrderMap, ReversedNextOrderMap } from './maps';
5
+ import { SortButtonBox } from './styles';
6
+ export function SortButton(props) {
7
+ const {
8
+ boxRef,
9
+ name,
10
+ order,
11
+ children,
12
+ isReversed,
13
+ onClick,
14
+ ...rest
15
+ } = props;
16
+ const handleClick = useCallback(() => {
17
+ onClick({
18
+ name,
19
+ order: isReversed ? ReversedNextOrderMap[order || 'none'] : NextOrderMap[order || 'none']
20
+ });
21
+ }, [name, order, isReversed, onClick]);
22
+ return React.createElement(SortButtonBox, {
23
+ ref: boxRef,
24
+ type: "button",
25
+ ...rest,
26
+ onClick: handleClick,
27
+ "$isActive": AVAILABLE_ACTIVE_ORDERS.includes(order)
28
+ }, React.createElement("span", null, children), React.createElement(SortIcon, {
29
+ size: "small",
30
+ type: IconTypeByOrderMap[order || 'none']
31
+ }));
32
+ }
33
+ SortButton.displayName = 'SortButton';
@@ -0,0 +1,2 @@
1
+ import type { SortButtonOrder } from './types';
2
+ export declare const AVAILABLE_ACTIVE_ORDERS: SortButtonOrder[];
@@ -0,0 +1 @@
1
+ export const AVAILABLE_ACTIVE_ORDERS = ['asc', 'desc'];
@@ -0,0 +1 @@
1
+ export { SortButton } from './SortButton';
@@ -0,0 +1 @@
1
+ export { SortButton } from './SortButton';
@@ -0,0 +1,10 @@
1
+ import type { SortButtonOrder, SortButtonIconType } from './types';
2
+ export declare const NextOrderMap: {
3
+ [key: string]: SortButtonOrder;
4
+ };
5
+ export declare const ReversedNextOrderMap: {
6
+ [key: string]: SortButtonOrder;
7
+ };
8
+ export declare const IconTypeByOrderMap: {
9
+ [key: string]: SortButtonIconType;
10
+ };
@@ -0,0 +1,15 @@
1
+ export const NextOrderMap = {
2
+ none: 'asc',
3
+ asc: 'desc',
4
+ desc: null
5
+ };
6
+ export const ReversedNextOrderMap = {
7
+ none: 'desc',
8
+ desc: 'asc',
9
+ asc: null
10
+ };
11
+ export const IconTypeByOrderMap = {
12
+ none: 'not-sorted',
13
+ asc: 'asc',
14
+ desc: 'desc'
15
+ };
@@ -0,0 +1,3 @@
1
+ export declare const SortButtonBox: import("styled-components").StyledComponent<"button", any, {
2
+ $isActive: boolean;
3
+ }, never>;
@@ -0,0 +1,9 @@
1
+ import styled from 'styled-components';
2
+ import { Color, FontSize, FontWeight, LineHeight, Spacing } from '@pushwoosh/kit-constants';
3
+ export const SortButtonBox = styled.button.withConfig({
4
+ displayName: "SortButtonBox",
5
+ componentId: "sc-dasl5x-0"
6
+ })(["display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;padding:0;color:", ";border:none;background-color:transparent;font-size:", ";font-weight:", ";line-height:", ";text-transform:uppercase;&:hover{color:", ";}&:active{color:", ";}& span{margin:0 ", " 0 0;}"], ({
7
+ $isActive
8
+ }) => $isActive ? Color.MAIN : Color.LOCKED, FontSize.HEADING5, FontWeight.MEDIUM, LineHeight.HEADING5, Color.PRIMARY_HOVER, Color.PRIMARY_PRESSED, Spacing.S1);
9
+ SortButtonBox.displayName = 'SortButtonBox';
@@ -0,0 +1,14 @@
1
+ import type { Ref } from 'react';
2
+ export type SortButtonOrder = 'asc' | 'desc' | null;
3
+ export type SortButtonIconType = 'asc' | 'desc' | 'not-sorted';
4
+ export type SortButtonParams = {
5
+ readonly name: string;
6
+ readonly order: SortButtonOrder;
7
+ };
8
+ export type SortButtonProps = Omit<JSX.IntrinsicElements['button'], 'ref' | 'onClick'> & {
9
+ readonly boxRef?: Ref<HTMLButtonElement>;
10
+ readonly name: string;
11
+ readonly order: SortButtonOrder;
12
+ readonly isReversed?: boolean;
13
+ readonly onClick: (params: SortButtonParams) => void;
14
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { Spacing } from '@pushwoosh/kit-constants';
3
3
  import { Horizontal } from '@pushwoosh/kit-helpers';
4
- import { Spinner } from '@pushwoosh/kit-spinner';
4
+ import { Spinner } from '../Spinner';
5
5
  import { Container, RightSlotContainer, StatValue, Title } from './styles';
6
6
  import { LockedText } from '../common';
7
7
  import { formatNumberWithSpaces } from './helpers';
@@ -0,0 +1,3 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { TProps } from './types';
3
+ export declare function Switch(props: TProps): ReactElement;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { Container, Box, Circle, Label } from './styles';
3
+ export function Switch(props) {
4
+ const {
5
+ labelPosition = 'right',
6
+ enabled = false,
7
+ isDisabled = false,
8
+ children,
9
+ onChange
10
+ } = props;
11
+ return React.createElement(Container, {
12
+ labelPosition: labelPosition
13
+ }, React.createElement(Box, {
14
+ enabled: enabled,
15
+ isDisabled: isDisabled,
16
+ onClick: onChange
17
+ }, React.createElement(Circle, {
18
+ enabled: enabled,
19
+ isDisabled: isDisabled
20
+ })), children && React.createElement(Label, {
21
+ labelPosition: labelPosition
22
+ }, children));
23
+ }
@@ -0,0 +1 @@
1
+ export { Switch } from './Switch';
@@ -0,0 +1 @@
1
+ export { Switch } from './Switch';
@@ -0,0 +1,5 @@
1
+ import type { AlignProps, ComponentProps } from './types';
2
+ export declare const Container: import("styled-components").StyledComponent<"div", any, AlignProps, never>;
3
+ export declare const Box: import("styled-components").StyledComponent<"div", any, ComponentProps, never>;
4
+ export declare const Circle: import("styled-components").StyledComponent<"div", any, ComponentProps, never>;
5
+ export declare const Label: import("styled-components").StyledComponent<"div", any, AlignProps, never>;
@@ -0,0 +1,62 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { Spacing, Color, FontSize, FontWeight } from '@pushwoosh/kit-constants';
3
+ const defineColorBackgroundBox = css(["", ""], props => {
4
+ if (props.isDisabled && !props.enabled) {
5
+ return Color.CLEAR;
6
+ }
7
+ if (props.isDisabled && props.enabled) {
8
+ return Color.LOCKED;
9
+ }
10
+ if (props.enabled) {
11
+ return Color.PRIMARY_HOVER;
12
+ }
13
+ return Color.CLEAR;
14
+ });
15
+ const defineColorBorderBox = css(["", ""], props => {
16
+ if (props.isDisabled) {
17
+ return Color.LOCKED;
18
+ }
19
+ if (props.enabled) {
20
+ return Color.PRIMARY_HOVER;
21
+ }
22
+ return Color.PHANTOM;
23
+ });
24
+ const defineColorCircle = css(["", ""], props => {
25
+ if (props.isDisabled && props.enabled) {
26
+ return Color.CLEAR;
27
+ }
28
+ if (props.isDisabled && !props.enabled) {
29
+ return Color.LOCKED;
30
+ }
31
+ if (!props.isDisabled && props.enabled) {
32
+ return Color.CLEAR;
33
+ }
34
+ return Color.MAIN;
35
+ });
36
+ const cssActive = css(["&:active{background:", ";border:2px solid ", ";}"], Color.PRIMARY_HOVER, Color.PRIMARY_PRESSED);
37
+ export const Container = styled.div.withConfig({
38
+ displayName: "Container",
39
+ componentId: "sc-csdrg2-0"
40
+ })(["display:flex;align-items:center;flex-direction:", ";"], ({
41
+ labelPosition
42
+ }) => labelPosition === 'left' ? 'row-reverse' : 'row');
43
+ export const Box = styled.div.attrs({
44
+ tabIndex: '0'
45
+ }).withConfig({
46
+ displayName: "Box",
47
+ componentId: "sc-csdrg2-1"
48
+ })(["display:flex;align-items:center;justify-content:", ";width:36px;height:20px;border:2px solid ", ";border-radius:10px;background-color:", ";outline:none;cursor:pointer;", ""], ({
49
+ enabled
50
+ }) => enabled ? 'flex-end' : 'flex-start', defineColorBorderBox, defineColorBackgroundBox, ({
51
+ isDisabled
52
+ }) => isDisabled ? '' : cssActive);
53
+ export const Circle = styled.div.withConfig({
54
+ displayName: "Circle",
55
+ componentId: "sc-csdrg2-2"
56
+ })(["margin:0 ", ";width:12px;height:12px;background:", ";border-radius:50%;"], Spacing.S0, defineColorCircle);
57
+ export const Label = styled.div.withConfig({
58
+ displayName: "Label",
59
+ componentId: "sc-csdrg2-3"
60
+ })(["display:flex;align-items:center;margin-left:", ";color:", ";font-size:", ";font-weight:", ";margin:", ";"], Spacing.S3, Color.MAIN, FontSize.REGULAR, FontWeight.MEDIUM, ({
61
+ labelPosition
62
+ }) => labelPosition === 'left' ? `0 ${Spacing.S3} 0` : `0 0 0 ${Spacing.S3}`);
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface TProps {
3
+ labelPosition?: 'left' | 'right';
4
+ enabled?: boolean;
5
+ isDisabled?: boolean;
6
+ children?: ReactNode;
7
+ onChange: () => void;
8
+ }
9
+ export interface AlignProps {
10
+ labelPosition?: string;
11
+ }
12
+ export interface ComponentProps {
13
+ enabled: boolean;
14
+ isDisabled?: boolean;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { ToastProps } from './types';
3
+ export declare function Toast(props: ToastProps): ReactElement;
package/Toast/Toast.js ADDED
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { createPortal } from 'react-dom';
3
+ import { InfoRoundIcon, CheckRoundIcon, WarningRoundIcon, DangerTriangleIcon, CloseIcon } from '@pushwoosh/kit-icons';
4
+ import { H4, Paragraph } from '@pushwoosh/kit-typography';
5
+ import { TypeColorMap } from './constants';
6
+ import { RootBox, IconBox, ContentBox, CloseBox } from './styles';
7
+ function getIconByType(type) {
8
+ switch (type) {
9
+ case 'info':
10
+ return React.createElement(InfoRoundIcon, {
11
+ view: "filled",
12
+ size: "medium",
13
+ color: TypeColorMap[type]
14
+ });
15
+ case 'success':
16
+ return React.createElement(CheckRoundIcon, {
17
+ view: "filled",
18
+ type: "fill",
19
+ size: "medium",
20
+ color: TypeColorMap[type]
21
+ });
22
+ case 'warning':
23
+ return React.createElement(WarningRoundIcon, {
24
+ view: "filled",
25
+ size: "medium",
26
+ color: TypeColorMap[type]
27
+ });
28
+ case 'error':
29
+ return React.createElement(DangerTriangleIcon, {
30
+ view: "filled",
31
+ size: "medium",
32
+ color: TypeColorMap[type]
33
+ });
34
+ default:
35
+ return React.createElement(InfoRoundIcon, {
36
+ view: "filled",
37
+ size: "medium",
38
+ color: TypeColorMap[type]
39
+ });
40
+ }
41
+ }
42
+ export function Toast(props) {
43
+ const {
44
+ open,
45
+ toast,
46
+ onClose
47
+ } = props;
48
+ const {
49
+ title,
50
+ description,
51
+ type,
52
+ additionalContent
53
+ } = toast;
54
+ return createPortal(React.createElement(RootBox, {
55
+ open: open,
56
+ type: type
57
+ }, React.createElement(IconBox, null, getIconByType(type)), React.createElement(ContentBox, null, React.createElement(H4, null, title), description && React.createElement(Paragraph, null, description), additionalContent && React.createElement("div", null, additionalContent)), React.createElement(CloseBox, {
58
+ onClick: onClose
59
+ }, React.createElement(CloseIcon, {
60
+ size: "medium"
61
+ }))), document.body);
62
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ToastContextProps, ToastProviderProps } from './types';
3
+ export declare const ToastContext: React.Context<ToastContextProps | null>;
4
+ export declare const ToastProvider: ({ children }: ToastProviderProps) => React.JSX.Element;
@@ -0,0 +1,45 @@
1
+ import React, { useState, useMemo, useCallback, createContext } from 'react';
2
+ import { DEFAULT_DURATION } from './constants';
3
+ import { Toast } from './Toast';
4
+ export const ToastContext = createContext(null);
5
+ export const ToastProvider = ({
6
+ children
7
+ }) => {
8
+ const initialState = {
9
+ title: '',
10
+ description: '',
11
+ type: 'info',
12
+ duration: DEFAULT_DURATION
13
+ };
14
+ const [open, setOpen] = useState(false);
15
+ const [toast, setToast] = useState(initialState);
16
+ const closeToast = useCallback(() => setOpen(false), []);
17
+ const openToast = useCallback(({
18
+ title = '',
19
+ description = '',
20
+ duration = DEFAULT_DURATION,
21
+ type = 'info',
22
+ additionalContent = null
23
+ }) => {
24
+ setOpen(true);
25
+ setToast({
26
+ title,
27
+ description,
28
+ duration,
29
+ type,
30
+ additionalContent
31
+ });
32
+ setTimeout(closeToast, duration);
33
+ }, [closeToast]);
34
+ const contextValue = useMemo(() => ({
35
+ openToast,
36
+ closeToast
37
+ }), [openToast, closeToast]);
38
+ return React.createElement(ToastContext.Provider, {
39
+ value: contextValue
40
+ }, children, React.createElement(Toast, {
41
+ open: open,
42
+ toast: toast,
43
+ onClose: closeToast
44
+ }));
45
+ };
@@ -0,0 +1,8 @@
1
+ import { Color } from '@pushwoosh/kit-constants';
2
+ export declare const DEFAULT_DURATION = 3000;
3
+ export declare const TypeColorMap: {
4
+ info: Color;
5
+ success: Color;
6
+ warning: Color;
7
+ error: Color;
8
+ };
@@ -0,0 +1,8 @@
1
+ import { Color } from '@pushwoosh/kit-constants';
2
+ export const DEFAULT_DURATION = 3000;
3
+ export const TypeColorMap = {
4
+ info: Color.BRIGHT,
5
+ success: Color.SUCCESS,
6
+ warning: Color.WARNING,
7
+ error: Color.DANGER
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { ToastContextProps } from './types';
2
+ export declare const useToast: () => ToastContextProps;
package/Toast/hooks.js ADDED
@@ -0,0 +1,9 @@
1
+ import { useContext } from 'react';
2
+ import { ToastContext } from './ToastProvider';
3
+ export const useToast = () => {
4
+ const context = useContext(ToastContext);
5
+ if (!context) {
6
+ throw new Error('useToast must be used within a ToastProvider');
7
+ }
8
+ return context;
9
+ };
@@ -0,0 +1,3 @@
1
+ export { Toast } from './Toast';
2
+ export { ToastProvider } from './ToastProvider';
3
+ export { useToast } from './hooks';
package/Toast/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Toast } from './Toast';
2
+ export { ToastProvider } from './ToastProvider';
3
+ export { useToast } from './hooks';
@@ -0,0 +1,8 @@
1
+ import type { ToastType } from './types';
2
+ export declare const RootBox: import("styled-components").StyledComponent<"div", any, {
3
+ open: boolean;
4
+ type: ToastType;
5
+ }, never>;
6
+ export declare const IconBox: import("styled-components").StyledComponent<"div", any, {}, never>;
7
+ export declare const ContentBox: import("styled-components").StyledComponent<"div", any, {}, never>;
8
+ export declare const CloseBox: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,23 @@
1
+ import styled from 'styled-components';
2
+ import { Color, Spacing, Shadow, ShapeRadius } from '@pushwoosh/kit-constants';
3
+ import { TypeColorMap } from './constants';
4
+ export const RootBox = styled.div.withConfig({
5
+ displayName: "RootBox",
6
+ componentId: "sc-8jll5u-0"
7
+ })(["position:fixed;display:flex;align-items:flex-start;width:380px;top:", ";left:50%;transform:translateX(-50%);color:", ";padding:", " 0 ", ";border-radius:", ";border:1px solid ", ";background:", ";box-shadow:", ";transition:top 250ms;z-index:999999999;"], ({
8
+ open
9
+ }) => open ? '50px' : '-250px', Color.MAIN, Spacing.S5, Spacing.S5, ShapeRadius.DIALOG, ({
10
+ type
11
+ }) => TypeColorMap[type], Color.CLEAR, Shadow.LARGE);
12
+ export const IconBox = styled.div.withConfig({
13
+ displayName: "IconBox",
14
+ componentId: "sc-8jll5u-1"
15
+ })(["display:flex;align-items:center;justify-content:center;width:56px;height:100%;padding:0 ", ";box-sizing:border-box;"], Spacing.S5);
16
+ export const ContentBox = styled.div.withConfig({
17
+ displayName: "ContentBox",
18
+ componentId: "sc-8jll5u-2"
19
+ })(["display:flex;flex-direction:column;justify-content:center;width:100%;min-height:24px;flex-grow:1;gap:", ";"], Spacing.S0);
20
+ export const CloseBox = styled.div.withConfig({
21
+ displayName: "CloseBox",
22
+ componentId: "sc-8jll5u-3"
23
+ })(["display:flex;padding:0 14px;cursor:pointer;"]);
@@ -0,0 +1,28 @@
1
+ import type { ReactNode } from 'react';
2
+ export type ToastType = 'info' | 'success' | 'warning' | 'error';
3
+ export type ToastParams = {
4
+ title: string;
5
+ description?: string;
6
+ duration: number;
7
+ type: ToastType;
8
+ additionalContent?: ReactNode;
9
+ };
10
+ export type OpenToastParams = {
11
+ title: string;
12
+ description?: string;
13
+ duration?: number;
14
+ type?: ToastType;
15
+ additionalContent?: ReactNode;
16
+ };
17
+ export interface ToastContextProps {
18
+ openToast: (params: OpenToastParams) => void;
19
+ closeToast: () => void;
20
+ }
21
+ export interface ToastProviderProps {
22
+ children: ReactNode;
23
+ }
24
+ export interface ToastProps {
25
+ open: boolean;
26
+ toast: ToastParams;
27
+ onClose: () => void;
28
+ }
package/Toast/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/index.d.ts CHANGED
@@ -4,16 +4,26 @@ export { Banner, type BannerType } from './Banner';
4
4
  export { Button, GhostButton } from './Button';
5
5
  export { CardMetric } from './CardMetric';
6
6
  export { Checkbox } from './Checkbox';
7
+ export { DropdownMenu, DropdownMenuProvider, useDropdownMenuContext, DropdownMenuContainer, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemBox, DropdownMenuItemCheckbox, DropdownMenuItemPick, DropdownMenuItemRadio, DropdownMenuNested, DropdownMenuWindow, } from './DropdownMenu';
7
8
  export { EditableField } from './EditableField';
9
+ export { InputFile } from './InputFile';
10
+ export { Modal, ModalTitle, ModalConfirm, ModalConfirmProvider, useModalConfirm, ModalHeader, ModalBodyGroup, ModalBodyItem, ModalBody, ModalFooter, } from './Modal';
11
+ export { Pagination } from './Pagination';
8
12
  export { ProgressBar } from './ProgressBar';
9
13
  export { Popover } from './Popover';
10
14
  export { Radio } from './Radio';
15
+ export { ReCaptcha, useRecaptcha, asyncScriptLoad } from './ReCaptcha';
11
16
  export { Spinner } from './Spinner';
17
+ export { SortButton } from './SortButton';
18
+ export { Switch } from './Switch';
12
19
  export { Tooltip, type TooltipPosition } from './Tooltip';
13
20
  export { Tab, TabBar, TabPanel, Tabs, type TabCode } from './Tabs';
21
+ export { Link } from './Link';
14
22
  export { StatisticCard } from './StatisticCard';
15
23
  export { EmailTemplatePreview, NoEmailTemplatePreview } from './EmailTemplatePreview';
16
24
  export { PushPreview } from './PushPreview';
25
+ export { Toast, ToastProvider, useToast } from './Toast';
26
+ export { AutosizeInput, PageHeader, PageHeaderEditable } from './PageHeader';
17
27
  export { ExportResult } from './ExportResult';
18
28
  export { NativeInput, NativeTextarea, NativeSelect } from './native';
19
29
  export { FieldBox } from './FieldBox';
package/index.js CHANGED
@@ -4,16 +4,26 @@ export { Banner } from './Banner';
4
4
  export { Button, GhostButton } from './Button';
5
5
  export { CardMetric } from './CardMetric';
6
6
  export { Checkbox } from './Checkbox';
7
+ export { DropdownMenu, DropdownMenuProvider, useDropdownMenuContext, DropdownMenuContainer, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemBox, DropdownMenuItemCheckbox, DropdownMenuItemPick, DropdownMenuItemRadio, DropdownMenuNested, DropdownMenuWindow } from './DropdownMenu';
7
8
  export { EditableField } from './EditableField';
9
+ export { InputFile } from './InputFile';
10
+ export { Modal, ModalTitle, ModalConfirm, ModalConfirmProvider, useModalConfirm, ModalHeader, ModalBodyGroup, ModalBodyItem, ModalBody, ModalFooter } from './Modal';
11
+ export { Pagination } from './Pagination';
8
12
  export { ProgressBar } from './ProgressBar';
9
13
  export { Popover } from './Popover';
10
14
  export { Radio } from './Radio';
15
+ export { ReCaptcha, useRecaptcha, asyncScriptLoad } from './ReCaptcha';
11
16
  export { Spinner } from './Spinner';
17
+ export { SortButton } from './SortButton';
18
+ export { Switch } from './Switch';
12
19
  export { Tooltip } from './Tooltip';
13
20
  export { Tab, TabBar, TabPanel, Tabs } from './Tabs';
21
+ export { Link } from './Link';
14
22
  export { StatisticCard } from './StatisticCard';
15
23
  export { EmailTemplatePreview, NoEmailTemplatePreview } from './EmailTemplatePreview';
16
24
  export { PushPreview } from './PushPreview';
25
+ export { Toast, ToastProvider, useToast } from './Toast';
26
+ export { AutosizeInput, PageHeader, PageHeaderEditable } from './PageHeader';
17
27
  export { ExportResult } from './ExportResult';
18
28
  export { NativeInput, NativeTextarea, NativeSelect } from './native';
19
29
  export { FieldBox } from './FieldBox';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/dumb-components",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "React components to build Pushwoosh products",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -40,10 +40,8 @@
40
40
  "npm": ">= 7"
41
41
  },
42
42
  "dependencies": {
43
- "@pushwoosh/kit-button": "^2.3.5",
44
43
  "@pushwoosh/kit-helpers": "^4.6.2",
45
44
  "@pushwoosh/kit-icons": "^2.1.1",
46
- "@pushwoosh/kit-spinner": "^1.5.1",
47
45
  "@pushwoosh/kit-typography": "^1.7.1",
48
46
  "liquidjs": "^10.18.0",
49
47
  "lodash": "^4.17.21",