@blerp/design 1.2.74 → 1.2.76

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 (83) hide show
  1. package/dist/cjs/Blerp/BlerpImageRow.js +167 -0
  2. package/dist/cjs/Blerp/BlerpSavePopup.js +157 -0
  3. package/dist/cjs/Blerp/BlerpTitleRow.js +116 -0
  4. package/dist/cjs/Blerp/BlerpTopRow.js +246 -0
  5. package/dist/cjs/Blerp.js +239 -0
  6. package/dist/cjs/BlerpAudioContextProvider.js +141 -0
  7. package/dist/cjs/BlerpListView.js +357 -0
  8. package/dist/cjs/BlerpListViewPremium.js +404 -0
  9. package/dist/cjs/BlerpListViewSkeleton.js +27 -0
  10. package/dist/cjs/BlerpSkeleton.js +23 -0
  11. package/dist/cjs/CollectionCard.js +402 -0
  12. package/dist/cjs/CollectionListViewPremium.js +368 -0
  13. package/dist/cjs/CollectionSkeleton.js +28 -0
  14. package/dist/cjs/Dropdown.js +283 -0
  15. package/dist/cjs/EllipsisLoader.js +51 -0
  16. package/dist/cjs/GroupCard.js +172 -0
  17. package/dist/cjs/Icons/Icons.js +606 -0
  18. package/dist/cjs/ImageUploadModal.js +278 -0
  19. package/dist/cjs/Lotties/JiggleLock.json.js +2762 -0
  20. package/dist/cjs/Lotties/LottieAnimation.js +32 -0
  21. package/dist/cjs/NewBlerp.js +740 -0
  22. package/dist/cjs/NewBlerpTest.js +808 -0
  23. package/dist/cjs/NewCollectionModal.js +403 -0
  24. package/dist/cjs/PremiumCollectionCard.js +511 -0
  25. package/dist/cjs/PurchaseModals/CheckoutModal.js +39 -0
  26. package/dist/cjs/PurchaseModals/PremiumBlerpCheckoutModal.js +39 -0
  27. package/dist/cjs/PurchaseModals/PremiumCollectionCheckoutModal.js +39 -0
  28. package/dist/cjs/PurchaseModals/PremiumSubscriptionCheckoutModal.js +39 -0
  29. package/dist/cjs/ReactionButtons.js +65 -0
  30. package/dist/cjs/ScreenSizeHook.js +34 -0
  31. package/dist/cjs/SnackbarContextProvider.js +166 -0
  32. package/dist/cjs/Theme.js +255 -0
  33. package/dist/cjs/Toggle.js +59 -0
  34. package/dist/cjs/UserCard.js +141 -0
  35. package/dist/cjs/UserPage/LibraryControls.js +315 -0
  36. package/dist/cjs/UserPage/UserLibraryHeader.js +93 -0
  37. package/dist/cjs/UserPage/UserProfileHeader.js +283 -0
  38. package/dist/cjs/UsernameWithPopout.js +93 -0
  39. package/dist/cjs/colors.js +368 -0
  40. package/dist/cjs/icons.js +161 -0
  41. package/dist/cjs/index.js +449 -0
  42. package/dist/esm/Blerp/BlerpImageRow.js +157 -0
  43. package/dist/esm/Blerp/BlerpSavePopup.js +147 -0
  44. package/dist/esm/Blerp/BlerpTitleRow.js +108 -0
  45. package/dist/esm/Blerp/BlerpTopRow.js +236 -0
  46. package/dist/esm/Blerp.js +230 -0
  47. package/dist/esm/BlerpAudioContextProvider.js +132 -0
  48. package/dist/esm/BlerpListView.js +344 -0
  49. package/dist/esm/BlerpListViewPremium.js +391 -0
  50. package/dist/esm/BlerpListViewSkeleton.js +17 -0
  51. package/dist/esm/BlerpSkeleton.js +13 -0
  52. package/dist/esm/CollectionCard.js +392 -0
  53. package/dist/esm/CollectionListViewPremium.js +354 -0
  54. package/dist/esm/CollectionSkeleton.js +18 -0
  55. package/dist/esm/Dropdown.js +273 -0
  56. package/dist/esm/EllipsisLoader.js +41 -0
  57. package/dist/esm/GroupCard.js +162 -0
  58. package/dist/esm/Icons/Icons.js +571 -0
  59. package/dist/esm/ImageUploadModal.js +265 -0
  60. package/dist/esm/Lotties/JiggleLock.json.js +2747 -0
  61. package/dist/esm/Lotties/LottieAnimation.js +25 -0
  62. package/dist/esm/NewBlerp.js +719 -0
  63. package/dist/esm/NewBlerpTest.js +787 -0
  64. package/dist/esm/NewCollectionModal.js +391 -0
  65. package/dist/esm/PremiumCollectionCard.js +498 -0
  66. package/dist/esm/PurchaseModals/CheckoutModal.js +33 -0
  67. package/dist/esm/PurchaseModals/PremiumBlerpCheckoutModal.js +33 -0
  68. package/dist/esm/PurchaseModals/PremiumCollectionCheckoutModal.js +33 -0
  69. package/dist/esm/PurchaseModals/PremiumSubscriptionCheckoutModal.js +33 -0
  70. package/dist/esm/ReactionButtons.js +57 -0
  71. package/dist/esm/ScreenSizeHook.js +30 -0
  72. package/dist/esm/SnackbarContextProvider.js +154 -0
  73. package/dist/esm/Theme.js +246 -0
  74. package/dist/esm/Toggle.js +49 -0
  75. package/dist/esm/UserCard.js +133 -0
  76. package/dist/esm/UserPage/LibraryControls.js +301 -0
  77. package/dist/esm/UserPage/UserLibraryHeader.js +87 -0
  78. package/dist/esm/UserPage/UserProfileHeader.js +268 -0
  79. package/dist/esm/UsernameWithPopout.js +85 -0
  80. package/dist/esm/colors.js +360 -0
  81. package/dist/esm/icons.js +159 -0
  82. package/dist/esm/index.js +336 -0
  83. package/package.json +2 -1
