@pattern-stack/frontend-patterns 0.1.0 → 0.1.1

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 (627) hide show
  1. package/dist/atoms/composed/Accordion/Accordion.d.ts.map +1 -0
  2. package/dist/atoms/composed/Accordion/index.d.ts.map +1 -0
  3. package/dist/atoms/composed/Alert/Alert.d.ts.map +1 -0
  4. package/dist/atoms/composed/Alert/index.d.ts.map +1 -0
  5. package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  6. package/dist/atoms/composed/Breadcrumb/index.d.ts.map +1 -0
  7. package/dist/atoms/{components/data → composed}/Chart/Chart.d.ts +2 -2
  8. package/dist/atoms/composed/Chart/Chart.d.ts.map +1 -0
  9. package/dist/atoms/composed/Chart/index.d.ts.map +1 -0
  10. package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  11. package/dist/atoms/composed/ColorSwatch/index.d.ts.map +1 -0
  12. package/dist/atoms/composed/DarkModeToggle.d.ts.map +1 -0
  13. package/dist/atoms/composed/DataBadge/DataBadge.d.ts +13 -0
  14. package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +1 -0
  15. package/dist/atoms/composed/DataBadge/index.d.ts.map +1 -0
  16. package/dist/atoms/composed/DataTable/DataTable.d.ts +28 -0
  17. package/dist/atoms/composed/DataTable/DataTable.d.ts.map +1 -0
  18. package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +1 -0
  19. package/dist/atoms/composed/DataTable/index.d.ts.map +1 -0
  20. package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  21. package/dist/atoms/composed/DateTimePicker/index.d.ts.map +1 -0
  22. package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +1 -0
  23. package/dist/atoms/composed/DetailedCard/index.d.ts.map +1 -0
  24. package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +1 -0
  25. package/dist/atoms/composed/EmptyState/index.d.ts.map +1 -0
  26. package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +1 -0
  27. package/dist/atoms/composed/FileUpload/index.d.ts.map +1 -0
  28. package/dist/atoms/composed/FormField/FormField.d.ts.map +1 -0
  29. package/dist/atoms/composed/FormField/index.d.ts.map +1 -0
  30. package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +1 -0
  31. package/dist/atoms/composed/GlobalSearch/index.d.ts.map +1 -0
  32. package/dist/atoms/{components/data → composed}/IconBadge/IconBadge.d.ts +1 -2
  33. package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +1 -0
  34. package/dist/atoms/composed/IconBadge/index.d.ts.map +1 -0
  35. package/dist/atoms/composed/Modal/Modal.d.ts.map +1 -0
  36. package/dist/atoms/composed/Modal/index.d.ts.map +1 -0
  37. package/dist/atoms/composed/PaletteSwitcher.d.ts.map +1 -0
  38. package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +1 -0
  39. package/dist/atoms/composed/ProgressBar/index.d.ts.map +1 -0
  40. package/dist/atoms/{components/data → composed}/StatCard/StatCard.d.ts +1 -1
  41. package/dist/atoms/composed/StatCard/StatCard.d.ts.map +1 -0
  42. package/dist/atoms/composed/StatCard/index.d.ts.map +1 -0
  43. package/dist/atoms/composed/StyleGuide.d.ts.map +1 -0
  44. package/dist/atoms/composed/Toast/Toast.d.ts.map +1 -0
  45. package/dist/atoms/composed/Toast/index.d.ts.map +1 -0
  46. package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +1 -0
  47. package/dist/atoms/composed/Tooltip/index.d.ts +2 -0
  48. package/dist/atoms/composed/Tooltip/index.d.ts.map +1 -0
  49. package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +1 -0
  50. package/dist/atoms/composed/UserAvatar/index.d.ts.map +1 -0
  51. package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +1 -0
  52. package/dist/atoms/composed/UserMenu/index.d.ts.map +1 -0
  53. package/dist/atoms/composed/index.d.ts +25 -0
  54. package/dist/atoms/composed/index.d.ts.map +1 -0
  55. package/dist/atoms/index.d.ts +5 -4
  56. package/dist/atoms/index.d.ts.map +1 -1
  57. package/dist/atoms/shared/index.d.ts +0 -1
  58. package/dist/atoms/shared/index.d.ts.map +1 -1
  59. package/dist/atoms/types/index.d.ts +0 -3
  60. package/dist/atoms/types/index.d.ts.map +1 -1
  61. package/dist/atoms/ui/Badge.d.ts.map +1 -0
  62. package/dist/atoms/ui/ErrorBoundary.d.ts.map +1 -0
  63. package/dist/atoms/ui/Select.d.ts.map +1 -0
  64. package/dist/atoms/ui/Switch.d.ts.map +1 -0
  65. package/dist/atoms/ui/Tabs.d.ts.map +1 -0
  66. package/dist/atoms/ui/avatar.d.ts.map +1 -0
  67. package/dist/atoms/{primitives → ui}/button.d.ts +3 -3
  68. package/dist/atoms/ui/button.d.ts.map +1 -0
  69. package/dist/atoms/ui/card.d.ts.map +1 -0
  70. package/dist/atoms/ui/dropdown-menu.d.ts.map +1 -0
  71. package/dist/atoms/{primitives → ui}/index.d.ts +0 -2
  72. package/dist/atoms/ui/index.d.ts.map +1 -0
  73. package/dist/atoms/ui/input.d.ts.map +1 -0
  74. package/dist/atoms/ui/label.d.ts.map +1 -0
  75. package/dist/atoms/ui/skeleton.d.ts.map +1 -0
  76. package/dist/atoms/ui/spinner.d.ts.map +1 -0
  77. package/dist/atoms/ui/table.d.ts.map +1 -0
  78. package/dist/atoms/utils/utils.d.ts +0 -5
  79. package/dist/atoms/utils/utils.d.ts.map +1 -1
  80. package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
  81. package/dist/features/auth/hooks/index.d.ts +0 -1
  82. package/dist/features/auth/hooks/index.d.ts.map +1 -1
  83. package/dist/features/auth/index.d.ts +0 -1
  84. package/dist/features/auth/index.d.ts.map +1 -1
  85. package/dist/frontend-patterns.css +1 -4417
  86. package/dist/index.d.ts +0 -8
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.es.js +8507 -27524
  89. package/dist/index.es.js.map +1 -1
  90. package/dist/index.js +8466 -27505
  91. package/dist/index.js.map +1 -1
  92. package/dist/molecules/forms/SearchInput.d.ts.map +1 -1
  93. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
  94. package/dist/molecules/layout/Sidebar.d.ts.map +1 -1
  95. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +0 -2
  96. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
  97. package/dist/molecules/layout/index.d.ts +0 -4
  98. package/dist/molecules/layout/index.d.ts.map +1 -1
  99. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
  100. package/dist/templates/DataTemplate.d.ts +1 -1
  101. package/dist/templates/DataTemplate.d.ts.map +1 -1
  102. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
  103. package/dist/templates/admin/AdminDashboardTemplate.d.ts +9 -6
  104. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
  105. package/dist/templates/admin/AdminDetailTemplate.d.ts +1 -1
  106. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
  107. package/dist/templates/factory.d.ts +1 -2
  108. package/dist/templates/factory.d.ts.map +1 -1
  109. package/dist/templates/index.d.ts +0 -2
  110. package/dist/templates/index.d.ts.map +1 -1
  111. package/package.json +10 -35
  112. package/src/App.css +42 -0
  113. package/src/App.tsx +54 -0
  114. package/src/__tests__/README.md +221 -0
  115. package/src/__tests__/atoms/hooks/simple-hooks.test.ts +44 -0
  116. package/src/__tests__/atoms/ui/button.test.tsx +68 -0
  117. package/src/__tests__/atoms/utils/simple.test.ts +18 -0
  118. package/src/__tests__/atoms/utils/utils.test.ts +77 -0
  119. package/src/__tests__/features/auth/simple-auth.test.tsx +40 -0
  120. package/src/__tests__/molecules/layout/simple-layout.test.tsx +81 -0
  121. package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +167 -0
  122. package/src/__tests__/setup.ts +51 -0
  123. package/src/__tests__/utils.tsx +123 -0
  124. package/src/atoms/composed/Accordion/Accordion.tsx +271 -0
  125. package/src/atoms/composed/Accordion/index.ts +1 -0
  126. package/src/atoms/composed/Alert/Alert.tsx +132 -0
  127. package/src/atoms/composed/Alert/index.ts +1 -0
  128. package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +83 -0
  129. package/src/atoms/composed/Breadcrumb/index.ts +1 -0
  130. package/src/atoms/composed/Chart/Chart.tsx +425 -0
  131. package/src/atoms/composed/Chart/index.ts +2 -0
  132. package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +72 -0
  133. package/src/atoms/composed/ColorSwatch/index.ts +1 -0
  134. package/src/atoms/composed/DarkModeToggle.tsx +66 -0
  135. package/src/atoms/composed/DataBadge/DataBadge.tsx +81 -0
  136. package/src/atoms/composed/DataBadge/index.ts +1 -0
  137. package/src/atoms/composed/DataTable/DataTable.tsx +394 -0
  138. package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +41 -0
  139. package/src/atoms/composed/DataTable/index.ts +2 -0
  140. package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +611 -0
  141. package/src/atoms/composed/DateTimePicker/index.ts +2 -0
  142. package/src/atoms/composed/DetailedCard/DetailedCard.tsx +181 -0
  143. package/src/atoms/composed/DetailedCard/index.ts +2 -0
  144. package/src/atoms/composed/EmptyState/EmptyState.tsx +90 -0
  145. package/src/atoms/composed/EmptyState/index.ts +1 -0
  146. package/src/atoms/composed/FileUpload/FileUpload.tsx +477 -0
  147. package/src/atoms/composed/FileUpload/index.ts +2 -0
  148. package/src/atoms/composed/FormField/FormField.tsx +92 -0
  149. package/src/atoms/composed/FormField/index.ts +1 -0
  150. package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +37 -0
  151. package/src/atoms/composed/GlobalSearch/index.ts +1 -0
  152. package/src/atoms/composed/IconBadge/IconBadge.tsx +95 -0
  153. package/src/atoms/composed/IconBadge/index.ts +2 -0
  154. package/src/atoms/composed/Modal/Modal.tsx +223 -0
  155. package/src/atoms/composed/Modal/index.ts +2 -0
  156. package/src/atoms/composed/PaletteSwitcher.tsx +386 -0
  157. package/src/atoms/composed/ProgressBar/ProgressBar.tsx +116 -0
  158. package/src/atoms/composed/ProgressBar/index.ts +1 -0
  159. package/src/atoms/composed/StatCard/StatCard.tsx +219 -0
  160. package/src/atoms/composed/StatCard/index.ts +1 -0
  161. package/src/atoms/composed/StyleGuide.tsx +717 -0
  162. package/src/atoms/composed/Toast/Toast.tsx +219 -0
  163. package/src/atoms/composed/Toast/index.ts +1 -0
  164. package/src/atoms/composed/Tooltip/Tooltip.tsx +213 -0
  165. package/src/atoms/composed/Tooltip/index.ts +1 -0
  166. package/src/atoms/composed/UserAvatar/UserAvatar.tsx +139 -0
  167. package/src/atoms/composed/UserAvatar/index.ts +1 -0
  168. package/src/atoms/composed/UserMenu/UserMenu.tsx +16 -0
  169. package/src/atoms/composed/UserMenu/index.ts +1 -0
  170. package/src/atoms/composed/index.ts +29 -0
  171. package/src/atoms/hooks/useApi.ts +80 -0
  172. package/src/atoms/hooks/useHealth.ts +17 -0
  173. package/src/atoms/index.ts +13 -0
  174. package/src/atoms/services/api/client.ts +134 -0
  175. package/src/atoms/services/auth-service.ts +248 -0
  176. package/src/atoms/services/health.ts +15 -0
  177. package/src/atoms/services/index.ts +3 -0
  178. package/src/atoms/shared/config/constants.ts +17 -0
  179. package/src/atoms/shared/config/dashboard-sizes.ts +111 -0
  180. package/src/atoms/shared/config/environment.ts +10 -0
  181. package/src/atoms/shared/index.ts +4 -0
  182. package/src/atoms/shared/styles/color-palettes.css +566 -0
  183. package/src/atoms/types/auth.ts +62 -0
  184. package/src/atoms/types/generated.ts +1469 -0
  185. package/src/atoms/types/index.ts +4 -0
  186. package/src/atoms/types/loading.ts +28 -0
  187. package/src/atoms/ui/Badge.tsx +30 -0
  188. package/src/atoms/ui/ErrorBoundary.tsx +59 -0
  189. package/src/atoms/ui/Select.tsx +53 -0
  190. package/src/atoms/ui/Switch.tsx +42 -0
  191. package/src/atoms/ui/Tabs.tsx +118 -0
  192. package/src/atoms/ui/avatar.tsx +48 -0
  193. package/src/atoms/ui/button.tsx +70 -0
  194. package/src/atoms/ui/card.tsx +76 -0
  195. package/src/atoms/ui/dropdown-menu.tsx +199 -0
  196. package/src/atoms/ui/index.ts +39 -0
  197. package/src/atoms/ui/input.tsx +23 -0
  198. package/src/atoms/ui/label.tsx +23 -0
  199. package/src/atoms/ui/skeleton.tsx +13 -0
  200. package/src/atoms/ui/spinner.tsx +49 -0
  201. package/src/atoms/ui/table.tsx +116 -0
  202. package/src/atoms/utils/animations.ts +135 -0
  203. package/src/atoms/utils/tooltip-helpers.ts +140 -0
  204. package/src/atoms/utils/utils.ts +9 -0
  205. package/src/features/auth/components/LoginForm.tsx +168 -0
  206. package/src/features/auth/components/LogoutButton.tsx +19 -0
  207. package/src/features/auth/components/ProtectedRoute.tsx +60 -0
  208. package/src/features/auth/components/index.ts +4 -0
  209. package/src/features/auth/hooks/index.ts +2 -0
  210. package/src/features/auth/hooks/useAuth.tsx +205 -0
  211. package/src/features/auth/hooks/usePermissions.ts +35 -0
  212. package/src/features/auth/index.ts +2 -0
  213. package/src/features/index.ts +2 -0
  214. package/src/index.css +704 -0
  215. package/src/index.ts +13 -0
  216. package/src/main.tsx +48 -0
  217. package/src/molecules/.gitkeep +0 -0
  218. package/src/molecules/forms/FormGroup.tsx +75 -0
  219. package/src/molecules/forms/SearchInput.tsx +259 -0
  220. package/src/molecules/forms/index.ts +4 -0
  221. package/src/molecules/index.ts +4 -0
  222. package/src/molecules/layout/AppHeader/AppHeader.tsx +42 -0
  223. package/src/molecules/layout/AppHeader/index.ts +1 -0
  224. package/src/molecules/layout/AppLayout.tsx +29 -0
  225. package/src/molecules/layout/PageTemplate.tsx +87 -0
  226. package/src/molecules/layout/SectionHeader/SectionHeader.tsx +87 -0
  227. package/src/molecules/layout/SectionHeader/index.ts +1 -0
  228. package/src/molecules/layout/ShowcaseSection.tsx +57 -0
  229. package/src/molecules/layout/Sidebar.tsx +144 -0
  230. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +99 -0
  231. package/src/molecules/layout/SidebarButton/index.ts +1 -0
  232. package/src/molecules/layout/SidebarContext.tsx +31 -0
  233. package/src/molecules/layout/index.ts +7 -0
  234. package/src/molecules/navigation/NavMenu.tsx +188 -0
  235. package/src/molecules/navigation/Pagination.tsx +172 -0
  236. package/src/molecules/navigation/index.ts +4 -0
  237. package/src/organisms/index.ts +5 -0
  238. package/src/organisms/showcase/ComponentShowcasePage.tsx +2496 -0
  239. package/src/organisms/showcase/index.ts +1 -0
  240. package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +242 -0
  241. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +171 -0
  242. package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +385 -0
  243. package/src/pages/AdminShowcase/index.tsx +3 -0
  244. package/src/pages/ComponentShowcase/BadgesShowcase.tsx +188 -0
  245. package/src/pages/ComponentShowcase/CardsShowcase.tsx +392 -0
  246. package/src/pages/ComponentShowcase/PalettesShowcase.tsx +207 -0
  247. package/src/pages/ComponentShowcase/StatesShowcase.tsx +485 -0
  248. package/src/pages/ComponentShowcase/TablesShowcase.tsx +134 -0
  249. package/src/pages/ComponentShowcase/TypographyShowcase.tsx +255 -0
  250. package/src/pages/ComponentShowcase/index.tsx +188 -0
  251. package/src/pages/index.ts +2 -0
  252. package/src/templates/AuthTemplate.tsx +216 -0
  253. package/src/templates/ComponentShowcaseTemplate.tsx +173 -0
  254. package/src/templates/DashboardTemplate.tsx +232 -0
  255. package/src/templates/DataTemplate.tsx +319 -0
  256. package/src/templates/admin/AdminCRUDTemplate.tsx +630 -0
  257. package/src/templates/admin/AdminDashboardTemplate.tsx +351 -0
  258. package/src/templates/admin/AdminDetailTemplate.tsx +563 -0
  259. package/src/templates/admin/index.ts +29 -0
  260. package/src/templates/factory.tsx +169 -0
  261. package/src/templates/index.ts +37 -0
  262. package/src/vite-env.d.ts +1 -0
  263. package/CHANGELOG.md +0 -63
  264. package/LICENSE +0 -19
  265. package/cli/cli/commands/generate-hooks.js +0 -291
  266. package/cli/cli/commands/init.js +0 -25
  267. package/cli/cli/commands/scaffold.js +0 -201
  268. package/cli/cli/index.js +0 -113
  269. package/cli/commands/generate-hooks.js +0 -288
  270. package/cli/commands/generate-hooks.ts +0 -316
  271. package/cli/commands/init.js +0 -22
  272. package/cli/commands/init.ts +0 -33
  273. package/cli/commands/scaffold.js +0 -198
  274. package/cli/commands/scaffold.ts +0 -224
  275. package/cli/index.js +0 -3210
  276. package/cli/index.ts +0 -122
  277. package/cli/src/codegen/openapi/bulk-hook-generator.js +0 -252
  278. package/cli/src/codegen/openapi/bulk-types.js +0 -89
  279. package/cli/src/codegen/openapi/client-generator.js +0 -672
  280. package/cli/src/codegen/openapi/confidence-scorer.js +0 -204
  281. package/cli/src/codegen/openapi/hook-config.js +0 -66
  282. package/cli/src/codegen/openapi/hook-generator.js +0 -1057
  283. package/cli/src/codegen/openapi/parser.js +0 -279
  284. package/cli/src/codegen/openapi/type-generator.js +0 -339
  285. package/dist/atoms/components/core/Avatar/Avatar.d.ts +0 -41
  286. package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +0 -1
  287. package/dist/atoms/components/core/Avatar/index.d.ts +0 -2
  288. package/dist/atoms/components/core/Avatar/index.d.ts.map +0 -1
  289. package/dist/atoms/components/core/Badge/Badge.d.ts +0 -38
  290. package/dist/atoms/components/core/Badge/Badge.d.ts.map +0 -1
  291. package/dist/atoms/components/core/Badge/index.d.ts +0 -2
  292. package/dist/atoms/components/core/Badge/index.d.ts.map +0 -1
  293. package/dist/atoms/components/core/Button/Button.d.ts +0 -28
  294. package/dist/atoms/components/core/Button/Button.d.ts.map +0 -1
  295. package/dist/atoms/components/core/Button/index.d.ts +0 -3
  296. package/dist/atoms/components/core/Button/index.d.ts.map +0 -1
  297. package/dist/atoms/components/core/Card/Card.d.ts +0 -41
  298. package/dist/atoms/components/core/Card/Card.d.ts.map +0 -1
  299. package/dist/atoms/components/core/Card/index.d.ts +0 -3
  300. package/dist/atoms/components/core/Card/index.d.ts.map +0 -1
  301. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +0 -28
  302. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +0 -1
  303. package/dist/atoms/components/core/Checkbox/index.d.ts +0 -3
  304. package/dist/atoms/components/core/Checkbox/index.d.ts.map +0 -1
  305. package/dist/atoms/components/core/Input/Input.d.ts +0 -37
  306. package/dist/atoms/components/core/Input/Input.d.ts.map +0 -1
  307. package/dist/atoms/components/core/Input/index.d.ts +0 -3
  308. package/dist/atoms/components/core/Input/index.d.ts.map +0 -1
  309. package/dist/atoms/components/core/Label/Label.d.ts +0 -23
  310. package/dist/atoms/components/core/Label/Label.d.ts.map +0 -1
  311. package/dist/atoms/components/core/Label/index.d.ts +0 -3
  312. package/dist/atoms/components/core/Label/index.d.ts.map +0 -1
  313. package/dist/atoms/components/core/Select/Select.d.ts +0 -42
  314. package/dist/atoms/components/core/Select/Select.d.ts.map +0 -1
  315. package/dist/atoms/components/core/Select/index.d.ts +0 -3
  316. package/dist/atoms/components/core/Select/index.d.ts.map +0 -1
  317. package/dist/atoms/components/core/Spinner/Spinner.d.ts +0 -25
  318. package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +0 -1
  319. package/dist/atoms/components/core/Spinner/index.d.ts +0 -3
  320. package/dist/atoms/components/core/Spinner/index.d.ts.map +0 -1
  321. package/dist/atoms/components/core/Switch/Switch.d.ts +0 -35
  322. package/dist/atoms/components/core/Switch/Switch.d.ts.map +0 -1
  323. package/dist/atoms/components/core/Switch/index.d.ts +0 -2
  324. package/dist/atoms/components/core/Switch/index.d.ts.map +0 -1
  325. package/dist/atoms/components/core/index.d.ts +0 -11
  326. package/dist/atoms/components/core/index.d.ts.map +0 -1
  327. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +0 -4
  328. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +0 -1
  329. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +0 -38
  330. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +0 -1
  331. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +0 -9
  332. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +0 -1
  333. package/dist/atoms/components/data/ActivityFeed/index.d.ts +0 -4
  334. package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +0 -1
  335. package/dist/atoms/components/data/ActivityFeed/types.d.ts +0 -26
  336. package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +0 -1
  337. package/dist/atoms/components/data/ActivityFeed/utils.d.ts +0 -5
  338. package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +0 -1
  339. package/dist/atoms/components/data/Chart/Chart.d.ts.map +0 -1
  340. package/dist/atoms/components/data/Chart/index.d.ts.map +0 -1
  341. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +0 -18
  342. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +0 -1
  343. package/dist/atoms/components/data/DataBadge/index.d.ts.map +0 -1
  344. package/dist/atoms/components/data/DataTable/DataTable.d.ts +0 -5
  345. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +0 -1
  346. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +0 -51
  347. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +0 -1
  348. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts.map +0 -1
  349. package/dist/atoms/components/data/DataTable/index.d.ts.map +0 -1
  350. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +0 -1
  351. package/dist/atoms/components/data/DetailedCard/index.d.ts.map +0 -1
  352. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +0 -24
  353. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +0 -1
  354. package/dist/atoms/components/data/EntityIcon/index.d.ts +0 -2
  355. package/dist/atoms/components/data/EntityIcon/index.d.ts.map +0 -1
  356. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +0 -1
  357. package/dist/atoms/components/data/IconBadge/index.d.ts.map +0 -1
  358. package/dist/atoms/components/data/ListCard/ListCard.d.ts +0 -32
  359. package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +0 -1
  360. package/dist/atoms/components/data/ListCard/index.d.ts +0 -2
  361. package/dist/atoms/components/data/ListCard/index.d.ts.map +0 -1
  362. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +0 -1
  363. package/dist/atoms/components/data/ProgressBar/index.d.ts.map +0 -1
  364. package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +0 -1
  365. package/dist/atoms/components/data/StatCard/index.d.ts.map +0 -1
  366. package/dist/atoms/components/data/Table/Table.d.ts +0 -41
  367. package/dist/atoms/components/data/Table/Table.d.ts.map +0 -1
  368. package/dist/atoms/components/data/Table/index.d.ts +0 -2
  369. package/dist/atoms/components/data/Table/index.d.ts.map +0 -1
  370. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +0 -26
  371. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +0 -1
  372. package/dist/atoms/components/data/TruncatedText/index.d.ts +0 -2
  373. package/dist/atoms/components/data/TruncatedText/index.d.ts.map +0 -1
  374. package/dist/atoms/components/data/index.d.ts +0 -13
  375. package/dist/atoms/components/data/index.d.ts.map +0 -1
  376. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts +0 -19
  377. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +0 -1
  378. package/dist/atoms/components/domain/SalesPanel/index.d.ts +0 -2
  379. package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +0 -1
  380. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts +0 -63
  381. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts.map +0 -1
  382. package/dist/atoms/components/domain/index.d.ts +0 -2
  383. package/dist/atoms/components/domain/index.d.ts.map +0 -1
  384. package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +0 -1
  385. package/dist/atoms/components/feedback/Alert/index.d.ts.map +0 -1
  386. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +0 -1
  387. package/dist/atoms/components/feedback/EmptyState/index.d.ts.map +0 -1
  388. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +0 -61
  389. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +0 -1
  390. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +0 -2
  391. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts.map +0 -1
  392. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +0 -41
  393. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +0 -1
  394. package/dist/atoms/components/feedback/Skeleton/index.d.ts +0 -2
  395. package/dist/atoms/components/feedback/Skeleton/index.d.ts.map +0 -1
  396. package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +0 -1
  397. package/dist/atoms/components/feedback/Toast/index.d.ts.map +0 -1
  398. package/dist/atoms/components/feedback/index.d.ts +0 -6
  399. package/dist/atoms/components/feedback/index.d.ts.map +0 -1
  400. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  401. package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +0 -1
  402. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +0 -1
  403. package/dist/atoms/components/forms/FileUpload/index.d.ts.map +0 -1
  404. package/dist/atoms/components/forms/FormField/FormField.d.ts.map +0 -1
  405. package/dist/atoms/components/forms/FormField/index.d.ts.map +0 -1
  406. package/dist/atoms/components/forms/index.d.ts +0 -4
  407. package/dist/atoms/components/forms/index.d.ts.map +0 -1
  408. package/dist/atoms/components/index.d.ts +0 -10
  409. package/dist/atoms/components/index.d.ts.map +0 -1
  410. package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +0 -1
  411. package/dist/atoms/components/layout/Accordion/index.d.ts.map +0 -1
  412. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  413. package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +0 -1
  414. package/dist/atoms/components/layout/Dialog/index.d.ts +0 -3
  415. package/dist/atoms/components/layout/Dialog/index.d.ts.map +0 -1
  416. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +0 -40
  417. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +0 -1
  418. package/dist/atoms/components/layout/Dropdown/index.d.ts +0 -3
  419. package/dist/atoms/components/layout/Dropdown/index.d.ts.map +0 -1
  420. package/dist/atoms/components/layout/Modal/Modal.d.ts.map +0 -1
  421. package/dist/atoms/components/layout/Modal/index.d.ts.map +0 -1
  422. package/dist/atoms/components/layout/Tabs/index.d.ts +0 -2
  423. package/dist/atoms/components/layout/Tabs/index.d.ts.map +0 -1
  424. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +0 -1
  425. package/dist/atoms/components/layout/Tooltip/index.d.ts +0 -2
  426. package/dist/atoms/components/layout/Tooltip/index.d.ts.map +0 -1
  427. package/dist/atoms/components/layout/index.d.ts +0 -8
  428. package/dist/atoms/components/layout/index.d.ts.map +0 -1
  429. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +0 -1
  430. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +0 -1
  431. package/dist/atoms/components/navigation/index.d.ts +0 -2
  432. package/dist/atoms/components/navigation/index.d.ts.map +0 -1
  433. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +0 -1
  434. package/dist/atoms/components/theme/ColorSwatch/index.d.ts.map +0 -1
  435. package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +0 -1
  436. package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +0 -1
  437. package/dist/atoms/components/theme/StyleGuide.d.ts.map +0 -1
  438. package/dist/atoms/components/theme/index.d.ts +0 -5
  439. package/dist/atoms/components/theme/index.d.ts.map +0 -1
  440. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +0 -1
  441. package/dist/atoms/components/user/UserAvatar/index.d.ts.map +0 -1
  442. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +0 -1
  443. package/dist/atoms/components/user/UserMenu/index.d.ts.map +0 -1
  444. package/dist/atoms/components/user/index.d.ts +0 -3
  445. package/dist/atoms/components/user/index.d.ts.map +0 -1
  446. package/dist/atoms/config/responsive.d.ts +0 -147
  447. package/dist/atoms/config/responsive.d.ts.map +0 -1
  448. package/dist/atoms/hooks/index.d.ts +0 -5
  449. package/dist/atoms/hooks/index.d.ts.map +0 -1
  450. package/dist/atoms/hooks/use-toast.d.ts +0 -16
  451. package/dist/atoms/hooks/use-toast.d.ts.map +0 -1
  452. package/dist/atoms/hooks/useResponsive.d.ts +0 -42
  453. package/dist/atoms/hooks/useResponsive.d.ts.map +0 -1
  454. package/dist/atoms/primitives/Badge.d.ts.map +0 -1
  455. package/dist/atoms/primitives/ErrorBoundary.d.ts.map +0 -1
  456. package/dist/atoms/primitives/Select.d.ts.map +0 -1
  457. package/dist/atoms/primitives/Switch.d.ts.map +0 -1
  458. package/dist/atoms/primitives/Tabs.d.ts.map +0 -1
  459. package/dist/atoms/primitives/avatar.d.ts.map +0 -1
  460. package/dist/atoms/primitives/button.d.ts.map +0 -1
  461. package/dist/atoms/primitives/card.d.ts.map +0 -1
  462. package/dist/atoms/primitives/checkbox.d.ts +0 -12
  463. package/dist/atoms/primitives/checkbox.d.ts.map +0 -1
  464. package/dist/atoms/primitives/dialog.d.ts +0 -34
  465. package/dist/atoms/primitives/dialog.d.ts.map +0 -1
  466. package/dist/atoms/primitives/dropdown-menu.d.ts.map +0 -1
  467. package/dist/atoms/primitives/index.d.ts.map +0 -1
  468. package/dist/atoms/primitives/input.d.ts.map +0 -1
  469. package/dist/atoms/primitives/label.d.ts.map +0 -1
  470. package/dist/atoms/primitives/skeleton.d.ts.map +0 -1
  471. package/dist/atoms/primitives/spinner.d.ts.map +0 -1
  472. package/dist/atoms/primitives/table.d.ts.map +0 -1
  473. package/dist/atoms/types/entity-config.d.ts +0 -117
  474. package/dist/atoms/types/entity-config.d.ts.map +0 -1
  475. package/dist/atoms/types/navigation.d.ts +0 -30
  476. package/dist/atoms/types/navigation.d.ts.map +0 -1
  477. package/dist/atoms/types/ui-config.d.ts +0 -50
  478. package/dist/atoms/types/ui-config.d.ts.map +0 -1
  479. package/dist/atoms/utils/color-manager.d.ts +0 -68
  480. package/dist/atoms/utils/color-manager.d.ts.map +0 -1
  481. package/dist/atoms/utils/debounce.d.ts +0 -6
  482. package/dist/atoms/utils/debounce.d.ts.map +0 -1
  483. package/dist/atoms/utils/field-detection.d.ts +0 -15
  484. package/dist/atoms/utils/field-detection.d.ts.map +0 -1
  485. package/dist/atoms/utils/icon-resolver.d.ts +0 -76
  486. package/dist/atoms/utils/icon-resolver.d.ts.map +0 -1
  487. package/dist/atoms/utils/index.d.ts +0 -5
  488. package/dist/atoms/utils/index.d.ts.map +0 -1
  489. package/dist/atoms/utils/metric-engine.d.ts +0 -30
  490. package/dist/atoms/utils/metric-engine.d.ts.map +0 -1
  491. package/dist/atoms/utils/ui-mapping.d.ts +0 -17
  492. package/dist/atoms/utils/ui-mapping.d.ts.map +0 -1
  493. package/dist/codegen/index.d.ts +0 -7
  494. package/dist/codegen/index.d.ts.map +0 -1
  495. package/dist/codegen/openapi/bulk-hook-generator.d.ts +0 -40
  496. package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +0 -1
  497. package/dist/codegen/openapi/bulk-types.d.ts +0 -142
  498. package/dist/codegen/openapi/bulk-types.d.ts.map +0 -1
  499. package/dist/codegen/openapi/client-generator.d.ts +0 -52
  500. package/dist/codegen/openapi/client-generator.d.ts.map +0 -1
  501. package/dist/codegen/openapi/confidence-scorer.d.ts +0 -30
  502. package/dist/codegen/openapi/confidence-scorer.d.ts.map +0 -1
  503. package/dist/codegen/openapi/hook-config.d.ts +0 -50
  504. package/dist/codegen/openapi/hook-config.d.ts.map +0 -1
  505. package/dist/codegen/openapi/hook-generator.d.ts +0 -108
  506. package/dist/codegen/openapi/hook-generator.d.ts.map +0 -1
  507. package/dist/codegen/openapi/index.d.ts +0 -27
  508. package/dist/codegen/openapi/index.d.ts.map +0 -1
  509. package/dist/codegen/openapi/parser.d.ts +0 -107
  510. package/dist/codegen/openapi/parser.d.ts.map +0 -1
  511. package/dist/codegen/openapi/type-generator.d.ts +0 -53
  512. package/dist/codegen/openapi/type-generator.d.ts.map +0 -1
  513. package/dist/features/auth/hooks/useAuthContext.d.ts +0 -7
  514. package/dist/features/auth/hooks/useAuthContext.d.ts.map +0 -1
  515. package/dist/features/auth/providers/MockAuthProvider.d.ts +0 -9
  516. package/dist/features/auth/providers/MockAuthProvider.d.ts.map +0 -1
  517. package/dist/features/auth/providers/index.d.ts +0 -2
  518. package/dist/features/auth/providers/index.d.ts.map +0 -1
  519. package/dist/features/auth/services/mock-auth-service.d.ts +0 -17
  520. package/dist/features/auth/services/mock-auth-service.d.ts.map +0 -1
  521. package/dist/generated/client/client.d.ts +0 -23
  522. package/dist/generated/client/client.d.ts.map +0 -1
  523. package/dist/generated/client/config.d.ts +0 -10
  524. package/dist/generated/client/config.d.ts.map +0 -1
  525. package/dist/generated/client/index.d.ts +0 -12
  526. package/dist/generated/client/index.d.ts.map +0 -1
  527. package/dist/generated/client/methods.d.ts +0 -591
  528. package/dist/generated/client/methods.d.ts.map +0 -1
  529. package/dist/generated/client/types.d.ts +0 -37
  530. package/dist/generated/client/types.d.ts.map +0 -1
  531. package/dist/generated/example.d.ts +0 -8
  532. package/dist/generated/example.d.ts.map +0 -1
  533. package/dist/generated/hooks/index.d.ts +0 -11
  534. package/dist/generated/hooks/index.d.ts.map +0 -1
  535. package/dist/generated/hooks/keys.d.ts +0 -59
  536. package/dist/generated/hooks/keys.d.ts.map +0 -1
  537. package/dist/generated/hooks/mutations.d.ts +0 -551
  538. package/dist/generated/hooks/mutations.d.ts.map +0 -1
  539. package/dist/generated/hooks/queries.d.ts +0 -426
  540. package/dist/generated/hooks/queries.d.ts.map +0 -1
  541. package/dist/generated/hooks/types.d.ts +0 -318
  542. package/dist/generated/hooks/types.d.ts.map +0 -1
  543. package/dist/generated/index.d.ts +0 -13
  544. package/dist/generated/index.d.ts.map +0 -1
  545. package/dist/generated/types/endpoints.d.ts +0 -1364
  546. package/dist/generated/types/endpoints.d.ts.map +0 -1
  547. package/dist/generated/types/index.d.ts +0 -11
  548. package/dist/generated/types/index.d.ts.map +0 -1
  549. package/dist/generated/types/parameters.d.ts +0 -8
  550. package/dist/generated/types/parameters.d.ts.map +0 -1
  551. package/dist/generated/types/responses.d.ts +0 -8
  552. package/dist/generated/types/responses.d.ts.map +0 -1
  553. package/dist/generated/types/schemas.d.ts +0 -652
  554. package/dist/generated/types/schemas.d.ts.map +0 -1
  555. package/dist/molecules/feedback/index.d.ts +0 -2
  556. package/dist/molecules/feedback/index.d.ts.map +0 -1
  557. package/dist/molecules/layout/BulkSelectionBar.d.ts +0 -15
  558. package/dist/molecules/layout/BulkSelectionBar.d.ts.map +0 -1
  559. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +0 -16
  560. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts.map +0 -1
  561. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +0 -2
  562. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts.map +0 -1
  563. package/dist/molecules/layout/NavigationContext.d.ts +0 -15
  564. package/dist/molecules/layout/NavigationContext.d.ts.map +0 -1
  565. package/dist/templates/EnhancedDataTemplate.d.ts +0 -188
  566. package/dist/templates/EnhancedDataTemplate.d.ts.map +0 -1
  567. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +0 -18
  568. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +0 -1
  569. package/dist/templates/EnhancedDataTemplate.hooks.d.ts +0 -22
  570. package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +0 -1
  571. package/dist/templates/api/APIDataTemplate.d.ts +0 -66
  572. package/dist/templates/api/APIDataTemplate.d.ts.map +0 -1
  573. package/dist/templates/api/index.d.ts +0 -8
  574. package/dist/templates/api/index.d.ts.map +0 -1
  575. /package/dist/atoms/{components/layout → composed}/Accordion/Accordion.d.ts +0 -0
  576. /package/dist/atoms/{components/layout → composed}/Accordion/index.d.ts +0 -0
  577. /package/dist/atoms/{components/feedback → composed}/Alert/Alert.d.ts +0 -0
  578. /package/dist/atoms/{components/feedback → composed}/Alert/index.d.ts +0 -0
  579. /package/dist/atoms/{components/layout → composed}/Breadcrumb/Breadcrumb.d.ts +0 -0
  580. /package/dist/atoms/{components/layout → composed}/Breadcrumb/index.d.ts +0 -0
  581. /package/dist/atoms/{components/data → composed}/Chart/index.d.ts +0 -0
  582. /package/dist/atoms/{components/theme → composed}/ColorSwatch/ColorSwatch.d.ts +0 -0
  583. /package/dist/atoms/{components/theme → composed}/ColorSwatch/index.d.ts +0 -0
  584. /package/dist/atoms/{components/theme → composed}/DarkModeToggle.d.ts +0 -0
  585. /package/dist/atoms/{components/data → composed}/DataBadge/index.d.ts +0 -0
  586. /package/dist/atoms/{components/data → composed}/DataTable/TableCellWithTooltip.d.ts +0 -0
  587. /package/dist/atoms/{components/data → composed}/DataTable/index.d.ts +0 -0
  588. /package/dist/atoms/{components/forms → composed}/DateTimePicker/DateTimePicker.d.ts +0 -0
  589. /package/dist/atoms/{components/forms → composed}/DateTimePicker/index.d.ts +0 -0
  590. /package/dist/atoms/{components/data → composed}/DetailedCard/DetailedCard.d.ts +0 -0
  591. /package/dist/atoms/{components/data → composed}/DetailedCard/index.d.ts +0 -0
  592. /package/dist/atoms/{components/feedback → composed}/EmptyState/EmptyState.d.ts +0 -0
  593. /package/dist/atoms/{components/feedback → composed}/EmptyState/index.d.ts +0 -0
  594. /package/dist/atoms/{components/forms → composed}/FileUpload/FileUpload.d.ts +0 -0
  595. /package/dist/atoms/{components/forms → composed}/FileUpload/index.d.ts +0 -0
  596. /package/dist/atoms/{components/forms → composed}/FormField/FormField.d.ts +0 -0
  597. /package/dist/atoms/{components/forms → composed}/FormField/index.d.ts +0 -0
  598. /package/dist/atoms/{components/navigation → composed}/GlobalSearch/GlobalSearch.d.ts +0 -0
  599. /package/dist/atoms/{components/navigation → composed}/GlobalSearch/index.d.ts +0 -0
  600. /package/dist/atoms/{components/data → composed}/IconBadge/index.d.ts +0 -0
  601. /package/dist/atoms/{components/layout → composed}/Modal/Modal.d.ts +0 -0
  602. /package/dist/atoms/{components/layout → composed}/Modal/index.d.ts +0 -0
  603. /package/dist/atoms/{components/theme → composed}/PaletteSwitcher.d.ts +0 -0
  604. /package/dist/atoms/{components/data → composed}/ProgressBar/ProgressBar.d.ts +0 -0
  605. /package/dist/atoms/{components/data → composed}/ProgressBar/index.d.ts +0 -0
  606. /package/dist/atoms/{components/data → composed}/StatCard/index.d.ts +0 -0
  607. /package/dist/atoms/{components/theme → composed}/StyleGuide.d.ts +0 -0
  608. /package/dist/atoms/{components/feedback → composed}/Toast/Toast.d.ts +0 -0
  609. /package/dist/atoms/{components/feedback → composed}/Toast/index.d.ts +0 -0
  610. /package/dist/atoms/{components/layout → composed}/Tooltip/Tooltip.d.ts +0 -0
  611. /package/dist/atoms/{components/user → composed}/UserAvatar/UserAvatar.d.ts +0 -0
  612. /package/dist/atoms/{components/user → composed}/UserAvatar/index.d.ts +0 -0
  613. /package/dist/atoms/{components/user → composed}/UserMenu/UserMenu.d.ts +0 -0
  614. /package/dist/atoms/{components/user → composed}/UserMenu/index.d.ts +0 -0
  615. /package/dist/atoms/{primitives → ui}/Badge.d.ts +0 -0
  616. /package/dist/atoms/{primitives → ui}/ErrorBoundary.d.ts +0 -0
  617. /package/dist/atoms/{primitives → ui}/Select.d.ts +0 -0
  618. /package/dist/atoms/{primitives → ui}/Switch.d.ts +0 -0
  619. /package/dist/atoms/{primitives → ui}/Tabs.d.ts +0 -0
  620. /package/dist/atoms/{primitives → ui}/avatar.d.ts +0 -0
  621. /package/dist/atoms/{primitives → ui}/card.d.ts +0 -0
  622. /package/dist/atoms/{primitives → ui}/dropdown-menu.d.ts +0 -0
  623. /package/dist/atoms/{primitives → ui}/input.d.ts +0 -0
  624. /package/dist/atoms/{primitives → ui}/label.d.ts +0 -0
  625. /package/dist/atoms/{primitives → ui}/skeleton.d.ts +0 -0
  626. /package/dist/atoms/{primitives → ui}/spinner.d.ts +0 -0
  627. /package/dist/atoms/{primitives → ui}/table.d.ts +0 -0
