diff --git a/addons/rose/addon/components/rose/form/input.stories.mdx b/addons/rose/addon/components/rose/form/input.stories.mdx
index 7843c4cfd..041507976 100644
--- a/addons/rose/addon/components/rose/form/input.stories.mdx
+++ b/addons/rose/addon/components/rose/form/input.stories.mdx
@@ -22,6 +22,24 @@ Renders a simple form input.
/>
```
+Or a fully contextual component without a wrapper, for maximum flexibility.
+
+```htmlbars
+
+
+
+```
+
{{
template: hbs`
@@ -94,3 +112,24 @@ Renders a simple form input.
}
}}
+
+
+ {{
+ template: hbs`
+
+
+ Label
+
+ Help
+
+
+
+
+ An error occurred.
+
+
+
+ `,
+ context: {},
+ }}
+
diff --git a/addons/rose/addon/templates/components/rose/form/input.hbs b/addons/rose/addon/templates/components/rose/form/input.hbs
index d232bf07b..9bf8003e3 100644
--- a/addons/rose/addon/templates/components/rose/form/input.hbs
+++ b/addons/rose/addon/templates/components/rose/form/input.hbs
@@ -1,29 +1,54 @@
-
+{{/if}}
diff --git a/addons/rose/addon/templates/components/rose/form/input/input.hbs b/addons/rose/addon/templates/components/rose/form/input/input.hbs
index c7153718c..95e81a114 100644
--- a/addons/rose/addon/templates/components/rose/form/input/input.hbs
+++ b/addons/rose/addon/templates/components/rose/form/input/input.hbs
@@ -1,6 +1,6 @@
{{yield (hash
diff --git a/addons/rose/addon/templates/components/rose/form/textarea/textarea.hbs b/addons/rose/addon/templates/components/rose/form/textarea/textarea.hbs
index dba3196d5..85add1b87 100644
--- a/addons/rose/addon/templates/components/rose/form/textarea/textarea.hbs
+++ b/addons/rose/addon/templates/components/rose/form/textarea/textarea.hbs
@@ -1,6 +1,6 @@
`);
assert.ok(await find('.error'));
});
+
+ test('it supports a fully contextual usage', async function (assert) {
+ assert.expect(5);
+ await render(hbs`
+
+ Label
+ Help
+
+
+ An error occurred.
+
+
+ `);
+ assert.notOk(find('.rose-form-input'), 'The form field wrapper element is not present in contextual mode');
+ assert.ok(find('.rose-form-label.error'));
+ assert.ok(find('.rose-form-helper-text.error'));
+ assert.ok(find('.rose-form-input-field.error'));
+ assert.ok(find('.rose-form-error-message'));
+ });
});