From b71f0a7dea2fb068bd5946003decacd1720c6b79 Mon Sep 17 00:00:00 2001
From: adilallo <39313955+adilallo@users.noreply.github.com>
Date: Fri, 10 Oct 2025 12:37:52 -0600
Subject: [PATCH] Text area component with storybook and testing
---
app/components/Input.js | 15 +-
app/components/Select.js | 16 +-
app/components/TextArea.js | 190 ++++++++++++
app/forms/page.js | 125 ++------
stories/TextArea.stories.js | 286 ++++++++++++++++++
tests/accessibility/TextArea.a11y.test.jsx | 121 ++++++++
.../integration/TextArea.integration.test.jsx | 280 +++++++++++++++++
tests/unit/TextArea.test.jsx | 203 +++++++++++++
8 files changed, 1126 insertions(+), 110 deletions(-)
create mode 100644 app/components/TextArea.js
create mode 100644 stories/TextArea.stories.js
create mode 100644 tests/accessibility/TextArea.a11y.test.jsx
create mode 100644 tests/integration/TextArea.integration.test.jsx
create mode 100644 tests/unit/TextArea.test.jsx
diff --git a/app/components/Input.js b/app/components/Input.js
index 6402244..5afeee7 100644
--- a/app/components/Input.js
+++ b/app/components/Input.js
@@ -59,7 +59,7 @@ const Input = forwardRef(
return {
input:
"bg-[var(--color-content-default-secondary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-tertiary)] cursor-not-allowed",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
@@ -67,7 +67,7 @@ const Input = forwardRef(
return {
input:
"bg-[var(--color-surface-default-primary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-utility-negative)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
@@ -76,25 +76,25 @@ const Input = forwardRef(
return {
input:
"bg-[var(--color-surface-default-primary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-tertiary)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
case "hover":
return {
input:
"bg-[var(--color-surface-default-primary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-tertiary)] shadow-[0_0_0_2px_var(--color-border-default-tertiary)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
case "focus":
return {
input:
"bg-[var(--color-surface-default-primary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-utility-info)] shadow-[0_0_5px_3px_#3281F8]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
default:
return {
input:
"bg-[var(--color-surface-default-primary)] text-[var(--color-content-default-primary)] border border-[var(--color-border-default-tertiary)] hover:shadow-[0_0_0_2px_var(--color-border-default-tertiary)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
};
@@ -153,8 +153,7 @@ const Input = forwardRef(
{label && (
diff --git a/app/components/Select.js b/app/components/Select.js
index 1564884..9db18b0 100644
--- a/app/components/Select.js
+++ b/app/components/Select.js
@@ -133,14 +133,14 @@ const Select = forwardRef(
return {
select:
"bg-[var(--color-content-default-secondary)] border-[var(--color-border-default-tertiary)] cursor-not-allowed opacity-40",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
if (error) {
return {
select: "border-[var(--color-border-default-utility-negative)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
@@ -149,18 +149,18 @@ const Select = forwardRef(
return {
select:
"border-[var(--color-border-default-tertiary)] shadow-[0_0_0_2px_var(--color-border-default-tertiary)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
case "focus":
return {
select:
"border-[var(--color-border-default-utility-info)] shadow-[0_0_5px_3px_#3281F8]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
default:
return {
select: "border-[var(--color-border-default-tertiary)]",
- label: "text-[var(--color-content-default-primary)]",
+ label: "text-[var(--color-content-default-secondary)]",
};
}
};
@@ -244,7 +244,11 @@ const Select = forwardRef(
return (
{label && (
-