@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.11

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.
Files changed (306) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.esm.js +30 -24
  3. package/dist/components/ui/accessibility-demo.js +30 -24
  4. package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
  5. package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
  6. package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
  7. package/dist/components/ui/advanced-transition-system-demo.js +110 -64
  8. package/dist/components/ui/advanced-transition-system.esm.js +166 -122
  9. package/dist/components/ui/advanced-transition-system.js +166 -122
  10. package/dist/components/ui/animation/animated-container.esm.js +52 -29
  11. package/dist/components/ui/animation/animated-container.js +52 -29
  12. package/dist/components/ui/animation/staggered-container.esm.js +18 -9
  13. package/dist/components/ui/animation/staggered-container.js +18 -9
  14. package/dist/components/ui/animation-demo.esm.js +67 -35
  15. package/dist/components/ui/animation-demo.js +67 -35
  16. package/dist/components/ui/badge.esm.js +9 -6
  17. package/dist/components/ui/badge.js +9 -6
  18. package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
  19. package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
  20. package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
  21. package/dist/components/ui/border-radius-shadow-demo.js +23 -12
  22. package/dist/components/ui/button.esm.js +8 -2
  23. package/dist/components/ui/button.js +8 -2
  24. package/dist/components/ui/card.esm.js +33 -8
  25. package/dist/components/ui/card.js +33 -8
  26. package/dist/components/ui/checkbox.esm.js +3 -3
  27. package/dist/components/ui/checkbox.js +3 -3
  28. package/dist/components/ui/color-preview.esm.js +68 -45
  29. package/dist/components/ui/color-preview.js +68 -45
  30. package/dist/components/ui/data-display/chart.esm.js +112 -84
  31. package/dist/components/ui/data-display/chart.js +112 -84
  32. package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
  33. package/dist/components/ui/data-display/data-grid-simple.js +1 -1
  34. package/dist/components/ui/data-display/data-grid.esm.js +80 -67
  35. package/dist/components/ui/data-display/data-grid.js +80 -67
  36. package/dist/components/ui/data-display/list.esm.js +53 -45
  37. package/dist/components/ui/data-display/list.js +53 -45
  38. package/dist/components/ui/data-display/table.esm.js +62 -54
  39. package/dist/components/ui/data-display/table.js +62 -54
  40. package/dist/components/ui/data-display/timeline.esm.js +39 -34
  41. package/dist/components/ui/data-display/timeline.js +39 -34
  42. package/dist/components/ui/data-display/tree.esm.js +116 -84
  43. package/dist/components/ui/data-display/tree.js +116 -84
  44. package/dist/components/ui/data-display/types.esm.js +389 -364
  45. package/dist/components/ui/data-display/types.js +389 -364
  46. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
  47. package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
  48. package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
  49. package/dist/components/ui/enterprise-mobile-experience.js +124 -73
  50. package/dist/components/ui/feedback/alert.esm.js +22 -15
  51. package/dist/components/ui/feedback/alert.js +22 -15
  52. package/dist/components/ui/feedback/progress.esm.js +47 -24
  53. package/dist/components/ui/feedback/progress.js +47 -24
  54. package/dist/components/ui/feedback/skeleton.esm.js +39 -29
  55. package/dist/components/ui/feedback/skeleton.js +39 -29
  56. package/dist/components/ui/feedback/toast.esm.js +62 -38
  57. package/dist/components/ui/feedback/toast.js +62 -38
  58. package/dist/components/ui/feedback/types.esm.js +83 -83
  59. package/dist/components/ui/feedback/types.js +83 -83
  60. package/dist/components/ui/font-preview.esm.js +41 -39
  61. package/dist/components/ui/font-preview.js +41 -39
  62. package/dist/components/ui/form-demo.esm.js +150 -113
  63. package/dist/components/ui/form-demo.js +150 -113
  64. package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
  65. package/dist/components/ui/hardware-acceleration-demo.js +137 -87
  66. package/dist/components/ui/input.esm.js +4 -1
  67. package/dist/components/ui/input.js +4 -1
  68. package/dist/components/ui/layout-demo.esm.js +81 -56
  69. package/dist/components/ui/layout-demo.js +81 -56
  70. package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
  71. package/dist/components/ui/layouts/adaptive-layout.js +27 -8
  72. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
  73. package/dist/components/ui/layouts/desktop-layout.js +39 -19
  74. package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
  75. package/dist/components/ui/layouts/mobile-layout.js +19 -9
  76. package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
  77. package/dist/components/ui/layouts/tablet-layout.js +28 -14
  78. package/dist/components/ui/mobile-form-validation.esm.js +120 -87
  79. package/dist/components/ui/mobile-form-validation.js +120 -87
  80. package/dist/components/ui/mobile-input-demo.esm.js +19 -13
  81. package/dist/components/ui/mobile-input-demo.js +19 -13
  82. package/dist/components/ui/mobile-input.esm.js +185 -120
  83. package/dist/components/ui/mobile-input.js +185 -120
  84. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
  85. package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
  86. package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
  87. package/dist/components/ui/navigation/breadcrumb.js +17 -14
  88. package/dist/components/ui/navigation/index.esm.js +0 -1
  89. package/dist/components/ui/navigation/index.js +0 -1
  90. package/dist/components/ui/navigation/menu.esm.js +49 -35
  91. package/dist/components/ui/navigation/menu.js +49 -35
  92. package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
  93. package/dist/components/ui/navigation/navigation-demo.js +81 -74
  94. package/dist/components/ui/navigation/pagination.esm.js +62 -50
  95. package/dist/components/ui/navigation/pagination.js +62 -50
  96. package/dist/components/ui/navigation/sidebar.esm.js +56 -42
  97. package/dist/components/ui/navigation/sidebar.js +56 -42
  98. package/dist/components/ui/navigation/stepper.esm.js +34 -23
  99. package/dist/components/ui/navigation/stepper.js +34 -23
  100. package/dist/components/ui/navigation/tabs.esm.js +32 -21
  101. package/dist/components/ui/navigation/tabs.js +32 -21
  102. package/dist/components/ui/navigation/types.esm.js +196 -195
  103. package/dist/components/ui/navigation/types.js +196 -195
  104. package/dist/components/ui/overlay/backdrop.esm.js +17 -16
  105. package/dist/components/ui/overlay/backdrop.js +17 -16
  106. package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
  107. package/dist/components/ui/overlay/focus-manager.js +21 -19
  108. package/dist/components/ui/overlay/index.esm.js +0 -2
  109. package/dist/components/ui/overlay/index.js +0 -2
  110. package/dist/components/ui/overlay/modal.esm.js +38 -34
  111. package/dist/components/ui/overlay/modal.js +38 -34
  112. package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
  113. package/dist/components/ui/overlay/overlay-manager.js +25 -20
  114. package/dist/components/ui/overlay/popover.esm.js +74 -58
  115. package/dist/components/ui/overlay/popover.js +74 -58
  116. package/dist/components/ui/overlay/portal.esm.js +7 -7
  117. package/dist/components/ui/overlay/portal.js +7 -7
  118. package/dist/components/ui/overlay/tooltip.esm.js +54 -39
  119. package/dist/components/ui/overlay/tooltip.js +54 -39
  120. package/dist/components/ui/overlay/types.esm.js +132 -131
  121. package/dist/components/ui/overlay/types.js +132 -131
  122. package/dist/components/ui/performance-demo.esm.js +135 -88
  123. package/dist/components/ui/performance-demo.js +135 -88
  124. package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
  125. package/dist/components/ui/semantic-input-system-demo.js +117 -80
  126. package/dist/components/ui/theme-customizer.esm.js +84 -52
  127. package/dist/components/ui/theme-customizer.js +84 -52
  128. package/dist/components/ui/theme-preview.esm.js +95 -43
  129. package/dist/components/ui/theme-preview.js +95 -43
  130. package/dist/components/ui/theme-switcher.esm.js +70 -44
  131. package/dist/components/ui/theme-switcher.js +70 -44
  132. package/dist/components/ui/theme-toggle.esm.js +3 -3
  133. package/dist/components/ui/theme-toggle.js +3 -3
  134. package/dist/components/ui/token-demo.esm.js +33 -21
  135. package/dist/components/ui/token-demo.js +33 -21
  136. package/dist/components/ui/touch-demo.esm.js +102 -73
  137. package/dist/components/ui/touch-demo.js +102 -73
  138. package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
  139. package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
  140. package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
  141. package/dist/components/ui/touch-friendly-interface.js +85 -61
  142. package/dist/hooks/use-accessibility-support.esm.js +115 -85
  143. package/dist/hooks/use-accessibility-support.js +115 -85
  144. package/dist/hooks/use-adaptive-layout.esm.js +56 -33
  145. package/dist/hooks/use-adaptive-layout.js +56 -33
  146. package/dist/hooks/use-advanced-patterns.esm.js +57 -42
  147. package/dist/hooks/use-advanced-patterns.js +57 -42
  148. package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
  149. package/dist/hooks/use-advanced-transition-system.js +112 -71
  150. package/dist/hooks/use-animation-profile.esm.js +63 -34
  151. package/dist/hooks/use-animation-profile.js +63 -34
  152. package/dist/hooks/use-battery-animations.esm.js +80 -55
  153. package/dist/hooks/use-battery-animations.js +80 -55
  154. package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
  155. package/dist/hooks/use-battery-conscious-loading.js +166 -123
  156. package/dist/hooks/use-battery-optimization.esm.js +78 -55
  157. package/dist/hooks/use-battery-optimization.js +78 -55
  158. package/dist/hooks/use-battery-status.esm.js +73 -51
  159. package/dist/hooks/use-battery-status.js +73 -51
  160. package/dist/hooks/use-component-performance.esm.js +62 -47
  161. package/dist/hooks/use-component-performance.js +62 -47
  162. package/dist/hooks/use-device-loading-states.esm.js +152 -109
  163. package/dist/hooks/use-device-loading-states.js +152 -109
  164. package/dist/hooks/use-device.esm.js +25 -14
  165. package/dist/hooks/use-device.js +25 -14
  166. package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
  167. package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
  168. package/dist/hooks/use-form-feedback.esm.js +124 -81
  169. package/dist/hooks/use-form-feedback.js +124 -81
  170. package/dist/hooks/use-form-performance.esm.js +127 -92
  171. package/dist/hooks/use-form-performance.js +127 -92
  172. package/dist/hooks/use-frame-rate.esm.js +56 -37
  173. package/dist/hooks/use-frame-rate.js +56 -37
  174. package/dist/hooks/use-gestures.esm.js +96 -72
  175. package/dist/hooks/use-gestures.js +96 -72
  176. package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
  177. package/dist/hooks/use-hardware-acceleration.js +65 -37
  178. package/dist/hooks/use-input-accessibility.esm.js +157 -119
  179. package/dist/hooks/use-input-accessibility.js +157 -119
  180. package/dist/hooks/use-input-performance.esm.js +139 -104
  181. package/dist/hooks/use-input-performance.js +139 -104
  182. package/dist/hooks/use-layout-performance.esm.js +50 -29
  183. package/dist/hooks/use-layout-performance.js +50 -29
  184. package/dist/hooks/use-loading-accessibility.esm.js +209 -169
  185. package/dist/hooks/use-loading-accessibility.js +209 -169
  186. package/dist/hooks/use-loading-performance.esm.js +117 -93
  187. package/dist/hooks/use-loading-performance.js +117 -93
  188. package/dist/hooks/use-memory-usage.esm.js +57 -38
  189. package/dist/hooks/use-memory-usage.js +57 -38
  190. package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
  191. package/dist/hooks/use-mobile-form-layout.js +111 -74
  192. package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
  193. package/dist/hooks/use-mobile-form-validation.js +211 -144
  194. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
  195. package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
  196. package/dist/hooks/use-mobile-layout.esm.js +73 -51
  197. package/dist/hooks/use-mobile-layout.js +73 -51
  198. package/dist/hooks/use-mobile-optimization.esm.js +72 -44
  199. package/dist/hooks/use-mobile-optimization.js +72 -44
  200. package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
  201. package/dist/hooks/use-mobile-skeleton.js +97 -64
  202. package/dist/hooks/use-mobile-touch.esm.js +128 -93
  203. package/dist/hooks/use-mobile-touch.js +128 -93
  204. package/dist/hooks/use-performance-throttling.esm.js +72 -48
  205. package/dist/hooks/use-performance-throttling.js +72 -48
  206. package/dist/hooks/use-performance.esm.js +90 -52
  207. package/dist/hooks/use-performance.js +90 -52
  208. package/dist/hooks/use-reusable-architecture.esm.js +94 -65
  209. package/dist/hooks/use-reusable-architecture.js +94 -65
  210. package/dist/hooks/use-semantic-input-types.esm.js +166 -124
  211. package/dist/hooks/use-semantic-input-types.js +166 -124
  212. package/dist/hooks/use-semantic-input.esm.js +178 -126
  213. package/dist/hooks/use-semantic-input.js +178 -126
  214. package/dist/hooks/use-tablet-layout.esm.js +67 -38
  215. package/dist/hooks/use-tablet-layout.js +67 -38
  216. package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
  217. package/dist/hooks/use-touch-friendly-input.js +193 -149
  218. package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
  219. package/dist/hooks/use-touch-friendly-interface.js +99 -67
  220. package/dist/hooks/use-touch-optimization.esm.js +99 -72
  221. package/dist/hooks/use-touch-optimization.js +99 -72
  222. package/dist/index.esm.js +157 -281
  223. package/dist/index.js +157 -281
  224. package/dist/lib/utils.esm.js +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/plugins/theme-css-generator.esm.js +104 -55
  227. package/dist/plugins/theme-css-generator.js +104 -55
  228. package/dist/provider.esm.js +4 -4
  229. package/dist/provider.js +4 -4
  230. package/dist/styles.css +1 -1
  231. package/dist/theme.esm.js +633 -468
  232. package/dist/theme.js +633 -468
  233. package/dist/themes/ThemeContext.esm.js +15 -15
  234. package/dist/themes/ThemeContext.js +15 -15
  235. package/dist/themes/ThemeProvider.esm.js +25 -22
  236. package/dist/themes/ThemeProvider.js +25 -22
  237. package/dist/themes/accessibility.esm.js +147 -108
  238. package/dist/themes/accessibility.js +147 -108
  239. package/dist/themes/aria-patterns.esm.js +198 -162
  240. package/dist/themes/aria-patterns.js +198 -162
  241. package/dist/themes/base-themes.esm.js +14 -11
  242. package/dist/themes/base-themes.js +14 -11
  243. package/dist/themes/colorManager.esm.js +101 -83
  244. package/dist/themes/colorManager.js +101 -83
  245. package/dist/themes/examples/dark-theme.esm.js +133 -103
  246. package/dist/themes/examples/dark-theme.js +133 -103
  247. package/dist/themes/examples/minimal-theme.esm.js +83 -61
  248. package/dist/themes/examples/minimal-theme.js +83 -61
  249. package/dist/themes/focus-management.esm.js +202 -143
  250. package/dist/themes/focus-management.js +202 -143
  251. package/dist/themes/fontLoader.esm.js +28 -19
  252. package/dist/themes/fontLoader.js +28 -19
  253. package/dist/themes/high-contrast.esm.js +152 -104
  254. package/dist/themes/high-contrast.js +152 -104
  255. package/dist/themes/index.esm.js +1 -1
  256. package/dist/themes/index.js +1 -1
  257. package/dist/themes/inheritance.esm.js +35 -27
  258. package/dist/themes/inheritance.js +35 -27
  259. package/dist/themes/keyboard-navigation.esm.js +152 -123
  260. package/dist/themes/keyboard-navigation.js +152 -123
  261. package/dist/themes/motion-reduction.esm.js +193 -133
  262. package/dist/themes/motion-reduction.js +193 -133
  263. package/dist/themes/navigation.esm.js +146 -146
  264. package/dist/themes/navigation.js +146 -146
  265. package/dist/themes/screen-reader.esm.js +159 -94
  266. package/dist/themes/screen-reader.js +159 -94
  267. package/dist/themes/systemThemeDetector.esm.js +42 -34
  268. package/dist/themes/systemThemeDetector.js +42 -34
  269. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  270. package/dist/themes/themeCSSUpdater.js +21 -9
  271. package/dist/themes/themePersistence.esm.js +68 -47
  272. package/dist/themes/themePersistence.js +68 -47
  273. package/dist/themes/themes/stan-design.esm.js +633 -468
  274. package/dist/themes/themes/stan-design.js +633 -468
  275. package/dist/themes/types.esm.js +301 -287
  276. package/dist/themes/types.js +301 -287
  277. package/dist/themes/useSystemTheme.esm.js +4 -4
  278. package/dist/themes/useSystemTheme.js +4 -4
  279. package/dist/themes/useTheme.esm.js +4 -4
  280. package/dist/themes/useTheme.js +4 -4
  281. package/dist/themes/validation.esm.js +128 -77
  282. package/dist/themes/validation.js +128 -77
  283. package/dist/tokens/index.esm.js +1 -2
  284. package/dist/tokens/index.js +1 -2
  285. package/dist/tokens/tokenExporter.esm.js +87 -61
  286. package/dist/tokens/tokenExporter.js +87 -61
  287. package/dist/tokens/tokenGenerator.esm.js +86 -77
  288. package/dist/tokens/tokenGenerator.js +86 -77
  289. package/dist/tokens/tokenManager.esm.js +64 -51
  290. package/dist/tokens/tokenManager.js +64 -51
  291. package/dist/tokens/tokenValidator.esm.js +193 -147
  292. package/dist/tokens/tokenValidator.js +193 -147
  293. package/dist/tokens/types.esm.js +49 -35
  294. package/dist/tokens/types.js +49 -35
  295. package/dist/utils/bundle-analyzer.esm.js +83 -65
  296. package/dist/utils/bundle-analyzer.js +83 -65
  297. package/dist/utils/bundle-splitting.esm.js +142 -117
  298. package/dist/utils/bundle-splitting.js +142 -117
  299. package/dist/utils/lazy-loading.esm.js +132 -106
  300. package/dist/utils/lazy-loading.js +132 -106
  301. package/dist/utils/performance-monitor.esm.js +170 -129
  302. package/dist/utils/performance-monitor.js +170 -129
  303. package/dist/utils/tree-shaking.esm.js +69 -61
  304. package/dist/utils/tree-shaking.js +69 -61
  305. package/package.json +1 -1
  306. package/src/index.ts +146 -146
