Skip to content

Commit

Permalink
feat(material): export all components in the index file
Browse files Browse the repository at this point in the history
  • Loading branch information
juanrgm committed Oct 28, 2022
1 parent 6440e2d commit 15be1ab
Show file tree
Hide file tree
Showing 6 changed files with 244 additions and 87 deletions.
5 changes: 5 additions & 0 deletions .changeset/healthy-trains-push.md
@@ -0,0 +1,5 @@
---
"@suid/material": minor
---

Export all components in the index file
77 changes: 76 additions & 1 deletion packages/material/src/index.tsx
Expand Up @@ -5,4 +5,79 @@ export namespace PropTypes {
// eslint-disable-next-line @typescript-eslint/no-shadow, @typescript-eslint/no-unused-vars
export type Color = "inherit" | "primary" | "secondary" | "default";
}
export {};
export { default as Alert } from "./Alert";
export { default as Avatar } from "./Avatar";
export { default as AlertTitle } from "./AlertTitle";
export { default as AppBar } from "./AppBar";
export { default as Backdrop } from "./Backdrop";
export { default as Badge } from "./Badge";
export { default as Box } from "./Box";
export { default as Breadcrumbs } from "./Breadcrumbs";
export { default as Button } from "./Button";
export { default as ButtonBase } from "./ButtonBase";
export { default as ButtonGroup } from "./ButtonGroup";
export { default as Card } from "./Card";
export { default as CardActionArea } from "./CardActionArea";
export { default as CardActions } from "./CardActions";
export { default as CardContent } from "./CardContent";
export { default as CardHeader } from "./CardHeader";
export { default as CardMedia } from "./CardMedia";
export { default as Checkbox } from "./Checkbox";
export { default as Chip } from "./Chip";
export { default as CircularProgress } from "./CircularProgress";
export { default as Container } from "./Container";
export { default as CssBaseline } from "./CssBaseline";
export { default as Divider } from "./Divider";
export { default as Drawer } from "./Drawer";
export { default as Fab } from "./Fab";
export { default as Fade } from "./Fade";
export { default as FilledInput } from "./FilledInput";
export { default as FormControl } from "./FormControl";
export { default as FormControlLabel } from "./FormControlLabel";
export { default as FormGroup } from "./FormGroup";
export { default as FormHelperText } from "./FormHelperText";
export { default as FormLabel } from "./FormLabel";
export { default as GlobalStyles } from "./GlobalStyles";
export { default as Grid } from "./Grid";
export { default as Grow } from "./Grow";
export { default as Icon } from "./Icon";
export { default as IconButton } from "./IconButton";
export { default as Input } from "./Input";
export { default as InputBase } from "./InputBase";
export { default as InputLabel } from "./InputLabel";
export { default as LinearProgress } from "./LinearProgress";
export { default as Link } from "./Link";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";
export { default as ListItemAvatar } from "./ListItemAvatar";
export { default as ListItemButton } from "./ListItemButton";
export { default as ListItemIcon } from "./ListItemIcon";
export { default as ListItemSecondaryAction } from "./ListItemSecondaryAction";
export { default as ListItemText } from "./ListItemText";
export { default as ListSubheader } from "./ListSubheader";
export { default as Modal } from "./Modal";
export { default as NativeSelect } from "./NativeSelect";
export { default as OutlinedInput } from "./OutlinedInput";
export { default as Paper } from "./Paper";
export { default as Popover } from "./Popover";
export { default as Radio } from "./Radio";
export { default as RadioGroup } from "./RadioGroup";
export { default as Skeleton } from "./Skeleton";
export { default as Slide } from "./Slide";
export { default as Stack } from "./Stack";
export { default as SvgIcon } from "./SvgIcon";
export { default as Switch } from "./Switch";
export { default as SwitchBase } from "./internal/SwitchBase";
export { default as Table } from "./Table";
export { default as TableBody } from "./TableBody";
export { default as TableCell } from "./TableCell";
export { default as TableContainer } from "./TableContainer";
export { default as TableFooter } from "./TableFooter";
export { default as TableHead } from "./TableHead";
export { default as TableRow } from "./TableRow";
export { default as TextField } from "./TextField";
export { default as ToggleButton } from "./ToggleButton";
export { default as ToggleButtonGroup } from "./ToggleButtonGroup";
export { default as Toolbar } from "./Toolbar";
export { default as Typography } from "./Typography";
export { default as useMediaQuery } from "./useMediaQuery";
229 changes: 154 additions & 75 deletions packages/material/src/styles/components-types.ts
@@ -1,75 +1,154 @@
export { default as MuiAlert } from "../Alert";
export { default as MuiAvatar } from "../Avatar";
export { default as MuiAlertTitle } from "../AlertTitle";
export { default as MuiAppBar } from "../AppBar";
export { default as MuiBackdrop } from "../Backdrop";
export { default as MuiBadge } from "../Badge";
export { default as MuiBox } from "../Box";
export { default as MuiBreadcrumbs } from "../Breadcrumbs";
export { default as MuiButton } from "../Button";
export { default as MuiButtonBase } from "../ButtonBase";
export { default as MuiButtonGroup } from "../ButtonGroup";
export { default as MuiCard } from "../Card";
export { default as MuiCardActionArea } from "../CardActionArea";
export { default as MuiCardActions } from "../CardActions";
export { default as MuiCardContent } from "../CardContent";
export { default as MuiCardHeader } from "../CardHeader";
export { default as MuiCardMedia } from "../CardMedia";
export { default as MuiCheckbox } from "../Checkbox";
export { default as MuiChip } from "../Chip";
export { default as MuiCircularProgress } from "../CircularProgress";
export { default as MuiContainer } from "../Container";
export { default as MuiCssBaseline } from "../CssBaseline";
export { default as MuiDivider } from "../Divider";
export { default as MuiDrawer } from "../Drawer";
export { default as MuiFab } from "../Fab";
export { default as MuiFade } from "../Fade";
export { default as MuiFilledInput } from "../FilledInput";
export { default as MuiFormControl } from "../FormControl";
export { default as MuiFormControlLabel } from "../FormControlLabel";
export { default as MuiFormGroup } from "../FormGroup";
export { default as MuiFormHelperText } from "../FormHelperText";
export { default as MuiFormLabel } from "../FormLabel";
export { default as MuiGlobalStyles } from "../GlobalStyles";
export { default as MuiGrid } from "../Grid";
export { default as MuiGrow } from "../Grow";
export { default as MuiIcon } from "../Icon";
export { default as MuiIconButton } from "../IconButton";
export { default as MuiInput } from "../Input";
export { default as MuiInputBase } from "../InputBase";
export { default as MuiInputLabel } from "../InputLabel";
export { default as MuiLinearProgress } from "../LinearProgress";
export { default as MuiLink } from "../Link";
export { default as MuiList } from "../List";
export { default as MuiListItem } from "../ListItem";
export { default as MuiListItemAvatar } from "../ListItemAvatar";
export { default as MuiListItemButton } from "../ListItemButton";
export { default as MuiListItemIcon } from "../ListItemIcon";
export { default as MuiListItemSecondaryAction } from "../ListItemSecondaryAction";
export { default as MuiListItemText } from "../ListItemText";
export { default as MuiListSubheader } from "../ListSubheader";
export { default as MuiModal } from "../Modal";
export { default as MuiNativeSelect } from "../NativeSelect";
export { default as MuiOutlinedInput } from "../OutlinedInput";
export { default as MuiPaper } from "../Paper";
export { default as MuiPopover } from "../Popover";
export { default as MuiRadio } from "../Radio";
export { default as MuiRadioGroup } from "../RadioGroup";
export { default as MuiSkeleton } from "../Skeleton";
export { default as MuiSlide } from "../Slide";
export { default as MuiStack } from "../Stack";
export { default as MuiSvgIcon } from "../SvgIcon";
export { default as MuiSwitch } from "../Switch";
export { default as MuiSwitchBase } from "../internal/SwitchBase";
export { default as MuiTable } from "../Table";
export { default as MuiTableBody } from "../TableBody";
export { default as MuiTableCell } from "../TableCell";
export { default as MuiTableContainer } from "../TableContainer";
export { default as MuiTableFooter } from "../TableFooter";
export { default as MuiTableHead } from "../TableHead";
export { default as MuiTableRow } from "../TableRow";
export { default as MuiTextField } from "../TextField";
export { default as MuiToggleButton } from "../ToggleButton";
export { default as MuiToggleButtonGroup } from "../ToggleButtonGroup";
export { default as MuiToolbar } from "../Toolbar";
export { default as MuiTypography } from "../Typography";
import type MuiAlert from "../Alert";
import type MuiAlertTitle from "../AlertTitle";
import type MuiAppBar from "../AppBar";
import type MuiAvatar from "../Avatar";
import type MuiBackdrop from "../Backdrop";
import type MuiBadge from "../Badge";
import type MuiBox from "../Box";
import type MuiBreadcrumbs from "../Breadcrumbs";
import type MuiButton from "../Button";
import type MuiButtonBase from "../ButtonBase";
import type MuiButtonGroup from "../ButtonGroup";
import type MuiCard from "../Card";
import type MuiCardActionArea from "../CardActionArea";
import type MuiCardActions from "../CardActions";
import type MuiCardContent from "../CardContent";
import type MuiCardHeader from "../CardHeader";
import type MuiCardMedia from "../CardMedia";
import type MuiCheckbox from "../Checkbox";
import type MuiChip from "../Chip";
import type MuiCircularProgress from "../CircularProgress";
import type MuiContainer from "../Container";
import type MuiCssBaseline from "../CssBaseline";
import type MuiDivider from "../Divider";
import type MuiDrawer from "../Drawer";
import type MuiFab from "../Fab";
import type MuiFade from "../Fade";
import type MuiFilledInput from "../FilledInput";
import type MuiFormControl from "../FormControl";
import type MuiFormControlLabel from "../FormControlLabel";
import type MuiFormGroup from "../FormGroup";
import type MuiFormHelperText from "../FormHelperText";
import type MuiFormLabel from "../FormLabel";
import type MuiGlobalStyles from "../GlobalStyles";
import type MuiGrid from "../Grid";
import type MuiGrow from "../Grow";
import type MuiIcon from "../Icon";
import type MuiIconButton from "../IconButton";
import type MuiInput from "../Input";
import type MuiInputBase from "../InputBase";
import type MuiInputLabel from "../InputLabel";
import type MuiLinearProgress from "../LinearProgress";
import type MuiLink from "../Link";
import type MuiList from "../List";
import type MuiListItem from "../ListItem";
import type MuiListItemAvatar from "../ListItemAvatar";
import type MuiListItemButton from "../ListItemButton";
import type MuiListItemIcon from "../ListItemIcon";
import type MuiListItemSecondaryAction from "../ListItemSecondaryAction";
import type MuiListItemText from "../ListItemText";
import type MuiListSubheader from "../ListSubheader";
import type MuiModal from "../Modal";
import type MuiNativeSelect from "../NativeSelect";
import type MuiOutlinedInput from "../OutlinedInput";
import type MuiPaper from "../Paper";
import type MuiPopover from "../Popover";
import type MuiRadio from "../Radio";
import type MuiRadioGroup from "../RadioGroup";
import type MuiSkeleton from "../Skeleton";
import type MuiSlide from "../Slide";
import type MuiStack from "../Stack";
import type MuiSvgIcon from "../SvgIcon";
import type MuiSwitch from "../Switch";
import type MuiTable from "../Table";
import type MuiTableBody from "../TableBody";
import type MuiTableCell from "../TableCell";
import type MuiTableContainer from "../TableContainer";
import type MuiTableFooter from "../TableFooter";
import type MuiTableHead from "../TableHead";
import type MuiTableRow from "../TableRow";
import type MuiTextField from "../TextField";
import type MuiToggleButton from "../ToggleButton";
import type MuiToggleButtonGroup from "../ToggleButtonGroup";
import type MuiToolbar from "../Toolbar";
import type MuiTypography from "../Typography";
import type MuiSwitchBase from "../internal/SwitchBase";

