Initial commit: Crypto trader application

This commit is contained in:
2025-12-25 20:20:40 -05:00
commit 07a04c1bb8
47895 changed files with 2042266 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
'use client';
import PropTypes from 'prop-types';
import createGrid from './createGrid';
/**
*
* Demos:
*
* - [Grid (Joy UI)](https://mui.com/joy-ui/react-grid/)
* - [Grid (Material UI)](https://mui.com/material-ui/react-grid/)
*
* API:
*
* - [Grid API](https://mui.com/system/api/grid/)
*/
var Grid = createGrid();
process.env.NODE_ENV !== "production" ? Grid.propTypes /* remove-proptypes */ = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: PropTypes.node,
/**
* The number of columns.
* @default 12
*/
columns: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number, PropTypes.object]),
/**
* Defines the horizontal space between the type `item` components.
* It overrides the value of the `spacing` prop.
*/
columnSpacing: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
/**
* If `true`, the component will have the flex *container* behavior.
* You should be wrapping *items* with a *container*.
* @default false
*/
container: PropTypes.bool,
/**
* Defines the `flex-direction` style property.
* It is applied for all screen sizes.
* @default 'row'
*/
direction: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),
/**
* If `true`, the negative margin and padding are apply only to the top and left sides of the grid.
*/
disableEqualOverflow: PropTypes.bool,
/**
* If a number, it sets the number of columns the grid item uses.
* It can't be greater than the total number of columns of the container (12 by default).
* If 'auto', the grid item's width matches its content.
* If false, the prop is ignored.
* If true, the grid item's width grows to use the space available in the grid container.
* The value is applied for the `lg` breakpoint and wider screens if not overridden.
* @default false
*/
lg: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
/**
* If a number, it sets the margin-left equals to the number of columns the grid item uses.
* If 'auto', the grid item push itself to the right-end of the container.
* The value is applied for the `lg` breakpoint and wider screens if not overridden.
*/
lgOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
/**
* If a number, it sets the number of columns the grid item uses.
* It can't be greater than the total number of columns of the container (12 by default).
* If 'auto', the grid item's width matches its content.
* If false, the prop is ignored.
* If true, the grid item's width grows to use the space available in the grid container.
* The value is applied for the `md` breakpoint and wider screens if not overridden.
* @default false
*/
md: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
/**
* If a number, it sets the margin-left equals to the number of columns the grid item uses.
* If 'auto', the grid item push itself to the right-end of the container.
* The value is applied for the `md` breakpoint and wider screens if not overridden.
*/
mdOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
/**
* Defines the vertical space between the type `item` components.
* It overrides the value of the `spacing` prop.
*/
rowSpacing: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
/**
* If a number, it sets the number of columns the grid item uses.
* It can't be greater than the total number of columns of the container (12 by default).
* If 'auto', the grid item's width matches its content.
* If false, the prop is ignored.
* If true, the grid item's width grows to use the space available in the grid container.
* The value is applied for the `sm` breakpoint and wider screens if not overridden.
* @default false
*/
sm: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
/**
* If a number, it sets the margin-left equals to the number of columns the grid item uses.
* If 'auto', the grid item push itself to the right-end of the container.
* The value is applied for the `sm` breakpoint and wider screens if not overridden.
*/
smOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
/**
* Defines the space between the type `item` components.
* It can only be used on a type `container` component.
* @default 0
*/
spacing: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
/**
* @ignore
*/
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
/**
* @internal
* The level of the grid starts from `0`
* and increases when the grid nests inside another grid regardless of container or item.
*
* ```js
* <Grid> // level 0
* <Grid> // level 1
* <Grid> // level 2
* <Grid> // level 1
* ```
*
* Only consecutive grid is considered nesting.
* A grid container will start at `0` if there are non-Grid element above it.
*
* ```js
* <Grid> // level 0
* <div>
* <Grid> // level 0
* <Grid> // level 1
* ```
*/
unstable_level: PropTypes.number,
/**
* Defines the `flex-wrap` style property.
* It's applied for all screen sizes.
* @default 'wrap'
*/
wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),
/**
* If a number, it sets the number of columns the grid item uses.
* It can't be greater than the total number of columns of the container (12 by default).
* If 'auto', the grid item's width matches its content.
* If false, the prop is ignored.
* If true, the grid item's width grows to use the space available in the grid container.
* The value is applied for the `xl` breakpoint and wider screens if not overridden.
* @default false
*/
xl: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
/**
* If a number, it sets the margin-left equals to the number of columns the grid item uses.
* If 'auto', the grid item push itself to the right-end of the container.
* The value is applied for the `xl` breakpoint and wider screens if not overridden.
*/
xlOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
/**
* If a number, it sets the number of columns the grid item uses.
* It can't be greater than the total number of columns of the container (12 by default).
* If 'auto', the grid item's width matches its content.
* If false, the prop is ignored.
* If true, the grid item's width grows to use the space available in the grid container.
* The value is applied for all the screen sizes with the lowest priority.
* @default false
*/
xs: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
/**
* If a number, it sets the margin-left equals to the number of columns the grid item uses.
* If 'auto', the grid item push itself to the right-end of the container.
* The value is applied for the `xs` breakpoint and wider screens if not overridden.
*/
xsOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number])
} : void 0;
export default Grid;
+1
View File
@@ -0,0 +1 @@
export {};
+184
View File
@@ -0,0 +1,184 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import * as React from 'react';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import isMuiElement from '@mui/utils/isMuiElement';
import generateUtilityClass from '@mui/utils/generateUtilityClass';
import composeClasses from '@mui/utils/composeClasses';
import systemStyled from '../styled';
import useThemePropsSystem from '../useThemeProps';
import useTheme from '../useTheme';
import { extendSxProp } from '../styleFunctionSx';
import createTheme from '../createTheme';
import { generateGridStyles, generateGridSizeStyles, generateGridColumnsStyles, generateGridColumnSpacingStyles, generateGridRowSpacingStyles, generateGridDirectionStyles, generateGridOffsetStyles, generateSizeClassNames, generateSpacingClassNames, generateDirectionClasses } from './gridGenerator';
import { jsx as _jsx } from "react/jsx-runtime";
var defaultTheme = createTheme();
// widening Theme to any so that the consumer can own the theme structure.
var defaultCreateStyledComponent = systemStyled('div', {
name: 'MuiGrid',
slot: 'Root',
overridesResolver: function overridesResolver(props, styles) {
return styles.root;
}
});
function useThemePropsDefault(props) {
return useThemePropsSystem({
props: props,
name: 'MuiGrid',
defaultTheme: defaultTheme
});
}
export default function createGrid() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$createStyled = options.createStyledComponent,
createStyledComponent = _options$createStyled === void 0 ? defaultCreateStyledComponent : _options$createStyled,
_options$useThemeProp = options.useThemeProps,
useThemeProps = _options$useThemeProp === void 0 ? useThemePropsDefault : _options$useThemeProp,
_options$componentNam = options.componentName,
componentName = _options$componentNam === void 0 ? 'MuiGrid' : _options$componentNam;
var GridOverflowContext = /*#__PURE__*/React.createContext(undefined);
if (process.env.NODE_ENV !== 'production') {
GridOverflowContext.displayName = 'GridOverflowContext';
}
var useUtilityClasses = function useUtilityClasses(ownerState, theme) {
var container = ownerState.container,
direction = ownerState.direction,
spacing = ownerState.spacing,
wrap = ownerState.wrap,
gridSize = ownerState.gridSize;
var slots = {
root: ['root', container && 'container', wrap !== 'wrap' && "wrap-xs-".concat(String(wrap))].concat(_toConsumableArray(generateDirectionClasses(direction)), _toConsumableArray(generateSizeClassNames(gridSize)), _toConsumableArray(container ? generateSpacingClassNames(spacing, theme.breakpoints.keys[0]) : []))
};
return composeClasses(slots, function (slot) {
return generateUtilityClass(componentName, slot);
}, {});
};
var GridRoot = createStyledComponent(generateGridColumnsStyles, generateGridColumnSpacingStyles, generateGridRowSpacingStyles, generateGridSizeStyles, generateGridDirectionStyles, generateGridStyles, generateGridOffsetStyles);
var Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {
var _inProps$columns, _inProps$spacing, _ref3, _inProps$rowSpacing, _ref4, _inProps$columnSpacin, _ref5, _disableEqualOverflow;
var theme = useTheme();
var themeProps = useThemeProps(inProps);
var props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.
var overflow = React.useContext(GridOverflowContext);
var className = props.className,
children = props.children,
_props$columns = props.columns,
columnsProp = _props$columns === void 0 ? 12 : _props$columns,
_props$container = props.container,
container = _props$container === void 0 ? false : _props$container,
_props$component = props.component,
component = _props$component === void 0 ? 'div' : _props$component,
_props$direction = props.direction,
direction = _props$direction === void 0 ? 'row' : _props$direction,
_props$wrap = props.wrap,
wrap = _props$wrap === void 0 ? 'wrap' : _props$wrap,
_props$spacing = props.spacing,
spacingProp = _props$spacing === void 0 ? 0 : _props$spacing,
_props$rowSpacing = props.rowSpacing,
rowSpacingProp = _props$rowSpacing === void 0 ? spacingProp : _props$rowSpacing,
_props$columnSpacing = props.columnSpacing,
columnSpacingProp = _props$columnSpacing === void 0 ? spacingProp : _props$columnSpacing,
themeDisableEqualOverflow = props.disableEqualOverflow,
_props$unstable_level = props.unstable_level,
level = _props$unstable_level === void 0 ? 0 : _props$unstable_level,
rest = _objectWithoutProperties(props, ["className", "children", "columns", "container", "component", "direction", "wrap", "spacing", "rowSpacing", "columnSpacing", "disableEqualOverflow", "unstable_level"]); // Because `disableEqualOverflow` can be set from the theme's defaultProps, the **nested** grid should look at the instance props instead.
var disableEqualOverflow = themeDisableEqualOverflow;
if (level && themeDisableEqualOverflow !== undefined) {
disableEqualOverflow = inProps.disableEqualOverflow;
}
// collect breakpoints related props because they can be customized from the theme.
var gridSize = {};
var gridOffset = {};
var other = {};
Object.entries(rest).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
val = _ref2[1];
if (theme.breakpoints.values[key] !== undefined) {
gridSize[key] = val;
} else if (theme.breakpoints.values[key.replace('Offset', '')] !== undefined) {
gridOffset[key.replace('Offset', '')] = val;
} else {
other[key] = val;
}
});
var columns = (_inProps$columns = inProps.columns) != null ? _inProps$columns : level ? undefined : columnsProp;
var spacing = (_inProps$spacing = inProps.spacing) != null ? _inProps$spacing : level ? undefined : spacingProp;
var rowSpacing = (_ref3 = (_inProps$rowSpacing = inProps.rowSpacing) != null ? _inProps$rowSpacing : inProps.spacing) != null ? _ref3 : level ? undefined : rowSpacingProp;
var columnSpacing = (_ref4 = (_inProps$columnSpacin = inProps.columnSpacing) != null ? _inProps$columnSpacin : inProps.spacing) != null ? _ref4 : level ? undefined : columnSpacingProp;
var ownerState = _extends({}, props, {
level: level,
columns: columns,
container: container,
direction: direction,
wrap: wrap,
spacing: spacing,
rowSpacing: rowSpacing,
columnSpacing: columnSpacing,
gridSize: gridSize,
gridOffset: gridOffset,
disableEqualOverflow: (_ref5 = (_disableEqualOverflow = disableEqualOverflow) != null ? _disableEqualOverflow : overflow) != null ? _ref5 : false,
// use context value if exists.
parentDisableEqualOverflow: overflow // for nested grid
});
var classes = useUtilityClasses(ownerState, theme);
var result = /*#__PURE__*/_jsx(GridRoot, _extends({
ref: ref,
as: component,
ownerState: ownerState,
className: clsx(classes.root, className)
}, other, {
children: React.Children.map(children, function (child) {
if ( /*#__PURE__*/React.isValidElement(child) && isMuiElement(child, ['Grid'])) {
var _unstable_level, _child$props;
return /*#__PURE__*/React.cloneElement(child, {
unstable_level: (_unstable_level = (_child$props = child.props) == null ? void 0 : _child$props.unstable_level) != null ? _unstable_level : level + 1
});
}
return child;
})
}));
if (disableEqualOverflow !== undefined && disableEqualOverflow !== (overflow != null ? overflow : false)) {
// There are 2 possibilities that should wrap with the GridOverflowContext to communicate with the nested grids:
// 1. It is the root grid with `disableEqualOverflow`.
// 2. It is a nested grid with different `disableEqualOverflow` from the context.
result = /*#__PURE__*/_jsx(GridOverflowContext.Provider, {
value: disableEqualOverflow,
children: result
});
}
return result;
});
process.env.NODE_ENV !== "production" ? Grid.propTypes /* remove-proptypes */ = {
children: PropTypes.node,
className: PropTypes.string,
columns: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number, PropTypes.object]),
columnSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
component: PropTypes.elementType,
container: PropTypes.bool,
direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),
disableEqualOverflow: PropTypes.bool,
lg: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
lgOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
md: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
mdOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
rowSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
sm: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
smOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),
xl: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
xlOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
xs: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),
xsOffset: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number])
} : void 0;
// @ts-ignore internal logic for nested grid
Grid.muiName = 'Grid';
return Grid;
}
+28
View File
@@ -0,0 +1,28 @@
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
import generateUtilityClass from '@mui/utils/generateUtilityClass';
export function getGridUtilityClass(slot) {
return generateUtilityClass('MuiGrid', slot);
}
var SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];
var WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];
var GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
var gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item'].concat(_toConsumableArray(SPACINGS.map(function (spacing) {
return "spacing-xs-".concat(spacing);
})), _toConsumableArray(DIRECTIONS.map(function (direction) {
return "direction-xs-".concat(direction);
})), _toConsumableArray(WRAPS.map(function (wrap) {
return "wrap-xs-".concat(wrap);
})), _toConsumableArray(GRID_SIZES.map(function (size) {
return "grid-xs-".concat(size);
})), _toConsumableArray(GRID_SIZES.map(function (size) {
return "grid-sm-".concat(size);
})), _toConsumableArray(GRID_SIZES.map(function (size) {
return "grid-md-".concat(size);
})), _toConsumableArray(GRID_SIZES.map(function (size) {
return "grid-lg-".concat(size);
})), _toConsumableArray(GRID_SIZES.map(function (size) {
return "grid-xl-".concat(size);
}))));
export default gridClasses;
+216
View File
@@ -0,0 +1,216 @@
import _typeof from "@babel/runtime/helpers/esm/typeof";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _extends from "@babel/runtime/helpers/esm/extends";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import { traverseBreakpoints } from './traverseBreakpoints';
function appendLevel(level) {
if (!level) {
return '';
}
return "Level".concat(level);
}
function isNestedContainer(ownerState) {
return ownerState.unstable_level > 0 && ownerState.container;
}
function createGetSelfSpacing(ownerState) {
return function getSelfSpacing(axis) {
return "var(--Grid-".concat(axis, "Spacing").concat(appendLevel(ownerState.unstable_level), ")");
};
}
function createGetParentSpacing(ownerState) {
return function getParentSpacing(axis) {
if (ownerState.unstable_level === 0) {
return "var(--Grid-".concat(axis, "Spacing)");
}
return "var(--Grid-".concat(axis, "Spacing").concat(appendLevel(ownerState.unstable_level - 1), ")");
};
}
function getParentColumns(ownerState) {
if (ownerState.unstable_level === 0) {
return "var(--Grid-columns)";
}
return "var(--Grid-columns".concat(appendLevel(ownerState.unstable_level - 1), ")");
}
export var generateGridSizeStyles = function generateGridSizeStyles(_ref) {
var theme = _ref.theme,
ownerState = _ref.ownerState;
var getSelfSpacing = createGetSelfSpacing(ownerState);
var styles = {};
traverseBreakpoints(theme.breakpoints, ownerState.gridSize, function (appendStyle, value) {
var style = {};
if (value === true) {
style = {
flexBasis: 0,
flexGrow: 1,
maxWidth: '100%'
};
}
if (value === 'auto') {
style = {
flexBasis: 'auto',
flexGrow: 0,
flexShrink: 0,
maxWidth: 'none',
width: 'auto'
};
}
if (typeof value === 'number') {
style = {
flexGrow: 0,
flexBasis: 'auto',
width: "calc(100% * ".concat(value, " / ").concat(getParentColumns(ownerState)).concat(isNestedContainer(ownerState) ? " + ".concat(getSelfSpacing('column')) : '', ")")
};
}
appendStyle(styles, style);
});
return styles;
};
export var generateGridOffsetStyles = function generateGridOffsetStyles(_ref2) {
var theme = _ref2.theme,
ownerState = _ref2.ownerState;
var styles = {};
traverseBreakpoints(theme.breakpoints, ownerState.gridOffset, function (appendStyle, value) {
var style = {};
if (value === 'auto') {
style = {
marginLeft: 'auto'
};
}
if (typeof value === 'number') {
style = {
marginLeft: value === 0 ? '0px' : "calc(100% * ".concat(value, " / ").concat(getParentColumns(ownerState), ")")
};
}
appendStyle(styles, style);
});
return styles;
};
export var generateGridColumnsStyles = function generateGridColumnsStyles(_ref3) {
var theme = _ref3.theme,
ownerState = _ref3.ownerState;
if (!ownerState.container) {
return {};
}
var styles = isNestedContainer(ownerState) ? _defineProperty({}, "--Grid-columns".concat(appendLevel(ownerState.unstable_level)), getParentColumns(ownerState)) : {
'--Grid-columns': 12
};
traverseBreakpoints(theme.breakpoints, ownerState.columns, function (appendStyle, value) {
appendStyle(styles, _defineProperty({}, "--Grid-columns".concat(appendLevel(ownerState.unstable_level)), value));
});
return styles;
};
export var generateGridRowSpacingStyles = function generateGridRowSpacingStyles(_ref5) {
var theme = _ref5.theme,
ownerState = _ref5.ownerState;
if (!ownerState.container) {
return {};
}
var getParentSpacing = createGetParentSpacing(ownerState);
var styles = isNestedContainer(ownerState) ? _defineProperty({}, "--Grid-rowSpacing".concat(appendLevel(ownerState.unstable_level)), getParentSpacing('row')) : {};
traverseBreakpoints(theme.breakpoints, ownerState.rowSpacing, function (appendStyle, value) {
var _theme$spacing;
appendStyle(styles, _defineProperty({}, "--Grid-rowSpacing".concat(appendLevel(ownerState.unstable_level)), typeof value === 'string' ? value : (_theme$spacing = theme.spacing) == null ? void 0 : _theme$spacing.call(theme, value)));
});
return styles;
};
export var generateGridColumnSpacingStyles = function generateGridColumnSpacingStyles(_ref7) {
var theme = _ref7.theme,
ownerState = _ref7.ownerState;
if (!ownerState.container) {
return {};
}
var getParentSpacing = createGetParentSpacing(ownerState);
var styles = isNestedContainer(ownerState) ? _defineProperty({}, "--Grid-columnSpacing".concat(appendLevel(ownerState.unstable_level)), getParentSpacing('column')) : {};
traverseBreakpoints(theme.breakpoints, ownerState.columnSpacing, function (appendStyle, value) {
var _theme$spacing2;
appendStyle(styles, _defineProperty({}, "--Grid-columnSpacing".concat(appendLevel(ownerState.unstable_level)), typeof value === 'string' ? value : (_theme$spacing2 = theme.spacing) == null ? void 0 : _theme$spacing2.call(theme, value)));
});
return styles;
};
export var generateGridDirectionStyles = function generateGridDirectionStyles(_ref9) {
var theme = _ref9.theme,
ownerState = _ref9.ownerState;
if (!ownerState.container) {
return {};
}
var styles = {};
traverseBreakpoints(theme.breakpoints, ownerState.direction, function (appendStyle, value) {
appendStyle(styles, {
flexDirection: value
});
});
return styles;
};
export var generateGridStyles = function generateGridStyles(_ref10) {
var ownerState = _ref10.ownerState;
var getSelfSpacing = createGetSelfSpacing(ownerState);
var getParentSpacing = createGetParentSpacing(ownerState);
return _extends({
minWidth: 0,
boxSizing: 'border-box'
}, ownerState.container && _extends({
display: 'flex',
flexWrap: 'wrap'
}, ownerState.wrap && ownerState.wrap !== 'wrap' && {
flexWrap: ownerState.wrap
}, {
margin: "calc(".concat(getSelfSpacing('row'), " / -2) calc(").concat(getSelfSpacing('column'), " / -2)")
}, ownerState.disableEqualOverflow && {
margin: "calc(".concat(getSelfSpacing('row'), " * -1) 0px 0px calc(").concat(getSelfSpacing('column'), " * -1)")
}), (!ownerState.container || isNestedContainer(ownerState)) && _extends({
padding: "calc(".concat(getParentSpacing('row'), " / 2) calc(").concat(getParentSpacing('column'), " / 2)")
}, (ownerState.disableEqualOverflow || ownerState.parentDisableEqualOverflow) && {
padding: "".concat(getParentSpacing('row'), " 0px 0px ").concat(getParentSpacing('column'))
}));
};
export var generateSizeClassNames = function generateSizeClassNames(gridSize) {
var classNames = [];
Object.entries(gridSize).forEach(function (_ref11) {
var _ref12 = _slicedToArray(_ref11, 2),
key = _ref12[0],
value = _ref12[1];
if (value !== false && value !== undefined) {
classNames.push("grid-".concat(key, "-").concat(String(value)));
}
});
return classNames;
};
export var generateSpacingClassNames = function generateSpacingClassNames(spacing) {
var smallestBreakpoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'xs';
function isValidSpacing(val) {
if (val === undefined) {
return false;
}
return typeof val === 'string' && !Number.isNaN(Number(val)) || typeof val === 'number' && val > 0;
}
if (isValidSpacing(spacing)) {
return ["spacing-".concat(smallestBreakpoint, "-").concat(String(spacing))];
}
if (_typeof(spacing) === 'object' && !Array.isArray(spacing)) {
var classNames = [];
Object.entries(spacing).forEach(function (_ref13) {
var _ref14 = _slicedToArray(_ref13, 2),
key = _ref14[0],
value = _ref14[1];
if (isValidSpacing(value)) {
classNames.push("spacing-".concat(key, "-").concat(String(value)));
}
});
return classNames;
}
return [];
};
export var generateDirectionClasses = function generateDirectionClasses(direction) {
if (direction === undefined) {
return [];
}
if (_typeof(direction) === 'object') {
return Object.entries(direction).map(function (_ref15) {
var _ref16 = _slicedToArray(_ref15, 2),
key = _ref16[0],
value = _ref16[1];
return "direction-".concat(key, "-").concat(value);
});
}
return ["direction-xs-".concat(String(direction))];
};
+8
View File
@@ -0,0 +1,8 @@
'use client';
export { default } from './Grid';
export { default as createGrid } from './createGrid';
export * from './GridProps';
export { default as gridClasses } from './gridClasses';
export * from './gridClasses';
export { traverseBreakpoints as unstable_traverseBreakpoints } from './traverseBreakpoints';
@@ -0,0 +1,48 @@
import _typeof from "@babel/runtime/helpers/esm/typeof";
import _extends from "@babel/runtime/helpers/esm/extends";
export var filterBreakpointKeys = function filterBreakpointKeys(breakpointsKeys, responsiveKeys) {
return breakpointsKeys.filter(function (key) {
return responsiveKeys.includes(key);
});
};
export var traverseBreakpoints = function traverseBreakpoints(breakpoints, responsive, iterator) {
var smallestBreakpoint = breakpoints.keys[0]; // the keys is sorted from smallest to largest by `createBreakpoints`.
if (Array.isArray(responsive)) {
responsive.forEach(function (breakpointValue, index) {
iterator(function (responsiveStyles, style) {
if (index <= breakpoints.keys.length - 1) {
if (index === 0) {
_extends(responsiveStyles, style);
} else {
responsiveStyles[breakpoints.up(breakpoints.keys[index])] = style;
}
}
}, breakpointValue);
});
} else if (responsive && _typeof(responsive) === 'object') {
// prevent null
// responsive could be a very big object, pick the smallest responsive values
var keys = Object.keys(responsive).length > breakpoints.keys.length ? breakpoints.keys : filterBreakpointKeys(breakpoints.keys, Object.keys(responsive));
keys.forEach(function (key) {
if (breakpoints.keys.indexOf(key) !== -1) {
// @ts-ignore already checked that responsive is an object
var breakpointValue = responsive[key];
if (breakpointValue !== undefined) {
iterator(function (responsiveStyles, style) {
if (smallestBreakpoint === key) {
_extends(responsiveStyles, style);
} else {
responsiveStyles[breakpoints.up(key)] = style;
}
}, breakpointValue);
}
}
});
} else if (typeof responsive === 'number' || typeof responsive === 'string') {
iterator(function (responsiveStyles, style) {
_extends(responsiveStyles, style);
}, responsive);
}
};