@pattern-stack/frontend-patterns 0.1.1 → 0.1.3

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