@pattern-stack/frontend-patterns 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (655) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/LICENSE +19 -0
  3. package/cli/cli/commands/generate-hooks.js +291 -0
  4. package/cli/cli/commands/init.js +25 -0
  5. package/cli/cli/commands/scaffold.js +201 -0
  6. package/cli/cli/index.js +113 -0
  7. package/cli/commands/generate-hooks.js +288 -0
  8. package/cli/commands/generate-hooks.ts +316 -0
  9. package/cli/commands/init.js +22 -0
  10. package/cli/commands/init.ts +33 -0
  11. package/cli/commands/scaffold.js +198 -0
  12. package/cli/commands/scaffold.ts +224 -0
  13. package/cli/index.js +3210 -0
  14. package/cli/index.ts +122 -0
  15. package/cli/src/codegen/openapi/bulk-hook-generator.js +252 -0
  16. package/cli/src/codegen/openapi/bulk-types.js +89 -0
  17. package/cli/src/codegen/openapi/client-generator.js +672 -0
  18. package/cli/src/codegen/openapi/confidence-scorer.js +204 -0
  19. package/cli/src/codegen/openapi/hook-config.js +66 -0
  20. package/cli/src/codegen/openapi/hook-generator.js +1057 -0
  21. package/cli/src/codegen/openapi/parser.js +279 -0
  22. package/cli/src/codegen/openapi/type-generator.js +339 -0
  23. package/dist/atoms/components/core/Avatar/Avatar.d.ts +41 -0
  24. package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -0
  25. package/dist/atoms/components/core/Avatar/index.d.ts +2 -0
  26. package/dist/atoms/components/core/Avatar/index.d.ts.map +1 -0
  27. package/dist/atoms/components/core/Badge/Badge.d.ts +38 -0
  28. package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -0
  29. package/dist/atoms/components/core/Badge/index.d.ts +2 -0
  30. package/dist/atoms/components/core/Badge/index.d.ts.map +1 -0
  31. package/dist/atoms/components/core/Button/Button.d.ts +28 -0
  32. package/dist/atoms/components/core/Button/Button.d.ts.map +1 -0
  33. package/dist/atoms/components/core/Button/index.d.ts +3 -0
  34. package/dist/atoms/components/core/Button/index.d.ts.map +1 -0
  35. package/dist/atoms/components/core/Card/Card.d.ts +41 -0
  36. package/dist/atoms/components/core/Card/Card.d.ts.map +1 -0
  37. package/dist/atoms/components/core/Card/index.d.ts +3 -0
  38. package/dist/atoms/components/core/Card/index.d.ts.map +1 -0
  39. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +28 -0
  40. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -0
  41. package/dist/atoms/components/core/Checkbox/index.d.ts +3 -0
  42. package/dist/atoms/components/core/Checkbox/index.d.ts.map +1 -0
  43. package/dist/atoms/components/core/Input/Input.d.ts +37 -0
  44. package/dist/atoms/components/core/Input/Input.d.ts.map +1 -0
  45. package/dist/atoms/components/core/Input/index.d.ts +3 -0
  46. package/dist/atoms/components/core/Input/index.d.ts.map +1 -0
  47. package/dist/atoms/components/core/Label/Label.d.ts +23 -0
  48. package/dist/atoms/components/core/Label/Label.d.ts.map +1 -0
  49. package/dist/atoms/components/core/Label/index.d.ts +3 -0
  50. package/dist/atoms/components/core/Label/index.d.ts.map +1 -0
  51. package/dist/atoms/components/core/Select/Select.d.ts +42 -0
  52. package/dist/atoms/components/core/Select/Select.d.ts.map +1 -0
  53. package/dist/atoms/components/core/Select/index.d.ts +3 -0
  54. package/dist/atoms/components/core/Select/index.d.ts.map +1 -0
  55. package/dist/atoms/components/core/Spinner/Spinner.d.ts +25 -0
  56. package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -0
  57. package/dist/atoms/components/core/Spinner/index.d.ts +3 -0
  58. package/dist/atoms/components/core/Spinner/index.d.ts.map +1 -0
  59. package/dist/atoms/components/core/Switch/Switch.d.ts +35 -0
  60. package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -0
  61. package/dist/atoms/components/core/Switch/index.d.ts +2 -0
  62. package/dist/atoms/components/core/Switch/index.d.ts.map +1 -0
  63. package/dist/atoms/components/core/index.d.ts +11 -0
  64. package/dist/atoms/components/core/index.d.ts.map +1 -0
  65. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +4 -0
  66. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -0
  67. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +38 -0
  68. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +1 -0
  69. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +9 -0
  70. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -0
  71. package/dist/atoms/components/data/ActivityFeed/index.d.ts +4 -0
  72. package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -0
  73. package/dist/atoms/components/data/ActivityFeed/types.d.ts +26 -0
  74. package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -0
  75. package/dist/atoms/components/data/ActivityFeed/utils.d.ts +5 -0
  76. package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -0
  77. package/dist/atoms/components/data/Chart/Chart.d.ts +37 -0
  78. package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -0
  79. package/{src/atoms/composed/Chart/index.ts → dist/atoms/components/data/Chart/index.d.ts} +2 -1
  80. package/dist/atoms/components/data/Chart/index.d.ts.map +1 -0
  81. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +18 -0
  82. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -0
  83. package/dist/atoms/components/data/DataBadge/index.d.ts +2 -0
  84. package/dist/atoms/components/data/DataBadge/index.d.ts.map +1 -0
  85. package/dist/atoms/components/data/DataTable/DataTable.d.ts +5 -0
  86. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -0
  87. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +51 -0
  88. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -0
  89. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts +10 -0
  90. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts.map +1 -0
  91. package/dist/atoms/components/data/DataTable/index.d.ts +3 -0
  92. package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -0
  93. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts +30 -0
  94. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -0
  95. package/dist/atoms/components/data/DetailedCard/index.d.ts +3 -0
  96. package/dist/atoms/components/data/DetailedCard/index.d.ts.map +1 -0
  97. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +24 -0
  98. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -0
  99. package/dist/atoms/components/data/EntityIcon/index.d.ts +2 -0
  100. package/dist/atoms/components/data/EntityIcon/index.d.ts.map +1 -0
  101. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts +17 -0
  102. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -0
  103. package/dist/atoms/components/data/IconBadge/index.d.ts +3 -0
  104. package/dist/atoms/components/data/IconBadge/index.d.ts.map +1 -0
  105. package/dist/atoms/components/data/ListCard/ListCard.d.ts +32 -0
  106. package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -0
  107. package/dist/atoms/components/data/ListCard/index.d.ts +2 -0
  108. package/dist/atoms/components/data/ListCard/index.d.ts.map +1 -0
  109. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts +25 -0
  110. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -0
  111. package/{src/atoms/composed/ProgressBar/index.ts → dist/atoms/components/data/ProgressBar/index.d.ts} +2 -1
  112. package/dist/atoms/components/data/ProgressBar/index.d.ts.map +1 -0
  113. package/dist/atoms/components/data/StatCard/StatCard.d.ts +21 -0
  114. package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -0
  115. package/dist/atoms/components/data/StatCard/index.d.ts +2 -0
  116. package/dist/atoms/components/data/StatCard/index.d.ts.map +1 -0
  117. package/dist/atoms/components/data/Table/Table.d.ts +41 -0
  118. package/dist/atoms/components/data/Table/Table.d.ts.map +1 -0
  119. package/dist/atoms/components/data/Table/index.d.ts +2 -0
  120. package/dist/atoms/components/data/Table/index.d.ts.map +1 -0
  121. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +26 -0
  122. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -0
  123. package/dist/atoms/components/data/TruncatedText/index.d.ts +2 -0
  124. package/dist/atoms/components/data/TruncatedText/index.d.ts.map +1 -0
  125. package/dist/atoms/components/data/index.d.ts +13 -0
  126. package/dist/atoms/components/data/index.d.ts.map +1 -0
  127. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts +19 -0
  128. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -0
  129. package/dist/atoms/components/domain/SalesPanel/index.d.ts +2 -0
  130. package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -0
  131. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts +63 -0
  132. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts.map +1 -0
  133. package/dist/atoms/components/domain/index.d.ts +2 -0
  134. package/dist/atoms/components/domain/index.d.ts.map +1 -0
  135. package/dist/atoms/components/feedback/Alert/Alert.d.ts +25 -0
  136. package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -0
  137. package/dist/atoms/components/feedback/Alert/index.d.ts +2 -0
  138. package/dist/atoms/components/feedback/Alert/index.d.ts.map +1 -0
  139. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts +18 -0
  140. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -0
  141. package/dist/atoms/components/feedback/EmptyState/index.d.ts +2 -0
  142. package/dist/atoms/components/feedback/EmptyState/index.d.ts.map +1 -0
  143. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +61 -0
  144. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  145. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +2 -0
  146. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts.map +1 -0
  147. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +41 -0
  148. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -0
  149. package/dist/atoms/components/feedback/Skeleton/index.d.ts +2 -0
  150. package/dist/atoms/components/feedback/Skeleton/index.d.ts.map +1 -0
  151. package/dist/atoms/components/feedback/Toast/Toast.d.ts +40 -0
  152. package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -0
  153. package/{src/atoms/composed/Toast/index.ts → dist/atoms/components/feedback/Toast/index.d.ts} +2 -1
  154. package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -0
  155. package/dist/atoms/components/feedback/index.d.ts +6 -0
  156. package/dist/atoms/components/feedback/index.d.ts.map +1 -0
  157. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts +45 -0
  158. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  159. package/dist/atoms/components/forms/DateTimePicker/index.d.ts +3 -0
  160. package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +1 -0
  161. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts +46 -0
  162. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -0
  163. package/{src/atoms/composed/FileUpload/index.ts → dist/atoms/components/forms/FileUpload/index.d.ts} +2 -1
  164. package/dist/atoms/components/forms/FileUpload/index.d.ts.map +1 -0
  165. package/dist/atoms/components/forms/FormField/FormField.d.ts +23 -0
  166. package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -0
  167. package/dist/atoms/components/forms/FormField/index.d.ts +2 -0
  168. package/dist/atoms/components/forms/FormField/index.d.ts.map +1 -0
  169. package/dist/atoms/components/forms/index.d.ts +4 -0
  170. package/dist/atoms/components/forms/index.d.ts.map +1 -0
  171. package/dist/atoms/components/index.d.ts +10 -0
  172. package/dist/atoms/components/index.d.ts.map +1 -0
  173. package/dist/atoms/components/layout/Accordion/Accordion.d.ts +20 -0
  174. package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -0
  175. package/{src/atoms/composed/Accordion/index.ts → dist/atoms/components/layout/Accordion/index.d.ts} +2 -1
  176. package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -0
  177. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts +17 -0
  178. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  179. package/dist/atoms/components/layout/Breadcrumb/index.d.ts +2 -0
  180. package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -0
  181. package/dist/atoms/components/layout/Dialog/index.d.ts +3 -0
  182. package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -0
  183. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +40 -0
  184. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -0
  185. package/dist/atoms/components/layout/Dropdown/index.d.ts +3 -0
  186. package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -0
  187. package/dist/atoms/components/layout/Modal/Modal.d.ts +18 -0
  188. package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -0
  189. package/dist/atoms/components/layout/Modal/index.d.ts +3 -0
  190. package/dist/atoms/components/layout/Modal/index.d.ts.map +1 -0
  191. package/dist/atoms/components/layout/Tabs/index.d.ts +2 -0
  192. package/dist/atoms/components/layout/Tabs/index.d.ts.map +1 -0
  193. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts +16 -0
  194. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -0
  195. package/dist/atoms/components/layout/Tooltip/index.d.ts +2 -0
  196. package/dist/atoms/components/layout/Tooltip/index.d.ts.map +1 -0
  197. package/dist/atoms/components/layout/index.d.ts +8 -0
  198. package/dist/atoms/components/layout/index.d.ts.map +1 -0
  199. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts +8 -0
  200. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -0
  201. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts +2 -0
  202. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -0
  203. package/dist/atoms/components/navigation/index.d.ts +2 -0
  204. package/dist/atoms/components/navigation/index.d.ts.map +1 -0
  205. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts +19 -0
  206. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  207. package/{src/atoms/composed/ColorSwatch/index.ts → dist/atoms/components/theme/ColorSwatch/index.d.ts} +2 -1
  208. package/dist/atoms/components/theme/ColorSwatch/index.d.ts.map +1 -0
  209. package/dist/atoms/components/theme/DarkModeToggle.d.ts +4 -0
  210. package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -0
  211. package/dist/atoms/components/theme/PaletteSwitcher.d.ts +7 -0
  212. package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -0
  213. package/dist/atoms/components/theme/StyleGuide.d.ts +3 -0
  214. package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -0
  215. package/dist/atoms/components/theme/index.d.ts +5 -0
  216. package/dist/atoms/components/theme/index.d.ts.map +1 -0
  217. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts +8 -0
  218. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -0
  219. package/dist/atoms/components/user/UserAvatar/index.d.ts +2 -0
  220. package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -0
  221. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts +8 -0
  222. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -0
  223. package/dist/atoms/components/user/UserMenu/index.d.ts +2 -0
  224. package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -0
  225. package/dist/atoms/components/user/index.d.ts +3 -0
  226. package/dist/atoms/components/user/index.d.ts.map +1 -0
  227. package/dist/atoms/config/responsive.d.ts +147 -0
  228. package/dist/atoms/config/responsive.d.ts.map +1 -0
  229. package/dist/atoms/hooks/index.d.ts +5 -0
  230. package/dist/atoms/hooks/index.d.ts.map +1 -0
  231. package/dist/atoms/hooks/use-toast.d.ts +16 -0
  232. package/dist/atoms/hooks/use-toast.d.ts.map +1 -0
  233. package/dist/atoms/hooks/useApi.d.ts +25 -0
  234. package/dist/atoms/hooks/useApi.d.ts.map +1 -0
  235. package/dist/atoms/hooks/useHealth.d.ts +19 -0
  236. package/dist/atoms/hooks/useHealth.d.ts.map +1 -0
  237. package/dist/atoms/hooks/useResponsive.d.ts +42 -0
  238. package/dist/atoms/hooks/useResponsive.d.ts.map +1 -0
  239. package/dist/atoms/index.d.ts +8 -0
  240. package/dist/atoms/index.d.ts.map +1 -0
  241. package/dist/atoms/primitives/Badge.d.ts +10 -0
  242. package/dist/atoms/primitives/Badge.d.ts.map +1 -0
  243. package/dist/atoms/primitives/ErrorBoundary.d.ts +18 -0
  244. package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -0
  245. package/dist/atoms/primitives/Select.d.ts +28 -0
  246. package/dist/atoms/primitives/Select.d.ts.map +1 -0
  247. package/dist/atoms/primitives/Switch.d.ts +9 -0
  248. package/dist/atoms/primitives/Switch.d.ts.map +1 -0
  249. package/dist/atoms/primitives/Tabs.d.ts +30 -0
  250. package/dist/atoms/primitives/Tabs.d.ts.map +1 -0
  251. package/dist/atoms/primitives/avatar.d.ts +7 -0
  252. package/dist/atoms/primitives/avatar.d.ts.map +1 -0
  253. package/dist/atoms/primitives/button.d.ts +14 -0
  254. package/dist/atoms/primitives/button.d.ts.map +1 -0
  255. package/dist/atoms/primitives/card.d.ts +12 -0
  256. package/dist/atoms/primitives/card.d.ts.map +1 -0
  257. package/dist/atoms/primitives/checkbox.d.ts +12 -0
  258. package/dist/atoms/primitives/checkbox.d.ts.map +1 -0
  259. package/dist/atoms/primitives/dialog.d.ts +34 -0
  260. package/dist/atoms/primitives/dialog.d.ts.map +1 -0
  261. package/dist/atoms/primitives/dropdown-menu.d.ts +28 -0
  262. package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -0
  263. package/{src/atoms/ui/index.ts → dist/atoms/primitives/index.d.ts} +5 -27
  264. package/dist/atoms/primitives/index.d.ts.map +1 -0
  265. package/dist/atoms/primitives/input.d.ts +5 -0
  266. package/dist/atoms/primitives/input.d.ts.map +1 -0
  267. package/dist/atoms/primitives/label.d.ts +6 -0
  268. package/dist/atoms/primitives/label.d.ts.map +1 -0
  269. package/dist/atoms/primitives/skeleton.d.ts +3 -0
  270. package/dist/atoms/primitives/skeleton.d.ts.map +1 -0
  271. package/dist/atoms/primitives/spinner.d.ts +14 -0
  272. package/dist/atoms/primitives/spinner.d.ts.map +1 -0
  273. package/dist/atoms/primitives/table.d.ts +11 -0
  274. package/dist/atoms/primitives/table.d.ts.map +1 -0
  275. package/dist/atoms/services/api/client.d.ts +20 -0
  276. package/dist/atoms/services/api/client.d.ts.map +1 -0
  277. package/dist/atoms/services/auth-service.d.ts +24 -0
  278. package/dist/atoms/services/auth-service.d.ts.map +1 -0
  279. package/dist/atoms/services/health.d.ts +7 -0
  280. package/dist/atoms/services/health.d.ts.map +1 -0
  281. package/{src/atoms/services/index.ts → dist/atoms/services/index.d.ts} +2 -1
  282. package/dist/atoms/services/index.d.ts.map +1 -0
  283. package/dist/atoms/shared/config/constants.d.ts +15 -0
  284. package/dist/atoms/shared/config/constants.d.ts.map +1 -0
  285. package/dist/atoms/shared/config/dashboard-sizes.d.ts +83 -0
  286. package/dist/atoms/shared/config/dashboard-sizes.d.ts.map +1 -0
  287. package/dist/atoms/shared/config/environment.d.ts +10 -0
  288. package/dist/atoms/shared/config/environment.d.ts.map +1 -0
  289. package/dist/atoms/shared/index.d.ts +5 -0
  290. package/dist/atoms/shared/index.d.ts.map +1 -0
  291. package/dist/atoms/types/auth.d.ts +56 -0
  292. package/dist/atoms/types/auth.d.ts.map +1 -0
  293. package/dist/atoms/types/entity-config.d.ts +117 -0
  294. package/dist/atoms/types/entity-config.d.ts.map +1 -0
  295. package/{src/atoms/types/generated.ts → dist/atoms/types/generated.d.ts} +1 -1
  296. package/dist/atoms/types/generated.d.ts.map +1 -0
  297. package/dist/atoms/types/index.d.ts +7 -0
  298. package/dist/atoms/types/index.d.ts.map +1 -0
  299. package/{src/atoms/types/loading.ts → dist/atoms/types/loading.d.ts} +8 -10
  300. package/dist/atoms/types/loading.d.ts.map +1 -0
  301. package/dist/atoms/types/navigation.d.ts +30 -0
  302. package/dist/atoms/types/navigation.d.ts.map +1 -0
  303. package/dist/atoms/types/ui-config.d.ts +50 -0
  304. package/dist/atoms/types/ui-config.d.ts.map +1 -0
  305. package/dist/atoms/utils/animations.d.ts +65 -0
  306. package/dist/atoms/utils/animations.d.ts.map +1 -0
  307. package/dist/atoms/utils/color-manager.d.ts +68 -0
  308. package/dist/atoms/utils/color-manager.d.ts.map +1 -0
  309. package/dist/atoms/utils/debounce.d.ts +6 -0
  310. package/dist/atoms/utils/debounce.d.ts.map +1 -0
  311. package/dist/atoms/utils/field-detection.d.ts +15 -0
  312. package/dist/atoms/utils/field-detection.d.ts.map +1 -0
  313. package/dist/atoms/utils/icon-resolver.d.ts +76 -0
  314. package/dist/atoms/utils/icon-resolver.d.ts.map +1 -0
  315. package/dist/atoms/utils/index.d.ts +5 -0
  316. package/dist/atoms/utils/index.d.ts.map +1 -0
  317. package/dist/atoms/utils/metric-engine.d.ts +30 -0
  318. package/dist/atoms/utils/metric-engine.d.ts.map +1 -0
  319. package/dist/atoms/utils/tooltip-helpers.d.ts +71 -0
  320. package/dist/atoms/utils/tooltip-helpers.d.ts.map +1 -0
  321. package/dist/atoms/utils/ui-mapping.d.ts +17 -0
  322. package/dist/atoms/utils/ui-mapping.d.ts.map +1 -0
  323. package/dist/atoms/utils/utils.d.ts +9 -0
  324. package/dist/atoms/utils/utils.d.ts.map +1 -0
  325. package/dist/codegen/index.d.ts +7 -0
  326. package/dist/codegen/index.d.ts.map +1 -0
  327. package/dist/codegen/openapi/bulk-hook-generator.d.ts +40 -0
  328. package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +1 -0
  329. package/dist/codegen/openapi/bulk-types.d.ts +142 -0
  330. package/dist/codegen/openapi/bulk-types.d.ts.map +1 -0
  331. package/dist/codegen/openapi/client-generator.d.ts +52 -0
  332. package/dist/codegen/openapi/client-generator.d.ts.map +1 -0
  333. package/dist/codegen/openapi/confidence-scorer.d.ts +30 -0
  334. package/dist/codegen/openapi/confidence-scorer.d.ts.map +1 -0
  335. package/dist/codegen/openapi/hook-config.d.ts +50 -0
  336. package/dist/codegen/openapi/hook-config.d.ts.map +1 -0
  337. package/dist/codegen/openapi/hook-generator.d.ts +108 -0
  338. package/dist/codegen/openapi/hook-generator.d.ts.map +1 -0
  339. package/dist/codegen/openapi/index.d.ts +27 -0
  340. package/dist/codegen/openapi/index.d.ts.map +1 -0
  341. package/dist/codegen/openapi/parser.d.ts +107 -0
  342. package/dist/codegen/openapi/parser.d.ts.map +1 -0
  343. package/dist/codegen/openapi/type-generator.d.ts +53 -0
  344. package/dist/codegen/openapi/type-generator.d.ts.map +1 -0
  345. package/dist/features/auth/components/LoginForm.d.ts +2 -0
  346. package/dist/features/auth/components/LoginForm.d.ts.map +1 -0
  347. package/dist/features/auth/components/LogoutButton.d.ts +2 -0
  348. package/dist/features/auth/components/LogoutButton.d.ts.map +1 -0
  349. package/dist/features/auth/components/ProtectedRoute.d.ts +10 -0
  350. package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -0
  351. package/{src/features/auth/components/index.ts → dist/features/auth/components/index.d.ts} +1 -1
  352. package/dist/features/auth/components/index.d.ts.map +1 -0
  353. package/dist/features/auth/hooks/index.d.ts +4 -0
  354. package/dist/features/auth/hooks/index.d.ts.map +1 -0
  355. package/dist/features/auth/hooks/useAuth.d.ts +10 -0
  356. package/dist/features/auth/hooks/useAuth.d.ts.map +1 -0
  357. package/dist/features/auth/hooks/useAuthContext.d.ts +7 -0
  358. package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -0
  359. package/dist/features/auth/hooks/usePermissions.d.ts +13 -0
  360. package/dist/features/auth/hooks/usePermissions.d.ts.map +1 -0
  361. package/dist/features/auth/index.d.ts +4 -0
  362. package/dist/features/auth/index.d.ts.map +1 -0
  363. package/dist/features/auth/providers/MockAuthProvider.d.ts +9 -0
  364. package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -0
  365. package/dist/features/auth/providers/index.d.ts +2 -0
  366. package/dist/features/auth/providers/index.d.ts.map +1 -0
  367. package/dist/features/auth/services/mock-auth-service.d.ts +17 -0
  368. package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -0
  369. package/dist/features/index.d.ts +2 -0
  370. package/dist/features/index.d.ts.map +1 -0
  371. package/dist/frontend-patterns.css +4417 -1
  372. package/dist/generated/client/client.d.ts +23 -0
  373. package/dist/generated/client/client.d.ts.map +1 -0
  374. package/dist/generated/client/config.d.ts +10 -0
  375. package/dist/generated/client/config.d.ts.map +1 -0
  376. package/dist/generated/client/index.d.ts +12 -0
  377. package/dist/generated/client/index.d.ts.map +1 -0
  378. package/dist/generated/client/methods.d.ts +591 -0
  379. package/dist/generated/client/methods.d.ts.map +1 -0
  380. package/dist/generated/client/types.d.ts +37 -0
  381. package/dist/generated/client/types.d.ts.map +1 -0
  382. package/dist/generated/example.d.ts +8 -0
  383. package/dist/generated/example.d.ts.map +1 -0
  384. package/dist/generated/hooks/index.d.ts +11 -0
  385. package/dist/generated/hooks/index.d.ts.map +1 -0
  386. package/dist/generated/hooks/keys.d.ts +59 -0
  387. package/dist/generated/hooks/keys.d.ts.map +1 -0
  388. package/dist/generated/hooks/mutations.d.ts +551 -0
  389. package/dist/generated/hooks/mutations.d.ts.map +1 -0
  390. package/dist/generated/hooks/queries.d.ts +426 -0
  391. package/dist/generated/hooks/queries.d.ts.map +1 -0
  392. package/dist/generated/hooks/types.d.ts +318 -0
  393. package/dist/generated/hooks/types.d.ts.map +1 -0
  394. package/dist/generated/index.d.ts +13 -0
  395. package/dist/generated/index.d.ts.map +1 -0
  396. package/dist/generated/types/endpoints.d.ts +1364 -0
  397. package/dist/generated/types/endpoints.d.ts.map +1 -0
  398. package/dist/generated/types/index.d.ts +11 -0
  399. package/dist/generated/types/index.d.ts.map +1 -0
  400. package/dist/generated/types/parameters.d.ts +8 -0
  401. package/dist/generated/types/parameters.d.ts.map +1 -0
  402. package/dist/generated/types/responses.d.ts +8 -0
  403. package/dist/generated/types/responses.d.ts.map +1 -0
  404. package/dist/generated/types/schemas.d.ts +652 -0
  405. package/dist/generated/types/schemas.d.ts.map +1 -0
  406. package/dist/index.d.ts +18 -0
  407. package/dist/index.d.ts.map +1 -0
  408. package/dist/index.es.js +25027 -7925
  409. package/dist/index.es.js.map +1 -1
  410. package/dist/index.js +25048 -7925
  411. package/dist/index.js.map +1 -1
  412. package/dist/molecules/feedback/index.d.ts +2 -0
  413. package/dist/molecules/feedback/index.d.ts.map +1 -0
  414. package/dist/molecules/forms/FormGroup.d.ts +17 -0
  415. package/dist/molecules/forms/FormGroup.d.ts.map +1 -0
  416. package/dist/molecules/forms/SearchInput.d.ts +36 -0
  417. package/dist/molecules/forms/SearchInput.d.ts.map +1 -0
  418. package/dist/molecules/forms/index.d.ts +3 -0
  419. package/dist/molecules/forms/index.d.ts.map +1 -0
  420. package/dist/molecules/index.d.ts +4 -0
  421. package/dist/molecules/index.d.ts.map +1 -0
  422. package/dist/molecules/layout/AppHeader/AppHeader.d.ts +7 -0
  423. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -0
  424. package/dist/molecules/layout/AppHeader/index.d.ts +2 -0
  425. package/dist/molecules/layout/AppHeader/index.d.ts.map +1 -0
  426. package/dist/molecules/layout/AppLayout.d.ts +2 -0
  427. package/dist/molecules/layout/AppLayout.d.ts.map +1 -0
  428. package/dist/molecules/layout/BulkSelectionBar.d.ts +15 -0
  429. package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -0
  430. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts +16 -0
  431. package/dist/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.d.ts.map +1 -0
  432. package/{src/molecules/layout/DashboardWithSidePanel/index.ts → dist/molecules/layout/DashboardWithSidePanel/index.d.ts} +2 -1
  433. package/dist/molecules/layout/DashboardWithSidePanel/index.d.ts.map +1 -0
  434. package/dist/molecules/layout/NavigationContext.d.ts +15 -0
  435. package/dist/molecules/layout/NavigationContext.d.ts.map +1 -0
  436. package/dist/molecules/layout/PageTemplate.d.ts +19 -0
  437. package/dist/molecules/layout/PageTemplate.d.ts.map +1 -0
  438. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts +24 -0
  439. package/dist/molecules/layout/SectionHeader/SectionHeader.d.ts.map +1 -0
  440. package/{src/molecules/layout/SectionHeader/index.ts → dist/molecules/layout/SectionHeader/index.d.ts} +2 -1
  441. package/dist/molecules/layout/SectionHeader/index.d.ts.map +1 -0
  442. package/dist/molecules/layout/ShowcaseSection.d.ts +22 -0
  443. package/dist/molecules/layout/ShowcaseSection.d.ts.map +1 -0
  444. package/dist/molecules/layout/Sidebar.d.ts +6 -0
  445. package/dist/molecules/layout/Sidebar.d.ts.map +1 -0
  446. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts +15 -0
  447. package/dist/molecules/layout/SidebarButton/SidebarButton.d.ts.map +1 -0
  448. package/dist/molecules/layout/SidebarButton/index.d.ts +2 -0
  449. package/dist/molecules/layout/SidebarButton/index.d.ts.map +1 -0
  450. package/dist/molecules/layout/SidebarContext.d.ts +12 -0
  451. package/dist/molecules/layout/SidebarContext.d.ts.map +1 -0
  452. package/{src/molecules/layout/index.ts → dist/molecules/layout/index.d.ts} +5 -1
  453. package/dist/molecules/layout/index.d.ts.map +1 -0
  454. package/dist/molecules/navigation/NavMenu.d.ts +20 -0
  455. package/dist/molecules/navigation/NavMenu.d.ts.map +1 -0
  456. package/dist/molecules/navigation/Pagination.d.ts +14 -0
  457. package/dist/molecules/navigation/Pagination.d.ts.map +1 -0
  458. package/dist/molecules/navigation/index.d.ts +3 -0
  459. package/dist/molecules/navigation/index.d.ts.map +1 -0
  460. package/dist/organisms/index.d.ts +2 -0
  461. package/dist/organisms/index.d.ts.map +1 -0
  462. package/dist/organisms/showcase/ComponentShowcasePage.d.ts +3 -0
  463. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -0
  464. package/dist/templates/AuthTemplate.d.ts +68 -0
  465. package/dist/templates/AuthTemplate.d.ts.map +1 -0
  466. package/dist/templates/ComponentShowcaseTemplate.d.ts +53 -0
  467. package/dist/templates/ComponentShowcaseTemplate.d.ts.map +1 -0
  468. package/dist/templates/DashboardTemplate.d.ts +62 -0
  469. package/dist/templates/DashboardTemplate.d.ts.map +1 -0
  470. package/dist/templates/DataTemplate.d.ts +78 -0
  471. package/dist/templates/DataTemplate.d.ts.map +1 -0
  472. package/dist/templates/EnhancedDataTemplate.d.ts +188 -0
  473. package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -0
  474. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +18 -0
  475. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -0
  476. package/dist/templates/EnhancedDataTemplate.hooks.d.ts +22 -0
  477. package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -0
  478. package/dist/templates/admin/AdminCRUDTemplate.d.ts +105 -0
  479. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -0
  480. package/dist/templates/admin/AdminDashboardTemplate.d.ts +86 -0
  481. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -0
  482. package/dist/templates/admin/AdminDetailTemplate.d.ts +132 -0
  483. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -0
  484. package/dist/templates/admin/index.d.ts +4 -0
  485. package/dist/templates/admin/index.d.ts.map +1 -0
  486. package/dist/templates/api/APIDataTemplate.d.ts +66 -0
  487. package/dist/templates/api/APIDataTemplate.d.ts.map +1 -0
  488. package/dist/templates/api/index.d.ts +8 -0
  489. package/dist/templates/api/index.d.ts.map +1 -0
  490. package/dist/templates/factory.d.ts +29 -0
  491. package/dist/templates/factory.d.ts.map +1 -0
  492. package/dist/templates/index.d.ts +9 -0
  493. package/dist/templates/index.d.ts.map +1 -0
  494. package/package.json +31 -9
  495. package/src/App.css +0 -42
  496. package/src/App.tsx +0 -64
  497. package/src/__tests__/README.md +0 -221
  498. package/src/__tests__/atoms/hooks/simple-hooks.test.ts +0 -44
  499. package/src/__tests__/atoms/ui/button.test.tsx +0 -68
  500. package/src/__tests__/atoms/utils/simple.test.ts +0 -18
  501. package/src/__tests__/atoms/utils/utils.test.ts +0 -77
  502. package/src/__tests__/features/auth/simple-auth.test.tsx +0 -40
  503. package/src/__tests__/molecules/layout/simple-layout.test.tsx +0 -81
  504. package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +0 -167
  505. package/src/__tests__/setup.ts +0 -51
  506. package/src/__tests__/utils.tsx +0 -123
  507. package/src/atoms/composed/Accordion/Accordion.tsx +0 -271
  508. package/src/atoms/composed/Alert/Alert.tsx +0 -132
  509. package/src/atoms/composed/Alert/index.ts +0 -1
  510. package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +0 -83
  511. package/src/atoms/composed/Breadcrumb/index.ts +0 -1
  512. package/src/atoms/composed/Chart/Chart.tsx +0 -425
  513. package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +0 -72
  514. package/src/atoms/composed/DarkModeToggle.tsx +0 -66
  515. package/src/atoms/composed/DataBadge/DataBadge.tsx +0 -81
  516. package/src/atoms/composed/DataBadge/index.ts +0 -1
  517. package/src/atoms/composed/DataTable/DataTable.tsx +0 -394
  518. package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +0 -41
  519. package/src/atoms/composed/DataTable/index.ts +0 -2
  520. package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +0 -611
  521. package/src/atoms/composed/DateTimePicker/index.ts +0 -2
  522. package/src/atoms/composed/DetailedCard/DetailedCard.tsx +0 -181
  523. package/src/atoms/composed/DetailedCard/index.ts +0 -2
  524. package/src/atoms/composed/EmptyState/EmptyState.tsx +0 -90
  525. package/src/atoms/composed/EmptyState/index.ts +0 -1
  526. package/src/atoms/composed/FileUpload/FileUpload.tsx +0 -477
  527. package/src/atoms/composed/FormField/FormField.tsx +0 -92
  528. package/src/atoms/composed/FormField/index.ts +0 -1
  529. package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +0 -37
  530. package/src/atoms/composed/GlobalSearch/index.ts +0 -1
  531. package/src/atoms/composed/IconBadge/IconBadge.tsx +0 -95
  532. package/src/atoms/composed/IconBadge/index.ts +0 -2
  533. package/src/atoms/composed/Modal/Modal.tsx +0 -223
  534. package/src/atoms/composed/Modal/index.ts +0 -2
  535. package/src/atoms/composed/PaletteSwitcher.tsx +0 -386
  536. package/src/atoms/composed/ProgressBar/ProgressBar.tsx +0 -116
  537. package/src/atoms/composed/SalesPanel/SalesPanel.tsx +0 -116
  538. package/src/atoms/composed/SalesPanel/index.ts +0 -1
  539. package/src/atoms/composed/SalesPanel/mockSalesData.ts +0 -151
  540. package/src/atoms/composed/StatCard/StatCard.tsx +0 -219
  541. package/src/atoms/composed/StatCard/index.ts +0 -1
  542. package/src/atoms/composed/StyleGuide.tsx +0 -717
  543. package/src/atoms/composed/Toast/Toast.tsx +0 -219
  544. package/src/atoms/composed/Tooltip/Tooltip.tsx +0 -213
  545. package/src/atoms/composed/Tooltip/index.ts +0 -1
  546. package/src/atoms/composed/UserAvatar/UserAvatar.tsx +0 -139
  547. package/src/atoms/composed/UserAvatar/index.ts +0 -1
  548. package/src/atoms/composed/UserMenu/UserMenu.tsx +0 -16
  549. package/src/atoms/composed/UserMenu/index.ts +0 -1
  550. package/src/atoms/composed/index.ts +0 -30
  551. package/src/atoms/hooks/useApi.ts +0 -80
  552. package/src/atoms/hooks/useHealth.ts +0 -17
  553. package/src/atoms/index.ts +0 -13
  554. package/src/atoms/services/api/client.ts +0 -134
  555. package/src/atoms/services/auth-service.ts +0 -248
  556. package/src/atoms/services/health.ts +0 -15
  557. package/src/atoms/shared/config/constants.ts +0 -17
  558. package/src/atoms/shared/config/dashboard-sizes.ts +0 -111
  559. package/src/atoms/shared/config/environment.ts +0 -10
  560. package/src/atoms/shared/index.ts +0 -4
  561. package/src/atoms/shared/styles/color-palettes.css +0 -566
  562. package/src/atoms/types/auth.ts +0 -62
  563. package/src/atoms/types/entity-config.ts +0 -127
  564. package/src/atoms/types/index.ts +0 -5
  565. package/src/atoms/ui/Badge.tsx +0 -30
  566. package/src/atoms/ui/ErrorBoundary.tsx +0 -59
  567. package/src/atoms/ui/Select.tsx +0 -53
  568. package/src/atoms/ui/Switch.tsx +0 -42
  569. package/src/atoms/ui/Tabs.tsx +0 -118
  570. package/src/atoms/ui/avatar.tsx +0 -48
  571. package/src/atoms/ui/button.tsx +0 -70
  572. package/src/atoms/ui/card.tsx +0 -76
  573. package/src/atoms/ui/dropdown-menu.tsx +0 -199
  574. package/src/atoms/ui/input.tsx +0 -23
  575. package/src/atoms/ui/label.tsx +0 -23
  576. package/src/atoms/ui/skeleton.tsx +0 -13
  577. package/src/atoms/ui/spinner.tsx +0 -49
  578. package/src/atoms/ui/table.tsx +0 -116
  579. package/src/atoms/utils/animations.ts +0 -135
  580. package/src/atoms/utils/metric-engine.ts +0 -236
  581. package/src/atoms/utils/tooltip-helpers.ts +0 -140
  582. package/src/atoms/utils/utils.ts +0 -10
  583. package/src/features/auth/components/LoginForm.tsx +0 -168
  584. package/src/features/auth/components/LogoutButton.tsx +0 -19
  585. package/src/features/auth/components/ProtectedRoute.tsx +0 -60
  586. package/src/features/auth/hooks/index.ts +0 -2
  587. package/src/features/auth/hooks/useAuth.tsx +0 -205
  588. package/src/features/auth/hooks/usePermissions.ts +0 -35
  589. package/src/features/auth/index.ts +0 -2
  590. package/src/features/index.ts +0 -2
  591. package/src/index.css +0 -704
  592. package/src/index.ts +0 -13
  593. package/src/main.tsx +0 -48
  594. package/src/molecules/.gitkeep +0 -0
  595. package/src/molecules/forms/FormGroup.tsx +0 -75
  596. package/src/molecules/forms/SearchInput.tsx +0 -259
  597. package/src/molecules/forms/index.ts +0 -4
  598. package/src/molecules/index.ts +0 -4
  599. package/src/molecules/layout/AppHeader/AppHeader.tsx +0 -42
  600. package/src/molecules/layout/AppHeader/index.ts +0 -1
  601. package/src/molecules/layout/AppLayout.tsx +0 -29
  602. package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +0 -42
  603. package/src/molecules/layout/PageTemplate.tsx +0 -87
  604. package/src/molecules/layout/SectionHeader/SectionHeader.tsx +0 -87
  605. package/src/molecules/layout/ShowcaseSection.tsx +0 -57
  606. package/src/molecules/layout/Sidebar.tsx +0 -152
  607. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +0 -99
  608. package/src/molecules/layout/SidebarButton/index.ts +0 -1
  609. package/src/molecules/layout/SidebarContext.tsx +0 -31
  610. package/src/molecules/navigation/NavMenu.tsx +0 -188
  611. package/src/molecules/navigation/Pagination.tsx +0 -172
  612. package/src/molecules/navigation/index.ts +0 -4
  613. package/src/organisms/entity/CategoryBreakdownPanel.tsx +0 -427
  614. package/src/organisms/entity/EntityListPanel.tsx +0 -339
  615. package/src/organisms/entity/MetricsOverviewPanel.tsx +0 -236
  616. package/src/organisms/entity/TrendAnalysisPanel.tsx +0 -337
  617. package/src/organisms/entity/index.ts +0 -4
  618. package/src/organisms/index.ts +0 -8
  619. package/src/organisms/showcase/ComponentShowcasePage.tsx +0 -2496
  620. package/src/organisms/showcase/index.ts +0 -1
  621. package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +0 -242
  622. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +0 -173
  623. package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +0 -385
  624. package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +0 -158
  625. package/src/pages/AdminShowcase/index.tsx +0 -4
  626. package/src/pages/ComponentShowcase/BadgesShowcase.tsx +0 -188
  627. package/src/pages/ComponentShowcase/CardsShowcase.tsx +0 -392
  628. package/src/pages/ComponentShowcase/PalettesShowcase.tsx +0 -207
  629. package/src/pages/ComponentShowcase/StatesShowcase.tsx +0 -485
  630. package/src/pages/ComponentShowcase/TablesShowcase.tsx +0 -134
  631. package/src/pages/ComponentShowcase/TypographyShowcase.tsx +0 -255
  632. package/src/pages/ComponentShowcase/index.tsx +0 -188
  633. package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +0 -137
  634. package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +0 -117
  635. package/src/pages/EntityShowcase/index.ts +0 -2
  636. package/src/pages/EntityTemplateExample.tsx +0 -229
  637. package/src/pages/TestEntityTemplate.tsx +0 -40
  638. package/src/pages/index.ts +0 -3
  639. package/src/templates/AuthTemplate.tsx +0 -216
  640. package/src/templates/ComponentShowcaseTemplate.tsx +0 -173
  641. package/src/templates/DashboardTemplate.tsx +0 -232
  642. package/src/templates/DataTemplate.tsx +0 -319
  643. package/src/templates/admin/AdminCRUDTemplate.tsx +0 -630
  644. package/src/templates/admin/AdminDashboardTemplate.tsx +0 -351
  645. package/src/templates/admin/AdminDetailTemplate.tsx +0 -563
  646. package/src/templates/admin/index.ts +0 -29
  647. package/src/templates/entity/EntityManagementTemplate.tsx +0 -430
  648. package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +0 -277
  649. package/src/templates/entity/configs/financial-config.ts +0 -141
  650. package/src/templates/entity/configs/index.ts +0 -1
  651. package/src/templates/entity/index.ts +0 -3
  652. package/src/templates/factory.tsx +0 -169
  653. package/src/templates/financial/FinancialDashboardTemplate.tsx +0 -326
  654. package/src/templates/index.ts +0 -40
  655. package/src/vite-env.d.ts +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,63 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2024-01-09
