@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
@@ -9,47 +9,48 @@ import {
9
9
  } from './types';
10
10
 
11
11
  // Simple icon components
12
- const ChevronUpIcon}> = ({ className = '' }) => (
12
+ const ChevronUpIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
13
13
  <svg className={`table__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
14
14
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 15l7-7 7 7" />
15
15
  </svg>
16
16
  );
17
17
 
18
- const ChevronDownIcon}> = ({ className = '' }) => (
18
+ const ChevronDownIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
19
19
  <svg className={`table__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
20
20
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
21
21
  </svg>
22
22
  );
23
23
 
24
- const ChevronRightIcon}> = ({ className = '' }) => (
24
+ const ChevronRightIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
25
25
  <svg className={`table__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
26
26
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
27
27
  </svg>
28
28
  );
29
29
 
30
- const SearchIcon}> = ({ className = '' }) => (
30
+ const SearchIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
31
31
  <svg className={`table__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
32
32
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
33
33
  </svg>
34
34
  );
35
35
 
36
- const FilterIcon}> = ({ className = '' }) => (
36
+ const FilterIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
37
37
  <svg className={`table__icon ${className}`} fill="none" viewBox="0 0 24 24" stroke="currentColor">
38
38
  <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" />
39
39
  </svg>
40
40
  );
41
41
 
42
42
  // Table Header Component
