From a134b39779bad32c4bae8cb5b2b5e0205043924e Mon Sep 17 00:00:00 2001 From: Clara Song <12041624+barmo@users.noreply.github.com> Date: Mon, 29 Dec 2025 20:08:41 +0000 Subject: [PATCH 1/9] add 'All combinations' story to playwrite tests --- e2e/components/ActionList.test.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/e2e/components/ActionList.test.ts b/e2e/components/ActionList.test.ts index 33f9462ce5a..33522ffbda8 100644 --- a/e2e/components/ActionList.test.ts +++ b/e2e/components/ActionList.test.ts @@ -136,6 +136,10 @@ const stories = [ title: 'Keyboard shortcuts', id: 'components-actionlist-features--with-keyboard-shortcuts', }, + { + title: 'All combinations', + id: 'components-actionlist-examples--all-combinations', + }, ] as const test.describe('ActionList', () => { From c124fca2ad7dfb97e56b4dd837fccbae863bc6e0 Mon Sep 17 00:00:00 2001 From: Matthew Costabile Date: Tue, 30 Dec 2025 07:53:44 -0500 Subject: [PATCH 2/9] perf(BaseStyles): Remove expensive :has([data-color-mode]) selectors (#7325) --- .changeset/perf-basestyles-has-selector.md | 8 ++++++++ packages/react/src/BaseStyles.module.css | 19 ++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 .changeset/perf-basestyles-has-selector.md diff --git a/.changeset/perf-basestyles-has-selector.md b/.changeset/perf-basestyles-has-selector.md new file mode 100644 index 00000000000..f16c623c300 --- /dev/null +++ b/.changeset/perf-basestyles-has-selector.md @@ -0,0 +1,8 @@ +--- +'@primer/react': patch +--- + +perf(BaseStyles): Remove expensive :has([data-color-mode]) selectors + +Remove `:has([data-color-mode])` selectors that scanned the entire DOM on every style recalculation. +Input color-scheme is already handled by global selectors in the codebase. diff --git a/packages/react/src/BaseStyles.module.css b/packages/react/src/BaseStyles.module.css index 76259ac05dd..3e6352c92e6 100644 --- a/packages/react/src/BaseStyles.module.css +++ b/packages/react/src/BaseStyles.module.css @@ -60,19 +60,12 @@ details-dialog:focus:not(:focus-visible):not(:global(.focus-visible)) { /* stylelint-disable-next-line primer/colors */ color: var(--BaseStyles-fgColor, var(--fgColor-default)); - /* Global styles for light mode */ - &:has([data-color-mode='light']) { - input & { - color-scheme: light; - } - } - - /* Global styles for dark mode */ - &:has([data-color-mode='dark']) { - input & { - color-scheme: dark; - } - } + /* + * PERFORMANCE: Removed :has([data-color-mode]) selectors that scanned entire DOM. + * Input color-scheme is already handled by global selectors above: + * [data-color-mode='light'] input { color-scheme: light; } + * [data-color-mode='dark'] input { color-scheme: dark; } + */ /* Low-specificity default link styling */ :where(a:not([class*='prc-']):not([class*='PRC-']):not([class*='Primer_Brand__'])) { From 346ccb6f1e269fe2767597e032118af44bb2144e Mon Sep 17 00:00:00 2001 From: Matthew Costabile Date: Tue, 30 Dec 2025 12:23:24 -0500 Subject: [PATCH 3/9] perf(Dialog): Replace body:has() with direct class and scope footer selector (#7329) Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattcosta7 <8616962+mattcosta7@users.noreply.github.com> --- .changeset/perf-dialog-has-selector.md | 10 + packages/react/src/Dialog/Dialog.module.css | 24 ++- packages/react/src/Dialog/Dialog.test.tsx | 132 +++++++++++- packages/react/src/Dialog/Dialog.tsx | 28 ++- .../src/FeatureFlags/DefaultFeatureFlags.ts | 1 + .../react/src/FeatureFlags/FeatureFlags.tsx | 41 ++++ .../__tests__/FeatureFlags.test.tsx | 192 +++++++++++++++++- 7 files changed, 421 insertions(+), 7 deletions(-) create mode 100644 .changeset/perf-dialog-has-selector.md diff --git a/.changeset/perf-dialog-has-selector.md b/.changeset/perf-dialog-has-selector.md new file mode 100644 index 00000000000..bc6b83d2b5e --- /dev/null +++ b/.changeset/perf-dialog-has-selector.md @@ -0,0 +1,10 @@ +--- +'@primer/react': patch +--- + +perf(Dialog): Add feature flag for CSS :has() selector performance optimization + +- Add `primer_react_css_has_selector_perf` feature flag (default: false) +- When flag is OFF: uses legacy `body:has(.Dialog.DisableScroll)` selector +- When flag is ON: uses optimized direct `body[data-dialog-scroll-disabled]` data attribute with ref counting +- Enables gradual rollout and easy rollback of performance optimization diff --git a/packages/react/src/Dialog/Dialog.module.css b/packages/react/src/Dialog/Dialog.module.css index d750854c158..a81c278bdbe 100644 --- a/packages/react/src/Dialog/Dialog.module.css +++ b/packages/react/src/Dialog/Dialog.module.css @@ -229,7 +229,29 @@ } } -body:has(.Dialog.DisableScroll) { +/* DisableScroll class is added to Dialog when scroll should be disabled on body */ +.DisableScroll { + /* This class is used as a selector target for the legacy :has() CSS selector */ +} + +/* + * LEGACY: Scoped :has() selector with negation guard + * Only evaluates when data-dialog-scroll-optimized is NOT present on body. + * When the attribute IS present (flag ON), browser skips :has() evaluation + * because the :not() check fails first (O(1) attribute lookup). + */ +body:not([data-dialog-scroll-optimized]):has(.Dialog.DisableScroll) { + /* stylelint-disable-next-line primer/spacing */ + padding-right: var(--prc-dialog-scrollgutter) !important; + overflow: hidden !important; +} + +/* + * PERFORMANCE OPTIMIZATION: Direct attribute on body - O(1) lookup + * Active when primer_react_css_has_selector_perf flag is ON + */ +/* stylelint-disable-next-line selector-no-qualifying-type */ +body[data-dialog-scroll-disabled] { /* stylelint-disable-next-line primer/spacing */ padding-right: var(--prc-dialog-scrollgutter) !important; overflow: hidden !important; diff --git a/packages/react/src/Dialog/Dialog.test.tsx b/packages/react/src/Dialog/Dialog.test.tsx index fb693f07c15..3ce178375ab 100644 --- a/packages/react/src/Dialog/Dialog.test.tsx +++ b/packages/react/src/Dialog/Dialog.test.tsx @@ -1,13 +1,19 @@ import React from 'react' import {render, fireEvent, waitFor} from '@testing-library/react' -import {describe, expect, it, vi} from 'vitest' +import {describe, expect, it, vi, beforeEach} from 'vitest' import userEvent from '@testing-library/user-event' import {Dialog} from './Dialog' import {Button} from '../Button' import {implementsClassName} from '../utils/testing' import classes from './Dialog.module.css' +import {FeatureFlags} from '../FeatureFlags' +import {__resetDialogScrollOptimizedCount} from '../FeatureFlags/FeatureFlags' describe('Dialog', () => { + beforeEach(() => { + __resetDialogScrollOptimizedCount() + }) + implementsClassName(Dialog, classes.Dialog) it('renders with role "dialog" by default', () => { const {getByRole} = render( {}}>Pay attention to me) @@ -338,4 +344,128 @@ describe('Footer button loading states', () => { expect(publishButton).toHaveAttribute('data-loading', 'true') expect(deleteButton).not.toHaveAttribute('data-loading', 'true') }) + + describe('primer_react_css_has_selector_perf feature flag', () => { + it('does not add data-dialog-scroll-optimized or data-dialog-scroll-disabled when flag is OFF', () => { + const {unmount} = render( + + {}}>Dialog content + , + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + }) + + it('adds data-dialog-scroll-optimized at provider level and data-dialog-scroll-disabled when dialog mounts', () => { + const {unmount} = render( + + {}}>Dialog content + , + ) + + // Provider sets data-dialog-scroll-optimized, Dialog sets data-dialog-scroll-disabled + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(true) + + unmount() + + // Both should be removed on unmount + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + }) + + it('sets data-dialog-scroll-optimized even when no dialogs are open', () => { + const {unmount} = render( + +
No dialogs here
+
, + ) + + // Provider sets the attribute even without dialogs + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('handles multiple dialogs with ref counting when flag is ON', () => { + const {unmount: unmount1} = render( + + {}}>Dialog 1 + , + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(true) + + // Render second dialog + const {unmount: unmount2} = render( + + {}}>Dialog 2 + , + ) + + // Attributes should still be present + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(true) + + // Unmount first dialog + unmount1() + + // Attributes should still be present (second dialog and provider are still mounted) + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(true) + + // Unmount second dialog + unmount2() + + // Now both should be removed + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + }) + + it('handles multiple dialogs correctly when flag is OFF', () => { + const {unmount: unmount1} = render( + + {}}>Dialog 1 + , + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + + // Render second dialog + const {unmount: unmount2} = render( + + {}}>Dialog 2 + , + ) + + // Attributes should not be present + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + + // Unmount first dialog + unmount1() + + // Attributes should still not be present + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + + // Unmount second dialog + unmount2() + + // Attributes should still not be present + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + expect(document.body.hasAttribute('data-dialog-scroll-disabled')).toBe(false) + }) + }) }) diff --git a/packages/react/src/Dialog/Dialog.tsx b/packages/react/src/Dialog/Dialog.tsx index 0381c445e58..41bfa481dd0 100644 --- a/packages/react/src/Dialog/Dialog.tsx +++ b/packages/react/src/Dialog/Dialog.tsx @@ -291,11 +291,31 @@ const _Dialog = React.forwardRef { const scrollbarWidth = window.innerWidth - document.body.clientWidth - // If the dialog is rendered, we add a class to the dialog element to disable - dialogRef.current?.classList.add(classes.DisableScroll) - // and set a CSS variable to the scrollbar width so that the dialog can - // account for the scrollbar width when calculating its width. + const dialog = dialogRef.current + const usePerfOptimization = document.body.hasAttribute('data-dialog-scroll-optimized') + + // Add DisableScroll class to this dialog (for legacy :has() selector path) + dialog?.classList.add(classes.DisableScroll) document.body.style.setProperty('--prc-dialog-scrollgutter', `${scrollbarWidth}px`) + + if (usePerfOptimization) { + // Optimized path: set attribute on body for direct CSS targeting + document.body.setAttribute('data-dialog-scroll-disabled', '') + } + // Legacy path: no action needed - CSS :has(.Dialog.DisableScroll) handles it + + return () => { + dialog?.classList.remove(classes.DisableScroll) + + const remainingDialogs = document.querySelectorAll(`.${classes.DisableScroll}`) + + if (remainingDialogs.length === 0) { + document.body.style.removeProperty('--prc-dialog-scrollgutter') + if (usePerfOptimization) { + document.body.removeAttribute('data-dialog-scroll-disabled') + } + } + } }, []) const header = slots.header ?? (renderHeader ?? DefaultHeader)(defaultedProps) diff --git a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts index d5c1cf6ab92..4a2c0896f50 100644 --- a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts +++ b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts @@ -3,6 +3,7 @@ import {FeatureFlagScope} from './FeatureFlagScope' export const DefaultFeatureFlags = FeatureFlagScope.create({ primer_react_action_list_item_as_button: false, primer_react_breadcrumbs_overflow_menu: false, + primer_react_css_has_selector_perf: false, primer_react_overlay_overflow: false, primer_react_select_panel_fullscreen_on_narrow: false, primer_react_select_panel_order_selected_at_top: false, diff --git a/packages/react/src/FeatureFlags/FeatureFlags.tsx b/packages/react/src/FeatureFlags/FeatureFlags.tsx index 2df681f5234..c0e2ac4798f 100644 --- a/packages/react/src/FeatureFlags/FeatureFlags.tsx +++ b/packages/react/src/FeatureFlags/FeatureFlags.tsx @@ -2,16 +2,57 @@ import type React from 'react' import {useContext, useMemo} from 'react' import {FeatureFlagContext} from './FeatureFlagContext' import {FeatureFlagScope, type FeatureFlags} from './FeatureFlagScope' +import useIsomorphicLayoutEffect from '../utils/useIsomorphicLayoutEffect' export type FeatureFlagsProps = React.PropsWithChildren<{ flags: FeatureFlags }> +/** + * Ref count for data-dialog-scroll-optimized attribute management. + * + * NOTE: This is temporary infrastructure while we feature flag the CSS :has() + * performance optimization (primer_react_css_has_selector_perf). Once the flag + * is removed and the optimization is the default behavior, this ref counting + * can be removed - the attribute can simply always be present. + * + * @internal - Not part of the public API + */ +let dialogScrollOptimizedCount = 0 + +/** + * Reset the ref count for testing purposes only. + * + * @internal - Not part of the public API. Only exported for test isolation. + */ +export function __resetDialogScrollOptimizedCount(): void { + dialogScrollOptimizedCount = 0 + document.body.removeAttribute('data-dialog-scroll-optimized') +} + export function FeatureFlags({children, flags}: FeatureFlagsProps) { const parentFeatureFlags = useContext(FeatureFlagContext) const value = useMemo(() => { const scope = FeatureFlagScope.merge(parentFeatureFlags, FeatureFlagScope.create(flags)) return scope }, [parentFeatureFlags, flags]) + + const isOptimizationEnabled = value.enabled('primer_react_css_has_selector_perf') + + // Set body attribute for CSS :has() optimization when flag is enabled + useIsomorphicLayoutEffect(() => { + if (isOptimizationEnabled) { + dialogScrollOptimizedCount++ + document.body.setAttribute('data-dialog-scroll-optimized', '') + + return () => { + dialogScrollOptimizedCount-- + if (dialogScrollOptimizedCount === 0) { + document.body.removeAttribute('data-dialog-scroll-optimized') + } + } + } + }, [isOptimizationEnabled]) + return {children} } diff --git a/packages/react/src/FeatureFlags/__tests__/FeatureFlags.test.tsx b/packages/react/src/FeatureFlags/__tests__/FeatureFlags.test.tsx index cc7b69e802f..035b43bf0eb 100644 --- a/packages/react/src/FeatureFlags/__tests__/FeatureFlags.test.tsx +++ b/packages/react/src/FeatureFlags/__tests__/FeatureFlags.test.tsx @@ -1,8 +1,14 @@ -import {describe, expect, it} from 'vitest' +import {describe, expect, it, beforeEach} from 'vitest' import {render} from '@testing-library/react' import {FeatureFlags, useFeatureFlag} from '../../FeatureFlags' +import {__resetDialogScrollOptimizedCount} from '../FeatureFlags' describe('FeatureFlags', () => { + beforeEach(() => { + // Reset module state between tests for isolation + __resetDialogScrollOptimizedCount() + }) + it('should allow a component to check if a feature flag is enabled', () => { const calls: Array = [] @@ -42,4 +48,188 @@ describe('FeatureFlags', () => { expect(calls).toEqual([false]) }) + + describe('data-dialog-scroll-optimized attribute management', () => { + it('should set data-dialog-scroll-optimized attribute when primer_react_css_has_selector_perf is enabled', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + const {unmount} = render( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should not set data-dialog-scroll-optimized attribute when primer_react_css_has_selector_perf is disabled', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + const {unmount} = render( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should handle ref counting correctly with multiple FeatureFlags providers', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + // Mount first provider + const {unmount: unmount1} = render( + +
Provider 1
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Mount second provider + const {unmount: unmount2} = render( + +
Provider 2
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Unmount first provider - attribute should still be present + unmount1() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Unmount second provider - attribute should be removed + unmount2() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should handle nested providers with different flag values correctly', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + const {unmount} = render( + +
Outer provider with flag enabled
+ +
Inner provider with flag disabled
+
+
, + ) + + // Outer provider sets the attribute, inner provider inherits but doesn't override + // (inner provider flag is false, so it won't add to count) + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should handle nested providers where parent has flag disabled and child has flag enabled', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + const {unmount} = render( + +
Outer provider with flag disabled
+ +
Inner provider with flag enabled
+
+
, + ) + + // Inner provider enables the flag, so attribute should be set + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + unmount() + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should only remove attribute when all providers with flag enabled have unmounted', () => { + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + // Mount three providers with flag enabled + const {unmount: unmount1} = render( + +
Provider 1
+
, + ) + + const {unmount: unmount2} = render( + +
Provider 2
+
, + ) + + const {unmount: unmount3} = render( + +
Provider 3
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Unmount first provider + unmount1() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Unmount second provider + unmount2() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + // Unmount third provider - now attribute should be removed + unmount3() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should handle flag value changing from false to true', () => { + const {rerender, unmount} = render( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + rerender( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + unmount() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + + it('should handle flag value changing from true to false', () => { + const {rerender, unmount} = render( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(true) + + rerender( + +
Content
+
, + ) + + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + + unmount() + expect(document.body.hasAttribute('data-dialog-scroll-optimized')).toBe(false) + }) + }) }) From 7e076c5db2a358872430c0b55815470af9dc282d Mon Sep 17 00:00:00 2001 From: Tyler Jones Date: Tue, 30 Dec 2025 16:43:31 -0500 Subject: [PATCH 4/9] ToggleSwitch: Add `overflow: hidden` to `.StatusTextItem` (#7399) --- .changeset/swift-keys-thank.md | 5 +++++ packages/react/src/ToggleSwitch/ToggleSwitch.module.css | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/swift-keys-thank.md diff --git a/.changeset/swift-keys-thank.md b/.changeset/swift-keys-thank.md new file mode 100644 index 00000000000..b9c58bde4a1 --- /dev/null +++ b/.changeset/swift-keys-thank.md @@ -0,0 +1,5 @@ +--- +'@primer/react': patch +--- + +ToggleSwitch: Adds `overflow: hidden` to `.StatusTextItem` when hidden diff --git a/packages/react/src/ToggleSwitch/ToggleSwitch.module.css b/packages/react/src/ToggleSwitch/ToggleSwitch.module.css index 036043cca0c..7e459341c4b 100644 --- a/packages/react/src/ToggleSwitch/ToggleSwitch.module.css +++ b/packages/react/src/ToggleSwitch/ToggleSwitch.module.css @@ -53,6 +53,7 @@ .StatusTextItem:where([data-hidden='true']) { visibility: hidden; height: 0; + overflow: hidden; } .SwitchButton { From 445788b6a5955f677cccf9f4bf62132c5638ab81 Mon Sep 17 00:00:00 2001 From: Matthew Costabile Date: Wed, 31 Dec 2025 20:24:01 -0500 Subject: [PATCH 5/9] refactor(PageLayout): drag/resize performance with inline styles and O(1) CSS selectors (#7349) Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattcosta7 <8616962+mattcosta7@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .changeset/optimized-page-layout-resize.md | 17 + .../src/PageLayout/PageLayout.module.css | 87 ++--- .../react/src/PageLayout/PageLayout.test.tsx | 59 +++- packages/react/src/PageLayout/PageLayout.tsx | 310 ++++++++++-------- packages/react/src/PageLayout/paneUtils.ts | 31 ++ .../react/src/PageLayout/usePaneWidth.test.ts | 156 ++++++--- packages/react/src/PageLayout/usePaneWidth.ts | 75 +++-- 7 files changed, 447 insertions(+), 288 deletions(-) create mode 100644 .changeset/optimized-page-layout-resize.md create mode 100644 packages/react/src/PageLayout/paneUtils.ts diff --git a/.changeset/optimized-page-layout-resize.md b/.changeset/optimized-page-layout-resize.md new file mode 100644 index 00000000000..6584fae7ebc --- /dev/null +++ b/.changeset/optimized-page-layout-resize.md @@ -0,0 +1,17 @@ +--- +"@primer/react": patch +--- + +PageLayout: Optimize drag/resize performance with inline styles and new optimizations + +**Refactored:** +- Use direct attribute selectors (`.Pane[data-dragging='true']`) instead of descendant selectors for CSS containment (O(1) vs O(n) selector matching) +- Extract optimization utilities to `paneUtils.ts` +- Apply drag handle visual feedback via inline styles and CSS variables + +**Added:** +- `content-visibility: auto` during drag/resize to skip off-screen content rendering +- rAF throttle for drag updates (one update per frame, latest position wins) +- Containment during window resize (parity with drag) + +These changes improve style recalculation performance on large DOMs (100k+ nodes) by eliminating descendant selector traversal. diff --git a/packages/react/src/PageLayout/PageLayout.module.css b/packages/react/src/PageLayout/PageLayout.module.css index 079d34f6cff..7c600dc3968 100644 --- a/packages/react/src/PageLayout/PageLayout.module.css +++ b/packages/react/src/PageLayout/PageLayout.module.css @@ -381,26 +381,6 @@ } } -/** - * OPTIMIZATION: Aggressive containment during drag for ContentWrapper - * data-dragging is set on PageLayoutContent by JavaScript - * This avoids expensive :has() selectors - */ -.PageLayoutContent[data-dragging='true'] .ContentWrapper { - /* Add paint containment during drag - safe since user can't interact */ - contain: layout style paint; - - /* Disable interactions */ - pointer-events: none; - - /* Disable transitions to prevent expensive recalculations */ - transition: none; - - /* Force compositor layer for hardware acceleration */ - will-change: width; - transform: translateZ(0); -} - .Content { width: 100%; @@ -427,16 +407,6 @@ } } -/** - * OPTIMIZATION: Freeze content layout during resize drag - * This prevents expensive recalculations of large content areas - * while keeping content visible (just frozen in place) - */ -.PageLayoutContent[data-dragging='true'] .Content { - /* Full containment (without size) - isolate from layout recalculations */ - contain: layout style paint; -} - .PaneWrapper { display: flex; width: 100%; @@ -630,27 +600,6 @@ } } -/** - * OPTIMIZATION: Performance enhancements for Pane during drag - * data-dragging is set on PageLayoutContent by JavaScript - * This avoids expensive :has() selectors - */ -.PageLayoutContent[data-dragging='true'] .Pane { - /* Full containment - isolate from layout recalculations */ - contain: layout style paint; - - /* Disable interactions during drag */ - pointer-events: none; - - /* Disable transitions during drag */ - transition: none; - - /* Force hardware acceleration */ - will-change: width, transform; - transform: translateZ(0); - backface-visibility: hidden; -} - .PaneHorizontalDivider { &:where([data-position='start']) { /* stylelint-disable-next-line primer/spacing */ @@ -756,26 +705,36 @@ position: absolute; inset: 0 -2px; cursor: col-resize; - background-color: transparent; - transition-delay: 0.1s; - /** - * OPTIMIZATION: Prevent touch scrolling and text selection during drag - * This is done in CSS because it needs to be set before any pointer events - */ + /* Prevent touch scrolling and text selection during drag */ touch-action: none; user-select: none; } -.DraggableHandle:hover { - background-color: var(--bgColor-neutral-muted); +.DraggableHandle::before { + content: ''; + position: absolute; + inset: 0; + /* stylelint-disable-next-line primer/colors */ + background-color: var(--draggable-handle--bg-color, var(--bgColor-neutral-muted)); + opacity: var(--draggable-handle--drag-opacity, 0); + transition: var(--draggable-handle--transition, opacity 150ms ease); /* compositor-friendly, disabled during drag */ + border-radius: inherit; /* optional if you need rounded corners */ } -.DraggableHandle[data-dragging='true'] { - background-color: var(--bgColor-accent-emphasis); - cursor: col-resize; +/* Hover effect */ +.DraggableHandle:hover::before { + opacity: 1; } -.DraggableHandle[data-dragging='true']:hover { - background-color: var(--bgColor-accent-emphasis); +/** + * OPTIMIZATION: CSS containment during drag/resize + * Direct attribute selectors are O(1) - only the attributed element is invalidated + * (Unlike descendant selectors which require O(n) traversal) + */ +.Pane[data-dragging='true'], +.ContentWrapper[data-dragging='true'] { + contain: layout style paint; + pointer-events: none; + content-visibility: auto; } diff --git a/packages/react/src/PageLayout/PageLayout.test.tsx b/packages/react/src/PageLayout/PageLayout.test.tsx index 6ca0100ad79..52bc50c9874 100644 --- a/packages/react/src/PageLayout/PageLayout.test.tsx +++ b/packages/react/src/PageLayout/PageLayout.test.tsx @@ -165,8 +165,8 @@ describe('PageLayout', async () => { ) const placeholder = await screen.findByText('Pane') - const pane = placeholder.parentNode - const initialWidth = (pane as HTMLElement).style.getPropertyValue('--pane-width') + const pane = placeholder.parentNode as HTMLElement | null + const initialWidth = pane?.style.getPropertyValue('--pane-width') const divider = await screen.findByRole('slider') // Moving divider should resize pane. @@ -176,11 +176,11 @@ describe('PageLayout', async () => { fireEvent.keyDown(divider, {key: 'ArrowRight'}) fireEvent.keyDown(divider, {key: 'ArrowRight'}) - const finalWidth = (pane as HTMLElement).style.getPropertyValue('--pane-width') + const finalWidth = pane?.style.getPropertyValue('--pane-width') expect(finalWidth).not.toEqual(initialWidth) }) - it('should set data-dragging attribute during pointer drag', async () => { + it('should set optimization styles during pointer drag', async () => { const {container} = render( @@ -192,22 +192,21 @@ describe('PageLayout', async () => { , ) - const content = container.querySelector('[class*="PageLayoutContent"]') + const contentWrapper = container.querySelector('[class*="ContentWrapper"]') const divider = await screen.findByRole('slider') // Before drag - no data-dragging attribute - expect(content).not.toHaveAttribute('data-dragging') + expect(contentWrapper).not.toHaveAttribute('data-dragging') - // Start drag + // Start drag - optimization attribute is set fireEvent.pointerDown(divider, {clientX: 300, clientY: 200, pointerId: 1}) - expect(content).toHaveAttribute('data-dragging', 'true') - - // End drag - pointer capture lost ends the drag and removes attribute + expect(contentWrapper).toHaveAttribute('data-dragging', 'true') + // End drag - pointer capture lost ends the drag and removes optimization attribute fireEvent.lostPointerCapture(divider, {pointerId: 1}) - expect(content).not.toHaveAttribute('data-dragging') + expect(contentWrapper).not.toHaveAttribute('data-dragging') }) - it('should set data-dragging attribute during keyboard resize', async () => { + it('should set optimization styles during keyboard resize', async () => { const {container} = render( @@ -219,20 +218,46 @@ describe('PageLayout', async () => { , ) - const content = container.querySelector('[class*="PageLayoutContent"]') + const contentWrapper = container.querySelector('[class*="ContentWrapper"]') const divider = await screen.findByRole('slider') // Before interaction - no data-dragging attribute - expect(content).not.toHaveAttribute('data-dragging') + expect(contentWrapper).not.toHaveAttribute('data-dragging') // Start keyboard resize (focus first) fireEvent.focus(divider) fireEvent.keyDown(divider, {key: 'ArrowRight'}) - expect(content).toHaveAttribute('data-dragging', 'true') + expect(contentWrapper).toHaveAttribute('data-dragging', 'true') - // End keyboard resize - removes attribute + // End keyboard resize - removes optimization attribute fireEvent.keyUp(divider, {key: 'ArrowRight'}) - expect(content).not.toHaveAttribute('data-dragging') + expect(contentWrapper).not.toHaveAttribute('data-dragging') + }) + + it('should not add will-change during drag', async () => { + const {container} = render( + + + + + + + + , + ) + + const pane = container.querySelector('[class*="Pane"][data-resizable]') + const divider = await screen.findByRole('slider') + + // Before drag - no will-change + expect(pane!.style.willChange).toBe('') + + // Start drag - will-change should still not be set (removed optimization) + fireEvent.pointerDown(divider, {clientX: 300, clientY: 200, pointerId: 1}) + expect(pane!.style.willChange).toBe('') + // End drag - will-change remains unset + fireEvent.lostPointerCapture(divider, {pointerId: 1}) + expect(pane!.style.willChange).toBe('') }) }) diff --git a/packages/react/src/PageLayout/PageLayout.tsx b/packages/react/src/PageLayout/PageLayout.tsx index 901db1c5120..753e353ae95 100644 --- a/packages/react/src/PageLayout/PageLayout.tsx +++ b/packages/react/src/PageLayout/PageLayout.tsx @@ -1,4 +1,4 @@ -import React, {useRef} from 'react' +import React, {memo, useRef} from 'react' import {clsx} from 'clsx' import {useId} from '../hooks/useId' import {useRefObjectAsForwardedRef} from '../hooks/useRefObjectAsForwardedRef' @@ -20,6 +20,7 @@ import { type CustomWidthOptions, type PaneWidth, } from './usePaneWidth' +import {setDraggingStyles, removeDraggingStyles} from './paneUtils' const REGION_ORDER = { header: 0, @@ -29,6 +30,10 @@ const REGION_ORDER = { footer: 4, } +const isArrowKey = (key: string) => + key === 'ArrowLeft' || key === 'ArrowRight' || key === 'ArrowUp' || key === 'ArrowDown' +const isShrinkKey = (key: string) => key === 'ArrowLeft' || key === 'ArrowDown' + // eslint-disable-next-line @typescript-eslint/no-unused-vars const SPACING_MAP = { none: 0, @@ -41,13 +46,13 @@ const PageLayoutContext = React.createContext<{ rowGap: keyof typeof SPACING_MAP columnGap: keyof typeof SPACING_MAP paneRef: React.RefObject - contentRef: React.RefObject + contentWrapperRef: React.RefObject }>({ padding: 'normal', rowGap: 'normal', columnGap: 'normal', paneRef: {current: null}, - contentRef: {current: null}, + contentWrapperRef: {current: null}, }) // ---------------------------------------------------------------------------- @@ -87,7 +92,7 @@ const Root: React.FC> = ({ _slotsConfig: slotsConfig, }) => { const paneRef = useRef(null) - const contentRef = useRef(null) + const contentWrapperRef = useRef(null) const [slots, rest] = useSlots(children, slotsConfig ?? {header: Header, footer: Footer}) @@ -97,12 +102,31 @@ const Root: React.FC> = ({ rowGap, columnGap, paneRef, - contentRef, + contentWrapperRef, } - }, [padding, rowGap, columnGap, paneRef, contentRef]) + }, [padding, rowGap, columnGap, paneRef, contentWrapperRef]) return ( + +
+ {slots.header} +
{rest}
+ {slots.footer} +
+
+
+ ) +} + +const RootWrapper = memo( + ({ + style, + padding, + children, + className, + }: React.PropsWithChildren>) => { + return (
> = ({ } className={clsx(classes.PageLayoutRoot, className)} > -
- {slots.header} -
- {rest} -
- {slots.footer} -
+ {children}
- - ) -} + ) + }, +) Root.displayName = 'PageLayout' @@ -136,51 +154,48 @@ type DividerProps = { position?: keyof typeof panePositions | ResponsiveValue } -const HorizontalDivider: React.FC> = ({ - variant = 'none', - className, - position, - style, -}) => { - const {padding} = React.useContext(PageLayoutContext) +const HorizontalDivider = memo>( + ({variant = 'none', className, position, style}) => { + const {padding} = React.useContext(PageLayoutContext) - return ( -
- ) -} + return ( +
+ ) + }, +) + +HorizontalDivider.displayName = 'HorizontalDivider' type VerticalDividerProps = DividerProps & { draggable?: boolean } -const VerticalDivider: React.FC> = ({ - variant = 'none', - position, - className, - style, - children, -}) => { - return ( -
- {children} -
- ) -} +const VerticalDivider = memo>( + ({variant = 'none', position, className, style, children}) => { + return ( +
+ {children} +
+ ) + }, +) + +VerticalDivider.displayName = 'VerticalDivider' type DragHandleProps = { /** Ref for imperative ARIA updates during drag */ @@ -201,17 +216,12 @@ type DragHandleProps = { 'aria-valuenow'?: number } -const DATA_DRAGGING_ATTR = 'data-dragging' -const isDragging = (handle: HTMLElement | null) => { - return handle?.getAttribute(DATA_DRAGGING_ATTR) === 'true' -} - /** * DragHandle - handles all pointer and keyboard interactions for resizing * ARIA values are set in JSX for SSR accessibility, * then updated via DOM manipulation during drag for performance */ -const DragHandle: React.FC = ({ +const DragHandle = memo(function DragHandle({ handleRef, onDragStart, onDrag, @@ -220,7 +230,7 @@ const DragHandle: React.FC = ({ 'aria-valuemin': ariaValueMin, 'aria-valuemax': ariaValueMax, 'aria-valuenow': ariaValueNow, -}) => { +}) { const stableOnDragStart = React.useRef(onDragStart) const stableOnDrag = React.useRef(onDrag) const stableOnDragEnd = React.useRef(onDragEnd) @@ -230,79 +240,106 @@ const DragHandle: React.FC = ({ stableOnDragEnd.current = onDragEnd }) - const {paneRef, contentRef} = React.useContext(PageLayoutContext) - - // Helper to set/remove dragging attribute on content wrapper - // This avoids expensive :has() selectors - CSS uses simple descendant selectors instead - const setDragging = React.useCallback( - (dragging: boolean) => { - if (dragging) { - handleRef.current?.setAttribute(DATA_DRAGGING_ATTR, 'true') - contentRef.current?.setAttribute(DATA_DRAGGING_ATTR, 'true') - } else { - handleRef.current?.removeAttribute(DATA_DRAGGING_ATTR) - contentRef.current?.removeAttribute(DATA_DRAGGING_ATTR) - } - }, - [handleRef, contentRef], - ) + const {paneRef, contentWrapperRef} = React.useContext(PageLayoutContext) + + // Dragging state as a ref - cheaper than reading from DOM style + const isDraggingRef = React.useRef(false) + + // Set inline styles for drag optimizations - zero overhead at rest + const startDragging = React.useCallback(() => { + if (isDraggingRef.current) return + setDraggingStyles({ + handle: handleRef.current, + pane: paneRef.current, + contentWrapper: contentWrapperRef.current, + }) + isDraggingRef.current = true + }, [handleRef, contentWrapperRef, paneRef]) + + const endDragging = React.useCallback(() => { + if (!isDraggingRef.current) return + removeDraggingStyles({ + handle: handleRef.current, + pane: paneRef.current, + contentWrapper: contentWrapperRef.current, + }) + isDraggingRef.current = false + }, [handleRef, contentWrapperRef, paneRef]) /** * Pointer down starts a drag operation * Capture the pointer to continue receiving events outside the handle area - * Set a data attribute to indicate dragging state */ const handlePointerDown = React.useCallback( (event: React.PointerEvent) => { if (event.button !== 0) return event.preventDefault() const target = event.currentTarget - target.setPointerCapture(event.pointerId) + // Try to capture pointer - may fail in test environments or if pointer is already released + try { + target.setPointerCapture(event.pointerId) + } catch { + // Ignore - pointer capture is a nice-to-have for dragging outside the element + } stableOnDragStart.current(event.clientX) - setDragging(true) + startDragging() }, - [setDragging], + [startDragging], ) + // Simple rAF throttle - one update per frame, latest position wins + const rafIdRef = React.useRef(null) + const pendingClientXRef = React.useRef(null) + /** * Pointer move during drag * Calls onDrag with absolute cursor X position - * Using absolute position avoids drift from accumulated deltas - * Prevents default to avoid unwanted selection behavior + * Uses rAF to coalesce updates to one per frame */ - const handlePointerMove = React.useCallback( - (event: React.PointerEvent) => { - if (!isDragging(handleRef.current)) return - event.preventDefault() - - stableOnDrag.current(event.clientX, false) - }, - [handleRef], - ) + const handlePointerMove = React.useCallback((event: React.PointerEvent) => { + if (!isDraggingRef.current) return + event.preventDefault() + + // Store latest position - only the final position before rAF fires matters + pendingClientXRef.current = event.clientX + + // Schedule update if not already scheduled + if (rafIdRef.current === null) { + rafIdRef.current = requestAnimationFrame(() => { + rafIdRef.current = null + if (pendingClientXRef.current !== null) { + stableOnDrag.current(pendingClientXRef.current, false) + pendingClientXRef.current = null + } + }) + } + }, []) /** - * Pointer up ends a drag operation - * Prevents default to avoid unwanted selection behavior + * Pointer up - cleanup is handled by onLostPointerCapture event + * which fires when pointer capture is released (including on pointerup) */ - const handlePointerUp = React.useCallback( - (event: React.PointerEvent) => { - if (!isDragging(handleRef.current)) return - event.preventDefault() - // Cleanup will happen in onLostPointerCapture - }, - [handleRef], - ) + const handlePointerUp = React.useCallback((event: React.PointerEvent) => { + if (!isDraggingRef.current) return + event.preventDefault() + }, []) /** * Lost pointer capture ends a drag operation - * Cleans up dragging state + * Cleans up dragging state and cancels any pending rAF * Calls onDragEnd callback */ const handleLostPointerCapture = React.useCallback(() => { - if (!isDragging(handleRef.current)) return - setDragging(false) + if (!isDraggingRef.current) return + // Cancel any pending rAF to prevent stale updates + if (rafIdRef.current !== null) { + cancelAnimationFrame(rafIdRef.current) + rafIdRef.current = null + pendingClientXRef.current = null + } + endDragging() stableOnDragEnd.current() - }, [handleRef, setDragging]) + }, [endDragging]) /** * Keyboard handling for accessibility @@ -313,42 +350,41 @@ const DragHandle: React.FC = ({ */ const handleKeyDown = React.useCallback( (event: React.KeyboardEvent) => { - if ( - event.key === 'ArrowLeft' || - event.key === 'ArrowRight' || - event.key === 'ArrowUp' || - event.key === 'ArrowDown' - ) { - event.preventDefault() - - if (!paneRef.current) return + if (!isArrowKey(event.key)) return + event.preventDefault() - // https://github.com/github/accessibility/issues/5101#issuecomment-1822870655 - const delta = event.key === 'ArrowLeft' || event.key === 'ArrowDown' ? -ARROW_KEY_STEP : ARROW_KEY_STEP + // https://github.com/github/accessibility/issues/5101#issuecomment-1822870655 + const delta = isShrinkKey(event.key) ? -ARROW_KEY_STEP : ARROW_KEY_STEP - setDragging(true) - stableOnDrag.current(delta, true) + // Only set dragging on first keydown (not repeats) + if (!isDraggingRef.current) { + startDragging() } + stableOnDrag.current(delta, true) }, - [paneRef, setDragging], + [startDragging], ) const handleKeyUp = React.useCallback( (event: React.KeyboardEvent) => { - if ( - event.key === 'ArrowLeft' || - event.key === 'ArrowRight' || - event.key === 'ArrowUp' || - event.key === 'ArrowDown' - ) { - event.preventDefault() - setDragging(false) - stableOnDragEnd.current() - } + if (!isArrowKey(event.key)) return + event.preventDefault() + endDragging() + stableOnDragEnd.current() }, - [setDragging], + [endDragging], ) + // Cleanup rAF on unmount to prevent stale callbacks + React.useEffect(() => { + return () => { + if (rafIdRef.current !== null) { + cancelAnimationFrame(rafIdRef.current) + rafIdRef.current = null + } + } + }, []) + return (
= ({ onDoubleClick={onDoubleClick} /> ) -} +}) // ---------------------------------------------------------------------------- // PageLayout.Header @@ -461,7 +497,6 @@ const Header: FCWithSlotMarker> = ) } - Header.displayName = 'PageLayout.Header' // ---------------------------------------------------------------------------- @@ -511,9 +546,11 @@ const Content: FCWithSlotMarker> style, }) => { const Component = as + const {contentWrapperRef} = React.useContext(PageLayoutContext) return ( > ) } - Content.displayName = 'PageLayout.Content' // ---------------------------------------------------------------------------- @@ -637,7 +673,7 @@ const Pane = React.forwardRef(null) @@ -657,6 +693,7 @@ const Pane = React.forwardRef> = ) } - Footer.displayName = 'PageLayout.Footer' // ---------------------------------------------------------------------------- diff --git a/packages/react/src/PageLayout/paneUtils.ts b/packages/react/src/PageLayout/paneUtils.ts new file mode 100644 index 00000000000..a33f8bbc010 --- /dev/null +++ b/packages/react/src/PageLayout/paneUtils.ts @@ -0,0 +1,31 @@ +type DraggingStylesParams = { + handle: HTMLElement | null + pane: HTMLElement | null + contentWrapper: HTMLElement | null +} + +const DATA_DRAGGING_ATTR = 'data-dragging' + +/** Apply visual feedback and performance optimizations during drag */ +export function setDraggingStyles({handle, pane, contentWrapper}: DraggingStylesParams) { + // Handle visual feedback (must be inline for instant response) + // Use CSS variable to control ::before pseudo-element background color. + // This avoids cascade conflicts between inline styles and pseudo-element backgrounds. + handle?.style.setProperty('--draggable-handle--bg-color', 'var(--bgColor-accent-emphasis)') + handle?.style.setProperty('--draggable-handle--drag-opacity', '1') + handle?.style.setProperty('--draggable-handle--transition', 'none') + + // Set attribute for CSS containment (O(1) direct selector, not descendant) + pane?.setAttribute(DATA_DRAGGING_ATTR, 'true') + contentWrapper?.setAttribute(DATA_DRAGGING_ATTR, 'true') +} + +/** Remove drag styles and restore normal state */ +export function removeDraggingStyles({handle, pane, contentWrapper}: DraggingStylesParams) { + handle?.style.removeProperty('--draggable-handle--bg-color') + handle?.style.removeProperty('--draggable-handle--drag-opacity') + handle?.style.removeProperty('--draggable-handle--transition') + + pane?.removeAttribute(DATA_DRAGGING_ATTR) + contentWrapper?.removeAttribute(DATA_DRAGGING_ATTR) +} diff --git a/packages/react/src/PageLayout/usePaneWidth.test.ts b/packages/react/src/PageLayout/usePaneWidth.test.ts index a529d0b7367..570fb6c47ed 100644 --- a/packages/react/src/PageLayout/usePaneWidth.test.ts +++ b/packages/react/src/PageLayout/usePaneWidth.test.ts @@ -17,6 +17,7 @@ import { const createMockRefs = () => ({ paneRef: {current: document.createElement('div')} as React.RefObject, handleRef: {current: document.createElement('div')} as React.RefObject, + contentWrapperRef: {current: document.createElement('div')} as React.RefObject, }) describe('usePaneWidth', () => { @@ -399,10 +400,10 @@ describe('usePaneWidth', () => { // Shrink viewport vi.stubGlobal('innerWidth', 800) - // Wrap resize + debounce in act() since it triggers startTransition state update + // Wrap resize + throttle in act() since it triggers startTransition state update await act(async () => { window.dispatchEvent(new Event('resize')) - await vi.advanceTimersByTimeAsync(150) + await vi.runAllTimersAsync() }) // getMaxPaneWidth now returns 800 - 511 = 289 @@ -413,7 +414,7 @@ describe('usePaneWidth', () => { vi.useRealTimers() }) - it('should update CSS variable immediately via throttle', async () => { + it('should throttle CSS variable update', async () => { vi.useFakeTimers() vi.stubGlobal('innerWidth', 1280) const refs = createMockRefs() @@ -434,16 +435,22 @@ describe('usePaneWidth', () => { // Shrink viewport vi.stubGlobal('innerWidth', 1000) - // Fire resize - CSS should update immediately (throttled at 16ms) + // Fire resize - with throttle, first update happens immediately (if THROTTLE_MS passed) window.dispatchEvent(new Event('resize')) - // CSS variable should be updated immediately: 1000 - 511 = 489 + // Since Date.now() starts at 0 and lastUpdateTime is 0, first update should happen immediately + // but it's in rAF, so we need to advance through rAF + await act(async () => { + await vi.runAllTimersAsync() + }) + + // CSS variable should now be updated: 1000 - 511 = 489 expect(refs.paneRef.current?.style.getPropertyValue('--pane-max-width')).toBe('489px') vi.useRealTimers() }) - it('should update ARIA attributes after debounce', async () => { + it('should update ARIA attributes after throttle', async () => { vi.useFakeTimers() vi.stubGlobal('innerWidth', 1280) const refs = createMockRefs() @@ -453,7 +460,7 @@ describe('usePaneWidth', () => { width: 'medium', minWidth: 256, resizable: true, - widthStorageKey: 'test-aria-debounce', + widthStorageKey: 'test-aria-throttle', ...refs, }), ) @@ -464,16 +471,12 @@ describe('usePaneWidth', () => { // Shrink viewport vi.stubGlobal('innerWidth', 900) - // Fire resize but don't wait for debounce + // Fire resize - with throttle, update happens via rAF window.dispatchEvent(new Event('resize')) - await vi.advanceTimersByTimeAsync(50) - // ARIA should NOT be updated yet - expect(refs.handleRef.current?.getAttribute('aria-valuemax')).toBe('769') - - // Wait for debounce + // Wait for rAF to complete await act(async () => { - await vi.advanceTimersByTimeAsync(100) + await vi.runAllTimersAsync() }) // ARIA should now be updated: 900 - 511 = 389 @@ -482,7 +485,7 @@ describe('usePaneWidth', () => { vi.useRealTimers() }) - it('should throttle CSS updates and debounce full sync on rapid resize', async () => { + it('should throttle full sync on rapid resize', async () => { vi.useFakeTimers() vi.stubGlobal('innerWidth', 1280) const refs = createMockRefs() @@ -494,7 +497,7 @@ describe('usePaneWidth', () => { width: 'medium', minWidth: 256, resizable: true, - widthStorageKey: 'test-throttle-debounce', + widthStorageKey: 'test-throttle', ...refs, }), ) @@ -502,13 +505,19 @@ describe('usePaneWidth', () => { // Clear mount calls setPropertySpy.mockClear() - // Fire resize - first one updates CSS immediately + // Fire resize events rapidly vi.stubGlobal('innerWidth', 1100) window.dispatchEvent(new Event('resize')) - // CSS should update immediately (first call, throttle allows) - expect(setPropertySpy).toHaveBeenCalledWith('--pane-max-width', '589px') // 1100 - 511 + // With throttle, CSS should update immediately or via rAF + await act(async () => { + await vi.runAllTimersAsync() + }) + + // First update should have happened: 1100 - 511 = 589 + expect(setPropertySpy).toHaveBeenCalledWith('--pane-max-width', '589px') + // Clear for next test setPropertySpy.mockClear() // Fire more resize events rapidly (within throttle window) @@ -517,28 +526,19 @@ describe('usePaneWidth', () => { window.dispatchEvent(new Event('resize')) } - // Throttle limits calls - may have scheduled RAF but not executed yet - // Advance past throttle window to let RAF execute - await vi.advanceTimersByTimeAsync(20) - - // Should have at least one more CSS update from RAF - expect(setPropertySpy).toHaveBeenCalled() - - // But ARIA should not be updated yet (debounced) - expect(refs.handleRef.current?.getAttribute('aria-valuemax')).toBe('769') // Still initial - - // Wait for debounce to complete + // Should schedule via rAF await act(async () => { - await vi.advanceTimersByTimeAsync(150) + await vi.runAllTimersAsync() }) - // Now ARIA and refs are synced - expect(refs.handleRef.current?.getAttribute('aria-valuemax')).toBe('389') // 900 - 511 + // Now CSS and ARIA should be synced with final viewport value (900) + expect(setPropertySpy).toHaveBeenCalledWith('--pane-max-width', '389px') // 900 - 511 + expect(refs.handleRef.current?.getAttribute('aria-valuemax')).toBe('389') vi.useRealTimers() }) - it('should update React state via startTransition after debounce', async () => { + it('should update React state via startTransition after throttle', async () => { vi.useFakeTimers() vi.stubGlobal('innerWidth', 1280) const refs = createMockRefs() @@ -560,13 +560,9 @@ describe('usePaneWidth', () => { vi.stubGlobal('innerWidth', 800) window.dispatchEvent(new Event('resize')) - // Before debounce completes, state unchanged - await vi.advanceTimersByTimeAsync(50) - expect(result.current.maxPaneWidth).toBe(769) - - // After debounce, state updated via startTransition + // After throttle (via rAF), state updated via startTransition await act(async () => { - await vi.advanceTimersByTimeAsync(100) + await vi.runAllTimersAsync() }) // State now reflects new max: 800 - 511 = 289 @@ -615,6 +611,86 @@ describe('usePaneWidth', () => { expect(addEventListenerSpy).not.toHaveBeenCalledWith('resize', expect.any(Function)) addEventListenerSpy.mockRestore() }) + + it('should apply and remove containment attributes during resize', async () => { + vi.useFakeTimers() + vi.stubGlobal('innerWidth', 1280) + const refs = createMockRefs() + + renderHook(() => + usePaneWidth({ + width: 'medium', + minWidth: 256, + resizable: true, + widthStorageKey: 'test-containment', + ...refs, + }), + ) + + // Initially no data-dragging attribute + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(false) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(false) + + // Fire resize + vi.stubGlobal('innerWidth', 1000) + window.dispatchEvent(new Event('resize')) + + // Attribute should be applied immediately on first resize + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(true) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(true) + + // Fire another resize event immediately (simulating continuous resize) + vi.stubGlobal('innerWidth', 900) + window.dispatchEvent(new Event('resize')) + + // Attribute should still be present (containment stays on during continuous resize) + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(true) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(true) + + // Wait for the debounce timeout (150ms) to complete after resize stops + await act(async () => { + await vi.advanceTimersByTimeAsync(150) + }) + + // Attribute should be removed after debounce completes + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(false) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(false) + + vi.useRealTimers() + }) + + it('should cleanup containment attributes on unmount during resize', async () => { + vi.useFakeTimers() + vi.stubGlobal('innerWidth', 1280) + const refs = createMockRefs() + + const {unmount} = renderHook(() => + usePaneWidth({ + width: 'medium', + minWidth: 256, + resizable: true, + widthStorageKey: 'test-cleanup-containment', + ...refs, + }), + ) + + // Fire resize + vi.stubGlobal('innerWidth', 1000) + window.dispatchEvent(new Event('resize')) + + // Attribute should be applied + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(true) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(true) + + // Unmount immediately (before debounce timer fires) + unmount() + + // Attribute should be cleaned up on unmount regardless of timing + expect(refs.paneRef.current?.hasAttribute('data-dragging')).toBe(false) + expect(refs.contentWrapperRef.current?.hasAttribute('data-dragging')).toBe(false) + + vi.useRealTimers() + }) }) describe('on-demand max calculation', () => { diff --git a/packages/react/src/PageLayout/usePaneWidth.ts b/packages/react/src/PageLayout/usePaneWidth.ts index 2449901b0a0..4244e94d1e9 100644 --- a/packages/react/src/PageLayout/usePaneWidth.ts +++ b/packages/react/src/PageLayout/usePaneWidth.ts @@ -23,6 +23,7 @@ export type UsePaneWidthOptions = { widthStorageKey: string paneRef: React.RefObject handleRef: React.RefObject + contentWrapperRef: React.RefObject } export type UsePaneWidthResult = { @@ -77,7 +78,7 @@ export const isCustomWidthOptions = (width: PaneWidth | CustomWidthOptions): wid } export const isPaneWidth = (width: PaneWidth | CustomWidthOptions): width is PaneWidth => { - return ['small', 'medium', 'large'].includes(width as PaneWidth) + return width === 'small' || width === 'medium' || width === 'large' } export const getDefaultPaneWidth = (w: PaneWidth | CustomWidthOptions): number => { @@ -130,6 +131,7 @@ export function usePaneWidth({ widthStorageKey, paneRef, handleRef, + contentWrapperRef, }: UsePaneWidthOptions): UsePaneWidthResult { // Derive constraints from width configuration const isCustomWidth = isCustomWidthOptions(width) @@ -187,7 +189,10 @@ export function usePaneWidth({ const saveWidth = React.useCallback( (value: number) => { currentWidthRef.current = value - setCurrentWidth(value) + // Visual update already done via inline styles - React state sync is non-urgent + startTransition(() => { + setCurrentWidth(value) + }) try { localStorage.setItem(widthStorageKey, value.toString()) } catch { @@ -205,20 +210,12 @@ export function usePaneWidth({ }) // Update CSS variable, refs, and ARIA on mount and window resize. - // Strategy: - // 1. Throttled (16ms): Update --pane-max-width CSS variable for immediate visual clamp - // 2. Debounced (150ms): Sync refs, ARIA, and React state when resize stops + // Strategy: Only sync when resize stops (debounced) to avoid layout thrashing on large DOMs useIsomorphicLayoutEffect(() => { if (!resizable) return let lastViewportWidth = window.innerWidth - // Quick CSS-only update for immediate visual feedback (throttled) - const updateCSSOnly = () => { - const actualMax = getMaxPaneWidthRef.current() - paneRef.current?.style.setProperty('--pane-max-width', `${actualMax}px`) - } - // Full sync of refs, ARIA, and state (debounced, runs when resize stops) const syncAll = () => { const currentViewportWidth = window.innerWidth @@ -269,36 +266,53 @@ export function usePaneWidth({ // For custom widths, max is fixed - no need to listen to resize if (customMaxWidth !== null) return - // Throttle CSS updates (16ms ≈ 60fps), debounce full sync (150ms) - const THROTTLE_MS = 16 - const DEBOUNCE_MS = 150 + // Throttle approach for window resize - provides immediate visual feedback for small DOMs + // while still limiting update frequency + const THROTTLE_MS = 16 // ~60fps + const DEBOUNCE_MS = 150 // Delay before removing containment after resize stops + let lastUpdateTime = 0 + let pendingUpdate = false let rafId: number | null = null let debounceId: ReturnType | null = null - let lastThrottleTime = 0 + let isResizing = false + + const startResizeOptimizations = () => { + if (isResizing) return + isResizing = true + paneRef.current?.setAttribute('data-dragging', 'true') + contentWrapperRef.current?.setAttribute('data-dragging', 'true') + } + + const endResizeOptimizations = () => { + if (!isResizing) return + isResizing = false + paneRef.current?.removeAttribute('data-dragging') + contentWrapperRef.current?.removeAttribute('data-dragging') + } const handleResize = () => { - const now = Date.now() + // Apply containment on first resize event (stays applied until resize stops) + startResizeOptimizations() - // Throttled CSS update for immediate visual feedback - if (now - lastThrottleTime >= THROTTLE_MS) { - lastThrottleTime = now - updateCSSOnly() - } else if (rafId === null) { - // Schedule next frame if we're within throttle window + const now = Date.now() + if (now - lastUpdateTime >= THROTTLE_MS) { + lastUpdateTime = now + syncAll() + } else if (!pendingUpdate) { + pendingUpdate = true rafId = requestAnimationFrame(() => { + pendingUpdate = false rafId = null - lastThrottleTime = Date.now() - updateCSSOnly() + lastUpdateTime = Date.now() + syncAll() }) } - // Debounced full sync (refs, ARIA, state) when resize stops - if (debounceId !== null) { - clearTimeout(debounceId) - } + // Debounce the cleanup — remove containment after resize stops + if (debounceId !== null) clearTimeout(debounceId) debounceId = setTimeout(() => { debounceId = null - syncAll() + endResizeOptimizations() }, DEBOUNCE_MS) } @@ -307,9 +321,10 @@ export function usePaneWidth({ return () => { if (rafId !== null) cancelAnimationFrame(rafId) if (debounceId !== null) clearTimeout(debounceId) + endResizeOptimizations() window.removeEventListener('resize', handleResize) } - }, [resizable, customMaxWidth, minPaneWidth, paneRef, handleRef]) + }, [resizable, customMaxWidth, minPaneWidth, paneRef, handleRef, contentWrapperRef]) return { currentWidth, From c613e8a1be23692cb913d30f734d8cbe0b715df7 Mon Sep 17 00:00:00 2001 From: Tyler Jones Date: Fri, 2 Jan 2026 10:57:26 -0500 Subject: [PATCH 6/9] ActionBar: Add ability to change focus target on menu close (#7400) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .changeset/curvy-walls-exist.md | 4 + .../react/src/ActionBar/ActionBar.docs.json | 6 + .../react/src/ActionBar/ActionBar.test.tsx | 119 +++++++++++++++++- packages/react/src/ActionBar/ActionBar.tsx | 17 ++- 4 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 .changeset/curvy-walls-exist.md diff --git a/.changeset/curvy-walls-exist.md b/.changeset/curvy-walls-exist.md new file mode 100644 index 00000000000..634d82842c1 --- /dev/null +++ b/.changeset/curvy-walls-exist.md @@ -0,0 +1,4 @@ +--- +--- + +ActionBar: Adds new prop `returnFocusRef` to `ActionBar.Menu` to change where focus lands when the menu is closed diff --git a/packages/react/src/ActionBar/ActionBar.docs.json b/packages/react/src/ActionBar/ActionBar.docs.json index 193a73ba7b3..b38d7affc1a 100644 --- a/packages/react/src/ActionBar/ActionBar.docs.json +++ b/packages/react/src/ActionBar/ActionBar.docs.json @@ -127,6 +127,12 @@ "type": "Component | 'none'", "required": false, "description": "Icon displayed when the menu item is within the overflow menu. If 'none' is provided, no icon will be shown in the overflow menu." + }, + { + "name": "returnFocusRef", + "type": "React.RefObject", + "required": false, + "description": "A ref to an element that should receive focus when the menu is closed." } ] } diff --git a/packages/react/src/ActionBar/ActionBar.test.tsx b/packages/react/src/ActionBar/ActionBar.test.tsx index 05029b2e853..f176d5e7add 100644 --- a/packages/react/src/ActionBar/ActionBar.test.tsx +++ b/packages/react/src/ActionBar/ActionBar.test.tsx @@ -1,9 +1,9 @@ import {describe, expect, it, afterEach, vi} from 'vitest' import {render, screen, act} from '@testing-library/react' import userEvent from '@testing-library/user-event' +import React, {createRef, useState} from 'react' import ActionBar from './' import {BoldIcon, ItalicIcon, CodeIcon} from '@primer/octicons-react' -import {useState} from 'react' import {implementsClassName} from '../utils/testing' import classes from './ActionBar.module.css' @@ -300,3 +300,120 @@ describe('ActionBar gap prop', () => { expect(toolbar).toHaveAttribute('data-gap', 'condensed') }) }) + +describe('ActionBar.Menu returnFocusRef', () => { + it('accepts returnFocusRef prop', () => { + const returnFocusRef = createRef() + render( +
+ + + + +
, + ) + + expect(screen.getByRole('button', {name: 'More options'})).toBeInTheDocument() + }) + + it('returns focus to returnFocusRef when menu is closed', async () => { + const user = userEvent.setup() + const returnFocusRef = createRef() + + render( +
+ + + + +
, + ) + + const menuButton = screen.getByRole('button', {name: 'More options'}) + + // Open the menu + await user.click(menuButton) + + // Verify menu is open + expect(screen.getByRole('menu')).toBeInTheDocument() + + // Close the menu by pressing Escape + await user.keyboard('{Escape}') + + // Verify focus is returned to the returnFocusRef element + const returnFocusTarget = screen.getByTestId('return-focus-target') + expect(document.activeElement).toEqual(returnFocusTarget) + }) + + it('returns focus to returnFocusRef when menu item is selected', async () => { + const user = userEvent.setup() + const returnFocusRef = createRef() + const onClick = vi.fn() + + render( +
+ + + + +
, + ) + + const menuButton = screen.getByRole('button', {name: 'More options'}) + + // Open the menu + await user.click(menuButton) + + // Click a menu item + await user.click(screen.getByRole('menuitem', {name: 'Option 1'})) + + // Verify focus is returned to the returnFocusRef element + const returnFocusTarget = screen.getByTestId('return-focus-target') + expect(document.activeElement).toEqual(returnFocusTarget) + }) + + it('returns focus to anchor button when returnFocusRef is not provided', async () => { + const user = userEvent.setup() + + render( + + + , + ) + + const menuButton = screen.getByRole('button', {name: 'More options'}) + + // Open the menu + await user.click(menuButton) + + // Verify menu is open + expect(screen.getByRole('menu')).toBeInTheDocument() + + // Close the menu by pressing Escape + await user.keyboard('{Escape}') + + // Verify focus returns to the menu button (default behavior) + expect(document.activeElement).toEqual(menuButton) + }) +}) diff --git a/packages/react/src/ActionBar/ActionBar.tsx b/packages/react/src/ActionBar/ActionBar.tsx index 7f2745ef218..4bb9d6e2ec4 100644 --- a/packages/react/src/ActionBar/ActionBar.tsx +++ b/packages/react/src/ActionBar/ActionBar.tsx @@ -35,6 +35,7 @@ type ChildProps = label: string icon: ActionBarIconButtonProps['icon'] | 'none' items: ActionBarMenuProps['items'] + returnFocusRef?: React.RefObject } /** @@ -155,6 +156,10 @@ export type ActionBarMenuProps = { * If 'none' is provided, no icon will be shown in the overflow menu. */ overflowIcon?: ActionBarIconButtonProps['icon'] | 'none' + /** + * Target element to return focus to when the menu is closed. + */ + returnFocusRef?: React.RefObject } & IconButtonProps const MORE_BTN_WIDTH = 32 @@ -428,7 +433,7 @@ export const ActionBar: React.FC> = prop if (menuItem.type === 'menu') { const menuItems = menuItem.items - const {icon: Icon, label} = menuItem + const {icon: Icon, label, returnFocusRef} = menuItem return ( @@ -442,7 +447,7 @@ export const ActionBar: React.FC> = prop {label} - + {menuItems.map((item, index) => renderMenuItem(item, index))} @@ -584,7 +589,10 @@ export const ActionBarGroup = forwardRef(({children}: React.PropsWithChildren, f }) export const ActionBarMenu = forwardRef( - ({'aria-label': ariaLabel, icon, overflowIcon, items, ...props}: ActionBarMenuProps, forwardedRef) => { + ( + {'aria-label': ariaLabel, icon, overflowIcon, items, returnFocusRef, ...props}: ActionBarMenuProps, + forwardedRef, + ) => { const backupRef = useRef(null) const ref = (forwardedRef ?? backupRef) as RefObject const id = useId() @@ -606,6 +614,7 @@ export const ActionBarMenu = forwardRef( width: widthRef.current, label: ariaLabel, icon: overflowIcon ? overflowIcon : icon, + returnFocusRef, items, }) @@ -621,7 +630,7 @@ export const ActionBarMenu = forwardRef( - + {items.map((item, index) => renderMenuItem(item, index))} From 7f8bc25a725d613c1a839216fbcb7980a5b1ec76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 10:22:18 +0100 Subject: [PATCH 7/9] chore(deps): bump zod from 4.1.13 to 4.3.5 (#7423) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 61 +++++++++------------------------------ packages/mcp/package.json | 2 +- 2 files changed, 15 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index 591f8bacc0f..1f149f43422 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4044,14 +4044,6 @@ "node": ">=18.18.0" } }, - "node_modules/@eslint-react/kit/node_modules/zod": { - "version": "4.0.17", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@eslint-react/shared": { "version": "1.52.6", "dev": true, @@ -4067,14 +4059,6 @@ "node": ">=18.18.0" } }, - "node_modules/@eslint-react/shared/node_modules/zod": { - "version": "4.0.17", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@eslint-react/var": { "version": "1.52.6", "dev": true, @@ -4661,6 +4645,16 @@ "node": ">=18" } }, + "node_modules/@figma/code-connect/node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@floating-ui/core": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", @@ -5870,15 +5864,6 @@ "node": ">=16.20.0" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/zod": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", - "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@next/env": { "version": "16.0.10", "resolved": "https://registry.npmjs.org/@next/env/-/env-16.0.10.tgz", @@ -13613,16 +13598,6 @@ } } }, - "node_modules/eslint-plugin-react-hooks/node_modules/zod": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", - "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/eslint-plugin-react-hooks/node_modules/zod-validation-error": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", @@ -26160,8 +26135,9 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "dev": true, + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", + "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -26374,7 +26350,7 @@ "@primer/react": "^38.0.0", "cheerio": "^1.0.0", "turndown": "^7.2.0", - "zod": "^4.1.13" + "zod": "^4.3.5" }, "bin": { "mcp": "bin/mcp.js" @@ -26414,15 +26390,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/mcp/node_modules/zod": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", - "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "packages/postcss-preset-primer": { "version": "0.0.0", "dependencies": { diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 67754a78699..1201da54940 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -41,7 +41,7 @@ "@primer/react": "^38.0.0", "cheerio": "^1.0.0", "turndown": "^7.2.0", - "zod": "^4.1.13" + "zod": "^4.3.5" }, "devDependencies": { "@babel/core": "^7.28.5", From 2d8a1df37048fd93f67c8d5b9e8d76128180d1ec Mon Sep 17 00:00:00 2001 From: Lindsey Wild <35239154+lindseywild@users.noreply.github.com> Date: Mon, 5 Jan 2026 09:17:32 -0500 Subject: [PATCH 8/9] Adds character counts to TextArea and TextInput components (#7293) --- .changeset/four-fans-pump.md | 5 + ...r-Limit-Exceeded-dark-colorblind-linux.png | Bin 0 -> 10935 bytes ...acter-Limit-Exceeded-dark-dimmed-linux.png | Bin 0 -> 10897 bytes ...imit-Exceeded-dark-high-contrast-linux.png | Bin 0 -> 10953 bytes ...th-Character-Limit-Exceeded-dark-linux.png | Bin 0 -> 10918 bytes ...r-Limit-Exceeded-dark-tritanopia-linux.png | Bin 0 -> 10918 bytes ...-Limit-Exceeded-light-colorblind-linux.png | Bin 0 -> 10902 bytes ...mit-Exceeded-light-high-contrast-linux.png | Bin 0 -> 10860 bytes ...h-Character-Limit-Exceeded-light-linux.png | Bin 0 -> 10863 bytes ...-Limit-Exceeded-light-tritanopia-linux.png | Bin 0 -> 10863 bytes ...imit-and-Caption-dark-colorblind-linux.png | Bin 0 -> 9778 bytes ...er-Limit-and-Caption-dark-dimmed-linux.png | Bin 0 -> 9650 bytes ...t-and-Caption-dark-high-contrast-linux.png | Bin 0 -> 9788 bytes ...Character-Limit-and-Caption-dark-linux.png | Bin 0 -> 9778 bytes ...imit-and-Caption-dark-tritanopia-linux.png | Bin 0 -> 9778 bytes ...mit-and-Caption-light-colorblind-linux.png | Bin 0 -> 9656 bytes ...-and-Caption-light-high-contrast-linux.png | Bin 0 -> 9729 bytes ...haracter-Limit-and-Caption-light-linux.png | Bin 0 -> 9656 bytes ...mit-and-Caption-light-tritanopia-linux.png | Bin 0 -> 9656 bytes ...-Character-Limit-dark-colorblind-linux.png | Bin 0 -> 7808 bytes ...With-Character-Limit-dark-dimmed-linux.png | Bin 0 -> 7744 bytes ...aracter-Limit-dark-high-contrast-linux.png | Bin 0 -> 7788 bytes ...tInput-With-Character-Limit-dark-linux.png | Bin 0 -> 7808 bytes ...-Character-Limit-dark-tritanopia-linux.png | Bin 0 -> 7808 bytes ...Character-Limit-light-colorblind-linux.png | Bin 0 -> 7701 bytes ...racter-Limit-light-high-contrast-linux.png | Bin 0 -> 7751 bytes ...Input-With-Character-Limit-light-linux.png | Bin 0 -> 7701 bytes ...Character-Limit-light-tritanopia-linux.png | Bin 0 -> 7701 bytes ...r-Limit-Exceeded-dark-colorblind-linux.png | Bin 0 -> 20086 bytes ...acter-Limit-Exceeded-dark-dimmed-linux.png | Bin 0 -> 20184 bytes ...imit-Exceeded-dark-high-contrast-linux.png | Bin 0 -> 19885 bytes ...th-Character-Limit-Exceeded-dark-linux.png | Bin 0 -> 20084 bytes ...r-Limit-Exceeded-dark-tritanopia-linux.png | Bin 0 -> 20084 bytes ...-Limit-Exceeded-light-colorblind-linux.png | Bin 0 -> 19863 bytes ...mit-Exceeded-light-high-contrast-linux.png | Bin 0 -> 19738 bytes ...h-Character-Limit-Exceeded-light-linux.png | Bin 0 -> 19837 bytes ...-Limit-Exceeded-light-tritanopia-linux.png | Bin 0 -> 19837 bytes ...imit-and-Caption-dark-colorblind-linux.png | Bin 0 -> 8645 bytes ...er-Limit-and-Caption-dark-dimmed-linux.png | Bin 0 -> 8542 bytes ...t-and-Caption-dark-high-contrast-linux.png | Bin 0 -> 8689 bytes ...Character-Limit-and-Caption-dark-linux.png | Bin 0 -> 8645 bytes ...imit-and-Caption-dark-tritanopia-linux.png | Bin 0 -> 8645 bytes ...mit-and-Caption-light-colorblind-linux.png | Bin 0 -> 8544 bytes ...-and-Caption-light-high-contrast-linux.png | Bin 0 -> 8622 bytes ...haracter-Limit-and-Caption-light-linux.png | Bin 0 -> 8544 bytes ...mit-and-Caption-light-tritanopia-linux.png | Bin 0 -> 8544 bytes ...-Character-Limit-dark-colorblind-linux.png | Bin 0 -> 7248 bytes ...With-Character-Limit-dark-dimmed-linux.png | Bin 0 -> 7195 bytes ...aracter-Limit-dark-high-contrast-linux.png | Bin 0 -> 7280 bytes ...xtarea-With-Character-Limit-dark-linux.png | Bin 0 -> 7248 bytes ...-Character-Limit-dark-tritanopia-linux.png | Bin 0 -> 7248 bytes ...Character-Limit-light-colorblind-linux.png | Bin 0 -> 7155 bytes ...racter-Limit-light-high-contrast-linux.png | Bin 0 -> 7227 bytes ...tarea-With-Character-Limit-light-linux.png | Bin 0 -> 7155 bytes ...Character-Limit-light-tritanopia-linux.png | Bin 0 -> 7155 bytes e2e/components/TextInput.test.ts | 54 +++++ e2e/components/Textarea.test.ts | 12 ++ .../react/src/TextInput/TextInput.docs.json | 5 + .../TextInput/TextInput.features.stories.tsx | 41 ++++ .../react/src/TextInput/TextInput.module.css | 10 + .../react/src/TextInput/TextInput.test.tsx | 105 ++++++++- packages/react/src/TextInput/TextInput.tsx | 203 +++++++++++++----- .../__snapshots__/TextInput.test.tsx.snap | 5 + .../react/src/Textarea/TextArea.module.css | 11 + .../react/src/Textarea/Textarea.docs.json | 5 + .../Textarea/Textarea.features.stories.tsx | 44 ++++ packages/react/src/Textarea/Textarea.test.tsx | 97 +++++++++ packages/react/src/Textarea/Textarea.tsx | 141 +++++++++--- .../utils/__tests__/character-counter.test.ts | 166 ++++++++++++++ packages/react/src/utils/character-counter.ts | 75 +++++++ 70 files changed, 893 insertions(+), 86 deletions(-) create mode 100644 .changeset/four-fans-pump.md create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-linux.png create mode 100644 .playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-linux.png create mode 100644 .playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-tritanopia-linux.png create mode 100644 packages/react/src/TextInput/TextInput.module.css create mode 100644 packages/react/src/utils/__tests__/character-counter.test.ts create mode 100644 packages/react/src/utils/character-counter.ts diff --git a/.changeset/four-fans-pump.md b/.changeset/four-fans-pump.md new file mode 100644 index 00000000000..5aa62707c55 --- /dev/null +++ b/.changeset/four-fans-pump.md @@ -0,0 +1,5 @@ +--- +'@primer/react': minor +--- + +Adds character counts to TextInput and TextArea components diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7848a14449ed1029fdf478ba176bc01a105bfce0 GIT binary patch literal 10935 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-dimmed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..94e13d7404d5747f8134085ba065ab7b02aa03c7 GIT binary patch literal 10897 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..12c44d4ad9fbdd04f2aa0075d16dc62572c6aa3c GIT binary patch literal 10953 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 E12SnnS^xk5 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..19ea68447e1cd36a44fbbfacc8d96f1005d9272f GIT binary patch literal 10918 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 s5YU2wjhj}xKUwh#__6tmecTATJpcdz literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c058e94359842941b103a46c9095997d0e14616e GIT binary patch literal 10860 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 Vb_(q~3S0r5KjZyV?WyZ`{~flu(3$`M literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-Exceeded-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4baa42c999390f4f6810842cbd019045b705b6 GIT binary patch literal 10863 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 Vb_(q~3S0r5KjZyV?WyZ`{~flu(3$`M literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe557946a92a51c2048a8ed69d768a88e395559 GIT binary patch literal 9778 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 XgA0%Ojl_?SKyGI|PuKn9;;;V$SErUV literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-dimmed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..75ed62db7ad7d4cd4ba9d6434bbfbde8fd05ee5c GIT binary patch literal 9650 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..37b3327b680ed781bed228b5b47e4052bf011213 GIT binary patch literal 9788 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 Wv!>vO^#ouK=&%R;Amyji*Zvb}NQE{4 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe557946a92a51c2048a8ed69d768a88e395559 GIT binary patch literal 9778 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 XgA0%Ojl_?SKyGI|PuKn9;;;V$SErUV literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-dark-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe557946a92a51c2048a8ed69d768a88e395559 GIT binary patch literal 9778 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 XgA0%Ojl_?SKyGI|PuKn9;;;V$SErUV literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9e16b19115de2e15d035920fba47fa172e7fc297 GIT binary patch literal 9656 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 DPPPAM literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..05e9304d7897ec04fb969fe392ecbbc780ef5807 GIT binary patch literal 9729 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 a23@>b%AQYizyoJMXHPkwtU7+>*8c&hUvI(y literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9e16b19115de2e15d035920fba47fa172e7fc297 GIT binary patch literal 9656 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 DPPPAM literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-and-Caption-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9e16b19115de2e15d035920fba47fa172e7fc297 GIT binary patch literal 9656 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 DPPPAM literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4be77a4a4a6ba2f650322a5da3dcb1290d009953 GIT binary patch literal 7808 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-dimmed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1ab59bf5cdd5f8c7da845bbecb14b82f49b87d GIT binary patch literal 7744 zcmeHMX;_n2+Kw_xtD>E;mePpS%TCcEWCRgpZN)aDsI(%c7DBWP1_TloAp}UG(t?VR zQdtB|B1NDqNn}faY_6aL2(pDO2?zusA%Tzuvd+tV^Zoz6>uUe;FKiGLnH3j$fGfd};7Mqp&qah4Yd^a1F^@vqLMK9Gx|e}T_j znw=aI&7Y2mv0nIF&WBB)AHF+j|CvS0_A6S~{yw z*@%C<+2OwZ;-{M%Z#r+T|I74OvB#dp{_WFCdz(M&-F!BXGrP;?_Q4Ml0#DwsXnZQ# zlJyHok|YJyFo_YTC$j`E4pf~3fv!n#xGzAUFaMIT0|eUp!WRVk=>r|Gx?|&3pfBJ1 zV+Vh0>kHiZ`6>2N78t^ltE{YfrUl-COgCgt9gr5wiMq8pZ6D^G9z=-^5x!O|JW6opH^ zB}i{)1TY8{$XKKO9c!y0?o+UzywiVNL%kARSWPu>l_m$FD{@ z!Kgk1Z=8UHJrX+bvB-d|ZL2biMz{~UXSv+L6gAh!l0xoTDj>M(JG#04S+HcK{lU@3 zVsWz29y5L@QdJ;;XC&C6(P#)W()iO

YOKVSu`{z56W`%}VZ0iupXK#8@4Ko7dpZ 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 KrRMvazy2Slgm#$# literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4be77a4a4a6ba2f650322a5da3dcb1290d009953 GIT binary patch literal 7808 zcmeHMX;@R|w%(SiwJNj~r4GQcUW*zbTFM{@sdeDgu{J_LNWfAA4TFdbAqi1wr3Qtz z7O;#WWegA*1BppM3{hre2q6=L5XeX%5XgA9eeSRGJm=j0xc@Fc_Mf%C=iA?U*Spqw z*SGI~d){mFhdVw50ATYs|2**>0GO%42l(JU(6aUf%?$uP0=_wM>{3FmOn~`4W9p7r z<^OHCx25jDle?d+34V$9I(g#cgZq7MdDnuy&gH&-ee0&1V24w1TIY86`_@J6PCMcU zKGvMrvN!T)^x*BX+r)n!yYiK@RpzL8@75zf2OWHZ?TYd&Xlp*YIEXFK2(b!Vkp>UV zny*mc&j3J+h%x^Oc!XnoGvKQaqAdVm_e&1|`0*nRX#D#B)))rAUi|Bx_?$raf;y(R z8ip~MSy(;_PIrC!J^<)p6J75<9Jcs}j(NQRzeJa3nN*TWZm)+)&osTYb0-)V>=(?| zZE8~7+gZX?zkxW03NRX^ySeq{v*&YNYh0&HQKqG~RA}?t#UnAqKT>QlKgdtst_ilq zsQWp>gh_@-pEx(xY7aU4_|UkE1wZhtr*lY$3v;n5^R=yMnax@fxytJ&B&}UsG7>9@ z#p{;rBU4}RhnJ>#hO6yl)&THZ_*9dv>y17F-$**fGpCN}7Zi`boGpv?3cS^Sl7(ZZ zSw}UgO4?4P=YM(aO$0?)t5aZetI)u0PxEX5W>Myf+=ZgYAV$Vns`$(h*_BSm}@bE zWZFZg+3B{h@a1PIpI=~%=^MN~en_z<#w?t~xi~p(h57jSq**&o3*trg?e>nGK!U;E zMWolgepHa8;L?{yX^%06Mb3pID{ohZh8#nCD$6SMFe_A($fy%Vv#srUu)`r8PKZDx z5@}dKldEPfshCC_iooxmjN9Q{=}(CaZhyd?5sG{A{NDp^TlybS1maYz*@03yUE>Ka zIiKeoak-z52#gIm3=0}-nTV5(r}UD`{V1xrkM~?&2klL0E|zgHix~(aZ>`hD9Xofr z-;()0u!3H`HG#NrR8kgg&@Q66B}mgK!m#AO#S8aGlEerX7Z3AL%Tsq#?$i12qMG(8Q zlV;CMrs+E=GiNclj)yM7X9^Uw_wnJI6alfdVu<8Cat01xSm!9tCm4U+u;ud$`M4#& zP&q}ERGMUv+Hx7q*91+4g*EkuZAI7(0C2Zn>!{f{jo@%Nni=lGjB3*Vs`(N1FT0Q5 ztGwJGnc5DGo#`tiFe8$di)@pk^@nu|x+XZ?v(d1`v#@0>WIr zvdJw<_}n%Z8@cEowKdN$tD*fc`?Ghy?CnwcW3v(3{C|3)L(bdl@V#F1}X&y_n zr3KpQYo>*lj~I#kXf_`6A`8}yN2Ae{8(@meaS=X4^e8X{%RDimY%Os6qX`=T`1)ro z0DQ1pu?G0Zk4@|UoiWE&BcN(#`s)y-#Ev-mXvUKaiByUpUv9qj+Fe=gi+T?TLhmC< zgp|QVGm4|3K5C$GDE`NX2ZU!JnNTU0bYTN<+kQYo z_?B1x^k#Rq_ui32A2MpF{3%$BTQaXLZdeB0a$2^k5BFxdS0HIi@3!lj#%(R><<`Yw zyw(8WTa8;Fe*>$(kLtgyJOTPS#NlLRx&K!X`T#Tv5g3R7aqX;kQ-DZwYv3n0H0Gz} zxmBSWD*ifjEFX%j{S&RR0i6M()2z;8{SOF6!Pd^x-RBHii+!!beT0^l_V#=6BIL!t zwv+dj$CPIX2};4lTRbOH01_%^N6v?P!;0tU<1+F{+9h5|f|Y&1A?CX{LEc5R-jCR% z5chD+iD8_uA=b+{|F};OVw|n_=S+ z(~Y+mC)Y>Ns|)Sj1-9ZE_PGH1^$;);olwIpN+lS$k+_wN%lBDeT*t-uJw8v1|QdW`NS#sjS(vgy&mvgPb;zYJ7t>};&!c~MPGp=*q3{tVP`t)IuX zj@R=k)8RD1(qcm_y!8D3T83+kh!(GOw=+myK02QdBM7T$X#sU5aopNsjW8w@86gQ^OQC+u`AvC49H(DwfXGHm3rbFq(hEZO4f*@EFO9Ns*qCd#*KZ9K5_y0>|m zuUVMKYq9X6F1jnw?>_v^~$~^ff9(=62@pIGGlD2_7@> zq!&Eb)I9%y--;e z8d`bmw&6kCoKeTxzY@}!#ZEHPFisN=C+6AHlu+IVbA*6)$Sm0^4#N%6Iq`J5CpxP4E#8#7Uj(x&y)DfjE3z_lD_TG zbAcuYGTjsVaxSm4ql37a5!d08xF}gvg^=9hua%KN$uT19>ksZ2*1igsjy6aqSgEPC z%1alUHJ-Z0h=I5w2!}J2l|?oTfgNXkxZ@K9S;%TKIh&<Kf)|jnJQpB`5H_Vq_^iWo{9=~Tv#$Yfj44thn zH~^eOgCpOSJ*U(&{gYjFy?!n+<7>rRFB-cBF5oq4N8&GrwwPYe1@$ATXlg~AF8~Wx z4}I(fb(ET7qnGEzOskd5?sc6G0lsxN#$OP$J@JqO2b896`ti6Cl`SLj&D)eDN@Viv z0E&+-Fr3#-Qz|Md6m(tn1f|G)yT??Gm$PqkZHyQ!mUvU{f`h9vmq%FaoHQ9BXdiN9 z`1Neb4%>j zo4}ddeE++<0DT6GRu3|BXWfb@vyE^ERPgymdYx{`9}6_AU9rz!4-MgXD3^=4YaHPGmmI_*cZ%&>+QT=t$-Twyc=$c3X literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-dark-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4be77a4a4a6ba2f650322a5da3dcb1290d009953 GIT binary patch literal 7808 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..24336fb51c7370b095bb2a88874d3c6618566df3 GIT binary patch literal 7701 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 DT3&7T literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-With-Character-Limit-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..24336fb51c7370b095bb2a88874d3c6618566df3 GIT binary patch literal 7701 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7942c3dda037c123afbd69c83e4a8ec5ab07034e GIT binary patch literal 19885 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c789e187374df6b2a2bed9a31fb0e5ec85d48dfe GIT binary patch literal 20084 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-tritanopia-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-dark-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c789e187374df6b2a2bed9a31fb0e5ec85d48dfe GIT binary patch literal 20084 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-colorblind-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..673628626b62eb7d50d9a6e45c10008ac03a6493 GIT binary patch literal 19863 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..67e40b6c01deea51bbfb36598848d57cdc2ad123 GIT binary patch literal 19738 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 RNkZbsz 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-tritanopia-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-Exceeded-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5d6c8f2daf5034227f5d9028a7368188f3a538 GIT binary patch literal 19837 zcmeIacT|(v+BeLM<1mWCjEo}E#)^o5igZY3bQBc<1?eS%0z!b$dy=sLVgVHesj*O$ z7K#u`APUk;q=ptk50H=mAqgSv-JJ5Cv!3-m-}l#9-#=$9T`MbsxwG$UU)QhgJK>sz z>F%8ec1lP{?7n>IPb&$DZR_B##82OYceejoXDA`@v&7{;|F{v6NheE=+puOnukvpY z`~NgL@#xAOpZ7(5-*nS&GoL-zc>nVuqcbSZu?zB-kH32Kqxps7%Wv!XXqw1aOr`V* z7P&$K1?yVhW5OK|?lHl+Vu`$oU}kr@TT|Q*5)vyEEi>?u5ARh=O8j-{VKjL8;6L>8 z&%Ce7m0`=H(?^qvuCu;weK@AF|1kHloR%i+W7KB1??}1Q_05$7gN2p)to0^ojchgR zJh+i_nn^V0Z$JHN>!P!wem}#g$jfyJ7Nw{G_dyY#3%S<$Uz?t{Ad?hIJL z?F4Iufx6juQhOvMKD(Ammei>5o06uOYaX5ck)+*ve`rT;MXCC z(7%J_8n~); zxyIBm)GB4c$7EMM4#c3kg#|W+n`lVDY&azxznbEOL7h2z^e8fIHr8;iQyBdxq3gPW z<&P~%m}j6oIQL8fx`k{~Shb)-S_Qr4ASM!qgKj`{baV`!8wAgTwJIgi@2ZsTe9x{4 zn%^bMn(yw^7ne3k??zi@>Z?TtkLR7{zsS9E1gus4O}QBqducGqWObk=K?feUONk@o zzOT659yA`<>gk;4_^KoK$}7b)^f3kh+R8hLE>}C=%OKP!=EW!%6yr=lw4h^ z8Y{NuX9ca@3y%hM8a8OrDtxpfIq0Rqq3`J42A#?^?&DxzZ2jJM8{nJW*0BE#{Db#) zDR9Y9aFK=1F5CEzUcP(@e#rl4F6a?E0%as5p8vnROvn<&j*_{P=gC?PMZy$T##tz9 z&JJct|4RwBh8bM{v@hBl3Z+5c_&jxV>R|>kg?6q;muU=VkaWM(rYL8kxpxKC- z!BlBY$0OfKe1>ss$HS`&kaZQKaS2~2F|1Jq1UF*3cUI7sDd|Dn-ZO;#Dp~jtJc| zU})iTMQQu>?lQ-S0eKr%e`PSSzG}uinA$z&dso}B zYFV@(yQrsvnqA#jOq7-lp6{xkE`S%@z{=aARy~%J;S4cPE_6vRiua22DAjl^*Ur_b zAZE^^GeuRUI*OfsX734^@s>!lmA+2wpx?J6C;P#zW8z8b1{EWV8kp#*<`lnC9p50w z8Bebm?b~;PP!tsAtZ!7*a8znElPPqgSRXh$(Q&}qY9fY~weq#ot^n0voMr2Gpp+Ql z&|`~x&G-^u3*~&ZCK~f&*4DBs;iRyJd|E;!ExxkSC%WgE8zn9cf#-2fS6VpMhB&zQ zdz`XKG7youQ2mNQhx75fq2hO)XI#ayefah3dxwffB7T0MW$x%WI>u~(mADVCPz$6< zTCU|sx}0l*JcfPWdwRVrwx6R1Ybk1T;x)KOT=ds49I>$h@=J57&Ygji1}1LPIaa1A zGFl#+9tIK;M}*r*c8f4F`jvmwp9=Km z7Y5CB=+HB?Fj0c%N6k{kqxe|~=3i>>Oubt~3r?fx;a-_TC+$iyRoKg^F_U&MnT`~l zvDLBt(V~rHB7?~Zh%YSJZxUpmKjz=Cm@n@SG8owWiPL8yqC$vYJjdhrS>2p@Kysn+&1HDOGVZoY?olEKZ$S5 z@3Ma1nz%ezX!)A=2U7;RK&F;4$S6gV@~Fy!sUo$^8@^SlixwYjg4Y+y+zu%wugV@P zal%3H_on8#?=O-*xN5*19lw|OOH9Kg@Xu|RavhuM`1Y_nLr2Z3dd1Q@?>0Vs0?!+% z@Y1^W=J!i2(T0>X)Ma9dD6GAXQN4VZ&lu6ND>>;<{>dk@rH$D@@xA-(6;!0p;4W%6 zt`A_)Y5LwlP1dv|W$iG*MuH1t=~rc&#f3+9uo2X^$%CD#2*n(X9$IukE;IG8X=0{9 zur7SGIvkVqg2pQnQ_TeQJspKMoZ+WEtDKFqZ`#aKwYVVlH$+R@&1&Uc;gGQztoVr%K4R zr%N`4H%iWWEDfBhh-Bqq8`jUQMP*lvRqZ5(kA8yTD&ubX+)&Z>yfq$Qt`#`!HrMfL zhl7egiYxqZE9ql4n4VJNE<3k<-75xd06>+v)*qXxSHjZ1&C^-uyi{Du&UMcu?r^Iu zW($^I%(R#Z?KC-g7;)VTIKg$>hT`R2_$;Keu8T{Z@jVO%S5c!cvV$m`tyk&obtmqyYD~V zmv;Kr#UR6Q2AXL#n)h~L5I)qEW~5bg3a{}j6CDz}Q})=^@t`aKQ}kz_-B0dsmNwYP za;OLocI^PR@asbtSfr@p)F*>A4WbtHEUDfUVVt@3Yj@un^e?xt~dD_aj zwxwU_Q3Y%lZ@Tl;FFz6#vK*mTb3DwA7T#=YI)6rVIZ@B6XPsb5|8O|zIIM)O3c8qQ zTPavZn}QpGPW+mn!GiAj+n31``4-j{0_J7AC0z(6J!Pu)rA89f!tXRK&wSTL5v+we zRxp>=9!eHOWsh0xRFXdjEep)7TPSj<=!YWfVt8vK8F9fR#deun z5YtWgpSMXZuk8cSSw*@x=W=pC^=jHC3jnmnuhpxv6H)wnE+vxHoa(xxKY^_6(LprN zID5iAV21QswBG-c-~z$RvB=@?8~CUj5BZ0$sEGPss-2IMF0`RlFJlzHmk=;HYn?{OX+##zfr)CvFO6kf_wfyk;dPd0@gS(plzEw~f!+SIvPPqMRc{OOh zSq!=}KSx$ZfAX)dd3rybc&SCIF(Vx{OD%Dz$fIqOA&)Nh6f@4hkK26_>^Txl#=kEj zI*^icy(!@PXM&EbfJ3Xo554(1h^pe)q!Rnn#_u62oZbERe?-e#C|A|mgBE~^cAJU6 zL+!?hI|>m4Cb^s*|I@Gu{L~M}@PuCs8~id-EREUgSb}KZJa_YrC9R5D1SaH6z6%0B zmo9CW0>KXq+PVCamz=LSb^9h`JhENpV2+vV18pxxX7{|;jW@rG);kv{%t0d^ozO4$ zw###m7_UC*RIz@)S;yp_i1~K6CTOnfrJ8k3xrZ+5uH|mI@of^mWQZKsq5O6vXHgZp z#BFzrPyHC_p5;c7rVLT_#bNEBZ90c{58AkTk6;Nk36zLi;`L0*$O)QDN3BhbZ z3)=H5JcvV4{cHnjm65vd*{&V^a+za{21(`G&Cx`8(!Q``_{%|8ge_B3V^KcKT7*yB zc$HZ5@fdi%nO4mQ@0p9sJ$1)3l|06i!D>cdWnWH48`iqV&UWvd>r6Uea%>lMYpbQd zoE?-i@()Saxi>%Y@=B_#D@XCwPB>$c^COm z43qfG*ziJq1){_7jOcvo9G=}1&9?9>&)RN_bqyBo#wmhzrXd>0a}#_lezSJ@C~g)|Zf=zd_EW^8sSO^HEsrk1>6DHjgVtt7^-IxnmC1 zo#gO=;)+!`*{;Zbb>4}2WSZS?X${8Ju~mw168_@9_`z+{eI-^kR!OQV<`#s_%?u|L zYmq_k`;2Yq*`VE&kl?>W9%ZCzIHhPfReir*R}|(A=z+ABjgOI3s+OHD?|u;_>41<^ z$5fqWyHS!P(b{MK{t;kL801~7R1!=EP2eNXQQ{M93hgL^ya~Vq>0exycyv~Op1B$L zCdnN4@udAcmwy4-Og#i@Q^0Ic8JsT)2J9(nO>MV7VTSR|6=17!zdDv(iL(RXQu11z zHTkq{dJ{p>tqKV5;q~%l+7wg=p?gKiO_>FQ-yUIiIlC_2JW=H2Km$Hu2sskn5 zHFd0Cq=X8%v9~~f>Z%~-!*1`%_SBcoO+2X*hM3N2A9IMjNE<4yqc%t;9*+)*a8)X) zJ4nABgqjBMH(HTES`^&?*|Hg|pzNVhsL0s<_VNyR{P*YfAhp%ckkcsI0d_4Zwa_f4otIhweO>yYoRrv*JBxL z;cE`afmw>?ZrS!%H=v9MEUjAKHA`r0JgFplDN@eW5Fu(od$xB5*%mwQb)614+gNqR zHMMe1b9p21AH+pQfh_X4B_SbxS-+QCXouaA=Je4$_K$5)#8_>!lsHPw0L`Hr$hkya z=s)(fLFM%9yn+#Eh!==dQRv!b)dtR*l-n$7^yLme$I45v%Z@%i1Qg~$ET4m7^1QN_ zHb0+Vyr7U75YuhsPsr`--P`p3ii&FiSeC>CCiC^-u1u~Q7RX(wNWOGuiiRa@-}xwMQ)OwX-R7 z^cZ;fR?a10q8k@>;7o|U{bV1<4gf~@upSJ;-Z*TQaII_YDzGOfy1M+!|i3g&!EeMz>#(d$M2mxPfY>xAEr6eOSzp*80MXC1<#&Lwl#f z66-nz^ly3T8O&qRu92)v@$$+qH8T1)XG_26Q38a?CQ%lz_0_s!=n2XMp@?ru( z(f}kNM{-TvJcmAgS_zNPXxO073~3Mryi{*JFlgUN5&41ZZBG8RQ=>G5BGhf#R`1gY z{On36R+&Cj&&tBdC<*4k7iNZdQJ(|&z8Y&`CZ&2wW}K88jpNIX?G;^qK!}&-S8<~e z>}8hd_32yK8b%8>3c~g#KmaM6`tvxl9Uz;y?Ere5rc@dgc2|i;=mUWf)NVW0Y`d_r z!bBOp{ubyf4PJ<5VH=Ym6B&N1m3D5|Al6QAz$*yFgs8mI2)@y|&nqV{FWZVbTUG3Y z;ti6<9EiV|zAT9xFLQf$MWm*;ihwyI61 zKi+QNV`^9Q4DwZUosa~C!B9!kH}*si7SCxhVzQ&e_aWirK&RJ$8>;}FGF(`x)K~!@ z`V@Gn4M>F^etcg> zb2O*-BUE@cR5FSB`7SJL0`CAgNYgfE1B=t2q31$CAz#Bj-24KBSNZI7EKl=CziJ8q z;BxbfxF<6nPDIrN#d`G?%*o3qO{sG}5m5(cZ>Cq||{5rEQ5&wm_^=JMG?mbpwDw zT~Sbq+pGSP&!fWj7$Llpwn==3z!Av3^O+;TJC*E@d-b4UN0biHGY%?Xl`xx~S}>W- zyomP0{i(YQDzn%RX0KqRXIhA1N4o^QAr9;Eb~P&;?QbeCguKzCZSdiy8dug}Tcv-rX7gUgsC{ zEQE8c@3!@8A$RQjwM|U&S9v+?Rue3a#x|;T12zL#P^N*I{&_PxKFdTJjJu-x4HK@D zFtX_91-B3U=kdyy=+_No?6s{MtyFCD~|cSDQ>rwp37v}eYiaV z<)VMxp)QO}K===r&Q+LortfQ+jF&!8-Q3{EQe)D!9_Hrc&^J1?>4Lao|2v(PvEeeK zuu${kY)d|;=lNmNpH>s~$S+Wc{UVN z6o$sBWBWWh){~G`(f_=)du_g)+wRqq`AVSZb1JYuwCj)FLl=&DRQsbC<29hMo71ZV zJXZWqoz?Sd*64|oXPXux_7}@|Q0j=LPxYQwGA9qTJjJXGjWO%RJsDaJ>sMY&2RH8c zy~T@!qo~4=CL5FQE_ijPX9;FK0QO%Ssi68&)j-`I$8UR8KQ-mgG|V>IC3pL^G#$$3qi!;YZD;^lyDQY zLzkdt8w7qe%-wFTJ0twdy;wM@#HAtT!kDfGCSqyvwln8njG$sJKdM5>Iu-4<9@ji>rLQPP#KvK3D9R$wOf$?i1wq?8^pvPJh4C69p)wj5JG3 z)ha6+pgxc-e!|jb^x3LZXU+U<@jd8)xRIUTNpOCNR%i70S*f7cr`(!MUus&frezZ` z(LEzHy{Gr&j$fM`l*0hFlIo#uTTCi#f7|>R79cW6a0!j+o&no>;bFO{W#-w%f6<0g z&^=($GsO%UG6q;p-6=AMxiq~Z#J4vSDR%BZIJq>#p3QvL~uuLsWhOneG# z3ScFuVi>Dk6;9-9Eu`a$;tYR$LuWlV)%e}`D}dGL(~lEN><^Zaeg#eZNdv};5E!AO z-9xN4OUN>o{x`0)L*g%_Wk-)I$E5bp*hki_M?^-ktE1N@5DlWBwD*ZuKQ~Ybn}FP` zB#qgj-g2NfH=jUDmLqO;r?;K}2G6^7@lgiQ4m`SLeXuZsh+&@EAtCX53}@QTjbUv8 zS^Vm4eGHgUzqyKGTPDyu9Md(0^$!DL15pa(ZyKU{?!($E7&@3l7}73V&L95=NBQ$) z1K>O#pJtFgL{57NC2tg8hZ~vsJ5Roz!DWhp@H%KzdD&g>q$|D}+-7amB1Gc%A4Dq1 zH(^N;Y_=XwK+gR)GU5p*)YrmkT?<83#U;LIZ+FQe`?Be7+{9%%e#^zUv!a(EewYeF z7GHVQ(exwQAvY*j*%FdIEQJDE?;Y-}%p;*H=77X!sM$F4!T%)=x-zRk$OnIlf4}>E zLKdz#)bj@3zO2dY)fM_*Ow*?*KA9_P#B6F%kr8>`nT8%xENPTfdOf^x%L*_MRZh8h z)_R-7hSzd&H5S+omV9(}X2axkC%Dfknc1fTtv(*^jDMH)FIZnX3&of z{IC;%QCMA=A2qr*+rAFPyE5ohY2wvZiolI`Jk}yaMLpJayIavy^P8|XT_YR;{6Dv> zw~d`QJ_vv{lMfX#?Uf{FQQUK z?}!)(LPQ(=r8wX60u6ImCN)NTPl~o(VuMTy#oBHt#XUFpoyPdo7H0bi#@)V z7>))u7Uo*v{6g=ormwZ3v=+oK&8C=m8rm?ggrisiDc{W!FeIPJRG7(daWvHkp<=kv2?o%_ zVo%Ru0w03k7SMZvN(tg;Dd_qx0BlrdfOQYv~_uB0z&q*wQDb z&J$4FZae74WE1c<57&qv@6${dwW`dtqU@$i&*N&>N{4S*u5T=JDbOY1#L7WfeCkY3 z9dm@PgA`}!C4RiVoTpHtpu5regoP6`-PlVyZ;RD!icZ~`r20AGB7i${H0)|ie%0Xi z#|52;adg&0{XwM9sjy8Xji3jHll59u2avc{Y9=> z-8lK<${&)0A6zRz>cBeBVz+jN9%6IJOzVM_OurY-PbZp_>D`agu&e4i7_T^v{w(L_ z+15{lstlL@A^chBcHAW7_CNdztLX0Z!S)}`^}HD4Y?>a>`ati{p|?ML3rjUvYEv4o zFOK30T|u5A66jkWKYrXYO)Q}27^=(y`?7QPPWrotdz!ZHZ|pBL`bY(s#lL0l9q;G$ zC|mk6@3Bw4i(wdSSrUyR{<2(0<$Pdk+#wkj7C&7+*O_8MX4RC)gh)xMT4s;StL$}O zFV=IdS)YD<#;ZqB_XgHKi)or9;to-XgoS&opxL%xvKy;xQ6wdtNdU!!Ki9EW+NChX z%Qx&3ZVn-{0hpUOxEG@rHeQWm(+2%UbFRDV<>nj_*B1A?xFML;%PC;%hJ|V2xqYHX zW=(%ciBah~-o`Os+rC;fT$PZB{x-3BqH8A6C~w9b7l&6qy;k@0$L%|3Wn?QYA**8u z(@b&|8z|ja=bG|?=X2VS+e37N_S=@J>UKQ>-r7+hK6W3tSSg#K`7Gj}Hih}&=>+rC z;&_6Bp6|~sc&E(3(GS;e?bCF;0jP*uEJ(um_ioak(10ok=t}DitSxmm*#gm<=h=PB zEJeS_jLi5p@R1M$xp^}Jb_i(^vA2;j<(C`{s;9uO?%HfVX2`cwQd)j<8H_d| z`wgP8S4yv`Ej$R-wh7240zLOXoTGV9FX^#~L4v_#uqRP11+UB{qp4;UjtT24;M`4wb*Qv zb7rxDjCE$B?=>vLTVoWwd*}&;gbly4|7>@9%7J+q;H)GxNt5S~Sy?GZ=Qthj4XFD0 z5oggWo5uQLNzEnIT{(4jVE+yTN;T3fw z=kO?&r(PI7%tPns@BRa zDg&5uPIx;h8#fWt6c%=Cd}DQNwEl@CV&=GJz)oCI@9&}#_cYTA2g zNcF;-FXw-ZS@n2tO^Y`Gs9h$(z`Ji&jHC}>^x$7l9pblkrA^(P+Lhy#q}up3UWGlD zMOJsEKLbu|%HItjrJw+JnH_LxQ><;nR#*VKyh8B`J0C1yYL4BlyjQw+t1|&dh45nqdSvz0mJlVnw|y!rEnrx$*vH4cRj~Y> zmi>pxuC$62O_vnBLEv=G*X(b+5{rLYtLU_`k*CY_iN@H+FPMlQ6vPMjYP=Y3Pu(GL zQ)V@^|Q#D=P`-dLPsFIyo+$Ia@$b%!|37%zgLGnb72sRUqA;qsY|%06 z=jpeD(#9*F{gz$VzJCHZr7v}p|EyVMop*}2U9HLVi2yaQ(4Ve1*3&=oJoH$xOI?-C zSeOa$jD(wPx2VRi?H3;XI^mm!k7Q}um!29|*x6w7Si5OeUeNvQ6dH)I=9Y+GF1~46 zM{=QHbmRh4I1oWKQi-XKjxajf)s?D;ct|?6u6*oVO&sowZLzEHYqBNC14fAi+npF) zwszTime~ParhZYOn@GXp!fEJ9Si_07 zrQ{(?v`;%$*nS*<%h?SLy-<3@Ofg!-qgI98GOCjk@l5!F#|h^7dQAKn4NNg+TjviF zrK$AhYMHmPKZXON>|kWYIo{g)i%C10cLD^)X{alXw32ahsqXR4H({rH_) z%fcyB5UPu06=!MI&%Vohs!(afd^anpM;k2G-tu^v1B8+XHKI}Jx9&s;v$0eFN8ksA zZ~4Hy&kpn}cB;H{jlj5ENlS$kG}yC;NTKOgmG`bjp$w zacm|-+vy702S^KJOW!Z|_yo5dys(wz0RymVp4y&llu3LE6!?u~nsQ9Qb5@TZ?(h~i zaeYxCA@jKd(AcI6$TcYg|XVUzuYx=XYWb52kr<=F(lB;8s?<6Ln z-Z1$ZXrW&r0KBTAjJdYwGf(YcS42;Kk&qBjm(>GdfG~YU*MM80X#F0fOC&@GqgTr_ z8-$Q8|K!9VJgkN*no!}Gc96G1F0#}N7AYBN`G<-X5SS+E`X@kBuI5d z6}u((`($6E<~bP^J64|Pf`Ler{Tr*wTTYnJo^NhVP4#YB8Gfs&-u+t!j;s$!>aok% zYF-U%J~j=AQX0Vd0(aH#+Xn}GR-~Ns8lTyp+({5D(JCzrkDiQS`Gp?|zok7kdS^J- zh}n=oln~lsS1?gU<^kI&t1ZBxC#-4%gz}Q0HU6)8Eg6U{hiS}^{0dlnCbxm|{O-bI z!-)|1V8^RX^ja@amKmb9nKUb_Mu9_xCni{QK_|&5Y++K160w~7Y)z{{;L{?RmzO7k zAY0x+<+j9cpt&n)d(xelc)58fJA??t5@X@)Etv^4C0I*9OG?w$_P8?Q`##B}cLqm6 zi$8Fqo8n{Y1E$`6qqupF=D`Y=xvO6F6G&D?60|E>kGPFo8*czI0!u)B=cK|6OU13R zGKMR_ML_UQR#oIZ)eL+LEEE1PVgy>LpD zU&jDOa+lzY^)ZSq5Zjdj3=SGtIPDg}2fEB`douq?f4WVPJ;Z#%qEBLjBO50eNTWyRlN5?PF88WmN;8CN7K;^d1Q5 zW81jo3K-CE%Wr!Rt~~+n0S2{|{_zAP_iG5-$41p6J9Bu0^$r8#ZpN(jZPNO`{SXci zjbBY;v4023q=i_iDymD{(eR)=Mh6=GOQi!Ogwp2^6@IXOLy!Mn5RybSr15d-VX& zteOwBEmDz#?6LWtG$;H90o$qNFkKqZQ#yCC^=Za89HkYu`#>gs*Rh#1i~SD$eM3bP z)r~;Y{MBf7a((+1e+>q%wl|VB4}4Gj`c$r{zOl$b#&F@yqPFJ^!`gE#TbB!}SjiC| z5#*^aJPvDc2AheKSs&qW$tOi@5`4+r%-rHOKIW*}Cxp9cPR?y-w@XXi3>n0)p9o9o z0k$jNl!^Yls}YQ}{5@!|rZ|F=J6yp9gj`ajKmi^Tg?S{rJo(WfZ0R6K+spuXC)b8S z0Bj7}kNHHVA)7k;XPJ9*o;hC!S+>~kr5Mz9(5R|WpzYOdVWH*t>COn#4^x|r0t$Q;FhHyvL$!9<~gT<5EmdvvByB0pau>&{=$I2EP zUvs07-^!a8jmjHA{jBphk^x-ViUxu0Nz967bq1}?w)3pvRj@HrEtee~W!k`<&yls%FElTV%GWjcG;lrP zQ-#^DhE@RIDZOS5Cc75W%xM-BEQYvX&Y= zHS0DZ;MGGmN*xCa638n{G{n$HQowxIQ&JIOZBzjS;f>cG9^Ml@l1*ON*ddz)4C^&1 zL(`|q+9AU@odV|2>F*@|dcqm9a|2ZjS+(c#Rbn<4vx%T2KcL9gn)+B5cfHKPyg?A8 z(W>4kf7VtLOhwJUmFy#U1v5t~6ik-d4l@97;e#OPO!X>=N7PPj!cW*48h!`ZWE*;+ zT=AyqhIqRKJrP_wh;0kv6aJIuE&fyIIR3N$@9irR{J+dJYe4?HH2TSS6IAP^P@8C+ z3^FSw)5;>Z4rPg9>#)u8%#*yek~ENtr|*#OM0JlxI;>H*LKy{FiF|Mr!1XlB>ic0o z`A*1H?0&t|(P@Xlp^iGA{22%{ty_-GKlvR!ySoE&Rg2E|ZqUy7M;afQ9mhW7LDa1n zyS3w{ou30oTRGy08Dm?Jp8nCT_`Q{`@9?wX$bM!mLfBzbLmO;&oqss+Jx}(trh|6) z#G^o2IgSwg!uSRMddS}n6`W?=j}<~(R{WXYj>3@*`@(Ee1iVK1An=(A6_OHRl#*5x z(4j0>P5$>ZKZx-EQm9cZ@Lu{l`cyT$FJzF|zjZ_fdRr!D@BD0>S5c<%(W|$O@Uv4$ zia9tSB7Q(tsu5RE^4rU08oy#x&?(?e(T+MfE^VkgW~KLuwkKre(rX?r$;mKeW7ul1 zoq1Y%;CvCoG7*dFqd>wY9%F?=Q!QU7N>Rc_E+0tqlZ1Z%X5qbXsJ)3W=}B;7_jV?G zLiAp@$kn92-y|(q8+Udu_CvWm`Lp&!E%em1%JZ9=P$~6eKZoWn$=JiuL5!}GX|C>84x}- zOfEjn+6ja6oG%IpUVMf?8;Hx>pY~)1dDb0;N$(7{6`b-9N=|`dg4<{Fiox|E>bce| z-DHLA)lOb2R>a0>knpI*a!N^^2X8pAUz4Ca&ZBz49?YSAh75}W<{n&j>lycg36?jV zT1oo6q-bSllVuVN+Yq?qAZP9!*pos%VkRk*HC}xoVq-v;irtJH-OM#>RlXicz8Bjb z?KM6a>Pd>%Q;t`SiW8>AEG_nH)*U-3J1+=w+3$)}lvCoBmw6SF&0cZ*BbRqJCMcCUGjGy#1c|fpzdNrG&&O0xUVNTog`e_8=Q?oIdOXySDo!|7KRJMnwBpxYmXjf zqX{tR%W!+qn+)vO(i)n>U;nFCRTU_PVG-?T4mWgMFN=AdR^j-{H}}eegm2Su-K?7r ze2A2i(AUGv>H~#d0{)e^yJG^9N)qq%QL}maT*pbC&o#!y-Q~ZY{8{?KFe{gmcokyo z)g0s$$p>gG?6aom;o!KJxROC^UevR*;2F%+PnFaV>-YcIs24pTAW<%>2VENpkFqwm#{#r3PYdWRxd9`)sX9Dza= zO4l>o7JH39ep!q+4iZlj2|wLmScLz?Rc0@L{W850>|Z$G97;ti$X0< zOuUbFSFq~qJNGRfT9_vgup(2J(eA~*rb^H8>So#FovotRnG>ZxgPVKRt)=$;be?Ze zs8}DefO|~XC>U}q1UIg3HR!=`g+ zDf|l03BlEoaz?l_yL31+KPoP8^Xq7(yqvuW+@i|r=(!QBQ}rDY9N}kQ0pfo>FLjnF z;aT=@p3ID`usqO7z131MlP#$?Hmya4Dfd|I$BHhuN0ivgnRa+i#Nxd zdSpgwM>3!FZtsB_vEOWytvkq+?@mENJ?YnNwCCDT-*%H`3$E)#dYfMyNzyk4Ls(VE zIGEfRdx25y-L6Lw1@S5+UB)2DyT(tK;8plCv@=kTup{Akt;ukWzhwx#d zdp5Xm-s-|kN8)ClJ-37qT74SNdIk>Z-F@6M=KENZ9J0(*LP$9frdtE23_P`9y26r^ zu{-zG6whd-y2$qE4QXz&N~zhGdWbHBo+lPAJ6+e9mV21t=elhO=9r-Qk#?z|M_~;n z0IJogdNl2WU8_L$BWU=^Vs2Q#R7^4Pco5fb>+B+PZ1FiC)E)h6qc!^S*0BA>2-%Gk zRcUbg8o^Lz3@>&Dfnq@RYodr-qaFLp|32COpHJ^4TusOV(dSKFIad>esByOYOVh^zdG{(D_Zj5?px}zJY)~>Vd_H{b!_B*$TKekI9ABz)l*`PIp~oz;4ZSAtvhX4O z;y~e(!rh0tWJAj4d^9rUq)V6=$+QH&kr@-oI>Ouu7m?u1T^l}^?g}E4pjDgRPie7f z$W695YT;p5+L^ru3!lw;5Xm|k%K~-(JE2iC#2=-vn3)#`h45zGw@L0s@}6?Fy?UIB zgJP?^bh8Yi88arZT}UXLGmeX93xijub>O5SgR=S6R@<>9$QISW;6S;msVRtEtMBw8 z$rwX1eP6Dba!MvNn3JhYtdDZ5OW}qsMf~}350S8G>uzn8w1MjCCb@=Dl=MzI)UMxe zz{IA#Ed@$RP4O+hkw3mRoIvy{f6!XD%w>1T2~XvHE>E5 zgXZ-Qz#137PP$RZ$W9#>CO(jzK6tQ0uLNo~50%qe9O9+GvDK602_Z1q%K~~a%$RRj zJ`xuXt(fmxh6V&|8bUYMAMc4*4&v{&BgZW7r92h6HFwxJk-Y#G<}QbfBZf;?nWh-j z>0P1mZ&%lOw@|OI)eeB%w~_wU_`AH11VI(xN8pSLG|w^DxJKruTvq~ThwL%S%f5yt zKQ&R^4n5$zHA_oBZMdJItm}Sb@X8!Gd=YY~x6wqU9(yCf z3tH$nX%@<*^KD4MP*!LDQ4GG)wE>6jwOv8nIs{>qbZXv?<`}nxAx1{*feWbj&MJ z@o}oAxrJC)nB;5_Ovk}`PMyMJRshoPhb+-EK7}mXE+wZSq$&P($=rPRA1b1**9QEC zcudiaw_Q~nc_6j~*0KEz%q>lFuYD0Dabwi3+MPrX48TyJrY&A)bH>(FCnB`2DmoSS zO};&BSK_!gkDzEwryXocmbr@Ro)c`BLW6L}6xyW{bKNK9q%YB87(7Sd`>p2%07D!^ z`j9PYa~+DO*Z5^_^V3Jon8=0pw2Ju~h0arjh=$!>KY`S?IOH>FZ-;Wtpm3K=<{InM z1+=F0V-sN`yy@bTD}+KgR~h;Q^XsvlD)y%yh(Kzgs*(u0S<)C;rL1c5bGXSRZEsdJ#O zN8f+`Uv~Zj{m;Rr9O2~iL_rL4=AA1DNe~atC#r5Cf`VT+n>A#!o xznkp;mrW)Bo|=SMOjHgV0xy2tVnf>`jNl=<*AL6z2Jc8*zF_fZ$+?^N{txlFY1 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-colorblind-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a8433e0bbc8b1845300a37e900700d895aa7535c GIT binary patch literal 8645 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 ar~w&2PHbMxfyu!$fW58rdBWLizyB8lc)E=M literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..99036a706eea27ff057e2573663df9ffa0f1a22b GIT binary patch literal 8689 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 U(J&VToB>_8bG(NC+fNVw1GJppvj6}9 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..050d43f7d6b2f334b6db6ae03bffade88be7430c GIT binary patch literal 8622 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 fDKEH+sqOUhCV81@kMB&aP|B4CMt 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 U(J&VToB>_8bG(NC+fNVw1GJppvj6}9 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-tritanopia-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-and-Caption-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..86f345890f0cc0a435e329828e0171091b8c69a0 GIT binary patch literal 8544 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 U(J&VToB>_8bG(NC+fNVw1GJppvj6}9 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-colorblind-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d48542f2803c601fee46ee9e2af680892e566678 GIT binary patch literal 7248 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5bad01f4d7a00e3d5bce6cff48190f5db04b2ea2 GIT binary patch literal 7280 zcmeHMX;)KOx;~0Zmx%NgF)CuZ+SN{oU?GJVAXcMNia=3_h!6oS#s~o!0)!-%TA)Ov zZDbZAqM$&C3=%>hVK5>flMn)g5FrwfApsIH5BJ#j57dXM)ob0whx28hbN1Tr-p~6y z&-?ECKe;&@Zr;5a006^tKc4;>0Q4l_1N>z@II{6H?IZyF6*zbLhl>eM7P#N!X2lhE zEL&T(zrNRYYI8}@mUxSQeb^3(aynCQm2(_D^dl{w`XbvWJ3s8Gx5w!Z=|?`;Sj3RF z{Nz`=fpGrR#$C~RCTDU3spJbig$9?8of;$e%}m<$>C}A~ZOEpg#3GT3DBIK3-Nktf z0Jre?>3;yg-)=YP1GoMAju;uE6ZhWhM}H%unho~ z$Zxt}GDKtSt3tcx|ZfV7QjYf9Pny)QHPlQn-%Tn?X%0+dzN?1-J zaYOm8ht17-iAZ4uncj$FXKXiO4aJ(;+q|!L&}ThCG=o} zf~KGTs^_Tayb5oU&S~{hk02WBmUAbXDMuplx}oPOG-D|4d4opYVQaAt0FXae^XYWD z_AR++%<8DQIZY-cLR1ocXl%e2Q`S)UeMHhX0C3qLf0xX}!~}wfy4oJlVOB30FTZH3&EiMG0=aDiB}c#hkRo`C^^l^Pw91Ssh7{%U7@XFpF*d9{VC1!B zT?AX0=8=;P0QnVX!b}z$JQ>fX2{o3gf^GeN>2T-k@B9!R9s_8VnF|2)yy=SOfvdZ3 z;=T^(VL!=ei*?;vX^5)yvF(8jMc zQ3S5Zv#tM^Y`xe?io5-AS)Y`%$_-qeVj4{3F#=j|Z+m^X>q=dd7=q5pMuhNc**g}; zye+Oa&6b-xgZy;K$;T(L;OANi7gxsB-!cd0XnA@0`BSwY@~lI~hC+nRGj13u&@zX_ z{fE5{I?nuV1+_R|QB_&VeB^&p0FkL1ol+mBXQ~$QpK|9>P0IofIj+$~~YOm^|Mom%F>m^3`=XEjPb9mr-e?HGq7sjL@j z6%_??x;Cumz6w+Sd&CzEG6hWxL<; zL?GE=ljc)bw>wP3nVvRzA?xgSkow^@MtoQ0K`|i5MZ1Z5x?#2zr9fo=~Ohdi1!Baj@0TL=)@G0}iVKQ&e&| z!5zLVFG+VFl^8p?!4@BEHG?@SI31{+7>&PHU3RSoEh0JlC7l7?0f{n^AWjzv!;KUl zLI{QnX=!O}K~uaUC}*fQDUhKtnj0nsi+kWUfo%=Y2YXk4n{>v86D)k|4q^m(48P<7 z1z`uvlCl!q>^M4~S%4O*i=hZS_igI_J<0DUu@qjhe6@XH^vw(r-K$ohh^t(2I5Na= z?{|{%nBH=71yniez#$K6NeWbkW;qw`sEOr6#wBsi>3gcDPKFd=g+n1lqgC#_Yb%`x zpqANV<+5P|$S?xC`tn*~6^oU+C+RdLlACkH#~uVPO4&JbZASap)7?@@m%r#ZYl>?? zuBKRAsq=dspk;Zd7db|RSI58u$MyOgWDCm&p4ca@cseBAs0T4ioQM}Y89hX?%2{7{ zCu@;x!p?sX_rW`v1DWZrRokAG$slZetRPMOE#0Dd>lRr1k00nZXt7~|k z#151{^52~}%G6OXvv+9wVI9FN2tZ2zQ6+yT%#1o35@h z9BrX-s*A$CIcRRlNLIXeNvnY#PY5N_IYivpp^m*`W*mo%ZuvF!h;Nh!yNczcFSBf< zCQy&D5mUK8LP1uF(IIyYkB>rV*7vX!}wQhr6_{?+ThoDaow*26<8(L2G zzt}u^HUlmVtsc_IxY+*I_O#9^$i9dx6wSv+sfegnJ7$>Ipnow4b>fYlrsDc%UWr)E zRLXMOMuWpSugGMS{nL?_ND$n7Zln#D9meSOWZ-LdX3(c<-YJOOXy0hq{BL=p4@BOp zn6fdSTItyJpW2<6tu!gL->Qm)4V-AQCA8jM=BL38Gd;^3Yg;!Vc*yBZ%u7o7vQd+C ztU^Q|?u+Eakg>Z3I`zyU!#mf|YHKH%x^rZnV4O=hdIC)?v!x3$B(aL;;PXUpyGl4c zJ#FN8f}WdaCst&{&tKYd_G(ge`!UN8PduL7xajR|Tcp@t>W&e-7_B9=*7mt^e#vw# zpwHgkD6-d%>@(yAER#&`6cw!ITTR+Bsc*Y2n91mGoI%B=MD#BU12v+p*jZ0$Und(f$1>EO-raXlhwmX9;6BI0RD5#y@m+G}-SKC7S zFRx5;xM4GhuX-g)R+%z);B@QmC`I2#QT4Vu#$FBzswhc;N~IiBp`1n5v}etH$ctea zo#n=NyS|Y9^o#Q4qkU(y&VowQ!FQ9-m1NjA#eO+|G)a*${;Wy z+t0SXZuf-G3C4*#;XBEc$W-u9jto9Q3cZix)Tm8cc8?c3b!1!k3TYy(VNRvJY(dfo zjS5%}Wgy~_+{V@CWjJ<%8YFBya>CaaRf{;LRcrMPVK?OGa~9RbMmW50YX6Kw^F>~e4xT1dDJ#qc8xK`eZ$FI2tdXG|!>9P%#f`e)D7 zLYlCNFZCrT#0-4zp|T=ee`{*9Rm{85kir4UHt{u>`k6r=Z1Sxq9V@WQ+^^A&iwdb9 z*-4+g8GF9_TnowA>D4s*zWb}_#c>v_g&(8I_@m9;-p#*^Dec@C(_w%^>f()-JNT#V#c2f|Ld@^h_v#Tk!m2Y@ZR zzV-sN81zJ9&O9!mo$$ue5ll-`PT_R`IOXF*J+8Kme_!le7r}{VQnu;=OVH3BzwCC# z$E`47a_0;0%0W7o7B_~XA&6zfB0sRp0F&t+9zJ}<4Bh5UL-U@?XE0OuJF2v;FG1*h z^^y0ggB>>;13&`r{-03(|JR)A@2@7;zFa%^KeXkwhWY;|)$STItTDqHGpscm|D2nV zHJMnGiQjwm_ErZvd7bXt&EJ7HK)|N2MS>o%++)lz*DhIsBfz;cZl|mM8F2f50aYtY Ak^lez literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d48542f2803c601fee46ee9e2af680892e566678 GIT binary patch literal 7248 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 E03{C$UjP6A literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-high-contrast-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe54dd8cae2b3eb5d40ec33903fe26df3dad4b1 GIT binary patch literal 7227 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 ZQ$YOpH8mt1-2hvF1N;2;R_{4>;a@a4!NdRn literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..55302ab96833a67398bf730740fa67adfa993137 GIT binary patch literal 7155 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 E03{C$UjP6A literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-tritanopia-linux.png b/.playwright/snapshots/components/Textarea.test.ts-snapshots/Textarea-With-Character-Limit-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..55302ab96833a67398bf730740fa67adfa993137 GIT binary patch literal 7155 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 E03{C$UjP6A literal 0 HcmV?d00001 diff --git a/e2e/components/TextInput.test.ts b/e2e/components/TextInput.test.ts index 114854866b2..d640f166fae 100644 --- a/e2e/components/TextInput.test.ts +++ b/e2e/components/TextInput.test.ts @@ -165,6 +165,60 @@ test.describe('TextInput', () => { } }) + test.describe('With Character Limit', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-features--with-character-limit', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.With Character Limit.${theme}.png`) + }) + }) + } + }) + + test.describe('With Character Limit and Caption', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-features--with-character-limit-and-caption', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.With Character Limit and Caption.${theme}.png`) + }) + }) + } + }) + + test.describe('With Character Limit Exceeded', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-features--with-character-limit-exceeded', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.With Character Limit Exceeded.${theme}.png`) + }) + }) + } + }) + test.describe('With Leading Visual', () => { for (const theme of themes) { test.describe(theme, () => { diff --git a/e2e/components/Textarea.test.ts b/e2e/components/Textarea.test.ts index 4b57c97097a..a87a1743782 100644 --- a/e2e/components/Textarea.test.ts +++ b/e2e/components/Textarea.test.ts @@ -43,6 +43,18 @@ const stories = [ id: 'components-textarea-features--custom-width', title: 'Custom Width', }, + { + id: 'components-textarea-features--with-character-limit', + title: 'With Character Limit', + }, + { + id: 'components-textarea-features--with-character-limit-and-caption', + title: 'With Character Limit and Caption', + }, + { + id: 'components-textarea-features--with-character-limit-exceeded', + title: 'With Character Limit Exceeded', + }, { id: 'components-textarea-dev--dev-default', title: 'Dev Default', diff --git a/packages/react/src/TextInput/TextInput.docs.json b/packages/react/src/TextInput/TextInput.docs.json index 7da337b54cb..ff68d969c31 100644 --- a/packages/react/src/TextInput/TextInput.docs.json +++ b/packages/react/src/TextInput/TextInput.docs.json @@ -73,6 +73,11 @@ "defaultValue": "false", "description": "Creates a full-width input element" }, + { + "name": "characterLimit", + "type": "number", + "description": "The maximum number of characters allowed in the input" + }, { "name": "contrast", "type": "boolean", diff --git a/packages/react/src/TextInput/TextInput.features.stories.tsx b/packages/react/src/TextInput/TextInput.features.stories.tsx index 7f68ff98f1c..46009e46a2f 100644 --- a/packages/react/src/TextInput/TextInput.features.stories.tsx +++ b/packages/react/src/TextInput/TextInput.features.stories.tsx @@ -318,3 +318,44 @@ export const WithAutocompleteAttribute = () => ( ) + +export const WithCharacterLimit = () => { + const [value, setValue] = useState('') + + return ( +

+ + Username + setValue(e.target.value)} characterLimit={20} /> + + + ) +} + +export const WithCharacterLimitAndCaption = () => { + const [value, setValue] = useState('') + + return ( +
+ + Username + setValue(e.target.value)} characterLimit={20} /> + Choose a unique username + +
+ ) +} + +export const WithCharacterLimitExceeded = () => { + const [value, setValue] = useState('This is a very long text that exceeds the limit') + + return ( +
+ + Bio + setValue(e.target.value)} characterLimit={20} /> + Keep it short + +
+ ) +} diff --git a/packages/react/src/TextInput/TextInput.module.css b/packages/react/src/TextInput/TextInput.module.css new file mode 100644 index 00000000000..c261a151557 --- /dev/null +++ b/packages/react/src/TextInput/TextInput.module.css @@ -0,0 +1,10 @@ +.CharacterCounter { + display: flex; + align-items: center; + gap: var(--control-xsmall-gap); + color: var(--fgColor-muted); +} + +.CharacterCounter--error { + color: var(--fgColor-danger); +} diff --git a/packages/react/src/TextInput/TextInput.test.tsx b/packages/react/src/TextInput/TextInput.test.tsx index a4aa0659153..a8928761d79 100644 --- a/packages/react/src/TextInput/TextInput.test.tsx +++ b/packages/react/src/TextInput/TextInput.test.tsx @@ -31,7 +31,7 @@ describe('TextInput', () => { }) it('renders error', () => { - expect(render().container).toMatchSnapshot() + expect(render().container).toMatchSnapshot() }) it('renders sets aria-invalid="true" on error', () => { @@ -40,15 +40,15 @@ describe('TextInput', () => { }) it('renders contrast', () => { - expect(render().container).toMatchSnapshot() + expect(render().container).toMatchSnapshot() }) it('renders monospace', () => { - expect(render().container).toMatchSnapshot() + expect(render().container).toMatchSnapshot() }) it('renders placeholder', () => { - expect(render().container).toMatchSnapshot() + expect(render().container).toMatchSnapshot() }) it('renders leadingVisual', () => { @@ -194,7 +194,7 @@ describe('TextInput', () => { }) it('should render a password input', () => { - expect(render().container).toMatchSnapshot() + expect(render().container).toMatchSnapshot() }) it('should not override prop aria-invalid', () => { @@ -270,4 +270,99 @@ describe('TextInput', () => { const {getByRole} = render() expect(getByRole('textbox')).not.toHaveAttribute('aria-describedby') }) + + describe('character counter', () => { + it('should render character counter when characterLimit is provided', () => { + const {container} = render() + expect(container.textContent).toContain('20 characters remaining') + }) + + it('should update character count on input', async () => { + const user = userEvent.setup() + const {getByRole, container} = render() + const input = getByRole('textbox') + + await user.type(input, 'Hello') + expect(container.textContent).toContain('15 characters remaining') + }) + + it('should show singular "character" when one character remains', async () => { + const user = userEvent.setup() + const {getByRole, container} = render() + const input = getByRole('textbox') + + await user.type(input, 'Test') + expect(container.textContent).toContain('1 character remaining') + }) + + it('should show error state when character limit is exceeded', async () => { + const user = userEvent.setup() + const {getByRole, container} = render() + const input = getByRole('textbox') + + await user.type(input, 'Hello World') + expect(container.textContent).toContain('6 characters over') + expect(input).toHaveAttribute('aria-invalid', 'true') + }) + + it('should show alert icon when character limit is exceeded', async () => { + const user = userEvent.setup() + const {getByRole, container} = render() + const input = getByRole('textbox') + + await user.type(input, 'Hello World') + const icon = container.querySelector('svg') + expect(icon).toBeInTheDocument() + }) + + it('should clear error state when back under limit', async () => { + const user = userEvent.setup() + const {getByRole, container} = render() + const input = getByRole('textbox') + + expect(container.textContent).toContain('2 characters over') + + await user.clear(input) + await user.type(input, 'Hello') + + expect(container.textContent).toContain('5 characters remaining') + expect(input).not.toHaveAttribute('aria-invalid', 'true') + }) + + it('should have aria-describedby pointing to static message', () => { + const {getByRole, container} = render() + const input = getByRole('textbox') + const describedBy = input.getAttribute('aria-describedby') + expect(describedBy).toBeTruthy() + + const staticMessage = Array.from(container.querySelectorAll('[id]')).find(el => + el.textContent.includes('You can enter up to'), + ) + expect(staticMessage).toBeTruthy() + expect(describedBy).toContain(staticMessage?.id) + }) + + it('should have screen reader announcement element', () => { + const {container} = render() + const srElement = container.querySelector('[aria-live="polite"]') + expect(srElement).toBeInTheDocument() + expect(srElement).toHaveAttribute('role', 'status') + }) + + it('should have static screen reader message', () => { + const {container} = render() + expect(container.textContent).toContain('You can enter up to 20 characters') + }) + + it('should show singular character in static message when limit is 1', () => { + const {container} = render() + expect(container.textContent).toContain('You can enter up to 1 character') + }) + + it('should not announce on initial load', () => { + const {container} = render() + const srElement = container.querySelector('[aria-live="polite"]') + expect(srElement?.textContent).toBe('') + }) + }) }) diff --git a/packages/react/src/TextInput/TextInput.tsx b/packages/react/src/TextInput/TextInput.tsx index dee4f95edef..6f30c31428e 100644 --- a/packages/react/src/TextInput/TextInput.tsx +++ b/packages/react/src/TextInput/TextInput.tsx @@ -1,9 +1,11 @@ import type {MouseEventHandler} from 'react' -import React, {useCallback, useState, useId} from 'react' +import React, {useCallback, useState, useId, useEffect, useRef} from 'react' import {isValidElementType} from 'react-is' import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic' import {clsx} from 'clsx' +import {AlertFillIcon} from '@primer/octicons-react' +import classes from './TextInput.module.css' import TextInputInnerVisualSlot from '../internal/components/TextInputInnerVisualSlot' import {useProvidedRefOrCreate} from '../hooks' import type {Merge} from '../utils/types' @@ -12,6 +14,8 @@ import TextInputWrapper from '../internal/components/TextInputWrapper' import TextInputAction from '../internal/components/TextInputInnerAction' import UnstyledTextInput from '../internal/components/UnstyledTextInput' import VisuallyHidden from '../_VisuallyHidden' +import {CharacterCounter} from '../utils/character-counter' +import Text from '../Text' export type TextInputNonPassthroughProps = { /** @deprecated Use `leadingVisual` or `trailingVisual` prop instead */ @@ -39,6 +43,11 @@ export type TextInputNonPassthroughProps = { * A visual that renders inside the input after the typing area */ trailingAction?: React.ReactElement> + /** + * Optional character limit for the input. If provided, a character counter will be displayed below the input. + * When the limit is exceeded, validation styling will be applied. + */ + characterLimit?: number } & Partial< Pick< StyledWrapperProps, @@ -85,12 +94,21 @@ const TextInput = React.forwardRef( // end deprecated props type = 'text', required, + characterLimit, + onChange, + value, + defaultValue, ...inputProps }, ref, ) => { const [isInputFocused, setIsInputFocused] = useState(false) const inputRef = useProvidedRefOrCreate(ref as React.RefObject) + const [characterCount, setCharacterCount] = useState('') + const [isOverLimit, setIsOverLimit] = useState(false) + const [screenReaderMessage, setScreenReaderMessage] = useState('') + const characterCounterRef = useRef(null) + // this class is necessary to style FilterSearch, plz no touchy! const wrapperClasses = clsx(className, 'TextInput-wrapper') const showLeadingLoadingIndicator = @@ -134,64 +152,137 @@ const TextInput = React.forwardRef( [onBlur], ) + // Initialize character counter + useEffect(() => { + if (characterLimit) { + characterCounterRef.current = new CharacterCounter({ + onCountUpdate: (count, overLimit, message) => { + setCharacterCount(message) + setIsOverLimit(overLimit) + }, + onScreenReaderAnnounce: message => { + setScreenReaderMessage(message) + }, + }) + + return () => { + characterCounterRef.current?.cleanup() + characterCounterRef.current = null + } + } + }, [characterLimit]) + + // Update character count when value changes or on mount + useEffect(() => { + if (characterLimit && characterCounterRef.current) { + const currentValue = + value !== undefined ? String(value) : defaultValue !== undefined ? String(defaultValue) : '' + characterCounterRef.current.updateCharacterCount(currentValue.length, characterLimit) + } + }, [value, defaultValue, characterLimit]) + + // Handle input change with character counter + const handleInputChange = useCallback( + (e: React.ChangeEvent) => { + if (characterLimit && characterCounterRef.current) { + characterCounterRef.current.updateCharacterCount(e.target.value.length, characterLimit) + } + onChange?.(e) + }, + [onChange, characterLimit], + ) + + const characterCountId = useId() + const characterCountStaticMessageId = useId() + + const isValid = isOverLimit ? 'error' : validationStatus + return ( - - {IconComponent && } - - {typeof LeadingVisual !== 'string' && isValidElementType(LeadingVisual) ? : LeadingVisual} - - + - {loading && {loaderText}} - - {typeof TrailingVisual !== 'string' && isValidElementType(TrailingVisual) ? ( - - ) : ( - TrailingVisual - )} - - {trailingAction} - + {IconComponent && } + + {typeof LeadingVisual !== 'string' && isValidElementType(LeadingVisual) ? : LeadingVisual} + + + {loading && {loaderText}} + + {typeof TrailingVisual !== 'string' && isValidElementType(TrailingVisual) ? ( + + ) : ( + TrailingVisual + )} + + {trailingAction} + + {characterLimit && ( + <> + + {screenReaderMessage} + + + You can enter up to {characterLimit} {characterLimit === 1 ? 'character' : 'characters'} + + + + )} + ) }, ) as PolymorphicForwardRefComponent<'input', TextInputProps> diff --git a/packages/react/src/TextInput/__snapshots__/TextInput.test.tsx.snap b/packages/react/src/TextInput/__snapshots__/TextInput.test.tsx.snap index b378ae7a1ea..b491ab7d0bf 100644 --- a/packages/react/src/TextInput/__snapshots__/TextInput.test.tsx.snap +++ b/packages/react/src/TextInput/__snapshots__/TextInput.test.tsx.snap @@ -12,6 +12,7 @@ exports[`TextInput > renders contrast 1`] = ` data-component="input" name="zipcode" type="text" + value="" />
@@ -30,6 +31,7 @@ exports[`TextInput > renders error 1`] = ` data-component="input" name="zipcode" type="text" + value="" />
@@ -47,6 +49,7 @@ exports[`TextInput > renders monospace 1`] = ` data-component="input" name="zipcode" type="text" + value="" />
@@ -64,6 +67,7 @@ exports[`TextInput > renders placeholder 1`] = ` name="zipcode" placeholder="560076" type="text" + value="" /> @@ -80,6 +84,7 @@ exports[`TextInput > should render a password input 1`] = ` data-component="input" name="password" type="password" + value="" /> diff --git a/packages/react/src/Textarea/TextArea.module.css b/packages/react/src/Textarea/TextArea.module.css index 9c0b16520c9..9397b4f8b3d 100644 --- a/packages/react/src/Textarea/TextArea.module.css +++ b/packages/react/src/Textarea/TextArea.module.css @@ -32,3 +32,14 @@ .TextArea:disabled { resize: none; } + +.CharacterCounter { + display: flex; + align-items: center; + gap: var(--control-xsmall-gap); + color: var(--fgColor-muted); +} + +.CharacterCounter--error { + color: var(--fgColor-danger); +} diff --git a/packages/react/src/Textarea/Textarea.docs.json b/packages/react/src/Textarea/Textarea.docs.json index 55f5f70b5e4..d657b622f17 100644 --- a/packages/react/src/Textarea/Textarea.docs.json +++ b/packages/react/src/Textarea/Textarea.docs.json @@ -67,6 +67,11 @@ "defaultValue": "'both'", "description": "Changes the resize behavior" }, + { + "name": "characterLimit", + "type": "number", + "description": "The maximum number of characters allowed in the textarea" + }, { "name": "contrast", "type": "boolean", diff --git a/packages/react/src/Textarea/Textarea.features.stories.tsx b/packages/react/src/Textarea/Textarea.features.stories.tsx index ea1c33ae7b9..f25f68a8709 100644 --- a/packages/react/src/Textarea/Textarea.features.stories.tsx +++ b/packages/react/src/Textarea/Textarea.features.stories.tsx @@ -1,3 +1,4 @@ +import {useState} from 'react' import {FormControl, Heading, Stack} from '..' import Textarea from '../Textarea' @@ -122,3 +123,46 @@ export const MaximumHeight = () => ( ) + +export const WithCharacterLimit = () => { + const [value, setValue] = useState('') + + return ( +
+ + Bio +