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 && ( -