43
- const TableHeader];
44
- sortable?;
45
- sortConfig?;
46
- onSort?) => void;
47
- selectable?;
48
- onSelectAll?) => void;
49
- allSelected?;
50
- theme;
51
- size;
52
- variant;
43
+ const TableHeader: React.FC<{
44
+ columns: SortableColumn[];
45
+ sortable?: boolean;
46
+ sortConfig?: SortConfig;
47
+ onSort?: (config: SortConfig) => void;
48
+ selectable?: boolean;
49
+ onSelectAll?: (checked: boolean) => void;
50
+ allSelected?: boolean;
51
+ theme: 'stan-design' | 'enterprise' | 'harvey';
52
+ size: 'sm' | 'md' | 'lg';
53
+ variant: 'default' | 'bordered' | 'striped' | 'compact';
53
54
  }> = ({
54
55
  columns,
55
56
  sortable,
@@ -64,11 +65,11 @@ const TableHeader];
64
65
  // const themeConfig = getTheme(theme);
65
66
  // const colors = themeConfig?.colors || getDefaultColors();
66
67
 
67
- const handleSort = useCallback((column) => {
68
+ const handleSort = useCallback((column: SortableColumn) => {
68
69
  if (!sortable || !onSort || !column.sortable) return;
69
70
 
70
- const newDirection = sortConfig?.key === column.key && sortConfig.direction === 'asc' ? 'desc' ;
71
- onSort({ key, direction});
71
+ const newDirection = sortConfig?.key === column.key && sortConfig.direction === 'asc' ? 'desc' : 'asc';
72
+ onSort({ key: column.key, direction: newDirection });
72
73
  }, [sortable, onSort, sortConfig]);
73
74
 
74
75
  return (
@@ -87,8 +88,8 @@ const TableHeader];
87
88
  {columns.map((column) => (
88
89
  <th
89
90
  key={column.key}
90
- className={`table__header table__header--${size} table__header--${column.align || 'left'} ${sortable && column.sortable ? 'table__header--sortable' } ${sortConfig?.key === column.key ? 'table__header--sorted' }`}
91
- style={{ width}}
91
+ className={`table__header table__header--${size} table__header--${column.align || 'left'} ${sortable && column.sortable ? 'table__header--sortable' : ''} ${sortConfig?.key === column.key ? 'table__header--sorted' : ''}`}
92
+ style={{ width: column.width }}
92
93
  onClick={() => handleSort(column)}
93
94
  >
94
95
  <div className={`table__header-content table__header-content--${column.align || 'left'}`}>
@@ -96,7 +97,8 @@ const TableHeader];
96
97
  {sortable && column.sortable && sortConfig?.key === column.key && (
97
98
  sortConfig.direction === 'asc' ? (
98
99
  <ChevronUpIcon className="table__sort-icon" />
99
- ) ="table__sort-icon" />
100
+ ) : (
101
+ <ChevronDownIcon className="table__sort-icon" />
100
102
  )
101
103
  )}
102
104
  </div>
@@ -108,7 +110,7 @@ const TableHeader];
108
110
  };
109
111
 
110
112
  // Table Row Component
111
- const TableRow= ({
113
+ const TableRow: React.FC<TableRowProps> = ({
112
114
  row,
113
115
  index,
114
116
  columns,
@@ -126,7 +128,7 @@ const TableRow= ({
126
128
 
127
129
  return (
128
130
  <tr
129
- className={`table__row table__row--${size} table__row--${variant} ${selected ? 'table__row--selected' } ${variant === 'striped' && index % 2 === 1 ? 'table__row--striped' }`}
131
+ className={`table__row table__row--${size} table__row--${variant} ${selected ? 'table__row--selected' : ''} ${variant === 'striped' && index % 2 === 1 ? 'table__row--striped' : ''}`}
130
132
  onClick={onClick}
131
133
  >
132
134
  <td className={`table__cell table__cell--select table__cell--${size}`}>
@@ -142,7 +144,7 @@ const TableRow= ({
142
144
  <td
143
145
  key={column.key}
144
146
  className={`table__cell table__cell--${size} table__cell--${column.align || 'left'}`}
145
- style={{ width}}
147
+ style={{ width: column.width }}
146
148
  >
147
149
  {column.key === 'expand' ? (
148
150
  <button
@@ -152,11 +154,12 @@ const TableRow= ({
152
154
  }}
153
155
  className="table__expand-button"
154
156
  >
155
- <div className={`table__expand-icon ${expanded ? 'table__expand-icon--expanded' }`}>
157
+ <div className={`table__expand-icon ${expanded ? 'table__expand-icon--expanded' : ''}`}>
156
158
  <ChevronRightIcon className="table__expand-chevron" />
157
159
  </div>
158
160
  </button>
159
- ) ] || '')
161
+ ) : (
162
+ String(row[column.key] || '')
160
163
  )}
161
164
  </td>
162
165
  ))}
@@ -165,12 +168,13 @@ const TableRow= ({
165
168
  };
166
169
 
167
170
  // Search and Filter Bar Component
168
- const SearchFilterBar;
169
- searchValue?;
170
- onSearchChange?) => void;
171
- filters?];
172
- theme;
173
- size;
171
+ const SearchFilterBar: React.FC<{
172
+ searchable?: boolean;
173
+ searchValue?: string;
174
+ onSearchChange?: (value: string) => void;
175
+ filters?: FilterConfig[];
176
+ theme: 'stan-design' | 'enterprise' | 'harvey';
177
+ size: 'sm' | 'md' | 'lg';
174
178
  }> = ({
175
179
  searchable,
176
180
  searchValue,
@@ -207,7 +211,7 @@ const SearchFilterBar;
207
211
  <FilterIcon />
208
212
  </div>
209
213
  <span className={`table__filter-text table__filter-text--${size}`}>
210
- Filters}
214
+ Filters: {filters.length}
211
215
  </span>
212
216
  </div>
213
217
  )}
@@ -216,11 +220,12 @@ const SearchFilterBar;
216
220
  };
217
221
 
218
222
  // Pagination Component
219
- const TablePagination;
220
- onPageChange?) => void;
221
- onPageSizeChange?) => void;
222
- theme;
223
- size;
223
+ const TablePagination: React.FC<{
224
+ pagination?: PaginationConfig;
225
+ onPageChange?: (page: number) => void;
226
+ onPageSizeChange?: (pageSize: number) => void;
227
+ theme: 'stan-design' | 'enterprise' | 'harvey';
228
+ size: 'sm' | 'md' | 'lg';
224
229
  }> = ({ pagination, onPageChange, onPageSizeChange, size }) => {
225
230
  // const { getTheme } = useTheme();
226
231
  // const themeConfig = getTheme(theme);
@@ -240,7 +245,9 @@ const TablePagination;
240
245
  Showing {startItem}-{endItem} of {totalItems} items
241
246
  </span>
242
247
  <div className="table__pagination-size">
243
- <span>Items per page={pageSize}
248
+ <span>Items per page:</span>
249
+ <select
250
+ value={pageSize}
244
251
  onChange={(e) => onPageSizeChange?.(Number(e.target.value))}
245
252
  className={`table__pagination-select table__pagination-select--${size}`}
246
253
  >
@@ -255,14 +262,14 @@ const TablePagination;
255
262
  <button
256
263
  onClick={() => onPageChange?.(1)}
257
264
  disabled={currentPage === 1}
258
- className={`table__pagination-button table__pagination-button--${size} ${currentPage === 1 ? 'table__pagination-button--disabled' }`}
265
+ className={`table__pagination-button table__pagination-button--${size} ${currentPage === 1 ? 'table__pagination-button--disabled' : ''}`}
259
266
  >
260
267
  First
261
268
  </button>
262
269
  <button
263
270
  onClick={() => onPageChange?.(currentPage - 1)}
264
271
  disabled={currentPage === 1}
265
- className={`table__pagination-button table__pagination-button--${size} ${currentPage === 1 ? 'table__pagination-button--disabled' }`}
272
+ className={`table__pagination-button table__pagination-button--${size} ${currentPage === 1 ? 'table__pagination-button--disabled' : ''}`}
266
273
  >
267
274
  Previous
268
275
  </button>
@@ -274,14 +281,14 @@ const TablePagination;
274
281
  <button
275
282
  onClick={() => onPageChange?.(currentPage + 1)}
276
283
  disabled={currentPage === totalPages}
277
- className={`table__pagination-button table__pagination-button--${size} ${currentPage === totalPages ? 'table__pagination-button--disabled' }`}
284
+ className={`table__pagination-button table__pagination-button--${size} ${currentPage === totalPages ? 'table__pagination-button--disabled' : ''}`}
278
285
  >
279
286
  Next
280
287
  </button>
281
288
  <button
282
289
  onClick={() => onPageChange?.(totalPages)}
283
290
  disabled={currentPage === totalPages}
284
- className={`table__pagination-button table__pagination-button--${size} ${currentPage === totalPages ? 'table__pagination-button--disabled' }`}
291
+ className={`table__pagination-button table__pagination-button--${size} ${currentPage === totalPages ? 'table__pagination-button--disabled' : ''}`}
285
292
  >
286
293
  Last
287
294
  </button>
@@ -291,7 +298,7 @@ const TablePagination;
291
298
  };
