Merge branch 'benphelps:main' into main

This commit is contained in:
Dimitri Cappelle 2023-06-23 08:00:12 +02:00 committed by GitHub
commit 418a653347
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 245 additions and 19 deletions

1
package-lock.json generated
View File

@ -21,7 +21,6 @@
"minecraft-ping-js": "^1.0.2",
"next": "^12.3.1",
"next-i18next": "^12.0.1",
"osx-temperature-sensor": "*",
"pretty-bytes": "^6.0.0",
"raw-body": "^2.5.1",
"react": "^18.2.0",

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadCount": "Queue Count",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadCount": "Queue Count",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Velocidad",
"downloadBytesRemaining": "Restante",
"downloadTotalBytes": "Tamaño"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Vitesse de téléchargement",
"downloadBytesRemaining": "Restant",
"downloadTotalBytes": "Taille"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadCount": "Queue Count",
"downloadTotalBytes": "Size",
"downloadBytesRemaining": "Remaining"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -659,5 +659,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"totalFiles": "Files",
"seriesCount": "Series"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"totalFiles": "Files",
"seriesCount": "Series"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Швидкість",
"downloadBytesRemaining": "Залишилося",
"downloadTotalBytes": "Розмір"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -632,7 +632,7 @@
"requests_failed": "失败请求"
},
"evcc": {
"pv_power": "Production",
"pv_power": "正式环境",
"battery_soc": "Battery",
"grid_power": "Grid",
"home_power": "Consumption",
@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -650,5 +650,9 @@
"downloadSpeed": "Download Speed",
"downloadBytesRemaining": "Remaining",
"downloadTotalBytes": "Size"
},
"kavita": {
"seriesCount": "Series",
"totalFiles": "Files"
}
}

View File

@ -1,13 +1,41 @@
import classNames from "classnames";
import { Disclosure, Transition } from '@headlessui/react';
import { MdKeyboardArrowDown } from "react-icons/md";
import ErrorBoundary from "components/errorboundry";
import List from "components/bookmarks/list";
export default function BookmarksGroup({ group }) {
export default function BookmarksGroup({ group, disableCollapse }) {
return (
<div key={group.name} className="flex-1">
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2>
<ErrorBoundary>
<List bookmarks={group.bookmarks} />
</ErrorBoundary>
<Disclosure defaultOpen>
{({ open }) => (
<>
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2>
<MdKeyboardArrowDown className={classNames(
disableCollapse ? 'hidden' : '',
'transition-opacity opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
open ? 'rotate-180 transform' : ''
)} />
</Disclosure.Button>
<Transition
enter="transition duration-200 ease-out"
enterFrom="transform scale-75 opacity-0"
enterTo="transform scale-100 opacity-100"
leave="transition duration-75 ease-out"
leaveFrom="transform scale-100 opacity-100"
leaveTo="transform scale-75 opacity-0"
>
<Disclosure.Panel>
<ErrorBoundary>
<List bookmarks={group.bookmarks} />
</ErrorBoundary>
</Disclosure.Panel>
</Transition>
</>
)}
</Disclosure>
</div>
);
}

View File

@ -1,9 +1,12 @@
import classNames from "classnames";
import { Disclosure, Transition } from '@headlessui/react';
import { MdKeyboardArrowDown } from "react-icons/md";
import List from "components/services/list";
import ResolvedIcon from "components/resolvedicon";
export default function ServicesGroup({ group, services, layout, fiveColumns }) {
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) {
return (
<div
key={services.name}
@ -13,15 +16,37 @@ export default function ServicesGroup({ group, services, layout, fiveColumns })
"flex-1 p-1"
)}
>
<div className="flex select-none items-center">
{layout?.icon &&
<div className="flex-shrink-0 mr-2 w-7 h-7">
<ResolvedIcon icon={layout.icon} />
</div>
}
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
</div>
<List group={group} services={services.services} layout={layout} />
<Disclosure defaultOpen>
{({ open }) => (
<>
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
{layout?.icon &&
<div className="flex-shrink-0 mr-2 w-7 h-7">
<ResolvedIcon icon={layout.icon} />
</div>
}
<h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
<MdKeyboardArrowDown className={classNames(
disableCollapse ? 'hidden' : '',
'transition-opacity opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
open ? 'rotate-180 transform' : ''
)} />
</Disclosure.Button>
<Transition
enter="transition duration-200 ease-out"
enterFrom="transform scale-75 opacity-0"
enterTo="transform scale-100 opacity-100"
leave="transition duration-75 ease-out"
leaveFrom="transform scale-100 opacity-100"
leaveTo="transform scale-75 opacity-0"
>
<Disclosure.Panel>
<List group={group} services={services.services} layout={layout} />
</Disclosure.Panel>
</Transition>
</>
)}
</Disclosure>
</div>
);
}

View File

@ -294,7 +294,13 @@ function Home({ initialSettings }) {
{services?.length > 0 && (
<div className="flex flex-wrap p-4 sm:p-8 sm:pt-4 items-start pb-2">
{services.map((group) => (
<ServicesGroup key={group.name} group={group.name} services={group} layout={initialSettings.layout?.[group.name]} fiveColumns={settings.fiveColumns} />
<ServicesGroup
key={group.name}
group={group.name}
services={group}
layout={initialSettings.layout?.[group.name]}
fiveColumns={settings.fiveColumns}
disableCollapse={settings.disableCollapse} />
))}
</div>
)}
@ -302,7 +308,10 @@ function Home({ initialSettings }) {
{bookmarks?.length > 0 && (
<div className={`grow flex flex-wrap pt-0 p-4 sm:p-8 gap-2 grid-cols-1 lg:grid-cols-2 lg:grid-cols-${Math.min(6, bookmarks.length)}`}>
{bookmarks.map((group) => (
<BookmarksGroup key={group.name} group={group} />
<BookmarksGroup
key={group.name}
group={group}
disableCollapse={settings.disableCollapse} />
))}
</div>
)}

View File

@ -9,6 +9,11 @@ module.exports = {
"./src/components/**/*.{js,ts,jsx,tsx}",
"./src/widgets/**/*.{js,ts,jsx,tsx}",
],
variants: {
extend: {
display: ["group-hover"],
},
},
theme: {
extend: {
colors: {