@blerp/design 1.3.16 → 1.4.1

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 (128) hide show
  1. package/dist/cjs/Blerp/BlerpImageRow.js +176 -57
  2. package/dist/cjs/Blerp/BlerpSavePopup.js +44 -40
  3. package/dist/cjs/Blerp/BlerpTitleRow.js +36 -19
  4. package/dist/cjs/Blerp/BlerpTopRow.js +110 -44
  5. package/dist/cjs/Blerp.js +9 -16
  6. package/dist/cjs/BlerpAudioContextProvider.js +2 -2
  7. package/dist/cjs/BlerpListView.js +318 -168
  8. package/dist/cjs/BlerpListViewPremium.js +155 -130
  9. package/dist/cjs/BlerpListViewSkeleton.js +60 -13
  10. package/dist/cjs/BlerpSkeleton.js +32 -9
  11. package/dist/cjs/CollectionCard.js +139 -60
  12. package/dist/cjs/CollectionListViewPremium.js +368 -297
  13. package/dist/cjs/CollectionSkeleton.js +74 -13
  14. package/dist/cjs/Dropdown.js +272 -172
  15. package/dist/cjs/EllipsisLoader.js +66 -21
  16. package/dist/cjs/GroupCard.js +64 -57
  17. package/dist/cjs/Icons/Icons.js +288 -426
  18. package/dist/cjs/ImageEditor.js +247 -0
  19. package/dist/cjs/ImageUpload.js +226 -0
  20. package/dist/cjs/NewBlerp.js +354 -160
  21. package/dist/cjs/NewBlerpTest.js +10 -792
  22. package/dist/cjs/NewCollectionModal.js +294 -310
  23. package/dist/cjs/PremiumCollectionCard.js +191 -454
  24. package/dist/cjs/PurchaseModals/CheckoutModal.js +1 -1
  25. package/dist/cjs/PurchaseModals/PremiumBlerpCheckoutModal.js +1 -1
  26. package/dist/cjs/PurchaseModals/PremiumCollectionCheckoutModal.js +1 -1
  27. package/dist/cjs/PurchaseModals/PremiumSubscriptionCheckoutModal.js +1 -1
  28. package/dist/cjs/ReactionButtons.js +26 -13
  29. package/dist/cjs/SnackbarContextProvider.js +200 -116
  30. package/dist/cjs/Theme.js +217 -90
  31. package/dist/cjs/Toggle.js +86 -32
  32. package/dist/cjs/UserCard.js +13 -32
  33. package/dist/cjs/UserPage/LibraryControls.js +180 -93
  34. package/dist/cjs/UserPage/UserLibraryHeader.js +23 -14
  35. package/dist/cjs/UserPage/UserProfileHeader.js +120 -105
  36. package/dist/cjs/UsernameWithPopout.js +12 -8
  37. package/dist/cjs/colors.js +15 -8
  38. package/dist/cjs/helpers.js +131 -0
  39. package/dist/cjs/index.js +98 -52
  40. package/dist/cjs/neo-components/Autocomplete.js +280 -0
  41. package/dist/cjs/neo-components/BottomNavigation.js +120 -0
  42. package/dist/cjs/neo-components/Box.js +48 -0
  43. package/dist/cjs/neo-components/Button.js +206 -0
  44. package/dist/cjs/neo-components/CircularProgress.js +92 -0
  45. package/dist/cjs/neo-components/Container.js +75 -0
  46. package/dist/cjs/neo-components/Dialog.js +441 -0
  47. package/dist/cjs/neo-components/Fab.js +237 -0
  48. package/dist/cjs/neo-components/FormControls.js +1057 -0
  49. package/dist/cjs/neo-components/Grid.js +256 -0
  50. package/dist/cjs/neo-components/IconButton.js +111 -0
  51. package/dist/cjs/neo-components/Input.js +493 -0
  52. package/dist/cjs/neo-components/Layout.js +1213 -0
  53. package/dist/cjs/neo-components/Misc.js +858 -0
  54. package/dist/cjs/neo-components/Navigation.js +1578 -0
  55. package/dist/cjs/neo-components/Paper.js +256 -0
  56. package/dist/cjs/neo-components/Stack.js +194 -0
  57. package/dist/cjs/neo-components/Stepper.js +291 -0
  58. package/dist/cjs/neo-components/Text.js +290 -0
  59. package/dist/cjs/neo-components/ThemeProvider.js +731 -0
  60. package/dist/cjs/neo-components/ToggleButton.js +223 -0
  61. package/dist/cjs/neo-components/createTheme.js +306 -0
  62. package/dist/cjs/neo-components/withSx.js +164 -0
  63. package/dist/cjs/neo-utils/sxToStyle.js +508 -0
  64. package/dist/esm/Blerp/BlerpImageRow.js +166 -46
  65. package/dist/esm/Blerp/BlerpSavePopup.js +35 -27
  66. package/dist/esm/Blerp/BlerpTitleRow.js +32 -13
  67. package/dist/esm/Blerp/BlerpTopRow.js +85 -16
  68. package/dist/esm/Blerp.js +4 -12
  69. package/dist/esm/BlerpAudioContextProvider.js +1 -2
  70. package/dist/esm/BlerpListView.js +313 -160
  71. package/dist/esm/BlerpListViewPremium.js +135 -109
  72. package/dist/esm/BlerpListViewSkeleton.js +60 -11
  73. package/dist/esm/BlerpSkeleton.js +32 -7
  74. package/dist/esm/CollectionCard.js +118 -38
  75. package/dist/esm/CollectionListViewPremium.js +367 -294
  76. package/dist/esm/CollectionSkeleton.js +73 -11
  77. package/dist/esm/Dropdown.js +260 -161
  78. package/dist/esm/EllipsisLoader.js +63 -18
  79. package/dist/esm/GroupCard.js +54 -46
  80. package/dist/esm/Icons/Icons.js +226 -367
  81. package/dist/esm/ImageEditor.js +240 -0
  82. package/dist/esm/ImageUpload.js +217 -0
  83. package/dist/esm/NewBlerp.js +282 -79
  84. package/dist/esm/NewBlerpTest.js +11 -781
  85. package/dist/esm/NewCollectionModal.js +289 -304
  86. package/dist/esm/PremiumCollectionCard.js +192 -451
  87. package/dist/esm/PurchaseModals/CheckoutModal.js +1 -1
  88. package/dist/esm/PurchaseModals/PremiumBlerpCheckoutModal.js +1 -1
  89. package/dist/esm/PurchaseModals/PremiumCollectionCheckoutModal.js +1 -1
  90. package/dist/esm/PurchaseModals/PremiumSubscriptionCheckoutModal.js +1 -1
  91. package/dist/esm/ReactionButtons.js +23 -8
  92. package/dist/esm/SnackbarContextProvider.js +196 -110
  93. package/dist/esm/Theme.js +187 -66
  94. package/dist/esm/Toggle.js +84 -29
  95. package/dist/esm/UserCard.js +1 -20
  96. package/dist/esm/UserPage/LibraryControls.js +159 -65
  97. package/dist/esm/UserPage/UserLibraryHeader.js +18 -10
  98. package/dist/esm/UserPage/UserProfileHeader.js +100 -79
  99. package/dist/esm/UsernameWithPopout.js +7 -4
  100. package/dist/esm/colors.js +11 -9
  101. package/dist/esm/helpers.js +122 -0
  102. package/dist/esm/icons.js +1 -1
  103. package/dist/esm/index.js +39 -3
  104. package/dist/esm/neo-components/Autocomplete.js +269 -0
  105. package/dist/esm/neo-components/BottomNavigation.js +109 -0
  106. package/dist/esm/neo-components/Box.js +36 -0
  107. package/dist/esm/neo-components/Button.js +194 -0
  108. package/dist/esm/neo-components/CircularProgress.js +81 -0
  109. package/dist/esm/neo-components/Container.js +63 -0
  110. package/dist/esm/neo-components/Dialog.js +423 -0
  111. package/dist/esm/neo-components/Fab.js +225 -0
  112. package/dist/esm/neo-components/FormControls.js +1041 -0
  113. package/dist/esm/neo-components/Grid.js +244 -0
  114. package/dist/esm/neo-components/IconButton.js +99 -0
  115. package/dist/esm/neo-components/Input.js +478 -0
  116. package/dist/esm/neo-components/Layout.js +1179 -0
  117. package/dist/esm/neo-components/Misc.js +840 -0
  118. package/dist/esm/neo-components/Navigation.js +1556 -0
  119. package/dist/esm/neo-components/Paper.js +243 -0
  120. package/dist/esm/neo-components/Stack.js +182 -0
  121. package/dist/esm/neo-components/Stepper.js +278 -0
  122. package/dist/esm/neo-components/Text.js +277 -0
  123. package/dist/esm/neo-components/ThemeProvider.js +718 -0
  124. package/dist/esm/neo-components/ToggleButton.js +214 -0
  125. package/dist/esm/neo-components/createTheme.js +297 -0
  126. package/dist/esm/neo-components/withSx.js +153 -0
  127. package/dist/esm/neo-utils/sxToStyle.js +502 -0
  128. package/package.json +19 -15