@@ -0,0 +1,30 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ const useWindowSize = () => {
4
+ const isClient = typeof window === "object";
5
+
6
+ function getSize() {
7
+ return {
8
+ width: isClient ? window.innerWidth : undefined,
9
+ height: isClient ? window.innerHeight : undefined
10
+ };
11
+ }
12
+
13
+ const [windowSize, setWindowSize] = useState(getSize);
14
+ useEffect(() => {
15
+ if (!isClient) {
16
+ return false;
17
+ }
18
+
19
+ function handleResize() {
20
+ setWindowSize(getSize());
21
+ }
22
+
23
+ window.addEventListener("resize", handleResize);
24
+ return () => window.removeEventListener("resize", handleResize);
25
+ }, []); // Empty array ensures that effect is only run on mount and unmount
26
+
27
+ return windowSize;
28
+ };
29
+
30
+ export { useWindowSize };
@@ -0,0 +1,154 @@
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import React, { useState } from 'react';
3
+ import Slide from '@mui/material/Slide';
4
+ import Fade from '@mui/material/Fade';
5
+ import { Snackbar, Alert } from './index.js';
6
+
7
+ /*
8
+ snackbarContext.triggerSnackbar({
9
+ message: `Added to ${collection.title}`,
10
+ severity: "success",
11
+ actionButton: (
12
+ <Button
13
+ color="inherit"
14
+ variant="text"
15
+ size="small"
16
+ onClick={() => {
17
+ globalContext.setActiveBoard(collection);
18
+ }}>
19
+ View
20
+ </Button>
21
+ ),
22
+ });
23
+ */
24
+
25
+ const SnackbarContext = /*#__PURE__*/React.createContext({
26
+ snackbarValues: {
27
+ open: false,
28
+ message: "Set a message",
29
+ position: {
30
+ vertical: "bottom",
31
+ horizontal: "center"
32
+ },
33
+ slideDirection: "up",
34
+ transitionType: "slide",
35
+ severity: "success",
36
+ actionButton: /*#__PURE__*/React.createElement(React.Fragment, null),
37
+ autoHideDuration: 5000
38
+ },
39
+ triggerSnackbar: () => null
40
+ });
41
+
42
+ const SnackbarProvider = props => {
43
+ const [open, setOpen] = useState(false);
44
+ const [snackbarValues, setSnackbarValues] = useState({
45
+ message: "Set a message",
46
+ position: {
47
+ vertical: "bottom",
48
+ horizontal: "center"
49
+ },
50
+ color: "grey8",
51
+ transitionType: "slide",
52
+ slideDirection: "up",
53
+ severity: "success",
54
+ actionButton: /*#__PURE__*/React.createElement(React.Fragment, null),
55
+ autoHideDuration: 5000
56
+ });
57
+
58
+ const triggerSnackbar = _ref => {
59
+ let {
60
+ message = "Set a message",
61
+ position = {
62
+ vertical: "bottom",
63
+ horizontal: "center"
64
+ },
65
+ slideDirection = "up",
66
+ transitionType = "slide",
67
+ severity = "success",
68
+ color,
69
+ actionButton = /*#__PURE__*/React.createElement(React.Fragment, null),
70
+ autoHideDuration = 5000
71
+ } = _ref;
72
+
73
+ if (!color) {
74
+ switch (severity) {
75
+ case "success":
76
+ color = "grey3"; // figure out how to fix seafoam text
77
+
78
+ break;
79
+
80
+ case "error":
81
+ color = "ibisRed";
82
+ break;
83
+
84
+ default:
85
+ color = "notBlack";
86
+ break;
87
+ }
88
+ }
89
+
90
+ setOpen(true);
91
+ setSnackbarValues({
92
+ message,
93
+ position,
94
+ color,
95
+ transitionType,
96
+ slideDirection,
97
+ severity,
98
+ actionButton,
99
+ autoHideDuration
100
+ });
101
+ setTimeout(() => {
102
+ setOpen(false);
103
+ }, autoHideDuration);
104
+ };
105
+
106
+ return /*#__PURE__*/React.createElement(SnackbarContext.Provider, {
107
+ value: {
108
+ snackbarValues: snackbarValues,
109
+ setSnackbarValues: setSnackbarValues,
110
+ triggerSnackbar: props => {
111
+ // TODO: figure out why setTimeout is needed to show every time
112
+ setTimeout(() => {
113
+ triggerSnackbar(props);
114
+ });
115
+ }
116
+ }
117
+ }, /*#__PURE__*/React.createElement(Snackbar, {
118
+ anchorOrigin: { ...snackbarValues.position
119
+ },
120
+ autoHideDuration: snackbarValues.autoHideDuration,
121
+ open: open,
122
+ sx: {
123
+ minWidth: "30%"
124
+ },
125
+ TransitionComponent: props => {
126
+ if (snackbarValues.transitionType === "fade") {
127
+ return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {
128
+ direction: snackbarValues.slideDirection,
129
+ unmountOnExit: true
130
+ }));
131
+ } else {
132
+ return /*#__PURE__*/React.createElement(Slide, _extends({}, props, {
133
+ direction: snackbarValues.slideDirection,
134
+ unmountOnExit: true
135
+ }));
136
+ }
137
+ },
138
+ onClose: () => setOpen(false),
139
+ key: "snackbar-toast"
140
+ }, /*#__PURE__*/React.createElement(Alert, {
141
+ severity: snackbarValues.severity,
142
+ variant: "filled",
143
+ color: snackbarValues.color,
144
+ action: snackbarValues.actionButton,
145
+ sx: {
146
+ width: "100%",
147
+ "& svg": {
148
+ color: "inherit"
149
+ }
150
+ }
151
+ }, snackbarValues.message)), props.children);
152
+ };
153
+
154
+ export { SnackbarContext, SnackbarProvider };
@@ -0,0 +1,246 @@
1
+ import React from 'react';
2
+ import { createTheme, ThemeProvider } from '@mui/material/styles';
3
+ import { ThemeProvider as ThemeProvider$1 } from 'styled-components';
4
+ import icons from './icons.js';
5
+ import colors, { lightColors, lightPalette, darkColors, darkPalette } from './colors.js';
6
+ import { mainTheme } from './index.js';
7
+ import { SnackbarProvider } from './SnackbarContextProvider.js';
8
+
9
+ const fonts = "@font-face {\n font-family: \"Odudo\";\n font-weight: normal;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: lighter;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: 300;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Light.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: 400;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Regular.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: bolder;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: 600;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/Odudo%20V1.3/WEB/odudo-semibold-webfont.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: bold;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.woff\")\n format(\"woff\");\n}\n\n@font-face {\n font-family: \"Odudo\";\n font-weight: 700;\n font-display: swap;\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.eot\");\n src: url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.woff2\")\n format(\"woff2\"),\n url(\"https://cdn.blerp.com/blerp-web-images/fonts/web/Odudo-Bold.woff\")\n format(\"woff\");\n}";
10
+ const theme = createTheme({
11
+ typography: {
12
+ fontFamily: "Odudo, Arial"
13
+ },
14
+ components: {
15
+ MuiPopover: {
16
+ defaultProps: {
17
+ BackdropProps: {
18
+ sx: {
19
+ backgroundColor: "transparent",
20
+ backdropFilter: "none"
21
+ }
22
+ }
23
+ }
24
+ },
25
+ MuiBackdrop: {
26
+ styleOverrides: {
27
+ root: {
28
+ backgroundColor: "".concat(colors.grey6, "70"),
29
+ backdropFilter: "blur(4px)"
30
+ }
31
+ }
32
+ },
33
+ MuiSvgIcon: {
34
+ styleOverrides: {
35
+ root: {
36
+ color: colors.notBlack
37
+ }
38
+ }
39
+ },
40
+ MuiFilledInput: {
41
+ styleOverrides: {
42
+ root: {
43
+ color: colors.notBlack,
44
+ backgroundColor: colors.grey2,
45
+ "& textarea": {
46
+ color: colors.notBlack
47
+ },
48
+ ":hover": {
49
+ backgroundColor: colors.grey2
50
+ },
51
+ ":before": {
52
+ borderColor: colors.notBlack
53
+ },
54
+ ":hover:before": {
55
+ borderColor: "".concat(colors.notBlack, " !important")
56
+ }
57
+ }
58
+ }
59
+ },
60
+ MuiInput: {
61
+ styleOverrides: {
62
+ root: {
63
+ color: colors.notBlack,
64
+ borderColor: colors.notBlack,
65
+ ":before": {
66
+ borderColor: colors.notBlack
67
+ },
68
+ ":hover:before": {
69
+ borderColor: "".concat(colors.notBlack, " !important")
70
+ }
71
+ }
72
+ }
73
+ },
74
+ MuiInputLabel: {
75
+ styleOverrides: {
76
+ root: {
77
+ color: colors.notBlack
78
+ }
79
+ }
80
+ },
81
+ MuiTypography: {
82
+ styleOverrides: {
83
+ root: {
84
+ color: colors.notBlack
85
+ }
86
+ }
87
+ },
88
+ MuiButton: {
89
+ styleOverrides: {
90
+ root: {
91
+ borderRadius: "30px",
92
+ fontWeight: "600",
93
+ letterSpacing: "0.05rem",
94
+ textTransform: "capitalize"
95
+ }
96
+ },
97
+ variants: [{
98
+ props: {
99
+ variant: "outlined"
100
+ },
101
+ style: {
102
+ borderWidth: "2px",
103
+ "&:hover": {
104
+ borderWidth: "2px"
105
+ }
106
+ }
107
+ }]
108
+ },
109
+ MuiCssBaseline: {
110
+ styleOverrides: "\n ".concat(fonts, "\n ")
111
+ }
112
+ },
113
+ mode: "light",
114
+ colors: lightColors,
115
+ icons: icons,
116
+ palette: lightPalette
117
+ });
118
+ const darkTheme = createTheme({
119
+ typography: {
120
+ fontFamily: "Odudo, Arial"
121
+ },
122
+ components: {
123
+ MuiTypography: {
124
+ styleOverrides: {
125
+ root: {
126
+ color: colors.white
127
+ }
128
+ }
129
+ },
130
+ MuiFilledInput: {
131
+ styleOverrides: {
132
+ root: {
133
+ color: colors.white,
134
+ backgroundColor: colors.grey7,
135
+ "& textarea": {
136
+ color: colors.white
137
+ },
138
+ ":hover": {
139
+ backgroundColor: colors.grey7
140
+ },
141
+ ":before": {
142
+ borderColor: colors.waxwing
143
+ },
144
+ ":hover:before": {
145
+ borderColor: "".concat(colors.white, " !important")
146
+ }
147
+ }
148
+ }
149
+ },
150
+ MuiInput: {
151
+ styleOverrides: {
152
+ root: {
153
+ color: colors.white,
154
+ borderColor: colors.white,
155
+ ":before": {
156
+ borderColor: colors.waxwing
157
+ },
158
+ ":hover:before": {
159
+ borderColor: "".concat(colors.white, " !important")
160
+ }
161
+ }
162
+ }
163
+ },
164
+ MuiInputLabel: {
165
+ styleOverrides: {
166
+ root: {
167
+ color: colors.white
168
+ }
169
+ }
170
+ },
171
+ MuiPopover: {
172
+ defaultProps: {
173
+ BackdropProps: {
174
+ sx: {
175
+ backgroundColor: "transparent",
176
+ backdropFilter: "none"
177
+ }
178
+ }
179
+ }
180
+ },
181
+ MuiBackdrop: {
182
+ styleOverrides: {
183
+ root: {
184
+ backgroundColor: "".concat(colors.grey5, "70"),
185
+ backdropFilter: "blur(4px)"
186
+ }
187
+ }
188
+ },
189
+ MuiSvgIcon: {
190
+ styleOverrides: {
191
+ root: {
192
+ color: colors.white
193
+ }
194
+ }
195
+ },
196
+ MuiButton: {
197
+ styleOverrides: {
198
+ root: {
199
+ borderRadius: "30px",
200
+ fontWeight: "600",
201
+ letterSpacing: "0.05rem",
202
+ textTransform: "capitalize"
203
+ }
204
+ },
205
+ variants: [{
206
+ props: {
207
+ variant: "outlined"
208
+ },
209
+ style: {
210
+ borderWidth: "2px",
211
+ "&:hover": {
212
+ borderWidth: "2px"
213
+ }
214
+ }
215
+ }]
216
+ },
217
+ MuiCssBaseline: {
218
+ styleOverrides: "\n ".concat(fonts, "\n ")
219
+ }
220
+ },
221
+ mode: "dark",
222
+ colors: darkColors,
223
+ icons: icons,
224
+ palette: darkPalette
225
+ });
226
+
227
+ const BlerpTheme = _ref => {
228
+ let {
229
+ mode,
230
+ children
231
+ } = _ref;
232
+ const currentTheme = mode === "dark" ? darkTheme : theme; // ...
233
+
234
+ return /*#__PURE__*/React.createElement(ThemeProvider, {
235
+ theme: currentTheme
236
+ }, /*#__PURE__*/React.createElement(ThemeProvider$1, {
237
+ theme: { ...mainTheme,
238
+ icons: icons,
239
+ mode: mode === "dark" ? "dark" : "light",
240
+ ...currentTheme
241
+ }
242
+ }, /*#__PURE__*/React.createElement(SnackbarProvider, null, children)));
243
+ };
244
+
245
+ export default BlerpTheme;
246
+ export { darkTheme, theme };
@@ -0,0 +1,49 @@
1
+ import _taggedTemplateLiteral from '@babel/runtime/helpers/taggedTemplateLiteral';
2
+ import { CheckRounded } from '@mui/icons-material';
3
+ import React from 'react';
4
+ import styled from 'styled-components';
5
+ import { EllipsisLoader } from './EllipsisLoader.js';
6
+
7
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
8
+ const Slider = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ", "33;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n border-radius: 34px;\n"])), props => props.theme.colors.grey5);
9
+ const ToggleInput = styled.input(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n &:checked + ", " {\n background-color: ", ";\n }\n\n ut:focus + ", " {\n box-shadow: 0 0 1px #2196f3;\n }\n\n &:checked + ", " svg {\n -webkit-transform: translateX(14px);\n -ms-transform: translateX(14px);\n transform: translateX(14px);\n }\n"])), Slider, props => props.disabled ? "#7b7b7b" : props.theme.colors.seafoam, Slider, Slider);
10
+ const Switch = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n cursor: ", ";\n position: relative;\n display: inline-block;\n place-self: center;\n width: ", ";\n height: ", ";\n border: ", ";\n border-color: ", ";\n border-radius: 18px;\n opacity: ", ";\n & ", " {\n opacity: 0;\n width: 0;\n height: 0;\n }\n"])), props => props.disabled ? "default" : "pointer", props => props.checked ? "38px" : "36px", props => props.checked ? "22px" : "20px", props => props.checked ? "0px" : "1px solid transparent", props => props.checked ? "transparent" : props.theme.colors.grey5, props => props.disabled ? "0.5" : "1", ToggleInput);
11
+ const BlackSlider = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: transparent;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n border-radius: 34px;\n\n &:before {\n position: absolute;\n content: \"\";\n height: 14px;\n width: 14px;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n background-color: ", ";\n border-radius: 50%;\n }\n"])), props => props.theme.colors.notBlack);
12
+ const BlackToggleInput = styled.input(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n &:checked + ", " {\n background-color: transparent;\n }\n &:checked + ", ":before {\n background-color: ", ";\n }\n ut:focus + ", " {\n box-shadow: 0 0 1px #2196f3;\n }\n\n &:checked + ", ":before {\n -webkit-transform: translateX(14px);\n -ms-transform: translateX(14px);\n transform: translateX(14px);\n /* -webkit-transform: translateY(2px);\n -ms-transform: translateY(2px);\n transform: translateY(2px); */\n }\n"])), BlackSlider, BlackSlider, props => props.theme.colors.notBlack, BlackSlider, BlackSlider);
13
+ styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n position: relative;\n display: inline-block;\n place-self: center;\n width: 28px;\n height: 14px;\n border: 2px solid ", ";\n border-radius: 14px;\n\n & ", " {\n opacity: 0;\n width: 0;\n height: 0;\n }\n"])), props => props.theme.colors.notBlack, BlackToggleInput);
14
+ const LoadingContainer = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n width: 50px;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n"])));
15
+ const Toggle = _ref => {
16
+ let {
17
+ loading,
18
+ checked,
19
+ onClick,
20
+ disabled
21
+ } = _ref;
22
+ return /*#__PURE__*/React.createElement(React.Fragment, null, loading ? /*#__PURE__*/React.createElement(LoadingContainer, null, /*#__PURE__*/React.createElement(EllipsisLoader, null)) : /*#__PURE__*/React.createElement(Switch, {
23
+ checked: checked,
24
+ disabled: disabled,
25
+ onClick: e => {
26
+ if (!disabled && onClick) {
27
+ onClick(e);
28
+ }
29
+ }
30
+ }, /*#__PURE__*/React.createElement(ToggleInput, {
31
+ checked: checked,
32
+ disabled: disabled,
33
+ onChange: () => null,
34
+ type: "checkbox"
35
+ }), /*#__PURE__*/React.createElement(Slider, null, /*#__PURE__*/React.createElement(CheckRounded, {
36
+ sx: {
37
+ position: "absolute",
38
+ top: checked ? "3px" : "4px",
39
+ left: "4px",
40
+ color: checked ? disabled ? "grey4.main" : "seafoam.main" : "transparent",
41
+ fontSize: checked ? "16px" : "12px",
42
+ backgroundColor: checked ? "white.main" : "grey5.main",
43
+ borderRadius: "50%",
44
+ transition: "0.2s"
45
+ }
46
+ }))));
47
+ };
48
+
49
+ export { Toggle };
@@ -0,0 +1,133 @@
1
+ import { VerifiedRounded, DiamondRounded } from '@mui/icons-material';
2
+ import React from 'react';
3
+ import { Stack, Text } from './index.js';
4
+
5
+ const UserCard = _ref => {
6
+ var _user$twitchChannelIn, _user$twitchChannelIn2, _user$twitchChannelIn3, _user$twitchChannelIn4, _user$twitchChannelIn5, _user$profileImage, _user$profileImage$or, _user$twitchChannelIn6;
7
+
8
+ let {
9
+ user,
10
+ onUsernameClick,
11
+ onFollowerClick,
12
+ onCreatedClick,
13
+ collapsed
14
+ } = _ref;
15
+ const formatter = Intl.NumberFormat("en", {
16
+ notation: "compact"
17
+ });
18
+ let followerCount = formatter.format((user === null || user === void 0 ? void 0 : (_user$twitchChannelIn = user.twitchChannelInfo) === null || _user$twitchChannelIn === void 0 ? void 0 : _user$twitchChannelIn.followerCount) || 0);
19
+ let createdCount = formatter.format((user === null || user === void 0 ? void 0 : user.totalCreationCount) || 0);
20
+ return /*#__PURE__*/React.createElement(Stack, {
21
+ direction: "row",
22
+ sx: {
23
+ backgroundColor: "grey4.main",
24
+ minWidth: "280px",
25
+ maxWidth: "320px",
26
+ height: collapsed ? "auto" : "121px",
27
+ borderRadius: "12px",
28
+ alignItems: "center",
29
+ padding: "10px",
30
+ boxSizing: "border-box",
31
+ justifyContent: "space-around",
32
+ border: "1px solid transparent",
33
+ borderColor: collapsed ? (user === null || user === void 0 ? void 0 : (_user$twitchChannelIn2 = user.twitchChannelInfo) === null || _user$twitchChannelIn2 === void 0 ? void 0 : _user$twitchChannelIn2.twitchJourneyStatus) === "CHAMPION" ? "#FFFFFF" : (user === null || user === void 0 ? void 0 : (_user$twitchChannelIn3 = user.twitchChannelInfo) === null || _user$twitchChannelIn3 === void 0 ? void 0 : _user$twitchChannelIn3.twitchJourneyStatus) === "AFFILIATE" ? "#27AAFF" : "transparent" : "transparent"
34
+ }
35
+ }, /*#__PURE__*/React.createElement(Stack, {
36
+ sx: {
37
+ position: "relative"
38
+ }
39
+ }, /*#__PURE__*/React.createElement("img", {
40
+ style: {
41
+ width: collapsed ? "49px" : "89px",
42
+ height: collapsed ? "49px" : "89px",
43
+ borderRadius: "50%",
44
+ border: "2px solid transparent",
45
+ borderColor: collapsed ? "transparent" : (user === null || user === void 0 ? void 0 : (_user$twitchChannelIn4 = user.twitchChannelInfo) === null || _user$twitchChannelIn4 === void 0 ? void 0 : _user$twitchChannelIn4.twitchJourneyStatus) === "CHAMPION" ? "#FFFFFF" : (user === null || user === void 0 ? void 0 : (_user$twitchChannelIn5 = user.twitchChannelInfo) === null || _user$twitchChannelIn5 === void 0 ? void 0 : _user$twitchChannelIn5.twitchJourneyStatus) === "AFFILIATE" ? "#27AAFF" : "transparent",
46
+ padding: collapsed ? "3px" : "6px",
47
+ boxSizing: "border-box"
48
+ },
49
+ src: (user === null || user === void 0 ? void 0 : (_user$profileImage = user.profileImage) === null || _user$profileImage === void 0 ? void 0 : (_user$profileImage$or = _user$profileImage.original) === null || _user$profileImage$or === void 0 ? void 0 : _user$profileImage$or.url) || "https://cdn.blerp.com/blerp_products/Icons/Account-White.svg",
50
+ alt: "profile"
51
+ }), (user === null || user === void 0 ? void 0 : (_user$twitchChannelIn6 = user.twitchChannelInfo) === null || _user$twitchChannelIn6 === void 0 ? void 0 : _user$twitchChannelIn6.broadcasterType) === "partner" && /*#__PURE__*/React.createElement(VerifiedRounded, {
52
+ sx: {
53
+ position: "absolute",
54
+ bottom: collapsed ? "0" : "5px",
55
+ right: collapsed ? "0" : "5px",
56
+ fontSize: "17px",
57
+ backgroundColor: "grey4.main",
58
+ borderRadius: "50%"
59
+ }
60
+ }), (user === null || user === void 0 ? void 0 : user.premiumBlerpUserStatus) === "ACTIVE" && /*#__PURE__*/React.createElement(DiamondRounded, {
61
+ sx: {
62
+ position: "absolute",
63
+ bottom: collapsed ? "0" : "5px",
64
+ right: collapsed ? "0" : "5px",
65
+ fontSize: "17px",
66
+ backgroundColor: "grey4.main",
67
+ borderRadius: "50%"
68
+ }
69
+ })), /*#__PURE__*/React.createElement(Stack, {
70
+ sx: {
71
+ flex: 1,
72
+ marginLeft: "20px"
73
+ }
74
+ }, /*#__PURE__*/React.createElement(Text, {
75
+ sx: {
76
+ fontSize: "18px",
77
+ fontWeight: "300",
78
+ maxWidth: "180px",
79
+ whiteSpace: "nowrap",
80
+ textOverflow: "ellipsis",
81
+ marginBottom: !collapsed && "10px",
82
+ overflow: "hidden",
83
+ cursor: "pointer",
84
+ transition: "0.3s",
85
+ "&:hover": {
86
+ textDecoration: "underline"
87
+ }
88
+ },
89
+ onClick: onUsernameClick
90
+ }, user === null || user === void 0 ? void 0 : user.username), !collapsed && /*#__PURE__*/React.createElement(Stack, {
91
+ direction: "row",
92
+ sx: {
93
+ alignItems: "center",
94
+ justifyContent: "space-around"
95
+ }
96
+ }, /*#__PURE__*/React.createElement(Stack, {
97
+ alignItems: "center",
98
+ sx: {
99
+ cursor: "pointer"
100
+ },
101
+ onClick: onFollowerClick
102
+ }, /*#__PURE__*/React.createElement(Text, {
103
+ sx: {
104
+ fontSize: "14px",
105
+ fontWeight: "400"
106
+ }
107
+ }, followerCount), /*#__PURE__*/React.createElement(Text, {
108
+ sx: {
109
+ fontSize: "12px",
110
+ fontWeight: "300",
111
+ color: "grey7.main"
112
+ }
113
+ }, "followers")), /*#__PURE__*/React.createElement(Stack, {
114
+ alignItems: "center",
115
+ sx: {
116
+ cursor: "pointer"
117
+ },
118
+ onClick: onCreatedClick
119
+ }, /*#__PURE__*/React.createElement(Text, {
120
+ sx: {
121
+ fontSize: "14px",
122
+ fontWeight: "400"
123
+ }
124
+ }, createdCount), /*#__PURE__*/React.createElement(Text, {
125
+ sx: {
126
+ fontSize: "12px",
127
+ fontWeight: "300",
128
+ color: "grey7.main"
129
+ }
130
+ }, "created")))));
131
+ };
132
+
133
+ export { UserCard };