@pattern-stack/frontend-patterns 0.1.3 → 0.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/CHANGELOG.md +69 -74
  2. package/README.md +17 -2
  3. package/cli/commands/generate-hooks.ts +2 -2
  4. package/cli/commands/scaffold.ts +1 -1
  5. package/cli/index.ts +1 -3
  6. package/cli/src/codegen/openapi/client-generator.js +4 -17
  7. package/cli/src/codegen/openapi/hook-generator.js +181 -513
  8. package/cli/src/codegen/openapi/parser.js +9 -14
  9. package/cli/src/codegen/openapi/type-generator.js +6 -16
  10. package/dist/atoms/components/core/Avatar/Avatar.d.ts +6 -6
  11. package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -1
  12. package/dist/atoms/components/core/Avatar/index.d.ts +1 -1
  13. package/dist/atoms/components/core/Badge/Badge.d.ts +6 -6
  14. package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -1
  15. package/dist/atoms/components/core/Badge/index.d.ts +1 -1
  16. package/dist/atoms/components/core/Button/Button.d.ts +3 -3
  17. package/dist/atoms/components/core/Button/Button.d.ts.map +1 -1
  18. package/dist/atoms/components/core/Button/index.d.ts +2 -2
  19. package/dist/atoms/components/core/Card/Card.d.ts +2 -2
  20. package/dist/atoms/components/core/Card/Card.d.ts.map +1 -1
  21. package/dist/atoms/components/core/Card/index.d.ts +2 -2
  22. package/dist/atoms/components/core/Card/index.d.ts.map +1 -1
  23. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +4 -4
  24. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -1
  25. package/dist/atoms/components/core/Checkbox/index.d.ts +2 -2
  26. package/dist/atoms/components/core/Input/Input.d.ts +2 -2
  27. package/dist/atoms/components/core/Input/Input.d.ts.map +1 -1
  28. package/dist/atoms/components/core/Input/index.d.ts +2 -2
  29. package/dist/atoms/components/core/Label/Label.d.ts +3 -4
  30. package/dist/atoms/components/core/Label/Label.d.ts.map +1 -1
  31. package/dist/atoms/components/core/Label/index.d.ts +2 -2
  32. package/dist/atoms/components/core/Select/Select.d.ts +5 -5
  33. package/dist/atoms/components/core/Select/Select.d.ts.map +1 -1
  34. package/dist/atoms/components/core/Select/index.d.ts +2 -2
  35. package/dist/atoms/components/core/Select/index.d.ts.map +1 -1
  36. package/dist/atoms/components/core/Spinner/Spinner.d.ts +4 -4
  37. package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -1
  38. package/dist/atoms/components/core/Spinner/index.d.ts +2 -2
  39. package/dist/atoms/components/core/Switch/Switch.d.ts +4 -4
  40. package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -1
  41. package/dist/atoms/components/core/Switch/index.d.ts +1 -1
  42. package/dist/atoms/components/core/index.d.ts +10 -10
  43. package/dist/atoms/components/core/index.d.ts.map +1 -1
  44. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +2 -2
  45. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -1
  46. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +3 -3
  47. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -1
  48. package/dist/atoms/components/data/ActivityFeed/index.d.ts +3 -3
  49. package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -1
  50. package/dist/atoms/components/data/ActivityFeed/types.d.ts +3 -3
  51. package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -1
  52. package/dist/atoms/components/data/ActivityFeed/utils.d.ts +2 -2
  53. package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -1
  54. package/dist/atoms/components/data/Chart/Chart.d.ts +52 -5
  55. package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -1
  56. package/dist/atoms/components/data/Chart/index.d.ts +2 -2
  57. package/dist/atoms/components/data/Chart/index.d.ts.map +1 -1
  58. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +6 -6
  59. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -1
  60. package/dist/atoms/components/data/DataBadge/index.d.ts +1 -1
  61. package/dist/atoms/components/data/DataTable/DataTable.d.ts +4 -4
  62. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -1
  63. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +4 -4
  64. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -1
  65. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts +1 -1
  66. package/dist/atoms/components/data/DataTable/index.d.ts +2 -2
  67. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts +4 -4
  68. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -1
  69. package/dist/atoms/components/data/DetailedCard/index.d.ts +2 -2
  70. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +3 -3
  71. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -1
  72. package/dist/atoms/components/data/EntityIcon/index.d.ts +1 -1
  73. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts +6 -6
  74. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -1
  75. package/dist/atoms/components/data/IconBadge/index.d.ts +2 -2
  76. package/dist/atoms/components/data/ListCard/ListCard.d.ts +9 -9
  77. package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -1
  78. package/dist/atoms/components/data/ListCard/index.d.ts +1 -1
  79. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts +5 -5
  80. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -1
  81. package/dist/atoms/components/data/ProgressBar/index.d.ts +1 -1
  82. package/dist/atoms/components/data/StatCard/StatCard.d.ts +3 -3
  83. package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -1
  84. package/dist/atoms/components/data/StatCard/index.d.ts +1 -1
  85. package/dist/atoms/components/data/Table/Table.d.ts +2 -2
  86. package/dist/atoms/components/data/Table/Table.d.ts.map +1 -1
  87. package/dist/atoms/components/data/Table/index.d.ts +1 -1
  88. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +2 -2
  89. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -1
  90. package/dist/atoms/components/data/TruncatedText/index.d.ts +1 -1
  91. package/dist/atoms/components/data/index.d.ts +12 -12
  92. package/dist/atoms/components/data/index.d.ts.map +1 -1
  93. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts +15 -15
  94. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -1
  95. package/dist/atoms/components/domain/SalesPanel/index.d.ts +1 -1
  96. package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -1
  97. package/dist/atoms/components/domain/index.d.ts +1 -1
  98. package/dist/atoms/components/feedback/Alert/Alert.d.ts +4 -4
  99. package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -1
  100. package/dist/atoms/components/feedback/Alert/index.d.ts +1 -1
  101. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts +3 -3
  102. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -1
  103. package/dist/atoms/components/feedback/EmptyState/index.d.ts +1 -1
  104. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +1 -1
  105. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -1
  106. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +1 -1
  107. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +30 -4
  108. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -1
  109. package/dist/atoms/components/feedback/Skeleton/index.d.ts +1 -1
  110. package/dist/atoms/components/feedback/Toast/Toast.d.ts +4 -4
  111. package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -1
  112. package/dist/atoms/components/feedback/Toast/index.d.ts +1 -1
  113. package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -1
  114. package/dist/atoms/components/feedback/index.d.ts +5 -5
  115. package/dist/atoms/components/feedback/index.d.ts.map +1 -1
  116. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts +6 -6
  117. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  118. package/dist/atoms/components/forms/DateTimePicker/index.d.ts +2 -2
  119. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts +3 -3
  120. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -1
  121. package/dist/atoms/components/forms/FileUpload/index.d.ts +2 -2
  122. package/dist/atoms/components/forms/FormField/FormField.d.ts +2 -2
  123. package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -1
  124. package/dist/atoms/components/forms/FormField/index.d.ts +1 -1
  125. package/dist/atoms/components/forms/index.d.ts +3 -3
  126. package/dist/atoms/components/index.d.ts +9 -9
  127. package/dist/atoms/components/layout/Accordion/Accordion.d.ts +3 -3
  128. package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -1
  129. package/dist/atoms/components/layout/Accordion/index.d.ts +1 -1
  130. package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -1
  131. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts +2 -3
  132. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  133. package/dist/atoms/components/layout/Breadcrumb/index.d.ts +1 -1
  134. package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -1
  135. package/dist/atoms/components/layout/Dialog/Dialog.d.ts +45 -0
  136. package/dist/atoms/components/layout/Dialog/Dialog.d.ts.map +1 -0
  137. package/dist/atoms/components/layout/Dialog/index.d.ts +2 -2
  138. package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -1
  139. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +9 -9
  140. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -1
  141. package/dist/atoms/components/layout/Dropdown/index.d.ts +2 -2
  142. package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -1
  143. package/dist/atoms/components/layout/Modal/Modal.d.ts +6 -6
  144. package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -1
  145. package/dist/atoms/components/layout/Modal/index.d.ts +2 -2
  146. package/dist/atoms/components/layout/Tabs/Tabs.d.ts +46 -0
  147. package/dist/atoms/components/layout/Tabs/Tabs.d.ts.map +1 -0
  148. package/dist/atoms/components/layout/Tabs/index.d.ts +1 -1
  149. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts +6 -6
  150. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -1
  151. package/dist/atoms/components/layout/Tooltip/index.d.ts +1 -1
  152. package/dist/atoms/components/layout/index.d.ts +7 -7
  153. package/dist/atoms/components/layout/index.d.ts.map +1 -1
  154. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts +2 -3
  155. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -1
  156. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts +1 -1
  157. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -1
  158. package/dist/atoms/components/navigation/index.d.ts +1 -1
  159. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts +2 -2
  160. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -1
  161. package/dist/atoms/components/theme/ColorSwatch/index.d.ts +1 -1
  162. package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -1
  163. package/dist/atoms/components/theme/PaletteSwitcher.d.ts +1 -1
  164. package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -1
  165. package/dist/atoms/components/theme/StyleGuide.d.ts +1 -1
  166. package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -1
  167. package/dist/atoms/components/theme/index.d.ts +4 -4
  168. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts +2 -3
  169. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -1
  170. package/dist/atoms/components/user/UserAvatar/index.d.ts +1 -1
  171. package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -1
  172. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts +2 -3
  173. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -1
  174. package/dist/atoms/components/user/UserMenu/index.d.ts +1 -1
  175. package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -1
  176. package/dist/atoms/components/user/index.d.ts +2 -2
  177. package/dist/atoms/config/responsive.d.ts +16 -16
  178. package/dist/atoms/config/responsive.d.ts.map +1 -1
  179. package/dist/atoms/hooks/index.d.ts +4 -4
  180. package/dist/atoms/hooks/use-toast.d.ts +1 -1
  181. package/dist/atoms/hooks/use-toast.d.ts.map +1 -1
  182. package/dist/atoms/hooks/useApi.d.ts +2 -2
  183. package/dist/atoms/hooks/useApi.d.ts.map +1 -1
  184. package/dist/atoms/hooks/useResponsive.d.ts +1 -1
  185. package/dist/atoms/hooks/useResponsive.d.ts.map +1 -1
  186. package/dist/atoms/index.d.ts +6 -7
  187. package/dist/atoms/index.d.ts.map +1 -1
  188. package/dist/atoms/primitives/Badge.d.ts +6 -6
  189. package/dist/atoms/primitives/Badge.d.ts.map +1 -1
  190. package/dist/atoms/primitives/ErrorBoundary.d.ts +3 -3
  191. package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -1
  192. package/dist/atoms/primitives/Select.d.ts +9 -7
  193. package/dist/atoms/primitives/Select.d.ts.map +1 -1
  194. package/dist/atoms/primitives/Switch.d.ts +4 -3
  195. package/dist/atoms/primitives/Switch.d.ts.map +1 -1
  196. package/dist/atoms/primitives/Tabs.d.ts +10 -10
  197. package/dist/atoms/primitives/Tabs.d.ts.map +1 -1
  198. package/dist/atoms/primitives/avatar.d.ts.map +1 -1
  199. package/dist/atoms/primitives/button.d.ts +2 -5
  200. package/dist/atoms/primitives/button.d.ts.map +1 -1
  201. package/dist/atoms/primitives/button.variants.d.ts +7 -0
  202. package/dist/atoms/primitives/button.variants.d.ts.map +1 -0
  203. package/dist/atoms/primitives/card.d.ts +3 -2
  204. package/dist/atoms/primitives/card.d.ts.map +1 -1
  205. package/dist/atoms/primitives/checkbox.d.ts +3 -3
  206. package/dist/atoms/primitives/checkbox.d.ts.map +1 -1
  207. package/dist/atoms/primitives/dialog.d.ts +4 -4
  208. package/dist/atoms/primitives/dialog.d.ts.map +1 -1
  209. package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -1
  210. package/dist/atoms/primitives/index.d.ts +16 -16
  211. package/dist/atoms/primitives/index.d.ts.map +1 -1
  212. package/dist/atoms/primitives/input.d.ts.map +1 -1
  213. package/dist/atoms/primitives/label.d.ts +4 -3
  214. package/dist/atoms/primitives/label.d.ts.map +1 -1
  215. package/dist/atoms/primitives/skeleton.d.ts.map +1 -1
  216. package/dist/atoms/primitives/spinner.d.ts +5 -5
  217. package/dist/atoms/primitives/spinner.d.ts.map +1 -1
  218. package/dist/atoms/primitives/table.d.ts.map +1 -1
  219. package/dist/atoms/services/api/client.d.ts +11 -2
  220. package/dist/atoms/services/api/client.d.ts.map +1 -1
  221. package/dist/atoms/services/auth-service.d.ts +1 -1
  222. package/dist/atoms/services/auth-service.d.ts.map +1 -1
  223. package/dist/atoms/services/health.d.ts +2 -2
  224. package/dist/atoms/services/index.d.ts +3 -3
  225. package/dist/atoms/shared/config/dashboard-sizes.d.ts +17 -17
  226. package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +1 -1
  227. package/dist/atoms/shared/config/environment.d.ts.map +1 -1
  228. package/dist/atoms/shared/index.d.ts +4 -4
  229. package/dist/atoms/shared/index.d.ts.map +1 -1
  230. package/dist/atoms/types/auth.d.ts +11 -1
  231. package/dist/atoms/types/auth.d.ts.map +1 -1
  232. package/dist/atoms/types/entity-config.d.ts +9 -9
  233. package/dist/atoms/types/entity-config.d.ts.map +1 -1
  234. package/dist/atoms/types/generated.d.ts.map +1 -1
  235. package/dist/atoms/types/index.d.ts +6 -6
  236. package/dist/atoms/types/loading.d.ts +1 -1
  237. package/dist/atoms/types/navigation.d.ts +1 -1
  238. package/dist/atoms/types/navigation.d.ts.map +1 -1
  239. package/dist/atoms/types/ui-config.d.ts +8 -8
  240. package/dist/atoms/types/ui-config.d.ts.map +1 -1
  241. package/dist/atoms/utils/animations.d.ts +7 -7
  242. package/dist/atoms/utils/animations.d.ts.map +1 -1
  243. package/dist/atoms/utils/color-manager.d.ts +1 -1
  244. package/dist/atoms/utils/debounce.d.ts +1 -1
  245. package/dist/atoms/utils/debounce.d.ts.map +1 -1
  246. package/dist/atoms/utils/field-detection.d.ts +2 -2
  247. package/dist/atoms/utils/field-detection.d.ts.map +1 -1
  248. package/dist/atoms/utils/icon-map.d.ts +68 -0
  249. package/dist/atoms/utils/icon-map.d.ts.map +1 -0
  250. package/dist/atoms/utils/icon-resolver.d.ts +7 -67
  251. package/dist/atoms/utils/icon-resolver.d.ts.map +1 -1
  252. package/dist/atoms/utils/index.d.ts +4 -4
  253. package/dist/atoms/utils/metric-engine.d.ts +2 -10
  254. package/dist/atoms/utils/metric-engine.d.ts.map +1 -1
  255. package/dist/atoms/utils/tooltip-helpers.d.ts +1 -1
  256. package/dist/atoms/utils/tooltip-helpers.d.ts.map +1 -1
  257. package/dist/atoms/utils/ui-mapping.d.ts +6 -4
  258. package/dist/atoms/utils/ui-mapping.d.ts.map +1 -1
  259. package/dist/atoms/utils/utils.d.ts +7 -6
  260. package/dist/atoms/utils/utils.d.ts.map +1 -1
  261. package/dist/codegen/openapi/bulk-types.d.ts +4 -4
  262. package/dist/codegen/openapi/bulk-types.d.ts.map +1 -1
  263. package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
  264. package/dist/features/auth/components/LogoutButton.d.ts.map +1 -1
  265. package/dist/features/auth/components/ProtectedRoute.d.ts +2 -2
  266. package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -1
  267. package/dist/features/auth/components/index.d.ts +3 -3
  268. package/dist/features/auth/hooks/auth-context.d.ts +3 -0
  269. package/dist/features/auth/hooks/auth-context.d.ts.map +1 -0
  270. package/dist/features/auth/hooks/index.d.ts +4 -3
  271. package/dist/features/auth/hooks/index.d.ts.map +1 -1
  272. package/dist/features/auth/hooks/use-auth.d.ts +3 -0
  273. package/dist/features/auth/hooks/use-auth.d.ts.map +1 -0
  274. package/dist/features/auth/hooks/useAuth.d.ts +3 -4
  275. package/dist/features/auth/hooks/useAuth.d.ts.map +1 -1
  276. package/dist/features/auth/hooks/useAuthContext.d.ts +1 -1
  277. package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -1
  278. package/dist/features/auth/hooks/usePermissions.d.ts +3 -3
  279. package/dist/features/auth/index.d.ts +3 -3
  280. package/dist/features/auth/providers/MockAuthProvider.d.ts +3 -4
  281. package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -1
  282. package/dist/features/auth/providers/index.d.ts +2 -1
  283. package/dist/features/auth/providers/index.d.ts.map +1 -1
  284. package/dist/features/auth/providers/mock-auth-context.d.ts +3 -0
  285. package/dist/features/auth/providers/mock-auth-context.d.ts.map +1 -0
  286. package/dist/features/auth/providers/use-mock-auth.d.ts +3 -0
  287. package/dist/features/auth/providers/use-mock-auth.d.ts.map +1 -0
  288. package/dist/features/auth/services/mock-auth-service.d.ts +3 -3
  289. package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -1
  290. package/dist/features/index.d.ts +1 -1
  291. package/dist/frontend-patterns.css +713 -576
  292. package/dist/index.d.ts +17 -17
  293. package/dist/index.d.ts.map +1 -1
  294. package/dist/index.es.js +21400 -21788
  295. package/dist/index.es.js.map +1 -1
  296. package/dist/index.js +21404 -21792
  297. package/dist/index.js.map +1 -1
  298. package/dist/molecules/forms/FormGroup.d.ts +2 -2
  299. package/dist/molecules/forms/FormGroup.d.ts.map +1 -1
  300. package/dist/molecules/forms/SearchInput.d.ts +1 -1
  301. package/dist/molecules/forms/SearchInput.d.ts.map +1 -1
  302. package/dist/molecules/forms/index.d.ts +2 -2
  303. package/dist/molecules/forms/index.d.ts.map +1 -1
  304. package/dist/molecules/index.d.ts +3 -3
  305. package/dist/molecules/layout/AppHeader/AppHeader.d.ts +1 -1
  306. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
  307. package/dist/molecules/layout/AppHeader/index.d.ts +1 -1
  308. package/dist/molecules/layout/BulkSelectionBar.d.ts +2 -2
  309. package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -1
  310. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +1 -1
  311. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts +1 -1
  312. package/dist/molecules/layout/NavigationContext.d.ts +3 -9
  313. package/dist/molecules/layout/NavigationContext.d.ts.map +1 -1
  314. package/dist/molecules/layout/PageTemplate.d.ts +1 -1
  315. package/dist/molecules/layout/PageTemplate.d.ts.map +1 -1
  316. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +4 -4
  317. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +1 -1
  318. package/dist/molecules/layout/SectionHeader/index.d.ts +1 -1
  319. package/dist/molecules/layout/ShowcaseSection.d.ts +4 -4
  320. package/dist/molecules/layout/ShowcaseSection.d.ts.map +1 -1
  321. package/dist/molecules/layout/Sidebar.d.ts.map +1 -1
  322. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +1 -1
  323. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -1
  324. package/dist/molecules/layout/SidebarButton/index.d.ts +1 -1
  325. package/dist/molecules/layout/SidebarContext.d.ts +1 -8
  326. package/dist/molecules/layout/SidebarContext.d.ts.map +1 -1
  327. package/dist/molecules/layout/index.d.ts +14 -11
  328. package/dist/molecules/layout/index.d.ts.map +1 -1
  329. package/dist/molecules/layout/navigation-context.d.ts +9 -0
  330. package/dist/molecules/layout/navigation-context.d.ts.map +1 -0
  331. package/dist/molecules/layout/sidebar-context.d.ts +7 -0
  332. package/dist/molecules/layout/sidebar-context.d.ts.map +1 -0
  333. package/dist/molecules/layout/use-navigation.d.ts +2 -0
  334. package/dist/molecules/layout/use-navigation.d.ts.map +1 -0
  335. package/dist/molecules/layout/use-sidebar.d.ts +2 -0
  336. package/dist/molecules/layout/use-sidebar.d.ts.map +1 -0
  337. package/dist/molecules/navigation/NavMenu.d.ts +2 -2
  338. package/dist/molecules/navigation/NavMenu.d.ts.map +1 -1
  339. package/dist/molecules/navigation/Pagination.d.ts +2 -2
  340. package/dist/molecules/navigation/index.d.ts +2 -2
  341. package/dist/organisms/index.d.ts +1 -1
  342. package/dist/organisms/showcase/ComponentShowcasePage.d.ts +1 -1
  343. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
  344. package/dist/templates/AuthTemplate.d.ts +4 -4
  345. package/dist/templates/AuthTemplate.d.ts.map +1 -1
  346. package/dist/templates/ComponentShowcaseTemplate.d.ts +7 -7
  347. package/dist/templates/ComponentShowcaseTemplate.d.ts.map +1 -1
  348. package/dist/templates/DashboardTemplate.d.ts +3 -3
  349. package/dist/templates/DashboardTemplate.d.ts.map +1 -1
  350. package/dist/templates/DataTemplate.d.ts +3 -3
  351. package/dist/templates/DataTemplate.d.ts.map +1 -1
  352. package/dist/templates/EnhancedDataTemplate.d.ts +11 -11
  353. package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -1
  354. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +2 -2
  355. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -1
  356. package/dist/templates/EnhancedDataTemplate.hooks.d.ts +4 -4
  357. package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -1
  358. package/dist/templates/admin/AdminCRUDTemplate.d.ts +4 -4
  359. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
  360. package/dist/templates/admin/AdminDashboardTemplate.d.ts +7 -7
  361. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
  362. package/dist/templates/admin/AdminDetailTemplate.d.ts +4 -4
  363. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
  364. package/dist/templates/admin/index.d.ts +3 -3
  365. package/dist/templates/admin/index.d.ts.map +1 -1
  366. package/dist/templates/api/APIDataTemplate.d.ts +14 -9
  367. package/dist/templates/api/APIDataTemplate.d.ts.map +1 -1
  368. package/dist/templates/api/create-api-data-template.d.ts +4 -0
  369. package/dist/templates/api/create-api-data-template.d.ts.map +1 -0
  370. package/dist/templates/api/index.d.ts +3 -2
  371. package/dist/templates/api/index.d.ts.map +1 -1
  372. package/dist/templates/factory.d.ts +3 -3
  373. package/dist/templates/factory.d.ts.map +1 -1
  374. package/dist/templates/index.d.ts +8 -8
  375. package/dist/templates/index.d.ts.map +1 -1
  376. package/package.json +10 -7
  377. package/LICENSE +0 -19
  378. package/cli/cli/commands/generate-hooks.js +0 -291
  379. package/cli/cli/commands/init.js +0 -25
  380. package/cli/cli/commands/scaffold.js +0 -201
  381. package/cli/cli/index.js +0 -113
  382. package/cli/commands/generate-hooks.js +0 -291
  383. package/cli/commands/init.js +0 -25
  384. package/cli/commands/scaffold.js +0 -201
  385. package/cli/index.js +0 -6665
  386. package/cli/src/codegen/openapi/bulk-hook-generator.js +0 -252
  387. package/cli/src/codegen/openapi/bulk-types.js +0 -89
  388. package/cli/src/codegen/openapi/confidence-scorer.js +0 -204
  389. package/cli/src/codegen/openapi/hook-config.js +0 -66
  390. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +0 -38
  391. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +0 -1
  392. package/dist/codegen/index.d.ts +0 -7
  393. package/dist/codegen/index.d.ts.map +0 -1
  394. package/dist/codegen/openapi/bulk-hook-generator.d.ts +0 -40
  395. package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +0 -1
  396. package/dist/codegen/openapi/client-generator.d.ts +0 -52
  397. package/dist/codegen/openapi/client-generator.d.ts.map +0 -1
  398. package/dist/codegen/openapi/confidence-scorer.d.ts +0 -30
  399. package/dist/codegen/openapi/confidence-scorer.d.ts.map +0 -1
  400. package/dist/codegen/openapi/hook-config.d.ts +0 -50
  401. package/dist/codegen/openapi/hook-config.d.ts.map +0 -1
  402. package/dist/codegen/openapi/hook-generator.d.ts +0 -108
  403. package/dist/codegen/openapi/hook-generator.d.ts.map +0 -1
  404. package/dist/codegen/openapi/index.d.ts +0 -27
  405. package/dist/codegen/openapi/index.d.ts.map +0 -1
  406. package/dist/codegen/openapi/parser.d.ts +0 -107
  407. package/dist/codegen/openapi/parser.d.ts.map +0 -1
  408. package/dist/codegen/openapi/type-generator.d.ts +0 -53
  409. package/dist/codegen/openapi/type-generator.d.ts.map +0 -1
  410. package/dist/generated/client/client.d.ts +0 -23
  411. package/dist/generated/client/client.d.ts.map +0 -1
  412. package/dist/generated/client/config.d.ts +0 -10
  413. package/dist/generated/client/config.d.ts.map +0 -1
  414. package/dist/generated/client/index.d.ts +0 -12
  415. package/dist/generated/client/index.d.ts.map +0 -1
  416. package/dist/generated/client/methods.d.ts +0 -591
  417. package/dist/generated/client/methods.d.ts.map +0 -1
  418. package/dist/generated/client/types.d.ts +0 -37
  419. package/dist/generated/client/types.d.ts.map +0 -1
  420. package/dist/generated/example.d.ts +0 -8
  421. package/dist/generated/example.d.ts.map +0 -1
  422. package/dist/generated/hooks/index.d.ts +0 -11
  423. package/dist/generated/hooks/index.d.ts.map +0 -1
  424. package/dist/generated/hooks/keys.d.ts +0 -59
  425. package/dist/generated/hooks/keys.d.ts.map +0 -1
  426. package/dist/generated/hooks/mutations.d.ts +0 -551
  427. package/dist/generated/hooks/mutations.d.ts.map +0 -1
  428. package/dist/generated/hooks/queries.d.ts +0 -426
  429. package/dist/generated/hooks/queries.d.ts.map +0 -1
  430. package/dist/generated/hooks/types.d.ts +0 -318
  431. package/dist/generated/hooks/types.d.ts.map +0 -1
  432. package/dist/generated/index.d.ts +0 -13
  433. package/dist/generated/index.d.ts.map +0 -1
  434. package/dist/generated/types/endpoints.d.ts +0 -1364
  435. package/dist/generated/types/endpoints.d.ts.map +0 -1
  436. package/dist/generated/types/index.d.ts +0 -11
  437. package/dist/generated/types/index.d.ts.map +0 -1
  438. package/dist/generated/types/parameters.d.ts +0 -8
  439. package/dist/generated/types/parameters.d.ts.map +0 -1
  440. package/dist/generated/types/responses.d.ts +0 -8
  441. package/dist/generated/types/responses.d.ts.map +0 -1
  442. package/dist/generated/types/schemas.d.ts +0 -652
  443. package/dist/generated/types/schemas.d.ts.map +0 -1
