react-style-props
v1.1.2
Published
React library for styling components with defined props
Maintainers
Readme
react-style-props
Style your React components using defined style props easily.
install
npm install react-style-propsusage
// set up YourComponent.tsx
import { HtmlHTMLAttributes, ReactElement, Ref, forwardRef } from "react";
import styled from "@emotion/styled";
import { DefaultConfigType, resolveProps } from "react-style-props"; // add...(1)
export interface YourComponentInterface
extends HtmlHTMLAttributes<HTMLDivElement>,
DefaultConfigType {} // add...(2)
const YourComponent = ({ children, ...props }: YourComponentInterface): ReactElement => {
const { styleString, otherProps } = resolveProps(props); // add...(3)
return (
<$YourComponent css={styleString} {...otherProps} {/** add...(4) */}>
{children}
</$YourComponent>
);
};
export default YourComponent;
const $YourComponent = styled("div")<any>`
${({ css }) => css} // add...(5)
`;// use
<YourComponent ac fullV>
<YourTxt fs={14} fw={700} mr0mlAuto mouseCss>
Hello
</YourTxt>
</YourComponent>Supported props
- All CSS properties are supported
Special Style Props
Layout Props
flex: Enable flex displayjc: Enable flex and justify-content: centerac: Enable flex and align-items: centerbetween: Enable flex with justify-content: space-betweencolumn,col: Enable flex with flex-direction: columnrow: Enable flex with flex-direction: rowabsolute,fixed,relative,sticky: Set position
Size Props
w,width: Set element widthh,height: Set element heightsize: Set both width and height (can use array [width, height] or widthHeight)fullP: Set width: 100% and height: 100%fullV: Set width: 100vw and height: 100vh
Margin & Padding Props
m,margin: Set all marginsmx: Set horizontal margins (left & right)my: Set vertical margins (top & bottom)mt,mr,mb,ml: Set individual marginsp,padding: Set all paddingpx: Set horizontal paddingpy: Set vertical paddingpt,pr,pb,pl: Set individual padding
Text Props
fs,fontSize: Set font sizefw,fontWeight: Set font weighttextCenter: Set text-align: centertextLeft: Set text-align: lefttextRight: Set text-align: rightellipsis: Enable text ellipsis with overflow
Mouse Interaction Props
pointer: Set cursor: pointermouseCss: Apply hover and active effects for mouse interaction
Border Props
round3,round4,round5,round8: Preset border-radius valuesborder: Set border styleborderRadius: Set border radius
Font Style Classification
Heading (for titles)
- Size: 26px ~ 34px
- line-height: 180%
- Purpose: Page titles, section titles, main headings
// 34px heading styles
heading34B; // Bold (800)
heading34SB; // SemiBold (700)
heading34M; // Medium (600)
heading34SM; // SemiMedium (500)
heading34R; // Regular (400)
heading34L; // Light (300)
// 32px heading styles
heading32B, heading32SB, heading32M, heading32SM, heading32R, heading32L;
// 30px heading styles
heading30B, heading30SB, heading30M, heading30SM, heading30R, heading30L;
// 28px heading styles
heading28B, heading28SB, heading28M, heading28SM, heading28R, heading28L;
// 26px heading styles
heading26B, heading26SB, heading26M, heading26SM, heading26R, heading26L;Text (for body content)
- Size: 8px ~ 24px
- line-height: 160%
- Purpose: Body text, button text, description text
// 24px text styles
text24B, text24SB, text24M, text24SM, text24R, text24L;
// 22px text styles
text22B, text22SB, text22M, text22SM, text22R, text22L;
// 20px text styles
text20B, text20SB, text20M, text20SM, text20R, text20L;
// 18px text styles
text18B, text18SB, text18M, text18SM, text18R, text18L;
// 16px text styles (default body)
text16B, text16SB, text16M, text16SM, text16R, text16L;
// 14px text styles
text14B, text14SB, text14M, text14SM, text14R, text14L;
// 12px text styles
text12B, text12SB, text12M, text12SM, text12R, text12L;
// 10px text styles
text10B, text10SB, text10M, text10SM, text10R, text10L;
// 8px text styles
text8B, text8SB, text8M, text8SM, text8R, text8L;Font Weight
Each size provides 6 different weights:
- B (Bold): 800 - Boldest text, for emphasis
- SB (SemiBold): 700 - Bold text, for subtitles
- M (Medium): 600 - Medium weight, for emphasized text
- SM (SemiMedium): 500 - Slightly bold text
- R (Regular): 400 - Default weight, for body text
- L (Light): 300 - Light text, for additional information
Other Props
none: Set display: nonejc: Set justify-content: center with display: flexac: Set align-items: center with display: flexmr0mlAuto: Set margin-right: 0; margin-left: auto;ml0mrAuto: Set margin-left: 0; margin-right: auto;
More props are available. See github: react-style-props ...types/index.d.ts
License
MIT
