@pattern-stack/frontend-patterns 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (647) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/LICENSE +19 -0
  3. package/cli/cli/commands/generate-hooks.js +291 -0
  4. package/cli/cli/commands/init.js +25 -0
  5. package/cli/cli/commands/scaffold.js +201 -0
  6. package/cli/cli/index.js +113 -0
  7. package/cli/commands/generate-hooks.js +288 -0
  8. package/cli/commands/generate-hooks.ts +316 -0
  9. package/cli/commands/init.js +22 -0
  10. package/cli/commands/init.ts +33 -0
  11. package/cli/commands/scaffold.js +198 -0
  12. package/cli/commands/scaffold.ts +224 -0
  13. package/cli/index.js +3210 -0
  14. package/cli/index.ts +122 -0
  15. package/cli/src/codegen/openapi/bulk-hook-generator.js +252 -0
  16. package/cli/src/codegen/openapi/bulk-types.js +89 -0
  17. package/cli/src/codegen/openapi/client-generator.js +672 -0
  18. package/cli/src/codegen/openapi/confidence-scorer.js +204 -0
  19. package/cli/src/codegen/openapi/hook-config.js +66 -0
  20. package/cli/src/codegen/openapi/hook-generator.js +1057 -0
  21. package/cli/src/codegen/openapi/parser.js +279 -0
  22. package/cli/src/codegen/openapi/type-generator.js +339 -0
  23. package/dist/atoms/components/core/Avatar/Avatar.d.ts +41 -0
  24. package/dist/atoms/components/core/Avatar/Avatar.d.ts.map +1 -0
  25. package/dist/atoms/components/core/Avatar/index.d.ts +2 -0
  26. package/dist/atoms/components/core/Avatar/index.d.ts.map +1 -0
  27. package/dist/atoms/components/core/Badge/Badge.d.ts +38 -0
  28. package/dist/atoms/components/core/Badge/Badge.d.ts.map +1 -0
  29. package/dist/atoms/components/core/Badge/index.d.ts +2 -0
  30. package/dist/atoms/components/core/Badge/index.d.ts.map +1 -0
  31. package/dist/atoms/components/core/Button/Button.d.ts +28 -0
  32. package/dist/atoms/components/core/Button/Button.d.ts.map +1 -0
  33. package/dist/atoms/components/core/Button/index.d.ts +3 -0
  34. package/dist/atoms/components/core/Button/index.d.ts.map +1 -0
  35. package/dist/atoms/components/core/Card/Card.d.ts +41 -0
  36. package/dist/atoms/components/core/Card/Card.d.ts.map +1 -0
  37. package/dist/atoms/components/core/Card/index.d.ts +3 -0
  38. package/dist/atoms/components/core/Card/index.d.ts.map +1 -0
  39. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts +28 -0
  40. package/dist/atoms/components/core/Checkbox/Checkbox.d.ts.map +1 -0
  41. package/dist/atoms/components/core/Checkbox/index.d.ts +3 -0
  42. package/dist/atoms/components/core/Checkbox/index.d.ts.map +1 -0
  43. package/dist/atoms/components/core/Input/Input.d.ts +37 -0
  44. package/dist/atoms/components/core/Input/Input.d.ts.map +1 -0
  45. package/dist/atoms/components/core/Input/index.d.ts +3 -0
  46. package/dist/atoms/components/core/Input/index.d.ts.map +1 -0
  47. package/dist/atoms/components/core/Label/Label.d.ts +23 -0
  48. package/dist/atoms/components/core/Label/Label.d.ts.map +1 -0
  49. package/dist/atoms/components/core/Label/index.d.ts +3 -0
  50. package/dist/atoms/components/core/Label/index.d.ts.map +1 -0
  51. package/dist/atoms/components/core/Select/Select.d.ts +42 -0
  52. package/dist/atoms/components/core/Select/Select.d.ts.map +1 -0
  53. package/dist/atoms/components/core/Select/index.d.ts +3 -0
  54. package/dist/atoms/components/core/Select/index.d.ts.map +1 -0
  55. package/dist/atoms/components/core/Spinner/Spinner.d.ts +25 -0
  56. package/dist/atoms/components/core/Spinner/Spinner.d.ts.map +1 -0
  57. package/dist/atoms/components/core/Spinner/index.d.ts +3 -0
  58. package/dist/atoms/components/core/Spinner/index.d.ts.map +1 -0
  59. package/dist/atoms/components/core/Switch/Switch.d.ts +35 -0
  60. package/dist/atoms/components/core/Switch/Switch.d.ts.map +1 -0
  61. package/dist/atoms/components/core/Switch/index.d.ts +2 -0
  62. package/dist/atoms/components/core/Switch/index.d.ts.map +1 -0
  63. package/dist/atoms/components/core/index.d.ts +11 -0
  64. package/dist/atoms/components/core/index.d.ts.map +1 -0
  65. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts +4 -0
  66. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.d.ts.map +1 -0
  67. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts +38 -0
  68. package/dist/atoms/components/data/ActivityFeed/ActivityFeed.stories.d.ts.map +1 -0
  69. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts +9 -0
  70. package/dist/atoms/components/data/ActivityFeed/ActivityFeedItem.d.ts.map +1 -0
  71. package/dist/atoms/components/data/ActivityFeed/index.d.ts +4 -0
  72. package/dist/atoms/components/data/ActivityFeed/index.d.ts.map +1 -0
  73. package/dist/atoms/components/data/ActivityFeed/types.d.ts +26 -0
  74. package/dist/atoms/components/data/ActivityFeed/types.d.ts.map +1 -0
  75. package/dist/atoms/components/data/ActivityFeed/utils.d.ts +5 -0
  76. package/dist/atoms/components/data/ActivityFeed/utils.d.ts.map +1 -0
  77. package/dist/atoms/{composed → components/data}/Chart/Chart.d.ts +2 -2
  78. package/dist/atoms/components/data/Chart/Chart.d.ts.map +1 -0
  79. package/dist/atoms/components/data/Chart/index.d.ts.map +1 -0
  80. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts +18 -0
  81. package/dist/atoms/components/data/DataBadge/DataBadge.d.ts.map +1 -0
  82. package/dist/atoms/components/data/DataBadge/index.d.ts.map +1 -0
  83. package/dist/atoms/components/data/DataTable/DataTable.d.ts +5 -0
  84. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -0
  85. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +51 -0
  86. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -0
  87. package/dist/atoms/components/data/DataTable/TableCellWithTooltip.d.ts.map +1 -0
  88. package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -0
  89. package/dist/atoms/components/data/DetailedCard/DetailedCard.d.ts.map +1 -0
  90. package/dist/atoms/components/data/DetailedCard/index.d.ts.map +1 -0
  91. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts +24 -0
  92. package/dist/atoms/components/data/EntityIcon/EntityIcon.d.ts.map +1 -0
  93. package/dist/atoms/components/data/EntityIcon/index.d.ts +2 -0
  94. package/dist/atoms/components/data/EntityIcon/index.d.ts.map +1 -0
  95. package/dist/atoms/{composed → components/data}/IconBadge/IconBadge.d.ts +2 -1
  96. package/dist/atoms/components/data/IconBadge/IconBadge.d.ts.map +1 -0
  97. package/dist/atoms/components/data/IconBadge/index.d.ts.map +1 -0
  98. package/dist/atoms/components/data/ListCard/ListCard.d.ts +32 -0
  99. package/dist/atoms/components/data/ListCard/ListCard.d.ts.map +1 -0
  100. package/dist/atoms/components/data/ListCard/index.d.ts +2 -0
  101. package/dist/atoms/components/data/ListCard/index.d.ts.map +1 -0
  102. package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -0
  103. package/dist/atoms/components/data/ProgressBar/index.d.ts.map +1 -0
  104. package/dist/atoms/{composed → components/data}/StatCard/StatCard.d.ts +1 -1
  105. package/dist/atoms/components/data/StatCard/StatCard.d.ts.map +1 -0
  106. package/dist/atoms/components/data/StatCard/index.d.ts.map +1 -0
  107. package/dist/atoms/components/data/Table/Table.d.ts +41 -0
  108. package/dist/atoms/components/data/Table/Table.d.ts.map +1 -0
  109. package/dist/atoms/components/data/Table/index.d.ts +2 -0
  110. package/dist/atoms/components/data/Table/index.d.ts.map +1 -0
  111. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts +26 -0
  112. package/dist/atoms/components/data/TruncatedText/TruncatedText.d.ts.map +1 -0
  113. package/dist/atoms/components/data/TruncatedText/index.d.ts +2 -0
  114. package/dist/atoms/components/data/TruncatedText/index.d.ts.map +1 -0
  115. package/dist/atoms/components/data/index.d.ts +13 -0
  116. package/dist/atoms/components/data/index.d.ts.map +1 -0
  117. package/dist/atoms/components/domain/SalesPanel/SalesPanel.d.ts.map +1 -0
  118. package/dist/atoms/components/domain/SalesPanel/index.d.ts.map +1 -0
  119. package/dist/atoms/components/domain/SalesPanel/mockSalesData.d.ts.map +1 -0
  120. package/dist/atoms/components/domain/index.d.ts +2 -0
  121. package/dist/atoms/components/domain/index.d.ts.map +1 -0
  122. package/dist/atoms/components/feedback/Alert/Alert.d.ts.map +1 -0
  123. package/dist/atoms/components/feedback/Alert/index.d.ts.map +1 -0
  124. package/dist/atoms/components/feedback/EmptyState/EmptyState.d.ts.map +1 -0
  125. package/dist/atoms/components/feedback/EmptyState/index.d.ts.map +1 -0
  126. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts +61 -0
  127. package/dist/atoms/components/feedback/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  128. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts +2 -0
  129. package/dist/atoms/components/feedback/ErrorBoundary/index.d.ts.map +1 -0
  130. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts +41 -0
  131. package/dist/atoms/components/feedback/Skeleton/Skeleton.d.ts.map +1 -0
  132. package/dist/atoms/components/feedback/Skeleton/index.d.ts +2 -0
  133. package/dist/atoms/components/feedback/Skeleton/index.d.ts.map +1 -0
  134. package/dist/atoms/components/feedback/Toast/Toast.d.ts.map +1 -0
  135. package/dist/atoms/components/feedback/Toast/index.d.ts.map +1 -0
  136. package/dist/atoms/components/feedback/index.d.ts +6 -0
  137. package/dist/atoms/components/feedback/index.d.ts.map +1 -0
  138. package/dist/atoms/components/forms/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  139. package/dist/atoms/components/forms/DateTimePicker/index.d.ts.map +1 -0
  140. package/dist/atoms/components/forms/FileUpload/FileUpload.d.ts.map +1 -0
  141. package/dist/atoms/components/forms/FileUpload/index.d.ts.map +1 -0
  142. package/dist/atoms/components/forms/FormField/FormField.d.ts.map +1 -0
  143. package/dist/atoms/components/forms/FormField/index.d.ts.map +1 -0
  144. package/dist/atoms/components/forms/index.d.ts +4 -0
  145. package/dist/atoms/components/forms/index.d.ts.map +1 -0
  146. package/dist/atoms/components/index.d.ts +10 -0
  147. package/dist/atoms/components/index.d.ts.map +1 -0
  148. package/dist/atoms/components/layout/Accordion/Accordion.d.ts.map +1 -0
  149. package/dist/atoms/components/layout/Accordion/index.d.ts.map +1 -0
  150. package/dist/atoms/components/layout/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  151. package/dist/atoms/components/layout/Breadcrumb/index.d.ts.map +1 -0
  152. package/dist/atoms/components/layout/Dialog/index.d.ts +3 -0
  153. package/dist/atoms/components/layout/Dialog/index.d.ts.map +1 -0
  154. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts +40 -0
  155. package/dist/atoms/components/layout/Dropdown/Dropdown.d.ts.map +1 -0
  156. package/dist/atoms/components/layout/Dropdown/index.d.ts +3 -0
  157. package/dist/atoms/components/layout/Dropdown/index.d.ts.map +1 -0
  158. package/dist/atoms/components/layout/Modal/Modal.d.ts.map +1 -0
  159. package/dist/atoms/components/layout/Modal/index.d.ts.map +1 -0
  160. package/dist/atoms/components/layout/Tabs/index.d.ts +2 -0
  161. package/dist/atoms/components/layout/Tabs/index.d.ts.map +1 -0
  162. package/dist/atoms/components/layout/Tooltip/Tooltip.d.ts.map +1 -0
  163. package/dist/atoms/components/layout/Tooltip/index.d.ts +2 -0
  164. package/dist/atoms/components/layout/Tooltip/index.d.ts.map +1 -0
  165. package/dist/atoms/components/layout/index.d.ts +8 -0
  166. package/dist/atoms/components/layout/index.d.ts.map +1 -0
  167. package/dist/atoms/components/navigation/GlobalSearch/GlobalSearch.d.ts.map +1 -0
  168. package/dist/atoms/components/navigation/GlobalSearch/index.d.ts.map +1 -0
  169. package/dist/atoms/components/navigation/index.d.ts +2 -0
  170. package/dist/atoms/components/navigation/index.d.ts.map +1 -0
  171. package/dist/atoms/components/theme/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  172. package/dist/atoms/components/theme/ColorSwatch/index.d.ts.map +1 -0
  173. package/dist/atoms/components/theme/DarkModeToggle.d.ts.map +1 -0
  174. package/dist/atoms/components/theme/PaletteSwitcher.d.ts.map +1 -0
  175. package/dist/atoms/components/theme/StyleGuide.d.ts.map +1 -0
  176. package/dist/atoms/components/theme/index.d.ts +5 -0
  177. package/dist/atoms/components/theme/index.d.ts.map +1 -0
  178. package/dist/atoms/components/user/UserAvatar/UserAvatar.d.ts.map +1 -0
  179. package/dist/atoms/components/user/UserAvatar/index.d.ts.map +1 -0
  180. package/dist/atoms/components/user/UserMenu/UserMenu.d.ts.map +1 -0
  181. package/dist/atoms/components/user/UserMenu/index.d.ts.map +1 -0
  182. package/dist/atoms/components/user/index.d.ts +3 -0
  183. package/dist/atoms/components/user/index.d.ts.map +1 -0
  184. package/dist/atoms/config/responsive.d.ts +147 -0
  185. package/dist/atoms/config/responsive.d.ts.map +1 -0
  186. package/dist/atoms/hooks/index.d.ts +5 -0
  187. package/dist/atoms/hooks/index.d.ts.map +1 -0
  188. package/dist/atoms/hooks/use-toast.d.ts +16 -0
  189. package/dist/atoms/hooks/use-toast.d.ts.map +1 -0
  190. package/dist/atoms/hooks/useResponsive.d.ts +42 -0
  191. package/dist/atoms/hooks/useResponsive.d.ts.map +1 -0
  192. package/dist/atoms/index.d.ts +4 -5
  193. package/dist/atoms/index.d.ts.map +1 -1
  194. package/dist/atoms/primitives/Badge.d.ts.map +1 -0
  195. package/dist/atoms/{ui → primitives}/ErrorBoundary.d.ts +1 -1
  196. package/dist/atoms/primitives/ErrorBoundary.d.ts.map +1 -0
  197. package/dist/atoms/primitives/Select.d.ts.map +1 -0
  198. package/dist/atoms/primitives/Switch.d.ts.map +1 -0
  199. package/dist/atoms/primitives/Tabs.d.ts.map +1 -0
  200. package/dist/atoms/primitives/avatar.d.ts.map +1 -0
  201. package/dist/atoms/{ui → primitives}/button.d.ts +2 -2
  202. package/dist/atoms/primitives/button.d.ts.map +1 -0
  203. package/dist/atoms/primitives/card.d.ts.map +1 -0
  204. package/dist/atoms/primitives/checkbox.d.ts +12 -0
  205. package/dist/atoms/primitives/checkbox.d.ts.map +1 -0
  206. package/dist/atoms/primitives/dialog.d.ts +34 -0
  207. package/dist/atoms/primitives/dialog.d.ts.map +1 -0
  208. package/dist/atoms/primitives/dropdown-menu.d.ts.map +1 -0
  209. package/dist/atoms/{ui → primitives}/index.d.ts +2 -0
  210. package/dist/atoms/primitives/index.d.ts.map +1 -0
  211. package/dist/atoms/primitives/input.d.ts.map +1 -0
  212. package/dist/atoms/primitives/label.d.ts.map +1 -0
  213. package/dist/atoms/primitives/skeleton.d.ts.map +1 -0
  214. package/dist/atoms/primitives/spinner.d.ts.map +1 -0
  215. package/dist/atoms/primitives/table.d.ts.map +1 -0
  216. package/dist/atoms/shared/index.d.ts +1 -0
  217. package/dist/atoms/shared/index.d.ts.map +1 -1
  218. package/dist/atoms/types/index.d.ts +1 -0
  219. package/dist/atoms/types/index.d.ts.map +1 -1
  220. package/dist/atoms/types/navigation.d.ts +1 -1
  221. package/dist/atoms/types/navigation.d.ts.map +1 -1
  222. package/dist/atoms/types/ui-config.d.ts +50 -0
  223. package/dist/atoms/types/ui-config.d.ts.map +1 -0
  224. package/dist/atoms/utils/color-manager.d.ts +68 -0
  225. package/dist/atoms/utils/color-manager.d.ts.map +1 -0
  226. package/dist/atoms/utils/debounce.d.ts +6 -0
  227. package/dist/atoms/utils/debounce.d.ts.map +1 -0
  228. package/dist/atoms/utils/field-detection.d.ts +15 -0
  229. package/dist/atoms/utils/field-detection.d.ts.map +1 -0
  230. package/dist/atoms/utils/icon-resolver.d.ts +5 -1
  231. package/dist/atoms/utils/icon-resolver.d.ts.map +1 -1
  232. package/dist/atoms/utils/index.d.ts +5 -0
  233. package/dist/atoms/utils/index.d.ts.map +1 -0
  234. package/dist/atoms/utils/ui-mapping.d.ts +17 -0
  235. package/dist/atoms/utils/ui-mapping.d.ts.map +1 -0
  236. package/dist/atoms/utils/utils.d.ts +3 -0
  237. package/dist/atoms/utils/utils.d.ts.map +1 -1
  238. package/dist/codegen/index.d.ts +7 -0
  239. package/dist/codegen/index.d.ts.map +1 -0
  240. package/dist/codegen/openapi/bulk-hook-generator.d.ts +40 -0
  241. package/dist/codegen/openapi/bulk-hook-generator.d.ts.map +1 -0
  242. package/dist/codegen/openapi/bulk-types.d.ts +142 -0
  243. package/dist/codegen/openapi/bulk-types.d.ts.map +1 -0
  244. package/dist/codegen/openapi/client-generator.d.ts +52 -0
  245. package/dist/codegen/openapi/client-generator.d.ts.map +1 -0
  246. package/dist/codegen/openapi/confidence-scorer.d.ts +30 -0
  247. package/dist/codegen/openapi/confidence-scorer.d.ts.map +1 -0
  248. package/dist/codegen/openapi/hook-config.d.ts +50 -0
  249. package/dist/codegen/openapi/hook-config.d.ts.map +1 -0
  250. package/dist/codegen/openapi/hook-generator.d.ts +108 -0
  251. package/dist/codegen/openapi/hook-generator.d.ts.map +1 -0
  252. package/dist/codegen/openapi/index.d.ts +27 -0
  253. package/dist/codegen/openapi/index.d.ts.map +1 -0
  254. package/dist/codegen/openapi/parser.d.ts +107 -0
  255. package/dist/codegen/openapi/parser.d.ts.map +1 -0
  256. package/dist/codegen/openapi/type-generator.d.ts +53 -0
  257. package/dist/codegen/openapi/type-generator.d.ts.map +1 -0
  258. package/dist/features/auth/components/LoginForm.d.ts.map +1 -1
  259. package/dist/features/auth/components/ProtectedRoute.d.ts +1 -1
  260. package/dist/features/auth/hooks/index.d.ts +1 -0
  261. package/dist/features/auth/hooks/index.d.ts.map +1 -1
  262. package/dist/features/auth/hooks/useAuthContext.d.ts +7 -0
  263. package/dist/features/auth/hooks/useAuthContext.d.ts.map +1 -0
  264. package/dist/features/auth/index.d.ts +1 -0
  265. package/dist/features/auth/index.d.ts.map +1 -1
  266. package/dist/features/auth/providers/MockAuthProvider.d.ts +9 -0
  267. package/dist/features/auth/providers/MockAuthProvider.d.ts.map +1 -0
  268. package/dist/features/auth/providers/index.d.ts +2 -0
  269. package/dist/features/auth/providers/index.d.ts.map +1 -0
  270. package/dist/features/auth/services/mock-auth-service.d.ts +17 -0
  271. package/dist/features/auth/services/mock-auth-service.d.ts.map +1 -0
  272. package/dist/frontend-patterns.css +4417 -1
  273. package/dist/generated/client/client.d.ts +23 -0
  274. package/dist/generated/client/client.d.ts.map +1 -0
  275. package/dist/generated/client/config.d.ts +10 -0
  276. package/dist/generated/client/config.d.ts.map +1 -0
  277. package/dist/generated/client/index.d.ts +12 -0
  278. package/dist/generated/client/index.d.ts.map +1 -0
  279. package/dist/generated/client/methods.d.ts +591 -0
  280. package/dist/generated/client/methods.d.ts.map +1 -0
  281. package/dist/generated/client/types.d.ts +37 -0
  282. package/dist/generated/client/types.d.ts.map +1 -0
  283. package/dist/generated/example.d.ts +8 -0
  284. package/dist/generated/example.d.ts.map +1 -0
  285. package/dist/generated/hooks/index.d.ts +11 -0
  286. package/dist/generated/hooks/index.d.ts.map +1 -0
  287. package/dist/generated/hooks/keys.d.ts +59 -0
  288. package/dist/generated/hooks/keys.d.ts.map +1 -0
  289. package/dist/generated/hooks/mutations.d.ts +551 -0
  290. package/dist/generated/hooks/mutations.d.ts.map +1 -0
  291. package/dist/generated/hooks/queries.d.ts +426 -0
  292. package/dist/generated/hooks/queries.d.ts.map +1 -0
  293. package/dist/generated/hooks/types.d.ts +318 -0
  294. package/dist/generated/hooks/types.d.ts.map +1 -0
  295. package/dist/generated/index.d.ts +13 -0
  296. package/dist/generated/index.d.ts.map +1 -0
  297. package/dist/generated/types/endpoints.d.ts +1364 -0
  298. package/dist/generated/types/endpoints.d.ts.map +1 -0
  299. package/dist/generated/types/index.d.ts +11 -0
  300. package/dist/generated/types/index.d.ts.map +1 -0
  301. package/dist/generated/types/parameters.d.ts +8 -0
  302. package/dist/generated/types/parameters.d.ts.map +1 -0
  303. package/dist/generated/types/responses.d.ts +8 -0
  304. package/dist/generated/types/responses.d.ts.map +1 -0
  305. package/dist/generated/types/schemas.d.ts +652 -0
  306. package/dist/generated/types/schemas.d.ts.map +1 -0
  307. package/dist/index.d.ts +8 -0
  308. package/dist/index.d.ts.map +1 -1
  309. package/dist/index.es.js +27049 -8420
  310. package/dist/index.es.js.map +1 -1
  311. package/dist/index.js +25314 -6664
  312. package/dist/index.js.map +1 -1
  313. package/dist/molecules/feedback/index.d.ts +2 -0
  314. package/dist/molecules/feedback/index.d.ts.map +1 -0
  315. package/dist/molecules/forms/SearchInput.d.ts.map +1 -1
  316. package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
  317. package/dist/molecules/layout/BulkSelectionBar.d.ts +15 -0
  318. package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -0
  319. package/dist/molecules/layout/NavigationContext.d.ts.map +1 -1
  320. package/dist/molecules/layout/index.d.ts +1 -0
  321. package/dist/molecules/layout/index.d.ts.map +1 -1
  322. package/dist/organisms/showcase/ComponentShowcasePage.d.ts.map +1 -1
  323. package/dist/templates/DataTemplate.d.ts +1 -1
  324. package/dist/templates/DataTemplate.d.ts.map +1 -1
  325. package/dist/templates/EnhancedDataTemplate.d.ts +188 -0
  326. package/dist/templates/EnhancedDataTemplate.d.ts.map +1 -0
  327. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts +18 -0
  328. package/dist/templates/EnhancedDataTemplate.hooks.bulk.d.ts.map +1 -0
  329. package/dist/templates/EnhancedDataTemplate.hooks.d.ts +22 -0
  330. package/dist/templates/EnhancedDataTemplate.hooks.d.ts.map +1 -0
  331. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
  332. package/dist/templates/admin/AdminDashboardTemplate.d.ts +6 -9
  333. package/dist/templates/admin/AdminDashboardTemplate.d.ts.map +1 -1
  334. package/dist/templates/admin/AdminDetailTemplate.d.ts +1 -1
  335. package/dist/templates/admin/AdminDetailTemplate.d.ts.map +1 -1
  336. package/dist/templates/api/APIDataTemplate.d.ts +66 -0
  337. package/dist/templates/api/APIDataTemplate.d.ts.map +1 -0
  338. package/dist/templates/api/index.d.ts +8 -0
  339. package/dist/templates/api/index.d.ts.map +1 -0
  340. package/dist/templates/index.d.ts +2 -0
  341. package/dist/templates/index.d.ts.map +1 -1
  342. package/package.json +29 -8
  343. package/dist/atoms/composed/Accordion/Accordion.d.ts.map +0 -1
  344. package/dist/atoms/composed/Accordion/index.d.ts.map +0 -1
  345. package/dist/atoms/composed/Alert/Alert.d.ts.map +0 -1
  346. package/dist/atoms/composed/Alert/index.d.ts.map +0 -1
  347. package/dist/atoms/composed/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  348. package/dist/atoms/composed/Breadcrumb/index.d.ts.map +0 -1
  349. package/dist/atoms/composed/Chart/Chart.d.ts.map +0 -1
  350. package/dist/atoms/composed/Chart/index.d.ts.map +0 -1
  351. package/dist/atoms/composed/ColorSwatch/ColorSwatch.d.ts.map +0 -1
  352. package/dist/atoms/composed/ColorSwatch/index.d.ts.map +0 -1
  353. package/dist/atoms/composed/DarkModeToggle.d.ts.map +0 -1
  354. package/dist/atoms/composed/DataBadge/DataBadge.d.ts +0 -13
  355. package/dist/atoms/composed/DataBadge/DataBadge.d.ts.map +0 -1
  356. package/dist/atoms/composed/DataBadge/index.d.ts.map +0 -1
  357. package/dist/atoms/composed/DataTable/DataTable.d.ts +0 -28
  358. package/dist/atoms/composed/DataTable/DataTable.d.ts.map +0 -1
  359. package/dist/atoms/composed/DataTable/TableCellWithTooltip.d.ts.map +0 -1
  360. package/dist/atoms/composed/DataTable/index.d.ts.map +0 -1
  361. package/dist/atoms/composed/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  362. package/dist/atoms/composed/DateTimePicker/index.d.ts.map +0 -1
  363. package/dist/atoms/composed/DetailedCard/DetailedCard.d.ts.map +0 -1
  364. package/dist/atoms/composed/DetailedCard/index.d.ts.map +0 -1
  365. package/dist/atoms/composed/EmptyState/EmptyState.d.ts.map +0 -1
  366. package/dist/atoms/composed/EmptyState/index.d.ts.map +0 -1
  367. package/dist/atoms/composed/FileUpload/FileUpload.d.ts.map +0 -1
  368. package/dist/atoms/composed/FileUpload/index.d.ts.map +0 -1
  369. package/dist/atoms/composed/FormField/FormField.d.ts.map +0 -1
  370. package/dist/atoms/composed/FormField/index.d.ts.map +0 -1
  371. package/dist/atoms/composed/GlobalSearch/GlobalSearch.d.ts.map +0 -1
  372. package/dist/atoms/composed/GlobalSearch/index.d.ts.map +0 -1
  373. package/dist/atoms/composed/IconBadge/IconBadge.d.ts.map +0 -1
  374. package/dist/atoms/composed/IconBadge/index.d.ts.map +0 -1
  375. package/dist/atoms/composed/Modal/Modal.d.ts.map +0 -1
  376. package/dist/atoms/composed/Modal/index.d.ts.map +0 -1
  377. package/dist/atoms/composed/PaletteSwitcher.d.ts.map +0 -1
  378. package/dist/atoms/composed/ProgressBar/ProgressBar.d.ts.map +0 -1
  379. package/dist/atoms/composed/ProgressBar/index.d.ts.map +0 -1
  380. package/dist/atoms/composed/SalesPanel/SalesPanel.d.ts.map +0 -1
  381. package/dist/atoms/composed/SalesPanel/index.d.ts.map +0 -1
  382. package/dist/atoms/composed/SalesPanel/mockSalesData.d.ts.map +0 -1
  383. package/dist/atoms/composed/StatCard/StatCard.d.ts.map +0 -1
  384. package/dist/atoms/composed/StatCard/index.d.ts.map +0 -1
  385. package/dist/atoms/composed/StyleGuide.d.ts.map +0 -1
  386. package/dist/atoms/composed/Toast/Toast.d.ts.map +0 -1
  387. package/dist/atoms/composed/Toast/index.d.ts.map +0 -1
  388. package/dist/atoms/composed/Tooltip/Tooltip.d.ts.map +0 -1
  389. package/dist/atoms/composed/Tooltip/index.d.ts +0 -2
  390. package/dist/atoms/composed/Tooltip/index.d.ts.map +0 -1
  391. package/dist/atoms/composed/UserAvatar/UserAvatar.d.ts.map +0 -1
  392. package/dist/atoms/composed/UserAvatar/index.d.ts.map +0 -1
  393. package/dist/atoms/composed/UserMenu/UserMenu.d.ts.map +0 -1
  394. package/dist/atoms/composed/UserMenu/index.d.ts.map +0 -1
  395. package/dist/atoms/composed/index.d.ts +0 -26
  396. package/dist/atoms/composed/index.d.ts.map +0 -1
  397. package/dist/atoms/ui/Badge.d.ts.map +0 -1
  398. package/dist/atoms/ui/ErrorBoundary.d.ts.map +0 -1
  399. package/dist/atoms/ui/Select.d.ts.map +0 -1
  400. package/dist/atoms/ui/Switch.d.ts.map +0 -1
  401. package/dist/atoms/ui/Tabs.d.ts.map +0 -1
  402. package/dist/atoms/ui/avatar.d.ts.map +0 -1
  403. package/dist/atoms/ui/button.d.ts.map +0 -1
  404. package/dist/atoms/ui/card.d.ts.map +0 -1
  405. package/dist/atoms/ui/dropdown-menu.d.ts.map +0 -1
  406. package/dist/atoms/ui/index.d.ts.map +0 -1
  407. package/dist/atoms/ui/input.d.ts.map +0 -1
  408. package/dist/atoms/ui/label.d.ts.map +0 -1
  409. package/dist/atoms/ui/skeleton.d.ts.map +0 -1
  410. package/dist/atoms/ui/spinner.d.ts.map +0 -1
  411. package/dist/atoms/ui/table.d.ts.map +0 -1
  412. package/src/App.css +0 -42
  413. package/src/App.tsx +0 -64
  414. package/src/__tests__/README.md +0 -221
  415. package/src/__tests__/atoms/composed/databadge.test.tsx +0 -106
  416. package/src/__tests__/atoms/composed/statcard.test.tsx +0 -133
  417. package/src/__tests__/atoms/hooks/simple-hooks.test.ts +0 -44
  418. package/src/__tests__/atoms/ui/button.test.tsx +0 -68
  419. package/src/__tests__/atoms/utils/icon-resolver.test.tsx +0 -140
  420. package/src/__tests__/atoms/utils/simple.test.ts +0 -18
  421. package/src/__tests__/atoms/utils/utils.test.ts +0 -77
  422. package/src/__tests__/features/auth/simple-auth.test.tsx +0 -40
  423. package/src/__tests__/molecules/layout/simple-layout.test.tsx +0 -81
  424. package/src/__tests__/organisms/showcase/simple-showcase.test.tsx +0 -167
  425. package/src/__tests__/setup.ts +0 -51
  426. package/src/__tests__/utils.tsx +0 -123
  427. package/src/atoms/composed/Accordion/Accordion.tsx +0 -271
  428. package/src/atoms/composed/Accordion/index.ts +0 -1
  429. package/src/atoms/composed/Alert/Alert.tsx +0 -132
  430. package/src/atoms/composed/Alert/index.ts +0 -1
  431. package/src/atoms/composed/Breadcrumb/Breadcrumb.tsx +0 -83
  432. package/src/atoms/composed/Breadcrumb/index.ts +0 -1
  433. package/src/atoms/composed/Chart/Chart.tsx +0 -425
  434. package/src/atoms/composed/Chart/index.ts +0 -2
  435. package/src/atoms/composed/ColorSwatch/ColorSwatch.tsx +0 -72
  436. package/src/atoms/composed/ColorSwatch/index.ts +0 -1
  437. package/src/atoms/composed/DarkModeToggle.tsx +0 -66
  438. package/src/atoms/composed/DataBadge/DataBadge.tsx +0 -81
  439. package/src/atoms/composed/DataBadge/index.ts +0 -1
  440. package/src/atoms/composed/DataTable/DataTable.tsx +0 -394
  441. package/src/atoms/composed/DataTable/TableCellWithTooltip.tsx +0 -41
  442. package/src/atoms/composed/DataTable/index.ts +0 -2
  443. package/src/atoms/composed/DateTimePicker/DateTimePicker.tsx +0 -611
  444. package/src/atoms/composed/DateTimePicker/index.ts +0 -2
  445. package/src/atoms/composed/DetailedCard/DetailedCard.tsx +0 -181
  446. package/src/atoms/composed/DetailedCard/index.ts +0 -2
  447. package/src/atoms/composed/EmptyState/EmptyState.tsx +0 -90
  448. package/src/atoms/composed/EmptyState/index.ts +0 -1
  449. package/src/atoms/composed/FileUpload/FileUpload.tsx +0 -477
  450. package/src/atoms/composed/FileUpload/index.ts +0 -2
  451. package/src/atoms/composed/FormField/FormField.tsx +0 -92
  452. package/src/atoms/composed/FormField/index.ts +0 -1
  453. package/src/atoms/composed/GlobalSearch/GlobalSearch.tsx +0 -37
  454. package/src/atoms/composed/GlobalSearch/index.ts +0 -1
  455. package/src/atoms/composed/IconBadge/IconBadge.tsx +0 -95
  456. package/src/atoms/composed/IconBadge/index.ts +0 -2
  457. package/src/atoms/composed/Modal/Modal.tsx +0 -223
  458. package/src/atoms/composed/Modal/index.ts +0 -2
  459. package/src/atoms/composed/PaletteSwitcher.tsx +0 -386
  460. package/src/atoms/composed/ProgressBar/ProgressBar.tsx +0 -116
  461. package/src/atoms/composed/ProgressBar/index.ts +0 -1
  462. package/src/atoms/composed/SalesPanel/SalesPanel.tsx +0 -116
  463. package/src/atoms/composed/SalesPanel/index.ts +0 -1
  464. package/src/atoms/composed/SalesPanel/mockSalesData.ts +0 -151
  465. package/src/atoms/composed/StatCard/StatCard.tsx +0 -219
  466. package/src/atoms/composed/StatCard/index.ts +0 -1
  467. package/src/atoms/composed/StyleGuide.tsx +0 -717
  468. package/src/atoms/composed/Toast/Toast.tsx +0 -219
  469. package/src/atoms/composed/Toast/index.ts +0 -1
  470. package/src/atoms/composed/Tooltip/Tooltip.tsx +0 -213
  471. package/src/atoms/composed/Tooltip/index.ts +0 -1
  472. package/src/atoms/composed/UserAvatar/UserAvatar.tsx +0 -139
  473. package/src/atoms/composed/UserAvatar/index.ts +0 -1
  474. package/src/atoms/composed/UserMenu/UserMenu.tsx +0 -16
  475. package/src/atoms/composed/UserMenu/index.ts +0 -1
  476. package/src/atoms/composed/index.ts +0 -30
  477. package/src/atoms/hooks/useApi.ts +0 -80
  478. package/src/atoms/hooks/useHealth.ts +0 -17
  479. package/src/atoms/index.ts +0 -13
  480. package/src/atoms/services/api/client.ts +0 -134
  481. package/src/atoms/services/auth-service.ts +0 -248
  482. package/src/atoms/services/health.ts +0 -15
  483. package/src/atoms/services/index.ts +0 -3
  484. package/src/atoms/shared/config/constants.ts +0 -17
  485. package/src/atoms/shared/config/dashboard-sizes.ts +0 -111
  486. package/src/atoms/shared/config/environment.ts +0 -10
  487. package/src/atoms/shared/index.ts +0 -4
  488. package/src/atoms/shared/styles/color-palettes.css +0 -566
  489. package/src/atoms/types/auth.ts +0 -62
  490. package/src/atoms/types/entity-config.ts +0 -127
  491. package/src/atoms/types/generated.ts +0 -1469
  492. package/src/atoms/types/index.ts +0 -6
  493. package/src/atoms/types/loading.ts +0 -28
  494. package/src/atoms/types/navigation.ts +0 -43
  495. package/src/atoms/ui/Badge.tsx +0 -30
  496. package/src/atoms/ui/ErrorBoundary.tsx +0 -59
  497. package/src/atoms/ui/Select.tsx +0 -53
  498. package/src/atoms/ui/Switch.tsx +0 -42
  499. package/src/atoms/ui/Tabs.tsx +0 -118
  500. package/src/atoms/ui/avatar.tsx +0 -48
  501. package/src/atoms/ui/button.tsx +0 -70
  502. package/src/atoms/ui/card.tsx +0 -76
  503. package/src/atoms/ui/dropdown-menu.tsx +0 -199
  504. package/src/atoms/ui/index.ts +0 -39
  505. package/src/atoms/ui/input.tsx +0 -23
  506. package/src/atoms/ui/label.tsx +0 -23
  507. package/src/atoms/ui/skeleton.tsx +0 -13
  508. package/src/atoms/ui/spinner.tsx +0 -49
  509. package/src/atoms/ui/table.tsx +0 -116
  510. package/src/atoms/utils/animations.ts +0 -135
  511. package/src/atoms/utils/icon-resolver.tsx +0 -54
  512. package/src/atoms/utils/metric-engine.ts +0 -236
  513. package/src/atoms/utils/tooltip-helpers.ts +0 -140
  514. package/src/atoms/utils/utils.ts +0 -11
  515. package/src/features/auth/components/LoginForm.tsx +0 -168
  516. package/src/features/auth/components/LogoutButton.tsx +0 -19
  517. package/src/features/auth/components/ProtectedRoute.tsx +0 -60
  518. package/src/features/auth/components/index.ts +0 -4
  519. package/src/features/auth/hooks/index.ts +0 -2
  520. package/src/features/auth/hooks/useAuth.tsx +0 -205
  521. package/src/features/auth/hooks/usePermissions.ts +0 -35
  522. package/src/features/auth/index.ts +0 -2
  523. package/src/features/index.ts +0 -2
  524. package/src/index.css +0 -704
  525. package/src/index.ts +0 -13
  526. package/src/main.tsx +0 -48
  527. package/src/molecules/.gitkeep +0 -0
  528. package/src/molecules/forms/FormGroup.tsx +0 -75
  529. package/src/molecules/forms/SearchInput.tsx +0 -259
  530. package/src/molecules/forms/index.ts +0 -4
  531. package/src/molecules/index.ts +0 -4
  532. package/src/molecules/layout/AppHeader/AppHeader.tsx +0 -42
  533. package/src/molecules/layout/AppHeader/index.ts +0 -1
  534. package/src/molecules/layout/AppLayout.tsx +0 -29
  535. package/src/molecules/layout/DashboardWithSidePanel/DashboardWithSidePanel.tsx +0 -42
  536. package/src/molecules/layout/DashboardWithSidePanel/index.ts +0 -1
  537. package/src/molecules/layout/NavigationContext.tsx +0 -63
  538. package/src/molecules/layout/PageTemplate.tsx +0 -87
  539. package/src/molecules/layout/SectionHeader/SectionHeader.tsx +0 -87
  540. package/src/molecules/layout/SectionHeader/index.ts +0 -1
  541. package/src/molecules/layout/ShowcaseSection.tsx +0 -57
  542. package/src/molecules/layout/Sidebar.tsx +0 -131
  543. package/src/molecules/layout/SidebarButton/SidebarButton.tsx +0 -121
  544. package/src/molecules/layout/SidebarButton/index.ts +0 -1
  545. package/src/molecules/layout/SidebarContext.tsx +0 -31
  546. package/src/molecules/layout/index.ts +0 -10
  547. package/src/molecules/navigation/NavMenu.tsx +0 -188
  548. package/src/molecules/navigation/Pagination.tsx +0 -172
  549. package/src/molecules/navigation/index.ts +0 -4
  550. package/src/organisms/entity/CategoryBreakdownPanel.tsx +0 -427
  551. package/src/organisms/entity/EntityListPanel.tsx +0 -339
  552. package/src/organisms/entity/MetricsOverviewPanel.tsx +0 -236
  553. package/src/organisms/entity/TrendAnalysisPanel.tsx +0 -337
  554. package/src/organisms/entity/index.ts +0 -4
  555. package/src/organisms/index.ts +0 -9
  556. package/src/organisms/showcase/ComponentShowcasePage.tsx +0 -2496
  557. package/src/organisms/showcase/index.ts +0 -1
  558. package/src/pages/AdminShowcase/AdminCRUDShowcase.tsx +0 -242
  559. package/src/pages/AdminShowcase/AdminDashboardShowcase.tsx +0 -173
  560. package/src/pages/AdminShowcase/AdminDetailShowcase.tsx +0 -385
  561. package/src/pages/AdminShowcase/SalesPerformanceDashboard.tsx +0 -158
  562. package/src/pages/AdminShowcase/index.tsx +0 -4
  563. package/src/pages/ComponentShowcase/BadgesShowcase.tsx +0 -188
  564. package/src/pages/ComponentShowcase/CardsShowcase.tsx +0 -392
  565. package/src/pages/ComponentShowcase/PalettesShowcase.tsx +0 -207
  566. package/src/pages/ComponentShowcase/StatesShowcase.tsx +0 -485
  567. package/src/pages/ComponentShowcase/TablesShowcase.tsx +0 -134
  568. package/src/pages/ComponentShowcase/TypographyShowcase.tsx +0 -255
  569. package/src/pages/ComponentShowcase/index.tsx +0 -188
  570. package/src/pages/EntityShowcase/EntityManagementShowcase.tsx +0 -137
  571. package/src/pages/EntityShowcase/EntityPerformanceShowcase.tsx +0 -117
  572. package/src/pages/EntityShowcase/index.ts +0 -2
  573. package/src/pages/EntityTemplateExample.tsx +0 -229
  574. package/src/pages/TestEntityTemplate.tsx +0 -40
  575. package/src/pages/index.ts +0 -3
  576. package/src/templates/AuthTemplate.tsx +0 -216
  577. package/src/templates/ComponentShowcaseTemplate.tsx +0 -173
  578. package/src/templates/DashboardTemplate.tsx +0 -232
  579. package/src/templates/DataTemplate.tsx +0 -319
  580. package/src/templates/admin/AdminCRUDTemplate.tsx +0 -630
  581. package/src/templates/admin/AdminDashboardTemplate.tsx +0 -351
  582. package/src/templates/admin/AdminDetailTemplate.tsx +0 -563
  583. package/src/templates/admin/index.ts +0 -29
  584. package/src/templates/entity/EntityManagementTemplate.tsx +0 -430
  585. package/src/templates/entity/EntityPerformanceDashboardTemplate.tsx +0 -277
  586. package/src/templates/entity/configs/financial-config.ts +0 -141
  587. package/src/templates/entity/configs/index.ts +0 -1
  588. package/src/templates/entity/index.ts +0 -3
  589. package/src/templates/factory.tsx +0 -176
  590. package/src/templates/financial/FinancialDashboardTemplate.tsx +0 -326
  591. package/src/templates/index.ts +0 -41
  592. package/src/vite-env.d.ts +0 -1
  593. /package/dist/atoms/{composed → components/data}/Chart/index.d.ts +0 -0
  594. /package/dist/atoms/{composed → components/data}/DataBadge/index.d.ts +0 -0
  595. /package/dist/atoms/{composed → components/data}/DataTable/TableCellWithTooltip.d.ts +0 -0
  596. /package/dist/atoms/{composed → components/data}/DataTable/index.d.ts +0 -0
  597. /package/dist/atoms/{composed → components/data}/DetailedCard/DetailedCard.d.ts +0 -0
  598. /package/dist/atoms/{composed → components/data}/DetailedCard/index.d.ts +0 -0
  599. /package/dist/atoms/{composed → components/data}/IconBadge/index.d.ts +0 -0
  600. /package/dist/atoms/{composed → components/data}/ProgressBar/ProgressBar.d.ts +0 -0
  601. /package/dist/atoms/{composed → components/data}/ProgressBar/index.d.ts +0 -0
  602. /package/dist/atoms/{composed → components/data}/StatCard/index.d.ts +0 -0
  603. /package/dist/atoms/{composed → components/domain}/SalesPanel/SalesPanel.d.ts +0 -0
  604. /package/dist/atoms/{composed → components/domain}/SalesPanel/index.d.ts +0 -0
  605. /package/dist/atoms/{composed → components/domain}/SalesPanel/mockSalesData.d.ts +0 -0
  606. /package/dist/atoms/{composed → components/feedback}/Alert/Alert.d.ts +0 -0
  607. /package/dist/atoms/{composed → components/feedback}/Alert/index.d.ts +0 -0
  608. /package/dist/atoms/{composed → components/feedback}/EmptyState/EmptyState.d.ts +0 -0
  609. /package/dist/atoms/{composed → components/feedback}/EmptyState/index.d.ts +0 -0
  610. /package/dist/atoms/{composed → components/feedback}/Toast/Toast.d.ts +0 -0
  611. /package/dist/atoms/{composed → components/feedback}/Toast/index.d.ts +0 -0
  612. /package/dist/atoms/{composed → components/forms}/DateTimePicker/DateTimePicker.d.ts +0 -0
  613. /package/dist/atoms/{composed → components/forms}/DateTimePicker/index.d.ts +0 -0
  614. /package/dist/atoms/{composed → components/forms}/FileUpload/FileUpload.d.ts +0 -0
  615. /package/dist/atoms/{composed → components/forms}/FileUpload/index.d.ts +0 -0
  616. /package/dist/atoms/{composed → components/forms}/FormField/FormField.d.ts +0 -0
  617. /package/dist/atoms/{composed → components/forms}/FormField/index.d.ts +0 -0
  618. /package/dist/atoms/{composed → components/layout}/Accordion/Accordion.d.ts +0 -0
  619. /package/dist/atoms/{composed → components/layout}/Accordion/index.d.ts +0 -0
  620. /package/dist/atoms/{composed → components/layout}/Breadcrumb/Breadcrumb.d.ts +0 -0
  621. /package/dist/atoms/{composed → components/layout}/Breadcrumb/index.d.ts +0 -0
  622. /package/dist/atoms/{composed → components/layout}/Modal/Modal.d.ts +0 -0
  623. /package/dist/atoms/{composed → components/layout}/Modal/index.d.ts +0 -0
  624. /package/dist/atoms/{composed → components/layout}/Tooltip/Tooltip.d.ts +0 -0
  625. /package/dist/atoms/{composed → components/navigation}/GlobalSearch/GlobalSearch.d.ts +0 -0
  626. /package/dist/atoms/{composed → components/navigation}/GlobalSearch/index.d.ts +0 -0
  627. /package/dist/atoms/{composed → components/theme}/ColorSwatch/ColorSwatch.d.ts +0 -0
  628. /package/dist/atoms/{composed → components/theme}/ColorSwatch/index.d.ts +0 -0
  629. /package/dist/atoms/{composed → components/theme}/DarkModeToggle.d.ts +0 -0
  630. /package/dist/atoms/{composed → components/theme}/PaletteSwitcher.d.ts +0 -0
  631. /package/dist/atoms/{composed → components/theme}/StyleGuide.d.ts +0 -0
  632. /package/dist/atoms/{composed → components/user}/UserAvatar/UserAvatar.d.ts +0 -0
  633. /package/dist/atoms/{composed → components/user}/UserAvatar/index.d.ts +0 -0
  634. /package/dist/atoms/{composed → components/user}/UserMenu/UserMenu.d.ts +0 -0
  635. /package/dist/atoms/{composed → components/user}/UserMenu/index.d.ts +0 -0
  636. /package/dist/atoms/{ui → primitives}/Badge.d.ts +0 -0
  637. /package/dist/atoms/{ui → primitives}/Select.d.ts +0 -0
  638. /package/dist/atoms/{ui → primitives}/Switch.d.ts +0 -0
  639. /package/dist/atoms/{ui → primitives}/Tabs.d.ts +0 -0
  640. /package/dist/atoms/{ui → primitives}/avatar.d.ts +0 -0
  641. /package/dist/atoms/{ui → primitives}/card.d.ts +0 -0
  642. /package/dist/atoms/{ui → primitives}/dropdown-menu.d.ts +0 -0
  643. /package/dist/atoms/{ui → primitives}/input.d.ts +0 -0
  644. /package/dist/atoms/{ui → primitives}/label.d.ts +0 -0
  645. /package/dist/atoms/{ui → primitives}/skeleton.d.ts +0 -0
  646. /package/dist/atoms/{ui → primitives}/spinner.d.ts +0 -0
  647. /package/dist/atoms/{ui → primitives}/table.d.ts +0 -0
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
+ }