@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 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
|
@@ -2,49 +2,54 @@ import React, { useState, useCallback } from 'react';
|
|
|
2
2
|
import { AlertProps, AlertAction } from './types';
|
|
3
3
|
|
|
4
4
|
// Simple icon components
|
|
5
|
-
const CheckCircleIcon}> = ({ className = '' }) => (
|
|
5
|
+
const CheckCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
6
6
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
7
7
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
|
|
8
8
|
</svg>
|
|
9
9
|
);
|
|
10
10
|
|
|
11
|
-
const ExclamationTriangleIcon}> = ({ className = '' }) => (
|
|
11
|
+
const ExclamationTriangleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
12
12
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
13
13
|
<path fillRule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clipRule="evenodd" />
|
|
14
14
|
</svg>
|
|
15
15
|
);
|
|
16
16
|
|
|
17
|
-
const XCircleIcon}> = ({ className = '' }) => (
|
|
17
|
+
const XCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
18
18
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
19
19
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clipRule="evenodd" />
|
|
20
20
|
</svg>
|
|
21
21
|
);
|
|
22
22
|
|
|
23
|
-
const InformationCircleIcon}> = ({ className = '' }) => (
|
|
23
|
+
const InformationCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
24
24
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
25
25
|
<path fillRule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clipRule="evenodd" />
|
|
26
26
|
</svg>
|
|
27
27
|
);
|
|
28
28
|
|
|
29
|
-
const XMarkIcon}> = ({ className = '' }) => (
|
|
29
|
+
const XMarkIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
30
30
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
31
31
|
<path fillRule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clipRule="evenodd" />
|
|
32
32
|
</svg>
|
|
33
33
|
);
|
|
34
34
|
|
|
35
35
|
// Get icon for alert type
|
|
36
|
-
const getAlertIcon = (type], className) => {
|
|
36
|
+
const getAlertIcon = (type: AlertProps['type'], className: string) => {
|
|
37
37
|
switch (type) {
|
|
38
|
-
case 'success'
|
|
39
|
-
|
|
40
|
-
case '
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
case 'success':
|
|
39
|
+
return <CheckCircleIcon className={className} />;
|
|
40
|
+
case 'warning':
|
|
41
|
+
return <ExclamationTriangleIcon className={className} />;
|
|
42
|
+
case 'error':
|
|
43
|
+
return <XCircleIcon className={className} />;
|
|
44
|
+
case 'info':
|
|
45
|
+
return <InformationCircleIcon className={className} />;
|
|
46
|
+
default:
|
|
47
|
+
return null;
|
|
43
48
|
}
|
|
44
49
|
};
|
|
45
50
|
|
|
46
51
|
// Alert Action Button Component
|
|
47
|
-
const AlertActionButton}> = ({
|
|
52
|
+
const AlertActionButton: React.FC<AlertAction & { theme: string }> = ({
|
|
48
53
|
label,
|
|
49
54
|
onClick,
|
|
50
55
|
variant = 'primary'
|
|
@@ -61,7 +66,7 @@ const AlertActionButton}> = ({
|
|
|
61
66
|
};
|
|
62
67
|
|
|
63
68
|
// Main Alert Component
|
|
64
|
-
export const Alert= ({
|
|
69
|
+
export const Alert: React.FC<AlertProps> = ({
|
|
65
70
|
title,
|
|
66
71
|
message,
|
|
67
72
|
type = 'info',
|
|
@@ -79,7 +84,9 @@ export const Alert= ({
|
|
|
79
84
|
}) => {
|
|
80
85
|
// const { getTheme } = useTheme();
|
|
81
86
|
// const themeConfig = getTheme(theme);
|
|
82
|
-
// Note
|
|
87
|
+
// Note: colors not needed as we're using semantic CSS classes
|
|
88
|
+
|
|
89
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
83
90
|
|
|
84
91
|
const handleDismiss = useCallback(() => {
|
|
85
92
|
if (onDismiss) {
|
|
@@ -116,7 +123,7 @@ export const Alert= ({
|
|
|
116
123
|
</h3>
|
|
117
124
|
)}
|
|
118
125
|
|
|
119
|
-
<div className={`alert__message ${!title ? 'alert__message--only' }`}>
|
|
126
|
+
<div className={`alert__message ${!title ? 'alert__message--only' : ''}`}>
|
|
120
127
|
{message}
|
|
121
128
|
</div>
|
|
122
129
|
|
|
@@ -2,49 +2,54 @@ import React, { useState, useCallback } from 'react';
|
|
|
2
2
|
import { AlertProps, AlertAction } from './types';
|
|
3
3
|
|
|
4
4
|
// Simple icon components
|
|
5
|
-
const CheckCircleIcon}> = ({ className = '' }) => (
|
|
5
|
+
const CheckCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
6
6
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
7
7
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
|
|
8
8
|
</svg>
|
|
9
9
|
);
|
|
10
10
|
|
|
11
|
-
const ExclamationTriangleIcon}> = ({ className = '' }) => (
|
|
11
|
+
const ExclamationTriangleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
12
12
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
13
13
|
<path fillRule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clipRule="evenodd" />
|
|
14
14
|
</svg>
|
|
15
15
|
);
|
|
16
16
|
|
|
17
|
-
const XCircleIcon}> = ({ className = '' }) => (
|
|
17
|
+
const XCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
18
18
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
19
19
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clipRule="evenodd" />
|
|
20
20
|
</svg>
|
|
21
21
|
);
|
|
22
22
|
|
|
23
|
-
const InformationCircleIcon}> = ({ className = '' }) => (
|
|
23
|
+
const InformationCircleIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
24
24
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
25
25
|
<path fillRule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clipRule="evenodd" />
|
|
26
26
|
</svg>
|
|
27
27
|
);
|
|
28
28
|
|
|
29
|
-
const XMarkIcon}> = ({ className = '' }) => (
|
|
29
|
+
const XMarkIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
30
30
|
<svg className={className} fill="currentColor" viewBox="0 0 20 20">
|
|
31
31
|
<path fillRule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clipRule="evenodd" />
|
|
32
32
|
</svg>
|
|
33
33
|
);
|
|
34
34
|
|
|
35
35
|
// Get icon for alert type
|
|
36
|
-
const getAlertIcon = (type], className) => {
|
|
36
|
+
const getAlertIcon = (type: AlertProps['type'], className: string) => {
|
|
37
37
|
switch (type) {
|
|
38
|
-
case 'success'
|
|
39
|
-
|
|
40
|
-
case '
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
case 'success':
|
|
39
|
+
return <CheckCircleIcon className={className} />;
|
|
40
|
+
case 'warning':
|
|
41
|
+
return <ExclamationTriangleIcon className={className} />;
|
|
42
|
+
case 'error':
|
|
43
|
+
return <XCircleIcon className={className} />;
|
|
44
|
+
case 'info':
|
|
45
|
+
return <InformationCircleIcon className={className} />;
|
|
46
|
+
default:
|
|
47
|
+
return null;
|
|
43
48
|
}
|
|
44
49
|
};
|
|
45
50
|
|
|
46
51
|
// Alert Action Button Component
|
|
47
|
-
const AlertActionButton}> = ({
|
|
52
|
+
const AlertActionButton: React.FC<AlertAction & { theme: string }> = ({
|
|
48
53
|
label,
|
|
49
54
|
onClick,
|
|
50
55
|
variant = 'primary'
|
|
@@ -61,7 +66,7 @@ const AlertActionButton}> = ({
|
|
|
61
66
|
};
|
|
62
67
|
|
|
63
68
|
// Main Alert Component
|
|
64
|
-
export const Alert= ({
|
|
69
|
+
export const Alert: React.FC<AlertProps> = ({
|
|
65
70
|
title,
|
|
66
71
|
message,
|
|
67
72
|
type = 'info',
|
|
@@ -79,7 +84,9 @@ export const Alert= ({
|
|
|
79
84
|
}) => {
|
|
80
85
|
// const { getTheme } = useTheme();
|
|
81
86
|
// const themeConfig = getTheme(theme);
|
|
82
|
-
// Note
|
|
87
|
+
// Note: colors not needed as we're using semantic CSS classes
|
|
88
|
+
|
|
89
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
83
90
|
|
|
84
91
|
const handleDismiss = useCallback(() => {
|
|
85
92
|
if (onDismiss) {
|
|
@@ -116,7 +123,7 @@ export const Alert= ({
|
|
|
116
123
|
</h3>
|
|
117
124
|
)}
|
|
118
125
|
|
|
119
|
-
<div className={`alert__message ${!title ? 'alert__message--only' }`}>
|
|
126
|
+
<div className={`alert__message ${!title ? 'alert__message--only' : ''}`}>
|
|
120
127
|
{message}
|
|
121
128
|
</div>
|
|
122
129
|
|
|
@@ -4,15 +4,15 @@ import { ProgressProps, ProgressStep } from './types';
|
|
|
4
4
|
|
|
5
5
|
// Default color fallbacks for when theme is not available
|
|
6
6
|
const getDefaultColors = () => ({
|
|
7
|
-
surface, surface, border, divider},
|
|
8
|
-
text, secondary, muted, inverse, onPrimary, onSecondary, onSurface},
|
|
9
|
-
interactive, active, focus, disabled},
|
|
10
|
-
primary},
|
|
11
|
-
semantic, warning, error, info}
|
|
7
|
+
surface: { background: '#ffffff', surface: '#f3f4f6', border: '#d1d5db', divider: '#e5e7eb' },
|
|
8
|
+
text: { primary: '#111827', secondary: '#6b7280', muted: '#9ca3af', inverse: '#ffffff', onPrimary: '#ffffff', onSecondary: '#ffffff', onSurface: '#111827' },
|
|
9
|
+
interactive: { hover: '#f3f4f6', active: '#e5e7eb', focus: '#3b82f6', disabled: '#d1d5db' },
|
|
10
|
+
primary: { 500: '#3b82f6' },
|
|
11
|
+
semantic: { success: '#10b981', warning: '#f59e0b', error: '#ef4444', info: '#3b82f6' }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
// Linear Progress Component
|
|
15
|
-
const LinearProgress= ({
|
|
15
|
+
const LinearProgress: React.FC<ProgressProps> = ({
|
|
16
16
|
value,
|
|
17
17
|
max = 100,
|
|
18
18
|
min = 0,
|
|
@@ -22,20 +22,22 @@ const LinearProgress= ({
|
|
|
22
22
|
size = 'md',
|
|
23
23
|
className = ''
|
|
24
24
|
}) => {
|
|
25
|
-
// Note
|
|
25
|
+
// Note: theme and colors not needed as we're using semantic CSS classes
|
|
26
|
+
|
|
27
|
+
const percentage = Math.min(Math.max(((value - min) / (max - min)) * 100, 0), 100);
|
|
26
28
|
|
|
27
29
|
return (
|
|
28
30
|
<div className={`progress__container progress__container--${size} ${className}`}>
|
|
29
31
|
<div
|
|
30
|
-
className={`progress__bar ${animated ? 'progress__bar--animated' } ${striped ? 'progress__bar--striped' } ${color ? `progress__bar--${color}` }`}
|
|
31
|
-
style={{ width}%` }}
|
|
32
|
+
className={`progress__bar ${animated ? 'progress__bar--animated' : ''} ${striped ? 'progress__bar--striped' : ''} ${color ? `progress__bar--${color}` : ''}`}
|
|
33
|
+
style={{ width: `${percentage}%` }}
|
|
32
34
|
/>
|
|
33
35
|
</div>
|
|
34
36
|
);
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
// Circular Progress Component
|
|
38
|
-
const CircularProgress= ({
|
|
40
|
+
const CircularProgress: React.FC<ProgressProps> = ({
|
|
39
41
|
value,
|
|
40
42
|
max = 100,
|
|
41
43
|
min = 0,
|
|
@@ -74,7 +76,7 @@ const CircularProgress= ({
|
|
|
74
76
|
cx="50"
|
|
75
77
|
cy="50"
|
|
76
78
|
r={radius}
|
|
77
|
-
className={`progress__circle-progress ${animated ? 'progress__circle-progress--animated' }`}
|
|
79
|
+
className={`progress__circle-progress ${animated ? 'progress__circle-progress--animated' : ''}`}
|
|
78
80
|
stroke={progressColor || color || colors.primary[500]}
|
|
79
81
|
strokeWidth={thickness}
|
|
80
82
|
strokeDasharray={strokeDasharray}
|
|
@@ -90,25 +92,36 @@ const CircularProgress= ({
|
|
|
90
92
|
};
|
|
91
93
|
|
|
92
94
|
// Steps Progress Component
|
|
93
|
-
const StepsProgress] }> = ({
|
|
95
|
+
const StepsProgress: React.FC<ProgressProps & { steps?: ProgressStep[] }> = ({
|
|
94
96
|
steps = [],
|
|
95
97
|
className = ''
|
|
96
98
|
}) => {
|
|
97
|
-
// Note
|
|
99
|
+
// Note: size and colors not needed as we're using semantic CSS classes
|
|
100
|
+
|
|
101
|
+
const getStatusIcon = (status: ProgressStep['status']) => {
|
|
98
102
|
switch (status) {
|
|
99
|
-
case 'completed'
|
|
103
|
+
case 'completed':
|
|
104
|
+
return (
|
|
105
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
100
106
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
|
|
101
107
|
</svg>
|
|
102
108
|
);
|
|
103
|
-
case 'active'
|
|
109
|
+
case 'active':
|
|
110
|
+
return (
|
|
111
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
104
112
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clipRule="evenodd" />
|
|
105
113
|
</svg>
|
|
106
114
|
);
|
|
107
|
-
case 'error'
|
|
115
|
+
case 'error':
|
|
116
|
+
return (
|
|
117
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
108
118
|
<path fillRule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z" clipRule="evenodd" />
|
|
109
119
|
</svg>
|
|
110
120
|
);
|
|
111
|
-
case 'pending'
|
|
121
|
+
case 'pending':
|
|
122
|
+
default:
|
|
123
|
+
return (
|
|
124
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
112
125
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clipRule="evenodd" />
|
|
113
126
|
</svg>
|
|
114
127
|
);
|
|
@@ -133,7 +146,7 @@ const StepsProgress] }> = ({
|
|
|
133
146
|
{/* Step connector */}
|
|
134
147
|
{index < steps.length - 1 && (
|
|
135
148
|
<div
|
|
136
|
-
className={`progress__step-connector ${step.status === 'completed' ? 'progress__step-connector--completed' }`}
|
|
149
|
+
className={`progress__step-connector ${step.status === 'completed' ? 'progress__step-connector--completed' : ''}`}
|
|
137
150
|
/>
|
|
138
151
|
)}
|
|
139
152
|
|
|
@@ -155,7 +168,7 @@ const StepsProgress] }> = ({
|
|
|
155
168
|
};
|
|
156
169
|
|
|
157
170
|
// Main Progress Component
|
|
158
|
-
export const Progress= ({
|
|
171
|
+
export const Progress: React.FC<ProgressProps> = ({
|
|
159
172
|
value,
|
|
160
173
|
max = 100,
|
|
161
174
|
min = 0,
|
|
@@ -205,7 +218,10 @@ export const Progress= ({
|
|
|
205
218
|
|
|
206
219
|
const renderProgress = () => {
|
|
207
220
|
switch (variant) {
|
|
208
|
-
case 'circular'
|
|
221
|
+
case 'circular':
|
|
222
|
+
return (
|
|
223
|
+
<CircularProgress
|
|
224
|
+
value={currentValue}
|
|
209
225
|
max={max}
|
|
210
226
|
min={min}
|
|
211
227
|
animated={animated}
|
|
@@ -217,14 +233,21 @@ export const Progress= ({
|
|
|
217
233
|
className={className}
|
|
218
234
|
/>
|
|
219
235
|
);
|
|
220
|
-
case 'steps'
|
|
236
|
+
case 'steps':
|
|
237
|
+
return (
|
|
238
|
+
<StepsProgress
|
|
239
|
+
value={currentValue}
|
|
221
240
|
max={max}
|
|
222
241
|
min={min}
|
|
223
242
|
size={size}
|
|
224
243
|
className={className}
|
|
225
244
|
/>
|
|
226
245
|
);
|
|
227
|
-
case 'linear'
|
|
246
|
+
case 'linear':
|
|
247
|
+
default:
|
|
248
|
+
return (
|
|
249
|
+
<LinearProgress
|
|
250
|
+
value={currentValue}
|
|
228
251
|
max={max}
|
|
229
252
|
min={min}
|
|
230
253
|
animated={animated}
|
|
@@ -246,12 +269,12 @@ export const Progress= ({
|
|
|
246
269
|
{(showLabel || showValue || showPercentage) && (
|
|
247
270
|
<div className="flex justify-between items-center mb-2">
|
|
248
271
|
{showLabel && label && (
|
|
249
|
-
<span className="text-sm font-medium" style={{ color}}>
|
|
272
|
+
<span className="text-sm font-medium" style={{ color: colors.text.primary }}>
|
|
250
273
|
{label}
|
|
251
274
|
</span>
|
|
252
275
|
)}
|
|
253
276
|
{(showValue || showPercentage) && (
|
|
254
|
-
<span className="text-sm" style={{ color}}>
|
|
277
|
+
<span className="text-sm" style={{ color: colors.text.secondary }}>
|
|
255
278
|
{showValue && `${currentValue}/${max}`}
|
|
256
279
|
{showValue && showPercentage && ' - '}
|
|
257
280
|
{showPercentage && `${Math.round(((currentValue - min) / (max - min)) * 100)}%`}
|
|
@@ -4,15 +4,15 @@ import { ProgressProps, ProgressStep } from './types';
|
|
|
4
4
|
|
|
5
5
|
// Default color fallbacks for when theme is not available
|
|
6
6
|
const getDefaultColors = () => ({
|
|
7
|
-
surface, surface, border, divider},
|
|
8
|
-
text, secondary, muted, inverse, onPrimary, onSecondary, onSurface},
|
|
9
|
-
interactive, active, focus, disabled},
|
|
10
|
-
primary},
|
|
11
|
-
semantic, warning, error, info}
|
|
7
|
+
surface: { background: '#ffffff', surface: '#f3f4f6', border: '#d1d5db', divider: '#e5e7eb' },
|
|
8
|
+
text: { primary: '#111827', secondary: '#6b7280', muted: '#9ca3af', inverse: '#ffffff', onPrimary: '#ffffff', onSecondary: '#ffffff', onSurface: '#111827' },
|
|
9
|
+
interactive: { hover: '#f3f4f6', active: '#e5e7eb', focus: '#3b82f6', disabled: '#d1d5db' },
|
|
10
|
+
primary: { 500: '#3b82f6' },
|
|
11
|
+
semantic: { success: '#10b981', warning: '#f59e0b', error: '#ef4444', info: '#3b82f6' }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
// Linear Progress Component
|
|
15
|
-
const LinearProgress= ({
|
|
15
|
+
const LinearProgress: React.FC<ProgressProps> = ({
|
|
16
16
|
value,
|
|
17
17
|
max = 100,
|
|
18
18
|
min = 0,
|
|
@@ -22,20 +22,22 @@ const LinearProgress= ({
|
|
|
22
22
|
size = 'md',
|
|
23
23
|
className = ''
|
|
24
24
|
}) => {
|
|
25
|
-
// Note
|
|
25
|
+
// Note: theme and colors not needed as we're using semantic CSS classes
|
|
26
|
+
|
|
27
|
+
const percentage = Math.min(Math.max(((value - min) / (max - min)) * 100, 0), 100);
|
|
26
28
|
|
|
27
29
|
return (
|
|
28
30
|
<div className={`progress__container progress__container--${size} ${className}`}>
|
|
29
31
|
<div
|
|
30
|
-
className={`progress__bar ${animated ? 'progress__bar--animated' } ${striped ? 'progress__bar--striped' } ${color ? `progress__bar--${color}` }`}
|
|
31
|
-
style={{ width}%` }}
|
|
32
|
+
className={`progress__bar ${animated ? 'progress__bar--animated' : ''} ${striped ? 'progress__bar--striped' : ''} ${color ? `progress__bar--${color}` : ''}`}
|
|
33
|
+
style={{ width: `${percentage}%` }}
|
|
32
34
|
/>
|
|
33
35
|
</div>
|
|
34
36
|
);
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
// Circular Progress Component
|
|
38
|
-
const CircularProgress= ({
|
|
40
|
+
const CircularProgress: React.FC<ProgressProps> = ({
|
|
39
41
|
value,
|
|
40
42
|
max = 100,
|
|
41
43
|
min = 0,
|
|
@@ -74,7 +76,7 @@ const CircularProgress= ({
|
|
|
74
76
|
cx="50"
|
|
75
77
|
cy="50"
|
|
76
78
|
r={radius}
|
|
77
|
-
className={`progress__circle-progress ${animated ? 'progress__circle-progress--animated' }`}
|
|
79
|
+
className={`progress__circle-progress ${animated ? 'progress__circle-progress--animated' : ''}`}
|
|
78
80
|
stroke={progressColor || color || colors.primary[500]}
|
|
79
81
|
strokeWidth={thickness}
|
|
80
82
|
strokeDasharray={strokeDasharray}
|
|
@@ -90,25 +92,36 @@ const CircularProgress= ({
|
|
|
90
92
|
};
|
|
91
93
|
|
|
92
94
|
// Steps Progress Component
|
|
93
|
-
const StepsProgress] }> = ({
|
|
95
|
+
const StepsProgress: React.FC<ProgressProps & { steps?: ProgressStep[] }> = ({
|
|
94
96
|
steps = [],
|
|
95
97
|
className = ''
|
|
96
98
|
}) => {
|
|
97
|
-
// Note
|
|
99
|
+
// Note: size and colors not needed as we're using semantic CSS classes
|
|
100
|
+
|
|
101
|
+
const getStatusIcon = (status: ProgressStep['status']) => {
|
|
98
102
|
switch (status) {
|
|
99
|
-
case 'completed'
|
|
103
|
+
case 'completed':
|
|
104
|
+
return (
|
|
105
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
100
106
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
|
|
101
107
|
</svg>
|
|
102
108
|
);
|
|
103
|
-
case 'active'
|
|
109
|
+
case 'active':
|
|
110
|
+
return (
|
|
111
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
104
112
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clipRule="evenodd" />
|
|
105
113
|
</svg>
|
|
106
114
|
);
|
|
107
|
-
case 'error'
|
|
115
|
+
case 'error':
|
|
116
|
+
return (
|
|
117
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
108
118
|
<path fillRule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z" clipRule="evenodd" />
|
|
109
119
|
</svg>
|
|
110
120
|
);
|
|
111
|
-
case 'pending'
|
|
121
|
+
case 'pending':
|
|
122
|
+
default:
|
|
123
|
+
return (
|
|
124
|
+
<svg className="progress__step-icon" fill="currentColor" viewBox="0 0 20 20">
|
|
112
125
|
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clipRule="evenodd" />
|
|
113
126
|
</svg>
|
|
114
127
|
);
|
|
@@ -133,7 +146,7 @@ const StepsProgress] }> = ({
|
|
|
133
146
|
{/* Step connector */}
|
|
134
147
|
{index < steps.length - 1 && (
|
|
135
148
|
<div
|
|
136
|
-
className={`progress__step-connector ${step.status === 'completed' ? 'progress__step-connector--completed' }`}
|
|
149
|
+
className={`progress__step-connector ${step.status === 'completed' ? 'progress__step-connector--completed' : ''}`}
|
|
137
150
|
/>
|
|
138
151
|
)}
|
|
139
152
|
|
|
@@ -155,7 +168,7 @@ const StepsProgress] }> = ({
|
|
|
155
168
|
};
|
|
156
169
|
|
|
157
170
|
// Main Progress Component
|
|
158
|
-
export const Progress= ({
|
|
171
|
+
export const Progress: React.FC<ProgressProps> = ({
|
|
159
172
|
value,
|
|
160
173
|
max = 100,
|
|
161
174
|
min = 0,
|
|
@@ -205,7 +218,10 @@ export const Progress= ({
|
|
|
205
218
|
|
|
206
219
|
const renderProgress = () => {
|
|
207
220
|
switch (variant) {
|
|
208
|
-
case 'circular'
|
|
221
|
+
case 'circular':
|
|
222
|
+
return (
|
|
223
|
+
<CircularProgress
|
|
224
|
+
value={currentValue}
|
|
209
225
|
max={max}
|
|
210
226
|
min={min}
|
|
211
227
|
animated={animated}
|
|
@@ -217,14 +233,21 @@ export const Progress= ({
|
|
|
217
233
|
className={className}
|
|
218
234
|
/>
|
|
219
235
|
);
|
|
220
|
-
case 'steps'
|
|
236
|
+
case 'steps':
|
|
237
|
+
return (
|
|
238
|
+
<StepsProgress
|
|
239
|
+
value={currentValue}
|
|
221
240
|
max={max}
|
|
222
241
|
min={min}
|
|
223
242
|
size={size}
|
|
224
243
|
className={className}
|
|
225
244
|
/>
|
|
226
245
|
);
|
|
227
|
-
case 'linear'
|
|
246
|
+
case 'linear':
|
|
247
|
+
default:
|
|
248
|
+
return (
|
|
249
|
+
<LinearProgress
|
|
250
|
+
value={currentValue}
|
|
228
251
|
max={max}
|
|
229
252
|
min={min}
|
|
230
253
|
animated={animated}
|
|
@@ -246,12 +269,12 @@ export const Progress= ({
|
|
|
246
269
|
{(showLabel || showValue || showPercentage) && (
|
|
247
270
|
<div className="flex justify-between items-center mb-2">
|
|
248
271
|
{showLabel && label && (
|
|
249
|
-
<span className="text-sm font-medium" style={{ color}}>
|
|
272
|
+
<span className="text-sm font-medium" style={{ color: colors.text.primary }}>
|
|
250
273
|
{label}
|
|
251
274
|
</span>
|
|
252
275
|
)}
|
|
253
276
|
{(showValue || showPercentage) && (
|
|
254
|
-
<span className="text-sm" style={{ color}}>
|
|
277
|
+
<span className="text-sm" style={{ color: colors.text.secondary }}>
|
|
255
278
|
{showValue && `${currentValue}/${max}`}
|
|
256
279
|
{showValue && showPercentage && ' - '}
|
|
257
280
|
{showPercentage && `${Math.round(((currentValue - min) / (max - min)) * 100)}%`}
|