feat(derive): expose checked form resource constants

Have #[slhx::form] emit an associated FORM resource so checked form handlers can be called with TodoInput::FORM-style values instead of generated_resource.typed::<T>() noise.

req: form/001

req: form/004

req: form/006

req: codegen/004
This commit is contained in:
slhx agent
2026-05-26 00:03:47 +02:00
parent 1b255e593d
commit 0b6ad64d98
5 changed files with 38 additions and 13 deletions
+3 -3
View File
@@ -66,7 +66,7 @@ mod tests {
ui::slots::todo_list.text("queued")
}
let effect = inspect(add_todo(ui::forms::new_todo.typed::<TodoInput>()));
let effect = inspect(add_todo(TodoInput::FORM));
assert!(effect.has_slot(ui::slots::todo_list));
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }]));
@@ -103,7 +103,7 @@ mod tests {
ui::slots::wizard_step.text("queued")
}
let effect = inspect(next_step(ui::forms::wizard_input.typed::<WizardInput>()));
let effect = inspect(next_step(WizardInput::FORM));
assert!(effect.has_slot(ui::slots::wizard_step));
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }]));
@@ -158,7 +158,7 @@ mod tests {
ui::slots::login_status.text("queued")
}
let effect = inspect(login(ui::forms::credentials.typed::<Credentials>()));
let effect = inspect(login(Credentials::FORM));
assert!(effect.has_slot(ui::slots::login_status));
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }]));