@@ -5,13 +5,13 @@ import { useTheme } from '../../themes';
5
5
  import { FontConfig } from '../../themes/types';
6
6
 
7
7
  export interface FontPreviewProps {
8
- fontConfig?;
9
- fontType?;
10
- showAllVariations?;
11
- className?;
8
+ fontConfig?: FontConfig;
9
+ fontType?: 'primary' | 'secondary' | 'display' | 'body' | 'mono';
10
+ showAllVariations?: boolean;
11
+ className?: string;
12
12
  }
13
13
 
14
- export const FontPreview= ({
14
+ export const FontPreview: React.FC<FontPreviewProps> = ({
15
15
  fontConfig,
16
16
  fontType = 'primary',
17
17
  showAllVariations = false,
@@ -37,7 +37,7 @@ export const FontPreview= ({
37
37
  // Build full font family string with fallbacks
38
38
  const fullFontFamily = fallbacks
39
39
  ? `${family}, ${fallbacks.join(', ')}`
40
- ;
40
+ : family;
41
41
 
42
42
  // Sample text for preview
43
43
  const sampleText = "The quick brown fox jumps over the lazy dog";
@@ -64,7 +64,7 @@ export const FontPreview= ({
64
64
  <span className="font-mono text-xs">{family}</span>
65
65
  {fallbacks && fallbacks.length > 0 && (
66
66
  <div className="mt-1 text-xs text-muted-foreground">
67
- Fallbacks, 3).join(', ')}
67
+ Fallbacks: {fallbacks.slice(0, 3).join(', ')}
68
68
  {fallbacks.length > 3 && ` (+${fallbacks.length - 3} more)`}
69
69
  </div>
70
70
  )}
@@ -83,9 +83,10 @@ export const FontPreview= ({
83
83
  </Badge>
84
84
  <p
85
85
  style={{
86
- fontFamily,
87
- fontWeight,
88
- fontSize}}
86
+ fontFamily: fullFontFamily,
87
+ fontWeight: weight,
88
+ fontSize: sizes?.md || '1rem'
89
+ }}
89
90
  className="flex-1"
90
91
  >
91
92
  {sampleText}
@@ -109,9 +110,9 @@ export const FontPreview= ({
109
110
  <span className="text-xs text-muted-foreground w-16">{value}</span>
110
111
  <p
111
112
  style={{
112
- fontFamily,
113
- fontSize,
114
- fontWeight] || 400
113
+ fontFamily: fullFontFamily,
114
+ fontSize: value,
115
+ fontWeight: weights?.[0] || 400
115
116
  }}
116
117
  >
117
118
  Sample text
@@ -135,10 +136,10 @@ export const FontPreview= ({
135
136
  </div>
136
137
  <p
137
138
  style={{
138
- fontFamily,
139
- fontSize,
140
- lineHeight,
141
- fontWeight] || 400
139
+ fontFamily: fullFontFamily,
140
+ fontSize: sizes?.md || '1rem',
141
+ lineHeight: value,
142
+ fontWeight: weights?.[0] || 400
142
143
  }}
143
144
  className="text-sm border-l-2 border-muted pl-4"
144
145
  >
@@ -163,10 +164,10 @@ export const FontPreview= ({
163
164
  <span className="text-xs text-muted-foreground w-16">{value}</span>
164
165
  <p
165
166
  style={{
166
- fontFamily,
167
- fontSize,
168
- letterSpacing,
169
- fontWeight] || 400
167
+ fontFamily: fullFontFamily,
168
+ fontSize: sizes?.md || '1rem',
169
+ letterSpacing: value,
170
+ fontWeight: weights?.[0] || 400
170
171
  }}
171
172
  className="flex-1"
172
173
  >
@@ -187,9 +188,9 @@ export const FontPreview= ({
187
188
  <span className="text-xs text-muted-foreground block mb-1">Alphabet</span>
188
189
  <p
189
190
  style={{
190
- fontFamily,
191
- fontSize,
192
- fontWeight] || 400
191
+ fontFamily: fullFontFamily,
192
+ fontSize: sizes?.md || '1rem',
193
+ fontWeight: weights?.[0] || 400
193
194
  }}
194
195
  className="text-sm"
195
196
  >
@@ -201,10 +202,11 @@ export const FontPreview= ({
201
202
  <span className="text-xs text-muted-foreground block mb-1">Numbers</span>
202
203
  <p
203
204
  style={{
204
- fontFamily,
205
- fontSize,
206
- fontWeight] || 400,
207
- letterSpacing}}
205
+ fontFamily: fullFontFamily,
206
+ fontSize: sizes?.lg || '1.125rem',
207
+ fontWeight: weights?.[0] || 400,
208
+ letterSpacing: letterSpacing?.wide || '0.025em'
209
+ }}
208
210
  className="text-sm"
209
211
  >
210
212
  {sampleNumbers}
@@ -215,9 +217,9 @@ export const FontPreview= ({
215
217
  <span className="text-xs text-muted-foreground block mb-1">Special Characters</span>
216
218
  <p
217
219
  style={{
218
- fontFamily,
219
- fontSize,
220
- fontWeight] || 400
220
+ fontFamily: fullFontFamily,
221
+ fontSize: sizes?.sm || '0.875rem',
222
+ fontWeight: weights?.[0] || 400
221
223
  }}
222
224
  className="text-sm"
223
225
  >
@@ -232,15 +234,15 @@ export const FontPreview= ({
232
234
  <div className="pt-4 border-t">
233
235
  <h4 className="text-sm font-medium mb-2">Font Loading</h4>
234
236
  <div className="space-y-1 text-xs text-muted-foreground">
235
- <div>Source="capitalize">{source.type}</span></div>
236
- {source.url && <div>URL}</div>}
237
+ <div>Source: <span className="capitalize">{source.type}</span></div>
238
+ {source.url && <div>URL: {source.url}</div>}
237
239
  {source.files && (
238
240
  <div>
239
- Files).join(', ')}
241
+ Files: {Object.keys(source.files).join(', ')}
240
242
  </div>
241
243
  )}
242
244
  {config.display && (
243
- <div>Display}</div>
245
+ <div>Display: {config.display}</div>
244
246
  )}
245
247
  </div>
246
248
  </div>
@@ -252,11 +254,11 @@ export const FontPreview= ({
252
254
 
253
255
  // Multi-font preview component
254
256
  export interface FontShowcaseProps {
255
- showAllVariations?;
256
- className?;
257
+ showAllVariations?: boolean;
258
+ className?: string;
257
259
  }
258
260
 
259
- export const FontShowcase= ({
261
+ export const FontShowcase: React.FC<FontShowcaseProps> = ({
260
262
  showAllVariations = false,
261
263
  className = ''
262
264
  }) => {
@@ -270,7 +272,7 @@ export const FontShowcase= ({
270
272
  );
271
273
  }
272
274
 
273
- const fontTypes= ['primary', 'secondary', 'display', 'body', 'mono'];
275
+ const fontTypes: Array<keyof typeof currentThemeConfig.fonts> = ['primary', 'secondary', 'display', 'body', 'mono'];
274
276
 
275
277
  return (
276
278
  <div className={`space-y-6 ${className}`}>
@@ -7,9 +7,9 @@ import MobileFormValidation, { MobileFormValidationRef } from './mobile-form-val
7
7
 
8
8
  import { InputType } from '../../hooks/use-semantic-input'
9
9
 
10
- export const FormDemo= () => {
10
+ export const FormDemo: React.FC = () => {
11
11
  const [activeTab, setActiveTab] = useState<'basic' | 'advanced' | 'performance' | 'semantic'>('basic')
12
- const [formResults, setFormResults] = useState<Array<{ type; data; timestamp}>>([])
12
+ const [formResults, setFormResults] = useState<Array<{ type: string; data: any; timestamp: Date }>>([])
13
13
  const [enableEnhancedFeatures, setEnableEnhancedFeatures] = useState(true)
14
14
 
15
15
  const basicFormRef = useRef<MobileFormValidationRef>(null)
@@ -18,21 +18,23 @@ export const FormDemo= () => {
18
18
  // Basic form fields
19
19
  const basicFields = [
20
20
  {
21
- name,
22
- label,
23
- type} as InputType,
24
- placeholder,
25
- rules, message},
26
- { type, value, message}
21
+ name: 'name',
22
+ label: 'Full Name',
23
+ type: { type: 'text' } as InputType,
24
+ placeholder: 'Enter your full name',
25
+ rules: [
26
+ { type: 'required' as const, message: 'Name is required' },
27
+ { type: 'minLength' as const, value: 2, message: 'Name must be at least 2 characters' }
27
28
  ]
28
29
  },
29
30
  {
30
- name,
31
- label,
32
- type} as InputType,
33
- placeholder,
34
- rules, message},
35
- { type, message}
31
+ name: 'email',
32
+ label: 'Email Address',
33
+ type: { type: 'email' } as InputType,
34
+ placeholder: 'Enter your email',
35
+ rules: [
36
+ { type: 'required' as const, message: 'Email is required' },
37
+ { type: 'email' as const, message: 'Please enter a valid email address' }
36
38
  ]
37
39
  }
38
40
  ]
@@ -40,91 +42,99 @@ export const FormDemo= () => {
40
42
  // Advanced form fields
41
43
  const advancedFields = [
42
44
  {
43
- name,
44
- label,
45
- type} as InputType,
46
- placeholder,
47
- rules, message},
48
- { type, value, message},
49
- { type, value, message}
45
+ name: 'fullName',
46
+ label: 'Full Name',
47
+ type: { type: 'text' } as InputType,
48
+ placeholder: 'Enter your full name',
49
+ rules: [
50
+ { type: 'required' as const, message: 'Full name is required' },
51
+ { type: 'minLength' as const, value: 3, message: 'Name must be at least 3 characters' },
52
+ { type: 'maxLength' as const, value: 50, message: 'Name must be less than 50 characters' }
50
53
  ]
51
54
  },
52
55
  {
53
- name,
54
- label,
55
- type} as InputType,
56
- placeholder,
57
- rules, message},
58
- { type, message}
56
+ name: 'emailAddress',
57
+ label: 'Email Address',
58
+ type: { type: 'email' } as InputType,
59
+ placeholder: 'Enter your email address',
60
+ rules: [
61
+ { type: 'required' as const, message: 'Email is required' },
62
+ { type: 'email' as const, message: 'Please enter a valid email address' }
59
63
  ]
60
64
  },
61
65
  {
62
- name,
63
- label,
64
- type} as InputType,
65
- placeholder,
66
- rules, message},
67
- { type, value]?[0-9\s\-\(\)]{7,}$/, message}
66
+ name: 'phoneNumber',
67
+ label: 'Phone Number',
68
+ type: { type: 'tel' } as InputType,
69
+ placeholder: 'Enter your phone number',
70
+ rules: [
71
+ { type: 'required' as const, message: 'Phone number is required' },
72
+ { type: 'pattern' as const, value: /^[\+]?[0-9\s\-\(\)]{7,}$/, message: 'Please enter a valid phone number' }
68
73
  ]
69
74
  },
70
75
  {
71
- name,
72
- label,
73
- type} as InputType,
74
- placeholder,
75
- rules, value, message}
76
+ name: 'website',
77
+ label: 'Website',
78
+ type: { type: 'url' } as InputType,
79
+ placeholder: 'Enter your website URL',
80
+ rules: [
81
+ { type: 'pattern' as const, value: /^https?:\/\/.+/, message: 'Please enter a valid URL starting with http:// or https://' }
76
82
  ]
77
83
  },
78
84
  {
79
- name,
80
- label,
81
- type} as InputType,
82
- placeholder,
83
- rules, message},
84
- { type, value, message},
85
- { type, value, message}
85
+ name: 'age',
86
+ label: 'Age',
87
+ type: { type: 'number' } as InputType,
88
+ placeholder: 'Enter your age',
89
+ rules: [
90
+ { type: 'required' as const, message: 'Age is required' },
91
+ { type: 'minLength' as const, value: 1, message: 'Age must be at least 1' },
92
+ { type: 'maxLength' as const, value: 3, message: 'Age must be less than 1000' }
86
93
  ]
87
94
  },
88
95
  {
89
- name,
90
- label,
91
- type} as InputType,
92
- placeholder,
93
- rules, message},
94
- { type, value, message},
95
- { type, value=.*[a-z])(?=.*[A-Z])(?=.*\d)/, message, uppercase, and number' }
96
+ name: 'password',
97
+ label: 'Password',
98
+ type: { type: 'password' } as InputType,
99
+ placeholder: 'Enter your password',
100
+ rules: [
101
+ { type: 'required' as const, message: 'Password is required' },
102
+ { type: 'minLength' as const, value: 8, message: 'Password must be at least 8 characters' },
103
+ { type: 'pattern' as const, value: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/, message: 'Password must contain lowercase, uppercase, and number' }
96
104
  ]
97
105
  },
98
106
  {
99
- name,
100
- label,
101
- type} as InputType,
102
- placeholder,
103
- rules, message},
104
- { type, message, validator)=> {
107
+ name: 'confirmPassword',
108
+ label: 'Confirm Password',
109
+ type: { type: 'password' } as InputType,
110
+ placeholder: 'Confirm your password',
111
+ rules: [
112
+ { type: 'required' as const, message: 'Please confirm your password' },
113
+ { type: 'custom' as const, message: 'Passwords do not match', validator: (value: any): boolean => {
105
114
  const passwordField = advancedFields.find(f => f.name === 'password')
106
- const passwordValue = passwordField ? (document.getElementById('password') as HTMLInputElement)?.value === passwordValue
115
+ const passwordValue = passwordField ? (document.getElementById('password') as HTMLInputElement)?.value : ''
116
+ return value === passwordValue
107
117
  }}
108
118
  ]
109
119
  }
110
120
  ]
