@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.
Files changed (304) 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 +23 -1
  89. package/dist/components/ui/navigation/index.js +23 -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 +22 -2
  109. package/dist/components/ui/overlay/index.js +22 -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 +289 -280
  223. package/dist/index.js +289 -280
  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/inheritance.esm.js +35 -27
  256. package/dist/themes/inheritance.js +35 -27
  257. package/dist/themes/keyboard-navigation.esm.js +152 -123
  258. package/dist/themes/keyboard-navigation.js +152 -123
  259. package/dist/themes/motion-reduction.esm.js +193 -133
  260. package/dist/themes/motion-reduction.js +193 -133
  261. package/dist/themes/navigation.esm.js +146 -146
  262. package/dist/themes/navigation.js +146 -146
  263. package/dist/themes/screen-reader.esm.js +159 -94
  264. package/dist/themes/screen-reader.js +159 -94
  265. package/dist/themes/systemThemeDetector.esm.js +42 -34
  266. package/dist/themes/systemThemeDetector.js +42 -34
  267. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  268. package/dist/themes/themeCSSUpdater.js +21 -9
  269. package/dist/themes/themePersistence.esm.js +68 -47
  270. package/dist/themes/themePersistence.js +68 -47
  271. package/dist/themes/themes/stan-design.esm.js +633 -468
  272. package/dist/themes/themes/stan-design.js +633 -468
  273. package/dist/themes/types.esm.js +301 -287
  274. package/dist/themes/types.js +301 -287
  275. package/dist/themes/useSystemTheme.esm.js +4 -4
  276. package/dist/themes/useSystemTheme.js +4 -4
  277. package/dist/themes/useTheme.esm.js +4 -4
  278. package/dist/themes/useTheme.js +4 -4
  279. package/dist/themes/validation.esm.js +128 -77
  280. package/dist/themes/validation.js +128 -77
  281. package/dist/tokens/index.esm.js +15 -4
  282. package/dist/tokens/index.js +15 -4
  283. package/dist/tokens/tokenExporter.esm.js +87 -61
  284. package/dist/tokens/tokenExporter.js +87 -61
  285. package/dist/tokens/tokenGenerator.esm.js +86 -77
  286. package/dist/tokens/tokenGenerator.js +86 -77
  287. package/dist/tokens/tokenManager.esm.js +64 -51
  288. package/dist/tokens/tokenManager.js +64 -51
  289. package/dist/tokens/tokenValidator.esm.js +193 -147
  290. package/dist/tokens/tokenValidator.js +193 -147
  291. package/dist/tokens/types.esm.js +49 -35
  292. package/dist/tokens/types.js +49 -35
  293. package/dist/utils/bundle-analyzer.esm.js +83 -65
  294. package/dist/utils/bundle-analyzer.js +83 -65
  295. package/dist/utils/bundle-splitting.esm.js +142 -117
  296. package/dist/utils/bundle-splitting.js +142 -117
  297. package/dist/utils/lazy-loading.esm.js +132 -106
  298. package/dist/utils/lazy-loading.js +132 -106
  299. package/dist/utils/performance-monitor.esm.js +170 -129
  300. package/dist/utils/performance-monitor.js +170 -129
  301. package/dist/utils/tree-shaking.esm.js +69 -61
  302. package/dist/utils/tree-shaking.js +69 -61
  303. package/package.json +1 -1
  304. package/src/index.ts +146 -146
@@ -7,50 +7,53 @@ import {
7
7
  } from './types';
8
8
 
9
9
  // Simple icon components
10
- const ChevronUpIcon}> = ({ className = '' }) => (
10
+ const ChevronUpIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
11
11
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
12
12
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 15l7-7 7 7" />
13
13
  </svg>
14
14
  );
15
15
 
16
- const ChevronDownIcon}> = ({ className = '' }) => (
16
+ const ChevronDownIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
17
17
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
18
18
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
19
19
  </svg>
20
20
  );
21
21
 
22
- const SearchIcon}> = ({ className = '' }) => (
22
+ const SearchIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
23
23
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
24
24
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
25
25
  </svg>
26
26
  );
27
27
 
