aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/Buttons
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/Buttons')
-rw-r--r--src/components/Buttons/Button/Button.tsx35
-rw-r--r--src/components/Buttons/ButtonHelp/ButtonHelp.module.scss52
-rw-r--r--src/components/Buttons/ButtonHelp/ButtonHelp.tsx42
-rw-r--r--src/components/Buttons/ButtonLink/ButtonLink.tsx30
-rw-r--r--src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx22
-rw-r--r--src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx72
-rw-r--r--src/components/Buttons/Buttons.module.scss289
-rw-r--r--src/components/Buttons/index.tsx7
8 files changed, 0 insertions, 549 deletions
diff --git a/src/components/Buttons/Button/Button.tsx b/src/components/Buttons/Button/Button.tsx
deleted file mode 100644
index ada23fe..0000000
--- a/src/components/Buttons/Button/Button.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { ButtonKind, ButtonPosition } from '@ts/types/app';
-import { ReactNode } from 'react';
-import styles from '../Buttons.module.scss';
-
-const Button = ({
- children,
- clickHandler,
- kind = 'secondary',
- position = 'left',
- spacing = false,
- isDisabled = false,
-}: {
- children: ReactNode;
- clickHandler: any;
- kind?: ButtonKind;
- position?: ButtonPosition;
- spacing?: boolean;
- isDisabled?: boolean;
-}) => {
- const spacingClass = spacing ? styles.spacing : '';
- const classes = `${styles.btn} ${styles[position]} ${styles[kind]} ${spacingClass}`;
-
- return (
- <button
- className={classes}
- type="button"
- disabled={isDisabled}
- onClick={clickHandler}
- >
- {children}
- </button>
- );
-};
-
-export default Button;
diff --git a/src/components/Buttons/ButtonHelp/ButtonHelp.module.scss b/src/components/Buttons/ButtonHelp/ButtonHelp.module.scss
deleted file mode 100644
index b2a05d7..0000000
--- a/src/components/Buttons/ButtonHelp/ButtonHelp.module.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-@use "@styles/abstracts/functions" as fun;
-@use "@styles/abstracts/mixins" as mix;
-
-.icon {
- color: var(--color-primary-dark);
- font-weight: 600;
-}
-
-.active {
- .icon {
- color: var(--color-fg-inverted);
- }
-}
-
-.wrapper {
- width: fun.convert-px(44);
- height: fun.convert-px(44);
- background: var(--color-bg);
- border: fun.convert-px(3) solid var(--color-primary-dark);
- border-radius: 50%;
- box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow);
- transition: all 0.3s ease-in-out 0s;
-
- @include mix.pointer("fine") {
- width: fun.convert-px(30);
- height: fun.convert-px(30);
- line-height: 1;
- }
-
- &:hover,
- &:focus {
- border-color: var(--color-primary-light);
- color: var(--color-primary-light);
- 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),
- fun.convert-px(7) fun.convert-px(10) fun.convert-px(12) fun.convert-px(-3)
- var(--color-shadow-light);
- transform: scale(1.1);
-
- .icon {
- transform: scale(1.1);
- }
- }
-
- &.active {
- background: var(--color-primary);
- }
-}
diff --git a/src/components/Buttons/ButtonHelp/ButtonHelp.tsx b/src/components/Buttons/ButtonHelp/ButtonHelp.tsx
deleted file mode 100644
index 2616a8f..0000000
--- a/src/components/Buttons/ButtonHelp/ButtonHelp.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { SetStateAction } from 'react';
-import { useIntl } from 'react-intl';
-import styles from './ButtonHelp.module.scss';
-
-const ButtonHelp = ({
- showHelp,
- setShowHelp,
- title,
-}: {
- showHelp: boolean;
- setShowHelp: (value: SetStateAction<boolean>) => void;
- title?: string;
-}) => {
- const intl = useIntl();
-
- const handleClick = () => {
- setShowHelp((prev) => !prev);
- };
-
- const activeModifier = showHelp ? styles.active : '';
-
- return (
- <button
- onClick={handleClick}
- title={title}
- className={`${styles.wrapper} ${activeModifier}`}
- >
- <span className={styles.icon} aria-hidden="true">
- ?
- </span>
- <span className="screen-reader-text">
- {intl.formatMessage({
- defaultMessage: 'Help',
- description: 'ButtonHelp: screen reader text',
- id: 'oPf+XA',
- })}
- </span>
- </button>
- );
-};
-
-export default ButtonHelp;
diff --git a/src/components/Buttons/ButtonLink/ButtonLink.tsx b/src/components/Buttons/ButtonLink/ButtonLink.tsx
deleted file mode 100644
index 179c686..0000000
--- a/src/components/Buttons/ButtonLink/ButtonLink.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { ButtonPosition } from '@ts/types/app';
-import Link from 'next/link';
-import { ReactNode } from 'react';
-import styles from '../Buttons.module.scss';
-
-const ButtonLink = ({
- children,
- target,
- position = 'left',
- isExternal = false,
-}: {
- children: ReactNode;
- target: string;
- position?: ButtonPosition;
- isExternal?: boolean;
-}) => {
- const classes = `${styles.btn} ${styles[position]} ${styles.tertiary}`;
-
- return isExternal ? (
- <a className={classes} href={target}>
- {children}
- </a>
- ) : (
- <Link href={target}>
- <a className={classes}>{children}</a>
- </Link>
- );
-};
-
-export default ButtonLink;
diff --git a/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx b/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx
deleted file mode 100644
index 4725cad..0000000
--- a/src/components/Buttons/ButtonSubmit/ButtonSubmit.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { ReactNode } from 'react';
-import styles from '../Buttons.module.scss';
-
-type Modifier = 'search' | 'submit';
-
-const ButtonSubmit = ({
- children,
- modifier = 'submit',
-}: {
- children: ReactNode;
- modifier?: Modifier;
-}) => {
- const withModifier = modifier === 'search' ? styles.search : styles.primary;
-
- return (
- <button type="submit" className={`${styles.btn} ${withModifier}`}>
- {children}
- </button>
- );
-};
-
-export default ButtonSubmit;
diff --git a/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx b/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx
deleted file mode 100644
index 7ceb70d..0000000
--- a/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import { CloseIcon, CogIcon, SearchIcon } from '@components/Icons';
-import { ForwardedRef, forwardRef, SetStateAction } from 'react';
-import { useIntl } from 'react-intl';
-import styles from '../Buttons.module.scss';
-
-type ButtonType = 'search' | 'settings';
-
-const ButtonToolbar = (
- {
- type,
- isActivated,
- setIsActivated,
- }: {
- type: ButtonType;
- isActivated: boolean;
- setIsActivated: (value: SetStateAction<boolean>) => void;
- },
- ref: ForwardedRef<HTMLButtonElement>
-) => {
- const intl = useIntl();
- const ButtonIcon = () => (type === 'search' ? <SearchIcon /> : <CogIcon />);
- const btnClasses = isActivated
- ? `${styles.toolbar} ${styles['toolbar--activated']}`
- : styles.toolbar;
-
- return (
- <button
- ref={ref}
- className={btnClasses}
- type="button"
- onClick={() => setIsActivated(!isActivated)}
- >
- <span className={styles.icon}>
- <span className={styles.front}>
- <ButtonIcon />
- </span>
- <span className={styles.back}>
- <CloseIcon />
- </span>
- </span>
- {isActivated ? (
- <span className="screen-reader-text">
- {intl.formatMessage(
- {
- defaultMessage: 'Close {type}',
- description: 'ButtonToolbar: Close button',
- id: 'SWq8a4',
- },
- {
- type,
- }
- )}
- </span>
- ) : (
- <span className="screen-reader-text">
- {intl.formatMessage(
- {
- defaultMessage: 'Open {type}',
- description: 'ButtonToolbar: Open button',
- id: 'Z1eSIz',
- },
- {
- type,
- }
- )}
- </span>
- )}
- </button>
- );
-};
-
-export default forwardRef(ButtonToolbar);
diff --git a/src/components/Buttons/Buttons.module.scss b/src/components/Buttons/Buttons.module.scss
deleted file mode 100644
index 0ea9289..0000000
--- a/src/components/Buttons/Buttons.module.scss
+++ /dev/null
@@ -1,289 +0,0 @@
-@use "@styles/abstracts/functions" as fun;
-@use "@styles/abstracts/mixins" as mix;
-@use "@styles/abstracts/placeholders";
-
-.btn {
- display: block;
- border: none;
- font-size: var(--font-size-md);
-}
-
-.left {
- margin-right: auto;
-}
-
-.right {
- margin-left: auto;
-}
-
-.center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.primary {
- margin: auto;
- padding: var(--spacing-2xs) var(--spacing-md);
- background: var(--color-primary);
- border: fun.convert-px(2) solid var(--color-bg);
- border-radius: fun.convert-px(5);
- box-shadow: 0 0 0 fun.convert-px(2) var(--color-primary),
- 0 0 0 fun.convert-px(3) var(--color-primary-darker),
- fun.convert-px(2) fun.convert-px(2) 0 fun.convert-px(3)
- var(--color-primary-dark);
- color: var(--color-fg-inverted);
- font-weight: 600;
- text-shadow: fun.convert-px(2) fun.convert-px(2) 0 var(--color-shadow);
- transition: all 0.25s ease-in-out 0s;
-
- &:hover,
- &:focus {
- background: var(--color-primary-light);
- box-shadow: 0 0 0 fun.convert-px(2) var(--color-primary-light),
- 0 0 0 fun.convert-px(3) var(--color-primary-darker),
- fun.convert-px(7) fun.convert-px(7) 0 fun.convert-px(2)
- var(--color-primary-dark);
- transform: translateX(#{fun.convert-px(-4)})
- translateY(#{fun.convert-px(-4)});
- }
-
- &:focus {
- text-decoration: underline solid var(--color-fg-inverted) fun.convert-px(2);
- }
-
- &:active {
- background: var(--color-primary-dark);
- box-shadow: 0 0 0 fun.convert-px(2) var(--color-primary),
- 0 0 0 fun.convert-px(3) var(--color-primary-darker),
- 0 0 0 0 var(--color-primary-dark);
- text-decoration: none;
- transform: translateX(#{fun.convert-px(4)}) translateY(#{fun.convert-px(4)});
- }
-}
-
-.secondary {
- padding: var(--spacing-2xs) var(--spacing-md);
- background: var(--color-bg);
- border: fun.convert-px(3) solid var(--color-primary);
- border-radius: fun.convert-px(5);
- box-shadow: fun.convert-px(2) fun.convert-px(2) 0 0 var(--color-bg),
- fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-primary-dark),
- fun.convert-px(5) fun.convert-px(5) 0 0 var(--color-bg),
- fun.convert-px(6) fun.convert-px(6) 0 0 var(--color-primary-dark);
- color: var(--color-primary);
- font-weight: 600;
- transition: all 0.35s ease-out 0s;
-
- &:disabled {
- color: var(--color-fg-light);
- border-color: var(--color-border-dark);
- box-shadow: fun.convert-px(2) fun.convert-px(2) 0 0 var(--color-bg),
- fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-primary-darker),
- fun.convert-px(5) fun.convert-px(5) 0 0 var(--color-bg),
- fun.convert-px(6) fun.convert-px(6) 0 0 var(--color-primary-darker);
- cursor: wait;
- }
-
- &:not(:disabled) {
- &:hover,
- &:focus {
- transform: translateX(#{fun.convert-px(-3)})
- translateY(#{fun.convert-px(-5)});
- border-color: var(--color-primary-light);
- box-shadow: fun.convert-px(2) fun.convert-px(3) 0 0 var(--color-bg),
- fun.convert-px(4) fun.convert-px(5) 0 0 var(--color-primary),
- fun.convert-px(6) fun.convert-px(8) 0 0 var(--color-bg),
- fun.convert-px(8) fun.convert-px(10) 0 0 var(--color-primary),
- fun.convert-px(10) fun.convert-px(12) fun.convert-px(1) 0
- var(--color-shadow-light),
- fun.convert-px(10) fun.convert-px(12) fun.convert-px(5)
- fun.convert-px(1) var(--color-shadow-light);
- color: var(--color-primary-light);
- }
-
- &:focus {
- text-decoration: underline var(--color-primary) fun.convert-px(2);
- }
-
- &:active {
- text-decoration: none;
- transform: translateX(#{fun.convert-px(5)})
- translateY(#{fun.convert-px(6)});
- box-shadow: 0 0 0 0 var(--color-shadow);
- }
- }
-}
-
-.tertiary {
- display: flex;
- flex-flow: row wrap;
- place-items: center;
- gap: var(--spacing-2xs);
- width: max-content;
- padding: var(--spacing-2xs) var(--spacing-sm);
- position: relative;
- background: var(--color-bg);
- border: fun.convert-px(3) solid var(--color-primary);
- border-radius: fun.convert-px(5);
- box-shadow: fun.convert-px(1) fun.convert-px(1) fun.convert-px(1)
- var(--color-shadow),
- fun.convert-px(1) fun.convert-px(2) fun.convert-px(2) fun.convert-px(-2)
- var(--color-shadow),
- fun.convert-px(3) fun.convert-px(4) fun.convert-px(5) fun.convert-px(-4)
- var(--color-shadow);
- color: var(--color-primary);
- font-weight: 600;
- text-decoration: underline transparent 0;
- transition: all 0.3s ease-in-out 0s, text-decoration 0.35s ease-in-out 0s;
-
- &:hover,
- &:focus {
- border-color: var(--color-primary-light);
- color: var(--color-primary-light);
- 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),
- fun.convert-px(7) fun.convert-px(10) fun.convert-px(12) fun.convert-px(-3)
- var(--color-shadow-light);
- transform: scale(1.1);
- }
-
- &:focus {
- text-decoration: underline var(--color-primary-light) fun.convert-px(3);
- }
-
- &:active {
- border-color: var(--color-primary-dark);
- color: var(--color-primary-dark);
- box-shadow: 0 0 0 0 var(--color-shadow);
- text-decoration: underline transparent 0;
- transform: scale(0.94);
- }
-}
-
-:global {
- [data-theme="dark"] {
- :local {
- .tertiary {
- img[src*="png"] {
- background: none;
- }
- }
- }
- }
-}
-
-.toolbar {
- --draw-border-thickness: #{fun.convert-px(4)};
- --icon-size: 100%;
-
- display: flex;
- flex-flow: row nowrap;
- place-items: center;
- width: var(--btn-size, 100%);
- height: var(--btn-size, 100%);
- padding: var(--spacing-2xs);
- background: none;
- border: none;
- font-size: var(--font-size-md);
-
- &:hover,
- &:focus {
- --draw-border-color1: var(--color-primary-light);
- --draw-border-color2: var(--color-primary-lighter);
-
- @extend %draw-borders;
- }
-
- @include mix.media("screen") {
- @include mix.dimensions("md") {
- border-radius: 8%;
- }
- }
-}
-
-.icon {
- display: block;
- width: 100%;
- height: 100%;
- position: relative;
- transform-style: preserve-3d;
- transform: translate3d(0, 0, 0);
- transition: all 0.5s ease-in-out 0s;
-}
-
-.front,
-.back {
- display: flex;
- place-content: center;
- width: var(--icon-size);
- height: var(--icon-size);
- position: absolute;
- top: 0;
- right: 0;
- transition: all 0.6s ease-in 0s;
- backface-visibility: hidden;
-}
-
-.front {
- transform: scale(1);
- z-index: 20;
-}
-
-.back {
- transform: scale(0.2) rotateY(180deg);
- z-index: 10;
-}
-
-.toolbar--activated {
- .icon {
- transform: rotateY(180deg);
- }
-
- .front {
- transform: scale(0.2);
- }
-
- .back {
- transform: scale(1) rotateY(180deg);
- }
-}
-
-.search {
- background: transparent;
- margin-left: calc(var(--btn-size) * -1);
- z-index: 5;
- transition: all 0.3s ease-in-out 0s;
-
- svg {
- transform: scale(0.85);
- transition: all 0.3s ease-in-out 0s;
- }
-
- &:hover,
- &:focus {
- svg {
- transform: scale(0.85) rotate(20deg) translateY(#{fun.convert-px(3)});
- }
- }
-
- &:focus {
- outline: var(--color-primary-light) solid fun.convert-px(3);
- }
-
- &:active {
- outline: none;
-
- svg {
- transform: scale(0.7);
- }
- }
-}
-
-.spacing {
- margin-top: var(--spacing-md);
- margin-bottom: var(--spacing-md);
-}
diff --git a/src/components/Buttons/index.tsx b/src/components/Buttons/index.tsx
deleted file mode 100644
index 9b4b756..0000000
--- a/src/components/Buttons/index.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import Button from './Button/Button';
-import ButtonLink from './ButtonLink/ButtonLink';
-import ButtonToolbar from './ButtonToolbar/ButtonToolbar';
-import ButtonSubmit from './ButtonSubmit/ButtonSubmit';
-import ButtonHelp from './ButtonHelp/ButtonHelp';
-
-export { Button, ButtonHelp, ButtonLink, ButtonToolbar, ButtonSubmit };