feature-invoice
Invoices for business buyers: list them and filter by status, open one, download its PDF, and start a payment of the full amount. Only buyers whose company role allows it see them. The package ships the data hooks and ready-made components; your app composes them into its own pages.
Get started
Install the package with the peer dependencies it needs. It comes from the Evolve registry, which needs a one-time sign-in.
pnpm add @evolve-storefront/feature-invoice @labdigital/graphql-fetcher @tanstack/react-query graphql next next-intl reactRequirements6
@labdigital/graphql-fetcher>=3@tanstack/react-query>=5graphql>=16next>=16.2.11 <17next-intl>=4react>=19Import its styles in the stylesheet where you load Tailwind. Without them the components render unstyled.
@import "@evolve-storefront/feature-invoice/styles.css";Wrap your app in
InvoiceProvider. Setup lists its props.Add its translations to your message files with
evolve messages.
Then render it on a page:
"use client";
import { useInvoice } from "@evolve-storefront/feature-invoice/hooks";import { InvoiceDetail, InvoiceDetailSkeleton } from "@evolve-storefront/feature-invoice/invoice-detail";import { InvoiceProvider } from "@evolve-storefront/feature-invoice/provider";
type Props = { id: string; isAuthenticated: boolean; businessUnitId: string; capabilities: string[] };
export function InvoicePage({ id, ...session }: Props) { return ( <InvoiceProvider mode="business" {...session}> <InvoiceView id={id} /> </InvoiceProvider> );}
function InvoiceView({ id }: { id: string }) { const { data: invoice, isPending } = useInvoice(id); // The query waits for the session, so it stays pending rather than settling empty. if (isPending) return <InvoiceDetailSkeleton />; return invoice ? <InvoiceDetail invoice={invoice} /> : null;}Components
What you place on your pages. Each one has a preview, its props, and how to change its layout.
Hooks
7 hooks to read and change the data yourself, for when you build your own UI. The example above only needs useInvoice. All hooks
More in this package
- Setup and server: what the package needs in your project.
- Advanced: contexts, graphql documents, data and cache helpers, errors, other functions and constants, types.