@@ -2,26 +2,118 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
- var CloseRoundedIcon = require('@mui/icons-material/CloseRounded');
7
- var FileUploadRoundedIcon = require('@mui/icons-material/FileUploadRounded');
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
6
  var React = require('react');
9
- var styled = require('styled-components');
10
- var ImageUploadModal = require('./ImageUploadModal.js');
7
+ var ReactDOM = require('react-dom');
8
+ var ImageUpload = require('./ImageUpload.js');
11
9
  var index = require('./index.js');
12
10
  var ScreenSizeHook = require('./ScreenSizeHook.js');
13
11
 
14
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
13
 
16
- var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
17
- var CloseRoundedIcon__default = /*#__PURE__*/_interopDefaultLegacy(CloseRoundedIcon);
18
- var FileUploadRoundedIcon__default = /*#__PURE__*/_interopDefaultLegacy(FileUploadRoundedIcon);
14
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
19
15
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
16
+ var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
21
17
 
22
- var _templateObject;
23
- styled__default['default'].div(_templateObject || (_templateObject = _taggedTemplateLiteral__default['default']([""])));
24
- const NewCollectionModal = _ref => {
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
22
+ const COLORS = {
23
+ backdrop: "rgba(0, 0, 0, 0.8)",
24
+ bgModal: "#1E1F22",
25
+ // Dark Gray (Discord-like)
26
+ bgInput: "#2B2D31",
27
+ textMain: "#F2F3F5",
28
+ textMuted: "#B5BAC1",
29
+ border: "#3F4147",
30
+ primary: "#5865F2",
31
+ danger: "#DA373C"
32
+ }; // --- 1. Safe Portal Component (Prevents SSR Crashes) ---
33
+
34
+ const Portal = _ref => {
35
+ let {
36
+ children
37
+ } = _ref;
38
+ const [mounted, setMounted] = React.useState(false);
39
+ React.useEffect(() => {
40
+ setMounted(true); // Optional: Lock body scroll when modal is open
41
+
42
+ const originalStyle = window.getComputedStyle(document.body).overflow;
43
+ document.body.style.overflow = 'hidden';
44
+ return () => {
45
+ document.body.style.overflow = originalStyle;
46
+ };
47
+ }, []);
48
+ if (!mounted) return null;
49
+ return /*#__PURE__*/ReactDOM__default["default"].createPortal(children, document.body);
50
+ }; // --- 2. The Robust Modal Wrapper ---
51
+
52
+
53
+ const DarkModal = _ref2 => {
54
+ let {
55
+ isOpen,
56
+ onClose,
57
+ children,
58
+ zIndex = 1300
59
+ } = _ref2;
60
+ if (!isOpen) return null;
61
+ return /*#__PURE__*/React__default["default"].createElement(Portal, null, /*#__PURE__*/React__default["default"].createElement("div", {
62
+ style: {
63
+ position: "fixed",
64
+ top: 0,
65
+ left: 0,
66
+ right: 0,
67
+ bottom: 0,
68
+ backgroundColor: COLORS.backdrop,
69
+ zIndex: zIndex,
70
+ display: "flex",
71
+ alignItems: "center",
72
+ justifyContent: "center",
73
+ backdropFilter: "blur(4px)",
74
+ animation: "fadeIn 0.2s ease-out"
75
+ },
76
+ onMouseDown: onClose // Close on backdrop click
77
+
78
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
79
+ onMouseDown: e => e.stopPropagation(),
80
+ style: {
81
+ position: 'relative',
82
+ zIndex: zIndex + 1
83
+ }
84
+ }, children)), /*#__PURE__*/React__default["default"].createElement("style", null, "@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }"));
85
+ }; // --- Icons ---
86
+
87
+
88
+ const Icon = _ref3 => {
89
+ let {
90
+ path,
91
+ size = "24px",
92
+ style,
93
+ onClick
94
+ } = _ref3;
95
+ return /*#__PURE__*/React__default["default"].createElement("svg", {
96
+ viewBox: "0 0 24 24",
97
+ width: size,
98
+ height: size,
99
+ fill: "currentColor",
100
+ style: _objectSpread({
101
+ display: 'inline-block',
102
+ flexShrink: 0,
103
+ cursor: onClick ? 'pointer' : 'default'
104
+ }, style),
105
+ onClick: onClick
106
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
107
+ d: path
108
+ }));
109
+ };
110
+
111
+ const paths = {
112
+ close: "M18.3 5.71a.9959.9959 0 00-1.41 0L12 10.59 7.11 5.7a.9959.9959 0 00-1.41 0c-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z",
113
+ upload: "M18 15v3H6v-3H4v3c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-3h-2zM7 9l1.41 1.41L11 7.83V16h2V7.83l2.59 2.58L17 9l-5-5-5 5z"
114
+ }; // --- MAIN COMPONENT ---
115
+
116
+ const NewCollectionModal = _ref4 => {
25
117
  var _collectionToBeEdited, _collectionToBeEdited2, _collectionToBeEdited3;
26
118
 
27
119
  let {
@@ -31,272 +123,173 @@ const NewCollectionModal = _ref => {
31
123
  collectionToBeEdited,
32
124
  handleChangePremium,
33
125
  onClose,
34
- children,
35
- isAdmin
36
- } = _ref;
37
- const [open, setopen] = React.useState(false);
126
+ isAdmin,
127
+ open: externalOpen // NEW: Controlled prop
128
+
129
+ } = _ref4;
130
+ // State for uncontrolled mode (triggered by button)
131
+ const [internalOpen, setInternalOpen] = React.useState(false); // Determine if controlled or uncontrolled
132
+
133
+ const isControlled = externalOpen !== undefined;
134
+ const isOpen = isControlled ? externalOpen : internalOpen;
38
135
  const [imageFile, setImageFile] = React.useState(collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : (_collectionToBeEdited = collectionToBeEdited.image) === null || _collectionToBeEdited === void 0 ? void 0 : _collectionToBeEdited.original);
39
136
  const [imageURL, setImageURL] = React.useState(collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : (_collectionToBeEdited2 = collectionToBeEdited.image) === null || _collectionToBeEdited2 === void 0 ? void 0 : (_collectionToBeEdited3 = _collectionToBeEdited2.original) === null || _collectionToBeEdited3 === void 0 ? void 0 : _collectionToBeEdited3.url);
40
- const [titleInput, setTitleInput] = React.useState(collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.title);
41
- const [descriptionInput, setDescriptionInput] = React.useState(collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.description);
137
+ const [titleInput, setTitleInput] = React.useState((collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.title) || "");
138
+ const [descriptionInput, setDescriptionInput] = React.useState((collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.description) || "");
42
139
  const [visibility, setVisibility] = React.useState((collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.visibility) || "PUBLIC");
43
- const [price, setPrice] = React.useState(collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.price);
44
- const triggerRef = React.useRef();
140
+ const [price, setPrice] = React.useState((collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.price) || 0);
45
141
  const [editImage, setEditImage] = React.useState(false);
46
- React.useState(false);
47
142
  const size = ScreenSizeHook.useWindowSize();
143
+ const isMobile = size.width <= 600;
48
144
 
49
145
  const handleClose = () => {
50
- setopen(false);
51
-
52
- if (onClose) {
53
- onClose();
54
- }
146
+ if (!isControlled) setInternalOpen(false);
147
+ if (onClose) onClose();
55
148
  };
56
149
 
57
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, trigger ? /*#__PURE__*/React.cloneElement(trigger, {
58
- ref: triggerRef,
59
- onClick: () => setopen(true)
60
- }) : /*#__PURE__*/React__default['default'].createElement(index.Button, {
61
- onClick: () => setopen(true),
150
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, trigger && !isControlled ? /*#__PURE__*/React.cloneElement(trigger, {
151
+ onClick: () => setInternalOpen(true)
152
+ }) : !isControlled && !trigger ? /*#__PURE__*/React__default["default"].createElement(index.Button, {
153
+ onClick: () => setInternalOpen(true),
62
154
  color: "grey4",
63
155
  sx: {
64
156
  fontSize: "10px"
65
157
  }
66
- }, "Organize Collection"), /*#__PURE__*/React__default['default'].createElement(index.Modal, {
67
- "aria-labelledby": "transition-modal-title",
68
- "aria-describedby": "transition-modal-description",
69
- open: open,
70
- onClose: () => handleClose(),
71
- closeAfterTransition: true
72
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
158
+ }, "Organize Collection") : null, /*#__PURE__*/React__default["default"].createElement(DarkModal, {
159
+ isOpen: isOpen,
160
+ onClose: handleClose,
161
+ zIndex: 1300
162
+ }, /*#__PURE__*/React__default["default"].createElement(index.Stack, {
73
163
  sx: {
74
- position: "absolute",
75
- top: "50%",
76
- left: "50%",
77
- transform: "translate(-50%, -50%)",
78
- width: 600,
79
- height: 520,
164
+ width: isMobile ? "100vw" : "600px",
165
+ maxHeight: "90vh",
80
166
  overflowY: "auto",
81
- bgcolor: "white.main",
82
- border: "none",
83
- boxShadow: 24,
84
- borderRadius: "8px",
85
- pt: 2,
86
- px: 6,
87
- pb: 3,
88
- alignItems: "center",
89
- justifyContent: "flex-start",
90
- "@media(max-width: 600px)": {
91
- height: "100vh",
92
- width: "98vw"
93
- }
167
+ backgroundColor: COLORS.bgModal,
168
+ color: COLORS.textMain,
169
+ borderRadius: isMobile ? "0" : "16px",
170
+ border: "1px solid ".concat(COLORS.border),
171
+ padding: isMobile ? "20px" : "32px 48px 40px",
172
+ boxShadow: "0 20px 60px rgba(0,0,0,0.5)"
94
173
  }
95
- }, /*#__PURE__*/React__default['default'].createElement(index.Modal, {
96
- sx: {
97
- backdropFilter: "blur(8px)",
98
- overflow: "scroll"
99
- },
100
- open: editImage,
101
- onClose: () => setEditImage(false),
102
- "aria-labelledby": "image-update-modal",
103
- "aria-describedby": "image-update-modal"
104
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
105
- sx: {
106
- position: "absolute",
107
- height: size.width > 600 ? 600 : "100%",
108
- overflowY: "auto",
109
- top: size.width > 600 ? "48%" : "0",
110
- left: size.width > 600 ? "50%" : "0",
111
- transform: size.width > 600 ? "translate(-50%, -50%)" : "0",
112
- width: size.width > 600 ? 275 : "100vw",
113
- minWidth: "320px",
114
- bgcolor: "white.main",
115
- boxShadow: 24,
116
- borderRadius: size.width > 600 ? "8px" : "0",
117
- p: size.width > 600 ? 4 : 0,
118
- padding: size.width > 600 ? "16px 32px 32px" : "16px 0",
119
- ":focus": {
120
- border: "none",
121
- outline: "none"
122
- }
123
- }
124
- }, /*#__PURE__*/React__default['default'].createElement(ImageUploadModal, {
125
- prevImage: collectionToBeEdited ? imageURL : undefined,
126
- updateImage: newImage => {
127
- setImageURL(URL.createObjectURL(newImage));
128
- setImageFile(newImage);
129
- },
130
- width: "150px",
131
- open: editImage,
132
- onClose: () => setEditImage(false),
133
- title: "Collection Image",
134
- sizeInfo: "Minimum size is 64px X 64px",
135
- isSquareImage: true
136
- }))), /*#__PURE__*/React__default['default'].createElement(CloseRoundedIcon__default['default'], {
137
- sx: {
138
- color: "notBlack.main",
174
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
175
+ onClick: handleClose,
176
+ style: {
139
177
  position: "absolute",
140
- right: 10,
141
- top: 10,
178
+ top: "20px",
179
+ right: "20px",
142
180
  cursor: "pointer",
143
- "@media(max-width: 600px)": {
144
- right: 50,
145
- top: 30
146
- }
147
- },
148
- onClick: () => handleClose()
149
- }), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
150
- sx: {
151
- minWidth: "320px"
152
- }
153
- }, /*#__PURE__*/React__default['default'].createElement(index.Text, {
154
- sx: {
155
- alignSelf: size.width > 600 ? "flex-start" : "center"
156
- },
157
- fontSize: "40px",
158
- margin: size.width > 600 ? "9px 0" : "24px 0 9px"
159
- }, collectionToBeEdited ? "Edit" : "New", " Collection"), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
160
- direction: size.width > 600 ? "row" : "column",
161
- sx: {
162
- width: "100%",
163
- marginTop: "8px",
164
- minHeight: size.width > 600 ? "272px" : "470px",
165
- justifyContent: size.width > 600 ? "center" : "space-between"
181
+ padding: "8px",
182
+ color: COLORS.textMuted
166
183
  }
167
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
168
- alignItems: "center",
169
- justifyContent: "flex-start",
170
- marginRight: size.width > 600 ? size.width > 700 ? "48px" : "32px" : "0"
171
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
184
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
185
+ path: paths.close
186
+ })), /*#__PURE__*/React__default["default"].createElement(index.Text, {
187
+ fontSize: "28px",
188
+ fontWeight: "700",
189
+ fontColor: COLORS.textMain,
172
190
  sx: {
173
- width: "180px",
174
- position: "relative",
175
- justifyContent: "flex-start",
176
- "&:hover": {
177
- width: "180px",
178
- background: "notBlack.main"
179
- }
191
+ mb: 4
180
192
  }
181
- }, imageURL ? /*#__PURE__*/React__default['default'].createElement("img", {
193
+ }, collectionToBeEdited ? "Edit" : "New", " Collection"), /*#__PURE__*/React__default["default"].createElement(index.Stack, {
194
+ direction: isMobile ? "column" : "row",
195
+ spacing: 4
196
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
197
+ onClick: () => setEditImage(true),
182
198
  style: {
183
- objectFit: "cover",
184
- width: "100%",
185
- minWidth: "75px",
186
- height: "auto",
187
- borderRadius: "8px"
188
- },
189
- alt: "uploaded img",
190
- src: imageURL
191
- }) : /*#__PURE__*/React__default['default'].createElement(index.Stack, {
192
- sx: {
193
- justifyContent: "center",
194
- width: "calc(100% - 2px)",
195
- minWidth: "75px",
196
- height: "176px",
197
- borderRadius: "8px",
198
- border: "1px solid",
199
- color: "grey3.main"
200
- }
201
- }, /*#__PURE__*/React__default['default'].createElement(index.Text, {
202
- sx: {
203
- textAlign: "center"
199
+ width: "160px",
200
+ height: "160px",
201
+ borderRadius: "12px",
202
+ backgroundColor: COLORS.bgInput,
203
+ border: "2px dashed ".concat(COLORS.border),
204
+ cursor: "pointer",
205
+ overflow: "hidden",
206
+ flexShrink: 0,
207
+ display: "flex",
208
+ alignItems: "center",
209
+ justifyContent: "center"
204
210
  }
205
- }, "Click here to upload a photo for this collection")), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
206
- sx: {
207
- position: "absolute",
208
- justifyContent: "flex-end",
209
- alignItems: "flex-end",
210
- top: "0",
211
- right: "0",
211
+ }, imageURL ? /*#__PURE__*/React__default["default"].createElement("img", {
212
+ src: imageURL,
213
+ alt: "Preview",
214
+ style: {
212
215
  width: "100%",
213
216
  height: "100%",
214
- backgroundColor: "transparent",
215
- transition: "0.2s",
216
- "&:hover div": {
217
- transition: "0.2s",
218
- opacity: "1"
219
- }
220
- },
217
+ objectFit: "cover"
218
+ }
219
+ }) : /*#__PURE__*/React__default["default"].createElement(index.Stack, {
220
+ alignItems: "center"
221
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
222
+ path: paths.upload,
221
223
  style: {
222
- borderRadius: "50%",
223
- zIndex: "6"
224
- },
225
- onClick: () => setEditImage(true)
226
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
227
- alignItems: "center",
228
- justifyContent: "center",
229
- sx: {
230
- opacity: "0",
231
- position: "absolute",
232
- top: "0",
233
- bottom: "0",
234
- left: "0",
235
- right: "0",
236
- cursor: "pointer",
237
- width: "100%",
238
- transition: "opacity .2s",
239
- background: "black",
240
- borderRadius: "8px"
224
+ color: COLORS.textMuted
241
225
  }
242
- }, /*#__PURE__*/React__default['default'].createElement(FileUploadRoundedIcon__default['default'], {
226
+ }), /*#__PURE__*/React__default["default"].createElement(index.Text, {
227
+ fontSize: "12px",
228
+ fontColor: COLORS.textMuted,
243
229
  sx: {
244
- color: "white.main",
245
- fontSize: "40px",
246
- height: "120px",
247
- width: "120px"
230
+ mt: 1
248
231
  }
249
- }))))), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
250
- justifyContent: "space-between",
232
+ }, "Upload"))), /*#__PURE__*/React__default["default"].createElement(index.Stack, {
233
+ spacing: 3,
251
234
  sx: {
252
- // height: "220px",
253
- width: "64%",
254
- minWidth: "320px",
255
- position: "relative",
256
- top: size.width > 600 ? "-20px" : "0",
257
- margin: "0 auto"
235
+ flex: 1,
236
+ width: "100%"
258
237
  }
259
- }, /*#__PURE__*/React__default['default'].createElement(index.Input, {
260
- disabled: !isAdmin && (collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.isPremium),
261
- color: "notBlack",
262
- label: "Collection Name",
238
+ }, /*#__PURE__*/React__default["default"].createElement(index.Input, {
239
+ label: "Name",
263
240
  value: titleInput,
264
241
  onChange: e => setTitleInput(e.target.value),
265
- variant: "standard",
242
+ variant: "filled",
243
+ fullWidth: true,
266
244
  sx: {
267
- margin: "0"
245
+ "& .MuiInputBase-root": {
246
+ color: COLORS.textMain
247
+ },
248
+ "& .MuiInputLabel-root": {
249
+ color: COLORS.textMuted
250
+ },
251
+ "& .MuiFilledInput-root": {
252
+ backgroundColor: COLORS.bgInput
253
+ }
268
254
  }
269
- }), /*#__PURE__*/React__default['default'].createElement(index.Input, {
270
- disabled: !isAdmin && (collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.isPremium),
271
- label: "Add a description",
272
- variant: "filled",
273
- color: "notBlack",
255
+ }), /*#__PURE__*/React__default["default"].createElement(index.Input, {
256
+ label: "Description",
274
257
  value: descriptionInput,
275
258
  onChange: e => setDescriptionInput(e.target.value),
276
259
  multiline: true,
277
- rows: 4,
260
+ rows: 3,
261
+ fullWidth: true,
278
262
  sx: {
279
- fontSize: "16px",
280
- paddingBottom: "12px",
281
- marginTop: "18px"
263
+ "& .MuiInputBase-root": {
264
+ color: COLORS.textMain
265
+ },
266
+ "& .MuiInputLabel-root": {
267
+ color: COLORS.textMuted
268
+ },
269
+ "& .MuiFilledInput-root": {
270
+ backgroundColor: COLORS.bgInput
271
+ }
282
272
  }
283
- }), /*#__PURE__*/React__default['default'].createElement(index.Stack, {
273
+ }), /*#__PURE__*/React__default["default"].createElement(index.Stack, {
284
274
  direction: "row",
285
- alignItems: "center",
286
- justifyContent: "space-between"
287
- }, /*#__PURE__*/React__default['default'].createElement(index.Stack, {
275
+ spacing: 2,
276
+ justifyContent: "space-between",
277
+ flexWrap: "wrap"
278
+ }, /*#__PURE__*/React__default["default"].createElement(index.Stack, null, /*#__PURE__*/React__default["default"].createElement(index.Text, {
279
+ fontSize: "12px",
280
+ fontColor: COLORS.textMuted,
288
281
  sx: {
289
- width: "40%"
282
+ mb: 1
290
283
  }
291
- }, /*#__PURE__*/React__default['default'].createElement(index.Text, {
292
- marginBottom: "4px",
293
- fontSize: "18px"
294
- }, "Visibility:"), /*#__PURE__*/React__default['default'].createElement(index.Dropdown, {
284
+ }, "VISIBILITY"), /*#__PURE__*/React__default["default"].createElement(index.Dropdown, {
295
285
  sx: {
296
- height: "40px"
286
+ height: "40px",
287
+ color: COLORS.textMain,
288
+ backgroundColor: COLORS.bgInput,
289
+ border: "1px solid ".concat(COLORS.border)
297
290
  },
298
291
  buttonTitle: visibility,
299
- handleOptionClicked: option => setVisibility(option.name),
292
+ handleOptionClicked: opt => setVisibility(opt.name),
300
293
  options: [{
301
294
  name: "PUBLIC"
302
295
  }, {
@@ -304,100 +297,91 @@ const NewCollectionModal = _ref => {
304
297
  }, {
305
298
  name: "UNLISTED"
306
299
  }]
307
- })), isAdmin && /*#__PURE__*/React__default['default'].createElement(index.Stack, {
300
+ })), isAdmin && /*#__PURE__*/React__default["default"].createElement(index.Stack, null, /*#__PURE__*/React__default["default"].createElement(index.Text, {
301
+ fontSize: "12px",
302
+ fontColor: COLORS.textMuted,
308
303
  sx: {
309
- width: "40%"
304
+ mb: 1
310
305
  }
311
- }, /*#__PURE__*/React__default['default'].createElement(index.Text, {
312
- marginBottom: "4px",
313
- fontSize: "18px"
314
- }, "Premium:"), /*#__PURE__*/React__default['default'].createElement(index.Toggle, {
306
+ }, "PREMIUM"), /*#__PURE__*/React__default["default"].createElement(index.Toggle, {
315
307
  checked: collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.isPremium,
316
- onClick: () => {
317
- setVisibility("PUBLIC");
318
- handleChangePremium(!(collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium));
319
- }
320
- })), collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium ? /*#__PURE__*/React__default['default'].createElement(index.Stack, {
308
+ onClick: () => handleChangePremium(!(collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium))
309
+ })), (collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited.isPremium) && /*#__PURE__*/React__default["default"].createElement(index.Stack, null, /*#__PURE__*/React__default["default"].createElement(index.Text, {
310
+ fontSize: "12px",
311
+ fontColor: COLORS.textMuted,
321
312
  sx: {
322
- width: "40%"
313
+ mb: 1
323
314
  }
324
- }, /*#__PURE__*/React__default['default'].createElement(index.Text, {
325
- marginBottom: "4px",
326
- fontSize: "18px"
327
- }, "Price:"), /*#__PURE__*/React__default['default'].createElement(index.Input, {
328
- error: !(price > 0),
329
- size: "small",
330
- startAdornment: "$",
331
- variant: "standard",
332
- color: "grey6",
315
+ }, "PRICE"), /*#__PURE__*/React__default["default"].createElement(index.Input, {
333
316
  value: price,
334
- onChange: e => {
335
- setPrice(e.target.value);
317
+ onChange: e => setPrice(e.target.value),
318
+ size: "small",
319
+ sx: {
320
+ "& input": {
321
+ color: COLORS.textMain
322
+ }
336
323
  }
337
- })) : /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null)))), /*#__PURE__*/React__default['default'].createElement(index.Button, {
338
- color: "primary",
339
- variant: "contained",
340
- fontSize: "32px",
324
+ }))))), /*#__PURE__*/React__default["default"].createElement(index.Stack, {
325
+ alignItems: "center",
326
+ spacing: 2,
341
327
  sx: {
342
- width: "40%",
343
- minWidth: "200px",
344
- height: "48px",
345
- fontWeight: "16px",
346
- margin: size.width > 600 ? "0px auto 0" : "40px auto 0"
347
- },
348
- disableElevation: true,
328
+ mt: 5
329
+ }
330
+ }, /*#__PURE__*/React__default["default"].createElement(index.Button, {
349
331
  onClick: () => {
350
- // what to do if this modal is being used to edit a collection
351
- if (collectionToBeEdited) {
352
- if (!(collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium) || collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium && price > 0) {
353
- handleCollection({
354
- _id: collectionToBeEdited._id,
355
- image: imageFile,
356
- title: titleInput,
357
- description: descriptionInput,
358
- visibility: visibility,
359
- price: price
360
- });
361
- handleClose();
362
- } else {
363
- console.log("price must be set higher than 0");
364
- } // what to do if this modal is being used to create a new collection
365
-
366
- } else {
367
- if (!(collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium) || collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium && price > 0) {
368
- handleCollection({
369
- image: imageFile,
370
- title: titleInput,
371
- description: descriptionInput,
372
- visibility: visibility,
373
- price: collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium ? price : 0
374
- });
375
- handleClose();
376
- } else {
377
- console.log("price must be set higher than 0");
378
- }
332
+ handleCollection({
333
+ _id: collectionToBeEdited === null || collectionToBeEdited === void 0 ? void 0 : collectionToBeEdited._id,
334
+ image: imageFile,
335
+ title: titleInput,
336
+ description: descriptionInput,
337
+ visibility,
338
+ price: collectionToBeEdited !== null && collectionToBeEdited !== void 0 && collectionToBeEdited.isPremium ? price : 0
339
+ }); // handleClose();
340
+ },
341
+ sx: {
342
+ backgroundColor: COLORS.primary,
343
+ color: "#FFF",
344
+ width: "100%",
345
+ maxWidth: "280px",
346
+ height: "44px",
347
+ borderRadius: "8px",
348
+ fontWeight: "600",
349
+ "&:hover": {
350
+ opacity: 0.9
379
351
  }
380
352
  }
381
- }, collectionToBeEdited ? "Save Changes" : "Create Collection"), collectionToBeEdited && deleteCollectionModal ? deleteCollectionModal : /*#__PURE__*/React__default['default'].createElement(index.Button, {
382
- color: "primary",
353
+ }, collectionToBeEdited ? "Save Changes" : "Create Collection"), /*#__PURE__*/React__default["default"].createElement(index.Button, {
383
354
  variant: "text",
384
- fontSize: "16px",
385
- disableElevation: true,
355
+ onClick: handleClose,
386
356
  sx: {
387
- margin: "10px auto"
388
- },
389
- onClick: () => {
390
- handleClose();
357
+ color: COLORS.textMuted
391
358
  }
392
- }, "Cancel"), /*#__PURE__*/React__default['default'].createElement(index.Text, {
393
- fontSize: "14px",
394
- textAlign: "center",
395
- fontWeight: "lighter",
359
+ }, "Cancel")))), /*#__PURE__*/React__default["default"].createElement(DarkModal, {
360
+ isOpen: editImage,
361
+ onClose: () => setEditImage(false),
362
+ zIndex: 1400
363
+ }, /*#__PURE__*/React__default["default"].createElement(index.Stack, {
396
364
  sx: {
397
- width: "95%"
365
+ backgroundColor: COLORS.bgModal,
366
+ padding: "24px",
367
+ borderRadius: "12px",
368
+ width: isMobile ? "100vw" : "340px",
369
+ border: "1px solid ".concat(COLORS.border)
398
370
  }
399
- }, "By proceeding, you agree to allow Blerp access to the image you choose to upload. Please make sure you have the right to upload the image.")))));
371
+ }, /*#__PURE__*/React__default["default"].createElement(ImageUpload, {
372
+ prevImage: collectionToBeEdited ? imageURL : undefined,
373
+ updateImage: newImage => {
374
+ setImageURL(URL.createObjectURL(newImage));
375
+ setImageFile(newImage);
376
+ },
377
+ width: "100%",
378
+ open: editImage,
379
+ onClose: () => setEditImage(false),
380
+ title: "Collection Image",
381
+ sizeInfo: "Minimum size is 64px X 64px",
382
+ isSquareImage: true
383
+ }))));
400
384
  };
401
385
 
402
386
  exports.NewCollectionModal = NewCollectionModal;
403
- exports.default = NewCollectionModal;
387
+ exports["default"] = NewCollectionModal;