111
121
 
112
122
  // Handle form submission
113
- const handleFormSubmit = (formData, any>, formType) => {
123
+ const handleFormSubmit = (formData: Record<string, any>, formType: string) => {
114
124
  const result = {
115
- type,
116
- data,
117
- timestamp)
125
+ type: formType,
126
+ data: formData,
127
+ timestamp: new Date()
118
128
  }
119
129
 
120
130
  setFormResults(prev => [result, ...prev.slice(0, 9)]) // Keep last 10 results
121
131
 
122
- console.log(`${formType} form submitted, formData)
132
+ console.log(`${formType} form submitted:`, formData)
123
133
  }
124
134
 
125
135
  // Handle form validation change
126
- const handleValidationChange = (isValid, formType) => {
127
- console.log(`${formType} form validation, isValid ? 'Valid' )
136
+ const handleValidationChange = (isValid: boolean, formType: string) => {
137
+ console.log(`${formType} form validation:`, isValid ? 'Valid' : 'Invalid')
128
138
  }
129
139
 
130
140
  // Clear form results
@@ -133,32 +143,38 @@ export const FormDemo= () => {
133
143
  }
134
144
 
135
145
  // Test form submission programmatically
136
- const testFormSubmission = async (formType) => {
137
- const formRef = formType === 'basic' ? basicFormRef ) {
146
+ const testFormSubmission = async (formType: 'basic' | 'advanced') => {
147
+ const formRef = formType === 'basic' ? basicFormRef : advancedFormRef
148
+
149
+ if (formRef.current) {
138
150
  try {
139
151
  const result = await formRef.current.submit()
140
- console.log(`${formType} form test submission, result)
152
+ console.log(`${formType} form test submission:`, result)
141
153
  } catch (error) {
142
- console.error(`${formType} form test submission error, error)
154
+ console.error(`${formType} form test submission error:`, error)
143
155
  }
144
156
  }
145
157
  }
146
158
 
147
159
  // Test form validation programmatically
148
- const testFormValidation = async (formType) => {
149
- const formRef = formType === 'basic' ? basicFormRef ) {
160
+ const testFormValidation = async (formType: 'basic' | 'advanced') => {
161
+ const formRef = formType === 'basic' ? basicFormRef : advancedFormRef
162
+
163
+ if (formRef.current) {
150
164
  try {
151
165
  const isValid = await formRef.current.validate()
152
- console.log(`${formType} form validation test, isValid ? 'Valid' )
166
+ console.log(`${formType} form validation test:`, isValid ? 'Valid' : 'Invalid')
153
167
  } catch (error) {
154
- console.error(`${formType} form validation test error, error)
168
+ console.error(`${formType} form validation test error:`, error)
155
169
  }
156
170
  }
157
171
  }
158
172
 
159
173
  // Test form reset programmatically
160
- const testFormReset = (formType) => {
161
- const formRef = formType === 'basic' ? basicFormRef ) {
174
+ const testFormReset = (formType: 'basic' | 'advanced') => {
175
+ const formRef = formType === 'basic' ? basicFormRef : advancedFormRef
176
+
177
+ if (formRef.current) {
162
178
  formRef.current.reset()
163
179
  console.log(`${formType} form reset`)
164
180
  }
@@ -173,14 +189,20 @@ export const FormDemo= () => {
173
189
  Advanced form system with mobile validation, animated feedback, and performance optimization
174
190
  </p>
175
191
  <Badge variant="outline" className="text-sm">
176
- Story 6}
192
+ Story 6: Advanced Form System with Mobile Validation
193
+ </Badge>
194
+ </div>
195
+
196
+ {/* Enhanced Features Toggle */}
177
197
  <div className="flex justify-center">
178
198
  <div className="flex items-center gap-2 p-3 bg-gray-50 rounded-lg">
179
- <span className="text-sm font-medium">Enhanced Features={enableEnhancedFeatures ? 'default' }
199
+ <span className="text-sm font-medium">Enhanced Features:</span>
200
+ <Button
201
+ variant={enableEnhancedFeatures ? 'default' : 'outline'}
180
202
  size="sm"
181
203
  onClick={() => setEnableEnhancedFeatures(!enableEnhancedFeatures)}
182
204
  >
183
- {enableEnhancedFeatures ? 'Enabled' }
205
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
184
206
  </Button>
185
207
  </div>
186
208
  </div>
@@ -189,9 +211,10 @@ export const FormDemo= () => {
189
211
  <Tabs
190
212
  tabs={[
191
213
  {
192
- id,
193
- label,
194
- content="space-y-4">
214
+ id: 'basic',
215
+ label: 'Basic Form',
216
+ content: (
217
+ <div className="space-y-4">
195
218
  <Card>
196
219
  <CardHeader>
197
220
  <CardTitle className="flex items-center gap-2">
@@ -243,9 +266,10 @@ export const FormDemo= () => {
243
266
  )
244
267
  },
245
268
  {
246
- id,
247
- label,
248
- content="space-y-4">
269
+ id: 'advanced',
270
+ label: 'Advanced Form',
271
+ content: (
272
+ <div className="space-y-4">
249
273
  <Card>
250
274
  <CardHeader>
251
275
  <CardTitle className="flex items-center gap-2">
@@ -297,9 +321,10 @@ export const FormDemo= () => {
297
321
  )
298
322
  },
299
323
  {
300
- id,
301
- label,
302
- content="space-y-4">
324
+ id: 'performance',
325
+ label: 'Performance',
326
+ content: (
327
+ <div className="space-y-4">
303
328
  <Card>
304
329
  <CardHeader>
305
330
  <CardTitle className="flex items-center gap-2">
@@ -311,25 +336,30 @@ export const FormDemo= () => {
311
336
  </CardDescription>
312
337
  </CardHeader>
313
338
  <CardContent className="space-y-4">
314
- <div className="grid grid-cols-1 md="space-y-3">
339
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
340
+ <div className="space-y-3">
315
341
  <h4 className="font-semibold">Performance Features</h4>
316
342
  <div className="space-y-2 text-sm">
317
343
  <div className="flex justify-between">
318
- <span>Validation Throttling="default">Enabled</Badge>
344
+ <span>Validation Throttling:</span>
345
+ <Badge variant="default">Enabled</Badge>
319
346
  </div>
320
347
  <div className="flex justify-between">
321
- <span>Touch Event Optimization={enableEnhancedFeatures ? 'default' }>
322
- {enableEnhancedFeatures ? 'Enabled' }
348
+ <span>Touch Event Optimization:</span>
349
+ <Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
350
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
323
351
  </Badge>
324
352
  </div>
325
353
  <div className="flex justify-between">
326
- <span>Memory Management={enableEnhancedFeatures ? 'default' }>
327
- {enableEnhancedFeatures ? 'Enabled' }
354
+ <span>Memory Management:</span>
355
+ <Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
356
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
328
357
  </Badge>
329
358
  </div>
330
359
  <div className="flex justify-between">
331
- <span>Battery Optimization={enableEnhancedFeatures ? 'default' }>
332
- {enableEnhancedFeatures ? 'Enabled' }
360
+ <span>Battery Optimization:</span>
361
+ <Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
362
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
333
363
  </Badge>
334
364
  </div>
335
365
  </div>
@@ -363,9 +393,10 @@ export const FormDemo= () => {
363
393
  )
364
394
  },
365
395
  {
366
- id,
367
- label,
368
- content="space-y-4">
396
+ id: 'semantic',
397
+ label: 'Semantic Input',
398
+ content: (
399
+ <div className="space-y-4">
369
400
  <Card>
370
401
  <CardHeader>
371
402
  <CardTitle className="flex items-center gap-2">
@@ -377,24 +408,29 @@ export const FormDemo= () => {
377
408
  </CardDescription>
378
409
  </CardHeader>
379
410
  <CardContent className="space-y-4">
380
- <div className="grid grid-cols-1 md="space-y-3">
411
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
412
+ <div className="space-y-3">
381
413
  <h4 className="font-semibold">Semantic Features</h4>
382
414
  <div className="space-y-2 text-sm">
383
415
  <div className="flex justify-between">
384
- <span>Auto Type Detection="default">Enabled</Badge>
416
+ <span>Auto Type Detection:</span>
417
+ <Badge variant="default">Enabled</Badge>
385
418
  </div>
386
419
  <div className="flex justify-between">
387
- <span>Keyboard Optimization={enableEnhancedFeatures ? 'default' }>
388
- {enableEnhancedFeatures ? 'Enabled' }
420
+ <span>Keyboard Optimization:</span>
421
+ <Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
422
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
389
423
  </Badge>
390
424
  </div>
391
425
  <div className="flex justify-between">
392
- <span>Autocomplete Enhancement={enableEnhancedFeatures ? 'default' }>
393
- {enableEnhancedFeatures ? 'Enabled' }
426
+ <span>Autocomplete Enhancement:</span>
427
+ <Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
428
+ {enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
394
429
  </Badge>
395
430
  </div>
396
431
  <div className="flex justify-between">
397
- <span>Touch Optimization="default">Enabled</Badge>
432
+ <span>Touch Optimization:</span>
433
+ <Badge variant="default">Enabled</Badge>
398
434
  </div>
399
435
  </div>
400
436
  </div>
@@ -402,11 +438,11 @@ export const FormDemo= () => {
402
438
  <div className="space-y-3">
403
439
  <h4 className="font-semibold">Detection Examples</h4>
404
440
  <div className="space-y-2 text-sm text-gray-600">
405
- <p>• <strong>Email, sets email keyboard</p>
406
- <p>• <strong>Phone, sets phone keyboard</p>
407
- <p>• <strong>URL, sets URL keyboard</p>
408
- <p>• <strong>Search, optimizes input</p>
409
- <p>• <strong>Number, sets numeric keyboard</p>
441
+ <p>• <strong>Email:</strong> Detects @ symbol, sets email keyboard</p>
442
+ <p>• <strong>Phone:</strong> Detects numeric patterns, sets phone keyboard</p>
443
+ <p>• <strong>URL:</strong> Detects http/https, sets URL keyboard</p>
444
+ <p>• <strong>Search:</strong> Detects search context, optimizes input</p>
445
+ <p>• <strong>Number:</strong> Detects numeric patterns, sets numeric keyboard</p>
410
446
  </div>
411
447
  </div>
412
448
  </div>
@@ -428,7 +464,7 @@ export const FormDemo= () => {
428
464
  }
429
465
  ]}
430
466
  activeTab={activeTab}
431
- onTabChange={(tabId) => setActiveTab(tabId as 'basic' | 'advanced' | 'performance' | 'semantic')}
467
+ onTabChange={(tabId: string) => setActiveTab(tabId as 'basic' | 'advanced' | 'performance' | 'semantic')}
432
468
  className="w-full"
433
469
  />
434
470
 
@@ -479,7 +515,8 @@ export const FormDemo= () => {
479
515
  </CardDescription>
480
516
  </CardHeader>
481
517
  <CardContent>
482
- <div className="grid grid-cols-1 md="space-y-3">
518
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
519
+ <div className="space-y-3">
483
520
  <h4 className="font-semibold">✅ Completed Features</h4>
484
521
  <ul className="text-sm space-y-1 text-gray-600">
485
522
  <li>• Mobile form validation system</li>