create-einja-app 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +75 -7
  2. package/dist/cli.js +863 -70
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +1 -1
  5. package/templates/default/.playwright-mcp/dashboard.png +0 -0
  6. package/templates/default/.playwright-mcp/web-home.png +0 -0
  7. package/templates/{turborepo-pandacss → default}/CLAUDE.md +32 -5
  8. package/templates/{turborepo-pandacss → default}/README.md +150 -45
  9. package/templates/default/apps/web/server/presentation/routes/userRoutes.ts +54 -0
  10. package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +211 -0
  11. package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTableContainer.tsx +50 -0
  12. package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/data/page.tsx +15 -8
  13. package/templates/default/apps/web/src/app/api/rpc/[[...route]]/route.ts +31 -0
  14. package/templates/default/apps/web/src/hooks/api/prefetch-users.ts +63 -0
  15. package/templates/default/apps/web/src/hooks/api/use-users.ts +83 -0
  16. package/templates/default/apps/web/src/lib/api/client.ts +18 -0
  17. package/templates/default/apps/web/src/lib/api/parse-response.ts +114 -0
  18. package/templates/default/apps/web/src/shared/schemas/user.ts +36 -0
  19. package/templates/{turborepo-pandacss → default}/apps/web/tsconfig.json +5 -0
  20. package/templates/{turborepo-pandacss → default}/package.json +7 -2
  21. package/templates/default/packages/server-core/src/domain/validators/user.ts +23 -0
  22. package/templates/{turborepo-pandacss → default}/pnpm-lock.yaml +21 -3
  23. package/templates/turborepo-pandacss/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +0 -203
  24. package/templates/turborepo-pandacss/middleware.ts +0 -32
  25. /package/templates/{turborepo-pandacss → default}/.biomeignore +0 -0
  26. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/biome-format.sh +0 -0
  27. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
  28. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
  29. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
  30. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
  31. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/typecheck.sh +0 -0
  32. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
  33. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
  34. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
  35. /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
  36. /package/templates/{turborepo-pandacss → default}/.claude/settings.json +0 -0
  37. /package/templates/{turborepo-pandacss → default}/.claude/skills/create-einja-app-release/SKILL.md +0 -0
  38. /package/templates/{turborepo-pandacss → default}/.claude/skills/dev-cli-release/SKILL.md +0 -0
  39. /package/templates/{turborepo-pandacss → default}/.cursor/commands/spec-create.md +0 -0
  40. /package/templates/{turborepo-pandacss → default}/.cursor/commands/start-dev.md +0 -0
  41. /package/templates/{turborepo-pandacss → default}/.cursor/commands/task-exec.md +0 -0
  42. /package/templates/{turborepo-pandacss → default}/.cursor/commands/task-vibe-kanban-loop.md +0 -0
  43. /package/templates/{turborepo-pandacss → default}/.cursor/commands/update-docs-by-task-specs.md +0 -0
  44. /package/templates/{turborepo-pandacss → default}/.cursor/mcp.json +0 -0
  45. /package/templates/{turborepo-pandacss → default}/.cursor/rules/api-rules.mdc +0 -0
  46. /package/templates/{turborepo-pandacss → default}/.cursor/rules/api-test-rules.mdc +0 -0
  47. /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-code.mdc +0 -0
  48. /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-commit-rules.mdc +0 -0
  49. /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-design.mdc +0 -0
  50. /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-rules.mdc +0 -0
  51. /package/templates/{turborepo-pandacss → default}/.cursor/rules/error-handling-rules.mdc +0 -0
  52. /package/templates/{turborepo-pandacss → default}/.cursor/rules/refactor-rules.mdc +0 -0
  53. /package/templates/{turborepo-pandacss → default}/.dockerignore +0 -0
  54. /package/templates/{turborepo-pandacss → default}/.einja-sync.json +0 -0
  55. /package/templates/{turborepo-pandacss → default}/.env.ci +0 -0
  56. /package/templates/{turborepo-pandacss → default}/.env.example +0 -0
  57. /package/templates/{turborepo-pandacss → default}/.env.personal.example +0 -0
  58. /package/templates/{turborepo-pandacss → default}/.envrc +0 -0
  59. /package/templates/{turborepo-pandacss → default}/.gitattributes +0 -0
  60. /package/templates/{turborepo-pandacss → default}/.husky/pre-commit +0 -0
  61. /package/templates/{turborepo-pandacss → default}/.lintstagedrc.js +0 -0
  62. /package/templates/{turborepo-pandacss → default}/.mcp.json +0 -0
  63. /package/templates/{turborepo-pandacss → default}/.node-version +0 -0
  64. /package/templates/{turborepo-pandacss → default}/.templateignore +0 -0
  65. /package/templates/{turborepo-pandacss → default}/.vscode/extensions.json +0 -0
  66. /package/templates/{turborepo-pandacss → default}/apps/web/middleware.ts +0 -0
  67. /package/templates/{turborepo-pandacss → default}/apps/web/next.config.ts +0 -0
  68. /package/templates/{turborepo-pandacss → default}/apps/web/package.json +0 -0
  69. /package/templates/{turborepo-pandacss → default}/apps/web/panda.config.ts +0 -0
  70. /package/templates/{turborepo-pandacss → default}/apps/web/postcss.config.cjs +0 -0
  71. /package/templates/{turborepo-pandacss → default}/apps/web/public/file.svg +0 -0
  72. /package/templates/{turborepo-pandacss → default}/apps/web/public/globe.svg +0 -0
  73. /package/templates/{turborepo-pandacss → default}/apps/web/public/next.svg +0 -0
  74. /package/templates/{turborepo-pandacss → default}/apps/web/public/vercel.svg +0 -0
  75. /package/templates/{turborepo-pandacss → default}/apps/web/public/window.svg +0 -0
  76. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/dashboard/page.tsx +0 -0
  77. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout-client.tsx +0 -0
  78. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout.tsx +0 -0
  79. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/profile/page.tsx +0 -0
  80. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/api/auth/[...nextauth]/route.ts +0 -0
  81. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/api/auth/signup/route.ts +0 -0
  82. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/error.tsx +0 -0
  83. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/favicon.ico +0 -0
  84. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/global-error.tsx +0 -0
  85. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/globals.css +0 -0
  86. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/layout.tsx +0 -0
  87. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/not-found.tsx +0 -0
  88. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.module.css +0 -0
  89. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.test.tsx +0 -0
  90. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.tsx +0 -0
  91. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/signin/page.tsx +0 -0
  92. /package/templates/{turborepo-pandacss → default}/apps/web/src/app/signup/page.tsx +0 -0
  93. /package/templates/{turborepo-pandacss → default}/apps/web/src/application/use-cases/UserUseCases.test.ts +0 -0
  94. /package/templates/{turborepo-pandacss → default}/apps/web/src/application/use-cases/UserUseCases.ts +0 -0
  95. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/login-button.tsx +0 -0
  96. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/logout-button.tsx +0 -0
  97. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.test.tsx +0 -0
  98. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.tsx +0 -0
  99. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/dashboard/dashboard-stats.tsx +0 -0
  100. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/providers/query-provider.tsx +0 -0
  101. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/providers/session-provider.tsx +0 -0
  102. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/shared/Sidebar.tsx +0 -0
  103. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/shared/header.tsx +0 -0
  104. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/accordion.tsx +0 -0
  105. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/alert-dialog.tsx +0 -0
  106. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/alert.tsx +0 -0
  107. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/aspect-ratio.tsx +0 -0
  108. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/avatar.tsx +0 -0
  109. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/badge.tsx +0 -0
  110. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/breadcrumb.tsx +0 -0
  111. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/button.tsx +0 -0
  112. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/card.tsx +0 -0
  113. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/checkbox.tsx +0 -0
  114. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/data-table.tsx +0 -0
  115. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dialog-hook.tsx +0 -0
  116. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dialog.tsx +0 -0
  117. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/drawer.tsx +0 -0
  118. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dropdown-menu.tsx +0 -0
  119. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/form.tsx +0 -0
  120. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/hover-card.tsx +0 -0
  121. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/input.tsx +0 -0
  122. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/label.tsx +0 -0
  123. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/pagination.tsx +0 -0
  124. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/popover.tsx +0 -0
  125. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/progress.tsx +0 -0
  126. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/select.tsx +0 -0
  127. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/separator.tsx +0 -0
  128. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/skeleton.tsx +0 -0
  129. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/sonner.tsx +0 -0
  130. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/table.tsx +0 -0
  131. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/tabs.tsx +0 -0
  132. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/textarea.tsx +0 -0
  133. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/tooltip.tsx +0 -0
  134. /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/typography.tsx +0 -0
  135. /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/auth/guard.ts +0 -0
  136. /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/auth/index.ts +0 -0
  137. /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/prisma.ts +0 -0
  138. /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/utils.ts +0 -0
  139. /package/templates/{turborepo-pandacss → default}/apps/web/test/globals.d.ts +0 -0
  140. /package/templates/{turborepo-pandacss → default}/apps/web/test/matchers.d.ts +0 -0
  141. /package/templates/{turborepo-pandacss → default}/apps/web/test/setup.ts +0 -0
  142. /package/templates/{turborepo-pandacss → default}/apps/web/vitest.config.ts +0 -0
  143. /package/templates/{turborepo-pandacss → default}/apps/web/vitest.d.ts +0 -0
  144. /package/templates/{turborepo-pandacss → default}/biome.json +0 -0
  145. /package/templates/{turborepo-pandacss → default}/components.json +0 -0
  146. /package/templates/{turborepo-pandacss → default}/docker-compose.yml +0 -0
  147. /package/templates/{turborepo-pandacss → default}/next.config.ts +0 -0
  148. /package/templates/{turborepo-pandacss → default}/package-lock.json +0 -0
  149. /package/templates/{turborepo-pandacss → default}/packages/config/package.json +0 -0
  150. /package/templates/{turborepo-pandacss → default}/packages/config/panda.config.ts +0 -0
  151. /package/templates/{turborepo-pandacss → default}/packages/config/src/index.ts +0 -0
  152. /package/templates/{turborepo-pandacss → default}/packages/config/src/worktree-config-loader.ts +0 -0
  153. /package/templates/{turborepo-pandacss → default}/packages/config/src/worktree-config.ts +0 -0
  154. /package/templates/{turborepo-pandacss → default}/packages/config/tsconfig.build.json +0 -0
  155. /package/templates/{turborepo-pandacss → default}/packages/config/tsconfig.json +0 -0
  156. /package/templates/{turborepo-pandacss → default}/packages/config/typescript/base.json +0 -0
  157. /package/templates/{turborepo-pandacss → default}/packages/front-core/package.json +0 -0
  158. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/config.ts +0 -0
  159. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/index.ts +0 -0
  160. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/types/next-auth.d.ts +0 -0
  161. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/utils.ts +0 -0
  162. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/context/index.ts +0 -0
  163. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/hooks/index.ts +0 -0
  164. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/index.ts +0 -0
  165. /package/templates/{turborepo-pandacss → default}/packages/front-core/src/utils/index.ts +0 -0
  166. /package/templates/{turborepo-pandacss → default}/packages/front-core/tsconfig.json +0 -0
  167. /package/templates/{turborepo-pandacss → default}/packages/server-core/package.json +0 -0
  168. /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma/schema.prisma +0 -0
  169. /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma/seed.ts +0 -0
  170. /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma.config.ts +0 -0
  171. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/__generated__/fabbrica/index.d.ts +0 -0
  172. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/__generated__/fabbrica/index.js +0 -0
  173. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/core/result.test.ts +0 -0
  174. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/core/result.ts +0 -0
  175. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/.gitkeep +0 -0
  176. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/entities/User.test.ts +0 -0
  177. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/entities/User.ts +0 -0
  178. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/repository-interfaces/IUserRepository.ts +0 -0
  179. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/client.ts +0 -0
  180. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/mappers/UserMapper.test.ts +0 -0
  181. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/mappers/UserMapper.ts +0 -0
  182. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/repositories/UserRepository.test.ts +0 -0
  183. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/repositories/UserRepository.ts +0 -0
  184. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/factories/index.ts +0 -0
  185. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/factories/user.factory.ts +0 -0
  186. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/fixtures/users.ts +0 -0
  187. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/helpers/date.ts +0 -0
  188. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/helpers/password.ts +0 -0
  189. /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/index.ts +0 -0
  190. /package/templates/{turborepo-pandacss → default}/packages/server-core/tsconfig.json +0 -0
  191. /package/templates/{turborepo-pandacss → default}/packages/server-core/vitest.config.ts +0 -0
  192. /package/templates/{turborepo-pandacss → default}/packages/ui/package.json +0 -0
  193. /package/templates/{turborepo-pandacss → default}/packages/ui/src/accordion.tsx +0 -0
  194. /package/templates/{turborepo-pandacss → default}/packages/ui/src/alert-dialog.tsx +0 -0
  195. /package/templates/{turborepo-pandacss → default}/packages/ui/src/alert.tsx +0 -0
  196. /package/templates/{turborepo-pandacss → default}/packages/ui/src/aspect-ratio.tsx +0 -0
  197. /package/templates/{turborepo-pandacss → default}/packages/ui/src/avatar.tsx +0 -0
  198. /package/templates/{turborepo-pandacss → default}/packages/ui/src/badge.tsx +0 -0
  199. /package/templates/{turborepo-pandacss → default}/packages/ui/src/breadcrumb.tsx +0 -0
  200. /package/templates/{turborepo-pandacss → default}/packages/ui/src/button.tsx +0 -0
  201. /package/templates/{turborepo-pandacss → default}/packages/ui/src/card.tsx +0 -0
  202. /package/templates/{turborepo-pandacss → default}/packages/ui/src/checkbox.tsx +0 -0
  203. /package/templates/{turborepo-pandacss → default}/packages/ui/src/data-table.tsx +0 -0
  204. /package/templates/{turborepo-pandacss → default}/packages/ui/src/dialog-hook.tsx +0 -0
  205. /package/templates/{turborepo-pandacss → default}/packages/ui/src/dialog.tsx +0 -0
  206. /package/templates/{turborepo-pandacss → default}/packages/ui/src/drawer.tsx +0 -0
  207. /package/templates/{turborepo-pandacss → default}/packages/ui/src/dropdown-menu.tsx +0 -0
  208. /package/templates/{turborepo-pandacss → default}/packages/ui/src/form.tsx +0 -0
  209. /package/templates/{turborepo-pandacss → default}/packages/ui/src/hover-card.tsx +0 -0
  210. /package/templates/{turborepo-pandacss → default}/packages/ui/src/input.tsx +0 -0
  211. /package/templates/{turborepo-pandacss → default}/packages/ui/src/label.tsx +0 -0
  212. /package/templates/{turborepo-pandacss → default}/packages/ui/src/lib/utils.ts +0 -0
  213. /package/templates/{turborepo-pandacss → default}/packages/ui/src/pagination.tsx +0 -0
  214. /package/templates/{turborepo-pandacss → default}/packages/ui/src/popover.tsx +0 -0
  215. /package/templates/{turborepo-pandacss → default}/packages/ui/src/progress.tsx +0 -0
  216. /package/templates/{turborepo-pandacss → default}/packages/ui/src/select.tsx +0 -0
  217. /package/templates/{turborepo-pandacss → default}/packages/ui/src/separator.tsx +0 -0
  218. /package/templates/{turborepo-pandacss → default}/packages/ui/src/skeleton.tsx +0 -0
  219. /package/templates/{turborepo-pandacss → default}/packages/ui/src/sonner.tsx +0 -0
  220. /package/templates/{turborepo-pandacss → default}/packages/ui/src/table.tsx +0 -0
  221. /package/templates/{turborepo-pandacss → default}/packages/ui/src/tabs.tsx +0 -0
  222. /package/templates/{turborepo-pandacss → default}/packages/ui/src/textarea.tsx +0 -0
  223. /package/templates/{turborepo-pandacss → default}/packages/ui/src/tooltip.tsx +0 -0
  224. /package/templates/{turborepo-pandacss → default}/packages/ui/src/typography.tsx +0 -0
  225. /package/templates/{turborepo-pandacss → default}/packages/ui/tsconfig.json +0 -0
  226. /package/templates/{turborepo-pandacss → default}/panda.config.ts +0 -0
  227. /package/templates/{turborepo-pandacss → default}/pnpm-workspace.yaml +0 -0
  228. /package/templates/{turborepo-pandacss → default}/postcss.config.cjs +0 -0
  229. /package/templates/{turborepo-pandacss → default}/prisma/schema.prisma +0 -0
  230. /package/templates/{turborepo-pandacss → default}/public/file.svg +0 -0
  231. /package/templates/{turborepo-pandacss → default}/public/globe.svg +0 -0
  232. /package/templates/{turborepo-pandacss → default}/public/next.svg +0 -0
  233. /package/templates/{turborepo-pandacss → default}/public/vercel.svg +0 -0
  234. /package/templates/{turborepo-pandacss → default}/public/window.svg +0 -0
  235. /package/templates/{turborepo-pandacss → default}/scripts/cli-template-update.ts +0 -0
  236. /package/templates/{turborepo-pandacss → default}/scripts/env-show.ts +0 -0
  237. /package/templates/{turborepo-pandacss → default}/scripts/env.ts +0 -0
  238. /package/templates/{turborepo-pandacss → default}/scripts/init.sh +0 -0
  239. /package/templates/{turborepo-pandacss → default}/scripts/setup-dev.ts +0 -0
  240. /package/templates/{turborepo-pandacss → default}/scripts/template-update.ts +0 -0
  241. /package/templates/{turborepo-pandacss → default}/scripts/worktree/dev.ts +0 -0
  242. /package/templates/{turborepo-pandacss → default}/test/globals.d.ts +0 -0
  243. /package/templates/{turborepo-pandacss → default}/test/setup.ts +0 -0
  244. /package/templates/{turborepo-pandacss → default}/tsconfig.json +0 -0
  245. /package/templates/{turborepo-pandacss → default}/turbo.json +0 -0
  246. /package/templates/{turborepo-pandacss → default}/vitest.config.ts +0 -0
