Editor: the toolkit is a rail tab on desktop, and the rail is wider
Build image / build-and-push (push) Successful in 20s
Gadfly review (reusable) / review (pull_request) Successful in 5m31s
Adversarial Review (Gadfly) / review (pull_request) Successful in 5m31s

The handoff drew the toolkit as a 216px card left of the plan. That width
was better spent on the plan and the rail, so the toolkit is now the rail's
first tab — Toolkit / Plot / Journal / History / Assistant — rendered
`embedded` (no card chrome, no heading; the tab is the heading), the grid
is two columns, and the rail grows from 336 to 400px.

Focusing a bed (double-click) switches the rail to Toolkit, because that is
where the plant palette now lives; a single click still selects into Plot.
The phone chrome is untouched: it never used the card.

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
2026-08-23 02:54:45 -04:00
co-authored by Claude Fable 5
parent 0aabccf1bd
commit 10275f5e1c
6 changed files with 47 additions and 26 deletions
+10 -3
View File
@@ -14,12 +14,18 @@ import { useEditorStore } from './store'
import type { EditorObject } from './types'
/**
* The desktop editor's left card. Out of focus: the seven object kinds as pill
* The desktop editor's toolkit. Out of focus: the seven object kinds as pill
* rows — click to arm (then click the plan), or drag one straight onto it. In a
* focused bed it swaps to the plant list with a search, same arm/drag behavior,
* plus the bed's bulk tools (fill, clear, scan a packet).
*
* It started life as the workspace's left card (the handoff's layout) and now
* lives as the first tab of the rail, so the plan and the rail get the width
* the card took. `embedded` is that mode: no card chrome of its own, and no
* "Toolkit" heading — the tab is the heading.
*/
export function Toolkit({
embedded = false,
unit,
plants,
plantings,
@@ -34,6 +40,7 @@ export function Toolkit({
onClear,
onScan,
}: {
embedded?: boolean
unit: UnitPref
plants: Plant[]
plantings: EditorPlanting[]
@@ -55,10 +62,10 @@ export function Toolkit({
const [query, setQuery] = useState('')
return (
<div className="panel flex min-h-0 flex-col gap-2 overflow-y-auto overflow-x-hidden p-3.5">
<div className={cn('flex min-h-0 flex-col gap-2 overflow-x-hidden', embedded ? 'flex-1' : 'panel overflow-y-auto p-3.5')}>
{!focused ? (
<>
<h6 className="mx-1 mb-1.5 mt-1">Toolkit</h6>
{!embedded && <h6 className="mx-1 mb-1.5 mt-1">Toolkit</h6>}
{OBJECT_KINDS.map((k) => {
const armed = armedKind === k.kind
return (