Order composer
A React block (a whole screen) in Beamline's Shop app.
An order made inside a support ticket: products found by name, each variant with its stock drawn and said (in stock, none, oversold, not known) and the shop's oversell rule kept, added by its stable id; a copy of an order starting as a free replacement that is said and can be switched to charging; shipping and a note with the total; and a draft created awaiting payment, nothing charged and no invoice sent until Send the invoice, prices that changed since they were added said first.
Use it for
- Agents creating or duplicating an order for a customer from a ticket.
Not for
- Acting on an existing order (ticket-orders).
Anatomy
- header: the mark, New order for or Copy of … for the customer
- picker: Product (searchable), stock as of, the variants (title, price, SKU, stock bar and word), Quantity, Add, the oversell rule
- draft: Items (the quantity leading as a figure that edits in place, product, each or free / was, amount, remove on attention), Pricing (Free replacement · Charge for it, a switch) for a copy, the sum with Shipping as a menu and the total as the figure, Add a note on demand, Create draft order; created: the draft's number, changed prices, Send the invoice
States
- empty draft
- a copy as a free replacement
- no stock; oversold; stock not known; past stock refused or on backorder
- creating; created; prices changed; create failed
- invoice sending; sent; failed
Keyboard
- the variants are a radio group
- Tab through quantity, Add, the draft's lines and pricing
Motion
The chosen variant's ring fades in; nothing moves at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
products | Product[] | — | Products with variants: stable id, title, SKU, price, stock (null not known, negative oversold). |
customer | { name; email } | — | Who it's for. |
duplicateOf | { number; lines } | — | A copy of an order: its lines start here as a free replacement. |
oversell | boolean | — | Whether the shop sells past stock. |
onCreate | (d: OrderDraft) => Promise<{ number; priceChanged? }> | — | Create a draft awaiting payment; resolve with its number and any prices that changed since. |
onSendInvoice | (number) => Promise<unknown> | — | Send the draft's invoice, a separate step. |
currency (required) | string | — | |
stockAsOf | string | — | |
shippingPrices | { standard: number; express: number; } | — | |
defaultProductId | string | — | The product picked at first, to show its variants. |
timeZone | string | — | |
product | string | — | |
className | string | — | Classes on the documented visual root; no override by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
Built from
- Avatar
- Bottom sheet
- Button
- Combobox
- Dropdown menu
- Inline edit
- Label
- Number field
- Segmented control
- Select
- Spinner
- Text morph
- Textarea
- Tooltip
Dependencies
lucide-react
Import
import { OrderComposer } from "@beamline/order-composer";
Get it
Order composer is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent
More in Shop
- Product editor: A product being made in a shop's back office, every value read as text at rest. The variant grid, grouped by the first option, lists each combination…
- Category manager: A shop's product categories, nested and ranked. Each category moves up, down or into another from its menu, and every move gets its own receipt (saving…
- Inventory item: One stock item in a shop's back office, apart from the variants that sell it (how many each uses per unit). Stock per location as stocked, reserved and…
- Plan comparison: Plans side by side against every feature: prices that roll between monthly and yearly, the current and recommended plan marked, a header that stays in…
- Step form: The finished frame for any multi-step form you compose — onboarding, intake brief, questionnaire, booking, application: a wide card with progress, the…
- Orders admin: A shop's order desk: today's orders and revenue, quick filters for what needs doing (to fulfil, unpaid, returns), a virtualised orders grid, and the…
- Order detail: One shop order with payment and fulfilment as two separate lanes. The header says where each stands (paid, partly paid, awaiting, refunded; not…
- Order board: A shop's orders as cards in its columns, on the shared kanban with drag and keyboard moves. Each card: number, estimate or work order, customer, vehicle…
- Draft orders: A draft order made for a customer in a shop's back office that reads like the order it will become. The lines lead: each with its variant and SKU or…
- Order changes: What happens to a shop order after it's placed. Edit: the order as it stands beside the requested version, each line marked new, changed (old → new…
- Special orders: Customers' special orders as demand to buy for, per outlet: To order apart from Ordered; each product's demand, what is reserved, incoming and on order…
- Order history and fills: Every order the account placed and every fill it got, for a period: totals for volume, fees, fill rate and maker share; orders with their status and how…
- Order ledger: Purchase orders as money. Each order's spend is drawn against its approved total (paid, billed, pending, what is left, and any overrun past the end…
- Ticket orders: A customer's orders inside a support ticket, each action's effect said before it's done: orders and drafts kept apart, a paid draft shown once as its…
- Record search: One search across connected records (customers, vehicles, orders) by name, phone, plate, VIN or order number. What the words look like is said (info)…
- Return queue: A queue of return cases. Search by return, order or customer, exactly (the default) or loosely; status tabs with counts, Requires attention first; a date…
- Return case: One return as one place where every act is its own. The return, its order (linked out) and the customer on three cards; the stage said on its tone. Items…
- Return request: Staff start a return from an order, and edit the reasons customers pick. New return: the order's lines as a checklist, each with its variant, price and…
- Purchase orders: A salon's purchase orders, received: the orders down the side, the chosen one beside them. Each line still due reads as a strip of received, this…
- Print quote: A print shop's quoting in three places. Quote: a group of garments that share one imprint and one quantity break, the group's pieces counted together and…
- Service estimate: An estimate for one vehicle. Services added from the catalogue (one not listed for this vehicle said on warning, fit unknown said); each with its lines…
- Job card: A technician's repair order, phone-first. The vehicle, the customer and when it's due in words (due at, due in, overdue by how long); an offline copy…
- Parts tracker: Parts across a shop's work orders: each with its number, the order and vehicle, supplier, quantity and cost (not known said), and where it is: ordered…
- Visit board: The staff board for a walk-in queue: visits move from waiting through called and serving to done today. Arrival (here or on the way), the place in the…