@@ -1,203 +0,0 @@
1
- "use client";
2
-
3
- import type { UserListItem } from "@/application/use-cases/UserUseCases";
4
- import { Badge } from "@/components/ui/badge";
5
- import { Button } from "@/components/ui/button";
6
- import { DataTable } from "@/components/ui/data-table";
7
- import {
8
- DropdownMenu,
9
- DropdownMenuContent,
10
- DropdownMenuItem,
11
- DropdownMenuTrigger,
12
- } from "@/components/ui/dropdown-menu";
13
- import type { ColumnDef } from "@tanstack/react-table";
14
- import { ArrowUpDown, Edit, Eye, MoreHorizontal, Trash2 } from "lucide-react";
15
-
16
- /**
17
- * ステータスバッジを表示
18
- */
19
- function getStatusBadge(status: UserListItem["status"]) {
20
- switch (status) {
21
- case "active":
22
- return <Badge variant="default">アクティブ</Badge>;
23
- case "inactive":
24
- return <Badge variant="secondary">非アクティブ</Badge>;
25
- case "pending":
26
- return <Badge variant="outline">保留中</Badge>;
27
- default:
28
- return <Badge variant="outline">{status}</Badge>;
29
- }
30
- }
31
-
32
- /**
33
- * ロールバッジを表示
34
- */
35
- function getRoleBadge(role: UserListItem["role"]) {
36
- switch (role) {
37
- case "admin":
38
- return <Badge variant="destructive">管理者</Badge>;
39
- case "moderator":
40
- return <Badge variant="default">モデレーター</Badge>;
41
- case "user":
42
- return <Badge variant="secondary">ユーザー</Badge>;
43
- default:
44
- return <Badge variant="outline">{role}</Badge>;
45
- }
46
- }
47
-
48
- /**
49
- * 日付をフォーマット
50
- */
51
- function formatDate(dateString: string | null): string {
52
- if (!dateString) return "-";
53
- const date = new Date(dateString);
54
- return date.toLocaleDateString("ja-JP");
55
- }
56
-
57
- /**
58
- * テーブルの列定義
59
- */
60
- const columns: ColumnDef<UserListItem>[] = [
61
- {
62
- accessorKey: "name",
63
- header: ({ column }) => {
64
- return (
65
- <Button
66
- variant="ghost"
67
- onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
68
- >
69
- 名前
70
- <ArrowUpDown className="ml-2 h-4 w-4" />
71
- </Button>
72
- );
73
- },
74
- cell: ({ row }) => {
75
- const name = row.getValue("name") as string;
76
- return <div className="font-medium">{name || "-"}</div>;
77
- },
78
- },
79
- {
80
- accessorKey: "email",
81
- header: ({ column }) => {
82
- return (
83
- <Button
84
- variant="ghost"
85
- onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
86
- >
87
- メールアドレス
88
- <ArrowUpDown className="ml-2 h-4 w-4" />
89
- </Button>
90
- );
91
- },
92
- cell: ({ row }) => {
93
- return <div className="text-muted-foreground">{row.getValue("email")}</div>;
94
- },
95
- },
96
- {
97
- accessorKey: "status",
98
- header: "ステータス",
99
- cell: ({ row }) => {
100
- const status = row.getValue("status") as UserListItem["status"];
101
- return getStatusBadge(status);
102
- },
103
- },
104
- {
105
- accessorKey: "role",
106
- header: "ロール",
107
- cell: ({ row }) => {
108
- const role = row.getValue("role") as UserListItem["role"];
109
- return getRoleBadge(role);
110
- },
111
- },
112
- {
113
- accessorKey: "createdAt",
114
- header: ({ column }) => {
115
- return (
116
- <Button
117
- variant="ghost"
118
- onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
119
- >
120
- 作成日
121
- <ArrowUpDown className="ml-2 h-4 w-4" />
122
- </Button>
123
- );
124
- },
125
- cell: ({ row }) => {
126
- return <div>{formatDate(row.getValue("createdAt"))}</div>;
127
- },
128
- },
129
- {
130
- accessorKey: "lastLogin",
131
- header: ({ column }) => {
132
- return (
133
- <Button
134
- variant="ghost"
135
- onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
136
- >
137
- 最終ログイン
138
- <ArrowUpDown className="ml-2 h-4 w-4" />
139
- </Button>
140
- );
141
- },
142
- cell: ({ row }) => {
143
- return <div>{formatDate(row.getValue("lastLogin"))}</div>;
144
- },
145
- },
146
- {
147
- id: "actions",
148
- header: "操作",
149
- enableHiding: false,
150
- cell: ({ row }) => {
151
- const user = row.original;
152
-
153
- return (
154
- <DropdownMenu>
155
- <DropdownMenuTrigger asChild>
156
- <Button variant="ghost" className="h-8 w-8 p-0">
157
- <span className="sr-only">メニューを開く</span>
158
- <MoreHorizontal className="h-4 w-4" />
159
- </Button>
160
- </DropdownMenuTrigger>
161
- <DropdownMenuContent align="end">
162
- <DropdownMenuItem onClick={() => console.log("詳細表示:", user.id)}>
163
- <Eye className="mr-2 h-4 w-4" />
164
- 詳細表示
165
- </DropdownMenuItem>
166
- <DropdownMenuItem onClick={() => console.log("編集:", user.id)}>
167
- <Edit className="mr-2 h-4 w-4" />
168
- 編集
169
- </DropdownMenuItem>
170
- <DropdownMenuItem
171
- onClick={() => console.log("削除:", user.id)}
172
- className="text-destructive"
173
- >
174
- <Trash2 className="mr-2 h-4 w-4" />
175
- 削除
176
- </DropdownMenuItem>
177
- </DropdownMenuContent>
178
- </DropdownMenu>
179
- );
180
- },
181
- },
182
- ];
183
-
184
- interface UserTableProps {
185
- users: readonly UserListItem[];
186
- }
187
-
188
- /**
189
- * ユーザーテーブルコンポーネント
190
- */
191
- export function UserTable({ users }: UserTableProps) {
192
- return (
193
- <DataTable
194
- columns={columns}
195
- data={users as UserListItem[]}
196
- searchKey="name"
197
- searchPlaceholder="ユーザー名で検索..."
198
- enableColumnVisibility={true}
199
- enablePagination={true}
200
- pageSize={10}
201
- />
202
- );
203
- }
@@ -1,32 +0,0 @@
1
- import { auth } from "@/lib/auth";
2
-
3
- export default auth((req) => {
4
- const { nextUrl } = req;
5
- const isLoggedIn = !!req.auth;
6
-
7
- // Protected routes that require authentication
8
- const protectedRoutes = ["/dashboard", "/profile"];
9
- const isProtectedRoute = protectedRoutes.some((route) =>
10
- nextUrl.pathname.startsWith(route),
11
- );
12
-
13
- // Public routes that authenticated users shouldn't access
14
- const publicRoutes = ["/signin", "/signup"];
15
- const isPublicRoute = publicRoutes.some((route) =>
16
- nextUrl.pathname.startsWith(route),
17
- );
18
-
19
- // Redirect authenticated users away from public routes to dashboard
20
- if (isLoggedIn && isPublicRoute) {
21
- return Response.redirect(new URL("/dashboard", nextUrl));
22
- }
23
-
24
- // Redirect unauthenticated users to signin
25
- if (!isLoggedIn && isProtectedRoute) {
26
- return Response.redirect(new URL("/signin", nextUrl));
27
- }
28
- });
29
-
30
- export const config = {
31
- matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
32
- };