@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
@@ -7,7 +7,7 @@ import {
7
7
  } from './types';
8
8
 
9
9
  // Simple icon components (inline SVG)
10
- const ChevronRightIcon}> = ({ className = '' }) => (
10
+ const ChevronRightIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
11
11
  <svg
12
12
  className={`list__icon ${className}`}
13
13
  fill="none"
@@ -18,7 +18,7 @@ const ChevronRightIcon}> = ({ className = '' }) => (
18
18
  </svg>
19
19
  );
20
20
 
21
- const SearchIcon}> = ({ className = '' }) => (
21
+ const SearchIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
22
22
  <svg
23
23
  className={`list__icon ${className}`}
24
24
  fill="none"
@@ -29,7 +29,7 @@ const SearchIcon}> = ({ className = '' }) => (
29
29
  </svg>
30
30
  );
31
31
 
32
- const FilterIcon}> = ({ className = '' }) => (
32
+ const FilterIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
33
33
  <svg
34
34
  className={`list__icon ${className}`}
35
35
  fill="none"
@@ -40,7 +40,7 @@ const FilterIcon}> = ({ className = '' }) => (
40
40
  </svg>
41
41
  );
42
42
 
43
- const DotsIcon}> = ({ className = '' }) => (
43
+ const DotsIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
44
44
  <svg
45
45
  className={`list__icon ${className}`}
46
46
  fill="none"
@@ -51,7 +51,7 @@ const DotsIcon}> = ({ className = '' }) => (
51
51
  </svg>
52
52
  );
53
53
 
54
- const CheckIcon}> = ({ className = '' }) => (
54
+ const CheckIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
55
55
  <svg
56
56
  className={`list__icon ${className}`}
57
57
  fill="none"
@@ -63,14 +63,15 @@ const CheckIcon}> = ({ className = '' }) => (
63
63
  );
64
64
 
65
65
  // List Search and Filter Bar
66
- const ListSearchFilterBar;
67
- searchValue;
68
- onSearchChange) => void;
69
- filterable;
70
- filters];
71
- onFiltersChange?]) => void;
72
- theme;
73
- size;
66
+ const ListSearchFilterBar: React.FC<{
67
+ searchable: boolean;
68
+ searchValue: string;
69
+ onSearchChange: (value: string) => void;
70
+ filterable: boolean;
71
+ filters: ListFilter[];
72
+ onFiltersChange?: (filters: ListFilter[]) => void;
73
+ theme: string;
74
+ size: 'sm' | 'md' | 'lg';
74
75
  }> = ({
75
76
  searchable,
76
77
  searchValue,
@@ -84,9 +85,10 @@ const ListSearchFilterBar;
84
85
  // const colors = themeConfig?.colors || getDefaultColors();
85
86
 
86
87
  // const sizeClasses = {
87
- // sm,
88
- // md,
89
- // lg};
88
+ // sm: 'h-8 text-sm px-3',
89
+ // md: 'h-10 text-base px-4',
90
+ // lg: 'h-12 text-lg px-5'
91
+ // };
90
92
 
91
93
  if (!searchable && !filterable) return null;
92
94
 
@@ -123,10 +125,11 @@ const ListSearchFilterBar;
123
125
  };
124
126
 
125
127
  // List Item Action Component
126
- const ListItemActions];
127
- item;
128
- theme;
129
- size;
128
+ const ListItemActions: React.FC<{
129
+ actions: ListAction[];
130
+ item: ListItem;
131
+ theme: string;
132
+ size: 'sm' | 'md' | 'lg';
130
133
  }> = ({ actions, item, size }) => {
131
134
  // const { getTheme } = useTheme();
132
135
  // const themeConfig = getTheme(theme);
@@ -135,9 +138,10 @@ const ListItemActions];
135
138
  const [showMenu, setShowMenu] = useState(false);
136
139
 
137
140
  // const sizeClasses = {
138
- // sm,
139
- // md,
140
- // lg};
141
+ // sm: 'p-1',
142
+ // md: 'p-1.5',
143
+ // lg: 'p-2'
144
+ // };
141
145
 
142
146
  if (actions.length === 0) return null;
143
147
 
@@ -150,7 +154,7 @@ const ListItemActions];
150
154
  e.stopPropagation();
151
155
  action.onClick(item);
152
156
  }}
153
- className={`list__action-button list__action-button--${size} ${action.variant === 'danger' ? 'list__action-button--danger' }`}
157
+ className={`list__action-button list__action-button--${size} ${action.variant === 'danger' ? 'list__action-button--danger' : ''}`}
154
158
  title={action.label}
155
159
  >
156
160
  {action.icon || <DotsIcon className="list__action-icon" />}
@@ -189,7 +193,7 @@ const ListItemActions];
189
193
  action.onClick(item);
190
194
  setShowMenu(false);
191
195
  }}
