@pattern-stack/frontend-patterns 0.0.6 → 0.1.0

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 (647) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/LICENSE +19 -0
  3. package/cli/cli/commands/generate-hooks.js +291 -0
  4. package/cli/cli/commands/init.js +25 -0
  5. package/cli/cli/commands/scaffold.js +201 -0
  6. package/cli/cli/index.js +113 -0
  7. package/cli/commands/generate-hooks.js +288 -0
  8. package/cli/commands/generate-hooks.ts +316 -0
  9. package/cli/commands/init.js +22 -0
  10. package/cli/commands/init.ts +33 -0
  11. package/cli/commands/scaffold.js +198 -0
  12. package/cli/commands/scaffold.ts +224 -0
  13. package/cli/index.js +3210 -0
  14. package/cli/index.ts +122 -0
  15. package/cli/src/codegen/openapi/bulk-hook-generator.js +252 -0
  16. package/cli/src/codegen/openapi/bulk-types.js +89 -0
  17. package/cli/src/codegen/openapi/client-generator.js +672 -0
  18. package/cli/src/codegen/openapi/confidence-scorer.js +204 -0
  19. package/cli/src/codegen/openapi/hook-config.js +66 -0
  20. package/cli/src/codegen/openapi/hook-generator.js +1057 -0
  21. package/cli/src/codegen/openapi/parser.js +279 -0
  22. package/cli/src/codegen/openapi/type-generator.js +339 -0
  23. package/dist/atoms/components/core/Avatar/Avatar.d.ts +41 -0
  24. package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -0
  25. package/dist/atoms/components/core/Avatar/index.d.ts +2 -0
  26. package/dist/atoms/components/core/Avatar/index.d.ts.map +1 -0
  27. package/dist/atoms/components/core/Badge/Badge.d.ts +38 -0
  28. package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -0
  29. package/dist/atoms/components/core/Badge/index.d.ts +2 -0
  30. package/dist/atoms/components/core/Badge/index.d.ts.map +1 -0
  31. package/dist/atoms/components/core/Button/Button.d.ts +28 -0
  32. package/dist/atoms/components/core/Button/Button.d.ts.map +1 -0
  33. package/dist/atoms/components/core/Button/index.d.ts +3 -0
  34. package/dist/atoms/components/core/Button/index.d.ts.map +1 -0
  35. package/dist/atoms/components/core/Card/Card.d.ts +41 -0
  36. package/dist/atoms/components/core/Card/Card.d.ts.map +1 -0
  37. package/dist/atoms/components/core/Card/index.d.ts +3 -0
  38. package/dist/atoms/components/core/Card/index.d.ts.map +1 -0
  39. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +28 -0
  40. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -0
  41. package/dist/atoms/components/core/Checkbox/index.d.ts +3 -0
  42. package/dist/atoms/components/core/Checkbox/index.d.ts.map +1 -0
  43. package/dist/atoms/components/core/Input/Input.d.ts +37 -0
  44. package/dist/atoms/components/core/Input/Input.d.ts.map +1 -0
  45. package/dist/atoms/components/core/Input/index.d.ts +3 -0
  46. package/dist/atoms/components/core/Input/index.d.ts.map +1 -0
  47. package/dist/atoms/components/core/Label/Label.d.ts +23 -0
  48. package/dist/atoms/components/core/Label/Label.d.ts.map +1 -0
  49. package/dist/atoms/components/core/Label/index.d.ts +3 -0
  50. package/dist/atoms/components/core/Label/index.d.ts.map +1 -0
  51. package/dist/atoms/components/core/Select/Select.d.ts +42 -0
  52. package/dist/atoms/components/core/Select/Select.d.ts.map +1 -0
  53. package/dist/atoms/components/core/Select/index.d.ts +3 -0
  54. package/dist/atoms/components/core/Select/index.d.ts.map +1 -0
  55. package/dist/atoms/components/core/Spinner/Spinner.d.ts +25 -0
  56. package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -0
  57. package/dist/atoms/components/core/Spinner/index.d.ts +3 -0
  58. package/dist/atoms/components/core/Spinner/index.d.ts.map +1 -0
  59. package/dist/atoms/components/core/Switch/Switch.d.ts +35 -0
  60. package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -0
  61. package/dist/atoms/components/core/Switch/index.d.ts +2 -0
  62. package/dist/atoms/components/core/Switch/index.d.ts.map +1 -0
  63. package/dist/atoms/components/core/index.d.ts +11 -0
  64. package/dist/atoms/components/core/index.d.ts.map +1 -0
  65. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +4 -0
  66. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -0
  67. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +38 -0
  68. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +1 -0
  69. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +9 -0
  70. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -0
  71. package/dist/atoms/components/data/ActivityFeed/index.d.ts +4 -0
  72. package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -0
  73. package/dist/atoms/components/data/ActivityFeed/types.d.ts +26 -0
  74. package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -0
  75. package/dist/atoms/components/data/ActivityFeed/utils.d.ts +5 -0
  76. package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -0
  77. package/dist/atoms/{composed → components/data}/Chart/Chart.d.ts +2 -2
  78. package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -0
  79. package/dist/atoms/components/data/Chart/index.d.ts.map +1 -0
  80. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +18 -0
  81. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -0
  82. package/dist/atoms/components/data/DataBadge/index.d.ts.map +1 -0
  83. package/dist/atoms/components/data/DataTable/DataTable.d.ts +5 -0
  84. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -0
  85. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +51 -0
  86. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -0
  87. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts.map +1 -0
  88. package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -0
  89. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -0
  90. package/dist/atoms/components/data/DetailedCard/index.d.ts.map +1 -0
  91. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +24 -0
  92. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -0
  93. package/dist/atoms/components/data/EntityIcon/index.d.ts +2 -0
  94. package/dist/atoms/components/data/EntityIcon/index.d.ts.map +1 -0
  95. package/dist/atoms/{composed → components/data}/IconBadge/IconBadge.d.ts +2 -1
  96. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -0
  97. package/dist/atoms/components/data/IconBadge/index.d.ts.map +1 -0
  98. package/dist/atoms/components/data/ListCard/ListCard.d.ts +32 -0
  99. package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -0
  100. package/dist/atoms/components/data/ListCard/index.d.ts +2 -0
  101. package/dist/atoms/components/data/ListCard/index.d.ts.map +1 -0
  102. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -0
  103. package/dist/atoms/components/data/ProgressBar/index.d.ts.map +1 -0
  104. package/dist/atoms/{composed → components/data}/StatCard/StatCard.d.ts +1 -1
  105. package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -0
  106. package/dist/atoms/components/data/StatCard/index.d.ts.map +1 -0
  107. package/dist/atoms/components/data/Table/Table.d.ts +41 -0
  108. package/dist/atoms/components/data/Table/Table.d.ts.map +1 -0
  109. package/dist/atoms/components/data/Table/index.d.ts +2 -0
  110. package/dist/atoms/components/data/Table/index.d.ts.map +1 -0
  111. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +26 -0
  112. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -0
  113. package/dist/atoms/components/data/TruncatedText/index.d.ts +2 -0
  114. package/dist/atoms/components/data/TruncatedText/index.d.ts.map +1 -0
  115. package/dist/atoms/components/data/index.d.ts +13 -0
  116. package/dist/atoms/components/data/index.d.ts.map +1 -0
  117. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -0
  118. package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -0
  119. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts.map +1 -0
  120. package/dist/atoms/components/domain/index.d.ts +2 -0
  121. package/dist/atoms/components/domain/index.d.ts.map +1 -0
  122. package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -0
  123. package/dist/atoms/components/feedback/Alert/index.d.ts.map +1 -0
  124. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -0
  125. package/dist/atoms/components/feedback/EmptyState/index.d.ts.map +1 -0
  126. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +61 -0
  127. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  128. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +2 -0
  129. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts.map +1 -0
  130. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +41 -0
  131. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -0
  132. package/dist/atoms/components/feedback/Skeleton/index.d.ts +2 -0
  133. package/dist/atoms/components/feedback/Skeleton/index.d.ts.map +1 -0
  134. package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -0
  135. package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -0
  136. package/dist/atoms/components/feedback/index.d.ts +6 -0
  137. package/dist/atoms/components/feedback/index.d.ts.map +1 -0
  138. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  139. package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +1 -0
  140. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -0
  141. package/dist/atoms/components/forms/FileUpload/index.d.ts.map +1 -0
  142. package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -0
  143. package/dist/atoms/components/forms/FormField/index.d.ts.map +1 -0
  144. package/dist/atoms/components/forms/index.d.ts +4 -0
  145. package/dist/atoms/components/forms/index.d.ts.map +1 -0
  146. package/dist/atoms/components/index.d.ts +10 -0
  147. package/dist/atoms/components/index.d.ts.map +1 -0
  148. package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -0
  149. package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -0
  150. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  151. package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -0
  152. package/dist/atoms/components/layout/Dialog/index.d.ts +3 -0
  153. package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -0
  154. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +40 -0
  155. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -0
  156. package/dist/atoms/components/layout/Dropdown/index.d.ts +3 -0
  157. package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -0
  158. package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -0
  159. package/dist/atoms/components/layout/Modal/index.d.ts.map +1 -0
  160. package/dist/atoms/components/layout/Tabs/index.d.ts +2 -0
  161. package/dist/atoms/components/layout/Tabs/index.d.ts.map +1 -0
  162. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -0
  163. package/dist/atoms/components/layout/Tooltip/index.d.ts +2 -0
  164. package/dist/atoms/components/layout/Tooltip/index.d.ts.map +1 -0
  165. package/dist/atoms/components/layout/index.d.ts +8 -0
  166. package/dist/atoms/components/layout/index.d.ts.map +1 -0
  167. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -0
  168. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -0
  169. package/dist/atoms/components/navigation/index.d.ts +2 -0
  170. package/dist/atoms/components/navigation/index.d.ts.map +1 -0
  171. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  172. package/dist/atoms/components/theme/ColorSwatch/index.d.ts.map +1 -0
  173. package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -0
  174. package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -0
  175. package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -0
  176. package/dist/atoms/components/theme/index.d.ts +5 -0
  177. package/dist/atoms/components/theme/index.d.ts.map +1 -0
  178. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -0
  179. package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -0
  180. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -0
  181. package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -0
  182. package/dist/atoms/components/user/index.d.ts +3 -0
  183. package/dist/atoms/components/user/index.d.ts.map +1 -0
  184. package/dist/atoms/config/responsive.d.ts +147 -0
  185. package/dist/atoms/config/responsive.d.ts.map +1 -0
  186. package/dist/atoms/hooks/index.d.ts +5 -0
  187. package/dist/atoms/hooks/index.d.ts.map +1 -0
  188. package/dist/atoms/hooks/use-toast.d.ts +16 -0
  189. package/dist/atoms/hooks/use-toast.d.ts.map +1 -0
  190. package/dist/atoms/hooks/useResponsive.d.ts +42 -0
  191. package/dist/atoms/hooks/useResponsive.d.ts.map +1 -0
  192. package/dist/atoms/index.d.ts +4 -5
  193. package/dist/atoms/index.d.ts.map +1 -1
  194. package/dist/atoms/primitives/Badge.d.ts.map +1 -0
  195. package/dist/atoms/{ui → primitives}/ErrorBoundary.d.ts +1 -1
  196. package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -0
  197. package/dist/atoms/primitives/Select.d.ts.map +1 -0
  198. package/dist/atoms/primitives/Switch.d.ts.map +1 -0
  199. package/dist/atoms/primitives/Tabs.d.ts.map +1 -0
  200. package/dist/atoms/primitives/avatar.d.ts.map +1 -0
  201. package/dist/atoms/{ui → primitives}/button.d.ts +2 -2
  202. package/dist/atoms/primitives/button.d.ts.map +1 -0
  203. package/dist/atoms/primitives/card.d.ts.map +1 -0
  204. package/dist/atoms/primitives/checkbox.d.ts +12 -0
  205. package/dist/atoms/primitives/checkbox.d.ts.map +1 -0
  206. package/dist/atoms/primitives/dialog.d.ts +34 -0
  207. package/dist/atoms/primitives/dialog.d.ts.map +1 -0
  208. package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -0
  209. package/dist/atoms/{ui → primitives}/index.d.ts +2 -0
  210. package/dist/atoms/primitives/index.d.ts.map +1 -0
  211. package/dist/atoms/primitives/input.d.ts.map +1 -0
  212. package/dist/atoms/primitives/label.d.ts.map +1 -0
  213. package/dist/atoms/primitives/skeleton.d.ts.map +1 -0
  214. package/dist/atoms/primitives/spinner.d.ts.map +1 -0
  215. package/dist/atoms/primitives/table.d.ts.map +1 -0
  216. package/dist/atoms/shared/index.d.ts +1 -0
  217. package/dist/atoms/shared/index.d.ts.map +1 -1
  218. package/dist/atoms/types/index.d.ts +1 -0
  219. package/dist/atoms/types/index.d.ts.map +1 -1
  220. package/dist/atoms/types/navigation.d.ts +1 -1
  221. package/dist/atoms/types/navigation.d.ts.map +1 -1
  222. package/dist/atoms/types/ui-config.d.ts +50 -0
  223. package/dist/atoms/types/ui-config.d.ts.map +1 -0
  224. package/dist/atoms/utils/color-manager.d.ts +68 -0
  225. package/dist/atoms/utils/color-manager.d.ts.map +1 -0
  226. package/dist/atoms/utils/debounce.d.ts +6 -0
  227. package/dist/atoms/utils/debounce.d.ts.map +1 -0
  228. package/dist/atoms/utils/field-detection.d.ts +15 -0
  229. package/dist/atoms/utils/field-detection.d.ts.map +1 -0
  230. package/dist/atoms/utils/icon-resolver.d.ts +5 -1
  231. package/dist/atoms/utils/icon-resolver.d.ts.map +1 -1
  232. package/dist/atoms/utils/index.d.ts +5 -0
  233. package/dist/atoms/utils/index.d.ts.map +1 -0
  234. package/dist/atoms/utils/ui-mapping.d.ts +17 -0
  235. package/dist/atoms/utils/ui-mapping.d.ts.map +1 -0
  236. package/dist/atoms/utils/utils.d.ts +3 -0
  237. package/dist/atoms/utils/utils.d.ts.map +1 -1
  238. package/dist/codegen/index.d.ts +7 -0
  239. package/dist/codegen/index.d.ts.map +1 -0
  240. package/dist/codegen/openapi/bulk-hook-generator.d.ts +40 -0
  241. package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +1 -0
  242. package/dist/codegen/openapi/bulk-types.d.ts +142 -0
  243. package/dist/codegen/openapi/bulk-types.d.ts.map +1 -0
  244. package/dist/codegen/openapi/client-generator.d.ts +52 -0
  245. package/dist/codegen/openapi/client-generator.d.ts.map +1 -0
  246. package/dist/codegen/openapi/confidence-scorer.d.ts +30 -0
  247. package/dist/codegen/openapi/confidence-scorer.d.ts.map +1 -0
  248. package/dist/codegen/openapi/hook-config.d.ts +50 -0
  249. package/dist/codegen/openapi/hook-config.d.ts.map +1 -0
  250. package/dist/codegen/openapi/hook-generator.d.ts +108 -0
  251. package/dist/codegen/openapi/hook-generator.d.ts.map +1 -0
  252. package/dist/codegen/openapi/index.d.ts +27 -0
  253. package/dist/codegen/openapi/index.d.ts.map +1 -0
  254. package/dist/codegen/openapi/parser.d.ts +107 -0
  255. package/dist/codegen/openapi/parser.d.ts.map +1 -0
  256. package/dist/codegen/openapi/type-generator.d.ts +53 -0
  257. package/dist/codegen/openapi/type-generator.d.ts.map +1 -0
  258. package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
  259. package/dist/features/auth/components/ProtectedRoute.d.ts +1 -1
  260. package/dist/features/auth/hooks/index.d.ts +1 -0
  261. package/dist/features/auth/hooks/index.d.ts.map +1 -1
  262. package/dist/features/auth/hooks/useAuthContext.d.ts +7 -0
  263. package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -0
  264. package/dist/features/auth/index.d.ts +1 -0
  265. package/dist/features/auth/index.d.ts.map +1 -1
  266. package/dist/features/auth/providers/MockAuthProvider.d.ts +9 -0
  267. package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -0
  268. package/dist/features/auth/providers/index.d.ts +2 -0
  269. package/dist/features/auth/providers/index.d.ts.map +1 -0
  270. package/dist/features/auth/services/mock-auth-service.d.ts +17 -0
  271. package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -0
  272. package/dist/frontend-patterns.css +4417 -1
  273. package/dist/generated/client/client.d.ts +23 -0
  274. package/dist/generated/client/client.d.ts.map +1 -0
  275. package/dist/generated/client/config.d.ts +10 -0
  276. package/dist/generated/client/config.d.ts.map +1 -0
  277. package/dist/generated/client/index.d.ts +12 -0
  278. package/dist/generated/client/index.d.ts.map +1 -0
  279. package/dist/generated/client/methods.d.ts +591 -0
  280. package/dist/generated/client/methods.d.ts.map +1 -0
  281. package/dist/generated/client/types.d.ts +37 -0
  282. package/dist/generated/client/types.d.ts.map +1 -0
  283. package/dist/generated/example.d.ts +8 -0
  284. package/dist/generated/example.d.ts.map +1 -0
  285. package/dist/generated/hooks/index.d.ts +11 -0
  286. package/dist/generated/hooks/index.d.ts.map +1 -0
  287. package/dist/generated/hooks/keys.d.ts +59 -0
  288. package/dist/generated/hooks/keys.d.ts.map +1 -0
  289. package/dist/generated/hooks/mutations.d.ts +551 -0
  290. package/dist/generated/hooks/mutations.d.ts.map +1 -0
  291. package/dist/generated/hooks/queries.d.ts +426 -0
  292. package/dist/generated/hooks/queries.d.ts.map +1 -0
  293. package/dist/generated/hooks/types.d.ts +318 -0
  294. package/dist/generated/hooks/types.d.ts.map +1 -0
  295. package/dist/generated/index.d.ts +13 -0
  296. package/dist/generated/index.d.ts.map +1 -0
  297. package/dist/generated/types/endpoints.d.ts +1364 -0
  298. package/dist/generated/types/endpoints.d.ts.map +1 -0
  299. package/dist/generated/types/index.d.ts +11 -0
  300. package/dist/generated/types/index.d.ts.map +1 -0
  301. package/dist/generated/types/parameters.d.ts +8 -0
  302. package/dist/generated/types/parameters.d.ts.map +1 -0
  303. package/dist/generated/types/responses.d.ts +8 -0
  304. package/dist/generated/types/responses.d.ts.map +1 -0
  305. package/dist/generated/types/schemas.d.ts +652 -0
  306. package/dist/generated/types/schemas.d.ts.map +1 -0
  307. package/dist/index.d.ts +8 -0
  308. package/dist/index.d.ts.map +1 -1
  309. package/dist/index.es.js +27049 -8420
  310. package/dist/index.es.js.map +1 -1
  311. package/dist/index.js +25314 -6664
  312. package/dist/index.js.map +1 -1
  313. package/dist/molecules/feedback/index.d.ts +2 -0
  314. package/dist/molecules/feedback/index.d.ts.map +1 -0
  315. package/dist/molecules/forms/SearchInput.d.ts.map +1 -1
  316. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
  317. package/dist/molecules/layout/BulkSelectionBar.d.ts +15 -0
  318. package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -0
  319. package/dist/molecules/layout/NavigationContext.d.ts.map +1 -1
  320. package/dist/molecules/layout/index.d.ts +1 -0
  321. package/dist/molecules/layout/index.d.ts.map +1 -1
  322. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
  323. package/dist/templates/DataTemplate.d.ts +1 -1
  324. package/dist/templates/DataTemplate.d.ts.map +1 -1
  325. package/dist/templates/EnhancedDataTemplate.d.ts +188 -0
  326. package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -0
  327. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +18 -0
  328. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -0
  329. package/dist/templates/EnhancedDataTemplate.hooks.d.ts +22 -0
  330. package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -0
  331. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
  332. package/dist/templates/admin/AdminDashboardTemplate.d.ts +6 -9
  333. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
  334. package/dist/templates/admin/AdminDetailTemplate.d.ts +1 -1
  335. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
  336. package/dist/templates/api/APIDataTemplate.d.ts +66 -0
  337. package/dist/templates/api/APIDataTemplate.d.ts.map +1 -0
  338. package/dist/templates/api/index.d.ts +8 -0
  339. package/dist/templates/api/index.d.ts.map +1 -0
  340. package/dist/templates/index.d.ts +2 -0
  341. package/dist/templates/index.d.ts.map +1 -1
  342. package/package.json +29 -8
  343. package/dist/atoms/composed/Accordion/Accordion.d.ts.map +0 -1
  344. package/dist/atoms/composed/Accordion/index.d.ts.map +0 -1
  345. package/dist/atoms/composed/Alert/Alert.d.ts.map +0 -1
  346. package/dist/atoms/composed/Alert/index.d.ts.map +0 -1
  347. package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  348. package/dist/atoms/composed/Breadcrumb/index.d.ts.map +0 -1
  349. package/dist/atoms/composed/Chart/Chart.d.ts.map +0 -1
  350. package/dist/atoms/composed/Chart/index.d.ts.map +0 -1
  351. package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +0 -1
  352. package/dist/atoms/composed/ColorSwatch/index.d.ts.map +0 -1
  353. package/dist/atoms/composed/DarkModeToggle.d.ts.map +0 -1
  354. package/dist/atoms/composed/DataBadge/DataBadge.d.ts +0 -13
  355. package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +0 -1
  356. package/dist/atoms/composed/DataBadge/index.d.ts.map +0 -1
  357. package/dist/atoms/composed/DataTable/DataTable.d.ts +0 -28
  358. package/dist/atoms/composed/DataTable/DataTable.d.ts.map +0 -1
  359. package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +0 -1
  360. package/dist/atoms/composed/DataTable/index.d.ts.map +0 -1
  361. package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  362. package/dist/atoms/composed/DateTimePicker/index.d.ts.map +0 -1
  363. package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +0 -1
  364. package/dist/atoms/composed/DetailedCard/index.d.ts.map +0 -1
  365. package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +0 -1
  366. package/dist/atoms/composed/EmptyState/index.d.ts.map +0 -1
  367. package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +0 -1
  368. package/dist/atoms/composed/FileUpload/index.d.ts.map +0 -1
  369. package/dist/atoms/composed/FormField/FormField.d.ts.map +0 -1
  370. package/dist/atoms/composed/FormField/index.d.ts.map +0 -1
  371. package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +0 -1
  372. package/dist/atoms/composed/GlobalSearch/index.d.ts.map +0 -1
  373. package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +0 -1
  374. package/dist/atoms/composed/IconBadge/index.d.ts.map +0 -1
  375. package/dist/atoms/composed/Modal/Modal.d.ts.map +0 -1
  376. package/dist/atoms/composed/Modal/index.d.ts.map +0 -1
  377. package/dist/atoms/composed/PaletteSwitcher.d.ts.map +0 -1
  378. package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +0 -1
  379. package/dist/atoms/composed/ProgressBar/index.d.ts.map +0 -1
  380. package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts.map +0 -1
  381. package/dist/atoms/composed/SalesPanel/index.d.ts.map +0 -1
  382. package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts.map +0 -1
  383. package/dist/atoms/composed/StatCard/StatCard.d.ts.map +0 -1
  384. package/dist/atoms/composed/StatCard/index.d.ts.map +0 -1
  385. package/dist/atoms/composed/StyleGuide.d.ts.map +0 -1
  386. package/dist/atoms/composed/Toast/Toast.d.ts.map +0 -1
  387. package/dist/atoms/composed/Toast/index.d.ts.map +0 -1
  388. package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +0 -1
  389. package/dist/atoms/composed/Tooltip/index.d.ts +0 -2
  390. package/dist/atoms/composed/Tooltip/index.d.ts.map +0 -1
  391. package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +0 -1
  392. package/dist/atoms/composed/UserAvatar/index.d.ts.map +0 -1
  393. package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +0 -1
  394. package/dist/atoms/composed/UserMenu/index.d.ts.map +0 -1
  395. package/dist/atoms/composed/index.d.ts +0 -26
  396. package/dist/atoms/composed/index.d.ts.map +0 -1
  397. package/dist/atoms/ui/Badge.d.ts.map +0 -1
  398. package/dist/atoms/ui/ErrorBoundary.d.ts.map +0 -1
  399. package/dist/atoms/ui/Select.d.ts.map +0 -1
  400. package/dist/atoms/ui/Switch.d.ts.map +0 -1
  401. package/dist/atoms/ui/Tabs.d.ts.map +0 -1
  402. package/dist/atoms/ui/avatar.d.ts.map +0 -1
  403. package/dist/atoms/ui/button.d.ts.map +0 -1
  404. package/dist/atoms/ui/card.d.ts.map +0 -1
  405. package/dist/atoms/ui/dropdown-menu.d.ts.map +0 -1
  406. package/dist/atoms/ui/index.d.ts.map +0 -1
  407. package/dist/atoms/ui/input.d.ts.map +0 -1
  408. package/dist/atoms/ui/label.d.ts.map +0 -1
  409. package/dist/atoms/ui/skeleton.d.ts.map +0 -1
  410. package/dist/atoms/ui/spinner.d.ts.map +0 -1
  411. package/dist/atoms/ui/table.d.ts.map +0 -1
  412. package/src/App.css +0 -42
  413. package/src/App.tsx +0 -64
  414. package/src/__tests__/README.md +0 -221
  415. package/src/__tests__/atoms/composed/databadge.test.tsx +0 -106
  416. package/src/__tests__/atoms/composed/statcard.test.tsx +0 -133
  417. package/src/__tests__/atoms/hooks/simple-hooks.test.ts +0 -44
  418. package/src/__tests__/atoms/ui/button.test.tsx +0 -68
  419. package/src/__tests__/atoms/utils/icon-resolver.test.tsx +0 -140
  420. package/src/__tests__/atoms/utils/simple.test.ts +0 -18
  421. package/src/__tests__/atoms/utils/utils.test.ts +0 -77
  422. package/src/__tests__/features/auth/simple-auth.test.tsx +0 -40
  423. package/src/__tests__/molecules/layout/simple-layout.test.tsx +0 -81
  424. package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +0 -167
  425. package/src/__tests__/setup.ts +0 -51
  426. package/src/__tests__/utils.tsx +0 -123
  427. package/src/atoms/composed/Accordion/Accordion.tsx +0 -271
  428. package/src/atoms/composed/Accordion/index.ts +0 -1
  429. package/src/atoms/composed/Alert/Alert.tsx +0 -132
  430. package/src/atoms/composed/Alert/index.ts +0 -1
  431. package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +0 -83
  432. package/src/atoms/composed/Breadcrumb/index.ts +0 -1
  433. package/src/atoms/composed/Chart/Chart.tsx +0 -425
  434. package/src/atoms/composed/Chart/index.ts +0 -2
  435. package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +0 -72
  436. package/src/atoms/composed/ColorSwatch/index.ts +0 -1
  437. package/src/atoms/composed/DarkModeToggle.tsx +0 -66
  438. package/src/atoms/composed/DataBadge/DataBadge.tsx +0 -81
  439. package/src/atoms/composed/DataBadge/index.ts +0 -1
  440. package/src/atoms/composed/DataTable/DataTable.tsx +0 -394
  441. package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +0 -41
  442. package/src/atoms/composed/DataTable/index.ts +0 -2
  443. package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +0 -611
  444. package/src/atoms/composed/DateTimePicker/index.ts +0 -2
  445. package/src/atoms/composed/DetailedCard/DetailedCard.tsx +0 -181
  446. package/src/atoms/composed/DetailedCard/index.ts +0 -2
  447. package/src/atoms/composed/EmptyState/EmptyState.tsx +0 -90
  448. package/src/atoms/composed/EmptyState/index.ts +0 -1
  449. package/src/atoms/composed/FileUpload/FileUpload.tsx +0 -477
  450. package/src/atoms/composed/FileUpload/index.ts +0 -2
  451. package/src/atoms/composed/FormField/FormField.tsx +0 -92
  452. package/src/atoms/composed/FormField/index.ts +0 -1
  453. package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +0 -37
  454. package/src/atoms/composed/GlobalSearch/index.ts +0 -1
  455. package/src/atoms/composed/IconBadge/IconBadge.tsx +0 -95
  456. package/src/atoms/composed/IconBadge/index.ts +0 -2
  457. package/src/atoms/composed/Modal/Modal.tsx +0 -223
  458. package/src/atoms/composed/Modal/index.ts +0 -2
  459. package/src/atoms/composed/PaletteSwitcher.tsx +0 -386
  460. package/src/atoms/composed/ProgressBar/ProgressBar.tsx +0 -116
  461. package/src/atoms/composed/ProgressBar/index.ts +0 -1
  462. package/src/atoms/composed/SalesPanel/SalesPanel.tsx +0 -116
  463. package/src/atoms/composed/SalesPanel/index.ts +0 -1
  464. package/src/atoms/composed/SalesPanel/mockSalesData.ts +0 -151
  465. package/src/atoms/composed/StatCard/StatCard.tsx +0 -219
  466. package/src/atoms/composed/StatCard/index.ts +0 -1
  467. package/src/atoms/composed/StyleGuide.tsx +0 -717
  468. package/src/atoms/composed/Toast/Toast.tsx +0 -219
  469. package/src/atoms/composed/Toast/index.ts +0 -1
  470. package/src/atoms/composed/Tooltip/Tooltip.tsx +0 -213
  471. package/src/atoms/composed/Tooltip/index.ts +0 -1
  472. package/src/atoms/composed/UserAvatar/UserAvatar.tsx +0 -139
  473. package/src/atoms/composed/UserAvatar/index.ts +0 -1
  474. package/src/atoms/composed/UserMenu/UserMenu.tsx +0 -16
  475. package/src/atoms/composed/UserMenu/index.ts +0 -1
  476. package/src/atoms/composed/index.ts +0 -30
  477. package/src/atoms/hooks/useApi.ts +0 -80
  478. package/src/atoms/hooks/useHealth.ts +0 -17
  479. package/src/atoms/index.ts +0 -13
  480. package/src/atoms/services/api/client.ts +0 -134
  481. package/src/atoms/services/auth-service.ts +0 -248
  482. package/src/atoms/services/health.ts +0 -15
  483. package/src/atoms/services/index.ts +0 -3
  484. package/src/atoms/shared/config/constants.ts +0 -17
  485. package/src/atoms/shared/config/dashboard-sizes.ts +0 -111
  486. package/src/atoms/shared/config/environment.ts +0 -10
  487. package/src/atoms/shared/index.ts +0 -4
  488. package/src/atoms/shared/styles/color-palettes.css +0 -566
  489. package/src/atoms/types/auth.ts +0 -62
  490. package/src/atoms/types/entity-config.ts +0 -127
  491. package/src/atoms/types/generated.ts +0 -1469
  492. package/src/atoms/types/index.ts +0 -6
  493. package/src/atoms/types/loading.ts +0 -28
  494. package/src/atoms/types/navigation.ts +0 -43
  495. package/src/atoms/ui/Badge.tsx +0 -30
  496. package/src/atoms/ui/ErrorBoundary.tsx +0 -59
  497. package/src/atoms/ui/Select.tsx +0 -53
  498. package/src/atoms/ui/Switch.tsx +0 -42
  499. package/src/atoms/ui/Tabs.tsx +0 -118
  500. package/src/atoms/ui/avatar.tsx +0 -48
  501. package/src/atoms/ui/button.tsx +0 -70
  502. package/src/atoms/ui/card.tsx +0 -76
  503. package/src/atoms/ui/dropdown-menu.tsx +0 -199
  504. package/src/atoms/ui/index.ts +0 -39
  505. package/src/atoms/ui/input.tsx +0 -23
  506. package/src/atoms/ui/label.tsx +0 -23
  507. package/src/atoms/ui/skeleton.tsx +0 -13
  508. package/src/atoms/ui/spinner.tsx +0 -49
  509. package/src/atoms/ui/table.tsx +0 -116
  510. package/src/atoms/utils/animations.ts +0 -135
  511. package/src/atoms/utils/icon-resolver.tsx +0 -54
  512. package/src/atoms/utils/metric-engine.ts +0 -236
  513. package/src/atoms/utils/tooltip-helpers.ts +0 -140
  514. package/src/atoms/utils/utils.ts +0 -11
  515. package/src/features/auth/components/LoginForm.tsx +0 -168
  516. package/src/features/auth/components/LogoutButton.tsx +0 -19
  517. package/src/features/auth/components/ProtectedRoute.tsx +0 -60
  518. package/src/features/auth/components/index.ts +0 -4
  519. package/src/features/auth/hooks/index.ts +0 -2
  520. package/src/features/auth/hooks/useAuth.tsx +0 -205
  521. package/src/features/auth/hooks/usePermissions.ts +0 -35
  522. package/src/features/auth/index.ts +0 -2
  523. package/src/features/index.ts +0 -2
  524. package/src/index.css +0 -704
  525. package/src/index.ts +0 -13
  526. package/src/main.tsx +0 -48
  527. package/src/molecules/.gitkeep +0 -0
  528. package/src/molecules/forms/FormGroup.tsx +0 -75
  529. package/src/molecules/forms/SearchInput.tsx +0 -259
  530. package/src/molecules/forms/index.ts +0 -4
  531. package/src/molecules/index.ts +0 -4
  532. package/src/molecules/layout/AppHeader/AppHeader.tsx +0 -42
  533. package/src/molecules/layout/AppHeader/index.ts +0 -1
  534. package/src/molecules/layout/AppLayout.tsx +0 -29
  535. package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +0 -42
  536. package/src/molecules/layout/DashboardWithSidePanel/index.ts +0 -1
  537. package/src/molecules/layout/NavigationContext.tsx +0 -63
  538. package/src/molecules/layout/PageTemplate.tsx +0 -87
  539. package/src/molecules/layout/SectionHeader/SectionHeader.tsx +0 -87
  540. package/src/molecules/layout/SectionHeader/index.ts +0 -1
  541. package/src/molecules/layout/ShowcaseSection.tsx +0 -57
  542. package/src/molecules/layout/Sidebar.tsx +0 -131
  543. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +0 -121
  544. package/src/molecules/layout/SidebarButton/index.ts +0 -1
  545. package/src/molecules/layout/SidebarContext.tsx +0 -31
  546. package/src/molecules/layout/index.ts +0 -10
  547. package/src/molecules/navigation/NavMenu.tsx +0 -188
  548. package/src/molecules/navigation/Pagination.tsx +0 -172
  549. package/src/molecules/navigation/index.ts +0 -4
  550. package/src/organisms/entity/CategoryBreakdownPanel.tsx +0 -427
  551. package/src/organisms/entity/EntityListPanel.tsx +0 -339
  552. package/src/organisms/entity/MetricsOverviewPanel.tsx +0 -236
  553. package/src/organisms/entity/TrendAnalysisPanel.tsx +0 -337
  554. package/src/organisms/entity/index.ts +0 -4
  555. package/src/organisms/index.ts +0 -9
  556. package/src/organisms/showcase/ComponentShowcasePage.tsx +0 -2496
  557. package/src/organisms/showcase/index.ts +0 -1
  558. package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +0 -242
  559. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +0 -173
  560. package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +0 -385
  561. package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +0 -158
  562. package/src/pages/AdminShowcase/index.tsx +0 -4
  563. package/src/pages/ComponentShowcase/BadgesShowcase.tsx +0 -188
  564. package/src/pages/ComponentShowcase/CardsShowcase.tsx +0 -392
  565. package/src/pages/ComponentShowcase/PalettesShowcase.tsx +0 -207
  566. package/src/pages/ComponentShowcase/StatesShowcase.tsx +0 -485
  567. package/src/pages/ComponentShowcase/TablesShowcase.tsx +0 -134
  568. package/src/pages/ComponentShowcase/TypographyShowcase.tsx +0 -255
  569. package/src/pages/ComponentShowcase/index.tsx +0 -188
  570. package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +0 -137
  571. package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +0 -117
  572. package/src/pages/EntityShowcase/index.ts +0 -2
  573. package/src/pages/EntityTemplateExample.tsx +0 -229
  574. package/src/pages/TestEntityTemplate.tsx +0 -40
  575. package/src/pages/index.ts +0 -3
  576. package/src/templates/AuthTemplate.tsx +0 -216
  577. package/src/templates/ComponentShowcaseTemplate.tsx +0 -173
  578. package/src/templates/DashboardTemplate.tsx +0 -232
  579. package/src/templates/DataTemplate.tsx +0 -319
  580. package/src/templates/admin/AdminCRUDTemplate.tsx +0 -630
  581. package/src/templates/admin/AdminDashboardTemplate.tsx +0 -351
  582. package/src/templates/admin/AdminDetailTemplate.tsx +0 -563
  583. package/src/templates/admin/index.ts +0 -29
  584. package/src/templates/entity/EntityManagementTemplate.tsx +0 -430
  585. package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +0 -277
  586. package/src/templates/entity/configs/financial-config.ts +0 -141
  587. package/src/templates/entity/configs/index.ts +0 -1
  588. package/src/templates/entity/index.ts +0 -3
  589. package/src/templates/factory.tsx +0 -176
  590. package/src/templates/financial/FinancialDashboardTemplate.tsx +0 -326
  591. package/src/templates/index.ts +0 -41
  592. package/src/vite-env.d.ts +0 -1
  593. /package/dist/atoms/{composed → components/data}/Chart/index.d.ts +0 -0
  594. /package/dist/atoms/{composed → components/data}/DataBadge/index.d.ts +0 -0
  595. /package/dist/atoms/{composed → components/data}/DataTable/TableCellWithTooltip.d.ts +0 -0
  596. /package/dist/atoms/{composed → components/data}/DataTable/index.d.ts +0 -0
  597. /package/dist/atoms/{composed → components/data}/DetailedCard/DetailedCard.d.ts +0 -0
  598. /package/dist/atoms/{composed → components/data}/DetailedCard/index.d.ts +0 -0
  599. /package/dist/atoms/{composed → components/data}/IconBadge/index.d.ts +0 -0
  600. /package/dist/atoms/{composed → components/data}/ProgressBar/ProgressBar.d.ts +0 -0
  601. /package/dist/atoms/{composed → components/data}/ProgressBar/index.d.ts +0 -0
  602. /package/dist/atoms/{composed → components/data}/StatCard/index.d.ts +0 -0
  603. /package/dist/atoms/{composed → components/domain}/SalesPanel/SalesPanel.d.ts +0 -0
  604. /package/dist/atoms/{composed → components/domain}/SalesPanel/index.d.ts +0 -0
  605. /package/dist/atoms/{composed → components/domain}/SalesPanel/mockSalesData.d.ts +0 -0
  606. /package/dist/atoms/{composed → components/feedback}/Alert/Alert.d.ts +0 -0
  607. /package/dist/atoms/{composed → components/feedback}/Alert/index.d.ts +0 -0
  608. /package/dist/atoms/{composed → components/feedback}/EmptyState/EmptyState.d.ts +0 -0
  609. /package/dist/atoms/{composed → components/feedback}/EmptyState/index.d.ts +0 -0
  610. /package/dist/atoms/{composed → components/feedback}/Toast/Toast.d.ts +0 -0
  611. /package/dist/atoms/{composed → components/feedback}/Toast/index.d.ts +0 -0
  612. /package/dist/atoms/{composed → components/forms}/DateTimePicker/DateTimePicker.d.ts +0 -0
  613. /package/dist/atoms/{composed → components/forms}/DateTimePicker/index.d.ts +0 -0
  614. /package/dist/atoms/{composed → components/forms}/FileUpload/FileUpload.d.ts +0 -0
  615. /package/dist/atoms/{composed → components/forms}/FileUpload/index.d.ts +0 -0
  616. /package/dist/atoms/{composed → components/forms}/FormField/FormField.d.ts +0 -0
  617. /package/dist/atoms/{composed → components/forms}/FormField/index.d.ts +0 -0
  618. /package/dist/atoms/{composed → components/layout}/Accordion/Accordion.d.ts +0 -0
  619. /package/dist/atoms/{composed → components/layout}/Accordion/index.d.ts +0 -0
  620. /package/dist/atoms/{composed → components/layout}/Breadcrumb/Breadcrumb.d.ts +0 -0
  621. /package/dist/atoms/{composed → components/layout}/Breadcrumb/index.d.ts +0 -0
  622. /package/dist/atoms/{composed → components/layout}/Modal/Modal.d.ts +0 -0
  623. /package/dist/atoms/{composed → components/layout}/Modal/index.d.ts +0 -0
  624. /package/dist/atoms/{composed → components/layout}/Tooltip/Tooltip.d.ts +0 -0
  625. /package/dist/atoms/{composed → components/navigation}/GlobalSearch/GlobalSearch.d.ts +0 -0
  626. /package/dist/atoms/{composed → components/navigation}/GlobalSearch/index.d.ts +0 -0
  627. /package/dist/atoms/{composed → components/theme}/ColorSwatch/ColorSwatch.d.ts +0 -0
  628. /package/dist/atoms/{composed → components/theme}/ColorSwatch/index.d.ts +0 -0
  629. /package/dist/atoms/{composed → components/theme}/DarkModeToggle.d.ts +0 -0
  630. /package/dist/atoms/{composed → components/theme}/PaletteSwitcher.d.ts +0 -0
  631. /package/dist/atoms/{composed → components/theme}/StyleGuide.d.ts +0 -0
  632. /package/dist/atoms/{composed → components/user}/UserAvatar/UserAvatar.d.ts +0 -0
  633. /package/dist/atoms/{composed → components/user}/UserAvatar/index.d.ts +0 -0
  634. /package/dist/atoms/{composed → components/user}/UserMenu/UserMenu.d.ts +0 -0
  635. /package/dist/atoms/{composed → components/user}/UserMenu/index.d.ts +0 -0
  636. /package/dist/atoms/{ui → primitives}/Badge.d.ts +0 -0
  637. /package/dist/atoms/{ui → primitives}/Select.d.ts +0 -0
  638. /package/dist/atoms/{ui → primitives}/Switch.d.ts +0 -0
  639. /package/dist/atoms/{ui → primitives}/Tabs.d.ts +0 -0
  640. /package/dist/atoms/{ui → primitives}/avatar.d.ts +0 -0
  641. /package/dist/atoms/{ui → primitives}/card.d.ts +0 -0
  642. /package/dist/atoms/{ui → primitives}/dropdown-menu.d.ts +0 -0
  643. /package/dist/atoms/{ui → primitives}/input.d.ts +0 -0
  644. /package/dist/atoms/{ui → primitives}/label.d.ts +0 -0
  645. /package/dist/atoms/{ui → primitives}/skeleton.d.ts +0 -0
  646. /package/dist/atoms/{ui → primitives}/spinner.d.ts +0 -0
  647. /package/dist/atoms/{ui → primitives}/table.d.ts +0 -0
