@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +23 -1
- package/dist/components/ui/navigation/index.js +23 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +22 -2
- package/dist/components/ui/overlay/index.js +22 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +289 -280
- package/dist/index.js +289 -280
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +15 -4
- package/dist/tokens/index.js +15 -4
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
package/CHANGELOG.md
CHANGED
|
@@ -11,10 +11,10 @@ import { motionReductionManager } from '../../themes/motion-reduction';
|
|
|
11
11
|
import { ARIAUtils as AriaPatternGenerator } from '../../themes/aria-patterns';
|
|
12
12
|
|
|
13
13
|
interface AccessibilityDemoProps {
|
|
14
|
-
className
|
|
14
|
+
className?: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export const AccessibilityDemo= ({ className = '' }) => {
|
|
17
|
+
export const AccessibilityDemo: React.FC<AccessibilityDemoProps> = ({ className = '' }) => {
|
|
18
18
|
const [currentFocus, setCurrentFocus] = useState<string>('');
|
|
19
19
|
const [announcements, setAnnouncements] = useState<string[]>([]);
|
|
20
20
|
const [accessibilityConfig, setAccessibilityConfig] = useState(accessibilityManager.getConfig());
|
|
@@ -44,7 +44,7 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
44
44
|
};
|
|
45
45
|
}, []);
|
|
46
46
|
|
|
47
|
-
const addAnnouncement = (message) => {
|
|
47
|
+
const addAnnouncement = (message: string) => {
|
|
48
48
|
setAnnouncements(prev => [message, ...prev.slice(0, 9)]);
|
|
49
49
|
};
|
|
50
50
|
|
|
@@ -71,7 +71,7 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
71
71
|
const testScreenReaderAnnouncement = () => {
|
|
72
72
|
const message = 'This is a test announcement for screen readers';
|
|
73
73
|
screenReaderOptimizer.announce(message, 'normal');
|
|
74
|
-
addAnnouncement(`Announced}`);
|
|
74
|
+
addAnnouncement(`Announced: ${message}`);
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const testFocusManagement = () => {
|
|
@@ -86,12 +86,13 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
86
86
|
const button = document.getElementById('test-aria-button');
|
|
87
87
|
if (button) {
|
|
88
88
|
const ariaProps = AriaPatternGenerator.generateAriaAttributes({
|
|
89
|
-
disabled,
|
|
90
|
-
readonly,
|
|
91
|
-
required,
|
|
92
|
-
invalid,
|
|
93
|
-
label,
|
|
94
|
-
describedby
|
|
89
|
+
disabled: false,
|
|
90
|
+
readonly: false,
|
|
91
|
+
required: true,
|
|
92
|
+
invalid: false,
|
|
93
|
+
label: 'Test button for ARIA patterns',
|
|
94
|
+
describedby: 'button-description'
|
|
95
|
+
});
|
|
95
96
|
|
|
96
97
|
Object.entries(ariaProps).forEach(([key, value]) => {
|
|
97
98
|
if (value !== undefined) {
|
|
@@ -112,36 +113,38 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
112
113
|
</p>
|
|
113
114
|
|
|
114
115
|
{/* Current Status */}
|
|
115
|
-
<div className="grid grid-cols-1 md
|
|
116
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
|
|
117
|
+
<div className="p-4 bg-gray-50 rounded-lg">
|
|
116
118
|
<h3 className="font-semibold mb-2">Current Focus</h3>
|
|
117
119
|
<p className="text-sm text-gray-600 break-words">{currentFocus || 'No focus'}</p>
|
|
118
120
|
</div>
|
|
119
121
|
|
|
120
122
|
<div className="p-4 bg-gray-50 rounded-lg">
|
|
121
123
|
<h3 className="font-semibold mb-2">High Contrast</h3>
|
|
122
|
-
<Badge variant={highContrastEnabled ? 'default' }>
|
|
123
|
-
{highContrastEnabled ? 'Enabled' }
|
|
124
|
+
<Badge variant={highContrastEnabled ? 'default' : 'secondary'}>
|
|
125
|
+
{highContrastEnabled ? 'Enabled' : 'Disabled'}
|
|
124
126
|
</Badge>
|
|
125
127
|
</div>
|
|
126
128
|
|
|
127
129
|
<div className="p-4 bg-gray-50 rounded-lg">
|
|
128
130
|
<h3 className="font-semibold mb-2">Motion Reduction</h3>
|
|
129
|
-
<Badge variant={motionReduced ? 'destructive' }>
|
|
130
|
-
{motionReduced ? 'Enabled' }
|
|
131
|
+
<Badge variant={motionReduced ? 'destructive' : 'secondary'}>
|
|
132
|
+
{motionReduced ? 'Enabled' : 'Disabled'}
|
|
131
133
|
</Badge>
|
|
132
134
|
</div>
|
|
133
135
|
</div>
|
|
134
136
|
|
|
135
137
|
{/* Accessibility Controls */}
|
|
136
|
-
<div className="grid grid-cols-1 lg
|
|
138
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4 mb-6">
|
|
139
|
+
<div className="min-w-0">
|
|
137
140
|
<h3 className="font-semibold mb-3 break-words">Accessibility Controls</h3>
|
|
138
141
|
<div className="space-y-3">
|
|
139
142
|
<Button onClick={toggleHighContrast} variant="outline" className="w-full">
|
|
140
|
-
{highContrastEnabled ? 'Disable' } High Contrast
|
|
143
|
+
{highContrastEnabled ? 'Disable' : 'Enable'} High Contrast
|
|
141
144
|
</Button>
|
|
142
145
|
|
|
143
146
|
<Button onClick={toggleMotionReduction} variant="outline" className="w-full">
|
|
144
|
-
{motionReduced ? 'Disable' } Motion Reduction
|
|
147
|
+
{motionReduced ? 'Disable' : 'Enable'} Motion Reduction
|
|
145
148
|
</Button>
|
|
146
149
|
|
|
147
150
|
<Button onClick={testScreenReaderAnnouncement} variant="outline" className="w-full">
|
|
@@ -189,10 +192,11 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
189
192
|
<h3 className="font-semibold mb-3">Current Accessibility Configuration</h3>
|
|
190
193
|
<div className="bg-blue-50 p-4 rounded-lg border-2 border-blue-300">
|
|
191
194
|
<div className="text-sm text-blue-800">
|
|
192
|
-
<p className="mb-2"><strong>High Contrast}</p>
|
|
193
|
-
<p className="mb-2"><strong>Reduced Motion}</p>
|
|
194
|
-
<p className="mb-2"><strong>Focus Visible}</p>
|
|
195
|
-
<p className="mb-2"><strong>Contrast Target
|
|
195
|
+
<p className="mb-2"><strong>High Contrast:</strong> {accessibilityConfig.highContrast ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
196
|
+
<p className="mb-2"><strong>Reduced Motion:</strong> {accessibilityConfig.reducedMotion ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
197
|
+
<p className="mb-2"><strong>Focus Visible:</strong> {accessibilityConfig.focusVisible ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
198
|
+
<p className="mb-2"><strong>Contrast Target:</strong> {accessibilityConfig.contrast.target}:1 ratio</p>
|
|
199
|
+
<p className="mb-0"><strong>Touch Target Size:</strong> {accessibilityConfig.spacing.touchTarget}</p>
|
|
196
200
|
</div>
|
|
197
201
|
</div>
|
|
198
202
|
</div>
|
|
@@ -203,7 +207,8 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
203
207
|
<div className="bg-gray-50 p-4 rounded-lg max-h-40 overflow-y-auto">
|
|
204
208
|
{announcements.length === 0 ? (
|
|
205
209
|
<p className="text-gray-500 text-sm">No announcements yet. Use the controls above to test.</p>
|
|
206
|
-
)
|
|
210
|
+
) : (
|
|
211
|
+
<div className="space-y-2">
|
|
207
212
|
{announcements.map((announcement, index) => (
|
|
208
213
|
<div key={index} className="text-sm text-gray-700 p-2 bg-white rounded border break-words">
|
|
209
214
|
{announcement}
|
|
@@ -219,7 +224,8 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
219
224
|
<Card>
|
|
220
225
|
<h3 className="text-xl font-semibold mb-4 break-words">Accessibility Features Overview</h3>
|
|
221
226
|
|
|
222
|
-
<div className="grid grid-cols-1 lg
|
|
227
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
228
|
+
<div className="min-w-0">
|
|
223
229
|
<h4 className="font-semibold mb-2 break-words">High Contrast Support</h4>
|
|
224
230
|
<ul className="text-sm text-gray-600 space-y-1">
|
|
225
231
|
<li className="break-words">• Automatic system preference detection</li>
|
|
@@ -11,10 +11,10 @@ import { motionReductionManager } from '../../themes/motion-reduction';
|
|
|
11
11
|
import { ARIAUtils as AriaPatternGenerator } from '../../themes/aria-patterns';
|
|
12
12
|
|
|
13
13
|
interface AccessibilityDemoProps {
|
|
14
|
-
className
|
|
14
|
+
className?: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export const AccessibilityDemo= ({ className = '' }) => {
|
|
17
|
+
export const AccessibilityDemo: React.FC<AccessibilityDemoProps> = ({ className = '' }) => {
|
|
18
18
|
const [currentFocus, setCurrentFocus] = useState<string>('');
|
|
19
19
|
const [announcements, setAnnouncements] = useState<string[]>([]);
|
|
20
20
|
const [accessibilityConfig, setAccessibilityConfig] = useState(accessibilityManager.getConfig());
|
|
@@ -44,7 +44,7 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
44
44
|
};
|
|
45
45
|
}, []);
|
|
46
46
|
|
|
47
|
-
const addAnnouncement = (message) => {
|
|
47
|
+
const addAnnouncement = (message: string) => {
|
|
48
48
|
setAnnouncements(prev => [message, ...prev.slice(0, 9)]);
|
|
49
49
|
};
|
|
50
50
|
|
|
@@ -71,7 +71,7 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
71
71
|
const testScreenReaderAnnouncement = () => {
|
|
72
72
|
const message = 'This is a test announcement for screen readers';
|
|
73
73
|
screenReaderOptimizer.announce(message, 'normal');
|
|
74
|
-
addAnnouncement(`Announced}`);
|
|
74
|
+
addAnnouncement(`Announced: ${message}`);
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const testFocusManagement = () => {
|
|
@@ -86,12 +86,13 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
86
86
|
const button = document.getElementById('test-aria-button');
|
|
87
87
|
if (button) {
|
|
88
88
|
const ariaProps = AriaPatternGenerator.generateAriaAttributes({
|
|
89
|
-
disabled,
|
|
90
|
-
readonly,
|
|
91
|
-
required,
|
|
92
|
-
invalid,
|
|
93
|
-
label,
|
|
94
|
-
describedby
|
|
89
|
+
disabled: false,
|
|
90
|
+
readonly: false,
|
|
91
|
+
required: true,
|
|
92
|
+
invalid: false,
|
|
93
|
+
label: 'Test button for ARIA patterns',
|
|
94
|
+
describedby: 'button-description'
|
|
95
|
+
});
|
|
95
96
|
|
|
96
97
|
Object.entries(ariaProps).forEach(([key, value]) => {
|
|
97
98
|
if (value !== undefined) {
|
|
@@ -112,36 +113,38 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
112
113
|
</p>
|
|
113
114
|
|
|
114
115
|
{/* Current Status */}
|
|
115
|
-
<div className="grid grid-cols-1 md
|
|
116
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
|
|
117
|
+
<div className="p-4 bg-gray-50 rounded-lg">
|
|
116
118
|
<h3 className="font-semibold mb-2">Current Focus</h3>
|
|
117
119
|
<p className="text-sm text-gray-600 break-words">{currentFocus || 'No focus'}</p>
|
|
118
120
|
</div>
|
|
119
121
|
|
|
120
122
|
<div className="p-4 bg-gray-50 rounded-lg">
|
|
121
123
|
<h3 className="font-semibold mb-2">High Contrast</h3>
|
|
122
|
-
<Badge variant={highContrastEnabled ? 'default' }>
|
|
123
|
-
{highContrastEnabled ? 'Enabled' }
|
|
124
|
+
<Badge variant={highContrastEnabled ? 'default' : 'secondary'}>
|
|
125
|
+
{highContrastEnabled ? 'Enabled' : 'Disabled'}
|
|
124
126
|
</Badge>
|
|
125
127
|
</div>
|
|
126
128
|
|
|
127
129
|
<div className="p-4 bg-gray-50 rounded-lg">
|
|
128
130
|
<h3 className="font-semibold mb-2">Motion Reduction</h3>
|
|
129
|
-
<Badge variant={motionReduced ? 'destructive' }>
|
|
130
|
-
{motionReduced ? 'Enabled' }
|
|
131
|
+
<Badge variant={motionReduced ? 'destructive' : 'secondary'}>
|
|
132
|
+
{motionReduced ? 'Enabled' : 'Disabled'}
|
|
131
133
|
</Badge>
|
|
132
134
|
</div>
|
|
133
135
|
</div>
|
|
134
136
|
|
|
135
137
|
{/* Accessibility Controls */}
|
|
136
|
-
<div className="grid grid-cols-1 lg
|
|
138
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4 mb-6">
|
|
139
|
+
<div className="min-w-0">
|
|
137
140
|
<h3 className="font-semibold mb-3 break-words">Accessibility Controls</h3>
|
|
138
141
|
<div className="space-y-3">
|
|
139
142
|
<Button onClick={toggleHighContrast} variant="outline" className="w-full">
|
|
140
|
-
{highContrastEnabled ? 'Disable' } High Contrast
|
|
143
|
+
{highContrastEnabled ? 'Disable' : 'Enable'} High Contrast
|
|
141
144
|
</Button>
|
|
142
145
|
|
|
143
146
|
<Button onClick={toggleMotionReduction} variant="outline" className="w-full">
|
|
144
|
-
{motionReduced ? 'Disable' } Motion Reduction
|
|
147
|
+
{motionReduced ? 'Disable' : 'Enable'} Motion Reduction
|
|
145
148
|
</Button>
|
|
146
149
|
|
|
147
150
|
<Button onClick={testScreenReaderAnnouncement} variant="outline" className="w-full">
|
|
@@ -189,10 +192,11 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
189
192
|
<h3 className="font-semibold mb-3">Current Accessibility Configuration</h3>
|
|
190
193
|
<div className="bg-blue-50 p-4 rounded-lg border-2 border-blue-300">
|
|
191
194
|
<div className="text-sm text-blue-800">
|
|
192
|
-
<p className="mb-2"><strong>High Contrast}</p>
|
|
193
|
-
<p className="mb-2"><strong>Reduced Motion}</p>
|
|
194
|
-
<p className="mb-2"><strong>Focus Visible}</p>
|
|
195
|
-
<p className="mb-2"><strong>Contrast Target
|
|
195
|
+
<p className="mb-2"><strong>High Contrast:</strong> {accessibilityConfig.highContrast ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
196
|
+
<p className="mb-2"><strong>Reduced Motion:</strong> {accessibilityConfig.reducedMotion ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
197
|
+
<p className="mb-2"><strong>Focus Visible:</strong> {accessibilityConfig.focusVisible ? '✅ Enabled' : '❌ Disabled'}</p>
|
|
198
|
+
<p className="mb-2"><strong>Contrast Target:</strong> {accessibilityConfig.contrast.target}:1 ratio</p>
|
|
199
|
+
<p className="mb-0"><strong>Touch Target Size:</strong> {accessibilityConfig.spacing.touchTarget}</p>
|
|
196
200
|
</div>
|
|
197
201
|
</div>
|
|
198
202
|
</div>
|
|
@@ -203,7 +207,8 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
203
207
|
<div className="bg-gray-50 p-4 rounded-lg max-h-40 overflow-y-auto">
|
|
204
208
|
{announcements.length === 0 ? (
|
|
205
209
|
<p className="text-gray-500 text-sm">No announcements yet. Use the controls above to test.</p>
|
|
206
|
-
)
|
|
210
|
+
) : (
|
|
211
|
+
<div className="space-y-2">
|
|
207
212
|
{announcements.map((announcement, index) => (
|
|
208
213
|
<div key={index} className="text-sm text-gray-700 p-2 bg-white rounded border break-words">
|
|
209
214
|
{announcement}
|
|
@@ -219,7 +224,8 @@ export const AccessibilityDemo= ({ className = '' }) => {
|
|
|
219
224
|
<Card>
|
|
220
225
|
<h3 className="text-xl font-semibold mb-4 break-words">Accessibility Features Overview</h3>
|
|
221
226
|
|
|
222
|
-
<div className="grid grid-cols-1 lg
|
|
227
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
228
|
+
<div className="min-w-0">
|
|
223
229
|
<h4 className="font-semibold mb-2 break-words">High Contrast Support</h4>
|
|
224
230
|
<ul className="text-sm text-gray-600 space-y-1">
|
|
225
231
|
<li className="break-words">• Automatic system preference detection</li>
|