summaryrefslogtreecommitdiffstats
path: root/src/components/Buttons
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-16 17:34:41 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-16 17:35:22 +0100
commit6e2a66ca0f12e11c66d993ed22624cd4659b5f2e (patch)
treef8434b2a49dacdb6d9c633d9fa1d3af4b9c298ec /src/components/Buttons
parente1678d1116aa462ddd2bc70d10496e37b053433e (diff)
chore: define secondary button styles
I also rename submit style to primary.
Diffstat (limited to 'src/components/Buttons')
-rw-r--r--src/components/Buttons/Button/Button.tsx31
-rw-r--r--src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx2
-rw-r--r--src/components/Buttons/Buttons.module.scss54
-rw-r--r--src/components/Buttons/index.tsx3
4 files changed, 85 insertions, 5 deletions
diff --git a/src/components/Buttons/Button/Button.tsx b/src/components/Buttons/Button/Button.tsx
new file mode 100644
index 0000000..c186d2a
--- /dev/null
+++ b/src/components/Buttons/Button/Button.tsx
@@ -0,0 +1,31 @@
+import { ReactNode } from 'react';
+import styles from '../Buttons.module.scss';
+
+const Button = ({
+ children,
+ clickHandler,
+ isDisabled = false,
+ isPrimary = false,
+}: {
+ children: ReactNode;
+ clickHandler: any;
+ isDisabled: boolean;
+ isPrimary?: boolean;
+}) => {
+ const classes = `${styles.btn} ${
+ isPrimary ? styles.primary : styles.secondary
+ }`;
+
+ return (
+ <button
+ className={classes}
+ type="button"
+ disabled={isDisabled}
+ onClick={clickHandler}
+ >
+ {children}
+ </button>
+ );
+};
+
+export default Button;
diff --git a/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx b/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx
index fd7fc62..a2e493a 100644
--- a/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx
+++ b/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx
@@ -2,7 +2,7 @@ import styles from '../Buttons.module.scss';
const ButtonSubmit: React.FunctionComponent = ({ children }) => {
return (
- <button type="submit" className={`${styles.btn} ${styles.submit}`}>
+ <button type="submit" className={`${styles.btn} ${styles.primary}`}>
{children}
</button>
);
diff --git a/src/components/Buttons/Buttons.module.scss b/src/components/Buttons/Buttons.module.scss
index 93dfb9d..b5e2c75 100644
--- a/src/components/Buttons/Buttons.module.scss
+++ b/src/components/Buttons/Buttons.module.scss
@@ -2,13 +2,13 @@
.btn {
display: block;
- padding: var(--spacing-2xs) var(--spacing-md);
+ margin: auto;
border: none;
font-size: var(--font-size-md);
}
-.submit {
- margin: auto;
+.primary {
+ padding: var(--spacing-xs) var(--spacing-md);
background: var(--color-primary);
border-radius: fun.convert-px(3);
box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-primary-dark);
@@ -32,3 +32,51 @@
transform: translateX(#{fun.convert-px(3)}) translateY(#{fun.convert-px(3)});
}
}
+
+.secondary {
+ padding: var(--spacing-2xs) var(--spacing-md);
+ background: var(--color-bg);
+ border: fun.convert-px(5) solid var(--color-primary);
+ border-radius: fun.convert-px(25);
+ box-shadow: fun.convert-px(1) fun.convert-px(1) fun.convert-px(1)
+ var(--color-shadow-light),
+ fun.convert-px(1) fun.convert-px(2) fun.convert-px(2) fun.convert-px(-2)
+ var(--color-shadow-light),
+ fun.convert-px(3) fun.convert-px(4) fun.convert-px(5) fun.convert-px(-4)
+ var(--color-shadow-light);
+ color: var(--color-primary);
+ font-weight: 500;
+ transition: all 0.35s ease-in-out 0s;
+
+ &:disabled {
+ color: var(--color-fg-light);
+ border-color: var(--color-border);
+ cursor: wait;
+ }
+
+ &:not(:disabled) {
+ &:hover,
+ &:focus {
+ transform: translateX(#{fun.convert-px(-3)})
+ translateY(#{fun.convert-px(-6)});
+ box-shadow: fun.convert-px(1) fun.convert-px(1) fun.convert-px(1)
+ var(--color-shadow-lighter),
+ fun.convert-px(1) fun.convert-px(2) fun.convert-px(2) fun.convert-px(-2)
+ var(--color-shadow-lighter),
+ fun.convert-px(3) fun.convert-px(4) fun.convert-px(5) fun.convert-px(-4)
+ var(--color-shadow-lighter),
+ fun.convert-px(7) fun.convert-px(10) fun.convert-px(12)
+ fun.convert-px(-3) var(--color-shadow-lighter);
+ }
+
+ &:focus {
+ text-decoration: underline var(--color-primary) fun.convert-px(3);
+ }
+
+ &:active {
+ text-decoration: none;
+ transform: translateY(#{fun.convert-px(2)});
+ box-shadow: 0 0 0 0 var(--color-shadow-light);
+ }
+ }
+}
diff --git a/src/components/Buttons/index.tsx b/src/components/Buttons/index.tsx
index ea145ca..78289c9 100644
--- a/src/components/Buttons/index.tsx
+++ b/src/components/Buttons/index.tsx
@@ -1,3 +1,4 @@
+import Button from './Button/Button';
import ButtonSubmit from './ButtonSubmit/ButtonSubmit';
-export { ButtonSubmit };
+export { Button, ButtonSubmit };