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.
- package/README.md +75 -7
- package/dist/cli.js +863 -70
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/.playwright-mcp/dashboard.png +0 -0
- package/templates/default/.playwright-mcp/web-home.png +0 -0
- package/templates/{turborepo-pandacss → default}/CLAUDE.md +32 -5
- package/templates/{turborepo-pandacss → default}/README.md +150 -45
- package/templates/default/apps/web/server/presentation/routes/userRoutes.ts +54 -0
- package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +211 -0
- package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTableContainer.tsx +50 -0
- package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/data/page.tsx +15 -8
- package/templates/default/apps/web/src/app/api/rpc/[[...route]]/route.ts +31 -0
- package/templates/default/apps/web/src/hooks/api/prefetch-users.ts +63 -0
- package/templates/default/apps/web/src/hooks/api/use-users.ts +83 -0
- package/templates/default/apps/web/src/lib/api/client.ts +18 -0
- package/templates/default/apps/web/src/lib/api/parse-response.ts +114 -0
- package/templates/default/apps/web/src/shared/schemas/user.ts +36 -0
- package/templates/{turborepo-pandacss → default}/apps/web/tsconfig.json +5 -0
- package/templates/{turborepo-pandacss → default}/package.json +7 -2
- package/templates/default/packages/server-core/src/domain/validators/user.ts +23 -0
- package/templates/{turborepo-pandacss → default}/pnpm-lock.yaml +21 -3
- package/templates/turborepo-pandacss/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +0 -203
- package/templates/turborepo-pandacss/middleware.ts +0 -32
- /package/templates/{turborepo-pandacss → default}/.biomeignore +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/biome-format.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/typecheck.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/settings.json +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/skills/create-einja-app-release/SKILL.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.claude/skills/dev-cli-release/SKILL.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/commands/spec-create.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/commands/start-dev.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/commands/task-exec.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/commands/task-vibe-kanban-loop.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/commands/update-docs-by-task-specs.md +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/mcp.json +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/api-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/api-test-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-code.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-commit-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-design.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/base-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/error-handling-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.cursor/rules/refactor-rules.mdc +0 -0
- /package/templates/{turborepo-pandacss → default}/.dockerignore +0 -0
- /package/templates/{turborepo-pandacss → default}/.einja-sync.json +0 -0
- /package/templates/{turborepo-pandacss → default}/.env.ci +0 -0
- /package/templates/{turborepo-pandacss → default}/.env.example +0 -0
- /package/templates/{turborepo-pandacss → default}/.env.personal.example +0 -0
- /package/templates/{turborepo-pandacss → default}/.envrc +0 -0
- /package/templates/{turborepo-pandacss → default}/.gitattributes +0 -0
- /package/templates/{turborepo-pandacss → default}/.husky/pre-commit +0 -0
- /package/templates/{turborepo-pandacss → default}/.lintstagedrc.js +0 -0
- /package/templates/{turborepo-pandacss → default}/.mcp.json +0 -0
- /package/templates/{turborepo-pandacss → default}/.node-version +0 -0
- /package/templates/{turborepo-pandacss → default}/.templateignore +0 -0
- /package/templates/{turborepo-pandacss → default}/.vscode/extensions.json +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/middleware.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/next.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/package.json +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/panda.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/postcss.config.cjs +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/public/file.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/public/globe.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/public/next.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/public/vercel.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/public/window.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/dashboard/page.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout-client.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/profile/page.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/api/auth/[...nextauth]/route.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/api/auth/signup/route.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/error.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/favicon.ico +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/global-error.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/globals.css +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/layout.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/not-found.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.module.css +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.test.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/page.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/signin/page.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/app/signup/page.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/application/use-cases/UserUseCases.test.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/application/use-cases/UserUseCases.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/login-button.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/logout-button.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.test.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/dashboard/dashboard-stats.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/providers/query-provider.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/providers/session-provider.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/shared/Sidebar.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/shared/header.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/accordion.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/alert-dialog.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/alert.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/aspect-ratio.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/avatar.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/badge.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/breadcrumb.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/button.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/card.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/checkbox.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/data-table.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dialog-hook.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dialog.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/drawer.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dropdown-menu.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/form.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/hover-card.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/input.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/label.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/pagination.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/popover.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/progress.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/select.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/separator.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/skeleton.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/sonner.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/table.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/tabs.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/textarea.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/tooltip.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/typography.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/auth/guard.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/auth/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/prisma.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/src/lib/utils.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/test/globals.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/test/matchers.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/test/setup.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/vitest.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/apps/web/vitest.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/biome.json +0 -0
- /package/templates/{turborepo-pandacss → default}/components.json +0 -0
- /package/templates/{turborepo-pandacss → default}/docker-compose.yml +0 -0
- /package/templates/{turborepo-pandacss → default}/next.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/package-lock.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/package.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/panda.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/src/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/src/worktree-config-loader.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/src/worktree-config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/tsconfig.build.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/tsconfig.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/config/typescript/base.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/package.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/types/next-auth.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/utils.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/context/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/hooks/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/src/utils/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/front-core/tsconfig.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/package.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma/schema.prisma +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma/seed.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/prisma.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/__generated__/fabbrica/index.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/__generated__/fabbrica/index.js +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/core/result.test.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/core/result.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/.gitkeep +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/entities/User.test.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/entities/User.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/domain/repository-interfaces/IUserRepository.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/client.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/mappers/UserMapper.test.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/mappers/UserMapper.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/repositories/UserRepository.test.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/infrastructure/database/repositories/UserRepository.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/factories/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/factories/user.factory.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/fixtures/users.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/helpers/date.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/helpers/password.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/src/testing/index.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/tsconfig.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/server-core/vitest.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/package.json +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/accordion.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/alert-dialog.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/alert.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/aspect-ratio.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/avatar.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/badge.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/breadcrumb.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/button.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/card.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/checkbox.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/data-table.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/dialog-hook.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/dialog.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/drawer.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/dropdown-menu.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/form.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/hover-card.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/input.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/label.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/lib/utils.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/pagination.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/popover.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/progress.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/select.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/separator.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/skeleton.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/sonner.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/table.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/tabs.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/textarea.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/tooltip.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/src/typography.tsx +0 -0
- /package/templates/{turborepo-pandacss → default}/packages/ui/tsconfig.json +0 -0
- /package/templates/{turborepo-pandacss → default}/panda.config.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/pnpm-workspace.yaml +0 -0
- /package/templates/{turborepo-pandacss → default}/postcss.config.cjs +0 -0
- /package/templates/{turborepo-pandacss → default}/prisma/schema.prisma +0 -0
- /package/templates/{turborepo-pandacss → default}/public/file.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/public/globe.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/public/next.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/public/vercel.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/public/window.svg +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/cli-template-update.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/env-show.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/env.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/init.sh +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/setup-dev.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/template-update.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/scripts/worktree/dev.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/test/globals.d.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/test/setup.ts +0 -0
- /package/templates/{turborepo-pandacss → default}/tsconfig.json +0 -0
- /package/templates/{turborepo-pandacss → default}/turbo.json +0 -0
- /package/templates/{turborepo-pandacss → default}/vitest.config.ts +0 -0
package/templates/turborepo-pandacss/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx
DELETED
|
@@ -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
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/unset-volta-recursion.sh
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/validate-git-commit.sh
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/.claude/hooks/einja/warn-relative-import.sh
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/.claude/skills/create-einja-app-release/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/.cursor/commands/update-docs-by-task-specs.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout-client.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/layout.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/app/(authenticated)/profile/page.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/app/api/auth/[...nextauth]/route.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/application/use-cases/UserUseCases.ts
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/login-button.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/logout-button.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.test.tsx
RENAMED
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/auth/user-avatar.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/shared/Sidebar.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/alert-dialog.tsx
RENAMED
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/aspect-ratio.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dialog-hook.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/apps/web/src/components/ui/dropdown-menu.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/packages/config/src/worktree-config-loader.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{turborepo-pandacss → default}/packages/front-core/src/auth/types/next-auth.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|