@@ -0,0 +1,44 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { renderHook } from '@testing-library/react'
3
+ import { useState } from 'react'
4
+
5
+ describe('Simple Hook Tests (Example)', () => {
6
+ it('useState hook works correctly', () => {
7
+ const { result } = renderHook(() => useState(0))
8
+
9
+ const [count, setCount] = result.current
10
+ expect(count).toBe(0)
11
+
12
+ // Test that hook function is returned
13
+ expect(typeof setCount).toBe('function')
14
+ })
15
+
16
+ it('useEffect-like behavior can be tested', () => {
17
+ const { result, rerender } = renderHook(
18
+ ({ initialValue }) => useState(initialValue),
19
+ { initialProps: { initialValue: 10 } }
20
+ )
21
+
22
+ expect(result.current[0]).toBe(10)
23
+
24
+ // Test re-render with new props
25
+ rerender({ initialValue: 20 })
26
+ // Note: useState doesn't re-initialize on prop changes, this is just testing the pattern
27
+ expect(result.current[0]).toBe(10) // Still 10 because useState doesn't re-init
28
+ })
29
+
30
+ it('custom hook pattern testing', () => {
31
+ const useCounter = (initial = 0) => {
32
+ const [count, setCount] = useState(initial)
33
+ const increment = () => setCount(c => c + 1)
34
+ const decrement = () => setCount(c => c - 1)
35
+ return { count, increment, decrement }
36
+ }
37
+
38
+ const { result } = renderHook(() => useCounter(5))
39
+
40
+ expect(result.current.count).toBe(5)
41
+ expect(typeof result.current.increment).toBe('function')
42
+ expect(typeof result.current.decrement).toBe('function')
43
+ })
44
+ })
@@ -0,0 +1,68 @@
1
+ import React from 'react'
2
+ import { describe, it, expect } from 'vitest'
3
+ import { render, screen, userEvent } from '../../utils'
4
+ import { Button } from '../../../atoms/ui/button'
5
+
6
+ describe('Button (Atom)', () => {
7
+ it('renders with default variant', () => {
8
+ render(<Button>Click me</Button>)
9
+ const button = screen.getByRole('button', { name: /click me/i })
10
+ expect(button).toBeInTheDocument()
11
+ // The button uses gradient, so check for primary color reference
12
+ expect(button.className).toContain('from-primary')
13
+ })
14
+
15
+ it('renders with different variants', () => {
16
+ const { rerender } = render(<Button variant="secondary">Secondary</Button>)
17
+ expect(screen.getByRole('button')).toHaveClass('bg-gray-100')
18
+
19
+ rerender(<Button variant="destructive">Destructive</Button>)
20
+ expect(screen.getByRole('button').className).toContain('from-destructive')
21
+ })
22
+
23
+ it('renders with different sizes', () => {
24
+ const { rerender } = render(<Button size="sm">Small</Button>)
25
+ expect(screen.getByRole('button')).toHaveClass('h-9')
26
+
27
+ rerender(<Button size="lg">Large</Button>)
28
+ expect(screen.getByRole('button')).toHaveClass('h-12')
29
+ })
30
+
31
+ it('handles click events', async () => {
32
+ const user = userEvent.setup()
33
+ const handleClick = vi.fn()
34
+
35
+ render(<Button onClick={handleClick}>Click me</Button>)
36
+
37
+ await user.click(screen.getByRole('button'))
38
+ expect(handleClick).toHaveBeenCalledOnce()
39
+ })
40
+
41
+ it('is disabled when disabled prop is true', () => {
42
+ render(<Button disabled>Disabled</Button>)
43
+ const button = screen.getByRole('button')
44
+ expect(button).toBeDisabled()
45
+ expect(button).toHaveClass('disabled:pointer-events-none')
46
+ })
47
+
48
+ it('renders as child component when asChild is true', () => {
49
+ render(
50
+ <Button asChild>
51
+ <a href="/test">Link button</a>
52
+ </Button>
53
+ )
54
+
55
+ const link = screen.getByRole('link')
56
+ expect(link).toBeInTheDocument()
57
+ expect(link.className).toContain('from-primary')
58
+ expect(link).toHaveAttribute('href', '/test')
59
+ })
60
+
61
+ it('forwards ref correctly', () => {
62
+ const ref = React.createRef<HTMLButtonElement>()
63
+ render(<Button ref={ref}>Button</Button>)
64
+
65
+ expect(ref.current).toBeInstanceOf(HTMLButtonElement)
66
+ expect(ref.current).toHaveTextContent('Button')
67
+ })
68
+ })
@@ -0,0 +1,18 @@
1
+ import { describe, it, expect } from 'vitest'
2
+
3
+ describe('Simple Test (Example)', () => {
4
+ it('basic arithmetic works', () => {
5
+ expect(2 + 2).toBe(4)
6
+ })
7
+
8
+ it('string manipulation works', () => {
9
+ const str = 'hello world'
10
+ expect(str.toUpperCase()).toBe('HELLO WORLD')
11
+ })
12
+
13
+ it('array operations work', () => {
14
+ const arr = [1, 2, 3]
15
+ expect(arr.length).toBe(3)
16
+ expect(arr.includes(2)).toBe(true)
17
+ })
18
+ })
@@ -0,0 +1,77 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { cn } from '../../../atoms/utils/utils'
3
+
4
+ describe('Utils (Atoms)', () => {
5
+ describe('cn (className utility)', () => {
6
+ it('merges class names correctly', () => {
7
+ const result = cn('px-4 py-2', 'bg-blue-500')
8
+ expect(result).toBe('px-4 py-2 bg-blue-500')
9
+ })
10
+
11
+ it('handles conditional classes', () => {
12
+ const isActive = true
13
+ const isDisabled = false
14
+
15
+ const result = cn(
16
+ 'base-class',
17
+ isActive && 'active-class',
18
+ isDisabled && 'disabled-class'
19
+ )
20
+
21
+ expect(result).toBe('base-class active-class')
22
+ })
23
+
24
+ it('resolves conflicting Tailwind classes', () => {
25
+ // tailwind-merge should resolve conflicts
26
+ const result = cn('px-2 px-4') // px-4 should win
27
+ expect(result).toBe('px-4')
28
+ })
29
+
30
+ it('handles arrays of classes', () => {
31
+ const result = cn(['px-4', 'py-2'], ['bg-blue-500', 'text-white'])
32
+ expect(result).toBe('px-4 py-2 bg-blue-500 text-white')
33
+ })
34
+
35
+ it('handles object syntax', () => {
36
+ const result = cn({
37
+ 'px-4': true,
38
+ 'py-2': true,
39
+ 'bg-red-500': false,
40
+ 'bg-blue-500': true,
41
+ })
42
+ expect(result).toBe('px-4 py-2 bg-blue-500')
43
+ })
44
+
45
+ it('handles undefined and null values', () => {
46
+ const result = cn('px-4', undefined, null, 'py-2')
47
+ expect(result).toBe('px-4 py-2')
48
+ })
49
+
50
+ it('handles empty strings', () => {
51
+ const result = cn('', 'px-4', '', 'py-2')
52
+ expect(result).toBe('px-4 py-2')
53
+ })
54
+
55
+ it('maintains design system classes', () => {
56
+ // Test that design system classes are preserved
57
+ const result = cn('bg-primary text-primary-foreground', 'hover:bg-primary-hover')
58
+ expect(result).toBe('bg-primary text-primary-foreground hover:bg-primary-hover')
59
+ })
60
+
61
+ it('works with status classes', () => {
62
+ const status = 'success'
63
+ const result = cn(
64
+ 'base-class',
65
+ status === 'success' && 'status-success',
66
+ status === 'error' && 'status-error'
67
+ )
68
+ expect(result).toBe('base-class status-success')
69
+ })
70
+
71
+ it('works with category classes', () => {
72
+ const category = 2
73
+ const result = cn('base-class', `category-${category}`)
74
+ expect(result).toBe('base-class category-2')
75
+ })
76
+ })
77
+ })
@@ -0,0 +1,40 @@
1
+ import React from 'react'
2
+ import { describe, it, expect } from 'vitest'
3
+ import { render, screen } from '../../utils'
4
+
5
+ // Simple auth component for testing
6
+ const AuthStatus = ({ isAuthenticated }: { isAuthenticated: boolean }) => (
7
+ <div>
8
+ {isAuthenticated ? (
9
+ <span data-testid="authenticated">User is logged in</span>
10
+ ) : (
11
+ <span data-testid="not-authenticated">Please log in</span>
12
+ )}
13
+ </div>
14
+ )
15
+
16
+ describe('Auth Components (Feature)', () => {
17
+ it('displays authenticated state correctly', () => {
18
+ render(<AuthStatus isAuthenticated={true} />)
19
+
20
+ expect(screen.getByTestId('authenticated')).toBeInTheDocument()
21
+ expect(screen.getByText('User is logged in')).toBeInTheDocument()
22
+ })
23
+
24
+ it('displays unauthenticated state correctly', () => {
25
+ render(<AuthStatus isAuthenticated={false} />)
26
+
27
+ expect(screen.getByTestId('not-authenticated')).toBeInTheDocument()
28
+ expect(screen.getByText('Please log in')).toBeInTheDocument()
29
+ })
30
+
31
+ it('toggles between states correctly', () => {
32
+ const { rerender } = render(<AuthStatus isAuthenticated={false} />)
33
+
34
+ expect(screen.getByText('Please log in')).toBeInTheDocument()
35
+
36
+ rerender(<AuthStatus isAuthenticated={true} />)
37
+
38
+ expect(screen.getByText('User is logged in')).toBeInTheDocument()
39
+ })
40
+ })
@@ -0,0 +1,81 @@
1
+ import React from 'react'
2
+ import { describe, it, expect } from 'vitest'
3
+ import { render, screen } from '../../utils'
4
+
5
+ // Simple layout component for testing
6
+ const SimpleHeader = ({ title, showNav = true }: { title: string; showNav?: boolean }) => (
7
+ <header role="banner" className="bg-background border-b border-border">
8
+ <div className="flex items-center justify-between p-4">
9
+ <h1 className="text-xl font-semibold text-foreground">{title}</h1>
10
+ {showNav && (
11
+ <nav aria-label="Main navigation">
12
+ <ul className="flex space-x-4">
13
+ <li>
14
+ <a href="/" className="text-primary hover:text-primary-hover">Home</a>
15
+ </li>
16
+ <li>
17
+ <a href="/about" className="text-primary hover:text-primary-hover">About</a>
18
+ </li>
19
+ </ul>
20
+ </nav>
21
+ )}
22
+ </div>
23
+ </header>
24
+ )
25
+
26
+ describe('Layout Components (Molecule)', () => {
27
+ it('renders header with title', () => {
28
+ render(<SimpleHeader title="Test App" />)
29
+
30
+ const header = screen.getByRole('banner')
31
+ expect(header).toBeInTheDocument()
32
+
33
+ const title = screen.getByRole('heading', { level: 1 })
34
+ expect(title).toHaveTextContent('Test App')
35
+ })
36
+
37
+ it('renders navigation when showNav is true', () => {
38
+ render(<SimpleHeader title="Test App" showNav={true} />)
39
+
40
+ const nav = screen.getByRole('navigation', { name: /main navigation/i })
41
+ expect(nav).toBeInTheDocument()
42
+
43
+ expect(screen.getByRole('link', { name: /home/i })).toBeInTheDocument()
44
+ expect(screen.getByRole('link', { name: /about/i })).toBeInTheDocument()
45
+ })
46
+
47
+ it('hides navigation when showNav is false', () => {
48
+ render(<SimpleHeader title="Test App" showNav={false} />)
49
+
50
+ const nav = screen.queryByRole('navigation')
51
+ expect(nav).not.toBeInTheDocument()
52
+ })
53
+
54
+ it('uses design system classes', () => {
55
+ render(<SimpleHeader title="Test App" />)
56
+
57
+ const header = screen.getByRole('banner')
58
+
59
+ // Should use design system classes
60
+ expect(header).toHaveClass('bg-background')
61
+ expect(header).toHaveClass('border-border')
62
+
63
+ // Should not use hardcoded color classes
64
+ expect(header.className).not.toMatch(/bg-(blue|red|green)-\d+/)
65
+ })
66
+
67
+ it('has proper accessibility attributes', () => {
68
+ render(<SimpleHeader title="Test App" />)
69
+
70
+ const header = screen.getByRole('banner')
71
+ expect(header).toBeInTheDocument()
72
+
73
+ const nav = screen.getByRole('navigation')
74
+ expect(nav).toHaveAttribute('aria-label', 'Main navigation')
75
+
76
+ const links = screen.getAllByRole('link')
77
+ links.forEach(link => {
78
+ expect(link).toHaveAttribute('href')
79
+ })
80
+ })
81
+ })
@@ -0,0 +1,167 @@
1
+ import React from 'react'
2
+ import { describe, it, expect } from 'vitest'
3
+ import { render, screen, userEvent } from '../../utils'
4
+ import { cn } from '../../../atoms/utils/utils'
5
+
6
+ // Simple showcase component for testing
7
+ const SimpleShowcase = () => {
8
+ const [activeTab, setActiveTab] = React.useState('components')
9
+
10
+ return (
11
+ <main className="p-6">
12
+ <h1 className="text-3xl font-bold text-foreground mb-6">Component Showcase</h1>
13
+
14
+ <div className="mb-6">
15
+ <nav aria-label="Showcase navigation">
16
+ <div role="tablist" className="flex space-x-4 border-b border-border">
17
+ <button
18
+ role="tab"
19
+ aria-selected={activeTab === 'components'}
20
+ className={cn(
21
+ 'px-4 py-2 font-medium',
22
+ activeTab === 'components'
23
+ ? 'text-primary border-b-2 border-primary'
24
+ : 'text-muted-foreground hover:text-foreground'
25
+ )}
26
+ onClick={() => setActiveTab('components')}
27
+ >
28
+ Components
29
+ </button>
30
+ <button
31
+ role="tab"
32
+ aria-selected={activeTab === 'colors'}
33
+ className={cn(
34
+ 'px-4 py-2 font-medium',
35
+ activeTab === 'colors'
36
+ ? 'text-primary border-b-2 border-primary'
37
+ : 'text-muted-foreground hover:text-foreground'
38
+ )}
39
+ onClick={() => setActiveTab('colors')}
40
+ >
41
+ Colors
42
+ </button>
43
+ </div>
44
+ </nav>
45
+ </div>
46
+
47
+ <div role="tabpanel">
48
+ {activeTab === 'components' && (
49
+ <div data-testid="components-panel">
50
+ <h2 className="text-xl font-semibold mb-4">UI Components</h2>
51
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
52
+ <button className="bg-primary text-primary-foreground px-4 py-2 rounded">
53
+ Primary Button
54
+ </button>
55
+ <button className="bg-secondary text-secondary-foreground px-4 py-2 rounded">
56
+ Secondary Button
57
+ </button>
58
+ </div>
59
+ </div>
60
+ )}
61
+
62
+ {activeTab === 'colors' && (
63
+ <div data-testid="colors-panel">
64
+ <h2 className="text-xl font-semibold mb-4">Color Palette</h2>
65
+ <div className="grid grid-cols-4 gap-2">
66
+ <div className="bg-primary h-12 rounded flex items-center justify-center text-primary-foreground text-xs">
67
+ Primary
68
+ </div>
69
+ <div className="bg-secondary h-12 rounded flex items-center justify-center text-secondary-foreground text-xs">
70
+ Secondary
71
+ </div>
72
+ </div>
73
+ </div>
74
+ )}
75
+ </div>
76
+ </main>
77
+ )
78
+ }
79
+
80
+ describe('Showcase Page (Organism)', () => {
81
+ it('renders main showcase structure', () => {
82
+ render(<SimpleShowcase />)
83
+
84
+ const main = screen.getByRole('main')
85
+ expect(main).toBeInTheDocument()
86
+
87
+ const heading = screen.getByRole('heading', { level: 1 })
88
+ expect(heading).toHaveTextContent('Component Showcase')
89
+ })
90
+
91
+ it('has accessible tab navigation', () => {
92
+ render(<SimpleShowcase />)
93
+
94
+ const tablist = screen.getByRole('tablist')
95
+ expect(tablist).toBeInTheDocument()
96
+
97
+ const componentsTab = screen.getByRole('tab', { name: /components/i })
98
+ const colorsTab = screen.getByRole('tab', { name: /colors/i })
99
+
100
+ expect(componentsTab).toHaveAttribute('aria-selected', 'true')
101
+ expect(colorsTab).toHaveAttribute('aria-selected', 'false')
102
+ })
103
+
104
+ it('switches between tabs correctly', async () => {
105
+ const user = userEvent.setup()
106
+ render(<SimpleShowcase />)
107
+
108
+ // Initially shows components panel
109
+ expect(screen.getByTestId('components-panel')).toBeInTheDocument()
110
+ expect(screen.queryByTestId('colors-panel')).not.toBeInTheDocument()
111
+
112
+ // Click colors tab
113
+ const colorsTab = screen.getByRole('tab', { name: /colors/i })
114
+ await user.click(colorsTab)
115
+
116
+ // Should now show colors panel
117
+ expect(screen.getByTestId('colors-panel')).toBeInTheDocument()
118
+ expect(screen.queryByTestId('components-panel')).not.toBeInTheDocument()
119
+
120
+ // Tab should be selected
121
+ expect(colorsTab).toHaveAttribute('aria-selected', 'true')
122
+ })
123
+
124
+ it('displays interactive components', () => {
125
+ render(<SimpleShowcase />)
126
+
127
+ // Should have interactive buttons in showcase
128
+ const buttons = screen.getAllByRole('button')
129
+ expect(buttons.length).toBeGreaterThanOrEqual(2) // Tabs + showcase buttons
130
+
131
+ const primaryButton = screen.getByText('Primary Button')
132
+ expect(primaryButton).toBeInTheDocument()
133
+ expect(primaryButton).toHaveClass('bg-primary')
134
+ })
135
+
136
+ it('uses design system classes consistently', () => {
137
+ render(<SimpleShowcase />)
138
+
139
+ const main = screen.getByRole('main')
140
+
141
+ // Should use design system spacing and colors
142
+ expect(main).toHaveClass('p-6')
143
+
144
+ const heading = screen.getByRole('heading', { level: 1 })
145
+ expect(heading).toHaveClass('text-foreground')
146
+
147
+ // Check that components use design system colors
148
+ const primaryButton = screen.getByText('Primary Button')
149
+ expect(primaryButton).toHaveClass('bg-primary', 'text-primary-foreground')
150
+ })
151
+
152
+ it('is responsive and accessible', () => {
153
+ render(<SimpleShowcase />)
154
+
155
+ // Should have proper heading hierarchy
156
+ const h1 = screen.getByRole('heading', { level: 1 })
157
+ const h2s = screen.getAllByRole('heading', { level: 2 })
158
+
159
+ expect(h1).toBeInTheDocument()
160
+ expect(h2s.length).toBeGreaterThan(0)
161
+
162
+ // Should have responsive grid classes
163
+ const gridElements = screen.getByTestId('components-panel').querySelector('.grid')
164
+ expect(gridElements?.className).toMatch(/grid-cols-/)
165
+ expect(gridElements?.className).toMatch(/md:grid-cols-/)
166
+ })
167
+ })
@@ -0,0 +1,51 @@
1
+ import '@testing-library/jest-dom'
2
+ import { beforeAll, afterEach, afterAll } from 'vitest'
3
+ import { cleanup } from '@testing-library/react'
4
+
5
+ // Global test setup (equivalent to conftest.py)
6
+
7
+ // Clean up after each test
8
+ afterEach(() => {
9
+ cleanup()
10
+ })
11
+
12
+ // Mock environment variables for testing
13
+ beforeAll(() => {
14
+ // Mock environment variables
15
+ process.env.VITE_API_URL = 'http://localhost:3001/api/v1'
16
+ process.env.VITE_APP_NAME = 'Test App'
17
+
18
+ // Mock window.matchMedia (required for responsive components)
19
+ Object.defineProperty(window, 'matchMedia', {
20
+ writable: true,
21
+ value: (query: string) => ({
22
+ matches: false,
23
+ media: query,
24
+ onchange: null,
25
+ addListener: () => {},
26
+ removeListener: () => {},
27
+ addEventListener: () => {},
28
+ removeEventListener: () => {},
29
+ dispatchEvent: () => {},
30
+ }),
31
+ })
32
+
33
+ // Mock ResizeObserver (required for some components)
34
+ global.ResizeObserver = class ResizeObserver {
35
+ observe() {}
36
+ unobserve() {}
37
+ disconnect() {}
38
+ }
39
+
40
+ // Mock IntersectionObserver (required for some components)
41
+ global.IntersectionObserver = class IntersectionObserver {
42
+ constructor() {}
43
+ observe() {}
44
+ unobserve() {}
45
+ disconnect() {}
46
+ }
47
+ })
48
+
49
+ afterAll(() => {
50
+ // Clean up any global mocks if needed
51
+ })
@@ -0,0 +1,123 @@
1
+ import React from 'react'
2
+ import { render, RenderOptions } from '@testing-library/react'
3
+ import { BrowserRouter } from 'react-router-dom'
4
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
5
+
6
+ // Test utilities (equivalent to pytest fixtures)
7
+
8
+ /**
9
+ * Custom render function that wraps components with necessary providers
10
+ * Similar to how conftest.py provides fixtures for database, auth, etc.
11
+ */
12
+ interface CustomRenderOptions extends Omit<RenderOptions, 'wrapper'> {
13
+ // Add custom options here
14
+ initialRoute?: string
15
+ queryClient?: QueryClient
16
+ }
17
+
18
+ const AllTheProviders = ({
19
+ children,
20
+ initialRoute = '/',
21
+ queryClient
22
+ }: {
23
+ children: React.ReactNode
24
+ initialRoute?: string
25
+ queryClient?: QueryClient
26
+ }) => {
27
+ // Create a fresh QueryClient for each test to avoid test pollution
28
+ const testQueryClient = queryClient || new QueryClient({
29
+ defaultOptions: {
30
+ queries: {
31
+ retry: false, // Don't retry in tests
32
+ gcTime: 0, // Disable garbage collection
33
+ },
34
+ mutations: {
35
+ retry: false,
36
+ },
37
+ },
38
+ })
39
+
40
+ // Set initial route for testing
41
+ if (initialRoute !== '/') {
42
+ window.history.pushState({}, 'Test page', initialRoute)
43
+ }
44
+
45
+ return (
46
+ <QueryClientProvider client={testQueryClient}>
47
+ <BrowserRouter>
48
+ {children}
49
+ </BrowserRouter>
50
+ </QueryClientProvider>
51
+ )
52
+ }
53
+
54
+ const customRender = (
55
+ ui: React.ReactElement,
56
+ options?: CustomRenderOptions
57
+ ) => {
58
+ const { initialRoute, queryClient, ...renderOptions } = options || {}
59
+
60
+ return render(ui, {
61
+ wrapper: (props) => (
62
+ <AllTheProviders
63
+ {...props}
64
+ initialRoute={initialRoute}
65
+ queryClient={queryClient}
66
+ />
67
+ ),
68
+ ...renderOptions,
69
+ })
70
+ }
71
+
72
+ /**
73
+ * Create a mock API client for testing
74
+ * Similar to how you might mock database connections in backend tests
75
+ */
76
+ export const createMockApiClient = () => ({
77
+ get: vi.fn(),
78
+ post: vi.fn(),
79
+ put: vi.fn(),
80
+ delete: vi.fn(),
81
+ patch: vi.fn(),
82
+ })
83
+
84
+ /**
85
+ * Mock user data factory
86
+ * Similar to factory patterns in backend testing
87
+ */
88
+ export const createMockUser = (overrides = {}) => ({
89
+ id: '1',
90
+ name: 'Test User',
91
+ email: 'test@example.com',
92
+ role: 'user',
93
+ ...overrides,
94
+ })
95
+
96
+ /**
97
+ * Mock auth context for testing
98
+ */
99
+ export const createMockAuthContext = (overrides = {}) => ({
100
+ user: createMockUser(),
101
+ isAuthenticated: true,
102
+ login: vi.fn(),
103
+ logout: vi.fn(),
104
+ loading: false,
105
+ ...overrides,
106
+ })
107
+
108
+ /**
109
+ * Helper to test error boundaries
110
+ */
111
+ export const ThrowError = ({ shouldThrow }: { shouldThrow?: boolean }) => {
112
+ if (shouldThrow) {
113
+ throw new Error('Test error')
114
+ }
115
+ return <div>No error</div>
116
+ }
117
+
118
+ // Re-export everything from testing-library
119
+ export * from '@testing-library/react'
120
+ export { default as userEvent } from '@testing-library/user-event'
121
+
122
+ // Export our custom render as the default render
123
+ export { customRender as render }