@pattern-stack/frontend-patterns 0.0.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 (400) hide show
  1. package/README.md +310 -0
  2. package/dist/atoms/composed/Accordion/Accordion.d.ts +20 -0
  3. package/dist/atoms/composed/Accordion/Accordion.d.ts.map +1 -0
  4. package/dist/atoms/composed/Accordion/index.d.ts +2 -0
  5. package/dist/atoms/composed/Accordion/index.d.ts.map +1 -0
  6. package/dist/atoms/composed/Alert/Alert.d.ts +25 -0
  7. package/dist/atoms/composed/Alert/Alert.d.ts.map +1 -0
  8. package/dist/atoms/composed/Alert/index.d.ts +2 -0
  9. package/dist/atoms/composed/Alert/index.d.ts.map +1 -0
  10. package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts +17 -0
  11. package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  12. package/dist/atoms/composed/Breadcrumb/index.d.ts +2 -0
  13. package/dist/atoms/composed/Breadcrumb/index.d.ts.map +1 -0
  14. package/dist/atoms/composed/Chart/Chart.d.ts +37 -0
  15. package/dist/atoms/composed/Chart/Chart.d.ts.map +1 -0
  16. package/dist/atoms/composed/Chart/index.d.ts +3 -0
  17. package/dist/atoms/composed/Chart/index.d.ts.map +1 -0
  18. package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts +19 -0
  19. package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  20. package/dist/atoms/composed/ColorSwatch/index.d.ts +2 -0
  21. package/dist/atoms/composed/ColorSwatch/index.d.ts.map +1 -0
  22. package/dist/atoms/composed/DarkModeToggle.d.ts +4 -0
  23. package/dist/atoms/composed/DarkModeToggle.d.ts.map +1 -0
  24. package/dist/atoms/composed/DataBadge/DataBadge.d.ts +13 -0
  25. package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +1 -0
  26. package/dist/atoms/composed/DataBadge/index.d.ts +2 -0
  27. package/dist/atoms/composed/DataBadge/index.d.ts.map +1 -0
  28. package/dist/atoms/composed/DataTable/DataTable.d.ts +28 -0
  29. package/dist/atoms/composed/DataTable/DataTable.d.ts.map +1 -0
  30. package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts +10 -0
  31. package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +1 -0
  32. package/dist/atoms/composed/DataTable/index.d.ts +3 -0
  33. package/dist/atoms/composed/DataTable/index.d.ts.map +1 -0
  34. package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts +45 -0
  35. package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  36. package/dist/atoms/composed/DateTimePicker/index.d.ts +3 -0
  37. package/dist/atoms/composed/DateTimePicker/index.d.ts.map +1 -0
  38. package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts +30 -0
  39. package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +1 -0
  40. package/dist/atoms/composed/DetailedCard/index.d.ts +3 -0
  41. package/dist/atoms/composed/DetailedCard/index.d.ts.map +1 -0
  42. package/dist/atoms/composed/EmptyState/EmptyState.d.ts +18 -0
  43. package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +1 -0
  44. package/dist/atoms/composed/EmptyState/index.d.ts +2 -0
  45. package/dist/atoms/composed/EmptyState/index.d.ts.map +1 -0
  46. package/dist/atoms/composed/FileUpload/FileUpload.d.ts +46 -0
  47. package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +1 -0
  48. package/dist/atoms/composed/FileUpload/index.d.ts +3 -0
  49. package/dist/atoms/composed/FileUpload/index.d.ts.map +1 -0
  50. package/dist/atoms/composed/FormField/FormField.d.ts +23 -0
  51. package/dist/atoms/composed/FormField/FormField.d.ts.map +1 -0
  52. package/dist/atoms/composed/FormField/index.d.ts +2 -0
  53. package/dist/atoms/composed/FormField/index.d.ts.map +1 -0
  54. package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts +8 -0
  55. package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +1 -0
  56. package/dist/atoms/composed/GlobalSearch/index.d.ts +2 -0
  57. package/dist/atoms/composed/GlobalSearch/index.d.ts.map +1 -0
  58. package/dist/atoms/composed/IconBadge/IconBadge.d.ts +16 -0
  59. package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +1 -0
  60. package/dist/atoms/composed/IconBadge/index.d.ts +3 -0
  61. package/dist/atoms/composed/IconBadge/index.d.ts.map +1 -0
  62. package/dist/atoms/composed/Modal/Modal.d.ts +18 -0
  63. package/dist/atoms/composed/Modal/Modal.d.ts.map +1 -0
  64. package/dist/atoms/composed/Modal/index.d.ts +3 -0
  65. package/dist/atoms/composed/Modal/index.d.ts.map +1 -0
  66. package/dist/atoms/composed/PaletteSwitcher.d.ts +7 -0
  67. package/dist/atoms/composed/PaletteSwitcher.d.ts.map +1 -0
  68. package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts +25 -0
  69. package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +1 -0
  70. package/dist/atoms/composed/ProgressBar/index.d.ts +2 -0
  71. package/dist/atoms/composed/ProgressBar/index.d.ts.map +1 -0
  72. package/dist/atoms/composed/StatCard/StatCard.d.ts +21 -0
  73. package/dist/atoms/composed/StatCard/StatCard.d.ts.map +1 -0
  74. package/dist/atoms/composed/StatCard/index.d.ts +2 -0
  75. package/dist/atoms/composed/StatCard/index.d.ts.map +1 -0
  76. package/dist/atoms/composed/StyleGuide.d.ts +3 -0
  77. package/dist/atoms/composed/StyleGuide.d.ts.map +1 -0
  78. package/dist/atoms/composed/Toast/Toast.d.ts +40 -0
  79. package/dist/atoms/composed/Toast/Toast.d.ts.map +1 -0
  80. package/dist/atoms/composed/Toast/index.d.ts +2 -0
  81. package/dist/atoms/composed/Toast/index.d.ts.map +1 -0
  82. package/dist/atoms/composed/Tooltip/Tooltip.d.ts +16 -0
  83. package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +1 -0
  84. package/dist/atoms/composed/Tooltip/index.d.ts +2 -0
  85. package/dist/atoms/composed/Tooltip/index.d.ts.map +1 -0
  86. package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts +8 -0
  87. package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +1 -0
  88. package/dist/atoms/composed/UserAvatar/index.d.ts +2 -0
  89. package/dist/atoms/composed/UserAvatar/index.d.ts.map +1 -0
  90. package/dist/atoms/composed/UserMenu/UserMenu.d.ts +8 -0
  91. package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +1 -0
  92. package/dist/atoms/composed/UserMenu/index.d.ts +2 -0
  93. package/dist/atoms/composed/UserMenu/index.d.ts.map +1 -0
  94. package/dist/atoms/composed/index.d.ts +25 -0
  95. package/dist/atoms/composed/index.d.ts.map +1 -0
  96. package/dist/atoms/hooks/useApi.d.ts +25 -0
  97. package/dist/atoms/hooks/useApi.d.ts.map +1 -0
  98. package/dist/atoms/hooks/useHealth.d.ts +19 -0
  99. package/dist/atoms/hooks/useHealth.d.ts.map +1 -0
  100. package/dist/atoms/index.d.ts +9 -0
  101. package/dist/atoms/index.d.ts.map +1 -0
  102. package/dist/atoms/services/api/client.d.ts +20 -0
  103. package/dist/atoms/services/api/client.d.ts.map +1 -0
  104. package/dist/atoms/services/auth-service.d.ts +24 -0
  105. package/dist/atoms/services/auth-service.d.ts.map +1 -0
  106. package/dist/atoms/services/health.d.ts +7 -0
  107. package/dist/atoms/services/health.d.ts.map +1 -0
  108. package/dist/atoms/services/index.d.ts +4 -0
  109. package/dist/atoms/services/index.d.ts.map +1 -0
  110. package/dist/atoms/shared/config/constants.d.ts +15 -0
  111. package/dist/atoms/shared/config/constants.d.ts.map +1 -0
  112. package/dist/atoms/shared/config/dashboard-sizes.d.ts +83 -0
  113. package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +1 -0
  114. package/dist/atoms/shared/config/environment.d.ts +10 -0
  115. package/dist/atoms/shared/config/environment.d.ts.map +1 -0
  116. package/dist/atoms/shared/index.d.ts +4 -0
  117. package/dist/atoms/shared/index.d.ts.map +1 -0
  118. package/dist/atoms/types/auth.d.ts +56 -0
  119. package/dist/atoms/types/auth.d.ts.map +1 -0
  120. package/dist/atoms/types/generated.d.ts +1469 -0
  121. package/dist/atoms/types/generated.d.ts.map +1 -0
  122. package/dist/atoms/types/index.d.ts +4 -0
  123. package/dist/atoms/types/index.d.ts.map +1 -0
  124. package/dist/atoms/types/loading.d.ts +26 -0
  125. package/dist/atoms/types/loading.d.ts.map +1 -0
  126. package/dist/atoms/ui/Badge.d.ts +10 -0
  127. package/dist/atoms/ui/Badge.d.ts.map +1 -0
  128. package/dist/atoms/ui/ErrorBoundary.d.ts +18 -0
  129. package/dist/atoms/ui/ErrorBoundary.d.ts.map +1 -0
  130. package/dist/atoms/ui/Select.d.ts +28 -0
  131. package/dist/atoms/ui/Select.d.ts.map +1 -0
  132. package/dist/atoms/ui/Switch.d.ts +9 -0
  133. package/dist/atoms/ui/Switch.d.ts.map +1 -0
  134. package/dist/atoms/ui/Tabs.d.ts +30 -0
  135. package/dist/atoms/ui/Tabs.d.ts.map +1 -0
  136. package/dist/atoms/ui/avatar.d.ts +7 -0
  137. package/dist/atoms/ui/avatar.d.ts.map +1 -0
  138. package/dist/atoms/ui/button.d.ts +14 -0
  139. package/dist/atoms/ui/button.d.ts.map +1 -0
  140. package/dist/atoms/ui/card.d.ts +12 -0
  141. package/dist/atoms/ui/card.d.ts.map +1 -0
  142. package/dist/atoms/ui/dropdown-menu.d.ts +28 -0
  143. package/dist/atoms/ui/dropdown-menu.d.ts.map +1 -0
  144. package/dist/atoms/ui/index.d.ts +15 -0
  145. package/dist/atoms/ui/index.d.ts.map +1 -0
  146. package/dist/atoms/ui/input.d.ts +5 -0
  147. package/dist/atoms/ui/input.d.ts.map +1 -0
  148. package/dist/atoms/ui/label.d.ts +6 -0
  149. package/dist/atoms/ui/label.d.ts.map +1 -0
  150. package/dist/atoms/ui/skeleton.d.ts +3 -0
  151. package/dist/atoms/ui/skeleton.d.ts.map +1 -0
  152. package/dist/atoms/ui/spinner.d.ts +14 -0
  153. package/dist/atoms/ui/spinner.d.ts.map +1 -0
  154. package/dist/atoms/ui/table.d.ts +11 -0
  155. package/dist/atoms/ui/table.d.ts.map +1 -0
  156. package/dist/atoms/utils/animations.d.ts +65 -0
  157. package/dist/atoms/utils/animations.d.ts.map +1 -0
  158. package/dist/atoms/utils/tooltip-helpers.d.ts +71 -0
  159. package/dist/atoms/utils/tooltip-helpers.d.ts.map +1 -0
  160. package/dist/atoms/utils/utils.d.ts +4 -0
  161. package/dist/atoms/utils/utils.d.ts.map +1 -0
  162. package/dist/features/auth/components/LoginForm.d.ts +2 -0
  163. package/dist/features/auth/components/LoginForm.d.ts.map +1 -0
  164. package/dist/features/auth/components/LogoutButton.d.ts +2 -0
  165. package/dist/features/auth/components/LogoutButton.d.ts.map +1 -0
  166. package/dist/features/auth/components/ProtectedRoute.d.ts +10 -0
  167. package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -0
  168. package/dist/features/auth/components/index.d.ts +4 -0
  169. package/dist/features/auth/components/index.d.ts.map +1 -0
  170. package/dist/features/auth/hooks/index.d.ts +3 -0
  171. package/dist/features/auth/hooks/index.d.ts.map +1 -0
  172. package/dist/features/auth/hooks/useAuth.d.ts +10 -0
  173. package/dist/features/auth/hooks/useAuth.d.ts.map +1 -0
  174. package/dist/features/auth/hooks/usePermissions.d.ts +13 -0
  175. package/dist/features/auth/hooks/usePermissions.d.ts.map +1 -0
  176. package/dist/features/auth/index.d.ts +3 -0
  177. package/dist/features/auth/index.d.ts.map +1 -0
  178. package/dist/features/index.d.ts +2 -0
  179. package/dist/features/index.d.ts.map +1 -0
  180. package/dist/frontend-patterns.css +567 -0
  181. package/dist/index.d.ts +10 -0
  182. package/dist/index.d.ts.map +1 -0
  183. package/dist/index.es.js +10152 -0
  184. package/dist/index.es.js.map +1 -0
  185. package/dist/index.js +10170 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/molecules/forms/FormGroup.d.ts +17 -0
  188. package/dist/molecules/forms/FormGroup.d.ts.map +1 -0
  189. package/dist/molecules/forms/SearchInput.d.ts +36 -0
  190. package/dist/molecules/forms/SearchInput.d.ts.map +1 -0
  191. package/dist/molecules/forms/index.d.ts +3 -0
  192. package/dist/molecules/forms/index.d.ts.map +1 -0
  193. package/dist/molecules/index.d.ts +4 -0
  194. package/dist/molecules/index.d.ts.map +1 -0
  195. package/dist/molecules/layout/AppHeader/AppHeader.d.ts +7 -0
  196. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -0
  197. package/dist/molecules/layout/AppHeader/index.d.ts +2 -0
  198. package/dist/molecules/layout/AppHeader/index.d.ts.map +1 -0
  199. package/dist/molecules/layout/AppLayout.d.ts +2 -0
  200. package/dist/molecules/layout/AppLayout.d.ts.map +1 -0
  201. package/dist/molecules/layout/PageTemplate.d.ts +19 -0
  202. package/dist/molecules/layout/PageTemplate.d.ts.map +1 -0
  203. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +24 -0
  204. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +1 -0
  205. package/dist/molecules/layout/SectionHeader/index.d.ts +2 -0
  206. package/dist/molecules/layout/SectionHeader/index.d.ts.map +1 -0
  207. package/dist/molecules/layout/ShowcaseSection.d.ts +22 -0
  208. package/dist/molecules/layout/ShowcaseSection.d.ts.map +1 -0
  209. package/dist/molecules/layout/Sidebar.d.ts +6 -0
  210. package/dist/molecules/layout/Sidebar.d.ts.map +1 -0
  211. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +13 -0
  212. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -0
  213. package/dist/molecules/layout/SidebarButton/index.d.ts +2 -0
  214. package/dist/molecules/layout/SidebarButton/index.d.ts.map +1 -0
  215. package/dist/molecules/layout/SidebarContext.d.ts +12 -0
  216. package/dist/molecules/layout/SidebarContext.d.ts.map +1 -0
  217. package/dist/molecules/layout/index.d.ts +8 -0
  218. package/dist/molecules/layout/index.d.ts.map +1 -0
  219. package/dist/molecules/navigation/NavMenu.d.ts +20 -0
  220. package/dist/molecules/navigation/NavMenu.d.ts.map +1 -0
  221. package/dist/molecules/navigation/Pagination.d.ts +14 -0
  222. package/dist/molecules/navigation/Pagination.d.ts.map +1 -0
  223. package/dist/molecules/navigation/index.d.ts +3 -0
  224. package/dist/molecules/navigation/index.d.ts.map +1 -0
  225. package/dist/organisms/index.d.ts +2 -0
  226. package/dist/organisms/index.d.ts.map +1 -0
  227. package/dist/organisms/showcase/ComponentShowcasePage.d.ts +3 -0
  228. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -0
  229. package/dist/templates/AuthTemplate.d.ts +68 -0
  230. package/dist/templates/AuthTemplate.d.ts.map +1 -0
  231. package/dist/templates/ComponentShowcaseTemplate.d.ts +53 -0
  232. package/dist/templates/ComponentShowcaseTemplate.d.ts.map +1 -0
  233. package/dist/templates/DashboardTemplate.d.ts +62 -0
  234. package/dist/templates/DashboardTemplate.d.ts.map +1 -0
  235. package/dist/templates/DataTemplate.d.ts +78 -0
  236. package/dist/templates/DataTemplate.d.ts.map +1 -0
  237. package/dist/templates/admin/AdminCRUDTemplate.d.ts +105 -0
  238. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -0
  239. package/dist/templates/admin/AdminDashboardTemplate.d.ts +89 -0
  240. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -0
  241. package/dist/templates/admin/AdminDetailTemplate.d.ts +132 -0
  242. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -0
  243. package/dist/templates/admin/index.d.ts +4 -0
  244. package/dist/templates/admin/index.d.ts.map +1 -0
  245. package/dist/templates/factory.d.ts +28 -0
  246. package/dist/templates/factory.d.ts.map +1 -0
  247. package/dist/templates/index.d.ts +7 -0
  248. package/dist/templates/index.d.ts.map +1 -0
  249. package/package.json +118 -0
  250. package/src/App.css +42 -0
  251. package/src/App.tsx +54 -0
  252. package/src/__tests__/README.md +221 -0
  253. package/src/__tests__/atoms/hooks/simple-hooks.test.ts +44 -0
  254. package/src/__tests__/atoms/ui/button.test.tsx +68 -0
  255. package/src/__tests__/atoms/utils/simple.test.ts +18 -0
  256. package/src/__tests__/atoms/utils/utils.test.ts +77 -0
  257. package/src/__tests__/features/auth/simple-auth.test.tsx +40 -0
  258. package/src/__tests__/molecules/layout/simple-layout.test.tsx +81 -0
  259. package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +167 -0
  260. package/src/__tests__/setup.ts +51 -0
  261. package/src/__tests__/utils.tsx +123 -0
  262. package/src/atoms/composed/Accordion/Accordion.tsx +271 -0
  263. package/src/atoms/composed/Accordion/index.ts +1 -0
  264. package/src/atoms/composed/Alert/Alert.tsx +132 -0
  265. package/src/atoms/composed/Alert/index.ts +1 -0
  266. package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +83 -0
  267. package/src/atoms/composed/Breadcrumb/index.ts +1 -0
  268. package/src/atoms/composed/Chart/Chart.tsx +425 -0
  269. package/src/atoms/composed/Chart/index.ts +2 -0
  270. package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +72 -0
  271. package/src/atoms/composed/ColorSwatch/index.ts +1 -0
  272. package/src/atoms/composed/DarkModeToggle.tsx +66 -0
  273. package/src/atoms/composed/DataBadge/DataBadge.tsx +81 -0
  274. package/src/atoms/composed/DataBadge/index.ts +1 -0
  275. package/src/atoms/composed/DataTable/DataTable.tsx +394 -0
  276. package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +41 -0
  277. package/src/atoms/composed/DataTable/index.ts +2 -0
  278. package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +611 -0
  279. package/src/atoms/composed/DateTimePicker/index.ts +2 -0
  280. package/src/atoms/composed/DetailedCard/DetailedCard.tsx +181 -0
  281. package/src/atoms/composed/DetailedCard/index.ts +2 -0
  282. package/src/atoms/composed/EmptyState/EmptyState.tsx +90 -0
  283. package/src/atoms/composed/EmptyState/index.ts +1 -0
  284. package/src/atoms/composed/FileUpload/FileUpload.tsx +477 -0
  285. package/src/atoms/composed/FileUpload/index.ts +2 -0
  286. package/src/atoms/composed/FormField/FormField.tsx +92 -0
  287. package/src/atoms/composed/FormField/index.ts +1 -0
  288. package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +37 -0
  289. package/src/atoms/composed/GlobalSearch/index.ts +1 -0
  290. package/src/atoms/composed/IconBadge/IconBadge.tsx +95 -0
  291. package/src/atoms/composed/IconBadge/index.ts +2 -0
  292. package/src/atoms/composed/Modal/Modal.tsx +223 -0
  293. package/src/atoms/composed/Modal/index.ts +2 -0
  294. package/src/atoms/composed/PaletteSwitcher.tsx +386 -0
  295. package/src/atoms/composed/ProgressBar/ProgressBar.tsx +116 -0
  296. package/src/atoms/composed/ProgressBar/index.ts +1 -0
  297. package/src/atoms/composed/StatCard/StatCard.tsx +219 -0
  298. package/src/atoms/composed/StatCard/index.ts +1 -0
  299. package/src/atoms/composed/StyleGuide.tsx +717 -0
  300. package/src/atoms/composed/Toast/Toast.tsx +219 -0
  301. package/src/atoms/composed/Toast/index.ts +1 -0
  302. package/src/atoms/composed/Tooltip/Tooltip.tsx +213 -0
  303. package/src/atoms/composed/Tooltip/index.ts +1 -0
  304. package/src/atoms/composed/UserAvatar/UserAvatar.tsx +139 -0
  305. package/src/atoms/composed/UserAvatar/index.ts +1 -0
  306. package/src/atoms/composed/UserMenu/UserMenu.tsx +16 -0
  307. package/src/atoms/composed/UserMenu/index.ts +1 -0
  308. package/src/atoms/composed/index.ts +29 -0
  309. package/src/atoms/hooks/useApi.ts +80 -0
  310. package/src/atoms/hooks/useHealth.ts +17 -0
  311. package/src/atoms/index.ts +13 -0
  312. package/src/atoms/services/api/client.ts +134 -0
  313. package/src/atoms/services/auth-service.ts +248 -0
  314. package/src/atoms/services/health.ts +15 -0
  315. package/src/atoms/services/index.ts +3 -0
  316. package/src/atoms/shared/config/constants.ts +17 -0
  317. package/src/atoms/shared/config/dashboard-sizes.ts +111 -0
  318. package/src/atoms/shared/config/environment.ts +10 -0
  319. package/src/atoms/shared/index.ts +4 -0
  320. package/src/atoms/shared/styles/color-palettes.css +566 -0
  321. package/src/atoms/types/auth.ts +62 -0
  322. package/src/atoms/types/generated.ts +1469 -0
  323. package/src/atoms/types/index.ts +4 -0
  324. package/src/atoms/types/loading.ts +28 -0
  325. package/src/atoms/ui/Badge.tsx +30 -0
  326. package/src/atoms/ui/ErrorBoundary.tsx +59 -0
  327. package/src/atoms/ui/Select.tsx +53 -0
  328. package/src/atoms/ui/Switch.tsx +42 -0
  329. package/src/atoms/ui/Tabs.tsx +118 -0
  330. package/src/atoms/ui/avatar.tsx +48 -0
  331. package/src/atoms/ui/button.tsx +70 -0
  332. package/src/atoms/ui/card.tsx +76 -0
  333. package/src/atoms/ui/dropdown-menu.tsx +199 -0
  334. package/src/atoms/ui/index.ts +39 -0
  335. package/src/atoms/ui/input.tsx +23 -0
  336. package/src/atoms/ui/label.tsx +23 -0
  337. package/src/atoms/ui/skeleton.tsx +13 -0
  338. package/src/atoms/ui/spinner.tsx +49 -0
  339. package/src/atoms/ui/table.tsx +116 -0
  340. package/src/atoms/utils/animations.ts +135 -0
  341. package/src/atoms/utils/tooltip-helpers.ts +140 -0
  342. package/src/atoms/utils/utils.ts +9 -0
  343. package/src/features/auth/components/LoginForm.tsx +168 -0
  344. package/src/features/auth/components/LogoutButton.tsx +19 -0
  345. package/src/features/auth/components/ProtectedRoute.tsx +60 -0
  346. package/src/features/auth/components/index.ts +4 -0
  347. package/src/features/auth/hooks/index.ts +2 -0
  348. package/src/features/auth/hooks/useAuth.tsx +205 -0
  349. package/src/features/auth/hooks/usePermissions.ts +35 -0
  350. package/src/features/auth/index.ts +2 -0
  351. package/src/features/index.ts +2 -0
  352. package/src/index.css +704 -0
  353. package/src/index.ts +13 -0
  354. package/src/main.tsx +48 -0
  355. package/src/molecules/.gitkeep +0 -0
  356. package/src/molecules/forms/FormGroup.tsx +75 -0
  357. package/src/molecules/forms/SearchInput.tsx +259 -0
  358. package/src/molecules/forms/index.ts +4 -0
  359. package/src/molecules/index.ts +4 -0
  360. package/src/molecules/layout/AppHeader/AppHeader.tsx +42 -0
  361. package/src/molecules/layout/AppHeader/index.ts +1 -0
  362. package/src/molecules/layout/AppLayout.tsx +29 -0
  363. package/src/molecules/layout/PageTemplate.tsx +87 -0
  364. package/src/molecules/layout/SectionHeader/SectionHeader.tsx +87 -0
  365. package/src/molecules/layout/SectionHeader/index.ts +1 -0
  366. package/src/molecules/layout/ShowcaseSection.tsx +57 -0
  367. package/src/molecules/layout/Sidebar.tsx +144 -0
  368. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +99 -0
  369. package/src/molecules/layout/SidebarButton/index.ts +1 -0
  370. package/src/molecules/layout/SidebarContext.tsx +31 -0
  371. package/src/molecules/layout/index.ts +7 -0
  372. package/src/molecules/navigation/NavMenu.tsx +188 -0
  373. package/src/molecules/navigation/Pagination.tsx +172 -0
  374. package/src/molecules/navigation/index.ts +4 -0
  375. package/src/organisms/index.ts +5 -0
  376. package/src/organisms/showcase/ComponentShowcasePage.tsx +2496 -0
  377. package/src/organisms/showcase/index.ts +1 -0
  378. package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +242 -0
  379. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +171 -0
  380. package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +385 -0
  381. package/src/pages/AdminShowcase/index.tsx +3 -0
  382. package/src/pages/ComponentShowcase/BadgesShowcase.tsx +188 -0
  383. package/src/pages/ComponentShowcase/CardsShowcase.tsx +392 -0
  384. package/src/pages/ComponentShowcase/PalettesShowcase.tsx +207 -0
  385. package/src/pages/ComponentShowcase/StatesShowcase.tsx +485 -0
  386. package/src/pages/ComponentShowcase/TablesShowcase.tsx +134 -0
  387. package/src/pages/ComponentShowcase/TypographyShowcase.tsx +255 -0
  388. package/src/pages/ComponentShowcase/index.tsx +188 -0
  389. package/src/pages/index.ts +2 -0
  390. package/src/templates/AuthTemplate.tsx +216 -0
  391. package/src/templates/ComponentShowcaseTemplate.tsx +173 -0
  392. package/src/templates/DashboardTemplate.tsx +232 -0
  393. package/src/templates/DataTemplate.tsx +319 -0
  394. package/src/templates/admin/AdminCRUDTemplate.tsx +630 -0
  395. package/src/templates/admin/AdminDashboardTemplate.tsx +351 -0
  396. package/src/templates/admin/AdminDetailTemplate.tsx +563 -0
  397. package/src/templates/admin/index.ts +29 -0
  398. package/src/templates/factory.tsx +169 -0
  399. package/src/templates/index.ts +37 -0
  400. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,392 @@
