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