@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,256 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _extends = require('@babel/runtime/helpers/extends');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
+ var React = require('react');
9
+ var withSx = require('./withSx.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
14
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
15
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ const _excluded = ["elevation", "variant", "square", "children", "component", "style"],
19
+ _excluded2 = ["raised", "children", "style"],
20
+ _excluded3 = ["children", "component", "style"],
21
+ _excluded4 = ["disableSpacing", "children", "component", "style"],
22
+ _excluded5 = ["title", "subheader", "avatar", "action", "component", "style"],
23
+ _excluded6 = ["image", "src", "component", "alt", "height", "style", "children"];
24
+
25
+ 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; }
26
+
27
+ 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; }
28
+ /**
29
+ * Paper - Surface component with elevation (replaces MUI Paper)
30
+ */
31
+
32
+ const BasePaper = /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
33
+ let {
34
+ elevation = 1,
35
+ variant = 'elevation',
36
+ square = false,
37
+ children,
38
+ component: Component = 'div',
39
+ style
40
+ } = _ref,
41
+ props = _objectWithoutProperties__default["default"](_ref, _excluded);
42
+
43
+ // Box shadow values for different elevations
44
+ const elevationShadows = {
45
+ 0: 'none',
46
+ 1: '0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)',
47
+ 2: '0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)',
48
+ 3: '0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)',
49
+ 4: '0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)',
50
+ 6: '0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)',
51
+ 8: '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)',
52
+ 12: '0px 7px 8px -4px rgba(0,0,0,0.2), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)',
53
+ 16: '0px 8px 10px -5px rgba(0,0,0,0.2), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)',
54
+ 24: '0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)'
55
+ };
56
+
57
+ const paperStyle = _objectSpread(_objectSpread(_objectSpread({
58
+ backgroundColor: 'var(--flyout-background, #fff)',
59
+ color: 'var(--body-text, #000)',
60
+ transition: 'box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms'
61
+ }, !square && {
62
+ borderRadius: '4px'
63
+ }), variant === 'outlined' ? {
64
+ border: '1px solid var(--border-color, rgba(0, 0, 0, 0.12))'
65
+ } : {
66
+ boxShadow: elevationShadows[elevation] || elevationShadows[1]
67
+ }), style);
68
+
69
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
70
+ ref: ref,
71
+ style: paperStyle
72
+ }, props), children);
73
+ });
74
+ BasePaper.displayName = 'BasePaper';
75
+ const Paper = withSx.withSx(BasePaper);
76
+ /**
77
+ * Card - Card component built on Paper (replaces MUI Card)
78
+ */
79
+
80
+ const BaseCard = /*#__PURE__*/React__default["default"].forwardRef((_ref2, ref) => {
81
+ let {
82
+ raised = false,
83
+ children,
84
+ style
85
+ } = _ref2,
86
+ props = _objectWithoutProperties__default["default"](_ref2, _excluded2);
87
+
88
+ const cardStyle = _objectSpread({
89
+ overflow: 'hidden'
90
+ }, style);
91
+
92
+ return /*#__PURE__*/React__default["default"].createElement(BasePaper, _extends__default["default"]({
93
+ ref: ref,
94
+ elevation: raised ? 8 : 1,
95
+ style: cardStyle
96
+ }, props), children);
97
+ });
98
+ BaseCard.displayName = 'BaseCard';
99
+ const Card = withSx.withSx(BaseCard);
100
+ /**
101
+ * CardContent - Content area for cards
102
+ */
103
+
104
+ const BaseCardContent = /*#__PURE__*/React__default["default"].forwardRef((_ref3, ref) => {
105
+ let {
106
+ children,
107
+ component: Component = 'div',
108
+ style
109
+ } = _ref3,
110
+ props = _objectWithoutProperties__default["default"](_ref3, _excluded3);
111
+
112
+ const contentStyle = _objectSpread({
113
+ padding: '16px',
114
+ '&:last-child': {
115
+ paddingBottom: '24px'
116
+ }
117
+ }, style);
118
+
119
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
120
+ ref: ref,
121
+ style: contentStyle
122
+ }, props), children);
123
+ });
124
+ BaseCardContent.displayName = 'BaseCardContent';
125
+ withSx.withSx(BaseCardContent);
126
+ /**
127
+ * CardActions - Action area for cards
128
+ */
129
+
130
+ const BaseCardActions = /*#__PURE__*/React__default["default"].forwardRef((_ref4, ref) => {
131
+ let {
132
+ disableSpacing = false,
133
+ children,
134
+ component: Component = 'div',
135
+ style
136
+ } = _ref4,
137
+ props = _objectWithoutProperties__default["default"](_ref4, _excluded4);
138
+
139
+ const actionsStyle = _objectSpread(_objectSpread({
140
+ display: 'flex',
141
+ alignItems: 'center',
142
+ padding: '8px'
143
+ }, !disableSpacing && {
144
+ gap: '8px'
145
+ }), style);
146
+
147
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
148
+ ref: ref,
149
+ style: actionsStyle
150
+ }, props), children);
151
+ });
152
+ BaseCardActions.displayName = 'BaseCardActions';
153
+ withSx.withSx(BaseCardActions);
154
+ /**
155
+ * CardHeader - Header area for cards
156
+ */
157
+
158
+ const BaseCardHeader = /*#__PURE__*/React__default["default"].forwardRef((_ref5, ref) => {
159
+ let {
160
+ title,
161
+ subheader,
162
+ avatar,
163
+ action,
164
+ component: Component = 'div',
165
+ style
166
+ } = _ref5,
167
+ props = _objectWithoutProperties__default["default"](_ref5, _excluded5);
168
+
169
+ const headerStyle = _objectSpread({
170
+ display: 'flex',
171
+ alignItems: 'center',
172
+ padding: '16px'
173
+ }, style);
174
+
175
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
176
+ ref: ref,
177
+ style: headerStyle
178
+ }, props), avatar && /*#__PURE__*/React__default["default"].createElement("div", {
179
+ style: {
180
+ marginRight: '16px'
181
+ }
182
+ }, avatar), /*#__PURE__*/React__default["default"].createElement("div", {
183
+ style: {
184
+ flex: 1
185
+ }
186
+ }, title && /*#__PURE__*/React__default["default"].createElement("div", {
187
+ style: {
188
+ fontWeight: 500,
189
+ fontSize: '1rem'
190
+ }
191
+ }, title), subheader && /*#__PURE__*/React__default["default"].createElement("div", {
192
+ style: {
193
+ color: 'var(--secondary-text)',
194
+ fontSize: '0.875rem'
195
+ }
196
+ }, subheader)), action && /*#__PURE__*/React__default["default"].createElement("div", null, action));
197
+ });
198
+ BaseCardHeader.displayName = 'BaseCardHeader';
199
+ withSx.withSx(BaseCardHeader);
200
+ /**
201
+ * CardMedia - Media area for cards (images, videos, etc.)
202
+ */
203
+
204
+ const BaseCardMedia = /*#__PURE__*/React__default["default"].forwardRef((_ref6, ref) => {
205
+ let {
206
+ image,
207
+ src,
208
+ component = 'div',
209
+ alt = '',
210
+ height,
211
+ style,
212
+ children
213
+ } = _ref6,
214
+ props = _objectWithoutProperties__default["default"](_ref6, _excluded6);
215
+
216
+ const imageSrc = image || src; // If component is img, render as img
217
+
218
+ if (component === 'img') {
219
+ return /*#__PURE__*/React__default["default"].createElement("img", _extends__default["default"]({
220
+ ref: ref,
221
+ src: imageSrc,
222
+ alt: alt,
223
+ style: _objectSpread({
224
+ display: 'block',
225
+ width: '100%',
226
+ height,
227
+ objectFit: 'cover'
228
+ }, style)
229
+ }, props));
230
+ } // Otherwise render as div with background image
231
+
232
+
233
+ const Component = component;
234
+
235
+ const mediaStyle = _objectSpread(_objectSpread(_objectSpread({
236
+ display: 'block',
237
+ backgroundSize: 'cover',
238
+ backgroundRepeat: 'no-repeat',
239
+ backgroundPosition: 'center'
240
+ }, imageSrc && {
241
+ backgroundImage: "url(\"".concat(imageSrc, "\")")
242
+ }), height && {
243
+ height
244
+ }), style);
245
+
246
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
247
+ ref: ref,
248
+ style: mediaStyle
249
+ }, props), children);
250
+ });
251
+ BaseCardMedia.displayName = 'BaseCardMedia';
252
+ withSx.withSx(BaseCardMedia);
253
+
254
+ exports.Card = Card;
255
+ exports.Paper = Paper;
256
+ exports["default"] = Paper;
@@ -0,0 +1,194 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _extends = require('@babel/runtime/helpers/extends');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
+ var React = require('react');
9
+ var withSx = require('./withSx.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
14
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
15
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ const _excluded = ["direction", "spacing", "alignItems", "justifyContent", "flexWrap", "divider", "useFlexGap", "children", "component", "style"];
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+ /**
24
+ * Props that MUI Stack accepts directly and converts to styles
25
+ * These get extracted from props and merged into the style object
26
+ */
27
+
28
+ const STYLE_PROPS = [// Sizing
29
+ 'width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight', // Margin (MUI shorthand)
30
+ 'm', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', // Padding (MUI shorthand)
31
+ 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', // Positioning
32
+ 'position', 'top', 'right', 'bottom', 'left', 'zIndex', // Display/Visibility
33
+ 'display', 'overflow', 'overflowX', 'overflowY', 'visibility', // Flex item props
34
+ 'flex', 'flexGrow', 'flexShrink', 'flexBasis', 'alignSelf', 'order', // Background
35
+ 'bgcolor', 'backgroundColor', 'background', // Border
36
+ 'border', 'borderTop', 'borderRight', 'borderBottom', 'borderLeft', 'borderColor', 'borderRadius', // Other common ones
37
+ 'boxShadow', 'opacity', 'cursor', 'gap']; // MUI spacing shorthand mapping
38
+
39
+ const SPACING_MAP = {
40
+ m: 'margin',
41
+ mt: 'marginTop',
42
+ mr: 'marginRight',
43
+ mb: 'marginBottom',
44
+ ml: 'marginLeft',
45
+ p: 'padding',
46
+ pt: 'paddingTop',
47
+ pr: 'paddingRight',
48
+ pb: 'paddingBottom',
49
+ pl: 'paddingLeft',
50
+ bgcolor: 'backgroundColor'
51
+ }; // Props that need mx/my expansion
52
+
53
+ const AXIS_PROPS = {
54
+ mx: ['marginLeft', 'marginRight'],
55
+ my: ['marginTop', 'marginBottom'],
56
+ px: ['paddingLeft', 'paddingRight'],
57
+ py: ['paddingTop', 'paddingBottom']
58
+ };
59
+ const SPACING_UNIT = 8;
60
+ /**
61
+ * Convert a spacing value - numbers get multiplied by 8px
62
+ */
63
+
64
+ function parseSpacingValue(value) {
65
+ if (typeof value === 'number') {
66
+ return "".concat(value * SPACING_UNIT, "px");
67
+ }
68
+
69
+ return value;
70
+ }
71
+ /**
72
+ * Extract style props from props object
73
+ * Returns { styleProps, otherProps }
74
+ */
75
+
76
+
77
+ function extractStyleProps(props) {
78
+ const styleProps = {};
79
+ const otherProps = {};
80
+
81
+ for (const [key, value] of Object.entries(props)) {
82
+ if (value === undefined || value === null) {
83
+ continue;
84
+ }
85
+
86
+ if (STYLE_PROPS.includes(key)) {
87
+ // Map shorthand to full property name
88
+ const cssKey = SPACING_MAP[key] || key; // Handle spacing values (numbers become px)
89
+
90
+ const isSpacingProp = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'gap'].includes(key);
91
+ const processedValue = isSpacingProp ? parseSpacingValue(value) : value;
92
+ styleProps[cssKey] = processedValue;
93
+ } else if (AXIS_PROPS[key]) {
94
+ // Handle mx, my, px, py - expand to both axes
95
+ const [prop1, prop2] = AXIS_PROPS[key];
96
+ const processedValue = parseSpacingValue(value);
97
+ styleProps[prop1] = processedValue;
98
+ styleProps[prop2] = processedValue;
99
+ } else {
100
+ otherProps[key] = value;
101
+ }
102
+ }
103
+
104
+ return {
105
+ styleProps,
106
+ otherProps
107
+ };
108
+ }
109
+ /**
110
+ * Stack - Flexbox layout component (replaces MUI Stack)
111
+ * Arranges children in a row or column with consistent spacing
112
+ *
113
+ * @param {string} direction - 'row' | 'column' | 'row-reverse' | 'column-reverse'
114
+ * @param {number|string} spacing - Gap between children (number = multiplied by 8px)
115
+ * @param {string} alignItems - CSS align-items value
116
+ * @param {string} justifyContent - CSS justify-content value
117
+ * @param {string} flexWrap - CSS flex-wrap value
118
+ * @param {ReactNode} divider - Element to render between children
119
+ * @param {boolean} useFlexGap - Whether to use CSS gap (default: true)
120
+ * @param {string|Component} component - The root element type (default: 'div')
121
+ *
122
+ * Also accepts direct style props like MUI:
123
+ * - Sizing: width, height, minWidth, maxWidth, minHeight, maxHeight
124
+ * - Spacing: m, mt, mr, mb, ml, mx, my, p, pt, pr, pb, pl, px, py (numbers = 8px units)
125
+ * - Position: position, top, right, bottom, left, zIndex
126
+ * - And more: bgcolor, border, borderRadius, boxShadow, opacity, etc.
127
+ */
128
+
129
+
130
+ const BaseStack = /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
131
+ let {
132
+ direction = 'column',
133
+ spacing = 0,
134
+ alignItems,
135
+ justifyContent,
136
+ flexWrap,
137
+ divider,
138
+ useFlexGap = true,
139
+ children,
140
+ component: Component = 'div',
141
+ style
142
+ } = _ref,
143
+ props = _objectWithoutProperties__default["default"](_ref, _excluded);
144
+
145
+ // Extract style props from remaining props
146
+ const {
147
+ styleProps,
148
+ otherProps
149
+ } = React.useMemo(() => extractStyleProps(props), [props]); // Convert spacing to pixels (MUI uses 8px unit)
150
+
151
+ const gap = typeof spacing === 'number' ? "".concat(spacing * SPACING_UNIT, "px") : spacing;
152
+ const stackStyle = React.useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
153
+ display: 'flex',
154
+ flexDirection: direction
155
+ }, useFlexGap && spacing ? {
156
+ gap
157
+ } : {}), alignItems && {
158
+ alignItems
159
+ }), justifyContent && {
160
+ justifyContent
161
+ }), flexWrap && {
162
+ flexWrap
163
+ }), styleProps), style), [direction, gap, alignItems, justifyContent, flexWrap, styleProps, style, useFlexGap, spacing]); // Handle divider prop - insert divider between each child
164
+
165
+ if (divider && React__default["default"].Children.count(children) > 1) {
166
+ const childArray = React__default["default"].Children.toArray(children).filter(Boolean);
167
+ const childrenWithDividers = [];
168
+ childArray.forEach((child, index) => {
169
+ childrenWithDividers.push(child);
170
+
171
+ if (index < childArray.length - 1) {
172
+ childrenWithDividers.push( /*#__PURE__*/React__default["default"].cloneElement(divider, {
173
+ key: "divider-".concat(index),
174
+ 'aria-hidden': true
175
+ }));
176
+ }
177
+ });
178
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
179
+ ref: ref,
180
+ style: stackStyle
181
+ }, otherProps), childrenWithDividers);
182
+ }
183
+
184
+ return /*#__PURE__*/React__default["default"].createElement(Component, _extends__default["default"]({
185
+ ref: ref,
186
+ style: stackStyle
187
+ }, otherProps), children);
188
+ });
189
+ BaseStack.displayName = 'BaseStack'; // Export with sx prop support
190
+
191
+ const Stack = withSx.withSx(BaseStack);
192
+
193
+ exports.Stack = Stack;
194
+ exports["default"] = Stack;