diff --git a/src/TextInput/PasswordInput.svelte b/src/TextInput/PasswordInput.svelte
index bd595ed6..af2ef136 100644
--- a/src/TextInput/PasswordInput.svelte
+++ b/src/TextInput/PasswordInput.svelte
@@ -132,13 +132,6 @@
{labelText}
{/if}
- {#if helperText}
-
- {helperText}
-
- {/if}
@@ -190,6 +183,13 @@
{/if}
+ {#if !invalid && helperText}
+
+ {helperText}
+
+ {/if}
{#if invalid}
{invalidText}
{/if}
diff --git a/src/TextInput/TextInput.stories.js b/src/TextInput/TextInput.stories.js
index 7089af2c..b7c4fdab 100644
--- a/src/TextInput/TextInput.stories.js
+++ b/src/TextInput/TextInput.stories.js
@@ -37,6 +37,7 @@ export const TogglePasswordVisibility = () => ({
light: boolean("Light variant (light)", false),
hideLabel: boolean("No label (hideLabel)", false),
labelText: text("Label text (labelText)", "Text Input label"),
+ helperText: text("Helper text (helperText)", "Optional helper text here"),
invalid: boolean("Show form validation UI (invalid)", false),
invalidText: text(
"Content of form validation UI (invalidText)",
diff --git a/src/TextInput/TextInput.svelte b/src/TextInput/TextInput.svelte
index 3880e9f8..9fa4d76b 100644
--- a/src/TextInput/TextInput.svelte
+++ b/src/TextInput/TextInput.svelte
@@ -111,13 +111,6 @@
{labelText}
{/if}
- {#if helperText}
-
- {helperText}
-
- {/if}
@@ -149,6 +142,13 @@
on:focus
on:blur />
+ {#if !invalid && helperText}
+
+ {helperText}
+
+ {/if}
{#if invalid}
{invalidText}
{/if}