Files
threadcount-community/app/m/(app)/more/page.tsx
T
ThreadCount cbf533d90b ThreadCount Community edition
Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from 440e645 on 2026-09-13. Licensed under the Functional Source License (FSL-1.1-ALv2).
2026-09-13 12:12:58 +10:00

44 lines
2.2 KiB
TypeScript

"use client";
/* Everything else the app does.
*
* There used to be an "On the desktop" section here listing five things the phone couldn't do —
* greyed out, untappable, and so just a list of disappointments in the middle of a menu. A menu
* should be things you can do. The catalogue moved onto the phone rather than staying on that
* list; the rest are simply not advertised here any more. */
import { useMemo } from "react";
import { useSnap } from "@/lib/client";
import { OPEN_STATUSES } from "@/lib/compute";
import { MBody, MNav, MRow, MRule, MSection, MTop } from "@/components/m";
export default function MMore() {
const { s } = useSnap();
const activeItems = useMemo(() => s.catalog.filter((i) => !i.archived).length, [s.catalog]);
const counts = useMemo(() => {
const waiting = s.pickups.filter((p) => !p.pickedUp).length;
const incoming = s.orders.filter((o) => OPEN_STATUSES.includes(o.status) && o.status !== "Draft").length;
const rounds = s.pickups.filter((p) => !p.pickedUp && p.deliveredTo).length;
return { waiting, incoming, rounds };
}, [s]);
return (
<>
<MTop title="More" />
<MRule />
<MBody>
<MSection label="Everything else" />
<MRow href="/m/receive" mark="ink" title="Receive a delivery" sub={counts.incoming ? `${counts.incoming} order${counts.incoming === 1 ? "" : "s"} on their way` : "Nothing on order"} />
<MRow href="/m/pickups" mark={counts.waiting ? "accent" : "ink"} attention={counts.waiting > 0} title="Pickup call list" sub={counts.waiting ? `${counts.waiting} waiting to be collected` : "Nobody waiting"} />
<MRow href="/m/rounds" mark="ink" title="Delivery round" sub={counts.rounds ? `${counts.rounds} to drop off` : "Nothing loaded"} />
<MRow href="/m/label" mark="ink" title="Reprint a label" sub="For a barcode that has worn off" />
<MRow href="/m/variance" mark="ink" title="Variance over time" sub="What keeps going missing" />
<MRow href="/m/catalogue" mark="ink" title="Catalogue" sub={`${activeItems} garment${activeItems === 1 ? "" : "s"}, sizes and pricing`} />
<MRow href="/m/settings" mark="ink" title="Settings" sub={s.session.name} />
</MBody>
<MNav />
</>
);
}