export type ComponentsTypes = {
MuiAlert: typeof MuiAlert;
MuiAlertTitle: typeof MuiAlertTitle;
MuiAppBar: typeof MuiAppBar;
MuiAvatar: typeof MuiAvatar;
MuiBackdrop: typeof MuiBackdrop;
MuiBadge: typeof MuiBadge;
MuiBox: typeof MuiBox;
MuiBreadcrumbs: typeof MuiBreadcrumbs;
MuiButton: typeof MuiButton;
MuiButtonBase: typeof MuiButtonBase;
MuiButtonGroup: typeof MuiButtonGroup;
MuiCard: typeof MuiCard;
MuiCardActionArea: typeof MuiCardActionArea;
MuiCardActions: typeof MuiCardActions;
MuiCardContent: typeof MuiCardContent;
MuiCardHeader: typeof MuiCardHeader;
MuiCardMedia: typeof MuiCardMedia;
MuiCheckbox: typeof MuiCheckbox;
MuiChip: typeof MuiChip;
MuiCircularProgress: typeof MuiCircularProgress;
MuiContainer: typeof MuiContainer;
MuiCssBaseline: typeof MuiCssBaseline;
MuiDivider: typeof MuiDivider;
MuiDrawer: typeof MuiDrawer;
MuiFab: typeof MuiFab;
MuiFade: typeof MuiFade;
MuiFilledInput: typeof MuiFilledInput;
MuiFormControl: typeof MuiFormControl;
MuiFormControlLabel: typeof MuiFormControlLabel;
MuiFormGroup: typeof MuiFormGroup;
MuiFormHelperText: typeof MuiFormHelperText;
MuiFormLabel: typeof MuiFormLabel;
MuiGlobalStyles: typeof MuiGlobalStyles;
MuiGrid: typeof MuiGrid;
MuiGrow: typeof MuiGrow;
MuiIcon: typeof MuiIcon;
MuiIconButton: typeof MuiIconButton;
MuiInput: typeof MuiInput;
MuiInputBase: typeof MuiInputBase;
MuiInputLabel: typeof MuiInputLabel;
MuiLinearProgress: typeof MuiLinearProgress;
MuiLink: typeof MuiLink;
MuiList: typeof MuiList;
MuiListItem: typeof MuiListItem;
MuiListItemAvatar: typeof MuiListItemAvatar;
MuiListItemButton: typeof MuiListItemButton;
MuiListItemIcon: typeof MuiListItemIcon;
MuiListItemSecondaryAction: typeof MuiListItemSecondaryAction;
MuiListItemText: typeof MuiListItemText;
MuiListSubheader: typeof MuiListSubheader;
MuiModal: typeof MuiModal;
MuiNativeSelect: typeof MuiNativeSelect;
MuiOutlinedInput: typeof MuiOutlinedInput;
MuiPaper: typeof MuiPaper;
MuiPopover: typeof MuiPopover;
MuiRadio: typeof MuiRadio;
MuiRadioGroup: typeof MuiRadioGroup;
MuiSkeleton: typeof MuiSkeleton;
MuiSlide: typeof MuiSlide;
MuiStack: typeof MuiStack;
MuiSvgIcon: typeof MuiSvgIcon;
MuiSwitch: typeof MuiSwitch;
MuiTable: typeof MuiTable;
MuiTableBody: typeof MuiTableBody;
MuiTableCell: typeof MuiTableCell;
MuiTableContainer: typeof MuiTableContainer;
MuiTableFooter: typeof MuiTableFooter;
MuiTableHead: typeof MuiTableHead;
MuiTableRow: typeof MuiTableRow;
MuiTextField: typeof MuiTextField;
MuiToggleButton: typeof MuiToggleButton;
MuiToggleButtonGroup: typeof MuiToggleButtonGroup;
MuiToolbar: typeof MuiToolbar;
MuiTypography: typeof MuiTypography;
MuiSwitchBase: typeof MuiSwitchBase;
};
export {};
9 changes: 4 additions & 5 deletions packages/material/src/styles/createComponents.tsx
@@ -1,19 +1,18 @@
import type * as ComponentsTypes from "./components-types";
import type { ComponentsTypes } from "./components-types";
import { DeepPartial, InferPropsType } from "@suid/types";
import merge from "@suid/utils/merge";