9
+
10
+ ### Added - Initial Release 🚀
11
+
12
+ #### Core Features
13
+ - Complete atomic architecture component library (atoms, molecules, organisms, templates)
14
+ - Factory pattern for creating React applications with minimal boilerplate
15
+ - Comprehensive design system with 8 semantic color palettes
16
+ - Domain-driven UI system for automatic component selection
17
+
18
+ #### Components
19
+ - **UI Primitives**: Button, Card, Input, Select, Badge, Table, and more
20
+ - **Data Components**: DataTable with smart rendering, StatCard, Chart, DataBadge
21
+ - **Layout Components**: AppLayout, Sidebar, AppHeader with responsive design
22
+ - **Templates**: AdminDashboard, DataTemplate, EntityManagement templates
23
+
24
+ #### Hook Generation System
25
+ - CLI tool for generating React hooks from OpenAPI specifications
26
+ - Automatic detection of bulk operations
27
+ - Full TypeScript type safety
28
+ - TanStack Query integration
29
+
30
+ #### Responsive Design
31
+ - Progressive responsive system with custom breakpoints
32
+ - Mobile-first approach with intelligent component adaptation
33
+ - Dynamic view modes (table/card switching)
34
+
35
+ #### Enhanced DataTemplate
36
+ - Server-side operations (pagination, filtering, sorting)
37
+ - Inline editing with validation and optimistic updates
38
+ - Bulk operations UI (85% complete, awaiting API integration)
39
+ - Progressive responsive design
40
+
41
+ #### Developer Experience
42
+ - Zero-config setup with sensible defaults
43
+ - Automatic UI component selection based on data types
44
+ - Built-in authentication patterns
45
+ - Comprehensive TypeScript support
46
+
47
+ ### Infrastructure
48
+ - Vite-based build system
49
+ - ESLint rules for design system compliance
50
+ - Local development testing setup
51
+ - NPM package distribution ready
52
+
53
+ ### Documentation
54
+ - Comprehensive README with examples
55
+ - Atomic architecture guidelines
56
+ - Hook generation guide
57
+ - Design system documentation
58
+
59
+ ---
60
+
61
+ This is the foundation release of Pattern Stack Frontend Patterns - a reusable React template for building production-ready applications with minimal boilerplate.
62
+
63
+ Built with ❤️ for developers who want to focus on business logic, not infrastructure.
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ PROPRIETARY LICENSE
2
+
3
+ Copyright (c) 2024 Pattern Stack
4
+
5
+ All rights reserved.
6
+
7
+ This software and associated documentation files (the "Software") are
8
+ proprietary and confidential. No part of this Software may be used,
9
+ copied, modified, merged, published, distributed, sublicensed, and/or
10
+ sold without the prior written permission of the copyright holder.
11
+
12
+ This Software is provided for evaluation and development purposes only
13
+ by authorized parties.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
17
+ DAMAGES OR OTHER LIABILITY ARISING FROM THE USE OF THIS SOFTWARE.
18
+
19
+ For licensing inquiries or permission requests, contact the Pattern Stack team.
@@ -0,0 +1,291 @@
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
+ }
@@ -0,0 +1,25 @@
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
+ }
@@ -0,0 +1,201 @@
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
+ }