292
299
 
293
300
  // Main Table Component
294
- export const Table= ({
301
+ export const Table: React.FC<TableProps> = ({
295
302
  columns,
296
303
  data,
297
304
  sortable = false,
@@ -307,7 +314,8 @@ export const Table= ({
307
314
  onPageChange,
308
315
  onPageSizeChange,
309
316
  filters,
310
- // onFiltersChange, // TODO= false,
317
+ // onFiltersChange, // TODO: Implement filters change handler
318
+ searchable = false,
311
319
  searchValue,
312
320
  onSearchChange,
313
321
  rowKey = 'id',
@@ -332,7 +340,7 @@ export const Table= ({
332
340
  const currentExpandedKeys = expandedKeys || internalExpandedKeys;
333
341
 
334
342
  // Get row key function
335
- const getRowKey = useCallback((row, any>, index)=> {
343
+ const getRowKey = useCallback((row: Record<string, any>, index: number): string => {
336
344
  if (typeof rowKey === 'function') {
337
345
  return rowKey(row);
338
346
  }
@@ -340,9 +348,9 @@ export const Table= ({
340
348
  }, [rowKey]);
341
349
 
342
350
  // Handle row selection
343
- const handleRowSelect = useCallback((row, any>, checked) => {
351
+ const handleRowSelect = useCallback((row: Record<string, any>, checked: boolean) => {
344
352
  const key = getRowKey(row, 0);
345
- let newSelectedKeys];
353
+ let newSelectedKeys: string[];
346
354
 
347
355
  if (checked) {
348
356
  newSelectedKeys = [...currentSelectedKeys, key];
@@ -355,26 +363,26 @@ export const Table= ({
355
363
  }, [currentSelectedKeys, onSelectionChange, getRowKey]);
356
364
 
357
365
  // Handle select all
358
- const handleSelectAll = useCallback((checked) => {
359
- const newSelectedKeys = checked ? data.map((row, index) => getRowKey(row, index)) ];
366
+ const handleSelectAll = useCallback((checked: boolean) => {
367
+ const newSelectedKeys = checked ? data.map((row, index) => getRowKey(row, index)) : [];
360
368
  setInternalSelectedKeys(newSelectedKeys);
361
369
  onSelectionChange?.(newSelectedKeys);
362
370
  }, [data, onSelectionChange, getRowKey]);
363
371
 
364
372
  // Handle row expansion
365
- const handleRowExpand = useCallback((row, any>) => {
373
+ const handleRowExpand = useCallback((row: Record<string, any>) => {
366
374
  const key = getRowKey(row, 0);
367
375
  const expanded = currentExpandedKeys.includes(key);
368
376
  const newExpandedKeys = expanded
369
377
  ? currentExpandedKeys.filter(k => k !== key)
370
- , key];
378
+ : [...currentExpandedKeys, key];
371
379
 
372
380
  setInternalExpandedKeys(newExpandedKeys);
373
381
  onRowExpand?.(row, !expanded);
374
382
  }, [currentExpandedKeys, onRowExpand, getRowKey]);
375
383
 
376
384
  // Handle row click
377
- const handleRowClick = useCallback((row, any>, index) => {
385
+ const handleRowClick = useCallback((row: Record<string, any>, index: number) => {
378
386
  onRowClick?.(row, index);
379
387
  }, [onRowClick]);
380
388
 
@@ -397,7 +405,7 @@ export const Table= ({
397
405
  return (
398
406
  <div className="table__error">
399
407
  <div className={`table__error-text table__error-text--${size}`}>
400
- Error}
408
+ Error: {error}
401
409
  </div>
402
410
  </div>
403
411
  );
@@ -7,7 +7,7 @@ import {
7
7
  } from './types';
8
8
 
9
9
  // Simple icon components (inline SVG)
10
- const CalendarIcon}> = ({ className = '' }) => (
10
+ const CalendarIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
11
11
  <svg
12
12
  className={`timeline__icon ${className}`}
13
13
  fill="none"
@@ -18,7 +18,7 @@ const CalendarIcon}> = ({ className = '' }) => (
18
18
  </svg>
19
19
  );
20
20
 
21
- const ClockIcon}> = ({ className = '' }) => (
21
+ const ClockIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
22
22
  <svg
23
23
  className={`timeline__icon ${className}`}
24
24
  fill="none"
@@ -29,7 +29,7 @@ const ClockIcon}> = ({ className = '' }) => (
29
29
  </svg>
30
30
  );
31
31
 
32
- const UserIcon}> = ({ className = '' }) => (
32
+ const UserIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
33
33
  <svg
34
34
  className={`timeline__icon ${className}`}
35
35
  fill="none"
@@ -40,7 +40,7 @@ const UserIcon}> = ({ className = '' }) => (
40
40
  </svg>
41
41
  );
42
42
 
43
- const BellIcon}> = ({ className = '' }) => (
43
+ const BellIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
44
44
  <svg
45
45
  className={`timeline__icon ${className}`}
46
46
  fill="none"
@@ -51,7 +51,7 @@ const BellIcon}> = ({ className = '' }) => (
51
51
  </svg>
52
52
  );
53
53
 
54
- const SearchIcon}> = ({ className = '' }) => (
54
+ const SearchIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
55
55
  <svg
56
56
  className={`timeline__icon ${className}`}
57
57
  fill="none"
@@ -62,7 +62,7 @@ const SearchIcon}> = ({ className = '' }) => (
62
62
  </svg>
63
63
  );
64
64
 
65
- const FilterIcon}> = ({ className = '' }) => (
65
+ const FilterIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
66
66
  <svg
67
67
  className={`timeline__icon ${className}`}
68
68
  fill="none"
@@ -73,7 +73,7 @@ const FilterIcon}> = ({ className = '' }) => (
73
73
  </svg>
74
74
  );
75
75
 
76
- const DotsIcon}> = ({ className = '' }) => (
76
+ const DotsIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
77
77
  <svg
78
78
  className={`timeline__icon ${className}`}
79
79
  fill="none"
@@ -85,12 +85,13 @@ const DotsIcon}> = ({ className = '' }) => (
85
85
  );
86
86
 
87
87
  // Timeline Search and Filter Bar
88
- const TimelineSearchFilterBar;
89
- searchValue;
90
- onSearchChange) => void;
91
- filterable;
92
- theme;
93
- size;
88
+ const TimelineSearchFilterBar: React.FC<{
89
+ searchable: boolean;
90
+ searchValue: string;
91
+ onSearchChange: (value: string) => void;
92
+ filterable: boolean;
93
+ theme: string;
94
+ size: 'sm' | 'md' | 'lg';
94
95
  }> = ({
95
96
  searchable,
96
97
  searchValue,
@@ -129,10 +130,11 @@ const TimelineSearchFilterBar;
129
130
  };
130
131
 
131
132
  // Timeline Item Actions Component
132
- const TimelineItemActions];
133
- item;
134
- theme;
135
- size;
133
+ const TimelineItemActions: React.FC<{
134
+ actions: TimelineAction[];
135
+ item: TimelineItem;
136
+ theme: string;
137
+ size: 'sm' | 'md' | 'lg';
136
138
  }> = ({ actions, item, size }) => {
137
139
  const [showMenu, setShowMenu] = useState(false);
138
140
 
@@ -147,7 +149,7 @@ const TimelineItemActions];
147
149
  e.stopPropagation();
148
150
  action.onClick(item);
149
151
  }}
150
- className={`timeline__action-button timeline__action-button--${size} ${action.variant === 'danger' ? 'timeline__action-button--danger' }`}
152
+ className={`timeline__action-button timeline__action-button--${size} ${action.variant === 'danger' ? 'timeline__action-button--danger' : ''}`}
151
153
  title={action.label}
152
154
  >
153
155
  {action.icon || <DotsIcon className="timeline__action-icon" />}
@@ -186,7 +188,7 @@ const TimelineItemActions];
186
188
  action.onClick(item);
187
189
  setShowMenu(false);
188
190
  }}
189
- className={`timeline__action-menu-item ${action.variant === 'danger' ? 'timeline__action-menu-item--danger' }`}
191
+ className={`timeline__action-menu-item ${action.variant === 'danger' ? 'timeline__action-menu-item--danger' : ''}`}
190
192
  >
191
193
  {action.icon && <span className="timeline__action-menu-icon">{action.icon}</span>}
192
194
  {action.label}
@@ -200,7 +202,7 @@ const TimelineItemActions];
200
202
  };
201
203
 
202
204
  // Individual Timeline Item Component
203
- const TimelineItemComponent= ({
205
+ const TimelineItemComponent: React.FC<TimelineItemProps> = ({
204
206
  item,
205
207
  position,
206
208
  isLast,
@@ -224,15 +226,15 @@ const TimelineItemComponent= ({
224
226
  }
225
227
 
226
228
  switch (item.type) {
227
- case 'event'="timeline__dot-icon" />;
228
- case 'task'="timeline__dot-icon" />;
229
- case 'user'="timeline__dot-icon" />;
230
- case 'system'="timeline__dot-icon" />;
231
- default;
229
+ case 'event': return <CalendarIcon className="timeline__dot-icon" />;
230
+ case 'task': return <ClockIcon className="timeline__dot-icon" />;
231
+ case 'user': return <UserIcon className="timeline__dot-icon" />;
232
+ case 'system': return <BellIcon className="timeline__dot-icon" />;
233
+ default: return null;
232
234
  }
233
235
  };
234
236
 
235
- const formatTimestamp = (timestamp) => {
237
+ const formatTimestamp = (timestamp: string) => {
236
238
  const date = new Date(timestamp);
237
239
  return date.toLocaleString();
238
240
  };
@@ -241,8 +243,8 @@ const TimelineItemComponent= ({
241
243
  <div className={`timeline__item timeline__item--${mode} timeline__item--${position} timeline__item--${size}`}>
242
244
  {/* Content */}
243
245
  <div
244
- className={`timeline__item-content timeline__item-content--${size} timeline__item-content--${variant} ${isClickable ? 'timeline__item-content--clickable' }`}
245
- onClick={isClickable ? () => onClick(item) }
246
+ className={`timeline__item-content timeline__item-content--${size} timeline__item-content--${variant} ${isClickable ? 'timeline__item-content--clickable' : ''}`}
247
+ onClick={isClickable ? () => onClick(item) : undefined}
246
248
  >
247
249
  <div className={`timeline__item-content-wrapper timeline__item-content-wrapper--${position}`}>
248
250
  {/* Header */}
@@ -325,7 +327,7 @@ const TimelineItemComponent= ({
325
327
  };
326
328
 
327
329
  // Main Timeline Component
328
- export const Timeline= ({
330
+ export const Timeline: React.FC<TimelineProps> = ({
329
331
  items,
330
332
  mode = 'left',
331
333
  reverse = false,
@@ -335,7 +337,9 @@ export const Timeline= ({
335
337
  searchValue = '',
336
338
  onSearchChange,
337
339
  filterable = false,
338
- // filters = [], // TODO, // TODO= true,
340
+ // filters = [], // TODO: Implement filter functionality
341
+ // onFiltersChange, // TODO: Implement filter functionality
342
+ showConnector = true,
339
343
  loading = false,
340
344
  error = null,
341
345
  emptyMessage = 'No timeline items',
@@ -364,7 +368,7 @@ export const Timeline= ({
364
368
  const sorted = [...filteredItems].sort((a, b) => {
365
369
  const dateA = new Date(a.timestamp).getTime();
366
370
  const dateB = new Date(b.timestamp).getTime();
367
- return reverse ? dateB - dateA ;
371
+ return reverse ? dateB - dateA : dateA - dateB;
368
372
  });
369
373
 
370
374
  return sorted;
@@ -404,11 +408,12 @@ export const Timeline= ({
404
408
  <div className="timeline__empty">
405
409
  {emptyMessage}
406
410
  </div>
407
- ) ="timeline__items">
411
+ ) : (
412
+ <div className="timeline__items">
408
413
  {sortedItems.map((item, index) => {
409
414
  const position = mode === 'alternate'
410
- ? (index % 2 === 0 ? 'left' )
411
- ;
415
+ ? (index % 2 === 0 ? 'left' : 'right')
416
+ : mode;
412
417
 
413
418
  return (
414
419
  <TimelineItemComponent