@@ -1,291 +0,0 @@
1
- "use strict";
2
- /**
3
- * Generate Hooks Command
4
- *
5
- * Implementation of the `pattern-stack generate hooks` command
6
- *
7
- * Part of FRO-6: Generate Hooks Command
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.generateHooksCommand = generateHooksCommand;
11
- const fs_1 = require("fs");
12
- const path_1 = require("path");
13
- const parser_js_1 = require("../../src/codegen/openapi/parser.js");
14
- const type_generator_js_1 = require("../../src/codegen/openapi/type-generator.js");
15
- const client_generator_js_1 = require("../../src/codegen/openapi/client-generator.js");
16
- const hook_generator_js_1 = require("../../src/codegen/openapi/hook-generator.js");
17
- async function generateHooksCommand(source, options) {
18
- try {
19
- console.log('🚀 Pattern-Stack Hook Generator');
20
- console.log('================================');
21
- console.log();
22
- // Load and parse OpenAPI specification
23
- console.log('📥 Loading OpenAPI specification...');
24
- const spec = await (0, parser_js_1.loadOpenAPISpec)(source);
25
- console.log(`✅ Loaded: ${spec.info.title} v${spec.info.version}`);
26
- console.log('🔍 Parsing specification...');
27
- const parsed = await (0, parser_js_1.parseOpenAPI)(spec);
28
- console.log(`✅ Found ${parsed.endpoints.length} endpoints, ${parsed.schemas.length} schemas`);
29
- // Generate types
30
- console.log('🏗️ Generating TypeScript types...');
31
- const types = (0, type_generator_js_1.generateTypes)(parsed, {
32
- prefix: options.prefix,
33
- includeJSDoc: true,
34
- includeExamples: true
35
- });
36
- // Generate API client
37
- console.log('🔧 Generating API client...');
38
- const client = (0, client_generator_js_1.generateAPIClient)(parsed, {
39
- clientType: options.client,
40
- includeAuth: true,
41
- authType: options.auth,
42
- includeInterceptors: true
43
- });
44
- // Generate React hooks
45
- console.log('⚛️ Generating React hooks...');
46
- const hooks = await (0, hook_generator_js_1.generateHooks)(parsed, {
47
- includeInfiniteQueries: true,
48
- includeOptimisticUpdates: true,
49
- includeMutationHelpers: true,
50
- enableConfidenceScoring: true
51
- });
52
- if (options.dryRun) {
53
- console.log('\n📋 Dry run - files that would be generated:');
54
- console.log('Types:');
55
- console.log(' - schemas.ts');
56
- console.log(' - endpoints.ts');
57
- console.log(' - parameters.ts');
58
- console.log(' - responses.ts');
59
- console.log();
60
- console.log('API Client:');
61
- console.log(' - client.ts');
62
- console.log(' - methods.ts');
63
- console.log(' - types.ts');
64
- console.log(' - config.ts');
65
- console.log();
66
- console.log('React Hooks:');
67
- console.log(' - queries.ts');
68
- console.log(' - mutations.ts');
69
- console.log(' - keys.ts');
70
- console.log(' - types.ts');
71
- console.log();
72
- console.log('Generated code preview:');
73
- console.log('======================');
74
- console.log();
75
- console.log('Types (first 20 lines):');
76
- console.log(types.schemas.split('\n').slice(0, 20).join('\n'));
77
- console.log('\n...');
78
- return;
79
- }
80
- // Create output directories
81
- console.log(`📁 Creating output directory: ${options.output}`);
82
- await ensureDir(options.output);
83
- await ensureDir((0, path_1.join)(options.output, 'types'));
84
- await ensureDir((0, path_1.join)(options.output, 'client'));
85
- await ensureDir((0, path_1.join)(options.output, 'hooks'));
86
- // Write type files
87
- console.log('💾 Writing type definitions...');
88
- await writeFile((0, path_1.join)(options.output, 'types', 'schemas.ts'), types.schemas);
89
- await writeFile((0, path_1.join)(options.output, 'types', 'endpoints.ts'), types.endpoints);
90
- await writeFile((0, path_1.join)(options.output, 'types', 'parameters.ts'), types.parameters);
91
- await writeFile((0, path_1.join)(options.output, 'types', 'responses.ts'), types.responses);
92
- await writeFile((0, path_1.join)(options.output, 'types', 'index.ts'), types.index);
93
- // Write client files
94
- console.log('💾 Writing API client...');
95
- await writeFile((0, path_1.join)(options.output, 'client', 'client.ts'), client.client);
96
- await writeFile((0, path_1.join)(options.output, 'client', 'methods.ts'), client.methods);
97
- await writeFile((0, path_1.join)(options.output, 'client', 'types.ts'), client.types);
98
- await writeFile((0, path_1.join)(options.output, 'client', 'config.ts'), client.config);
99
- await writeFile((0, path_1.join)(options.output, 'client', 'index.ts'), client.index);
100
- // Write hook files
101
- console.log('💾 Writing React hooks...');
102
- await writeFile((0, path_1.join)(options.output, 'hooks', 'queries.ts'), hooks.queries);
103
- await writeFile((0, path_1.join)(options.output, 'hooks', 'mutations.ts'), hooks.mutations);
104
- await writeFile((0, path_1.join)(options.output, 'hooks', 'keys.ts'), hooks.keys);
105
- await writeFile((0, path_1.join)(options.output, 'hooks', 'types.ts'), hooks.types);
106
- await writeFile((0, path_1.join)(options.output, 'hooks', 'index.ts'), hooks.index);
107
- // Write confidence report if available
108
- if (hooks.report) {
109
- await writeFile((0, path_1.join)(options.output, 'hooks', 'confidence-report.md'), hooks.report);
110
- console.log('📊 Generated confidence report');
111
- // Check if there are low confidence names
112
- const lowConfidenceCount = (hooks.report.match(/## Low Confidence Names/g) || []).length;
113
- if (lowConfidenceCount > 0) {
114
- console.log('\n⚠️ Some hook names have low confidence and may need review.');
115
- console.log('Run `npm run review:hooks` to interactively review and improve them.');
116
- }
117
- }
118
- // Write main index file
119
- const mainIndex = `/**
120
- * Generated API Integration
121
- *
122
- * Auto-generated from OpenAPI specification: ${spec.info.title}
123
- * Version: ${spec.info.version}
124
- * Generated: ${new Date().toISOString()}
125
- */
126
-
127
- export * from './types'
128
- export * from './client'
129
- export * from './hooks'
130
-
131
- // Quick start exports
132
- export { createAPIClient } from './client'
133
- export { queryKeys } from './hooks'`;
134
- await writeFile((0, path_1.join)(options.output, 'index.ts'), mainIndex);
135
- // Generate usage example
136
- const usageExample = generateUsageExample(spec.info.title, options);
137
- await writeFile((0, path_1.join)(options.output, 'example.ts'), usageExample);
138
- console.log();
139
- console.log('✅ Generation complete!');
140
- console.log(`📦 Generated files in: ${options.output}`);
141
- console.log();
142
- console.log('🚀 Quick start:');
143
- console.log(`import { createAPIClient, useGetUsers } from './${options.output}'`);
144
- console.log();
145
- console.log('💡 See example.ts for detailed usage instructions');
146
- }
147
- catch (error) {
148
- console.error('❌ Generation failed:');
149
- console.error(error instanceof Error ? error.message : error);
150
- process.exit(1);
151
- }
152
- }
153
- async function ensureDir(dir) {
154
- try {
155
- await fs_1.promises.mkdir(dir, { recursive: true });
156
- }
157
- catch (error) {
158
- // Directory might already exist
159
- }
160
- }
161
- async function writeFile(path, content) {
162
- await ensureDir((0, path_1.dirname)(path));
163
- await fs_1.promises.writeFile(path, content, 'utf8');
164
- }
165
- function generateUsageExample(apiTitle, options) {
166
- return `/**
167
- * ${apiTitle} - Usage Example
168
- *
169
- * This file demonstrates how to use the generated API integration
170
- */
171
-
172
- import React from 'react'
173
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
174
- import { createAPIClient, useGetUsers, useCreateUser } from './'
175
-
176
- // 1. Set up the API client
177
- const apiClient = createAPIClient({
178
- baseUrl: 'https://api.example.com/v1',
179
- ${options.auth === 'bearer' ? `getAuthToken: () => localStorage.getItem('authToken'),` : ''}
180
- ${options.auth === 'apiKey' ? `getApiKey: () => process.env.REACT_APP_API_KEY,
181
- apiKeyHeader: 'X-API-Key',` : ''}
182
- onError: (error) => {
183
- console.error('API Error:', error)
184
- // Handle global errors (show toast, redirect to login, etc.)
185
- }
186
- })
187
-
188
- // 2. Set up React Query
189
- const queryClient = new QueryClient({
190
- defaultOptions: {
191
- queries: {
192
- staleTime: 5 * 60 * 1000, // 5 minutes
193
- cacheTime: 10 * 60 * 1000, // 10 minutes
194
- },
195
- },
196
- })
197
-
198
- // 3. Wrap your app with providers
199
- function App() {
200
- return (
201
- <QueryClientProvider client={queryClient}>
202
- <UserList />
203
- </QueryClientProvider>
204
- )
205
- }
206
-
207
- // 4. Use generated hooks in components
208
- function UserList() {
209
- // Query hook with automatic loading, error, and data states
210
- const { data: users, isLoading, error } = useGetUsers({
211
- limit: 10
212
- })
213
-
214
- // Mutation hook with optimistic updates
215
- const createUserMutation = useCreateUser({
216
- onSuccess: () => {
217
- console.log('User created successfully!')
218
- },
219
- onError: (error) => {
220
- console.error('Failed to create user:', error)
221
- }
222
- })
223
-
224
- const handleCreateUser = () => {
225
- createUserMutation.mutate({
226
- email: 'new@example.com',
227
- name: 'New User'
228
- })
229
- }
230
-
231
- if (isLoading) return <div>Loading users...</div>
232
- if (error) return <div>Error: {error.message}</div>
233
-
234
- return (
235
- <div>
236
- <h2>Users</h2>
237
- <button
238
- onClick={handleCreateUser}
239
- disabled={createUserMutation.isLoading}
240
- >
241
- {createUserMutation.isLoading ? 'Creating...' : 'Create User'}
242
- </button>
243
-
244
- <ul>
245
- {users?.map(user => (
246
- <li key={user.id}>
247
- {user.name} ({user.email})
248
- </li>
249
- ))}
250
- </ul>
251
- </div>
252
- )
253
- }
254
-
255
- // 5. Advanced usage with infinite queries
256
- function InfiniteUserList() {
257
- const {
258
- data,
259
- fetchNextPage,
260
- hasNextPage,
261
- isFetchingNextPage,
262
- } = useInfiniteGetUsers({
263
- limit: 20
264
- })
265
-
266
- return (
267
- <div>
268
- {data?.pages.map((page, i) => (
269
- <React.Fragment key={i}>
270
- {page.map(user => (
271
- <div key={user.id}>{user.name}</div>
272
- ))}
273
- </React.Fragment>
274
- ))}
275
-
276
- <button
277
- onClick={() => fetchNextPage()}
278
- disabled={!hasNextPage || isFetchingNextPage}
279
- >
280
- {isFetchingNextPage
281
- ? 'Loading more...'
282
- : hasNextPage
283
- ? 'Load More'
284
- : 'Nothing more to load'}
285
- </button>
286
- </div>
287
- )
288
- }
289
-
290
- export default App`;
291
- }
@@ -1,25 +0,0 @@
1
- "use strict";
2
- /**
3
- * Init Command
4
- *
5
- * Implementation of the `pattern-stack init` command
6
- *
7
- * Part of FRO-14: Domain Template Initialization
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.initCommand = initCommand;
11
- async function initCommand(template = 'basic', options) {
12
- console.log(`🚀 Initializing Pattern-Stack project with ${template} template`);
13
- if (options.name) {
14
- console.log(`📦 Project name: ${options.name}`);
15
- }
16
- if (options.dir) {
17
- console.log(`📁 Target directory: ${options.dir}`);
18
- }
19
- console.log('\n⚠️ Template initialization not yet implemented');
20
- console.log('This feature will be available in a future release.');
21
- console.log('\nFor now, you can:');
22
- console.log('1. Clone the Pattern-Stack repository');
23
- console.log('2. Use the generate hooks command to create API integrations');
24
- console.log('3. Use the scaffold command to create components');
25
- }
@@ -1,201 +0,0 @@
1
- "use strict";
2
- /**
3
- * Scaffold Command
4
- *
5
- * Implementation of the `pattern-stack scaffold` command
6
- *
7
- * Part of FRO-15: Component Scaffolding Commands
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.scaffoldCommand = scaffoldCommand;
11
- const fs_1 = require("fs");
12
- const path_1 = require("path");
13
- async function scaffoldCommand(type, name, options) {
14
- console.log(`🏗️ Scaffolding ${type}: ${name}`);
15
- switch (type) {
16
- case 'component':
17
- await scaffoldComponent(name, options);
18
- break;
19
- case 'feature':
20
- await scaffoldFeature(name, options);
21
- break;
22
- case 'template':
23
- await scaffoldTemplate(name, options);
24
- break;
25
- default:
26
- console.error(`❌ Unknown scaffold type: ${type}`);
27
- console.log('Available types: component, feature, template');
28
- process.exit(1);
29
- }
30
- }
31
- async function scaffoldComponent(name, options) {
32
- const outputDir = options.output || `./src/atoms/composed/${name}`;
33
- const componentContent = `/**
34
- * ${name} Component
35
- *
36
- * Generated by Pattern-Stack CLI
37
- */
38
-
39
- import React from 'react'
40
- import { cn } from '../../utils/utils'
41
-
42
- export interface ${name}Props {
43
- className?: string
44
- children?: React.ReactNode
45
- }
46
-
47
- export function ${name}({ className, children, ...props }: ${name}Props) {
48
- return (
49
- <div className={cn("", className)} {...props}>
50
- {children}
51
- </div>
52
- )
53
- }
54
-
55
- ${name}.displayName = "${name}"`;
56
- const indexContent = `export { ${name} } from './${name}'
57
- export type { ${name}Props } from './${name}'`;
58
- const testContent = `/**
59
- * ${name} Component Tests
60
- */
61
-
62
- import { render, screen } from '@testing-library/react'
63
- import { ${name} } from './${name}'
64
-
65
- describe('${name}', () => {
66
- it('renders children', () => {
67
- render(<${name}>Test content</${name}>)
68
- expect(screen.getByText('Test content')).toBeInTheDocument()
69
- })
70
-
71
- it('applies custom className', () => {
72
- const { container } = render(<${name} className="custom-class" />)
73
- expect(container.firstChild).toHaveClass('custom-class')
74
- })
75
- })`;
76
- await ensureDir(outputDir);
77
- await writeFile((0, path_1.join)(outputDir, `${name}.tsx`), componentContent);
78
- await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
79
- await writeFile((0, path_1.join)(outputDir, `${name}.test.tsx`), testContent);
80
- console.log(`✅ Component scaffolded: ${outputDir}`);
81
- }
82
- async function scaffoldFeature(name, options) {
83
- const outputDir = options.output || `./src/features/${name.toLowerCase()}`;
84
- // Feature hook
85
- const hookContent = `/**
86
- * ${name} Hooks
87
- *
88
- * Generated by Pattern-Stack CLI
89
- */
90
-
91
- import { useState, useEffect } from 'react'
92
-
93
- export function use${name}() {
94
- const [data, setData] = useState(null)
95
- const [loading, setLoading] = useState(false)
96
- const [error, setError] = useState<Error | null>(null)
97
-
98
- // Add your logic here
99
-
100
- return {
101
- data,
102
- loading,
103
- error,
104
- refetch: () => {
105
- // Implement refetch logic
106
- }
107
- }
108
- }`;
109
- // Feature component
110
- const componentContent = `/**
111
- * ${name} Component
112
- *
113
- * Generated by Pattern-Stack CLI
114
- */
115
-
116
- import React from 'react'
117
- import { use${name} } from '../hooks/use${name}'
118
-
119
- export interface ${name}ComponentProps {
120
- className?: string
121
- }
122
-
123
- export function ${name}Component({ className }: ${name}ComponentProps) {
124
- const { data, loading, error } = use${name}()
125
-
126
- if (loading) return <div>Loading...</div>
127
- if (error) return <div>Error: {error.message}</div>
128
-
129
- return (
130
- <div className={className}>
131
- <h2>${name}</h2>
132
- {/* Add your UI here */}
133
- </div>
134
- )
135
- }`;
136
- // Feature index
137
- const indexContent = `export { use${name} } from './hooks/use${name}'
138
- export { ${name}Component } from './components/${name}Component'
139
- export type { ${name}ComponentProps } from './components/${name}Component'`;
140
- await ensureDir((0, path_1.join)(outputDir, 'hooks'));
141
- await ensureDir((0, path_1.join)(outputDir, 'components'));
142
- await writeFile((0, path_1.join)(outputDir, 'hooks', `use${name}.ts`), hookContent);
143
- await writeFile((0, path_1.join)(outputDir, 'hooks', 'index.ts'), `export { use${name} } from './use${name}'`);
144
- await writeFile((0, path_1.join)(outputDir, 'components', `${name}Component.tsx`), componentContent);
145
- await writeFile((0, path_1.join)(outputDir, 'components', 'index.ts'), `export { ${name}Component } from './${name}Component'`);
146
- await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
147
- console.log(`✅ Feature scaffolded: ${outputDir}`);
148
- }
149
- async function scaffoldTemplate(name, options) {
150
- const outputDir = options.output || `./src/templates/${name.toLowerCase()}`;
151
- const templateContent = `/**
152
- * ${name} Template
153
- *
154
- * Generated by Pattern-Stack CLI
155
- */
156
-
157
- import React from 'react'
158
- import { PageTemplate } from '../PageTemplate'
159
-
160
- export interface ${name}TemplateProps {
161
- title?: string
162
- children?: React.ReactNode
163
- }
164
-
165
- export function ${name}Template({
166
- title = "${name}",
167
- children
168
- }: ${name}TemplateProps) {
169
- return (
170
- <PageTemplate>
171
- <div className="space-y-6">
172
- <header>
173
- <h1 className="text-3xl font-bold">{title}</h1>
174
- </header>
175
-
176
- <main>
177
- {children}
178
- </main>
179
- </div>
180
- </PageTemplate>
181
- )
182
- }`;
183
- const indexContent = `export { ${name}Template } from './${name}Template'
184
- export type { ${name}TemplateProps } from './${name}Template'`;
185
- await ensureDir(outputDir);
186
- await writeFile((0, path_1.join)(outputDir, `${name}Template.tsx`), templateContent);
187
- await writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
188
- console.log(`✅ Template scaffolded: ${outputDir}`);
189
- }
190
- async function ensureDir(dir) {
191
- try {
192
- await fs_1.promises.mkdir(dir, { recursive: true });
193
- }
194
- catch (error) {
195
- // Directory might already exist
196
- }
197
- }
198
- async function writeFile(path, content) {
199
- await ensureDir((0, path_1.dirname)(path));
200
- await fs_1.promises.writeFile(path, content, 'utf8');
201
- }
package/cli/cli/index.js DELETED
@@ -1,113 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * Pattern-Stack CLI
5
- *
6
- * Code generation and scaffolding tools for Pattern-Stack applications
7
- *
8
- * Part of FRO-1: CLI Foundation Setup
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- const commander_1 = require("commander");
12
- const generate_hooks_1 = require("./commands/generate-hooks");
13
- const scaffold_1 = require("./commands/scaffold");
14
- const init_1 = require("./commands/init");
15
- const program = new commander_1.Command();
16
- program
17
- .name('pattern-stack')
18
- .description('Pattern-Stack CLI for code generation and scaffolding')
19
- .version('1.0.0');
20
- // Generate commands
21
- const generateCommand = program
22
- .command('generate')
23
- .alias('g')
24
- .description('Generate code from specifications');
25
- generateCommand
26
- .command('hooks')
27
- .description('Generate React hooks from OpenAPI specification')
28
- .argument('<source>', 'OpenAPI specification (URL or file path)')
29
- .option('-o, --output <dir>', 'Output directory', './src/generated')
30
- .option('--prefix <prefix>', 'Type name prefix', '')
31
- .option('--client <type>', 'API client type', 'axios')
32
- .option('--auth <type>', 'Authentication type', 'bearer')
33
- .option('--dry-run', 'Show what would be generated without writing files')
34
- .action(generate_hooks_1.generateHooksCommand);
35
- // Scaffold commands
36
- program
37
- .command('scaffold')
38
- .alias('s')
39
- .description('Scaffold components and structures')
40
- .argument('<type>', 'Type to scaffold (component, feature, template)')
41
- .argument('<name>', 'Name of the item to scaffold')
42
- .option('-t, --template <template>', 'Template to use')
43
- .option('-o, --output <dir>', 'Output directory')
44
- .action(scaffold_1.scaffoldCommand);
45
- // Init commands
46
- program
47
- .command('init')
48
- .description('Initialize a new Pattern-Stack project')
49
- .argument('[template]', 'Template to use (financial, ecommerce, analytics)')
50
- .option('-n, --name <name>', 'Project name')
51
- .option('-d, --dir <directory>', 'Target directory')
52
- .option('--git', 'Initialize git repository')
53
- .option('--install', 'Install dependencies')
54
- .action(init_1.initCommand);
55
- // Config commands
56
- program
57
- .command('config')
58
- .description('Manage Pattern-Stack configuration')
59
- .option('--show', 'Show current configuration')
60
- .option('--set <key=value>', 'Set configuration value')
61
- .action((options) => {
62
- if (options.show) {
63
- console.log('Current configuration:');
64
- // Show config
65
- }
66
- if (options.set) {
67
- const [key, value] = options.set.split('=');
68
- console.log(`Setting ${key} = ${value}`);
69
- // Set config
70
- }
71
- });
72
- // Help command
73
- program
74
- .command('help')
75
- .description('Display help for commands')
76
- .argument('[command]', 'Command to get help for')
77
- .action((command) => {
78
- if (command) {
79
- program.help();
80
- }
81
- else {
82
- console.log(`
83
- Pattern-Stack CLI
84
-
85
- Available commands:
86
- generate hooks <source> Generate React hooks from OpenAPI spec
87
- scaffold <type> <name> Scaffold components and structures
88
- init [template] Initialize new project from template
89
- config Manage configuration
90
-
91
- Examples:
92
- pattern-stack generate hooks ./api/openapi.json
93
- pattern-stack scaffold component UserCard
94
- pattern-stack init financial --name my-finance-app
95
-
96
- For more information on a command:
97
- pattern-stack <command> --help
98
- `);
99
- }
100
- });
101
- // Handle unknown commands
102
- program.on('command:*', () => {
103
- console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' '));
104
- process.exit(1);
105
- });
106
- // Parse arguments
107
- if (process.argv.length < 3) {
108
- program.help();
109
- }
110
- else {
111
- program.parse();
112
- }
113
- exports.default = program;