diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ce0407f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/components/AuthRequired.tsx b/components/AuthRequired.tsx deleted file mode 100644 index b27318e..0000000 --- a/components/AuthRequired.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useSession } from 'next-auth/react' -import { useRouter } from 'next/router'; - -export default function Auth({ children }) { - const router = useRouter(); - const { status } = useSession({ - required: true, - onUnauthenticated: () => router.push(`/signin?info=${encodeURI('Vous devez être connecté pour accéder à cette page')}`) - }); - - if (status === 'loading') { - return ( -
-

Chargement de la session en cours

-
- ); - } - - return children; -} \ No newline at end of file diff --git a/components/BlockWrapper/block-wrapper.module.scss b/components/BlockWrapper/block-wrapper.module.scss deleted file mode 100644 index 5ae9eda..0000000 --- a/components/BlockWrapper/block-wrapper.module.scss +++ /dev/null @@ -1,38 +0,0 @@ -@import "../../styles/keyframes.scss"; -@import "../../styles/colors.scss"; - -.block-wrapper { - height: auto; - width: 100%; - - & h4 { - user-select: none; - text-transform: uppercase; - font-size: 0.85em; - font-weight: 500; - color: $grey; - margin-bottom: 5px; - } - - & ul { - animation: fadein 0.3s both; - } - - & ul li { - position: relative; - user-select: none; - cursor: pointer; - height: fit-content; - width: 100%; - background-color: $white; - padding: 7px 12px; - border: 1px solid $lightest-grey; - border-bottom: 2px solid $lightest-grey; - border-radius: 3px; - transition: 0.15s; - - &:not(:last-child) { - margin-bottom: 5px; - } - } -} diff --git a/components/Links/links.module.scss b/components/Links/links.module.scss deleted file mode 100644 index 69caa56..0000000 --- a/components/Links/links.module.scss +++ /dev/null @@ -1,156 +0,0 @@ -@import "../../styles/keyframes.scss"; -@import "../../styles/colors.scss"; - -.no-link, -.no-category { - display: flex; - flex: 1; - align-items: center; - justify-content: center; - flex-direction: column; - animation: fadein 0.3s both; -} - -.links-wrapper { - height: 100%; - padding: 10px; - display: flex; - flex: 1; - flex-direction: column; - overflow-x: hidden; - overflow-y: scroll; - - & h2 { - color: $blue; - margin-bottom: 15px; - font-weight: 500; - - & .links-count { - color: $grey; - font-weight: 300; - font-size: 0.8em; - } - } -} - -.links { - width: 100%; - display: flex; - flex: 1; - flex-direction: column; - animation: fadein 0.3s both; // bug on drag start -} - -.link { - user-select: none; - cursor: pointer; - height: fit-content; - width: 100%; - color: $blue; - background-color: $white; - padding: 10px 15px; - border: 1px solid $lightest-grey; - border-radius: 3px; - margin-bottom: 10px; - outline: 3px solid transparent; - display: flex; - align-items: center; - transition: 0.15s; - - &:hover { - border: 1px solid transparent; - outline: 3px solid $light-blue; - - & .url-pathname { - animation: fadein 0.3s both; - } - - & .controls { - display: flex; - animation: fadein 0.3s both; - } - } -} - -.link > a { - height: 100%; - max-width: calc(100% - 125px); // TODO: faut fix ça, c'est pas beau - text-decoration: none; - display: flex; - flex: 1; - flex-direction: column; - transition: 0.1s; - - &, - &:hover { - border: 0; - } - - & .link-name { - display: flex; - align-items: center; - gap: 0.5em; - } - - & .link-name .link-category { - color: $grey; - font-size: 0.9em; - } - - & .link-url { - width: 100%; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - color: $grey; - font-size: 0.8em; - - & .url-pathname { - opacity: 0; - } - } -} - -.link .controls { - display: none; - align-items: center; - justify-content: center; - gap: 10px; - - & > * { - border: 0; - margin: 0; - padding: 0; - display: flex; - align-items: center; - justify-content: center; - transition: 0.1s; - - &:hover { - transform: scale(1.3); - } - - & svg { - height: 20px; - width: 20px; - } - } -} - -.favicon { - position: relative; - display: flex; - align-items: center; - justify-content: center; -} - -.favicon-loader { - position: absolute; - top: 0; - left: 0; - background-color: $white; - - & > * { - animation: rotate 1s both reverse infinite linear; - } -} diff --git a/components/MessageManager/message-manager.module.scss b/components/MessageManager/message-manager.module.scss deleted file mode 100644 index fdfee53..0000000 --- a/components/MessageManager/message-manager.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -@import "../../styles/colors.scss"; - -.info-msg { - height: fit-content; - width: 100%; - text-align: center; - font-style: italic; - font-size: 0.9em; - color: $dark-blue; - background-color: $lightest-blue; - padding: 10px; - border-radius: 3px; - animation: fadein 250ms both; -} - -.error-msg { - height: fit-content; - width: 100%; - text-align: center; - font-style: italic; - font-size: 0.9em; - color: $red; - background-color: $light-red; - padding: 10px; - border-radius: 3px; - animation: fadein 250ms both; -} - -.success-msg { - height: fit-content; - width: 100%; - text-align: center; - font-style: italic; - font-size: 0.9em; - color: $green; - background-color: $light-green; - padding: 10px; - border-radius: 3px; - animation: fadein 250ms both; -} diff --git a/components/Modal/modal.module.scss b/components/Modal/modal.module.scss deleted file mode 100644 index 8b5f307..0000000 --- a/components/Modal/modal.module.scss +++ /dev/null @@ -1,54 +0,0 @@ -@import "../../styles/colors.scss"; -@import "../../styles/keyframes.scss"; - -.modal-wrapper { - z-index: 9999; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - background: rgba($black, 0.5); - backdrop-filter: blur(0.25em); - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - animation: opacityin 0.3s both; -} - -.modal-container { - background: $light-grey; - min-width: 500px; - padding: 1em 1.5em; - border-radius: 3px; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - animation: fadeintop 0.3s both; -} - -.modal-header { - width: 100%; - margin-bottom: 1.5em; - display: flex; - align-items: center; - justify-content: space-between; - - & button.btn-close { - color: $blue; - background-color: transparent; - border: 0; - padding: 0; - margin: 0; - } -} - -.modal-body { - width: 100%; - display: flex; - flex: 1; - align-items: center; - flex-direction: column; -} diff --git a/components/Selector.tsx b/components/Selector.tsx deleted file mode 100644 index 78d579f..0000000 --- a/components/Selector.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { MutableRefObject, useEffect, useState } from 'react'; -import Select, { OptionsOrGroups, GroupBase } from 'react-select'; - -type Option = { label: string | number; value: string | number; } - -interface SelectorProps { - name: string; - label?: string; - labelComponent?: JSX.Element; - innerRef?: MutableRefObject; - fieldClass?: string; - - options: OptionsOrGroups>; - value?: number | string; - onChangeCallback?: (value: number | string) => void; - - disabled?: boolean; -} - -export default function Selector({ - name, - label, - labelComponent, - innerRef = null, - fieldClass = '', - value, - options = [], - onChangeCallback, - disabled = false -}: SelectorProps): JSX.Element { - const [selectorValue, setSelectorValue] = useState