@blerp/design 1.3.17 → 1.4.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 (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 +92 -58
  40. package/dist/cjs/neo-components/Autocomplete.js +285 -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 +495 -0
  52. package/dist/cjs/neo-components/Layout.js +1214 -0
  53. package/dist/cjs/neo-components/Misc.js +868 -0
  54. package/dist/cjs/neo-components/Navigation.js +1616 -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 +171 -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 +32 -2
  104. package/dist/esm/neo-components/Autocomplete.js +274 -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 +480 -0
  116. package/dist/esm/neo-components/Layout.js +1180 -0
  117. package/dist/esm/neo-components/Misc.js +850 -0
  118. package/dist/esm/neo-components/Navigation.js +1594 -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 +160 -0
  127. package/dist/esm/neo-utils/sxToStyle.js +502 -0
  128. package/package.json +19 -15
@@ -0,0 +1,277 @@
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
+ import React, { useMemo } from 'react';
5
+ import { withSx } from './withSx.js';
6
+ import { useTheme } from './ThemeProvider.js';
7
+
8
+ const _excluded = ["variant", "component", "align", "color", "gutterBottom", "noWrap", "paragraph", "children", "style", "fontSize", "fontColor", "fontWeight"];
9
+
10
+ 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; }
11
+
12
+ 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(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; }
13
+ /**
14
+ * Typography variants matching MUI defaults
15
+ */
16
+
17
+ const VARIANT_STYLES = {
18
+ h1: {
19
+ fontSize: "6rem",
20
+ fontWeight: 300,
21
+ lineHeight: 1.167,
22
+ letterSpacing: "-0.01562em"
23
+ },
24
+ h2: {
25
+ fontSize: "3.75rem",
26
+ fontWeight: 300,
27
+ lineHeight: 1.2,
28
+ letterSpacing: "-0.00833em"
29
+ },
30
+ h3: {
31
+ fontSize: "3rem",
32
+ fontWeight: 400,
33
+ lineHeight: 1.167,
34
+ letterSpacing: "0em"
35
+ },
36
+ h4: {
37
+ fontSize: "2.125rem",
38
+ fontWeight: 400,
39
+ lineHeight: 1.235,
40
+ letterSpacing: "0.00735em"
41
+ },
42
+ h5: {
43
+ fontSize: "1.5rem",
44
+ fontWeight: 400,
45
+ lineHeight: 1.334,
46
+ letterSpacing: "0em"
47
+ },
48
+ h6: {
49
+ fontSize: "1.25rem",
50
+ fontWeight: 500,
51
+ lineHeight: 1.6,
52
+ letterSpacing: "0.0075em"
53
+ },
54
+ subtitle1: {
55
+ fontSize: "1rem",
56
+ fontWeight: 400,
57
+ lineHeight: 1.75,
58
+ letterSpacing: "0.00938em"
59
+ },
60
+ subtitle2: {
61
+ fontSize: "0.875rem",
62
+ fontWeight: 500,
63
+ lineHeight: 1.57,
64
+ letterSpacing: "0.00714em"
65
+ },
66
+ body1: {
67
+ fontSize: "1rem",
68
+ fontWeight: 400,
69
+ lineHeight: 1.5,
70
+ letterSpacing: "0.00938em"
71
+ },
72
+ body2: {
73
+ fontSize: "0.875rem",
74
+ fontWeight: 400,
75
+ lineHeight: 1.43,
76
+ letterSpacing: "0.01071em"
77
+ },
78
+ button: {
79
+ fontSize: "0.875rem",
80
+ fontWeight: 500,
81
+ lineHeight: 1.75,
82
+ letterSpacing: "0.02857em",
83
+ textTransform: "uppercase"
84
+ },
85
+ caption: {
86
+ fontSize: "0.75rem",
87
+ fontWeight: 400,
88
+ lineHeight: 1.66,
89
+ letterSpacing: "0.03333em"
90
+ },
91
+ overline: {
92
+ fontSize: "0.75rem",
93
+ fontWeight: 400,
94
+ lineHeight: 2.66,
95
+ letterSpacing: "0.08333em",
96
+ textTransform: "uppercase"
97
+ },
98
+ inherit: {}
99
+ }; // Map variant to semantic HTML element
100
+
101
+ const VARIANT_MAPPING = {
102
+ h1: "h1",
103
+ h2: "h2",
104
+ h3: "h3",
105
+ h4: "h4",
106
+ h5: "h5",
107
+ h6: "h6",
108
+ subtitle1: "h6",
109
+ subtitle2: "h6",
110
+ body1: "p",
111
+ body2: "p",
112
+ button: "span",
113
+ caption: "span",
114
+ overline: "span",
115
+ inherit: "span"
116
+ }; // Map fontWeight string values to CSS values
117
+
118
+ const FONT_WEIGHT_MAP = {
119
+ light: 300,
120
+ regular: 400,
121
+ medium: 500,
122
+ semibold: 600,
123
+ bold: 700
124
+ };
125
+ /**
126
+ * Typography/Text component (replaces MUI Typography)
127
+ *
128
+ * Supports legacy @blerp/design props:
129
+ * - fontSize: string (e.g., "42px", "1.5rem")
130
+ * - fontColor: string (theme color name like "grey7" or direct color)
131
+ * - fontWeight: string | number (e.g., "light", "bold", 400)
132
+ */
133
+
134
+ const BaseText = /*#__PURE__*/React.forwardRef((_ref, ref) => {
135
+ let {
136
+ variant = "body1",
137
+ component,
138
+ align,
139
+ color,
140
+ gutterBottom = false,
141
+ noWrap = false,
142
+ paragraph = false,
143
+ children,
144
+ style,
145
+ // Legacy @blerp/design props
146
+ fontSize,
147
+ fontColor,
148
+ fontWeight
149
+ } = _ref,
150
+ props = _objectWithoutProperties(_ref, _excluded);
151
+
152
+ const {
153
+ colors,
154
+ mode
155
+ } = useTheme(); // Determine the HTML element to use
156
+
157
+ const Component = component || (paragraph ? "p" : VARIANT_MAPPING[variant] || "span"); // Resolve color from theme - check both color and fontColor props
158
+
159
+ const resolvedColor = useMemo(() => {
160
+ var _props$sx, _props$sx2, _props$sx3, _props$sx4, _props$sx5, _props$sx6, _props$sx7, _props$sx8;
161
+
162
+ // fontColor takes precedence if provided (legacy support)
163
+ const colorValue = fontColor || color || (props === null || props === void 0 ? void 0 : (_props$sx = props.sx) === null || _props$sx === void 0 ? void 0 : _props$sx.color);
164
+
165
+ if (!colorValue) {
166
+ // Default text color based on theme mode
167
+ return mode === "dark" ? "#FFFFFF" : "#FFFFFF"; // "#21000C";
168
+ }
169
+
170
+ if ((props === null || props === void 0 ? void 0 : (_props$sx2 = props.sx) === null || _props$sx2 === void 0 ? void 0 : _props$sx2.color) === "whiteOverride.main") return "#FFFFFF";
171
+ if ((props === null || props === void 0 ? void 0 : (_props$sx3 = props.sx) === null || _props$sx3 === void 0 ? void 0 : _props$sx3.color) === "white.real") return "#FFFFFF";
172
+ if ((props === null || props === void 0 ? void 0 : (_props$sx4 = props.sx) === null || _props$sx4 === void 0 ? void 0 : _props$sx4.color) === "grey2.real") return "#FFFFFF";
173
+ if ((props === null || props === void 0 ? void 0 : (_props$sx5 = props.sx) === null || _props$sx5 === void 0 ? void 0 : _props$sx5.color) === "grey6.main") return "#FFFFFF";
174
+ if ((props === null || props === void 0 ? void 0 : (_props$sx6 = props.sx) === null || _props$sx6 === void 0 ? void 0 : _props$sx6.color) === "grey7.main") return "#FFFFFF";
175
+ if ((props === null || props === void 0 ? void 0 : (_props$sx7 = props.sx) === null || _props$sx7 === void 0 ? void 0 : _props$sx7.color) === "notBlack.main") return "#FFFFFF";
176
+ if ((props === null || props === void 0 ? void 0 : (_props$sx8 = props.sx) === null || _props$sx8 === void 0 ? void 0 : _props$sx8.color) === "notBlack") return "#FFFFFF";
177
+ if (color === "grey3") return "#FFFFFF";
178
+ if (fontColor === "grey7") return "#FFFFFF";
179
+ if (color === "grey7.main" || colorValue === "grey7.main") return "#FFFFFF";
180
+ if ((colorValue === null || colorValue === void 0 ? void 0 : colorValue.toLowerCase()) === "grey6") return "#FFFFFF";
181
+ if ((colorValue === null || colorValue === void 0 ? void 0 : colorValue.toLowerCase()) === "grey6.main") return "#FFFFFF";
182
+ if ((colorValue === null || colorValue === void 0 ? void 0 : colorValue.toLowerCase()) === "black.main") return "#FFFFFF";
183
+ if ((colorValue === null || colorValue === void 0 ? void 0 : colorValue.toLowerCase()) === "notblack") return "#FFFFFF";
184
+ if ((colorValue === null || colorValue === void 0 ? void 0 : colorValue.toLowerCase()) === "notblack.main") return "#FFFFFF"; // Hardcode plain white / black detection
185
+
186
+ if (colorValue.toLowerCase() === "white") return "#FFFFFF";
187
+ if (colorValue.toLowerCase() === "black") return "#000000"; // Handle "white.override" or similar
188
+
189
+ if (colorValue === "white.override" || colorValue === "whiteOverride") {
190
+ var _colors$whiteOverride;
191
+
192
+ return ((_colors$whiteOverride = colors.whiteOverride) === null || _colors$whiteOverride === void 0 ? void 0 : _colors$whiteOverride.main) || colors.whiteText || "#FFFFFF";
193
+ } // Handle theme color references like "ibisRed.main"
194
+
195
+
196
+ if (typeof colorValue === "string" && colorValue.includes(".")) {
197
+ var _colors$colorName;
198
+
199
+ const [colorName, variant = "main"] = colorValue.split(".");
200
+ return ((_colors$colorName = colors[colorName]) === null || _colors$colorName === void 0 ? void 0 : _colors$colorName[variant]) || colors[colorName] || colorValue;
201
+ } // Handle direct color names like "primary", "error", "grey7"
202
+
203
+
204
+ if (colors[colorValue]) {
205
+ const themeColor = colors[colorValue];
206
+
207
+ if (typeof themeColor === "object") {
208
+ return themeColor.main || themeColor.real || themeColor.override;
209
+ }
210
+
211
+ return themeColor;
212
+ } // Return as-is (hex, rgb, etc.)
213
+
214
+
215
+ return colorValue;
216
+ }, [color, fontColor, colors, mode]); // Resolve fontWeight - handle string values like "light", "bold"
217
+
218
+ const resolvedFontWeight = useMemo(() => {
219
+ if (fontWeight === undefined || fontWeight === null) {
220
+ return undefined; // Let variant default apply
221
+ }
222
+
223
+ if (typeof fontWeight === "number") {
224
+ return fontWeight;
225
+ }
226
+
227
+ if (typeof fontWeight === "string") {
228
+ // Check if it's a named weight
229
+ const mappedWeight = FONT_WEIGHT_MAP[fontWeight.toLowerCase()];
230
+
231
+ if (mappedWeight) {
232
+ return mappedWeight;
233
+ } // Maybe it's a numeric string like "400"
234
+
235
+
236
+ const parsed = parseInt(fontWeight, 10);
237
+
238
+ if (!isNaN(parsed)) {
239
+ return parsed;
240
+ }
241
+ }
242
+
243
+ return fontWeight;
244
+ }, [fontWeight]);
245
+ const textStyle = useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
246
+ margin: 0,
247
+ fontFamily: "Open Sans, Inter, Odudo, Arial, sans-serif"
248
+ }, VARIANT_STYLES[variant]), align && {
249
+ textAlign: align
250
+ }), gutterBottom && {
251
+ marginBottom: "0.35em"
252
+ }), noWrap && {
253
+ overflow: "hidden",
254
+ textOverflow: "ellipsis",
255
+ whiteSpace: "nowrap"
256
+ }), paragraph && {
257
+ marginBottom: "16px"
258
+ }), {}, {
259
+ // Apply resolved color
260
+ color: resolvedColor
261
+ }, fontSize && {
262
+ fontSize
263
+ }), resolvedFontWeight !== undefined && {
264
+ fontWeight: resolvedFontWeight
265
+ }), style), {}, {
266
+ color: resolvedColor
267
+ }), [variant, align, gutterBottom, noWrap, paragraph, style, resolvedColor, fontSize, resolvedFontWeight]);
268
+ return /*#__PURE__*/React.createElement(Component, _extends({
269
+ ref: ref,
270
+ style: textStyle
271
+ }, props), children);
272
+ });
273
+ BaseText.displayName = "BaseText";
274
+ const Text = withSx(BaseText);
275
+ const Typography = Text; // Alias for MUI compatibility
276
+
277
+ export { Text, Typography, Text as default };