@@ -1,430 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { AppLayout } from '../../molecules/layout/AppLayout';
3
- import { PageTemplate } from '../../molecules/layout/PageTemplate';
4
- import { SectionHeader } from '../../molecules/layout/SectionHeader';
5
- import { EntityListPanel } from '../../organisms/entity';
6
- import { Modal } from '../../atoms/composed/Modal';
7
- import { Button } from '../../atoms/ui/button';
8
- import { Card } from '../../atoms/ui/card';
9
- import { Badge } from '../../atoms/ui/Badge';
10
- import type { EntityTemplateConfig, EntityData, ActionConfig } from '../../atoms/types';
11
- import { cn } from '../../atoms/utils/utils';
12
- import { Plus, Trash2, Filter, Download } from 'lucide-react';
13
-
14
- export interface EntityManagementTemplateProps<T extends EntityData> {
15
- config: EntityTemplateConfig<T>;
16
- data: T[];
17
- isLoading?: boolean;
18
- className?: string;
19
-
20
- // View configuration
21
- defaultView?: 'list' | 'grid' | 'cards';
22
- enableViews?: boolean;
23
- enableSearch?: boolean;
24
- enableFiltering?: boolean;
25
- enableBulkActions?: boolean;
26
- enableExport?: boolean;
27
- pageSize?: number;
28
-
29
- // CRUD operations
30
- onCreate?: (item: Partial<T>) => Promise<T> | T;
31
- onUpdate?: (id: string | number, item: Partial<T>) => Promise<T> | T;
32
- onDelete?: (id: string | number) => Promise<void> | void;
33
- onBulkDelete?: (ids: (string | number)[]) => Promise<void> | void;
34
- onView?: (item: T) => void;
35
-
36
- // Extension points - Render Props
37
- renderCreateForm?: (onSubmit: (item: Partial<T>) => void, onCancel: () => void) => React.ReactNode;
38
- renderEditForm?: (item: T, onSubmit: (item: Partial<T>) => void, onCancel: () => void) => React.ReactNode;
39
- renderDetailView?: (item: T, onEdit: () => void, onClose: () => void) => React.ReactNode;
40
- renderCustomActions?: (item?: T) => React.ReactNode;
41
- renderEmptyState?: () => React.ReactNode;
42
- renderFilterPanel?: (onFilter: (filters: Record<string, unknown>) => void) => React.ReactNode;
43
-
44
- // Extension points - Slots
45
- headerSlot?: React.ReactNode;
46
- footerSlot?: React.ReactNode;
47
- toolbarSlot?: React.ReactNode;
48
- listHeaderSlot?: React.ReactNode;
49
- listFooterSlot?: React.ReactNode;
50
-
51
- // Event handlers
52
- onRefresh?: () => void;
53
- onFilter?: (filters: Record<string, unknown>) => void;
54
- onExport?: (data: T[], format: 'csv' | 'json') => void;
55
- onSelectionChange?: (selectedItems: T[]) => void;
56
- }
57
-
58
- export const EntityManagementTemplate = <T extends EntityData>({
59
- config,
60
- data,
61
- isLoading = false,
62
- className,
63
- enableSearch = true,
64
- enableFiltering = true,
65
- enableBulkActions = true,
66
- enableExport = true,
67
- pageSize = 10,
68
- onCreate,
69
- onUpdate,
70
- onDelete,
71
- onBulkDelete,
72
- onView,
73
- renderCreateForm,
74
- renderEditForm,
75
- renderDetailView,
76
- renderCustomActions,
77
- renderEmptyState,
78
- renderFilterPanel,
79
- headerSlot,
80
- footerSlot,
81
- toolbarSlot,
82
- listHeaderSlot,
83
- listFooterSlot,
84
- onRefresh,
85
- onFilter,
86
- onExport
87
- }: EntityManagementTemplateProps<T>) => {
88
-
89
- const [showCreateModal, setShowCreateModal] = useState(false);
90
- const [showEditModal, setShowEditModal] = useState(false);
91
- const [showDetailModal, setShowDetailModal] = useState(false);
92
- const [showFilterPanel, setShowFilterPanel] = useState(false);
93
- const [selectedItem, setSelectedItem] = useState<T | null>(null);
94
- const [selectedItems, setSelectedItems] = useState<T[]>([]);
95
-
96
- const handleCreate = async (item: Partial<T>) => {
97
- if (onCreate) {
98
- try {
99
- await onCreate(item);
100
- setShowCreateModal(false);
101
- onRefresh?.();
102
- } catch (error) {
103
- console.error('Create failed:', error);
104
- }
105
- }
106
- };
107
-
108
- const handleUpdate = async (item: Partial<T>) => {
109
- if (onUpdate && selectedItem) {
110
- try {
111
- await onUpdate(selectedItem.id, item);
112
- setShowEditModal(false);
113
- setSelectedItem(null);
114
- onRefresh?.();
115
- } catch (error) {
116
- console.error('Update failed:', error);
117
- }
118
- }
119
- };
120
-
121
-
122
- const handleBulkDelete = async () => {
123
- if (onBulkDelete && selectedItems.length > 0 && confirm(`Are you sure you want to delete ${selectedItems.length} ${config.display.title.toLowerCase()}?`)) {
124
- try {
125
- const ids = selectedItems.map(item => item.id);
126
- await onBulkDelete(ids);
127
- setSelectedItems([]);
128
- onRefresh?.();
129
- } catch (error) {
130
- console.error('Bulk delete failed:', error);
131
- }
132
- }
133
- };
134
-
135
- const handleView = (item: T) => {
136
- if (onView) {
137
- onView(item);
138
- } else {
139
- setSelectedItem(item);
140
- setShowDetailModal(true);
141
- }
142
- };
143
-
144
- const handleEdit = (item: T) => {
145
- setSelectedItem(item);
146
- setShowEditModal(true);
147
- };
148
-
149
- const handleRowClick = (item: T) => {
150
- handleView(item);
151
- };
152
-
153
- const handleAction = (action: ActionConfig, selectedItems: T[]) => {
154
- action.onClick({ selectedItems, config });
155
- };
156
-
157
- const generateDefaultActions = (): ActionConfig[] => {
158
- const actions: ActionConfig[] = [];
159
-
160
- if (onCreate) {
161
- actions.push({
162
- label: `Add ${config.display.title.slice(0, -1)}`,
163
- type: 'primary',
164
- icon: Plus,
165
- onClick: () => setShowCreateModal(true)
166
- });
167
- }
168
-
169
- return actions;
170
- };
171
-
172
-
173
- const renderPageHeader = () => {
174
- const actions = [
175
- ...generateDefaultActions(),
176
- ...(config.actions || [])
177
- ];
178
-
179
- return (
180
- <SectionHeader
181
- title={config.display.title}
182
- description={config.display.description}
183
- category={config.display.category}
184
- actions={
185
- <div className="flex items-center gap-2">
186
- {renderCustomActions && renderCustomActions()}
187
-
188
- {enableFiltering && (
189
- <Button
190
- variant="outline"
191
- size="sm"
192
- onClick={() => setShowFilterPanel(!showFilterPanel)}
193
- className={cn(showFilterPanel && "bg-muted")}
194
- >
195
- <Filter className="w-4 h-4 mr-2" />
196
- Filters
197
- </Button>
198
- )}
199
-
200
- {enableExport && (
201
- <Button
202
- variant="outline"
203
- size="sm"
204
- onClick={() => onExport?.(selectedItems.length > 0 ? selectedItems : data, 'csv')}
205
- disabled={data.length === 0}
206
- >
207
- <Download className="w-4 h-4 mr-2" />
208
- Export
209
- </Button>
210
- )}
211
-
212
- {actions.map(action => (
213
- <Button
214
- key={action.label}
215
- variant={action.type === 'primary' ? 'default' : 'outline'}
216
- size="sm"
217
- onClick={() => action.onClick({ data, config })}
218
- >
219
- {action.icon && <action.icon className="w-4 h-4 mr-2" />}
220
- {action.label}
221
- </Button>
222
- ))}
223
- </div>
224
- }
225
- />
226
- );
227
- };
228
-
229
- const renderToolbar = () => {
230
- if (selectedItems.length === 0) return null;
231
-
232
- return (
233
- <div className="bg-muted/50 p-4 rounded-lg mb-4">
234
- <div className="flex items-center justify-between">
235
- <div className="flex items-center gap-2">
236
- <Badge variant="secondary">
237
- {selectedItems.length} selected
238
- </Badge>
239
- <Button
240
- variant="ghost"
241
- size="sm"
242
- onClick={() => setSelectedItems([])}
243
- >
244
- Clear selection
245
- </Button>
246
- </div>
247
-
248
- <div className="flex items-center gap-2">
249
- {onBulkDelete && (
250
- <Button
251
- variant="destructive"
252
- size="sm"
253
- onClick={handleBulkDelete}
254
- >
255
- <Trash2 className="w-4 h-4 mr-2" />
256
- Delete Selected
257
- </Button>
258
- )}
259
-
260
- {enableExport && (
261
- <Button
262
- variant="outline"
263
- size="sm"
264
- onClick={() => onExport?.(selectedItems, 'csv')}
265
- >
266
- <Download className="w-4 h-4 mr-2" />
267
- Export Selected
268
- </Button>
269
- )}
270
- </div>
271
- </div>
272
- </div>
273
- );
274
- };
275
-
276
- const renderFilterPanelSection = () => {
277
- if (!showFilterPanel) return null;
278
-
279
- return (
280
- <Card className="p-4 mb-4">
281
- {renderFilterPanel ? (
282
- renderFilterPanel(onFilter || (() => {}))
283
- ) : (
284
- <div className="text-center text-muted-foreground py-4">
285
- Filter functionality not implemented yet
286
- </div>
287
- )}
288
- </Card>
289
- );
290
- };
291
-
292
- const renderCreateModal = () => {
293
- if (!showCreateModal) return null;
294
-
295
- return (
296
- <Modal
297
- isOpen={showCreateModal}
298
- onClose={() => setShowCreateModal(false)}
299
- title={`Create ${config.display.title.slice(0, -1)}`}
300
- category={config.display.category}
301
- >
302
- {renderCreateForm ? (
303
- renderCreateForm(handleCreate, () => setShowCreateModal(false))
304
- ) : (
305
- <div className="p-6 text-center text-muted-foreground">
306
- Create form not implemented yet
307
- </div>
308
- )}
309
- </Modal>
310
- );
311
- };
312
-
313
- const renderEditModal = () => {
314
- if (!showEditModal || !selectedItem) return null;
315
-
316
- return (
317
- <Modal
318
- isOpen={showEditModal}
319
- onClose={() => {
320
- setShowEditModal(false);
321
- setSelectedItem(null);
322
- }}
323
- title={`Edit ${config.display.title.slice(0, -1)}`}
324
- category={config.display.category}
325
- >
326
- {renderEditForm ? (
327
- renderEditForm(
328
- selectedItem,
329
- handleUpdate,
330
- () => {
331
- setShowEditModal(false);
332
- setSelectedItem(null);
333
- }
334
- )
335
- ) : (
336
- <div className="p-6 text-center text-muted-foreground">
337
- Edit form not implemented yet
338
- </div>
339
- )}
340
- </Modal>
341
- );
342
- };
343
-
344
- const renderDetailModal = () => {
345
- if (!showDetailModal || !selectedItem) return null;
346
-
347
- return (
348
- <Modal
349
- isOpen={showDetailModal}
350
- onClose={() => {
351
- setShowDetailModal(false);
352
- setSelectedItem(null);
353
- }}
354
- title={`${config.display.title.slice(0, -1)} Details`}
355
- category={config.display.category}
356
- size="large"
357
- >
358
- {renderDetailView ? (
359
- renderDetailView(
360
- selectedItem,
361
- () => {
362
- setShowDetailModal(false);
363
- handleEdit(selectedItem);
364
- },
365
- () => {
366
- setShowDetailModal(false);
367
- setSelectedItem(null);
368
- }
369
- )
370
- ) : (
371
- <div className="p-6">
372
- <div className="space-y-4">
373
- {Object.entries(selectedItem).map(([key, value]) => (
374
- <div key={key} className="flex justify-between">
375
- <span className="font-medium capitalize">{key}:</span>
376
- <span>{value?.toString() || '-'}</span>
377
- </div>
378
- ))}
379
- </div>
380
- </div>
381
- )}
382
- </Modal>
383
- );
384
- };
385
-
386
- return (
387
- <AppLayout>
388
- <PageTemplate
389
- className={cn('container mx-auto px-4 py-6', className)}
390
- data-component-name="EntityManagementTemplate"
391
- >
392
- {headerSlot}
393
- {renderPageHeader()}
394
- {toolbarSlot}
395
- {renderFilterPanelSection()}
396
- {renderToolbar()}
397
-
398
- <div className="space-y-4">
399
- {listHeaderSlot}
400
-
401
- <EntityListPanel
402
- config={config}
403
- data={data}
404
- isLoading={isLoading}
405
- onRowClick={handleRowClick}
406
- onAction={handleAction}
407
- enableSelection={enableBulkActions}
408
- enableBulkActions={enableBulkActions}
409
- enableExport={enableExport}
410
- enableRefresh={!!onRefresh}
411
- showSearch={enableSearch}
412
- showPagination={true}
413
- pageSize={pageSize}
414
- renderEmptyState={renderEmptyState}
415
- onExport={onExport}
416
- onRefresh={onRefresh}
417
- />
418
-
419
- {listFooterSlot}
420
- </div>
421
-
422
- {renderCreateModal()}
423
- {renderEditModal()}
424
- {renderDetailModal()}
425
-
426
- {footerSlot}
427
- </PageTemplate>
428
- </AppLayout>
429
- );
430
- };
@@ -1,277 +0,0 @@
1
- import React from 'react';
2
- import { AppLayout } from '../../molecules/layout/AppLayout';
3
- import { PageTemplate } from '../../molecules/layout/PageTemplate';
4
- import { SectionHeader } from '../../molecules/layout/SectionHeader';
5
- import {
6
- MetricsOverviewPanel,
7
- MetricsOverviewWithInsightsPanel,
8
- TrendAnalysisPanel,
9
- CategoryBreakdownPanel
10
- } from '../../organisms/entity';
11
- import type { EntityTemplateConfig, EntityData, MetricValue, ActionConfig, MetricConfig } from '../../atoms/types';
12
- import { cn } from '../../atoms/utils/utils';
13
-
14
- export interface EntityPerformanceDashboardTemplateProps<T extends EntityData> {
15
- config: EntityTemplateConfig<T>;
16
- data: T[];
17
- previousData?: T[];
18
- isLoading?: boolean;
19
- className?: string;
20
-
21
- // Layout configuration
22
- layout?: 'standard' | 'compact' | 'detailed';
23
- showInsights?: boolean;
24
- showTrends?: boolean;
25
- showCategories?: boolean;
26
-
27
- // Extension points - Render Props
28
- renderCustomActions?: () => React.ReactNode;
29
- renderAdditionalMetrics?: () => React.ReactNode;
30
- renderCustomTrendChart?: (config: EntityTemplateConfig<T>, data: T[]) => React.ReactNode;
31
- renderCustomCategoryView?: (config: EntityTemplateConfig<T>, data: T[]) => React.ReactNode;
32
-
33
- // Extension points - Slots
34
- headerSlot?: React.ReactNode;
35
- footerSlot?: React.ReactNode;
36
- metricsHeaderSlot?: React.ReactNode;
37
- metricsFooterSlot?: React.ReactNode;
38
- trendsHeaderSlot?: React.ReactNode;
39
- trendsFooterSlot?: React.ReactNode;
40
- categoriesHeaderSlot?: React.ReactNode;
41
- categoriesFooterSlot?: React.ReactNode;
42
-
43
- // Event handlers
44
- onMetricClick?: (metric: MetricConfig, value: MetricValue) => void;
45
- onCategoryClick?: (category: unknown) => void;
46
- onTrendPeriodChange?: (period: string) => void;
47
- onActionClick?: (action: ActionConfig, context: T[]) => void;
48
- onRefresh?: () => void;
49
- onExport?: (type: 'metrics' | 'trends' | 'categories', data: unknown) => void;
50
- }
51
-
52
- export const EntityPerformanceDashboardTemplate = <T extends EntityData>({
53
- config,
54
- data,
55
- previousData,
56
- isLoading = false,
57
- className,
58
- layout = 'standard',
59
- showInsights = true,
60
- showTrends = true,
61
- showCategories = true,
62
- renderCustomActions,
63
- renderAdditionalMetrics,
64
- renderCustomTrendChart,
65
- renderCustomCategoryView,
66
- headerSlot,
67
- footerSlot,
68
- metricsHeaderSlot,
69
- metricsFooterSlot,
70
- trendsHeaderSlot,
71
- trendsFooterSlot,
72
- categoriesHeaderSlot,
73
- categoriesFooterSlot,
74
- onMetricClick,
75
- onCategoryClick,
76
- onTrendPeriodChange,
77
- onExport
78
- }: EntityPerformanceDashboardTemplateProps<T>) => {
79
-
80
- const getLayoutClasses = () => {
81
- switch (layout) {
82
- case 'compact':
83
- return 'space-y-4';
84
- case 'detailed':
85
- return 'space-y-8';
86
- case 'standard':
87
- default:
88
- return 'space-y-6';
89
- }
90
- };
91
-
92
- const renderPageHeader = () => {
93
- return (
94
- <SectionHeader
95
- title={config.display.title}
96
- description={config.display.description}
97
- category={config.display.category}
98
- actions={renderCustomActions ? renderCustomActions() : undefined}
99
- />
100
- );
101
- };
102
-
103
- const renderMetricsSection = () => {
104
- if (!config.metrics.length) return null;
105
-
106
- const MetricsComponent = showInsights ? MetricsOverviewWithInsightsPanel : MetricsOverviewPanel;
107
-
108
- return (
109
- <section className="space-y-4">
110
- {metricsHeaderSlot}
111
- <MetricsComponent
112
- metrics={config.metrics}
113
- data={data}
114
- previousData={previousData}
115
- isLoading={isLoading}
116
- onMetricClick={onMetricClick}
117
- category={config.display.category}
118
- columns={layout === 'compact' ? 2 : layout === 'detailed' ? 4 : 3}
119
- headerSlot={renderAdditionalMetrics ? renderAdditionalMetrics() : undefined}
120
- />
121
- {metricsFooterSlot}
122
- </section>
123
- );
124
- };
125
-
126
- const renderTrendsSection = () => {
127
- if (!showTrends || !config.temporal || !config.metrics.length) return null;
128
-
129
- if (renderCustomTrendChart) {
130
- const customChart = renderCustomTrendChart(config, data);
131
- if (customChart) {
132
- return (
133
- <section className="space-y-4">
134
- {trendsHeaderSlot}
135
- {customChart}
136
- {trendsFooterSlot}
137
- </section>
138
- );
139
- }
140
- }
141
-
142
- return (
143
- <section className="space-y-4">
144
- {trendsHeaderSlot}
145
- <TrendAnalysisPanel
146
- metrics={config.metrics}
147
- data={data}
148
- temporal={config.temporal}
149
- isLoading={isLoading}
150
- category={config.display.category}
151
- enablePeriodSelection={true}
152
- enableChartTypeSelection={layout === 'detailed'}
153
- showComparisons={layout !== 'compact'}
154
- onPeriodChange={onTrendPeriodChange}
155
- onExport={(chartData, metric) => onExport?.('trends', { chartData, metric })}
156
- />
157
- {trendsFooterSlot}
158
- </section>
159
- );
160
- };
161
-
162
- const renderCategoriesSection = () => {
163
- if (!showCategories || !config.categories || !data.length) return null;
164
-
165
- // Find a suitable value field from metrics or use first numeric field
166
- const valueField = config.metrics.find(m => m.type === 'currency' || m.type === 'count')?.key ||
167
- Object.keys(data[0]).find(key => typeof data[0][key] === 'number') ||
168
- 'value';
169
-
170
- if (renderCustomCategoryView) {
171
- const customView = renderCustomCategoryView(config, data);
172
- if (customView) {
173
- return (
174
- <section className="space-y-4">
175
- {categoriesHeaderSlot}
176
- {customView}
177
- {categoriesFooterSlot}
178
- </section>
179
- );
180
- }
181
- }
182
-
183
- return (
184
- <section className="space-y-4">
185
- {categoriesHeaderSlot}
186
- <CategoryBreakdownPanel
187
- data={data}
188
- categoryConfig={config.categories}
189
- valueField={valueField}
190
- isLoading={isLoading}
191
- category={config.display.category}
192
- title={`${config.display.title} by ${config.categories.defaultGroupBy}`}
193
- defaultView={layout === 'compact' ? 'list' : 'both'}
194
- enableDrillDown={config.categories.enableDrillDown}
195
- onCategoryClick={onCategoryClick}
196
- onExport={(categoryData) => onExport?.('categories', categoryData)}
197
- />
198
- {categoriesFooterSlot}
199
- </section>
200
- );
201
- };
202
-
203
- const renderLayoutContent = () => {
204
- const sections = [
205
- renderMetricsSection(),
206
- renderTrendsSection(),
207
- renderCategoriesSection()
208
- ].filter(Boolean);
209
-
210
- if (layout === 'detailed' && sections.length > 1) {
211
- // For detailed layout, use a grid for trends and categories
212
- const [metricsSection, ...otherSections] = sections;
213
-
214
- return (
215
- <div className={getLayoutClasses()}>
216
- {metricsSection}
217
-
218
- {otherSections.length > 0 && (
219
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
220
- {otherSections}
221
- </div>
222
- )}
223
- </div>
224
- );
225
- }
226
-
227
- return (
228
- <div className={getLayoutClasses()}>
229
- {sections}
230
- </div>
231
- );
232
- };
233
-
234
- return (
235
- <AppLayout>
236
- <PageTemplate
237
- className={cn('container mx-auto px-4 py-6', className)}
238
- data-component-name="EntityPerformanceDashboardTemplate"
239
- >
240
- {headerSlot}
241
- {renderPageHeader()}
242
- {renderLayoutContent()}
243
- {footerSlot}
244
- </PageTemplate>
245
- </AppLayout>
246
- );
247
- };
248
-
249
- // Enhanced version with real-time updates
250
- export interface EntityPerformanceDashboardTemplateWithRealTimeProps<T extends EntityData>
251
- extends EntityPerformanceDashboardTemplateProps<T> {
252
- enableRealTime?: boolean;
253
- refreshInterval?: number;
254
- onDataUpdate?: (newData: T[]) => void;
255
- }
256
-
257
- export const EntityPerformanceDashboardTemplateWithRealTime = <T extends EntityData>({
258
- enableRealTime = false,
259
- refreshInterval = 30000, // 30 seconds
260
- onDataUpdate,
261
- ...props
262
- }: EntityPerformanceDashboardTemplateWithRealTimeProps<T>) => {
263
- React.useEffect(() => {
264
- if (!enableRealTime) return;
265
-
266
- const interval = setInterval(() => {
267
- if (onDataUpdate) {
268
- // This would typically fetch new data from an API
269
- onDataUpdate(props.data);
270
- }
271
- }, refreshInterval);
272
-
273
- return () => clearInterval(interval);
274
- }, [enableRealTime, refreshInterval, onDataUpdate, props.data]);
275
-
276
- return <EntityPerformanceDashboardTemplate {...props} />;
277
- };