create-einja-app 0.2.17 → 0.2.19

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 (275) hide show
  1. package/README.md +1 -0
  2. package/dist/cli.js +685 -1715
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +2 -2
  5. package/templates/default/.claude/hooks/einja/playwright-resize.sh +12 -2
  6. package/templates/default/.claude/settings.json +16 -0
  7. package/templates/default/.cursor/commands/task-vibe-kanban-loop.md +107 -42
  8. package/templates/default/.env.develop +0 -4
  9. package/templates/default/.env.example +1 -0
  10. package/templates/default/.env.preview +0 -4
  11. package/templates/default/.env.staging +19 -0
  12. package/templates/default/.github/actions/ci/action.yml +39 -0
  13. package/templates/default/.github/actions/migrate/action.yml +39 -0
  14. package/templates/default/.github/actions/neon-export-env/action.yml +28 -0
  15. package/templates/default/.github/actions/setup/action.yml +20 -0
  16. package/templates/default/.github/workflows/claude.yml +1 -0
  17. package/templates/default/.github/workflows/{cleanup-neon-branches.yml → cleanup-pr-preview-db.yml} +28 -24
  18. package/templates/default/.github/workflows/cleanup-pr-preview-on-close.yml +50 -0
  19. package/templates/default/.github/workflows/deploy-pr-preview.yml +398 -0
  20. package/templates/default/.github/workflows/deploy-stable-branches.yml +259 -0
  21. package/templates/default/.github/workflows/release-create-einja-app.yml +95 -0
  22. package/templates/default/.mcp.json +29 -11
  23. package/templates/default/.serena/project.yml +4 -0
  24. package/templates/default/.vscode/settings.json +18 -0
  25. package/templates/default/CLAUDE.md +129 -353
  26. package/templates/default/README.md +5 -14
  27. package/templates/default/apps/admin/next.config.ts +11 -0
  28. package/templates/default/apps/admin/package.json +55 -0
  29. package/templates/default/apps/admin/postcss.config.cjs +5 -0
  30. package/templates/default/apps/admin/src/app/(auth)/forgot-password/page.tsx +97 -0
  31. package/templates/default/apps/admin/src/app/(auth)/layout.tsx +18 -0
  32. package/templates/default/apps/admin/src/app/(auth)/otp/page.tsx +121 -0
  33. package/templates/default/apps/admin/src/app/(auth)/sign-in/page.tsx +145 -0
  34. package/templates/default/apps/admin/src/app/(auth)/sign-up/page.tsx +199 -0
  35. package/templates/default/apps/admin/src/app/(errors)/401/page.tsx +27 -0
  36. package/templates/default/apps/admin/src/app/(errors)/403/page.tsx +28 -0
  37. package/templates/default/apps/admin/src/app/(errors)/500/page.tsx +29 -0
  38. package/templates/default/apps/admin/src/app/(errors)/layout.tsx +7 -0
  39. package/templates/default/apps/admin/src/app/(errors)/maintenance/page.tsx +25 -0
  40. package/templates/default/apps/admin/src/app/dashboard/_components/analytics-chart.tsx +68 -0
  41. package/templates/default/apps/admin/src/app/dashboard/_components/analytics.tsx +182 -0
  42. package/templates/default/apps/admin/src/app/dashboard/_components/dashboard-page.tsx +74 -0
  43. package/templates/default/apps/admin/src/app/dashboard/_components/metric-cards.tsx +49 -0
  44. package/templates/default/apps/admin/src/app/dashboard/_components/overview-chart.tsx +73 -0
  45. package/templates/default/apps/admin/src/app/dashboard/_components/recent-sales.tsx +75 -0
  46. package/templates/default/apps/admin/src/app/dashboard/apps/_components/apps-page.tsx +135 -0
  47. package/templates/default/apps/admin/src/app/dashboard/apps/page.tsx +10 -0
  48. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chat-list.tsx +82 -0
  49. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chat-messages.tsx +194 -0
  50. package/templates/default/apps/admin/src/app/dashboard/chats/_components/chats-page.tsx +99 -0
  51. package/templates/default/apps/admin/src/app/dashboard/chats/_components/new-chat.tsx +118 -0
  52. package/templates/default/apps/admin/src/app/dashboard/chats/page.tsx +10 -0
  53. package/templates/default/apps/admin/src/app/dashboard/layout.tsx +9 -0
  54. package/templates/default/apps/admin/src/app/dashboard/not-found.tsx +14 -0
  55. package/templates/default/apps/admin/src/app/dashboard/page.tsx +10 -0
  56. package/templates/default/apps/admin/src/app/dashboard/settings/_components/content-section.tsx +20 -0
  57. package/templates/default/apps/admin/src/app/dashboard/settings/_components/sidebar-nav.tsx +66 -0
  58. package/templates/default/apps/admin/src/app/dashboard/settings/account/page.tsx +173 -0
  59. package/templates/default/apps/admin/src/app/dashboard/settings/appearance/page.tsx +156 -0
  60. package/templates/default/apps/admin/src/app/dashboard/settings/display/page.tsx +125 -0
  61. package/templates/default/apps/admin/src/app/dashboard/settings/layout.tsx +30 -0
  62. package/templates/default/apps/admin/src/app/dashboard/settings/notifications/page.tsx +196 -0
  63. package/templates/default/apps/admin/src/app/dashboard/settings/page.tsx +5 -0
  64. package/templates/default/apps/admin/src/app/dashboard/settings/profile/page.tsx +176 -0
  65. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/data-table-bulk-actions.tsx +183 -0
  66. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/data-table-row-actions.tsx +79 -0
  67. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-columns.tsx +107 -0
  68. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-dialogs.tsx +71 -0
  69. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-import-dialog.tsx +106 -0
  70. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-multi-delete-dialog.tsx +90 -0
  71. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-mutate-drawer.tsx +207 -0
  72. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-page.tsx +31 -0
  73. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-primary-buttons.tsx +19 -0
  74. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-provider.tsx +37 -0
  75. package/templates/default/apps/admin/src/app/dashboard/tasks/_components/tasks-table.tsx +155 -0
  76. package/templates/default/apps/admin/src/app/dashboard/tasks/page.tsx +14 -0
  77. package/templates/default/apps/admin/src/app/dashboard/users/_components/data-table-bulk-actions.tsx +136 -0
  78. package/templates/default/apps/admin/src/app/dashboard/users/_components/data-table-row-actions.tsx +62 -0
  79. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-action-dialog.tsx +297 -0
  80. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-columns.tsx +121 -0
  81. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-delete-dialog.tsx +72 -0
  82. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-dialogs.tsx +49 -0
  83. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-invite-dialog.tsx +139 -0
  84. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-multi-delete-dialog.tsx +89 -0
  85. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-page.tsx +30 -0
  86. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-primary-buttons.tsx +19 -0
  87. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-provider.tsx +35 -0
  88. package/templates/default/apps/admin/src/app/dashboard/users/_components/users-table.tsx +157 -0
  89. package/templates/default/apps/admin/src/app/dashboard/users/page.tsx +10 -0
  90. package/templates/default/apps/admin/src/app/globals.css +109 -0
  91. package/templates/default/apps/admin/src/app/layout.tsx +32 -0
  92. package/templates/default/apps/admin/src/app/not-found.tsx +14 -0
  93. package/templates/default/apps/admin/src/app/page.tsx +5 -0
  94. package/templates/default/apps/admin/src/components/layout/admin-layout.tsx +16 -0
  95. package/templates/default/apps/admin/src/components/layout/app-sidebar.tsx +52 -0
  96. package/templates/default/apps/admin/src/components/layout/nav-config.ts +131 -0
  97. package/templates/default/apps/admin/src/components/providers/theme-provider.tsx +10 -0
  98. package/templates/default/apps/admin/src/components/shared/long-text.tsx +78 -0
  99. package/templates/default/apps/admin/src/components/shared/search-input.tsx +16 -0
  100. package/templates/default/apps/admin/src/components/shared/select-dropdown.tsx +64 -0
  101. package/templates/default/apps/admin/src/data/apps.tsx +116 -0
  102. package/templates/default/apps/admin/src/data/chats.ts +114 -0
  103. package/templates/default/apps/admin/src/data/tasks.ts +114 -0
  104. package/templates/default/apps/admin/src/data/users.ts +90 -0
  105. package/templates/default/apps/admin/src/hooks/use-dialog-state.ts +17 -0
  106. package/templates/default/apps/admin/src/hooks/use-table-url-state.ts +243 -0
  107. package/templates/default/apps/admin/src/lib/show-submitted-data.tsx +12 -0
  108. package/templates/default/apps/admin/src/types/table.d.ts +9 -0
  109. package/templates/default/apps/admin/tsconfig.json +32 -0
  110. package/templates/default/apps/web/next.config.ts +1 -0
  111. package/templates/default/apps/web/package.json +0 -22
  112. package/templates/default/apps/web/postcss.config.cjs +0 -1
  113. package/templates/default/apps/web/src/app/(authenticated)/dashboard/page.tsx +4 -20
  114. package/templates/default/apps/web/src/app/(authenticated)/data/_components/UserTable.tsx +4 -4
  115. package/templates/default/apps/web/src/app/(authenticated)/data/page.tsx +1 -1
  116. package/templates/default/apps/web/src/app/(authenticated)/profile/page.tsx +1 -1
  117. package/templates/default/apps/web/src/app/error.tsx +8 -70
  118. package/templates/default/apps/web/src/app/global-error.tsx +8 -70
  119. package/templates/default/apps/web/src/app/globals.css +20 -0
  120. package/templates/default/apps/web/src/app/not-found.tsx +5 -39
  121. package/templates/default/apps/web/src/app/page.tsx +27 -203
  122. package/templates/default/apps/web/src/app/signin/page.tsx +27 -191
  123. package/templates/default/apps/web/src/app/signup/page.tsx +33 -240
  124. package/templates/default/apps/web/src/components/dashboard/dashboard-stats.tsx +11 -75
  125. package/templates/default/apps/web/src/components/shared/Sidebar.tsx +3 -3
  126. package/templates/default/apps/web/src/components/shared/header.tsx +17 -112
  127. package/templates/default/apps/web/tsconfig.json +0 -6
  128. package/templates/default/biome.json +1 -2
  129. package/templates/default/components.json +2 -2
  130. package/templates/default/docker-compose.yml +1 -1
  131. package/templates/default/gitignore +4 -0
  132. package/templates/default/package.json +1 -0
  133. package/templates/default/packages/admin-ui/catalog/catalog.css +54 -0
  134. package/templates/default/packages/admin-ui/catalog/catalog.tsx +401 -0
  135. package/templates/default/packages/admin-ui/catalog/index.html +12 -0
  136. package/templates/default/packages/admin-ui/catalog/main.tsx +9 -0
  137. package/templates/default/packages/admin-ui/components.json +21 -0
  138. package/templates/default/packages/admin-ui/package.json +105 -0
  139. package/templates/default/packages/admin-ui/src/command-menu/index.tsx +174 -0
  140. package/templates/default/packages/admin-ui/src/data-table/bulk-actions.tsx +215 -0
  141. package/templates/default/packages/admin-ui/src/data-table/column-header.tsx +73 -0
  142. package/templates/default/packages/admin-ui/src/data-table/data-table.tsx +127 -0
  143. package/templates/default/packages/admin-ui/src/data-table/faceted-filter.tsx +148 -0
  144. package/templates/default/packages/admin-ui/src/data-table/index.tsx +9 -0
  145. package/templates/default/packages/admin-ui/src/data-table/pagination.tsx +101 -0
  146. package/templates/default/packages/admin-ui/src/data-table/toolbar.tsx +87 -0
  147. package/templates/default/packages/admin-ui/src/data-table/view-options.tsx +57 -0
  148. package/templates/default/packages/admin-ui/src/hooks/use-mobile.tsx +23 -0
  149. package/templates/default/packages/admin-ui/src/layout/header.tsx +55 -0
  150. package/templates/default/packages/admin-ui/src/layout/index.ts +10 -0
  151. package/templates/default/packages/admin-ui/src/layout/main.tsx +23 -0
  152. package/templates/default/packages/admin-ui/src/layout/nav-group.tsx +111 -0
  153. package/templates/default/packages/admin-ui/src/layout/nav-user.tsx +114 -0
  154. package/templates/default/packages/admin-ui/src/layout/theme-switch.tsx +40 -0
  155. package/templates/default/packages/admin-ui/src/layout/types.ts +21 -0
  156. package/templates/default/packages/admin-ui/src/lib/utils.ts +6 -0
  157. package/templates/default/packages/admin-ui/src/styles/base.css +65 -0
  158. package/templates/default/packages/admin-ui/src/styles/tokens.css +91 -0
  159. package/templates/default/packages/admin-ui/src/tanstack-table.d.ts +10 -0
  160. package/templates/default/packages/admin-ui/src/ui/alert-dialog.tsx +157 -0
  161. package/templates/default/packages/admin-ui/src/ui/alert.tsx +66 -0
  162. package/templates/default/packages/admin-ui/src/ui/avatar.tsx +53 -0
  163. package/templates/default/packages/admin-ui/src/ui/badge.tsx +46 -0
  164. package/templates/default/packages/admin-ui/src/ui/breadcrumb.tsx +108 -0
  165. package/templates/default/packages/admin-ui/src/ui/button.tsx +59 -0
  166. package/templates/default/packages/admin-ui/src/ui/calendar.tsx +69 -0
  167. package/templates/default/packages/admin-ui/src/ui/card.tsx +92 -0
  168. package/templates/default/packages/admin-ui/src/ui/chart.tsx +345 -0
  169. package/templates/default/packages/admin-ui/src/ui/checkbox.tsx +32 -0
  170. package/templates/default/packages/admin-ui/src/ui/collapsible.tsx +27 -0
  171. package/templates/default/packages/admin-ui/src/ui/command.tsx +161 -0
  172. package/templates/default/packages/admin-ui/src/ui/confirm-dialog.tsx +72 -0
  173. package/templates/default/packages/admin-ui/src/ui/date-picker.tsx +53 -0
  174. package/templates/default/packages/admin-ui/src/ui/dialog.tsx +143 -0
  175. package/templates/default/packages/admin-ui/src/ui/dropdown-menu.tsx +257 -0
  176. package/templates/default/packages/admin-ui/src/ui/form.tsx +168 -0
  177. package/templates/default/packages/admin-ui/src/ui/input-otp.tsx +84 -0
  178. package/templates/default/packages/admin-ui/src/ui/input.tsx +21 -0
  179. package/templates/default/packages/admin-ui/src/ui/label.tsx +24 -0
  180. package/templates/default/packages/admin-ui/src/ui/pagination.tsx +126 -0
  181. package/templates/default/packages/admin-ui/src/ui/password-input.tsx +46 -0
  182. package/templates/default/packages/admin-ui/src/ui/popover.tsx +48 -0
  183. package/templates/default/packages/admin-ui/src/ui/progress.tsx +31 -0
  184. package/templates/default/packages/admin-ui/src/ui/radio-group.tsx +45 -0
  185. package/templates/default/packages/admin-ui/src/ui/scroll-area.tsx +52 -0
  186. package/templates/default/packages/admin-ui/src/ui/select.tsx +185 -0
  187. package/templates/default/packages/admin-ui/src/ui/separator.tsx +28 -0
  188. package/templates/default/packages/admin-ui/src/ui/sheet.tsx +149 -0
  189. package/templates/default/packages/admin-ui/src/ui/sidebar.tsx +728 -0
  190. package/templates/default/packages/admin-ui/src/ui/skeleton.tsx +13 -0
  191. package/templates/default/packages/admin-ui/src/ui/sonner.tsx +25 -0
  192. package/templates/default/packages/admin-ui/src/ui/switch.tsx +31 -0
  193. package/templates/default/packages/admin-ui/src/ui/table.tsx +116 -0
  194. package/templates/default/packages/admin-ui/src/ui/tabs.tsx +66 -0
  195. package/templates/default/packages/admin-ui/src/ui/textarea.tsx +18 -0
  196. package/templates/default/packages/admin-ui/src/ui/toggle-group.tsx +60 -0
  197. package/templates/default/packages/admin-ui/src/ui/toggle.tsx +44 -0
  198. package/templates/default/packages/admin-ui/src/ui/tooltip.tsx +61 -0
  199. package/templates/default/packages/admin-ui/tsconfig.json +8 -0
  200. package/templates/default/packages/admin-ui/vite.config.ts +11 -0
  201. package/templates/default/packages/config/package.json +0 -2
  202. package/templates/default/packages/server-core/package.json +1 -0
  203. package/templates/default/packages/ui/components.json +21 -0
  204. package/templates/default/packages/ui/package.json +42 -5
  205. package/templates/default/packages/ui/src/accordion.tsx +1 -1
  206. package/templates/default/packages/ui/src/alert-dialog.tsx +4 -4
  207. package/templates/default/packages/ui/src/alert.tsx +1 -1
  208. package/templates/default/packages/ui/src/avatar.tsx +1 -1
  209. package/templates/default/packages/ui/src/badge.tsx +1 -1
  210. package/templates/default/packages/ui/src/breadcrumb.tsx +1 -1
  211. package/templates/default/packages/ui/src/button.tsx +1 -1
  212. package/templates/default/packages/ui/src/card.tsx +1 -1
  213. package/templates/default/packages/ui/src/checkbox.tsx +1 -1
  214. package/templates/default/packages/ui/src/dialog.tsx +3 -3
  215. package/templates/default/packages/ui/src/drawer.tsx +3 -3
  216. package/templates/default/packages/ui/src/dropdown-menu.tsx +3 -3
  217. package/templates/default/packages/ui/src/form.tsx +2 -2
  218. package/templates/default/packages/ui/src/hover-card.tsx +2 -2
  219. package/templates/default/packages/ui/src/input.tsx +1 -1
  220. package/templates/default/packages/ui/src/label.tsx +1 -1
  221. package/templates/default/packages/ui/src/pagination.tsx +2 -2
  222. package/templates/default/packages/ui/src/popover.tsx +2 -2
  223. package/templates/default/packages/ui/src/progress.tsx +1 -1
  224. package/templates/default/packages/ui/src/select.tsx +2 -2
  225. package/templates/default/packages/ui/src/separator.tsx +1 -1
  226. package/templates/default/packages/ui/src/skeleton.tsx +1 -1
  227. package/templates/default/packages/ui/src/table.tsx +1 -1
  228. package/templates/default/packages/ui/src/tabs.tsx +1 -1
  229. package/templates/default/packages/ui/src/textarea.tsx +1 -1
  230. package/templates/default/packages/ui/src/tooltip.tsx +3 -3
  231. package/templates/default/packages/ui/src/typography.tsx +1 -1
  232. package/templates/default/packages/ui/tsconfig.json +1 -6
  233. package/templates/default/pnpm-lock.yaml +1319 -936
  234. package/templates/default/postcss.config.cjs +0 -1
  235. package/templates/default/turbo.json +11 -5
  236. package/templates/default/worktree.config.json +5 -0
  237. package/templates/default/.env.ci +0 -32
  238. package/templates/default/.github/workflows/ci.yml +0 -96
  239. package/templates/default/.github/workflows/preview-db.yml +0 -134
  240. package/templates/default/.playwright-mcp/dashboard.png +0 -0
  241. package/templates/default/.playwright-mcp/web-home.png +0 -0
  242. package/templates/default/apps/web/panda.config.ts +0 -114
  243. package/templates/default/apps/web/src/components/ui/accordion.tsx +0 -64
  244. package/templates/default/apps/web/src/components/ui/alert-dialog.tsx +0 -135
  245. package/templates/default/apps/web/src/components/ui/alert.tsx +0 -60
  246. package/templates/default/apps/web/src/components/ui/aspect-ratio.tsx +0 -9
  247. package/templates/default/apps/web/src/components/ui/avatar.tsx +0 -41
  248. package/templates/default/apps/web/src/components/ui/badge.tsx +0 -39
  249. package/templates/default/apps/web/src/components/ui/breadcrumb.tsx +0 -101
  250. package/templates/default/apps/web/src/components/ui/button.tsx +0 -56
  251. package/templates/default/apps/web/src/components/ui/card.tsx +0 -75
  252. package/templates/default/apps/web/src/components/ui/checkbox.tsx +0 -29
  253. package/templates/default/apps/web/src/components/ui/data-table.tsx +0 -189
  254. package/templates/default/apps/web/src/components/ui/dialog-hook.tsx +0 -210
  255. package/templates/default/apps/web/src/components/ui/dialog.tsx +0 -129
  256. package/templates/default/apps/web/src/components/ui/drawer.tsx +0 -124
  257. package/templates/default/apps/web/src/components/ui/dropdown-menu.tsx +0 -228
  258. package/templates/default/apps/web/src/components/ui/form.tsx +0 -152
  259. package/templates/default/apps/web/src/components/ui/hover-card.tsx +0 -38
  260. package/templates/default/apps/web/src/components/ui/input.tsx +0 -21
  261. package/templates/default/apps/web/src/components/ui/label.tsx +0 -21
  262. package/templates/default/apps/web/src/components/ui/pagination.tsx +0 -105
  263. package/templates/default/apps/web/src/components/ui/popover.tsx +0 -42
  264. package/templates/default/apps/web/src/components/ui/progress.tsx +0 -28
  265. package/templates/default/apps/web/src/components/ui/select.tsx +0 -170
  266. package/templates/default/apps/web/src/components/ui/separator.tsx +0 -28
  267. package/templates/default/apps/web/src/components/ui/skeleton.tsx +0 -13
  268. package/templates/default/apps/web/src/components/ui/sonner.tsx +0 -25
  269. package/templates/default/apps/web/src/components/ui/table.tsx +0 -92
  270. package/templates/default/apps/web/src/components/ui/tabs.tsx +0 -54
  271. package/templates/default/apps/web/src/components/ui/textarea.tsx +0 -18
  272. package/templates/default/apps/web/src/components/ui/tooltip.tsx +0 -57
  273. package/templates/default/apps/web/src/components/ui/typography.tsx +0 -158
  274. package/templates/default/packages/config/panda.config.ts +0 -114
  275. package/templates/default/panda.config.ts +0 -114
