This commit is contained in:
13
package-lock.json
generated
13
package-lock.json
generated
@@ -9,6 +9,7 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@gfazioli/mantine-border-animate": "^3.0.2",
|
"@gfazioli/mantine-border-animate": "^3.0.2",
|
||||||
|
"@gfazioli/mantine-parallax": "^4.0.10",
|
||||||
"@gfazioli/mantine-text-animate": "^4.0.10",
|
"@gfazioli/mantine-text-animate": "^4.0.10",
|
||||||
"@hello-pangea/dnd": "^18.0.1",
|
"@hello-pangea/dnd": "^18.0.1",
|
||||||
"@mantine/core": "^9.6.2",
|
"@mantine/core": "^9.6.2",
|
||||||
@@ -185,6 +186,18 @@
|
|||||||
"react-dom": "^18.x || ^19.x"
|
"react-dom": "^18.x || ^19.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@gfazioli/mantine-parallax": {
|
||||||
|
"version": "4.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-parallax/-/mantine-parallax-4.0.10.tgz",
|
||||||
|
"integrity": "sha512-EeSvOe2gywHry1vXUJ/ylnAyxHEUnYeGZDeiP/D0Kv+wY76TiQ3vvllUZRFTafg6d5fcu//VTwhqiN0FOjqT/A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"@mantine/core": ">=9.0.0",
|
||||||
|
"@mantine/hooks": ">=9.0.0",
|
||||||
|
"react": "^18.x || ^19.x",
|
||||||
|
"react-dom": "^18.x || ^19.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@gfazioli/mantine-text-animate": {
|
"node_modules/@gfazioli/mantine-text-animate": {
|
||||||
"version": "4.0.10",
|
"version": "4.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-4.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-4.0.10.tgz",
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@gfazioli/mantine-border-animate": "^3.0.2",
|
"@gfazioli/mantine-border-animate": "^3.0.2",
|
||||||
|
"@gfazioli/mantine-parallax": "^4.0.10",
|
||||||
"@gfazioli/mantine-text-animate": "^4.0.10",
|
"@gfazioli/mantine-text-animate": "^4.0.10",
|
||||||
"@hello-pangea/dnd": "^18.0.1",
|
"@hello-pangea/dnd": "^18.0.1",
|
||||||
"@mantine/core": "^9.6.2",
|
"@mantine/core": "^9.6.2",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import '@mantine/dates/styles.css';
|
|||||||
import '@mantine/notifications/styles.css';
|
import '@mantine/notifications/styles.css';
|
||||||
import 'react-fontpicker-ts/dist/index.css';
|
import 'react-fontpicker-ts/dist/index.css';
|
||||||
import '@gfazioli/mantine-border-animate/styles.css';
|
import '@gfazioli/mantine-border-animate/styles.css';
|
||||||
|
import '@gfazioli/mantine-parallax/styles.css';
|
||||||
import '@gfazioli/mantine-text-animate/styles.css';
|
import '@gfazioli/mantine-text-animate/styles.css';
|
||||||
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
||||||
import { Homepage, Settings } from 'pages';
|
import { Homepage, Settings } from 'pages';
|
||||||
|
|||||||
@@ -23,17 +23,6 @@ export function DataTable({
|
|||||||
globalFilter: string | number;
|
globalFilter: string | number;
|
||||||
isRefreshing?: boolean;
|
isRefreshing?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const [scrollParent, setScrollParent] = useState<HTMLDivElement | null>(null);
|
|
||||||
|
|
||||||
const virtualizer = useVirtualizer({
|
|
||||||
count: data.length,
|
|
||||||
getScrollElement: () => scrollParent,
|
|
||||||
estimateSize: () => 30,
|
|
||||||
overscan: 5,
|
|
||||||
});
|
|
||||||
|
|
||||||
const virtualItems = virtualizer.getVirtualItems();
|
|
||||||
|
|
||||||
const table = useTable({
|
const table = useTable({
|
||||||
features,
|
features,
|
||||||
data: data,
|
data: data,
|
||||||
@@ -46,6 +35,18 @@ export function DataTable({
|
|||||||
globalFilter: globalFilter,
|
globalFilter: globalFilter,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [scrollParent, setScrollParent] = useState<HTMLDivElement | null>(null);
|
||||||
|
|
||||||
|
const virtualizer = useVirtualizer({
|
||||||
|
count: table.getFilteredRowModel().rows.length,
|
||||||
|
getScrollElement: () => scrollParent,
|
||||||
|
estimateSize: () => 30,
|
||||||
|
overscan: 5,
|
||||||
|
});
|
||||||
|
|
||||||
|
const virtualItems = virtualizer.getVirtualItems();
|
||||||
|
|
||||||
const { rows } = table.getRowModel();
|
const { rows } = table.getRowModel();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -56,8 +57,8 @@ export function DataTable({
|
|||||||
<Table
|
<Table
|
||||||
style={{
|
style={{
|
||||||
width: '100%',
|
width: '100%',
|
||||||
borderSpacing: '2px 0px',
|
|
||||||
backgroundColor: 'var(--mantine-color-accent-0)',
|
backgroundColor: 'var(--mantine-color-accent-0)',
|
||||||
|
position: 'relative',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Table.Thead
|
<Table.Thead
|
||||||
@@ -212,13 +213,14 @@ export function DataTable({
|
|||||||
<Table.Tfoot
|
<Table.Tfoot
|
||||||
style={{
|
style={{
|
||||||
transition: 'all 1s ease',
|
transition: 'all 1s ease',
|
||||||
|
position: 'sticky',
|
||||||
|
bottom: -16,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Table.Tr
|
<Table.Tr
|
||||||
|
h={'100%'}
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: 'var(--mantine-color-primary-0)',
|
backgroundColor: 'var(--mantine-color-primary-0)',
|
||||||
position: 'sticky',
|
|
||||||
bottom: 0,
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Table.Td colSpan={5}>
|
<Table.Td colSpan={5}>
|
||||||
@@ -240,9 +242,7 @@ export function DataTable({
|
|||||||
? 'var(--mantine-color-accent-0)'
|
? 'var(--mantine-color-accent-0)'
|
||||||
: 'transparent',
|
: 'transparent',
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
bottom: isRefreshing ? 0 : -40,
|
bottom: isRefreshing ? 0 : -32,
|
||||||
paddingBottom: 6,
|
|
||||||
paddingTop: 6,
|
|
||||||
transition: 'all 1.5s ease-in-out',
|
transition: 'all 1.5s ease-in-out',
|
||||||
placeContent: 'center',
|
placeContent: 'center',
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ export function SearchHistory() {
|
|||||||
align='center'
|
align='center'
|
||||||
>
|
>
|
||||||
<Stack h={'calc(100vh - 14rem)'} w={'100%'} p={'1rem'} pt={0} mt={'1rem'} gap={0}>
|
<Stack h={'calc(100vh - 14rem)'} w={'100%'} p={'1rem'} pt={0} mt={'1rem'} gap={0}>
|
||||||
<Stack h={'inherit'} style={{ overflow: 'scroll', whiteSpace: 'none' }}>
|
<Stack style={{ overflow: 'scroll', whiteSpace: 'none' }}>
|
||||||
<DataTable
|
<DataTable
|
||||||
data={searchHistory}
|
data={searchHistory}
|
||||||
columns={SearchHistoryColumns(
|
columns={SearchHistoryColumns(
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export function ThemeCard({
|
|||||||
setSelectedTheme,
|
setSelectedTheme,
|
||||||
openThemeModal,
|
openThemeModal,
|
||||||
enabled = true,
|
enabled = true,
|
||||||
|
management = true,
|
||||||
}: {
|
}: {
|
||||||
cardTheme: Theme;
|
cardTheme: Theme;
|
||||||
allThemes: Theme[];
|
allThemes: Theme[];
|
||||||
@@ -22,7 +23,9 @@ export function ThemeCard({
|
|||||||
setSelectedTheme: (theme: Theme) => void;
|
setSelectedTheme: (theme: Theme) => void;
|
||||||
openThemeModal: () => void;
|
openThemeModal: () => void;
|
||||||
enabled?: boolean;
|
enabled?: boolean;
|
||||||
|
management?: boolean;
|
||||||
}) {
|
}) {
|
||||||
|
console.log(cardTheme);
|
||||||
const { hovered, ref: hoverRef } = useHover();
|
const { hovered, ref: hoverRef } = useHover();
|
||||||
const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false);
|
const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false);
|
||||||
const { currentTheme, setCurrentTheme, setCurrentThemePlaylist, handleDelete } =
|
const { currentTheme, setCurrentTheme, setCurrentThemePlaylist, handleDelete } =
|
||||||
@@ -84,43 +87,45 @@ export function ThemeCard({
|
|||||||
>
|
>
|
||||||
{cardTheme.name}
|
{cardTheme.name}
|
||||||
</Text>
|
</Text>
|
||||||
<Group
|
{management && (
|
||||||
style={{
|
<Group
|
||||||
width: '100%',
|
style={{
|
||||||
height: '100%',
|
width: '100%',
|
||||||
overflow: 'hidden',
|
height: '100%',
|
||||||
transition: 'all .2s ease',
|
overflow: 'hidden',
|
||||||
position: 'absolute',
|
transition: 'all .2s ease',
|
||||||
}}
|
position: 'absolute',
|
||||||
>
|
}}
|
||||||
<ThemeManagementPill
|
>
|
||||||
allThemes={allThemes}
|
<ThemeManagementPill
|
||||||
cardTheme={cardTheme}
|
allThemes={allThemes}
|
||||||
handleOpen={handleOpen}
|
cardTheme={cardTheme}
|
||||||
themePlaylists={themePlaylists}
|
handleOpen={handleOpen}
|
||||||
openModal={openModal}
|
themePlaylists={themePlaylists}
|
||||||
hovered={hovered && enabled}
|
openModal={openModal}
|
||||||
hoverPreview={hoverPreview}
|
hovered={hovered && enabled}
|
||||||
setHoverPreview={setHoverPreview}
|
hoverPreview={hoverPreview}
|
||||||
transition={transition}
|
setHoverPreview={setHoverPreview}
|
||||||
setTransition={setTransition}
|
transition={transition}
|
||||||
/>
|
setTransition={setTransition}
|
||||||
</Group>
|
/>
|
||||||
|
</Group>
|
||||||
|
)}
|
||||||
<Button
|
<Button
|
||||||
w={'275px'}
|
w={'275px'}
|
||||||
h={'115px'}
|
h={'115px'}
|
||||||
disabled={currentTheme === 'random'}
|
disabled={currentTheme === 'random'}
|
||||||
style={{
|
style={{
|
||||||
backgroundImage:
|
backgroundImage:
|
||||||
cardTheme?.backgroundImage.toLocaleLowerCase() === 'none'
|
cardTheme?.backgroundImage?.toLocaleLowerCase() === 'none'
|
||||||
? undefined
|
? undefined
|
||||||
: `linear-gradient(${cardTheme?.backgroundColor}33, ${cardTheme?.backgroundColor}33), url(../../trigger/api/backgroundImages/thumbs/${cardTheme?.backgroundImage})`,
|
: `linear-gradient(${cardTheme?.backgroundColor}33, ${cardTheme?.backgroundColor}33), url(../../trigger/api/backgroundImages/thumbs/${cardTheme?.backgroundImage})`,
|
||||||
backgroundSize:
|
backgroundSize:
|
||||||
cardTheme?.backgroundImage.toLocaleLowerCase() === 'none'
|
cardTheme?.backgroundImage?.toLocaleLowerCase() === 'none'
|
||||||
? undefined
|
? undefined
|
||||||
: 'cover',
|
: 'cover',
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
cardTheme?.backgroundImage.toLocaleLowerCase() === 'none'
|
cardTheme?.backgroundImage?.toLocaleLowerCase() === 'none'
|
||||||
? cardTheme?.backgroundColor
|
? cardTheme?.backgroundColor
|
||||||
: undefined,
|
: undefined,
|
||||||
backgroundPosition: 'center',
|
backgroundPosition: 'center',
|
||||||
@@ -132,8 +137,8 @@ export function ThemeCard({
|
|||||||
transition: 'all .25s ease',
|
transition: 'all .25s ease',
|
||||||
}}
|
}}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setCurrentTheme(cardTheme.name);
|
if(enabled !== false){setCurrentTheme(cardTheme.name);
|
||||||
setCurrentThemePlaylist('All');
|
setCurrentThemePlaylist('All');}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{hovered && enabled && currentTheme !== 'random' && (
|
{hovered && enabled && currentTheme !== 'random' && (
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
export { ThemeCard } from './ThemeCard';
|
||||||
export { ThemeMiniCard } from './ThemeMiniCard';
|
export { ThemeMiniCard } from './ThemeMiniCard';
|
||||||
export { ThemePreviewMiddleware } from './ThemePreviewMiddleware';
|
export { ThemePreviewMiddleware } from './ThemePreviewMiddleware';
|
||||||
export { Themes } from './Themes';
|
export { Themes } from './Themes';
|
||||||
|
|||||||
Reference in New Issue
Block a user