1
+ import React from 'react';
2
+ import { ComponentShowcaseTemplate } from '../../templates';
3
+ import { StatCard, DetailedCard, DataBadge, FileUpload } from '../../atoms/composed';
4
+ import { Card } from '../../atoms/ui';
5
+ import { Database, CheckCircle, Users, Activity, TrendingUp } from 'lucide-react';
6
+
7
+ export const CardsShowcase: React.FC = () => {
8
+ return (
9
+ <ComponentShowcaseTemplate
10
+ category={1}
11
+ title="Cards"
12
+ description="Analytics cards for displaying key metrics, statistics, and detailed information in data interfaces."
13
+ primaryComponent={{
14
+ title: "Card Component",
15
+ description: "Base card component with category theming, border styling, and hover effects. Foundation for all card-based components.",
16
+ badge: {
17
+ text: "UI Foundation",
18
+ variant: "category",
19
+ category: 1
20
+ },
21
+ children: (
22
+ <div className="space-y-6">
23
+ {/* Basic Card Usage */}
24
+ <div className="space-y-4">
25
+ <h4 className="text-base font-medium">Basic Card</h4>
26
+ <div className="grid md:grid-cols-3 gap-4">
27
+ <Card className="p-4">
28
+ <h3 className="font-medium mb-2">Default Card</h3>
29
+ <p className="text-sm text-muted-foreground">Basic card with standard styling, border, and shadow effects.</p>
30
+ </Card>
31
+ <Card category={1} className="p-4">
32
+ <h3 className="font-medium mb-2">Category Card</h3>
33
+ <p className="text-sm text-muted-foreground">Card with category theming - colored left border and background tint.</p>
34
+ </Card>
35
+ <Card category={2} className="p-4">
36
+ <h3 className="font-medium mb-2">Interactive Card</h3>
37
+ <p className="text-sm text-muted-foreground">Hover effects and interactive states for clickable cards.</p>
38
+ </Card>
39
+ </div>
40
+ </div>
41
+
42
+ {/* Category Variants */}
43
+ <div className="space-y-4">
44
+ <h4 className="text-base font-medium">Category Variants</h4>
45
+ <div className="grid md:grid-cols-4 gap-4">
46
+ {[1, 2, 3, 4, 5, 6, 7, 8].map(category => (
47
+ <Card key={category} category={category as 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8} className="p-3">
48
+ <div className="text-sm font-medium">Category {category}</div>
49
+ <div className="text-xs text-muted-foreground mt-1">
50
+ Border: category-{category}
51
+ </div>
52
+ </Card>
53
+ ))}
54
+ </div>
55
+ </div>
56
+ </div>
57
+ )
58
+ }}
59
+ composedExamples={{
60
+ title: "Business Card Components",
61
+ description: "Domain-specific card components built on the base Card component for data interfaces and analytics applications.",
62
+ sections: [
63
+ {
64
+ title: "StatCard Component",
65
+ description: "Compact analytics cards for displaying key metrics and statistics with optional trends and interactive states.",
66
+ badge: {
67
+ text: "Business Component",
68
+ variant: "category",
69
+ category: 2
70
+ },
71
+ category: 2,
72
+ children: (
73
+ <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
74
+ <StatCard
75
+ title="Total Models"
76
+ value="1,234"
77
+ subtitle="Active dbt models"
78
+ category={1}
79
+ icon={<Database className="w-5 h-5" />}
80
+ trend={{ value: 12.5, label: "vs last month" }}
81
+ />
82
+ <StatCard
83
+ title="Success Rate"
84
+ value="99.2%"
85
+ subtitle="Test pass rate"
86
+ category={2}
87
+ icon={<CheckCircle className="w-5 h-5" />}
88
+ trend={{ value: 2.1, label: "vs last week" }}
89
+ />
90
+ <StatCard
91
+ title="Active Users"
92
+ value="567"
93
+ subtitle="Monthly active users"
94
+ category={3}
95
+ icon={<Users className="w-5 h-5" />}
96
+ trend={{ value: -3.2, label: "vs last month" }}
97
+ />
98
+ <StatCard
99
+ title="Data Freshness"
100
+ value="4.2hrs"
101
+ subtitle="Average delay"
102
+ category={4}
103
+ icon={<Activity className="w-5 h-5" />}
104
+ onClick={() => alert('Card clicked!')}
105
+ />
106
+ <StatCard
107
+ title="Query Performance"
108
+ value="1.8s"
109
+ subtitle="Average duration"
110
+ category={5}
111
+ icon={<TrendingUp className="w-5 h-5" />}
112
+ trend={{ value: 0 }}
113
+ />
114
+ <StatCard
115
+ title="Data Volume"
116
+ value="2.4TB"
117
+ subtitle="Total processed"
118
+ category={6}
119
+ icon={<Database className="w-5 h-5" />}
120
+ />
121
+ </div>
122
+ )
123
+ },
124
+ {
125
+ title: "DetailedCard Component",
126
+ description: "Rich information cards with multiple metrics, descriptions, and interactive elements for complex data display.",
127
+ badge: {
128
+ text: "Business Component",
129
+ variant: "category",
130
+ category: 2
131
+ },
132
+ category: 2,
133
+ children: (
134
+ <div className="grid md:grid-cols-1 lg:grid-cols-2 gap-6">
135
+ <DetailedCard
136
+ title="Customer Analytics Model"
137
+ subtitle="Production Model"
138
+ description="Advanced analytics model for customer behavior tracking and segmentation. Processes customer interactions, purchase patterns, and engagement metrics."
139
+ category={1}
140
+ icon={<Database className="w-5 h-5" />}
141
+ primaryMetric={{
142
+ label: "Success Rate",
143
+ value: "98.7%",
144
+ trend: { value: 5.2, label: "vs last week" }
145
+ }}
146
+ secondaryMetrics={[
147
+ { label: "Daily Runs", value: "24", status: "success" },
148
+ { label: "Avg Runtime", value: "2.4min", status: "info" },
149
+ { label: "Data Quality", value: "95%", status: "warning" },
150
+ { label: "Test Coverage", value: "87%", status: "success" }
151
+ ]}
152
+ tags={[
153
+ { label: "Production", status: "success" },
154
+ { label: "Analytics", category: 1 },
155
+ { label: "Customer Data", category: 3 }
156
+ ]}
157
+ onClick={() => alert('Model details clicked!')}
158
+ />
159
+
160
+ <DetailedCard
161
+ title="Revenue Forecasting Pipeline"
162
+ subtitle="Critical Business Model"
163
+ description="Machine learning pipeline for revenue forecasting and business intelligence. Combines historical data with market trends for accurate predictions."
164
+ category={2}
165
+ icon={<TrendingUp className="w-5 h-5" />}
166
+ primaryMetric={{
167
+ label: "Accuracy Score",
168
+ value: "94.3%",
169
+ trend: { value: -1.2, label: "vs last month" }
170
+ }}
171
+ secondaryMetrics={[
172
+ { label: "Predictions", value: "156", status: "info" },
173
+ { label: "Model Score", value: "0.943", status: "success" },
174
+ { label: "Data Freshness", value: "2hrs", status: "warning" },
175
+ { label: "Dependencies", value: "12", status: "neutral" }
176
+ ]}
177
+ tags={[
178
+ { label: "ML Model", category: 5 },
179
+ { label: "Critical", status: "error" },
180
+ { label: "Revenue", category: 2 },
181
+ { label: "Forecasting", category: 4 }
182
+ ]}
183
+ onClick={() => alert('Pipeline details clicked!')}
184
+ />
185
+ </div>
186
+ )
187
+ }
188
+ ]
189
+ }}
190
+ ephemeralExamples={{
191
+ title: "Ephemeral Components",
192
+ description: "Application-specific components built inline for one-off use cases. Consider promoting to shared library if pattern emerges across multiple apps.",
193
+ sections: [
194
+ {
195
+ title: "BankAccountCard",
196
+ description: "Custom card for financial data display - built inline for this demo. Shows how to extend business components for specific domains.",
197
+ badge: {
198
+ text: "App-Specific",
199
+ variant: "category",
200
+ category: 3
201
+ },
202
+ category: 3,
203
+ children: (
204
+ <div className="grid md:grid-cols-2 gap-6">
205
+ {/* BankAccountCard - Inline ephemeral component */}
206
+ <Card category={1} className="p-6">
207
+ <div className="flex items-start justify-between mb-4">
208
+ <div className="flex items-center gap-3">
209
+ <div className="w-10 h-10 rounded bg-category-1/20 flex items-center justify-center">
210
+ <Database className="w-5 h-5 text-category-1" />
211
+ </div>
212
+ <div>
213
+ <h3 className="font-semibold">Checking Account</h3>
214
+ <p className="text-sm text-muted-foreground">Wells Fargo ••••4892</p>
215
+ </div>
216
+ </div>
217
+ <DataBadge variant="status" status="success" size="sm">Active</DataBadge>
218
+ </div>
219
+
220
+ <div className="space-y-3">
221
+ <div className="flex justify-between items-baseline">
222
+ <span className="text-2xl font-bold">$12,847.32</span>
223
+ <span className="text-sm text-muted-foreground">Available Balance</span>
224
+ </div>
225
+
226
+ <div className="grid grid-cols-2 gap-4 pt-3 border-t border-border">
227
+ <div>
228
+ <div className="text-xs text-muted-foreground">Last Transaction</div>
229
+ <div className="text-sm font-medium">-$45.20</div>
230
+ </div>
231
+ <div>
232
+ <div className="text-xs text-muted-foreground">Interest Rate</div>
233
+ <div className="text-sm font-medium">0.15% APY</div>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </Card>
238
+
239
+ <Card category={2} className="p-6">
240
+ <div className="flex items-start justify-between mb-4">
241
+ <div className="flex items-center gap-3">
242
+ <div className="w-10 h-10 rounded bg-category-2/20 flex items-center justify-center">
243
+ <TrendingUp className="w-5 h-5 text-category-2" />
244
+ </div>
245
+ <div>
246
+ <h3 className="font-semibold">Investment Account</h3>
247
+ <p className="text-sm text-muted-foreground">Vanguard ••••7361</p>
248
+ </div>
249
+ </div>
250
+ <DataBadge variant="status" status="info" size="sm">Growth</DataBadge>
251
+ </div>
252
+
253
+ <div className="space-y-3">
254
+ <div className="flex justify-between items-baseline">
255
+ <span className="text-2xl font-bold">$89,234.56</span>
256
+ <span className="text-sm text-category-2 font-medium">+$2,341 (2.7%)</span>
257
+ </div>
258
+
259
+ <div className="grid grid-cols-2 gap-4 pt-3 border-t border-border">
260
+ <div>
261
+ <div className="text-xs text-muted-foreground">Portfolio Value</div>
262
+ <div className="text-sm font-medium">$91,575.91</div>
263
+ </div>
264
+ <div>
265
+ <div className="text-xs text-muted-foreground">Unrealized P&L</div>
266
+ <div className="text-sm font-medium text-category-2">+$4,682.45</div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+ </Card>
271
+ </div>
272
+ )
273
+ },
274
+ {
275
+ title: "FileUpload Component",
276
+ description: "Drag-and-drop file upload component with progress tracking, validation, and preview support for modern file handling workflows.",
277
+ badge: {
278
+ text: "Business Component",
279
+ variant: "category",
280
+ category: 2
281
+ },
282
+ category: 2,
283
+ children: (
284
+ <div className="space-y-6">
285
+ {/* Basic File Upload */}
286
+ <Card className="p-6" category={2}>
287
+ <h5 className="font-medium mb-4">Basic File Upload</h5>
288
+ <FileUpload
289
+ accept="image/*,.pdf,.doc,.docx"
290
+ multiple
291
+ maxSize={5 * 1024 * 1024} // 5MB
292
+ maxFiles={3}
293
+ uploadText="Choose files or drag and drop"
294
+ dragText="Drop files here"
295
+ onChange={(files) => console.log('Files changed:', files)}
296
+ onUpload={async (files) => {
297
+ console.log('Uploading files:', files);
298
+ // Simulate upload delay
299
+ await new Promise(resolve => setTimeout(resolve, 2000));
300
+ }}
301
+ />
302
+ </Card>
303
+
304
+ {/* Compact Variant */}
305
+ <div className="grid md:grid-cols-2 gap-6">
306
+ <Card className="p-4" category={2}>
307
+ <h5 className="font-medium mb-4">Compact Variant</h5>
308
+ <FileUpload
309
+ variant="compact"
310
+ accept="image/*"
311
+ maxSize={2 * 1024 * 1024} // 2MB
312
+ maxFiles={1}
313
+ uploadText="Upload image"
314
+ onChange={(files) => console.log('Image files:', files)}
315
+ />
316
+ </Card>
317
+
318
+ <Card className="p-4" category={2}>
319
+ <h5 className="font-medium mb-4">Large Variant</h5>
320
+ <FileUpload
321
+ variant="large"
322
+ accept=".zip,.tar,.gz"
323
+ maxSize={50 * 1024 * 1024} // 50MB
324
+ maxFiles={1}
325
+ uploadText="Upload archive"
326
+ dragText="Drop your archive here"
327
+ onChange={(files) => console.log('Archive files:', files)}
328
+ />
329
+ </Card>
330
+ </div>
331
+
332
+ {/* Different File Types */}
333
+ <Card className="p-6" category={2}>
334
+ <h5 className="font-medium mb-4">Different File Type Restrictions</h5>
335
+ <div className="grid md:grid-cols-3 gap-4">
336
+ <div>
337
+ <h6 className="text-sm font-medium mb-2">Images Only</h6>
338
+ <FileUpload
339
+ variant="compact"
340
+ accept="image/*"
341
+ maxSize={10 * 1024 * 1024}
342
+ maxFiles={5}
343
+ showPreview
344
+ uploadText="Images"
345
+ onChange={(files) => console.log('Images:', files)}
346
+ />
347
+ </div>
348
+ <div>
349
+ <h6 className="text-sm font-medium mb-2">Documents</h6>
350
+ <FileUpload
351
+ variant="compact"
352
+ accept=".pdf,.doc,.docx,.txt"
353
+ maxSize={20 * 1024 * 1024}
354
+ maxFiles={10}
355
+ uploadText="Documents"
356
+ onChange={(files) => console.log('Documents:', files)}
357
+ />
358
+ </div>
359
+ <div>
360
+ <h6 className="text-sm font-medium mb-2">CSV/Excel</h6>
361
+ <FileUpload
362
+ variant="compact"
363
+ accept=".csv,.xlsx,.xls"
364
+ maxSize={50 * 1024 * 1024}
365
+ maxFiles={1}
366
+ uploadText="Data files"
367
+ onChange={(files) => console.log('Data files:', files)}
368
+ />
369
+ </div>
370
+ </div>
371
+ </Card>
372
+
373
+ {/* Error States */}
374
+ <Card className="p-6" category={2}>
375
+ <h5 className="font-medium mb-4">Error State Example</h5>
376
+ <FileUpload
377
+ accept="image/*"
378
+ maxSize={100 * 1024} // Very small limit for demo
379
+ maxFiles={1}
380
+ error="File size too large. Please select a smaller file."
381
+ uploadText="Try uploading a large image to see error"
382
+ onChange={(files) => console.log('Error demo files:', files)}
383
+ />
384
+ </Card>
385
+ </div>
386
+ )
387
+ }
388
+ ]
389
+ }}
390
+ />
391
+ );
392
+ };
@@ -0,0 +1,207 @@
1
+ import React from 'react';
2
+ import { ComponentShowcaseTemplate } from '../../templates';
3
+ import { ColorSwatch } from '../../atoms/composed';
4
+
5
+ export const PalettesShowcase: React.FC = () => {
6
+ return (
7
+ <ComponentShowcaseTemplate
8
+ category={2}
9
+ title="Color System & Palettes"
10
+ description="Complete color system including individual color swatches and predefined palette combinations for data visualization and interface design."
11
+ primaryComponent={{
12
+ title: "ColorSwatch Component",
13
+ description: "Individual color swatch component for displaying colors with names, labels, and interactive features.",
14
+ badge: {
15
+ text: "Business Component",
16
+ variant: "category",
17
+ category: 2
18
+ },
19
+ children: (
20
+ <div className="space-y-6">
21
+ {/* Basic Color Swatches */}
22
+ <div className="space-y-4">
23
+ <h4 className="text-base font-medium">Basic Swatches</h4>
24
+ <div className="grid grid-cols-4 gap-4">
25
+ <ColorSwatch
26
+ color="hsl(var(--category-1))"
27
+ name="Blue"
28
+ label="Primary"
29
+ interactive
30
+ />
31
+ <ColorSwatch
32
+ color="hsl(var(--category-2))"
33
+ name="Teal"
34
+ label="Secondary"
35
+ interactive
36
+ />
37
+ <ColorSwatch
38
+ color="hsl(var(--status-success))"
39
+ name="Success"
40
+ label="Status"
41
+ interactive
42
+ />
43
+ <ColorSwatch
44
+ color="hsl(var(--status-error))"
45
+ name="Error"
46
+ label="Status"
47
+ interactive
48
+ />
49
+ </div>
50
+ </div>
51
+
52
+ {/* Size Variants */}
53
+ <div className="space-y-4">
54
+ <h4 className="text-base font-medium">Size Variants</h4>
55
+ <div className="flex items-end gap-4">
56
+ <ColorSwatch
57
+ color="hsl(var(--category-3))"
58
+ name="Small"
59
+ size="sm"
60
+ interactive
61
+ />
62
+ <ColorSwatch
63
+ color="hsl(var(--category-3))"
64
+ name="Medium"
65
+ size="md"
66
+ interactive
67
+ />
68
+ <ColorSwatch
69
+ color="hsl(var(--category-3))"
70
+ name="Large"
71
+ size="lg"
72
+ interactive
73
+ />
74
+ </div>
75
+ </div>
76
+
77
+ {/* Interactive States */}
78
+ <div className="space-y-4">
79
+ <h4 className="text-base font-medium">Interactive States</h4>
80
+ <div className="grid grid-cols-4 gap-4">
81
+ <ColorSwatch
82
+ color="hsl(var(--category-4))"
83
+ name="Static"
84
+ label="Default state"
85
+ />
86
+ <ColorSwatch
87
+ color="hsl(var(--category-4))"
88
+ name="Hover"
89
+ label="Hover effects"
90
+ interactive
91
+ />
92
+ <ColorSwatch
93
+ color="hsl(var(--category-4))"
94
+ name="Clickable"
95
+ label="Click handlers"
96
+ interactive
97
+ onClick={() => alert('Swatch clicked!')}
98
+ />
99
+ <ColorSwatch
100
+ color="hsl(var(--category-4))"
101
+ name="Selected"
102
+ label="Active state"
103
+ interactive
104
+ className="ring-2 ring-category-4"
105
+ />
106
+ </div>
107
+ </div>
108
+ </div>
109
+ )
110
+ }}
111
+ composedExamples={{
112
+ title: "Color Palettes & Combinations",
113
+ description: "Predefined color palettes and systematic color combinations for data visualization and interface design.",
114
+ sections: [
115
+ {
116
+ title: "Category Colors",
117
+ description: "Primary colors for categorizing different types of data, models, and content sections.",
118
+ badge: {
119
+ text: "Data Classification",
120
+ variant: "category",
121
+ category: 1
122
+ },
123
+ category: 1,
124
+ children: (
125
+ <div className="grid grid-cols-4 md:grid-cols-8 gap-4">
126
+ {[
127
+ { num: 1, name: 'Blue', usage: 'Primary data' },
128
+ { num: 2, name: 'Teal', usage: 'Models' },
129
+ { num: 3, name: 'Orange', usage: 'Tests' },
130
+ { num: 4, name: 'Purple', usage: 'Sources' },
131
+ { num: 5, name: 'Pink', usage: 'Analytics' },
132
+ { num: 6, name: 'Green', usage: 'Jobs' },
133
+ { num: 7, name: 'Yellow', usage: 'Documentation' },
134
+ { num: 8, name: 'Red', usage: 'Issues' }
135
+ ].map(category => (
136
+ <ColorSwatch
137
+ key={category.num}
138
+ color={`hsl(var(--category-${category.num}))`}
139
+ name={category.name}
140
+ label={category.usage}
141
+ interactive
142
+ />
143
+ ))}
144
+ </div>
145
+ )
146
+ },
147
+ {
148
+ title: "Category Palette",
149
+ description: "Complete 8-color palette for data categorization with excellent contrast and accessibility.",
150
+ badge: {
151
+ text: "8 Colors",
152
+ variant: "category",
153
+ category: 6
154
+ },
155
+ category: 2,
156
+ children: (
157
+ <div className="flex gap-1 rounded overflow-hidden border border-border">
158
+ {[1, 2, 3, 4, 5, 6, 7, 8].map(num => (
159
+ <div
160
+ key={num}
161
+ className="flex-1 h-24 group relative cursor-pointer"
162
+ style={{ backgroundColor: `hsl(var(--category-${num}))` }}
163
+ >
164
+ <div className="absolute inset-0 bg-black/0 group-hover:bg-black/10 flex items-center justify-center">
165
+ <span className="text-white font-medium opacity-0 group-hover:opacity-100 transition-opacity">
166
+ {num}
167
+ </span>
168
+ </div>
169
+ </div>
170
+ ))}
171
+ </div>
172
+ )
173
+ },
174
+ {
175
+ title: "Status Colors",
176
+ description: "Semantic colors for indicating status, health, and operational states across the system.",
177
+ badge: {
178
+ text: "System States",
179
+ variant: "status",
180
+ status: "success"
181
+ },
182
+ category: 2,
183
+ children: (
184
+ <div className="grid grid-cols-5 gap-4">
185
+ {[
186
+ { name: 'Success', usage: 'Completed', cssVar: '--status-success' },
187
+ { name: 'Warning', usage: 'Attention', cssVar: '--status-warning' },
188
+ { name: 'Error', usage: 'Failed', cssVar: '--status-error' },
189
+ { name: 'Info', usage: 'Information', cssVar: '--status-info' },
190
+ { name: 'Neutral', usage: 'Pending', cssVar: '--status-neutral' }
191
+ ].map(color => (
192
+ <ColorSwatch
193
+ key={color.name}
194
+ color={`hsl(var(${color.cssVar}))`}
195
+ name={color.name}
196
+ label={color.usage}
197
+ interactive
198
+ />
199
+ ))}
200
+ </div>
201
+ )
202
+ }
203
+ ]
204
+ }}
205
+ />
206
+ );
207
+ };