@@ -1,14 +1,12 @@
1
1
  "use client";
2
2
 
3
- import { Button } from "@/components/ui/button";
4
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
5
- import { Input } from "@/components/ui/input";
6
- import { Label } from "@/components/ui/label";
3
+ import { Button } from "{{packageName}}/ui/button";
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "{{packageName}}/ui/card";
5
+ import { Input } from "{{packageName}}/ui/input";
6
+ import { Label } from "{{packageName}}/ui/label";
7
7
  import Link from "next/link";
8
8
  import { useRouter } from "next/navigation";
9
9
  import { useState } from "react";
10
- import { css } from "../../../styled-system/css";
11
- import { center, vstack } from "../../../styled-system/patterns";
12
10
 
13
11
  export default function SignUpPage() {
14
12
  const [name, setName] = useState("");
@@ -74,100 +72,28 @@ export default function SignUpPage() {
74
72
  };
75
73
 
76
74
  return (
77
- <div
78
- className={css({
79
- minHeight: "100vh",
80
- background: "linear-gradient(135deg, {colors.green.50} 0%, {colors.blue.50} 100%)",
81
- display: "flex",
82
- alignItems: "center",
83
- justifyContent: "center",
84
- padding: "2rem 1rem",
85
- })}
86
- >
87
- <div
88
- className={css({
89
- width: "100%",
90
- maxWidth: "md",
91
- display: "flex",
92
- flexDirection: "column",
93
- gap: "2rem",
94
- })}
95
- >
75
+ <div className="min-h-screen bg-gradient-to-br from-green-50 to-blue-50 flex items-center justify-center px-4 py-8">
76
+ <div className="w-full max-w-md flex flex-col gap-8">
96
77
  {/* ロゴ・ヘッダー部分 */}
97
- <div className={center({ flexDirection: "column", gap: "1rem" })}>
98
- <div
99
- className={css({
100
- width: "4rem",
101
- height: "4rem",
102
- background: "linear-gradient(135deg, {colors.green.600}, {colors.blue.600})",
103
- borderRadius: "50%",
104
- display: "flex",
105
- alignItems: "center",
106
- justifyContent: "center",
107
- boxShadow: "lg",
108
- })}
109
- >
110
- <span
111
- className={css({
112
- fontSize: "1.5rem",
113
- fontWeight: "bold",
114
- color: "white",
115
- })}
116
- >
117
- E
118
- </span>
78
+ <div className="flex flex-col items-center justify-center gap-4">
79
+ <div className="w-16 h-16 bg-gradient-to-br from-green-600 to-blue-600 rounded-full flex items-center justify-center shadow-lg">
80
+ <span className="text-2xl font-bold text-white">E</span>
119
81
  </div>
120
- <h1
121
- className={css({
122
- fontSize: "2xl",
123
- fontWeight: "bold",
124
- color: "{colors.gray.800}",
125
- textAlign: "center",
126
- })}
127
- >
128
- Einja Management
129
- </h1>
82
+ <h1 className="text-2xl font-bold text-gray-800 text-center">Einja Management</h1>
130
83
  </div>
131
84
 
132
85
  {/* サインアップカード */}
133
- <Card
134
- className={css({
135
- boxShadow: "2xl",
136
- border: "none",
137
- background: "white/90",
138
- backdropFilter: "blur(10px)",
139
- })}
140
- >
141
- <CardHeader className={vstack({ gap: "0.5rem", alignItems: "center" })}>
142
- <CardTitle
143
- className={css({
144
- fontSize: "1.5rem",
145
- fontWeight: "semibold",
146
- color: "{colors.gray.800}",
147
- })}
148
- >
149
- アカウント作成
150
- </CardTitle>
151
- <CardDescription
152
- className={css({
153
- color: "{colors.gray.600}",
154
- textAlign: "center",
155
- })}
156
- >
86
+ <Card className="shadow-2xl border-none bg-white/90 backdrop-blur">
87
+ <CardHeader className="flex flex-col gap-2 items-center">
88
+ <CardTitle className="text-2xl font-semibold text-gray-800">アカウント作成</CardTitle>
89
+ <CardDescription className="text-gray-600 text-center">
157
90
  新しいアカウントを作成してください
158
91
  </CardDescription>
159
92
  </CardHeader>
160
93
  <CardContent>
161
- <form onSubmit={handleSubmit} className={vstack({ gap: "1.5rem" })}>
162
- <div className={vstack({ gap: "0.5rem", width: "100%" })}>
163
- <Label
164
- htmlFor="name"
165
- className={css({
166
- fontSize: "sm",
167
- fontWeight: "medium",
168
- color: "{colors.gray.700}",
169
- })}
170
- >
94
+ <form onSubmit={handleSubmit} className="flex flex-col gap-6">
95
+ <div className="flex flex-col gap-2 w-full">
96
+ <Label htmlFor="name" className="text-sm font-medium text-gray-700">
171
97
  お名前
172
98
  </Label>
173
99
  <Input
@@ -178,30 +104,11 @@ export default function SignUpPage() {
178
104
  onChange={(e) => setName(e.target.value)}
179
105
  required
180
106
  disabled={isLoading}
181
- className={css({
182
- height: "2.75rem",
183
- fontSize: "sm",
184
- border: "2px solid {colors.gray.200}",
185
- _focus: {
186
- borderColor: "{colors.green.500}",
187
- boxShadow: "0 0 0 3px {colors.green.100}",
188
- },
189
- _disabled: {
190
- opacity: 0.6,
191
- cursor: "not-allowed",
192
- },
193
- })}
107
+ className="h-11 text-sm border-2 border-gray-200 focus:border-green-500 focus:ring-3 focus:ring-green-100 disabled:opacity-60 disabled:cursor-not-allowed"
194
108
  />
195
109
  </div>
196
- <div className={vstack({ gap: "0.5rem", width: "100%" })}>
197
- <Label
198
- htmlFor="email"
199
- className={css({
200
- fontSize: "sm",
201
- fontWeight: "medium",
202
- color: "{colors.gray.700}",
203
- })}
204
- >
110
+ <div className="flex flex-col gap-2 w-full">
111
+ <Label htmlFor="email" className="text-sm font-medium text-gray-700">
205
112
  メールアドレス
206
113
  </Label>
207
114
  <Input
@@ -212,30 +119,11 @@ export default function SignUpPage() {
212
119
  onChange={(e) => setEmail(e.target.value)}
213
120
  required
214
121
  disabled={isLoading}
215
- className={css({
216
- height: "2.75rem",
217
- fontSize: "sm",
218
- border: "2px solid {colors.gray.200}",
219
- _focus: {
220
- borderColor: "{colors.green.500}",
221
- boxShadow: "0 0 0 3px {colors.green.100}",
222
- },
223
- _disabled: {
224
- opacity: 0.6,
225
- cursor: "not-allowed",
226
- },
227
- })}
122
+ className="h-11 text-sm border-2 border-gray-200 focus:border-green-500 focus:ring-3 focus:ring-green-100 disabled:opacity-60 disabled:cursor-not-allowed"
228
123
  />
229
124
  </div>
230
- <div className={vstack({ gap: "0.5rem", width: "100%" })}>
231
- <Label
232
- htmlFor="password"
233
- className={css({
234
- fontSize: "sm",
235
- fontWeight: "medium",
236
- color: "{colors.gray.700}",
237
- })}
238
- >
125
+ <div className="flex flex-col gap-2 w-full">
126
+ <Label htmlFor="password" className="text-sm font-medium text-gray-700">
239
127
  パスワード
240
128
  </Label>
241
129
  <Input
@@ -246,30 +134,11 @@ export default function SignUpPage() {
246
134
  onChange={(e) => setPassword(e.target.value)}
247
135
  required
248
136
  disabled={isLoading}
249
- className={css({
250
- height: "2.75rem",
251
- fontSize: "sm",
252
- border: "2px solid {colors.gray.200}",
253
- _focus: {
254
- borderColor: "{colors.green.500}",
255
- boxShadow: "0 0 0 3px {colors.green.100}",
256
- },
257
- _disabled: {
258
- opacity: 0.6,
259
- cursor: "not-allowed",
260
- },
261
- })}
137
+ className="h-11 text-sm border-2 border-gray-200 focus:border-green-500 focus:ring-3 focus:ring-green-100 disabled:opacity-60 disabled:cursor-not-allowed"
262
138
  />
263
139
  </div>
264
- <div className={vstack({ gap: "0.5rem", width: "100%" })}>
265
- <Label
266
- htmlFor="confirmPassword"
267
- className={css({
268
- fontSize: "sm",
269
- fontWeight: "medium",
270
- color: "{colors.gray.700}",
271
- })}
272
- >
140
+ <div className="flex flex-col gap-2 w-full">
141
+ <Label htmlFor="confirmPassword" className="text-sm font-medium text-gray-700">
273
142
  パスワード(確認)
274
143
  </Label>
275
144
  <Input
@@ -280,109 +149,33 @@ export default function SignUpPage() {
280
149
  onChange={(e) => setConfirmPassword(e.target.value)}
281
150
  required
282
151
  disabled={isLoading}
283
- className={css({
284
- height: "2.75rem",
285
- fontSize: "sm",
286
- border: "2px solid {colors.gray.200}",
287
- _focus: {
288
- borderColor: "{colors.green.500}",
289
- boxShadow: "0 0 0 3px {colors.green.100}",
290
- },
291
- _disabled: {
292
- opacity: 0.6,
293
- cursor: "not-allowed",
294
- },
295
- })}
152
+ className="h-11 text-sm border-2 border-gray-200 focus:border-green-500 focus:ring-3 focus:ring-green-100 disabled:opacity-60 disabled:cursor-not-allowed"
296
153
  />
297
154
  </div>
298
155
  {error && (
299
- <div
300
- className={css({
301
- padding: "0.75rem",
302
- background: "{colors.red.50}",
303
- border: "1px solid {colors.red.200}",
304
- borderRadius: "md",
305
- fontSize: "sm",
306
- color: "{colors.red.700}",
307
- textAlign: "center",
308
- width: "100%",
309
- })}
310
- >
156
+ <div className="p-3 bg-red-50 border border-red-200 rounded-md text-sm text-red-700 text-center w-full">
311
157
  {error}
312
158
  </div>
313
159
  )}
314
160
  {success && (
315
- <div
316
- className={css({
317
- padding: "0.75rem",
318
- background: "{colors.green.50}",
319
- border: "1px solid {colors.green.200}",
320
- borderRadius: "md",
321
- fontSize: "sm",
322
- color: "{colors.green.700}",
323
- textAlign: "center",
324
- width: "100%",
325
- })}
326
- >
161
+ <div className="p-3 bg-green-50 border border-green-200 rounded-md text-sm text-green-700 text-center w-full">
327
162
  {success}
328
163
  </div>
329
164
  )}
330
165
  <Button
331
166
  type="submit"
332
167
  disabled={isLoading}
333
- className={css({
334
- width: "100%",
335
- height: "2.75rem",
336
- background: "linear-gradient(135deg, {colors.green.600}, {colors.blue.600})",
337
- border: "none",
338
- borderRadius: "md",
339
- color: "white",
340
- fontSize: "sm",
341
- fontWeight: "medium",
342
- cursor: "pointer",
343
- transition: "all 0.2s",
344
- _hover: {
345
- transform: "translateY(-1px)",
346
- boxShadow: "lg",
347
- },
348
- _active: {
349
- transform: "translateY(0)",
350
- },
351
- _disabled: {
352
- opacity: 0.6,
353
- cursor: "not-allowed",
354
- transform: "none",
355
- },
356
- })}
168
+ className="w-full h-11 bg-gradient-to-br from-green-600 to-blue-600 border-none rounded-md text-white text-sm font-medium cursor-pointer transition-all duration-200 hover:-translate-y-px hover:shadow-lg active:translate-y-0 disabled:opacity-60 disabled:cursor-not-allowed"
357
169
  >
358
170
  {isLoading ? "アカウント作成中..." : "アカウント作成"}
359
171
  </Button>
360
172
  </form>
361
173
 
362
174
  {/* サインインリンク */}
363
- <div
364
- className={css({
365
- marginTop: "1.5rem",
366
- textAlign: "center",
367
- })}
368
- >
369
- <p
370
- className={css({
371
- fontSize: "sm",
372
- color: "{colors.gray.600}",
373
- })}
374
- >
175
+ <div className="mt-6 text-center">
176
+ <p className="text-sm text-gray-600">
375
177
  既にアカウントをお持ちですか?{" "}
376
- <Link
377
- href="/signin"
378
- className={css({
379
- color: "{colors.blue.600}",
380
- fontWeight: "medium",
381
- _hover: {
382
- textDecoration: "underline",
383
- },
384
- })}
385
- >
178
+ <Link href="/signin" className="text-blue-600 font-medium hover:underline">
386
179
  サインイン
387
180
  </Link>
388
181
  </p>
@@ -1,6 +1,3 @@
1
- import { css } from "../../../styled-system/css";
2
- import { hstack, vstack } from "../../../styled-system/patterns";
3
-
4
1
  const stats = [
5
2
  {
6
3
  title: "総プロジェクト数",
@@ -34,90 +31,29 @@ const stats = [
34
31
 
35
32
  export function DashboardStats() {
36
33
  return (
37
- <div
38
- className={css({
39
- display: "grid",
40
- gridTemplateColumns: {
41
- base: "1fr",
42
- sm: "repeat(2, 1fr)",
43
- lg: "repeat(4, 1fr)",
44
- },
45
- gap: "1.5rem",
46
- })}
47
- >
34
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
48
35
  {stats.map((stat) => (
49
36
  <div
50
37
  key={stat.title}
51
- className={css({
52
- background: "white",
53
- borderRadius: "lg",
54
- padding: { base: "1.25rem", md: "1.5rem", lg: "1.75rem" },
55
- boxShadow: "sm",
56
- border: "1px solid {colors.gray.200}",
57
- transition: "all 0.2s",
58
- _hover: {
59
- boxShadow: "md",
60
- transform: "translateY(-2px)",
61
- },
62
- })}
38
+ className="bg-white rounded-lg p-5 md:p-6 lg:p-7 shadow-sm border border-gray-200 transition-all duration-200 hover:shadow-md hover:-translate-y-0.5"
63
39
  >
64
- <div className={vstack({ gap: "1rem", alignItems: "flex-start" })}>
40
+ <div className="flex flex-col gap-4 items-start">
65
41
  {/* アイコンとタイトル */}
66
- <div className={hstack({ gap: "0.75rem", alignItems: "center" })}>
67
- <span
68
- className={css({
69
- fontSize: "1.5rem",
70
- })}
71
- >
72
- {stat.icon}
73
- </span>
74
- <h3
75
- className={css({
76
- fontSize: "sm",
77
- fontWeight: "medium",
78
- color: "{colors.gray.600}",
79
- lineHeight: "tight",
80
- })}
81
- >
82
- {stat.title}
83
- </h3>
42
+ <div className="flex flex-row items-center gap-3">
43
+ <span className="text-2xl">{stat.icon}</span>
44
+ <h3 className="text-sm font-medium text-gray-600 leading-tight">{stat.title}</h3>
84
45
  </div>
85
46
 
86
47
  {/* 値と変化率 */}
87
- <div className={vstack({ gap: "0.5rem", alignItems: "flex-start" })}>
88
- <p
89
- className={css({
90
- fontSize: "2xl",
91
- fontWeight: "bold",
92
- color: "{colors.gray.900}",
93
- lineHeight: "none",
94
- })}
95
- >
96
- {stat.value}
97
- </p>
98
- <div className={hstack({ gap: "0.25rem", alignItems: "center" })}>
48
+ <div className="flex flex-col gap-2 items-start">
49
+ <p className="text-2xl font-bold text-gray-900 leading-none">{stat.value}</p>
50
+ <div className="flex flex-row items-center gap-1">
99
51
  <span
100
- className={css({
101
- fontSize: "xs",
102
- fontWeight: "medium",
103
- color:
104
- stat.changeType === "increase" ? "{colors.green.600}" : "{colors.red.600}",
105
- background:
106
- stat.changeType === "increase" ? "{colors.green.100}" : "{colors.red.100}",
107
- padding: "0.125rem 0.375rem",
108
- borderRadius: "full",
109
- })}
52
+ className={`text-xs font-medium ${stat.changeType === "increase" ? "text-green-600 bg-green-100" : "text-red-600 bg-red-100"} px-1.5 py-0.5 rounded-full`}
110
53
  >
111
54
  {stat.changeType === "increase" ? "↗" : "↘"} {stat.change}
112
55
  </span>
113
- <span
114
- className={css({
115
- fontSize: "xs",
116
- color: "{colors.gray.500}",
117
- })}
118
- >
119
- 前月比
120
- </span>
56
+ <span className="text-xs text-gray-500">前月比</span>
121
57
  </div>
122
58
  </div>
123
59
  </div>
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
 
3
- import { Button } from "@/components/ui/button";
4
3
  import {
5
4
  ChevronLeftIcon,
6
5
  ChevronRightIcon,
@@ -11,6 +10,7 @@ import {
11
10
  PersonIcon,
12
11
  TableIcon,
13
12
  } from "@radix-ui/react-icons";
13
+ import { Button } from "{{packageName}}/ui/button";
14
14
  import { cn } from "{{packageName}}/ui/utils";
15
15
  import { signOut } from "next-auth/react";
16
16
  import Link from "next/link";
@@ -74,7 +74,7 @@ export function Sidebar({ className, isMobileOpen, setIsMobileOpen }: SidebarPro
74
74
  {isMobileOpen && (
75
75
  // biome-ignore lint/a11y/useKeyWithClickEvents: サイドメニューのオーバーレイ
76
76
  <div
77
- className="fixed inset-0 bg-black/50 z-40 md:hidden"
77
+ className="fixed inset-0 bg-black/50 z-[var(--z-header)] md:hidden"
78
78
  onClick={() => setIsMobileOpen(false)}
79
79
  aria-hidden="true"
80
80
  />
@@ -83,7 +83,7 @@ export function Sidebar({ className, isMobileOpen, setIsMobileOpen }: SidebarPro
83
83
  {/* Sidebar */}
84
84
  <aside
85
85
  className={cn(
86
- "fixed left-0 top-0 z-50 h-full border-r bg-card text-card-foreground transition-all duration-300 ease-in-out",
86
+ "fixed left-0 top-0 z-[var(--z-header)] h-full border-r bg-card text-card-foreground transition-all duration-300 ease-in-out",
87
87
  "md:static md:z-auto",
88
88
  // Mobile状態
89
89
  "md:translate-x-0",
@@ -1,9 +1,7 @@
1
1
  "use client";
2
2
 
3
- import { Button } from "@/components/ui/button";
4
3
  import { HamburgerMenuIcon } from "@radix-ui/react-icons";
5
- import { css } from "../../../styled-system/css";
6
- import { hstack, vstack } from "../../../styled-system/patterns";
4
+ import { Button } from "{{packageName}}/ui/button";
7
5
 
8
6
  interface HeaderProps {
9
7
  user:
@@ -19,141 +17,48 @@ interface HeaderProps {
19
17
 
20
18
  export function Header({ user, onMobileMenuToggle }: HeaderProps) {
21
19
  return (
22
- <header
23
- className={css({
24
- background: "white",
25
- borderBottom: "1px solid {colors.gray.200}",
26
- boxShadow: "sm",
27
- })}
28
- >
29
- <div
30
- className={css({
31
- maxWidth: "7xl",
32
- margin: "0 auto",
33
- padding: {
34
- base: "1rem 1rem",
35
- md: "1.25rem 1.5rem",
36
- lg: "1.5rem 2rem",
37
- },
38
- })}
39
- >
40
- <div
41
- className={hstack({
42
- justifyContent: "space-between",
43
- alignItems: "center",
44
- })}
45
- >
20
+ <header className="bg-white border-b border-gray-200 shadow-sm">
21
+ <div className="max-w-7xl mx-auto px-4 py-4 md:px-6 md:py-5 lg:px-8 lg:py-6">
22
+ <div className="flex flex-row items-center justify-between">
46
23
  {/* ロゴ・ブランド */}
47
- <div className={hstack({ gap: "0.75rem", alignItems: "center" })}>
24
+ <div className="flex flex-row items-center gap-3">
48
25
  {/* Mobile menu button */}
49
26
  {onMobileMenuToggle && (
50
27
  <Button
51
28
  variant="ghost"
52
29
  size="icon"
53
30
  onClick={onMobileMenuToggle}
54
- className={css({
55
- display: { base: "flex", md: "none" },
56
- padding: "0.5rem",
57
- marginRight: "0.5rem",
58
- })}
31
+ className="flex md:hidden p-2 mr-2"
59
32
  aria-label="メニューを開く"
60
33
  >
61
- <HamburgerMenuIcon className={css({ width: "1.25rem", height: "1.25rem" })} />
34
+ <HamburgerMenuIcon className="w-5 h-5" />
62
35
  </Button>
63
36
  )}
64
- <div
65
- className={css({
66
- width: "2.5rem",
67
- height: "2.5rem",
68
- background: "linear-gradient(135deg, {colors.blue.600}, {colors.purple.600})",
69
- borderRadius: "md",
70
- display: "flex",
71
- alignItems: "center",
72
- justifyContent: "center",
73
- })}
74
- >
75
- <span
76
- className={css({
77
- fontSize: "lg",
78
- fontWeight: "bold",
79
- color: "white",
80
- })}
81
- >
82
- E
83
- </span>
37
+ <div className="w-10 h-10 bg-gradient-to-br from-blue-600 to-purple-600 rounded-md flex items-center justify-center">
38
+ <span className="text-lg font-bold text-white">E</span>
84
39
  </div>
85
- <h1
86
- className={css({
87
- fontSize: "xl",
88
- fontWeight: "bold",
89
- color: "{colors.gray.900}",
90
- })}
91
- >
92
- Einja Management
93
- </h1>
40
+ <h1 className="text-xl font-bold text-gray-900">Einja Management</h1>
94
41
  </div>
95
42
 
96
43
  {/* ユーザー情報 */}
97
- <div className={hstack({ gap: "1rem", alignItems: "center" })}>
98
- <div
99
- className={vstack({
100
- gap: "0.125rem",
101
- alignItems: "flex-end",
102
- display: { base: "none", md: "flex" },
103
- })}
104
- >
105
- {user?.name && (
106
- <span
107
- className={css({
108
- fontSize: "sm",
109
- fontWeight: "medium",
110
- color: "{colors.gray.900}",
111
- })}
112
- >
113
- {user.name}
114
- </span>
115
- )}
116
- <span
117
- className={css({
118
- fontSize: "xs",
119
- color: "{colors.gray.500}",
120
- })}
121
- >
122
- {user?.email}
123
- </span>
44
+ <div className="flex flex-row items-center gap-4">
45
+ <div className="hidden md:flex flex-col gap-0.5 items-end">
46
+ {user?.name && <span className="text-sm font-medium text-gray-900">{user.name}</span>}
47
+ <span className="text-xs text-gray-500">{user?.email}</span>
124
48
  </div>
125
49
 
126
50
  {/* ユーザーアバター */}
127
51
  <div
128
- className={css({
129
- width: "2.5rem",
130
- height: "2.5rem",
131
- background: user?.image ? "transparent" : "{colors.gray.300}",
132
- borderRadius: "50%",
133
- display: "flex",
134
- alignItems: "center",
135
- justifyContent: "center",
136
- overflow: "hidden",
137
- })}
52
+ className={`w-10 h-10 ${user?.image ? "bg-transparent" : "bg-gray-300"} rounded-full flex items-center justify-center overflow-hidden`}
138
53
  >
139
54
  {user?.image ? (
140
55
  <img
141
56
  src={user.image}
142
57
  alt={user.name || "User"}
143
- className={css({
144
- width: "100%",
145
- height: "100%",
146
- objectFit: "cover",
147
- })}
58
+ className="w-full h-full object-cover"
148
59
  />
149
60
  ) : (
150
- <span
151
- className={css({
152
- fontSize: "sm",
153
- fontWeight: "medium",
154
- color: "{colors.gray.600}",
155
- })}
156
- >
61
+ <span className="text-sm font-medium text-gray-600">
157
62
  {user?.name?.charAt(0) || user?.email?.charAt(0) || "U"}
158
63
  </span>
159
64
  )}
@@ -13,12 +13,6 @@
13
13
  "@web/*": [
14
14
  "./src/*",
15
15
  "./*"
16
- ],
17
- "@/styled-system/*": [
18
- "./styled-system/*"
19
- ],
20
- "styled-system/*": [
21
- "./styled-system/*"
22
16
  ]
23
17
  }
24
18
  },