diff --git a/src/pages/assets/AssetDetails.jsx b/src/pages/assets/AssetDetails.jsx
index dc99191..ddf9556 100644
--- a/src/pages/assets/AssetDetails.jsx
+++ b/src/pages/assets/AssetDetails.jsx
@@ -168,18 +168,21 @@ export default function AssetDetails() {
const isAssigned = isAssetState(row, ASSET_STATE.ASSIGNED)
const isAvailable = isAssetState(row, ASSET_STATE.AVAILABLE)
const isUnderRepair = isAssetState(row, ASSET_STATE.UNDER_REPAIR)
- // ASSIGNED and Send for Repair run in Available; Reassigned in Assigned; Lost
- // in either; Repair Completed in Under Repair; Edit in all three. RETURNED
- // runs in any state but Closed, and the runtime says if the state doesn't
- // allow it. If the view sends no state, let the runtime decide rather than
- // hiding the buttons.
+ // ASSIGNED, Send for Repair and Edit (Asset details) run in Available;
+ // Reassigned in Assigned; Lost in either; Repair Completed in Under Repair.
+ // The builder has Asset details in Available only, so the runtime rejects it
+ // elsewhere ("Asset details" is not allowed in "Assigned"). RETURNED runs in
+ // any state but Closed, and the runtime says if the state doesn't allow it.
+ // If the view sends no state, let the runtime decide rather than hiding the
+ // buttons.
+ const isOpen = !state || isAvailable || isAssigned || isUnderRepair
const canAssign = !state || isAvailable
const canReassign = !state || isAssigned
const canReturn = !isAssetState(row, ASSET_STATE.CLOSED) && !isEndState(row)
const canReportLost = !state || isAvailable || isAssigned
const canSendForRepair = !state || isAvailable
const canCompleteRepair = !state || isUnderRepair
- const canEdit = !state || isAvailable || isAssigned || isUnderRepair
+ const canEdit = !state || isAvailable
// Assigned or reassigned, whichever is newer, is who has it now.
const current = currentAssignment(row)
@@ -251,7 +254,12 @@ export default function AssetDetails() {
-