export type Components = ComponentsOptions & {};

export type ComponentName = keyof typeof ComponentsTypes;
export type PickThemeComponent<N extends ComponentName> =
typeof ComponentsTypes[N];
export type ComponentName = keyof ComponentsTypes;
export type PickThemeComponent<N extends ComponentName> = ComponentsTypes[N];

export type PickThemeComponentProps<N extends ComponentName> = InferPropsType<
PickThemeComponent<N>
>;

export type ComponentsOptions = {
[C in keyof typeof ComponentsTypes]?: {
[C in keyof ComponentsTypes]?: {
defaultProps?: Partial<PickThemeComponentProps<C>>;
};
};
Expand Down
4 changes: 2 additions & 2 deletions packages/material/src/styles/styled.tsx
@@ -1,9 +1,9 @@
import { Theme, useTheme } from ".";
import * as ComponentTypes from "./components-types";
import type { ComponentsTypes } from "./components-types";
import createStyled, { skipProps } from "@suid/system/createStyled";

export const skipRootProps = [...skipProps, "classes"];

export default createStyled<Theme, typeof ComponentTypes>({
export default createStyled<Theme, ComponentsTypes>({
onUseTheme: () => useTheme(),
});
7 changes: 3 additions & 4 deletions packages/material/src/styles/useThemeProps.ts
@@ -1,11 +1,10 @@
import * as ComponentTypes from "./components-types";
import type { ComponentsTypes } from "./components-types";
import useBaseThemeProps, {
ThemePropOptions as BaseThemePropOptions,
} from "@suid/base/useThemeProps";

export type ThemePropsName = keyof typeof ComponentTypes;
export type ThemePropsComponent<N extends ThemePropsName> =
typeof ComponentTypes[N];
export type ThemePropsName = keyof ComponentsTypes;
export type ThemePropsComponent<N extends ThemePropsName> = ComponentsTypes[N];

export type ThemePropOptions<
N extends ThemePropsName,
Expand Down

0 comments on commit 15be1ab

Please sign in to comment.