@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
178 lines (177 loc) • 5.16 kB
JavaScript
import { createStyles } from "@crossed/styled";
const buttonSizeStyles = createStyles(({ space }) => ({
default: {
":disabled": { opacity: 0.5 },
web: {
"base": { boxSizing: "border-box" },
":focus-visible": {
outlineWidth: "2px",
outlineOffset: "2px",
outlineStyle: "solid"
}
},
base: {
display: "flex",
borderRadius: 7,
borderWidth: 2,
borderStyle: "solid",
borderColor: "transparent",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
backgroundColor: "transparent",
gap: 8
}
},
sm: { base: { height: 32, paddingHorizontal: space.md } },
md: { base: { height: 44, paddingHorizontal: space.xl } },
lg: { base: { height: 52, paddingHorizontal: space["3xl"] } }
}));
const buttonPrimaryStyles = createStyles(
({ components: { Action } }) => ({
root: {
"base": {
backgroundColor: Action.primary.default.background,
borderColor: Action.primary.default.background
},
":hover": {
backgroundColor: Action.primary.hover.background,
borderColor: Action.primary.hover.background
},
":active": {
backgroundColor: Action.primary.active.background,
borderColor: Action.primary.active.background
},
"web": {
":focus-visible": {
outlineColor: Action.primary.focus.border
}
}
},
text: { "base": { color: Action.primary.default.text } },
textHover: { "base": { color: Action.primary.hover.text } },
textActive: { "base": { color: Action.primary.active.text } }
})
);
const buttonSecondaryStyles = createStyles(
({ components: { Action } }) => ({
root: {
"base": {
borderColor: Action.secondary.default.border,
backgroundColor: Action.secondary.default.background
},
":hover": {
borderColor: Action.secondary.hover.border,
backgroundColor: Action.secondary.hover.background
},
":active": {
borderColor: Action.secondary.active.border,
backgroundColor: Action.secondary.active.background
},
"web": {
":focus-visible": {
outlineColor: Action.secondary.focus.border
}
}
},
text: { "base": { color: Action.secondary.default.text } },
textHover: { "base": { color: Action.secondary.hover.text } },
textActive: { "base": { color: Action.secondary.active.text } }
})
);
const buttonTertiaryStyles = createStyles(
({ components: { Action } }) => ({
root: {
"base": {
borderColor: Action.tertiary.default.border,
backgroundColor: Action.tertiary.default.background
},
":hover": {
borderColor: Action.tertiary.hover.border,
backgroundColor: Action.tertiary.hover.background
},
":active": {
borderColor: Action.tertiary.active.border,
backgroundColor: Action.tertiary.active.background
},
"web": {
":focus-visible": {
outlineColor: Action.tertiary.focus.border,
backgroundColor: Action.tertiary.focus.background
}
}
},
text: { "base": { color: Action.tertiary.default.text } },
textHover: { "base": { color: Action.tertiary.hover.text } },
textActive: { "base": { color: Action.tertiary.active.text } }
})
);
const buttonSuccessStyles = createStyles(
({ colors }) => ({
root: {
"base": {
borderColor: colors.success.primary,
backgroundColor: colors.success.primary
},
":hover": {
borderColor: colors.success.dark,
backgroundColor: colors.success.dark
},
":active": {
borderColor: colors.success.dark,
backgroundColor: colors.success.dark
},
"web": {
":focus-visible": {
outlineColor: colors.success.primary
}
}
},
text: { "base": { color: colors.white } },
textHover: {},
textActive: {}
})
);
const buttonErrorStyles = createStyles(
({ colors }) => ({
root: {
"base": {
backgroundColor: colors.error.primary,
borderColor: colors.error.primary
},
":hover": {
backgroundColor: colors.error.muted,
borderColor: colors.error.muted
},
":active": {
backgroundColor: colors.error.satured,
borderColor: colors.error.satured
},
"web": {
":focus-visible": {
outlineColor: colors.error.primary
}
}
},
text: { "base": { color: colors.white } },
textHover: {},
textActive: {}
})
);
const textStyles = createStyles(() => ({
default: { base: { fontWeight: "bold" } },
disabled: { base: { pointerEvents: "none" } }
// sm: { base: { height: 32, paddingHorizontal: space.xs } },
// md: { base: { height: 44, paddingHorizontal: space.md } },
// lg: { base: { height: 52, paddingHorizontal: space.lg } },
}));
export {
buttonErrorStyles,
buttonPrimaryStyles,
buttonSecondaryStyles,
buttonSizeStyles,
buttonSuccessStyles,
buttonTertiaryStyles,
textStyles
};
//# sourceMappingURL=styles.js.map