28
- const FilterIcon}> = ({ className = '' }) => (
28
+ const FilterIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
29
29
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
30
30
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.207A1 1 0 013 6.5V4z" />
31
31
  </svg>
32
32
  );
33
33
 
34
- const MenuIcon}> = ({ className = '' }) => (
34
+ const MenuIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
35
35
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
36
36
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />
37
37
  </svg>
38
38
  );
39
39
 
40
- // const DragIcon}> = ({ className = '' }) => (
40
+ // const DragIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
41
41
  // <svg className={className} fill="none" viewBox="0 0 24 24" stroke="currentColor">
42
42
  // <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 9l3 3-3 3m5 0h3M8 9l3 3-3 3m5 0h3" />
43
43
  // </svg>
44
- // ); // TODO}> = ({ className = '' }) => (
44
+ // ); // TODO: Implement drag functionality
45
+
46
+ const GroupIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
45
47
  <svg className={`data-grid__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
46
48
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
47
49
  </svg>
48
50
  );
49
51
 
50
52
  // Resizable Column Header Component
51
- const DataGridColumn= ({
53
+ const DataGridColumn: React.FC<DataGridColumnProps> = ({
52
54
  column,
53
- // index, // TODO,
55
+ // index, // TODO: Use for column ordering
56
+ onSort,
54
57
  onResize,
55
58
  sortConfig,
56
59
  // theme,
@@ -66,7 +69,7 @@ const DataGridColumn= ({
66
69
  const [startWidth, setStartWidth] = useState(0);
67
70
  const headerRef = useRef<HTMLTableHeaderCellElement>(null);
68
71
 
69
- const handleMouseDown = useCallback((e) => {
72
+ const handleMouseDown = useCallback((e: React.MouseEvent) => {
70
73
  if (!resizable) return;
71
74
 
72
75
  e.preventDefault();
@@ -75,7 +78,7 @@ const DataGridColumn= ({
75
78
  setStartWidth(headerRef.current?.offsetWidth || 0);
76
79
  }, [resizable]);
77
80
 
78
- const handleMouseMove = useCallback((e) => {
81
+ const handleMouseMove = useCallback((e: MouseEvent) => {
79
82
  if (!isResizing) return;
80
83
 
81
84
  const diff = e.clientX - startX;
@@ -105,9 +108,9 @@ const DataGridColumn= ({
105
108
  return (
106
109
  <th
107
110
  ref={headerRef}
108
- className={`data-grid__header data-grid__header--${size} data-grid__header--${column.align || 'left'} ${isSorted ? 'data-grid__header--sorted' }`}
111
+ className={`data-grid__header data-grid__header--${size} data-grid__header--${column.align || 'left'} ${isSorted ? 'data-grid__header--sorted' : ''}`}
109
112
  style={{
110
- width,
113
+ width: column.width,
111
114
  }}
112
115
  onClick={onSort}
113
116
  >
@@ -116,14 +119,15 @@ const DataGridColumn= ({
116
119
  {column.sortable && isSorted && (
117
120
  sortConfig?.direction === 'asc' ? (
118
121
  <ChevronUpIcon className="data-grid__sort-icon" />
119
- ) ="data-grid__sort-icon" />
122
+ ) : (
123
+ <ChevronDownIcon className="data-grid__sort-icon" />
120
124
  )
121
125
  )}
122
126
  </div>
123
127
 
124
128
  {resizable && (
125
129
  <div
126
- className={`data-grid__resize-handle ${isResizing ? 'data-grid__resize-handle--active' }`}
130
+ className={`data-grid__resize-handle ${isResizing ? 'data-grid__resize-handle--active' : ''}`}
127
131
  onMouseDown={handleMouseDown}
128
132
  />
129
133
  )}
@@ -132,24 +136,25 @@ const DataGridColumn= ({
132
136
  };
133
137
 
134
138
  // Column Management Panel
135
- const ColumnPanel];
136
- groups?];
137
- onGroupChange?]) => void;
138
- onColumnToggle?, visible) => void;
139
- theme;
140
- size;
141
- onClose) => void;
139
+ const ColumnPanel: React.FC<{
140
+ columns: SortableColumn[];
141
+ groups?: string[];
142
+ onGroupChange?: (groups: string[]) => void;
143
+ onColumnToggle?: (columnKey: string, visible: boolean) => void;
144
+ theme: 'stan-design' | 'enterprise' | 'harvey';
145
+ size: 'sm' | 'md' | 'lg';
146
+ onClose: () => void;
142
147
  }> = ({ columns, groups = [], onGroupChange, onColumnToggle, size, onClose }) => {
143
148
  // const { getTheme } = useTheme();
144
149
  // const themeConfig = getTheme(theme);
145
150
  // const colors = themeConfig?.colors || getDefaultColors();
146
151
 
147
- const handleGroupToggle = (columnKey) => {
152
+ const handleGroupToggle = (columnKey: string) => {
148
153
  if (!onGroupChange) return;
149
154
 
150
155
  const newGroups = groups.includes(columnKey)
151
156
  ? groups.filter(g => g !== columnKey)
152
- , columnKey];
157
+ : [...groups, columnKey];
153
158
 
154
159
  onGroupChange(newGroups);
155
160
  };
@@ -216,18 +221,19 @@ const ColumnPanel];
216
221
  };
217
222
 
218
223
  // Advanced Search and Filter Bar
219
- const DataGridToolbar;
220
- searchValue?;
221
- onSearchChange?) => void;
222
- filterable?;
223
- filters?];
224
- onFiltersChange?]) => void;
225
- groupable?;
226
- groups?];
227
- onGroupChange?]) => void;
228
- columns];
229
- theme;
230
- size;
224
+ const DataGridToolbar: React.FC<{
225
+ searchable?: boolean;
226
+ searchValue?: string;
227
+ onSearchChange?: (value: string) => void;
228
+ filterable?: boolean;
229
+ filters?: FilterConfig[];
230
+ onFiltersChange?: (filters: FilterConfig[]) => void;
231
+ groupable?: boolean;
232
+ groups?: string[];
233
+ onGroupChange?: (groups: string[]) => void;
234
+ columns: SortableColumn[];
235
+ theme: 'stan-design' | 'enterprise' | 'harvey';
236
+ size: 'sm' | 'md' | 'lg';
231
237
  }> = ({
232
238
  searchable,
233
239
  searchValue,
@@ -253,17 +259,18 @@ const DataGridToolbar;
253
259
  const addFilter = () => {
254
260
  if (!filterColumn || !filterValue || !onFiltersChange) return;
255
261
 
256
- const newFilter= {
257
- key,
258
- value,
259
- operator};
262
+ const newFilter: FilterConfig = {
263
+ key: filterColumn,
264
+ value: filterValue,
265
+ operator: 'contains'
266
+ };
260
267
 
261
268
  onFiltersChange([...filters, newFilter]);
262
269
  setFilterColumn('');
263
270
  setFilterValue('');
264
271
  };
265
272
 
266
- const removeFilter = (index) => {
273
+ const removeFilter = (index: number) => {
267
274
  if (!onFiltersChange) return;
268
275
  const newFilters = filters.filter((_, i) => i !== index);
269
276
  onFiltersChange(newFilters);
@@ -292,7 +299,7 @@ const DataGridToolbar;
292
299
  {filterable && (
293
300
  <button
294
301
  className={`data-grid__toolbar-button data-grid__toolbar-button--${size}`}
295
- onClick={() => {/* TODO}}
302
+ onClick={() => {/* TODO: Open filter dialog */}}
296
303
  >
297
304
  <FilterIcon className="data-grid__toolbar-icon" />
298
305
  <span>Filter ({filters.length})</span>
@@ -302,7 +309,7 @@ const DataGridToolbar;
302
309
  {groupable && (
303
310
  <button
304
311
  className={`data-grid__toolbar-button data-grid__toolbar-button--${size}`}
305
- onClick={() => {/* TODO}}
312
+ onClick={() => {/* TODO: Open group dialog */}}
306
313
  >
307
314
  <GroupIcon className="data-grid__toolbar-icon" />
308
315
  <span>Group ({groups.length})</span>
@@ -336,12 +343,14 @@ const DataGridToolbar;
336
343
  {filters.length > 0 && (
337
344
  <div className="data-grid__active-filters">
338
345
  <span className={`data-grid__active-filters-label data-grid__active-filters-label--${size}`}>
339
- Active Filters, index) => (
346
+ Active Filters:
347
+ </span>
348
+ {filters.map((filter, index) => (
340
349
  <div
341
350
  key={index}
342
351
  className={`data-grid__filter-tag data-grid__filter-tag--${size}`}
343
352
  >
344
- <span>{filter.key})}</span>
353
+ <span>{filter.key}: {String(filter.value)}</span>
345
354
  <button
346
355
  onClick={() => removeFilter(index)}
347
356
  className="data-grid__filter-tag-remove"
@@ -380,7 +389,7 @@ const DataGridToolbar;
380
389
  <button
381
390
  onClick={addFilter}
382
391
  disabled={!filterColumn || !filterValue}
383
- className={`data-grid__filter-add-button data-grid__filter-add-button--${size} ${(!filterColumn || !filterValue) ? 'data-grid__filter-add-button--disabled' }`}
392
+ className={`data-grid__filter-add-button data-grid__filter-add-button--${size} ${(!filterColumn || !filterValue) ? 'data-grid__filter-add-button--disabled' : ''}`}
384
393
  >
385
394
  Add Filter
386
395
  </button>
@@ -391,24 +400,28 @@ const DataGridToolbar;
391
400
  };
392
401
 
393
402
  // Main DataGrid Component
394
- export const DataGrid= ({
403
+ export const DataGrid: React.FC<DataGridProps> = ({
395
404
  columns,
396
405
  data,
397
406
  sortable = true,
398
407
  filterable = true,
399
408
  groupable = true,
400
409
  resizable = true,
401
- // reorderable = false, // TODO,
410
+ // reorderable = false, // TODO: Implement column reordering
411
+ onSort,
402
412
  onFiltersChange,
403
413
  onGroupChange,
404
414
  onColumnResize,
405
- // onColumnReorder, // TODO,
415
+ // onColumnReorder, // TODO: Implement column reordering
416
+ sortConfig,
406
417
  filters = [],
407
418
  groups = [],
408
419
  columnWidths = {},
409
- // columnOrder = [], // TODO,
420
+ // columnOrder = [], // TODO: Implement column ordering
421
+ pagination,
410
422
  onPageChange,
411
- // onPageSizeChange, // TODO= true,
423
+ // onPageSizeChange, // TODO: Implement page size change
424
+ searchable = true,
412
425
  searchValue,
413
426
  onSearchChange,
414
427
  rowKey = 'id',
@@ -439,12 +452,12 @@ export const DataGrid= ({
439
452
  const enhancedColumns = useMemo(() => {
440
453
  return columns.map(column => ({
441
454
  ...column,
442
- width] || column.width || 150
455
+ width: columnWidths[column.key] || column.width || 150
443
456
  }));
444
457
  }, [columns, columnWidths]);
445
458
 
446
459
  // Get row key function
447
- const getRowKey = (row, any>, index)=> {
460
+ const getRowKey = (row: Record<string, any>, index: number): string => {
448
461
  if (typeof rowKey === 'function') {
449
462
  return rowKey(row);
450
463
  }
@@ -452,22 +465,22 @@ export const DataGrid= ({
452
465
  };
453
466
 
454
467
  // Handle column resize
455
- const handleColumnResize = useCallback((columnKey, newWidth) => {
468
+ const handleColumnResize = useCallback((columnKey: string, newWidth: number) => {
456
469
  onColumnResize?.(columnKey, newWidth);
457
470
  }, [onColumnResize]);
458
471
 
459
472
  // Handle sorting
460
- const handleSort = useCallback((column) => {
473
+ const handleSort = useCallback((column: SortableColumn) => {
461
474
  if (!sortable || !onSort || !column.sortable) return;
462
475
 
463
- const newDirection = sortConfig?.key === column.key && sortConfig.direction === 'asc' ? 'desc' ;
464
- onSort({ key, direction});
476
+ const newDirection = sortConfig?.key === column.key && sortConfig.direction === 'asc' ? 'desc' : 'asc';
477
+ onSort({ key: column.key, direction: newDirection });
465
478
  }, [sortable, onSort, sortConfig]);
466
479
 
467
480
  // Handle row selection
468
- const handleRowSelect = useCallback((row, any>, checked) => {
469
- const key = typeof rowKey === 'function' ? rowKey(row) ] || `row-0`;
470
- let newSelectedKeys];
481
+ const handleRowSelect = useCallback((row: Record<string, any>, checked: boolean) => {
482
+ const key = typeof rowKey === 'function' ? rowKey(row) : row[rowKey] || `row-0`;
483
+ let newSelectedKeys: string[];
471
484
 
472
485
  if (checked) {
473
486
  newSelectedKeys = [...internalSelectedKeys, key];
@@ -480,13 +493,13 @@ export const DataGrid= ({
480
493
  }, [internalSelectedKeys, onSelectionChange, rowKey]);
481
494
 
482
495
  // Handle select all
483
- const handleSelectAll = useCallback((checked) => {
496
+ const handleSelectAll = useCallback((checked: boolean) => {
484
497
  const newSelectedKeys = checked ? data.map((row, index) => {
485
498
  if (typeof rowKey === 'function') {
486
499
  return rowKey(row);
487
500
  }
488
501
  return row[rowKey] || `row-${index}`;
489
- }) ];
502
+ }) : [];
490
503
  setInternalSelectedKeys(newSelectedKeys);
491
504
  onSelectionChange?.(newSelectedKeys);
492
505
  }, [data, onSelectionChange, rowKey]);
@@ -514,7 +527,7 @@ export const DataGrid= ({
514
527
  <div className={`data-grid__container ${className || ''}`}>
515
528
  <div className="data-grid__error">
516
529
  <div className={`data-grid__error-text data-grid__error-text--${size}`}>
517
- Error}
530
+ Error: {error}
518
531
  </div>
519
532
  </div>
520
533
  </div>
@@ -602,7 +615,7 @@ export const DataGrid= ({
602
615
  return (
603
616
  <tr
604
617
  key={key}
605
- className={`data-grid__row data-grid__row--${size} ${isSelected ? 'data-grid__row--selected' } ${variant === 'striped' && index % 2 === 1 ? 'data-grid__row--striped' }`}
618
+ className={`data-grid__row data-grid__row--${size} ${isSelected ? 'data-grid__row--selected' : ''} ${variant === 'striped' && index % 2 === 1 ? 'data-grid__row--striped' : ''}`}
606
619
  >
607
620
  {selectable && (
608
621
  <td className={`data-grid__select-cell data-grid__select-cell--${size}`}>
@@ -619,7 +632,7 @@ export const DataGrid= ({
619
632
  <td
620
633
  key={column.key}
621
634
  className={`data-grid__cell data-grid__cell--${size} data-grid__cell--${column.align || 'left'}`}
622
- style={{ width}}
635
+ style={{ width: column.width }}
623
636
  >
624
637
  {String(row[column.key] || '')}
625
638
  </td>
@@ -641,7 +654,7 @@ export const DataGrid= ({
641
654
  <button
642
655
  onClick={() => onPageChange?.(pagination.currentPage - 1)}
643
656
  disabled={pagination.currentPage === 1}
644
- className={`data-grid__pagination-button data-grid__pagination-button--${size} ${pagination.currentPage === 1 ? 'data-grid__pagination-button--disabled' }`}
657
+ className={`data-grid__pagination-button data-grid__pagination-button--${size} ${pagination.currentPage === 1 ? 'data-grid__pagination-button--disabled' : ''}`}
645
658
  >
646
659
  Previous
647
660
  </button>
@@ -653,7 +666,7 @@ export const DataGrid= ({
653
666
  <button
654
667
  onClick={() => onPageChange?.(pagination.currentPage + 1)}
655
668
  disabled={pagination.currentPage >= Math.ceil(pagination.totalItems / pagination.pageSize)}
656
- className={`data-grid__pagination-button data-grid__pagination-button--${size} ${pagination.currentPage >= Math.ceil(pagination.totalItems / pagination.pageSize) ? 'data-grid__pagination-button--disabled' }`}
669
+ className={`data-grid__pagination-button data-grid__pagination-button--${size} ${pagination.currentPage >= Math.ceil(pagination.totalItems / pagination.pageSize) ? 'data-grid__pagination-button--disabled' : ''}`}
657
670
  >
658
671
  Next
659
672
  </button>