192
- className={`list__action-menu-item ${action.variant === 'danger' ? 'list__action-menu-item--danger' }`}
196
+ className={`list__action-menu-item ${action.variant === 'danger' ? 'list__action-menu-item--danger' : ''}`}
193
197
  >
194
198
  {action.icon && <span className="list__action-menu-icon">{action.icon}</span>}
195
199
  {action.label}
@@ -203,17 +207,18 @@ const ListItemActions];
203
207
  };
204
208
 
205
209
  // Individual List Item Component
206
- const ListItemComponent;
207
- index;
208
- selectable;
209
- selected;
210
- onSelectionChange?) => void;
211
- onClick?, index) => void;
212
- actions];
213
- showDivider;
214
- theme;
215
- size;
216
- variant;
210
+ const ListItemComponent: React.FC<{
211
+ item: ListItem;
212
+ index: number;
213
+ selectable: boolean;
214
+ selected: boolean;
215
+ onSelectionChange?: (selected: boolean) => void;
216
+ onClick?: (item: ListItem, index: number) => void;
217
+ actions: ListAction[];
218
+ showDivider: boolean;
219
+ theme: string;
220
+ size: 'sm' | 'md' | 'lg';
221
+ variant: 'default' | 'bordered' | 'striped';
217
222
  }> = ({
218
223
  item,
219
224
  index,
@@ -232,8 +237,8 @@ const ListItemComponent;
232
237
 
233
238
  return (
234
239
  <div
235
- className={`list__item list__item--${size} list__item--${variant} ${isClickable ? 'list__item--clickable' } ${index % 2 === 1 && variant === 'striped' ? 'list__item--striped' }`}
236
- onClick={isClickable ? () => onClick(item, index) }
240
+ className={`list__item list__item--${size} list__item--${variant} ${isClickable ? 'list__item--clickable' : ''} ${index % 2 === 1 && variant === 'striped' ? 'list__item--striped' : ''}`}
241
+ onClick={isClickable ? () => onClick(item, index) : undefined}
237
242
  >
238
243
  {/* Selection Checkbox */}
239
244
  {selectable && (
@@ -243,7 +248,7 @@ const ListItemComponent;
243
248
  >
244
249
  <button
245
250
  onClick={() => onSelectionChange?.(!selected)}
246
- className={`list__item-checkbox ${selected ? 'list__item-checkbox--selected' }`}
251
+ className={`list__item-checkbox ${selected ? 'list__item-checkbox--selected' : ''}`}
247
252
  >
248
253
  {selected && <CheckIcon className="list__item-checkbox-icon" />}
249
254
  </button>
@@ -259,7 +264,8 @@ const ListItemComponent;
259
264
  alt={item.title}
260
265
  className="list__item-avatar-image"
261
266
  />
262
- ) ="list__item-avatar-placeholder">
267
+ ) : (
268
+ <div className="list__item-avatar-placeholder">
263
269
  {item.avatar}
264
270
  </div>
265
271
  )}
@@ -334,7 +340,7 @@ const ListItemComponent;
334
340
  };
335
341
 
336
342
  // Main List Component
337
- export const List= ({
343
+ export const List: React.FC<ListProps> = ({
338
344
  items,
339
345
  selectable = false,
340
346
  selectedKeys = [],
@@ -346,7 +352,8 @@ export const List= ({
346
352
  onSearchChange,
347
353
  filterable = false,
348
354
  filters = [],
349
- // onFiltersChange, // TODO= false,
355
+ // onFiltersChange, // TODO: Implement filter functionality
356
+ loading = false,
350
357
  error = null,
351
358
  emptyMessage = 'No items found',
352
359
  showDividers = true,
@@ -371,12 +378,12 @@ export const List= ({
371
378
  );
372
379
  }, [items, searchable, searchValue]);
373
380
 
374
- const handleSelectionChange = useCallback((itemKey, selected) => {
381
+ const handleSelectionChange = useCallback((itemKey: string, selected: boolean) => {
375
382
  if (!onSelectionChange) return;
376
383
 
377
384
  const newSelectedKeys = selected
378
385
  ? [...selectedKeys, itemKey]
379
- => key !== itemKey);
386
+ : selectedKeys.filter(key => key !== itemKey);
380
387
 
381
388
  onSelectionChange(newSelectedKeys);
382
389
  }, [selectedKeys, onSelectionChange]);
@@ -417,7 +424,8 @@ export const List= ({
417
424
  <div className="list__empty">
418
425
  {emptyMessage}
419
426
  </div>
420
- ) , index) => {
427
+ ) : (
428
+ filteredItems.map((item, index) => {
421
429
  const itemKey = item.key || item.id || index.toString();
422
430
  const isSelected = selectedKeys.includes(itemKey);
423
431
  const shouldShowDivider = showDividers && index < filteredItems.length - 1;
@@ -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
  );