Price group (design pricing)
The real Design Pricing page: “{retailer} - {main product} - Design Pricing”, rows grouped by design category, columns Name · Production Days · Wholesale (settlement currency) · Retail (consumer currency), one Submit. English only (super-admin).
Covers: price-group primitive, price-group designer. Exports: PriceGroup.
Anatomy
The component as it sits in the product: English, compact, real data shapes.
States
6 states, left to right, top to bottom. A mock poll never finishes, so each state is drawn on purpose.
Density
The phone shell is always comfortable (POWERUPS #15): 44px tap targets, 16px inputs. Compact exists on desktop only; see the desktop page.
English · 中文
Pricing stays English on purpose: super-admin only, names print as name.en (FEEDBACK-B-r1 A12). The 中文 column shows the chrome rule, not translated data.
Long string · permission denied
The long-string case (PL-063) and what a role without the permission sees (the server decides; T003).
Not available to your role
Your role is missing view pricing. Nothing here is hidden by mistake: the server sends only what you can do.
Contract
The @rj/admin-kit API for this family. Mirrored in CONTRACT.md.
- Export
PriceGroup·@rj/admin-kit- Props
retailer·mainProduct·rows(category → options: production_days, wholesale, retail) ·currencies{wholesale, retail}- States
- clean · cell-focus · dirty (before → after) · saving · saved · rejected · loading · denied
- shadcn / Radix
- Table + Input cells
- Package underneath
- react-hook-form field array · zod
- Accessibility
- grid with row headers; the currency badge names each column
- API operations
- admin.pricing.designs.index · admin.pricing.designs.store (not admin.pricing.master.*: retired, 403)
- Phone variant
- read-only list
- Permission
- view pricing / edit pricing