-
- {items.map((item, index) =>
- getParent(item) === item || !folded.includes(getParent(item)) ? (
- handleSetValue(event, item)}
- initial={{ ...animateSideAppear.initial }}
- animate={{ ...animateSideAppear.animate }}
- exit={{ ...animateSideAppear.exit }}
- >
- {foldable.has(item) ? (
-
- : }
- onClick={event => handleClickFold(event, item, folded.includes(item))}
- />
-
- ) : null}
- {getParent(item) === item ? getLabel(item) : `- ${getLabel(item).toLowerCase()}`}
-
- ) : null
- )}
-
+ {items.map((item, index) => {
+ const isActive = getParent(item) === item || !folded.includes(getParent(item));
+ return (
+
handleSetValue(event, item) : undefined}
+ style={{
+ borderBottomWidth: isActive ? '1px' : '0px',
+ transitionProperty: 'height, opacity, padding',
+ transitionDuration: `${PARAMETER.moveDuration}ms`,
+ paddingTop: isActive ? '0.25rem' : '0',
+ paddingBottom: isActive ? '0.25rem' : '0',
+ height: isActive ? 'min-content' : '0',
+ opacity: isActive ? '1' : '0'
+ }}
+ >
+ {foldable.has(item) ? (
+
+ : }
+ onClick={event => handleClickFold(event, item, folded.includes(item))}
+ />
+
+ ) : null}
+ {getParent(item) === item ? getLabel(item) : `- ${getLabel(item).toLowerCase()}`}
+
+ );
+ })}
);
}
diff --git a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
index 6c5ae255..d2cd078f 100644
--- a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
+++ b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
@@ -4,9 +4,8 @@ import { createContext, useCallback, useContext, useLayoutEffect, useMemo, useSt
import Tooltip from '@/components/ui/Tooltip';
import useLocalStorage from '@/hooks/useLocalStorage';
-import { animationDuration } from '@/styling/animations';
import { darkT, IColorTheme, lightT } from '@/styling/color';
-import { globals, storage } from '@/utils/constants';
+import { globals, PARAMETER, storage } from '@/utils/constants';
import { contextOutsideScope } from '@/utils/labels';
interface IOptionsContext {
@@ -91,7 +90,7 @@ export const OptionsState = ({ children }: React.PropsWithChildren) => {
setNoNavigation(false);
} else {
setNoNavigationAnimation(true);
- setTimeout(() => setNoNavigation(true), animationDuration.navigationToggle);
+ setTimeout(() => setNoNavigation(true), PARAMETER.moveDuration);
}
}, [noNavigation]);
diff --git a/rsconcept/frontend/src/pages/LibraryPage/LibraryPage.tsx b/rsconcept/frontend/src/pages/LibraryPage/LibraryPage.tsx
index a08cb7d3..0f3b2cfb 100644
--- a/rsconcept/frontend/src/pages/LibraryPage/LibraryPage.tsx
+++ b/rsconcept/frontend/src/pages/LibraryPage/LibraryPage.tsx
@@ -1,6 +1,5 @@
'use client';
-import { AnimatePresence } from 'framer-motion';
import fileDownload from 'js-file-download';
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
import { toast } from 'react-toastify';
@@ -150,6 +149,7 @@ function LibraryPage() {
const viewLocations = useMemo(
() => (