What goes in the name
The visible face: door count, drawer count, and swing for single-door units. The name reads top-to-bottom as the face is built. If you can see it on the front, it's in the name.
What stays an attribute
Everything structural or field-set: class, width / height / depth, the equal vs. graduated drawer flag, hinge side where it's set in the field, and the original vendor SKU as a cross-reference.
Dimensional defaults
Constants behind the categories — never in a name. Eva applies these unless a job overrides them.Narrow / top drawer height. The single drawer in a 1-Dwr config, and the top of any graduated stack.
A real part and cut. Sits under Base & Tall, so the face above the kick is ≈ 30.5″.
Standard base carcass — 36″ finished with a 1.5″ counter. Single default for the Base class.
42″ default; 30 / 36 / 42 are the common presets; custom allowed (e.g. 24″ over-fridge).
Base
Floor-standing base cabinets. Swing tags (L / R) apply only to single-door units where the hinge side is intrinsic to the unit; double doors are symmetric and carry no tag.
| Field | Values | Note |
|---|---|---|
| class | Base · Wall · Tall · Vanity | Structural class — the B / W / T prefix in RTA codes. |
| width_in | numeric | Carries the size dropped from the name (B12 → 12). Drives auto-layout. |
| height_in | numeric | Base default 34.5; Wall default 42 with 30 / 36 / 42 presets; custom allowed. |
| depth_in | numeric | Base ≈ 24, wall ≈ 12. Toe kick 4″ subtracts from the base face (≈ 30.5″ above kick). |
| drawer_stack | Equal · Graduated · null | Your separate flag. Graduated → top drawer 6.5″, rest graduated. Equal → all even. Only meaningful at drawer count ≥ 2. |
| hinge_side | L · R · Double | Redundant where the single-door name already carries it; use for field-set swing. |
| vendor_sku | B12 · W3030 · … | Cross-reference only — never the primary key. |
SKU round-trip
Wall
Upper wall-hung cabinets. 42″ default with 30 / 36 / 42 presets; custom heights allowed (e.g. 24″ over-fridge).
Tall
Floor-to-ceiling storage — hanging sections, shelf towers, and pantry / utility units. The drawer-stack flag carries over; mount type and rod count drive install and the bill of materials.
| Field | Values | Note |
|---|---|---|
| class | Closet (+ Reach-In / Walk-In?) | Flat class, with room type as an open question — see below. |
| width_in | numeric | Section width. |
| height_in | numeric | Drives single vs. double-hang capacity. |
| depth_in | numeric | Closet ≈ 14 vs. cabinet ≈ 24 — tracked because it changes the part list. |
| drawer_stack | Equal · Graduated · null | Same flag as cabinets. |
| mount_type | Floor-Based · Wall-Hung | Biggest cost / install variable. One category covers both forms. |
| is_corner | boolean | L-shaped transition unit. |
| vendor_sku | cross-ref | Cross-reference only. |
Accessories
Add-on sections and specialty inserts — hampers, valet rods, corner units, fillers and open shelving that complete a run.
Trims
Finishing trims — crown, light rail, scribe and toe-kick moldings. Catalog items coming soon.
No trim products yet — add them in Catalog Admin.
Open decisions before this becomes source of truth
- drawer_stack default. Stay null for door-only and single-drawer configs (cleaner — the flag only means something at drawer count ≥ 2), or default to Equal if Eva's UI expects a value. Settle before the field is created.
- Closet class shape. Flat Closet with Reach-In / Walk-In as a separate sub-type attribute (more flexible for filtering), or fold room type into class itself (Closet-ReachIn, fewer fields). Cabinets dodged this because Base / Wall / Tall are structural; closet "type" is about the space, not the unit.
- Source of truth. Backbone catalog tables, the Pacific Airtable base, or both-with-sync. Determines where these names and attributes are authored and which system cross-references the others.